Difference between revisions of "I18nTeam/Migration-to-weblate"
< I18nTeam
Damekyung98 (talk | contribs) (→Translation Accuracy Metrics) |
Damekyung98 (talk | contribs) (→Translation Accuracy Metrics) |
||
| Line 208: | Line 208: | ||
* Source strings: The total number of original English messages that need to be translated. | * Source strings: The total number of original English messages that need to be translated. | ||
* Translated strings: The number of messages that have been successfully translated into the target language. | * Translated strings: The number of messages that have been successfully translated into the target language. | ||
| + | |||
| + | We calculate accuracy based on the ratio of accurate strings across all versions, considering both source strings and translated strings. | ||
| + | |||
| + | What gets checked: | ||
| + | * Is the source string data accurate? (Pass/Fail) | ||
| + | * Is the translated string data accurate? (Pass/Fail) | ||
| + | |||
| + | Accuracy Formula: | ||
| + | * (Number of passed accuracy checks / Total accuracy checks) × 100 | ||
==== Translation Migration Status ==== | ==== Translation Migration Status ==== | ||
Revision as of 09:30, 28 October 2025
Contents
Migration to weblate
Who's joining the migration project
- Ian Y. Choi (Manager)
- Seongsoo Cho
- Kuemjong Jeong
- Nayeon Kim
- Sion Shin
- Gwangil Kim
- DaGyeong Kim
Planning a weblate migration schedule
You can find more details about each task below.
- Define the scope of target test projects
- All vs. a few projects (e.g., openstack-manuals, nova, i18n, horizon)
- Make Translation Infrastructure Scripts compatible with Weblate
- Weblate project creation with settings if the target project is not existing on the platform
- (If it is not supported, Weblate projects will be created manually)
- Testing needs to be performed locally, since the scripts are executed on 06:00 UTC daily.
- Weblate project creation with settings if the target project is not existing on the platform
- ZuuL Integration Test
- Determine when to test (e.g., Test methodology without waiting at 06:00 UTC?)
- Integration test with all translation target projects
- Making tools for extracting statistical data from Weblate
Action Item
Define the scope of target test projects
- Configure Weblate with the information set in Zanata.
- User information is not migrated.
Make Translation Infrastructure Scripts compatible with Weblate
- WIP patch to support Weblate for https://opendev.org/openstack/openstack-zuul-jobs/src/branch/master/roles/prepare-zanata-client/files/
Zuul Integration Test
Create and test a ZuuL Job that performs the following tasks
- Uploading translation files to Weblate when new changes are made to your project
- Upload translations from Weblate to your project every day at 06 UTC
Making tools for extracting statistical data from Weblate
- weblate_userinfo.py : Done ( https://review.opendev.org/c/openstack/i18n/+/893361 )
- Generates a csv file which contains the list of translators for a specified target role with name and e-mail address. Requires privileges to access Weblate accounts API.
- weblate_users.py : Done ( https://review.opendev.org/c/openstack/i18n/+/895763 )
- Generates a list of Weblate language contributors.
- weblate_utils.py : Done ( https://review.opendev.org/c/openstack/i18n/+/896308 )
- Provides basic classes used by the other scripts
- IniConfig class to get the key and url for the weblate server
- WeblateRestService class that communicates with the Weblate REST API
- Provides basic classes used by the other scripts
- weblate_stats.py : Working ( https://review.opendev.org/c/openstack/i18n/+/896306 )
- (describe the role of the tool )
- weblate_records.py : Working ( https://review.opendev.org/c/openstack/i18n/+/896306 )
- (describe the role of the tool )
List of projects and status
Migration Scope
| Item | Count |
|---|---|
| Total projects | 127 |
| Total versions | 12 |
| Total Languages | 54 |
Version
We determined the migration version based on the branches that currently exist in the main services.
Note: Some projects may not have this branch.
Versions to migrate:
- master
- stable/2025.2
- stable/2025.1
- stable/2024.2
- stable/2024.1
- unmaintained/2023.1
- unmaintained/zed
- unmaintained/wallaby
- unmaintained/victoria
- unmaintained/yoga
- unmaintained/xena
Languages plurals
| Language Code | Language Name | Plurals |
|---|---|---|
| ar | Arabic | nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5; |
| as | Assamese | nplurals=2; plural=n > 1; |
| bg_BG | Bulgarian (Bulgaria) | nplurals=2; plural=n != 1; |
| bn_IN | Bengali (India) | nplurals=2; plural=n > 1; |
| brx | Bodo | nplurals=2; plural=n != 1; |
| ca | Catalan | nplurals=2; plural=n != 1; |
| cs | Czech | nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; |
| de | German | nplurals=2; plural=n != 1; |
| el | Greek | nplurals=2; plural=n != 1; |
| en_GB | English (United Kingdom) | nplurals=2; plural=n != 1; |
| en_US | English (United States) | nplurals=2; plural=n != 1; |
| en_AU | English (Australia) | nplurals=2; plural=n != 1; |
| eo | Esperanto | nplurals=2; plural=n != 1; |
| es | Spanish | nplurals=2; plural=n != 1; |
| es_MX | Spanish (Mexico) | nplurals=2; plural=n != 1; |
| fa | Persian | nplurals=2; plural=n > 1; |
| fi_FI | Finnish (Finland) | nplurals=2; plural=n != 1; |
| fil | Filipino | nplurals=2; plural=n != 1 && n != 2 && n != 3 && (n % 10 == 4 || n % 10 == 6 || n % 10 == 9); |
| fr | French | nplurals=2; plural=n > 1; |
| gu | Gujarati | nplurals=2; plural=n > 1; |
| he | Hebrew | nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && n % 10 == 0) ? 2 : 3)); |
| hi | Hindi | nplurals=2; plural=n > 1; |
| hu | Hungarian | nplurals=2; plural=n != 1; |
| id | Indonesian | nplurals=1; plural=0; |
| it | Italian | nplurals=2; plural=n != 1; |
| ja | Japanese | nplurals=1; plural=0; |
| ka_GE | Georgian (Georgia) | nplurals=2; plural=n != 1; |
| kn | Kannada | nplurals=2; plural=n > 1; |
| ko_KR | Korean (Korea) | nplurals=1; plural=0; |
| kok | Konkani | nplurals=2; plural=n != 1; |
| ks | Kashmiri | nplurals=2; plural=n != 1; |
| lo | Lao | nplurals=1; plural=0; |
| mai | Maithili | nplurals=2; plural=n != 1; |
| mni | Manipuri | nplurals=2; plural=n != 1; |
| mr | Marathi | nplurals=2; plural=n != 1; |
| ne | Nepali | nplurals=2; plural=n != 1; |
| nl_NL | Dutch (Netherlands) | nplurals=2; plural=n != 1; |
| pa_IN | Punjabi (India) | nplurals=2; plural=n > 1; |
| pl_PL | Polish (Poland) | nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; |
| pt | Portuguese | nplurals=2; plural=n > 1; |
| pt_BR | Portuguese (Brazil) | nplurals=2; plural=n > 1; |
| ro | Romanian | nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2; |
| ru | Russian | nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; |
| sl_SI | Slovenian (Slovenia) | nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3; |
| sq | Albanian | nplurals=2; plural=n != 1; |
| sr | Serbian | nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; |
| ta | Tamil | nplurals=2; plural=n != 1; |
| te_IN | Telugu (India) | nplurals=2; plural=n != 1; |
| th | Thai | nplurals=1; plural=0; |
| tr_TR | Turkish (Turkey) | nplurals=2; plural=n != 1; |
| ur | Urdu | nplurals=2; plural=n != 1; |
| vi_VN | Vietnamese (Vietnam) | nplurals=1; plural=0; |
| zh_CN | Chinese (China) | nplurals=1; plural=0; |
| zh_TW | Chinese (Taiwan) | nplurals=1; plural=0; |
Translation Accuracy Metrics
Due to inconsistent word count calculations across different translation platforms, we measure accuracy by the number of strings rather than word count.
We evaluate translation accuracy using the following metrics:
- Source strings: The total number of original English messages that need to be translated.
- Translated strings: The number of messages that have been successfully translated into the target language.
We calculate accuracy based on the ratio of accurate strings across all versions, considering both source strings and translated strings.
What gets checked:
- Is the source string data accurate? (Pass/Fail)
- Is the translated string data accurate? (Pass/Fail)
Accuracy Formula:
- (Number of passed accuracy checks / Total accuracy checks) × 100
Translation Migration Status
For more details about accuracy, please refer to the Launchpad bugs.