235

我通过为它创建一个 base.lproj 故事板和 3 个字符串文件来本地化我的应用程序的一部分。一个月前,在那之后我向应用程序添加了新的视图控制器,但是这个控制器的按钮和标签没有出现在字符串文件中

是否可以更新这 3 个故事板附加的字符串文件,或者我必须使用 NSLocalizableString 和 Localizable.strings 以编程方式添加新的字符串翻译?

4

15 回答 15

271

有两种选择:

选项1

Xcode 可以通过将文件转换为[Interface Builder Cocoa Touch Storyboard]文件类型或[Localizable Strings]文件类型来“重新加载”文件。

  1. 从项目导航器中选择您的基本故事板文件
  2. 在文件检查器中找到本地化部分
  3. 如果您的文件当前是 [Localizable Strings],请将其更改为 [Interface Builder Cocoa Touch Storyboard],反之亦然。
  4. Xcode 应该已将您的故事板转换为当前版本,同时保留您旧的本地化工作。如果您愿意,您可以在此处将文件更改回原始文件类型。

选项 2

使用 ibtool 提取情节提要中的字符串。

  1. 打开终端应用程序

  2. 找到您的 Base.lproj 目录

  3. 使用这一行来提取字符串:

    ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings

  4. ibtool 将字符串提取到 file_name.strings 后,您可以将其复制并粘贴到原始 .strings 文件中

访问以获取更多信息:https ://conyac.cc/business/columns/localization_guide_ios

于 2013-05-01T07:17:31.167 回答
85

查看BartyCrouch,它完美地解决了您的问题。它也是开源的,积极维护,可以很容易地安装和集成到您的项目中。


通过Homebrew安装BartyCrouch :

brew install bartycrouch

或者,通过Mint安装它:

mint install Flinesoft/BartyCrouch

逐步更新您的 Storyboards/XIBs 字符串文件:

$ bartycrouch update

这将完全符合您的要求。


为了您的 Storyboards/XIBs 字符串文件随着时间的推移而更新,我强烈建议添加一个构建脚本(有关如何在此处添加构建脚本的说明):

if which bartycrouch > /dev/null; then
    bartycrouch update -x
    bartycrouch lint -x
else
    echo "warning: BartyCrouch not installed, download it from https://github.com/Flinesoft/BartyCrouch"
fi

除了增量更新您的 Storyboards/XIBs 字符串文件之外,这还将确保您的Localizable.strings文件使用代码中新添加的键保持更新NSLocalizedString,并显示重复键或空值的警告。

请务必查看GitHub 上的 BartyCrouch或此详细文章以获取更多信息。

于 2016-02-14T22:14:43.930 回答
57

您可以在本地化文件中手动添加密钥。您可以通过在情节提要编辑器上选择关键对象来找到它。让我们看一下Object-ID身份检查器。它看起来像"nwc-b2-19c"

在您的本地化更新或添加翻译。例如 :

"nwc-b2-19c.title" = "Translated title";
于 2015-12-30T15:29:58.650 回答
34

这并不适合所有人,但它不需要终端中的其他工具,并且很容易进行小的手动更改。(当你想自动化你的过程时不要考虑这个。)

步骤 0:故事板语言设置

  • 基础(附英文文本)
  • 英文(不存在可本地化的字符串文件,因为基本文件是英文)
  • 其他语言(可本地化的字符串文件)

基本配置

此步骤只进行一次。

现在,当我向情节提要添加一些内容时,我会执行以下操作

第 1 步:添加英文本地化字符串文件

添加英语

只需标记英文行项目。

这将创建一个包含所有行的全新英文本地化字符串文件

第 2 步:将新行项目复制到其他语言文件中

并翻译它们

第三步:取消标记英文,去掉对应的localizable strings文件

该文件仅用于获取新订单项

这是一个简单快速的过程,一切都在故事板编辑器中完成

编辑:

这个过程非常适用于小型故事板。例如,我有一个基于选项卡的项目,并且每个选项卡都有一个情节提要。

搜索“故事板参考”以查找教程。

很好的例子:Xcode 中的 Storyboard 参考,我们应该在哪里使用它?

所以每个小故事板只有几个要本地化的字符串。

于 2016-05-28T20:26:10.037 回答
15

最后,我的解决方案是(基本但有效)复制以前的翻译并将它们粘贴到通过取消选中并选中本地化语言框创建的新文件中。

当您只需要更改一两个文本时,这在像我这样的某些情况下会很有用。

于 2015-03-19T12:41:12.153 回答
14

