增量本地化如何运作?

Eim*_*tas 7 cocoa localization xib ios ibtool

我正在尝试构建我的第一个本地化应用程序.我使用NSLocalizedString(用于genstrings工具)在代码中翻译了所有字符串.现在我碰到了ibtool.增量本地化如何运作?关于手册页,我应该写这样的东西:

$ ibtool --previous-file path/to/prev.xib \
--incremental-file path/to/inc.xib --localize-incremental \
--write path/to/new.xib mod.xib
Run Code Online (Sandbox Code Playgroud)

我从哪里获得增量文件?据我所知,如果我使用的是版本控制(git/svn),那么"旧"文件在几次提交之前,增量文件是diff和path/to/new.xib是新生成的xib文件.mod.nib对我来说是一个谜.有谁能解释我这是如何工作的?另外 - 如果没有以前的版本可用,我该如何开始xib的本地化(即不进行增量,而是初始本地化)?

Cla*_*fou 12

我认为他们选择的术语,尤其--incremental-file是术语,会引起混淆.我们的想法是你有两种语言(源和目标)的旧版xib,并且你已经用源语言改变了它,并希望更新目标语言版本以匹配.

我们来举个例子吧.您之前使用英语(源语言)的home.xib,并有人将其翻译为法语(目标语言).您已经开发了一个新功能,现在您已经有了英文版home.xib的更新版本,其中添加了UILabel和UITextField并移动了一些东西.您显示的命令可以帮助您获得法语版本的home.xib的更新版本,以便它具有新的UILabel和UITextField,并且可以像英语一样移动.请注意,您在新UILabel和UITextField中设置的任何文本内容都将以英语添加,然后需要在法语xib中进行翻译(但您可以通过--import-strings-file在另一个文件中添加和提供翻译来自动执行此操作).

因此,如果我们将您显示的命令映射到此示例:

  • --previous-file path/to/prev.xib 指定旧的英文xib
  • --incremental-file path/to/inc.xib 指定旧的法国xib
  • --write path/to/new.xib 指定将创建的新法语xib
  • mod.xib 指定新的英文xib

关于你如何开始这个过程的另一个问题,真的取决于你如何本地化你的xib.您显然会创建xibs的新语言版本(在XCode中,您只需将语言添加到xib的语言列表中,并自动创建本地化的xib).然后,如果您自己在Interface Builder中对它们进行本地化,那么您只需在本地化的xib中进行相关更改(文本翻译和任何必要的大小调整).或者,您可以将xib中的文本提取到.strings文件中,将其翻译,并将它们注入这些xib的相关语言版本中.为此,您将再次使用ibtool,但是--generate-strings-file对于提取阶段和--import-strings-file注入阶段.