Ответы пользователя по тегу Интернационализация и локализация
  • Как локализовать контент на сайте Laravel?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Комментировать
  • Как добавить локализацию?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Polylang
    WPML
    MultilingualPress
    qTranslateX
    и еще вагон и целая тежелжка плагинов, на любой вкус и кошелек.
    Ответ написан
  • Плагин polylang создает избыточные страницы языков - как из удалить из видимости?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вообще-то это главная страница вашего сайта на альтернативном языке. Так и должно быть.
    Ответ написан
  • Виртуальный Мультисайт на Wordpress, как реализовать?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    В общих чертах:
    1. Конфигурируете сервер чтобы обрабатывал example.ru и *.example.ru как один и тот же WP-сайт
    2. В wp-config.php устанавливаете урлы сайта с помощью констант (они имеют приоритет над значениями из БД), а значения этих констант устанавливаете динамически на ходу, в зависимости от запрашиваемого адреса:
    define( 'WP_HOME', $_SERVER['SERVER_NAME'] );
    define( 'WP_SITEURL', $_SERVER['SERVER_NAME'] );

    3. В том же конфиге добавляете для удобства еще одну константу, скажем, SUBDOMAIN. Берем $_SERVER['SERVER_NAME'], достаем из него имя субдомена и кладем в эту константу.
    4. Далее, в нужных местах берете значение этой константы и действуете по обстоятельствам. Например, хукаетесь в фильтр the_title и модифицируете название, исходя из значения константы.
    5. С sitemap, возможно, придется повозиться чуть дольше. Но каких-то особых проблем быть не должно.
    6. Возможно, в процессе отладки вылезут какие-то еще мелкие нюансы, но вряд ли что-то серьезное.

    UPDATE:
    Обдумывал идею, пришло в голову вот еще что - надо уменьшить повторение кода в тех местах, где данные будут модифицироваться в зависимости от значения константы SUBDOMAIN. Я бы засетапил какой-нибудь массив, в котором ключами будут выступать как раз значения поддоменов, а значениями массива - необходимые данные. Где его хранить, в БД или в конфиге - не принципиально. Что-то типа:
    $data = [
        'moskva' => [
            'name' => 'Москва',
            'term_id' => 11, // ID термина таксономии cities, которая может использоваться для группировки контента, это позволит на "подсайтах" показывать только релевантный контент
            'title_suffix' => ' в Москве и области', // динамическая часть тайтла сайта / страниц
            ...
        ],
        'spb' => [
            ...
        ],
        ...
    ];

    Ну и получать доступ к этим данным:
    $title = $title . $data[ SUBDOMAIN ]['title_suffix'];
    Ответ написан
    6 комментариев
  • Хранение html разметки в файлах локализации?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Хорошо ли? Спорный вопрос, но насколько мне известно, другого варианта из коробки нет. Главное соблюдать 2 правила:

    1. Избегать разметки как таковой (div, header и тому подобное) в файлах перевода. Ограничиваться inline-элементами форматирования, такими как strong, sub и тд. Если приходится вставлять большой кусок c более общими тегами, вероятно его стоит разбить на более мелкие фразы.
    2. Не забывать выводить правильно с помощью {!! $string !!}
    Ответ написан
    Комментировать
  • Как сделать мультиязычными кастомные поля?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    WPML переводит, Polylang вроде тоже. У них же каждый перевод - это отдельная запись, а значит и метаданные свои. Что конкретно у вас не получается?
    Ответ написан
    Комментировать
  • Как сформировать адекватную поддержку продукта на большом количестве иностранных языков?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Поначалу англоязычная поддержка. Когда имеет смысл с точки зрения бизнеса (экономически целесообразно уже), определяется наиболее востребованный язык по списку и нанимается специалист в поддержку, носитель языка. Он проходит обучение и приступает к работе. Когда (если) все это дело растет и дальше, нанимаются дополнительные люди, формируются отделы и тд. Клиент может обратиться в поддержку на своем языке (если язык поддерживается вашей службой поддержки), если в данный момент специалисты на его языке недоступны, может быть fallback на английский. Для системы тикетов бессмысленно, для онлайн-чата и телефонной поддержки - полезная и удобная штука.

    Например, из последнего опыта - звонил в какую-то службу поддержки (уже не помню куда), в русский департамент. После минуты ожидания на телефоне, мне было предложено продолжить ожидание или же нажать 1 для переключения на международную (англоязычную поддержку). И так каждую минуту повторяется, в течение 5 минут. Если русский департамент трубку не взял, по истечении лимита времени вас перебрасывает на англоязычную. Там меня ждал какой-то индус из британского офиса, с вполне приличным английским, время ожидания - секунд 5. Удобно.
    Ответ написан
    Комментировать
  • Как переводить строки через тему в Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Файлы переводов идут отдельно для движка, тем и плагинов (каждого плагина). Ищите их в папках плагинов и в wp-content/languages. По каждому плагину смотрите доку или сам код, там понятно станет где он будет искать свой файл перевода.

    В целом, если формат работы с poedit вам привычен и понятен, то лучше всего так. Есть и решения в виде плагинов, типа Loco Translate. Но, насколько мне известно, они не все строки парсят из кода, есть там какие-то нюансы. Можно погуглить Otto + gettext + loco translate, когда-то обсуждалось где-то на просторах сети.
    Ответ написан
    Комментировать
  • Как сделать переключение языка в wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вам только интерфейс нужно или все же и контент страниц и постов тоже должен быть на украинском? Смотрите в сторону плагинов Polylang, WPML ($), qTranslate X и подобных.
    Ответ написан
  • Как сделать мультиязычный шаблон wordpress без перевода контента?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Да, есть Loco Translate.
    Но сама тема / плагин должна быть готова к локализации (использованы функции __(), _e() и тд, корректно указан textdomain).
    Ответ написан
    Комментировать
  • Как подружить qtranslate с другими плагинами wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Найдите любой плагин который дает поддержку qTranslate (кстати, используйте более новый форк qTranslate X) для другого плагина, например WooCommerce, Advanced Custom Fields и тд и посмотрите как он устроен внутри. На самом деле там нет ничего сложного.

    Например, вот:
    https://plugins.trac.wordpress.org/browser/qtransl...
    https://plugins.trac.wordpress.org/browser/qtransl...
    Ответ написан
    4 комментария
  • Как правильно построить структуру бд для мультиязычных записей?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Архитектура мультиязычных данных - штука занимательная. Там есть варианты и нюансы. Почитайте для начала вот эту статью.
    Ответ написан
    Комментировать
  • Как перевести произвольные строчки с помощью Polylang?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    У Polylang есть свои собственные маленькие функции, полезные для таких целей. Конкретно в этом случае, есть 3 варианта:

    1. Локализация строки обычным методом WordPRess - в шаблоне находим где этот текст и оборачиваем его в функцию _e() или __(). После этого делаем перевод строки в POedit, Как обычно.

    2. Локализация строки точно так же, как в п.1, только вместо внешнего POedit ставим плагин Loco Translate и переводим строку прямо в админке.

    3. Вместо функций _e() или __() используем функции pll__(), pll_e() вместе с pll_register_string() и переводим в админке WordPress на странице настроек Polylang. Документация.

    В любом случае, придется ковыряться в коде.
    Ответ написан
    2 комментария