Merge remote-tracking branch 'refs/remotes/commons-app/master' into upload-overhaul-fork

This commit is contained in:
misaochan 2018-06-04 18:57:30 +10:00
commit 4db5dfb5d8
31 changed files with 231 additions and 12 deletions

View file

@ -75,6 +75,8 @@ dependencies {
androidTestImplementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
androidTestImplementation 'com.squareup.okhttp3:mockwebserver:3.8.1'
androidTestImplementation "com.android.support:support-annotations:$SUPPORT_LIB_VERSION"
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
debugImplementation "com.squareup.leakcanary:leakcanary-android:$LEAK_CANARY"

View file

@ -15,6 +15,7 @@
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
<uses-permission android:name="com.google.android.apps.photos.permission.GOOGLE_PHOTOS" />
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
<!-- Needed only if your app targets Android 5.0 (API level 21) or higher. -->
<uses-feature android:name="android.hardware.location.gps" />

View file

@ -224,4 +224,14 @@ public class CategoryImagesListFragment extends DaggerFragment {
public ListAdapter getAdapter() {
return gridView.getAdapter();
}
/**
* This method will be called on back pressed of CategoryImagesActivity.
* It initializes the grid view by setting adapter.
\ */
@Override
public void onResume() {
gridView.setAdapter(gridAdapter);
super.onResume();
}
}

View file

@ -2,9 +2,11 @@ package fr.free.nrw.commons.media;
import android.annotation.SuppressLint;
import android.app.DownloadManager;
import android.app.WallpaperManager;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.DataSetObserver;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@ -26,6 +28,8 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import java.io.IOException;
import butterknife.BindView;
import butterknife.ButterKnife;
import javax.inject.Inject;
@ -38,12 +42,15 @@ import fr.free.nrw.commons.contributions.Contribution;
import fr.free.nrw.commons.contributions.ContributionsActivity;
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
import fr.free.nrw.commons.mwapi.MediaWikiApi;
import fr.free.nrw.commons.utils.ImageUtils;
import timber.log.Timber;
import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
import static android.content.Context.DOWNLOAD_SERVICE;
import static android.content.Intent.ACTION_VIEW;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.widget.Toast.LENGTH_SHORT;
import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext;
public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment implements ViewPager.OnPageChangeListener {
@ -140,6 +147,10 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
// Download
downloadMedia(m);
return true;
case R.id.menu_set_as_wallpaper:
// Set wallpaper
setWallpaper(m);
return true;
case R.id.menu_retry_current_image:
// Retry
((ContributionsActivity) getActivity()).retryUpload(pager.getCurrentItem());
@ -155,6 +166,19 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
}
}
/**
* Set the media as the device's wallpaper if the imageUrl is not null
* Fails silently if setting the wallpaper fails
* @param media
*/
private void setWallpaper(Media media) {
if(media.getImageUrl() == null || media.getImageUrl().isEmpty()) {
Timber.d("Media URL not present");
return;
}
ImageUtils.setWallpaperFromImageUrl(getActivity(), Uri.parse(media.getImageUrl()));
}
/**
* Start the media file downloading to the local SD card/storage.
* The file can then be opened in Gallery or other apps.

View file

@ -1,12 +1,34 @@
package fr.free.nrw.commons.utils;
import android.app.WallpaperManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapRegionDecoder;
import android.graphics.Color;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import com.facebook.common.executors.CallerThreadExecutor;
import com.facebook.common.references.CloseableReference;
import com.facebook.datasource.DataSource;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.imagepipeline.core.ImagePipeline;
import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber;
import com.facebook.imagepipeline.image.CloseableImage;
import com.facebook.imagepipeline.request.ImageRequest;
import com.facebook.imagepipeline.request.ImageRequestBuilder;
import java.io.IOException;
import fr.free.nrw.commons.R;
import timber.log.Timber;
import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext;
/**
* Created by bluesir9 on 3/10/17.
*/
@ -132,4 +154,52 @@ public class ImageUtils {
return isImageDark;
}
/**
* Downloads the image from the URL and sets it as the phone's wallpaper
* Fails silently if download or setting wallpaper fails.
* @param context
* @param imageUrl
*/
public static void setWallpaperFromImageUrl(Context context, Uri imageUrl) {
Timber.d("Trying to set wallpaper from url %s", imageUrl.toString());
ImageRequest imageRequest = ImageRequestBuilder
.newBuilderWithSource(imageUrl)
.setAutoRotateEnabled(true)
.build();
ImagePipeline imagePipeline = Fresco.getImagePipeline();
final DataSource<CloseableReference<CloseableImage>>
dataSource = imagePipeline.fetchDecodedImage(imageRequest, context);
dataSource.subscribe(new BaseBitmapDataSubscriber() {
@Override
public void onNewResultImpl(@Nullable Bitmap bitmap) {
if (dataSource.isFinished() && bitmap != null){
Timber.d("Bitmap loaded from url %s", imageUrl.toString());
setWallpaper(context, Bitmap.createBitmap(bitmap));
dataSource.close();
}
}
@Override
public void onFailureImpl(DataSource dataSource) {
Timber.d("Error getting bitmap from image url %s", imageUrl.toString());
if (dataSource != null) {
dataSource.close();
}
}
}, CallerThreadExecutor.getInstance());
}
private static void setWallpaper(Context context, Bitmap bitmap) {
WallpaperManager wallpaperManager = WallpaperManager.getInstance(context);
try {
wallpaperManager.setBitmap(bitmap);
ViewUtil.showLongToast(context, context.getString(R.string.wallpaper_set_successfully));
} catch (IOException e) {
Timber.e(e,"Error setting wallpaper");
}
}
}

