mirror of
https://github.com/zulip/zulip.git
synced 2025-11-01 04:23:46 +00:00
i18n: Extract language options from tracked locales.
Now we use 'git ls-files' to get the list of locales that we actually track. Previously we were using os.listdir to get the contents of the static/locale directory. This could also return locales which were present in the directory but are not supported by us, e.g. zh_CN.
This commit is contained in:
@@ -3,6 +3,7 @@ import os
|
||||
import re
|
||||
import ujson
|
||||
|
||||
from subprocess import check_output, CalledProcessError
|
||||
from typing import Any, Dict, List, Text
|
||||
|
||||
from django.core.management.commands import compilemessages
|
||||
@@ -72,6 +73,19 @@ class Command(compilemessages.Command):
|
||||
else:
|
||||
raise Exception("Unknown language %s" % (locale,))
|
||||
|
||||
def get_locales(self):
|
||||
# type: () -> List[Text]
|
||||
tracked_files = check_output(['git', 'ls-files', 'static/locale'])
|
||||
tracked_files = tracked_files.decode().split()
|
||||
regex = re.compile('static/locale/(\w+)/LC_MESSAGES/django.po')
|
||||
locales = ['en']
|
||||
for tracked_file in tracked_files:
|
||||
matched = regex.search(tracked_file)
|
||||
if matched:
|
||||
locales.append(matched.group(1))
|
||||
|
||||
return locales
|
||||
|
||||
def extract_language_options(self):
|
||||
# type: () -> None
|
||||
locale_path = u"{}/locale".format(settings.STATIC_ROOT)
|
||||
@@ -79,6 +93,11 @@ class Command(compilemessages.Command):
|
||||
|
||||
data = {'languages': []} # type: Dict[str, List[Dict[str, Any]]]
|
||||
|
||||
try:
|
||||
locales = self.get_locales()
|
||||
except CalledProcessError:
|
||||
# In case we are not under a Git repo, fallback to getting the
|
||||
# locales using listdir().
|
||||
locales = os.listdir(locale_path)
|
||||
locales.append(u'en')
|
||||
locales = list(set(locales))
|
||||
|
||||
Reference in New Issue
Block a user