我最近一直在考虑将我的网站本地化,并且谷歌搜索方面有点空白。我一直在寻找如何本地化应用程序而不是网站或GeoLocation,这有点过于具体。
我希望能够使用纯HTML(5)和CSS(3)进行本地化。我希望能够在页面中本地化部分,而不是为每个国家/地区设置单独的URL。
任何对此的帮助都非常有用,所以提前感谢。
编辑:如果没有纯HTML(5)或CSS(3)方法,那么服务器端,js或其他语言的任何示例都会很有用。
答案 0 :(得分:0)
这个解决方案是我在一个几乎没有html的ajax应用程序中使用的解决方案(一切都是从数据客户端生成的)。
第一部分确保您可以在网址中指定语言(例如,通过添加&lang=it
)并将其存储在本地存储中(浏览器中的永久用户首选项):
myapp.available_langs = ['en', 'fr', 'it']; // the first one is the default language
// Exemples :
// {en:'hi', fr:'Bonjour'}
// {fr:'Bonjour'}
myapp.loc = function(map) {
if (map[myapp.lang]) return map[myapp.lang];
for (var i=0; i<myapp.available_langs.length; i++) {
if (map[myapp.available_langs[i]]) return map[myapp.available_langs[i]];
}
return "-label not found-";
};
myapp.getUrlParameter = function(name, defaultValue) {
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var results = new RegExp( "[\\?&]"+name+"=([^&#]*)" )
.exec( document.location.href );
if( results == null ) return defaultValue;
else return decodeURIComponent(results[1]);
};
myapp = {};
myapp.lang = localStorage['lang'] = myapp.getUrlParameter('lang', localStorage['lang']||myapp.available_langs[0]);
在其他地方使用它是这样的:
$('body').append('<div product id=product_header>\
...
<tr>\
<td> '+myapp.loc({en:'cut',fr:'date'})+': <span id=product_cutdate>?</span></td>\
<td> '+myapp.loc({en:'grade',fr:'qualité'})+': <span id=product_grade>?</span></td>\
<td> '+myapp.loc({en:'length',fr:'longueur'})+': <span id=product_length>?</span> m</td>\
<td> '+myapp.loc({en:'thickness',fr:'épaisseur'})+': <span id=product_thickness>?</span> mm</td>\
<td> '+myapp.loc({en:'width',fr:'largeur'})+': <span id=product_width>?</span> m</td>\
</tr>\
您可以选择也使用用户代理,但在实际公司使用中,我发现它无用。请注意,i18n解决方案可能非常多样化。我不主张使用它,这只是我喜欢的模式。许多人更喜欢在外部属性文件中提取字符串,但根据我的经验,它会导致更糟糕的翻译并且更难管理(只要一个团队讲所有涉及的语言而你没有10个)。