From 28377485407077058feaa3e35bcac7a70d7a9029 Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Thu, 20 Jun 2019 21:28:47 +0200 Subject: [PATCH 1/4] Localisation updates from https://translatewiki.net. --- app/src/main/res/values-iw/strings.xml | 15 +++++++++++ app/src/main/res/values-ko/strings.xml | 2 ++ app/src/main/res/values-my/strings.xml | 19 ++++++++++++- app/src/main/res/values-pt/strings.xml | 4 +++ app/src/main/res/values-zh/strings.xml | 37 +++++++++++++++++++++++++- 5 files changed, 75 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 95daefdaf..32223c54b 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -10,6 +10,7 @@ * Guycn2 * Inkbug * Nurick +* Steeve815 * Strayblues * Uziel302 * YaronSh @@ -21,6 +22,7 @@ מראה כללי משוב + פרטיות מיקום ויקישיתוף @@ -518,7 +520,20 @@ דוגמאות של תמונות שאין להעלות דילוג על התמונה הזאת ההורדה נכשלה!! אין לנו אפשרות להוריד את הקובץ ללא הרשאות גישה לאחסון חיצוני. + ניהול תגיות EXIF + לבחור אילו תגיות EXIF יישארו בהעלאות + יוצר + זכויות יוצרים + מיקום + דגם המצלמה + דגם העדשה + מספרים סידוריים + תוכנה כדי להעלות תמונות לוויקינתונים של ויקימדיה בעזרת הטלפון שלך יש להוריד את היישומון של ויקינתונים: %1$s שיתוף אפליקציה דרך... פרטי תמונה + לא נמצאו קטגוריות + ההעלאה בוטלה + אין נתונים עבור הכותרת או התיאור התמונה הקודמת + למה %1$s צריך להימחק? diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 664d1ff72..fdc300b1f 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -464,4 +464,6 @@ 소프트웨어 앱 공유... 이미지 정보 + 분류가 없습니다 + 업로드 취소됨 diff --git a/app/src/main/res/values-my/strings.xml b/app/src/main/res/values-my/strings.xml index 47c72f1ba..5192a1553 100644 --- a/app/src/main/res/values-my/strings.xml +++ b/app/src/main/res/values-my/strings.xml @@ -83,7 +83,10 @@ သင် မည်သည့်ဓာတ်ပုံကိုမှ မတင်ရသေးပါ။ ပြန်လုပ် မလုပ်တော့ - ဤရုပ်ပုံသည် %1$ အောက်တွင် လိုင်စင်သတ်မှတ်ထးပါမည် + + ဤရုပ်ပုံသည် %1$ အောက်တွင် လိုင်စင်သတ်မှတ်ထးပါမည် + ဤရုပ်ပုံများသည် %1$ အောက်တွင် လိုင်စင်သတ်မှတ်ထးပါမည် + ဒေါင်းလုပ်ယူရန် နဂို လိုင်စင် ယခင် ခေါင်းစဉ်/ဖော်ပြချက် သုံးမည် @@ -197,6 +200,7 @@ ခွင့်ပြုချက် ပေးမည် ပြင်ပြသိုလှောင်ခန်းကို သုံးမည် သင်၏အကောင့်သို့ ဝင်ရန် + URL ဖွင့်ရန် ဝဘ်ဘရောက်ဆာ မတွေ့ရှိပါ အမှား! URL မတွေ့ရှိပါ ဖျက်ပစ်ရန် အဆိုပြုပါ ဤရုပ်ပုံအား ဖျက်ပစ်ရန် အဆိုပြုခံထားရသည်။ @@ -259,6 +263,7 @@ ဆက်လက် အဖြေမှန် အဖြေမှား + ရုပ်ပုံရွေးချယ်စဉ်အတွင်း ကိုဩဒိနိတ်များကို မသတ်မှတ်ထားပါ + ဖော်ပြချက် ထည့်ရန် လတ်တလော ရှာဖွေမှုများ မရှိပါ သင့်ရှာဖွေမှု ရာဇဝင်ကို ရှင်းလင်းမည်မှာ သေချာပါသလား? @@ -284,6 +289,8 @@ အနီးအနားအသိပေးချက်ကို ပြသရန် စာရင်း သိုလှောင်ခန်း ခွင်ပြုချက် + ရုပ်ပုံများ အက်ပလုဒ်တင်ရန်အတွက် သင်၏စက်ပစ္စည်းပြင်ပသိုလှောင်ခန်းကို ဝင်ရောက်ခွင့်ရရှိရန် ခွင့်ပြုချက်လိုအပ်နေပါသည်။ + %2$d ၏ အဆင့် %1$d ရှေ့ နောက် ထည့်သွင်းရန် @@ -297,6 +304,11 @@ တည်နေရာများ ဖတ်ရန်မှတ်ထားမှုများ ဖတ်ရန်မှတ်ထားမှုများ + ယင်းအား မှားယွင်းပြီး အက်ပလုဒ်တင်ခဲ့မိသည် + ယင်းသည် အများကြည့်ရှုနိုင်သည်ဟု မသိရှိခဲ့ပါ + ယင်းသည် မိမိ၏ကိုယ်ရေးကိုယ်တာလုံရေးအတွက် မကောင်းမှန်းသိလိုက်ပါပြီ + စိတ်ပြောင်းသွားပါပြီ၊ ယင်းအား အများသူငှာကြည့်ရှုနိုင်စေရန် မလိုလားတော့ပါ။ + စိတ်မကောင်းပါ ဤရုပ်ပုံသည် စွယ်စုံကျမ်းအတွက် စိတ်ဝင်စားဖွယ်မကောင်းပါ တစ်ကမ္ဘာလုံး အမေရိက ဥရောပ @@ -312,6 +324,10 @@ နောက်တခါ ထပ်မမေးပါနှင့် တည်နေရာခွင့်ပြုချက်ကို ပြသရန် ပြီးဆုံးမည်- + ဤလုပ်ဆောင်ချက်သည် ကွန်ရက်ချိတ်ဆက်မှုကိုလိုအပ်သည်၊ သင်၏ချိတ်ဆက်မှု အပြင်အဆင်များကို စစ်ဆေးပါ။ + ရုပ်ပုံကို ပရိုဆက်ဆင်းလုပ်နေစဉ် အမှားဖြစ်ပွားခဲ့သည်။ ထပ်မံကြိုးစားကြည့်ပါ။ + ကဏ္ဍစစ်ဆေးမှု တောင်းဆိုနေသည် + ကဏ္ဍစစ်ဆေးမှု တောင်းဆိုခဲ့သည် ပြီးပြီ ဆွေးနွေးချက်စာမျက်နှာပေါ်တွင် အသုံးပြုသူအား အသိပေးခြင်း မသေချာပါ @@ -334,6 +350,7 @@ ကျေးဇူးပြု၍ ခဏစောင့်ပါ... နမူနာရုပ်ပုံများ အက်ပလုပ်တင်ရန် မဟုတ်ပါ ဤရုပ်ပုံအား ကျော်သွားမည် + ဒေါင်းလုဒ် မအောင်မြင်ပါ။ ပြင်ပသိုလှောင်မှုခွင့်ပြုချက်မရှိဘဲ ဖိုင်ဒေါင်းလုဒ်မဆွဲနိုင်ပါ။ ဖန်တီးသူ မူပိုင်ခွင့် တည်နေရာ diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 96958bcec..f74256ff0 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -534,4 +534,8 @@ Carregar fotografias na wiki Wikimedia Commons, do seu telemóvel Descarregar a aplicação Commons: %1$s Partilhar aplicação por... Informação da imagem + Não foi encontrada nenhuma categoria + Carregamento cancelado + Não há dados para o título ou descrição da imagem anterior + Porque deve %1$s ser eliminado? diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 626caf242..b14f94e95 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -17,6 +17,7 @@ * ZhaoGang * 佛壁灯 * 夢蝶葬花 +* 神樂坂秀吉 * 阿pp --> @@ -25,6 +26,7 @@ 外观 一般 反馈 + 隐私政策 位置 共享资源 @@ -183,6 +185,7 @@ 请求存储权限 需要权限:读取外部存储。应用不能在没有它的情况下访问您的图册。 需要权限:写入外部存储。应用不能在没有它的情况下访问您的相机/图册。 + 请求位置权限 可选权限:获取当前位置以提供分类建议 确定 附近地点 @@ -244,6 +247,7 @@ 教程 通知 特色 + 复核 附近地点不能在没有位置权限的情况下显示 找不到描述 共享资源文件页面 @@ -261,6 +265,7 @@ 这张图片是在不同的地点拍摄的。 请仅上传由您自己拍摄的图像。请勿上传您在他人的Facebook账户上所发现的图像。 仍然上传这张图片? + 请仅上传由您自己拍摄的图像。请勿上传您从互联网下载的图像。 提供权限 使用外部存储 在您的设备上,使用应用中的照相机保存照片 @@ -272,6 +277,7 @@ 提交删除 此图片已被提交删除。 <u>查看网页获取详情</u> + 提名删除:%1$s 在浏览器中预览 忽略 登录 @@ -327,6 +333,7 @@ 加载子分类时发生错误。 媒体 分类 + 通过移动端上传 图片已成功添加到维基数据上的%1$s! 更新对应维基数据实体失败! 设为壁纸 @@ -359,6 +366,7 @@ 您确认要清除您的搜索历史? 搜索历史已删除 提名删除 + 删除 成就 统计 已收到感谢 @@ -440,12 +448,30 @@ 有错误发生,无法获取你的成就 结束于: 显示活动 - 点击此处显示正在进行的活动 + 显示正在进行的活动 你不会再看到这个活动。如果需要可以在设置里重新启用此通知。 这个功能需要网络连接,请检查你的网络设置。 因为编辑令牌失效上传失败。请尝试登出后重新登录。 处理图像时出错。请再试一次! + 完成 + 在讨论页上通知用户 + 不确定 + 发送感谢 + 发送感谢 + 向%1$s发送感谢 + 它是否符合版权方针? + 它是否被正确分类? + 它是否在维基共享资源的收录范围内? + 您是否要感谢贡献者? + 标志、屏幕截图和电影海报通常侵犯版权。\n提名删除候选请点击“否”。 + 该文件未被分类! + 该文件不在收录范围内,原因是 + 该文件侵犯版权,原因是 + 否,分类错误 + 否,不在收录范围内 + 否,侵犯版权 是,为什么不呢 + 下一张图片 正在处理数据。处理时间取决于图片的尺寸和您的设备 @@ -462,6 +488,15 @@ 请稍候…… 复制先前的标题及描述 点击复用您在先前图片中填写的标题及描述并稍加修改来匹配当前图像。 + 跳过该图片 + 作者 + 著作权 + 位置 + 相机型号 + 软件 分享到... 图像信息 + 找不到分类 + 取消上传 + %1$s为何应被删除? From dd50e8331956ec522ce16160f70f569246adfbfe Mon Sep 17 00:00:00 2001 From: neslihanturan Date: Mon, 24 Jun 2019 14:40:12 +0300 Subject: [PATCH 2/4] Fixes previous PR - FIX #2918 Add option for default language for file descriptions (#3020) * FIX #2918 Add option for default language for file descriptions * navigation menu error fixed and improvement of code quality * error language description default fixed * adapter language selected fixed * local language selected per default in description language * Use a better string and variable name as required in review 1 * Add comments * Add previously missing setValue methods so that list item will be chosen along with the summary * Add missing Javadocs * Fix capitalization * Lint and formatting issues * Rename methods so it's clearer they are to do with languages * Use default kv store instead of shared preferences variable * Make sure saved language code from settings activity is handled on init --- .../fr/free/nrw/commons/settings/Prefs.java | 1 + .../commons/settings/SettingsFragment.java | 81 ++++++++++++++++++- .../commons/upload/DescriptionsAdapter.java | 27 ++++--- .../fr/free/nrw/commons/upload/Language.java | 2 +- .../upload/SpinnerLanguagesAdapter.java | 52 ++++++++---- .../UploadMediaDetailFragment.java | 10 ++- app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/preferences.xml | 5 ++ 8 files changed, 150 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/settings/Prefs.java b/app/src/main/java/fr/free/nrw/commons/settings/Prefs.java index 9a40acc55..41889e3db 100644 --- a/app/src/main/java/fr/free/nrw/commons/settings/Prefs.java +++ b/app/src/main/java/fr/free/nrw/commons/settings/Prefs.java @@ -8,6 +8,7 @@ public class Prefs { public static final String UPLOADS_SHOWING = "uploadsshowing"; public static final String IS_CONTRIBUTION_COUNT_CHANGED = "ccontributionCountChanged"; public static final String MANAGED_EXIF_TAGS = "managedExifTags"; + public static final String KEY_LANGUAGE_VALUE = "languageDescription"; public static class Licenses { public static final String CC_BY_SA_3 = "CC BY-SA 3.0"; diff --git a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java index 6d527c91d..176697f9a 100644 --- a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java @@ -1,12 +1,15 @@ package fr.free.nrw.commons.settings; import android.Manifest; +import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.MultiSelectListPreference; +import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceFragment; +import android.preference.PreferenceManager; import android.preference.SwitchPreference; import android.text.Editable; import android.text.TextWatcher; @@ -15,10 +18,10 @@ import com.karumi.dexter.Dexter; import com.karumi.dexter.listener.PermissionGrantedResponse; import com.karumi.dexter.listener.single.BasePermissionListener; -import java.util.Arrays; import java.util.Collections; -import java.util.HashSet; -import java.util.Set; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; import javax.inject.Inject; import javax.inject.Named; @@ -30,6 +33,7 @@ import fr.free.nrw.commons.kvstore.JsonKvStore; import fr.free.nrw.commons.logging.CommonsLogSender; import fr.free.nrw.commons.utils.PermissionUtils; import fr.free.nrw.commons.utils.ViewUtil; +import fr.free.nrw.commons.upload.Language; public class SettingsFragment extends PreferenceFragment { @@ -38,6 +42,7 @@ public class SettingsFragment extends PreferenceFragment { JsonKvStore defaultKvStore; @Inject CommonsLogSender commonsLogSender; + private ListPreference listPreference; @Override public void onCreate(Bundle savedInstanceState) { @@ -108,6 +113,8 @@ public class SettingsFragment extends PreferenceFragment { } }); + listPreference = (ListPreference) findPreference("descriptionDefaultLanguagePref"); + prepareLanguages(); Preference betaTesterPreference = findPreference("becomeBetaTester"); betaTesterPreference.setOnPreferenceClickListener(preference -> { Utils.handleWebUrl(getActivity(), Uri.parse(getResources().getString(R.string.beta_opt_in_link))); @@ -133,6 +140,74 @@ public class SettingsFragment extends PreferenceFragment { } } + /** + * Prepares language summary and language codes list and adds them to list preference as pairs. + * Uses previously saved language if there is any, if not uses phone local as initial language. + * Adds preference changed listener and saves value choosen by user to shared preferences + * to remember later + */ + private void prepareLanguages() { + List languageNamesList = new ArrayList<>(); + List languageCodesList = new ArrayList<>(); + List languages = getLanguagesSupportedByDevice(); + + for(Language language: languages) { + // Go through all languages and add them to lists + if(!languageCodesList.contains(language.getLocale().getLanguage())) { + // This if prevents us from adding same language twice + languageNamesList.add(language.getLocale().getDisplayName()); + languageCodesList.add(language.getLocale().getLanguage()); + } + } + + CharSequence[] languageNames = languageNamesList.toArray(new CharSequence[0]); + CharSequence[] languageCodes = languageCodesList.toArray(new CharSequence[0]); + // Add all languages and languages codes to lists preference as pair + listPreference.setEntries(languageNames); + listPreference.setEntryValues(languageCodes); + + // Gets current language code from shared preferences + String languageCode = getCurrentLanguageCode(); + if(languageCode.equals("")){ + // If current language code is empty, means none selected by user yet so use phone local + listPreference.setSummary(Locale.getDefault().getDisplayLanguage()); + listPreference.setValue(Locale.getDefault().getLanguage()); + } else { + // If any language is selected by user previously, use it + int prefIndex = listPreference.findIndexOfValue(languageCode); + listPreference.setSummary(listPreference.getEntries()[prefIndex]); + listPreference.setValue(languageCode); + } + + listPreference.setOnPreferenceChangeListener((preference, newValue) -> { + String userSelectedValue = (String) newValue; + int prefIndex = listPreference.findIndexOfValue(userSelectedValue); + listPreference.setSummary(listPreference.getEntries()[prefIndex]); + saveLanguageValue(userSelectedValue); + return true; + }); + } + + private void saveLanguageValue(String userSelectedValue) { + defaultKvStore.putString(Prefs.KEY_LANGUAGE_VALUE, userSelectedValue); + } + + private String getCurrentLanguageCode() { + return defaultKvStore.getString(Prefs.KEY_LANGUAGE_VALUE, ""); + } + + private List getLanguagesSupportedByDevice() { + List languages = new ArrayList<>(); + Locale[] localesArray = Locale.getAvailableLocales(); + for (Locale locale : localesArray) { + languages.add(new Language(locale)); + } + + Collections.sort(languages, (language, t1) -> language.getLocale().getDisplayName() + .compareTo(t1.getLocale().getDisplayName())); + return languages; + } + /** * First checks for external storage permissions and then sends logs via email */ diff --git a/app/src/main/java/fr/free/nrw/commons/upload/DescriptionsAdapter.java b/app/src/main/java/fr/free/nrw/commons/upload/DescriptionsAdapter.java index a24a791bf..badcd48f8 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/DescriptionsAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/DescriptionsAdapter.java @@ -32,10 +32,12 @@ public class DescriptionsAdapter extends RecyclerView.Adapter selectedLanguages; + private String savedLanguageValue; - public DescriptionsAdapter() { + public DescriptionsAdapter(String savedLanguageValue) { descriptions = new ArrayList<>(); selectedLanguages = new BiMap<>(); + this.savedLanguageValue = savedLanguageValue; } public void setCallback(Callback callback) { @@ -143,14 +145,15 @@ public class DescriptionsAdapter extends RecyclerView.Adapter adapterView, View view, int position, - long l) { + long l) { description.setSelectedLanguageIndex(position); String languageCode = ((SpinnerLanguagesAdapter) adapterView.getAdapter()) .getLanguageCode(position); @@ -159,22 +162,28 @@ public class DescriptionsAdapter extends RecyclerView.Adapter adapterView) { - } }); if (description.getSelectedLanguageIndex() == -1) { - if (position == 0) { - int defaultLocaleIndex = languagesAdapter - .getIndexOfUserDefaultLocale(spinnerDescriptionLanguages.getContext()); - spinnerDescriptionLanguages.setSelection(defaultLocaleIndex, true); + if (savedLanguageValue != null) { + // If user has chosen a default language from settings activity savedLanguageValue is not null + spinnerDescriptionLanguages.setSelection(languagesAdapter.getIndexOfLanguageCode(savedLanguageValue)); } else { - spinnerDescriptionLanguages.setSelection(0); + if (position == 0) { + int defaultLocaleIndex = languagesAdapter + .getIndexOfUserDefaultLocale(spinnerDescriptionLanguages.getContext()); + spinnerDescriptionLanguages.setSelection(defaultLocaleIndex, true); + } else { + spinnerDescriptionLanguages.setSelection(0); + } } + } else { spinnerDescriptionLanguages.setSelection(description.getSelectedLanguageIndex()); selectedLanguages.put(spinnerDescriptionLanguages, description.getLanguageCode()); diff --git a/app/src/main/java/fr/free/nrw/commons/upload/Language.java b/app/src/main/java/fr/free/nrw/commons/upload/Language.java index ab03a4db7..d82796a4a 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/Language.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/Language.java @@ -2,7 +2,7 @@ package fr.free.nrw.commons.upload; import java.util.Locale; -class Language { +public class Language { private Locale locale; private boolean isSet = false; diff --git a/app/src/main/java/fr/free/nrw/commons/upload/SpinnerLanguagesAdapter.java b/app/src/main/java/fr/free/nrw/commons/upload/SpinnerLanguagesAdapter.java index 346f6a4ec..f050568a8 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/SpinnerLanguagesAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/SpinnerLanguagesAdapter.java @@ -1,7 +1,9 @@ package fr.free.nrw.commons.upload; import android.content.Context; +import android.content.SharedPreferences; import android.graphics.Color; +import android.preference.PreferenceManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -16,15 +18,16 @@ import java.util.Locale; import androidx.annotation.NonNull; import androidx.annotation.Nullable; + +import org.apache.commons.lang3.StringUtils; + import butterknife.BindView; import butterknife.ButterKnife; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.settings.Prefs; import fr.free.nrw.commons.utils.BiMap; import fr.free.nrw.commons.utils.LangCodeUtils; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Locale; + public class SpinnerLanguagesAdapter extends ArrayAdapter { @@ -34,11 +37,16 @@ public class SpinnerLanguagesAdapter extends ArrayAdapter { private List languageCodesList; private final BiMap selectedLanguages; public String selectedLangCode=""; + private Context context; + private boolean dropDownClicked; + private String savedLanguageValue; public SpinnerLanguagesAdapter(@NonNull Context context, - int resource, BiMap selectedLanguages) { + int resource, + BiMap selectedLanguages, + String savedLanguageValue) { super(context, resource); this.resource = resource; this.layoutInflater = LayoutInflater.from(context); @@ -46,6 +54,9 @@ public class SpinnerLanguagesAdapter extends ArrayAdapter { languageCodesList = new ArrayList<>(); prepareLanguages(); this.selectedLanguages = selectedLanguages; + this.context = context; + this.dropDownClicked = false; + this.savedLanguageValue = savedLanguageValue; } private void prepareLanguages() { @@ -90,7 +101,9 @@ public class SpinnerLanguagesAdapter extends ArrayAdapter { convertView = layoutInflater.inflate(resource, parent, false); } ViewHolder holder = new ViewHolder(convertView); - holder.init(position, true); + holder.init(position, true, savedLanguageValue); + + dropDownClicked = true; return convertView; } @@ -105,7 +118,7 @@ public class SpinnerLanguagesAdapter extends ArrayAdapter { } else { holder = (ViewHolder) convertView.getTag(); } - holder.init(position, false); + holder.init(position, false, savedLanguageValue); return convertView; } @@ -122,17 +135,23 @@ public class SpinnerLanguagesAdapter extends ArrayAdapter { ButterKnife.bind(this, itemView); } - public void init(int position, boolean isDropDownView) { - final String languageCode = LangCodeUtils.fixLanguageCode(languageCodesList.get(position)); - final String languageName = String.format("%s%s", languageNamesList.get(position) - .substring(0, 1).toUpperCase(), languageNamesList.get(position).substring(1)); + public void init(int position, boolean isDropDownView, String savedLanguageValue) { + String languageCode = LangCodeUtils.fixLanguageCode(languageCodesList.get(position)); + final String languageName = StringUtils.capitalize(languageNamesList.get(position)); + + if(savedLanguageValue.equals("")){ + savedLanguageValue = Locale.getDefault().getLanguage(); + } + if (!isDropDownView) { + if( !dropDownClicked){ + languageCode = LangCodeUtils.fixLanguageCode(savedLanguageValue); + } view.setVisibility(View.GONE); - if(languageCode.length()>2) - tvLanguage.setText(languageCode.subSequence(0,2)); + if (languageCode.length() > 2) + tvLanguage.setText(languageCode.substring(0, 2)); else tvLanguage.setText(languageCode); - } else { view.setVisibility(View.VISIBLE); if (languageCodesList.get(position).isEmpty()) { @@ -141,7 +160,7 @@ public class SpinnerLanguagesAdapter extends ArrayAdapter { } else { tvLanguage.setText( String.format("%s [%s]", languageName, languageCode)); - if(selectedLanguages.containsKey(languageCodesList.get(position))&& + if (selectedLanguages.containsKey(languageCodesList.get(position)) && !languageCodesList.get(position).equals(selectedLangCode)) { tvLanguage.setTextColor(Color.GRAY); } @@ -158,4 +177,7 @@ public class SpinnerLanguagesAdapter extends ArrayAdapter { return languageCodesList.indexOf(context.getResources().getConfiguration().locale.getLanguage()); } + int getIndexOfLanguageCode(String languageCode) { + return languageCodesList.indexOf(languageCode); + } } diff --git a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java index 0b589fc77..3c7c96bbe 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java @@ -32,6 +32,7 @@ import java.util.List; import java.util.Locale; import javax.inject.Inject; +import javax.inject.Named; import butterknife.BindView; import butterknife.ButterKnife; @@ -39,8 +40,10 @@ import butterknife.OnClick; import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.filepicker.UploadableFile; +import fr.free.nrw.commons.kvstore.JsonKvStore; import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.nearby.Place; +import fr.free.nrw.commons.settings.Prefs; import fr.free.nrw.commons.upload.Description; import fr.free.nrw.commons.upload.DescriptionsAdapter; import fr.free.nrw.commons.upload.SimilarImageDialogFragment; @@ -86,6 +89,11 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements @Inject UploadMediaDetailsContract.UserActionListener presenter; + + @Inject + @Named("default_preferences") + JsonKvStore defaultKvStore; + private UploadableFile uploadableFile; private String source; private Place place; @@ -214,7 +222,7 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements * init the recycler veiw */ private void initRecyclerView() { - descriptionsAdapter = new DescriptionsAdapter(); + descriptionsAdapter = new DescriptionsAdapter(defaultKvStore.getString(Prefs.KEY_LANGUAGE_VALUE,"")); descriptionsAdapter.setCallback(this::showInfoAlert); rvDescriptions.setLayoutManager(new LinearLayoutManager(getContext())); rvDescriptions.setAdapter(descriptionsAdapter); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0c6ba28f0..ac9d2e736 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -558,4 +558,5 @@ Upload your first media by tapping on the add button. Cancelled Upload There is no data for previous image\'s title or description Why should %1$s be deleted? + Default description language diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 9ab4d5f5f..cdeaa8366 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -29,6 +29,11 @@ android:inputType="number" android:maxLength="3" /> + + Date: Mon, 24 Jun 2019 16:43:08 +0200 Subject: [PATCH 3/4] Localisation updates from https://translatewiki.net. --- app/src/main/res/values-ar/strings.xml | 1 + app/src/main/res/values-ja/strings.xml | 36 ++++++++++++++++++++++++-- app/src/main/res/values-my/strings.xml | 2 +- app/src/main/res/values-sv/strings.xml | 3 +++ app/src/main/res/values-zh/strings.xml | 3 +++ 5 files changed, 42 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index ccbaa9ca7..bd05c7cd3 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -535,4 +535,5 @@ تم إلغاء الرفع لا توجد بيانات لعنوان أو وصف الصورة السابقة لماذا يجب حذف %1$s؟ + لغة الوصف الافتراضية diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 8d23998f9..7f32291b6 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -13,11 +13,13 @@ * Whym * Yusuke1109 * Yuukin0248 +* 神樂坂秀吉 --> 表示 全般 フィードバック + プライバシー 場所 コモンズ @@ -108,7 +110,10 @@ まだ写真をアップロードしていません。 再試行 キャンセル - この画像は%1$sライセンスのもとにアップロードされます。 + + この画像は%1$sライセンスのもとにアップロードされます + これらの画像は%1$sライセンスのもとにアップロードされます + この画像の投稿に当たり、私はこれが自分自身の作品であり、著作権のあるコンテンツや自撮りは含まれていないと宣言します。 ダウンロード 既定のライセンス @@ -162,6 +167,7 @@ 読み込み中… ファイルを選択していません 説明はありません。 + 議論なし 不明なライセンス 更新 必要な権限:外部ストレージを読み込みます。これがなければアプリはギャラリーを開けません。 @@ -175,6 +181,7 @@ いいえ タイトル 記述 + 議論 作者 アップロード日時 ライセンス @@ -185,6 +192,7 @@ 2段階認証コード 最近のアップロードファイルに表示する最大件数 最大限 + 無効な入力 表示できるのは500件以下です 最近のアップロード上限件数 2段階認証は現在サポートされていません。 @@ -219,6 +227,7 @@ チュートリアル 通知 秀逸 + 査読 場所の権限がないため、近くの場所を表示できません 説明がありません コモンズのファイルページ @@ -279,11 +288,14 @@ 今日の一枚 検索 検索 + 最近の検索: カテゴリ ウィキデータの%1$sに画像を追加しました ! 対応するウィキデータの更新に失敗しました! 壁紙として設定 壁紙の設定ができました! + 終了 + 質問 結果 続行 アプリをシェアする @@ -297,12 +309,20 @@ 削除候補 削除 統計 + 投稿記録 + 付近 + 一覧 + 次へ + 前へ 送信 %1$d 件のアップロード ブックマーク ブックマーク + 画像 + 位置 + ブックマーク ブックマーク 全世界 アメリカ @@ -311,7 +331,19 @@ アフリカ アジア 太平洋地域 + 以後、表示しない 完了 - 次の画像 + 感謝を示す + 感謝を示す + 次の画像 + アーカイブ済みを表示 + 未読を見る お待ちください… + 作者 + 著作権 + 位置 + 撮影機器のモデル名 + シリアル番号 + ソフトウェア + 画像情報 diff --git a/app/src/main/res/values-my/strings.xml b/app/src/main/res/values-my/strings.xml index 5192a1553..9a875e9c7 100644 --- a/app/src/main/res/values-my/strings.xml +++ b/app/src/main/res/values-my/strings.xml @@ -209,7 +209,7 @@ ကျော်ရန် အကောင့်ဝင်ရန် အကောင့်ထဲဝင်ခြင်းကို အမှန်တကယ် ကျော်သွားလိုပါသလား - သင် ရုပ်ပုံများ တင်နိုင်လိမ့်မည်မဟုတ်ပါ။ + အနာဂတ်ကာလတွင် ရုပ်ပုံများတင်ရန် အကောင့်ထဲဝင်ရပါမည်။ ဤအင်္ဂါရပ်ကို အသုံးပြုရန် အကောင့်ထဲသို့ဝင်ပါ တည်နေရာ မပြောင်းလဲပါ တည်နေရာ မရရှိနိုင်ပါ diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 64003204b..11816015f 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -526,5 +526,8 @@ Ladda upp foton till Wikimedia Commons på din telefon Ladda ned Commons-appen: %1$s Dela appen via... Bildinfo + Inga kategorier hittades + Uppladdning avbröts + Det finns ingen data för den föregående bildens titel eller beskrivning Varför bör %1$s raderas? diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index b14f94e95..741f818bf 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -456,6 +456,8 @@ 完成 在讨论页上通知用户 不确定 + 发送感谢成功 + 发送感谢失败 发送感谢 发送感谢 向%1$s发送感谢 @@ -493,6 +495,7 @@ 著作权 位置 相机型号 + 序列号 软件 分享到... 图像信息 From 4ec92c2e7b7f70a073134bfdfda5c0ab3d56fe3d Mon Sep 17 00:00:00 2001 From: sherlockbeard <46790654+sherlockbeard@users.noreply.github.com> Date: Wed, 26 Jun 2019 19:36:41 +0530 Subject: [PATCH 4/4] fixes the string issue (#3041) * fix strings * Update activity_achievements.xml --- .../achievements/AchievementsActivity.java | 2 +- .../nrw/commons/explore/SearchActivity.java | 4 +-- .../explore/categories/ExploreActivity.java | 4 +-- .../RecentSearchesFragment.java | 2 +- .../nrw/commons/review/ReviewActivity.java | 2 +- .../main/res/layout/activity_achievements.xml | 6 ++-- app/src/main/res/layout/activity_review.xml | 3 +- .../main/res/layout/bottom_sheet_details.xml | 6 ++-- app/src/main/res/values/strings.xml | 28 +++++++++---------- 9 files changed, 31 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/achievements/AchievementsActivity.java b/app/src/main/java/fr/free/nrw/commons/achievements/AchievementsActivity.java index 38198b024..e701d68a7 100644 --- a/app/src/main/java/fr/free/nrw/commons/achievements/AchievementsActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/achievements/AchievementsActivity.java @@ -355,7 +355,7 @@ public class AchievementsActivity extends NavigationBaseActivity { imagesUsedByWikiProgressBar.setProgressTextFormatPattern (achievements.getUniqueUsedImages() + "/" + levelInfo.getMaxUniqueImages()); imagesFeatured.setText(String.valueOf(achievements.getFeaturedImages())); - String levelUpInfoString = getString(R.string.level); + String levelUpInfoString = getString(R.string.level).toUpperCase(); levelUpInfoString += " " + levelInfo.getLevelNumber(); levelNumber.setText(levelUpInfoString); imageView.setImageDrawable(VectorDrawableCompat.create(getResources(), R.drawable.badge, diff --git a/app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java b/app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java index 6ca0a13af..2d5dbd331 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java @@ -90,9 +90,9 @@ public class SearchActivity extends NavigationBaseActivity implements MediaDetai searchImageFragment = new SearchImageFragment(); searchCategoryFragment= new SearchCategoryFragment(); fragmentList.add(searchImageFragment); - titleList.add(getResources().getString(R.string.search_tab_title_media)); + titleList.add(getResources().getString(R.string.search_tab_title_media).toUpperCase()); fragmentList.add(searchCategoryFragment); - titleList.add(getResources().getString(R.string.search_tab_title_categories)); + titleList.add(getResources().getString(R.string.search_tab_title_categories).toUpperCase()); viewPagerAdapter.setTabData(fragmentList, titleList); viewPagerAdapter.notifyDataSetChanged(); diff --git a/app/src/main/java/fr/free/nrw/commons/explore/categories/ExploreActivity.java b/app/src/main/java/fr/free/nrw/commons/explore/categories/ExploreActivity.java index 1fa403a6a..1bc88c5a8 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/categories/ExploreActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/categories/ExploreActivity.java @@ -93,14 +93,14 @@ public class ExploreActivity featuredArguments.putString("categoryName", FEATURED_IMAGES_CATEGORY); featuredImagesListFragment.setArguments(featuredArguments); fragmentList.add(featuredImagesListFragment); - titleList.add(getString(R.string.explore_tab_title_featured)); + titleList.add(getString(R.string.explore_tab_title_featured).toUpperCase()); mobileImagesListFragment = new CategoryImagesListFragment(); Bundle mobileArguments = new Bundle(); mobileArguments.putString("categoryName", MOBILE_UPLOADS_CATEGORY); mobileImagesListFragment.setArguments(mobileArguments); fragmentList.add(mobileImagesListFragment); - titleList.add(getString(R.string.explore_tab_title_mobile)); + titleList.add(getString(R.string.explore_tab_title_mobile).toUpperCase()); viewPagerAdapter.setTabData(fragmentList, titleList); viewPagerAdapter.notifyDataSetChanged(); diff --git a/app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesFragment.java b/app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesFragment.java index a42299dda..823930add 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesFragment.java @@ -74,7 +74,7 @@ public class RecentSearchesFragment extends CommonsDaggerSupportFragment { recentSearchesList.setOnItemLongClickListener((parent, view, position, id) -> { new AlertDialog.Builder(getContext()) .setMessage(R.string.delete_search_dialog) - .setPositiveButton(R.string.delete,((dialog, which) -> { + .setPositiveButton(getString(R.string.delete).toUpperCase(),((dialog, which) -> { recentSearchesDao.delete(recentSearchesDao.find(recentSearches.get(position))); recentSearches = recentSearchesDao.recentSearches(10); adapter = new ArrayAdapter<>(getContext(), R.layout.item_recent_searches, recentSearches); diff --git a/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java b/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java index cbb9848ca..7437e63bb 100644 --- a/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java @@ -199,7 +199,7 @@ public class ReviewActivity extends AuthenticatedActivity { public void showSkipImageInfo(){ DialogUtil.showAlertDialog(ReviewActivity.this, - getString(R.string.skip_image), + getString(R.string.skip_image).toUpperCase(), getString(R.string.skip_image_explanation), getString(android.R.string.ok), "", diff --git a/app/src/main/res/layout/activity_achievements.xml b/app/src/main/res/layout/activity_achievements.xml index 2b709e4aa..b81831e96 100644 --- a/app/src/main/res/layout/activity_achievements.xml +++ b/app/src/main/res/layout/activity_achievements.xml @@ -43,7 +43,8 @@ android:layout_marginStart="@dimen/activity_margin_horizontal" android:layout_marginTop="@dimen/activity_margin_horizontal" android:text="@string/level" - android:id="@+id/achievement_level" /> + android:id="@+id/achievement_level" + android:textAllCaps="true"/> + android:layout_marginTop="@dimen/activity_margin_vertical" + android:textAllCaps="true"/> + android:textColor="@color/button_blue_dark" + android:textAllCaps="true"/> @@ -174,7 +176,7 @@ android:textColor="@color/text_color_selector" android:layout_gravity="center_horizontal" android:text="@string/nearby_wikipedia" - + android:textAllCaps="true" /> @@ -204,7 +206,7 @@ android:textColor="@color/text_color_selector" android:layout_gravity="center_horizontal" android:text="@string/nearby_commons" - + android:textAllCaps="true" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ac9d2e736..5e5960be2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -279,18 +279,18 @@ Location has not changed. Location not available. Permission required to display a list of nearby places - GET DIRECTIONS - READ ARTICLE + Get directions + Read article Welcome to Wikimedia Commons, %1$s! We\'re glad you\'re here. %1$s left a message on your talk page Thank you for making an edit %1$s mentioned you on %2$s. Toggle view - DIRECTIONS - WIKIDATA - WIKIPEDIA - COMMONS + Directions + Wikidata + Wikipedia + Commons Rate us]]> FAQ]]> Skip Tutorial @@ -327,10 +327,10 @@ Recently searched queries Error occurred while loading categories. Error occurred while loading subcategories. - MEDIA - CATEGORIES - FEATURED - UPLOADED VIA MOBILE + Media + Categories + Featured + Uploaded via mobile Image successfully added to %1$s on Wikidata! Failed to update corresponding Wikidata entity! @@ -366,14 +366,14 @@ Do you want to delete this search? Search history deleted Nominate For Deletion - DELETE + Delete Achievements - STATISTICS + Statistics Thanks Received Featured Images Images via \"Nearby Places\" - LEVEL + Level Images Uploaded Images Not Reverted Images Used @@ -537,7 +537,7 @@ Upload your first media by tapping on the add button. Click to reuse the title and description you entered in your previous picture and modify it to fit your current one Examples of good images to upload to Commons Examples of images not to upload - SKIP THIS IMAGE + Skip this image Download Failed!!. We cannot download the file without external storage permission. Manage EXIF Tags