diff --git a/app/src/androidTest/java/fr/free/nrw/commons/WelcomeActivityTest.kt b/app/src/androidTest/java/fr/free/nrw/commons/WelcomeActivityTest.kt index d48a75b91..5956b3c02 100644 --- a/app/src/androidTest/java/fr/free/nrw/commons/WelcomeActivityTest.kt +++ b/app/src/androidTest/java/fr/free/nrw/commons/WelcomeActivityTest.kt @@ -17,6 +17,8 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.CoreMatchers.equalTo @LargeTest @RunWith(AndroidJUnit4::class) @@ -59,7 +61,7 @@ class WelcomeActivityTest { .perform(ViewActions.click()) onView(withId(R.id.finishTutorialButton)) .perform(ViewActions.click()) - assert(activityRule.activity.isDestroyed) + assertThat(activityRule.activity.isDestroyed, equalTo(true)) } } @@ -69,10 +71,10 @@ class WelcomeActivityTest { .perform(ViewActions.click()) onView(withId(R.id.welcomePager)) .perform(ViewActions.swipeLeft()) - assert(true) + assertThat(true, equalTo(true)) onView(withId(R.id.welcomePager)) .perform(ViewActions.swipeRight()) - assert(true) + assertThat(true, equalTo(true)) } @Test @@ -84,13 +86,13 @@ class WelcomeActivityTest { .perform(ViewActions.swipeLeft()) .perform(ViewActions.swipeLeft()) .perform(ViewActions.swipeLeft()) - assert(true) + assertThat(true, equalTo(true)) onView(withId(R.id.welcomePager)) .perform(ViewActions.swipeRight()) .perform(ViewActions.swipeRight()) .perform(ViewActions.swipeRight()) .perform(ViewActions.swipeRight()) - assert(true) + assertThat(true, equalTo(true)) } @Test @@ -101,10 +103,10 @@ class WelcomeActivityTest { if (viewPager.currentItem == 3) { onView(withId(R.id.welcomePager)) .perform(ViewActions.swipeLeft()) - assert(true) + assertThat(true, equalTo(true)) onView(withId(R.id.welcomePager)) .perform(ViewActions.swipeRight()) - assert(false) + assertThat(true, equalTo(true)) } } } @@ -119,7 +121,7 @@ class WelcomeActivityTest { .perform(ViewActions.click()) onView(withId(R.id.finishTutorialButton)) .perform(ViewActions.click()) - assert(activityRule.activity.isDestroyed) + assertThat(activityRule.activity.isDestroyed, equalTo(true)) } } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6a47a4644..89ed630d8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,7 +13,9 @@ android:maxSdkVersion="29"/> - + + diff --git a/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorActivity.kt b/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorActivity.kt index d39b69f29..3bba6f05c 100644 --- a/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorActivity.kt +++ b/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorActivity.kt @@ -41,7 +41,6 @@ import fr.free.nrw.commons.R import fr.free.nrw.commons.customselector.database.NotForUploadStatus import fr.free.nrw.commons.customselector.database.NotForUploadStatusDao import fr.free.nrw.commons.customselector.helper.CustomSelectorConstants -import fr.free.nrw.commons.customselector.helper.CustomSelectorConstants.SHOULD_REFRESH import fr.free.nrw.commons.customselector.listeners.FolderClickListener import fr.free.nrw.commons.customselector.listeners.ImageSelectListener import fr.free.nrw.commons.customselector.model.Image @@ -237,8 +236,7 @@ class CustomSelectorActivity : val selectedImages: ArrayList = data!! .getParcelableArrayListExtra(CustomSelectorConstants.NEW_SELECTED_IMAGES)!! - val shouldRefresh = data.getBooleanExtra(SHOULD_REFRESH, false) - imageFragment?.passSelectedImages(selectedImages, shouldRefresh) + viewModel?.selectedImages?.value = selectedImages } } diff --git a/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/ImageFragment.kt b/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/ImageFragment.kt index 7e522f681..dbab629ff 100644 --- a/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/ImageFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/ImageFragment.kt @@ -279,11 +279,17 @@ class ImageFragment : filteredImages = ImageHelper.filterImages(images, bucketId) allImages = ArrayList(filteredImages) imageAdapter.init(filteredImages, allImages, TreeMap(), uploadingContributions) + viewModel?.selectedImages?.value?.let { selectedImages -> + imageAdapter.setSelectedImages(selectedImages) + } + imageAdapter.notifyDataSetChanged() selectorRV?.let { it.visibility = View.VISIBLE - lastItemId?.let { pos -> - (it.layoutManager as GridLayoutManager) - .scrollToPosition(ImageHelper.getIndexFromId(filteredImages, pos)) + if (switch?.isChecked == false) { + lastItemId?.let { pos -> + (it.layoutManager as GridLayoutManager) + .scrollToPosition(ImageHelper.getIndexFromId(filteredImages, pos)) + } } } } else { @@ -382,14 +388,6 @@ class ImageFragment : selectedImages: ArrayList, shouldRefresh: Boolean, ) { - imageAdapter.setSelectedImages(selectedImages) - - val uploadingContributions = getUploadingContributions() - - if (!showAlreadyActionedImages && shouldRefresh) { - imageAdapter.init(filteredImages, allImages, TreeMap(), uploadingContributions) - imageAdapter.setSelectedImages(selectedImages) - } } /** diff --git a/app/src/main/java/fr/free/nrw/commons/explore/media/MediaConverter.kt b/app/src/main/java/fr/free/nrw/commons/explore/media/MediaConverter.kt index 70b46b129..a3103d41a 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/media/MediaConverter.kt +++ b/app/src/main/java/fr/free/nrw/commons/explore/media/MediaConverter.kt @@ -40,7 +40,7 @@ class MediaConverter metadata.licenseShortName(), metadata.prefixedLicenseUrl, getAuthor(metadata), - imageInfo.user, + getAuthor(metadata), MediaDataExtractorUtil.extractCategoriesFromList(metadata.categories), metadata.latLng, entity.labels().mapValues { it.value.value() }, diff --git a/app/src/main/java/fr/free/nrw/commons/filepicker/Constants.java b/app/src/main/java/fr/free/nrw/commons/filepicker/Constants.java index 3c9299c1a..f907f0a01 100644 --- a/app/src/main/java/fr/free/nrw/commons/filepicker/Constants.java +++ b/app/src/main/java/fr/free/nrw/commons/filepicker/Constants.java @@ -16,7 +16,6 @@ public interface Constants { int PICK_PICTURE_FROM_DOCUMENTS = FILE_PICKER_IMAGE_IDENTIFICATOR + (1 << 11); int PICK_PICTURE_FROM_GALLERY = FILE_PICKER_IMAGE_IDENTIFICATOR + (1 << 12); int TAKE_PICTURE = FILE_PICKER_IMAGE_IDENTIFICATOR + (1 << 13); - int CAPTURE_VIDEO = FILE_PICKER_IMAGE_IDENTIFICATOR + (1 << 14); int RECEIVE_DATA_FROM_FULL_SCREEN_MODE = 1 << 9; } diff --git a/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.java b/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.java index 08453a95d..daa29276a 100644 --- a/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.java +++ b/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.java @@ -109,7 +109,13 @@ public class FilePicker implements Constants { */ public static void openGallery(Activity activity, int type, boolean openDocumentIntentPreferred) { Intent intent = createGalleryIntent(activity, type, openDocumentIntentPreferred); - activity.startActivityForResult(intent, RequestCodes.PICK_PICTURE_FROM_GALLERY); + int requestCode = RequestCodes.PICK_PICTURE_FROM_GALLERY; + + if(openDocumentIntentPreferred){ + requestCode = RequestCodes.PICK_PICTURE_FROM_DOCUMENTS; + } + + activity.startActivityForResult(intent, requestCode); } /** @@ -157,7 +163,6 @@ public class FilePicker implements Constants { requestCode &= ~RequestCodes.SOURCE_CHOOSER; if (requestCode == RequestCodes.PICK_PICTURE_FROM_GALLERY || requestCode == RequestCodes.TAKE_PICTURE || - requestCode == RequestCodes.CAPTURE_VIDEO || requestCode == RequestCodes.PICK_PICTURE_FROM_DOCUMENTS || requestCode == RequestCodes.PICK_PICTURE_FROM_CUSTOM_SELECTOR) { if (resultCode == Activity.RESULT_OK) { @@ -169,19 +174,16 @@ public class FilePicker implements Constants { onPictureReturnedFromCustomSelector(data, activity, callbacks); } else if (requestCode == RequestCodes.TAKE_PICTURE) { onPictureReturnedFromCamera(activity, callbacks); - } else if (requestCode == RequestCodes.CAPTURE_VIDEO) { - onVideoReturnedFromCamera(activity, callbacks); - } else if (isPhoto(data)) { - onPictureReturnedFromCamera(activity, callbacks); - } else { - onPictureReturnedFromDocuments(data, activity, callbacks); } } else { if (requestCode == RequestCodes.PICK_PICTURE_FROM_DOCUMENTS) { callbacks.onCanceled(FilePicker.ImageSource.DOCUMENTS, restoreType(activity)); } else if (requestCode == RequestCodes.PICK_PICTURE_FROM_GALLERY) { callbacks.onCanceled(FilePicker.ImageSource.GALLERY, restoreType(activity)); - } else { + } else if (requestCode == RequestCodes.PICK_PICTURE_FROM_CUSTOM_SELECTOR){ + callbacks.onCanceled(ImageSource.CUSTOM_SELECTOR, restoreType(activity)); + } + else { callbacks.onCanceled(FilePicker.ImageSource.CAMERA_IMAGE, restoreType(activity)); } } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceDao.java b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceDao.java index f18b80004..8c0a0a393 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceDao.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceDao.java @@ -4,7 +4,6 @@ import androidx.room.Dao; import androidx.room.Insert; import androidx.room.OnConflictStrategy; import androidx.room.Query; -import fr.free.nrw.commons.location.LatLng; import io.reactivex.Completable; /** diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/PlacesLocalDataSource.java b/app/src/main/java/fr/free/nrw/commons/nearby/PlacesLocalDataSource.java index 8de437c82..a7f1dadcd 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/PlacesLocalDataSource.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/PlacesLocalDataSource.java @@ -1,6 +1,5 @@ package fr.free.nrw.commons.nearby; -import fr.free.nrw.commons.location.LatLng; import io.reactivex.Completable; import javax.inject.Inject; diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java b/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java index 75a010ea7..572dd0317 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java @@ -19,6 +19,7 @@ import fr.free.nrw.commons.databinding.ActivityNotificationBinding; import fr.free.nrw.commons.auth.SessionManager; import fr.free.nrw.commons.auth.csrf.InvalidLoginTokenException; import fr.free.nrw.commons.notification.models.Notification; +import fr.free.nrw.commons.notification.models.NotificationType; import fr.free.nrw.commons.theme.BaseActivity; import fr.free.nrw.commons.utils.NetworkUtils; import fr.free.nrw.commons.utils.ViewUtil; @@ -148,7 +149,11 @@ public class NotificationActivity extends BaseActivity { } adapter = new NotificatinAdapter(item -> { Timber.d("Notification clicked %s", item.getLink()); - handleUrl(item.getLink()); + if (item.getNotificationType() == NotificationType.EMAIL){ + ViewUtil.showLongSnackbar(binding.container,getString(R.string.check_your_email_inbox)); + } else { + handleUrl(item.getLink()); + } removeNotification(item); return Unit.INSTANCE; }); diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationClient.kt b/app/src/main/java/fr/free/nrw/commons/notification/NotificationClient.kt index aa998ffb5..a0bf1176a 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/NotificationClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationClient.kt @@ -51,13 +51,23 @@ class NotificationClient } } - private fun WikimediaNotification.toCommonsNotification() = - Notification( - notificationType = NotificationType.UNKNOWN, - notificationText = contents?.compactHeader ?: "", - date = DateUtil.getMonthOnlyDateString(timestamp), - link = contents?.links?.primary?.url ?: "", - iconUrl = "", - notificationId = id().toString(), - ) + private fun WikimediaNotification.toCommonsNotification() : + Notification { + val notificationText = contents?.compactHeader ?: "" + val notificationType = + if (notificationText.contains("Sent you an email", ignoreCase = true)) { + NotificationType.EMAIL + } else { + NotificationType.UNKNOWN + } + + return Notification( + notificationType = notificationType, + notificationText = notificationText, + date = DateUtil.getMonthOnlyDateString(timestamp), + link = contents?.links?.primary?.url ?: "", + iconUrl = "", + notificationId = id().toString(), + ) + } } diff --git a/app/src/main/java/fr/free/nrw/commons/notification/models/NotificationType.java b/app/src/main/java/fr/free/nrw/commons/notification/models/NotificationType.java index 1b825f071..fb9ae7e99 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/models/NotificationType.java +++ b/app/src/main/java/fr/free/nrw/commons/notification/models/NotificationType.java @@ -4,6 +4,7 @@ public enum NotificationType { THANK_YOU_EDIT("thank-you-edit"), EDIT_USER_TALK("edit-user-talk"), MENTION("mention"), + EMAIL("email"), WELCOME("welcome"), UNKNOWN("unknown"); private String type; diff --git a/app/src/main/java/fr/free/nrw/commons/upload/worker/UploadWorker.kt b/app/src/main/java/fr/free/nrw/commons/upload/worker/UploadWorker.kt index 2c9022d73..fb2ca7b3a 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/worker/UploadWorker.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/worker/UploadWorker.kt @@ -17,6 +17,7 @@ import androidx.work.Data import androidx.work.ForegroundInfo import androidx.work.WorkerParameters import dagger.android.ContributesAndroidInjector +import fr.free.nrw.commons.BuildConfig.HOME_URL import fr.free.nrw.commons.CommonsApplication import fr.free.nrw.commons.Media import fr.free.nrw.commons.R @@ -30,6 +31,7 @@ import fr.free.nrw.commons.customselector.database.UploadedStatus import fr.free.nrw.commons.customselector.database.UploadedStatusDao import fr.free.nrw.commons.di.ApplicationlessInjection import fr.free.nrw.commons.media.MediaClient +import fr.free.nrw.commons.nearby.PlacesRepository import fr.free.nrw.commons.theme.BaseActivity import fr.free.nrw.commons.upload.FileUtilsWrapper import fr.free.nrw.commons.upload.StashUploadResult @@ -38,6 +40,7 @@ import fr.free.nrw.commons.upload.UploadClient import fr.free.nrw.commons.upload.UploadProgressActivity import fr.free.nrw.commons.upload.UploadResult import fr.free.nrw.commons.wikidata.WikidataEditService +import io.reactivex.schedulers.Schedulers import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch @@ -74,6 +77,9 @@ class UploadWorker( @Inject lateinit var fileUtilsWrapper: FileUtilsWrapper + @Inject + lateinit var placesRepository: PlacesRepository + private val processingUploadsNotificationTag = BuildConfig.APPLICATION_ID + " : upload_tag" private val processingUploadsNotificationId = 101 @@ -379,7 +385,7 @@ class UploadWorker( saveCompletedContribution(contribution, uploadResult) } else { Timber.d( - "WikiDataEdit not required, making wikidata edit", + "WikiDataEdit required, making wikidata edit", ) makeWikiDataEdit(uploadResult, contribution) } @@ -471,6 +477,16 @@ class UploadWorker( contribution.media.captions, ) if (null != revisionID) { + withContext(Dispatchers.IO) { + val place = placesRepository.fetchPlace(wikiDataPlace.id); + place.name = wikiDataPlace.name; + place.pic = HOME_URL + uploadResult.createCanonicalFileName() + placesRepository + .save(place) + .subscribeOn(Schedulers.io()) + .blockingAwait() + Timber.d("Updated WikiItem place ${place.name} with image ${place.pic}") + } showSuccessNotification(contribution) } } catch (exception: Exception) { diff --git a/app/src/main/res/values-az/error.xml b/app/src/main/res/values-az/error.xml index e698eab9d..6e9503c43 100644 --- a/app/src/main/res/values-az/error.xml +++ b/app/src/main/res/values-az/error.xml @@ -2,10 +2,11 @@ Nasazlıq Uups. Nəsə düzgün çalışmır! - Nə etdiyinizi dəqiqləşdirib, bizə bildirin və sonra e-poçtla bizə göndərin. Bu problemi həll etməyə bizə kömək edin. - Təşəkkür! + Nə etdiyinizi bizə deyin, sonra e-poçt vasitəsilə bizimlə paylaşın. Bu, bizə bunu düzəltməyə kömək edəcək! + Təşəkkürlər! diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index d5e83a2c7..1edbe43fc 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -12,34 +12,60 @@ * Şeyx Şamil --> + Commons Facebook səhifəsi + Commons Github Mənbə Kodu + Commons Loqotipi + Commons Veb-saytı + Məkan seçicidən çıxın + Göndər + Başqa təsvir əlavə et + Yeni töhfə + Kamera ilə töhfə ver + Fotolar ilə töhfə ver + Əvvəlki töhfələr qalereyasından töhfə əlavə et + Başlıqlar + Dil təsviri + Başlıq + Təsvir + Şəkil + Hamısı + Aç/Bağla + Axtarış Görünüşü + Məkanın Vəziyyəti + Günün Şəkli %1$d fayl yüklənir %1$d fayllar yüklənir + + (%1$d) + (%1$d) + + Yükləmələrə Başlanılır Ümumi Məxfilik - Vikimedia Commons + Vikianbar Tənzimləmələr - Ləqəb + İstifadəçi adı Parol Daxil ol Qeydiyyatdan keç Giriş edilir - Lütfən gözləyin… + Zəhmət olmasa, gözləyin… Daxil oldunuz! Giriş baş tutmadı! Fayl tapılmadı. Xahiş edirik başqa bir fayl üzərində cəhd edin. Doğrulama alınmadı, xahiş edirəm yenidən daxil olun Yükləmə başladı! %1$s yükləndi! - Yüklədiyini izlə + Yükləmənizə baxmaq üçün toxunun %1$s yüklənməsi başlanır %1$s yüklənir %1$s yüklənməsi başa çatdı %1$s faylının yüklənməsi alınmadı - Baxmaq üçün toxunun - Yükləmələrim - Sırada + Baxmaq üçün toxun + Son Yükləmələrim + Növbəyə alındı Uğursuz %1$d%% tamamlandı Yüklənir @@ -52,15 +78,15 @@ Açıqlama Daxil olmaq olmur — şəbəkə xətası Çox sayda uğursuz daxil olma. Xahiş edirik bir neçə dəqiqə sonra yenidən cəhd edin. - Bağışlayın, bu istifadəçi Commons-da bloklanmışdır. - İki faktorlu giriş doğrulama kodunu verməlisiniz. + Bağışlayın, bu istifadəçi Vikianbardan bloklanıb + Siz iki faktorlu autentifikasiya kodunuzu təqdim etməlisiniz. Daxil olma uğursuz oldu Yüklə Bu dəsti adlandırın - Bildirişlər + Dəyişikliklər Yüklə - Kateqoriyaları axtar - Qeyd et + Kateqoriyalarda axtar + Yadda saxla Yenilə Siyahı (Hələ yükləmə yoxdur) diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 4116080ea..2aa04017a 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -481,6 +481,7 @@ Du har ingen ulæste notifikationer Du har ingen læste notifikationer Del logs ved hjælp af + Tjek din e-mail-indbakke Vis læste Vis ulæste Der opstod en fejl under udvælgelse af billeder diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index f95d4b095..992f418af 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -22,6 +22,7 @@ * JenyxGym * KATRINE1992 * Koreller +* Mahabarata * McDutchie * Melissadeba95 * Metroitendo @@ -516,6 +517,7 @@ Vous n’avez aucune notification non lue Vous n’avez aucune notification lue Partager les journaux en utilisant + Vérifiez votre boîte de réception Afficher les lus Afficher les non lus Une erreur est survenue lors de la sélection des images diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 6fb40d2ff..f20b986f8 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -462,6 +462,7 @@ 未読の通知はありません 既読のお知らせはありません ログの共有に使うアプリ + メールをご確認ください 既読を表示 未読を見る 画像の選択中にエラーが発生しました diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 22749651c..26a9bc7f7 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -28,6 +28,7 @@ Aprašymas Paveikslėlis Visi + Perjungti aukštyn Paieškos rodinys Dienos nuotrauka @@ -57,6 +58,7 @@ Vikiteka Nustatymai Įkelti į Vikiteką + Vyksta įkėlimas Naudotojo vardas Slaptažodis Prisijunkite prie savo Commons Beta paskyros @@ -67,10 +69,13 @@ Prašome palaukti… Antraštės ir aprašymai atnaujinami Prašome palaukti... - Sėkmingai prisijungėte! - Prisijungti nepavyko! + Sėkmingai prisijungėte! + Prisijungti nepavyko! Failas nerastas. Prašome pabandyti kitą failą. - Autentifikavimas nepavyko, prašome prisijungti dar kartą + Pasiektas maksimalus pakartotinių bandymų limitas! Atšaukite įkėlimą ir bandykite dar kartą + Išjungti akumuliatoriaus optimizavimą? + Daugiau nei 3 paveikslėlių įkėlimas veikia patikimiau, kai akumuliatoriaus optimizavimas išjungtas. Išjunkite Vikitekos programėlės akumuliatoriaus optimizavimą nustatymuose, kad įkėlimas būtų sklandus. \n\nGalimi akumuliatoriaus optimizavimo išjungimo veiksmai:\n\n1 veiksmas: bakstelėkite toliau esantį mygtuką „Nustatymai“.\n\n2 veiksmas: perjunkite iš „Neoptimizuota“ į „Visos programėlės“.\n\n3 veiksmas: ieškokite „Vikiteka“ arba „fr.free.nrw.commons“.\n\n4 veiksmas: spustelėkite jį ir pasirinkite „Neoptimizuoti“.\n\n5 veiksmas: paspauskite „Atlikta“. + Autentifikavimas nepavyko. Prašome prisijungti dar kartą. Įkėlimas prasidėjo! Įkėlimas eilėje (įgalintas riboto ryšio režimas) %1$s įkelta! @@ -97,11 +102,11 @@ Pateikite šio failo antraštę Aprašymas Antraštė - Negalima prisijungti - tinklo klaida + Negalima prisijungti - tinklo klaida Per daug nesėkmingų bandymų. Pabandykite dar kartą po keleto minučių. Atsiprašome, šis vartotojas buvo užblokuotas Commons Turite pateikti savo dviejų žingsnių patvirtinimo kodą. - Prisijungti nepavyko + Prisijungti nepavyko Įkelti Pavadinkite šį rinkinį Pakeitimai @@ -123,7 +128,7 @@ Kategorija Apie Vikitekos programėlė yra atviro kodo programėlė, kurią sukūrė ir prižiūri Vikitekos bendruomenės dotacijų gavėjai ir savanoriai. „Wikimedia Foundation“ nedalyvauja kuriant, plėtojant ar prižiūrint programėlę. - Sukurkite naują <a href=\"%1$s\">GitHub pranešimą</a>, siekiant pranešti apie klaidas ir pateikti siūlymus. + Sukurkite naują <a href=\"%1$s\">GitHub pranešimą</a>, siekiant pranešti apie klaidas ir pateikti siūlymus. Privatumo politika Kūrėjai Apie @@ -178,6 +183,8 @@ Reikalinga teisė: Skaityti išorinę talpyklą. Programėle be to negali prieiti prie jūsų galerijos. Reikalingas leidimas: rašyti į išorinę saugyklą. Programėlė be to negali pasiekti jūsų fotoaparato/galerijos. Prašoma vietovės leidimo + Įrašyti vietovę nuotraukoms, kurios fotografuotos programėlėje + Įjunkite šią funkciją, kad įrašytumėte vietovę nuotraukoms, jei jūsų įrenginio kamera to nepadaro Gerai Įspėjimas Rastas pasikartojantis failo pavadinimas @@ -198,6 +205,7 @@ Prisijunkite prie beta kanalo Google Play ir gaukite išankstinę prieigą prie naujų funkcijų bei klaidų pataisymų 2FA kodas Ar tikrai norite atsijungti? + Medijos paveikslėlis nepavyko Subkategorijų nerasta Zao kalnas Lamos @@ -214,6 +222,7 @@ Apie Nustatymai Atsiliepimai + Atsiliepimai per GitHub Atsijungti Pamoka Pranešimai @@ -247,13 +256,15 @@ Žiūrėkite tinklapį dėl daugiau informacijos Praleisti Prisijungti - Ar tikrai norite praleisti prisijungimą? - Norėdami ateityje įkelti nuotraukas, turėsite prisijungti. + Ar tikrai norite praleisti prisijungimą? + Norėdami ateityje įkelti nuotraukas, turėsite prisijungti. Jei norite naudotis šia funkcija, prisijunkite Nukopijuokite vikitekstą į mainų sritį Vikitekstas buvo nukopijuotas į mainų sritį Netoliese gali tinkamai neveikti, vieta nepasiekiama. + Prieiga prie vietos uždrausta. Norėdami naudotis šia funkcija, nustatykite savo vietą rankiniu būdu. Norint rodyti netoliese esančių vietų sąrašą, reikalingas leidimas + Norint rodyti netoliese esančių paveikslėlių sąrašą, reikalingas leidimas Nurodymai Vikiduomenys Vikipedija @@ -313,14 +324,16 @@ Nuotraukos, kuriose pavaizduotos technologijos ar kultūra, yra labai laukiamos Vikitekoje. Surinkote %1$s teisingų atsakymų. Sveikiname! Norėdami atsakyti į klausimą, pasirinkite vieną iš dviejų variantų - Prisijungimo sesija baigėsi, prisijunkite dar kartą. + Prisijungimo sesija baigėsi, prašome prisijungti dar kartą. Pasidalinkite savo apkalusa su draugais! Tęsti Teisingas atsakymas Atsakymas neteisingas Ar šią ekrano kopiją galima įkelti? Dalintis programėle - Klaida gaunant netoliese esančias vietas. + Pasukti + Nepavyko įkelti netoliese esančių vietų + Šioje vietovėje nuotraukų nėra Nėra šalia esančių vietų Gaunant netoliese esančius paminklus įvyko klaida. Nėra naujausių paieškų @@ -338,6 +351,7 @@ Vaizdai per „Netoliese esančios vietos“ Lygis Vaizdai įkelti + Paveikslėliai negrąžinti Naudoti vaizdai Pasidalinkite savo pasiekimais su draugais! Jūsų lygis kyla, kai atitinkate šiuos reikalavimus. Skiltyje „statistika“ esantys elementai neįskaičiuojami į jūsų lygį. @@ -394,12 +408,22 @@ Niekada daugiau to neklausti Paprašyti vietos leidimo Jei reikia, kad būtų galima naudoti netoliese esančio pranešimų kortelės peržiūros funkciją, paprašykite leidimo nustatyti vietą. - Kažkas ne taip. Nepavyko gauti jūsų pasiekimų + Kažkas ne taip, mums nepavyko gauti pasiekimų Prisidėjote tiek daug, kad mūsų pasiekimų skaičiavimo sistema negali susidoroti. Tai yra didžiausias pasiekimas. Baigiasi: Peržiūrėkite vykstančias kampanijas + Leiskite programėlei nuskaityti vietą, jei fotoaparatas jos neįrašo. Kai kurių įrenginių kameros neįrašo vietos. Tokiais atvejais leidus programai gauti ir pridėti vietą, jūsų indėlis bus naudingesnis. Tai galite bet kada pakeisti nustatymuose + Leisti + Paslėpti + Nustatymuose įjunkite prieigą prie vietos ir bandykite dar kartą. \n\nPastaba: įkėlimas gali neturėti vietos, jei programėlė negali per trumpą laiką nuskaityti vietos iš įrenginio. + Programėlėje esančiam fotoaparatui reikalingas vietos leidimas, kad jis būtų pridėtas prie vaizdų, jei EXIF nėra vietos. Leiskite programėlei pasiekti jūsų buvimo vietą ir bandykite dar kartą.\n\nPastaba: įkėlimas gali neturėti vietos, jei programėlė negali per trumpą laiką nuskaityti vietos iš įrenginio. + Programėlė neįrašys vietos kartu su kadrais, nes neturi vietos leidimo + Programa neįrašys vietos kartu su kadrais, nes GPS išjungtas + Naudokite dokumentais pagrįstą nuotraukų rinkiklį + Naujasis „Android“ nuotraukų rinkiklis gali prarasti vietos informaciją. Įjunkite, jei atrodo, kad jį naudojate. + Išjungus tai gali suaktyvinti naująjį „Android“ nuotraukų rinkiklį. Dėl to kyla pavojus prarasti vietos informaciją.\n\nNorėdami gauti daugiau informacijos, bakstelėkite „Skaityti daugiau“. Kampanijų nebematysite. Tačiau, jei norite, galite iš naujo įjungti šį pranešimą nustatymuose. - Šiai funkcijai reikalingas tinklo ryšys, patikrinkite ryšio nustatymus. + Šiai funkcijai reikalingas tinklo ryšys. Prašome patikrinti savo ryšio nustatymus. Apdorojant vaizdą įvyko klaida. Pabandykite dar kartą! Gaunamas redagavimo prieigos raktas Kategorijos tikrinimo šablonas pridedamas @@ -418,22 +442,26 @@ Siunčiama padėka už %1$s Ar tai atitinka autorines teises? Ar tai teisingai priskirta kategorijoms? + Ar tai taikytina? Ar norėtumėte padėkoti prisidėjusiam? Spustelėkite NE, kad pasiūlytumėte šį vaizdą ištrinti, jei jis visai nenaudingas. Logotipai, ekrano kopijos, filmų plakatai dažnai pažeidžia autorines teises. Spustelėkite NE, jei norite pasiūlyti šį vaizdą ištrinti %1$s bus padrąsintas jūsų dėkingumu Oi, tai net nėra priskirta kategorijai! Šis vaizdas priklauso %1$s kategorijoms. + Tai nėra taikytina, nes Tai yra autorių teisių pažeidimas, nes Kitas vaizdas Taip, kodėl gi ne Spustelėję šį mygtuką pamatysite kitą neseniai įkeltą vaizdą iš Vikitekos + Galite peržiūrėti vaizdus, kad pagerintumėte Vikitekos kokybę.\nTrys peržiūros parametrai yra:\n\n- Ar šis vaizdas tinkamas?\nKai paliesite Ne (nepatenka į sritį), jūs prie šio paveikslėlio pridedate ištrynimo nominacijos šabloną.\n\n- Ar šis vaizdas atitinka autorių teisių taisykles?\nKai paliesite Ne (neatitinka autorių teisių taisyklių), pridedate ištrynimo nominacijos šabloną prie šio paveikslėlio.\n\n- Ar šis vaizdas teisingai suskirstytas į kategorijas?\nKai paliesite Ne (neteisingai suskirstytas į kategorijas), prie šio paveikslėlio pridedate kategorizavimo užklausos šabloną.\n\nJei viskas yra gerai, prie paveikslėlio nepridedamas joks šablonas, ir jūs turite galimybę padėkoti bendraautoriui. Nenaudojami jokie vaizdai Jokie vaizdai negrąžinti Neįkelta jokių vaizdų Neturite neskaitytų pranešimų Neturite perskaitytų pranešimų Dalinkitės žurnalus naudodami + Patikrinkite savo el. pašto dėžutę Žiūrėti perskaitytus Žiūrėti neperskaitytus Renkant vaizdus įvyko klaida @@ -478,6 +506,7 @@ Žiniasklaidos nuotrauka Atsitiktinė nuotrauka iš interneto Logotipas + Panoramos laisvės pažeidimas Nes Bandoma atnaujinti kategorijas. Kategorijos atnaujinimas @@ -498,7 +527,7 @@ Nepavyko pridėti koordinačių. Nepavyko pridėti aprašymų. Nepavyko pridėti antraštę. - Nepavyko gauti koordinačių. + Paveikslėlio koordinatės neatnaujintos Nepavyko gauti aprašymų. Redaguokite aprašymus ir antraštes Dalintis vaizdu per @@ -513,10 +542,11 @@ Reikia Nuotraukos Vietos tipas: Tiltas, muziejus, viešbutis ir t.t. - Kažkas nepavyko prisijungiant, turite iš naujo nustatyti slaptažodį !! + Kažkas nepavyko prisijungiant. Turite iš naujo nustatyti slaptažodį! MEDIJA Netoliese rasta vieta - Ar tai vietos %1$s nuotrauka? + Ar tai %1$s nuotraukos? + Ar tai %1$s nuotrauka? Žymės Nustatymai Pašalinta iš žymių @@ -524,12 +554,16 @@ Kažkas nepavyko. Nepavyko nustatyti fono paveikslėlio Nustatyti kaip fono paveikslėlį Fono paveikslėlis nustatomas. Prašome palaukti… + Sekti sistemos Tamsus Šviesus Nepavyko atidaryti vietos nustatymų. Įjunkite vietą rankiniu būdu Norėdami gauti geriausius rezultatus, pasirinkite didelio tikslumo režimą. Įjungti vietą? + Įjunkite vietos nustatymo paslaugas, kad programa parodytų jūsų dabartinę vietą Kad tinkamai veiktų, Netoliese turi būti įjungta vieta + Žemėlapio naršymui reikia vietos leidimo, kad būtų rodomi netoliese esantys paveikslėliai + Norėdami automatiškai nustatyti vietą, turite suteikti vietos leidimą. Ar nufotografavote šias dvi nuotraukas toje pačioje vietoje? Ar norite naudoti dešinėje esančio paveikslėlio platumą/ilgumą? Įkelti daugiau Vietų nerasta, pabandykite pakeisti paieškos kriterijus. @@ -617,6 +651,10 @@ Skirtingai nuo paveikslėlio kairėje, paveikslėlyje dešinėje yra Vikitekos logotipas, nurodantis, kad jis jau įkeltas. \n Palieskite ir palaikykite, kad peržiūrėtumėte vaizdą. Puiku Šis vaizdas jau buvo įkeltas į Vikiteką. + Dėl techninių priežasčių programėlė negali patikimai įkelti daugiau nei %1$d nuotraukos vienu metu. %1$d įkėlimo limitas buvo viršytas %2$d. + Paslėpti + Maksimalus: %1$d + Klaida: viršytas įkėlimo limitas Šis vaizdas bus įtrauktas į konkursą \"Wiki Loves Monuments\" (\"Wiki\" mėgsta paminklus) Rodyti paminklus Vyksta Viki myli paminklus mėnuo! @@ -626,7 +664,7 @@ Netoliese žemėlapiai turi perskaityti TELENFONO BŪSENĄ, kad tinkamai funkcionuotų Naudotojo indėlis: %s Naudotojo pasiekimai: %s - Žiūrėti naudotojo puslapį + Žiūrėti naudotojo puslapį Redaguoti vaizdus Redaguoti kategorijas Išplėstiniai nustatymai @@ -652,6 +690,8 @@ Jūsų atsiliepimas Pažymėti kaip neskirtą įkėlimui Panaikinkite žymėjimą kaip neskirto įkėlimui + Žymima kaip neįkėlimui + Naikinamas žymėjimas kaip neįkėlimui Rodyti jau padarytas nuotraukas Slepiamos jau padarytos nuotraukos Daugiau paveikslėlių nerasta @@ -660,6 +700,8 @@ Paveiklėlis pasirinktas Paveikslėlis pažymėtas kaip neskirtas įkėlimui Pranešti + Nustatyti baltą foną + Nustatyti juodą foną Pranešti apie pažeidimą Pranešti apie šį nauodotoją Pranešti apie šį turinį @@ -669,4 +711,44 @@ Norėdami atlikti šiuos veiksmus, braukite greitai ir ilgai: \n- Kairėn/dešinėn: Pereikite prie ankstesnio/kito\n- Į viršų: Pasirinkite\n- Žemyn: Pažymėti kaip neskirtą įkėlimui. Norėdami nustatyti pirmaujančiųjų sąrašo avatarą, bet kurio vaizdo trijų taškų meniu palieskite „Nustatyti kaip avatarą“. Koordinatės nėra tikslios koordinatės, bet asmuo, kuris įkėlė šią nuotrauką, mano, kad jos yra pakankamai arti. + Saugyklos leidimai atmesti + Nepavyko bendrinti šio elemento + Funkcionalumui reikalingi leidimai + Sužinokite, kaip parašyti naudingą aprašymą + Sužinokite, kaip parašyti naudingą antraštę + Pamatykite savo pasiekimus + Redaguoti paveikslėlį + Redaguoti vietą + Vieta atnaujinta! + Pašalinti vietą + Pašalinti vietos įspėjimą + Vieta daro nuotraukas naudingesnes ir lengviau randamas. Ar tikrai norite pašalinti vietą iš šios nuotraukos? + Vieta pašalinta! + Padėkoti autoriui + Klaida siunčiant padėką autoriui. + Jūsų prisijungimo sesija baigėsi. Prašome prisijungti dar kartą. + Nėra jokios programos GPX failams atidaryti + Failas sėkmingai išsaugotas + Ar norite atidaryti GPX failą? + Ar norite atidaryti KML failą? + Nepavyko išsaugoti KML failo. + Nepavyko išsaugoti GPX failo. + Išsaugomas KML failas + Išsaugomas GPX failas + Atminkite, kad visi paveikslėliai, įkeliant kelis, turi tas pačias kategorijas ir vaizdus. Jei paveikslėliuose vaizdai ir kategorijos skiriasi, prašome atlikti kelis atskirus įkėlimus. + Pastaba apie kelis įkėlimus + Praneškite apie problemą dėl šio elemento Vikiduomenims. + Įveskite keletą komentarų + Aptarimas + Parašykite ką nors apie \'%1$s\' elementą. Tai bus matoma viešai. + \'%1$s\' nebeegzistuoja, niekada nebegalima jo nufotografuoti. + \'%1$s\' yra kitoje vietoje. Toliau nurodykite teisingą vietą ir, jei įmanoma, parašykite teisingą platumą ir ilgumą. + Kita problema arba informacija (paaiškinkite toliau). + Jūsų atsiliepimai bus paskelbti šiame viki puslapyje: <a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:Mobile App/Feedback</a> + Ar tikrai norite atšaukti visus įkėlimus? + Atšaukiami visi įkėlimai... + Įkėlimai + Laukiama + Nepavyko + Nepavyko įkelti vietos duomenų diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index aeb8eab94..bf971f6bc 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -496,6 +496,7 @@ U heeft geen ongelezen meldingen U heeft geen gelezen meldingen Logboeken delen via + Bekijk uw e-mailinbox Bekijk gelezen Ongelezen bekijken Er is een fout opgetreden bij het kiezen van afbeeldingen diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 1780845f8..48713104d 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -86,7 +86,7 @@ ਆਪਣੀਆਂ ਤਸਵੀਰਾਂ ਨੂੰ ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਵਿਚ ਜ਼ਿਆਦਾ ਲੱਭਣਯੋਗ ਬਣਾਉਣ ਲਈ ਸ਼੍ਰੇਣੀਆਂ ਜੋੜੋ।\n\nਸ਼੍ਰੇਣੀਆਂ ਜੋੜਨ ਲਈ ਟਾਈਪ ਕਰਨ ਅਰੰਭ ਕਰੋ।\nਇਸ ਕਾਰਜ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਨ ਲਈ ਇਹ ਸੁਨੇਹਾ ਥਪੇੜੋ (ਜਾਂ ਵਾਪਸੀ ਬਟਨ ਦਬਾਓ)। ਸ਼੍ਰੇਣੀਆਂ ਪਸੰਦਾਂ - ਸਾਈਨ ਅੱਪ + ਖਾਤਾ ਬਣਾਓ ਸ਼੍ਰੇਣੀ ਇਸ ਬਾਰੇ ਅਜ਼ਾਦ ਸਰੋਤ ਸਾਫ਼ਟਵੇਅਰ ਨੂੰ <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\">Apache License v2</a> ਅਧੀਨ ਜਾਰੀ ਕੀਤਾ ਗਿਆ ਹੈ @@ -149,8 +149,8 @@ ਕੋਈ ਉਪਲਬਧ ਨਹੀਂ 2FA ਕੋਡ ਕੀ ਤੁਸੀਂ ਸੱਚੀਂ ਬੰਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? - ਵਿਕੀਪੀਡੀਆ \'ਤੇ ਸੁਆਗਤ - ਕਾਪੀਰਾਈਟ ਸੁਆਗਤ + ਵਿਕੀਪੀਡੀਆ \'ਤੇ ਜੀ ਆਇਆਂ ਨੂੰ + ਜੀ ਆਇਆਂ ਨੂੰ ਕਾਪੀਰਾਈਟ ਰੱਦ ਕਰੋ ਖੋਲ੍ਹੋ ਬੰਦ ਕਰੋ @@ -179,6 +179,7 @@ ਲੱਭੋ ਲੱਭੋ ਹਾਲੀਆ ਖੋਜਾਂ: + ਹਾਲ ਦੀਆਂ ਪੁੱਛਗਿੱਛ ਖੋਜਾਂ ਹਾਲ ਹੀ ਵਿੱਚ ਬੋਲੀਆਂ ਬਾਰੇ ਪੁੱਛਗਿੱਛ ਸ਼੍ਰੇਣੀਆਂ ਨਕਸ਼ਾ diff --git a/app/src/main/res/values-pms/strings.xml b/app/src/main/res/values-pms/strings.xml index 788a34a4b..9c257c273 100644 --- a/app/src/main/res/values-pms/strings.xml +++ b/app/src/main/res/values-pms/strings.xml @@ -473,6 +473,7 @@ A l\'ha gnun-e notìfiche nen lesùe A l\'ha gnun-e notìfiche lesùe Partagé j\'argistr dovrand + Ch\'a contròla soa casela ëd pòsta eletrònica Vëdde lòn ch\'a l\'é stàit lesù Vëdde lòn ch\'a l\'é ancor nen ëstàit lesù A-i é staje n\'eror an selessionand le plance diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index ca771ea98..b15d77787 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -530,6 +530,7 @@ У вас нет непрочитанных уведомлений Нет прочитанных уведомлений Поделиться лог-файлами + Проверьте свой почтовый ящик Просмотр прочитанного См. непрочитанные Произошла ошибка при загрузке изображений diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 379cc42ae..3e2969df4 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -111,4 +111,5 @@ 没有说明 未知授权协议 刷新 + 请查看你的电子邮箱 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 23da2c286..d7c023e6f 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -213,6 +213,7 @@ 維基數據項目 維基百科條目 請盡可能描述媒體內容:拍攝於何處?是顯示什麼事物?有什麼脈絡?請描述對象或人物。透露出一些較不易猜測的訊息,例如是風景的話,可以是一天裡的時間。如果媒體顯示出了一些不尋常的事物,請說明不尋常原因。 + 請查看你的電子郵件信箱 學習如何編寫有用的描述 學習如何編寫有用的標題 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 0c09d229a..e54fb9d76 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -496,6 +496,7 @@ 您有尚未讀取的通知 您沒有已讀的通知 分享日誌使用 + 請查看你的電子郵件信箱 檢視已讀 檢視未讀 選擇圖片時發生錯誤 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 7654cee2c..74ff641c0 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -526,6 +526,7 @@ 您没有任何未读通知 您没有已读通知 分享日志于 + 请查看你的电子邮箱 查看已读 查看未读 选择图片时出错 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0c6be3129..b5c2dc529 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -504,6 +504,7 @@ Upload your first media by tapping on the add button. You have no unread notifications You have no read notifications Share logs using + Check your email inbox View read View unread diff --git a/app/src/main/resources/queries/query_for_item.rq b/app/src/main/resources/queries/query_for_item.rq index 1a5210e04..4a946ac96 100644 --- a/app/src/main/resources/queries/query_for_item.rq +++ b/app/src/main/resources/queries/query_for_item.rq @@ -18,7 +18,7 @@ WHERE { } # Get the label in the preferred language of the user, or any other language if no label is available in that language. - OPTIONAL {?item rdfs:label ?itemLabelPreferredLanguage. FILTER (lang(?itemLabelPreferredLanguage) = "en")} + OPTIONAL {?item rdfs:label ?itemLabelPreferredLanguage. FILTER (lang(?itemLabelPreferredLanguage) = "${LANG}")} OPTIONAL {?item rdfs:label ?itemLabelAnyLanguage} BIND(COALESCE(?itemLabelPreferredLanguage, ?itemLabelAnyLanguage, "?") as ?label) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/filepicker/FilePickerTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/filepicker/FilePickerTest.kt index 171e04b4e..365af27f0 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/filepicker/FilePickerTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/filepicker/FilePickerTest.kt @@ -64,12 +64,17 @@ class FilePickerTest { `when`(PreferenceManager.getDefaultSharedPreferences(activity)).thenReturn(sharedPref) `when`(sharedPref.edit()).thenReturn(sharedPreferencesEditor) `when`(sharedPref.edit().putInt("type", 0)).thenReturn(sharedPreferencesEditor) - FilePicker.openGallery(activity, 0, nextBoolean()) + val openDocumentPreferred = nextBoolean() + FilePicker.openGallery(activity, 0, openDocumentPreferred) verify(activity).startActivityForResult( ArgumentMatchers.any(), requestCodeCaptor?.capture()?.toInt()!!, ) - assertEquals(requestCodeCaptor?.value, RequestCodes.PICK_PICTURE_FROM_GALLERY) + if(openDocumentPreferred){ + assertEquals(requestCodeCaptor?.value, RequestCodes.PICK_PICTURE_FROM_DOCUMENTS) + }else{ + assertEquals(requestCodeCaptor?.value, RequestCodes.PICK_PICTURE_FROM_GALLERY) + } } @Test @@ -165,32 +170,6 @@ class FilePickerTest { method.invoke(mockFilePicker, activity) } - @Test - fun testTakenCameraVideo() { - val mockFilePicker = mock(FilePicker::class.java) - val method: Method = - FilePicker::class.java.getDeclaredMethod( - "takenCameraVideo", - Context::class.java, - ) - method.isAccessible = true - method.invoke(mockFilePicker, context) - } - - @Test - fun testTakenCameraVideoCaseTrue() { - val mockFilePicker = mock(FilePicker::class.java) - `when`(PreferenceManager.getDefaultSharedPreferences(activity)).thenReturn(sharedPref) - `when`(sharedPref.getString("last_video", null)).thenReturn("") - val method: Method = - FilePicker::class.java.getDeclaredMethod( - "takenCameraVideo", - Context::class.java, - ) - method.isAccessible = true - method.invoke(mockFilePicker, activity) - } - @Test fun testIsPhoto() { val mockFilePicker = mock(FilePicker::class.java) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/location/LatLngTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/location/LatLngTest.kt index 051b18d18..575beab98 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/location/LatLngTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/location/LatLngTest.kt @@ -2,6 +2,9 @@ package fr.free.nrw.commons.location import org.junit.Before import org.junit.Test +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.CoreMatchers.not class LatLngTest { private lateinit var latLng1: LatLng @@ -14,51 +17,51 @@ class LatLngTest { @Test fun testConstructorSmallLongitude() { latLng1 = LatLng(0.0, -181.0, 0.0f) - assert(latLng1.longitude == 179.0) + assertThat(latLng1.longitude, equalTo(179.0)) } @Test fun testConstructorBigLongitude() { latLng1 = LatLng(0.0, 181.0, 0.0f) - assert(latLng1.longitude == -179.0) + assertThat(latLng1.longitude, equalTo(-179.0)) } @Test fun testConstructorSmallLatitude() { latLng1 = LatLng(-91.0, 0.0, 0.0f) - assert(latLng1.latitude == -90.0) + assertThat(latLng1.latitude, equalTo(-90.0)) } @Test fun testConstructorBigLatitude() { latLng1 = LatLng(91.0, 0.0, 0.0f) - assert(latLng1.latitude == 90.0) + assertThat(latLng1.latitude, equalTo(90.0)) } @Test fun testHashCodeDiffersWenLngZero() { latLng1 = LatLng(2.0, 0.0, 0.0f) latLng2 = LatLng(1.0, 0.0, 0.0f) - assert(latLng1.hashCode() != latLng2.hashCode()) + assertThat(latLng1.hashCode(), not(equalTo(latLng2.hashCode()))) } @Test fun testHashCodeDiffersWenLatZero() { latLng1 = LatLng(0.0, 1.0, 0.0f) latLng2 = LatLng(0.0, 2.0, 0.0f) - assert(latLng1.hashCode() != latLng2.hashCode()) + assertThat(latLng1.hashCode(), not(equalTo(latLng2.hashCode()))) } @Test fun testEqualsWorks() { latLng1 = LatLng(1.0, 2.0, 5.0f) latLng2 = LatLng(1.0, 2.0, 0.0f) - assert(latLng1.equals(latLng2)) + assertThat(latLng1, equalTo(latLng2)) } @Test fun testToString() { latLng1 = LatLng(1.0, 2.0, 5.0f) - assert(latLng1.toString().equals("lat/lng: (1.0,2.0)")) + assertThat(latLng1.toString(), equalTo("lat/lng: (1.0,2.0)")) } } diff --git a/app/src/test/kotlin/fr/free/nrw/commons/nearby/LabelTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/nearby/LabelTest.kt index 446bad2cb..80735476e 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/nearby/LabelTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/nearby/LabelTest.kt @@ -3,6 +3,8 @@ package fr.free.nrw.commons.nearby import fr.free.nrw.commons.R import org.junit.Before import org.junit.Test +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.CoreMatchers.equalTo class LabelTest { private lateinit var label: Label @@ -21,7 +23,7 @@ class LabelTest { */ @Test fun testLabelIcon() { - assert(label.icon.equals(R.drawable.round_icon_church)) + assertThat(label.icon, equalTo(R.drawable.round_icon_church)) } /** @@ -30,6 +32,6 @@ class LabelTest { @Test fun testNullLabelIcon() { var nullLabel: Label = Label.fromText("a random text not exist in label texts") - assert(nullLabel.icon.equals(R.drawable.round_icon_unknown)) + assertThat(nullLabel.icon, equalTo(R.drawable.round_icon_unknown)) } }