我正在开发一个我打算用英语和西班牙语发布的应用程序。我的意思是,我希望在App Store中有两个独立的应用程序,一个用英文标题显示,另一个用西班牙语标题(每个都有各自语言的内容)。
这意味着应用程序中的语言将是静态的,也就是说,实际上应用程序不会被国际化,因为应用程序不会根据用户的语言环境设置显示语言,而是根据英语或西班牙语取决于购买的应用程序。
我最初想过使用常量文件,其中常量字符串包含所有标签,按钮标题等,并且每种语言都有相同的单独项目,并且在每个项目中更改此常量文件,但当然,这涉及到一些关于维护的麻烦。
我想到的另一种方法是实际执行整个国际化过程(NSLocale,本地化文件等),并且在app启动时跳过用户的语言环境,并以编程方式设置任一语言(这里,我只需要要知道如何跳过这样的默认i18n进程来设置一种特定的语言。在这种情况下,我会看到只有一个本地项目的优势,以及在每个构建中为不同的语言应用程序设置语言的可能性。< / p>
请您提供有关采用哪种方法或最佳做法的建议?这是否有意义,或者我是否应该遵循另一种方法,以便拥有两个独立的固定语言应用程序?
非常感谢你!
祝你好运
答案 0 :(得分:4)
重复:Best way to make an iPhone application multi-lingual
简短版本:包含每种语言的语言文件。 Apple会处理剩下的事情 - 当用户更改iPhone的语言时,您的应用也会切换(假设有翻译版本)。
答案 1 :(得分:1)
如果您真的想在App Store中拥有两个独立的应用程序,则可以执行类似
的操作Making multiple versions of an iPhone application
让它们都是从一个Xcode项目构建的,并使维护尽可能简单。
为什么不只是包含两种语言的单个应用版本并自动选择用户的首选语言?如果您的目标是双语人士应该单独为两份副本付费,那么您需要两个独立的应用程序,如我所知。
答案 2 :(得分:1)
将您的应用程序本地化为英语和西班牙语,并在调用UIApplicationMain之前将以下代码行放在main.m中:
NSArray *languages = [NSArray arrayWithObject:@"es"];
[[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"];
[languages release];
其中语言代码为“es”或“en”。 这将把首选语言(在你的情况下为es或en)放在应用程序的首选项中(在属性列表文件../your app的UUID / Library / Preferences / yourcompany的Internetadress.your应用程序的name.plist中)并覆盖设置的语言设置。
这使得应用程序使用本地化字符串并使用本地化的XIB。但是,由于某种原因,它无法用于本地化应用程序的图标和捆绑显示名称。添加一行来设置区域设置(键似乎是“AppleLocale”)没有帮助。当前区域设置仍然是“设置”中设置的区域设置,而不是以编程方式设置的区域设置。
答案 3 :(得分:1)
该行
[语言发布];
不应该在那里。
答案 4 :(得分:0)
本地化字符串和XIB就足够了。在http://www.iphonedevsdk.com/forum/iphone-sdk-development/8036-lite-game-duplicate-xcode-project.html之后复制目标,并在副本的plist文件中设置图标文件和分发包显示名称。