преключающийся русско-английский HTML?

Обсуждение вопросов клиентского программирования.

Модератор: Duncon

Ответить
Аватара пользователя
__Yuri__
Сообщения: 140
Зарегистрирован: 02 ноя 2006, 17:17
Контактная информация:

Братцы, мне нужно сделать возможность переключения с русского на английский на странице. Варианты размещения пар страниц - русской и английской в данном случае не годятся. Нужно динамически менять содержимое внутри одной страницы. С JavaScript все понятно - насоздаю по две строковых переменных: с русским и английским содержимым и буду подсовывать одну из них.

А как нечто подобное реализовать в HTML? Например, что бы было всюду по два содержимых ячейки таблицы, по два обзаца и т.д.: один русский, другой английский и показывался один из них? Чо-то типа условной компиляции для HTML...

Сыпасибо!
Аватара пользователя
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) :-) ) и тихонько, незаметно перегрузил страницу либо на русский вариант, либо на английский.
Аватара пользователя
__Yuri__
Сообщения: 140
Зарегистрирован: 02 ноя 2006, 17:17
Контактная информация:

Спасибо, я так примерно это себе и представлял, только русскую и английскую строки совать в <script> на месте, например в TD, что бы не запутаться.
Но я так надеялся обойтись без JavaScript (document.write или DOM), путем подсовывания IE каких-либо неизвестных мне директив.
Две страницы - по одной на язык не хочу, т.к. если поменяется их структура (например, колонка в таблице добавится), то придется делать одинаковые изменения в двух местах, а это не есть гуд, а есть геморой :( - лучше уж один раз "движок" написать.
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

в общем-то я имел ввиду не на самом деле иметь две HTML страницы,
а делать всё то же самое, что я "нарисовал", только на серверной стороне (на пример на при помощи PHP),
чтобы не нагружать трафик и браузер пользователя лишними языками и JS.
&quot писал(а):строки совать в <script> на месте, например в TD, что бы не запутаться
да, возможно это будет понятнее, но если прийдётся менять языковую логику - то прийдётся вносить изменения во всех местах, где будут стоять строки, в то время как в предложеном мной варианте за это отвечает одна функция, которую можно легко и быстро изменить
Аватара пользователя
__Yuri__
Сообщения: 140
Зарегистрирован: 02 ноя 2006, 17:17
Контактная информация:

ясно.
К сожалению в данном случае ограничен клиентской частью - нужна полностью статическая страница, сервера приложений нет как такового - двухзвенная архитектура...
Хм... Вот еще подсказали вариант - CSS рулит!
http://forum.script-coding.info/viewtopic.php?id=1068
Аватара пользователя
__Yuri__
Сообщения: 140
Зарегистрирован: 02 ноя 2006, 17:17
Контактная информация:

Реализовал идею с CSS - песня, а не страничка получилась! Супер - везде по два
<span class="en"
<span class="ru"
типа как в Trados :-D
очень удобно менять тексты
а для переключения языка остается только
менять свойство document.body.className и менять заголовок окна:
document.title = (document.body.className == "en") ? "English" : "Русский";
ну и при выводе JavaScript проверять body.className и выводить соответствующую строку.
dj--alex
Сообщения: 13
Зарегистрирован: 13 дек 2007, 10:24

а я такую систему полностью на PHP накатал
Ответить