Помощь Организация мультиязычности на Presta 1.7

leaderdm

Гуру форума
Регистрация
21 Мар 2014
Сообщения
214
Реакции
55
Привет всем!
Очень нужен совет/мнение...
В Украине приняли закон о языке, который еще не ясно как будет действовать: будет ли изменен / отменен итд. Согласно закону необходимо обязательно иметь укр. версию. Сейчас я юзаю престу 1.6.0.9. Но в связи с переходом на https решил обновляться сразу на 1.7.5. В итоге что дальше:
1. Оставить как и есть - один русский. И вообще пилить другой сайт, с другим доменом, но на украинском.
2.1 Добавить украинский к существующему. тогда добавятся приставки "ru" и "ua". Но так , как я перехожу на https то все равно урлы меняются. Выходит и "Для просмотра ссылки Войди или Зарегистрируйся" и "Для просмотра ссылки Войди или Зарегистрируйся" это все равно новые будут урлы.
2.2 Как быть с СЕО. По идее если я ручками переведу весь контент - дублей не должно быть. + Сделаю сайтмап для каждого языка. У гугла есть атрибут hreflang.
2.3 Есть проблема: При создании укр. версии вместо "ua" создается "uk". Код ISO (UK) через админ панель не изменить.
 
Последнее редактирование:
И на 1.7 тоже есть. Я себе убирал ru. Сейчас конечно фиг вспомнишь, но если надо - могу поковырять. Причем точно помню, что делал через оверрайды, чтобы больше к этому не возвращаться. А вообще инфы в гугле полно, стоит только попробовать начать поиск.
 
Решение для престы версии 1.7.x.x :
По такому пути /override/classes/ создаете файл Link.php с вот таким содержимым:
PHP:
<?php

class Link extends LinkCore
{
    protected function getLangLink($idLang = null, Context $context = null, $idShop = null)
    {
        static $psRewritingSettings = null;
        if ($psRewritingSettings === null) {
            $psRewritingSettings = (int) Configuration::get('PS_REWRITING_SETTINGS', null, null, $idShop);
        }

        if (!$context) {
            $context = Context::getContext();
        }

        if ((!$this->allow && in_array($idShop, array($context->shop->id,  null))) || !Language::isMultiLanguageActivated($idShop) || !$psRewritingSettings) {
            return '';
        }

        if (!$idLang) {
            $idLang = $context->language->id;
        }

        if (Configuration::get('PS_LANG_DEFAULT') == $idLang) {
            return '';
        }
        else {
            return Language::getIsoById($idLang).'/';
        }
    }
}

Этот код работает следующим образом: он убирает приставку языка только у того, который является главным (по умолчанию / основным). На всех остальных приставка языка остается.
 
Последнее редактирование:
К сожалению на версии 1.7.6.3 не работает, 500 ошибка

Решение для престы версии 1.7.x.x :
По такому пути /override/classes/ создаете файл Link.php с вот таким содержимым:
PHP:
<?php

class Link extends LinkCore
{
    protected function getLangLink($idLang = null, Context $context = null, $idShop = null)
    {
        static $psRewritingSettings = null;
        if ($psRewritingSettings === null) {
            $psRewritingSettings = (int) Configuration::get('PS_REWRITING_SETTINGS', null, null, $idShop);
        }

        if (!$context) {
            $context = Context::getContext();
        }

        if ((!$this->allow && in_array($idShop, array($context->shop->id,  null))) || !Language::isMultiLanguageActivated($idShop) || !$psRewritingSettings) {
            return '';
        }

        if (!$idLang) {
            $idLang = $context->language->id;
        }

        if (Configuration::get('PS_LANG_DEFAULT') == $idLang) {
            return '';
        }
        else {
            return Language::getIsoById($idLang).'/';
        }
    }
}

Этот код работает следующим образом: он убирает приставку языка только у того, который является главным (по умолчанию / основным). На всех остальных приставка языка остается.
 
Ну что, с Новым годом и Новым законом, земляки!
Освежим темку, так как снова актуальна.
Делитесь кто как убрал приставку на 1.7.6
Disallow: /ua/* сработает?

и еще. где "научить" ЧПУ правильно понимать украинские симолы?
/* UKRAINIAN CHARS*/
'Є' => 'Ye', 'І' => 'I', 'Ї' => 'Yi', 'Ґ' => 'G',
'є' => 'ye', 'і' => 'i', 'ї' => 'yi', 'ґ' => 'g',
 
Последнее редактирование:
Вот ещё интересное решение для реализации мультиязычности и мультидоменности (+по странам можно долю рынка распределить заодно:(

This module allows you to set a domain for every installed language.
That means you can set a domain extension for each installed language.
No multistore is needed!
Have a unique domain for every language (or country) that you are selling your products.

Для просмотра ссылки Войди или Зарегистрируйся


пока не понятно, как в плане скорости работы и регионального SEO будет работать...

будем изучать
 
Поделитесь опытом: кто и каким сервисом перевода сайта пользовался?

MS Translate как-то очень криво переводит некоторые слова. Прям комедия - читать результат перевода.
 
Назад
Сверху