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

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

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

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

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

Теперь вы можете смело приглашать иностранных друзей к нам в гости, тем более, что я не видел похожих сообществ за рубежом. Только официальный форум, личные блоги и чат в 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
12
2 975
+13

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

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

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

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

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

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

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

              Теряюсь в догадках, как такое может быть. Посмотрим, может еще у кого такое встретим и сможем понять, как так?
                Николай
                29 августа 2015, 19:20
                0
                Могу ошибаться, но вот тут может быть проблема:
                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']); т.е. возвращаемся к базовому языку, который отдает мой браузер. А у меня по дефолту английский, вот и не могу переключиться на русский.
        Григорий Коленько
        30 августа 2015, 23:18
        0
        Небольшая бажка. При подписке на Тикет, пишет, что я не буду получать обновлений больше. Если ещё разок кликнуть, то просто ключ массива выкидывает.
        file.modx.pro/files/d/8/3/d83d183beaf838da6cf2038117fffdd3.png
        Владимир
        30 августа 2015, 23:27
        0
        Только официальный форум, личные блоги и чат в Slack

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

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

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

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

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