View file

@ -15,6 +15,10 @@
android:id="@+id/menu_download_current_image"
android:title="@string/menu_download"
app:showAsAction="never" />
<item
android:id="@+id/menu_set_as_wallpaper"
android:title="@string/menu_set_wallpaper"
app:showAsAction="never" />
<item
android:id="@+id/menu_retry_current_image"
android:enabled="false"

View file

@ -49,6 +49,7 @@
<string name="add_title_toast">Apurre un títulu pa esti ficheru</string>
<string name="share_description_hint">Descripción</string>
<string name="login_failed_network">Nun se pudo aniciar sesión error de rede</string>
<string name="login_failed_wrong_credentials">Nun pudo aniciase sesión. Revisa\'l nome d\'usuariu y la contraseña</string>
<string name="login_failed_throttled">Demasiaos intentos incorreutos. Téntalo otra vuelta n\'unos minutos.</string>
<string name="login_failed_blocked">Sentímoslo, esti usuariu ta bloquiáu en Commons</string>
<string name="login_failed_2fa_needed">Tienes de dar el códigu d\'identificación de dos factores.</string>
@ -271,4 +272,6 @@
<string name="share_app_title">Compartir app</string>
<string name="share_coordinates_not_present">Nun s\'especificaron les coordenaes al escoyer la imaxe</string>
<string name="error_fetching_nearby_places">Error al llograr los llugares cercanos.</string>
<string name="menu_set_wallpaper">Definir fondu</string>
<string name="wallpaper_set_successfully">Fondu definíu correutamente</string>
</resources>

View file

@ -278,4 +278,6 @@
<string name="share_app_title">App teilen</string>
<string name="share_coordinates_not_present">Während der Bildauswahl wurden keine Koordinaten angegeben</string>
<string name="error_fetching_nearby_places">Fehler beim Abrufen der Orte in der Nähe.</string>
<string name="menu_set_wallpaper">Hintergrundbild festlegen</string>
<string name="wallpaper_set_successfully">Hintergrundbild erfolgreich festgelegt!</string>
</resources>

View file

@ -282,4 +282,6 @@
<string name="share_app_title">Κοινοποίηση εφαρμογής</string>
<string name="share_coordinates_not_present">Οι συντεταγμένες δεν ορίστηκαν κατά την διάρκεια της επιλογής εικόνας</string>
<string name="error_fetching_nearby_places">Σφάλμα κατά την εύρεση κοντινών μερών.</string>
<string name="menu_set_wallpaper">Ρύθμιση ταπετσαρίας</string>
<string name="wallpaper_set_successfully">Η ταπετσαρία ρυθμίστηκε επιτυχώς!</string>
</resources>

View file

@ -289,4 +289,6 @@
<string name="share_app_title">Partager les applications</string>
<string name="share_coordinates_not_present">Les coordonnées n\'ont pas été spécifiées pendant la sélection de l\'image</string>
<string name="error_fetching_nearby_places">Erreur durant l\'exploration du voisinage.</string>
<string name="menu_set_wallpaper">Définir le papier-peint</string>
<string name="wallpaper_set_successfully">Papier-peint configuré avec succès!</string>
</resources>

View file

