Xcode 5 本地化问题

Posted

技术标签:

【中文标题】Xcode 5 本地化问题【英文标题】:Xcode 5 localization issues 【发布时间】:2013-12-21 21:43:22 【问题描述】:

感谢您阅读以下内容(也请尽情享受我的挫败感)

//咆哮

首先,很明显这是一个问题,因为本地化应用程序有很多问题。 (是的,我已经开始把我可以打破的东西放在一边让我感觉更好..哈哈)

//到企业

我到处找。我已经为此阅读了许多教程(从 raywenderlich 开始并尝试了许多不同的教程),当然我已经搜索了好几天了。

我已采取的步骤:

选择项目并在本地化下添加其他语言(我已经 阅读一些人选择'使用基本国际化 - 我不是 使用故事板(很多笔尖)所以我不认为这是选择 我应该选择)

将 localizable.strings 文件添加到我选择的支持文件中 English 和第二语言,我得到两个字符串文件。我看项目 在 finder 中,我看到了两个不同的语言文件夹(在那些 文件夹是 infoplist 和可本地化的字符串文件。

我已经更新了第二语言 .strings 文件的翻译..

在那之后,我应该做的事情变得模糊不清。

我选择了两个不同语言的按钮(我知道 我应该更改代码中的按钮标题)并单击本地化 按钮并选择第二种语言。这让我有了另一套 .lproj 文件夹,所以我在主目录中有一个 (Project/en.lproj)和我的资源中的第二个 en.lproj 目录((Project/res/en.lproj。可以吗?或者我所有的资产都应该 (.strings 文件、笔尖、图像)只能在一个文件夹中?

我选择了笔尖并选择了本地化 > 添加了第二语言 清理,构建,重新清理,重新启动 Xcode,删除模拟器文件, 删除派生数据。建造,重新启动,清理..打破了一些东西, 又做了一遍。

//请求帮助

我查看了苹果文档,它们使执行此操作看起来非常容易,也许我只是错过了一些非常简单的东西。任何关于我应该做什么/阅读/观看/大喊的建议将不胜感激。

谢谢,

詹姆斯

【问题讨论】:

【参考方案1】:

//我觉得回答自己的问题很奇怪,但我觉得其他人可能会觉得它有帮助。


我不好意思说,但我的问题的第一部分非常简单

通过观看 Warren Evans 的“Localization of your app”,我发现自己做错了什么。在大约 23 分钟的视频中,他使用一些代码来获取本地和语言

NSLocale *locale = [NSLocale currentLocale];
NSString *language = [locale displayNameForKey:NSLocaleIdentifier value:locale localeIdentifier]];

我的问题是,在我选择添加的本地化项目信息中:French(France) (fr-FR) 在我的项目中创建了 fr-FR.lproj 的 .lproj 文件夹。因此,当我在设备上测试法语时,它并没有抓取图像或字符串。

使用上面的代码,我知道它会用美国当地人说法语.. bing bing bing!点连在一起。

最初,我什至没有注意到本地化中有一个通用的法语“French (fr)”选项。我更新了我的项目文件夹以使用法语(fr)。当我清理并重置模拟器时,字符串和图像就会正确显示。 (是的,每个语言可以有多个 .lproj 文件——我有一个单独的资源)


我的问题的第二部分是在 nib 文件中没有更新项目。他们在两个在线苹果文档中描述的解决方案似乎总是缺少一步,我不清楚笔尖是如何更新的。

似乎用故事板做这件事的方法是保持动态的最好方法,但我的项目有 15 个 nib。我发现描述的链接是http://www.ibabbleon.com/iphone_app_localization.html

以上内容帮助我在阅读了苹果说明后对使用 ibtool 有了更多的了解。方便的终端命令是:

find . -name \*.xib | xargs -t -I '' ibtool --generate-strings-file ''.strings ''

在将终端中的目录 (cd) 更改为我的项目目录后,我使用它并相应地导航到 lproj 文件。 (如果其他人有同样的问题,我会尽可能详细地帮助他们)

要一次生成一个笔尖字符串文件,我使用苹果方向:

ibtool --generate-strings-file NIBNAME.strings en.lproj/NIBNAME.xib

这创建了我的 NIBNAME.strings 文件进行翻译。

翻译完 .strings 文件后,我按照应用程序文档,从原始英文模板创建了一个 nib,但使用了上述翻译后的字符串文件:

ibtool --strings-file fr.lproj/NIBNAME.strings --write fr.lproj/NIBNAME.xib en.lproj/NIBNAME.xib

接下来我选择了笔尖并在文件检查器中选择了“本地化”,然后当我选择笔尖检查“本地化语言”时,它看到我已经完成了上述步骤,这已经创建了一个新的笔尖。 Xcode 询问我是否想使用它或替换我选择使用它并且我的翻译更改是实时的。 我必须检查笔尖以确保按钮的格式和居中看起来正确,但现在一切正常。


我觉得我应该能够为所有 nib 做一个主 .strings 文件,就像我们根据这个 SO 问题的答案对 genstrings 所做的那样:How can I extract all localizable strings from all XIB files into one file?

但我需要对此进行试验,我认为这将是另一天的战斗。

【讨论】:

以上是关于Xcode 5 本地化问题的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 5 和本地化问题 - 如何使用原始语言?

Xcode 5 中的本地化

Xcode 5,xib 本地化导致手机黑屏

使用 Xcode 5 禁用英语本地化

XCode 5 即时本地化应用程序名称

在 Xcode 5 中禁用基本本地化后找不到 MainMenu.xib