Merge branch 'master' into 2.11-release

This commit is contained in:
Vivek Maskara 2019-06-26 21:14:21 +05:30 committed by GitHub
commit 31b5179371
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 299 additions and 61 deletions

View file

@ -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,

View file

@ -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();

View file

@ -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();

View file

@ -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);

View file

@ -195,7 +195,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),
"",

View file

@ -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";

View file

@ -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<String> languageNamesList = new ArrayList<>();
List<String> languageCodesList = new ArrayList<>();
List<Language> 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<Language> getLanguagesSupportedByDevice() {
List<Language> 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
*/

View file

@ -32,10 +32,12 @@ public class DescriptionsAdapter extends RecyclerView.Adapter<DescriptionsAdapte
private Callback callback;
private BiMap<AdapterView, String> 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,7 +145,8 @@ public class DescriptionsAdapter extends RecyclerView.Adapter<DescriptionsAdapte
private void initLanguageSpinner(int position, Description description) {
SpinnerLanguagesAdapter languagesAdapter = new SpinnerLanguagesAdapter(
spinnerDescriptionLanguages.getContext(),
R.layout.row_item_languages_spinner, selectedLanguages);
R.layout.row_item_languages_spinner, selectedLanguages,
savedLanguageValue);
languagesAdapter.notifyDataSetChanged();
spinnerDescriptionLanguages.setAdapter(languagesAdapter);
@ -159,15 +162,19 @@ public class DescriptionsAdapter extends RecyclerView.Adapter<DescriptionsAdapte
selectedLanguages.put(adapterView, languageCode);
((SpinnerLanguagesAdapter) adapterView
.getAdapter()).selectedLangCode = languageCode;
Timber.d("Description language code is: "+languageCode);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
if (description.getSelectedLanguageIndex() == -1) {
if (savedLanguageValue != null) {
// If user has chosen a default language from settings activity savedLanguageValue is not null
spinnerDescriptionLanguages.setSelection(languagesAdapter.getIndexOfLanguageCode(savedLanguageValue));
} else {
if (position == 0) {
int defaultLocaleIndex = languagesAdapter
.getIndexOfUserDefaultLocale(spinnerDescriptionLanguages.getContext());
@ -175,6 +182,8 @@ public class DescriptionsAdapter extends RecyclerView.Adapter<DescriptionsAdapte
} else {
spinnerDescriptionLanguages.setSelection(0);
}
}
} else {
spinnerDescriptionLanguages.setSelection(description.getSelectedLanguageIndex());
selectedLanguages.put(spinnerDescriptionLanguages, description.getLanguageCode());

View file

@ -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;

View file

@ -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<String> languageCodesList;
private final BiMap<AdapterView, String> selectedLanguages;
public String selectedLangCode="";
private Context context;
private boolean dropDownClicked;
private String savedLanguageValue;
public SpinnerLanguagesAdapter(@NonNull Context context,
int resource, BiMap<AdapterView, String> selectedLanguages) {
int resource,
BiMap<AdapterView, String> 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));
tvLanguage.setText(languageCode.substring(0, 2));
else
tvLanguage.setText(languageCode);
} else {
view.setVisibility(View.VISIBLE);
if (languageCodesList.get(position).isEmpty()) {
@ -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);
}
}

View file

@ -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);

View file

@ -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"/>
<ImageView
android:id="@+id/achievement_info"
@ -280,7 +281,8 @@
style="?android:textAppearanceLarge"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginTop="@dimen/activity_margin_vertical" />
android:layout_marginTop="@dimen/activity_margin_vertical"
android:textAllCaps="true"/>
<RelativeLayout
android:layout_width="match_parent"

View file

@ -29,7 +29,8 @@
android:drawablePadding="12dp"
android:drawableTint="@color/button_blue_dark"
android:text="@string/skip_image"
android:textColor="@color/button_blue_dark"/>
android:textColor="@color/button_blue_dark"
android:textAllCaps="true"/>
<RelativeLayout
android:layout_width="match_parent"

View file

@ -116,6 +116,7 @@
android:textColor="@color/text_color_selector"
android:layout_gravity="center_horizontal"
android:text="@string/nearby_directions"
android:textAllCaps="true"
/>
</LinearLayout>
<LinearLayout
@ -144,6 +145,7 @@
android:textColor="@color/text_color_selector"
android:layout_gravity="center_horizontal"
android:text="@string/nearby_wikidata"
android:textAllCaps="true"
/>
</LinearLayout>
@ -174,7 +176,7 @@
android:textColor="@color/text_color_selector"
android:layout_gravity="center_horizontal"
android:text="@string/nearby_wikipedia"
android:textAllCaps="true"
/>
</LinearLayout>
@ -204,7 +206,7 @@
android:textColor="@color/text_color_selector"
android:layout_gravity="center_horizontal"
android:text="@string/nearby_commons"
android:textAllCaps="true"
/>
</LinearLayout>
</LinearLayout>