@ -59,6 +59,7 @@
<string name="add_title_toast">Kérlek, adj címet a fájlnak</string>
<string name="share_description_hint">Leírás</string>
<string name="login_failed_network">Nem lehet bejelentkezni - hálózati hiba</string>
<string name="login_failed_wrong_credentials">Nem sikerült bejelentkezni kérlek, ellenőrizd a felhasználónevedet és a jelszavadat</string>
<string name="login_failed_throttled">Túl sok sikertelen próbálkozás. Próbálkozz újra pár perc múlva.</string>
<string name="login_failed_blocked">Sajnáljuk, ezt a felhasználót blokkolták a Commonson</string>
<string name="login_failed_2fa_needed">Meg kell adnia a kétlépcsős hitelesítő kódját.</string>
@ -253,15 +254,18 @@
<string name="no_internet">Internet nem elérhető</string>
<string name="internet_established">Internet elérhető</string>
<string name="no_notifications">Nincs értesítés</string>
<string name="about_translate">&lt;u&gt;Fordítás&lt;/u&gt;</string>
<string name="about_translate_title">Nyelvek</string>
<string name="about_translate_proceed">Folytatás</string>
<string name="about_translate_cancel">Mégse</string>
<string name="retry">Újra</string>
<string name="showcase_view_got_it_button">Értettem!</string>
<string name="showcase_view_whole_nearby_activity">Ezek a helyek vannak a közeledben, amikről van Wikipédia szócikk és nincs bennük kép.</string>
<string name="showcase_view_list_icon">A gombra koppintva bejön egy lista, ami ezeket a helyeket mutatja.</string>
<string name="showcase_view_plus_fab">Bármelyik helyhez feltölthetsz képet a galériádból vagy készíthetsz újat a kamerával.</string>
<string name="no_images_found">Nem található kép!</string>
<string name="error_loading_images">Képbetöltés közben hiba történt</string>
<string name="image_uploaded_by">Feltöltötte: %1$s</string>
<string name="share_app_title">Alkalmazás megosztása</string>
<string name="share_coordinates_not_present">A koordináták nem lettek megadva a kép kiválasztásakor.</string>
<string name="error_fetching_nearby_places">Hiba a közeli helyek elérésekor.</string>

View file

@ -282,4 +282,6 @@
<string name="share_app_title">שיתוף היישום</string>
<string name="share_coordinates_not_present">לא צוינו קואורדינטות בעת בחירת התמונה</string>
<string name="error_fetching_nearby_places">שגיאה באחזור המקומות בסביבתך.</string>
<string name="menu_set_wallpaper">הגדרת רקע</string>
<string name="wallpaper_set_successfully">הרקע הוגדר בהצלחה!</string>
</resources>

View file

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Authors:
* Shirayuki
* Takot
-->
<resources>
<string name="crash_dialog_title">コモンズがクラッシュしました</string>
<string name="crash_dialog_text">エラーが発生しました!</string>
<string name="crash_dialog_title">コモンズアプリがクラッシュしました</string>
<string name="crash_dialog_text">おおっと、何かおかしいようです!</string>
<string name="crash_dialog_comment_prompt">何をしていたかを記入してメールでお送りください。それをもとに問題点を解決します。</string>
<string name="crash_dialog_ok_toast">ありがとうございます!</string>
</resources>

View file

@ -136,7 +136,7 @@
<string name="tutorial_1_text">ウィキメディア・コモンズにはウィキペディアで使用する画像のほぼすべてが保管されています。</string>
<string name="tutorial_1_subtext">あなたの画像は世界中の人々が学習する助けになります!</string>
<string name="tutorial_2_text">アップロードする画像はあなたご本人が撮影したものかあなたが単独で制作したものに限定します。</string>
<string name="tutorial_2_subtext">自然 (動植物、山)\n• 道具 (自転車、駅)\n• 著名人 (市区村長・都道府県知事、自分が会ったオリンピック選手)</string>
<string name="tutorial_2_subtext">自然 (動植物、山)\n• 道具 (自転車、駅)\n• 著名人 (市区村長・都道府県知事、自分が会ったオリンピック選手)</string>
<string name="tutorial_2_subtext_1">自然物 (動植物、山)</string>
<string name="tutorial_2_subtext_2">道具 (自転車、駅)</string>
<string name="tutorial_2_subtext_3">著名人 (市区村長・都道府県知事、自分が会ったオリンピック選手)</string>

View file

@ -275,4 +275,6 @@
<string name="share_app_title">앱 공유</string>
<string name="share_coordinates_not_present">그림 선택 중에 좌표가 지정되지 않았습니다</string>
<string name="error_fetching_nearby_places">주변 장소를 가져오는데 오류가 있습니다.</string>
<string name="menu_set_wallpaper">배경화면 설정</string>
<string name="wallpaper_set_successfully">배경화면을 성공적으로 설정했습니다!</string>
</resources>

