iPhone本地化:简单的项目无法正常工作

时间:2010-05-06 11:26:17

标签: iphone localization

我正在做我的第一个本地化项目,并且我已经与它斗争了好几个小时而没有运气。

我必须根据用户选择创建一个应用程序,以不同语言显示文本和图像。

我已经阅读了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

1 个答案:

答案 0 :(得分:0)

已经讨论过here

他们的建议是创建一个子包,然后使用一个名为 NSLocalizedStringFromTableInBundle(...)的方法(如reference manual中所述)来 从包中的特定表中获取本地化字符串。

我只是给你预感,我没试过,但我想,这可能是解决问题的好方法。