From cfc2cfcca120a9db1130116e3ee513b871f1b8d9 Mon Sep 17 00:00:00 2001 From: rayane <91428886+Rsedp8@users.noreply.github.com> Date: Thu, 29 May 2025 13:25:00 +0200 Subject: [PATCH 01/27] Fix Kotlin warnings (related to issue #5996) (#6320) * refactor: replace unused exception variable with underscore * refactor: code style fix * fix: remove unnecessary latLng variable and return null directly * fix: use explicit true/false instead of isFABsExpanded * refactor: simplify marker update logic by reducing redundant conditions * refactor: use data object instead of object * fix: check placeBindings for null instead of checking each destructured value * fix: check placeBindings for null instead of checking each destructured value * docs: fix KDoc for contentUri property by removing incorrect @param tag * docs: correct @see link in KDoc for showBadgesWithCount * docs: fix KDoc tag from @property to @param for context in BottomSheetAdapter * docs: comment out KDoc for disabled method to avoid unresolved @param warning * docs: fix KDoc for onLongPress by removing invalid @param imageUri * docs: clean up invalid KDoc tags on property and add docs to isEmpty * docs: remove invalid @param originalImageCoordinates from findOtherImages KDoc * docs: fix incorrect @param tag in checkDuplicateImage KDoc * docs: fix incorrect @param in onLongPress KDoc * docs: fix invalid @param and @return tags on author property * docs: fix incorrect @param in provideWikidataMediaInterface KDoc * docs: fix incorrect @param name in getWikiText KDoc * docs: escape wikilinks with [[ ]] to avoid KDoc resolution warnings * docs: fix KDoc by adding missing param descriptions to startActivityWithFlags * docs: fix KDoc by replacing @param with @property for contentUri * docs: fix malformed KDoc in startYourself, remove invalid @param line * docs: remove invalid @param tag in createDialogsAndHandleLocationPermissions * docs: remove invalid @param tags to @property * @docs: remove invalid @property tags * docs: clean up KDoc by removing invalid @param and @return tags * docs: fix incorrect @param name in removeBlocklisted KDoc * docs: fix incorrect @param name in checkDuplicateImage KDoc * docs: fix incorrect @param tag --------- Co-authored-by: Nicolas Raoul --- .../free/nrw/commons/UploadCancelledTest.kt | 4 +- .../java/fr/free/nrw/commons/UploadTest.kt | 2 +- .../main/java/fr/free/nrw/commons/Media.kt | 21 ++-- .../nrw/commons/actions/PageEditInterface.kt | 7 +- .../nrw/commons/bookmarks/models/Bookmark.kt | 2 +- .../ExceptionAwareThreadPoolExecutor.kt | 4 +- .../contributions/ContributionsFragment.kt | 9 +- .../listeners/ImageSelectListener.kt | 7 +- .../customselector/model/CallbackStatus.kt | 6 +- .../ui/selector/CustomSelectorActivity.kt | 7 +- .../ui/selector/ImageFileLoader.kt | 3 +- .../free/nrw/commons/di/NetworkingModule.kt | 8 +- .../commons/explore/models/RecentSearch.kt | 4 +- .../nrw/commons/mwapi/OkHttpJsonApiClient.kt | 114 +++++++++--------- .../nrw/commons/nearby/BottomSheetAdapter.kt | 2 +- .../nearby/fragments/NearbyParentFragment.kt | 11 +- .../achievements/AchievementsFragment.kt | 2 +- .../nrw/commons/quiz/QuizResultActivity.kt | 9 +- .../commons/repository/UploadRepository.kt | 7 +- .../free/nrw/commons/review/ReviewActivity.kt | 6 +- .../nrw/commons/settings/SettingsFragment.kt | 4 +- .../fr/free/nrw/commons/upload/Description.kt | 12 +- .../free/nrw/commons/upload/FileProcessor.kt | 13 +- .../commons/upload/ImageProcessingService.kt | 6 +- .../nrw/commons/upload/UploadMediaDetail.kt | 11 +- .../upload/UploadMediaDetailInputFilter.kt | 7 +- .../fr/free/nrw/commons/upload/UploadModel.kt | 7 +- .../free/nrw/commons/utils/LocationUtils.kt | 4 +- .../commons/wikidata/model/page/PageTitle.kt | 4 +- 29 files changed, 153 insertions(+), 150 deletions(-) diff --git a/app/src/androidTest/java/fr/free/nrw/commons/UploadCancelledTest.kt b/app/src/androidTest/java/fr/free/nrw/commons/UploadCancelledTest.kt index c3d3dc3c3..ed57709fc 100644 --- a/app/src/androidTest/java/fr/free/nrw/commons/UploadCancelledTest.kt +++ b/app/src/androidTest/java/fr/free/nrw/commons/UploadCancelledTest.kt @@ -49,7 +49,7 @@ class UploadCancelledTest { fun setup() { try { Intents.init() - } catch (ex: IllegalStateException) { + } catch (_: IllegalStateException) { } device.unfreezeRotation() device.setOrientationNatural() @@ -65,7 +65,7 @@ class UploadCancelledTest { fun teardown() { try { Intents.release() - } catch (ex: IllegalStateException) { + } catch (_: IllegalStateException) { } } diff --git a/app/src/androidTest/java/fr/free/nrw/commons/UploadTest.kt b/app/src/androidTest/java/fr/free/nrw/commons/UploadTest.kt index 88c7e5d3d..048d540b7 100644 --- a/app/src/androidTest/java/fr/free/nrw/commons/UploadTest.kt +++ b/app/src/androidTest/java/fr/free/nrw/commons/UploadTest.kt @@ -71,7 +71,7 @@ class UploadTest { fun setup() { try { Intents.init() - } catch (ex: IllegalStateException) { + } catch (_: IllegalStateException) { } UITestHelper.loginUser() UITestHelper.skipWelcome() diff --git a/app/src/main/java/fr/free/nrw/commons/Media.kt b/app/src/main/java/fr/free/nrw/commons/Media.kt index d07bc0265..7bd8e95fd 100644 --- a/app/src/main/java/fr/free/nrw/commons/Media.kt +++ b/app/src/main/java/fr/free/nrw/commons/Media.kt @@ -28,9 +28,7 @@ class Media constructor( */ var filename: String? = null, /** - * Gets or sets the file description. - * @return file description as a string - * @param fallbackDescription the new description of the file + * The fallback description of the file, used if no other description is provided. */ var fallbackDescription: String? = null, /** @@ -40,19 +38,24 @@ class Media constructor( */ var dateUploaded: Date? = null, /** - * Gets or sets the license name of the file. - * @return license as a String - * @param license license name as a String + * The license name of the file. */ var license: String? = null, + /** + * The URL corresponding to the license. + */ var licenseUrl: String? = null, /** - * Gets or sets the name of the creator of the file. - * @return author name as a String - * @param author creator name as a string + * The name of the creator of the file. */ var author: String? = null, + /** + * The username of the uploader. + */ var user: String? = null, + /** + * The full name of the file's creator, if different from username. + */ var creatorName: String? = null, /** * Gets the categories the file falls under. diff --git a/app/src/main/java/fr/free/nrw/commons/actions/PageEditInterface.kt b/app/src/main/java/fr/free/nrw/commons/actions/PageEditInterface.kt index db43bb620..5e2651039 100644 --- a/app/src/main/java/fr/free/nrw/commons/actions/PageEditInterface.kt +++ b/app/src/main/java/fr/free/nrw/commons/actions/PageEditInterface.kt @@ -129,9 +129,10 @@ interface PageEditInterface { ): Observable /** - * Get wiki text for provided file names - * @param titles : Name of the file - * @return Single + * Gets the wiki text for the provided file name. + * + * @param title The title (name) of the file to fetch wiki text for. + * @return A Single emitting the wiki query response. */ @GET(MW_API_PREFIX + "action=query&prop=revisions&rvprop=content|timestamp&rvlimit=1&converttitles=") fun getWikiText( diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/models/Bookmark.kt b/app/src/main/java/fr/free/nrw/commons/bookmarks/models/Bookmark.kt index a33638e72..630889c01 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/models/Bookmark.kt +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/models/Bookmark.kt @@ -8,7 +8,7 @@ class Bookmark( /** * Gets or Sets the content URI - marking this bookmark as already saved in the database * @return content URI - * @param contentUri the content URI + * contentUri the content URI */ var contentUri: Uri?, ) { diff --git a/app/src/main/java/fr/free/nrw/commons/concurrency/ExceptionAwareThreadPoolExecutor.kt b/app/src/main/java/fr/free/nrw/commons/concurrency/ExceptionAwareThreadPoolExecutor.kt index 0efe057f2..7605964bd 100644 --- a/app/src/main/java/fr/free/nrw/commons/concurrency/ExceptionAwareThreadPoolExecutor.kt +++ b/app/src/main/java/fr/free/nrw/commons/concurrency/ExceptionAwareThreadPoolExecutor.kt @@ -22,9 +22,9 @@ class ExceptionAwareThreadPoolExecutor( if (r.isDone) { r.get() } - } catch (e: CancellationException) { + } catch (_: CancellationException) { // ignore - } catch (e: InterruptedException) { + } catch (_: InterruptedException) { // ignore } catch (e: ExecutionException) { throwable = e.cause ?: e diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.kt b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.kt index f293ccc44..f50df13ff 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.kt @@ -808,10 +808,11 @@ class ContributionsFragment : CommonsDaggerSupportFragment(), FragmentManager.On } } - /** - * Temporarily disabled, see issue [https://github.com/commons-app/apps-android-commons/issues/5847] - * @param count The number of pending uploads. - */ + // /** + // * Temporarily disabled. See issue [#5847](https://github.com/commons-app/apps-android-commons/issues/5847) + // * @param count The number of pending uploads. + // */ + // public void updateUploadIcon(int count) { // public void updateUploadIcon(int count) { // if (pendingUploadsImageView != null) { // if (count != 0) { diff --git a/app/src/main/java/fr/free/nrw/commons/customselector/listeners/ImageSelectListener.kt b/app/src/main/java/fr/free/nrw/commons/customselector/listeners/ImageSelectListener.kt index 24565963b..88f90d2e9 100644 --- a/app/src/main/java/fr/free/nrw/commons/customselector/listeners/ImageSelectListener.kt +++ b/app/src/main/java/fr/free/nrw/commons/customselector/listeners/ImageSelectListener.kt @@ -17,8 +17,11 @@ interface ImageSelectListener { ) /** - * onLongPress - * @param imageUri : uri of image + * Called when the user performs a long press on an image. + * + * @param position The index of the pressed image in the list. + * @param images The list of all available images. + * @param selectedImages The currently selected images. */ fun onLongPress( position: Int, diff --git a/app/src/main/java/fr/free/nrw/commons/customselector/model/CallbackStatus.kt b/app/src/main/java/fr/free/nrw/commons/customselector/model/CallbackStatus.kt index c47806f16..856c8de88 100644 --- a/app/src/main/java/fr/free/nrw/commons/customselector/model/CallbackStatus.kt +++ b/app/src/main/java/fr/free/nrw/commons/customselector/model/CallbackStatus.kt @@ -8,15 +8,15 @@ sealed class CallbackStatus { /** IDLE : The callback is idle , doing nothing. */ - object IDLE : CallbackStatus() + data object IDLE : CallbackStatus() /** FETCHING : Fetching images. */ - object FETCHING : CallbackStatus() + data object FETCHING : CallbackStatus() /** SUCCESS : Success fetching images. */ - object SUCCESS : CallbackStatus() + data object SUCCESS : CallbackStatus() } 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 6b78dfd41..f872d3044 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 @@ -610,8 +610,11 @@ class CustomSelectorActivity : } /** - * onLongPress - * @param imageUri : uri of image + * Triggered when the user performs a long press on an image. + * + * @param position The index of the selected image. + * @param images The list of all available images. + * @param selectedImages The list of images currently selected. */ override fun onLongPress( position: Int, diff --git a/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/ImageFileLoader.kt b/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/ImageFileLoader.kt index f079dee50..05eb117a3 100644 --- a/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/ImageFileLoader.kt +++ b/app/src/main/java/fr/free/nrw/commons/customselector/ui/selector/ImageFileLoader.kt @@ -104,7 +104,8 @@ class ImageFileLoader( if (file != null && file.exists() && name != null && path != null && bucketName != null) { val extension = path.substringAfterLast(".", "") // Check if the extension is one of the allowed types - if (extension.lowercase(Locale.ROOT) !in arrayOf("jpg", "jpeg", "png", "svg", "gif", "tiff", "webp", "xcf")) { + if (extension.lowercase(Locale.ROOT) !in arrayOf("jpg", "jpeg", "png", "svg", + "gif", "tiff", "webp", "xcf")) { continue } diff --git a/app/src/main/java/fr/free/nrw/commons/di/NetworkingModule.kt b/app/src/main/java/fr/free/nrw/commons/di/NetworkingModule.kt index 0e9d83478..2539db312 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/NetworkingModule.kt +++ b/app/src/main/java/fr/free/nrw/commons/di/NetworkingModule.kt @@ -238,10 +238,10 @@ class NetworkingModule { factory.create(BuildConfig.COMMONS_URL) /** - * Add provider for WikidataMediaInterface - * It creates a retrofit service for the commons wiki site - * @param commonsWikiSite commonsWikiSite - * @return WikidataMediaInterface + * Provides a Retrofit service for accessing the commons wiki site via [WikidataMediaInterface]. + * + * @param factory The CommonsServiceFactory used to create the Retrofit service. + * @return An instance of [WikidataMediaInterface]. */ @Provides @Singleton diff --git a/app/src/main/java/fr/free/nrw/commons/explore/models/RecentSearch.kt b/app/src/main/java/fr/free/nrw/commons/explore/models/RecentSearch.kt index 2340865a6..0f72cac29 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/models/RecentSearch.kt +++ b/app/src/main/java/fr/free/nrw/commons/explore/models/RecentSearch.kt @@ -9,9 +9,9 @@ import java.util.Date */ class RecentSearch( /** - * Modifies the content URI - marking this query as already saved in the database + * The content URI that marks this query as already saved in the database. * - * @param contentUri the content URI + * @property contentUri the content URI */ var contentUri: Uri?, /** diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/OkHttpJsonApiClient.kt b/app/src/main/java/fr/free/nrw/commons/mwapi/OkHttpJsonApiClient.kt index 291c834bd..4fa7979d2 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/OkHttpJsonApiClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/OkHttpJsonApiClient.kt @@ -531,40 +531,38 @@ ${"wd:" + place.wikiDataEntityId}""" ) if (placeBindings != null) { for ((item1, label, location, clas) in placeBindings) { - if (item1 != null && label != null && clas != null) { - val input = location.value - val pattern = Pattern.compile( - "Point\\(([-+]?[0-9]*\\.?[0-9]+) ([-+]?[0-9]*\\.?[0-9]+)\\)" - ) - val matcher = pattern.matcher(input) + val input = location.value + val pattern = Pattern.compile( + "Point\\(([-+]?[0-9]*\\.?[0-9]+) ([-+]?[0-9]*\\.?[0-9]+)\\)" + ) + val matcher = pattern.matcher(input) - if (matcher.find()) { - val longStr = matcher.group(1) - val latStr = matcher.group(2) - val itemUrl = item1.value - val itemName = label.value.replace("&", "&") - val itemLatitude = latStr - val itemLongitude = longStr - val itemClass = clas.value + if (matcher.find()) { + val longStr = matcher.group(1) + val latStr = matcher.group(2) + val itemUrl = item1.value + val itemName = label.value.replace("&", "&") + val itemLatitude = latStr + val itemLongitude = longStr + val itemClass = clas.value - val formattedItemName = - if (!itemClass.isEmpty()) - "$itemName ($itemClass)" - else - itemName + val formattedItemName = + if (!itemClass.isEmpty()) + "$itemName ($itemClass)" + else + itemName - val kmlEntry = (""" - - $formattedItemName - $itemUrl - - $itemLongitude,$itemLatitude - - """) - kmlString = kmlString + kmlEntry - } else { - Timber.e("No match found") - } + val kmlEntry = (""" + + $formattedItemName + $itemUrl + + $itemLongitude,$itemLatitude + + """) + kmlString = kmlString + kmlEntry + } else { + Timber.e("No match found") } } } @@ -589,37 +587,35 @@ ${"wd:" + place.wikiDataEntityId}""" val placeBindings = runQuery(leftLatLng, rightLatLng) if (placeBindings != null) { for ((item1, label, location, clas) in placeBindings) { - if (item1 != null && label != null && clas != null) { - val input = location.value - val pattern = Pattern.compile( - "Point\\(([-+]?[0-9]*\\.?[0-9]+) ([-+]?[0-9]*\\.?[0-9]+)\\)" - ) - val matcher = pattern.matcher(input) + val input = location.value + val pattern = Pattern.compile( + "Point\\(([-+]?[0-9]*\\.?[0-9]+) ([-+]?[0-9]*\\.?[0-9]+)\\)" + ) + val matcher = pattern.matcher(input) - if (matcher.find()) { - val longStr = matcher.group(1) - val latStr = matcher.group(2) - val itemUrl = item1.value - val itemName = label.value.replace("&", "&") - val itemLatitude = latStr - val itemLongitude = longStr - val itemClass = clas.value + if (matcher.find()) { + val longStr = matcher.group(1) + val latStr = matcher.group(2) + val itemUrl = item1.value + val itemName = label.value.replace("&", "&") + val itemLatitude = latStr + val itemLongitude = longStr + val itemClass = clas.value - val formattedItemName = if (!itemClass.isEmpty()) - "$itemName ($itemClass)" - else - itemName + val formattedItemName = if (!itemClass.isEmpty()) + "$itemName ($itemClass)" + else + itemName - val gpxEntry = - (""" - - $itemName - $itemUrl - """) - gpxString = gpxString + gpxEntry - } else { - Timber.e("No match found") - } + val gpxEntry = + (""" + + $itemName + $itemUrl +""") + gpxString = gpxString + gpxEntry + } else { + Timber.e("No match found") } } } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/BottomSheetAdapter.kt b/app/src/main/java/fr/free/nrw/commons/nearby/BottomSheetAdapter.kt index a83d49f75..714cd388f 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/BottomSheetAdapter.kt +++ b/app/src/main/java/fr/free/nrw/commons/nearby/BottomSheetAdapter.kt @@ -16,7 +16,7 @@ import fr.free.nrw.commons.nearby.model.BottomSheetItem /** * RecyclerView Adapter for displaying items in a bottom sheet. * - * @property context The context used for inflating layout resources. + * @param context The context used for inflating layout resources. * @property itemList The list of BottomSheetItem objects to display. * @constructor Creates an instance of BottomSheetAdapter. */ diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt index 7445a6526..56af614d7 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt @@ -63,6 +63,7 @@ import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao import fr.free.nrw.commons.contributions.ContributionController import fr.free.nrw.commons.contributions.MainActivity import fr.free.nrw.commons.contributions.MainActivity.ActiveFragment +import fr.free.nrw.commons.customselector.ui.selector.ImageLoader import fr.free.nrw.commons.databinding.FragmentNearbyParentBinding import fr.free.nrw.commons.di.CommonsDaggerSupportFragment import fr.free.nrw.commons.filepicker.FilePicker @@ -1756,9 +1757,9 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), override fun animateFABs() { if (binding!!.fabPlus.isShown) { if (isFABsExpanded) { - collapseFABs(isFABsExpanded) + collapseFABs(true) } else { - expandFABs(isFABsExpanded) + expandFABs(false) } } } @@ -2013,17 +2014,17 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), if (place.exists && place.pic.trim { it <= ' ' }.isEmpty()) { shouldUpdateMarker = true } - } else if (displayExists && !displayNeedsPhoto) { + } else if (displayExists) { // Exists and all included needs and doesn't needs photo if (place.exists) { shouldUpdateMarker = true } - } else if (!displayExists && displayNeedsPhoto) { + } else if (displayNeedsPhoto) { // All and only needs photo if (place.pic.trim { it <= ' ' }.isEmpty()) { shouldUpdateMarker = true } - } else if (!displayExists && !displayNeedsPhoto) { + } else { // all shouldUpdateMarker = true } diff --git a/app/src/main/java/fr/free/nrw/commons/profile/achievements/AchievementsFragment.kt b/app/src/main/java/fr/free/nrw/commons/profile/achievements/AchievementsFragment.kt index af07423eb..f967b8619 100644 --- a/app/src/main/java/fr/free/nrw/commons/profile/achievements/AchievementsFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/profile/achievements/AchievementsFragment.kt @@ -389,7 +389,7 @@ class AchievementsFragment : CommonsDaggerSupportFragment(){ * @param badgeTextColor The badge text color. Default is R.attr.colorPrimary * @param badgeGravity The position of the badge [TOP_END,TOP_START,BOTTOM_END,BOTTOM_START]. Default is TOP_END * @return if the number is 0, then it will not create badge for it and hide the view - * @see https://developer.android.com/reference/com/google/android/material/badge/BadgeDrawable + * @see BadgeDrawable (Android Developer) */ private fun showBadgesWithCount( diff --git a/app/src/main/java/fr/free/nrw/commons/quiz/QuizResultActivity.kt b/app/src/main/java/fr/free/nrw/commons/quiz/QuizResultActivity.kt index 0282da190..81372b4a6 100644 --- a/app/src/main/java/fr/free/nrw/commons/quiz/QuizResultActivity.kt +++ b/app/src/main/java/fr/free/nrw/commons/quiz/QuizResultActivity.kt @@ -93,10 +93,11 @@ class QuizResultActivity : AppCompatActivity() { } /** - * Function to call intent to an activity - * @param context - * @param cls - * @param flags + * Starts an activity using the provided context, target class, and intent flags. + * + * @param context The context used to start the activity. + * @param cls The target activity class. + * @param flags A variable number of intent flags to apply to the Intent. */ companion object { fun startActivityWithFlags(context: Context, cls: Class, vararg flags: Int) { diff --git a/app/src/main/java/fr/free/nrw/commons/repository/UploadRepository.kt b/app/src/main/java/fr/free/nrw/commons/repository/UploadRepository.kt index 443a112dd..19f526906 100644 --- a/app/src/main/java/fr/free/nrw/commons/repository/UploadRepository.kt +++ b/app/src/main/java/fr/free/nrw/commons/repository/UploadRepository.kt @@ -199,10 +199,11 @@ class UploadRepository @Inject constructor( } /** - * Query the RemoteDataSource for image duplicity check + * Queries the RemoteDataSource to check if the image is a duplicate. * - * @param filePath file to be checked - * @return IMAGE_DUPLICATE or IMAGE_OK + * @param originalFilePath The original file to be checked. + * @param modifiedFilePath The modified version of the file (if any). + * @return IMAGE_DUPLICATE if the image already exists, otherwise IMAGE_OK. */ fun checkDuplicateImage(originalFilePath: Uri?, modifiedFilePath: Uri?): Single { return uploadModel.checkDuplicateImage(originalFilePath, modifiedFilePath) diff --git a/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.kt b/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.kt index 01a1005fe..20f289f8f 100644 --- a/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.kt +++ b/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.kt @@ -55,10 +55,10 @@ class ReviewActivity : BaseActivity() { } /** - * Consumers should be simply using this method to use this activity. + * Starts the ReviewActivity. * - * @param context - * @param title Page title + * @param context The context used to start the activity. + * @param title The page title (currently unused). */ companion object { fun startYourself(context: Context, title: String) { diff --git a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.kt b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.kt index 161927d03..092f057e9 100644 --- a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.kt @@ -276,9 +276,7 @@ class SettingsFragment : PreferenceFragmentCompat() { } /** - * Asks users to provide location access - * - * @param activity + * Asks users to provide location access. */ private fun createDialogsAndHandleLocationPermissions() { inAppCameraLocationPermissionLauncher.launch(arrayOf(permission.ACCESS_FINE_LOCATION)) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/Description.kt b/app/src/main/java/fr/free/nrw/commons/upload/Description.kt index 83902aae4..cb2a85362 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/Description.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/Description.kt @@ -6,29 +6,29 @@ package fr.free.nrw.commons.upload class Description { /** * The language code, e.g., "en" or "fr". - * @param languageCode The language code. + * @property languageCode The language code. */ var languageCode: String? = null /** * The description text for the item being uploaded. - * @param descriptionText The description text. + * @property descriptionText The description text. */ var descriptionText: String? = null /** * The index of the language selected in a spinner with [SpinnerLanguagesAdapter]. - * @param selectedLanguageIndex The index of the selected language. + * @property selectedLanguageIndex The index of the selected language. */ var selectedLanguageIndex = -1 /** * Indicates if the description was added manually (by the user or programmatically). - * @param manuallyAdded Sets to true if the description was manually added by the user. - * @return True if the description was manually added. */ var isManuallyAdded = false - + /** + * Returns true if the description text is null or empty. + */ val isEmpty: Boolean get() = descriptionText == null || descriptionText!!.isEmpty() diff --git a/app/src/main/java/fr/free/nrw/commons/upload/FileProcessor.kt b/app/src/main/java/fr/free/nrw/commons/upload/FileProcessor.kt index 617da88a0..ed1867472 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/FileProcessor.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/FileProcessor.kt @@ -137,13 +137,12 @@ class FileProcessor } } - /** - * Find other images around the same location that were taken within the last 20 sec - * - * @param originalImageCoordinates - * @param fileBeingProcessed - * @param similarImageInterface - */ + /** + * Finds other images around the same location that were taken within a ±120 sec window. + * + * @param fileBeingProcessed The file currently being checked. + * @param similarImageInterface Callback to display similar images if any are found. + */ private fun findOtherImages( fileBeingProcessed: File, similarImageInterface: SimilarImageInterface?, diff --git a/app/src/main/java/fr/free/nrw/commons/upload/ImageProcessingService.kt b/app/src/main/java/fr/free/nrw/commons/upload/ImageProcessingService.kt index 3acd13c65..cbec7559f 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/ImageProcessingService.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/ImageProcessingService.kt @@ -138,10 +138,10 @@ class ImageProcessingService @Inject constructor( } /** - * Checks for duplicate image + * Checks for duplicate image by calculating its SHA1 hash and querying the media client. * - * @param filePath file to be checked - * @return IMAGE_DUPLICATE or IMAGE_OK + * @param inputStream The input stream of the file to check. + * @return IMAGE_DUPLICATE if the file exists, or IMAGE_OK otherwise. */ private fun checkDuplicateImage(inputStream: InputStream): Single { return Single.fromCallable { fileUtilsWrapper.getSHA1(inputStream) } diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetail.kt b/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetail.kt index 351e53124..446d1f0cf 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetail.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetail.kt @@ -10,18 +10,15 @@ import kotlinx.parcelize.Parcelize @Parcelize data class UploadMediaDetail( /** - * The language code ie. "en" or "fr". - * @param languageCode The language code ie. "en" or "fr". + * The language code, e.g., "en" or "fr". */ var languageCode: String? = null, /** * The description text for the item being uploaded. - * @param descriptionText The description text. */ var descriptionText: String? = "", /** * The caption text for the item being uploaded. - * @param captionText The caption text. */ var captionText: String = "", ) : Parcelable { @@ -35,15 +32,11 @@ data class UploadMediaDetail( /** * The index of the language selected in a spinner with [SpinnerLanguagesAdapter]. - * @return The index of the selected language. - * @param selectedLanguageIndex The index of the language selected. */ var selectedLanguageIndex: Int = -1 /** - * Returns if the description was added manually (by the user, or programmatically). - * @return True if the description was manually added. - * @param manuallyAdded Sets to true if the description was manually added. + * Indicates whether the description was added manually (by the user or programmatically). */ var isManuallyAdded: Boolean = false } diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailInputFilter.kt b/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailInputFilter.kt index d4baf21c8..1d5e59468 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailInputFilter.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailInputFilter.kt @@ -30,9 +30,10 @@ class UploadMediaDetailInputFilter : InputFilter { patterns.any { it.matcher(source).find() } /** - * Removes any blocklisted characters from the source text. - * @param source input text - * @return a cleaned character sequence + * Removes any blocklisted characters from the input text. + * + * @param input The input text to be cleaned. + * @return A cleaned character sequence with blocklisted patterns removed. */ private fun removeBlocklisted(input: CharSequence): CharSequence { var source = input diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadModel.kt b/app/src/main/java/fr/free/nrw/commons/upload/UploadModel.kt index 2cda7a890..954079a45 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadModel.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadModel.kt @@ -98,10 +98,11 @@ class UploadModel @Inject internal constructor( imageProcessingService.validateImage(uploadItem, inAppPictureLocation) /** - * Calls checkDuplicateImage() of ImageProcessingService to check if image is duplicate + * Calls checkDuplicateImage() of ImageProcessingService to check if the image is a duplicate. * - * @param filePath file to be checked - * @return IMAGE_DUPLICATE or IMAGE_OK + * @param originalFilePath The original file URI. + * @param modifiedFilePath The modified file URI. + * @return IMAGE_DUPLICATE if the file already exists, IMAGE_OK otherwise. */ fun checkDuplicateImage(originalFilePath: Uri?, modifiedFilePath: Uri?): Single = imageProcessingService.checkIfFileAlreadyExists( diff --git a/app/src/main/java/fr/free/nrw/commons/utils/LocationUtils.kt b/app/src/main/java/fr/free/nrw/commons/utils/LocationUtils.kt index 2df42270e..1fbd87581 100644 --- a/app/src/main/java/fr/free/nrw/commons/utils/LocationUtils.kt +++ b/app/src/main/java/fr/free/nrw/commons/utils/LocationUtils.kt @@ -16,12 +16,12 @@ object LocationUtils { val indexOfPrefix = customQuery.indexOf("Point(") if (indexOfPrefix == -1) { Timber.e("Invalid prefix index - Seems like user has entered an invalid query") - return latLng + return null } val indexOfSuffix = customQuery.indexOf(")\"", indexOfPrefix) if (indexOfSuffix == -1) { Timber.e("Invalid suffix index - Seems like user has entered an invalid query") - return latLng + return null } val latLngString = customQuery.substring(indexOfPrefix + "Point(".length, indexOfSuffix) if (latLngString.isEmpty()) { diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/PageTitle.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/PageTitle.kt index b039f55d6..98885a135 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/PageTitle.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/model/page/PageTitle.kt @@ -32,8 +32,8 @@ class PageTitle : Parcelable { * looking at. * * Examples: - * * [[Manchester]] on enwiki will have a namespace of null - * * [[Deutschland]] on dewiki will have a namespace of null + * * \[\[Manchester\]\] on enwiki will have a namespace of null + * * \[\[Deutschland\]\] on dewiki will have a namespace of null * * [[User:Deskana]] on enwiki will have a namespace of "User" * * [[Utilisateur:Deskana]] on frwiki will have a namespace of "Utilisateur", even if you got * to the page by going to [[User:Deskana]] and having MediaWiki automatically redirect you. From 95b8ac74b9c8a0eb247931b99fccd891fff652f4 Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Thu, 29 May 2025 14:01:51 +0200 Subject: [PATCH 02/27] Localisation updates from https://translatewiki.net. --- app/src/main/res/values-it/strings.xml | 31 +++++++++++++++++++++++--- app/src/main/res/values-iw/strings.xml | 1 + app/src/main/res/values-mk/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sv/strings.xml | 2 ++ app/src/main/res/values-ta/strings.xml | 5 +++++ 6 files changed, 38 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 221f55da6..b639c31fd 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -4,6 +4,7 @@ * Albe Albe 460 * Albe Albe460 * Ale.salmo +* Antonino Faro * Beta16 * Black Sky83 * Champ0999 @@ -34,7 +35,7 @@ Aggiungi nuovo contributo Aggiungi contributo dalla fotocamera Aggiungi contributo da Foto - Aggiungi contributo dalla galleria dei contributi precedenti + Aggiungi un contributo dalla galleria dei contributi precedenti Didascalie Descrizione della lingua Didascalia @@ -86,7 +87,7 @@ Nome utente Password Accedi alla tua utenza in Commons Beta - Entra + Accedi Password dimenticata? Registrati Accesso in corso @@ -103,7 +104,7 @@ Caricamento iniziato! Caricamento in coda (attivata modalità di connessione limitata) %1$s caricato! - Premi per vedere i tuoi caricamenti + Tocca per visualizzare il tuo caricamento Caricamento file: %s Sto caricando %1$s Terminato il caricamento di %1$s @@ -301,6 +302,7 @@ Internet non disponibile. Vengono mostrati solo i luoghi memorizzati nella cache. Accesso alla posizione negato. Impostala manualmente per utilizzare questa funzione. È richiesta l\'autorizzazione per visualizzare un elenco di luoghi nelle vicinanze + È richiesta l\'autorizzazione per visualizzare un elenco di luoghi nelle vicinanze Indicazioni Wikidata Wikipedia @@ -608,6 +610,7 @@ Accendere la localizzazione? Si prega di attivare i servizi di localizzazione dell’app per mostrare la tua posizione attuale La funzione \'nelle vicinanze\' richiede l\'abilitazione della localizzazione per operare correttamente + La mappa Esplora necessita dell\'autorizzazione di posizione per visualizzare le immagini vicine È necessario fornire l\'autorizzazione alla posizione per impostare automaticamente la posizione. Hai scattato queste immagini nello stesso posto? Vuoi usare la latitudine e la longitudine dell\'immagine indicate a destra? Caricane ancora @@ -721,6 +724,7 @@ Aggiungi luogo Rimuovi da questa email tutte le informazioni che non sei disposto a condividere pubblicamente. Inoltre, tieni presente che il tuo indirizzo email con cui stai scrivendo, il nome e l\'immagine del profilo associati saranno visibili pubblicamente. Dettagli + La classifica è disponibile solo nella versione prod. Consulta la documentazione per gli sviluppatori. La classifica è disponibile solo nella versione prod. Consulta la documentazione per gli sviluppatori. Per favore carica solo le foto che hai scattato tu. Gli autori che caricano immagini protette da copyright verranno bloccati. Questo vale anche per la versione beta. Grazie per aver testato l\'app! Deseleziona tutte le informazioni che non ti senti a tuo agio nel condividere pubblicamente. @@ -755,6 +759,7 @@ Benvenuto nella modalità di selezione a schermo intero Usa due dita per ingrandire e rimpicciolire. Scorri velocemente e a lungo per eseguire queste azioni: \n- Sinistra/destra: vai al precedente/successivo \n- Su: seleziona\n- Giù: contrassegna come da non caricare. + Per impostare il tuo avatar nella classifica, tocca \"Imposta come avatar\" nel menu a tre punti di qualsiasi immagine. Le coordinate non sono esatte, ma la persona che ha caricato questa immagine pensa che siano abbastanza vicine. Autorizzazioni di archiviazione negate Impossibile condividere questo elemento @@ -765,9 +770,14 @@ Modifica Immagine Modifica Posizione Posizione aggiornata! + Rimuovi posizione + Rimuovi avviso di posizione + La posizione rende le immagini più utili e facili da trovare. Vuoi davvero rimuovere la posizione da questa immagine? + Posizione rimossa! Ringrazia l\'autore Errore nell\'invio di ringraziamenti all\'autore. Sessione scaduta. Accedi nuovamente. + Nessuna applicazione disponibile per aprire i file GPX File salvato con successo Vuoi aprire il file GPX? Vuoi aprire il file KML? @@ -781,23 +791,38 @@ Ricorda che tutte le immagini in un caricamento multiplo hanno le stesse categorie e descrizioni. Se le immagini non condividono descrizioni e categorie, esegui caricamenti separati. Osservazione sui caricamenti multipli + Segnala un problema su questo elemento su Wikidata + Inserisci dei commenti + Discussione + \' %1$s \' si trova in un luogo diverso. + Sei sicuro di voler cancellare tutti i caricamenti? + Cancellando tutti i caricamenti... Caricamenti In attesa Non riuscito + Impossibile caricare i dati del luogo Cancella cartella Conferma cancellazione Sei sicuro di voler eliminare la cartella %1$s contenente elementi %2$d? Cancella Annulla Cartella %1$s cancellata correttamente + Impossibile eliminare la cartella %1$s Questo posto non ha ancora una foto, scattane una! Questo posto ha già una foto. Ora controlliamo se questo posto ha una foto. + Errore durante il caricamento Commons Altri wiki Utilizzi del file + SingleWebViewActivity + Utenza + Elimina l\'utenza + Avviso di eliminazione dell\'utenza Didascalia Didascalia copiata negli appunti + Mostra in Esplora + Mostra nelle vicinanze Creato e caricato da: %1$s Creato da %1$s e caricato da %2$s diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index fbeddc0d5..6aecaf1e8 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -822,6 +822,7 @@ שיחה נא לכתוב משהו על פריט \"%1$s\". זה יוצג לציבור. \"%1$s\" כבר לא קיים, אי־אפשר לצלם אותו. + ‚%1$s’ נמצא במקום אחר. \"%1$s\" נמצא במקום אחר. נא לציין את המקום הנכון למטה, ואם אפשר, לכתוב את קו הרוחב ואת קו האורך הנכונים. בעיה אחרת או מידע אחר (נא להסביר הלאה). המשוב שלך מתפרסם בדף הוויקי הבא: <a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:Mobile app/Feedback</a> diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index b055b1ff0..b3058b81e 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -785,6 +785,7 @@ Разговор Напишете нешто за предметот „%1$s“. Ова ќе биде јавно видливо. „%1$s“ повеќе не постои, нема да може да се фотографира. + „%1$s“ се наоѓа на друго место. „%1$s“ се наоѓа на друго место. Подолу укажете го исправното место и, ако е можно, ставете исправна географска ширина и должина. Друг проблем или информација (објаснете подолу). Вашите мислења се објавуваат на следнава викистраница: <a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:Mobile app/Feedback</a> diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index aa287c9cb..ecef5c74b 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -848,6 +848,7 @@ Обсуждение Напишите что-нибудь об элементе \'%1$s\'. Это будет видно всем. \'%1$s\' больше не существует, его невозможно сфотографировать. + \'%1$s\' находится в другом месте. \'%1$s\' находится в другом месте. Пожалуйста, укажите правильное место ниже и, если возможно, напишите правильную широту и долготу. Другая проблема или информация (пожалуйста, объясните ниже). Ваш отзыв будет опубликован на следующей вики-странице: <a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:Mobile app/Feedback</a> diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 6d8878f86..28a0896c0 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -2,6 +2,7 @@ @@ -459,6 +460,7 @@ Nascondi Attiva l\'accesso alla posizione dalle Impostazioni e riprova. \n\nNota: il caricamento potrebbe non contenere la posizione se l\'app non è in grado di recuperarla dal dispositivo entro un breve intervallo. La fotocamera in-app necessita dell\'autorizzazione alla posizione per allegarla alle tue immagini nel caso in cui la posizione non sia disponibile in EXIF. Consenti all\'app di accedere alla tua posizione e riprova.\n\nNota: il caricamento potrebbe non avere la posizione se l\'app non è in grado di recuperare la posizione dal dispositivo entro un breve intervallo. + L\'app non registra la posizione insieme alle riprese a causa della mancanza di autorizzazione alla posizione L\'app non registra la posizione insieme alle foto in quanto il GPS è disattivato Utilizza il selettore di foto basato sui documenti Il nuovo selettore di foto di Android rischia di perdere le informazioni sulla posizione. Abilita se pensi di usarlo. @@ -668,6 +670,7 @@ Per favore scrivi una breve descrizione su cosa è ritratto nella tua immagine. Nella descrizione, indica che cosa rende l\'immagine interessante, tipica o rara, e spiega il contesto, visibile o non. Impiega il più possibile una terminologia esatta. Trova e seleziona tutti i concetti rappresentati da questa immagine. Sii il più specifico possibile. Se l\'immagine ritrae più elementi, sceglili tutti entro limiti ragionevoli. Non scegliere etichette generali se sono disponibili etichette più specifiche. Si prega di selezionare le categorie appropriate. A differenza delle raffigurazioni, le categorie sono solo in inglese. + Commons rende le tue immagini riutilizzabili e adattabili da chiunque. Vuoi rinunciare a tutti i diritti? Vuoi che ti venga attribuita la paternità? Vuoi che gli adattamenti utilizzino la stessa licenza? Raffigura Licenza per il file Dettagli sul file @@ -794,7 +797,12 @@ Segnala un problema su questo elemento su Wikidata Inserisci dei commenti Discussione + Scrivi qualcosa su \' %1$s \'. Sarà visibile pubblicamente. + \'%1$s\' non esiste più, non potrà mai più essere fotografato. \' %1$s \' si trova in un luogo diverso. + \' %1$s \' si trova in un luogo diverso. Specifica il luogo corretto qui sotto e, se possibile, scrivi latitudine e longitudine corrette. + Altro problema o informazione (si prega di spiegare di seguito). + Il tuo feedback verrà pubblicato sulla seguente pagina wiki: <a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:App mobile/Feedback</a> Sei sicuro di voler cancellare tutti i caricamenti? Cancellando tutti i caricamenti... Caricamenti @@ -808,6 +816,7 @@ Annulla Cartella %1$s cancellata correttamente Impossibile eliminare la cartella %1$s + Impossibile eliminare i contenuti nella cartella: %1$s Questo posto non ha ancora una foto, scattane una! Questo posto ha già una foto. Ora controlliamo se questo posto ha una foto. @@ -819,8 +828,10 @@ Utenza Elimina l\'utenza Avviso di eliminazione dell\'utenza + Il diritto all\'oblio è una <b>soluzione estrema</b> e dovrebbe essere utilizzata solo quando si desidera smettere di contribuire per sempre e anche per nascondere il più possibile le proprie associazioni passate. \n\nLa cancellazione di un utenza su Wikimedia commons avviene cambiando il nome dell\'utenza in modo che gli altri non possano riconoscere i contributi, attraverso un processo chiamato scomparsa dell\'utenza. <b>L\'oblio non garantisce un anonimato completo né la rimozione dei contributi ai progetti.</b> Didascalia Didascalia copiata negli appunti + Congratulazioni, tutte le foto di questo album sono state caricate o contrassegnate come non adatte al caricamento. Mostra in Esplora Mostra nelle vicinanze Creato e caricato da: %1$s diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 699c60857..29cbf44c9 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -826,6 +826,7 @@ Dyskusja Napisz coś o elemencie \' %1$s\'. Będzie to publicznie widoczne. \'%1$s\' już nie istnieje, nie da się zrobić dla niego zdjęcia. + \'%1$s\' znajduje się w innym miejscu. \'%1$s\' jest w innym miejscu. Proszę podać poniżej prawidłowe miejsce i jeśli to możliwe, wpisać jego prawidłową szerokość i długość geograficzną. Inny problem lub informacja (proszę wyjaśnić poniżej). Twoja opinia zostanie opublikowana na następującej stronie wiki: <a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:Aplikacja mobilna/Opinie</a> @@ -855,6 +856,7 @@ Konto Wymaż konto Ostrzeżenie o wymazaniu konta + Wymazanie to <b>ostateczność</b> i należy z niej skorzystać <b>tylko wtedy, gdy chcesz na zawsze zaprzestać edytowania</b> oraz ukryć jak najwięcej swoich przeszłych powiązań.<br/><br/>Usunięcie konta w Wikimedia Commons odbywa się poprzez zmianę nazwy konta, tak aby inni nie mogli rozpoznać Twoich wkładów, w procesie zwanym wymazaniem konta. <b>Wymazanie nie gwarantuje pełnej anonimowości ani nie usuwa wkładów wniesionych do projektów</b>. Podpis Podpis skopiowano do schowka Gratulacje, wszystkie zdjęcia w tym albumie zostały przesłane lub zostały oznaczone jako nie do przesłania. diff --git a/app/src/main/res/values-pms/strings.xml b/app/src/main/res/values-pms/strings.xml index 5f494f044..b0ecdcfe1 100644 --- a/app/src/main/res/values-pms/strings.xml +++ b/app/src/main/res/values-pms/strings.xml @@ -781,6 +781,7 @@ Ciaciarade Scrive cheicòs a propòsit ëd l\'element \'%1$s\'. Sòn a sarà visìbil për tuti. \'%1$s\' a esist pi nen, a peul pa esse fotografà. + \'%1$s\' a l\'é ant un pòst diferent. \'%1$s\' a l\'é ant un pòst diferent. Për piasì, ch\'a spessìfica ël pòst giust sì-sota e, si possìbil, ch\'a scriva latitùdin e longitùdin giuste. Àutr problema o anformassion (për piasì, ch\'a spiega sì-sota). Ij sò sugeriment a saran giontà a coste pàgine wiki: <a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:Mobile app/Feedback</a> diff --git a/app/src/main/res/values-te/strings.xml b/app/src/main/res/values-te/strings.xml index 98898884d..ba67a7b35 100644 --- a/app/src/main/res/values-te/strings.xml +++ b/app/src/main/res/values-te/strings.xml @@ -2,6 +2,7 @@ @@ -45,29 +46,29 @@ పంచుకున్న కంటెంటును అందుకుంటున్నాం. బొమ్మల పరిమాణాన్ని బట్టి, మీ పరికరాన్ని బట్టీ ప్రాసెసింగు చేసేందుకు కొంత సమయం పట్టవచ్చు శోధించండి - రూపురేఖలు - సాధారణం - ప్రతిస్పందన - అంతరంగికత - కామన్స్ + స్వరూపం + సాధారణ + ప్రతిపుష్టి + గోప్యత + సామూహిక అమరికలు - కామన్స్ లోకి ఎక్కించండి + సామూహిక కు ఎగుమోత వాడుకరిపేరు సంకేతపదం - మీ కామన్స్ బీటా ఖాతా లోనికి ప్రవేశించండి - లాగినవండి + మీ సామూహికా బీటా ఖాతా లోనికి ప్రవేశించండి + ప్రవేశం సంకేతపదం మర్చిపోయారా? - నమోదవ్వండి - లాగినవుతున్నారు - వేచివుండండి… - ఉల్లేఖనలను, వివరణలనూ తాజాకరిస్తున్నాం - వేచి ఉండండి… + నమోదు + ప్రవేశిస్తున్నారు... + దయచేసి వేచివుండండి … + ఉల్లేఖనలను, వివరణలను నవీకరిస్తోంది + దయచేసి వేచివుండండి … లాగిన్ విజయవంతమైంది! లాగిన్ విఫలమైంది! - ఫైలు కనబడలేదు. మరో ఫైలు కోసం ప్రయత్నించండి. + దస్త్రం కనబడలేదు. దయచేసి మరో దస్త్రం కోసం ప్రయత్నించండి. అథీకరణ విఫలమైంది, మళ్ళీ ప్రయత్నించండి - ఎక్కింపు మొదలైంది! - ఎక్కింపు వరుసలో ఉంది (పరిమిత కనెక్షన్ల మోడ్ చేతనంగా ఉంది) + ఎగుమోత మొదలైంది! + ఎగుమోత వరుసలో ఉంది (పరిమిత సంబంధ పద్దతి చేతనం) %1$s ను ఎక్కించాం! మీ ఎక్కింపును చూసేందుకు నొక్కండి దస్త్రాన్ని ఎక్కిస్తున్నాం: $s diff --git a/app/src/main/res/values-ks/error.xml b/app/src/main/res/values-x-invalidLanguageCode/error.xml similarity index 98% rename from app/src/main/res/values-ks/error.xml rename to app/src/main/res/values-x-invalidLanguageCode/error.xml index 3ef53fda5..f4e2fe125 100644 --- a/app/src/main/res/values-ks/error.xml +++ b/app/src/main/res/values-x-invalidLanguageCode/error.xml @@ -1,6 +1,6 @@ کامَنٕز گوو رُکِتھ From f45f26e602497f155037d1849bf4561f5b5e6543 Mon Sep 17 00:00:00 2001 From: Sonal Yadav Date: Sat, 7 Jun 2025 19:39:47 +0530 Subject: [PATCH 10/27] Implement single selection logic in custom image picker (#6341) * build failure cause * Fix image selector logic in custom picker --- .../contributions/ContributionController.kt | 5 +++-- .../customselector/ui/adapter/ImageAdapter.kt | 20 ++++++++++++++++--- .../ui/selector/CustomSelectorActivity.kt | 6 +++++- .../ui/selector/ImageFragment.kt | 3 +++ .../free/nrw/commons/filepicker/FilePicker.kt | 17 ++++++++++++---- .../nearby/fragments/NearbyParentFragment.kt | 6 ++++-- .../values-x-invalidLanguageCode/error.xml | 10 ---------- 7 files changed, 45 insertions(+), 22 deletions(-) delete mode 100644 app/src/main/res/values-x-invalidLanguageCode/error.xml diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionController.kt b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionController.kt index 296391c6d..29267452b 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionController.kt +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionController.kt @@ -253,13 +253,14 @@ class ContributionController @Inject constructor(@param:Named("default_preferenc */ fun initiateCustomGalleryPickWithPermission( activity: Activity, - resultLauncher: ActivityResultLauncher + resultLauncher: ActivityResultLauncher, + singleSelection: Boolean = false ) { setPickerConfiguration(activity, true) checkPermissionsAndPerformAction( activity, - { openCustomSelector(activity, resultLauncher, 0) }, + { FilePicker.openCustomSelector(activity, resultLauncher, 0, singleSelection) }, R.string.storage_permission_title, R.string.write_storage_permission_rationale, *PERMISSIONS_STORAGE diff --git a/app/src/main/java/fr/free/nrw/commons/customselector/ui/adapter/ImageAdapter.kt b/app/src/main/java/fr/free/nrw/commons/customselector/ui/adapter/ImageAdapter.kt index 20a2fe70a..62a440ff4 100644 --- a/app/src/main/java/fr/free/nrw/commons/customselector/ui/adapter/ImageAdapter.kt +++ b/app/src/main/java/fr/free/nrw/commons/customselector/ui/adapter/ImageAdapter.kt @@ -327,12 +327,17 @@ class ImageAdapter( // Getting clicked index from all images index when show_already_actioned_images // switch is on + if (singleSelection) { + // If single selection mode, clear previous selection and select only the new one + if (selectedImages.isNotEmpty() && (selectedImages[0] != images[position])) { + val prevIndex = images.indexOf(selectedImages[0]) + selectedImages.clear() + notifyItemChanged(prevIndex, ImageUnselected()) + } + } val clickedIndex: Int = if (showAlreadyActionedImages) { ImageHelper.getIndex(selectedImages, images[position]) - - // Getting clicked index from actionable images when show_already_actioned_images - // switch is off } else { ImageHelper.getIndex(selectedImages, ArrayList(actionableImagesMap.values)[position]) } @@ -618,4 +623,13 @@ class ImageAdapter( * Returns the text for showing inside the bubble during bubble scroll. */ override fun getSectionName(position: Int): String = images[position].date + + private var singleSelection: Boolean = false + + /** + * Set single selection mode + */ + fun setSingleSelection(single: Boolean) { + singleSelection = single + } } 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 f872d3044..7e7d7e4cd 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 @@ -104,7 +104,7 @@ class CustomSelectorActivity : /** * Maximum number of images that can be selected. */ - private val uploadLimit: Int = 20 + private var uploadLimit: Int = 20 /** * Flag that is marked true when the amount @@ -207,6 +207,9 @@ class CustomSelectorActivity : CustomSelectorViewModel::class.java, ) + // Check for single selection extra + uploadLimit = if (intent.getBooleanExtra(EXTRA_SINGLE_SELECTION, false)) 1 else 20 + setupViews() if (prefs.getBoolean("customSelectorFirstLaunch", true)) { @@ -728,6 +731,7 @@ class CustomSelectorActivity : const val FOLDER_ID: String = "FolderId" const val FOLDER_NAME: String = "FolderName" const val ITEM_ID: String = "ItemId" + const val EXTRA_SINGLE_SELECTION: String = "EXTRA_SINGLE_SELECTION" } } 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 39d0d545a..6e08e30f1 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 @@ -212,6 +212,9 @@ class ImageFragment : _binding = FragmentCustomSelectorBinding.inflate(inflater, container, false) imageAdapter = ImageAdapter(requireActivity(), activity as ImageSelectListener, imageLoader!!) + // Set single selection mode if needed + val singleSelection = (activity as? CustomSelectorActivity)?.intent?.getBooleanExtra(CustomSelectorActivity.EXTRA_SINGLE_SELECTION, false) == true + imageAdapter.setSingleSelection(singleSelection) gridLayoutManager = GridLayoutManager(context, getSpanCount()) with(binding?.selectorRv) { this?.layoutManager = gridLayoutManager diff --git a/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.kt b/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.kt index acf072f02..ccccfbd34 100644 --- a/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.kt +++ b/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.kt @@ -25,6 +25,9 @@ object FilePicker : Constants { private const val KEY_LAST_CAMERA_VIDEO = "last_video" private const val KEY_TYPE = "type" + // Add extra for single selection + private const val EXTRA_SINGLE_SELECTION = "EXTRA_SINGLE_SELECTION" + /** * Returns the uri of the clicked image so that it can be put in MediaStore */ @@ -73,12 +76,17 @@ object FilePicker : Constants { * CreateCustomSectorIntent, creates intent for custom selector activity. * @param context * @param type + * @param singleSelection If true, restricts to single image selection * @return Custom selector intent */ @JvmStatic - private fun createCustomSelectorIntent(context: Context, type: Int): Intent { + private fun createCustomSelectorIntent(context: Context, type: Int, singleSelection: Boolean = false): Intent { storeType(context, type) - return Intent(context, CustomSelectorActivity::class.java) + val intent = Intent(context, CustomSelectorActivity::class.java) + if (singleSelection) { + intent.putExtra(EXTRA_SINGLE_SELECTION, true) + } + return intent } @JvmStatic @@ -153,9 +161,10 @@ object FilePicker : Constants { fun openCustomSelector( activity: Activity, resultLauncher: ActivityResultLauncher, - type: Int + type: Int, + singleSelection: Boolean = false ) { - val intent = createCustomSelectorIntent(activity, type) + val intent = createCustomSelectorIntent(activity, type, singleSelection) resultLauncher.launch(intent) } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt index 56af614d7..5b52c0ce5 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt @@ -974,7 +974,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), } else if (bottomSheetDetailsBehavior!!.state == BottomSheetBehavior.STATE_EXPANDED ) { - bottomSheetDetailsBehavior!!.state = BottomSheetBehavior.STATE_COLLAPSED + bottomSheetDetailsBehavior!!.setState(BottomSheetBehavior.STATE_COLLAPSED) } } @@ -2457,9 +2457,11 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), Timber.d("Gallery button tapped. Place: %s", selectedPlace.toString()) storeSharedPrefs(selectedPlace!!) activity?.let { + // Pass singleSelection = true for Nearby flow controller!!.initiateCustomGalleryPickWithPermission( it, - customSelectorLauncherForResult + customSelectorLauncherForResult, + singleSelection = true ) } } diff --git a/app/src/main/res/values-x-invalidLanguageCode/error.xml b/app/src/main/res/values-x-invalidLanguageCode/error.xml deleted file mode 100644 index f4e2fe125..000000000 --- a/app/src/main/res/values-x-invalidLanguageCode/error.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - کامَنٕز گوو رُکِتھ - Oops. کیہہ تام گوو غلط! - ؤنِیوٚ اَسہِ توٚہہِ کیاہ ٲسِیوٚ کران، تہٕ کٕریٚو تہِ اَسہِ سٕتی شیر بذریعہِ برقی خط. یُس مَدَتھ کَرِ اَسہِ اَتھ شہَرنَس منٛز! - شُکریہ! - From 767b62528993618de8eea876a3782a282f9e5d95 Mon Sep 17 00:00:00 2001 From: Ritika Pahwa <83745993+RitikaPahwa4444@users.noreply.github.com> Date: Sun, 8 Jun 2025 12:35:24 +0530 Subject: [PATCH 11/27] Bump up version code to 1052 --- app/build.gradle.kts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c74f95fb4..2d9e213b2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -24,8 +24,8 @@ android { applicationId = "fr.free.nrw.commons" minSdk = 21 targetSdk = 34 - versionCode = 1043 - versionName = "5.1.2" + versionCode = 1052 + versionName = "5.4.1" setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName()) testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" @@ -442,4 +442,4 @@ fun getBranchName(): String? { } catch (e: Exception) { null } -} \ No newline at end of file +} From c41b5cc9dae2f107a15918161d149ba401cb8787 Mon Sep 17 00:00:00 2001 From: Ritika Pahwa <83745993+RitikaPahwa4444@users.noreply.github.com> Date: Sun, 8 Jun 2025 12:38:14 +0530 Subject: [PATCH 12/27] Add v5.4.1 to CHANGELOG.md --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index df55b1124..cd4e70b6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Wikimedia Commons for Android +## v5.4.1 + +### What's changed +* Custom picker now detects images that are already available on Commons +* Improve credit line in image list +* Show place cards with loaded names only in the Nearby list +* Fix the error that occurs while loading images in Explore + ## v5.3.0 ### What's changed From 8ff52e681560fb79e9deccd8b321afee3791c60f Mon Sep 17 00:00:00 2001 From: Ritika Pahwa <83745993+RitikaPahwa4444@users.noreply.github.com> Date: Sun, 8 Jun 2025 19:16:01 +0530 Subject: [PATCH 13/27] Fix crash on app startup by bumping up room database version --- app/src/main/java/fr/free/nrw/commons/db/AppDatabase.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/db/AppDatabase.kt b/app/src/main/java/fr/free/nrw/commons/db/AppDatabase.kt index 74ec9bc89..79a655223 100644 --- a/app/src/main/java/fr/free/nrw/commons/db/AppDatabase.kt +++ b/app/src/main/java/fr/free/nrw/commons/db/AppDatabase.kt @@ -30,7 +30,7 @@ import fr.free.nrw.commons.upload.depicts.DepictsDao */ @Database( entities = [Contribution::class, Depicts::class, UploadedStatus::class, NotForUploadStatus::class, ReviewEntity::class, Place::class, BookmarksCategoryModal::class, BookmarksLocations::class], - version = 20, + version = 21, exportSchema = false, ) @TypeConverters(Converters::class) From 9b04031c916d1190c9f442974d0c723fdb4cd293 Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Mon, 9 Jun 2025 14:01:52 +0200 Subject: [PATCH 14/27] Localisation updates from https://translatewiki.net. --- app/src/main/res/values-el/strings.xml | 8 +++++++- .../main/res/values-x-invalidLanguageCode/error.xml | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/values-x-invalidLanguageCode/error.xml diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 1d718ddd2..da816259e 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -256,7 +256,7 @@ Κλείσιμο Αρχική σελίδα Μεταφόρτωση αρχείου - Κοντά σας + Κοντινά Σχετικά Ρυθμίσεις Ανατροφοδότηση @@ -803,6 +803,7 @@ Συζήτηση Γράψτε κάτι για το αντικείμενο \'%1$s\'. Θα είναι δημόσια ορατό. Το \'%1$s\' δεν υφίσταται πλέον, καμία φωτογραφία δεν μπορεί να εξαχθεί. + Το \'%1$s\' βρίσκεται σε διαφορετικό μέρος. Το \'%1$s\' βρίσκεται σε διαφορετική θέση. Παρακαλούμε προσδιορίστε τη σωστή θέση παρακαλώ, και αν είναι εφικτό, γράψτε το σωστό γεωγραφικό πλάτος και μήκος. Άλλο πρόβλημα ή πληροφορίες (παρακαλούμε εξηγήστε παρακάτω). Τα σχόλιά σας δημοσιεύονται στην ακόλουθη σελίδα wiki: <a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:Εφαρμογή για κινητά/Σχόλια</a> @@ -828,4 +829,9 @@ Λογαριασμός Λεζάντα Η λεζάντα αντιγράφηκε στο πρόχειρο + Συγχαρητήρια, όλες οι φωτογραφίες σε αυτό το άλμπουμ έχουν είτε μεταφορτωθεί είτε επισημανθεί για μη μεταφόρτωση. + Εμφάνιση στην Εξερεύνηση + Εμφάνιση στα Κοντινά + Δημιουργήθηκε και μεταφορτώθηκε από: %1$s + Δημιουργήθηκε από %1$s και μεταφορτώθηκε από %2$s diff --git a/app/src/main/res/values-x-invalidLanguageCode/error.xml b/app/src/main/res/values-x-invalidLanguageCode/error.xml new file mode 100644 index 000000000..f4e2fe125 --- /dev/null +++ b/app/src/main/res/values-x-invalidLanguageCode/error.xml @@ -0,0 +1,10 @@ + + + + کامَنٕز گوو رُکِتھ + Oops. کیہہ تام گوو غلط! + ؤنِیوٚ اَسہِ توٚہہِ کیاہ ٲسِیوٚ کران، تہٕ کٕریٚو تہِ اَسہِ سٕتی شیر بذریعہِ برقی خط. یُس مَدَتھ کَرِ اَسہِ اَتھ شہَرنَس منٛز! + شُکریہ! + From 2b5f0e4ac9aaabe9eb56dcfb5f9eaf3855beb08b Mon Sep 17 00:00:00 2001 From: Sonal Yadav Date: Wed, 11 Jun 2025 17:41:49 +0530 Subject: [PATCH 15/27] drop down menu in the Upload Wizard now show the language in which the pin's label is shown (#6346) --- .../nearby/presenter/NearbyParentFragmentPresenter.kt | 1 + .../main/res/values-x-invalidLanguageCode/error.xml | 10 ---------- 2 files changed, 1 insertion(+), 10 deletions(-) delete mode 100644 app/src/main/res/values-x-invalidLanguageCode/error.xml diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/presenter/NearbyParentFragmentPresenter.kt b/app/src/main/java/fr/free/nrw/commons/nearby/presenter/NearbyParentFragmentPresenter.kt index b4639b14a..6ec1064be 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/presenter/NearbyParentFragmentPresenter.kt +++ b/app/src/main/java/fr/free/nrw/commons/nearby/presenter/NearbyParentFragmentPresenter.kt @@ -351,6 +351,7 @@ class NearbyParentFragmentPresenter pic = repoPlace.pic ?: "" exists = repoPlace.exists ?: true longDescription = repoPlace.longDescription ?: "" + language = repoPlace.language } } else { indicesToUpdate.add(i) diff --git a/app/src/main/res/values-x-invalidLanguageCode/error.xml b/app/src/main/res/values-x-invalidLanguageCode/error.xml deleted file mode 100644 index f4e2fe125..000000000 --- a/app/src/main/res/values-x-invalidLanguageCode/error.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - کامَنٕز گوو رُکِتھ - Oops. کیہہ تام گوو غلط! - ؤنِیوٚ اَسہِ توٚہہِ کیاہ ٲسِیوٚ کران، تہٕ کٕریٚو تہِ اَسہِ سٕتی شیر بذریعہِ برقی خط. یُس مَدَتھ کَرِ اَسہِ اَتھ شہَرنَس منٛز! - شُکریہ! - From 91564a1dffc390bb5c8184707525da8f73375414 Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Thu, 12 Jun 2025 04:36:42 +0200 Subject: [PATCH 16/27] Localisation updates from https://translatewiki.net. --- app/src/main/res/values-hi/strings.xml | 11 +++--- app/src/main/res/values-ia/strings.xml | 15 ++++++++ app/src/main/res/values-ks/error.xml | 7 ++++ app/src/main/res/values-pt-rBR/strings.xml | 14 ++++++++ app/src/main/res/values-pt/strings.xml | 34 ++++++++++++------- .../values-x-invalidLanguageCode/error.xml | 10 ++++++ 6 files changed, 75 insertions(+), 16 deletions(-) create mode 100644 app/src/main/res/values-ks/error.xml create mode 100644 app/src/main/res/values-x-invalidLanguageCode/error.xml diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 7f742a319..1c6685b7f 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -108,6 +108,7 @@ फ़ोटो लें आसपास मेरे अपलोड + लिंक कॉपी करें साझा करें शीर्षक (आवश्यक) विवरण @@ -193,6 +194,7 @@ अपलोड करें हाँ नहीं + कैप्शन शीर्षक विवरण चर्चा @@ -258,11 +260,11 @@ विकिटेक्सट क्लिपबोर्ड पर कॉपी किया जा चुका है स्थान उपलब्ध नहीं है। आसपास के स्थान दिखाने के लिए अनुमति चाहिए - दिशा-निर्देश - विकीडाटा - विकीपीडिया + दिशा-निर्देश + विकीडाटा + विकीपीडिया कॉमन्स - <u>हमें रेट करें</u> + हमें रेट करें अक्सर पूछे जाने वाले प्रश्न प्रशिक्षण छोड़ें इंटरनेट उपलब्ध नहीं @@ -286,6 +288,7 @@ श्रेणी लोड करते समय त्रुटि उत्पन्न हुई। मीडिया श्रेणियाँ + आयटम निर्वाचित नक्शा चित्र सफ़लतापूर्वक विकिडाटा के %1$s पर सफलतापूर्वक जोड़ दिया गया है। diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index f12022169..386bddf2e 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -112,6 +112,7 @@ Troppo de tentativas fallite. Per favor reproba in alcun minutas. Iste usator ha essite blocate sur Commons Tu debe fornir tu codice de authentication bifactorial. + Un codice de verification de session ha essite inviate a tu adresse de e-mail. Per favor insere iste codice pro aperir session. Apertura de session fallite Incargar Nomine de iste insimul @@ -212,6 +213,7 @@ Devenir testator beta Abona te a nostre canal beta sur Google Play e sia le prime a ganiar accesso a nove functiones e correctiones de anomalias Codice 2FA + Codice de verification in e-mail Vole tu vermente clauder session? Imagine multimedial fallite Necun subcategoria trovate @@ -775,6 +777,7 @@ Discussion Scribe qualcosa sur le elemento ‘%1$s’. Isto essera visibile publicamente. ‘%1$s’ non existe plus, necun imagine pote jammais esser prendite de illo. + ‘%1$s’ se trova in un altere loco. ‘%1$s’ es in un altere loco. Per favor specifica le loco correcte hic infra, e si possibile, indica le latitude e longitude correcte. Altere problema o information (per favor explica hic infra). Tu retroaction apparera sur le sequente pagina wiki: <a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:Mobile app/Feedback</a> @@ -801,4 +804,16 @@ Commons Altere wikis Usos del file + Activitate de singule visita web + Conto + Facer disparer le conto + Advertimento concernente le disparition del conto + Le disparition es un <b>ultime recurso</b> e debe <b>solmente esser usate quando tu vole cessar de modificar pro sempre</b> e celar le maximo possibile de tu associationes anterior.<br/><br/>Le deletion del conto sur Wikipedia se effectua cambiante tu nomine de conto de maniera que alteres non pote recognoscer tu contributiones. Iste processo se appella le disparition del conto. <b>Le disparition non garanti le anonymitate complete ni remove contributiones al projectos.</b> + Legenda + Legenda copiate al area de transferentia + Felicitationes, tote le imagines in iste album ha essite incargate o marcate como non incargabile. + Monstrar in Explorar + Monstrar in A proximitate + Create e incargate per: %1$s + Create per %1$s e incargate per %2$s diff --git a/app/src/main/res/values-ks/error.xml b/app/src/main/res/values-ks/error.xml new file mode 100644 index 000000000..838231c2b --- /dev/null +++ b/app/src/main/res/values-ks/error.xml @@ -0,0 +1,7 @@ + + + کامَنٕز گوو رُکِتھ + Oops. کیہہ تام گوو غلط! + ؤنِیوٚ اَسہِ توٚہہِ کیاہ ٲسِیوٚ کران، تہٕ کٕریٚو تہِ اَسہِ سٕتی شیر بذریعہِ برقی خط. یُس مَدَتھ کَرِ اَسہِ اَتھ شہَرنَس منٛز! + شُکریہ! + diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 6bc192c68..947d65ace 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -126,6 +126,7 @@ Tirar foto Próximo Meus envios + Copiar link Compartilhar Ver página do arquivo Legenda (Obrigatório) @@ -694,6 +695,8 @@ Diferente da imagem à esquerda, a da direita possui o logotipo do Commons, o que indica que o envio dela já está concluído.\n Toque e segure para pré-visualizar a imagem. Ótimo Esta imagem já foi enviada para Commons. + Ignorar + Máx.: %1$d WLM Essa imagem será enviada ao concurso Wiki Loves Monuments Monumentos de exibição @@ -755,6 +758,8 @@ As coordenadas não são exatas, mas a pessoa que carregou essa imagem crê que sejam próximas o suficiente. Permissão de armazenamento negada Incapaz de compartilhar esse item + Editar imagem + Editar localização Localização atualizada! Remover localização Localização removida! @@ -771,4 +776,13 @@ %d imagens selecionadas Escreva algo sobre o item %1$s. Isso será visivel publicamente. + Envios + Pendente + Falhou + Excluir pasta + Confirmar exclusão + Excluir + Cancelar + Conta + Legenda diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 0ae9736d5..15c5983c4 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -16,6 +16,7 @@ * Mansil alfalb * McDutchie * Mirzali +* O andras * Sarilho1 * Unamane * Vitorvicentevalente @@ -90,7 +91,7 @@ Aguarde, por favor… A atualizar legendas e descrições Aguarde, por favor… - Sessão iniciada! + Sessão iniciada! O início de sessão falhou! O ficheiro não foi encontrado. Tente outro, por favor. Limite máximo de novas tentativas atingido! Cancele o carregamento e tente novamente, por favor @@ -117,13 +118,15 @@ Tirar foto Nas redondezas Carregamentos + Copiar ligação + A ligação foi copiada para a área de transferência Partilhar Ver página do ficheiro Legenda (obrigatória) Forneça uma legenda para este ficheiro, por favor Descrição Legenda - Não é possível iniciar uma sessão - falha de rede + Não foi possível iniciar sessão - falha de rede Demasiadas tentativas mal sucedidas. Por favor, tente novamente dentro de minutos. Desculpe, este utilizador foi bloqueado na wiki Commons Tem de fornecer o seu código de autenticação de dois fatores. @@ -285,7 +288,7 @@ Saltar Entrar Pretende mesmo ignorar o início de sessão? - Terá de iniciar sessão para carregar fotografias mais tarde. + Terá de iniciar sessão para carregar fotografias no futuro. Inicie uma sessão para usar esta funcionalidade Copiar o texto wiki para a área de transferência O texto wiki foi copiado para a área de transferência @@ -359,7 +362,7 @@ Esta captura de ecrã pode ser carregada? Partilhar aplicação Rodar - Erro ao procurar locais próximos. + Não foi possível carregar locais próximos Não existem locais próximos Erro ao procurar monumentos próximos. Não há pesquisas recentes @@ -371,11 +374,13 @@ Eliminar Realizações Perfil + Medalhas Estatísticas Agradecimentos recebidos Imagens destacadas Imagens via \"Locais próximos\" - Nível + Nível %d + %s (Nível %s) Imagens carregadas Imagens não revertidas Imagens usadas @@ -407,6 +412,7 @@ Não foi encontrada no seu dispositivo nenhuma aplicação de mapas compatível. Para usar esta funcionalidade instale uma aplicação de mapas, por favor. Fotografias Locais + Categorias Adicionar ou remover dos marcadores Marcadores Não adicionou nenhum marcador @@ -450,7 +456,7 @@ O novo seletor de fotografias do Android corre o risco de perder informações de localização. Ativar se pensa vir a usá-lo. Desativar pode acionar o novo seletor de fotografias do Android. Este corre o risco de perder informações de localização.\n\nToque em \'Ler mais\' para mais informações. Deixará de ver as campanhas. No entanto, pode reativar esta notificação nas configurações, se desejar. - Esta função requer uma ligação de rede. Verifique as suas configurações de ligação, por favor. + Esta função necessita de ligação à rede. Por favor, verifique as suas configurações de ligação. Ocorreu um erro ao processar a imagem. Tente novamente, por favor! A obter chave para edição A adicionar predefinição para verificação da categoria @@ -488,6 +494,7 @@ Não tem nenhuma notificação por ler Não tem nenhuma notificação lida Partilhar os registos usando + Verifique sua caixa de entrada de e-mail Ver lidas Ver não lidas Ocorreu um erro ao escolher imagens @@ -562,7 +569,7 @@ Não foi possível adicionar coordenadas. Não foi possível adicionar as descrições. Não foi possível adicionar a legenda. - Não foi possível obter coordenadas. + Coordenadas da imagem não actualizadas Não foi possível obter as descrições. Editar descrições e legendas Partilhar imagem via @@ -577,12 +584,13 @@ Necessita fotografia Tipo de local: Ponte, museu, hotel, etc. - Ocorreu algo de errado com a sessão, tem de redefinir a sua palavra-passe! + Ocorreu um erro ao iniciar sessão. Tem de redefinir a sua palavra-passe! MULTIMÉDIA CLASSES DESCENDENTES CLASSES PROGENITORAS Foi encontrado um local próximo - Isto é uma fotografia de %1$s? + Estas imagens são de %1$s? + Isto é uma imagem de %1$s? Marcadores Definições Removido dos marcadores @@ -597,7 +605,7 @@ Para obter os melhores resultados, escolha o modo Alta Precisão. Ativar a localização? A funcionalidade de proximidade precisa que a localização esteja ativada para funcionar corretamente - Precisa de dar acesso à sua localização atual para gravar automaticamente a localização. + Precisa de dar permissão da sua localização geográfica para a gravar automaticamente. Tirou estas duas fotos no mesmo lugar? Quer usar a latitude/longitude da fotografia da direita? Carregar mais Não foi encontrado nenhum local; tente alterar os seus critérios de pesquisa. @@ -698,7 +706,7 @@ Os mapas de locais próximos precisam de ler ESTADO DO TELEFONE para funcionar devidamente Contribuições do utilizador: %s Realizações do utilizador: %s - Ver página de utilizador + Ver perfil de utilizador Editar elementos retratados Editar categorias Opções avançadas @@ -711,7 +719,7 @@ Adicionar localização Remova desta mensagem de correio todas as informações que não se sinta à vontade em partilhar publicamente, por favor. Adicionalmente, esteja consciente de que o seu endereço de correio eletrónico, com o qual está a fazer esta publicação, e o nome e imagem de perfil a ele associados, serão visíveis pelo público geral. Detalhes - As realizações só estão disponíveis na versão de produção; consulte a documentação para programadores, por favor. + As conquistas só estão disponíveis na versão de produção. Consulte a documentação para programadores. A tabela de classificação só está disponível na versão prod. Consulte a documentação do desenvolvedor. Carregue somente fotografias tiradas por si. Os utilizadores que carregarem imagens cujos direitos de autor estão protegidos serão bloqueados. Isto também se aplica à versão beta. Obrigado por testar a aplicação! Desmarque todas as informações que não se sente à vontade em tornar públicas. @@ -756,6 +764,8 @@ Ver as suas realizações Editar imagem Editar localização + Localização actualizada! + Remover Localização Agradecer ao autor Erro no envio de agradecimento ao autor. diff --git a/app/src/main/res/values-x-invalidLanguageCode/error.xml b/app/src/main/res/values-x-invalidLanguageCode/error.xml new file mode 100644 index 000000000..f4e2fe125 --- /dev/null +++ b/app/src/main/res/values-x-invalidLanguageCode/error.xml @@ -0,0 +1,10 @@ + + + + کامَنٕز گوو رُکِتھ + Oops. کیہہ تام گوو غلط! + ؤنِیوٚ اَسہِ توٚہہِ کیاہ ٲسِیوٚ کران، تہٕ کٕریٚو تہِ اَسہِ سٕتی شیر بذریعہِ برقی خط. یُس مَدَتھ کَرِ اَسہِ اَتھ شہَرنَس منٛز! + شُکریہ! + From 7979be17c1699b356531ce98fc973a6b453458a7 Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Thu, 12 Jun 2025 05:05:50 +0200 Subject: [PATCH 17/27] Localisation updates from https://translatewiki.net. --- .../main/res/values-x-invalidLanguageCode/error.xml | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 app/src/main/res/values-x-invalidLanguageCode/error.xml diff --git a/app/src/main/res/values-x-invalidLanguageCode/error.xml b/app/src/main/res/values-x-invalidLanguageCode/error.xml deleted file mode 100644 index f4e2fe125..000000000 --- a/app/src/main/res/values-x-invalidLanguageCode/error.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - کامَنٕز گوو رُکِتھ - Oops. کیہہ تام گوو غلط! - ؤنِیوٚ اَسہِ توٚہہِ کیاہ ٲسِیوٚ کران، تہٕ کٕریٚو تہِ اَسہِ سٕتی شیر بذریعہِ برقی خط. یُس مَدَتھ کَرِ اَسہِ اَتھ شہَرنَس منٛز! - شُکریہ! - From 54bb789461b2800f019e77ae3890735012f9c688 Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Thu, 12 Jun 2025 05:20:45 +0200 Subject: [PATCH 18/27] Localisation updates from https://translatewiki.net. --- app/src/main/res/values-hi/strings.xml | 11 +++++++++-- .../main/res/values-x-invalidLanguageCode/error.xml | 10 ++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/values-x-invalidLanguageCode/error.xml diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 1c6685b7f..dcb769ca1 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -126,7 +126,7 @@ सहेजें ताजा करें सूची - अभी तक कोई अपलोड नहीं + (अभी तक कोई अपलोड नहीं) %1$s से कोई श्रेणी मेल नहीं खाती विकिमीडिया कॉमन्स पर अपनी छवियों को अधिक खोजने योग्य बनाने के लिए श्रेणियां जोड़ें|\nश्रेणियां जोड़ने के लिए टाइप करना प्रारंभ करें| श्रेणियाँ @@ -180,7 +180,7 @@ इंटरनेट से मिली कोई कॉपीराइट सामग्री के साथ साथ पोस्टर, पुस्तक के खड्डे आदि को भी अपलोड करने से बचें। क्या आपको लगता है कि आप समझ गए? हाँ! - <u>अधिक जानकारी</u> + अधिक जानकारी श्रेणियाँ लोड हो रहा है… कुछ चयनित नहीं @@ -196,6 +196,7 @@ नहीं कैप्शन शीर्षक + चित्रण विवरण चर्चा लेखक @@ -278,6 +279,7 @@ कोई चित्र नहीं मिला! चित्र अपलोड करते समय त्रुटि उत्पन्न हुई। अपलोड: %1$s + अवरोधित कॉमन्स पर सम्पादन से आप अवरोधित हो चुके हैं आज का चित्र खोजें @@ -315,10 +317,12 @@ हटाने के लिये नामांकन करें हटाएँ उपलब्धियाँ + प्रोफ़ाइल सांख्यिकी धन्यवाद प्राप्त किया निर्वाचित चित्र स्तर %d + %s (स्तर %s ) चित्र अपलोड हुआ चित्रों को वापस नहीं किया गया उपयोग हुए चित्र @@ -356,7 +360,10 @@ खत्म होगा: दृश्य अभियान वर्तमान में चल रहे अभियानों को जानने के लिये यहाँ दबायें + अनुमति दें + रद्द करें छवि संसाधित करते समय त्रुटि आई। कृपया पुन: प्रयास करें! + पूर्ण हुआ कोई चित्र उपयोग नहीं हुआ कोई चित्र वापस नहीं लाया कोई चित्र अपलोड नहीं किया diff --git a/app/src/main/res/values-x-invalidLanguageCode/error.xml b/app/src/main/res/values-x-invalidLanguageCode/error.xml new file mode 100644 index 000000000..f4e2fe125 --- /dev/null +++ b/app/src/main/res/values-x-invalidLanguageCode/error.xml @@ -0,0 +1,10 @@ + + + + کامَنٕز گوو رُکِتھ + Oops. کیہہ تام گوو غلط! + ؤنِیوٚ اَسہِ توٚہہِ کیاہ ٲسِیوٚ کران، تہٕ کٕریٚو تہِ اَسہِ سٕتی شیر بذریعہِ برقی خط. یُس مَدَتھ کَرِ اَسہِ اَتھ شہَرنَس منٛز! + شُکریہ! + From 6b40560dfcb71cf4471794244ba563f16da8da0a Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Thu, 12 Jun 2025 05:27:59 +0200 Subject: [PATCH 19/27] Localisation updates from https://translatewiki.net. --- .../main/res/values-x-invalidLanguageCode/error.xml | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 app/src/main/res/values-x-invalidLanguageCode/error.xml diff --git a/app/src/main/res/values-x-invalidLanguageCode/error.xml b/app/src/main/res/values-x-invalidLanguageCode/error.xml deleted file mode 100644 index f4e2fe125..000000000 --- a/app/src/main/res/values-x-invalidLanguageCode/error.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - کامَنٕز گوو رُکِتھ - Oops. کیہہ تام گوو غلط! - ؤنِیوٚ اَسہِ توٚہہِ کیاہ ٲسِیوٚ کران، تہٕ کٕریٚو تہِ اَسہِ سٕتی شیر بذریعہِ برقی خط. یُس مَدَتھ کَرِ اَسہِ اَتھ شہَرنَس منٛز! - شُکریہ! - From 7df52e3f9c91795d0fb61522b29b0813eb442588 Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Thu, 12 Jun 2025 06:06:15 +0200 Subject: [PATCH 20/27] Localisation updates from https://translatewiki.net. --- .../main/res/values-x-invalidLanguageCode/error.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 app/src/main/res/values-x-invalidLanguageCode/error.xml diff --git a/app/src/main/res/values-x-invalidLanguageCode/error.xml b/app/src/main/res/values-x-invalidLanguageCode/error.xml new file mode 100644 index 000000000..f4e2fe125 --- /dev/null +++ b/app/src/main/res/values-x-invalidLanguageCode/error.xml @@ -0,0 +1,10 @@ + + + + کامَنٕز گوو رُکِتھ + Oops. کیہہ تام گوو غلط! + ؤنِیوٚ اَسہِ توٚہہِ کیاہ ٲسِیوٚ کران، تہٕ کٕریٚو تہِ اَسہِ سٕتی شیر بذریعہِ برقی خط. یُس مَدَتھ کَرِ اَسہِ اَتھ شہَرنَس منٛز! + شُکریہ! + From af82cb2123506ed965c8a9acbe72436749a33702 Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Thu, 12 Jun 2025 06:17:24 +0200 Subject: [PATCH 21/27] Localisation updates from https://translatewiki.net. --- .../main/res/values-x-invalidLanguageCode/error.xml | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 app/src/main/res/values-x-invalidLanguageCode/error.xml diff --git a/app/src/main/res/values-x-invalidLanguageCode/error.xml b/app/src/main/res/values-x-invalidLanguageCode/error.xml deleted file mode 100644 index f4e2fe125..000000000 --- a/app/src/main/res/values-x-invalidLanguageCode/error.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - کامَنٕز گوو رُکِتھ - Oops. کیہہ تام گوو غلط! - ؤنِیوٚ اَسہِ توٚہہِ کیاہ ٲسِیوٚ کران، تہٕ کٕریٚو تہِ اَسہِ سٕتی شیر بذریعہِ برقی خط. یُس مَدَتھ کَرِ اَسہِ اَتھ شہَرنَس منٛز! - شُکریہ! - From d3ae92556719f0597863cdf58c419472a8bc2512 Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Thu, 12 Jun 2025 14:01:42 +0200 Subject: [PATCH 22/27] Localisation updates from https://translatewiki.net. --- .../main/res/values-x-invalidLanguageCode/error.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 app/src/main/res/values-x-invalidLanguageCode/error.xml diff --git a/app/src/main/res/values-x-invalidLanguageCode/error.xml b/app/src/main/res/values-x-invalidLanguageCode/error.xml new file mode 100644 index 000000000..f4e2fe125 --- /dev/null +++ b/app/src/main/res/values-x-invalidLanguageCode/error.xml @@ -0,0 +1,10 @@ + + + + کامَنٕز گوو رُکِتھ + Oops. کیہہ تام گوو غلط! + ؤنِیوٚ اَسہِ توٚہہِ کیاہ ٲسِیوٚ کران، تہٕ کٕریٚو تہِ اَسہِ سٕتی شیر بذریعہِ برقی خط. یُس مَدَتھ کَرِ اَسہِ اَتھ شہَرنَس منٛز! + شُکریہ! + From 20e5df7d49a0ce6fe181a85d5b06814fbc0efe8a Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Mon, 16 Jun 2025 14:01:42 +0200 Subject: [PATCH 23/27] Localisation updates from https://translatewiki.net. --- app/src/main/res/values-ps/strings.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/main/res/values-ps/strings.xml b/app/src/main/res/values-ps/strings.xml index a9ecd54f9..6b3970c88 100644 --- a/app/src/main/res/values-ps/strings.xml +++ b/app/src/main/res/values-ps/strings.xml @@ -195,11 +195,19 @@ اړينه پرېښولی: بهرنۍ زېرمه ولولئ. کاريال ستاسو انځورتونه ته پرته له دې لاسرسی نشي موندلی. ښه گواښنه + راپورته‌کول هو نه + نيونگ سرليک څرگندونه + شننه + ليکوال + راپورته‌کېدلو نېټه + منښتليک کورډيناټونه + هېڅ نه دي چمتو شوي + ازمېښتي ازمايښتگر شئ ويکيپېډياښه راغلئ ناگارل پرانيستل @@ -211,6 +219,8 @@ امستنې غبرگون وتل + بياکتنه + هيڅ څرگنداوی ونهٔ موندل شو تگلوري ويکي‌اومتوک ويکيپېډيا From 5665bc7f93f6db6adb13fc8d899b3fd6acd277ca Mon Sep 17 00:00:00 2001 From: Rohit Verma <101377978+rohit9625@users.noreply.github.com> Date: Tue, 17 Jun 2025 14:03:43 +0530 Subject: [PATCH 24/27] fix: make userName private to prevent conflict when passing arguments (#6339) --- .../fr/free/nrw/commons/contributions/ContributionsFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.kt b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.kt index f50df13ff..3992d35dd 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.kt @@ -139,7 +139,7 @@ class ContributionsFragment : CommonsDaggerSupportFragment(), FragmentManager.On private var wlmCampaign: Campaign? = null - var userName: String? = null + private var userName: String? = null private var isUserProfile = false private var mSensorManager: SensorManager? = null From 9eff9e8e821677975d9d358eaaced92f093310a8 Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Thu, 19 Jun 2025 14:01:44 +0200 Subject: [PATCH 25/27] Localisation updates from https://translatewiki.net. --- app/src/main/res/values-bn/strings.xml | 38 ++++++++++++++++++++++---- app/src/main/res/values-es/strings.xml | 25 +++++++++++++++++ app/src/main/res/values-tr/strings.xml | 37 ++++++++++++++++++++++++- app/src/main/res/values-zh/strings.xml | 2 ++ 4 files changed, 95 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index 9b2fde313..e53d8025f 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -12,6 +12,7 @@ * Mohammed Galib Hasan * Muktogayn * NahidHossain +* Nokib Sarkar * R4356th * Rasal Lia * Sankarshan @@ -32,6 +33,7 @@ কমন্স গিটহাব উৎস কোড কমন্সের লোগো কমন্স ওয়েবসাইট + লোকেশন পিকার থেকে বেরিয়ে আসুন জমা দিন আরেকটি বিবরণ যোগ করুন নতুন অবদান যোগ করুন @@ -44,6 +46,9 @@ বিবরণ চিত্র সব + টগল আপ + অনুসন্ধান দৃশ্য + স্থানের অবস্থা আজকের চিত্র %1$dটি ফাইল আপলোড হচ্ছে @@ -70,6 +75,10 @@ %1$dটি আপলোড %1$dটি আপলোড + + শেয়ার করা কন্টেন্ট পাওয়া। ছবির আকার এবং আপনার ডিভাইসের উপর নির্ভর করে ছবিটি প্রক্রিয়াকরণে কিছুটা সময় লাগতে পারে + শেয়ার করা কন্টেন্ট পাওয়া। ছবির আকার এবং আপনার ডিভাইসের উপর নির্ভর করে ছবি প্রক্রিয়াকরণে কিছুটা সময় লাগতে পারে + অন্বেষণ অবয়ব সাধারণ @@ -89,9 +98,11 @@ অনুগ্রহ করে অপেক্ষা করুন… ক্যাপশন ও বিবরণ হালনাগাদ করা হচ্ছে অনুগ্রহ করে অপেক্ষা করুন… - প্রবেশ সফল! + প্রবেশ সফল প্রবেশ ব্যর্থ! ফাইল পাওয়া যায়নি। আরেকটি ফাইল চেষ্টা করুন। + সর্বোচ্চ পুনচেষ্টা করার সীমা পেরিয়ে গেছে! অনুগ্রহ করে আপলোডটি বাতিল করে আবার চেষ্টা করুন। + ব্যাটারি অপ্টিমাইজেশন বন্ধ করবেন? প্রমাণীকরণ ব্যর্থ হয়েছে। অনুগ্রহ করে আবার প্রবেশ করুন। আপলোড আরম্ভ হয়েছে! আপলোড সারিবদ্ধ করা হয়েছে (সীমিত সংযোগ মোড সক্রিয় করা) @@ -113,6 +124,8 @@ ছবি তুলুন কাছাকাছি আমার আপলোড + লিংক কপি করুন + লিঙ্কটি ক্লিপবোর্ডে কপি করা হয়েছে। বণ্টন ফাইলের পাতাটি দেখুন ক্যাপশন (আবশ্যক) @@ -123,7 +136,8 @@ খুব বেশি অসফল প্রচেষ্টা। অনুগ্রহ করে কয়েক মিনিট পরে আবারও চেষ্টা করুন। দুঃখিত, এই ব্যবহারকারীকে কমন্সে বাধা দেয়া হয়েছে আপনাকে অবশ্যই আপনার দু\'স্তরের সত্যায়নকরণ কোড দিতে হবে। - প্রবেশ ব্যর্থ + আপনার ইমেল ঠিকানায় একটি লগইন যাচাইকরণ কোড পাঠানো হয়েছে। লগ ইন করার জন্য অনুগ্রহ করে কোডটি প্রদান করুন। + প্রবেশ ব্যর্থ আপলোড এই সেটের নাম পরিবর্তনসমূহ @@ -131,6 +145,7 @@ বিষয়শ্রেণী অনুসন্ধান আপনার মিডিয়া চিত্রিত আইটেমগুলি অনুসন্ধান করুন (পর্বত, তাজমহল, ইত্যাদি) সংরক্ষণ + ওভারফ্লো মেনু পুনঃসতেজ তালিকা (আপলোড করেন নি) @@ -223,6 +238,7 @@ বিটা টেস্টার হোন গুগল প্লেতে আমাদের বেটা চ্যানেলে যুক্ত হন! এতে নতুন বৈশিষ্ট্যের পাশাপাশি পুরানো বাগগুলো\'র সংশোধিত রুপ সবার আগে ব্যবহারের সুযোগ পাবেন 2FA কোড + ইমেল যাচাইকরণ কোড আপনি কি সত্যিই প্রস্থান করতে চান? মিডিয়া চিত্র ব্যর্থ হয়েছে কোন উপবিষয়শ্রেনী পাওয়া যায় নি। @@ -243,6 +259,7 @@ সম্পর্কে সেটিং প্রতিক্রিয়া + GitHub এর মাধ্যমে প্রতিক্রিয়া প্রস্থান ভূমিকা বিজ্ঞপ্তি @@ -252,6 +269,7 @@ উইকিউপাত্ত আইটেম উইকিপিডিয়া নিবন্ধ যতটা সম্ভব মিডিয়াটি বর্ণনা করুন: এটি কোথায় ধারণ করা হয়েছিল? এটি কি প্রদর্শন করে? এটির প্রসঙ্গ কি? ধারণকৃত বস্তু অথবা ব্যক্তির বর্ণনা করুন। সহজে অনুমান করা যায়না সেরকম তথ্য উদঘাটন করুন, উদাহরণস্বরূপ, যদি ল্যান্ডস্কেপ হয় তাহলে দিবসকালের সময় দিন। + দয়া করে ছবির একটি সংক্ষিপ্ত বিবরণ লিখুন। প্রথম ক্যাপশনটি ছবির শিরোনাম হিসেবে ব্যবহার করা হবে। ২৫৫ অক্ষরের মধ্যে সীমাবদ্ধ। এই চিত্রের সম্ভাব্য সমস্যাগুলি: চিত্রটি খুব অন্ধকারযুক্ত। চিত্রটি অস্পষ্ট। @@ -275,12 +293,13 @@ বিশদের জন্য ওয়েবপৃষ্ঠা দেখুন এড়ান প্রবেশ করুন - আপনি কি সত্যিই প্রবেশকরণ এড়িয়ে যেতে চান? - ভবিষ্যতে চিত্র আপলোড করতে চাইলে আপনাকে প্রবেশ করতে হবে। + আপনি কি সত্যিই লগ-ইন এড়িয়ে যেতে চান? + ভবিষ্যতে চিত্র আপলোড করতে চাইলে আপনাকে প্রবেশ করতে হবে। এই সুবিধাটি ব্যাবহার করতে প্রবেশ করুন উইকিপাঠ্যটি ক্লিপবোর্ডে অনুলিপি করুন উইকিপাঠ্যটি ক্লিপবোর্ডে অনুলিপি করা হয়েছে কাছাকাছি সঠিকভাবে কাজ করছে না, অবস্থান উপলব্ধ নয়। + ইন্টারনেট অনুপলব্ধ। শুধুমাত্র ক্যাশে করা স্থানগুলো দেখানো হচ্ছে। কাছাকাছি স্থানসমূহের একটি তালিকা প্রদর্শন করতে অনুমতি প্রয়োজন দিকনির্দেশ উইকিউপাত্ত @@ -334,19 +353,26 @@ এই স্ক্রিনশটটি কি আপলোড করা ঠিক হয়েছে? অ্যাপ শেয়ার করুন ঘোরান - কাছাকাছি স্থানগুলি আনতে ত্রুটি। + কাছাকাছি জায়গাগুলি লোড করা যায়নি + এই এলাকার কোনও ছবি নেই আশেপাশে কোনো এলাকা পাওয়া যায়নি আশেপাশের স্মৃতিস্তম্ভগুলি আনায়নে ত্রুটি৷ কোনও সাম্প্রতিক অনুসন্ধান নেই আপনি কি নিশ্চিত যে আপনি আপনার অনুসন্ধান ইতিহাস মুছে ফেলতে চান? + আপনি কি নিশ্চিত যে আপনি এই আপলোডটি বাতিল করতে চান? + আপনি কি এই অনুসন্ধানটি মুছে ফেলতে চান? + অনুসন্ধানের ইতিহাস মুছে ফেলা হয়েছে অপসারণের জন্য মনোনীত করুন অপসারণ কৃতিত্বগুলি প্রোফাইল + ব্যাজ পরিসংখ্যান ধন্যবাদ পেয়েছেন নির্বাচিত ছবি - স্তর + \"কাছাকাছি স্থান\" এর মাধ্যমে ছবি + স্তর %d + %s (স্তর %s ) আপলোডকৃত চিত্র ছবিগুলো প্রত্যাবর্তন করা হয়নি ব্যবহৃত ছবি diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 8622b6944..baed7bc1b 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -30,6 +30,7 @@ * Jduranboger * Jelou * Johnny243 +* JorgeElias2302 * Josuert * Juanman * Keneth Urrutia @@ -152,6 +153,7 @@ Cercanos Mis subidas Copiar enlace + El enlace ha sido copiado al portapapeles. Compartir Ver página del archivo Leyenda (requerido) @@ -162,6 +164,7 @@ Demasiados intentos fallidos. Inténtalo de nuevo en unos minutos. Lo sentimos, este usuario ha sido bloqueado en Commons Debe proporcionar su código de autenticación de dos factores. + Se ha enviado un código de verificación de inicio de sesión a tu correo electrónico. Indícalo para iniciar sesión. Falló el inicio de sesión Subir Nombrar este conjunto @@ -267,6 +270,7 @@ Prueba la versión beta Apúntate a nuestro canal beta en Google Play y obtén acceso a funcionalidades nuevas y correcciones de errores Código de autenticación de 2 pasos + Código de verificación de correo electrónico ¿Confirmas que quieres salir? Falló la imagen de multimedia No se encontró ninguna subcategoría @@ -327,6 +331,7 @@ Copia el wikitexto al portapapeles El wikitexto fue copiado al portapapeles Cercanos no puede funcionar correctamente. La ubicación no está disponible. + Internet no disponible. Solo se muestran ubicaciones en caché. Acceso a la ubicación denegado. Configura tu ubicación manualmente para utilizar esta función. Se necesita permiso para mostrar una lista de lugares cercanos Se necesita permiso para mostrar una lista de lugares cercanos @@ -416,6 +421,7 @@ Imágenes destacadas Imágenes vía \"Sitios Cercanos\" Nivel %d + %s (Nivel %s) Imágenes subidas Imágenes no revertidas Imágenes utilizadas @@ -447,6 +453,7 @@ No se encontró una aplicación de mapas compatible en tu dispositivo. Instala una para usar esta característica. Imágenes Ubicaciones + Categorías Añadir o quitar de marcadores Marcadores No has añadido ningún marcador @@ -827,6 +834,7 @@ Discusión Escriba algo sobre el elemento \'%1$s\'. Será visible públicamente. \' %1$s \' ya no existe, nunca se podrá tomar ninguna fotografía de él. + \'%1$s\' está en un lugar diferente. \' %1$s \' está en un lugar diferente. Especifique el lugar correcto a continuación y, si es posible, escriba la latitud y longitud correctas. Otro problema o información (por favor explique a continuación). Sus comentarios se publicarán en la siguiente página wiki: <a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:Mobile_app/Feedback</a> @@ -848,4 +856,21 @@ Este lugar aún no tiene foto, ¡ve y toma una! Este lugar ya tiene una foto. Ahora comprobando si este lugar tiene una foto. + Error al cargar + No se encontraron usos + Commons + Otras wikis + Usos de archivos + Actividad de vista web única + Cuenta + Desaparecer cuenta + Advertencia sobre la desaparición de la cuenta + La desaparición de una cuenta en Wikimedia Commons es un <b>último recurso</b> y <b>solo debe usarse cuando desee dejar de editar para siempre y también para ocultar la mayor cantidad posible de sus asociaciones pasadas.<br/><br/>La desaparición de una cuenta en Wikimedia Commons se realiza cambiando el nombre de la cuenta para que otros no puedan reconocer sus contribuciones en un proceso llamado desaparición de la cuenta. <b>La desaparición de la cuenta no garantiza el anonimato completo ni elimina las contribuciones a los proyectos</b>. + Leyenda + Leyenda copiado al portapapeles + Felicitaciones, todas las imágenes de este álbum han sido cargadas o marcadas como no para cargar. + Mostrar en Explorar + Mostrar en las cercanías + Creado y cargado por: %1$s + Creado por %1$s y cargado por %2$s diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index b8ebc9db3..2e2b13216 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -12,6 +12,7 @@ * JackUKElliott * Jelican9 * Joseph +* Leo * McAang * McDutchie * Mirzali @@ -129,6 +130,8 @@ Fotoğraf çek Yakınımdakiler Yüklemelerim + Bağlantıyı kopyala + Bağlantı panoya kopyalandı Paylaş Dosya sayfasını görüntüle Başlık (Zorunlu) @@ -139,6 +142,7 @@ Çok sayıda başarısız girişimde bulundunuz. Birkaç dakika sonra tekrar deneyin. Üzgünüz, bu kullanıcı Commons\'ta engellendi İki faktörlü kimlik doğrulama kodunu sağlamalısınız. + E-posta adresinize bir giriş doğrulama kodu gönderildi. Lütfen giriş yapmak için kodu sağlayın. Oturum açma başarısız Yükle Bu ayarı adlandırın @@ -244,6 +248,7 @@ Beta Test Kullanıcısı Olun Google Play\'de beta kanalımıza katılın ve yeni özelliklere ve hata düzeltmelerine erken erişin 2 Faktörlü Kimlik Doğrulama (2FA) Kodu + E-posta doğrulama kodu Gerçekten çıkış yapmak istiyor musunuz? Medya Görüntüsü Başarısız Oldu Alt kategori bulunamadı @@ -304,6 +309,7 @@ Vikimetnini panoya kopyala Vikimetin panoya kopyalandı Yakınımdakiler düzgün çalışmayabilir, Konum kullanılamıyor. + İnternet kullanılamıyor. Yalnızca önbelleğe alınmış yerler gösteriliyor. Konum erişimi reddedildi. Bu özelliği kullanmak için lütfen konumunuzu manuel olarak ayarlayın. Yakındaki yerler listesini görüntülemek için izin vermeniz gerekiyor Yakındaki resimlerin listesini görüntülemek için izin gerekli @@ -387,11 +393,13 @@ Sil Başarılar Profil + Rozetler İstatistikler Teşekkür Alındı Seçkin Resimler \"Yakındaki Yerler\"den Resimler - Seviye + Seviye %d + %s (Seviye %s) Resimler Yüklendi Resimler Geri Alınmadı Resimler Kullanıldı @@ -423,6 +431,7 @@ Cihazınızda uyumlu bir harita uygulaması bulunamadı. Lütfen bu özelliği kullanmak için bir harita uygulaması yükleyin. Resimler Konumlar + Kategoriler Yer imlerini ekle/kaldır Yer imleri Henüz yer imlerine bir şey eklemediniz @@ -803,6 +812,8 @@ Tartışma \' %1$s \' öğesi hakkında bir şeyler yazın. Herkes tarafından görülebilir olacaktır. \'%1$s\' artık yok, dolayısı ile resmi çekilemez. + \'%1$s\' farklı bir yerde. + \'%1$s\' farklı bir yerde. Lütfen aşağıdaki doğru yeri belirtin ve mümkünse doğru enlem ve boylamı yazın. Diğer sorun veya bilgi (lütfen aşağıda açıklayınız). Geri bildiriminiz aşağıdaki wiki sayfasına gönderilir: <a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:Mobile app/Feedback</a> Tüm yüklemeleri iptal etmek istediğinizden emin misiniz? @@ -810,10 +821,34 @@ Yüklemeler Beklemede Başarısız + Yer verileri yüklenemedi + Klasörü Sil + Silmeyi Onayla + %2$d öğe içeren %1$s klasörünü silmek istediğinizden emin misiniz? Sil İptal %1$s klasörü başarıyla silindi %1$s klasörü silinemedi + Klasör içerikleri çöpe atılırken hata oluştu: %1$s + Kova kimliği için klasör yolu alınamadı: %1$d + Bu yerin henüz fotoğrafı yok, gidin ve çekin! Bu yerin zaten bir resmi var. Şimdi bu yerin bir resime sahip olup olmadığı denetleniyor. + Yükleme sırasında hata oluştu + Hiçbir kullanım bulunamadı + Commons + Diğer vikiler + Dosya kullanımları + SingleWebViewActivity + Hesap + Kaybolma + Hesap kaybolma uyarısı + Kaybolma <b>son çaredir</b> ve <b>sadece düzenlemeyi sonsuza dek durdurmak istediğinizde</b> ve ayrıca mümkün olduğunca çok sayıda geçmiş ilişkinizi gizlemek için kullanılmalıdır.<br/><br/>Wikimedia Commons\'ta hesap silme, hesap adınızı değiştirerek başkalarının katkılarınızı tanımasını önleyerek hesap kaybolması adı verilen bir işlemle yapılır. <b>Kaybolma, projelere yapılan katkıları tamamen anonimleştirmeyi veya kaldırmayı garanti etmez</b>. + Altyazı + Başlık panoya kopyalandı + Tebrikler, bu albümdeki tüm resimler yüklendi veya yüklenemez olarak işaretlendi. + Keşfet\'te göster + Yakınlarda Göster + Oluşturan ve yükleyen: %1$s + %1$s tarafından oluşturuldu ve %2$s tarafından yüklendi diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 5c7db0aae..930c9e4fb 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -52,6 +52,7 @@ * ZhaoGang * 七八年再来一次 * 予弦 +* 人间百态 * 佛壁灯 * 列维劳德 * 坑触可 @@ -840,6 +841,7 @@ 讨论 请写一些关于项目“%1$s”的信息。所写的内容是公开可见的。 “%1$s”已不再存在,无法拍摄它的照片。 + “%1$s”位于他处。 “%1$s”位于一个不同的位置。请在下方给出正确的位置,可以的话请填写正确的经纬度。 其他问题或信息(请在下方解释)。 您的反馈已经发布在以下wiki页面:<a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:Mobile app/Feedback</a> From ca5c7ec966da349fe5352962428d0eadbd91b9fe Mon Sep 17 00:00:00 2001 From: Ritika Pahwa <83745993+RitikaPahwa4444@users.noreply.github.com> Date: Sat, 21 Jun 2025 13:21:05 +0530 Subject: [PATCH 26/27] Bump up version code to 1053 --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2d9e213b2..9c53155a7 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -24,8 +24,8 @@ android { applicationId = "fr.free.nrw.commons" minSdk = 21 targetSdk = 34 - versionCode = 1052 - versionName = "5.4.1" + versionCode = 1053 + versionName = "5.5.0" setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName()) testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" From 09da7b8d68169d1e9d6ca539b653d9aae7f50bb4 Mon Sep 17 00:00:00 2001 From: Sonal Yadav Date: Sun, 22 Jun 2025 19:10:15 +0530 Subject: [PATCH 27/27] Skip image upload to Wikidata (nearby -> green pins) (#6349) * Skip image upload to Wikidata if item already has image * Re-run CI * no more Failed to update Wikidata for green pins --- .../fr/free/nrw/commons/upload/worker/UploadWorker.kt | 8 +++++++- .../free/nrw/commons/wikidata/WikidataEditService.kt | 7 +++++-- .../main/res/values-x-invalidLanguageCode/error.xml | 10 ---------- 3 files changed, 12 insertions(+), 13 deletions(-) delete mode 100644 app/src/main/res/values-x-invalidLanguageCode/error.xml 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 6d28085b2..c8a1d9b98 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 @@ -472,7 +472,10 @@ class UploadWorker( if (wikiDataPlace != null) { if (!contribution.hasInvalidLocation()) { var revisionID: Long? = null + val p18WasSkipped = !wikiDataPlace.imageValue.isNullOrBlank() try { + if (!p18WasSkipped) { + // Only set P18 if the place does not already have a picture revisionID = wikidataEditService.createClaim( wikiDataPlace, @@ -489,9 +492,11 @@ class UploadWorker( .subscribeOn(Schedulers.io()) .blockingAwait() Timber.d("Updated WikiItem place ${place.name} with image ${place.pic}") + } } - showSuccessNotification(contribution) } + // Always show success notification, whether P18 was set or skipped + showSuccessNotification(contribution) } catch (exception: Exception) { Timber.e(exception) } @@ -500,6 +505,7 @@ class UploadWorker( wikidataEditService.handleImageClaimResult( contribution.wikidataPlace!!, revisionID, + p18WasSkipped = p18WasSkipped ) } } else { diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.kt index 0b49c03e9..f4bf23073 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.kt @@ -196,13 +196,16 @@ class WikidataEditService @Inject constructor( return wikidataClient.setClaim(claim, COMMONS_APP_TAG).blockingSingle() } - fun handleImageClaimResult(wikidataItem: WikidataItem, revisionId: Long?) { + fun handleImageClaimResult(wikidataItem: WikidataItem, revisionId: Long?, p18WasSkipped: Boolean = false) { if (revisionId != null) { wikidataEditListener?.onSuccessfulWikidataEdit() showSuccessToast(wikidataItem.name) - } else { + } else if (!p18WasSkipped) { Timber.d("Unable to make wiki data edit for entity %s", wikidataItem) showLongToast(context, context.getString(R.string.wikidata_edit_failure)) + } else { + Timber.d("Wikidata edit skipped for entity %s because P18 already exists", wikidataItem) + // No error shown to user, as this is not a failure } } diff --git a/app/src/main/res/values-x-invalidLanguageCode/error.xml b/app/src/main/res/values-x-invalidLanguageCode/error.xml deleted file mode 100644 index f4e2fe125..000000000 --- a/app/src/main/res/values-x-invalidLanguageCode/error.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - کامَنٕز گوو رُکِتھ - Oops. کیہہ تام گوو غلط! - ؤنِیوٚ اَسہِ توٚہہِ کیاہ ٲسِیوٚ کران، تہٕ کٕریٚو تہِ اَسہِ سٕتی شیر بذریعہِ برقی خط. یُس مَدَتھ کَرِ اَسہِ اَتھ شہَرنَس منٛز! - شُکریہ! -