Братцы, мне нужно сделать возможность переключения с русского на английский на странице. Варианты размещения пар страниц - русской и английской в данном случае не годятся. Нужно динамически менять содержимое внутри одной страницы. С JavaScript все понятно - насоздаю по две строковых переменных: с русским и английским содержимым и буду подсовывать одну из них.
А как нечто подобное реализовать в HTML? Например, что бы было всюду по два содержимых ячейки таблицы, по два обзаца и т.д.: один русский, другой английский и показывался один из них? Чо-то типа условной компиляции для HTML...
Сыпасибо!
преключающийся русско-английский HTML?
Модератор: Duncon
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
Могу предложить такой вариант:
[HTML]<script>
// Константы для выбора языка
var language_english = "english language";
var language_russian = "russian language";
// язык должен выбираться автоматически
var language = language_russian; // english;
// Ключи локализации
var table1_tr1_td1 = "table1_tr1_td1";
var table1_tr1_td2 = "table1_tr1_td2";
var english = new Array();
var russian = new Array();
// Набор английских фраз
english[table1_tr1_td1] = "Hello,";
english[table1_tr1_td2] = "world!";
// Набор русских фраз
russian[table1_tr1_td1] = "Privet,";
russian[table1_tr1_td2] = "Mir!";
// Функция получения текста в зависимости от выбраной локали
function getLocalizedText(key) {
if (language == language_english) {
return english[key];
} else {
return russian[key];
}
}
</script>
<table>
<tr>
<td>
<script>document.write(getLocalizedText(table1_tr1_td1));</script>
</td>
<td>
<script>document.write(getLocalizedText(table1_tr1_td2));</script>
</td>
</tr>
</table>[/HTML]
Хотя я бы на первой странице определил язык пользовательского браузера (или в зависимости от чего будет меняться язык страницы), поставил бы КУКУ(, мой мальчик (c) :-) ) и тихонько, незаметно перегрузил страницу либо на русский вариант, либо на английский.
[HTML]<script>
// Константы для выбора языка
var language_english = "english language";
var language_russian = "russian language";
// язык должен выбираться автоматически
var language = language_russian; // english;
// Ключи локализации
var table1_tr1_td1 = "table1_tr1_td1";
var table1_tr1_td2 = "table1_tr1_td2";
var english = new Array();
var russian = new Array();
// Набор английских фраз
english[table1_tr1_td1] = "Hello,";
english[table1_tr1_td2] = "world!";
// Набор русских фраз
russian[table1_tr1_td1] = "Privet,";
russian[table1_tr1_td2] = "Mir!";
// Функция получения текста в зависимости от выбраной локали
function getLocalizedText(key) {
if (language == language_english) {
return english[key];
} else {
return russian[key];
}
}
</script>
<table>
<tr>
<td>
<script>document.write(getLocalizedText(table1_tr1_td1));</script>
</td>
<td>
<script>document.write(getLocalizedText(table1_tr1_td2));</script>
</td>
</tr>
</table>[/HTML]
Хотя я бы на первой странице определил язык пользовательского браузера (или в зависимости от чего будет меняться язык страницы), поставил бы КУКУ(, мой мальчик (c) :-) ) и тихонько, незаметно перегрузил страницу либо на русский вариант, либо на английский.
Спасибо, я так примерно это себе и представлял, только русскую и английскую строки совать в <script> на месте, например в TD, что бы не запутаться.
Но я так надеялся обойтись без JavaScript (document.write или DOM), путем подсовывания IE каких-либо неизвестных мне директив.
Две страницы - по одной на язык не хочу, т.к. если поменяется их структура (например, колонка в таблице добавится), то придется делать одинаковые изменения в двух местах, а это не есть гуд, а есть геморой
- лучше уж один раз "движок" написать.
Но я так надеялся обойтись без JavaScript (document.write или DOM), путем подсовывания IE каких-либо неизвестных мне директив.
Две страницы - по одной на язык не хочу, т.к. если поменяется их структура (например, колонка в таблице добавится), то придется делать одинаковые изменения в двух местах, а это не есть гуд, а есть геморой

- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
в общем-то я имел ввиду не на самом деле иметь две HTML страницы,
а делать всё то же самое, что я "нарисовал", только на серверной стороне (на пример на при помощи PHP),
чтобы не нагружать трафик и браузер пользователя лишними языками и JS.
а делать всё то же самое, что я "нарисовал", только на серверной стороне (на пример на при помощи PHP),
чтобы не нагружать трафик и браузер пользователя лишними языками и JS.
да, возможно это будет понятнее, но если прийдётся менять языковую логику - то прийдётся вносить изменения во всех местах, где будут стоять строки, в то время как в предложеном мной варианте за это отвечает одна функция, которую можно легко и быстро изменить" писал(а):строки совать в <script> на месте, например в TD, что бы не запутаться
ясно.
К сожалению в данном случае ограничен клиентской частью - нужна полностью статическая страница, сервера приложений нет как такового - двухзвенная архитектура...
Хм... Вот еще подсказали вариант - CSS рулит!
http://forum.script-coding.info/viewtopic.php?id=1068
К сожалению в данном случае ограничен клиентской частью - нужна полностью статическая страница, сервера приложений нет как такового - двухзвенная архитектура...
Хм... Вот еще подсказали вариант - CSS рулит!
http://forum.script-coding.info/viewtopic.php?id=1068
Реализовал идею с CSS - песня, а не страничка получилась! Супер - везде по два
<span class="en"
<span class="ru"
типа как в Trados :-D
очень удобно менять тексты
а для переключения языка остается только
менять свойство document.body.className и менять заголовок окна:
document.title = (document.body.className == "en") ? "English" : "Русский";
ну и при выводе JavaScript проверять body.className и выводить соответствующую строку.
<span class="en"
<span class="ru"
типа как в Trados :-D
очень удобно менять тексты
а для переключения языка остается только
менять свойство document.body.className и менять заголовок окна:
document.title = (document.body.className == "en") ? "English" : "Русский";
ну и при выводе JavaScript проверять body.className и выводить соответствующую строку.
а я такую систему полностью на PHP накатал