View file

@ -242,4 +242,6 @@
<string name="no_images_found">Keng Biller fonnt!</string>
<string name="error_loading_images">Feeler beim Eropluede vu Biller.</string>
<string name="image_uploaded_by">Eropgeluede vum: %1$s</string>
<string name="menu_set_wallpaper">Hannergrondbild festleeën</string>
<string name="wallpaper_set_successfully">Hannergrondbild festgeluecht</string>
</resources>

View file

@ -272,4 +272,6 @@
<string name="share_app_title">Сподели прилог</string>
<string name="share_coordinates_not_present">Не беа укажани координати при изборот на сликата</string>
<string name="error_fetching_nearby_places">Грешка при добивањето на околните места.</string>
<string name="menu_set_wallpaper">Задај позадина</string>
<string name="wallpaper_set_successfully">Позадината е успешно зададена!</string>
</resources>

View file

@ -95,4 +95,6 @@
<string name="detail_license_empty">अज्ञान अनुमतिपत्र</string>
<string name="menu_refresh">ताजागर्ने</string>
<string name="toggle_view_button">टगल दृश्य</string>
<string name="menu_set_wallpaper">भित्तेपत्र चयन गर्नुहोस्</string>
<string name="wallpaper_set_successfully">भित्तेपत्र सफलतापूर्वक चयन भयो!</string>
</resources>

View file

@ -228,4 +228,6 @@
<string name="about_translate_cancel">Anuluj</string>
<string name="no_images_found">Nie znaleziono grafik!</string>
<string name="error_loading_images">Wystąpił błąd podczas ładowania grafik.</string>
<string name="menu_set_wallpaper">Ustaw tapetę</string>
<string name="wallpaper_set_successfully">Tapeta ustawiona pomyślnie!</string>
</resources>

View file

@ -272,4 +272,6 @@
<string name="share_app_title">Partagé j\'aplicassion</string>
<string name="share_coordinates_not_present">Le coordinà a son nen ëstàite spessificà durant la selession ëd la plancia</string>
<string name="error_fetching_nearby_places">Eror durant l\'esplorassion dj\'anviron.</string>
<string name="menu_set_wallpaper">Definì la tapissarìa</string>
<string name="wallpaper_set_successfully">La tapissarìa a l\'é stàita definìa për da bin!</string>
</resources>

View file

@ -284,4 +284,6 @@
<string name="share_app_title">Compartilhar o aplicativo</string>
<string name="share_coordinates_not_present">Não foram especificadas coordenadas durante a seleção da imagem</string>
<string name="error_fetching_nearby_places">Erro ao buscar lugares próximos.</string>
<string name="menu_set_wallpaper">Definir imagem de fundo</string>
<string name="wallpaper_set_successfully">Imagem de fundo definida!</string>
</resources>

View file

@ -283,4 +283,6 @@
<string name="share_app_title">Partilhar aplicação</string>
<string name="share_coordinates_not_present">Não foram especificadas coordenadas durante a seleção da imagem</string>
<string name="error_fetching_nearby_places">Erro ao localizar locais próximos.</string>
<string name="menu_set_wallpaper">Definir imagem de fundo</string>
<string name="wallpaper_set_successfully">Imagem de fundo definida!</string>
</resources>

View file

@ -290,4 +290,6 @@
<string name="share_app_title">Поделиться приложением</string>
<string name="share_coordinates_not_present">Во время выбора изображения не были указаны координаты</string>
<string name="error_fetching_nearby_places">Ошибка получения мест поблизости</string>
<string name="menu_set_wallpaper">Сделать фоновой заставкой</string>
<string name="wallpaper_set_successfully">Фоновая заставка успешно установлена!</string>
</resources>

View file

