为什么我的文件不进入“en.lproj”而是进入Xcode中“Make file Localizable”之后的新“English.lproj”?

时间:2011-08-13 14:44:28

标签: iphone ios xcode ipad localization

这有点令人困惑:

首先我使用了genstrings,它在 en.lproj 文件夹中创建了一个Localizable.strings文件(也存在于文件系统中)。

然后我有一个我想要本地化的JSON文件,所以我打开了该文件的信息窗格并选择“Make File Localizable”。 Xcode然后在文件系统上创建了一个 English.lproj 文件夹,还创建了一个这样的组。然后它将我的文件移到那里。

所以现在我最终得到了 en.lproj English.lproj 基本相同的东西:英文内容。

我对这种情况不满意。可以/我应该做些什么吗?我该如何解决这个问题?

另外,有人可以指出使用“English.lproj”和“en.lproj”之间的区别是什么?我打赌 是一个区别。

2 个答案:

答案 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