Android string.xml多语言翻译工具

Android string.xml 翻译工具

该工具已经很久没更新啦,新版本改动比较大就没在这个项目基础之上改动代码,最新版的支持插件化,你可以任意配置文档解析插件和翻译平台插件,介绍在这里:https://blog.csdn.net/tgbus18990140382/article/details/80727834

源码你可以在Github上看到:https://github.com/onlynight/Translator

概述

最近要把公司的app往国外推广,无奈只做了中文版,好在所有的字符串都是写在string.xml文件中的,为了快速推出海外版本,决定有机器翻译先做一个简单的版本。说到这里问题就来啦,这么多文本难道一句一句的复制粘贴呀,当然写个小工具翻译既省时又省力。想法有了找一下翻译平台,首先想到google但是google要翻墙对网络环境不太好的小伙伴要求太高,所以想到了国内的百度翻译和有道翻译。

当你需要快速翻译string.xml资源字符串中的文本时你就可以使用这个工具啦,这个工具还支持拓展,只需简单几部就能完成拓展,下面我们就来详细介绍下这个工具的实现以及拓展方法。

使用

使用前你需要配置各个平台的key,在{@link com.github.onlynight.android.string_xml.translate.utils.Constants}类中对平台的key进行配置,平台文档地址:

Main.java中有使用的demo,你可以参考demo中的代码,如果你需要自定义翻译文件你需要做做如下操作:

1.初始化TranslateManager

使用前需要先初始化翻译管理器,需要注意的是,如果你要切换其他平台翻译的话你需要重新初始化。

TranslateManager.getInstance().
    init(currentPath.getAbsolutePath(),
    translateAllXml, TranslatePlatform.GOOGLE);
  • 第一个参数是要翻译的路径,demo中传入的是项目的根目录
  • 第二个参数标识是否要翻译该目录下的所有xml文件
  • 最后一个参数标识翻译平台

2.调用翻译函数

初始化完成后就可以开始翻译了:

TranslateManager.getInstance().translate(Language.CN, Language.EN);
  • 第一个参数是源语言
  • 第二个参数是要翻译的目标语言

3.查看翻译结果

调用翻译函数后查看日志直到翻译完成为止,目标文件生成在指定的翻译目录下values-xxx文件夹中。

生成文件截图
生成文件截图2

注意:
目前只支持在Intellij Idea中运行,打包成jar文件执行时文件乱码问题暂未解决,所以你需要安装Intellij Idea运行工程。

实现以及结构分析

首先我们先来看下类图:

类图

很明显实现Translator的类和间接实现的类是一个标准的适配器模式,适配器模式可以将多种实现协调在一起工作,这样就可以实现不止XML解析并翻译,还可以实现其文件类型的翻译,比如TextTranslator。下面这一层TranslatorHandler将每个翻译平台的公共操作抽象出来,然后每个平台的具体实现都有一个实现类。之所以没有把这些具体的操作放在具体的Translator类中,是因为这些操作和具体的Translator的实现无关,这样分离以后代码复用效率高。

这张类图清晰的展示了整个项目的类结构:

  1. 首先,先声明一个接口Translator这个类中定义了抽象操作以及一些公共方法。translate方法就是公共翻译入口,调用这个方法就是翻译;onGenerateUrl方法中需要返回平台REST_API所需的完整请求url,其调用时机应该在translate方法中(或者在其过程的方法中);onTranslateFinished调用REST_API返回String时对这个String进行json或者xml化处理,视实际情况而定。
  2. TypedTranslator这一层类是每一种翻译器的抽象实现类,这一层中实现了具体的平台的功能,但是每个Translator又会去调用平台特定的TranslatorHandlerTranslatorHandler中将平台的公共操作抽象出来提高复用。
  3. TranslatorHandler中实现各个平台自己的实现,onGenerateUrl需要返回平台REST_API所需的完整请求url,handleJsonString中返回处理json string的结果,handleXMLString返回处理xml string的结果,这两个函数视情况而定,根据平台的返回值看需要哪个函数,或者两个都实现。