@ -12,15 +12,15 @@
<string name="login">Asup log</string>
<string name="signup">Daptar</string>
<string name="logging_in_title">Asup log</string>
<string name="logging_in_message">Tungguan heula</string>
<string name="login_success">Asup log suksés!</string>
<string name="login_failed">Asup log Gagal!</string>
<string name="logging_in_message">Tungguan…</string>
<string name="login_success">Laksana login!</string>
<string name="login_failed">Gagal login!</string>
<string name="upload_failed">Berkas teu kapanggih. Coba berkas séjén.</string>
<string name="authentication_failed">Oténtikasi gagal!</string>
<string name="uploading_started">Ngamimitian ngunjal!</string>
<string name="uploading_started">Mitembeyan ngunjal!</string>
<string name="upload_completed_notification_title">%1$s diunjal!</string>
<string name="upload_completed_notification_text">Toél pikeun némpo unjalan anjeun</string>
<string name="upload_progress_notification_title_start">Ngamimitian ngunjal %1$s</string>
<string name="upload_progress_notification_title_start">Ngamimitian %1$s ngunjal</string>
<string name="upload_progress_notification_title_in_progress">Ngunjal %1$s</string>
<string name="upload_progress_notification_title_finishing">Méréskeun unjalan %1$s</string>
<string name="upload_failed_notification_title">Ngunjal %1$s gagal</string>

View file

@ -280,4 +280,6 @@
<string name="share_app_title">Dela app</string>
<string name="share_coordinates_not_present">Koordinater specificerades inte vid bildvalet</string>
<string name="error_fetching_nearby_places">Fel uppstod när platser i närheten hämtades.</string>
<string name="menu_set_wallpaper">Ange som bakgrundsbild</string>
<string name="wallpaper_set_successfully">Bakgrundsbilden ändrades!</string>
</resources>

View file

@ -57,6 +57,7 @@
<string name="add_title_toast">Lütfen bu dosya için bir başlık ekleyin</string>
<string name="share_description_hint">ıklama</string>
<string name="login_failed_network">Oturum açılamıyor - ağ hatası</string>
<string name="login_failed_wrong_credentials">Giriş yapılamıyor - lütfen kullanıcı adınızı ve şifrenizi kontrol edin</string>
<string name="login_failed_throttled">Çok sayıda başarısız girişimde bulundunuz. Birkaç dakika sonra tekrar deneyin.</string>
<string name="login_failed_blocked">Üzgünüz, bu kullanıcı Commons\'ta engellendi</string>
<string name="login_failed_2fa_needed">İki faktörlü kimlik doğrulama kodunu sağlamalısınız.</string>
@ -156,6 +157,7 @@
<string name="welcome_copyright_subtext">Telif hakkı olan ve internette bulunan film afişi, kitap kapağı gibi malzemelerin kullanımından kaçının.</string>
<string name="welcome_final_text">Bunu anladınız mı?</string>
<string name="welcome_final_button_text">Evet!</string>
<string name="welcome_help_button_text">*</string>
<string name="detail_panel_cats_label">Kategoriler</string>
<string name="detail_panel_cats_loading">Yükleniyor...</string>
<string name="detail_panel_cats_none">Hiçbir şey seçilmedi</string>
@ -279,4 +281,6 @@
<string name="share_app_title">Uygulamayı Paylaş</string>
<string name="share_coordinates_not_present">Koordinatlar görüntü seçimi sırasında belirlenmedi</string>
<string name="error_fetching_nearby_places">Yakındaki yerler alınırken hata oluştu.</string>
<string name="menu_set_wallpaper">Duvar kağıdı ayarla</string>
<string name="wallpaper_set_successfully">Duvar kağıdı başarıyla ayarlandı!</string>
</resources>

View file

@ -289,4 +289,6 @@
<string name="share_app_title">Поділитися програмою</string>
<string name="share_coordinates_not_present">Під час вибору зображення не були вказані координати</string>
<string name="error_fetching_nearby_places">Помилка отримання місць поблизу.</string>
<string name="menu_set_wallpaper">Поставити шпалерами екрану</string>
<string name="wallpaper_set_successfully">Шпалери екрану виставлено успішно!</string>
</resources>

View file

