Loading app/src/main/assets/languages/iso_639_1.json 0 → 100644 +730 −0 Original line number Diff line number Diff line [ { "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" } ] No newline at end of file app/src/main/java/app/fedilab/android/activities/ComposeActivity.java +43 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading Loading @@ -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); Loading @@ -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(); } Loading app/src/main/java/app/fedilab/android/client/entities/app/Languages.java 0 → 100644 +62 −0 Original line number Diff line number Diff line 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; } } app/src/main/java/app/fedilab/android/jobs/NotificationsWorker.java +2 −0 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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 { Loading app/src/main/java/app/fedilab/android/jobs/ScheduleThreadWorker.java +2 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 { Loading Loading
app/src/main/assets/languages/iso_639_1.json 0 → 100644 +730 −0 Original line number Diff line number Diff line [ { "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" } ] No newline at end of file
app/src/main/java/app/fedilab/android/activities/ComposeActivity.java +43 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading Loading @@ -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); Loading @@ -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(); } Loading
app/src/main/java/app/fedilab/android/client/entities/app/Languages.java 0 → 100644 +62 −0 Original line number Diff line number Diff line 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; } }
app/src/main/java/app/fedilab/android/jobs/NotificationsWorker.java +2 −0 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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 { Loading
app/src/main/java/app/fedilab/android/jobs/ScheduleThreadWorker.java +2 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 { Loading