View file

@ -535,4 +535,5 @@
<string name="upload_cancelled">تم إلغاء الرفع</string>
<string name="previous_image_title_description_not_found">لا توجد بيانات لعنوان أو وصف الصورة السابقة</string>
<string name="dialog_box_text_nomination">لماذا يجب حذف %1$s؟</string>
<string name="default_description_language">لغة الوصف الافتراضية</string>
</resources>

View file

@ -10,6 +10,7 @@
* Guycn2
* Inkbug
* Nurick
* Steeve815
* Strayblues
* Uziel302
* YaronSh
@ -21,6 +22,7 @@
<string name="preference_category_appearance">מראה</string>
<string name="preference_category_general">כללי</string>
<string name="preference_category_feedback">משוב</string>
<string name="preference_category_privacy">פרטיות</string>
<string name="preference_category_location">מיקום</string>
<string name="app_name">ויקישיתוף</string>
<string name="bullet"></string>
@ -518,7 +520,20 @@
<string name="welcome_dont_upload_content_description">דוגמאות של תמונות שאין להעלות</string>
<string name="skip_image">דילוג על התמונה הזאת</string>
<string name="download_failed_we_cannot_download_the_file_without_storage_permission">ההורדה נכשלה!! אין לנו אפשרות להוריד את הקובץ ללא הרשאות גישה לאחסון חיצוני.</string>
<string name="manage_exif_tags">ניהול תגיות EXIF</string>
<string name="manage_exif_tags_summary">לבחור אילו תגיות EXIF יישארו בהעלאות</string>
<string name="exif_tag_name_author">יוצר</string>
<string name="exif_tag_name_copyright">זכויות יוצרים</string>
<string name="exif_tag_name_location">מיקום</string>
<string name="exif_tag_name_cameraModel">דגם המצלמה</string>
<string name="exif_tag_name_lensModel">דגם העדשה</string>
<string name="exif_tag_name_serialNumbers">מספרים סידוריים</string>
<string name="exif_tag_name_software">תוכנה</string>
<string name="share_text">כדי להעלות תמונות לוויקינתונים של ויקימדיה בעזרת הטלפון שלך יש להוריד את היישומון של ויקינתונים: %1$s</string>
<string name="share_via">שיתוף אפליקציה דרך...</string>
<string name="image_info">פרטי תמונה</string>
<string name="no_categories_found">לא נמצאו קטגוריות</string>
<string name="upload_cancelled">ההעלאה בוטלה</string>
<string name="previous_image_title_description_not_found">אין נתונים עבור הכותרת או התיאור התמונה הקודמת</string>
<string name="dialog_box_text_nomination">למה %1$s צריך להימחק?</string>
</resources>

View file

