Ruslan Brest, rb.labtodo.com
Backend web-developer: CodeIgniter, PHP, MySQL, OpenCart, PrestaShop, MaxSite CMS

language

Как работает автоматическое определение языка в Опенкарт

Для начала давайте разберёмся, как это всё устроено в браузерах и этих наших интернетах.

  1. Человек в настройках браузера обычно имеет возможность указать один или несколько языков, которые он понимает и предпочитает. Ищите в настройках что-то вроде "Preferred languages" (предпочитаемые языки). В браузерах попроще, с прицелом на чайников и минимумом настроек, локаль может браться системная или быть вшита в локализованный софт (без возможности настройки пользователем).
  2. Браузер отдаёт эту информацию сайтам в HTTP-заголовках Accept-Language при всех запросах. Этим он сообщает сайтам: если есть контент на одном из языков из моего списка - дайте мне его! (Если нет для первого - давайте для следующего по списку; если вообще ничего нет - давайте что там у вас есть по умолчанию). Варианты, которые встречаются у посетителей ваших сайтов, можно найти в Google Analytics, Яндекс.Вебмастер, Awstats, Piwik и других подобных системах веб-аналитики. Что отдаёт ваш браузер сайтам, вы можете увидеть в инструментах разработчика, посмотрев на HTTP-заголовки.
  3. Сайт может анализировать или игнорировать эти заголовки, реагируя на указанные предпочтения или нет.

Теперь Опенкарт. Мне кажется, 9 из 10 пользователей этого движка понятия не имеют, что это за строчка в описании языка в админке со всякими ru, ru-ru, uk, uk_UA и т.п. Теперь догадываетесь?

Это - простой список локалей, которые браузер может передать в заголовках. И на которые мы имеем возможность среагировать. Если у нового пользователя опенкарт язык сайта ещё не выбран (и не записан в куках), то Опенкарт смотрит на HTTP-заголовки Accept-Language. И сравнивает их с тем, что мы понаписали в админке для русского, украинского и других языков.

Поскольку браузеры обычно дают выбирать языки и локали из списка, а не прописывать их вручную, то там чаще всего будет код языка или языка и региона. Например: ru, ru-ru, ru-RU, ru_ru, ru_RU. В Украине бывает uk (украинский язык), ru_UA, uk_UA. Ну и ru-UA, uk-UA до кучи.

Обычно локаль указывается с подчёркиванием "_", но жёстких стандартов по этому поводу кажется нет. И нередко можно встретить минус, тире или как там его правильно называть в типографике: "-". То же самое касается регистра символов в коде страны. Надо прописать все возможные комбинации, так как Опенкарт не приводит их к нижнему регистру при сравнении (смотрел на версии 2.1.0.2 - думаю, в остальных так же).

Итого: у вас в опенкарт админке в настройке языка должен быть список языков/локалей, которые могут запросить браузеры ваших посетителей (смотрите логи и аналитику и подстраивайтесь под своих посетителей). И этой настройкой вы определяете, какой язык им отдать при первом посещении вашего сайта ("угадать" его предпочтения).

Надеюсь, вам стала понятней эта внутренняя кухня автоматического определения языка.

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

Русский язык / русский перевод для Opencart v2.0 - обновление до версий v201x

Информация для покупателей модуля.

Доступен перевод для версий Opencart 2.0.1.0 и 2.0.1.1 (v201x).

По ходу его подготовки были замечены мелкие ошибки и опечатки в переводе для 2.0.0.0. Небольшое обновление для 2.0.0.0 планируется завтра. Завтра же наверняка будут ещё некоторые обновления по 2.0.1.1 (остался список тудушек).

Критичных обновлений не будет: в основном косметические правки и мелкие опечатки. Сегодняшняя версия вполне работоспособна и может использоваться.

Единственное что может быть критично - пользователям версий 2.0.0.x в файле catalog/language/russian/mail/customer.php надо изменить строку:

$_['text_welcome'] = 'Добро пожаловать и благодарим Вас за регистрацию в %s!'; // %s - название магазина

Общий список изменений можно видеть в history.txt.

Русский язык / русский перевод для Opencart v2.0

Выпущен русский перевод для Опенкарт версий v2.0.

Из интересного - есть автоматическая установка средствами Opencart Extension Installer (новый инструмент в версии 2.0). Вроде и работает, но местами у некоторых клиентов встречаются грабли и проще поставить по-старинке, вручную. Одно можно сказать точно: если вы этой фишкой пользуетесь и настроили себе, установка других ocmod-модулей происходит без проблем, -- то и с установкой нашего модуля русского перевода проблем не будет: установка происходит буквально в один-два шага (выбрать архив и подтвердить установку).

