Я действительно не могу рекомендовать, имеющих различные HTML-файлы. Локализуемость лучших практик рекомендует отделять переводы от кода.
Самый быстрый, самый простой и наименее обструктивный метод, который я знаю, использует Google ARB. Рассмотрим следующий пример HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testing ARB...</title>
</head>
<body>
<h2>This is a test.</h2>
</body>
</html>
Теперь необходимо извлечь локализуемый контент. Это можно сделать либо с помощью extractor tool ARB предоставляет или если ваши страницы очень просто, вы даже можете сделать это вручную:
<html>
<head arb:namespace="test">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title arb:id="MSG_HTML_TITLE">Testing ARB...</title>
</head>
<body>
<h2 arb:id="MSG_BODY_TEST">This is a test.</h2>
</body>
</html>
Тогда давайте создадим файл ресурсов для этих сообщений, а также обеспечить перевод:
arb.register(
"test",
{
"MSG_HTML_TITLE": "Testing ARB",
"MSG_BODY_TEST": "This is a test.",
"MSG_CURR_LOCALE": "...and the selected language is \"{currentLocale}\".",
"@MSG_CURR_LOCALE": {
"placeholders": {
"0": {
"description": "This variable would show the current locale.",
"example": "fr"
}
}
}
}
);
arb.register(
"test:de",
{
"MSG_HTML_TITLE": "ARB auf Probe",
"MSG_BODY_TEST": "Das ist ein Test.",
"MSG_CURR_LOCALE": "...und die ausgewählte Sprache ist \"{currentLocale}\".",
"@MSG_CURR_LOCALE": {
"placeholders": {
"0": {
"description": "This variable would show the current locale.",
"example": "fr"
}
}
}
}
);
Наконец, добавьте JS в HTML. Кроме того, предоставите простой способ получить выбранный язык из URL; т.е. ./index.html?locale=de
<html>
<head arb:namespace="test">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title arb:id="MSG_HTML_TITLE">Testing ARB...</title>
<script src="arb/lib/arbcore.js"></script>
<script src="test.arb"></script> <!-- ARB file w/ translations. -->
</head>
<body>
<h2 arb:id="MSG_BODY_TEST">This is a test.</h2>
<!-- Get locale from URL and translate page HTML -->
<script>
function main(){
var locale = arb.getParamFromUrl('locale');
if (!locale){
locale = 'en';
}
arb.setResourceSelector(locale);
// JS localization
var r$ = arb.getResource("test");
document.write(arb.msg(r$.MSG_CURR_LOCALE, {'currentLocale': locale}));
// This should appear after all the translatable HTML content
arb.localizeHtml();
}
main();
</script>
</body>
</html>
Код для этого образца можно найти here.
проблема с вариантом 1 заключается в том, что затраты на обслуживание увеличиваются экспоненциально для каждого дополнительного языка, и нет ничего, чтобы обеспечить согласованность между различными языковыми версиями файла. –
Ну, выбор варианта 1) или 2) зависит от ситуации, требования и удобства разработчика – Madhu