11

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

在此处输入图像描述

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

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

在此处输入图像描述

双击Root.strings我:

在此处输入图像描述

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

4

6 回答 6

21

在 XCode 4.2 中,您必须遵循以下步骤(只是Xcode 3.2.2 的修改和 Settings.bundle 的本地化

  1. 在 Finder 中显示您的 Settings.bundle。
  2. 右键单击(或按住 Ctrl 键单击)它并选择显示包内容。
  3. 创建一个名为所需语言的新文件夹(例如,fr.lproj)。
  4. 从 en.lproj 文件夹中复制 Root.strings 文件并粘贴到 fr.lproj 文件夹中。
于 2011-11-22T00:53:19.070 回答
13

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

请参阅Javi的答案以获取似乎有效的方法。


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

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

我希望这对你有用,对我来说确实如此。

如果您还没有这样做,请在bugreport.apple.com上报告错误


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


编辑:我不知道我是否正确理解了您的第二个问题。但是,当您将本地化添加到出现在捆绑包之外的文件时,它会将本地化文件夹添加到 settings.bundle

在此处输入图像描述

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

在此处输入图像描述

实际文件位于 foo.lproj 文件夹中,只是没有在 xcode 侧边栏中显示它们。如果您检查文件系统中的位置,您会看到它们位于设置包中。 在此处输入图像描述

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

于 2011-03-26T23:18:59.057 回答
7

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

于 2011-03-27T19:45:05.087 回答
2

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

于 2011-06-17T13:31:33.750 回答
2

我刚刚放弃尝试用 Root.strings 做点什么。相反,我只是将 plist 复制到每个 *.lproj 中,它就起作用了!

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

所以我有:

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

好消息是 Root.plist 是 utf8。

于 2011-11-19T19:44:51.773 回答
0

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

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

注意您可以运行plutil -h以获取使用帮助。

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

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

到字符串文件的那个:

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

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

于 2013-05-15T21:44:44.633 回答