@ -7,6 +7,8 @@
* Tuankiet65
-->
<resources>
<string name="preference_category_appearance">Giao diện</string>
<string name="preference_category_general">Tổng quát</string>
<string name="preference_category_feedback">Phản hồi</string>
<string name="preference_category_location">Vị trí</string>
<string name="app_name">Commons</string>
@ -51,6 +53,7 @@
<string name="add_title_toast">Xin hãy đặt tiêu đề cho tập tin này</string>
<string name="share_description_hint">Miêu tả</string>
<string name="login_failed_network">Không thể đăng nhập có lỗi mạng</string>
<string name="login_failed_wrong_credentials">Không thể đăng nhập vui lòng kiểm tra tên người dùng và mật khẩu của bạn</string>
<string name="login_failed_throttled">Đã đăng nhập thất bại quá nhiều lần. Xin vui lòng thử lại trong vòng vài phút.</string>
<string name="login_failed_blocked">Rất tiếc, người dùng này đã bị cấm tại Commons</string>
<string name="login_failed_2fa_needed">Bạn phải cung cấp mã xác thực dùng hai nhân tố.</string>
@ -127,11 +130,20 @@
<string name="tutorial_1_text">Wikimedia Commons là nơi lưu giữ phần nhiều hình ảnh xuất hiện trong Wikipedia.</string>
<string name="tutorial_1_subtext">Các hình ảnh của bạn giúp giáo dục người dân trên khắp thế giới!</string>
<string name="tutorial_2_text">Xin hãy tải lên các hình ảnh do chính bạn chụp hoặc vẽ:</string>
<string name="tutorial_2_subtext" fuzzy="true">- Thiên nhiên (bông hoa, thú vật, cảnh núi)\n- Vật nhân tạo (xe đạp, nhà ga, món ăn)\n- Nhân vật nổi tiếng (thị trưởng của bạn, cầu thủ đội tuyển mà bạn gặp)</string>
<string name="tutorial_2_subtext">Thiên nhiên (bông hoa, thú vật, cảnh núi)\n* Vật nhân tạo (xe đạp, nhà ga, món ăn)\n* Nhân vật nổi tiếng (thị trưởng của bạn, cầu thủ đội tuyển mà bạn gặp)</string>
<string name="tutorial_2_subtext_1">Thiên nhiên (bông hoa, thú vật, cảnh núi)</string>
<string name="tutorial_2_subtext_2">Vật nhân tạo (xe đạp, nhà ga, món ăn)</string>
<string name="tutorial_2_subtext_3">Nhân vật nổi tiếng (thị trưởng của bạn, cầu thủ đội tuyển mà bạn gặp)</string>
<string name="tutorial_3_text">Xin DỪNG tải lên:</string>
<string name="tutorial_3_subtext">- Hình tự sướng hoặc hình bạn bè\n- Hình ảnh tải về từ Internet\n- Ảnh chụp màn hình của ứng dụng thương mại</string>
<string name="tutorial_3_subtext_1">Ảnh tự chụp hoặc hình bạn bè</string>
<string name="tutorial_3_subtext_2">Hình ảnh trên Internet tải về</string>
<string name="tutorial_3_subtext_3">Ảnh chụp màn hình của ứng dụng có bản quyền</string>
<string name="tutorial_4_text">Tập tin tải lên ví dụ:</string>
<string name="tutorial_4_subtext" fuzzy="true">- Tiêu đề: Nhà hát Opera Sydney\n- Miêu tả: Nhà hát Opera Sydney nhìn qua cảng\n- Thể loại: Sydney Opera House, Sydney Opera House from the west, Sydney Opera House remote views</string>
<string name="tutorial_4_subtext">- Tiêu đề: Nhà hát Opera Sydney\n- Miêu tả: Nhà hát Opera Sydney nhìn qua cảng\n- Thể loại: Nhà hát Opera Sydney nhìn từ phía tây, Nhà hát Opera Sydney nhìn từ xa</string>
<string name="tutorial_4_subtext_1">Tiêu đề: Nhà hát Opera Sydney</string>
<string name="tutorial_4_subtext_2">Miêu tả: Nhà hát Opera Sydney nhìn qua cảng</string>
<string name="tutorial_4_subtext_3">Thể loại: Nhà hát Opera Sydney nhìn từ phía tây, Nhà hát Opera Sydney nhìn từ xa</string>
<string name="welcome_wikipedia_text">Đóng góp hình ảnh của bạn. Làm sinh động các bài viết Wikipedia!</string>
<string name="welcome_wikipedia_subtext">Các hình ảnh trên Wikipedia được cung cấp bởi Wikimedia Commons.</string>
<string name="welcome_copyright_text">Các hình ảnh của bạn giúp giáo dục người dân trên khắp thế giới.</string>
@ -144,8 +156,8 @@
<string name="detail_description_empty">Không miêu tả</string>
<string name="detail_license_empty">Giấy phép không rõ</string>
<string name="menu_refresh">Làm tươi</string>
<string name="read_storage_permission_rationale" fuzzy="true">Yêu cầu cấp phép: Đọc thiết bị lưu trữ bên ngoài. Ứng dụng cần được phép đọc thiết bị lưu trữ bên ngoài để hoạt động.</string>
<string name="write_storage_permission_rationale" fuzzy="true">Yêu cầu cấp phép: Ghi vào thiết bị lưu trữ bên ngoài. Ứng dụng cần được phép ghi vào thiết bị lưu trữ bên ngoài để hoạt động.</string>
<string name="read_storage_permission_rationale">Yêu cầu cấp phép: Đọc thiết bị lưu trữ bên ngoài. Ứng dụng cần được phép đọc thiết bị lưu trữ bên ngoài để truy cập kho ảnh của bạn.</string>
<string name="write_storage_permission_rationale">Yêu cầu cấp phép: Ghi vào thiết bị lưu trữ bên ngoài. Ứng dụng cần được phép ghi vào thiết bị lưu trữ bên ngoài để truy cập máy chụp hình của bạn.</string>
<string name="location_permission_rationale">Tùy chọn cấp phép: Định vị hiện tại để nhận gợi ý thể loại</string>
<string name="ok">OK</string>
<string name="title_activity_nearby">Nơi Lân cận</string>
@ -158,6 +170,7 @@
<string name="media_detail_media_title">Tiêu đề phương tiện</string>
<string name="media_detail_description">Mô tả</string>
<string name="media_detail_description_explanation">Mô tả phương tiện xuất hiện tại đây. Nó có thể khá dài và sẽ cần phải ngắt thành nhiều dòng. Nhưng chúng tôi hy vọng sẽ trông ưa nhìn.</string>
<string name="media_detail_author">Tác giả</string>
<string name="media_detail_uploaded_date">Ngày tải lên</string>
<string name="media_detail_license">Giấy phép</string>
<string name="media_detail_coordinates">Tọa độ</string>
@ -172,6 +185,9 @@
<string name="login_failed_2fa_not_supported">Hiện chưa hỗ trợ xác thực dùng hai nhân tố.</string>
<string name="logout_verification">Bạn có chắc chắn muốn đăng xuất?</string>
<string name="commons_logo">Biểu trưng Commons</string>
<string name="commons_website">Trang Web Commons</string>
<string name="commons_facebook">Trang Commons tại Facebook</string>
<string name="commons_github">Mã nguồn Commons tại GitHub</string>
<string name="background_image">Hình nền</string>
<string name="mediaimage_failed">Hình ảnh bị Thất bại</string>
<string name="no_image_found">Không tìm thấy Hình ảnh</string>
@ -196,15 +212,58 @@
<string name="navigation_item_feedback">Phản hồi</string>
<string name="navigation_item_logout">Đăng xuất</string>
<string name="navigation_item_info">Hướng dẫn</string>
<string name="navigation_item_notification">Thông báo</string>
<string name="navigation_item_featured_images">Chọn lọc</string>
<string name="nearby_needs_permissions">Cần có quyền truy cập vị trí của bạn để hiển thị các địa điểm lân cận</string>
<string name="no_description_found">không tìm thấy miêu tả</string>
<string name="nearby_info_menu_commons_article">Trang tập tin Commons</string>
<string name="nearby_info_menu_wikidata_article">Khoản mục Wikidata</string>
<string name="nearby_info_menu_wikipedia_article">Bài Wikipedia</string>
<string name="error_while_cache">Xuất hiện lỗi khi đưa hình ảnh vào vùng nhớ đệm</string>
<string name="title_info">Tên ngắn và duy nhất cho tập tin sẽ được dùng làm tên tập tin. Có thể dùng thuật ngữ bình thường với khoảng cách. Đừng bao gồm phần mở rộng tập tin.</string>
<string name="description_info">Xin vui lòng miêu tả phương tiện càng đầy đủ càng tốt: Chụp ở đâu? Trong hình có gì? Bối cảnh làm sao? Xin vui lòng miêu tả các đối tượng và người trong hình. Cho biết những thông tin khó đoán ra, chẳng hạn giờ trong ngày nếu là phong cảnh. Nếu phương tiện có gì kỳ lạ, xin vui lòng giải thích tại sao nó kỳ lạ.</string>
<string name="give_permission">Cho phép</string>
<string name="use_external_storage">Sử dụng thiết bị lưu trữ bên ngoài</string>
<string name="use_external_storage_summary">Lưu các hình ảnh được chụp bằng máy chụp hình trong ứng dụng vào thiết bị của bạn</string>
<string name="login_to_your_account">Đăng nhập vào tài khoản của bạn</string>
<string name="send_log_file">Gửi tập tin nhật trình</string>
<string name="send_log_file_description">Gửi tập tin nhật trình cho nhà phát triển qua thư điện tử</string>
<string name="no_web_browser">Không tìm thấy trình duyệt để mở URL</string>
<string name="null_url">Lỗi! Không tìm thấy URL</string>
<string name="nominate_deletion">Bầu chọn để xóa</string>
<string name="nominated_for_deletion">Có đề nghị xóa hình này.</string>
<string name="view_browser">Hiện lên ở trang xem browse</string>
<string name="nearby_location_has_not_changed">Vị trí không thay đổi.</string>
<string name="nearby_location_not_available">Vị trí không có sẵn.</string>
<string name="location_permission_rationale_nearby">Bạn cần cho phép để hiển thị danh sách nơi lân cận</string>
<string name="get_directions">HƯỚNG DẪN</string>
<string name="read_article">ĐỌC BÀI</string>
<string name="notifications_welcome">Hoan nghênh %1$s đã đến Wikimedia Commons! Chúng tôi rất mừng bạn đến đây.</string>
<string name="notifications_talk_page_message">%1$s đã nhắn tin tại trang thảo luận của bạn</string>
<string name="notifications_thank_you_edit">Cảm ơn vì bạn đã thực hiện sửa đổi</string>
<string name="notifications_mention">%1$s đã nhắc đến bạn tại %2$s.</string>
<string name="nearby_directions">HƯỚNG DẪN</string>
<string name="nearby_wikidata">WIKIDATA</string>
<string name="nearby_wikipedia">WIKIPEDIA</string>
<string name="nearby_commons">COMMONS</string>
<string name="about_rate_us">&lt;u&gt;Đánh giá chúng tôi&lt;/u&gt;</string>
<string name="about_faq">&lt;u&gt;Câu thường hỏi&lt;/u&gt;</string>
<string name="welcome_skip_button">Bỏ qua Hướng dẫn</string>
<string name="no_internet">Internet không có sẵn</string>
<string name="internet_established">Internet có sẵn</string>
<string name="error_notifications">Lỗi khi lấy thông báo</string>
<string name="no_notifications">Không tìm thấy thông báo</string>
<string name="about_translate">&lt;u&gt;Biên dịch&lt;/u&gt;</string>
<string name="about_translate_title">Ngôn ngữ</string>
<string name="about_translate_message">Chọn ngôn ngữ để gửi bản dịch</string>
<string name="about_translate_proceed">Tiến hành</string>
<string name="about_translate_cancel">Hủy bỏ</string>
<string name="retry">Thử lại</string>
<string name="showcase_view_got_it_button">Được rồi!</string>
<string name="no_images_found">Không tìm thấy hình ảnh!</string>
<string name="error_loading_images">Đã xuất hiện lỗi khi tải hình ảnh.</string>
<string name="image_uploaded_by">Tải lên bởi: %1$s</string>
<string name="share_app_title">Chia sẻ Ứng dụng</string>
<string name="share_coordinates_not_present">Tọa độ không được chỉ định khi chọn hình ảnh</string>
<string name="error_fetching_nearby_places">Lỗi khi lấy các nơi lân cận.</string>
</resources>

