Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 是否自动将NSString转换为NSLocalizedString?_Ios_Objective C_Cocoa Touch_Nsstring - Fatal编程技术网

Ios 是否自动将NSString转换为NSLocalizedString?

Ios 是否自动将NSString转换为NSLocalizedString?,ios,objective-c,cocoa-touch,nsstring,Ios,Objective C,Cocoa Touch,Nsstring,我仍然为学习iOS开发付出了高昂的代价,所以请善待我。 我有一个iOS应用程序,包含大约400个NSStringliterals。我从来没有想过我以后会想本地化这个应用程序,所以在意识到NSLocalizedString的同时,我决定不在我的项目中使用它们。现在世界已经改变,我需要本地化这个应用程序。我是否可以使用任何工具/脚本来运行我的.m文件,并使用nsLocalizedString搜索/替换我的NSStrings,然后再使用genstrings提取它们 谢谢 罗杰您通常不想将所有nsstr

我仍然为学习iOS开发付出了高昂的代价,所以请善待我。
我有一个iOS应用程序,包含大约400个
NSString
literals。我从来没有想过我以后会想本地化这个应用程序,所以在意识到
NSLocalizedString
的同时,我决定不在我的项目中使用它们。
现在世界已经改变,我需要本地化这个应用程序。我是否可以使用任何工具/脚本来运行我的
.m
文件,并使用
nsLocalizedString
搜索/替换我的
NSStrings
,然后再使用genstrings提取它们

谢谢
罗杰

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


有相当多的工作需要手动完成,但这是一次性的工作——一旦你完成了,一旦你知道了正确的方法来处理任何新用户面对的字符串,就可以边做边做。话虽如此,也许有一种工具可以很好地处理这一问题,但无法避免手动选择哪些字符串需要翻译,哪些不需要翻译。

从我所了解和检查的内容来看,没有自动方法将字符串转换为您希望的本地化字符串。但是XCode有一个名为Lin的插件,它使您的过程变得简单

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


您第一次编写代码时犯了一个错误,现在您必须为此付出代价

您需要手动执行程序,并将用户可见的字符串文本更改为对NSLocalizedString的调用

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

始终,始终,使用NSLocalizedString创建本地化字符串。只需再键入几个字符,就可以大大简化代码的国际化


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

从问题和你的评论来看,你似乎有大约400个字符串,其中只有20个不应该本地化。有了这个比例,正如你自己所说,把它们全部改变,然后取消对20的改变是有意义的

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


是的!查找并替换正则表达式将加快速度

在查找栏中输入:

(".*")
在“替换”栏中:

NSLocalizedString($1,comment:"")
这会将“normalString”更改为NSLocalizedString(“normalString”,注释:“”)


所以,检查一下你的代码,在那些你想替换的代码上,只需按replace,这是一个巨大的省时功能

说得好,罗伯!但在我的400个字符串中,大概有380个是面向用户的。因此,将它们全部转换为本地化字符串,然后将这20个面向非用户的字符串转换回正常的NSStrings,这样做的工作量会小得多我被打了一顿:(为我的手腕CRD祈祷。我承认我没有想到“开箱即用”(可以说Xcode就是开箱即用)。我想是时候温习一下我的正则表达式技能并试一试了……这很好地解决了问题,并为我节省了数小时的打字时间。你是我的英雄,CRD!为了完整性。这是我正在使用的正则表达式(我的大多数字符串都是数组)。我搜索了/@“[^,;]+”/g,并替换为NSLocalizedString($&,nil)@theremin我也有同样的问题。你能举个例子吗?别忘了将find选项设置为Regex