我认为最好的方法是使用内置的导出/导入本地化:

  1. 在 Project Navigator 中选择您的项目文件夹
  2. 选择编辑器>导出本地化,
  3. 所有翻译留在原地,XCode 会自动添加遗漏的字符串。此外,在导入之前,您可以在 XLIFF 编辑器中编辑 .xliff(例如,在线 - http://xliff.brightec.co.uk),然后您无需在 XCode 中执行此操作。
  4. 然后 Editor > Import Localizations 并选择保存的 .xliff 文件。

PS 如果您不想在 XLIFF 编辑器中编辑并跳过第 3 步,XCode 无法保存新字符串。在这种情况下,在 XLIFF 编辑器中打开 .xliff,重新保存而不进行更改并导入新文件。

于 2016-04-13T16:11:10.890 回答
6

当您单击故事板时,例如 Main.storyboard... 在右侧,您可以看到本地化菜单(参见附图)。如果取消选中并再次检查语言,将再次生成该文件。所以我通常复制内容,再次生成文件,然后粘贴我复制并已翻译的内容。

这是我用来更新字典的方式。

在此处输入图像描述

于 2018-07-20T10:31:13.513 回答
5

我有一个巨大的故事板,那里有很多字符串。两种语言以英语和另一种阿拉伯语为基础。任务是在情节提要中添加一些字段和标签,并在没有任何脚本和 NSLocalizableStrings 的情况下为它们添加本地化。

接下来对我有帮助:

第一:确保你有 git 来防止意外的变化。

  1. 转到 xcode 中的目标屏幕并按Editor-> Export For Localization...将ar.xliff文件保存在某处。
  2. 下载XLIFF 编辑器
  3. 打开 ar.xliff 文件并进行更改。
  4. 在 xcode 中导入此文件。完毕!您已更新故事板字符串文件。
于 2017-04-26T13:22:19.377 回答
4

这是一个从情节提要和 xib 中提取字符串并将它们与现有翻译合并的脚本。

要在构建项目时自动运行脚本,请将脚本放入项目根目录,然后在项目设置中的目标构建阶段中添加具有以下行的运行脚本阶段。

./mergegenstrings.py PathToSourceDir

或者,您可以在需要时手动在终端上运行脚本。

脚本ibtool按照 Tha Leang 的回答运行。它还运行genstrings以提取和合并NSLocalizedString源代码中标记为的字符串。该脚本基于本文中的一个脚本,该脚本在运行后合并字符串genstrings

于 2015-03-17T10:02:46.343 回答
4

Apple有一个名为AppleGlot的命令行工具应用程序,它支持增量本地化。我还没有尝试过,但它看起来与您搜索的工具完全一样(前段时间)。

于 2014-06-16T13:39:15.933 回答
4

最简单且风险更低的方法是,只需从情节提要中复制对象 ID 并为本地化文件中的键添加一个新键,如下例所示:

1:从组件的情节提要中复制如下对象ID:

在此处输入图像描述

2:在本地化文件中添加新密钥,如下所示:

"DjF-dn-0ay.text" = "Borrar datos y restablecer";

注意:如果您只想更新少数组件,这是一种风险较小的方法,否则您可以为情节提要重新创建本地化文件。

于 2018-10-03T07:44:37.910 回答
3

Xlifftool 可作为 Mac 应用程序使用,并且运行良好。它显示了 info.plist 中的所有可翻译字符串和对象、可本地化的字符串和情节提要。

在这里为 mac 获取它:https ://itunes.apple.com/lv/app/xlifftool/id1074282695?mt=12

第 1 步:在 Xcode 中,在项目导航器中选择您的项目文件夹。然后选择 Editor/Export for Localization...

您的可翻译字符串将包含在您选择用于 Xcode 本地化的语言下的 xliff 文件中。

第 2 步:使用 xlifftool 打开该文件并翻译或更新您之前完成的翻译。

第 3 步:然后使用 Editor/Import Localizations 上传回您的项目...

于 2019-10-29T18:27:45.927 回答
2

选项 1 Xcode 可以通过将文件转换为文件类型或文件类型
来“重新加载”文件。[Interface Builder Cocoa Touch Storyboard][Localizable Strings]

从Project Navigator中选择您的基本故事板文件在File Inspector中 找到Localization部分。如果您的文件当前是,请将其更改为,反之亦然。 Xcode 应该已将您的故事板转换为当前版本,同时保留您旧的本地化工作。如果您愿意,您可以在此处将文件更改回原始文件类型。[Localizable Strings][Interface Builder Cocoa Touch Storyboard]

选项 2
用于ibtool提取情节提要中的字符串。

打开终端应用程序
找到您的Base.lproj目录
使用此行提取字符串:

ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings

在 ibtool 将字符串提取到 后file_name.strings,您可以将其复制并粘贴到您的原始.strings文件中。

于 2020-03-31T10:13:49.880 回答
0

添加新语言进行本地化。一个你不需要的。

例如,它将生成说 Indonesia.strings,其中将包含您需要的所有情节提要按钮名称等,将它们全部复制并粘贴到您拥有的所有其他 language.string 文件中。

于 2021-04-08T16:37:27.070 回答
0

这是我将新文本从情节提要或 xib 更新为本地化字符串的简单方法

1-使用这个脚本http://tredje.se/dev/trouble/?x=entry:entry150917-204052

2-选择您要更新的本地化字符串并将您的语言字符串从“本地化字符串”切换到“界面构建器故事板”

3-切换回来:)

完毕。

在此处输入图像描述

于 2016-11-20T13:56:23.860 回答