上面分析了该工具的主要结构,下面来说一下其他的辅助类:

  • TranslatorManager
    翻译管理器,同一管理平台初始化以及调用翻译平台翻译。
  • TranslatorPlatform
    定义翻译平台
  • Language
    定义翻译语言
  • Constants
    定义常用全局变量,比如平台key等其他静态配置。

拓展

简要说明在Main.java文件中已说明,下面视详细说明:

1.定义平台

如果你要拓展新的翻译平台,你需要在{@link com.github.onlynight.android.string_xml.translate.translator.TranslatePlatform}中添加新的平台,这是定义平台的第一步,后续还要做一些和平台相关的配置。

2.拓展XMLTranslator

继承自XMLTranslator类并实现它的所有抽象方法,我们暂时命名为PlatformXMLTranslatorPlatformXMLTranslator实际上只是一个代理类,真正的实现在TranslatorHandler中,虽然是代理模式但是为了方便拓展其他的功能并没有直接实现Translator接口,而是重新定义接口尽量使函数名称相似,下面我们看看Handler中的内容。

3.实现TranslatorHandler

新添加的平台需要实现一个TranslatorHandler,这个类中定义了每个平台具体的操作。onGenerateUrl返回最终的请求平台的url,根据平台不同的规范拼接生成REST_API的url。handleJsonStringhandleXMLString两个方法,这里暂时定义两种不同的返回结果处理函数,你也可以根据你的需求拓展这些接口。在PlatformXMLTranslator中实例化这个TranslatorHandler并在对应的方法中调用handler中对应的方法。

4.注意

目前只添加了简体中文,繁体中文,英文,日文集中语言,如果你需要添加其他语言你需要做以下几件事:

  1. 在{@link com.github.onlynight.android.string_xml.translate.translator.TranslatePlatform}中新建一个平台,并且将新添加的平台配置到{@link com.github.onlynight.android.string_xml.translate.utils.Constants}类中的platformConfig中去,具体方法参考其他平台配置。
  2. {@link com.github.onlynight.android.string_xml.translate.translator.Language}中添加新的语言这里使用的是google翻译平台标准简称,如果你使用其他平台需要将简称转换以下,参考{@link com.github.onlynight.android.string_xml.translate.translator.xmlImpl.BaiduXMLTranslator}中的转换方法。
  3. 你需要在{@link com.github.onlynight.android.string_xml.translate.utils.Constants}中配置valuesFolders,添加不同语言对应的文件夹。
  • 1
    点赞
  • 5
    收藏
  • 打赏
    打赏
  • 0
    评论
XML Contents Translator 是专门开发的软件工具,旨在帮助人们以最小的努力打开 XML 文档并翻译其内容。XML 文件会经常用于一些应用程序的语言文件,而我们通过使用 XML Contents Translator 则可以很快速的利用软件中的谷歌在线翻译功能完成语言翻译XML 文件翻译工具 Xml Content Translator 中文版 XML 文件翻译工具 Xml Content Translator 中文版 XML Contents Translator 特色: 便携式应用程序的便利性 由于该产品是便携式的,因此不需要安装过程。这意味着,未经您的许可,它不会像安装程序通常那样将任何新项目添加到Windows注册表和硬盘驱动器。删除磁盘后,将不会有任何残留物留在磁盘上。 另一个值得注意的方面是,您可以轻松地将程序文件复制到USB闪存驱动器,因此,可以随身携带XML Contents Translator,并在您接触的任何PC上运行它。 使用方法和可用选项 此应用程序使您可以使用内置文件浏览器以及“拖放”功能来打开项目,这些功能可增强易用性。它使您可以查看项目包含的每个标签以及使用的语言。 您可以从下拉菜单中轻松选择自己喜欢的语言,并在谷歌翻译的帮助下让程序翻译短语和表达方式。也可以手动输入翻译,转到下一个空白行,然后将结果保存到自定义位置。 表现与结论 CPU 和内存使用量微不足道,这意味着计算机的性能完全不会受到影响,您可以轻松地将其与其他实用程序一起运行而不会遇到任何问题。响应时间很好,该界面适合所有类型的用户,并且在我们的测试中未记录任何错误,崩溃或错误。 总而言之,XML Contents Translator 被证明是用于翻译 XML 内容的非常简单但有用的软件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

唯夜

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值