diff --git a/app/build.gradle b/app/build.gradle index 1cc594e7b..2bde0d4f1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -314,6 +314,7 @@ android { buildConfigField "String", "COMMONS_URL", "\"https://commons.wikimedia.org\"" buildConfigField "String", "WIKIDATA_URL", "\"https://www.wikidata.org\"" buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.org/wiki/\"" + buildConfigField "String", "MOBILE_META_URL", "\"https://meta.m.wikimedia.org/wiki/\"" buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\"" buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Main_Page&welcome=yes\"" buildConfigField "String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.org/wiki/Special:PasswordReset\"" @@ -350,6 +351,7 @@ android { buildConfigField "String", "COMMONS_URL", "\"https://commons.wikimedia.beta.wmflabs.org\"" buildConfigField "String", "WIKIDATA_URL", "\"https://www.wikidata.org\"" buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/wiki/\"" + buildConfigField "String", "MOBILE_META_URL", "\"https://meta.m.wikimedia.beta.wmflabs.org/wiki/\"" buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\"" buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Main_Page&welcome=yes\"" buildConfigField "String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/Special:PasswordReset\"" 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 74b937f97..ff623d496 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 @@ -24,6 +24,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.MainScope import kotlinx.coroutines.cancel +import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import java.util.TreeMap import kotlin.collections.ArrayList @@ -103,6 +104,18 @@ class ImageAdapter( */ private var imagePositionAsPerIncreasingOrder = 0 + /** + * Stores the number of images currently visible on the screen + */ + private val _currentImagesCount = MutableStateFlow(0) + val currentImagesCount = _currentImagesCount + + /** + * Stores whether images are being loaded or not + */ + private val _isLoadingImages = MutableStateFlow(false) + val isLoadingImages = _isLoadingImages + /** * Coroutine Dispatchers and Scope. */ @@ -184,8 +197,12 @@ class ImageAdapter( // If the position is not already visited, that means the position is new then // finds the next actionable image position from all images if (!alreadyAddedPositions.contains(position)) { - processThumbnailForActionedImage(holder, position, uploadingContributionList) - + processThumbnailForActionedImage( + holder, + position, + uploadingContributionList + ) + _isLoadingImages.value = false // If the position is already visited, that means the image is already present // inside map, so it will fetch the image from the map and load in the holder } else { @@ -231,6 +248,7 @@ class ImageAdapter( position: Int, uploadingContributionList: List, ) { + _isLoadingImages.value = true val next = imageLoader.nextActionableImage( allImages, @@ -252,6 +270,7 @@ class ImageAdapter( actionableImagesMap[next] = allImages[next] alreadyAddedPositions.add(imagePositionAsPerIncreasingOrder) imagePositionAsPerIncreasingOrder++ + _currentImagesCount.value = imagePositionAsPerIncreasingOrder Glide .with(holder.image) .load(allImages[next].uri) @@ -267,6 +286,7 @@ class ImageAdapter( reachedEndOfFolder = true notifyItemRemoved(position) } + _isLoadingImages.value = false } /** @@ -372,6 +392,7 @@ class ImageAdapter( emptyMap: TreeMap, uploadedImages: List = ArrayList(), ) { + _isLoadingImages.value = true allImages = fixedImages val oldImageList: ArrayList = images val newImageList: ArrayList = ArrayList(newImages) @@ -382,6 +403,7 @@ class ImageAdapter( reachedEndOfFolder = false selectedImages = ArrayList() imagePositionAsPerIncreasingOrder = 0 + _currentImagesCount.value = imagePositionAsPerIncreasingOrder val diffResult = DiffUtil.calculateDiff( ImagesDiffCallback(oldImageList, newImageList), @@ -441,6 +463,7 @@ class ImageAdapter( val entry = iterator.next() if (entry.value == image) { imagePositionAsPerIncreasingOrder -= 1 + _currentImagesCount.value = imagePositionAsPerIncreasingOrder iterator.remove() alreadyAddedPositions.removeAt(alreadyAddedPositions.size - 1) notifyItemRemoved(index) 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 3912a4d12..39d0d545a 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 @@ -12,8 +12,12 @@ import android.widget.ProgressBar import android.widget.Switch import androidx.appcompat.app.AlertDialog import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.isVisible +import androidx.lifecycle.Lifecycle import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import fr.free.nrw.commons.contributions.Contribution @@ -38,6 +42,10 @@ import fr.free.nrw.commons.theme.BaseActivity import fr.free.nrw.commons.upload.FileProcessor import fr.free.nrw.commons.upload.FileUtilsWrapper import io.reactivex.schedulers.Schedulers +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.launch import java.util.TreeMap import javax.inject.Inject import kotlin.collections.ArrayList @@ -80,6 +88,12 @@ class ImageFragment : */ var allImages: ArrayList = ArrayList() + /** + * Keeps track of switch state + */ + private val _switchState = MutableStateFlow(false) + val switchState = _switchState.asStateFlow() + /** * View model Factory. */ @@ -214,7 +228,11 @@ class ImageFragment : switch = binding?.switchWidget switch?.visibility = View.VISIBLE - switch?.setOnCheckedChangeListener { _, isChecked -> onChangeSwitchState(isChecked) } + _switchState.value = switch?.isChecked ?: false + switch?.setOnCheckedChangeListener { _, isChecked -> + onChangeSwitchState(isChecked) + _switchState.value = isChecked + } selectorRV = binding?.selectorRv loader = binding?.loader progressLayout = binding?.progressLayout @@ -234,6 +252,28 @@ class ImageFragment : return binding?.root } + /** + * onViewCreated + * Updates empty text view visibility based on image count, switch state, and loading status. + */ + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + viewLifecycleOwner.lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.STARTED) { + combine( + imageAdapter.currentImagesCount, + switchState, + imageAdapter.isLoadingImages + ) { imageCount, isChecked, isLoadingImages -> + Triple(imageCount, isChecked, isLoadingImages) + }.collect { (imageCount, isChecked, isLoadingImages) -> + binding?.allImagesUploadedOrMarked?.isVisible = + !isLoadingImages && !isChecked && imageCount == 0 && (switch?.isVisible == true) + } + } + } + } + private fun onChangeSwitchState(checked: Boolean) { if (checked) { showAlreadyActionedImages = true diff --git a/app/src/main/java/fr/free/nrw/commons/quiz/QuizController.kt b/app/src/main/java/fr/free/nrw/commons/quiz/QuizController.kt index 3cb4f52a6..d9b6b7e52 100644 --- a/app/src/main/java/fr/free/nrw/commons/quiz/QuizController.kt +++ b/app/src/main/java/fr/free/nrw/commons/quiz/QuizController.kt @@ -14,11 +14,15 @@ class QuizController { private val quiz: ArrayList = ArrayList() - private val URL_FOR_SELFIE = "https://i.imgur.com/0fMYcpM.jpg" - private val URL_FOR_TAJ_MAHAL = "https://upload.wikimedia.org/wikipedia/commons/1/15/Taj_Mahal-03.jpg" - private val URL_FOR_BLURRY_IMAGE = "https://i.imgur.com/Kepb5jR.jpg" - private val URL_FOR_SCREENSHOT = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Social_media_app_mockup_screenshot.svg/500px-Social_media_app_mockup_screenshot.svg.png" - private val URL_FOR_EVENT = "https://upload.wikimedia.org/wikipedia/commons/5/51/HouseBuildingInNorthernVietnam.jpg" + companion object{ + + const val URL_FOR_SELFIE = "https://i.imgur.com/0fMYcpM.jpg" + const val URL_FOR_TAJ_MAHAL = "https://upload.wikimedia.org/wikipedia/commons/1/15/Taj_Mahal-03.jpg" + const val URL_FOR_BLURRY_IMAGE = "https://i.imgur.com/Kepb5jR.jpg" + const val URL_FOR_SCREENSHOT = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Social_media_app_mockup_screenshot.svg/500px-Social_media_app_mockup_screenshot.svg.png" + const val URL_FOR_EVENT = "https://upload.wikimedia.org/wikipedia/commons/5/51/HouseBuildingInNorthernVietnam.jpg" + } + fun initialize(context: Context) { val q1 = QuizQuestion( 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 40eb24ed0..209f991fb 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 @@ -45,12 +45,12 @@ class ReviewActivity : BaseActivity() { private var hasNonHiddenCategories = false var media: Media? = null - private val SAVED_MEDIA = "saved_media" + private val savedMedia = "saved_media" override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) media?.let { - outState.putParcelable(SAVED_MEDIA, it) + outState.putParcelable(savedMedia, it) } } @@ -90,8 +90,8 @@ class ReviewActivity : BaseActivity() { PorterDuff.Mode.SRC_IN ) - if (savedInstanceState?.getParcelable(SAVED_MEDIA) != null) { - updateImage(savedInstanceState.getParcelable(SAVED_MEDIA)!!) + if (savedInstanceState?.getParcelable(savedMedia) != null) { + updateImage(savedInstanceState.getParcelable(savedMedia)!!) setUpMediaDetailOnOrientation() } else { runRandomizer() diff --git a/app/src/main/java/fr/free/nrw/commons/review/ReviewImageFragment.kt b/app/src/main/java/fr/free/nrw/commons/review/ReviewImageFragment.kt index f6da76bba..2bc333505 100644 --- a/app/src/main/java/fr/free/nrw/commons/review/ReviewImageFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/review/ReviewImageFragment.kt @@ -31,7 +31,7 @@ class ReviewImageFragment : CommonsDaggerSupportFragment() { lateinit var sessionManager: SessionManager // Constant variable used to store user's key name for onSaveInstanceState method - private val SAVED_USER = "saved_user" + private val savedUser = "saved_user" // Variable that stores the value of user private var user: String? = null @@ -129,7 +129,7 @@ class ReviewImageFragment : CommonsDaggerSupportFragment() { question = getString(R.string.review_thanks) user = reviewActivity.reviewController.firstRevision?.user() - ?: savedInstanceState?.getString(SAVED_USER) + ?: savedInstanceState?.getString(savedUser) //if the user is null because of whatsoever reason, review will not be sent anyways if (!user.isNullOrEmpty()) { @@ -172,7 +172,7 @@ class ReviewImageFragment : CommonsDaggerSupportFragment() { override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) //Save user name when configuration changes happen - outState.putString(SAVED_USER, user) + outState.putString(savedUser, user) } private val reviewCallback: ReviewController.ReviewCallback 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 2f293937c..161927d03 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 @@ -33,6 +33,7 @@ import com.karumi.dexter.MultiplePermissionsReport import com.karumi.dexter.PermissionToken import com.karumi.dexter.listener.PermissionRequest import com.karumi.dexter.listener.multi.MultiplePermissionsListener +import fr.free.nrw.commons.BuildConfig.MOBILE_META_URL import fr.free.nrw.commons.R import fr.free.nrw.commons.Utils import fr.free.nrw.commons.activity.SingleWebViewActivity @@ -85,7 +86,6 @@ class SettingsFragment : PreferenceFragmentCompat() { private var languageHistoryListView: ListView? = null private lateinit var inAppCameraLocationPermissionLauncher: ActivityResultLauncher> - private val GET_CONTENT_PICKER_HELP_URL = "https://commons-app.github.io/docs.html#get-content" private val cameraPickLauncherForResult: ActivityResultLauncher = registerForActivityResult(StartActivityForResult()) { result -> @@ -271,6 +271,7 @@ class SettingsFragment : PreferenceFragmentCompat() { findPreference("managed_exif_tags")?.isEnabled = false findPreference("openDocumentPhotoPickerPref")?.isEnabled = false findPreference("inAppCameraLocationPref")?.isEnabled = false + findPreference("vanishAccount")?.isEnabled = false } } @@ -511,6 +512,7 @@ class SettingsFragment : PreferenceFragmentCompat() { @Suppress("LongLine") companion object { + const val GET_CONTENT_PICKER_HELP_URL = "https://commons-app.github.io/docs.html#get-content" private const val VANISH_ACCOUNT_URL = "https://meta.m.wikimedia.org/wiki/Special:Contact/accountvanishapps" private const val VANISH_ACCOUNT_SUCCESS_URL = "https://meta.m.wikimedia.org/wiki/Special:GlobalVanishRequest/vanished" /** 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 ba9dc147c..fca10be1e 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 @@ -10,7 +10,6 @@ import fr.free.nrw.commons.utils.ImageUtils.IMAGE_KEEP import fr.free.nrw.commons.utils.ImageUtils.IMAGE_OK import fr.free.nrw.commons.utils.ImageUtilsWrapper import io.reactivex.Single -import io.reactivex.functions.Function import io.reactivex.schedulers.Schedulers import org.apache.commons.lang3.StringUtils import timber.log.Timber @@ -26,7 +25,7 @@ class ImageProcessingService @Inject constructor( private val fileUtilsWrapper: FileUtilsWrapper, private val imageUtilsWrapper: ImageUtilsWrapper, private val readFBMD: ReadFBMD, - private val EXIFReader: EXIFReader, + private val exifReader: EXIFReader, private val mediaClient: MediaClient ) { /** @@ -94,7 +93,7 @@ class ImageProcessingService @Inject constructor( * the presence of some basic Exif metadata. */ private fun checkEXIF(filepath: String): Single = - EXIFReader.processMetadata(filepath) + exifReader.processMetadata(filepath) /** diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.kt b/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.kt index 1ae7150e6..56ad9dd84 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.kt @@ -684,17 +684,64 @@ class UploadActivity : BaseActivity(), UploadContract.View, UploadBaseFragment.C private fun receiveInternalSharedItems() { val intent = intent + Timber.d("Intent has EXTRA_FILES: ${EXTRA_FILES}") + uploadableFiles = try { + // Check if intent has the extra before trying to read it + if (!intent.hasExtra(EXTRA_FILES)) { + Timber.w("No EXTRA_FILES found in intent") + mutableListOf() + } else { + // Try to get the files as Parcelable array + val files = if (VERSION.SDK_INT >= VERSION_CODES.TIRAMISU) { + intent.getParcelableArrayListExtra(EXTRA_FILES, UploadableFile::class.java) + } else { + @Suppress("DEPRECATION") + intent.getParcelableArrayListExtra(EXTRA_FILES) + } - Timber.d("Received intent %s with action %s", intent.toString(), intent.action) - - uploadableFiles = mutableListOf().apply { - addAll(intent.getParcelableArrayListExtra(EXTRA_FILES) ?: emptyList()) + // Convert to mutable list or return empty list if null + files?.toMutableList() ?: run { + Timber.w("Files array was null") + mutableListOf() + } + } + } catch (e: Exception) { + Timber.e(e, "Error reading files from intent") + mutableListOf() + } + + // Log the result for debugging + isMultipleFilesSelected = uploadableFiles.size > 1 + Timber.i("Received files count: ${uploadableFiles.size}") + uploadableFiles.forEachIndexed { index, file -> + Timber.d("File $index path: ${file.getFilePath()}") + } + + // Handle other extras with null safety + place = try { + if (VERSION.SDK_INT >= VERSION_CODES.TIRAMISU) { + intent.getParcelableExtra(PLACE_OBJECT, Place::class.java) + } else { + @Suppress("DEPRECATION") + intent.getParcelableExtra(PLACE_OBJECT) + } + } catch (e: Exception) { + Timber.e(e, "Error reading place") + null + } + + prevLocation = try { + if (VERSION.SDK_INT >= VERSION_CODES.TIRAMISU) { + intent.getParcelableExtra(LOCATION_BEFORE_IMAGE_CAPTURE, LatLng::class.java) + } else { + @Suppress("DEPRECATION") + intent.getParcelableExtra(LOCATION_BEFORE_IMAGE_CAPTURE) + } + } catch (e: Exception) { + Timber.e(e, "Error reading location") + null } - isMultipleFilesSelected = uploadableFiles!!.size > 1 - Timber.i("Received multiple upload %s", uploadableFiles!!.size) - place = intent.getParcelableExtra(PLACE_OBJECT) - prevLocation = intent.getParcelableExtra(LOCATION_BEFORE_IMAGE_CAPTURE) isInAppCameraUpload = intent.getBooleanExtra(IN_APP_CAMERA_UPLOAD, false) resetDirectPrefs() } @@ -803,6 +850,7 @@ class UploadActivity : BaseActivity(), UploadContract.View, UploadBaseFragment.C /** * Overrides the back button to make sure the user is prepared to lose their progress */ + @SuppressLint("MissingSuperCall") override fun onBackPressed() { showAlertDialog( this, @@ -920,7 +968,7 @@ class UploadActivity : BaseActivity(), UploadContract.View, UploadBaseFragment.C companion object { private var uploadIsOfAPlace = false - const val EXTRA_FILES: String = "commons_image_exta" + const val EXTRA_FILES: String = "commons_image_extra" const val LOCATION_BEFORE_IMAGE_CAPTURE: String = "user_location_before_image_capture" const val IN_APP_CAMERA_UPLOAD: String = "in_app_camera_upload" diff --git a/app/src/main/java/fr/free/nrw/commons/utils/PermissionUtils.kt b/app/src/main/java/fr/free/nrw/commons/utils/PermissionUtils.kt index daf158fc1..df3b33bf6 100644 --- a/app/src/main/java/fr/free/nrw/commons/utils/PermissionUtils.kt +++ b/app/src/main/java/fr/free/nrw/commons/utils/PermissionUtils.kt @@ -16,6 +16,9 @@ import com.karumi.dexter.listener.PermissionRequest import com.karumi.dexter.listener.multi.MultiplePermissionsListener import fr.free.nrw.commons.R import fr.free.nrw.commons.upload.UploadActivity +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch object PermissionUtils { @@ -130,7 +133,7 @@ object PermissionUtils { vararg permissions: String ) { if (hasPartialAccess(activity)) { - Thread(onPermissionGranted).start() + CoroutineScope(Dispatchers.Main).launch { onPermissionGranted.run() } return } checkPermissionsAndPerformAction( @@ -166,13 +169,15 @@ object PermissionUtils { rationaleMessage: Int, vararg permissions: String ) { + val scope = CoroutineScope(Dispatchers.Main) + Dexter.withActivity(activity) .withPermissions(*permissions) .withListener(object : MultiplePermissionsListener { override fun onPermissionsChecked(report: MultiplePermissionsReport) { when { report.areAllPermissionsGranted() || hasPartialAccess(activity) -> - Thread(onPermissionGranted).start() + scope.launch { onPermissionGranted.run() } report.isAnyPermissionPermanentlyDenied -> { DialogUtil.showAlertDialog( activity, @@ -189,7 +194,7 @@ object PermissionUtils { null, null ) } - else -> Thread(onPermissionDenied).start() + else -> scope.launch { onPermissionDenied?.run() } } } diff --git a/app/src/main/java/fr/free/nrw/commons/utils/SwipableCardView.kt b/app/src/main/java/fr/free/nrw/commons/utils/SwipableCardView.kt index 5a8261c24..bde575386 100644 --- a/app/src/main/java/fr/free/nrw/commons/utils/SwipableCardView.kt +++ b/app/src/main/java/fr/free/nrw/commons/utils/SwipableCardView.kt @@ -21,9 +21,14 @@ abstract class SwipableCardView @JvmOverloads constructor( defStyleAttr: Int = 0 ) : CardView(context, attrs, defStyleAttr) { + + companion object{ + const val MINIMUM_THRESHOLD_FOR_SWIPE = 100f + } + private var x1 = 0f private var x2 = 0f - private val MINIMUM_THRESHOLD_FOR_SWIPE = 100f + init { interceptOnTouchListener() diff --git a/app/src/main/res/layout/fragment_custom_selector.xml b/app/src/main/res/layout/fragment_custom_selector.xml index bbc4c0a07..03381fd24 100644 --- a/app/src/main/res/layout/fragment_custom_selector.xml +++ b/app/src/main/res/layout/fragment_custom_selector.xml @@ -49,6 +49,20 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + كومنز مواقع ويكي أخرى حالات استخدام الملف + نشاط عرض ويب واحد + حساب + حذف الحساب + تحذير من اختفاء الحساب + الاختفاء هو <b>الملاذ الأخير</b> ويجب <b>استخدامه فقط عندما ترغب في التوقف عن التحرير إلى الأبد</b> وأيضًا لإخفاء أكبر عدد ممكن من ارتباطاتك السابقة.<br/><br/> يتم حذف الحساب على ويكيميديا كومنز عن طريق تغيير اسم حسابك بحيث لا يتمكن الآخرون من التعرف على مساهماتك في عملية تسمى اختفاء الحساب. <b>لا يضمن الاختفاء عدم الكشف عن الهوية تمامًا أو إزالة المساهمات في المشاريع</b> . الشرح تم نسخ التسمية التوضيحية إلى الحافظة + مبروك، جميع الصور الموجودة في هذا الألبوم تم تحميلها أو تم وضع علامة عليها بأنها غير قابلة للتحميل. diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 4b17a0fec..e7f66a69e 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -820,4 +820,5 @@ Forsvinding er en <b>sidste udvej</b> og bør <b>kun bruges, når du for altid ønsker at stoppe med at redigere</b> og også for at skjule så mange af dine tidligere tilknytninger som muligt.<br/><br/> Kontosletning på Wikipedia Commons sker ved at ændre dit kontonavn, således at andre ikke kan genkende dine bidrag i en proces, der kaldes kontoforsvinding (Vanishing). <b>Forsvinding garanterer ikke fuldstændig anonymitet eller fjerner bidrag til projekterne</b> . Billedtekst Billedtekst kopieret til udklipsholder + Tillykke, alle billeder i dette album er enten blevet uploadet eller markeret som ikke til upload. diff --git a/app/src/main/res/values-io/strings.xml b/app/src/main/res/values-io/strings.xml index 2efec0607..057e77e10 100644 --- a/app/src/main/res/values-io/strings.xml +++ b/app/src/main/res/values-io/strings.xml @@ -79,7 +79,7 @@ Vu atingis la maxim granda quanto di probi por sendar arkivo permisata! Voluntez interuptar la kargajo, e probez itere! Ka desmuntar l\'optimizo di la baterio? Sendar plu kam 3 imaji esas plu efikiva kande l\'optimizo di la baterio esas desmuntita. Voluntez desmuntar l\'optimizo di la baterio del ajusti dil utensilo de Commons, por plugrandigar l\'efikeso. \n\nQuale desmuntar l\'optimizo-sistemo di la baterio:\n\n#: Kliktez la butono \"ajusti\" (\'\'Settings\'\') adinfre.\n\n#: Selektez \"ne optimizita (\'\'Not optimized\'\') por omna utensili (\'\'All apps\'\').\n\n#: Serchez \"Commons\" o \"fr.free.nrw.commons\".\n\n#: Kliktez ol e selektez \"ne optimizar\" (\'\'Don\'t optimize\'\').\n\n#: Kliktez \"facita\" (\'\'Done\'\'). - L\'autentikigo faliis, voluntez itere enirar. + Autentikigo faliis. Voluntez itere enirar. Komencis sendar! Sendajo ajornata (modulo \"limitizita konekto\" aktiva) %1$s sendesis! @@ -100,17 +100,19 @@ Fotografar Proxime Mea sendaji + Kopiez ligilo + La ligilo kopiesis a \'\'clipboard\'\'. Partigar Vidar arkivo-pagino Titulo (Bezonata) Voluntez informar deskripto-texto por ca arkivo Deskripto Deskripto-texto - Ne esis posibla facar \'\'log - in\'\' - la reto faliis + Ne esas posibla enirar - la reto faliis Multa sensucesa probi pri konektar. Voluntez probar itere pos kelka minuti. Pardonez, ca uzero blokusesis che Commons Vu mustas uzar vua autentikigo en du etapi. - Eniro faliis + Eniro faliis Kargar Nomizes ca ajusto Modifikuri @@ -118,6 +120,7 @@ Serchar kategorii Serchez kozi quin vua \'\'media\'\' montras (monti, \'\'Taj Mahal\'\', edc.) Registragar + Menuo pri exterfluajo Rinovigar Listar (Nula arkivo sendita til nun) @@ -258,6 +261,7 @@ Konservar en vua enmagaziniguro la fotografuri obtenita uzanta fotografilo del utensilo (\'\'app\'\') Enirez en vua konto Sendez arkivo \'\'log\'\' + Sendez protokolo per e-posto a developeri, por helpar la solvo di problemi dil \'\'app\'\'. Atencez: protokoli povas kontenar informi por identifiko Nula retnavigilo trovita, por apertar la URL Eroro! URL ne trovita Propozar efaco @@ -266,11 +270,12 @@ Saltar Enirar Ka vu deziras ne enirar? - Vu mustus facar \'\'log in\'\' por sendor imaji future. + Future, vu mustus facar \'\'log in\'\' por sendar imaji. Voluntez enirar por uzar ca utensilo Kopiez Wiki-texto a \'clipboard\' Wiki-texto kopiesis a \'clipboard\' Proximeso povas ne funcionar korekte, nam Lokizo ne esas disponebla. + Interreto nedisponebla. Montranta nur elementi enmagazinigita lokale. Aceso a lokizo ne permisita. Voluntez informar manuale vua lokizo por uzar ca resurso*. Permiso bezonata por montrar listo pri vicina loki Permiso bezonata por montrar listo pri vicina imaji @@ -354,18 +359,22 @@ Efacar Sucesi Profilo + Insigni Statistiko Danki recevita Remarkinda imaji Imaji tra \"Loki Vicina\" - Nivelo + Nivelo %d + %s (Nivelo %s) Imaji sendita Imaji ne reversionita Imaji uzita Partigez vua sucesi kun vua amiki! + Vua nivelo augmentas kande vu atingas bezonata postuli. Elementi en la segmento \"statistiko\" ne augmentas vua nivelo. minima quanto bezonata: Quanto di imaji quin vu sendis a Commons, uzanta irga softwaro* por sendar li La procento di imaji quin vu sendis a Commons, qui ne efacesis pose + La quanto di imaji sendita da vu a Commons, qui uzesis en artikli de Wikimedia. Eventis eroro! Avizo de Commons Uzar personalizita autoro-nomo @@ -375,6 +384,7 @@ Vicina Avizi Avizi (lektita) + Montrez proxima avizo Listo Permiso pri enmagazinigo Etapo %1$d de %2$d: %3$s @@ -383,6 +393,8 @@ Arkivo kun la nomo %1$s ja existas. Ka vu deziras durigar?\n\nNoto: Sufixo adequata adjuntesos automatale a la nomo dil imajo. Imaji Loki + Kategorii + Adjuntez/Removez marko-rubandi (\'\'bookmark\'\'-i) Marko-rubandi Vu ne adjuntis marko-rubandi Marko-rubandi @@ -392,7 +404,11 @@ Me konstatis ke ol esas mala por mea privateso Me chanjis mea ideo: me ne pluse deziras ke ol esos publike videbla Pardonez! Ca imajo ne esas interesanta por ula enciklopedio + Adjuntita da me, che %1$s, uzita en %2$d artiklo/artikli. + Bonveno a Commons!\n\nSendez vua unesma arkivo kliktanta sur butono \"adjuntez\" (\'\'add\'\'). Nula kategorio selektita + Imaji sen kategorii rare esas uzebla. Ka vu fakte deziras sendar ol sen selektar irga kategorio? + Nula deskripturo selektita Cesar kargajo Durar kargajo Serchez ca areo @@ -401,15 +417,38 @@ Ne pluse demandez to Demandar lokala permiso Demandez lokala permiso, kande bezonata por uzar karto montranta proximeso. + Finas la: + Montrez kampanii + Videz la kampanii duranta Permisar Eskartar + Facita + Sendanta danko: Suceso + Danko sendita sucese a %1$s + Faliis pri sendar danko a %1$s + Sendanta danko: Falio + Sendanta danko a %1$s + Ka to obedias la reguli pri autoroyuro? + Ka lua kategorio esas korekta? + Ka vu deziras dankar la kontributero? + Kliktez NO por indikar ca imajo por efaco, se ol ne havas irga utileso. + Ho, to ne mem havas kategorio! + Ca imajo havas %1$s kategorii. + Ol esas kontre la skopo, nam ol esas + To esas violaco di autoroyuro, nam ol esas Sequanta imajo Yes, pro quo ne? + Kliktanta ca butono donos a vu altra imajo recente sendita a Wikimedia Commons Vu povas revizar imaji, por plubonigar la qualeso di Wikimedia Commons.\nLa tri revizo-parametri esas:\n\n- Kad ica imajo havas havas irga relato kun la kuntexto?\nKande tu kliktas NO, vu adjuntos indiko (shablono) por ke ol efacesos.\n\n- Kad ica imajo violacas autoroyuro?\nSe tu klitos YES, vu adjuntos indiko por ke ol efacesos.\n\n- Kad la kategorii di ica imajo esas korekta?\nSe tu kliktos NO, vu adjuntos demando pri adjuntar korekta kategorio ad ol.\n\nSe omno esas korekta, nula shablono adjuntesos al imajo, e vu povos dankar la persono qua sendis ol. + Nula imajo uzita + Nula imajo desfacita + Nula imajo sendita Vu havas nul avizi sen lektar Vu ne lektis irga avizo + Verifikez vua e-postal adreso Vidar lektita Vidar ne-lektata + Eventis eroro dum selekto di imaji Vartez... Kopiita Exempli pri bona imaji por sendar a Commons @@ -431,7 +470,9 @@ Ne povis demandar efaco. komplete neklara Fotografuro de komunikilaro + Hazarda imajo de Interreto Emblemo + Brecho di Libereso di Panoramo Pro ke ol esas Probanta aktualigar kategorii. Aktualigo di kategorio @@ -442,7 +483,14 @@ Ne povis adjuntar kategorii. Aktualigar kategorii + Probanta aktualigar deskripturi. Redaktar deskripturi + + Deskripturo %1$s adjuntesis. + Deskripturi %1$s adjuntesis. + + Ne povis adjuntar deskripturi. + Probanta aktualigar koordinati. Aktualigo di koordinati Aktualigo di deskripturo Aktualigo di surskriburo @@ -451,8 +499,14 @@ Adjuntesis deskripturi. Surskriburo adjuntesis. Ne povis adjuntar koordinati. + Ne povis adjuntar deskripturi. + Ne povis adjuntar deskripturo. + Koordinati dil imajo ne aktualigesis + Ne povis obtenar deskripturi. + Redaktar deskripturi ed informo-texti Partigar imajo uzanta Vu ankore ne facis kontributaji + %s ankore ne facis irga kontributado Konto kreesis! Texto kopiita a \'\'clipboard\'\' Mesajo indikita kom \'lektita\' @@ -462,17 +516,21 @@ Bezonas fotografuro Tipo di lokizo: Ponto, muzeo, hotelo, edc. - Irgu ne funcionis dum \'\'log in\'\'. Vu mustos ridefinar vua pasovorto!! + Irgu faliis dum \'\'log in\'\'. Vu mustos ridefinar vua pasovorto!! \'\'MEDIA\'\' SUBKLASI KLASI PLU ABSTRAKTA Loko proxima trovesis - Ka to esas fotografuro pri %1$s? + Ka ca imaji apartenas a %1$s? + Ka to esas imajo di %1$s? Marko-rubandi Ajusti + Efacita de la marko-rubandi Adjuntita marko-rubandi + Irgu faliis. Ne povis vidar la muropapero Uzar kom skreno-kovrilo Kreanta skreno-kovrilo. Voluntez vartar... + Sequar sistemo Koloro obskura Koloro klara Charjez pluse @@ -492,6 +550,9 @@ Uzero Quanteso Uzar kom \'\'avatar\'\' di la tabelo pri precipua kunlaboranti + Ajusto di avataro + Eroro dum ajusto di nov avataro, voluntez probar itere + Uzar kom avataro Yare Semanale Sempre @@ -502,9 +563,16 @@ Imaji di qualeso Nuliganta sendajo... Cesar kargajo + Montras + Licencizo di \'\'media\'\' + Detali pri \'\'media\'\' + Vidar kategorio-pagino + Vidar pagino dil arkivo Lektez pluse En omna idiomi Selektez lokizo + Selektar lokizo + Montrar en l\'utensilo \'\'app\'\' di mapo Aktualigar lokizo Lokizo dil imajo Verifikez se la lokizo esas korekta @@ -524,8 +592,33 @@ Montrez monumenti SAVEZ PLUSE Bezonas permiso - Vidar uzeropagino + Kontributadi dil uzero: %s + Sucesi dil uzero: %s + Vidar profilo dil uzero + Redaktar deskripturi + Redaktar kategorii + Progresiva selektaji (advanced options) + Aplikar + Restaurar + Nula lokizo trovita Ka vu deziras informar la loko de ube vu obtenis ca imajo?\nInformo pri la lokizo helpos editeri trovar vua imajo, do ol divenos plu utila.\nDanko! + Adjuntez lokizo + Detali + nivelo di API + versiono di Android + Fabrikanto dil aparato + Modelo dil aparato + Nomo dil aparato + Tipo di reto + Danko por sendar vua opiniono + Eroro dum sendo di respondo + Qual es vua opiniono (feedback)? + Vua opiniono (\'\'feedback\'\') + Indikez por ne sendar ol + Itere indikez por sendar ol + Indikanta ke ol ne sendesos + Ca imajo ja sendesis + Ne povis selektar ca imajo por sendar (\'\'upload\'\') Imajo selektita Ca imajo indikesis por ne sendesar Raporto @@ -535,13 +628,49 @@ Avizar ca uzero Informar ca kontenajo Demandar blokuso di ca uzero + Uzez du fingri por augmentar o diminutar \'\'zoom\'\'. Koordinati ne esas l\'exakta, tamen l\'individuo qua sendis ca imajo kredas ke la koordinati quin lu informis esas suficante proxima. Modifikar imajo Aktualigar lokizo + Lokizo aktualigita! + Removar lokizo + Removar avizo pri lokizo + Lokizo efacita! Dankar l\'autoro Eroro sendanta danki al autoro. + La tempo-quanto por vua \'\'log in\'\' finis. Voluntez itere enirar. + Konservo sucesoza di arkivo + Ka vu deziras apertar arkivo GPX? + Ka vu deziras apartar l\'arkivo KML? + Faliis pri konservar arkivo KML. + Faliis pri konservar arkivo GPX. + Konservanta arqkivo KML + Konservanta arkivo GPX %d imajo selektita %d imaji selektita + Diskuto + Dicez irgu pri l\'arkivo \'%1$s\'. Ol esos videbla publike. + Arkivi sendita + Vartanta + Faliis + Ne povis inkluzar datumi pri la loko + Efacar faldilo + Konfirmez efaco + Ka vu deziras efacar faldilo %1$s, kontenanta %2$d arkivi? + Efacez + Nuligez + Faldilo %1$s sucese efacita + Faliis pri efacar faldilo %1$s + Commons + Altra wiki + Uzi dil arkivo + SingleWebViewActivity + Konto + Efacar konto + Avizo pri efaco di konto + Deskripto-texto + Deskripto-texto kopiita a \'\'clipboard\'\' + Gratuli! Omna imaji en ca albumo sive sendesis, sive indikesis por ne sendar. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 37a90a327..8ef85d363 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -108,6 +108,8 @@ 写真を撮影 付近 自分のアップロード + リンクをコピー + リンクがクリップボードにコピーされました 共有 ファイルのページを表示 キャプション (必須) @@ -126,6 +128,7 @@ カテゴリを検索 アップロードする素材の被写体を検索(山岳、タージマハールなど) 保存 + オーバーフローメニュー 更新 一覧 (まだ何もアップロードされていません) @@ -313,6 +316,7 @@ 検索 最近の検索: 最近、検索したクエリ + 最近の言語クエリ カテゴリの読み込み中にエラーが発生しました。 描写の読み込み中にエラーが発生しました メデイア @@ -345,6 +349,7 @@ 不正解 このスクリーンショットをアップロードしてもよいですか? アプリをシェアする + 回転 付近の場所を読み込めません 最近の検索はまだありません 本当に検索履歴を消去しますか? @@ -355,11 +360,12 @@ 削除 貢献 プロフィール + バッジ 統計 受け取った感謝 秀逸な画像 「近くの場所」機能でアップロードした画像 - レベル + レベル %d アップロードした画像 却下されなかった画像 使用された画像 @@ -391,6 +397,7 @@ お使いの機器に適したアプリが見つかりませんでした。この機能を使用できる地図アプリをインストールしてください。 画像 位置 + カテゴリ ブックマークに追加/から削除 ブックマーク ブックマークは追加されていません @@ -642,7 +649,7 @@ 完了 戻る 権限が必要です - 利用者ページを表示 + 利用者プロフィールを表示 題材を編集する カテゴリを編集 適用 @@ -683,4 +690,17 @@ %d件の画像が選択されました + すべてのアップロードをキャンセルしています... + アップロード + 保留中 + 失敗しました + 削除 + キャンセル + コモンズ + その他のウィキ + アカウント + アカウント抹消 + アカウント抹消の警告 + キャプション + キャプションをクリップボードにコピーしました diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 12eebaa7d..cd974dc30 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -708,6 +708,7 @@ 다른 위키 이 파일을 사용하는 문서 계정 + 계정 버리기 캡션 캡션이 클립보드에 복사되었습니다 diff --git a/app/src/main/res/values-ky/strings.xml b/app/src/main/res/values-ky/strings.xml index f43975c21..52a1243aa 100644 --- a/app/src/main/res/values-ky/strings.xml +++ b/app/src/main/res/values-ky/strings.xml @@ -109,7 +109,7 @@ Сиздин сүрөттөр дүйнө жүзүндөгү адамдардын билим алышына өбөлгө түзүүдө. Интернетте жарыяланган автордук укукка ээ сүрөттөрдөн, ошондой эле плакаттардан жана китептердин мукабасынан ж.б. четтеңиз. Сизге бул түшүнүктүүбү? - Ооба ! + Ооба! Категориялар Жүктөлүүдө… Тандалган жок diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 200ce0790..775a64bcc 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -3,13 +3,31 @@ * Adithyak1997 * Akhilan * Jacob.jose +* Jinoytommanjaly * Kiran Gopi * Praveenp * Santhosh.thottingal --> + കോമൺസ് ഫേസ്ബുക്ക് പേജ് + കോമൺസ് ജിത്ഹബ് സോഴ്സ് കോഡ് കോമൺസ് ലോഗോ കോമൺസ് വെബ്‌സൈറ്റ് + സമർപ്പിക്കുക + മറ്റൊരു വിവരണം ചേർക്കുക + പുതിയ സംഭാവന ചേർക്കുക + ക്യാമറയിൽ നിന്നുള്ള സംഭാവന ചേർക്കുക + ഫോട്ടോകളിൽ നിന്നുള്ള സംഭാവന ചേർക്കുക + മുമ്പത്തെ സംഭാവനകളുടെ ഗാലറിയിൽ നിന്നുള്ള സംഭാവന ചേർക്കുക + തലവാചകം + ഭാഷാ വിവരണം + തലവാചകം + വിവരണം + ചിത്രം + എല്ലാം + ടോഗിൾ അപ്പ് + തിരയൽ കാഴ്ച + ദിവസത്തെ ചിത്രം ഒരു പ്രമാണം അപ്‌ലോഡ് ചെയ്യുന്നു %1$d പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യുന്നു @@ -19,6 +37,7 @@ ഒരു അപ്‌ലോഡ് %1$d അപ്‌ലോഡുകൾ + അപ്‌ലോഡുകൾ ആരംഭിക്കുന്നു ഒരു അപ്‌ലോഡ് തുടങ്ങുന്നു %1$d അപ്‌ലോഡുകൾ തുടങ്ങുന്നു @@ -35,6 +54,8 @@ സ്വകാര്യത കോമൺസ് സജ്ജീകരണങ്ങൾ + കോമൺസിലേക്ക് അപ്‌ലോഡ് ചെയ്യുക + അപ്‌ലോഡ് പുരോഗമിക്കുന്നു ഉപയോക്തൃനാമം രഹസ്യവാക്ക് താങ്കളുടെ കോമൺസ് ബീറ്റ അംഗത്വത്തിൽ പ്രവേശിക്കുക @@ -43,9 +64,13 @@ അംഗത്വമെടുക്കുക പ്രവേശിക്കുന്നു ദയവായി കാത്തിരിക്കുക… - പ്രവേശനം വിജയകരം! - പ്രവേശനം പരാജയപ്പെട്ടു! + അടിക്കുറിപ്പുകളും വിവരണങ്ങളും അപ്ഡേറ്റ് ചെയ്യുന്നു + ദയവായി കാത്തിരിക്കുക… + പ്രവേശനം വിജയകരം! + പ്രവേശനം പരാജയപ്പെട്ടു! പ്രമാണം കണ്ടെത്താനായില്ല. ദയവായി മറ്റൊരു പ്രമാണം നോക്കുക. + പരമാവധി വീണ്ടും ശ്രമിക്കാനുള്ള പരിധി എത്തി! അപ്‌ലോഡ് റദ്ദാക്കി വീണ്ടും ശ്രമിക്കുക + ബാറ്ററി ഒപ്റ്റിമൈസേഷൻ ഓഫാക്കണോ? സാധുതാനിർണ്ണയം പരാജയപ്പെട്ടു, ദയവായി വീണ്ടും പ്രവേശിക്കുക അപ്‌ലോഡ് തുടങ്ങി! %1$s അപ്‌ലോഡ് ചെയ്തിരിക്കുന്നു! @@ -65,9 +90,14 @@ ചിത്രം എടുക്കുക സമീപസ്ഥം എന്റെ അപ്‌ലോഡുകൾ + ലിങ്ക് പകർത്തുക + ലിങ്ക് ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി പങ്ക് വെയ്ക്കുക + പ്രമാണ താൾ കാണുക അടിക്കുറിപ്പ് (നിർബന്ധം) + ദയവായി ഈ ഫയലിന് ഒരു അടിക്കുറിപ്പ് നൽകുക വിവരണം + തലവാചകം പ്രവേശിക്കാനായില്ല - നെറ്റ്‌വർക്ക് പരാജയപ്പെട്ടു നിരവധി വിജയകരമല്ലാത്ത ശ്രമങ്ങൾ നടന്നിരിക്കുന്നു. വീണ്ടും ശ്രമിക്കുന്നതിനു മുമ്പ് ഏതാനം മിനിറ്റുകൾ വിശ്രമിക്കുക. ക്ഷമിക്കുക, ഈ ഉപയോക്താവ് കോമൺസിൽ നിന്ന് തടയപ്പെട്ടിരിക്കുകയാണ് @@ -103,6 +133,7 @@ റദ്ദാക്കുക ഡൗൺലോഡ് സ്വതേയുള്ള ഉപയോഗാനുമതി + വിഷയം ആട്രിബ്യൂഷൻ-ഷെയർ‌എലൈക് 4.0 ആട്രിബ്യൂഷൻ 4.0 ആട്രിബ്യൂഷൻ-ഷെയർ‌എലൈക് 3.0 @@ -122,6 +153,7 @@ വർഗ്ഗങ്ങൾ ശേഖരിക്കുന്നു… ഒന്നും തിരഞ്ഞെടുത്തിട്ടില്ല + അടിക്കുറിപ്പില്ല വിവരണമൊന്നുമില്ല സംവാദങ്ങളില്ല അജ്ഞാതമായ അനുമതി diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 354c44b5c..1aaee6e9c 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -831,4 +831,8 @@ Commons Andere wiki’s Bestandsgebruik + Activiteit enkele webraadpleging + Account + Account laten verdwijnen + Waarschuwing verwijdering account diff --git a/app/src/main/res/values-pms/strings.xml b/app/src/main/res/values-pms/strings.xml index 8c388d9ae..0e3063ac7 100644 --- a/app/src/main/res/values-pms/strings.xml +++ b/app/src/main/res/values-pms/strings.xml @@ -813,4 +813,5 @@ L\'eliminassion a l\'é <b>l\'ùltima arsorsa</b> e a dovrìa <b>esse dovrà mach si chiel a veul chité ëd modifiché për sempe</b> e ëdcò s\'a veul ëstërmé pi che possìbil soe assossiassion passà.<br/><br/>La dëscancelassion ëd cont su Wikimedia a l\'é fàita an modificand sò stranòm an manera che j\'àutri a peulo pa arconòsse soe contribussion ant un process ciamà dëscancelassion ëd cont. <b>La sparission a garantiss pa l\'anonimà complet ni a gava le contribussion dai proget</b>. Legenda Legenda copià an sla taulëtta + Congratulassion, tute le fòto ëd s\'àlbom a son ëstàita carià opura marcà coma da nen carié. diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index f016f5f39..be06b0b99 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -813,7 +813,11 @@ Commons Andra wikier Filanvändning + SingleWebViewActivity Konto + Få kontot att försvinna + Varning om försvinnande konto + Att få kontot att försvinna är en <b>sista utväg</b> och bör <b>endast användas när du vill sluta redigera för alltid</b> och även dölja så många av dina tidigare associationer som möjligt.<br/><br/>Konton raderas på Wikimedia Commons genom att ändra kontonamnet för att göra så att andra inte kan känna igen bidragen i en process som kallas kontoförsvinnande. <b>Försvinnande garanterar inte fullständig anonymitet eller att bidrag tas bort från projekten</b>. Bildtext Bildtext kopierades till urklipp diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 1ae869ec6..9cbc36c8d 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -61,7 +61,7 @@ 共享资源Facebook页面 共享资源Github源代码 - 共享资源标志 + 共享资源标识 共享资源网站 退出位置选择器 提交 @@ -857,7 +857,16 @@ 这个地点已经有照片了。 现在检查这个地点是否有照片。 加载时出错 + 未找到用法 维基共享资源 其它wiki 文件用途 + 单一网页视图活动 + 账号 + 隐退账号 + 隐退账号警告 + 消失是一个<b>最后的手段</b>,应该<b>仅在您希望永远停止编辑时使用</b>,并尽可能隐藏您过去的关联。<br/><br/>在维基媒体共享资源上删除账户是通过更改您的账户名称,使其他人无法识别您的贡献,这个过程称为账户消失。<b>消失并不能保证完全匿名,也无法删除对项目的贡献</b>。 + 说明 + 已复制到剪贴板 + 恭喜,专辑中的所有图片都已上传或标记为不上传。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e7504df98..d2bde98ab 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -867,5 +867,6 @@ Upload your first media by tapping on the add button. last resort and should only be used when you wish to stop editing forever and also to hide as many of your past associations as possible.

Account deletion on Wikimedia Commons is done by changing your account name to make it so others cannot recognize your contributions in a process called account vanishing. Vanishing does not guarantee complete anonymity or remove contributions to the projects.]]>
Caption Caption copied to clipboard + Congratulations, all pictures in this album have been either uploaded or marked as not for upload.