Многоязычный блог

вторник, декабря 15, 2015 Nata Ki 2 Comments

Так уж сложилось, что в blogger нет поддержки нескольких языков. В других cms есть, а здесь разработчики почему-то посчитали, что пользователям не нужно делать блог одновременно на разных языках. Это, безусловно, очень плохо, и пользователям приходится искать обходные пути.


Есть несколько способов сделать блог на нескольких языках:
  1. Вести одновременно два блога, в каждом подготавливать статьи на нужном языке. С одной стороны это хорошо, потому, что каждый блог будет однозначно иметь правильные настройки (отображение даты, меню и заголовки). Но, с другой стороны, этот вариант означает двойную работу, ведь надо одновременно вести два блога. К каждому блогу можно подвлючить отдельное доменное имя (с приставкой en или ru).
  2. Изменить шаблон блога так, чтобы можно было писать текст статей на друх языках. Этот вариант удобней с точки зрения общего управления блога (вам придется вести только один блог), но переключение языков будет работать только на текст статьи, а общие настройки блога, заголовки и ключевые слова останутся на двух языках.

Какой вариант выбрать - зависит от потребностей. В любом случае придется чем-то пожертвовать. Да и решения эти никак не назовешь изящными, просто 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>


2 комментария:

  1. Ответы
    1. Спасибо за комментарий! Приятно слышать когда людям твои статьи приносят пользу :)

      Удалить