From ace46235c63aa4c0004e86123d737990431c77bb Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Fri, 8 Nov 2019 23:57:21 +0100 Subject: Added translators screen --- app/src/main/assets/translators.txt | 55 +++++++++++++++++++ .../antennapod/adapter/SimpleIconListAdapter.java | 2 - .../fragment/preferences/AboutFragment.java | 7 ++- .../preferences/AboutTranslatorsFragment.java | 64 ++++++++++++++++++++++ createTranslatorsList.py | 36 ++++++++++++ 5 files changed, 161 insertions(+), 3 deletions(-) create mode 100644 app/src/main/assets/translators.txt create mode 100644 app/src/main/java/de/danoeh/antennapod/fragment/preferences/AboutTranslatorsFragment.java create mode 100644 createTranslatorsList.py diff --git a/app/src/main/assets/translators.txt b/app/src/main/assets/translators.txt new file mode 100644 index 000000000..ed03400e8 --- /dev/null +++ b/app/src/main/assets/translators.txt @@ -0,0 +1,55 @@ +Arabic;abdelrahman.fahem93, abdunnasir, abuzar3.khalid, desha, iDemo, mohamedagamy, msahouli, nabilMaghura +Asturian (ast_ES);enolp +Azerbaijani;danieloeh, kotfenix +Basque;gaztainalde, pospolos, zakurranputza +Bulgarian;solusitor +Catalan;dvd1985, exort12, javiercoll, lambdani, marcmetallextrem, xc70 +Catalan (ca_ES);00c0c0, javiercoll +Chinese;dillonbecker, RainSlide, xukeek, yangyang +Chinese (zh_CN);bebeauties38, cyril3, domingos86, dudeG, ErlichLiu, Felix2yu, gaohongyuan, Guaidaodl, Huck0, iconteral, JayYoung, jhxie, kavdx, kyleehee, linxiangyu, molisiye, owen8877, RainSlide, Sak94664, spice2wolf, stellaxuyi, tupunco, wi24rd, wongsyrone, xukeek, yangyang, yiqiok, YogaGuru +Chinese (zh_TW);gugod, nigelinux, pggdt, Solomon, ymhuang0808 +Czech (cs_CZ);anotheranonymoususer, elich, Hanzmeister, mcepl, petnek, svetlemodry +Danish;CasperHN, jhertel +Dutch;e2jk, glotzbach, rwv, Vistaus +English;mfietz, sterylmreep +Estonian;Eraser +Finnish;danieloeh, elguitar, Sahtor +French;cactux, ChaoticMind, clombion, e2jk, edewaele, lacouture, LouFex, Matth78, mfietz, Poussinou, repat, Sioul, sterylmreep, TacoTheDank, Tilwa, vcariven, whenrow +Galician;antiparvos, pikamoku, Raichely +German;112358, altegedanken, barilla, benedikt.g, bitsunited, Buggi, ceving, ChaoticMind, Chaquotay, dab0015, dadosch, DerSilly, die_otto, DJaeger, elkangaroo, enz, fidel, finsterwalder, Foso, GNi33, hightower5, HolgerJeromin, kalei, lohmann, LostInWeb, mfietz, moasda, nilso, repat, SAPlayer, schafia, Schroedingberg, sevenmaster, sucaml, Teaspoon, theonlytruth, weltenwort, Wyrrrd, ypid +Modern Greek (1453-);antonist, danieloeh, hua2016s, jack.ath92, MSavoritias, pavlosv +Hebrew (he_IL);amir.dafnyman, E1i9, mongoose4004, pinkasey, rellieberman, Yaron, הלוי11 +Hindi (hi_IN);ankitiitb1069, Isaasu, nmabhinandan, purple.coder, siddhusengar +Hungarian;glatz.balazs, hurrikan, lna91, marthynw, meskobalazs, naren93, tszauer, ttyborg42 +Icelandic;marthjod +Indonesian;jff, levirs565, luke137, rezafaiza, silvanael16 +Italian;aalex70, allin, apanontin, Bonnee, giuseppep, Guybrush88, marco_pag, neonsoftware, sevenmaster, theloca95 +Italian (it_IT);aalex70, allin, apanontin, Bonnee, buongiorgio, giuseppep, Guybrush88, ilmanzo, m.chinni, neonsoftware, niccord, nixxo, sevenmaster, theloca95 +Japanese;Naofumi, RACER1, sh3llc4t, TranslatorG +Kannada (kn_IN);chiraag.nataraj, thejeshgn +Korean;changwoo, libliboom, seungrye, skcha +Korean (ko_KR);changwoo, seungrye +Lithuanian;naglis +Macedonian;krisfremen +Malayalam;joice, rashivkp, rubenroy +Norwegian;timbast +Norwegian Bokmål;corkie, danieloeh, heraldo +Norwegian Bokmål (nb_NO);corkie, heraldo, kongk, timbast +Persian;ahangarha, F7D, sinamoghaddas +Polish;Iwangelion, maniexx, mateossh, mfloryan +Polish (pl_PL);d6210809, hiro2020, Iwangelion, kRkk, lomapur, mandlus, maniexx, Mephistofeles, shark103, tyle +Portuguese;andersonvom, domingos86, emansije, smarquespt +Portuguese (pt_BR);alexupits, alysonborges, andersonvom, arua, caioau, carlo_valente, castrors, deandreamatias, edman, Firmino, jackmiras, Junin, lipefire, lluccia, lucasmotacr, mbaltar, rogervezaro, RubeensVinicius, SamWilliam, silvanael16 +Romanian (ro_RO);corneliu.e, fuzzmz, ralienpp +Russian (ru_RU);astra1, btimofeev, Duke_Raven, gammja, GaynullinDima, MegMasters98, mercutiy, null, overmind88, PtilopsisLeucotis, s.chebotar, shams4real, skvheadless, un_logic, Vladryyu, whereisthetea, zhenya97 +Slovenian (sl_SI);panter23 +Spanish;AleksSyntek, andersonvom, Atreyu94, coperfix, deandreamatias, domingos86, dvd1985, Fitoschido, frandavid100, hard_ware, javiercoll, Juanmuto, lambdani, LatinSuD, leogrignafini, palopezv, TacoTheDank, tres.14159, wakutiteo +Spanish (es_ES);andersonvom, dvd1985, e2jk, frandavid100, hard_ware, palopezv, Raichely, TacoTheDank +Swahili (macrolanguage);kmtra +Swahili (macrolanguage) (sw_KE);BonfaceKilz +Swedish (sv_SE);albin.brantin, Bio, bpnilsson, ChaoticMind, jony08, nilso, SharpMelon, TiloWiklund, TwoD +Telugu;Isaasu, veeven +Turkish;basarancaner, brsata, Erdy, golcuk, overbite, Slsdem +Ukrainian (uk_UA);older, paul_sm, sergiyr, zhenya97 +Vietnamese;abnvolk, nguyenvui, ppanhh, vietnamesel10n +Vietnamese (vi_VN);bizover diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/SimpleIconListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/SimpleIconListAdapter.java index 1b84aaf0f..2a3c3b850 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/SimpleIconListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/SimpleIconListAdapter.java @@ -38,8 +38,6 @@ public class SimpleIconListAdapter extends ArrayAdapter { getFragmentManager().beginTransaction().replace(R.id.content, new AboutDevelopersFragment()) - .addToBackStack(getString(R.string.about_pref)).commit(); + .addToBackStack(getString(R.string.developers)).commit(); + return true; + }); + findPreference("about_translators").setOnPreferenceClickListener((preference) -> { + getFragmentManager().beginTransaction().replace(R.id.content, new AboutTranslatorsFragment()) + .addToBackStack(getString(R.string.translators)).commit(); return true; }); } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/AboutTranslatorsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/AboutTranslatorsFragment.java new file mode 100644 index 000000000..72a7abebc --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/AboutTranslatorsFragment.java @@ -0,0 +1,64 @@ +package de.danoeh.antennapod.fragment.preferences; + +import android.os.Bundle; +import android.view.View; +import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.ListFragment; +import de.danoeh.antennapod.R; +import de.danoeh.antennapod.activity.PreferenceActivity; +import de.danoeh.antennapod.adapter.SimpleIconListAdapter; +import io.reactivex.Single; +import io.reactivex.SingleOnSubscribe; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.ArrayList; + +public class AboutTranslatorsFragment extends ListFragment { + private Disposable translatorsLoader; + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + getListView().setDivider(null); + getListView().setSelector(android.R.color.transparent); + + translatorsLoader = Single.create((SingleOnSubscribe>) emitter -> { + ArrayList translators = new ArrayList<>(); + BufferedReader reader = new BufferedReader(new InputStreamReader( + getContext().getAssets().open("translators.txt"))); + String line; + while ((line = reader.readLine()) != null) { + String[] info = line.split(";"); + translators.add(new SimpleIconListAdapter.ListItem(info[0], info[1], null)); + } + emitter.onSuccess(translators); + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + translators -> setListAdapter(new SimpleIconListAdapter(getContext(), translators)), + error -> Toast.makeText(getContext(), "Error while loading translators", Toast.LENGTH_LONG).show() + ); + + } + + @Override + public void onStop() { + super.onStop(); + if (translatorsLoader != null) { + translatorsLoader.dispose(); + } + } + + @Override + public void onStart() { + super.onStart(); + ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.translators); + } +} diff --git a/createTranslatorsList.py b/createTranslatorsList.py new file mode 100644 index 000000000..24381ab57 --- /dev/null +++ b/createTranslatorsList.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 +import pycountry +import requests +import configparser +import os + +config = configparser.ConfigParser() +config.read(os.path.expanduser("~") + '/.transifexrc') +if 'https://www.transifex.com' in config: + TRANSIFEX_USER = config['https://www.transifex.com']['username'] + TRANSIFEX_PW = config['https://www.transifex.com']['password'] +else: + TRANSIFEX_USER = "" + TRANSIFEX_PW = "" + +csvFile = open("app/src/main/assets/translators.txt", "w") +r = requests.get('http://www.transifex.com/api/2/project/antennapod/languages/', + auth=(TRANSIFEX_USER, TRANSIFEX_PW)) +for lang in r.json(): + lang_contributers = lang['coordinators'] + lang['reviewers'] + lang['translators'] + lang_contributers = sorted(lang_contributers, key=str.lower) + lang_code = lang['language_code'] + try: + lang_name = pycountry.languages.lookup(lang_code).name + except: + try: + lang_name = pycountry.languages.lookup( + lang_code.split('_')[0]).name + ' (' + lang_code + ')' + except: + lang_name = lang['language_code'] + print('\033[91mLanguage code not found:' + lang_code + '\033[0m') + + line = lang_name + ';' + ', '.join(lang_contributers).replace(';', '') + csvFile.write(line + '\n') + print(line) +csvFile.close() -- cgit v1.2.3