Stranslator是一个极致精简的国际化库,可以让你很方便的翻译你的(Scala)应用中的文本。
目的:Scala中缺乏对软件国际化的支持,而Java传统的properties文件又需要一个冗长且不明确的key,所以此工具应运而生。
XML翻译文件的格式(示例)
<?xml version="1.0" encoding="UTF-8" ?><translator> <message> <from>This is the original message!</from> <to> <!-- the translation for chinese --> <zh>这是原始文本!</zh> <!-- the translation for traditional chinese(Hong Kong) --> <zh_HK>這是原始文本!</zh_HK> </to> </message></translator>用法1.添加项目依赖
libraryDependencies += "com.lingcreative" %% "stranslator" % "1.2.0"2.代码示例
import translator._val translator = Translator()val locale = new Locale("zh", "CN")implicit val context = SimpleTranslatorContext(translator, Seq(locale))val welcome = ${"Hello, Sauntor! Welcome to China!"}若你在classpath中提供如下文件:
<?xml version="1.0" encoding="UTF-8" ?><translator> <message> <from>Hello, Sauntor! Welcome to China!</from> <to> <zh_CN>适然,你好!欢迎来到中国!</zh_CN> </to> </message></translator>则welcome变量的值将会是:
适然,你好!欢迎来到中国!注意事项1.开头和结尾的换行符将会被忽略.2.一行超长的文本可以用\n拉换行(不影响源代翻译文本)示例:
<translator> <message> <from> Hello, \ Jack! I'm waiting \ for you! </from> <to> <zh>捷克,你来了。\ 我已经等你好久了! </zh> </to> </message></translator>上面的代码等价于:
<translator> <message> <from>Hello, Jack! I'm waiting for you!</from> <to><zh>捷克,你来了。我已经等你好久了!</zh></to> </message></translator>3."Tranlator"的默认加载位置为l10n/translator.xml,下例.
val translator = Translator()与下面的代码是等同的:
val translator = Translator("cp://l10n/translator.xml")// 或者等同于://val translator = Translator("l10n/translator.xml")4.你也可以用<include>标签来导入其他的翻译文件:
<translator> <include>https://example.com:9000/some/app/l10n/translations.xml</include></translator>include标签不支持相对路径,即你不能像这样包含其他的翻译文件../some/other/module.xml
关于stranslator.Translator
这是定义翻译功能的特质。你可以使用任何URL(若java.net.URL支持此协议),但以"cp://"开头(没有任何schame开头)的URL会被认为是类路径里的资源
例如,你个可以把翻译文件放到一个单独的外部服务器,https://example.com/l10n/demo-app.xml,则Translator会从对应的URL中加载翻译文件
评论