为了翻译我的HTML页面,我做了以下工作:
<p data-key="paragraph-1">Hello world</p>
<p data-key="paragraph-2">This is a translated text!</p>
<div ...>
<a data-key="aboutPage" href="about.html">About</a>
</div>const translations = {
"es": () => ({
"title": "¡Hola mundo!",
"subtitle": "¡Este texto ha sido traducido!",
"routes": {
"aboutPage": "Sobre",
}
}),
...
}
const t = _.memoize(
(
scope,
language = getNavigatorLanguage() ?? DEFAULT_LANGUAGE,
fallbackLanguage = DEFAULT_LANGUAGE,
fallbackText = ""
) => {
const formattedLocale = language.split(/[-_]/)[0]; // Short version: "en", "es", "it"...
const translation = // fallback
(translationGetters[formattedLocale] ?? translationGetters[fallbackLanguage])();
return (
_.get(translation, scope) ??
_.get(translationGetters[DEFAULT_LANGUAGE](), scope, fallbackText)
);
},
(...args) => JSON.stringify(args)
);
$(() => {
$("*[data-key='paragraph-1']").text(t("title"));
$("*[data-key='paragraph-2']").text(t("subtitle"));
$("*[data-key='aboutPage']").text(t("routes.aboutPage"));
});我来自“反应本地人”,在那里我可以简单地做:
<Text>
{t("routes.aboutPage")}
</Text>但是我不确定在HTML上做这样的事情是否是一个好的实践(也许SEO是错误的,或者只是不好):
<p>
<script>
t("title")
</script>
</p>为了翻译我所有的内容,我必须使用选择器吗?有什么建议吗?
发布于 2022-08-28 20:50:11
步骤1:创建翻译功能
让我们创建一个名为“JavaScript”的新translate.js文件,然后编写代码,根据所选语言从lng文件夹中的JSON文件中获取翻译文本。
function Translate() {
//initialization
this.init = function(attribute, lng){
this.attribute = attribute;
this.lng = lng;
}
//translate
this.process = function(){
_self = this;
var xrhFile = new XMLHttpRequest();
//load content data
xrhFile.open("GET", "lng/"+this.lng+".json", false);
xrhFile.onreadystatechange = function ()
{
if(xrhFile.readyState === 4)
{
if(xrhFile.status === 200 || xrhFile.status == 0)
{
var LngObject = JSON.parse(xrhFile.responseText);
var allDom = document.getElementsByTagName("*");
for(var i =0; i < allDom.length; i++){
var elem = allDom[i];
var key = elem.getAttribute(_self.attribute);
if(key != null) {
elem.innerHTML = LngObject[key] ;
}
}
}
}
}
xrhFile.send();
}
}步骤2:切换语言功能
创建一个名为“JavaScript”的新index.js文件,以开始翻译过程
//This function will be called when user click changing language
function translate(lng, tagAttr){
var translate = new Translate();
translate.init(tagAttr, lng);
translate.process();
if(lng == 'en'){
$("#enTranslator").css('color', '#f4623a');
$("#khTranslator").css('color', '#212529');
}
if(lng == 'kh'){
$("#khTranslator").css('color', '#f4623a');
$("#enTranslator").css('color', '#212529');
}
}
$(document).ready(function(){
//This is id of HTML element (English) with attribute lng-tag
$("#enTranslator").click(function(){
translate('en', 'lng-tag');
});
//This is id of HTML element (Khmer) with attribute lng-tag
$("#khTranslator").click(function(){
translate('kh', 'lng-tag');
});
});步骤3:用JSON定义翻译文本
让我们在JSON文件中定义翻译文本如下
步骤4:将翻译嵌入您的网站
<script src="js/translate.js"></script>
<script src="js/index.js"></script><body id="page-top" onload="translate('kh','lng-tag')">
这是一个静态网站,它实现了上述方法在高棉语(柬埔寨语)和英语https://praject.co/之间的翻译。
https://stackoverflow.com/questions/73522076
复制相似问题