自动将NSString转换为NSLocalizedString?

时间:2014-04-23 13:13:59

标签: ios objective-c cocoa-touch nsstring

我仍然为学习iOS开发付出了沉重的代价,所以请善待 我有一个iOS应用程序,包含大约400 NSString litterals。我以前从未想过我会想要本地化这个应用程序,所以在意识到NSLocalizedString时我决定不将它们用于我的项目。
现在世界已经改变了,我需要本地化这个应用程序。是否有我可以使用的工具/脚本将通过我的.m文件和#34;搜索/替换"在我用genstrings提取它们之前,我的NSStringsNSLocalizedStrings一起?

由于 罗杰

5 个答案:

答案 0 :(得分:6)

你第一次没有正确编写代码时犯了一个错误,现在你必须付出代价。

您需要手动完成程序并将用户可见的字符串文字更改为对NSLocalizedString的调用。

请注意,您不希望全局更改所有字符串文字。字典键之类的东西不应该本地化。

总是,总是使用NSLocalizedString来创建本地化字符串。它只需要输入几个字符,它可以使您的代码更加国际化 DRAMATICALLY

好消息是,这样做的痛苦将成为一个痛苦的教训,你可能不会再犯同样的错误。

答案 1 :(得分:3)

是的!查找和替换正则表达式将加快这一点。

在查找栏中输入:

(".*")

在替换栏中:

NSLocalizedString($1,comment:"")

这会将“normalString”更改为NSLocalizedString(“normalString”,comment:“”)

因此,请仔细检查您的代码以及要更换的代码,只需按下替换,这是一个巨大的节省时间!

答案 2 :(得分:2)

您通常不希望将所有NSStrings替换为NSLocalizedString,因为并非所有字符串都必须是“面向用户”。您可能拥有内部使用的字符串常量,用户从未看到这些字符串常量,通常不应翻译这些常量。因此,盲目地用NSLocalizedString替换所有NSStrings可能不是一个好主意。

有一些相关的工作需要手动执行,但这是一次性的努力 - 一旦你完成它,一旦你知道正确的方法来处理任何新的面向用户的字符串并做随你而去话虽如此 - 很可能有一个工具在那里优雅地处理这个,但是没有避免手动挑选哪些字符串需要翻译而哪些不需要翻译。

答案 3 :(得分:2)

从我学习并检查出来,没有自动方法可以将您的字符串转换为您希望的本地化。但是有一个名为Lin的XCode插件,可以让你的过程变得简单。

当您专注于NSLocalizedString或其他函数以获取字符串的本地化版本时,Lin会显示包含输入的键字符串的本地化列表。

Lin

答案 4 :(得分:1)

从问题和你的评论来看,你似乎有大约400个字符串,其中只有20个不应该被本地化。有了这个比例,就像你自己说的那样,改变它们然后撤消20的变化是有道理的。

为此,请获取TextWrangler或BBEdit,并执行匹配搜索和替换的多文件模式。您可以将搜索范围限制为以.m.h结尾的文件。除了那些......之外,任务将是快速而简单的。

HTH