Maintenance: Add link to translations.zammad.org and change the notification threshold for the translation support modal.

This commit is contained in:
Martin Gruner 2022-02-07 19:55:55 +01:00
parent 02d4ead4e3
commit bb52f04db9
5 changed files with 58 additions and 5 deletions

View file

@ -19,7 +19,7 @@ class TranslationSupport extends App.Controller
# verify current state of translation # verify current state of translation
meta = App.i18n.meta() meta = App.i18n.meta()
percent = parseInt( meta.translated / (meta.total / 100) ) percent = parseInt( meta.translated / (meta.total / 100) )
return if percent > 95 return if percent > 90
# show message # show message
new Modal(percent: percent) new Modal(percent: percent)

View file

@ -9,4 +9,5 @@
<div class="form-item js-language flex"></div> <div class="form-item js-language flex"></div>
<button type="submit" class="btn btn--primary"><%- @T('Submit') %></button> <button type="submit" class="btn btn--primary"><%- @T('Submit') %></button>
</form> </form>
<p><%- @T('Did you know? You can help translating %s at:', 'Zammad') %> <a href="https://translations.zammad.org" target="_blank">translations.zammad.org</a></p>
</div> </div>

View file

@ -1,4 +1,6 @@
# Zammad Translations - `i18n/*.po` # Zammad Localization
## Zammad GUI Translations - `i18n/*.po`
Zammad translations are managed exclusively via [translations.zammad.org](https://translations.zammad.org/). Zammad translations are managed exclusively via [translations.zammad.org](https://translations.zammad.org/).
@ -6,10 +8,56 @@ You are welcome to contribute. Please get a free account there if you want to do
Any pull requests modifying translation files directly will be rejected. Any pull requests modifying translation files directly will be rejected.
# Zammad Text Modules - `i18n/text_modules/*.yml` ## Zammad Text Modules - `i18n/text_modules/*.yml`
Zammad text modules are automatically imported when the first admin user is created, according to this user's language. Zammad text modules are automatically imported when the first admin user is created, according to this user's language.
This is just meant to provide for a smooth start with some existing helpful text modules. They can be modified later on; This is just meant to provide for a smooth start with some existing helpful text modules. They can be modified later on;
no subsequent import from the example files will be performed. no subsequent import from the example files will be performed.
Feel free to send pull requests to add more helpful examples to existing files or even files for new languages. Feel free to send pull requests to add more helpful examples to existing files or even files for new languages.
## Zammad Chat - `public/assets/chat`
The Zammad chat currently has its own build pipeline and also a custom translation handling.
Messages and translations are directly baked into [chat.coffee](../public/assets/chat/chat.coffee) and have to be maintained
there.
## Zammad Notification Templates - `app/views/mailer/*`
Zammad contains a number of different notification templates which are currently stored directly in language-specific `ERB`
template files. Modifications of existing or addition of new translations must be made in these files directly.
# Developer Workflows
## Weblate Process Overview
- The codebase has a translation catalog file [i18n/zammad.pot](zammad.pot), which must be kept up-to-date.
- Weblate automatically picks this file up from git and updates its database. Now translators see the new/changed strings and can work on them.
- From time to time, Weblate pushes the new/updated translations via merge request to git.
- After the merge, the translation files in `i18n/zammad.*.po` are updated.
- Zammad will pick them up as soon as `Translation.sync` gets called, which happens for example during a package update.
## Updating the Source String Catalog
If changes to translatable strings are made during the development process, developers can just run the following to
re-extract the strings to the catalog file:
`rails generate translation_catalog`
This will update the `i18n/zammad.pot` file in Zammad. To do this for an existing addon module, call
`rails generate translation_catalog --addon-path /path/to/addon`
## Testing Translation Changes from Weblate
To test any changes made to translations in Weblate that are not yet published to Zammad,
you can use this workflow:
- Download the current state of the language from Weblate as po file.
- Save it locally in the Zammad folder as `i18n/zammad.pt-br.po` (for `pt-br` in this case, use corresponding file names for other languages).
- Run `rails r Translation.sync` to import the latest state to the database.
- Now the changes should appear in the GUI.
## Known Issues With Localization
- There is currently no support for plural forms.

View file

@ -3188,6 +3188,10 @@ msgstr ""
msgid "Devices" msgid "Devices"
msgstr "" msgstr ""
#: app/assets/javascripts/app/views/profile/language.jst.eco
msgid "Did you know? You can help translating %s at:"
msgstr ""
#: db/seeds/settings.rb #: db/seeds/settings.rb
msgid "Digit required" msgid "Digit required"
msgstr "" msgstr ""

View file

@ -121,8 +121,8 @@ RSpec.describe 'System > Translations', type: :system do
it 'asks to improve translations with solid coverage' do it 'asks to improve translations with solid coverage' do
visit '/#system/translation' visit '/#system/translation'
page.evaluate_script('App.i18n.meta = function(){ return { total: 100, translated: 90 } }') page.evaluate_script('App.i18n.meta = function(){ return { total: 100, translated: 89 } }')
expect(page).to have_text('Up to 90% of this language is already translated. Please help to make Zammad even better and complete the translation.') expect(page).to have_text('Up to 89% of this language is already translated. Please help to make Zammad even better and complete the translation.')
end end
end end