Android:有没有一种简单的方法可以找到我项目中的所有字符串?

时间:2011-11-06 03:15:13

标签: android string localization

我想扫描我的Android项目以获取所有硬编码的字符串,以便我可以本地化项目,将字符串放在strings.xml中。我在Eclipse中看到了一个“Externalize Strings ...”的选项,但它不是特定于Android的。

我知道you can refactor individual strings,但我想立即重构所有字符串。我有很多文件,我试图避免手动浏览每一个文件。

6 个答案:

答案 0 :(得分:12)

我只是在你项目的根目录下打开一个终端窗口(如果你在Windows上就是putty)。然后,您可以运行以下内容:

grep -r --include=*.java '="[^"\r\n]*"' ./*  --to look for something like this String test="text";, a string with =""
or
grep -r --include=*.java '"[^"\r\n]*"' ./*  -- to look for any string, anything enclosed in ""

当然接下来的部分是将字符串实际替换为Strings.xml,也可以编写脚本,但可能需要更多的修改。

答案 1 :(得分:7)

我自己在寻找这个。有一种很好的方法可以做到这一点:

右键点击“src”目录 - >来源 - >外化字符串

这将找到所有非外部化字符串,并允许您将它们外部化。

希望这会有所帮助:)

修改
这与Android不同 - >提取Android字符串。 但它可以帮助您找到所有非外化字符串。然后,在每个字符串上,您必须执行:
Ctrl + 1 - > Android - >提取Android字符串。

答案 2 :(得分:1)

Field[] fields = R.string.class.getDeclaredFields(); // or Field[] fields = R.string.class.getFields(); String str = ""; for (int i =0; i < fields.length; i++) { int resId = getResources().getIdentifier(fields[i].getName(), "string", getPackageName()); str += fields[i].getName() + " = "; if (resId != 0) { str += getResources().getString(resId); } str += "\n"; }

您将获得所有字符串代码及其值在&#34; str&#34;变量

答案 3 :(得分:0)

只需配置eclipse即可在代码中显示所有字符串: Configuring eclipse to complain for hard coded strings for android xml preferences

用eclipse重构器逐个替换它们

答案 4 :(得分:0)

注意:此解决方案可以帮助您解决问题-查找所有硬编码的字符串。您仍然需要自己进行实际的重构,因为您仍然需要 名称 所有提取的字符串。


编辑:

这是更短更好的答案:

  1. 菜单->分析->按名称运行检查...(即使您感觉敏捷也有快捷方式)
  2. 键入“ Hardcoded Text”,选择范围并运行。

您可以运行自定义的棉绒检查-在布局文件中仅查找硬编码的文本:

  1. 菜单->分析->检查代码
  2. 选择所需的范围(例如,布局)

    enter image description here

  3. 在“检查配置文件”下,选择一个新的自定义配置文件(...)

  4. 复制现有配置文件,并取消选中“ HardcodedText”以外的所有检查

enter image description here

enter image description here

  1. 运行此检查,您所有的硬编码字符串都将被方便地收集到一个列表中。

答案 5 :(得分:-1)

我相信Eclipse的Google CodePro插件在某处

中有此功能