diff --git a/.github/locales.py b/.github/locales.py new file mode 100644 index 00000000..e95ec902 --- /dev/null +++ b/.github/locales.py @@ -0,0 +1,47 @@ +import re +import glob +import requests + + +SETTINGS_PATH = "app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt" +START_MARKER = "/* begin language list */" +END_MARKER = "/* end language list */" +XML_NAME = "app/src/main/res/values-" +ISO_MAP_URL = "https://gist.githubusercontent.com/Josantonius/b455e315bc7f790d14b136d61d9ae469/raw" +INDENT = " "*4 + +iso_map = requests.get(ISO_MAP_URL, timeout=300).json() + +# Load settings file +src = open(SETTINGS_PATH, "r", encoding='utf-8').read() +before_src, rest = src.split(START_MARKER) +rest, after_src = rest.split(END_MARKER) + +# Load already added langs +languages = {} +for lang in re.finditer(r'Triple\("(.*)", "(.*)", "(.*)"\)', rest): + flag, name, iso = lang.groups() + languages[iso] = (flag, name) + +# Add not yet added langs +for folder in glob.glob(f"{XML_NAME}*"): + iso = folder[len(XML_NAME):] + if iso not in languages.keys(): + languages[iso] = ("", iso_map.get(iso.lower(),iso)) + +# Create triples +triples = [] +for iso in sorted(languages.keys()): + flag, name = languages[iso] + triples.append(f'{INDENT}Triple("{flag}", "{name}", "{iso}"),') + +# Update settings file +open(SETTINGS_PATH, "w+",encoding='utf-8').write( + before_src + + START_MARKER + + "\n" + + "\n".join(triples) + + "\n" + + END_MARKER + + after_src +) \ No newline at end of file diff --git a/.github/workflows/update_locales.yml b/.github/workflows/update_locales.yml new file mode 100644 index 00000000..d1bc381f --- /dev/null +++ b/.github/workflows/update_locales.yml @@ -0,0 +1,27 @@ +name: Update locale lists + +on: + push: + paths: + - '**.xml' + +concurrency: + group: "locale-list" + cancel-in-progress: true + +jobs: + create: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Edit files + run: | + python3 .github/locales.py + - name: Commit to the repo + run: | + git config user.name "GitHub Actions" + git config user.email "actions@github.com" + git add . + # "echo" returns true so the build succeeds, even if no changed files + git commit -m 'chore: update list of locales' || echo + git push \ No newline at end of file diff --git a/README.md b/README.md index 0fef9758..3430d626 100644 --- a/README.md +++ b/README.md @@ -20,33 +20,4 @@ ### Supported languages: Translation status - - - + \ No newline at end of file diff --git a/app/src/main/java/com/lagradost/cloudstream3/CommonActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/CommonActivity.kt index b7415811..81a65fa4 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/CommonActivity.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/CommonActivity.kt @@ -116,7 +116,7 @@ object CommonActivity { * when setting the app language. **/ val appLanguageExceptions = hashMapOf( - "zh_TW" to Locale.TRADITIONAL_CHINESE + "zh-TW" to Locale.TRADITIONAL_CHINESE ) fun setLocale(context: Context?, languageCode: String?) { diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt index 68b65820..ede09805 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt @@ -55,6 +55,7 @@ fun getCurrentLocale(context: Context): String { // Emoji Character Encoding Data --> C/C++/Java Src // https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes leave blank for auto val appLanguages = arrayListOf( + /* begin language list */ Triple("", "Spanish", "es"), Triple("", "English", "en"), Triple("", "Viet Nam", "vi"), @@ -76,12 +77,13 @@ val appLanguages = arrayListOf( Triple("", "Romanian", "ro"), Triple("", "Italian", "it"), Triple("", "Chinese Simplified", "zh"), - Triple("\uD83C\uDDF9\uD83C\uDDFC", "Chinese Traditional", "zh_TW"), + Triple("\uD83C\uDDF9\uD83C\uDDFC", "Chinese Traditional", "zh-TW"), Triple("\uD83C\uDDEE\uD83C\uDDE9", "Indonesian", "in"), Triple("", "Czech", "cs"), Triple("", "Croatian", "hr"), Triple("", "Bulgarian", "bg"), Triple("", "Bengali", "bn"), + /* end language list */ ).sortedBy { it.second } //ye, we go alphabetical, so ppl don't put their lang on top class SettingsGeneral : PreferenceFragmentCompat() { diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-TW/strings.xml similarity index 100% rename from app/src/main/res/values-zh-rTW/strings.xml rename to app/src/main/res/values-zh-TW/strings.xml