@neil Извините, что так долго не отвечал, но я использовал вашу работу в новом плагине, который я разрабатываю, чтобы реализовать набор функций, который я описал выше. Он использует модифицированную версию структуры, которую вы добавили, чтобы требовать наличия языкового тега у всех тем, если включена соответствующая настройка сайта. Так что спасибо!
Дополнительные заметки о 'мультиязычном плагине' (в разработке), если кому-то интересно.
Надеюсь, интерфейс интуитивно понятен, но несколько замечаний по терминологии и текущему поведению:
Тип «Base» означает, что язык входит в «базовый список» языков. В настоящее время базовый список — это полный список языков в коде Discourse, а именно этот список: discourse/config/locales/names.yml at main · discourse/discourse · GitHub. Плагин разработан таким образом, что базовый список можно изменить в будущем при необходимости (хотя это потребует некоторых незначительных изменений в коде).
Вы заметите, что многие языки из списка «Base» помечены как «нет переводов». Это отражает тот факт, что список поддерживаемых локалей в Discourse является подмножеством списка языков в names.yml. Безусловно, цель — со временем добавить больше поддерживаемых локалей, однако это зависит от перевода Discourse на различные локали (управляется в Transifex).
Вы можете добавлять новые языки, загружая файл .yml в формате:
iso_code: родное название
iso_code: родное название
...
Вы можете включить в файл столько языков, сколько захотите. Загрузите файл, нажав «Upload Languages» и выбрав файл .yml. Список автоматически обновится с добавлением нового языка. Языки, добавленные таким образом, будут отображаться как тип «Custom».
Вы можете сортировать список по любому заголовку (кроме «Actions»), нажав на заголовок. Вы также можете фильтровать список с помощью поля ввода фильтра в верхнем левом углу (одна небольшая проблема с этим заключается в том, что список обновляется при добавлении каждого символа; я исправлю это позже).
Флажки в столбцах Content и Locale указывают, должен ли язык использоваться как фильтр контента и/или локаль. Функциональность управления локалями ещё не завершена, поэтому флажки в этом столбце будут работать некорректно (и для пользовательских языков без переводов локалей будет отображаться флажок вместо «нет переводов»).
Флажки в столбце Content изменят доступность языков контента для пользователей, т. е. если этот флажок отключён:
В селекторе языков контента в редакторе не будет отображаться тег языка контента для этого языка.
Пользователь не сможет выбрать язык контента в своём профиле.
Обратите также внимание, что селекторы языка контента и локали пользователя сгруппированы в верхней части их настроек интерфейса.
Обратите также внимание, что инициализация селектора языка в редакторе (т. е. добавление языка контента пользователя по умолчанию) теперь должна работать.
Обратите также внимание, что настройка сайта multilingual require language tag определяет, требуется ли языковой тег. Она имеет три возможных значения: no (не требуется никому), yes (требуется всем), non-staff (требуется от не-сотрудников).
Здравствуйте, я посмотрел, как добиться такой структуры?
Я понимаю, что «другие языки» — это категория, а различные языки — подкатегории?
Правильно ли я понял?
И авторы публикуются здесь в соответствии со своими языками?
Значит, они могут публиковать любые темы без привязки к тематике?
Спасибо.
Кому-нибудь кажется, что было бы действительно здорово отображать весь контент и интерфейс для пользователей на их родном языке?
Airbnb делает это уже несколько лет: каждый пишет на своём языке и видит ответы на том языке, на котором он написал.
Это можно легко реализовать технически с помощью Google Translate API, который, честно говоря, производит впечатление своей высокой качеством.
Мне кажется, что предложения, а также «многоязычный плагин», если я правильно понял его функцию, лишь усиливают сегрегацию вместо того, чтобы устранять языковые барьеры.
Вы видели это?Конечно, но насколько я могу судить, это переводит посты только после нажатия на них — или это работает автоматически, и я просто не нашёл, как это сделать?