@ -13,11 +13,13 @@
* Whym
* Yusuke1109
* Yuukin0248
* 神樂坂秀吉
-->
<resources>
<string name="preference_category_appearance">表示</string>
<string name="preference_category_general">全般</string>
<string name="preference_category_feedback">フィードバック</string>
<string name="preference_category_privacy">プライバシー</string>
<string name="preference_category_location">場所</string>
<string name="app_name">コモンズ</string>
<string name="bullet"></string>
@ -108,7 +110,10 @@
<string name="no_uploads_yet">まだ写真をアップロードしていません。</string>
<string name="menu_retry_upload">再試行</string>
<string name="menu_cancel_upload">キャンセル</string>
<string name="share_license_summary" fuzzy="true">この画像は%1$sライセンスのもとにアップロードされます。</string>
<plurals name="share_license_summary">
<item quantity="one">この画像は%1$sライセンスのもとにアップロードされます</item>
<item quantity="other">これらの画像は%1$sライセンスのもとにアップロードされます</item>
</plurals>
<string name="media_upload_policy">この画像の投稿に当たり、私はこれが自分自身の作品であり、著作権のあるコンテンツや自撮りは含まれていないと宣言します。</string>
<string name="menu_download">ダウンロード</string>
<string name="preference_license">既定のライセンス</string>
@ -162,6 +167,7 @@
<string name="detail_panel_cats_loading">読み込み中…</string>
<string name="detail_panel_cats_none">ファイルを選択していません</string>
<string name="detail_description_empty">説明はありません。</string>
<string name="detail_discussion_empty">議論なし</string>
<string name="detail_license_empty">不明なライセンス</string>
<string name="menu_refresh">更新</string>
<string name="read_storage_permission_rationale">必要な権限:外部ストレージを読み込みます。これがなければアプリはギャラリーを開けません。</string>
@ -175,6 +181,7 @@
<string name="no">いいえ</string>
<string name="media_detail_title">タイトル</string>
<string name="media_detail_description">記述</string>
<string name="media_detail_discussion">議論</string>
<string name="media_detail_author">作者</string>
<string name="media_detail_uploaded_date">アップロード日時</string>
<string name="media_detail_license">ライセンス</string>
@ -185,6 +192,7 @@
<string name="_2fa_code">2段階認証コード</string>
<string name="number_of_uploads">最近のアップロードファイルに表示する最大件数</string>
<string name="maximum_limit">最大限</string>
<string name="invalid_input">無効な入力</string>
<string name="maximum_limit_alert">表示できるのは500件以下です</string>
<string name="set_limit">最近のアップロード上限件数</string>
<string name="login_failed_2fa_not_supported">2段階認証は現在サポートされていません。</string>
@ -219,6 +227,7 @@
<string name="navigation_item_info">チュートリアル</string>
<string name="navigation_item_notification">通知</string>
<string name="navigation_item_featured_images">秀逸</string>
<string name="navigation_item_review">査読</string>
<string name="nearby_needs_permissions">場所の権限がないため、近くの場所を表示できません</string>
<string name="no_description_found">説明がありません</string>
<string name="nearby_info_menu_commons_article">コモンズのファイルページ</string>
@ -279,11 +288,14 @@
<string name="app_widget_heading">今日の一枚</string>
<string name="menu_search_button">検索</string>
<string name="title_activity_search">検索</string>
<string name="search_recent_header">最近の検索:</string>
<string name="search_tab_title_categories">カテゴリ</string>
<string name="successful_wikidata_edit">ウィキデータの%1$sに画像を追加しました !</string>
<string name="wikidata_edit_failure">対応するウィキデータの更新に失敗しました!</string>
<string name="menu_set_wallpaper">壁紙として設定</string>
<string name="wallpaper_set_successfully">壁紙の設定ができました!</string>
<string name="quiz">終了</string>
<string name="question">質問</string>
<string name="result">結果</string>
<string name="continue_message">続行</string>
<string name="share_app_title">アプリをシェアする</string>
@ -297,12 +309,20 @@
<string name="nominate_delete">削除候補</string>
<string name="delete">削除</string>
<string name="statistics">統計</string>
<string name="contributions_fragment">投稿記録</string>
<string name="nearby_fragment">付近</string>
<string name="list_sheet">一覧</string>
<string name="next">次へ</string>
<string name="previous">前へ</string>
<string name="submit">送信</string>
<plurals name="upload_count_title">
<item quantity="other">%1$d 件のアップロード</item>
</plurals>
<string name="navigation_item_bookmarks">ブックマーク</string>
<string name="title_activity_bookmarks">ブックマーク</string>
<string name="title_page_bookmarks_pictures">画像</string>
<string name="title_page_bookmarks_locations">位置</string>
<string name="provider_bookmarks">ブックマーク</string>
<string name="provider_bookmarks_location">ブックマーク</string>
<string name="desc_language_Worldwide">全世界</string>
<string name="desc_language_America">アメリカ</string>
@ -311,7 +331,19 @@
<string name="desc_language_Africa">アフリカ</string>
<string name="desc_language_Asia">アジア</string>
<string name="desc_language_Pacific">太平洋地域</string>
<string name="never_ask_again">以後、表示しない</string>
<string name="nominate_for_deletion_done">完了</string>
<string name="review_thanks_no_button_text" fuzzy="true">次の画像</string>
<string name="send_thank_send">感謝を示す</string>
<string name="send_thank_notification_title">感謝を示す</string>
<string name="review_thanks_no_button_text">次の画像</string>
<string name="menu_option_archived">アーカイブ済みを表示</string>
<string name="menu_option_unread">未読を見る</string>
<string name="please_wait">お待ちください…</string>
<string name="exif_tag_name_author">作者</string>
<string name="exif_tag_name_copyright">著作権</string>
<string name="exif_tag_name_location">位置</string>
<string name="exif_tag_name_cameraModel">撮影機器のモデル名</string>
<string name="exif_tag_name_serialNumbers">シリアル番号</string>
<string name="exif_tag_name_software">ソフトウェア</string>
<string name="image_info">画像情報</string>
</resources>

