I18nTeam/Migration-to-weblate
< I18nTeam
Revision as of 09:15, 28 October 2025 by Damekyung98 (talk | contribs) (→Translation Migration Status)
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 Migration Status
For more details about accuracy, please refer to the Launchpad bugs.