Export customized text from database into YML

Admin interface allows overwriting any stranslations which is very healful not just for utilizing community translation while updating them with custom phrases that suit a specific community, but at the same time it is also a very good way to gradually translate a new language, without the need of updating the code, hence rebuilding the cache. However, it would be great if the customized translations can be exported from the database and somehoe merged back into the corresponding YAML files to make it available in the main repository. Is there a way of doing that which I am not aware of?

3 лайка

I don’t think there is a job for this but 100% support these two tasks, which could help you out here

rake export:locale_overrides:server > server.xx.yml
rake export:locale_overrides:client > client.xx.yml
7 лайков

Кто-нибудь знает, сделал ли кто-нибудь это уже?

@sam Я запустил задачу по экспорту локалей, но она не сработала.
Я получил следующее сообщение:

Неизвестно, как выполнить задачу 'export:locale_overrides:server' (см. список доступных задач с помощью `rake --tasks`)

Есть какие-то идеи?

Никто ещё не выполнил задачу, добавлю pr-welcome для ясности

2 лайка

Я тоже об этом задумывался и создал PR:

3 лайка

Чтобы замкнуть круг, @mqmenchaca и я работали над этим одновременно, не зная о работе друг друга. И мы создали PR всего с разницей в несколько часов! Я уже объединил свой PR в основную ветку, как только увидел PR Макса, поэтому, к сожалению, мы не можем включить его работу в основную ветку. Тем не менее, @mqmenchaca, мы очень ценим ваш вклад!

Коммит, добавляющий эту функцию, находится здесь: DEV: Add a rake task to export/import translation overrides (#18487) · discourse/discourse@4d80110 · GitHub

Чтобы экспортировать, выполните bin/rake export:translation_overrides (будет создан JSON-файл с переопределениями).

Чтобы импортировать на отдельный экземпляр, скопируйте туда экспортированный JSON-файл и выполните bin/rake import:file["filename"].

4 лайка

Привет. Пожалуйста, опишите шаги для его запуска.

./launcher enter app
bin/rake export:translation_overrides

Возвращает:

rake aborted!
ActiveRecord::NoDatabaseError: Не удалось найти вашу базу данных: discourse. Она должна быть указана в файле конфигурации базы данных, расположенном по адресу config/database.yml

Похоже, проблема в вашей среде. Когда я захожу в контейнер на моем собственном саморазмещенном экземпляре, я могу без проблем запускать команды rake.

1 лайк

Я использую Discourse за Nginx, это может быть связано? Можно ли использовать эту команду с базой данных, находящейся вне контейнера?

Хорошо, я провёл несколько тестов, и файл экспортирован.

Если я изменю этот файл, заменив es_XX на es (и ничего больше, соблюдая формат и кодировку файла), а затем импортирую ранее экспортированный файл, всё должно сработать?

Я хочу перенести предыдущие переопределения в язык по умолчанию es на нашем экземпляре :slight_smile: