Как упомянуто в CakePHP 3.6.10 В поведении перевода не отображаются значения 'defaultLocale' значения языка по умолчанию должны быть сохранены в исходной таблице, чтобы их можно было использовать в качестве запасного для пустых полей в других языках.
Однако у меня есть проблема с созданием форм для этого. У меня есть 5 языков (локали): 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, которое сохраняется в исходной таблице. F.E. когда вы переключите язык на русский в этот момент, вы увидите:
- Английский: Русский титул
- Голландский: Nederlandse Titel
- Французский: Titre français
- Deutsch: Deutscher Titel
- Русский: Русский титул
Таким образом, вам не хватает значения для локали по умолчанию (английского), потому что оно заменено значением для текущего выбранного языка (здесь русский). И вы не можете редактировать значение для локали по умолчанию, когда используете страницу на другом языке.
Я что-то пропускаю, и есть ли более простой способ сделать эту работу "из коробки"?