Я добавил поведение Translate и все работает нормально, я могу переключиться на любой язык и т. Д. Единственное, что не работает, это когда я переключаюсь на тот же язык, который установлен в app.php как defaultLocale:
'App' => [
...
'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'),
...
],
Я не получаю переведенные поля.
Когда я удаляю настройку defaultLocale, она отлично работает для всех языков.
Может кто-нибудь сказать мнечто здесь не так?
@ ndm Спасибо, это было очень полезно.Однако сейчас я сталкиваюсь с другой проблемой.Вот как сделать многоязычную форму ввода?Итак, у меня есть 4 языка (локали): en_US, nl_BE, fr_BE, de_BE и ru_RU.DefaultLocale - это en_US.Чтобы добавить новую запись, я сделал:
// for the defaultLocale
echo $this->Form->control('title');
// for all other languages I iterate over every language except of the defaultLocale
foreach ($supported_locales as $key => $val):
if ($key !== $default_locale):
echo $this->Form->control('_translations.' . $key . '.title');
endif;
endforeach;
Это прекрасно работает.Хотя я не уверен, является ли это правильным способом Cake, чтобы сделать это?
Но в ПРОСМОТРЕ (с использованием отключенной формы) и РЕДАКТИРОВАТЬ поле defaultLocale
echo $this->Form->control('title');
показываетпереведенное значение выбранной локали в этот момент вместо defaultLocale, которое сохраняется в исходной таблице.Например, когда вы переключите язык на русский в этот момент, вы увидите:
Английский: Русский титул Голландский: Nederlandse titel Французский: Titre français Deutsch: Deutscher Titel Русский: Русский титул
Таким образом, вам не хватает значения для локали по умолчанию.
Я что-то пропускаю, и есть ли более простой способ сделать эту работу "из коробки"?