2012-06-19 41 views
3

现在,在标准的本地化行为中,iOS确定当前设置的iPhone语言并使用Localizable.strings文件设置适当的文本。多语言iOS应用

但是,我的客户需要一个多语言iOS应用程序,其中的语言应用程序在独立于本机iOS首选语言的应用程序中设置。即应用程序可能与iOS当前在iPhone上设置的语言不同。

任何人有任何想法如何去实现这种情况?

我的想法:

  • 我可以创建类似之内的NSLocalizeString和硬编码字符串自定义静态类,并返回应用程序中设置适当的语言字符串WRT的语言,如果这是一个可能的解决方案,然后有关如何结构类的任何建议)
+0

RE:

+ (NSDictionary *) getLocalized: (NSString *) contollerName andLang:(NSString *) lang { NSString *fullPath = nil; // You can use device lang if needed NSString * curLang=[[NSLocale preferredLanguages] objectAtIndex:0]; fullPath = [[NSBundle mainBundle] pathForResource: [NSString stringWithFormat:@"%@_%@",contollerName,lang] ofType: @"plist"]; if (!fullPath) { fullPath = [[NSBundle mainBundle] pathForResource:contollerName ofType:@"plist"]; } return [NSDictionary dictionaryWithContentsOfFile:fullPath]; } 

因此,它可以通过类似的东西被称为 '我恨我的客户'。我希望你在这个网站上使用不同于你的客户知道的化名! –

+0

这个方法的类和教程可以在这里找到:http://aggressive-mediocrity.blogspot。在/ 2010/03/custom-localization-system-for-your.html – Fluffhead

回答

1

我曾经创建过一个flashchards应用程序,客户端需要随意更改语言。我现在没有在我的盒子上的源代码,但我记得使用这个tutorial。同时检查他们使用的示例代码。

备注 - 公开禁止你的客户真的是不专业。

+0

非常整洁的想法..但我想知道哪一个更好,你的还是塞尔吉奥的? – tGilani

+0

我想这取决于您的需求 - 我可以很容易地看到,Sergio建议的单个字典方法可能会很快变得对大型应用程序/多种语言而言很难应付。但是,如果你只需要两种语言的几个字符串,那么它可能更简单。 –

4

,你可以:

  1. 店您的翻译小号为每种语言编写.plist文件(string_key/translation);

  2. 在NSDictionary中读取适当的plist(取决于当前设置的语言);

  3. 访问字典中要显示的每个字符串(就像你使用NSLocalizeString一样)。

+0

非常整洁的想法..但我想知道哪一个更好,你的还是Peter Sarnowski的? – tGilani

0

您可以使用标准本地化(.strings文件和本地化.xibs),迫使你的应用程序使用比iOS的语言设置以外的语言。有关如何实现此目的的详细信息,请参阅此帖:Change language of the ios application

请注意,如果您(或者您的客户!)想在使用应用程序时动态切换语言,则会更加复杂 - 您需要执行某种刷新功能并确保xib被重新加载。

1

用所需语言创建plist文件。对于所有本地化字符串,我使用{LANG} _ {CLASS NAME}和{CLASS NAME}作为默认值。 之后,我做了一个方法,检查是否存在正确的文件,如果丢失,则使用它或默认,并返回一个NSDictionary对象,具体取决于在init类上调用的设备语言。如果通过向字符串文件添加nib名称来实现本地化的nib,也可以使用此想法。

[tools getLocalized:[Controller.class description] andLang:@"XX"];