是否有可能更新一个本地化的故事板's字符串?

我本地化了我的应用程序的一部分,创建一个基础。Lproj storyboard和3个字符串文件。这是一个月前,之后我添加了新的视图控制器到应用程序,但这个控制器的按钮和标签没有出现在字符串文件

是否有可能更新这3故事板附加字符串文件或我必须添加新的字符串翻译与使用NSLocalizableString和Localizable.strings编程?

84072 次浏览

有两种选择:

选项1

Xcode可以“重新加载”;通过将文件转换为[界面构建器Cocoa Touch Storyboard]文件类型或(本地化的字符串)文件类型来获取文件。

  1. 从Project Navigator中选择您的基本故事板文件
  2. 在文件检查器中找到本地化部分
  3. 如果你的文件现在是[Localizable Strings],把它改成[Interface Builder Cocoa Touch Storyboard],反之亦然。
  4. Xcode应该已经将你的故事板转换为当前版本,同时保留你以前的本地化工作。在这里,如果您愿意,您可以将文件更改回原始文件类型。

选项2

使用ibtool提取故事板中的字符串。

  1. 打开终端应用程序

  2. 定位基地。lproj目录

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

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

  4. 在ibtool提取字符串到file_name。字符串,你可以复制并粘贴到你原来的。Strings文件

更多信息请访问:https://conyac.cc/business/columns/localization_guide_ios

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

下面是一个脚本,用于从故事板和xib中提取字符串,并将它们与现有的翻译合并。

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

./mergegenstrings.py PathToSourceDir

如果需要,也可以在终端上手动运行脚本。

脚本运行ibtool,正如Tha Leang回答的那样。它还运行genstrings来提取和合并源代码中标记为NSLocalizedString的字符串。该脚本基于这篇文章中的一个脚本,它在运行genstrings后合并字符串。

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

这在某些情况下很有用,比如当你只需要更改一两个文本时。

您可以手动在本地化文件中添加一个键。您可以通过在故事板编辑器中选择它来找到关键对象。让我们来看看标识符检查器中的Object-ID。它看起来像"nwc-b2-19c"

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

"nwc-b2-19c.title" = "Translated title";

看看< a href = " https://remafox。app" rel="nofollow noreferrer">ReMafoX,这是一个Mac应用程序,完美地解决你的问题。它可以是你的项目中的易于安装和集成,观看这个视频的详细演练。

或者,如果你更喜欢没有GUI的开源CLI工具,你也可以使用BartyCrouch


BartyCrouch通过家酿:

brew install bartycrouch

或者,通过薄荷安装它:

mint install Flinesoft/BartyCrouch

增量更新 your Storyboards/XIBs Strings文件:

$ bartycrouch update

这正是你想要的。


为了保持你的Storyboards/ xib 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

除了增量更新你的Storyboards/ xib Strings文件,这还将使用NSLocalizedString在代码中添加新键,并显示重复键或空值的警告。

请确保在GitHub这篇详细的文章上结帐BartyCrouch以获取更多信息。

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

  1. 在项目导航器中选择您的项目文件夹
  2. 选择编辑器>导出本地化,
  3. 所有的翻译都留在原来的位置,XCode会自动添加遗漏的字符串。 此外,在导入之前,你可以在XLIFF编辑器中编辑. XLIFF(例如,online - http://xliff.brightec.co.uk),然后你不需要在XCode中这样做
  4. 然后编辑>导入本地化并选择已保存的.xliff文件。

注:如果你不想在XLIFF编辑器中编辑,并且跳过了步骤3,XCode不能保存新字符串。在这种情况下,在XLIFF编辑器中打开. XLIFF,重新保存,不做任何更改,并导入新文件。

这个方法并不适用于所有人,但是它不需要在终端中使用额外的工具,而且很容易进行小的手动更改。(当您希望自动化您的流程时,不要考虑这一点。)

步骤0:故事板语言设置

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

基本配置

此步骤只执行一次。

现在,当我向故事板添加一些东西时,我执行以下操作

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

Add English

只需标记英文行项目。

这将创建一个全新的英文本地化字符串文件

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

然后翻译

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

该文件只需要获取新的行项

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

编辑:

这个过程对于小型故事板非常有效。例如,我有一个基于选项卡的项目,每个选项卡都有一个故事板。

搜索“storyboard reference”找到教程。

好例子:在Xcode中的故事板引用,我们应该在哪里使用它?

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

这是我将新文本从storyboard或xib更新到本地化字符串的简单方法

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

2- 选择本地化字符串,你想要更新和切换你的语言字符串从“本地化字符串”到“接口构建器storyboard”

3-把它换回来:)

完成了。

enter image description here

我有一个巨大的故事板,里面有很多字符串。两种语言,以英语和阿拉伯语为基础。任务是添加一些字段和标签到故事板,并为它们添加本地化,不需要任何脚本和NSLocalizableStrings。

对我的帮助如下:

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

  1. 在xcode中进入目标屏幕,按Editor -> Export For Localization...。将ar.xliff文件保存在某个地方。
  2. 下载XLIFF Edtior
  3. 打开ar.xliff文件并进行更改。
  4. 在xcode中导入这个文件。完成了!您已经更新了故事板字符串文件。

当你在故事板中点击Main。例如故事板……在右边你可以看到本地化菜单(见所附图片)。如果取消选中,再选中一种语言,文件将重新生成。所以我通常复制内容,再次生成文件,然后粘贴我复制的和已经翻译好的内容。

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

enter image description here

最简单且风险较小的方法是,从storyboard中复制Object ID,并为本地化文件中的key添加一个新key,如下所示:

1:从storyboard中为组件复制对象id如下:

enter image description here

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

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

注意:如果你只想更新几个组件,这是非常低风险的方法,否则你可以为故事板重新创建本地化文件。

xliftool是一个Mac应用程序,运行良好。它显示了info中所有可翻译的字符串和对象。Plist,可本地化字符串,还有故事板。

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

第一步:在Xcode中,在项目导航器中选择你的项目文件夹。然后选择编辑器/导出本地化…

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

步骤2:用xliftool打开该文件,翻译或更新之前完成的翻译。

步骤3:然后用编辑器上传回你的项目/导入本地化…

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

项目导航器中选择基本故事板文件文件检查器. xml中找到本地化部分。 如果您的文件当前是[Localizable Strings],则将其更改为[Interface Builder Cocoa Touch Storyboard],反之亦然 Xcode应该已经将你的故事板转换为当前版本,同时保留你以前的本地化工作。在这里,如果您愿意,您可以将文件更改回原始文件类型 < p > 选项2 < br > 使用ibtool来提取故事板中的字符串

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

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

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

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

它会生产印尼语。例如字符串,它将包含你需要的所有故事板按钮-名称等,复制并粘贴到所有其他语言中。字符串文件。