这有点令人困惑:
首先我使用了genstrings,它在 en.lproj 文件夹中创建了一个Localizable.strings文件(也存在于文件系统中)。
然后我有一个我想要本地化的JSON文件,所以我打开了该文件的信息窗格并选择“Make File Localizable”。 Xcode然后在文件系统上创建了一个 English.lproj 文件夹,还创建了一个这样的组。然后它将我的文件移到那里。
所以现在我最终得到了 en.lproj 和 English.lproj 基本相同的东西:英文内容。
我对这种情况不满意。可以/我应该做些什么吗?我该如何解决这个问题?
另外,有人可以指出使用“English.lproj”和“en.lproj”之间的区别是什么?我打赌 是一个区别。
答案 0 :(得分:8)
这是一个Xcode错误。只需将English.lproj
文件夹中的所有内容移至en.lproj
文件夹即可。我没有使用Xcode 4.1进行检查,但是如果删除English.lproj
文件夹,以前版本的Xcode将不允许您添加新的本地化,因此请不要删除它。
您可以手动编辑项目文件以避免问题as this post suggest,但我从未真正发现这样做是值得的。
一些背景 - 在Max OS X 10.4之前使用了遗留(但用户可读性更强)的名称,如“英语”,“西班牙语”等,但Apple internationalization documentation表示这些值现已弃用:
除了ISO语言指示符之外,还有bundle例程 还认识到几种遗留语言指示符。这些指示符 让您通过用户可读的名称而不是a来指定语言 两三个字符代码。指定者包括诸如的名称 英语,法语,德语,日语,中文,西班牙语,意大利语,瑞典语, 还有葡萄牙语等。 虽然这些名字仍然被认可 并由NSBundle类和Core Foundation捆绑处理 函数,它们的使用已被弃用并在将来支持它们 不保证Mac OS X或iPhone OS的版本。使用代码 在“语言指定”和“地区指定”中描述 代替。
答案 1 :(得分:2)
您应使用ISO-639-1(双字母)或ISO-639-2(三字母)语言代码代码,以用于除英语之外的所有语言的本地化目的。 XCode仍然使用“英语”而不是“en”作为默认本地化。
有关信息,请参阅http://eschatologist.net/blog/?p=224。