Added translators screen
This commit is contained in:
parent
dfe463393b
commit
ace46235c6
55
app/src/main/assets/translators.txt
Normal file
55
app/src/main/assets/translators.txt
Normal file
@ -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
|
@ -38,8 +38,6 @@ public class SimpleIconListAdapter extends ArrayAdapter<SimpleIconListAdapter.Li
|
|||||||
Glide.with(context)
|
Glide.with(context)
|
||||||
.load(item.imageUrl)
|
.load(item.imageUrl)
|
||||||
.apply(new RequestOptions()
|
.apply(new RequestOptions()
|
||||||
.placeholder(R.color.light_gray)
|
|
||||||
.error(R.color.light_gray)
|
|
||||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||||
.fitCenter()
|
.fitCenter()
|
||||||
.dontAnimate())
|
.dontAnimate())
|
||||||
|
@ -24,7 +24,12 @@ public class AboutFragment extends PreferenceFragmentCompat {
|
|||||||
});
|
});
|
||||||
findPreference("about_developers").setOnPreferenceClickListener((preference) -> {
|
findPreference("about_developers").setOnPreferenceClickListener((preference) -> {
|
||||||
getFragmentManager().beginTransaction().replace(R.id.content, new AboutDevelopersFragment())
|
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;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -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<ArrayList<SimpleIconListAdapter.ListItem>>) emitter -> {
|
||||||
|
ArrayList<SimpleIconListAdapter.ListItem> 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);
|
||||||
|
}
|
||||||
|
}
|
36
createTranslatorsList.py
Normal file
36
createTranslatorsList.py
Normal file
@ -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()
|
Loading…
x
Reference in New Issue
Block a user