К содержанию

Новости перевода

Привет друзья!

В рамках помощи заграничным коллегам, страдающим от отсутствия информации о наших разработках, я перевёл (как смог) интерфейс нашего любимого сайта.

Кнопочка вверху справа переключает языки. Сделано это без контекстов, но лексиконами. При загрузке страницы проверяется переменная с языком в сессии и все служебные надписи на странице переключаются.

Большой плюс — нет новых контекстов и дублирования ресурсов. Минус — нельзя кэшировать эти записи. Насколько я вижу, каких-либо тормозов не прибавилось, так что проблемы нет.

Теперь вы можете смело приглашать иностранных друзей к нам в гости, тем более, что я не видел похожих сообществ за рубежом. Только официальный форум, личные блоги и чат в Slack — это всё немного не то.

По просьбам общественности, выкладываю плагин для переключения языка по ссылке, без контекстов:
<?php

switch ($modx->event->name) {
	case 'OnMODXInit':
		// Указан конкретный язык, переключаем
		if (!empty($_GET['lang'])) {
			$lang = strtolower(trim($modx->stripTags($_GET['lang'])));
			if (in_array($lang, array('en', 'ru'))) {
				$_SESSION['language'] = $lang;
				$modx->config['cultureKey'] = $lang;
			}
			// Убираем переменную из запроса и редиректим обратно
			// Это чтобы не было ?lang= в адресе
			$request = preg_replace("#(\?|\&)lang={$lang}#", '', $_SERVER['REQUEST_URI']);
			$modx->sendRedirect($request);
		}
		// Или проверяем сессию
		elseif (!empty($_SESSION['language'])) {
			$modx->config['cultureKey'] = $_SESSION['language'];
		}
		// Или смотрим, поддерживается ли русский браузером
		else {
			$modx->config['cultureKey'] = preg_match('#\bru\b#i', $_SERVER['HTTP_ACCEPT_LANGUAGE'])
				? 'ru'
				: 'en';
		}
		
		// Загружаем свой специальный лексикон с произвольными записями
		$modx->lexicon->load('site:default');
		break;
}

Для работы своего произвольного лексикона site нужно создать новое пространство имён в админке и положить в него директорию lexicon с поддиректориями en и ru. Ну и туда обычные файлы с лексиконами и значениями.


Ссылки на переключение языка можно размещать на любой странице, например:
Василий Наумкин
Василий Наумкин
28 августа 2015, 16:28
modx.pro
3 684
Реклама

Комментарии: 42

Виталий
Виталий Проверенный
28 августа 2015, 20:40
Отличная новость! Спасибо.

Пару багрепортов:
— В разделе «Пользователи» перестала грузиться статистика сайта: yadi.sk/i/w8iOpXxUiiwq5
— Не переведен placeholder «Поиск на сайте»: yadi.sk/i/sLpmZEkjiiwrr
— Блок «Здесь упомянуты»: yadi.sk/i/e2MYU85Liix4h