View file

@ -283,4 +283,6 @@
<string name="share_app_title">分享應用程式</string>
<string name="share_coordinates_not_present">當選擇圖片時未指定座標</string>
<string name="error_fetching_nearby_places">索取附近地點時出錯。</string>
<string name="menu_set_wallpaper">設定桌布</string>
<string name="wallpaper_set_successfully">桌布設定成功!</string>
</resources>

View file

@ -55,6 +55,7 @@
<string name="add_title_toast">请提供此文件的标题</string>
<string name="share_description_hint">说明</string>
<string name="login_failed_network">无法登录 - 网络故障</string>
<string name="login_failed_wrong_credentials">无法登录——请检查您的用户名和密码</string>
<string name="login_failed_throttled">失败次数过多。请在几分钟后重试。</string>
<string name="login_failed_blocked">对不起,该用户已经被共享资源封禁</string>
<string name="login_failed_2fa_needed">您必须提供您的双因素验证代码。</string>
@ -277,4 +278,6 @@
<string name="share_app_title">分享应用</string>
<string name="share_coordinates_not_present">图片选择时,坐标并未指定</string>
<string name="error_fetching_nearby_places">检索附近地点时出错。</string>
<string name="menu_set_wallpaper">设置墙纸</string>
<string name="wallpaper_set_successfully">墙纸已成功设置!</string>
</resources>

View file

@ -283,4 +283,6 @@
<string name="share_coordinates_not_present">Coordinates were not specified during image selection</string>
<string name="error_fetching_nearby_places">Error fetching nearby places.</string>
<string name="menu_set_wallpaper">Set wallpaper</string>
<string name="wallpaper_set_successfully">Wallpaper set successfully!</string>
</resources>