【问题标题】:ios application Localizationios应用本地化
【发布时间】:2017-11-22 03:32:13
【问题描述】:

如何设置 ios 应用程序支持的语言? 例如,我使用 NSDate 来获取当前日期。如果设备语言不是我支持的语言,NSDateFormatter 会以设备语言返回“day”,但如果我不支持该语言,我想使用英语。

我知道有一种方法可以使用 NSLocal 以特定语言获得一天,但我不想这样做,因为我还需要转换其他字符串。

【问题讨论】:

    标签: ios cocoa-touch localization


    【解决方案1】:

    Apple documentation 非常清楚地说明了这一点。我知道您只需要“day”这个词,但如果您执行以下操作,以下内容将帮助您包含任何语言的任何词:

    1) 您需要将应用程序中的所有单词 (Strings) 放入单个 .swift 文件中。每个单词都应在一个函数中返回,该函数将该字符串转换为设备设置中设置的设备NSLocal 的本地化字符串:

    struct Localization {
        static let all: String = {
            return getLocalized("All")
        }()
        static let allMedia: String = {
            return getLocalized("All Media")
        }()
        static let back: String = {
            return getLocalized("Back")
        }()
    
        // ...and do this for each string
    
    }
    

    2) 该文件还应包含一个静态函数,用于转换字符串:

    static func getLocalized(_ string: String) -> String {
        return NSLocalizedString(string, comment: "")
    }
    

    在这里,NSLocalizedString( 方法将为您完成所有繁重的工作。如果将在您的项目中查看.XLIFF 文件(我们将解决该文件),并根据设备NSLocale 获取正确的字符串。此方法还包括一个“注释”,告诉语言翻译器如何处理您传递的“字符串”参数。

    3) 查看您放置在.swift 文件中的所有字符串,您需要将每个字符串包含在.XLIFF file 中。这是语言专家需要检查的文件,并在.XLIFF 中包含每个字符串的正确翻译单词。正如我之前所说,这是您项目中包含的文件,NSLocalizedString( 方法将搜索此文件并为您获取正确的翻译字符串。

    就是这样!

    【讨论】:

    • 如果我需要使用 CLGeocoder 获取用户所在的城市怎么办。它以设备语言返回用户所在的城市。我只需要使用我支持的语言。
    猜你喜欢
    • 2014-08-18
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多