2017-06-19 116 views
1

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

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

回答

0

苹果documentation涵盖了这个很清楚。我知道所有你需要的是“day”这个词,但是如果你这样做,以下内容将帮助你包含任何语言的任何词:

1)你需要将所有的词(String s)放在你的应用到一个单独的.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文件中的所有字符串,需要将每个字符串包含到.XLIFFfile中。这是语言专家需要查看的文件,并在.XLIFF中包含每个字符串的正确翻译字。正如我之前所说,这是一旦包含在您的项目中的文件,NSLocalizedString(方法将搜索此文件并为您获取正确的翻译字符串。

就是这样!

+0

如果我需要使用CLGeocoder获取用户所在城市,该怎么办?它以设备语言返回用户的城市。我只需要使用我支持的语言。 –