View file

@ -464,4 +464,6 @@
<string name="exif_tag_name_software">소프트웨어</string>
<string name="share_via">앱 공유...</string>
<string name="image_info">이미지 정보</string>
<string name="no_categories_found">분류가 없습니다</string>
<string name="upload_cancelled">업로드 취소됨</string>
</resources>

View file

@ -83,7 +83,10 @@
<string name="no_uploads_yet">သင် မည်သည့်ဓာတ်ပုံကိုမှ မတင်ရသေးပါ။</string>
<string name="menu_retry_upload">ပြန်လုပ်</string>
<string name="menu_cancel_upload">မလုပ်တော့</string>
<string name="share_license_summary" fuzzy="true">ဤရုပ်ပုံသည် %1$ အောက်တွင် လိုင်စင်သတ်မှတ်ထးပါမည်</string>
<plurals name="share_license_summary">
<item quantity="one">ဤရုပ်ပုံသည် %1$ အောက်တွင် လိုင်စင်သတ်မှတ်ထးပါမည်</item>
<item quantity="other">ဤရုပ်ပုံများသည် %1$ အောက်တွင် လိုင်စင်သတ်မှတ်ထးပါမည်</item>
</plurals>
<string name="menu_download">ဒေါင်းလုပ်ယူရန်</string>
<string name="preference_license">နဂို လိုင်စင်</string>
<string name="use_previous">ယခင် ခေါင်းစဉ်/ဖော်ပြချက် သုံးမည်</string>
@ -197,6 +200,7 @@
<string name="give_permission">ခွင့်ပြုချက် ပေးမည်</string>
<string name="use_external_storage">ပြင်ပြသိုလှောင်ခန်းကို သုံးမည်</string>
<string name="login_to_your_account">သင်၏အကောင့်သို့ ဝင်ရန်</string>
<string name="no_web_browser">URL ဖွင့်ရန် ဝဘ်ဘရောက်ဆာ မတွေ့ရှိပါ</string>
<string name="null_url">အမှား! URL မတွေ့ရှိပါ</string>
<string name="nominate_deletion">ဖျက်ပစ်ရန် အဆိုပြုပါ</string>
<string name="nominated_for_deletion">ဤရုပ်ပုံအား ဖျက်ပစ်ရန် အဆိုပြုခံထားရသည်။</string>
@ -205,7 +209,7 @@
<string name="skip_login">ကျော်ရန်</string>
<string name="navigation_item_login">အကောင့်ဝင်ရန်</string>
<string name="skip_login_title">အကောင့်ထဲဝင်ခြင်းကို အမှန်တကယ် ကျော်သွားလိုပါသလား</string>
<string name="skip_login_message" fuzzy="true">သင် ရုပ်ပုံများ တင်နိုင်လိမ့်မည်မဟုတ်ပါ</string>
<string name="skip_login_message">အနာဂတ်ကာလတွင် ရုပ်ပုံများတင်ရန် အကောင့်ထဲဝင်ရပါမည်</string>
<string name="login_alert_message">ဤအင်္ဂါရပ်ကို အသုံးပြုရန် အကောင့်ထဲသို့ဝင်ပါ</string>
<string name="nearby_location_has_not_changed">တည်နေရာ မပြောင်းလဲပါ</string>
<string name="nearby_location_not_available">တည်နေရာ မရရှိနိုင်ပါ</string>
@ -259,6 +263,7 @@
<string name="continue_message">ဆက်လက်</string>
<string name="correct">အဖြေမှန်</string>
<string name="wrong">အဖြေမှား</string>
<string name="share_coordinates_not_present">ရုပ်ပုံရွေးချယ်စဉ်အတွင်း ကိုဩဒိနိတ်များကို မသတ်မှတ်ထားပါ</string>
<string name="add_description">+ ဖော်ပြချက် ထည့်ရန်</string>
<string name="no_recent_searches">လတ်တလော ရှာဖွေမှုများ မရှိပါ</string>
<string name="delete_recent_searches_dialog">သင့်ရှာဖွေမှု ရာဇဝင်ကို ရှင်းလင်းမည်မှာ သေချာပါသလား?</string>
@ -284,6 +289,8 @@
<string name="display_nearby_notification">အနီးအနားအသိပေးချက်ကို ပြသရန်</string>
<string name="list_sheet">စာရင်း</string>
<string name="storage_permission">သိုလှောင်ခန်း ခွင်ပြုချက်</string>
<string name="write_storage_permission_rationale_for_image_share">ရုပ်ပုံများ အက်ပလုဒ်တင်ရန်အတွက် သင်၏စက်ပစ္စည်းပြင်ပသိုလှောင်ခန်းကို ဝင်ရောက်ခွင့်ရရှိရန် ခွင့်ပြုချက်လိုအပ်နေပါသည်။</string>
<string name="step_count">%2$d ၏ အဆင့် %1$d</string>
<string name="next">ရှေ့</string>
<string name="previous">နောက်</string>
<string name="submit">ထည့်သွင်းရန်</string>
@ -297,6 +304,11 @@
<string name="title_page_bookmarks_locations">တည်နေရာများ</string>
<string name="provider_bookmarks">ဖတ်ရန်မှတ်ထားမှုများ</string>
<string name="provider_bookmarks_location">ဖတ်ရန်မှတ်ထားမှုများ</string>
<string name="deletion_reason_uploaded_by_mistake">ယင်းအား မှားယွင်းပြီး အက်ပလုဒ်တင်ခဲ့မိသည်</string>
<string name="deletion_reason_publicly_visible">ယင်းသည် အများကြည့်ရှုနိုင်သည်ဟု မသိရှိခဲ့ပါ</string>
<string name="deletion_reason_bad_for_my_privacy">ယင်းသည် မိမိ၏ကိုယ်ရေးကိုယ်တာလုံရေးအတွက် မကောင်းမှန်းသိလိုက်ပါပြီ</string>
<string name="deletion_reason_no_longer_want_public">စိတ်ပြောင်းသွားပါပြီ၊ ယင်းအား အများသူငှာကြည့်ရှုနိုင်စေရန် မလိုလားတော့ပါ။</string>
<string name="deletion_reason_not_interesting">စိတ်မကောင်းပါ ဤရုပ်ပုံသည် စွယ်စုံကျမ်းအတွက် စိတ်ဝင်စားဖွယ်မကောင်းပါ</string>
<string name="desc_language_Worldwide">တစ်ကမ္ဘာလုံး</string>
<string name="desc_language_America">အမေရိက</string>
<string name="desc_language_Europe">ဥရောပ</string>
@ -312,6 +324,10 @@
<string name="never_ask_again">နောက်တခါ ထပ်မမေးပါနှင့်</string>
<string name="display_location_permission_title">တည်နေရာခွင့်ပြုချက်ကို ပြသရန်</string>
<string name="ends_on">ပြီးဆုံးမည်-</string>
<string name="this_function_needs_network_connection">ဤလုပ်ဆောင်ချက်သည် ကွန်ရက်ချိတ်ဆက်မှုကိုလိုအပ်သည်၊ သင်၏ချိတ်ဆက်မှု အပြင်အဆင်များကို စစ်ဆေးပါ။</string>
<string name="error_processing_image">ရုပ်ပုံကို ပရိုဆက်ဆင်းလုပ်နေစဉ် အမှားဖြစ်ပွားခဲ့သည်။ ထပ်မံကြိုးစားကြည့်ပါ။</string>
<string name="check_category_edit_summary">ကဏ္ဍစစ်ဆေးမှု တောင်းဆိုနေသည်</string>
<string name="check_category_success_title">ကဏ္ဍစစ်ဆေးမှု တောင်းဆိုခဲ့သည်</string>
<string name="nominate_for_deletion_done">ပြီးပြီ</string>
<string name="nominate_for_deletion_notify_user">ဆွေးနွေးချက်စာမျက်နှာပေါ်တွင် အသုံးပြုသူအား အသိပေးခြင်း</string>
<string name="notsure">မသေချာပါ</string>
@ -334,6 +350,7 @@
<string name="please_wait">ကျေးဇူးပြု၍ ခဏစောင့်ပါ...</string>
<string name="welcome_dont_upload_content_description">နမူနာရုပ်ပုံများ အက်ပလုပ်တင်ရန် မဟုတ်ပါ</string>
<string name="skip_image">ဤရုပ်ပုံအား ကျော်သွားမည်</string>
<string name="download_failed_we_cannot_download_the_file_without_storage_permission">ဒေါင်းလုဒ် မအောင်မြင်ပါ။ ပြင်ပသိုလှောင်မှုခွင့်ပြုချက်မရှိဘဲ ဖိုင်ဒေါင်းလုဒ်မဆွဲနိုင်ပါ။</string>
<string name="exif_tag_name_author">ဖန်တီးသူ</string>
<string name="exif_tag_name_copyright">မူပိုင်ခွင့်</string>
<string name="exif_tag_name_location">တည်နေရာ</string>

