是否可以更新本地化的故事板的字符串?

GeL*_*eLB 214 string xcode localization storyboard ios

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

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

Tha*_*ang 262

有两种选择:

选项1

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

  1. 从Project Navigator中选择基本故事板文件
  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

  • 对我来说,选项1用英语替换所有已翻译的字符串.我不得不再次添加翻译. (49认同)
  • 选项1工作.但您需要从"Localizable .."更改为"interface ..."然后再返回! (16认同)
  • 选项1在Xcode 7中看起来非常不稳定.有时它可以工作,有时则不然.有时它会再次用英文版本随机替换我已翻译过的一些字符串. (5认同)
  • 选项1对我使用XCode 6.0.1不起作用.当我尝试将.strings文件转换为.interfacebuilder时,XCode会询问是否应该转换文件.文件在文件系统上创建,但字符串文件仍然保留并包含旧值. (3认同)
  • 您需要使用 1 个选项再次翻译整个文件! (2认同)

Jee*_*hut 68

看看BartyCrouch,它完美地解决了你的问题.它也是开源的,积极维护的,可以轻松安装和集成到您的项目中.


通过Homebrew 安装 BartyCrouch :

brew install bartycrouch
Run Code Online (Sandbox Code Playgroud)

或者,通过Mint安装它:

mint install Flinesoft/BartyCrouch
Run Code Online (Sandbox Code Playgroud)

逐步更新 Storyboards/XIBs Strings文件:

$ bartycrouch update
Run Code Online (Sandbox Code Playgroud)

这将完全符合您的要求.


为了使 Storyboards/XIBs Strings文件随时间更新,我强烈建议您添加构建脚本(有关如何在此处添加构建脚本的说明):

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
Run Code Online (Sandbox Code Playgroud)

除了逐步更新Storyboards/XIBs Strings文件之外,还将确保您的Localizable.strings文件使用代码中新添加的密钥保持更新,NSLocalizedString并显示重复键或空值的警告.

请务必在GitHub上查看BartyCrouch以获取更多信息.

  • 自从提出这个问题以来,我不明白为什么 6 年后,仍然需要这个不完整的解决方案才能让它在 Xcode 中工作。苹果应该在这方面努力。 (4认同)
  • 这就是我们正在寻找的答案。这应该是公认的答案。 (2认同)

Séb*_*EMY 54

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

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

"nwc-b2-19c.title" = "Translated title";
Run Code Online (Sandbox Code Playgroud)

  • 认为这是风险较小的方法 (7认同)

Ger*_*tan 27

这个不适合所有人,但它不需要终端中的额外工具,并且很容易进行小的手动更改.(当您想要自动化流程时,请不要考虑这一点.)

第0步:故事板语言设置

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

基本配置

此步骤仅执行一次.

现在,当我向故事板添加内容时,我会执行以下操作

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

添加英文

只需标记英文专列项.

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

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

并翻译他们

第3步:取消标记英文,删除相应的可本地化的字符串文件

该文件只需要获取新的订单项

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


jpl*_*850 15

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

当你只需要改变一两个文本时,这在我的某些情况下会很有用.


Igo*_*gor 13

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

  1. 在Project Navigator中,选择项目文件夹
  2. 选择编辑器>导出以进行本地化,
  3. 所有翻译都留在他们的位置,XCode会自动添加错过的字符串.此外,在导入之前,您可以在XLIFF编辑器中编辑.xliff(例如,在线 - http://xliff.brightec.co.uk),然后您不需要在XCode中执行此操作.
  4. 然后编辑>导入本地化并选择已保存的.xliff文件.

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


Nik*_*Kov 5

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

接下来对我有帮助:

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

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


小智 5

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

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

在此输入图像描述