我需要获取当前的语言环境。不是用户区域设置,而是我的应用程序区域设置。
假设我的应用程序有两个本地化(在项目设置中):英语(默认)和法语。如果用户在iPhone上设置法语,那么我的应用程序将显示法语界面。如果用户在iPhone上设置德语,那么我的应用程序将显示英文界面(因为英语是默认的)。
那么我如何获得现在正在显示的当前应用程序区域设置? 提前谢谢。
答案 0 :(得分:29)
可能有一个比这更简单的方法(参见其他答案),但这个方法最强大,只要通过strings
- 文件本地化应用程序的一般原则并不适用; t被废弃,这种方法可行。
通常,您不需要获取应用程序区域设置(但请继续阅读,这是可能的!)如果您需要本地化文本,请使用NSLocalizedString()
。如果需要本地化映像,则使用本地化资源,等等。但是,有一些原因可以让我想到哪个会让你很高兴获得#34;应用程序区域设置",就像你所说的那样:例如,对于分析(你想知道你的应用程序使用的语言) ,或者,如果您使用基于服务器的通信,则为用户提供一致的单语言界面(例如,使用用户在应用程序内部看到的相同语言本地化服务器错误消息。)
如果您想获得当前可见的应用的本地化,我想您对每个支持的语言环境都有一个Localizable.strings
文件。因此,在Englisch字符串文件中,您可以添加行
"lang" = "en";
并在法语字符串文件中添加行
"lang" = "fr";
然后,您始终可以通过调用NSLocalizedString("lang")
(swift)或NSLocalizedString(@"lang")
(objective-C)来获取应用程序区域设置。当然,每当您向应用添加新的本地化时,您都必须设置一个" lang"进入新的本地化字符串文件。
答案 1 :(得分:11)
在Swift 3中使用:
let language = Bundle.main.preferredLocalizations.first
答案 2 :(得分:3)
您可以通过这种方式从区域设置获取国家/地区代码,
NSLocale *currentLocale = [NSLocale currentLocale]; // get the current locale.
NSString *countryCode = [currentLocale objectForKey:NSLocaleCountryCode];
获取国家/地区代码,例如es
(西班牙),fr
(法国)等
您可以映射此代码以进行界面选择。
希望这对你有所帮助。
答案 3 :(得分:0)
您可以使用以下代码获取所选语言。
with open('shops.txt', 'w') as s:
for l in lines:
s.write(l)
希望这会对你有所帮助。
答案 4 :(得分:0)
该解决方案比建议的解决方案更简单:
设备语言
<B>
实际应用翻译
let deviceLanguage = NSLocale.preferredLanguages.first
例如,我将iPhone设置为英语-英语,而我的应用没有英语-英语翻译,而只有英语-英国:
let language = Bundle.main.preferredLocalizations.first