View file

@ -534,4 +534,8 @@
<string name="share_text">Carregar fotografias na wiki Wikimedia Commons, do seu telemóvel Descarregar a aplicação Commons: %1$s</string>
<string name="share_via">Partilhar aplicação por...</string>
<string name="image_info">Informação da imagem</string>
<string name="no_categories_found">Não foi encontrada nenhuma categoria</string>
<string name="upload_cancelled">Carregamento cancelado</string>
<string name="previous_image_title_description_not_found">Não há dados para o título ou descrição da imagem anterior</string>
<string name="dialog_box_text_nomination">Porque deve %1$s ser eliminado?</string>
</resources>

View file

@ -526,5 +526,8 @@
<string name="share_text">Ladda upp foton till Wikimedia Commons på din telefon Ladda ned Commons-appen: %1$s</string>
<string name="share_via">Dela appen via...</string>
<string name="image_info">Bildinfo</string>
<string name="no_categories_found">Inga kategorier hittades</string>
<string name="upload_cancelled">Uppladdning avbröts</string>
<string name="previous_image_title_description_not_found">Det finns ingen data för den föregående bildens titel eller beskrivning</string>
<string name="dialog_box_text_nomination">Varför bör %1$s raderas?</string>
</resources>

View file

@ -17,6 +17,7 @@
* ZhaoGang
* 佛壁灯
* 夢蝶葬花
* 神樂坂秀吉
* 阿pp
-->
<resources>
@ -25,6 +26,7 @@
<string name="preference_category_appearance">外观</string>
<string name="preference_category_general">一般</string>
<string name="preference_category_feedback">反馈</string>
<string name="preference_category_privacy">隐私政策</string>
<string name="preference_category_location">位置</string>
<string name="app_name">共享资源</string>
<string name="bullet"></string>
@ -183,6 +185,7 @@
<string name="storage_permission_title">请求存储权限</string>
<string name="read_storage_permission_rationale">需要权限:读取外部存储。应用不能在没有它的情况下访问您的图册。</string>
<string name="write_storage_permission_rationale">需要权限:写入外部存储。应用不能在没有它的情况下访问您的相机/图册。</string>
<string name="location_permission_title">请求位置权限</string>
<string name="location_permission_rationale">可选权限:获取当前位置以提供分类建议</string>
<string name="ok">确定</string>
<string name="title_activity_nearby">附近地点</string>
@ -244,6 +247,7 @@
<string name="navigation_item_info">教程</string>
<string name="navigation_item_notification">通知</string>
<string name="navigation_item_featured_images">特色</string>
<string name="navigation_item_review">复核</string>
<string name="nearby_needs_permissions">附近地点不能在没有位置权限的情况下显示</string>
<string name="no_description_found">找不到描述</string>
<string name="nearby_info_menu_commons_article">共享资源文件页面</string>
@ -261,6 +265,7 @@
<string name="upload_problem_different_geolocation">这张图片是在不同的地点拍摄的。</string>
<string name="upload_problem_fbmd">请仅上传由您自己拍摄的图像。请勿上传您在他人的Facebook账户上所发现的图像。</string>
<string name="upload_problem_do_you_continue">仍然上传这张图片?</string>
<string name="internet_downloaded">请仅上传由您自己拍摄的图像。请勿上传您从互联网下载的图像。</string>
<string name="give_permission">提供权限</string>
<string name="use_external_storage">使用外部存储</string>
<string name="use_external_storage_summary">在您的设备上,使用应用中的照相机保存照片</string>
@ -272,6 +277,7 @@
<string name="nominate_deletion">提交删除</string>
<string name="nominated_for_deletion">此图片已被提交删除。</string>
<string name="nominated_see_more">&lt;u&gt;查看网页获取详情&lt;/u&gt;</string>
<string name="nominating_for_deletion_status">提名删除:%1$s</string>
<string name="view_browser">在浏览器中预览</string>
<string name="skip_login">忽略</string>
<string name="navigation_item_login">登录</string>
@ -327,6 +333,7 @@
<string name="error_loading_subcategories">加载子分类时发生错误。</string>
<string name="search_tab_title_media">媒体</string>
<string name="search_tab_title_categories">分类</string>
<string name="explore_tab_title_mobile">通过移动端上传</string>
<string name="successful_wikidata_edit">图片已成功添加到维基数据上的%1$s</string>
<string name="wikidata_edit_failure">更新对应维基数据实体失败!</string>
<string name="menu_set_wallpaper">设为壁纸</string>
@ -359,6 +366,7 @@
<string name="delete_recent_searches_dialog">您确认要清除您的搜索历史?</string>
<string name="search_history_deleted">搜索历史已删除</string>
<string name="nominate_delete">提名删除</string>
<string name="delete">删除</string>
<string name="Achievements">成就</string>
<string name="statistics">统计</string>
<string name="statistics_thanks">已收到感谢</string>
@ -440,12 +448,32 @@
<string name="achievements_fetch_failed">有错误发生,无法获取你的成就</string>
<string name="ends_on">结束于:</string>
<string name="display_campaigns">显示活动</string>
<string name="display_campaigns_explanation" fuzzy="true">点击此处显示正在进行的活动</string>
<string name="display_campaigns_explanation">显示正在进行的活动</string>
<string name="nearby_campaign_dismiss_message">你不会再看到这个活动。如果需要可以在设置里重新启用此通知。</string>
<string name="this_function_needs_network_connection">这个功能需要网络连接,请检查你的网络设置。</string>
<string name="bad_token_error_proposed_solution">因为编辑令牌失效上传失败。请尝试登出后重新登录。</string>
<string name="error_processing_image">处理图像时出错。请再试一次!</string>
<string name="nominate_for_deletion_done">完成</string>
<string name="nominate_for_deletion_notify_user">在讨论页上通知用户</string>
<string name="notsure">不确定</string>
<string name="send_thank_success_title">发送感谢成功</string>
<string name="send_thank_failure_title">发送感谢失败</string>
<string name="send_thank_send">发送感谢</string>
<string name="send_thank_notification_title">发送感谢</string>
<string name="send_thank_toast">向%1$s发送感谢</string>
<string name="review_copyright">它是否符合版权方针?</string>
<string name="review_category">它是否被正确分类?</string>
<string name="review_spam">它是否在维基共享资源的收录范围内?</string>
<string name="review_thanks">您是否要感谢贡献者?</string>
<string name="review_copyright_explanation">标志、屏幕截图和电影海报通常侵犯版权。\n提名删除候选请点击“否”。</string>
<string name="review_no_category">该文件未被分类!</string>
<string name="review_spam_report_question">该文件不在收录范围内,原因是</string>
<string name="review_c_violation_report_question">该文件侵犯版权,原因是</string>
<string name="review_category_yes_button_text">否,分类错误</string>
<string name="review_spam_yes_button_text">否,不在收录范围内</string>
<string name="review_copyright_yes_button_text">否,侵犯版权</string>
<string name="review_thanks_yes_button_text">是,为什么不呢</string>
<string name="review_thanks_no_button_text">下一张图片</string>
<plurals name="receiving_shared_content">
<item quantity="other">正在处理数据。处理时间取决于图片的尺寸和您的设备</item>
</plurals>
@ -462,6 +490,16 @@
<string name="please_wait">请稍候……</string>
<string name="previous_image_title_description">复制先前的标题及描述</string>
<string name="previous_button_tooltip_message">点击复用您在先前图片中填写的标题及描述并稍加修改来匹配当前图像。</string>
<string name="skip_image">跳过该图片</string>
<string name="exif_tag_name_author">作者</string>
<string name="exif_tag_name_copyright">著作权</string>
<string name="exif_tag_name_location">位置</string>
<string name="exif_tag_name_cameraModel">相机型号</string>
<string name="exif_tag_name_serialNumbers">序列号</string>
<string name="exif_tag_name_software">软件</string>
<string name="share_via">分享到...</string>
<string name="image_info">图像信息</string>
<string name="no_categories_found">找不到分类</string>
<string name="upload_cancelled">取消上传</string>
<string name="dialog_box_text_nomination">%1$s为何应被删除</string>
</resources>

