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

Кнопочка вверху справа переключает языки. Сделано это без контекстов, но лексиконами. При загрузке страницы проверяется переменная с языком в сессии и все служебные надписи на странице переключаются.
Большой плюс — нет новых контекстов и дублирования ресурсов. Минус — нельзя кэшировать эти записи. Насколько я вижу, каких-либо тормозов не прибавилось, так что проблемы нет.
Теперь вы можете смело приглашать иностранных друзей к нам в гости, тем более, что я не видел похожих сообществ за рубежом. Только официальный форум, личные блоги и чат в Slack — это всё немного не то.
По просьбам общественности, выкладываю плагин для переключения языка по ссылке, без контекстов:
Для работы своего произвольного лексикона site нужно создать новое пространство имён в админке и положить в него директорию lexicon с поддиректориями en и ru. Ну и туда обычные файлы с лексиконами и значениями.

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

Кнопочка вверху справа переключает языки. Сделано это без контекстов, но лексиконами. При загрузке страницы проверяется переменная с языком в сессии и все служебные надписи на странице переключаются.
Большой плюс — нет новых контекстов и дублирования ресурсов. Минус — нельзя кэшировать эти записи. Насколько я вижу, каких-либо тормозов не прибавилось, так что проблемы нет.
Теперь вы можете смело приглашать иностранных друзей к нам в гости, тем более, что я не видел похожих сообществ за рубежом. Только официальный форум, личные блоги и чат в 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. Ну и туда обычные файлы с лексиконами и значениями.

Ссылки на переключение языка можно размещать на любой странице, например:
Комментарии: 42
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Пару багрепортов:
— В разделе «Пользователи» перестала грузиться статистика сайта: yadi.sk/i/w8iOpXxUiiwq5
— Не переведен placeholder «Поиск на сайте»: yadi.sk/i/sLpmZEkjiiwrr— Блок «Здесь упомянуты»: yadi.sk/i/e2MYU85Liix4hUPDATE: Все поправлено.
Темы писем поправил.
Просто переменную смотрите в сессии?
Значек всегда показывает Русский (именно на русском, наверное стоит перевести — Russian) Ну и раз уж пошла такая пьянка стоит кнопку добавить, чтобы в гугл перевод загонялся сайт при необходимости. Иначе иностранцам сложно будет, если только для них свой раздел не создать.
Значок, как раз, переводить не принято — ибо это единственное понятное слово для человека в незнакомом интерфейсе. Типа зашел на русский сайт и непонятно вообще ничего — увидел English и нажал.
Ну и наоборот также.
Ну да ладно, может у меня какой-то глюк, если больше ни у кого не проявляется. В принципе не критично))
Теряюсь в догадках, как такое может быть. Посмотрим, может еще у кого такое встретим и сможем понять, как так?
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']); т.е. возвращаемся к базовому языку, который отдает мой браузер. А у меня по дефолту английский, вот и не могу переключиться на русский.
Проверяй!
file.modx.pro/files/d/8/3/d83d183beaf838da6cf2038117fffdd3.png
Василий, на modx.today есть раздел modx.today/submit, где предлагают добавлять статьи.
Все новые расширения, и твои тоже, регулярно анонсируются там короткими заметками. Вероятно, подробностям об mxManager и pdoTools + феном там были бы рады.
Вообще, видимо из-за повсеместного использования Quip на западных сайтах, с комментариями к заметкам там не густо — даже не modx.com при анонсах новых версий. У нас и то больше.
А на modx.today одну заметку для проверки я уже отправил пару дней назад, пока жду реакции.
Стало быть, можно уже и не ждать.
Но пока никого нет.
скрин
Создал каталог с файлом в нем:
//======================
как его в шаблоне прикрутить?
например в титле:
У вас как это сделано?
отображаются на русском
Возник вопрос по поводу отслеживания поисковиками язычности сайта. Поисковики видят что на сайте 2 языка, или индексируют только один?
Если да, то где это настроить? В robots.txt? В панели вебмастера на Яндексе?
Поэтому и интересно, как обстоят дела сейчас c этим у modx.pro и modhost.pro?