ios - Xcode 5 本地化问题

标签 ios localization xcode5

感谢您阅读以下内容(也请随意被我的沮丧所娱乐)

//咆哮

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

//商务

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

我采取的步骤:

  • 选择项目并在本地化下添加其他语言(我已经 看到有些人选择“使用基础国际化”——我不是 使用 Storyboard(很多 Nib )所以我不认为这是一个选择 我应该选择)

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

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

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

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

  • 我选择了一个 Nib 并选择了本地化 > 添加了第二种语言 清理,构建,重新清理,重新启动 Xcode,删除模拟器文件, 删除派生数据。 build 、重新启动、清理……破坏了一些东西, 又做了一遍。

//请求帮助

我看过 apple 文档,它们使执行此操作看起来真的很容易,也许我只是遗漏了一些非常简单的东西。非常感谢任何关于我应该做什么/阅读/观看/大喊的建议。

谢谢,

詹姆斯

最佳答案

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


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

通过观看“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 文件中的项目未更新。他们在网上的两个苹果文档中描述的解决方案似乎总是缺少一个步骤,我不清楚 Nib 是如何更新的。

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

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

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

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

为了一次生成一个 Nib 字符串文件,我使用了苹果说明:

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

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


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

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

关于ios - Xcode 5 本地化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723869/

相关文章:

ruby-on-rails - 在 Rails 中同步语言环境 yml 文件工具

iphone - 当导入的文件不可用时如何避免崩溃?..IOS 7

ios - 如何获得已经被解雇的 UILocalNotification

ios - 'withUnsafeMutableBytes' 在 Swift 5 中被弃用

java - 在 Applet 中显示中文文本

localization - 如何在 Karate 框架中使用小 cucumber 本地化?

objective-c - View 激活时要覆盖什么方法?

iOS Mach-O – 使 __TEXT 段暂时可写

ios - 是否可以在UITextView中使用变量?

ios - fatal error : 'assert.h' file not found when building an iOS app on PhoneGap 3. x