View file

@ -279,18 +279,18 @@
<string name="nearby_location_has_not_changed">Location has not changed.</string>
<string name="nearby_location_not_available">Location not available.</string>
<string name="location_permission_rationale_nearby">Permission required to display a list of nearby places</string>
<string name="get_directions">GET DIRECTIONS</string>
<string name="read_article">READ ARTICLE</string>
<string name="get_directions">Get directions</string>
<string name="read_article">Read article</string>
<string formatted="false" name="notifications_welcome">Welcome to Wikimedia Commons, %1$s! We\'re glad you\'re here.</string>
<string name="notifications_talk_page_message">%1$s left a message on your talk page</string>
<string name="notifications_thank_you_edit">Thank you for making an edit</string>
<string name="notifications_mention">%1$s mentioned you on %2$s.</string>
<string name="toggle_view_button">Toggle view</string>
<string name="nearby_directions">DIRECTIONS</string>
<string name="nearby_wikidata">WIKIDATA</string>
<string name="nearby_wikipedia">WIKIPEDIA</string>
<string name="nearby_commons">COMMONS</string>
<string name="nearby_directions">Directions</string>
<string name="nearby_wikidata">Wikidata</string>
<string name="nearby_wikipedia">Wikipedia</string>
<string name="nearby_commons">Commons</string>
<string name="about_rate_us"><![CDATA[<u>Rate us</u>]]></string>
<string name="about_faq"><![CDATA[<u>FAQ</u>]]></string>
<string name="welcome_skip_button">Skip Tutorial</string>
@ -327,10 +327,10 @@
<string name="provider_searches">Recently searched queries</string>
<string name="error_loading_categories">Error occurred while loading categories.</string>
<string name="error_loading_subcategories">Error occurred while loading subcategories.</string>
<string name="search_tab_title_media">MEDIA</string>
<string name="search_tab_title_categories">CATEGORIES</string>
<string name="explore_tab_title_featured">FEATURED</string>
<string name="explore_tab_title_mobile">UPLOADED VIA MOBILE</string>
<string name="search_tab_title_media">Media</string>
<string name="search_tab_title_categories">Categories</string>
<string name="explore_tab_title_featured">Featured</string>
<string name="explore_tab_title_mobile">Uploaded via mobile</string>
<string name="successful_wikidata_edit">Image successfully added to %1$s on Wikidata!</string>
<string name="wikidata_edit_failure">Failed to update corresponding Wikidata entity!</string>
@ -366,14 +366,14 @@
<string name="delete_search_dialog">Do you want to delete this search?</string>
<string name="search_history_deleted">Search history deleted</string>
<string name="nominate_delete">Nominate For Deletion</string>
<string name="delete">DELETE</string>
<string name="delete">Delete</string>
<string name="Achievements">Achievements</string>
<string name="statistics">STATISTICS</string>
<string name="statistics">Statistics</string>
<string name="statistics_thanks">Thanks Received</string>
<string name="statistics_featured">Featured Images</string>
<string name="statistics_wikidata_edits">Images via \"Nearby Places\"</string>
<string name="level">LEVEL</string>
<string name="level">Level</string>
<string name="images_uploaded">Images Uploaded</string>
<string name="image_reverts">Images Not Reverted</string>
<string name="images_used_by_wiki">Images Used</string>
@ -537,7 +537,7 @@ Upload your first media by tapping on the add button.</string>
<string name="previous_button_tooltip_message">Click to reuse the title and description you entered in your previous picture and modify it to fit your current one</string>
<string name="welcome_do_upload_content_description">Examples of good images to upload to Commons</string>
<string name="welcome_dont_upload_content_description">Examples of images not to upload</string>
<string name="skip_image">SKIP THIS IMAGE</string>
<string name="skip_image">Skip this image</string>
<string name="download_failed_we_cannot_download_the_file_without_storage_permission">Download Failed!!. We cannot download the file without external storage permission.</string>
<string name="manage_exif_tags">Manage EXIF Tags</string>
@ -559,4 +559,5 @@ Upload your first media by tapping on the add button.</string>
<string name="previous_image_title_description_not_found">There is no data for previous image\'s title or description</string>
<string name="dialog_box_text_nomination">Why should %1$s be deleted?</string>
<string name="review_is_uploaded_by">%1$s is uploaded by: %2$s</string>
<string name="default_description_language">Default description language</string>
</resources>

View file

@ -29,6 +29,11 @@
android:inputType="number"
android:maxLength="3" />
<fr.free.nrw.commons.ui.LongTitlePreferences.LongTitleListPreference
android:key="descriptionDefaultLanguagePref"
android:title= "@string/default_description_language"
android:summary="English" />
<fr.free.nrw.commons.ui.LongTitlePreferences.LongTitleSwitchPreference
android:key="useAuthorName"
android:title="@string/preference_author_name_toggle"