如何在xcode4中本地化Settings.bundle?

时间:2011-03-22 18:31:26

标签: xcode localization xcode4 settings-bundle

我正在处理xco​​de4并为我的项目创建了Settings.bundle。我可以在xcode4中编辑Root.plist文件,但无法编辑Root.strings文件。它甚至没有显示在编辑器中。

enter image description here

我无法展开en.lproj文件夹,如图所示。

但当我右键单击,在外部编辑器中打开时,它会给我:

enter image description here

双击Root.strings上的给我:

enter image description here

我尝试了几次,创建了一个新的基于窗口的应用程序项目并创建了一个新的Settings.bundle。我总是无法本地化。有什么想法吗?

6 个答案:

答案 0 :(得分:21)

在XCode 4.2中,您必须按照以下步骤操作(只需修改Xcode 3.2.2 and localization of Settings.bundle

  1. 在Finder中显示您的Settings.bundle。
  2. 右键单击(或按住Ctrl键单击),然后选择“显示包内容”。
  3. 创建一个名为所需语言的新文件夹(例如,fr.lproj)。
  4. 从en.lproj文件夹中复制Root.strings文件并粘贴到fr.lproj文件夹中。

答案 1 :(得分:13)

编辑:苹果再次修复了错误的错误。他们的改变使我的解决方法毫无用处。它不再起作用,您无法将文件添加到Settings.bundle。

请参阅Javi的答案,了解似乎有效的方法。


我希望你喜欢丑陋的解决方法。

  1. 右键单击侧栏中的设置包。
  2. 选择New File
  3. 选择资源/字符串文件
  4. 将其命名为Root.strings,确保将其放在settings.bundle
  5. 在侧栏中,文件将可见两次。在“根”部分和Settings.bundle中。但两者都指向相同的文件。
  6. 在根部分中选择Root.strings文件。 (AFAIR你必须将其转换为UTF16)
  7. 添加本地化,​​xcode会询问您是否要替换该文件。是的,你想要这个。
  8. 根据需要添加尽可能多的本地化。您应该能够在侧栏的根部分编辑该文件。
  9. 我希望这适合你,对我而言。

    如果您还没有这样做,请在bugreport.apple.com

    报告错误

    我现在将安装新版本,让我们看看这是否已修复。编辑:未修复。


    编辑:我不知道如果我理解你的第二个问题。但是当您向捆绑包外部显示的文件添加本地化时,它会将一个本地化文件夹添加到settings.bundle

    enter image description here

    将西班牙语本地化添加到Root.strings后:

    enter image description here

    实际文件位于foo.lproj文件夹中,它不会在xcode侧栏中显示它们。如果您检查文件系统中的位置,您将看到它们位于设置包中。 enter image description here

    昨天我检查了英文和德文文件,它在模拟器中正常工作。我想这只是一个错误的侧边栏布局。底层位置和文件处理似乎是正确的。

答案 2 :(得分:7)

对我来说,它可以将文件夹“en.lproj”的文件类型(在文件检查器中)从“默认/目录”更改为“目录”。魔法。

答案 3 :(得分:2)

Xcode 4正在创建“Root.strings”作为二进制属性列表。所以我要做的是将文件类型设置为“Property List(binary)”以使其正确显示。

答案 4 :(得分:2)

我刚刚放弃尝试使用Root.strings做一些事情。相反,我只是将plist复制到每个* .lproj中,它工作正常!

就翻译成英文和我的母语而言,没问题。

所以我有:

Settings.bundle
|- en.lproj
|  |- Root.plist
|  `- Root.strings -- nothing useful there
|
`- zz.proj
   `- Root.plist

好消息是Root.plist是utf8。

答案 5 :(得分:0)

如果您已经拥有一个“属性列表(二进制)”的Root.strings文件,并且您希望将其转换为正确的基于文本的字符串文件,则可以在终端应用程序中使用plutil例如,将其转换为JSON格式:

> plutil -convert json /path/to/Settings.bundle/en.lproj/Root.strings

N.B。您可以运行plutil -h以获取使用帮助。

但是,您需要转换JSON格式:

{"key1":"value1","key2":"value2"}

到一个字符串文件:

"key1" = "value1";
"key2" = "value2";

通过文本编辑器中的一些搜索/替换操作可以轻松完成。