在网络工程中本地化有什么选择?
-
22-10-2019 - |
题
我正在构建一个本地化为39种语言的Android应用程序的Webworks版本。
目前,所有本地化都在键值对的XML文件中,每个语言一个文件。每个语言文件大约有400行(每个文件大约40k)。
用户可以更改应用中使用的语言。
网络工程中有哪些选择来解决这种情况?
我很乐意将资源文件转换为任何其他类型的格式,以使使用它在平台上成为更好的体验。
解决方案
您可以将设置的每种语言存储在JavaScript文件中,并根据需要包含/加载。 (我将XML数据转换为“映射”,因为它只是键/值对)
例如(只是 忽视 我的翻译...我只是在谷歌搜索过,我绝不会流利的西班牙语)
//Spanish File "lang_spanish.js"
var translations = {
"lose_a_turn": "pierde un turno",
"do_not_pass_go": "huele como un camello",
"take_a_card": "tener una tarjeta de",
"you_win_the_game":"sin motocicletas en la biblioteca",
"you_can_not_move":"desbordamiento de la pila puede ser un lugar divertido"
};
在你的 <head>
然后,您可以拥有一个通用脚本标签,您只需更改所需的源即可。
例如
<script id="langFile" src="js/lang_english.js"></script>
当您想要其他语言时,只需从DOM中删除此脚本并添加您的新脚本。例如
function switchLang(langName){
var headTag = document.getElementsByTagName('head')[0];
var scriptFile = document.getElementById('langFile');
headTag.removeChild(scriptFile);
var newScript = document.createElement('script');
newScript.id = 'langFile';
newScript.src = 'js/lang_' + langName + '.js';
headTag.appendChild(newScript);
}
//call with:
switchLang('spanish');
替代方法是默认情况下加载所有39种语言...但是考虑到大多数人只需要1或2的高度杀伤。
不隶属于 StackOverflow