Многоязычный блог
Так уж сложилось, что в blogger нет поддержки нескольких языков. В других cms есть, а здесь разработчики почему-то посчитали, что пользователям не нужно делать блог одновременно на разных языках. Это, безусловно, очень плохо, и пользователям приходится искать обходные пути.
Есть несколько способов сделать блог на нескольких языках:
Какой вариант выбрать - зависит от потребностей. В любом случае придется чем-то пожертвовать. Да и решения эти никак не назовешь изящными, просто blogger уж слишком простая штука. Остановимся подробнее на втором варианте.
В моем случае мне нужно два языка - английский и русский, все основные надписи, даты и заголовки я оставлю на английском.
1. В настройках сайта проверяем чтобы был включен по умолчанию английский язык.
2. Открываем меню "Дизайн", где-то вверху добавляем гаджет HTML/JavaScript с таким кодом:
<script language="Javascript">
function getElementsByClass(searchClass,node,tag) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
function show_en() {
var ru = getElementsByClass('lang:russian', null, null);
var en = getElementsByClass('lang:english', null, null);
for(i = 0; i < ru.length; i++) {
ru[i].style.display = 'none';
}
for(i = 0; i < en.length; i++) {
en[i].style.display = 'block';
}
}
function show_ru() {
var ru = getElementsByClass('lang:russian', null, null);
var en = getElementsByClass('lang:english', null, null);
for(i = 0; i < ru.length; i++) {
ru[i].style.display = 'block';
}
for(i = 0; i < en.length; i++) {
en[i].style.display = 'none';
}
}
</script>
3. В том месте, где должен быть размещен переключатель языков, вставляем еще один гаджет HTML/JavaScript с таким кодом:
Show post in language:<br />
<a href="#" onclick="show_en();">English</a>
<a href="#" onclick="show_ru();">Русский</a>
4. Открываем меню "Тема", нажимаем кнопку "Изменить HTML" и к тег <body> изменям так, чтобы здесь была команда для выбора по умолчанию английского языка:
<body onload='show_en();'>
5. Когда создаем новый пост, то первым делом переключаемся в режим HTML и вставляем такой шаблон сообщения:
<div class="lang:english">
English content
</div>
<div class="lang:russian">
Russian content
</div>
После этого переключаемся из HTML режима обратно в редактор и вместо фраз "English content" и "Russian content" вставляем текст сообщения на соответствующем языке.
Что из всего этого у меня получилось можно посмотреть на этом блоге: http://creative.nata.cv.ua/
В этом случае речь идет о переводе на разные языки меню, при этом меню являются ссылками на поиск по определенным меткам. Например, ссылка меток с турецким языком будет выглядеть так: <li><a href='/search/label/TR'>Türkçe</a></li>
Есть несколько способов сделать блог на нескольких языках:
- Вести одновременно два блога, в каждом подготавливать статьи на нужном языке. С одной стороны это хорошо, потому, что каждый блог будет однозначно иметь правильные настройки (отображение даты, меню и заголовки). Но, с другой стороны, этот вариант означает двойную работу, ведь надо одновременно вести два блога. К каждому блогу можно подвлючить отдельное доменное имя (с приставкой en или ru).
- Изменить шаблон блога так, чтобы можно было писать текст статей на друх языках. Этот вариант удобней с точки зрения общего управления блога (вам придется вести только один блог), но переключение языков будет работать только на текст статьи, а общие настройки блога, заголовки и ключевые слова останутся на двух языках.
Какой вариант выбрать - зависит от потребностей. В любом случае придется чем-то пожертвовать. Да и решения эти никак не назовешь изящными, просто blogger уж слишком простая штука. Остановимся подробнее на втором варианте.
Создание постов на двух языках
На одном англоязычном ресурсе была найдена подробная инструкция с примером поддержки двух языков - итальянского и английского: http://polytimenerd.blogspot.com/2012/06/multilanguage-posts-in-your-blog.htmlВ моем случае мне нужно два языка - английский и русский, все основные надписи, даты и заголовки я оставлю на английском.
1. В настройках сайта проверяем чтобы был включен по умолчанию английский язык.
2. Открываем меню "Дизайн", где-то вверху добавляем гаджет HTML/JavaScript с таким кодом:
<script language="Javascript">
function getElementsByClass(searchClass,node,tag) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
function show_en() {
var ru = getElementsByClass('lang:russian', null, null);
var en = getElementsByClass('lang:english', null, null);
for(i = 0; i < ru.length; i++) {
ru[i].style.display = 'none';
}
for(i = 0; i < en.length; i++) {
en[i].style.display = 'block';
}
}
function show_ru() {
var ru = getElementsByClass('lang:russian', null, null);
var en = getElementsByClass('lang:english', null, null);
for(i = 0; i < ru.length; i++) {
ru[i].style.display = 'block';
}
for(i = 0; i < en.length; i++) {
en[i].style.display = 'none';
}
}
</script>
3. В том месте, где должен быть размещен переключатель языков, вставляем еще один гаджет HTML/JavaScript с таким кодом:
Show post in language:<br />
<a href="#" onclick="show_en();">English</a>
<a href="#" onclick="show_ru();">Русский</a>
4. Открываем меню "Тема", нажимаем кнопку "Изменить HTML" и к тег <body> изменям так, чтобы здесь была команда для выбора по умолчанию английского языка:
<body onload='show_en();'>
5. Когда создаем новый пост, то первым делом переключаемся в режим HTML и вставляем такой шаблон сообщения:
<div class="lang:english">
English content
</div>
<div class="lang:russian">
Russian content
</div>
После этого переключаемся из HTML режима обратно в редактор и вместо фраз "English content" и "Russian content" вставляем текст сообщения на соответствующем языке.
Что из всего этого у меня получилось можно посмотреть на этом блоге: http://creative.nata.cv.ua/
Другие решения
Интересный вариант был предложен тут http://www.cemspot.com/2013/01/how-do-you-set-blogger-to-work.htmlВ этом случае речь идет о переводе на разные языки меню, при этом меню являются ссылками на поиск по определенным меткам. Например, ссылка меток с турецким языком будет выглядеть так: <li><a href='/search/label/TR'>Türkçe</a></li>
Спасибо огромное, получилось)))
ОтветитьУдалитьСпасибо за комментарий! Приятно слышать когда людям твои статьи приносят пользу :)
УдалитьСпасибо! Надо будет попробовать
ОтветитьУдалитьЕдинственное, что не понятно - где меню "Щаблон" найти из п. 4?
ОтветитьУдалитьУпс. Ошибочка. Это меню "Тема". Исправлю статью
УдалитьСпасибо большое, попробую.
ОтветитьУдалить