Как получить переведенные URI и контроллеры в CakePHP для многоязычного веб-сайта - PullRequest
2 голосов
/ 12 января 2011

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

Конечное решение того, что мы хотим:

Хорошие URL стри разных URL (в переводе) для каждого языка.Например:

www.domain.com / L1 / language-1-parent / language-1-child / www.domain.com/L2/language-2-parent/language-2-child/ www.domain.com / L3 / language-3-parent / language-3-child /

Здесь у нас есть одна часть контента.Этот контент будет одинаковым на всех трех языках, но будет переведен.Соответственно, мы хотим, чтобы соответствующие подкаталоги и URI также были переведены, где:

L {1-3} являются подкаталогами, указывающими на язык

language- {1-3} являются 'контроллерамидля содержания.В настоящее время у нас есть только один контроллер, независимо от того, находятся ли языковые подкаталоги на другом языке).

langauge- {1-3} -child являются зависимыми элементами содержимого или подкаталогами, которые также должны быть переведены на основе языковых подкаталогов


Предполагаемая проблема:

Мой разработчик говорит мне об этом, потому что у Cake есть контроллеры, которые обслуживают контент, и, следовательно, переводы немного грязны.В приведенном выше примере: я предполагаю, что «language-1», «language-2» и «language-3» являются контроллерами.

Кроме того, я предполагаю, что, поскольку мы пытаемся обслуживать три версии контента с одного контроллера (с разными URL-адресами), у нас возникла проблема.

В настоящее время мы имеемURL-адреса:

www.domain.com / L1 / language-1-parent / language-1-child / www.domain.com/L2/language-1-parent/language-1-child/www.domain.com/L3/language-1-parent/language-1-child/

Проблема здесь в том, что независимо от того, выбирает ли пользователь другой язык, у нас есть URL-адреса, которые не соответствуют ине переводится.Кроме того, у нас есть элементы контента, которые не имеют переводов на другие языки.Поэтому я хочу добавить метатег rel = canonical на страницы без переводов и / или noindex этих страниц, пока мы работаем над переводами.

Опять же, ваша помощь высоко ценится, и я с нетерпением ждуна ваши ответы.Я рад что-либо прояснить.

1 Ответ

1 голос
/ 13 января 2011

С помощью стандартной конфигурации CakePHP вы можете легко получить URL-адреса такого типа, используя CakePHP международной

/eng/users/account
/fre/users/account

Если вам нужны эти короли URL

/eng/users/account
/fre/utilisateurs/compte

Тогда вы должны играть с вашим AppController.php

// pseudo code, you need to rewrite this section as you need.
var lang getUrlParams['language'];
var controller getUrlParams['controller'];
var action getUrlParams['action'];

if (controller[lang] != controller || action[lang] != action) :
    redirect to `/lang/controller[lang]/action[lang]`;
endif;

В представлении все ссылки должны называться как

$this->Html->link(__('My Link'), array('controller' => __('users'), 'controller' => __('account')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...