首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与uppercaseStringWithLocale一起使用的NSLocale:?

与uppercaseStringWithLocale一起使用的NSLocale:?
EN

Stack Overflow用户
提问于 2015-12-31 17:04:50
回答 1查看 293关注 0票数 0

当我有一个包含大写字母的UI字符串时,我习惯于将它们定义为与所有其他字符串一样的小写,然后使用uppercaseStringWithLocale:[NSLocale currentLocale]

但最近我碰巧注意到[NSLocale currentLocale]可能不是你的应用程序中使用的那个。例如,如果你的设备是土耳其语,但你的应用程序只支持英语,那么currentLocale将是土耳其语言环境,而你的应用程序是英语本地化的。

有了这些设置,使用[NSLocale currentLocale]的一个直接效果是我的uppercaseString将是"İLİKEİOS“而不是"I LIKE IOS”。

到目前为止,我看到的唯一解决办法是创建一个NSLocale类别来添加+(NSLocale*) applicationLocale;,并在所有uppercaseStringWithLocale:中使用它。

代码语言:javascript
复制
+ (NSLocale*) applicationLocale
{
    NSMutableDictionary<NSString*,NSString*>* localeComponents = [[NSLocale componentsFromLocaleIdentifier:[NSLocale currentLocale].localeIdentifier] mutableCopy];
    localeComponents[NSLocaleLanguageCode] = NSBundle.mainBundle.preferredLocalizations.firstObject;
    return [NSLocale localeWithLocaleIdentifier:[NSLocale localeIdentifierFromComponents:localeComponents]];
}

我的问题很简单:我这样做是正确的,还是我错过了什么?我确实想知道为什么苹果会连接到currentLocale,而它在很多情况下都不会像预期的那样工作。

EN

回答 1

Stack Overflow用户

发布于 2015-12-31 17:39:26

获取应用程序区域设置的最可靠方法是编辑Localizable.strings文件。在英文本地化文件中添加一个条目

代码语言:javascript
复制
"lang"="en";

在德语本地化文件中添加一个条目

代码语言:javascript
复制
"lang"="de";

在法语本地化文件中添加一个条目

代码语言:javascript
复制
"lang"="fr";

以此类推。您可以使用NSLocalizedString(@"lang")获取本地化代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34543863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档