I18n в Symfony с частичным переводом и несколькими предпочтительными языками - PullRequest
1 голос
/ 09 мая 2011

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

Интернационализация интерфейса проста, но 1500+ упражнений не будут переведены в течение долгого времени.

Мне нужен способ локализации контента (и интерфейса) на языке, выбранном пользователями, но если этот конкретный перевод недоступен на этом языке, то следует использовать язык по умолчанию (французский). Мы бы даже хотели обобщить это: представьте, что некоторые французские упражнения переведены на английский, вы испанец и не говорите по-французски. Сначала вам нужна испанская версия, затем английская, а затем французская.

Есть ли хороший способ использовать интернационализацию в этом случае?

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

1 Ответ

1 голос
/ 09 мая 2011

Для содержимого шаблона, если вы используете поведение Symfony i18n, резервный язык по умолчанию будет автоматически доступен. Все, что вы поместите в помощник __('string'), будет использовать культуру по умолчанию (объявленную в settings.yml), если переведенная строка не найдена. Для многоязычного содержимого базы данных вам нужно либо использовать поведение таблицы Symfony i18n, либо создать его самостоятельно. Я не знаю, как работает обработка базы данных Symfony i18n в случае языка по умолчанию, если контент на определенном языке не найден. Запросы могут быть сложными. Мое общее мнение заключается в том, что вам лучше самим создавать функции, связанные с базой данных, но это только я.

Для упорядочения языков (сначала переводы, затем английский, затем по умолчанию) я понимаю, что готовое поведение Symfony i18n НЕ поддерживает это. Возможно, вы сможете взломать какой-либо тип решения, убедившись, что в вашем испанском файле XML / XLIFF вы поместите перевод на английский язык в теги <target>, где доступны переводы на английский (но не на испанский). Это даст вам ES -> EN -> FR. Однако я бы также порекомендовал вам аккуратно «управлять» своими переводами, чтобы они не стали слишком сложными / запутанными.

Надеюсь, это поможет.

...