Rename zh-cn and zh-tw translations to zh-hans and zh-hant
See http://lists.openstack.org/pipermail/openstack-discuss/2021-February/020169.html horizon/management/commands/pull_catalog.py is updated accordingly. It turns out it does not work with python3, so it is fixed too. Depends-On: https://review.opendev.org/c/openstack/openstack-zuul-jobs/+/773689 Change-Id: I6575f1f032a06365953dbfe314abfbf9a31817cd
This commit is contained in:
parent
944902c5c2
commit
391a660460
@ -63,6 +63,6 @@ LOCALE_MAPPING = {
|
|||||||
'tr': 'tr',
|
'tr': 'tr',
|
||||||
'ua': 'ua',
|
'ua': 'ua',
|
||||||
'vi': 'vi',
|
'vi': 'vi',
|
||||||
'zh-cn': 'zh-CN',
|
'zh-hans': 'zh-CN',
|
||||||
'zh-tw': 'zh-TW',
|
'zh-hant': 'zh-TW',
|
||||||
}
|
}
|
||||||
|
@ -28,15 +28,28 @@ POFILE = "{module}/locale/{locale}/LC_MESSAGES/{domain}.po"
|
|||||||
POFILE_URL = ("https://translate.openstack.org/rest/file/translation/{project}"
|
POFILE_URL = ("https://translate.openstack.org/rest/file/translation/{project}"
|
||||||
"/{branch}/{language}/po?docId={module}%2Flocale%2F{domain}")
|
"/{branch}/{language}/po?docId={module}%2Flocale%2F{domain}")
|
||||||
|
|
||||||
|
LOCALE_MAP = {
|
||||||
|
'zh-CN': 'zh-Hans',
|
||||||
|
'zh-TW': 'zh-Hant',
|
||||||
|
}
|
||||||
|
REV_LOCALE_MAP = dict((v, k) for k, v in LOCALE_MAP.items())
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
help = ("Pull a translation catalog from Zanata "
|
help = ("Pull a translation catalog from Zanata "
|
||||||
"(https://translate.openstack.org) for all languages or a "
|
"(https://translate.openstack.org) for all languages or a "
|
||||||
"specified language")
|
"specified language")
|
||||||
|
|
||||||
|
def _to_horizon_lang_code(self, lang_code):
|
||||||
|
return LOCALE_MAP.get(lang_code, lang_code)
|
||||||
|
|
||||||
|
def _to_zanata_lang_code(self, lang_code):
|
||||||
|
return REV_LOCALE_MAP.get(lang_code, lang_code)
|
||||||
|
|
||||||
def _get_language_codes(self):
|
def _get_language_codes(self):
|
||||||
zanata_locales = requests.get(ZANATA_LOCALES_URL).json()
|
zanata_locales = requests.get(ZANATA_LOCALES_URL).json()
|
||||||
return [x['localeId'] for x in zanata_locales]
|
return [self._to_horizon_lang_code(x['localeId'])
|
||||||
|
for x in zanata_locales]
|
||||||
|
|
||||||
def add_arguments(self, parser):
|
def add_arguments(self, parser):
|
||||||
language_codes = self._get_language_codes()
|
language_codes = self._get_language_codes()
|
||||||
@ -78,7 +91,7 @@ class Command(BaseCommand):
|
|||||||
os.makedirs(pofile_dir)
|
os.makedirs(pofile_dir)
|
||||||
|
|
||||||
new_po = requests.get((POFILE_URL).format(
|
new_po = requests.get((POFILE_URL).format(
|
||||||
language=language,
|
language=self._to_zanata_lang_code(language),
|
||||||
project=options['project'],
|
project=options['project'],
|
||||||
branch=options['branch'],
|
branch=options['branch'],
|
||||||
module=module,
|
module=module,
|
||||||
@ -88,4 +101,4 @@ class Command(BaseCommand):
|
|||||||
new_po.encoding = 'utf-8'
|
new_po.encoding = 'utf-8'
|
||||||
|
|
||||||
with open(pofile, 'w+') as f:
|
with open(pofile, 'w+') as f:
|
||||||
f.write(new_po.text.encode('utf-8'))
|
f.write(new_po.text)
|
||||||
|
@ -198,6 +198,22 @@ def check_required_settings(dummy=None):
|
|||||||
return upgradecheck.Result(upgradecheck.Code.SUCCESS)
|
return upgradecheck.Result(upgradecheck.Code.SUCCESS)
|
||||||
|
|
||||||
|
|
||||||
|
@register_check(_("Chinese locale rename"))
|
||||||
|
def check_chinese_locale_rename(dummy):
|
||||||
|
# LANGUAGES setting is defined in Django, so we can assume
|
||||||
|
# it always exists.
|
||||||
|
langs = [code for code, name in settings.LANGUAGES]
|
||||||
|
if 'zh-cn' in langs or 'zh-tw' in langs:
|
||||||
|
return upgradecheck.Result(
|
||||||
|
upgradecheck.Code.FAILURE,
|
||||||
|
_("Chinese locale 'zh-cn' and 'zh-tw' must be renamed to "
|
||||||
|
"'zh-hans' and 'zh-hant' respectively in 'LANGUAGES' setting. "
|
||||||
|
"If you define them in local_settings.py or local_settings.d "
|
||||||
|
"explicitly, ensure to rename them to the new locales.")
|
||||||
|
)
|
||||||
|
return upgradecheck.Result(upgradecheck.Code.SUCCESS)
|
||||||
|
|
||||||
|
|
||||||
class UpgradeCheckTable(upgradecheck.UpgradeCommands):
|
class UpgradeCheckTable(upgradecheck.UpgradeCommands):
|
||||||
_upgrade_checks = CHECKS
|
_upgrade_checks = CHECKS
|
||||||
|
|
||||||
|
@ -199,8 +199,8 @@ LANGUAGES = (
|
|||||||
('pt-br', 'Portuguese (Brazil)'),
|
('pt-br', 'Portuguese (Brazil)'),
|
||||||
('ru', 'Russian'),
|
('ru', 'Russian'),
|
||||||
('tr', 'Turkish'),
|
('tr', 'Turkish'),
|
||||||
('zh-cn', 'Simplified Chinese'),
|
('zh-hans', 'Simplified Chinese'),
|
||||||
('zh-tw', 'Chinese (Taiwan)'),
|
('zh-hant', 'Traditional Chinese'),
|
||||||
)
|
)
|
||||||
LANGUAGE_CODE = 'en'
|
LANGUAGE_CODE = 'en'
|
||||||
LANGUAGE_COOKIE_NAME = 'horizon_language'
|
LANGUAGE_COOKIE_NAME = 'horizon_language'
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Chinese locales ``zh-cn`` and ``zh-tw`` are now changed to ``zh-hans`` and
|
||||||
|
``zh-hant`` respectively. This follows the change in Django which is a
|
||||||
|
framework horizon depends on. The new locales decouples what are spoken
|
||||||
|
from specific locations as they are also used outside of China/Taiwan.
|
||||||
|
upgrade:
|
||||||
|
- |
|
||||||
|
Chinese locales ``zh-cn`` and ``zh-tw`` have been changed to ``zh-hans``
|
||||||
|
and ``zh-hant`` respectively. If you configure ``LANGUAGES`` in your
|
||||||
|
setting explicitly, ensure to use the new Chinese locales if needed.
|
Loading…
Reference in New Issue
Block a user