UPDATE: Все поправлено.
    Василий Наумкин
    Василий Наумкин Администратор
    28 августа 2015, 20:55
    Да иногда, бывает, проскакивает. Разбираюсь где можно кэшировать плейсхолдеры, а где нет.
      Виталий
      Виталий Проверенный
      28 августа 2015, 20:56
      О, уведомление пришло: yadi.sk/i/O6Je45v5iixyA :)
        Василий Наумкин
        Василий Наумкин Администратор
        28 августа 2015, 21:04
        Язык письма зависит от отправителя, а не получателя, поэтому все письма будут на одном языке — русском.

        Темы писем поправил.
        Алексей
        Алексей Проверенный
        06 ноября 2015, 16:47
        еще вот тут modx.pro/help/6952/
        <title>minishop2 sorting / Вопросы / Блоги / modx.pro</title>
        при смене языка не переключает на английский
      Рустам С
      Рустам С Старожил
      29 августа 2015, 12:20
      Василий а можете выложить или описать решение что реализовали для переключения языков без контекста.
      Просто переменную смотрите в сессии?
        Василий Наумкин
        Василий Наумкин Администратор
        29 августа 2015, 12:47
        Дополнил заметку.
          Рустам С
          Рустам С Старожил
          29 августа 2015, 12:48
          спасибо!
            Василий Столейков
            Василий Столейков Проверенный
            29 августа 2015, 14:30
            Спасибо что поделился кодом плагина! Тоже хотел спросить про него!
          Максим
          Максим Старожил
          29 августа 2015, 12:41
          Есть небольшое замечание: «работа» здесь правильнее перевести как «job». Work — это более общее понятие, а job как раз подразумевает оплачиваемую работу.
            Николай Савин
            Николай Савин Администратор
            29 августа 2015, 13:59
            Дружище, Work это рабочее место, а job это работа
            Николай
            Николай Проверенный
            29 августа 2015, 13:22
            А у всех переключается? У меня как переключилось на английский, так на русский больше не меняется, сколько на значек в правом углу ни кликай.
            Значек всегда показывает Русский (именно на русском, наверное стоит перевести — Russian) Ну и раз уж пошла такая пьянка стоит кнопку добавить, чтобы в гугл перевод загонялся сайт при необходимости. Иначе иностранцам сложно будет, если только для них свой раздел не создать.
              Василий Наумкин
              Василий Наумкин Администратор
              29 августа 2015, 13:26
              Вроде больше никто не жаловался, всё переключается. Проверь из анонимного режима.

              Значок, как раз, переводить не принято — ибо это единственное понятное слово для человека в незнакомом интерфейсе. Типа зашел на русский сайт и непонятно вообще ничего — увидел English и нажал.

              Ну и наоборот также.
                Николай
                Николай Проверенный
                29 августа 2015, 13:36
                Попробовал не авторизованным, тоже не преключается. В эксплорере попробовал — тоже сразу на английском меню. При клике на значек Русский видно, что перерисовывается страница, обновляются комметарии, но язык не меняется. Ошибок в консоли не видно.
                Ну да ладно, может у меня какой-то глюк, если больше ни у кого не проявляется. В принципе не критично))
                  Василий Наумкин
                  Василий Наумкин Администратор
                  29 августа 2015, 13:49
                  Судя по коду плагина, который я привёл выше, у тебя не работает сессия и браузер не отдаёт HTTP_ACCEPT_LANGUAGE.

                  Теряюсь в догадках, как такое может быть. Посмотрим, может еще у кого такое встретим и сможем понять, как так?
                    Николай
                    Николай Проверенный
                    29 августа 2015, 19:20
                    Могу ошибаться, но вот тут может быть проблема:
                    if (!empty($_GET['lang'])) {
                    $lang = strtolower(trim($modx->stripTags($_GET['lang'])));
                    if ($lang == 'en') {
                    // И сохраняем в сессию
                    $_SESSION['language'] = $lang;
                    $modx->config['cultureKey'] = $lang;
                    }
                    else {
                    unset($_SESSION['language']);
                    }
                    // Убираем переменную из запроса и редиректим обратно
                    // Это чтобы не было ?lang= в адресе
                    $request = preg_replace("#(\?|\&)lang={$lang}#", '', $_SERVER['REQUEST_URI']);
                    $modx->sendRedirect($request);
                    }

                    Сейчас логика такая, что только если в в гет 'en' то в сессию сохраняется язык. Это сработает, когда на английский переключаюсь, но когда хочу переключиться на русский в гет будет $lang == 'ru' и выполняется unset($_SESSION['language']); т.е. возвращаемся к базовому языку, который отдает мой браузер. А у меня по дефолту английский, вот и не могу переключиться на русский.
                      Василий Наумкин
                      Василий Наумкин Администратор
                      29 августа 2015, 19:24
                      Да, ты прав, поменял это место.

                      Проверяй!
                        Николай
                        Николай Проверенный
                        29 августа 2015, 19:24
                        как часы! спасибо))
            Григорий Коленько
            30 августа 2015, 23:18
            Небольшая бажка. При подписке на Тикет, пишет, что я не буду получать обновлений больше. Если ещё разок кликнуть, то просто ключ массива выкидывает.
            file.modx.pro/files/d/8/3/d83d183beaf838da6cf2038117fffdd3.png
            Владимир
            Владимир Старожил
            30 августа 2015, 23:27
            Только официальный форум, личные блоги и чат в Slack

            Василий, на modx.today есть раздел modx.today/submit, где предлагают добавлять статьи.
            Все новые расширения, и твои тоже, регулярно анонсируются там короткими заметками. Вероятно, подробностям об mxManager и pdoTools + феном там были бы рады.
              Василий Наумкин
              Василий Наумкин Администратор
              31 августа 2015, 05:48
              Я про сообщества, типа нашего, где можно задать вопрос и получить ответ.

              Вообще, видимо из-за повсеместного использования Quip на западных сайтах, с комментариями к заметкам там не густо — даже не modx.com при анонсах новых версий. У нас и то больше.

              А на modx.today одну заметку для проверки я уже отправил пару дней назад, пока жду реакции.
                Іван Клімчук
                Іван Клімчук Администратор
                31 августа 2015, 11:07
                Я туда почти 2 месяца назад заметку отправил :) Тоже жду )
                  Василий Наумкин
                  Василий Наумкин Администратор
                  31 августа 2015, 11:07
                  О как!

                  Стало быть, можно уже и не ждать.
                    Іван Клімчук
                    Іван Клімчук Администратор
                    31 августа 2015, 11:08
                    Ну у меня там заметка о Gitify и Марк написал, мол типа нужно сначала вводную по Gitify закончить, а уже потом твою публиковать. Только он вводную так и не закончил пока. Придется видимо свою заметку дописать и перевести.
                  Владимир
                  Владимир Старожил
                  01 сентября 2015, 10:42
                  А вот, уже опубликовали modx.today/posts/2015/09/introducing-mxmanager-an-ios-app-for-modx?pk_campaign=rssfeed&pk_kwd=post Так что, как говорится, с почином! :)
                    Сергей Шлоков
                    Сергей Шлоков Эксперт
                    01 сентября 2015, 11:31
                    Причем уже куча комментов почти месячной давности :)
                      Владимир
                      Владимир Старожил
                      01 сентября 2015, 11:35
                      Да, они (комменты) явно не от той страницы) Странное дело.
                t3mnikov
                t3mnikov Проверенный
                31 августа 2015, 10:36
                Может добавить ветку для англоговорящих людей?
                  Василий Наумкин
                  Василий Наумкин Администратор
                  31 августа 2015, 10:47
                  Как только (если) они здесь появятся, и начнут англоговорить — добавим им свой отдельный блог.

                  Но пока никого нет.
                    t3mnikov
                    t3mnikov Проверенный
                    31 августа 2015, 11:23
                    Ок! Оставить бы им послание, что мы их рады видеть у себя)))
                  Василий Столейков
                  Василий Столейков Проверенный
                  31 августа 2015, 11:55
                  joxi.ru/VrwQ47RHPZ912X — на английском не переведены эти моменты ещё…
                  JK
                  JK Старожил
                  26 сентября 2015, 19:58
                  Не пинайте новичка… Как пользоваться?
                  Создал каталог с файлом
                  http://site/lang/lexicon/en/en.php
                  в нем:
                  <?php
                  $lang['welcome']="Welcome in english from lexicon";
                  //======================
                  как его в шаблоне прикрутить?
                  например в титле:
                  <title>[??welcome??вот тут что писать?]</title>
                    Кузьма Липницкий
                    01 октября 2015, 19:11
                    Зашел с браузера, где по умолчаниею стоит английский (и в винде тоже). Смотрю, а мне английский интерфейс показывается. Каким образом язык налету переключается?
                    У вас как это сделано?
                      Павел Левин
                      Павел Левин Проверенный
                      01 октября 2015, 20:27
                      В коде
                      // Или смотрим, поддерживается ли русский браузером
                      Алексей
                      Алексей Проверенный
                      11 марта 2016, 09:15
                      Заметил что в английской версии разделы сайта в тэгах
                      <title></title>
                      отображаются на русском
                        Василий Столейков
                        Василий Столейков Проверенный
                        18 апреля 2016, 13:05
                        Сайт уже некоторое время на двух языках — за это время поисковики его хорошо рассмотрели.
                        Возник вопрос по поводу отслеживания поисковиками язычности сайта. Поисковики видят что на сайте 2 языка, или индексируют только один?
                        Если да, то где это настроить? В robots.txt? В панели вебмастера на Яндексе?
                          Василий Столейков
                          Василий Столейков Проверенный
                          26 апреля 2016, 08:55
                          Так и не нашел информации о том, как видят поисковики разные языковые версии по данной технологии.
                          Поэтому и интересно, как обстоят дела сейчас c этим у modx.pro и modhost.pro?
                            Василий Наумкин
                            Василий Наумкин Администратор
                            26 апреля 2016, 10:30
                            Что мешает зайти в поисковики и посмотреть?
                          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                          42