作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在旧版本的 Android Studio 中,可以简单地选择所有条目并将它们复制/粘贴到 excel 中。
现在我使用的是 Android Studio 4.0.1,出于某种原因,他们在翻译编辑器中禁用了 Cmd+A 热键。
我查看了所有可用的插件/第三方工具,但它们似乎都不适合我。
还检查了类似的 SO 线程,那里的任何想法都没有帮助我。
我有巨大的 string.xml 文件翻译成 10 种语言,所以我只寻找自动化解决方案。
最佳答案
我在 Android Studio 中遇到了同样的问题,我无权从翻译编辑器中复制所有条目,所以我决定做自己的 XmlResourceParser,它从特定的 strings.xml 文件中读取所有键和值。当然,您可以根据需要使用和修改此脚本。
private void parseResourceXML(XmlResourceParser parser) {
try
{
int eventType = parser.getEventType();
LinkedHashMap<String, Object> map = new LinkedHashMap<>();
StringBuilder sbValues = new StringBuilder();
StringBuilder sbKeys = new StringBuilder();
String nameAttr = "";
boolean translatableAttr = true;
while (eventType != XmlResourceParser.END_DOCUMENT)
{
if (eventType == XmlResourceParser.START_DOCUMENT)
{
//Log.d("XmlResourceParser", "Start Document");
}
else if (eventType == XmlResourceParser.START_TAG)
{
//Log.d("XmlResourceParser", "Start Tag " + parser.getName());
String element = parser.getName();
if (!TextUtils.isEmpty(element))
{
switch (element)
{
case "string":
nameAttr = parser.getAttributeValue(null, "name");
translatableAttr = parser.getAttributeBooleanValue(null, "translatable", true);
map.put(nameAttr, nameAttr);
sbKeys.append(nameAttr);
sbKeys.append("\n");
break;
case "string-array":
nameAttr = parser.getAttributeValue(null, "name");
translatableAttr = parser.getAttributeBooleanValue(null, "translatable", true);
break;
case "item":
nameAttr = parser.getAttributeValue(null, "name");
translatableAttr = parser.getAttributeBooleanValue(null, "translatable", true);
map.put(nameAttr, nameAttr);
sbKeys.append(nameAttr);
sbKeys.append("\n");
break;
}
}
}
else if (eventType == XmlResourceParser.END_TAG) {
//Log.d("XmlResourceParser", "End Tag " + parser.getName());
}
else if (eventType == XmlResourceParser.TEXT) {
//get the String value text
String text = parser.getText();
map.put(nameAttr, text);
sbValues.append(text);
sbValues.append("\n");
}
eventType = parser.next();
}
String sKeys = sbKeys.toString();
String sValues = sbValues.toString();
int i = 0; //<------- PUT A BREAK POINT HERE and point to sKeys or sValues and click + button and then click on VIEW button (in debug mode) and copy them all. Then Paste all sKeys in Excel in Column1 and sValues in Column2
} catch (Exception e) {
e.printStackTrace();
}
}
您可以在 Activity 的 onCreate 方法中像下面这样调用它:
parseResourceXML(getResources().getXml(R.xml.strings));
并将您的 strings.xml 或本地化的 strings_fr.xml 放在 res/xml 文件夹下。
关于android - 如何将翻译编辑器条目导出到 Excel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64923065/
我是一名优秀的程序员,十分优秀!