如何将Android字符串资源导入/导出Excel以进行本地化?

46

我在应用程序开发中使用Android Studio。我希望通过将Android语言资源(strings.xml)导出/导入到Excel文件(xlsx)中来翻译字符串。怎样才是最好的方法?

10个回答

30
如果有其他人需要答案,从res -> strings -> 右键单击 -> 打开翻译编辑器。选择需要的数据/变量,然后将数据从翻译编辑器复制并粘贴到Excel中。完成。android studio v2.2的图像

21
对于所有遇到与我相同问题的Mac用户,请确保使用(Ctrl+C)复制,正如@ShellDude所指出的那样。 - Trent
3
是的,只需要在Android Studio中按Ctrl+C,然后在Google Sheets中按Command+V,就可以完美地实现复制粘贴了! - Louis Tsai
7
有没有办法从Excel表格复制到Android Studio? - Chintan Shah
3
我无法将它复制回编辑器 :( 有人知道原因是什么吗?我正在使用3.0.1版本。 - Crearo Rotar
13
最近一次更新后,它不再起作用。我也在使用3.2版本,在按下"Ctrl+A"后什么也没发生。以前你可以用这个组合键选择所有的值。 - Variag
显示剩余10条评论

25

由于在Android Studio中CTRL+A不起作用,因此有一种方法可以将Android字符串文件转换为CSV,然后借助Google翻译进行翻译,接着再次将其转换回XML。

这里有一篇详细的博客


1
在那里节省了我很多时间。请注意,在该网站中选择Windows-1252编码,以正确创建带有非英语字符的xml文件。 - BarLr
1
将数据导出为csv文件后,可以将其导入到Google表格中,并使用Google翻译功能:https://support.google.com/docs/answer/3093331?hl=en - Piaf
这个回答指向了你自己的网站。对我来说,它闻起来像广告,特别是那个页面上有大量的广告。也许你应该在这里写出答案,而不仅仅提供一个链接到你的网站。 - David Rector
@DavidRector 博客中使用的图片数量较多,因此最好在单独的博客中呈现答案。我认为广告没有任何问题,博客完全可读。如果有任何问题,请告诉我。 - Raj
1
@Raj,你的链接已经失效了。 - SUR4IDE

6
  1. 将Strings资源文件导出为csv文件
  2. 获取其内容的翻译(可能来自谷歌翻译)
  3. 将翻译后的文件转换回Strings.xml(Android字符串资源文件)

我使用了http://convertcsv.com/csv-to-xml.htm这个网站将csv文件转换为Strings资源文件

需要提及自定义输出模板以将其转换为Strings资源文件

<string name="{f1}">{f2}</string>

请将此放入提供的模板部分

网站还会显示所需的转换输出文件


这对我有效。 - Dildarkhan Pathan
你是怎么做第一步的?(将strings.xml转换为.csv文件)? - undefined

4
我建议用内置于Android Studio的翻译编辑器来进行Android应用程序字符串本地化,这是最好的工具。
这种方法的优点在于,您可以使翻译过程更加简单易行,并且减少错误。Android Studio中的XML字符串文件支持XLIFF标记,这是一种标准化的方法来帮助字符串本地化。
通过在XML字符串文件中使用XLIFF标记,您可以执行以下操作以帮助翻译人员:
  • 为声明的字符串提供额外的上下文信息
  • 标记不应翻译的消息部分
要在Android字符串XML文件中使用XLIFF,您需要包含XLIFF 1.2命名空间。
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">

以下是Android本地化文档中的一些字符串示例:
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">

<!-- Example placeholder for a special unicode symbol -->
<string name="star_rating">Check out our 5
    <xliff:g id="star">\u2605</xliff:g>
</string>

<!-- Example placeholder for a for a URL -->
<string name="app_homeurl">
    Visit us at <xliff:g id="application_homepage">http://my/app/home.html</xliff:g>
</string>

<!-- Example placeholder for a name -->
<string name="prod_name">
    Learn more at <xliff:g id="prod_gamegroup">Game Group</xliff:g>
</string>

<!-- Example placeholder for a literal -->
<string name="promo_message">
    Please use the "<xliff:g id="promotion_code">ABCDEFG</xliff:g>” to get a discount.
</string>

</resources>

要在Android Studio中访问翻译编辑器,请从项目树中的XML字符串文件(即strings.xml)的上下文菜单中选择“打开翻译编辑器”(如下所示)。

open translations editor


2
我不会说它是最好的,:-) 它有两个主要问题:首先,你不能自定义它使用的字体。其次,你不能简单地一个接一个地输入翻译,你必须双击每个项目才能得到光标。对于一个基于键盘的任务来说,这是一个很大的麻烦。 - Gábor
三个,不是两个。它不支持字符串数组(包括复数形式)。 - Gábor
4
你可以简单地将Open Translations Editor中的数据复制粘贴到Excel中。 - vikifor
2
不回答问题。他明确表示他想将 strings.xml 导入/导出到 .xlsx - galdin
8
vikifor,你的回答独树一帜。我认为你应该单独发布一个帖子,因为我发现这是这里最有用的答案。对于那些使用MAC的人,还有一个额外的要点..... CMD-C不能用于复制....你必须使用CONTROL-C从Android Studio的翻译编辑器中复制。 - ShellDude
Android Studio中的翻译编辑器很差劲。它肯定不支持任何形式的自动化。我可以将=googletranslate()函数粘贴到表格或Excel中,即可立即获得翻译。内置工具在不仅仅是挂起时,除了让我手动在网格中编辑值而不是在strings.xml文件中,没有任何有趣的功能。 - David Rector

