我正在做我的第一个本地化项目,并且我已经与它斗争了好几个小时而没有运气。
我必须根据用户选择创建一个应用程序,以不同语言显示文本和图像。
我已经阅读了Apple关于此事的大部分文件,但我不能做一个简单的例子。
到目前为止,这是我的步骤:
1)创建一个新项目。
2)在projects文件夹中手动创建一个“en.lproj”目录。
3)使用TexEdit创建名为“Localizable.strings”的文件并将其存储在Unicode UTF-16中。该文件如下所示:
/*
Localizable.strings
Multilanguage02
Created by Gonzalo Floria on 5/6/10.
Copyright 2010 __MyCompanyName__. All rights reserved.
*/
"Hello" = "Hi";
"Goodbye" = "Bye";
4)我将此文件拖到XCode上的资源文件夹中,它下方显示“subdir”“en”(左侧是下拉三角形)。如果我试着在XCode上看到它看起来都错了,很多?符号,但我猜这是因为它是一个UTF-16文件。正确?
5)现在我的视图已加载我可以像这样访问这些字符串:
NSString *translated;
translated = NSLocalizedString(@"Hello", @"User greetings");
NSLog(@"Translated text is %@",translated);
我的问题是允许用户切换语言。我用Localizable.strings文件(西班牙语)创建了一个es.lproj,但是我无法访问它。
我试过这一行:
[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"es", nil] forKey:@"AppleLanguages"];
但这只适用于加载应用程序的NEXT时间。在运行应用程序时是否无法允许用户切换语言?
我是否必须实现自己的Dictionary文件并忘记所有关于NSLocalizableString系列的内容?
感谢您提供任何建议或指示。
Gonso
答案 0 :(得分:0)
已经讨论过here。
他们的建议是创建一个子包,然后使用一个名为 NSLocalizedStringFromTableInBundle(...)
的方法(如reference manual中所述)来
从包中的特定表中获取本地化字符串。
我只是给你预感,我没试过,但我想,这可能是解决问题的好方法。