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

вторник, декабря 15, 2015 Nata 8 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>


8 комментариев:

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

      Удалить
  2. Спасибо! Надо будет попробовать

    ОтветитьУдалить
  3. Единственное, что не понятно - где меню "Щаблон" найти из п. 4?

    ОтветитьУдалить
    Ответы
    1. Упс. Ошибочка. Это меню "Тема". Исправлю статью

      Удалить
  4. We are glad to announce that in COEPD we have introduced Digital Marketing Internship Programs (Self sponsored) for professionals who want to have hands on experience. In affiliation with IT companies we are providing this program. Presently, this program is available in COEPD Hyderabad premises. We deem in real time practical Internship program. We guide participants through real-time project examples and assignments, giving credits for Real-Time Internship. Our digital marketing certified mentors tutor our learning people through modules of Digital Marketing in an exhaustive manner. This internship is intelligently dedicated to our avid and passionate participants predominantly acknowledging and appreciating the fact that they are on the path of making a career in Digital Marketing discipline. We upskill and master the nitty-gritty of the Digital Marketing profession. More than a training institute, COEPD today stands differentiated as a mission to help you "Build your dream career" - COEPD way.
    http://www.coepd.com/DMInternship.html

    ОтветитьУдалить
  5. We are glad to announce that in COEPD we have introduced Digital Marketing Internship Programs (Self sponsored) for professionals who want to have hands on experience. In affiliation with IT companies we are providing this program. Presently, this program is available in COEPD Hyderabad premises. We deem in real time practical Internship program. We guide participants through real-time project examples and assignments, giving credits for Real-Time Internship. Our digital marketing certified mentors tutor our learning people through modules of Digital Marketing in an exhaustive manner. This internship is intelligently dedicated to our avid and passionate participants predominantly acknowledging and appreciating the fact that they are on the path of making a career in Digital Marketing discipline. We upskill and master the nitty-gritty of the Digital Marketing profession. More than a training institute, COEPD today stands differentiated as a mission to help you "Build your dream career" - COEPD way.
    http://www.coepd.com/DMInternship.html

    ОтветитьУдалить