【问题标题】:How to extract the strings in double quotes for localization如何提取双引号中的字符串以进行本地化
【发布时间】:2016-08-23 19:04:02
【问题描述】:

我正在尝试提取localization 的字符串。有很多文件,其中一些字符串被标记为NSLocalizedStrings,而其中一些没有。

我可以使用ibtoolgenstrings 获取NSLocalizedStrings,但如果没有NSLocalizedString,我无法提取纯字符串。

我不擅长正则表达式,但我想出了这个"[^(]@\"" 并在 grep 的帮助下:

grep -i -r -I "[^(]@\"" * > out.txt

它成功了,所有的字符串实际上都被抓取到一个txt文件中,但问题是,

如果在我的代码中有一行:

  ..... initWithTitle:@"New Sketch".....

我只希望 grep 抓取 @"New Sketch" 部分,但它抓取整行。

所以在out.txt 文件中,我看到了initWithTitle:@"New Sketch",以及一些不需要的行。

如何编写正则表达式以仅获取双引号中的字符串?

我用here 中提到的正则表达式尝试了 grep 命令,但它给了我语法错误。

例如,我试过了:

 grep -i -r -I (["'])(?:(?=(\\?))\2.)*?\1 * > out.txt

它给了我

 -bash: syntax error near unexpected token `('

【问题讨论】:

  • 我认为这是在谈论第一个括号。 grep -i -r -I ( 我认为它需要一个带引号的字符串。
  • 为什么不能在xcode中使用导出/导入工具?
  • 我一直想用它,但是我们公司的翻译人员不希望我们用它。所以很难!@EugeneZhenyaGordin
  • 如果您打算本地化您的应用程序,您需要对代码中需要本地化的每个字符串使用NSLocalizedString。一次更新您的代码库并正确执行。随着时间的推移,它将为您节省大量的精力。
  • 我同意@rmaddy,如果找不到更简单的方法,我会这样做。

标签: objective-c regex terminal grep


【解决方案1】:

在 xcode 中,打开您的项目。转到编辑器-> 本地化导出...它将创建文件文件夹。标记为本地化的所有内容都将在那里提取。无需自己解析。它将采用 XML 格式。

如果您想更努力,那么您可以按照您现在尝试的方式解析这些文件?!顺便说一句,它也会有 Storyboard 字符串。

【讨论】:

  • 感谢您的回答,但是当我们这样做时,只会导出标记为 NSLocalizedStrings 的字符串,而不会导出纯字符串。
  • 故事板本地化完成了,就剩下这些类文件了。
  • 没错...我已经完成了类似的本地化。将 NSLocalizedString 添加到所有没有首先标记的字符串中会更容易,否则您将一直有这种痛苦。特别是添加/更改字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多