Xcode 5本地化问题

时间:2013-12-21 21:43:23

标签: ios localization xcode5

感谢您阅读以下内容(也可以随心所欲地受到我的挫折)

//咆哮

首先,很明显这是一个问题,有很多问题需要本地化应用程序。 (是的,我已经开始放下我可以打破的物品,让我感觉更好......哈哈)

//致业务

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

我采取的步骤:

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

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

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

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

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

  • 我选择了一个笔尖并选择了localize>添加了第二语言 清理,构建,重新启动,重新启动Xcode,删除模拟器文件, 删除了派生数据。建造,重新启动,清理..打破了一些事情, 再做一遍。

//请求帮助

我看过苹果文档并且它们看起来很容易做到这一点也许我只是错过了一些非常简单的东西。关于我应该做什么/阅读/观看/大喊的任何建议都将非常感激。

谢谢,

詹姆斯

1 个答案:

答案 0 :(得分:1)

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


我很尴尬地说,但我的问题的第一部分非常简单

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

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

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

通过上面的代码,我知道它会说法国与美国当地人.. bing bing bing !!点已连接。

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


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

使用故事板来实现这一点似乎是保持动态的最佳方式,但我的项目有15个笔尖。我发现描述的链接是http://www.ibabbleon.com/iphone_app_localization.html

以上帮助我更多地了解了使用已经阅读过苹果指令的ibtool。方便的终端命令是:

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

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

要在我使用apple方向时生成一个nib字符串文件:

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

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

我将.strings文件翻译后,我按照app docs从原始英文模板创建了一个笔尖,但是上面翻译了字符串文件:

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

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


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

但我需要尝试一下,我认为这将是另一天的战斗。