我正在用Phonegap开发一个移动应用程序,我需要国际化-用不同的语言显示一个html页面。现在我明白了,这不是Phonegap的问题--我必须将web应用程序国际化。
你好,克里斯蒂安
-- 编辑--
从2.2.0开始,Phonegap就有了一个不错的全球化插件。它涵盖了许多i18n功能。检查文档globalization.md.html#Globalization
发布于 2012-01-16 09:40:50
Phonegap只是一个框架,可以在本地应用程序中显示网页,并使用插件连接设备的硬件传感器。国际化的支持将取决于您的html/js设计。
例如,您可以使用:
/html/en/index.html
/html/fr/index.html
...并根据用户的语言调用好的页面。
希望这能帮到你:)
发布于 2014-02-15 07:31:49
我对这个问题采取了一种方法,允许其他人为我的应用程序提供语言翻译。
优点:
缺点:
我使用工具栏进行模板化和html10n库来提供翻译逻辑,翻译的字符串来自社区贡献的json文件。
TranslateWiki通过群众性的力量提供实际的翻译。我的实现中的大部分重担都是由维基媒体基金会()的免费开源社区服务TranslateWiki完成的。
车把和html10n库是强大的,为网络而建,并广泛使用。事实证明,它们对于这个实现是非常有用的库。
不需要本机代码或插件。
index.html
<head>
<script type="text/javascript" src="js/handlebars.js"></script>
<script type="text/javascript" src="js/html10n.js"></script>
<link rel="localizations" type="application/l10n+json" href="locales.json">
</head>
<body>
{{html10n "helloWorld"}}
</body>locales.json
{
"fr":"locales/fr.json",
"en":"locales/en.json"
}地区/en.json
{
"en":{
"helloWorld":"Hello Cruel World"
}
}地区/fr.json
{
"fr":{
"helloWorld":"Hello Baguette World"
}
}index.js
Handlebars.registerHelper('html10n', function(str,a){
return (html10n != undefined ? html10n.get(str) : str);
});若要在语言之间切换,请打开浏览器javascript控制台并键入
html10n.localize("fr");需要一些额外的逻辑来进行浏览器语言的检测,我使用Etherpad的实现来完成这一任务。
var language = document.cookie.match(/language=((\w{2,3})(-\w+)?)/);
if(language) language = language[1];
html10n.bind('indexed', function() {
html10n.localize([language, navigator.language, navigator.userLanguage, 'en'])
})
html10n.bind('localized', function() {
document.documentElement.lang = html10n.getLanguage()
document.documentElement.dir = html10n.getDirection()
// Then I display the index page using handlebars to render a template.
});就是这样,在你的科多瓦应用程序中推出i18n的免费食谱。
发布于 2012-05-31 09:57:37
我完全按照波旁的建议做了,因为这是一个小应用程序,复制不是这个问题。然而,有一些模板框架,我认为主要使用的是八字胡。
我解决了这种语言的选择:
@Override
public void onCreate(final Bundle savedInstanceState)
{
// ...
String language = getValue("language", "de");
if (language.equals("de")) {
super.loadUrl("file:///android_asset/www/de/index.html", 1);
}
else {
super.loadUrl("file:///android_asset/www/en/index.html", 1);
}
}
private String getValue(final String key, final String defaultValue)
{
SharedPreferences prefs = getSharedPreferences(
getApplicationInfo().packageName, MODE_PRIVATE);
return prefs.getString(key, defaultValue);
}如您所见,我读取了SharedPreferences的值。我还创建了一个Phonegap插件,以便在用户更改语言时从JavaScript代码中设置此值。
https://stackoverflow.com/questions/8878002
复制相似问题