Также сделали модуль, который помогает переводить ресурсы в базе на русский и обратно на английский, если потребуется. Это все статусы и география, которые устанавливаются с демо-данными.

Paypal при оплате картой дополнительную комиссию с вас не берёт. И Paypal-акаунт не нужен, и привязка карты к акаунту тоже. Кроме реквизитов карты ничего больше не надо: выберите слева возле иконок платёжных систем линк "Continue" и заполните данные карточки.

Ветка поддержки модуля на форуме здесь - пишите об ошибках.

4 года экспериментов с сообществом - поддержка бесплатного русского перевода для Опенкарт 1.5.x, считаю законченным. Интерес (в смысле дай) велик, а поддержка и совместная работа - практически на полном нуле. Поэтому перевод для версии 2.0 решено сделать платным, за символическую цену в $2 (WMZ, WMU, П24, Paypal, карточки). Владельцам QIWI и Yandex-Денег - тоже в оплату картами VISA/MC мгновенного выпуска.

Перевод для v15x оставлен на гитхабе, а ветки версии v2.0 перенесены в приватный репозиторий.

Модуль также можно купить на opencart.com: Russian language translation v2.0.x / русский перевод, там цена $10 по техническим причинам.

Русский перевод Opencart v1.5.0.5, v1.5.1, 1.5.2, 1.5.3, 1.5.4/1.5.5, 1.5.6. Информация о других переводах (русский, украинский языки)

17 июля 2011 г. Ruslan Brest E-commerce » OpenCart87

Перевёл пользовательскую часть OpenCart v1.5.0.5. Админку не трогал: на её перевод сейчас нет времени. Возможные проблемы и неточности:

  • Wishlist перевёл как закладки, ничего более подходящего и короткого не придумывается, а по смыслу подходит прекрасно;
  • в районе налогов скорей всего ошибка: в оригинале было "Ex Tax". Я не знаю, что это такое, хотя может оказаться, что "excluding tax", т.е. без НДС или что-то в этом роде. В общем, в этих местах я писал "Без НДС" "НДС", и скорей всего это неправильно. Мы в своём магазине ещё будем это смотреть и проверять с партнёрами, а я пока предупреждаю, что здесь может быть засада.
  • Мне не понравилось стандартное оформление сообщений пары способов доставки (2 практически одинаковые строчки) при оформлении заказа, поэтому принял несколько спорное решение: включил цену доставки прямо в сообщение. То есть цена указана прямо в языковых файлах и изменить её из админки не удастся. Получилось замечательно, но имейте этот момент в виду. В языковых файлах всего в паре мест должна встречаться строчка "грн". Поэтому достаточно найти и убрать упоминания "грн" и конкретной стоимости в 4 файлах:
    • catalog/language/russian/shipping/free.php
    • catalog/language/russian/shipping/flat.php
    • admin/language/russian/shipping/free.php
    • admin/language/russian/shipping/flat.php

Базовым вариантом послужил русский перевод пользователя alsrmurad от 22 июня 2011 года. Но многие строки там были предельно кошмарны и с ошибками: то ли машинный перевод, то ли переводчик не русский, а просто знает язык недостаточно хорошо. Или банально спешил выложить. Во всяком случае я по-любому благодарен автору за частично сделанный перевод: это сэкономило немало времени и избавило от приличной части рутинных операций.

UPD 2011-07-21: небольшие обновления и исправления ошибок. Узнал также о существовании ещё одного перевода Opencart, есть SVN. См. также ветку форума opencartforum.ru.

UPD 2011-07-25: Dmitry добавил свой перевод административной части Opencart 1.5.0-1.5.1. Правда, скачать без регистрации невозможно.

UPD 2011-07-29: Очередное обновление замеченных ошибок, неточностей и корявостей. На этом я прощаюсь с версией 1.5.0.5 и мигрирую на 1.5.1.1 - они очень похожи, но мелкие отличия в языковых файлах есть. Собираюсь держать свою версию перевода 1.5.1 здесь же рядом с 1.5.0.5, и может быть на этот раз будет время заняться административной частью. Я присоединился к команде переводчиков ocStore (русской сборки OpenCart) на assembla.com (см. выше про SVN), поэтому частично мои правки попадают туда (коммичу не все свои варианты, и местами там не все варианты нравятся), частично многое я возьму оттуда. Но так как там обновляется только текущая версия перевода, а ветки по конкретным версиям не хранятся, я решил продолжать держать у себя те версии, с которыми работаю, в виде отдельных архивов.

UPD 2011-09-16: Исправлен ошибочный перевод в админке, также ранее вносились мелкие изменения.

UPD: Украинским переводом занимаются парни с opencart-ua.org

Скачать

Далее...