iPhone本地化:简单的项目不工作

问题描述:

我正在做我的第一个本地化项目,我一直与它战斗了几个小时,没有运气。iPhone本地化:简单的项目不工作

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

我已经阅读了关于此事的大部分Apple文档,但我无法做出一个简单的示例工作。

这是我到目前为止的步骤:

1)创建一个新项目。

2)手动在项目文件夹中创建一个“en.lproj”目录。

3)使用名为“Localizable.strings”的TexEdit创建文件并将其存储为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和它的“子目录”“恩”它下面(有下拉三角左侧)出现。如果我试图在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"]; 

但是,这只能下一次您加载应用程序。有没有办法让用户在运行应用程序时切换语言?

我是否必须实现我自己的Dictionary文件并忘记了关于NSLocalizableString系列的所有内容?

感谢您的任何建议或指针。

Gonso

+0

嗨,我正在寻找一种方法来更改NSLocalizableStrings的语言。你找到解决方案吗? – Daniel 2010-10-27 12:52:45

已经有一个关于here讨论。

他们的建议是创建一个子束,然后用它来 称为NSLocalizedStringFromTableInBundle(...)(如在reference manual描述)的方法得到的特定表中的本地化字符串中束。

我只是给你一个预感,我还没有尝试,但是,我想这可能是一个面对你的问题的好方法。