更改应用程序语言设置iOS中不整设备(change application language set

2019-09-19 22:04发布

我想在我的应用程序的选项来改变我的应用程序语言(只是应用程序语言不是整个系统),请你给我一些提示?

提前致谢,

我知道本地化!

Answer 1:

您可以通过使用自定义生成您从Xcode中设置标志做到这一点。 这样,您就可以运行一个定位下一个应用程序,而不是改变所有设置的设备。

我在写了一篇博客文章对此http://abizern.org/2012/03/18/simple-localisation-testing/

还有就是在Github上的示例项目,你可以用它来看到它在行动: https://github.com/Abizern/SimpleLocalisationTesting



Answer 2:

我做了通过的.plist充满了字典的阵列制成定制的本地化。 像这样:

kYes
  en = @"Yes"
  ru = @"Да"
kNo
  en = @"No"
  ru = @"Нет"

在项目中,我做了一个单例类阅读此字符串。 在选项用户选择所需的语言(在从当前系统状态或设置默认一个第一启动应用选择语言)。 所选语言必须保存在文件中或在设置下次启动使用。 在单我有+getStringWithKey: 所以,我通过@有“凯斯”,并得到串电流本地化唯一的应用程序。 此外,您将需要添加标准本地化文件反正到项目,甚至是空的,因为如果你不这样做,你支持的所有语言都不会在iTunes中显示。



Answer 3:

其实我在想如何改变语言在你的应用程序的UI另一种思路,但它迫使你1集所有字符串手动将2的方法(通知)时,语言设置已经改变,更新所有UI元素。 这个想法是基于同样的方法的iOS用于查找字符串的本地化版本。 因此,作为一个先决条件,你必须提供一个集合(如AppNameStrings.bundle)用文件夹结构language_id.lproj其中LANGUAGE_ID是要提供语言的代号。 您可以通过创建一个设置包创建这样的捆绑,在Finder中打开它并删除root.plist文件。 接下来,你需要一个功能,您可以使用您的捆绑阅读。 这里有两个方法,我用它来阅读本地化字符串。 将下面的方法,你GlobalDefinitions.h文件

#ifdef __OBJC__  
NSBundle *yourNameBundle(void);
NSString *YourNameLocalized(NSString *stringToken, NSString *language);
#endif

这个代码在你GlobalDefinitions.m文件

NSBundle *yourNameBundle(void) {
static NSBundle* bundle = nil;
  if (!bundle) {
    NSString* path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"YouNameBundle.bundle"];
    bundle = [NSBundle bundleWithPath:path];
  }
   return bundle;
}
NSString *YourNameLocalized(NSString *stringToken, NSString *language) {
  if (yourNameBundle()) {
    return [yourBundle localizedStringForKey:stringToken value:@"" table:@"Root" language:language];
  } else {
    return stringToken;
  }
}

你必须创建一个NSBundle一个类别

[yourBundle localizedStringForKey:stringToken value:@"" table:@"Root" language:language]

作为标准方法射门语言参数。 在你的方法,你打开相应language.lproj / Root.strings文件和扫描它的stringToken。 如果你不能找到它返回令牌本身,否则的文本字符串。 当你需要一些文本的本地化版本,你写如label.text = YourNameLocalized(@“令牌”,[自provideLanguageIdentifier); 和你做。 我至今没有完成,但它应该工作。



文章来源: change application language setting in iOS not the whole device