forked from mirrors/Fedilab
Fix issue #244 - Add support for setting post language
This commit is contained in:
parent
eaac079d89
commit
18c3424ed3
10 changed files with 864 additions and 3 deletions
730
app/src/main/assets/languages/iso_639_1.json
Normal file
730
app/src/main/assets/languages/iso_639_1.json
Normal file
|
@ -0,0 +1,730 @@
|
|||
[
|
||||
{
|
||||
"code": "aa",
|
||||
"language": "Afaraf"
|
||||
},
|
||||
{
|
||||
"code": "ab",
|
||||
"language": "аҧсуа бызшәа"
|
||||
},
|
||||
{
|
||||
"code": "ae",
|
||||
"language": "avesta"
|
||||
},
|
||||
{
|
||||
"code": "af",
|
||||
"language": "Afrikaans"
|
||||
},
|
||||
{
|
||||
"code": "ak",
|
||||
"language": "Akan"
|
||||
},
|
||||
{
|
||||
"code": "am",
|
||||
"language": "አማርኛ"
|
||||
},
|
||||
{
|
||||
"code": "an",
|
||||
"language": "aragonés"
|
||||
},
|
||||
{
|
||||
"code": "ar",
|
||||
"language": "اللغة العربية"
|
||||
},
|
||||
{
|
||||
"code": "as",
|
||||
"language": "অসমীয়া"
|
||||
},
|
||||
{
|
||||
"code": "av",
|
||||
"language": "авар мацӀ"
|
||||
},
|
||||
{
|
||||
"code": "ay",
|
||||
"language": "aymar aru"
|
||||
},
|
||||
{
|
||||
"code": "az",
|
||||
"language": "azərbaycan dili"
|
||||
},
|
||||
{
|
||||
"code": "ba",
|
||||
"language": "башҡорт теле"
|
||||
},
|
||||
{
|
||||
"code": "be",
|
||||
"language": "беларуская мова"
|
||||
},
|
||||
{
|
||||
"code": "bg",
|
||||
"language": "български език"
|
||||
},
|
||||
{
|
||||
"code": "bh",
|
||||
"language": "भोजपुरी"
|
||||
},
|
||||
{
|
||||
"code": "bi",
|
||||
"language": "Bislama"
|
||||
},
|
||||
{
|
||||
"code": "bm",
|
||||
"language": "bamanankan"
|
||||
},
|
||||
{
|
||||
"code": "bn",
|
||||
"language": "বাংলা"
|
||||
},
|
||||
{
|
||||
"code": "bo",
|
||||
"language": "བོད་ཡིག"
|
||||
},
|
||||
{
|
||||
"code": "br",
|
||||
"language": "brezhoneg"
|
||||
},
|
||||
{
|
||||
"code": "bs",
|
||||
"language": "bosanski jezik"
|
||||
},
|
||||
{
|
||||
"code": "ca",
|
||||
"language": "Català"
|
||||
},
|
||||
{
|
||||
"code": "ce",
|
||||
"language": "нохчийн мотт"
|
||||
},
|
||||
{
|
||||
"code": "ch",
|
||||
"language": "Chamoru"
|
||||
},
|
||||
{
|
||||
"code": "co",
|
||||
"language": "corsu"
|
||||
},
|
||||
{
|
||||
"code": "cr",
|
||||
"language": "ᓀᐦᐃᔭᐍᐏᐣ"
|
||||
},
|
||||
{
|
||||
"code": "cs",
|
||||
"language": "čeština"
|
||||
},
|
||||
{
|
||||
"code": "cu",
|
||||
"language": "ѩзыкъ словѣньскъ"
|
||||
},
|
||||
{
|
||||
"code": "cv",
|
||||
"language": "чӑваш чӗлхи"
|
||||
},
|
||||
{
|
||||
"code": "cy",
|
||||
"language": "Cymraeg"
|
||||
},
|
||||
{
|
||||
"code": "da",
|
||||
"language": "dansk"
|
||||
},
|
||||
{
|
||||
"code": "de",
|
||||
"language": "Deutsch"
|
||||
},
|
||||
{
|
||||
"code": "dv",
|
||||
"language": "Dhivehi"
|
||||
},
|
||||
{
|
||||
"code": "dz",
|
||||
"language": "རྫོང་ཁ"
|
||||
},
|
||||
{
|
||||
"code": "ee",
|
||||
"language": "Eʋegbe"
|
||||
},
|
||||
{
|
||||
"code": "el",
|
||||
"language": "Ελληνικά"
|
||||
},
|
||||
{
|
||||
"code": "en",
|
||||
"language": "English"
|
||||
},
|
||||
{
|
||||
"code": "eo",
|
||||
"language": "Esperanto"
|
||||
},
|
||||
{
|
||||
"code": "es",
|
||||
"language": "Español"
|
||||
},
|
||||
{
|
||||
"code": "et",
|
||||
"language": "eesti"
|
||||
},
|
||||
{
|
||||
"code": "eu",
|
||||
"language": "euskara"
|
||||
},
|
||||
{
|
||||
"code": "fa",
|
||||
"language": "فارسی"
|
||||
},
|
||||
{
|
||||
"code": "ff",
|
||||
"language": "Fulfulde"
|
||||
},
|
||||
{
|
||||
"code": "fi",
|
||||
"language": "suomi"
|
||||
},
|
||||
{
|
||||
"code": "fj",
|
||||
"language": "Vakaviti"
|
||||
},
|
||||
{
|
||||
"code": "fo",
|
||||
"language": "føroyskt"
|
||||
},
|
||||
{
|
||||
"code": "fr",
|
||||
"language": "Français"
|
||||
},
|
||||
{
|
||||
"code": "fy",
|
||||
"language": "Frysk"
|
||||
},
|
||||
{
|
||||
"code": "ga",
|
||||
"language": "Gaeilge"
|
||||
},
|
||||
{
|
||||
"code": "gd",
|
||||
"language": "Gàidhlig"
|
||||
},
|
||||
{
|
||||
"code": "gl",
|
||||
"language": "galego"
|
||||
},
|
||||
{
|
||||
"code": "gu",
|
||||
"language": "ગુજરાતી"
|
||||
},
|
||||
{
|
||||
"code": "gv",
|
||||
"language": "Gaelg"
|
||||
},
|
||||
{
|
||||
"code": "ha",
|
||||
"language": "هَوُسَ"
|
||||
},
|
||||
{
|
||||
"code": "he",
|
||||
"language": "עברית"
|
||||
},
|
||||
{
|
||||
"code": "hi",
|
||||
"language": "हिन्दी"
|
||||
},
|
||||
{
|
||||
"code": "ho",
|
||||
"language": "Hiri Motu"
|
||||
},
|
||||
{
|
||||
"code": "hr",
|
||||
"language": "Hrvatski"
|
||||
},
|
||||
{
|
||||
"code": "ht",
|
||||
"language": "Kreyòl ayisyen"
|
||||
},
|
||||
{
|
||||
"code": "hu",
|
||||
"language": "magyar"
|
||||
},
|
||||
{
|
||||
"code": "hy",
|
||||
"language": "Հայերեն"
|
||||
},
|
||||
{
|
||||
"code": "hz",
|
||||
"language": "Otjiherero"
|
||||
},
|
||||
{
|
||||
"code": "ia",
|
||||
"language": "Interlingua"
|
||||
},
|
||||
{
|
||||
"code": "id",
|
||||
"language": "Bahasa Indonesia"
|
||||
},
|
||||
{
|
||||
"code": "ie",
|
||||
"language": "Interlingue"
|
||||
},
|
||||
{
|
||||
"code": "ig",
|
||||
"language": "Asụsụ Igbo"
|
||||
},
|
||||
{
|
||||
"code": "ii",
|
||||
"language": "ꆈꌠ꒿ Nuosuhxop"
|
||||
},
|
||||
{
|
||||
"code": "ik",
|
||||
"language": "Iñupiaq"
|
||||
},
|
||||
{
|
||||
"code": "io",
|
||||
"language": "Ido"
|
||||
},
|
||||
{
|
||||
"code": "is",
|
||||
"language": "Íslenska"
|
||||
},
|
||||
{
|
||||
"code": "it",
|
||||
"language": "Italiano"
|
||||
},
|
||||
{
|
||||
"code": "iu",
|
||||
"language": "ᐃᓄᒃᑎᑐᑦ"
|
||||
},
|
||||
{
|
||||
"code": "ja",
|
||||
"language": "日本語"
|
||||
},
|
||||
{
|
||||
"code": "jv",
|
||||
"language": "basa Jawa"
|
||||
},
|
||||
{
|
||||
"code": "ka",
|
||||
"language": "ქართული"
|
||||
},
|
||||
{
|
||||
"code": "kg",
|
||||
"language": "Kikongo"
|
||||
},
|
||||
{
|
||||
"code": "ki",
|
||||
"language": "Gĩkũyũ"
|
||||
},
|
||||
{
|
||||
"code": "kj",
|
||||
"language": "Kuanyama"
|
||||
},
|
||||
{
|
||||
"code": "kk",
|
||||
"language": "қазақ тілі"
|
||||
},
|
||||
{
|
||||
"code": "kl",
|
||||
"language": "kalaallisut"
|
||||
},
|
||||
{
|
||||
"code": "km",
|
||||
"language": "ខេមរភាសា"
|
||||
},
|
||||
{
|
||||
"code": "kn",
|
||||
"language": "ಕನ್ನಡ"
|
||||
},
|
||||
{
|
||||
"code": "ko",
|
||||
"language": "한국어"
|
||||
},
|
||||
{
|
||||
"code": "kr",
|
||||
"language": "Kanuri"
|
||||
},
|
||||
{
|
||||
"code": "ks",
|
||||
"language": "कश्मीरी"
|
||||
},
|
||||
{
|
||||
"code": "ku",
|
||||
"language": "Kurmancî"
|
||||
},
|
||||
{
|
||||
"code": "kv",
|
||||
"language": "коми кыв"
|
||||
},
|
||||
{
|
||||
"code": "kw",
|
||||
"language": "Kernewek"
|
||||
},
|
||||
{
|
||||
"code": "ky",
|
||||
"language": "Кыргызча"
|
||||
},
|
||||
{
|
||||
"code": "la",
|
||||
"language": "latine"
|
||||
},
|
||||
{
|
||||
"code": "lb",
|
||||
"language": "Lëtzebuergesch"
|
||||
},
|
||||
{
|
||||
"code": "lg",
|
||||
"language": "Luganda"
|
||||
},
|
||||
{
|
||||
"code": "li",
|
||||
"language": "Limburgs"
|
||||
},
|
||||
{
|
||||
"code": "ln",
|
||||
"language": "Lingála"
|
||||
},
|
||||
{
|
||||
"code": "lo",
|
||||
"language": "ພາສາ"
|
||||
},
|
||||
{
|
||||
"code": "lt",
|
||||
"language": "lietuvių kalba"
|
||||
},
|
||||
{
|
||||
"code": "lu",
|
||||
"language": "Tshiluba"
|
||||
},
|
||||
{
|
||||
"code": "lv",
|
||||
"language": "latviešu valoda"
|
||||
},
|
||||
{
|
||||
"code": "mg",
|
||||
"language": "fiteny malagasy"
|
||||
},
|
||||
{
|
||||
"code": "mh",
|
||||
"language": "Kajin M̧ajeļ"
|
||||
},
|
||||
{
|
||||
"code": "mi",
|
||||
"language": "te reo Māori"
|
||||
},
|
||||
{
|
||||
"code": "mk",
|
||||
"language": "македонски јазик"
|
||||
},
|
||||
{
|
||||
"code": "ml",
|
||||
"language": "മലയാളം"
|
||||
},
|
||||
{
|
||||
"code": "mn",
|
||||
"language": "Монгол хэл"
|
||||
},
|
||||
{
|
||||
"code": "mr",
|
||||
"language": "मराठी"
|
||||
},
|
||||
{
|
||||
"code": "ms",
|
||||
"language": "Bahasa Melayu"
|
||||
},
|
||||
{
|
||||
"code": "mt",
|
||||
"language": "Malti"
|
||||
},
|
||||
{
|
||||
"code": "my",
|
||||
"language": "ဗမာစာ"
|
||||
},
|
||||
{
|
||||
"code": "na",
|
||||
"language": "Ekakairũ Naoero"
|
||||
},
|
||||
{
|
||||
"code": "nb",
|
||||
"language": "Norsk bokmål"
|
||||
},
|
||||
{
|
||||
"code": "nd",
|
||||
"language": "isiNdebele"
|
||||
},
|
||||
{
|
||||
"code": "ne",
|
||||
"language": "नेपाली"
|
||||
},
|
||||
{
|
||||
"code": "ng",
|
||||
"language": "Owambo"
|
||||
},
|
||||
{
|
||||
"code": "nl",
|
||||
"language": "Nederlands"
|
||||
},
|
||||
{
|
||||
"code": "nn",
|
||||
"language": "Norsk Nynorsk"
|
||||
},
|
||||
{
|
||||
"code": "no",
|
||||
"language": "Norsk"
|
||||
},
|
||||
{
|
||||
"code": "nr",
|
||||
"language": "isiNdebele"
|
||||
},
|
||||
{
|
||||
"code": "nv",
|
||||
"language": "Diné bizaad"
|
||||
},
|
||||
{
|
||||
"code": "ny",
|
||||
"language": "chiCheŵa"
|
||||
},
|
||||
{
|
||||
"code": "oc",
|
||||
"language": "occitan"
|
||||
},
|
||||
{
|
||||
"code": "oj",
|
||||
"language": "ᐊᓂᔑᓈᐯᒧᐎᓐ"
|
||||
},
|
||||
{
|
||||
"code": "om",
|
||||
"language": "Afaan Oromoo"
|
||||
},
|
||||
{
|
||||
"code": "or",
|
||||
"language": "ଓଡ଼ିଆ"
|
||||
},
|
||||
{
|
||||
"code": "os",
|
||||
"language": "ирон æвзаг"
|
||||
},
|
||||
{
|
||||
"code": "pa",
|
||||
"language": "ਪੰਜਾਬੀ"
|
||||
},
|
||||
{
|
||||
"code": "pi",
|
||||
"language": "पाऴि"
|
||||
},
|
||||
{
|
||||
"code": "pl",
|
||||
"language": "Polski"
|
||||
},
|
||||
{
|
||||
"code": "ps",
|
||||
"language": "پښتو"
|
||||
},
|
||||
{
|
||||
"code": "pt",
|
||||
"language": "Português"
|
||||
},
|
||||
{
|
||||
"code": "qu",
|
||||
"language": "Runa Simi"
|
||||
},
|
||||
{
|
||||
"code": "rm",
|
||||
"language": "rumantsch grischun"
|
||||
},
|
||||
{
|
||||
"code": "rn",
|
||||
"language": "Ikirundi"
|
||||
},
|
||||
{
|
||||
"code": "ro",
|
||||
"language": "Română"
|
||||
},
|
||||
{
|
||||
"code": "ru",
|
||||
"language": "Русский"
|
||||
},
|
||||
{
|
||||
"code": "rw",
|
||||
"language": "Ikinyarwanda"
|
||||
},
|
||||
{
|
||||
"code": "sa",
|
||||
"language": "संस्कृतम्"
|
||||
},
|
||||
{
|
||||
"code": "sc",
|
||||
"language": "sardu"
|
||||
},
|
||||
{
|
||||
"code": "sd",
|
||||
"language": "सिन्धी"
|
||||
},
|
||||
{
|
||||
"code": "se",
|
||||
"language": "Davvisámegiella"
|
||||
},
|
||||
{
|
||||
"code": "sg",
|
||||
"language": "yângâ tî sängö"
|
||||
},
|
||||
{
|
||||
"code": "si",
|
||||
"language": "සිංහල"
|
||||
},
|
||||
{
|
||||
"code": "sk",
|
||||
"language": "slovenčina"
|
||||
},
|
||||
{
|
||||
"code": "sl",
|
||||
"language": "slovenščina"
|
||||
},
|
||||
{
|
||||
"code": "sn",
|
||||
"language": "chiShona"
|
||||
},
|
||||
{
|
||||
"code": "so",
|
||||
"language": "Soomaaliga"
|
||||
},
|
||||
{
|
||||
"code": "sq",
|
||||
"language": "Shqip"
|
||||
},
|
||||
{
|
||||
"code": "sr",
|
||||
"language": "српски језик"
|
||||
},
|
||||
{
|
||||
"code": "ss",
|
||||
"language": "SiSwati"
|
||||
},
|
||||
{
|
||||
"code": "st",
|
||||
"language": "Sesotho"
|
||||
},
|
||||
{
|
||||
"code": "su",
|
||||
"language": "Basa Sunda"
|
||||
},
|
||||
{
|
||||
"code": "sv",
|
||||
"language": "Svenska"
|
||||
},
|
||||
{
|
||||
"code": "sw",
|
||||
"language": "Kiswahili"
|
||||
},
|
||||
{
|
||||
"code": "ta",
|
||||
"language": "தமிழ்"
|
||||
},
|
||||
{
|
||||
"code": "te",
|
||||
"language": "తెలుగు"
|
||||
},
|
||||
{
|
||||
"code": "tg",
|
||||
"language": "тоҷикӣ"
|
||||
},
|
||||
{
|
||||
"code": "th",
|
||||
"language": "ไทย"
|
||||
},
|
||||
{
|
||||
"code": "ti",
|
||||
"language": "ትግርኛ"
|
||||
},
|
||||
{
|
||||
"code": "tk",
|
||||
"language": "Türkmen"
|
||||
},
|
||||
{
|
||||
"code": "tl",
|
||||
"language": "Wikang Tagalog"
|
||||
},
|
||||
{
|
||||
"code": "tn",
|
||||
"language": "Setswana"
|
||||
},
|
||||
{
|
||||
"code": "to",
|
||||
"language": "faka Tonga"
|
||||
},
|
||||
{
|
||||
"code": "tr",
|
||||
"language": "Türkçe"
|
||||
},
|
||||
{
|
||||
"code": "ts",
|
||||
"language": "Xitsonga"
|
||||
},
|
||||
{
|
||||
"code": "tt",
|
||||
"language": "татар теле"
|
||||
},
|
||||
{
|
||||
"code": "tw",
|
||||
"language": "Twi"
|
||||
},
|
||||
{
|
||||
"code": "ty",
|
||||
"language": "Reo Tahiti"
|
||||
},
|
||||
{
|
||||
"code": "ug",
|
||||
"language": "ئۇيغۇرچە"
|
||||
},
|
||||
{
|
||||
"code": "uk",
|
||||
"language": "Українська"
|
||||
},
|
||||
{
|
||||
"code": "ur",
|
||||
"language": "اردو"
|
||||
},
|
||||
{
|
||||
"code": "uz",
|
||||
"language": "Ўзбек"
|
||||
},
|
||||
{
|
||||
"code": "ve",
|
||||
"language": "Tshivenḓa"
|
||||
},
|
||||
{
|
||||
"code": "vi",
|
||||
"language": "Tiếng Việt"
|
||||
},
|
||||
{
|
||||
"code": "vo",
|
||||
"language": "Volapük"
|
||||
},
|
||||
{
|
||||
"code": "wa",
|
||||
"language": "walon"
|
||||
},
|
||||
{
|
||||
"code": "wo",
|
||||
"language": "Wollof"
|
||||
},
|
||||
{
|
||||
"code": "xh",
|
||||
"language": "isiXhosa"
|
||||
},
|
||||
{
|
||||
"code": "yi",
|
||||
"language": "ייִדיש"
|
||||
},
|
||||
{
|
||||
"code": "yo",
|
||||
"language": "Yorùbá"
|
||||
},
|
||||
{
|
||||
"code": "za",
|
||||
"language": "Saɯ cueŋƅ"
|
||||
},
|
||||
{
|
||||
"code": "zh",
|
||||
"language": "中文"
|
||||
},
|
||||
{
|
||||
"code": "zu",
|
||||
"language": "isiZulu"
|
||||
}
|
||||
]
|
|
@ -76,6 +76,7 @@ import app.fedilab.android.client.entities.api.Mention;
|
|||
import app.fedilab.android.client.entities.api.ScheduledStatus;
|
||||
import app.fedilab.android.client.entities.api.Status;
|
||||
import app.fedilab.android.client.entities.app.BaseAccount;
|
||||
import app.fedilab.android.client.entities.app.Languages;
|
||||
import app.fedilab.android.client.entities.app.StatusDraft;
|
||||
import app.fedilab.android.databinding.ActivityPaginationBinding;
|
||||
import app.fedilab.android.databinding.PopupContactBinding;
|
||||
|
@ -577,6 +578,46 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
|
|||
} else {
|
||||
Toasty.info(ComposeActivity.this, getString(R.string.toot_error_no_content), Toasty.LENGTH_SHORT).show();
|
||||
}
|
||||
} else if (item.getItemId() == R.id.action_language) {
|
||||
final SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(ComposeActivity.this);
|
||||
List<Languages.Language> languages = Languages.get(ComposeActivity.this);
|
||||
String[] codesArr = new String[0];
|
||||
String[] languagesArr = new String[0];
|
||||
|
||||
String currentCode = sharedpreferences.getString(getString(R.string.SET_COMPOSE_LANGUAGE) + account.user_id + account.instance, null);
|
||||
int selection = 0;
|
||||
|
||||
if (languages != null) {
|
||||
codesArr = new String[languages.size()];
|
||||
languagesArr = new String[languages.size()];
|
||||
int i = 0;
|
||||
for (Languages.Language language : languages) {
|
||||
codesArr[i] = language.code;
|
||||
languagesArr[i] = language.language;
|
||||
if (currentCode != null && currentCode.equalsIgnoreCase(language.code)) {
|
||||
selection = i;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(ComposeActivity.this, Helper.dialogStyle());
|
||||
builder.setTitle(getString(R.string.message_language));
|
||||
|
||||
builder.setSingleChoiceItems(languagesArr, selection, null);
|
||||
String[] finalCodesArr = codesArr;
|
||||
builder.setPositiveButton(R.string.validate, (dialog, which) -> {
|
||||
int selectedPosition = ((AlertDialog) dialog).getListView().getCheckedItemPosition();
|
||||
editor.putString(getString(R.string.SET_COMPOSE_LANGUAGE) + account.user_id + account.instance, finalCodesArr[selectedPosition]);
|
||||
editor.apply();
|
||||
dialog.dismiss();
|
||||
});
|
||||
builder.setNegativeButton(R.string.reset, (dialog, which) -> {
|
||||
editor.putString(getString(R.string.SET_COMPOSE_LANGUAGE) + account.user_id + account.instance, null);
|
||||
editor.apply();
|
||||
dialog.dismiss();
|
||||
});
|
||||
builder.create().show();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -751,6 +792,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
|
|||
intent.putExtra(Helper.ARG_STATUS_DRAFT, statusDraft);
|
||||
intent.putExtra(Helper.ARG_INSTANCE, instance);
|
||||
intent.putExtra(Helper.ARG_TOKEN, token);
|
||||
intent.putExtra(Helper.ARG_USER_ID, account.user_id);
|
||||
intent.putExtra(Helper.ARG_SCHEDULED_DATE, scheduledDate);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
startForegroundService(intent);
|
||||
|
@ -758,7 +800,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
|
|||
startService(intent);
|
||||
}
|
||||
} else {
|
||||
new ThreadMessageService(ComposeActivity.this, instance, token, statusDraft, scheduledDate);
|
||||
new ThreadMessageService(ComposeActivity.this, instance, account.user_id, token, statusDraft, scheduledDate);
|
||||
}
|
||||
finish();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
package app.fedilab.android.client.entities.app;
|
||||
/* Copyright 2022 Thomas Schneider
|
||||
*
|
||||
* This file is a part of Fedilab
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
||||
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Fedilab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
* Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.Serializable;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class Languages implements Serializable {
|
||||
|
||||
@SerializedName("languages")
|
||||
public List<Language> languages;
|
||||
|
||||
public static List<Language> get(AppCompatActivity activity) {
|
||||
try {
|
||||
InputStream is = activity.getAssets().open("languages/iso_639_1.json");
|
||||
int size = is.available();
|
||||
byte[] buffer = new byte[size];
|
||||
is.read(buffer);
|
||||
is.close();
|
||||
String json = new String(buffer, StandardCharsets.UTF_8);
|
||||
Gson gson = new Gson();
|
||||
try {
|
||||
return gson.fromJson(json, new TypeToken<List<Language>>() {
|
||||
}.getType());
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
ex.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Language implements Serializable {
|
||||
@SerializedName("code")
|
||||
public String code;
|
||||
@SerializedName("language")
|
||||
public String language;
|
||||
}
|
||||
}
|
|
@ -75,6 +75,7 @@ public class NotificationsWorker extends Worker {
|
|||
String instance = getInputData().getString(Helper.ARG_INSTANCE);
|
||||
String token = getInputData().getString(Helper.ARG_TOKEN);
|
||||
String statusDraftId = getInputData().getString(Helper.ARG_STATUS_DRAFT_ID);
|
||||
String userId = getInputData().getString(Helper.ARG_USER_ID);
|
||||
StatusDraft statusDraft;
|
||||
try {
|
||||
statusDraft = new StatusDraft(getApplicationContext()).geStatusDraft(statusDraftId);
|
||||
|
@ -82,6 +83,7 @@ public class NotificationsWorker extends Worker {
|
|||
intent.putExtra(Helper.ARG_STATUS_DRAFT, statusDraft);
|
||||
intent.putExtra(Helper.ARG_INSTANCE, instance);
|
||||
intent.putExtra(Helper.ARG_TOKEN, token);
|
||||
intent.putExtra(Helper.ARG_USER_ID, userId);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
getApplicationContext().startForegroundService(intent);
|
||||
} else {
|
||||
|
|
|
@ -74,6 +74,7 @@ public class ScheduleThreadWorker extends Worker {
|
|||
Data outputData;
|
||||
String instance = getInputData().getString(Helper.ARG_INSTANCE);
|
||||
String token = getInputData().getString(Helper.ARG_TOKEN);
|
||||
String userId = getInputData().getString(Helper.ARG_USER_ID);
|
||||
String statusDraftId = getInputData().getString(Helper.ARG_STATUS_DRAFT_ID);
|
||||
StatusDraft statusDraft;
|
||||
try {
|
||||
|
@ -82,6 +83,7 @@ public class ScheduleThreadWorker extends Worker {
|
|||
intent.putExtra(Helper.ARG_STATUS_DRAFT, statusDraft);
|
||||
intent.putExtra(Helper.ARG_INSTANCE, instance);
|
||||
intent.putExtra(Helper.ARG_TOKEN, token);
|
||||
intent.putExtra(Helper.ARG_USER_ID, userId);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
getApplicationContext().startForegroundService(intent);
|
||||
} else {
|
||||
|
|
|
@ -202,9 +202,10 @@ public class PostMessageService extends IntentService {
|
|||
if (error) {
|
||||
return;
|
||||
}
|
||||
String language = sharedPreferences.getString(context.getString(R.string.SET_COMPOSE_LANGUAGE) + dataPost.userId + dataPost.instance, null);
|
||||
if (dataPost.scheduledDate == null) {
|
||||
statusCall = mastodonStatusesService.createStatus(null, dataPost.token, statuses.get(i).text, attachmentIds, poll_options, poll_expire_in,
|
||||
poll_multiple, poll_hide_totals, in_reply_to_status, statuses.get(i).sensitive, statuses.get(i).spoiler_text, statuses.get(i).visibility.toLowerCase(), statuses.get(i).language);
|
||||
poll_multiple, poll_hide_totals, in_reply_to_status, statuses.get(i).sensitive, statuses.get(i).spoiler_text, statuses.get(i).visibility.toLowerCase(), language);
|
||||
try {
|
||||
Response<Status> statusResponse = statusCall.execute();
|
||||
if (statusResponse.isSuccessful()) {
|
||||
|
@ -339,11 +340,13 @@ public class PostMessageService extends IntentService {
|
|||
StatusDraft statusDraft = null;
|
||||
String token = null, instance = null;
|
||||
String scheduledDate = null;
|
||||
String userId = null;
|
||||
if (intent != null && intent.getExtras() != null) {
|
||||
Bundle b = intent.getExtras();
|
||||
statusDraft = (StatusDraft) b.getSerializable(Helper.ARG_STATUS_DRAFT);
|
||||
token = b.getString(Helper.ARG_TOKEN);
|
||||
instance = b.getString(Helper.ARG_INSTANCE);
|
||||
userId = b.getString(Helper.ARG_USER_ID);
|
||||
scheduledDate = b.getString(Helper.ARG_SCHEDULED_DATE);
|
||||
}
|
||||
//Should not be null, but a simple security
|
||||
|
@ -356,6 +359,7 @@ public class PostMessageService extends IntentService {
|
|||
DataPost dataPost = new DataPost();
|
||||
dataPost.instance = instance;
|
||||
dataPost.token = token;
|
||||
dataPost.userId = userId;
|
||||
dataPost.statusDraft = statusDraft;
|
||||
dataPost.scheduledDate = scheduledDate;
|
||||
dataPost.notificationBuilder = notificationBuilder;
|
||||
|
@ -367,6 +371,7 @@ public class PostMessageService extends IntentService {
|
|||
static class DataPost {
|
||||
String instance;
|
||||
String token;
|
||||
String userId;
|
||||
StatusDraft statusDraft;
|
||||
int messageToSend;
|
||||
int messageSent;
|
||||
|
|
|
@ -22,9 +22,10 @@ import app.fedilab.android.client.entities.app.StatusDraft;
|
|||
|
||||
public class ThreadMessageService {
|
||||
|
||||
public ThreadMessageService(Context context, String instance, String token, StatusDraft statusDraft, String scheduledDate) {
|
||||
public ThreadMessageService(Context context, String instance, String userId, String token, StatusDraft statusDraft, String scheduledDate) {
|
||||
PostMessageService.DataPost dataPost = new PostMessageService.DataPost();
|
||||
dataPost.instance = instance;
|
||||
dataPost.userId = userId;
|
||||
dataPost.token = token;
|
||||
dataPost.scheduledDate = scheduledDate;
|
||||
dataPost.statusDraft = statusDraft;
|
||||
|
|
10
app/src/main/res/drawable/ic_baseline_language_24.xml
Normal file
10
app/src/main/res/drawable/ic_baseline_language_24.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM18.92,8h-2.95c-0.32,-1.25 -0.78,-2.45 -1.38,-3.56 1.84,0.63 3.37,1.91 4.33,3.56zM12,4.04c0.83,1.2 1.48,2.53 1.91,3.96h-3.82c0.43,-1.43 1.08,-2.76 1.91,-3.96zM4.26,14C4.1,13.36 4,12.69 4,12s0.1,-1.36 0.26,-2h3.38c-0.08,0.66 -0.14,1.32 -0.14,2 0,0.68 0.06,1.34 0.14,2L4.26,14zM5.08,16h2.95c0.32,1.25 0.78,2.45 1.38,3.56 -1.84,-0.63 -3.37,-1.9 -4.33,-3.56zM8.03,8L5.08,8c0.96,-1.66 2.49,-2.93 4.33,-3.56C8.81,5.55 8.35,6.75 8.03,8zM12,19.96c-0.83,-1.2 -1.48,-2.53 -1.91,-3.96h3.82c-0.43,1.43 -1.08,2.76 -1.91,3.96zM14.34,14L9.66,14c-0.09,-0.66 -0.16,-1.32 -0.16,-2 0,-0.68 0.07,-1.35 0.16,-2h4.68c0.09,0.65 0.16,1.32 0.16,2 0,0.68 -0.07,1.34 -0.16,2zM14.59,19.56c0.6,-1.11 1.06,-2.31 1.38,-3.56h2.95c-0.96,1.65 -2.49,2.93 -4.33,3.56zM16.36,14c0.08,-0.66 0.14,-1.32 0.14,-2 0,-0.68 -0.06,-1.34 -0.14,-2h3.38c0.16,0.64 0.26,1.31 0.26,2s-0.1,1.36 -0.26,2h-3.38z" />
|
||||
</vector>
|
|
@ -11,6 +11,11 @@
|
|||
android:icon="@drawable/ic_baseline_contact_page_24"
|
||||
android:title="@string/contact"
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/action_language"
|
||||
android:icon="@drawable/ic_baseline_language_24"
|
||||
android:title="@string/languages"
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/action_microphone"
|
||||
android:icon="@drawable/ic_baseline_mic_24"
|
||||
|
|
|
@ -864,6 +864,7 @@
|
|||
<string name="SET_TIME_FROM" translatable="false">SET_TIME_FROM</string>
|
||||
<string name="SET_TIME_TO" translatable="false">SET_TIME_TO</string>
|
||||
<string name="SET_MED_DESC_TIMEOUT" translatable="false">SET_MED_DESC_TIMEOUT</string>
|
||||
<string name="SET_COMPOSE_LANGUAGE" translatable="false">SET_COMPOSE_LANGUAGE</string>
|
||||
|
||||
|
||||
<string name="SET_NOTIF_FOLLOW" translatable="false">SET_NOTIF_FOLLOW</string>
|
||||
|
@ -980,6 +981,7 @@
|
|||
<string name="clear_cache">Clear cache</string>
|
||||
<string name="delete_cache_message">Are you sure you want to delete cache? If you have drafts with media, the attached media will be lost.</string>
|
||||
<string name="default_system_language">Use the default system language</string>
|
||||
<string name="message_language">Language for messages</string>
|
||||
|
||||
<string-array name="photo_editor_emoji" translatable="false">
|
||||
<!-- Smiles -->
|
||||
|
|
Loading…
Reference in a new issue