我想扫描我的Android项目以获取所有硬编码的字符串,以便我可以本地化项目,将字符串放在strings.xml中。我在Eclipse中看到了一个“Externalize Strings ...”的选项,但它不是特定于Android的。
我知道you can refactor individual strings,但我想立即重构所有字符串。我有很多文件,我试图避免手动浏览每一个文件。
答案 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)
注意:此解决方案可以帮助您解决问题-查找所有硬编码的字符串。您仍然需要自己进行实际的重构,因为您仍然需要 名称 所有提取的字符串。
这是更短和更好的答案:
您可以运行自定义的棉绒检查-在布局文件中仅查找硬编码的文本:
答案 5 :(得分:-1)
我相信Eclipse的Google CodePro插件在某处
中有此功能