我想在我的应用程序的选项来改变我的应用程序语言(只是应用程序语言不是整个系统),请你给我一些提示?
提前致谢,
我知道本地化!
我想在我的应用程序的选项来改变我的应用程序语言(只是应用程序语言不是整个系统),请你给我一些提示?
提前致谢,
我知道本地化!
您可以通过使用自定义生成您从Xcode中设置标志做到这一点。 这样,您就可以运行一个定位下一个应用程序,而不是改变所有设置的设备。
我在写了一篇博客文章对此http://abizern.org/2012/03/18/simple-localisation-testing/
还有就是在Github上的示例项目,你可以用它来看到它在行动: https://github.com/Abizern/SimpleLocalisationTesting
我做了通过的.plist充满了字典的阵列制成定制的本地化。 像这样:
kYes
en = @"Yes"
ru = @"Да"
kNo
en = @"No"
ru = @"Нет"
在项目中,我做了一个单例类阅读此字符串。 在选项用户选择所需的语言(在从当前系统状态或设置默认一个第一启动应用选择语言)。 所选语言必须保存在文件中或在设置下次启动使用。 在单我有+getStringWithKey:
所以,我通过@有“凯斯”,并得到串电流本地化唯一的应用程序。 此外,您将需要添加标准本地化文件反正到项目,甚至是空的,因为如果你不这样做,你支持的所有语言都不会在iTunes中显示。
其实我在想如何改变语言在你的应用程序的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); 和你做。 我至今没有完成,但它应该工作。