4
正如其他人指出的那样,在Translations Editor中按下Ctrl+A自Android Studio 3.2以来就不起作用了。
我在一家经常外包翻译的公司工作,因此我们需要将Android字符串转换成xls文件,也需要从xls文件中转换回来。唯一可靠的解决方案是使用这个分支旧版android-lang-tool。只需使用maven构建并运行jar文件即可。
它可以将字符串、字符串数组、复数形式及其键值导出到xls文件中,甚至可以导出注释。

所有其他脚本对我都不起作用.. 这个工具完美地运行! - phatmann
9
第一个链接失效。 - Hassan

4
  1. 将strings.xml文件转换为CSV格式 xml-to-csv
  2. 导入到Google Sheets表格中
  3. 使用公式进行翻译 =GOOGLETRANSLATE(B2, "auto", "de")
  4. 使用公式 =CONCATENATE("<string name=",char(34),A2,char(34),">",C2,"</string>")生成另一列输出内容,其中A2是资源ID,C2是已翻译的字符串
  5. 复制整个输出列并粘贴到<resource>...</resource>标记内

1
作为Saad Mahmud所回答的,您可以从翻译编辑器中复制(ctrl+a ctrl+c),然后粘贴到电子表格中。
您可以通过仅复制“默认值”和其他语言列,单击最顶部的默认值并粘贴(ctrl+v)将其从电子表格中复制回翻译编辑器。
只要它们相邻,它也适用于子集(行和列的子集)。
请注意,电子表格中的空单元格不会清空编辑器中的翻译,而是保留当前的翻译。
还要小心,确保在创建电子表格后没有添加或删除任何翻译键...

3
对我没有用。在文本编辑器中,我可以按Ctrl-V,粘贴电子表格中列中的所有数据,但在Android Studio翻译编辑器中,什么也没有发生。 - David Rector
3
这个曾经可以运行,但现在似乎无法从翻译编辑器中一次复制多个字符串。 - rjr-apps
顺便说一下,我能够从Excel电子表格中复制整个列,然后站在最上面的列,将整个列行粘贴到翻译编辑器中。 - electroid

1

只有在 Windows PC 上才支持导出或复制到 Excel。但 MAC 还不支持。


1
正如许多其他人指出的那样,自从Android Studio 3.2以来,你不能简单地从Translations Editor中复制和粘贴翻译。
我发现的最简单的解决方案是将翻译的Excel文件保存为CSV文件,然后使用正则表达式将其转换为XML文件,反之亦然。
要“导入”翻译,请执行以下步骤:
  1. 将键值对保存在第一列,翻译保存在第二列的xls / xlsx文件另存为CSV文件(如果你有带有非ANSI字符的文件,请使用Google表格,因为Excel不支持使用utf-8保存为CSV)
  2. 在支持正则表达式的文本编辑器(例如Notepad ++)中打开CSV文件
  3. 打开“查找和替换”,并设置正则表达式搜索
  4. 搜索^([^,]*),(.*)$并用<string name="$1">$2</string>替换它
  5. 将文件复制到字符串资源文件之间的<resources>标记中
  6. 修复可能存在的错误
您可以使用类似的方法来进行“导出”的反向操作。使用<string.+name="(.*)".*>(.*)</string>来查找,$1,$2来替换。但是,只有在每个字符串标签都在一行中才能正常工作。

-1

注意:如果您的res文件夹中没有strings.xml,那么Android Studio将不会在strings.xml文件的右上角显示"打开编辑器"打开文件)。在我的情况下,所有的字符串资源文件都被命名为strings_feature.xml

要从翻译编辑器复制/粘贴,请使用Android Studio 3.2版本及以下版本。它允许复制/粘贴整个列。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接