Снова вопрос уровня 101. В файле app.yml я установил fi как локаль по умолчанию. Но делает ли это что-то большее, чем просто задаёт значения по умолчанию для всех и всего?
И если да, то увидит ли пользователь всё на этом языке по умолчанию, то есть fi, пока не будет изменена настройка «Разрешить выбор локали пользователем»?
А как насчёт «Устанавливать локаль из заголовка Accept-Language»? Если у кого-то указано en_US, будет ли предложена английская версия? И означает ли это, что локаль по умолчанию — это лишь рекомендация, которая будет переопределена, если Accept-Language указывает на что-то другое?
Причина, почему я задаю этот вопрос, заключается в моём новом сайте, который ориентирован в основном на США и требует наличия форума. Но я не думаю, что он привлечёт столько внимания, чтобы стоило прилагать все усилия, необходимые для запуска форума. Поэтому я рассматриваю решение, при котором я буду направлять посетителей из США и других стран в специально созданную категорию.
Однако мой форум в остальном полностью на финском, и если Accept-Language не изменит локаль по умолчанию, это не сработает.
(И отчасти я надеюсь, что когда-нибудь заработает функция перевода ).
Я знаю, что это не настоящий вопрос поддержки, но я стараюсь избежать раздела «Общее»…
Это не то, о чём я знаю очень много, но поскольку других ответов пока нет…
Думаю, добавление локаля по умолчанию в ваш app.yml переопределяет всё, что установлено для «локаля по умолчанию» в настройках сайта (а также удаляет его со страницы настроек). Но это касается только локали по умолчанию; вы можете позволить пользователям выбирать (или позволить их браузерам выбрать) более подходящий для них вариант.
Надеюсь, это имеет отношение к делу. Если нет, то это просто полезное напоминание, чтобы попытаться получить более компетентный ответ.
В ApplicationController#with_resolved_locale выделяются два сценария работы с логикой: для авторизованных и неавторизованных пользователей.
Для неавторизованных пользователей: (1) язык определяется из запроса, затем (2) если язык не был обнаружен, используется настройка сайта «Язык по умолчанию».
Приоритет определяется следующим образом: параметр ?lang= в URL, затем cookie locale, затем заголовок Accept-Language (при условии, что соответствующие настройки сайта включены).
Логика для авторизованных пользователей проще: предпочтение пользователя, затем «Язык по умолчанию», если выбор пользователя запрещён.
Во всех случаях, если разрешённый язык был удалён с сервера Discourse, используется en. (Это в основном происходит во время модульных и интеграционных тестов, насколько мне известно.)
locale = SiteSettings::DefaultsProvider::DEFAULT_LOCALE if !I18n.locale_available?(locale)
Итак, вкратце, что это делает:
Это язык для анонимных запросов без заголовка Accept-Language.
В частности, это касается процесса регистрации аккаунта.
Это язык, который всегда будет использоваться, если вы не разрешили пользователям выбирать свой язык, или если пользователь не установил предпочтительный язык.