diff --git a/CHANGELOG.md b/CHANGELOG.md
index 34820b8d4..72015947f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,17 @@
# Wikimedia Commons for Android
+## v4.2.1
+
+- Provide the ability to edit an image to losslessly rotate it while uploading
+- Fix a bug in v4.2.0 where the nearby places were not loading
+- Fix a bug where editing depictions was showing a progress bar indefinitely
+- In the upload screen, use different map icons to indicate if image is being uploaded with location
+ metadata
+- For nearby uploads, it is no longer possible to deselect the item's category and depiction
+- The Mapbox account key used by the app has been changed
+- Category search now shows exact matches without any discrepancies
+- Various bug and crash fixes
+
## v4.2.0
- Dark mode colour improvements
- Enhancements done to address location metadata loss including the metadata loss that occurs in
diff --git a/app/build.gradle b/app/build.gradle
index b38987ec7..44db9ab7e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -94,7 +94,7 @@ dependencies {
testImplementation "androidx.arch.core:core-testing:2.2.0"
testImplementation "org.junit.jupiter:junit-jupiter-api:5.10.0"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.10.0"
- testImplementation 'com.facebook.soloader:soloader:0.10.1'
+ testImplementation 'com.facebook.soloader:soloader:0.10.5'
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3"
// Android testing
@@ -140,6 +140,8 @@ dependencies {
implementation "androidx.preference:preference:$PREFERENCE_VERSION"
// Kotlin
implementation "androidx.preference:preference-ktx:$PREFERENCE_VERSION"
+ //Android Media
+ implementation 'com.github.juanitobananas:AndroidMediaUtil:v1.0-1'
implementation "androidx.multidex:multidex:$MULTIDEX_VERSION"
@@ -176,8 +178,8 @@ android {
defaultConfig {
//applicationId 'fr.free.nrw.commons'
- versionCode 1035
- versionName '4.2.0'
+ versionCode 1036
+ versionName '4.2.1'
setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName())
minSdkVersion 21
@@ -236,8 +238,8 @@ android {
}
}
debug {
- minifyEnabled false
testCoverageEnabled true
+ minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
testProguardFile 'test-proguard-rules.txt'
versionNameSuffix "-debug-" + getBranchName()
diff --git a/app/proguard-rules.txt b/app/proguard-rules.txt
index 91f540693..8a0b24e83 100644
--- a/app/proguard-rules.txt
+++ b/app/proguard-rules.txt
@@ -31,8 +31,15 @@
-keepattributes Signature
# Retain declared checked exceptions for use by a Proxy instance.
-keepattributes Exceptions
-# Classes used by retrofit to fetch API repsonse
+
+# Application classes that will be serialized/deserialized over Gson
-keepclasseswithmembers class org.wikipedia.** { *; }
+# Note: The model package right now seems to include some other classes that
+# are not used for serialization / deserialization over Gson. Hopefully
+# that's not a problem since it only prevents R8 from avoiding trimming
+# of few more classes.
+-keepclasseswithmembers class fr.free.nrw.commons.*.model.** { *; }
+
# --- /Retrofit ---
# --- OkHttp + Okio ---
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cee5fb81a..5ba49201a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,9 +48,14 @@
tools:ignore="GoogleAppIndexingWarning">
+
+
pauseUploads = new HashMap<>();
+ /**
+ * In-memory list of uploads that have been cancelled by the user
+ */
+ public static HashSet cancelledUploads = new HashSet<>();
+
/**
* Used to declare and initialize various components and dependencies
*/
diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java
index 468272efb..6fed83a5d 100644
--- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java
@@ -36,6 +36,7 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
+import fr.free.nrw.commons.CommonsApplication;
import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.Utils;
@@ -429,6 +430,7 @@ public class ContributionsListFragment extends CommonsDaggerSupportFragment impl
() -> {
ViewUtil.showShortToast(getContext(), R.string.cancelling_upload);
contributionsListPresenter.deleteUpload(contribution);
+ CommonsApplication.cancelledUploads.add(contribution.getPageId());
}, () -> {
// Do nothing
});
diff --git a/app/src/main/java/fr/free/nrw/commons/edit/EditActivity.kt b/app/src/main/java/fr/free/nrw/commons/edit/EditActivity.kt
new file mode 100644
index 000000000..ad2ddf4ea
--- /dev/null
+++ b/app/src/main/java/fr/free/nrw/commons/edit/EditActivity.kt
@@ -0,0 +1,249 @@
+package fr.free.nrw.commons.edit
+
+import android.animation.Animator
+import android.animation.Animator.AnimatorListener
+import android.animation.ValueAnimator
+import android.content.Intent
+import android.graphics.BitmapFactory
+import android.graphics.Matrix
+import android.graphics.drawable.BitmapDrawable
+import android.media.ExifInterface
+import android.os.Bundle
+import android.util.Log
+import android.view.animation.AccelerateDecelerateInterpolator
+import android.widget.ImageView
+import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.graphics.rotationMatrix
+import androidx.core.graphics.scaleMatrix
+import androidx.core.net.toUri
+import androidx.lifecycle.ViewModelProvider
+import fr.free.nrw.commons.R
+import kotlinx.android.synthetic.main.activity_edit.btn_save
+import kotlinx.android.synthetic.main.activity_edit.iv
+import kotlinx.android.synthetic.main.activity_edit.rotate_btn
+import timber.log.Timber
+import java.io.File
+
+/**
+ * An activity class for editing and rotating images using LLJTran with EXIF attribute preservation.
+ *
+ * This activity allows loads an image, allows users to rotate it by 90-degree increments, and
+ * save the edited image while preserving its EXIF attributes. The class includes methods
+ * for initializing the UI, animating image rotations, copying EXIF data, and handling
+ * the image-saving process.
+ */
+class EditActivity : AppCompatActivity() {
+ private var imageUri = ""
+ private lateinit var vm: EditViewModel
+ private val sourceExifAttributeList = mutableListOf>()
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_edit)
+ supportActionBar?.title = ""
+ val intent = intent
+ imageUri = intent.getStringExtra("image") ?: ""
+ vm = ViewModelProvider(this).get(EditViewModel::class.java)
+ val sourceExif = imageUri.toUri().path?.let { ExifInterface(it) }
+ val exifTags = arrayOf(
+ ExifInterface.TAG_APERTURE,
+ ExifInterface.TAG_DATETIME,
+ ExifInterface.TAG_EXPOSURE_TIME,
+ ExifInterface.TAG_FLASH,
+ ExifInterface.TAG_FOCAL_LENGTH,
+ ExifInterface.TAG_GPS_ALTITUDE,
+ ExifInterface.TAG_GPS_ALTITUDE_REF,
+ ExifInterface.TAG_GPS_DATESTAMP,
+ ExifInterface.TAG_GPS_LATITUDE,
+ ExifInterface.TAG_GPS_LATITUDE_REF,
+ ExifInterface.TAG_GPS_LONGITUDE,
+ ExifInterface.TAG_GPS_LONGITUDE_REF,
+ ExifInterface.TAG_GPS_PROCESSING_METHOD,
+ ExifInterface.TAG_GPS_TIMESTAMP,
+ ExifInterface.TAG_IMAGE_LENGTH,
+ ExifInterface.TAG_IMAGE_WIDTH,
+ ExifInterface.TAG_ISO,
+ ExifInterface.TAG_MAKE,
+ ExifInterface.TAG_MODEL,
+ ExifInterface.TAG_ORIENTATION,
+ ExifInterface.TAG_WHITE_BALANCE,
+ ExifInterface.WHITEBALANCE_AUTO,
+ ExifInterface.WHITEBALANCE_MANUAL
+ )
+ for (tag in exifTags) {
+ val attribute = sourceExif?.getAttribute(tag.toString())
+ sourceExifAttributeList.add(Pair(tag.toString(), attribute))
+ }
+
+ init()
+ }
+
+ /**
+ * Initializes the ImageView and associated UI elements.
+ *
+ * This function sets up the ImageView for displaying an image, adjusts its view bounds,
+ * and scales the initial image to fit within the ImageView. It also sets click listeners
+ * for the "Rotate" and "Save" buttons.
+ */
+ private fun init() {
+ iv.adjustViewBounds = true
+ iv.scaleType = ImageView.ScaleType.MATRIX
+ iv.post(Runnable {
+ val bitmap = BitmapFactory.decodeFile(imageUri)
+ iv.setImageBitmap(bitmap)
+ if (bitmap.width > 0) {
+ val scale =
+ iv.measuredWidth.toFloat() / (iv.drawable as BitmapDrawable).bitmap.width.toFloat()
+ iv.layoutParams.height =
+ (scale * (iv.drawable as BitmapDrawable).bitmap.height).toInt()
+ iv.imageMatrix = scaleMatrix(scale, scale)
+ }
+ })
+ rotate_btn.setOnClickListener {
+ animateImageHeight()
+ }
+ btn_save.setOnClickListener {
+ getRotatedImage()
+ }
+ }
+
+ var imageRotation = 0
+
+ /**
+ * Animates the height, rotation, and scale of an ImageView to provide a smooth
+ * transition effect when rotating an image by 90 degrees.
+ *
+ * This function calculates the new height, rotation, and scale for the ImageView
+ * based on the current image rotation angle and animates the changes using a
+ * ValueAnimator. It also disables a rotate button during the animation to prevent
+ * further rotation actions.
+ */
+ private fun animateImageHeight() {
+ val drawableWidth: Float = iv.getDrawable().getIntrinsicWidth().toFloat()
+ val drawableHeight: Float = iv.getDrawable().getIntrinsicHeight().toFloat()
+ val viewWidth: Float = iv.getMeasuredWidth().toFloat()
+ val viewHeight: Float = iv.getMeasuredHeight().toFloat()
+ val rotation = imageRotation % 360
+ val newRotation = rotation + 90
+
+ val newViewHeight: Int
+ val imageScale: Float
+ val newImageScale: Float
+
+ Timber.d("Rotation $rotation")
+ Timber.d("new Rotation $newRotation")
+
+
+ if (rotation == 0 || rotation == 180) {
+ imageScale = viewWidth / drawableWidth
+ newImageScale = viewWidth / drawableHeight
+ newViewHeight = (drawableWidth * newImageScale).toInt()
+ } else if (rotation == 90 || rotation == 270) {
+ imageScale = viewWidth / drawableHeight
+ newImageScale = viewWidth / drawableWidth
+ newViewHeight = (drawableHeight * newImageScale).toInt()
+ } else {
+ throw UnsupportedOperationException("rotation can 0, 90, 180 or 270. \${rotation} is unsupported")
+ }
+
+ val animator = ValueAnimator.ofFloat(0f, 1f).setDuration(1000L)
+
+ animator.interpolator = AccelerateDecelerateInterpolator()
+
+ animator.addListener(object : AnimatorListener {
+ override fun onAnimationStart(animation: Animator) {
+ rotate_btn.setEnabled(false)
+ }
+
+ override fun onAnimationEnd(animation: Animator) {
+ imageRotation = newRotation % 360
+ rotate_btn.setEnabled(true)
+ }
+
+ override fun onAnimationCancel(animation: Animator) {
+ }
+
+ override fun onAnimationRepeat(animation: Animator) {
+ }
+
+ })
+
+ animator.addUpdateListener { animation ->
+ val animVal = animation.animatedValue as Float
+ val complementaryAnimVal = 1 - animVal
+ val animatedHeight =
+ (complementaryAnimVal * viewHeight + animVal * newViewHeight).toInt()
+ val animatedScale = complementaryAnimVal * imageScale + animVal * newImageScale
+ val animatedRotation = complementaryAnimVal * rotation + animVal * newRotation
+ iv.getLayoutParams().height = animatedHeight
+ val matrix: Matrix = rotationMatrix(
+ animatedRotation,
+ drawableWidth / 2,
+ drawableHeight / 2
+ )
+ matrix.postScale(
+ animatedScale,
+ animatedScale,
+ drawableWidth / 2,
+ drawableHeight / 2
+ )
+ matrix.postTranslate(
+ -(drawableWidth - iv.getMeasuredWidth()) / 2,
+ -(drawableHeight - iv.getMeasuredHeight()) / 2
+ )
+ iv.setImageMatrix(matrix)
+ iv.requestLayout()
+ }
+
+ animator.start()
+ }
+
+ /**
+ * Rotates and edits the current image, copies EXIF data, and returns the edited image path.
+ *
+ * This function retrieves the path of the current image specified by `imageUri`,
+ * rotates it based on the `imageRotation` angle using the `rotateImage` method
+ * from the `vm`, and updates the EXIF attributes of the
+ * rotated image based on the `sourceExifAttributeList`. It then copies the EXIF data
+ * using the `copyExifData` method, creates an Intent to return the edited image's file path
+ * as a result, and finishes the current activity.
+ */
+ fun getRotatedImage() {
+
+ val filePath = imageUri.toUri().path
+ val file = filePath?.let { File(it) }
+
+
+ val rotatedImage = file?.let { vm.rotateImage(imageRotation, it) }
+ if (rotatedImage == null) {
+ Toast.makeText(this, "Failed to rotate to image", Toast.LENGTH_LONG).show()
+ }
+ val editedImageExif = rotatedImage?.path?.let { ExifInterface(it) }
+ copyExifData(editedImageExif)
+ val resultIntent = Intent()
+ resultIntent.putExtra("editedImageFilePath", rotatedImage?.toUri()?.path ?: "Error");
+ setResult(RESULT_OK, resultIntent);
+ finish();
+ }
+
+ /**
+ * Copies EXIF data from sourceExifAttributeList to the provided ExifInterface object.
+ *
+ * This function iterates over the `sourceExifAttributeList` and sets the EXIF attributes
+ * on the provided `editedImageExif` object.
+ *
+ * @param editedImageExif The ExifInterface object for the edited image.
+ */
+ private fun copyExifData(editedImageExif: ExifInterface?) {
+
+ for (attr in sourceExifAttributeList) {
+ Log.d("Tag is ${attr.first}", "Value is ${attr.second}")
+ editedImageExif!!.setAttribute(attr.first, attr.second)
+ Log.d("Tag is ${attr.first}", "Value is ${attr.second}")
+ }
+
+ editedImageExif?.saveAttributes()
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/fr/free/nrw/commons/edit/EditViewModel.kt b/app/src/main/java/fr/free/nrw/commons/edit/EditViewModel.kt
new file mode 100644
index 000000000..80db0f1ab
--- /dev/null
+++ b/app/src/main/java/fr/free/nrw/commons/edit/EditViewModel.kt
@@ -0,0 +1,27 @@
+package fr.free.nrw.commons.edit
+
+import androidx.lifecycle.ViewModel
+import java.io.File
+
+/**
+ * ViewModel for image editing operations.
+ *
+ * This ViewModel class is responsible for managing image editing operations, such as
+ * rotating images. It utilizes a TransformImage implementation to perform image transformations.
+ */
+class EditViewModel() : ViewModel() {
+
+ // Ideally should be injected using DI
+ private val transformImage: TransformImage = TransformImageImpl()
+
+ /**
+ * Rotates the specified image file by the given degree.
+ *
+ * @param degree The degree by which to rotate the image.
+ * @param imageFile The File representing the image to be rotated.
+ * @return The rotated image File, or null if the rotation operation fails.
+ */
+ fun rotateImage(degree: Int, imageFile: File): File? {
+ return transformImage.rotateImage(imageFile, degree)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/fr/free/nrw/commons/edit/TransformImage.kt b/app/src/main/java/fr/free/nrw/commons/edit/TransformImage.kt
new file mode 100644
index 000000000..4c3607a8e
--- /dev/null
+++ b/app/src/main/java/fr/free/nrw/commons/edit/TransformImage.kt
@@ -0,0 +1,21 @@
+package fr.free.nrw.commons.edit
+
+import java.io.File
+
+/**
+ * Interface for image transformation operations.
+ *
+ * This interface defines a contract for image transformation operations, allowing
+ * implementations to provide specific functionality for tasks like rotating images.
+ */
+interface TransformImage {
+
+ /**
+ * Rotates the specified image file by the given degree.
+ *
+ * @param imageFile The File representing the image to be rotated.
+ * @param degree The degree by which to rotate the image.
+ * @return The rotated image File, or null if the rotation operation fails.
+ */
+ fun rotateImage(imageFile: File, degree : Int ):File?
+}
\ No newline at end of file
diff --git a/app/src/main/java/fr/free/nrw/commons/edit/TransformImageImpl.kt b/app/src/main/java/fr/free/nrw/commons/edit/TransformImageImpl.kt
new file mode 100644
index 000000000..fb96ca044
--- /dev/null
+++ b/app/src/main/java/fr/free/nrw/commons/edit/TransformImageImpl.kt
@@ -0,0 +1,74 @@
+package fr.free.nrw.commons.edit
+
+import android.mediautil.image.jpeg.LLJTran
+import android.mediautil.image.jpeg.LLJTranException
+import android.os.Environment
+import timber.log.Timber
+import java.io.BufferedOutputStream
+import java.io.File
+import java.io.FileOutputStream
+
+/**
+ * Implementation of the TransformImage interface for image rotation operations.
+ *
+ * This class provides an implementation for the TransformImage interface, right now it exposes a
+ * function for rotating images by a specified degree using the LLJTran library. Right now it reads
+ * the input image file, performs the rotation, and saves the rotated image to a new file.
+ */
+class TransformImageImpl() : TransformImage {
+
+ /**
+ * Rotates the specified image file by the given degree.
+ *
+ * @param imageFile The File representing the image to be rotated.
+ * @param degree The degree by which to rotate the image.
+ * @return The rotated image File, or null if the rotation operation fails.
+ */
+ override fun rotateImage(imageFile: File, degree : Int): File? {
+
+ Timber.tag("Trying to rotate image").d("Starting")
+
+ val path = Environment.getExternalStoragePublicDirectory(
+ Environment.DIRECTORY_DOWNLOADS
+ )
+
+ val imagePath = System.currentTimeMillis()
+ val file: File = File(path, "$imagePath.jpg")
+
+ val output = file
+
+ val rotated = try {
+ val lljTran = LLJTran(imageFile)
+ lljTran.read(
+ LLJTran.READ_ALL,
+ false,
+ ) // This could throw an LLJTranException. I am not catching it for now... Let's see.
+ lljTran.transform(
+ when(degree){
+ 90 -> LLJTran.ROT_90
+ 180 -> LLJTran.ROT_180
+ 270 -> LLJTran.ROT_270
+ else -> {
+ LLJTran.ROT_90
+ }
+ },
+ LLJTran.OPT_DEFAULTS or LLJTran.OPT_XFORM_ORIENTATION
+ )
+ BufferedOutputStream(FileOutputStream(output)).use { writer ->
+ lljTran.save(writer, LLJTran.OPT_WRITE_ALL )
+ }
+ lljTran.freeMemory()
+ true
+ } catch (e: LLJTranException) {
+ Timber.tag("Error").d(e)
+ return null
+ false
+ }
+
+ if (rotated) {
+ Timber.tag("Done rotating image").d("Done")
+ Timber.tag("Add").d(output.absolutePath)
+ }
+ return output
+ }
+}
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java
index 7b4716b41..3109aec53 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java
+++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java
@@ -43,6 +43,7 @@ import fr.free.nrw.commons.R;
import fr.free.nrw.commons.auth.LoginActivity;
import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.contributions.ContributionController;
+import fr.free.nrw.commons.contributions.MainActivity;
import fr.free.nrw.commons.filepicker.Constants.RequestCodes;
import fr.free.nrw.commons.filepicker.UploadableFile;
import fr.free.nrw.commons.kvstore.JsonKvStore;
@@ -65,6 +66,8 @@ import fr.free.nrw.commons.utils.ViewUtil;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
+import java.io.File;
+import java.security.Permission;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -529,6 +532,23 @@ public class UploadActivity extends BaseActivity implements UploadContract.View,
presenter.deletePictureAtIndex(index);
}
+ /**
+ * Changes the thumbnail of an UploadableFile at the specified index.
+ * This method updates the list of uploadableFiles by replacing the UploadableFile
+ * at the given index with a new UploadableFile created from the provided file path.
+ * After updating the list, it notifies the RecyclerView's adapter to refresh its data,
+ * ensuring that the thumbnail change is reflected in the UI.
+ *
+ * @param index The index of the UploadableFile to be updated.
+ * @param filepath The file path of the new thumbnail image.
+ */
+ @Override
+ public void changeThumbnail(int index, String filepath) {
+ uploadableFiles.remove(index);
+ uploadableFiles.add(index, new UploadableFile(new File(filepath)));
+ rvThumbnails.getAdapter().notifyDataSetChanged();
+ }
+
@Override
public void onNextButtonClicked(int index) {
UploadActivity.this.onNextButtonClicked(index);
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadItem.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadItem.java
index 87050fb5c..b3c16b962 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/UploadItem.java
+++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadItem.java
@@ -14,7 +14,7 @@ import java.util.List;
public class UploadItem {
- private final Uri mediaUri;
+ private Uri mediaUri;
private final String mimeType;
private ImageCoordinates gpsCoords;
private List uploadMediaDetails;
@@ -31,7 +31,7 @@ public class UploadItem {
* Uri of uploadItem
* Uri points to image location or name, eg content://media/external/images/camera/10495 (Android 10)
*/
- private final Uri contentUri;
+ private Uri contentUri;
@SuppressLint("CheckResult")
@@ -160,4 +160,16 @@ public class UploadItem {
public String getCountryCode() {
return countryCode;
}
+
+ /**
+ * Sets both the contentUri and mediaUri to the specified Uri.
+ * This method allows you to assign the same Uri to both the contentUri and mediaUri
+ * properties.
+ *
+ * @param uri The Uri to be set as both the contentUri and mediaUri.
+ */
+ public void setContentUri(Uri uri) {
+ contentUri = uri;
+ mediaUri = uri;
+ }
}
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java
index e378ef53b..f32fb286b 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java
@@ -198,6 +198,22 @@ public class UploadCategoriesFragment extends UploadBaseFragment implements Cate
} else {
adapter.setItems(categories);
}
+ adapter.notifyDataSetChanged();
+
+ // Nested waiting for search result data to load into the category
+ // list and smoothly scroll to the top of the search result list.
+ rvCategories.post(new Runnable() {
+ @Override
+ public void run() {
+ rvCategories.smoothScrollToPosition(0);
+ rvCategories.post(new Runnable() {
+ @Override
+ public void run() {
+ rvCategories.smoothScrollToPosition(0);
+ }
+ });
+ }
+ });
}
@Override
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java
index 3582f69c0..4450f67ef 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java
@@ -246,7 +246,21 @@ public class DepictsFragment extends UploadBaseFragment implements DepictsContra
adapter.setItems(depictedItemList);
}
}
- depictsRecyclerView.smoothScrollToPosition(0);
+
+ // Nested waiting for search result data to load into the depicted item
+ // list and smoothly scroll to the top of the search result list.
+ depictsRecyclerView.post(new Runnable() {
+ @Override
+ public void run() {
+ depictsRecyclerView.smoothScrollToPosition(0);
+ depictsRecyclerView.post(new Runnable() {
+ @Override
+ public void run() {
+ depictsRecyclerView.smoothScrollToPosition(0);
+ }
+ });
+ }
+ });
}
/**
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java
index 2f54ae15c..a2da97696 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java
@@ -1,11 +1,15 @@
package fr.free.nrw.commons.upload.mediaDetails;
import static android.app.Activity.RESULT_OK;
+import static fr.free.nrw.commons.utils.ActivityUtils.startActivityWithFlags;
import static fr.free.nrw.commons.utils.ImageUtils.FILE_NAME_EXISTS;
import static fr.free.nrw.commons.utils.ImageUtils.getErrorMessageForResult;
import android.annotation.SuppressLint;
+import android.content.ContentResolver;
+import android.content.Context;
import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
@@ -31,6 +35,8 @@ import com.github.chrisbanes.photoview.PhotoView;
import com.mapbox.mapboxsdk.camera.CameraPosition;
import fr.free.nrw.commons.LocationPicker.LocationPicker;
import fr.free.nrw.commons.R;
+import fr.free.nrw.commons.edit.EditActivity;
+import fr.free.nrw.commons.contributions.MainActivity;
import fr.free.nrw.commons.filepicker.UploadableFile;
import fr.free.nrw.commons.kvstore.JsonKvStore;
import fr.free.nrw.commons.location.LatLng;
@@ -49,6 +55,7 @@ import fr.free.nrw.commons.utils.DialogUtil;
import fr.free.nrw.commons.utils.ImageUtils;
import fr.free.nrw.commons.utils.ViewUtil;
import fr.free.nrw.commons.R.drawable.*;
+import java.io.File;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
@@ -61,10 +68,11 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
UploadMediaDetailsContract.View, UploadMediaDetailAdapter.EventListener {
private static final int REQUEST_CODE = 1211;
+ private static final int REQUEST_CODE_FOR_EDIT_ACTIVITY = 1212;
+
/**
- * A key for applicationKvStore.
- * By this key we can retrieve the location of last UploadItem ex. 12.3433,54.78897
- * from applicationKvStore.
+ * A key for applicationKvStore. By this key we can retrieve the location of last UploadItem ex.
+ * 12.3433,54.78897 from applicationKvStore.
*/
public static final String LAST_LOCATION = "last_location_while_uploading";
public static final String LAST_ZOOM = "last_zoom_level_while_uploading";
@@ -84,8 +92,11 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
AppCompatButton btnNext;
@BindView(R.id.btn_previous)
AppCompatButton btnPrevious;
+ @BindView(R.id.edit_image)
+ AppCompatButton editImage;
@BindView(R.id.tooltip)
ImageView tooltip;
+
private UploadMediaDetailAdapter uploadMediaDetailAdapter;
@BindView(R.id.btn_copy_subsequent_media)
AppCompatButton btnCopyToSubsequentMedia;
@@ -106,14 +117,14 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
private boolean isExpanded = true;
/**
- * True if location is added via the "missing location" popup dialog (which appears after tapping
- * "Next" if the picture has no geographical coordinates).
+ * True if location is added via the "missing location" popup dialog (which appears after
+ * tapping "Next" if the picture has no geographical coordinates).
*/
private boolean isMissingLocationDialog;
/**
- * showNearbyFound will be true, if any nearby location found that needs pictures and the nearby popup is yet to be shown
- * Used to show and check if the nearby found popup is already shown
+ * showNearbyFound will be true, if any nearby location found that needs pictures and the nearby
+ * popup is yet to be shown Used to show and check if the nearby found popup is already shown
*/
private boolean showNearbyFound;
@@ -123,8 +134,8 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
private Place nearbyPlace;
private UploadItem uploadItem;
/**
- * inAppPictureLocation: use location recorded while using the in-app camera if
- * device camera does not record it in the EXIF
+ * inAppPictureLocation: use location recorded while using the in-app camera if device camera
+ * does not record it in the EXIF
*/
private LatLng inAppPictureLocation;
/**
@@ -143,7 +154,8 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
super.onCreate(savedInstanceState);
}
- public void setImageTobeUploaded(UploadableFile uploadableFile, Place place, LatLng inAppPictureLocation) {
+ public void setImageTobeUploaded(UploadableFile uploadableFile, Place place,
+ LatLng inAppPictureLocation) {
this.uploadableFile = uploadableFile;
this.place = place;
this.inAppPictureLocation = inAppPictureLocation;
@@ -195,7 +207,7 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
}
//If this is the last media, we have nothing to copy, lets not show the button
- if (callback.getIndexInViewFlipper(this) == callback.getTotalNumberOfSteps()-4) {
+ if (callback.getIndexInViewFlipper(this) == callback.getTotalNumberOfSteps() - 4) {
btnCopyToSubsequentMedia.setVisibility(View.GONE);
} else {
btnCopyToSubsequentMedia.setVisibility(View.VISIBLE);
@@ -226,7 +238,8 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
* init the description recycler veiw and caption recyclerview
*/
private void initRecyclerView() {
- uploadMediaDetailAdapter = new UploadMediaDetailAdapter(defaultKvStore.getString(Prefs.DESCRIPTION_LANGUAGE, ""), recentLanguagesDao);
+ uploadMediaDetailAdapter = new UploadMediaDetailAdapter(
+ defaultKvStore.getString(Prefs.DESCRIPTION_LANGUAGE, ""), recentLanguagesDao);
uploadMediaDetailAdapter.setCallback(this::showInfoAlert);
uploadMediaDetailAdapter.setEventListener(this);
rvDescriptions.setLayoutManager(new LinearLayoutManager(getContext()));
@@ -239,12 +252,18 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
* @param messageStringId
*/
private void showInfoAlert(int titleStringID, int messageStringId) {
- DialogUtil.showAlertDialog(getActivity(), getString(titleStringID), getString(messageStringId), getString(android.R.string.ok), null, true);
+ DialogUtil.showAlertDialog(getActivity(), getString(titleStringID),
+ getString(messageStringId), getString(android.R.string.ok), null, true);
}
@OnClick(R.id.btn_next)
public void onNextButtonClicked() {
- presenter.verifyImageQuality(callback.getIndexInViewFlipper(this), inAppPictureLocation);
+ boolean isValidUploads = presenter.verifyImageQuality(callback.getIndexInViewFlipper(this), inAppPictureLocation);
+ if (!isValidUploads) {
+ startActivityWithFlags(
+ getActivity(), MainActivity.class, Intent.FLAG_ACTIVITY_CLEAR_TOP,
+ Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ }
}
@OnClick(R.id.btn_previous)
@@ -260,6 +279,10 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
rvDescriptions.smoothScrollToPosition(uploadMediaDetailAdapter.getItemCount()-1);
}
+ @OnClick(R.id.edit_image)
+ public void onEditButtonClicked() {
+ presenter.onEditButtonClicked(callback.getIndexInViewFlipper(this));
+ }
@Override
public void showSimilarImageFragment(String originalFilePath, String possibleFilePath,
ImageCoordinates similarImageCoordinates) {
@@ -305,7 +328,7 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
nearbyPlace = place;
this.uploadItem = uploadItem;
showNearbyFound = true;
- if(callback.getIndexInViewFlipper(this) == 0) {
+ if (callback.getIndexInViewFlipper(this) == 0) {
if (UploadActivity.nearbyPopupAnswers.containsKey(nearbyPlace)) {
final boolean response = UploadActivity.nearbyPopupAnswers.get(nearbyPlace);
if (response) {
@@ -323,7 +346,8 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
* Shows nearby place found popup
* @param place
*/
- @SuppressLint("StringFormatInvalid") // To avoid the unwanted lint warning that string 'upload_nearby_place_found_description' is not of a valid format
+ @SuppressLint("StringFormatInvalid")
+ // To avoid the unwanted lint warning that string 'upload_nearby_place_found_description' is not of a valid format
private void showNearbyPlaceFound(Place place) {
final View customLayout = getLayoutInflater().inflate(R.layout.custom_nearby_found, null);
ImageView nearbyFoundImage = customLayout.findViewById(R.id.nearbyItemImage);
@@ -360,7 +384,7 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
protected void onBecameVisible() {
super.onBecameVisible();
presenter.fetchTitleAndDescription(callback.getIndexInViewFlipper(this));
- if(showNearbyFound) {
+ if (showNearbyFound) {
if (UploadActivity.nearbyPopupAnswers.containsKey(nearbyPlace)) {
final boolean response = UploadActivity.nearbyPopupAnswers.get(nearbyPlace);
if (response) {
@@ -458,6 +482,24 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
goToLocationPickerActivity(uploadItem);
}
+ /**
+ * Launches the image editing activity to edit the specified UploadItem.
+ *
+ * @param uploadItem The UploadItem to be edited.
+ *
+ * This method is called to start the image editing activity for a specific UploadItem.
+ * It sets the UploadItem as the currently editable item, creates an intent to launch the
+ * EditActivity, and passes the image file path as an extra in the intent. The activity
+ * is started with a request code, allowing the result to be handled in onActivityResult.
+ */
+ @Override
+ public void showEditActivity(UploadItem uploadItem) {
+ editableUploadItem = uploadItem;
+ Intent intent = new Intent(getContext(), EditActivity.class);
+ intent.putExtra("image", uploadableFile.getFilePath().toString());
+ startActivityForResult(intent, REQUEST_CODE_FOR_EDIT_ACTIVITY);
+ }
+
/**
* Start Location picker activity. Show the location first then user can modify it by clicking
* modify location button.
@@ -493,7 +535,7 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
defaultLatitude = Double.parseDouble(locationLatLng[0]);
defaultLongitude = Double.parseDouble(locationLatLng[1]);
}
- if(defaultKvStore.getString(LAST_ZOOM) != null){
+ if (defaultKvStore.getString(LAST_ZOOM) != null) {
defaultZoom = Double.parseDouble(defaultKvStore.getString(LAST_ZOOM));
}
startActivityForResult(new LocationPicker.IntentBuilder()
@@ -528,17 +570,33 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
final String longitude = String.valueOf(cameraPosition.target.getLongitude());
final double zoom = cameraPosition.zoom;
- editLocation(latitude, longitude,zoom);
+ editLocation(latitude, longitude, zoom);
/*
If isMissingLocationDialog is true, it means that the user has already tapped the
"Next" button, so go directly to the next step.
*/
- if(isMissingLocationDialog){
+ if (isMissingLocationDialog) {
isMissingLocationDialog = false;
onNextButtonClicked();
}
}
}
+ if (requestCode == REQUEST_CODE_FOR_EDIT_ACTIVITY && resultCode == RESULT_OK) {
+ String result = data.getStringExtra("editedImageFilePath");
+
+ if (Objects.equals(result, "Error")) {
+ Timber.e("Error in rotating image");
+ return;
+ }
+ try {
+ photoViewBackgroundImage.setImageURI(Uri.fromFile(new File(result)));
+ editableUploadItem.setContentUri(Uri.fromFile(new File(result)));
+ callback.changeThumbnail(callback.getIndexInViewFlipper(this),
+ result);
+ } catch (Exception e) {
+ Timber.e(e);
+ }
+ }
}
/**
@@ -546,11 +604,11 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
* @param latitude new latitude
* @param longitude new longitude
*/
- public void editLocation(final String latitude, final String longitude, final double zoom){
+ public void editLocation(final String latitude, final String longitude, final double zoom) {
editableUploadItem.getGpsCoords().setDecLatitude(Double.parseDouble(latitude));
editableUploadItem.getGpsCoords().setDecLongitude(Double.parseDouble(longitude));
- editableUploadItem.getGpsCoords().setDecimalCoords(latitude+"|"+longitude);
+ editableUploadItem.getGpsCoords().setDecimalCoords(latitude + "|" + longitude);
editableUploadItem.getGpsCoords().setImageCoordsExists(true);
editableUploadItem.getGpsCoords().setZoomLevel(zoom);
@@ -567,8 +625,9 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
uploadMediaDetailAdapter.setItems(uploadMediaDetails);
showNearbyFound =
showNearbyFound && (
- uploadMediaDetails == null || uploadMediaDetails.isEmpty() || listContainsEmptyDetails(
- uploadMediaDetails));
+ uploadMediaDetails == null || uploadMediaDetails.isEmpty()
+ || listContainsEmptyDetails(
+ uploadMediaDetails));
}
/**
@@ -640,15 +699,17 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
public void onPrimaryCaptionTextChange(boolean isNotEmpty) {
btnCopyToSubsequentMedia.setEnabled(isNotEmpty);
btnCopyToSubsequentMedia.setClickable(isNotEmpty);
- btnCopyToSubsequentMedia.setAlpha(isNotEmpty ? 1.0f: 0.5f);
+ btnCopyToSubsequentMedia.setAlpha(isNotEmpty ? 1.0f : 0.5f);
btnNext.setEnabled(isNotEmpty);
btnNext.setClickable(isNotEmpty);
- btnNext.setAlpha(isNotEmpty ? 1.0f: 0.5f);
+ btnNext.setAlpha(isNotEmpty ? 1.0f : 0.5f);
}
public interface UploadMediaDetailFragmentCallback extends Callback {
void deletePictureAtIndex(int index);
+
+ void changeThumbnail(int index, String uri);
}
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailsContract.java b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailsContract.java
index 99299e2a9..fbd642668 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailsContract.java
+++ b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailsContract.java
@@ -37,6 +37,8 @@ public interface UploadMediaDetailsContract {
void showExternalMap(UploadItem uploadItem);
+ void showEditActivity(UploadItem uploadItem);
+
void updateMediaDetails(List uploadMediaDetails);
void displayAddLocationDialog(Runnable runnable);
@@ -46,7 +48,7 @@ public interface UploadMediaDetailsContract {
void receiveImage(UploadableFile uploadableFile, Place place, LatLng inAppPictureLocation);
- void verifyImageQuality(int uploadItemIndex, LatLng inAppPictureLocation);
+ boolean verifyImageQuality(int uploadItemIndex, LatLng inAppPictureLocation);
void copyTitleAndDescriptionToSubsequentMedia(int indexInViewFlipper);
@@ -56,6 +58,8 @@ public interface UploadMediaDetailsContract {
void onMapIconClicked(int indexInViewFlipper);
+ void onEditButtonClicked(int indexInViewFlipper);
+
void onUserConfirmedUploadIsOfPlace(Place place, int uploadItemPosition);
}
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.java b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.java
index 04d69e825..3a822df7c 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.java
+++ b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.java
@@ -178,8 +178,15 @@ public class UploadMediaPresenter implements UserActionListener, SimilarImageInt
* @param uploadItemIndex
*/
@Override
- public void verifyImageQuality(int uploadItemIndex, LatLng inAppPictureLocation) {
- final UploadItem uploadItem = repository.getUploads().get(uploadItemIndex);
+ public boolean verifyImageQuality(int uploadItemIndex, LatLng inAppPictureLocation) {
+ final List uploadItems = repository.getUploads();
+ if (uploadItems.size()==0) {
+ view.showProgress(false);
+ // No internationalization required for this error message because it's an internal error.
+ view.showMessage("Internal error: Zero upload items received by the Upload Media Detail Fragment. Sorry, please upload again.",R.color.color_error);
+ return false;
+ }
+ UploadItem uploadItem = uploadItems.get(uploadItemIndex);
if (uploadItem.getGpsCoords().getDecimalCoords() == null && inAppPictureLocation == null) {
final Runnable onSkipClicked = () -> {
@@ -227,6 +234,7 @@ public class UploadMediaPresenter implements UserActionListener, SimilarImageInt
})
);
}
+ return true;
}
@@ -273,6 +281,11 @@ public class UploadMediaPresenter implements UserActionListener, SimilarImageInt
view.showExternalMap(repository.getUploads().get(indexInViewFlipper));
}
+ @Override
+ public void onEditButtonClicked(int indexInViewFlipper){
+ view.showEditActivity(repository.getUploads().get(indexInViewFlipper));
+ }
+
@Override
public void onUserConfirmedUploadIsOfPlace(Place place, int uploadItemPosition) {
final List uploadMediaDetails = repository.getUploads()
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 c26243762..ee03ac845 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
@@ -172,6 +172,16 @@ class UploadWorker(var appContext: Context, workerParams: WorkerParameters) :
CommonsApplication.NOTIFICATION_CHANNEL_ID_ALL
)!!
withContext(Dispatchers.IO) {
+ /*
+ queuedContributions receives the results from a one-shot query.
+ This means that once the list has been fetched from the database,
+ it does not get updated even if some changes (insertions, deletions, etc.)
+ are made to the contribution table afterwards.
+
+ Related issues (fixed):
+ https://github.com/commons-app/apps-android-commons/issues/5136
+ https://github.com/commons-app/apps-android-commons/issues/5346
+ */
val queuedContributions = contributionDao.getContribution(statesToProcess)
.blockingGet()
//Showing initial notification for the number of uploads being processed
@@ -202,24 +212,32 @@ class UploadWorker(var appContext: Context, workerParams: WorkerParameters) :
}
queuedContributions.asFlow().map { contribution ->
- /**
- * If the limited connection mode is on, lets iterate through the queued
- * contributions
- * and set the state as STATE_QUEUED_LIMITED_CONNECTION_MODE ,
- * otherwise proceed with the upload
- */
- if (isLimitedConnectionModeEnabled()) {
- if (contribution.state == Contribution.STATE_QUEUED) {
- contribution.state = Contribution.STATE_QUEUED_LIMITED_CONNECTION_MODE
+ // Upload the contribution if it has not been cancelled by the user
+ if (!CommonsApplication.cancelledUploads.contains(contribution.pageId)) {
+ /**
+ * If the limited connection mode is on, lets iterate through the queued
+ * contributions
+ * and set the state as STATE_QUEUED_LIMITED_CONNECTION_MODE ,
+ * otherwise proceed with the upload
+ */
+ if (isLimitedConnectionModeEnabled()) {
+ if (contribution.state == Contribution.STATE_QUEUED) {
+ contribution.state = Contribution.STATE_QUEUED_LIMITED_CONNECTION_MODE
+ contributionDao.saveSynchronous(contribution)
+ }
+ } else {
+ contribution.transferred = 0
+ contribution.state = Contribution.STATE_IN_PROGRESS
contributionDao.saveSynchronous(contribution)
+ setProgressAsync(Data.Builder().putInt("progress", countUpload).build())
+ countUpload++
+ uploadContribution(contribution = contribution)
}
} else {
- contribution.transferred = 0
- contribution.state = Contribution.STATE_IN_PROGRESS
- contributionDao.saveSynchronous(contribution)
- setProgressAsync(Data.Builder().putInt("progress", countUpload).build())
- countUpload++
- uploadContribution(contribution = contribution)
+ /* We can remove the cancelled upload from the hashset
+ as this contribution will not be processed again
+ */
+ removeUploadFromInMemoryHashSet(contribution)
}
}.collect()
@@ -240,6 +258,13 @@ class UploadWorker(var appContext: Context, workerParams: WorkerParameters) :
return Result.success()
}
+ /**
+ * Removes the processed contribution from the cancelledUploads in-memory hashset
+ */
+ private fun removeUploadFromInMemoryHashSet(contribution: Contribution) {
+ CommonsApplication.cancelledUploads.remove(contribution.pageId)
+ }
+
/**
* Create new notification for foreground service
*/
diff --git a/app/src/main/res/drawable/baseline_rotate_right.xml b/app/src/main/res/drawable/baseline_rotate_right.xml
new file mode 100644
index 000000000..8a90343f4
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_rotate_right.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/baseline_save_24.xml b/app/src/main/res/drawable/baseline_save_24.xml
new file mode 100644
index 000000000..923fe8ff6
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_save_24.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_edit.xml b/app/src/main/res/layout/activity_edit.xml
new file mode 100644
index 000000000..e64416bfe
--- /dev/null
+++ b/app/src/main/res/layout/activity_edit.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_upload_media_detail_fragment.xml b/app/src/main/res/layout/fragment_upload_media_detail_fragment.xml
index 52b143f82..9e493e768 100644
--- a/app/src/main/res/layout/fragment_upload_media_detail_fragment.xml
+++ b/app/src/main/res/layout/fragment_upload_media_detail_fragment.xml
@@ -142,6 +142,16 @@
android:layout_marginRight="@dimen/standard_gap"
android:layout_toLeftOf="@+id/btn_next"
android:text="@string/previous" />
+
diff --git a/app/src/main/res/values-ast/strings.xml b/app/src/main/res/values-ast/strings.xml
index be722b57c..22a0a3ba3 100644
--- a/app/src/main/res/values-ast/strings.xml
+++ b/app/src/main/res/values-ast/strings.xml
@@ -4,6 +4,7 @@
* Fueyas
* Tokvo
* Xuacu
+* YoaR
-->
Páxina de Facebook de Commons
@@ -144,7 +145,7 @@
Esperando pola primera sincronización…Inda nun xubió denguna foto.Reintentar
- Encaboxar
+ ZarrarEl presentar esta imaxe, declaro que ye una obra propia, que nun contien material con derechu d\'autor o «selfies», y que s\'atien a les <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">polítiques de Wikimedia Commons</a>.DescargarLlicencia predeterminada
@@ -222,7 +223,7 @@
Bienvenida a WikipediaBienvenida a Derechos d\'autorÓpera de Sidney
- Encaboxar
+ ZarrarAbrirZarrarEntamu
@@ -287,7 +288,7 @@
LlingüesEscueye l\'idioma pal que quies unviar traduccionesSiguir
- Encaboxar
+ ZarrarRetentarEstos son sitios cercanos que precisen imaxes para ilustrar los sos artículos de Wikipedia.\n\nAl pulsiar en \'BUSCAR NESTA ÁREA\' bloquiase\'l mapa y llánzase una busca cercana alredor d\'esi llugar.Esti llugar precisa una semeya.
@@ -324,7 +325,7 @@
Si sigues xubiendo imáxenes que riquen desaniciase, la to cuenta probablemente va bloquiase. ¿Seguro que desees acabar el cuestionariu?Más d\'un %1$s de les imáxenes que xubisti desaniciáronse. Si sigues xubiendo imáxenes que riquen desaniciase, la to cuenta probablemente va bloquiase.\n\n¿Desees volver a ver el tutorial y llueu contestar un cuestionariu p\'ayudate a saber qué triba d\'imáxenes puedes o nun puedes xubir?Los selfies nun tienen munchu valor enciclopédicu. Por favor, nun xubas una semeya de ti mesmu sacante que yá esista un artículu de Wikipedia que trate de ti.
- Les semeyes de monumentos y escenes en esteriores pueden xubise pa la mayor parte de paises. Ten presente que les instalaciones artístiques temporales en esteriores de vezu tienen derechos d\'autor y nun pueden xubise.
+ Les semeyes de monumentos y escenes en esteriores pueden xubise pa la mayor parte de países. Ten presente que les instalaciones artístiques temporales en esteriores de vezu tienen derechos d\'autor y nun pueden xubise.Los pantallazos de sitios web considérense obres derivaes, y tán suxetes a los derechos d\'autor del propiu sitiu web. Los mesmos pueden usase en teniendo permisu del autor. Ensin esi permisu, cualquier obra artística que crees basada nel so trabayu tien la consideración llegal de copia ensin llicencia que pertenez al autor orixinal.Unu de los oxetivos de Commons ye collechar imáxenes de calidá. Por eso, les imáxenes borroses nun tendríen de xubise. Tenta siempre sacar semeyes guapes con bona lluz.Les semeyes qu\'amuesen la teunoloxía o la cultura son enforma bienveníes en Commons.
@@ -417,6 +418,8 @@
Remata el:Amosar campañesVer les campañes en cursu
+ Permitir
+ DescartarPor favor asegúrate de qu\'esti selector d\'Android nuevu nun esancia l\'allugamientu de les tos semeyes.Yá nun verás más les campañes. Sicasí, si quies puedes reactivar esti avisu na configuración.Esta función rique conexón de rede, comprueba la configuración de conexón.
@@ -500,7 +503,7 @@
LogoPorque yeCompartir imaxe per
- Inda nun ficisti nenguna contribución
+ %s nun fizó entá nenguna contribución¡Cuenta creada!Testu copiáu al cartafueyuNotificación marcada como lleida
@@ -533,4 +536,6 @@
¿Sacasti estes dos semeyes nel mesmu llugar? ¿Quies usar la llatitú/llonxitú da la semeya de la derecha?Cargar másNun s\'alcontraron llugares, tenta cambiar los criterios de gueta.
+ Confirmar
+ Instrucciones
diff --git a/app/src/main/res/values-b+sr+Latn/strings.xml b/app/src/main/res/values-b+sr+Latn/strings.xml
index 56ac56673..6763e6a80 100644
--- a/app/src/main/res/values-b+sr+Latn/strings.xml
+++ b/app/src/main/res/values-b+sr+Latn/strings.xml
@@ -10,33 +10,59 @@
Izvorni kod na Github-uLogo OstaveVeb-sajt Ostave
+ Pošalji
+ Dodaj drugi opis
+ Dodaj novi doprinos
+ Dodaj doprinos iz kamere
+ Dodaj doprinos iz Fotografija
+ Dodaj doprinos iz galerije prethodnih doprinosa
+ Natpisi
+ Opis jezika
+ Natpis
+ Opis
+ Slika
+ Sve
+ Pregled pretrageSlika dana%1$d datoteka se otprema%1$d datoteke se otpremaju
-
- \@string/contributions_subtitle_zero
+ %1$d otpremanje%1$d otpremanja
-
- Počinje %1$d otpremanje
- Počinju %1$d otpremanja
+ Pokretanje otpremanja
+
+ Procesuiranje %d otpremanje
+ Procesuiranje %d otpremanja
-
+
+ %d otpremanje
+ %d otpremanja
+
+
+ Slika će se voditi pod licencom %1$s
+ Slike će se voditi pod licencom %1$s
+
+ %1$d otpremanje%1$d otpremanja
- Slika će se voditi pod licencom %1$s
+
+ Primanje deljenog sadržaja... Procesuiranje slike može potrajati neko vreme, u zavisnosti od veličine slike i vašeg uređaja
+ Primanje deljenog sadržaja... Procesuiranje slika može potrajati neko vreme, u zavisnosti od veličine slika i vašeg uređaja
+ IstragaIzgledOpštePovratne informacije
+ PrivatnostOstava•PodešavanjaOtpremi na Ostavu
+ Otpremanje u tokuKorisničko imeLozinkaPrijavite se na svoj Commons Beta nalog
@@ -45,19 +71,27 @@
Otvori nalogPrijavljivanjeSačekajte…
+ Ažuriranje natpisa i opisa
+ Sačekajte…Uspešno ste prijavljeni.Prijavljivanje nije uspelo.Datoteka nije pronađena. Pokušajte sa drugom datotekom.
+ Maksimalni limit za ponovno pokušavanje je prekoračen! Otkažite otpremanje i pokušajte ponovo
+ Isključi optimizaciju baterije?
+ Otpremanje više od 3 slike radi pouzdanije kada je isključena optimizacija baterije. Isključite optimizaciju baterije za aplikaciju Ostava u podešavanjima, za nesmetano iskustvo otpremanja.\n\nMogući koraci za isključivanje optimizacije baterije:\n\nKorak 1: Dodirnite dugme \'Podešavanja\' ispod.\n\nKorak 2: Promenite sa \'Nije optimizovano\' na \'Sve aplikacije\'.\n\nKorak 3: Potražite \'Ostava\' ili \'fr.free.nrw.commons\'.\n\nKorak 4: Dodirnite i izaberite \'Ne optimizuj\'.\n\nKorak 5: Pritisnite \'Gotovo\'.Potvrda identiteta nije uspela. Prijavite se ponovo.Otpremanje je započeto.
+ Otpremanje je u redu (omogućen režim ograničene veze)Datoteka „%1$s” je otpremljena.Dodirnite da biste videli otpremanje
- Počinje otpremanje datoteke „%1$s”
+ Otpremanje datoteke „%s”Otpremanje datoteke „%1$s”Završavanje otpremanja datoteke „%1$s”
- Otpremanje datoteke „%1$s” nije uspelo
+ Otpremanje datoteke „%1$s” nije uspelo
+ Otpremanje %1$s pauziranoDodirnite da biste videli
- Moja nedavna otpremanja
+ Dodirnite da biste videli
+ Vaša nedavna otpremanjaNa čekanjuNije uspelo%1$d%% otpremljeno
@@ -67,8 +101,11 @@
U bliziniMoja otpremanjaDeli
- Naslov
+ Vidi stranicu datoteke
+ Opis (obavezno)
+ Unesite natpis za ovu datotekuOpis
+ NatpisPrijava nije moguća — greška na mrežiPreviše neuspešnih pokušaja. Pokušajte ponovo za nekoliko minuta.Ovaj korisnik je blokiran na Ostavi
@@ -81,23 +118,25 @@
Pretraži kategorijeSačuvajOsveži
- Lista
- Još uvek nema otpremanja
+ Spisak
+ (Još uvek nema otpremanja)Nema kategorija koje odgovaraju %1$s
+ Nisu pronađene stavke na Vikipodacima koje se poklapaju sa %1$sDodajte kategorije na slike da biste olakšali korisnicima njihovo pronalaženje na Ostavi.\n\nDa biste dodali kategoriju, počnite sa pisanjem njenog imena.KategorijePodešavanjaOtvori nalogIzabrane slikeKategorija
+ Pregled slikaO aplikaciji
- Softver otvorenog koda dostupan pod licencom <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\">Apache ver. 2</a> Vikimedijina Ostava i njen logo su zaštitni znaci Vikimedijine Fondacije i koriste se sa dozvolom Vikimedijine Fondacine. Mi ne odobravamo ili podržavmo Vikimedijinu Fondaciju.\n\nAplikacija za Vikimedijinu ostavu je aplikacija otvorenog koda koja je napravljena i koja se održava pomoću grantova i volontera Vikimedijine zajednice. Zadužbina Vikimedija nije uključena u stvaranje, razvoj ili održavanje aplikacije.
- Napravite novi <a href=\"%1$s\">zahtev na GitHub-u</a> da biste prijavili greške ili dali predloge.
- <u>Politika privatnosti</u>
- <u>Zasluge</u>
+ Aplikacija za Vikimedijinu ostavu je aplikacija otvorenog koda koja je napravljena i koja se održava pomoću grantova i volontera Vikimedijine zajednice. Zadužbina Vikimedija nije uključena u stvaranje, razvoj ili održavanje aplikacije.
+ Bagove i sugestije možete prijaviti na <a href=\"%1$s\">GitHub-u</a>.
+ Politika privatnosti
+ ZaslugeO aplikaciji
- Pošaljite povratne informacije (putem imejla)
- Nije instaliran imejl-klijent
+ Pošaljite povratne informacije (putem e-pošte)
+ Nije instaliran klijent za e-poštuNedavno korišćene kategorijeČeka se prva sinhronizacija…Još uvek niste otpremili nijednu fotografiju.
@@ -106,8 +145,8 @@
Slanjem ove slike, ja tvrdim da je u pitanju moj rad, da ne sadrži materijal ili selfije zaštićene autorskim pravima, te da je na ostale načine u skladu sa <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">smernicama Vikimedijine ostave</a>.PreuzmiPodrazumevana licenca
- Koristi prethodan naslov/opis
- Noćni režim
+ Koristi prethodan naslov i opis
+ TemaAutorstvo-Deliti pod istim uslovima 4.0Autorstvo 4.0Autorstvo-Deliti pod istim uslovima 3.0
@@ -117,19 +156,19 @@
CC BY 3.0CC BY-SA 4.0CC BY 4.0
- Vikimedijina Ostava sadrži većinu slika koja se koristi na Vikipediji.
+ Vikimedijina ostava sadrži većinu slika koje se koriste na Vikipediji.Vaše slike pomažu u obrazovanju ljudi širom sveta.
- Postavite slike koje ste preuzeli ili kreirali u potpunosti sami:
- Prirodni objekti (cveće, životinje, planine)
- Korisni objekti (bicikli, železničke stanice)
- Poznati ljudi (vaš gradonačelnik, olimpijci koje ste sreli)
+ Otpremajte slike koje ste snimili ili napravili u potpunosti sami:
+ prirodne objekte (cveće, životinje, planine);
+ korisne objekte (bicikle, železničke stanice);
+ poznate ljude (vaš gradonačelnik, olimpijci koje ste sreli).NE otpremajte:
- Selfiji ili slike vaših prijatelja
- Slike koje ste preuzeli sa interneta
- Snimci ekrana sa prikazanim sadržajem vlasničkih aplikacija
+ selfije ili slike vaših prijatelja;
+ slike koje ste preuzeli sa interneta;
+ snimke ekrana vlasničkih aplikacija.Primer otpremanja:Naslov: Sidnejska opera
- Opis: Sidnejska opera, pogled preko zaliva
+ Opis: Sidnejska opera gledana preko zalivaKategorije: Sydney Opera House from the west, Sydney Opera House remote viewsDelite vaše slike. Oživite članke na Vikipediji.Slike na Vikipediji dolaze iz Ostave.
@@ -137,27 +176,39 @@
Izbegavajte materijale koje ste našli na internetu, kao i slike plakata, korica knjiga itd.Jeste li razumeli?Da
+ Više informacijaKategorijeUčitavanje…Ništa nije izabrano
+ Nema opisaNema opisa
+ Nema raspraveNepoznata licencaOsveži
+ Zahtevanje dozvole za skladištenjePotrebna dozvola: Čitanje spoljašnje memorije. Aplikacija ne može da pristupi Vaših galeriji bez ovoga.
- Potrebna dozvola: Pisanje spoljašnje memorije. Aplikacija ne može da pristupi Vašoj kameri bez ovoga.
+ Potrebna dozvola: Pisanje u spoljašnjoj memoriji. Aplikacija ne može da pristupi Vašoj kameri/galeriji bez ove dozvole.
+ Zahtevanje dozvole za lokaciju
+ Snimi lokaciju za snimke u aplikaciji
+ Omogućite ovo da bi ste snimili lokaciju za snimke u aplikaciji, u slučaju da je kamera uređaja ne snimiU reduUpozorenje
+ Pronađen je duplikat naziva datoteka
+ OtpremiDaNe
+ NatpisNaslov
+ PrikazujeOpis
+ DiskusijaAutorDatum otpremanjaLicencaKoordinateNišta nije uneto
- Postani beta tester!
- Priključite se na naš beta kanal na Gugl pleju i pristupite novim informacijama i ispravkama bagova
+ Postanite beta-tester
+ Priključite se našem kanalu beta verzija na Google Play-u i ranije pristupajte novim funkcijama i ispravkama grešaka2FA kodZaista želite da se odjavite?Medijska slika neuspešna
@@ -180,51 +231,72 @@
PodešavanjaPovratne informacijeOdjavi me
- Tutorijal
+ UputstvoObaveštenja
+ Pregledajopis nije pronađenStranica datoteke na OstaviStavka na VikipodacimaVikipedijski članakMolimo da opišete datoteku koliko je to moguće: Gde je napravljena? Šta prikazuje? Šta je kontekst? Opišite objekte i/ili osobe. Otkrijte informacije koje se ne mogu lako pogoditi, na primer doba dana ako je u pitanju pejzaž. Ako datoteka prikazuje nešto neobično, molimo da objasnite šta je to čini neobičnom.
- Upotreba spoljašnje memorije
- Spremanje slika napravljenih kamerom aplikacije na Vašem uređaju
- Prijavite se na svoj nalog
- Pošalji dnevničku datoteku
- Pošaljite datoteku evidencije programerima putem e-pošte kako biste pomogli u rešavanju problema sa aplikacijom.\nNapomena: dnevnici mogu potencijalno sadržati identifikacione informacije
+ Molimo napišite kratak opis slike. Prvi naslov bi se koristio kao naslov za sliku. Ograničeno na 255 karaktera.
+ Potencijalni problemi sa ovom slikom:
+ Slika je suviše tamna.
+ Slika je mutna.
+ Slika je već na Ostavi.
+ Ova slika je snimljena na drugoj lokaciji.
+ Molimo Vas da samo otpremate slike koje ste vi napravili. Ne otpremajte slike koje ste pronašli na drugim nalozima na Fejsbuku.
+ Želite li još uvek da otpremite ovu sliku?
+ Greška u vezi
+ Proces otpremanja zahteva aktivni pristup internetu. Proverite vašu vezu sa internetom.
+ Pronađeni su problemi u slici
+ Molimo Vas da otpremate slike koje ste vi napravili. Ne otpremajte slike koje ste preuzeli sa interneta.
+ Čuvaj snimke u aplikaciji
+ Čuvanje slika snimljenih kamerom u memoriji na vašem uređaju
+ Prijava na nalog
+ Pošalji datoteku evidencije
+ Pošaljite datoteku evidencije programerima putem e-pošte da biste pomogli u rešavanju problema sa aplikacijom. Napomena: evidencije mogu potencijalno sadržavati identifikacione informacijeNije pronađen veb-pretraživač za otvaranje URL-aGreška! URL nije pronađenNominovanje za brisanjeOva slika je bila nominovana za brisanje
+ Pogledajte veb-stranicu za više informacijaPreskočiPrijavi meZaista želite da preskočite prijavu?
- Nećete moći da otpremate slike.
+ Moraćete da se prijavite da biste otpremali slike u budućnosti.Prijavite se da biste koristili ovu funkciju
- Kopiraj vikitekst u ostavu
- Vikitekst je kopiran u ostavu
- Lokacija nije dostupna.
+ Kopiraj vikitekst
+ Vikitekst je kopiran u privremenu memoriju
+ „U blizini” možda ne radi kako treba. Lokacija nije dostupna.
+ Pristup lokaciji je onemogućen. Odaberite vašu lokaciju ručno da bi ste koristili ovu mogućnost.Potrebna je dozvola za prikazivanje liste lokacija u blizini
- UPUTSTVA
- VIKIPODACI
- VIKIPEDIJA
- OSTAVA
- <u>Ocenite nas</u>
- <u>ČPP</u>
- Preskoči tutorijal
+ Uputstva
+ Vikipodaci
+ Vikipedija
+ Ostava
+ Ocenite nas
+ ČPP
+ Korisnički vodič
+ Preskoči uputstvoInternet nije dostupanGreška pri dobavljanju obaveštenja
+ Greška pri preuzimanju slike za pregled. Pritisnite osveži da biste pokušali ponovo.Obaveštenja nisu pronađena
- <u>Prevođenje</u>
+ PrevođenjeJeziciOdaberite jezik za koji biste želeli da pravite prevodeNastaviOtkažiPokušaj ponovo
- Ovo su mesta u Vašoj blizini kojima je potrebna slika da ilustruje njihove vikipedijske članke
+ Ovo su mesta u Vašoj blizini kojima je potrebna slika da ilustruje njihove članke na Vikipediji.\n\nKlikom na \"PRETRAŽITE OVU OBLAST\" zaključava se mapa i pokreće pretragu u blizini te lokacije.
+ Ovom mestu je potrebna fotografija.
+ Ovo mesto već ima fotografiju.
+ Ovo mesto više ne postoji.Slike nisu pronađene.Došlo je do greške pri učitavanju slika.Otpremio/la: %1$s
+ BlokiranoBlokirano vam je uređivanje OstaveSlika danaPretraži
@@ -232,8 +304,16 @@
PretragaNedavne pretrage:Nedavno pretraženi upiti
+ Skorašnji upiti jezikaDošlo je do greške pri učitavanju kategorija.
- Slika je uspešno dodata u %1$s na Vikipodacima.
+ Došlo je do greške pri učitavanju prikaza.
+ Mediji
+ Kategorije
+ Stavke
+ Izabrano
+ Otpremljeno putem mobilnog uređaja
+ Mapa
+ Slika je dodata u %1$s na Vikipodacima.Ažuriranje odgovarajućeg entiteta na Vikipodacima nije uspelo.Postavi kao pozadinuPozadina je uspešno postavljena.
@@ -242,6 +322,11 @@
PitanjeRezultatAko nastavite sa otpremanjem slika koje zahtevaju brisanje, vaš nalog će verovatno biti blokiran. Zaista želite da završite kviz?
+ Više od %1$s slika koje ste otpremili je obrisano. Ukoliko nastavite da otpremate slike koje je potrebno obrisano, vaš nalog će najverovatnije biti blokiran.\n\nDa li ste želeli da vidite tutorijal ponovo i onda uradite kviz koji će vam pomoći da naučite koje slike trebate ili ne trebate da otpremate?
+ Selfiji nemaju mnogo značaja za enciklopediju. Nemojte otpremati sliku sebe osim ako već nemate članak o sebi na Vikipediji.
+ Slike spomenika i spoljašnjih pejzaža su u redu za otpremanje u većini zemalja. Imajte na umu da su privremene umetničke instalacije napolju često zaštićene autorskim pravima i da ih nije moguće otpremiti.
+ Snimci ekrana veb lokacija smatraju se izvedenim delima i podležu svim autorskim pravima na samoj veb lokaciji. Mogu se koristiti uz dozvolu autora. Bez takve dozvole, svaka umetnost koju kreirate na osnovu njihovog dela se zakonski smatraju nelicenciranom kopijom u vlasništvu originalnog autora.
+ Jedan od ciljeva Ostave je prikupljanje kvalitetnih slika. Zbog toga ne bi trebalo otpremati mutne slike. Uvek pokušajte da napravite lepe slike sa dobrim osvetljenjem.Slike iz oblasti tehnologije ili kulture su dobrodošle na Ostavi.Tačnih odgovora: %1$s. Čestitamo!Izaberite jednu od dve opcije da biste odgovorili na pitanje
@@ -253,31 +338,368 @@
Želite li da otpremite ovaj snimak ekrana?Deli aplikacijuGreška pri dobavljanju mesta u blizini.
+ Ne postoje najbliža mesta u blizini
+ Greška pri dobavljanju spomenika u blizini.
+ Nema nedavnih pretragaDa li ste sigurni da želite da očistite svoju istoriju pretrage?
+ Želite li zaista da zaustavite ovo otpremanje?
+ Da li želite da izbrišete ovu pretragu?Istorija pretrage je izbrisana
+ Nominovanje za brisanje
+ IzbrišiDostignuća
- STATISTIKE
- Primljene zahvale
+ Profil
+ Statistika
+ ZahvaljivanjaIzabrane slike
- NIVO
+ Slike preko \"Mesta u blizini\"
+ NivoOtpremljene slike
- Slike koje nisu opozvane
+ Slike koje nisu uklonjeneIskorišćene slikeDelite svoja dostignuća sa prijateljima.
- Vaš nivo se povećava ako se pridržavate ovih zahteva. Predmeti u odeljku „Statistika” se ne računaju.
+ Vaš nivo se povećava kako ispunjavate dole navedene uslove. Stavke u delu „Statistika” se ne računaju.potrebno bar:Broj slika koje ste otpremili na Ostavu pomoću bilo kog softvera za otpremanjeProcenat slika koji ste otpremili na Ostavu, a koje nisu izbrisaneBroj slika koje ste otpremili na Ostavu a koriste se u člancima na VikimedijiDošlo je do greške.Obaveštenja Ostave
+ Koristi prilagođeno ime autora
+ Korišćenje prilagođenog imena autora umesto vašeg korisničkog imena pri otpremanju fotografija
+ Prilagođeno ime autora
+ Doprinosi
+ U blizini
+ Obaveštenja
+ Obaveštenja (pročitana)
+ Prikaži obaveštenje u blizini
+ Prikaži obaveštenja u aplikaciji za najbliže mesto kojem treba slika
+ SpisakDozvola za skladištenjePotrebna nam je vaša dozvola da bismo pristupili spoljašnjem skladištu vašeg uređaja kako bismo otpremali slike.
+ Više nećete videti najbliže mesto kojem trebaju slike. Međutim, ako želite, možete ponovo da omogućite ovo obaveštenje u Podešavanjima.
+ Korak %1$d od %2$d: %3$s
+ Sledeće
+ Prethodno
+ Već postoji datoteka sa imenom %1$s. Zaista želite da nastavite?\n\nNapomena: Odgovarajući sufiks će se automatski dodati imenu datoteke.
+ Nije moguće pronaći aplikaciju kompatibilne mape na vašem uređaju. Instalirajte aplikaciju mape da biste koristili ovu funkciju.SlikeLokacijeDodaj/ukloni obeleživačObeleživačiNiste dodali nijedan obeleživačObeleživači
- Dobro došli na Ostavu!\n\nOtpremite prve medije dodirom gorenavedene ikonice kamere ili galerije.
+ Pokrenuto je prikupljanje dnevnika. Ponovo pokrenite aplikaciju, izvršite akciju koju želite da zabeležite, i onda dodirnite \"Pošalji datoteku dnevnika\" ponovo
+ Greškom sam je otpremio/la
+ Nisam znao/la da će biti javno vidljiva
+ Shvatio/la sam da je loša za moju privatnost
+ Promenio/la sam mišljenje, ne želim da više javno budu vidljive
+ Ova slika nije zanimljiva za enciklopediju
+ Otpremio/la sam na %1$s, koristi se u članku/cima — %2$d.
+ Dobro došli na Ostavu!\n\nOtpremite prve medije dodirom dugmeta za dodavanje.
+ Kategorije nisu izabrane
+ Slike bez kategorija retko su upotrebljive. Zaista želite da nastavite bez izbora kategorija?
+ Opis nije odabran
+ Slike sa prikazima se lakše pronalaze i verovatnije će se koristiti. Da li ste sigurni da želite da nastavite bez izbora prikaza?
+ Otkaži otpremanje
+ Korišćenje dugmeta za vraćanje unazad će otkazati vaše otpremanje i izgubićete vaš napredak
+ Nastavi otpremanje
+ (Za sve slike u skupu)
+ Pretražite ovu oblast
+ Zahtev za dozvolu
+ Želite li da koristimo vašu trenutnu lokaciju da bi prikazali najbliže mesto kojem trebaju slike?
+ Nije moguće prikazati najbliže mesto kojem trebaju slike bez dozvole za lokaciju.
+ Ne pitaj ovo ponovo
+ Dozvola za prikaz lokacije
+ Traži dozvolu za lokaciju kada je to potrebno za funkciju prikaza kartice obaveštenja u blizini.
+ Nešto nije u redu. Nije moguće dobaviti dostignuća.
+ Dali ste toliko doprinosa sa kojima naš sistem za izračunavanje dostignuća ne može da izađe na kraj. Ovo je krajnje dostignuće.
+ Završava:
+ Prikaži kampanje
+ Pogledajte tekuće kampanje
+ Dozvolite aplikaciji da pribavi lokaciju u slučaju da je kamera ne snimi. Kamere na nekim uređajima je ne snimaju. U ovim slučajevima, davanje aplikaciji da pribavi i zakači lokaciju čini vaš doprinos korisnijim. Ovo možete promeniti bilo kada u podešavanjima.
+ Dozvoli
+ Odbaci
+ Uključite pristup lokaciji u podešavanjima i pokušajte ponovo.\n\nNapomena: Otpremanje možda neće imati lokaciju ukoliko aplikacija nije u mogućnosti da pribavi lokaciju sa uređaja u kratkom intervalu.
+ Kamera u aplikaciji zahteva dozvolu za pristup lokaciji, kako bi je prikačila vašim slikama u slučaju da ona nije dostupna u EXIF-u. Dozvolite aplikaciji da pristupi vašoj lokaciji i pokušajte ponovo.\n\nNapomena: Otpremanje možda neće imati lokaciju ukoliko aplikacija ne može da pribavi lokaciju sa uređaja u kratkom intervalu.
+ Aplikacija ne bi snimala lokaciju zajedno sa snimcima zbog nedostatka dozvole za lokaciju
+ Aplikacija ne bi snimala lokaciju zajedno sa snimcima pošto je GPS isključen
+ Koristite birač slika baziran na dokumentu
+ Više nećete videti kampanje. Međutim, ako želite, možete ponovo da omogućite ovo obaveštenje u Podešavanjima.
+ Ova funkcija zahteva mrežnu vezu. Proverite podešavanja veze.
+ Došlo je do greške tokom obrade slike. Molim vas, pokušajte ponovo!
+ Dobijanje tokena za uređivanje
+ Dodavanje šablona za proveru kategorije
+ Zahtevanje provere kategorije za %1$s
+ Zahtevanje provere kategorije
+ Zatražena provera kategorije
+ Zahtevanje provere kategorije ne radi
+ Zatražena provera kategorije za %1$s
+ Nije moguće zatražiti proveru kategorije za %1$s
+ Zahtevanje provere kategorije za %1$s
+ Urađeno
+ Slanje zahvalnice: Uspešno
+ Uspešno poslata zahvalnica na %1$s
+ Nije uspelo slanje zahvalnice %1$s
+ Slanje zahvalnice: Nije uspelo
+ Slanje zahvalnica za %1$s
+ Da li prati pravila autorskih prava?
+ Da li je ovo korektno kategorizovano?
+ Da li je za Ostavu?
+ Da li želite da se zahvalite doprinosiocu?
+ Kliknite NE da nominujete sliku za brisanje ako je potpuno beskorisna.
+ Logoi, snimci ekrana, filmski posteri često predstavljaju kršenje autorskih prava. Tapnite NE kako bi ste nominovali ovu sliku za brisanje
+ %1$s će biti ohrabljen vašom zahvalnošću
+ Oh, ovo čak nije kategorizovano!
+ Ova slika je pod %1$s kategorije.
+ Nije za Ostavu zato što
+ Krši autorska prava zato što
+ Sledeća slika
+ Da, zašto ne
+ Dodirivanjem ovog dugmeta, biće vam prikazana druga skoro otpremljena slika sa Vikimedijine ostave
+ Nema korišćenih datoteka
+ Nema vraćenih slika
+ Nema otpremljenih slika
+ Nemate nepročitanih obaveštenja.
+ Nemate pročitanih obaveštenja
+ Podeli dnevnike koristeći
+ Prikaži pročitano
+ Prikaži nepročitano
+ Došlo je do greške pri izboru slika
+ Sačekajte…
+ Istaknute slike su slike od veoma iskusnih fotografa i ilustratora, koje je zajednica Vikimedijine ostave odabrala kao neke od najvećeg kvaliteta na sajtu.
+ Slike otpremljene preko Mesta u blizini su slike koje su otpremljene otkrivanjem mesta na mapi.
+ Ova mogućnost omogućava urednicima da pošanju obaveštenje zahvaljivanja korisnicima koji su napravili korisne izmene - korišćenjem male veze za zahvaljivanje na stranici istorije ili razlici izmena.
+ Kopirano
+ Primeri dobrih slika za otpremanje na Ostavu
+ Primeri slika koje nisu za otpremanje
+ Preskoči sliku
+ Preuzimanje nije uspelo!! Ne možemo preuzeti datoteku bez dozvole za pristup spoljašnjoj memoriji.
+ Upravljanje EXIF oznakama
+ Odaberite koje EXIF želite da sačuvate u otpremanjima
+ Autor
+ Autorsko pravo
+ Lokacija
+ Model kamere
+ Model objektiva
+ Serijski brojevi
+ Softver
+ Pristup lokaciji medija je odbijen
+ Možda nećemo moći da automatski pribavimo podatke o lokaciji iz slika koje otpremite. Dodajte odgovarajuću lokaciju za svaku sliku pre objavljivanja
+ Otpremi fotografije na Vikimedijinu Ostavu direktno sa svog telefona. Preuzmi aplikaciju Ostave sada: %1$s
+ Podeli aplikaciju preko...
+ Informacije o slici
+ Nisu pronađene kategorije
+ Otkazano otpremanje
+ Nema podataka za naslov ili opis prethodne slike
+ Zašto bi %1$s trebalo obrisati?
+ Datoteka %1$s je otpremljena od strane: %2$s
+ Podrazumevani jezik opisa
+ Predlaganje za brisanje
+ Uspešno
+ Nominovan %1$s za brisanje.
+ Nije uspelo
+ Nije moguće zatražiti brisanje.
+ Selfi koji se ne koristi ni u jednom članku
+ Totalno zamagljeno
+ Besmisleno, apsolutno neupotrebljivo ni u jednom članku
+ Foto reportaža
+ Nasumična fotografija sa internata
+ Logotip
+ Zato što je to
+ Pokušavanje ažuriranja kategorija.
+ Ažuriranje kategorije
+ Uspešno
+
+ Kategorija %1$s je dodata.
+ Kategorije %1$s su dodate.
+
+ Nije moguće dodati kategorije.
+ Ažuriraj kategoriju
+ Uredi prikaze
+ Pokušavanje promena koordinata...
+ Ažuriranje koordinata
+ Ažuriranje opisa
+ Ažuriranje natpisa
+ Uspešno
+ koordinate %1$s su dodate.
+ Opisi su dodati.
+ Natpisi su dodati.
+ Nije moguće dodavanje koordinata.
+ Nije moguće dodavanje opisa.
+ Nije moguće dodavanje natpisa.
+ Nije moguće dobiti koordinate.
+ Nije moguće dobiti opise.
+ Uredi opise i natpise
+ Podeli sliku preko
+ Nemate još uvek doprinosa
+ %s još nije doprinosio/la
+ Nalog je otvoren.
+ Tekst je kopiran u privremenu memoriju
+ Obaveštenje je označeno pročitanim
+ Došlo je do greške.
+ Tip mesta:
+ Postoji
+ Potrebna slika
+ Tip mesta:
+ Most, muzej, hotel itd.
+ Došlo je do greške sa prijavljivanjem, morate da promenite vašu lozinku !!
+ Obližnje mesto je pronađeno
+ Da li je ovo fotografija %1$s?
+ Obeleživači
+ Podešavanja
+ Uklonjeno iz obeleživača
+ Dodato u obeleživače
+ Došlo je do greške. Nije moguće postaviti pozadinu
+ Postavi kao pozadinu
+ Postavljam pozadinu, sačekajte…
+ Kao na uređaju
+ Tamna
+ Svetla
+ Došlo je do greške prilikom otvaranja podešavanja za lokaciju. Uključite lokaciju ručno
+ Za najbolje rezultate, odaberite režim visoke preciznosti.
+ Uključi lokaciju?
+ Morate da date pristup vašoj trenutnoj lokaciji da bi lokacija bila postavljena automatski.
+ Da li ste snimili ove dve slike na istom mestu? Da li želite da koristite geografsku širinu/dužinu slike sa desne strane?
+ Učitaj još
+ Mesta nisu pronađena, pokušajte da promenite kriterijume za pretragu.
+ Predložena unapređenja:
+ - Dodajte kategorije ovoj slici kako bi ste poboljšali upotrebljivost.
+ - Dodajte ovu sliku u povezani članak na Vikipediji koji nema slike.
+ Dodaj sliku na Vikipediji
+ Da li želite da dodate ovu sliku u članak na Vikipediji na %1$s jeziku?
+ Potvrdi
+ Uputstva
+ 1. Koristite sledeći vikitekst:
+ 2. Dodirivanjem \"Potvdrdi\", biće otvoren članak na Vikipediji
+ 3. Pronađite odgovarajući odeljak u članku za vašu sliku
+ 4. Tapnite na ikonicu Uredi (koji liči na olovku) za taj odeljak.
+ 5. Nalepite vikitekst na odgovarajuće mesto.
+ 6. Izmenite vikitekst za odgovarajuće pozicioniranje, ukoliko je potrebno. Više informacija možete pronaći <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Manual_of_Style/Images#How_to_place_an_image\">ovde</a>.
+ 7. Objavite članak
+ Kopirajte viki sintaksu u međuspremnik
+ pauziraj
+ nastavi
+ Pauzirano
+ Više
+ Obeleživači
+ Dostignuća
+ Poredak
+ Rang:
+ Broj:
+ Rang
+ Korisnik
+ Broj
+ Postavi kao avatar na tabeli
+ Postavljam za avatara. Sačekajte.
+ Avatar je postavljen.
+ Došlo je do greške pri postavljanju novog avatara. Pokušajte ponovo.
+ Postavi za avatara
+ Godišnje
+ Nedeljno
+ Svo vreme
+ Otpremi
+ U blizini
+ Upotrebe
+ Moj rank
+ © <a href=\"https://www.mapbox.com/about/maps/\">Mapbox</a> © <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> <a href=\"https://www.mapbox.com/map-feedback/\">Unapredite ovu mapu</a>
+ Režim za ograničenu vezu je omogućen!
+ Režim za ograničenu vezu je onemogućen. Otpremanja na čekanju će se sada nastaviti.
+ Režim za ograničenu vezu
+ Kvalitetne slike
+ Kvalitetne slike su dijagrami ili fotografije koje ispunjavaju određene standarde kvaliteta (koji su uglavnom tehničke prirode) i vredni su za Vikimedijine projekte
+ Nastavljam otpremanje…
+ Pauziram otpremanje…
+ Otkazujem otpremanje…
+ Otkaži otpremanje
+ Omogućili ste režim za ograničenu vezu. Sva otpremanja su pauzirana i biće nastavljena kada isključite ovaj režim.
+ Režim za ograničenu vezu je omogućen.
+ Napišite kratak natpis koji objašnjava šta slika prikazuje. U opisu, navedite šta ovu sliku čini interesantnom ili tipičnom ili retkom, i objasnite kontekst, bio on vidljiv ili ne. Koristite preciznu terminologiju što više možete.
+ Ostava čini vaše slike višekratnim i prilagođenim svima. Da li želite da se odreknete svih prava? Da li želite da vam se pripišu? Da li želite adaptacije za korišćenje iste licence?
+ Prikazuje
+ Licenca medija
+ Detalji medija
+ Prikaži stranicu kategorije
+ Prikaži stranicu stavke
+ Jezik aplikacije
+ Uklanja natpis i opis
+ Detaljnije
+ Na svim jezicima
+ Odaberi lokaciju
+ Izaberi lokaciju
+ Prikaži u mapi aplikacije
+ Izmeni lokaciju
+ Lokacija slike
+ Proverite da li je lokacija tačna
+ Naziv
+ Opis
+ Stavke
+ Prilagođen birač
+ Nema slika
+ Gotovo
+ Nazad
+ Dobrodošli u Prilagođen birač slika
+ Ovaj birač vam prikazuje koje su slike već otpremljene na Ostavu.
+ Za razliku od slika sa leve strane, slike na desnoj strani imaju logo Ostave, što označava da su već otpremljene. Dodirnite i držite za pregled slike.
+ Odlično
+ Ova slika je već otpremljena na Ostavu.
+ Ova slika će biti uvrštena u takmičenje Viki voli spomenike
+ Prikaži spomenike
+ Ovo je mesec za Viki voli spomenike!
+ Viki voli spomenike
+ Viki voli spomenike je međunarodno takmičenje fotografija spomenika, koje organizuje Vikimedija
+ Potrebna je dozvola
+ Doprinosi korisnika/ce: %s
+ Dostignuća korisnika/ce: %s
+ Prikaži korisničku stranicu
+ Izmeni kategorije
+ Napredne opcije
+ Primeni
+ Resetuj
+ Podaci o lokaciji pomažu viki urednicima da pronađu vašu sliku, čineći je korisnijom.\nVaša skorašnja otpremanja nemaju lokaciju.\nPredlažemo vam da uključite lokaciju u podešavanjima aplikacije vaše kamere.\nHvala vam za otpremanja!
+ Lokacija nije pronađena
+ Šta mislite o dodavanju mesta gde je napravljena ova slika?\nPodaci o lokaciju pomažu viki urednicima da pronađu vašu sliku, čineći je korisnijom.\nHvala vam!
+ Dodaj lokaciju
+ Uklonite iz ovog mejla bilo sve informacije koje ne želite da delite javno. Takođe, imajte na umu da će vaša imejl adresa sa koje objavljujete, i povezano ime i profilna slika, biti javno vidljivi.
+ Detalji
+ Dostignuća su dostupna samo u produkcionoj verziji, proverite dokumentaciju za programere.
+ Tabela lidera je dostupna samo u produkcionoj verziji, proverite dokumentaciju za programere.
+ Molimo vas da otpremate samo slike koje ste sami napravili. Otpremaoci slika koji krše autorska prava će biti blokirani. Ovo se takođe odnosi na beta verziju. Hvala vam što testirate aplikaciju!
+ Molimo vas da poništite sve informacije koje ne žečite da delite javno.
+ Nivo API-ja
+ Verzija Androida
+ Proizvođač uređaja
+ Model uređaja
+ Naziv uređaja
+ Tip mreže
+ Hvala vam za davanje povratne informacije
+ Greška prilikom slanja povratne informacije
+ Šta je vaša povratna informacija?
+ Vaša povratna informacija
+ Označi kao \"nije za otpremanje\"
+ Ukloni oznaku \"nije za otpremanje\"
+ Označavanje kao \"nije za otpremanje\"
+ Uklanjanje oznake \"nije za otpremanje\"
+ Prikaži već izvršene slike
+ Sakrivanje već izvršenih slika
+ Nije pronađeno više slika
+ Ova slika je već otpremljena
+ Nije moguće odabrati ovu sliku za otpremanje
+ Odabrana slika
+ Slika označena kao \"nije za otpremanje\"
+ Prijavi
+ Prijavi zloupotrebu
+ Prijavi ovog korisnika
+ Prijavi ovaj sadržaj
+ Zahtevaj blokadu ovog korisnika
+ Dobrodošli u režim biranja na celom ekranu
+ Koristite dva prsta da uvećate i smanjite.
+ Prevucite brzo i dugo da bi ste izvršili ove akcije:\n- Levo/Desno: Idite na prethodno/sledeće\n- Gore: Odaberi\n- Dole: Označi kao \"nije za otpremanje\"
+ Koordinate nisu tačne koordinate, ali osoba koja je otpremila ovu sliku misli da su dovoljno blizu.
+ Odbijene dozvole za skladište
+ Nije moguće podeliti ovu stavku
+
+ %d slika je odabrana
+ %d slika je odabrano
+
diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml
index 6535d37fc..c8bc856df 100644
--- a/app/src/main/res/values-bg/strings.xml
+++ b/app/src/main/res/values-bg/strings.xml
@@ -270,6 +270,7 @@
Използване на персонализирано авторско имеПри качването използвайте персонализирано авторско име вместо потребителското си имеПерсонализирано авторско име
+ НаблизоИзвестия (прочетени)СписъкСледваща
@@ -305,4 +306,5 @@
Възникна грешка при избирането на изображениятаМоля, изчакайте...напълно размазано
+ Наблизо
diff --git a/app/src/main/res/values-br/strings.xml b/app/src/main/res/values-br/strings.xml
index dce9693b7..17cf2ed44 100644
--- a/app/src/main/res/values-br/strings.xml
+++ b/app/src/main/res/values-br/strings.xml
@@ -15,8 +15,11 @@
Logo CommonsLec\'hienn web CommonsKas
+ Ouzhpennañ un deskrivadur allDegasadenn nevezIstitloù
+ Deskrivadur ar yezh
+ Alc\'hwezDeskrivadurSkeudennAn holl
@@ -54,6 +57,7 @@
NeuzHollekSonjoù
+ PrevezdedCommons•Arventennoù
@@ -79,6 +83,7 @@
Oc\'h echuiñ enporzhiadenn %1$sC\'hwitet en deus enporzhiañ %1$sPouezit evit diskwel
+ Pouezit evit diskwelMa enporzhiadennoù nevezLakaet el lostennadC\'hwitet
@@ -261,6 +266,7 @@
N\'eus bet kavet skeudenn ebet !Ur fazi zo c\'hoarvezet p\'eo bet karget ar skeudennoù.Pellgaset gant:%1$s
+ StanketStanket oc\'h bet ha ne c\'hallit ket mui kemmañ war CommonsSkeudenn an deizKlask
@@ -284,9 +290,11 @@
Respont reizhRespont fallRannañ an arloadoù
+ C\'hwelañKlask nevez ebetIstor klask diverketDilemel
+ Trec\'hioùProfilStadegoùTrugarekadennoù resevet
@@ -298,7 +306,9 @@
Skeudennoù implijetUr fazi zo bet !Implijit un anv aozer personelaet
+ DegasadennoùNepell
+ KemennoùKemennoù (lennet)RollLankad %1$d eus %2$d: %3$s
@@ -310,23 +320,46 @@
Ouzhpennañ/Dilemel sinedoùSinedoùSinedoù
+ Enporzhiet eo bet dre faziRummad ebet diuzetDeskrivadur ebet diuzetNullañ an enporzhiadurKenderc\'hel an enporzhiadur
- (Evit holl skeudennoù an hollad)
+ (Evit holl skeudennoù an hollad)Goulenn aotre
+ Arabat goulenn en-dro
+ Aotren
+ DisteurelGraet
+ Trugarekaet eo bet %1$s gant berzh
+ Trugarekaat %1$s
+ Skeudenn da-heul
+ Ya, perak pas
+ Skeudenn ebet implijet
+ N\'eus bet kaset skeudenn ebet
+ N\'ho peus kemenn ebet da lenn
+ N\'ho peus kemenn ebet bet lennet
+ Diskwel ar re bet lennet
+ Diskwel ar re a zo da lenn
+ Gortozit mar plij…
+ Eilet
+ Tremen e-bioù ar skeudenn-mañAozerGwirioù oberour
+ Lec\'hiadur
+ Doare kameraMeziantTitouroù ar skeudennRummad ebet kavetDeskrivadur ebet kavetEnporzhiadur nullet
+ Perak e rankfed dilemel %1$s?
+ Yezh deskrivadur dre ziouerBerzhC\'hwitetLogo
+ Berzh
+ BerzhKont krouet!Testenn eilet er golverUr fazi zo bet!
@@ -341,17 +374,25 @@
Kadarnaat7. Embann ar pennadehan
+ adstagañ gantiEhanetMuioc\'hSinedoùTrec\'hioùRenkadurRenk:
+ Kont:RenkImplijer
+ KontBloaziek
+ Bep sizhun
+ A-viskoazhEnporzhiañNepell
+ Implijet
+ Skeudennoù a-zoare
+ Nullañ an enporzhiadurLenn muioc\'hEn holl yezhoùDeskrivadur
diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml
index 36927f8d4..1212a73e6 100644
--- a/app/src/main/res/values-da/strings.xml
+++ b/app/src/main/res/values-da/strings.xml
@@ -6,6 +6,7 @@
* Jsmakaayb
* Luckas
* Overlaet
+* Peterleth
* Saederup92
-->
@@ -13,26 +14,40 @@
Commons Github-kildekodeCommons-logoCommons-hjemmeside
+ Afslut stedvælgerIndsend
+ Tilføj endnu en beskrivelse
+ Tilføj nyt bidrag
+ Tilføj bidrag fra kamera
+ Tilføj bidrag fra Fotos
+ Billedtekst
+ Sprogbeskrivelse
+ Billedtekst
+ Beskrivelse
+ Billede
+ AlleDagens billede%1$d fil overføres%1$d filer overføres
-
- \@string/contributions_subtitle_zero
- %1$d overførsel
- %1$d overførsler
+
+ (%1$d)
+ (%1$d)
-
- Starter %1$d overførsel
- Starter %1$d overførsler
+ Starter upload
+
+ Behandler %d upload
+ Behandler %d uploads
-
- %1$d overførsel
- %1$d overførsler
+
+ %d upload
+ %d uploads
+
+
+ Dette billede vil blive licenseret under %1$s
+ Disse billeder vil blive licenseret under %1$s
- Billedet vil blive licenseret under %1$sUdforskUdseendeGenerelt
@@ -50,6 +65,7 @@
Opret en kontoLogger påVent…
+ Vent venligst…Du er nu logget på!Det mislykkedes at logge på!Filen blev ikke fundet. Forsøg med en anden fil.
@@ -57,10 +73,10 @@
Overførsel begyndt!%1$s overført!Tryk for at få vist din upload
- Starter med at uploade %1$s
+ Uploader fil: %s%1$s overføresAfslutter uploadning af %1$s
- Overførsel af %1$s mislykkedes
+ Upload af %1$s mislykkedesKlik for at seMine seneste overførslerI kø
@@ -87,7 +103,7 @@
GemOpdaterListe
- Ingen overførelser endnu
+ (Ingen uploads endnu)Ingen kategorier matchende %1$s er fundetTilføj kategorier for at gøre billederne mere synlig på Wikimedia Commons. Tast for at tilføje kategorier.Kategorier
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index f32ad1cf3..68bc5b816 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -11,6 +11,7 @@
* KATRINE1992
* KATRINE1993
* ManosHacker
+* McDutchie
* MnLsVt
* NikosLikomitros
* Nikosgranturismogt
@@ -23,7 +24,7 @@
Σελίδα των Κοινών στο FacebookΚώδικας πηγής των Κοινών στο GitHub
- Κοινό Λογότυπο
+ Κοινό ΛογότυποΙστοσελίδα των ΚοινώνΥποβολήΛεζάντες
@@ -95,7 +96,7 @@
Απέτυχε η μεταφόρτωση του %1$sΗ μεταφόρτωση %1$s τέθηκε σε παύσηΠατήστε για να δείτε
- Οι Πρόσφατες Φορτώσεις Μου
+ Οι Πρόσφατες Φορτώσεις ΜουΣτην ουράΑπέτυχε%1$d%% ολοκληρώθηκε
@@ -113,7 +114,7 @@
Δεν είναι δυνατή η σύνδεση - αποτυχία του δικτύουΠάρα πολλές ανεπιτυχείς προσπάθειες. Παρακαλώ δοκιμάστε ξανά σε λίγα λεπτά.Συγνώμη, αυτός ο χρήστης έχει αποκλειστεί από τα Commons
- Πρέπει να δώσετε τον κωδικό πιστοποίησης με δύο παράγοντες
+ Πρέπει να δώσετε τον κωδικό πιστοποίησης με δύο παράγοντεςΗ είσοδος απέτυχεΑνέβασμαΟνομάστε το σύνολο
@@ -132,7 +133,7 @@
Προβεβλημμένες εικόνεςΚατηγορίαΣχετικά
- Λογισμικό ανοικτού κωδικού που κυκλοφορεί υπό την <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\">Άδεια Apache v2</a>. Το Wikimedia Commons και το λογότυπο είναι εμπορικά σήματα του Ιδρύματος Wikimedia και χρησιμοποιούνται με άδεια από το Ίδρυμα Wikimedia. Δεν συμμετέχουμε στην δημιουργία, ανάπτυξη ή συντήρηση του Ιδρύματος Wikimedia.
+ Λογισμικό ανοικτού κωδικού που κυκλοφορεί υπό την <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\">Άδεια Apache v2</a>. Το Wikimedia Commons και το λογότυπο είναι εμπορικά σήματα του Ιδρύματος Wikimedia και χρησιμοποιούνται με άδεια από το Ίδρυμα Wikimedia. Δεν συμμετέχουμε στην δημιουργία, ανάπτυξη ή συντήρηση του Ιδρύματος Wikimedia.Δημιουργήστε ένα νέο <a href=\"%1$s\">GitHub θέμα</a> για αναφορές σφαλμάτων και προτάσεις.Πολιτική ιδιωτικότητας<u>Συντελεστές</u>
@@ -144,7 +145,7 @@
Ακόμα δεν έχετε ανεβάσει φωτογραφίες.ΞαναπροσπαθήστεΑκύρωση
- Αποστέλλοντας αυτήν την εικόνα, δηλώνω πως αυτή η εργασία είναι δική μου, και δεν περιέχει υλικό άλλου συγγραφέα, και εκτός αυτού πρόσκειται στο , thathref=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">Κοινές πολιτικές της Wikipedia</a>.
+ Αποστέλλοντας αυτήν την εικόνα, δηλώνω πως αυτή η εργασία είναι δική μου, και δεν περιέχει υλικό άλλου συγγραφέα, και εκτός αυτού πρόσκειται στο , thathref=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">Κοινές πολιτικές της Wikipedia</a>.ΛήψηΠροεπιλεγμένη άδειαΧρήση προηγούμενου τίτλου/περιγραφής
@@ -202,41 +203,41 @@
ΠεριγραφήΣυζήτησηΣυγγραφέας
- Ημερομηνία φόρτωσης
- Άδεια
- Συντεταγμένες
- Δεν δόθηκε τίποτα
+ Ημερομηνία φόρτωσης
+ Άδεια
+ Συντεταγμένες
+ Δεν δόθηκε τίποταΓίνετε Δοκιμαστής BetaΣυμμετέχετε στο κανάλι beta μας στο Google Play και αποκτήστε πρώιμη πρόσβαση σε νέες λειτουργίες και διορθώσεις σφαλμάτων
- Κωδικός 2FA
- Θέλετε πράγματι να αποσυνδεθείτε;
- Η Εικόνα των Μέσων Απέτυχε (δεν μπορεί να φορτωθεί)
+ Κωδικός 2FA
+ Θέλετε πράγματι να αποσυνδεθείτε;
+ Η Εικόνα των Μέσων Απέτυχε (δεν μπορεί να φορτωθεί)Δεν βρέθηκαν υποκατηγορίεςΔεν βρέθηκαν γονικές κατηγορίες
- Mount Zao
- Llamas
- Γέφυρα Ουρανίου Τόξου
- Τουλίπα
- Καλωσόρισες Βικιπαίδεια
- Καλωσορίστε το Δικαίωμα Αντιγραφής
- Κτίρια Όπερας Sidney
- Ακυρώστε
- Ανοίξετε
- Κλείσετε
- Αρχική Σελίδα
- Φορτώστε
- Εδώ Κοντά
+ Mount Zao
+ Llamas
+ Γέφυρα Ουρανίου Τόξου
+ Τουλίπα
+ Καλωσόρισες Βικιπαίδεια
+ Καλωσορίστε το Δικαίωμα Αντιγραφής
+ Κτίρια Όπερας Sidney
+ Ακυρώστε
+ Ανοίξετε
+ Κλείσετε
+ Αρχική Σελίδα
+ Φορτώστε
+ Εδώ ΚοντάΣχετικά
- Ρυθμίσεις
- Σχόλια
- Αποσύνδεση
- Σεμινάριο
+ Ρυθμίσεις
+ Σχόλια
+ Αποσύνδεση
+ ΣεμινάριοΕνημερώσεις
- δεν βρέθηκε περιγραφή
- Σελίδα φακέλλου κοινής χρήσης
- Τεμάχιο Wikidata
+ δεν βρέθηκε περιγραφή
+ Σελίδα φακέλλου κοινής χρήσης
+ Τεμάχιο WikidataΛήμμα Βικιπαίδειας
- \nΠαρακαλώ περιγράψετε τα μέσα το δυνατό περισσότερο : Πού οδηγήθηκε αυτό; Τι δείχνει; Ποιο είναι το περιεχόμενο του; Παρακαλώ περιγράψετε τα αντικείμενα ή τα πρόσωπα. Αποκαλύψετε πληροφορίες που δεν μπορούν εύκολο να μαντέψει κανείς, για παράδειγμα την ώρα εντός της ημέρας αν πρόκειται για τοπίο. Αν τα μέσα δείξουν κάτι ασύνηθες, παρακαλώ εξηγήστε τι το καθιστά μη συνηθισμένα.
+ Παρακαλώ περιγράψετε τα μέσα το δυνατό περισσότερο : Πού οδηγήθηκε αυτό; Τι δείχνει; Ποιο είναι το περιεχόμενο του; Παρακαλώ περιγράψετε τα αντικείμενα ή τα πρόσωπα. Αποκαλύψετε πληροφορίες που δεν μπορούν εύκολο να μαντέψει κανείς, για παράδειγμα την ώρα εντός της ημέρας αν πρόκειται για τοπίο. Αν τα μέσα δείξουν κάτι ασύνηθες, παρακαλώ εξηγήστε τι το καθιστά μη συνηθισμένα.Πιθανά προβλήματα με αυτήν την εικόνα:Η εικόνα είναι πολύ σκοτεινή.Η εικόνα είναι θολή.
@@ -248,7 +249,7 @@
Αποθηκεύστε φωτογραφίες εντός εφαρμογήςΑποθηκεύστε φωτογραφίες που τραβήξατε με την κάμερα εντός εφαρμογής στο χώρο αποθήκευσης της συσκευής σαςΣυνδεθείτε στο λογαριασμό σας.
- Αποστείλατε τον φάκελλο σύνδεσης
+ Αποστείλατε τον φάκελλο σύνδεσηςΣτείλτε το αρχείο καταγραφής στους προγραμματιστές μέσω email για να βοηθήσετε τη διόρθωση σφαλμάτων της εφαρμογής. Σημείωση: οι καταγραφές ενδέχεται να περιλαμβάνουν αναγνωριστικές πληροφορίεςΔεν βρέθηκε φυλλομετρητής για το άνοιγμα της διευθύνσεως URLΣφάλμα! Η διεύθυνση URL δεν βρέθηκε
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index d6bdd8452..5c314e8db 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -4,6 +4,7 @@
* Ajeje Brazorf
* Alno
* BaRaN6161 TURK
+* BlueCamille
* Cigaryno
* Cyclicus
* DavidL
@@ -17,6 +18,7 @@
* Jean-Frédéric
* JenyxGym
* KATRINE1992
+* McDutchie
* Melissadeba95
* Metroitendo
* Mirzali
@@ -226,7 +228,7 @@
Demande d’autorisation d’accès au stockagePermission nécessaire : lecture sur stockage externe. Sans cela, l’application ne peut pas accéder à votre galerie.Permission obligatoire : écriture sur stockage externe. Sans cela, l’application ne peut pas accéder à votre appareil photo ou votre galerie.
- Demande d’autorisation d’accès au stockage
+ Demande d’autorisation d’accès au localisationEnregistrer l’emplacement pour les prises de vue dans l’applicationL’activer pour enregistrer l’emplacement avec les prises de vue dans l’application, si l’appareil photo ne le fait pasOK
@@ -375,6 +377,7 @@
Mauvaise réponseCette copie d’écran est-elle correcte pour être téléversée ?Partager l’application
+ PivoterErreur durant la recherche d’endroits proches.Aucun lieu à proximitéErreur de récupération des monuments à proximité.
diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml
index e6fbf4bf0..50f2256b6 100644
--- a/app/src/main/res/values-ia/strings.xml
+++ b/app/src/main/res/values-ia/strings.xml
@@ -32,24 +32,64 @@
(%1$d)(%1$d)
+ Initia incargamentos
+
+ Processa %d incargamento
+ Processa %d incargamentos
+
+
+ %d incargamento
+ %d incargamentos
+
+
+ Iste imagine essera licentiate sub %1$s
+ Iste imagines essera licentiate sub %1$s
+
+
+ %1$d incargamento
+ %1$d incargamentos
+
+
+ Recipe contento condividite. Le processamento del imagine pote prender tempore dependente del grandor del imagine e de tu apparato
+ Recipe contento condividite. Le processamento del imagines pote prender tempore dependente del grandor del imagines e de tu apparato
+
+ Explorar
+ Apparentia
+ General
+ Commentario
+ ConfidentialitateCommonsConfiguration
+ Incargar a Commons
+ Incargamento in cursoNomine de usatorContrasigno
+ Aperir session a tu conto de Commons BetaAperir session
+ Contrasigno oblidate?
+ Inscriber seApertura de sessionUn momento…
+ Actualisa legendas e descriptiones
+ Un momento…Session aperite!Session fallite!
+ File non trovate. Proba con un altere file.
+ Limite maxime de tentativas attingite! Per favor cancella le incargamento e essaya lo de novo.
+ Disactivar le optimisation del batteria?
+ Incargar plus de 3 imagines functiona plus solidemente quando le optimisation del batteria es disactivate. Per favor disactiva le optimisation del batteria pro le app Commons in le Parametros pro un experientia de incargamento plus fluide.\n\nPassos possibile pro disactivar le optimisation del batteria:\n\nPasso 1: Tocca le button ‘Parametros’ infra.\n\nPasso 2: Cambia de ‘Non optimisate’ a ‘Tote le apps’.\n\nPasso 3: Cerca “Commons” o “fr.free.nrw.commons”.\n\nPasso 4: Tocca lo e selige ‘Non optimizar’.\n\nPasso 5: Preme ‘Facite’.Authentication fallite, per favor reaperi sessionIncargamento comenciate!
+ Incargamento in cauda (modo de connexion limitate activate)%1$s incargate!Tocca pro vider tu incargamentoIncargante le file: %1$s%1$s es incargate oraTermina incargar %1$sError incargante %1$s
+ Incargamento de %1$s in pausaTocca pro vider
+ Tocca pro viderMi incargamentos recenteIn caudaFallite
@@ -57,28 +97,395 @@
IncargaDel galeriaPrender photo
+ A proximitateMi incargamentosCondivider
+ Visitar le pagina del file
+ Legenda (obligatori)
+ Per favor, forni un legenda pro iste file
+ Description
+ Legenda
+ Impossibile aperir session; fallimento de rete
+ 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.
+ Apertura de session fallite
+ Incargar
+ Nomine de iste insimul
+ Modificationes
+ Incargar
+ Cercar categorias
+ Cerca elementos que tu file representa (montania, Taj Mahal, etc.)
+ Salveguardar
+ Refrescar
+ Listar
+ (Nihil incargate ancora)
+ Necun categoria correspondente a %1$s trovate
+ Necun elemento Wikidata correspondente a %1$s trovate
+ %1$s non ha alcun classe filio
+ %1$s non ha alcun classe genitor
+ Adde categorias pro render tu imagines plus discoperibile sur Wikimedia Commons.\nComencia a scriber pro adder categorias.
+ Categorias
+ Parametros
+ Inscriber se
+ Imagines eminente
+ Selector personalisate
+ Categoria
+ Revision per pares
+ A proposito
+ Le app de Wikimedia Commons es un app open-source create e mantenite per subventionatos e voluntarios del communitate de Wikimedia. Le Fundation Wikimedia non es involvite in le creation, disveloppamento o mantenimento del app.
+ Crea un nove <a href=\"%1$s\">reporto sur GitHub</a> pro signalar anomalias e dar suggestiones.
+ Politica de confidentialitate
+ Creditos
+ A proposito
+ Inviar commentario (per e-mail)
+ Necun cliente de e-mail installate
+ Categorias recentemente usate
+ Attende prime synchronisation…
+ Tu non ha ancora incargate alcun photo.
+ Reprobar
+ Cancellar
+ Submittente iste imagine, io declara que iste es mi obra proprie, que illo non contine material protegite per derectos de autor ni ‘selfies’, e adhere al <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">politicas de Wikimedia Commons</a>.
+ Discargar
+ Licentia predefinite
+ Usar le titulo e description precedente
+ Thema
+ Attribution-CompartiSimile 4.0
+ Attribution 4.0
+ Attribution-CompartiSimile 3.0
+ Attribution 3.0
+ Wikimedia Commons alberga le major parte del imagines usate in Wikipedia.
+ Tu imagines adjuta a educar gente de tote le mundo!
+ Per favor incarga solmente imagines que tu mesme ha prendite o create:
+ Objectos natural (flores, animales, montanias)
+ Objectos utile (bicyclettas, stationes ferroviari)
+ Personas famose (tu burgomaestro, athletas olympic que tu ha incontrate)
+ Per favor NON incarga:
+ “Selfies” o photos de tu amicos
+ Imagines que tu ha discargate de internet
+ Capturas de schermo de applicationes proprietari
+ Exemplo de incargamento:
+ Titulo: Opera de Sydney
+ Description: Le opera de Sydney vidite de trans le baia
+ Categorias: Opera de Sydney desde le west, Vistas a distantia del Opera de Sydney
+ Contribue tu imagines. Adjuta le articulos de Wikipedia a prender vita!
+ Le imagines sur Wikipedia proveni de Wikimedia Commons.
+ Tu imagines adjuta a educar gente de tote le mundo.
+ Evita materiales protegite per derectos de autor que tu ha trovate sur internet assi como imagines de posters, affiches, coperturas de libros, etc.
+ Tu pensa que tu comprende?
+ Si!
+ Plus information
+ Categorias
+ Cargamento in curso…
+ Nihil seligite
+ Necun legenda
+ Necun description
+ Necun discussion
+ Licentia incognite
+ Refrescar
+ Requestar permission de immagazinage
+ Permission necessari: lectura de immagazinage externe. Le application non pote acceder a tu galeria sin isto.Permission necessari: Scriber sur immagazinage externe. Le app non pote acceder a tu camera/galeria sin isto.
+ Requestar permission de position
+ Memorisar le position geographic pro photos prendite in le application
+ Activa isto pro memorisar le position geographic con photos prendite in le application in caso que le camera del apparato non lo registra
+ OK
+ Advertimento
+ Nomine de file duplicate trovate
+ Incargar
+ Si
+ No
+ Legenda
+ Titulo
+ Objectos representate
+ Description
+ Discussion
+ Autor
+ Data de incargamento
+ Licentia
+ Coordinatas
+ Non fornite
+ 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
+ Vole tu vermente clauder session?
+ Imagine multimedial fallite
+ Necun subcategoria trovate
+ Necun categoria genitor trovate
+ Monte Zao
+ Lamas
+ Ponte del Arco Iris
+ Tulipan
+ Benvenita: Wikipedia
+ Benvenita: derectos de autor
+ Opera de Sydney
+ Cancellar
+ Aperir
+ Clauder
+ Initio
+ Incargar
+ A proximitate
+ A proposito
+ Parametros
+ Commentario
+ Clauder session
+ Tutorial
+ Notificationes
+ Revider
+ necun description trovate
+ Pagina del file sur Commons
+ Elemento Wikidata
+ Articulo de Wikipedia
+ Per favor, describe le file multimedial tanto como possibile: Ubi ha le imagine/video essite prendite? Que monstra illo? Qual es le contexto? Per favor, describe le objectos o personas. Revela information que non pote esser facilemente conjecturate, per exemplo, le hora del die si se tracta de un paisage. Si le file monstra qualcosa insolite, per favor explica lo que lo rende insolite.
+ Per favor, scribe un curte description del imagine. Le prime legenda essera usate como le Titulo pro le imagine. Limite: 255 characteres.
+ Problemas potential con iste imagine:
+ Le imagine es troppo obscur.
+ Le imagine es indistincte.
+ Le imagine es ja sur Commons.
+ Iste imagine ha essite prendite in un altere loco.
+ Per favor, solmente incarga imagines que tu ha prendite tu mesme. Non incarga imagines que tu ha trovate in le contos Facebook de altere personas.
+ Vole tu totevia incargar iste imagine?Error de connexionLe processo de incargamento require un accesso a internet active. Per favor verifica tu connexion al rete.
+ Problemas trovate in le imagine
+ Per favor, solmente incarga imagines que tu ha prendite tu mesme. Non incarga imagines que tu ha discargate del Internet.Salveguardar photos prendite in appSalveguardar le photos prendite con le camera del application sur le immagazinage de tu apparato
+ Aperir session in tu conto
+ Inviar file de registro
+ Invia le file de registro al disveloppatores via email pro adjutar a resolver problemas con le application. Nota: le registros poterea continer informationes personal.
+ Necun navigator web trovate pro aperir le URL
+ Error: URL non trovate
+ Nominar pro deletion
+ Iste pagina ha essite nominate pro deletion.
+ Vide le pagina web pro detalios
+ Saltar
+ Aperir session
+ Vole tu vermente saltar le apertura de session?
+ Tu debera alora aperir session pro incargar imagines plus tarde.
+ Per favor aperi session pro usar iste function
+ Copiar le wikitexto al area de transferentia
+ Le wikitexto ha essite copiate al area de transferentia\"A proximitate\" poterea non functionar, perque le position geographic non es disponibile.
+ Le accesso al position ha essite refusate. Per favor indica tu position manualmente pro usar iste function.
+ Permission necessari pro monstrar un lista de locos a proximitateItinerarioWikidataWikipediaCommons
+ Evalutar nos
+ FAQ
+ Guida de usator
+ Saltar le tutorial
+ Internet indisponibile
+ Error durante le obtention de notificationes
+ Error durante le obtention del imagine pro revision. Per favor refresca pro tentar lo de novo.
+ Necun notification trovate
+ Traducer
+ Linguas
+ Selige le lingua pro le qual tu vole submitter traductiones
+ Proceder
+ Cancellar
+ Reprobar
+ Istes es le locos in tu vicinitate que require imagines pro illustrar lor articulos in Wikipedia.\n\nCliccar sur ‘CERCAR ISTE AREA’ bloca le carta e lancea un recerca a proximitate de ille loco.
+ Iste loco require un photo.
+ Iste loco ha ja un photo.
+ Iste loco non existe plus.
+ Necun imagine trovate!
+ Un error ha occurrite durante le cargamento de imagines.
+ Incargate per: %1$sBlocate
+ Tu ha essite blocate e non pote modificar Commons
+ Imagine del die
+ Cercar
+ Cercar in Commons
+ Cercar
+ Recercas recente:
+ Recercas recente
+ Consultas recente de lingua
+ Un error ha occurrite durante le cargamento de categorias.
+ Un error ha occurrite durante le cargamento de objectos representate.MultimediaCategorias
+ ObjectosIn evidentiaIncargate via mobile
+ Carta
+ Imagine addite a %1$s sur Wikidata!
+ Le actualisation del entitate Wikidata correspondente ha fallite!
+ Fixar como fundo de schermo
+ Fundo de schermo fixate con successo!
+ Quiz
+ Es iste imagine bon pro incargar?
+ Question
+ Resultato
+ Si tu continua a incargar imagines que require deletion, tu conto probabilemente essera bannite. Es tu certe que tu vole terminar le questionario?
+ Plus de %1$s del imagines que tu ha incargate ha essite delite. Si tu continua a incargar imagines que require deletion, tu conto probabilemente essera bannite.\n\nVolerea tu vider le tutorial de novo e postea responder a un questionario pro apprender que typo de imagines tu debe o non debe incargar?
+ Selfies non ha multe valor encyclopedic. Per favor, non incarga un imagine de te mesme a minus que tu ha ja un articulo in Wikipedia sur te.
+ Imagines de monumentos e scenarios exterior es acceptabile pro incargamento in le majoritate de paises. Per favor nota que installationes artistic temporari al exterior es frequentemente sub derecto de copyright e non es acceptabile pro incargamento.
+ Capturas de schermo de sitos web es considerate como obras derivative e sub le jurisdiction del copyright del sito web mesme. Illos pote esser usate post permission del autor. Sin iste permission, omne arte que tu crea basate in su obra es juridicamente considerate como un copia non autorisate que appertine al autor original.
+ Un del objectivos de Commons es colliger imagines de qualitate. Pro isto, imagines indistincte non debera esser incargate. Sempre essaya a prender belle photos con un bon illumination.
+ Imagines que monstra technologia o cultura es multo benvenite sur Commons.
+ Tu ha %1$s del responsas correcte. Felicitationes!
+ Selige un del duo optiones pro responder al question
+ Session expirate, per favor reaperi session
+ Condivide tu quiz con tu amicos!
+ Continuar
+ Responsa correcte
+ Responsa incorrecte
+ Es iste captura de schermo bon pro incargar?
+ Condivider app
+ Rotar
+ Error durante le obtention de locos a proximitate.
+ Necun loco a proximitate
+ Error durante le obtention de monumentos a proximitate.
+ Necun recerca recente
+ Es tu secur de voler rader tu historia de recerca?
+ Es tu secur de voler cancellar iste incargamento?
+ Vole tu deler iste recerca?
+ Historia de recerca delite
+ Nominar pro deletionDeler
+ Realisationes
+ ProfiloStatisticas
+ Regratiamentos recipite
+ Imagines eminente
+ Imagines via “Locos a proximitate”Nivello
+ Imagines incargate
+ Imagines non revertite
+ Imagines usate
+ Condivide tu realisationes con tu amicos!
+ Tu nivello augmenta a mesura que tu satisface iste requisitos. Le elementos in le section “statisticas” non conta pro tu nivello.
+ minimo requisite:
+ Le numero de imagines que tu ha incargate a Commons, per medio de qualcunque software de incargamento
+ Le percentage de imagines que tu ha incargate a Commons que non ha essite delite
+ Le numero de imagines que tu ha incargate a Commons que ha essite usate in articulos de Wikimedia
+ Un error ha occurrite!
+ Notification de Commons
+ Usar un nomine de autor personalisate
+ Usar un nomine de autor personalisate in loco de tu nomine de usator durante le incargamento de photos
+ Nomine de autor personalisate
+ Contributiones
+ A proximitate
+ Notificationes
+ Notificationes (legite)
+ Monstrar notification a proximitate
+ Monstrar le notification del application pro le loco le plus proxime que ha besonio de photos
+ Lista
+ Permission de immagazinage
+ Nos ha besonio de tu permission pro acceder al immagazinage externe de tu apparato a fin de incargar imagines.
+ Tu non videra plus le loco le plus proxime que ha besonio de imagines. Totevia, tu pote reactivar iste notification in le Parametros si tu vole.
+ Passo %1$d de %2$d: %3$s
+ Sequente
+ Precedente
+ Un file con le nomine %1$s ja existe. Es tu secur de voler continuar?\n\nNota: Un suffixo appropriate essera automaticamente addite al nomine del file.
+ Necun application cartographic compatibile pote esser trovate sur tu apparato. Per favor installa un application cartographic pro usar iste function.
+ Imagines
+ Locos
+ Adder al/Remover del marcapaginas
+ Marcapaginas
+ Tu non ha addite alcun marcapagina
+ Marcapaginas
+ Le collection de registros ha comenciate. Per favor REINITIA le application, exeque le action que tu vole registrar, e postea tocca ‘Inviar file de registro’ de novo.
+ Io lo ha incargate per error
+ Io non sapeva que illo essera publicamente visibile
+ Io ha comprendite que es mal pro mi vita private
+ Io ha cambiate de idea, io non vole plus que illo sia publicamente visibile
+ Iste imagine non es interessante pro un encyclopedia
+ Incargate per me mesme le %1$s, usate in %2$d articulo(s).Benvenite a Commons!\n\nPro incargar tu prime file multimedial, tocca le button Adder.
+ Necun categoria seligite
+ Imagines sin categorias es rarmente usabile. Es tu secur de voler continuar sin seliger categorias?
+ Necun representation seligite
+ Imagines con representationes es plus facilemente trovate e lor uso es plus probabile. Es tu secur de voler continuar sin seliger representationes?
+ Cancellar incargamento
+ Le uso del button Retro cancellara iste incargamento e tu perdera tu progresso.
+ Continuar incargamento
+ (Pro tote le imagines in le insimul)
+ Cercar in iste area
+ Requesta de permission
+ Vole tu que nos usa tu position actual pro monstrar le loco le plus vicin que ha besonio de imagines?
+ Non es possibile monstrar le loco le plus proxime que ha besonio de imagines sin permission de acceder al position.
+ Nunquam demandar isto de novo
+ Demandar permission de position
+ Demandar le permission de acceder al position quando es necessari pro le function de notification a proximitate.
+ Un problema ha occurrite. Non esseva possibile obtener tu realisationes.
+ Tu ha facite tante contributiones que nostre systema de calculo de realisationes non pote contar los. Iste es le realisation ultime!
+ Termina le:
+ Monstrar campanias
+ Vider le campanias in curso
+ Permitter al application obtener le position geographic in caso que le camera non lo registra. Alcun cameras de apparatos non registra le position. In tal casos, permitter al application obtener e attachar le position rende tu contribution plus utile. Tu pote cambiar isto a tote momento in le Parametros.
+ Permitter
+ Clauder
+ Per favor, activa le accesso al position in le Parametros e essaya lo de novo.\n\nNota: Le file incargate pote non haber le position si le application non pote recuperar le position del apparato in curte tempore.
+ Le camera in le application necessita permission al position pro attachar lo a tu imagines in caso que le position non es disponibile in EXIF. Per favor, permitte al application acceder a tu position e essaya lo de novo.\n\nNota: Le file incargate pote non haber le position si le application non pote recuperar le position del apparato in curte tempore.
+ Le application non registrara le position con photos prendite desde le application a causa del manco de permission de position
+ Le application non registrara le position con photos prendite desde le application perque GPS ha essite disactivate
+ Usar selector de photos basate sur documento
+ Le nove selector de photos de Android risca perder le information de position. Activa lo su tu sembla usar lo.
+ Si tu disactiva isto, le nove selector de photos de Android pote esser activate. Isto involve le periculo que information de position pote esser perdite.\n\nTocca ‘Leger plus’ pro plus information.
+ Tu non videra plus le campanias. Totevia, tu pote reactivar iste notification in le Parametros si tu vole.
+ Iste function require un connexion al rete. Per favor verifica tu parametros de connexion.
+ Un error ha occurrite durante le processamento del imagine. Per favor essaya lo de novo!
+ Obtention de un token de modification
+ Addition de un patrono pro le controlo de categoria
+ Requesta de un controlo de categoria pro %1$s
+ Requesta de un controlo de categoria
+ Controlo de categoria requestate
+ Le requesta de controlo de categoria non ha functionate
+ Controlo de categoria requestate pro %1$s
+ Requesta de un controlo de categoria pro %1$s
+ Facite
+ Invio de regratiamento: Successo
+ Regratiamento correctemente inviate a %1$s
+ Le invio de un regratiamento a %1$s ha fallite
+ Invio de regratiamento: Fallimento
+ Invio de regratiamento pro %1$s
+ Seque isto le regulas del derecto de autor?
+ Es isto categorisate correctemente?
+ Es isto compatibile con le objectivos del projecto?
+ Vole tu regratiar le contributor?
+ Clicca sur NO pro nominar iste pagina pro deletion si non es utile del toto.
+ Logos, capturas de schermo, affiches de films es frequentemente violationes del derecto de autor.\nClicca sur NO pro nominar iste imagine pro deletion.
+ %1$s essera incoragiate per tu appreciation
+ Oh, isto non es mesmo categorisate!
+ Iste imagine es in %1$s categorias.
+ Isto non es compatibile con le objectivos del projecto perque es
+ Isto es un violation del derecto de autor, perque es
+ Imagine sequente
+ Si, proque non
+ Cliccar sur iste button te dara un altere imagine recentemente incargate de Wikimedia Commons
+ Tu pote revider imagines pro meliorar le qualitate de Wikimedia Commons.\nLe tres parametros de revision es:\n\n- Es iste imagine compatibile con le objectivos del projecto?\nQuando tu tocca No (non compatibile), tu adde un patrono de nomination pro deletion a iste imagine.\n\n- Seque iste imagine le regulas del derecto de autor?\nQuando tu tocca No (non los seque), tu adde un patrono de nomination pro deletion a iste imagine.\n\n- Es iste imagine categorisate correctemente?\nQuando tu tocca No (non categorisate correctemente), tu adde un patrono de requesta de categorisation a iste imagine.\n\nSi toto es bon, necun patrono es addite al imagine, e tu ha le opportunitate de regratiar le contributor.
+ Necun imagine usate
+ Necun imagine revertite
+ Necun imagine incargate
+ Tu non ha notificationes non legite
+ Tu non ha notificationes legite
+ Condivider registros usante
+ Vider legites
+ Vider non legites
+ Un error ha occurrite durante le selection de imagines
+ Un momento…
+ Le imagines eminente es creationes de photographos e illustratores multo habile que le communitate de Wikimedia Commons ha seligite como alcunes del melior qualitate sur le sito.
+ Le imagines incargate per medio de ‘Locos a proximitate’ es le imagines que es incargate per le discoperta de locos sur le carta.
+ Iste function permitte a redactores inviar un notification de regratiamento a usatores que face modificationes utile, usante un micre ligamine ‘regratiar’ sur le pagina de historia o de differentias.
+ Copiar a medios de communication subsequente
+ Copiate
+ Exemplos de bon imagines a incargar a Commons
+ Exemplos de imagines que non debe esser incargateSaltar iste imagine
+ Discargamento fallite! Non es possibile discargar le file sin permission de immagazinage externe.
+ Gerer etiquettas EXIF
+ Selige qual etiquettas EXIF conservar in files incargate
+ Autor
+ Derectos de autor
+ Loco
+ Modello de camera
+ Modello de lente
+ Numeros de serie
+ Software%1$s es incargate per: %2$sViolation del libertate de panoramaUn error ha occurrite durante le apertura de session. Es necessari reinitialisar tu contrasigno.
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index e5c2564a0..2632220f7 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -352,6 +352,7 @@
Risposta sbagliataQuesto screenshot è OK per essere caricato?Condividi applicazione
+ RuotaErrore durante il recupero dei luoghi nelle vicinanze.Nessun luogo trovato nelle vicinanzeErrore durante la ricerca di monumenti nei pressi.
@@ -685,4 +686,5 @@
Benvenuto nella modalità di selezione a schermo interoUsa 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.
+ Impossibile condividere questo elemento
diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml
index fb732eeb2..d85384835 100644
--- a/app/src/main/res/values-iw/strings.xml
+++ b/app/src/main/res/values-iw/strings.xml
@@ -373,6 +373,7 @@
תשובה שגויההאם בסדר להעלות את צילום המסך הזה?שיתוף היישום
+ סיבובשגיאה באחזור המקומות בסביבתך.אין מקומות בסביבהשגיאה באחזור אתרים בסביבתך.
@@ -763,6 +764,8 @@
אפשר לעשות החלקה מהירה וארוכה כדי לבצע את הפעולות הבאות: \n- שמאלה/ימינה: לעבור אל הקודם/הבא \n- למעלה: לבחור\n- למטה: לסמן בתור \"לא להעלאה\".כדי להגדיר את התמונה שמייצגת אותך בלוח התוצאות, יש לגעת ב\"הגדרה כתמונה ייצוגית\" בתפריט שלוש־הנקודות של תמונה כלשהי.נקודות הציון אינן מדויקות, אבל האדם שהעלה את התמונה הזאת חושב שהן קרובות מספיק.
+ הרשאת האחסון נדחתה
+ לא ניתן לשתף את הפריט הזהנבחרה תמונה אחתנבחרו שתי תמונות
diff --git a/app/src/main/res/values-ky/strings.xml b/app/src/main/res/values-ky/strings.xml
index 9266c0ebc..e1498ea98 100644
--- a/app/src/main/res/values-ky/strings.xml
+++ b/app/src/main/res/values-ky/strings.xml
@@ -33,7 +33,7 @@
КупуялыкВикиказынаЫрастоолор
- Колдонуучунун ысымы
+ Колдонуучунун атыСырсөзКирүүКатталуу
diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml
index a6c242099..f79393362 100644
--- a/app/src/main/res/values-mk/strings.xml
+++ b/app/src/main/res/values-mk/strings.xml
@@ -343,6 +343,7 @@
Погрешен одговорДали оваа екранска снимка е во ред за подигање?Сподели прилог
+ СвртиГрешка при добивањето на околните места.Не најдов околни местаГрешка при добивањето на околните споменици.
@@ -729,6 +730,8 @@
Поминувајте бргу и долго со простот за да ги извршите следниве дејства: \n- Лево/десно: Претходна/следна\n- Нагоре: Избирање\n- Надолу: Означување дека не е за подигање.За да го поставите вашиот аватар во табелата на предводници, допрете на „Задај како аватар“ во менито со три точки на било која слика.Наведените координати не се прецизни, но лицето што ја подигнало сликава смета дека се доволно блиску.
+ Дозволата за складирање е одбиена
+ Не може да се сподели оваа ставкаИзбрана е %d сликаИзбрани се %d слики
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 478aa8d76..15a5f35c4 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -289,7 +289,7 @@
OverslaanAanmeldenWeet je zeker dat je het aanmelden wilt overslaan?
- U moet inloggen om later afbeeldingen te kunnen uploaden.
+ U moet zich dan later wel aanmelden om afbeeldingen te kunnen uploaden.Meld je aan om deze functie te gebruikenKopieer de wikitekst naar het klembordDe wikitekst is gekopieerd naar het klembord
@@ -343,7 +343,7 @@
Stel in als achtergrondAchtergrond succesvol ingesteld!Vragenspel
- Kan je afbeelding worden geplaatst?
+ Is deze afbeelding geschikt om te uploaden?VraagUitslagAls u doorgaat met het uploaden van afbeeldingen die moeten worden verwijderd, wordt uw account waarschijnlijk geblokkeerd. Weet u zeker dat u de quiz wilt beëindigen?
@@ -362,6 +362,7 @@
Fout antwoordIs deze screenshot OK om te uploaden?Toepassing delen
+ DraaienFout bij het ophalen van plaatsen in de buurt.Geen plaatsen in de buurtFout bij het ophalen van monumenten.
@@ -406,7 +407,7 @@
Stap %1$d van %2$d: %3$sVolgendeVorige
- Er bestaat een bestand met de bestandsnaam %1$s . Weet u zeker dat u door wilt gaan?\n\nOpmerking: Er wordt automatisch een geschikt achtervoegsel aan de bestandsnaam toegevoegd.
+ Er is al een bestand met de bestandsnaam %1$s. Weet u zeker dat u door wilt gaan?\n\nOpmerking: Er wordt automatisch een geschikt achtervoegsel aan de bestandsnaam toegevoegd.Er is geen compatibele kaarttoepassing gevonden op uw apparaat. Installeer een kaarttoepassing om deze functie te gebruiken.AfbeeldingenLocaties
@@ -472,15 +473,15 @@
Verstuur een bedankje voor %1$sVoldoet dit aan de regels van het auteursrecht?Is dit correct gecategoriseerd?
- Valt dit binnen de scope?
+ Past dit bij de doelstelling van het project?Wilt u de bijdrager bedanken?Klik op NEE om deze afbeelding te nomineren voor verwijdering als deze helemaal niet nuttig is.Logo\'s, screenshots, filmposters zijn vaak auteursrechtschendingen.\nKlik NEE om deze afbeelding te nomineren voor verwijdering%1$s zal worden aangemoedigd door uw waarderingOh, dit is niet eens gecategoriseerd!Deze afbeelding valt onder %1$s categorieën.
- Het valt buiten de scope want het is
- Het is schending van het auteursrecht omdat het
+ Het past niet bij de doelstelling van het project, want het is
+ Het is een schending van het auteursrecht, want het isVolgende afbeeldingJa, waarom nietAls u op deze knop klikt, krijgt u nog een recent geüploade afbeelding van Wikimedia Commons
@@ -748,4 +749,10 @@
Veeg snel en lang om deze handelingen te verrichten: \n- Links/Rechts: Naar vorige/volgende gaan\n- Omhoog: Selecteren\n- Omlaag: Als niet voor uploaden markerenOm uw leaderboard-avatar te kiezen tikt u op \"Als avatar instellen\" in het driestippenmenu van een afbeelding.De coördinaten zijn niet precies, maar degene die deze foto heeft geüpload vindt dat ze redelijk in de buurt komen.
+ Opslagtoestemming geweigerd
+ Kan dit item niet delen
+
+ %d afbeelding geselecteerd
+ %d afbeeldingen geselecteerd
+
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 2a442e941..7763d2c25 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -15,6 +15,7 @@
* Luckas
* Mariagarbin
* Maxan
+* McDutchie
* Mello25
* Re demz
* Stephanyb76
@@ -363,6 +364,7 @@
Resposta incorretaEsta captura de tela pode ser carregada?Compartilhar o aplicativo
+ GirarErro ao buscar lugares próximos.Não há lugares próximosErro ao buscar monumentos próximos.
@@ -407,7 +409,7 @@
Passo %1$d de %2$d: %3$sPróximoAnterior
- Um arquivo com o nome do arquivo% 1 $ s existe. Tem certeza de que deseja continuar?\n\nNota: Um sufixo adequado será adicionado ao nome do arquivo automaticamente.
+ Um arquivo com o nome do arquivo %1$s existe. Tem certeza de que deseja continuar?\n\nNota: Um sufixo adequado será adicionado ao nome do arquivo automaticamente.Nenhum aplicativo de mapa compatível pode ser encontrado no seu dispositivo. Por favor, instale um aplicativo de mapa para usar este recurso.FotografiasLocais
@@ -730,6 +732,8 @@
A sua opiniãoMarcar como não sendo para carregamentoRemover marcação de como não sendo para carregamento
+ Marcado para não ser carregado
+ Remover marcação para não ser carregadoMostrar imagens já processadasOcultando as imagens já processadasNão foram encontradas mais imagens
@@ -747,4 +751,10 @@
Passe o dedo com um gesto rápido e longo para executar estas operações: \n- Esquerda/direita: Ir para o anterior/seguinte\n- Cima: Selecionar\n- Baixo: Marcar como não sendo para carregamento.Para definir seu avatar da tabela de classificação, clique em \"Definir como avatar\" no menu de três pontos da sua imagem.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
+
+ %d imagem selecinada
+ %d imagens selecionadas
+
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index c6a55f9e9..115567cca 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -12,6 +12,7 @@
* Luckas
* Malafaya
* Mansil alfalb
+* McDutchie
* Mirzali
* Sarilho1
* Unamane
@@ -393,7 +394,7 @@
Passo %1$d de %2$d: %3$sSeguinteAnterior
- Já existe um ficheiro com o nome %1$s. Tem a certeza de que deseja continuar?\n\n\nNota: será adicionado automaticamente ao nome do ficheiro um sufixo apropriado.
+ Já existe um ficheiro com o nome %1$s. Tem a certeza de que deseja continuar?\n\nNota: será adicionado automaticamente ao nome do ficheiro um sufixo apropriado.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.FotografiasLocais
diff --git a/app/src/main/res/values-qq/strings.xml b/app/src/main/res/values-qq/strings.xml
index 91cb62317..0a804042e 100644
--- a/app/src/main/res/values-qq/strings.xml
+++ b/app/src/main/res/values-qq/strings.xml
@@ -108,7 +108,7 @@
Message explaining what kind of images not to submit, without a received permission from the copyright holder.Message asking user if they understand what kinds of images to upload.Button text for confirming the user understands what kinds of images to upload.\n{{Identical|Yes}}
- NEEDS DOCUMENTATION
+ Label for categories list in media detail panel.\n{{Identical|Category}}Placeholder for categories list in media detail panel, while loading from network.\n{{Identical|Loading}}Placeholder for categories list in media detail panel, if no categories found.\n{{Identical|None selected}}
@@ -130,8 +130,8 @@
An animal. See [[:d:Q42569|Wikidata item Q42569]] for a list of possible translations.A bridge in Japan. See [[:d:Q1046736|Wikidata item Q1046736]] for a list of possible translations.A flower. See [[:d:Q93201|Wikidata item Q93201]] for a list of possible translations.
- Description of [https://github.com/commons-app/apps-android-commons/blob/master/app/src/main/res/drawable-hdpi/welcome_wikipedia.png the image] displayed on the welcome screen to illustrate {{msg-wm|Commons-android-strings-welcome wikipedia text}} and {{msg-wm|Commons-android-strings-welcome wikipedia subtext}}.
- Description of [https://github.com/commons-app/apps-android-commons/blob/master/app/src/main/res/drawable-hdpi/welcome_copyright.png the image] displayed on the welcome screen to illustrate {{msg-wm|Commons-android-strings-welcome copyright text}} and {{msg-wm|Commons-android-strings-welcome copyright subtext}}.
+ Description of [https://github.com/commons-app/apps-android-commons/blob/main/app/src/main/res/drawable-hdpi/welcome_wikipedia.webp the image] displayed on the welcome screen to illustrate {{msg-wm|Commons-android-strings-welcome wikipedia text}} and {{msg-wm|Commons-android-strings-welcome wikipedia subtext}}.
+ Description of [https://github.com/commons-app/apps-android-commons/blob/main/app/src/main/res/drawable-hdpi/welcome_copyright.webp the image] displayed on the welcome screen to illustrate {{msg-wm|Commons-android-strings-welcome copyright text}} and {{msg-wm|Commons-android-strings-welcome copyright subtext}}.A building in the city of Sydney. See [[:d:Q45178|Wikidata item Q45178]] for a list of possible translations.{{Identical|Cancel}}{{Identical|Open}}
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 02addb5e0..85bc94492 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -393,6 +393,7 @@
Неверный ответЭтот скриншот подходит для загрузки на Викисклад?Поделиться приложением
+ ПовернутьОшибка получения мест поблизостиНет мест поблизостиОшибка получения мест поблизости.
@@ -779,6 +780,8 @@
Проведите быстро и широко, чтобы выполнить следующие действия: \n- Влево/вправо: переход к предыдущему/следующему \n- Вверх: выбрать\n- Вниз: пометить как не для загрузки.Чтобы установить свой аватар в таблице лидеров, на любом изображении в меню с тремя точками нажмите «Установить как аватар».Координаты не являются точными, но человек, загрузивший эту фотографию, считает, что они достаточно близки.
+ Доступ к хранилищу запрещён
+ Невозможно поделиться этим объектомвыбрано %d изображениевыбрано %d изображения
diff --git a/app/src/main/res/values-skr/strings.xml b/app/src/main/res/values-skr/strings.xml
index aea0e53f1..4104f5652 100644
--- a/app/src/main/res/values-skr/strings.xml
+++ b/app/src/main/res/values-skr/strings.xml
@@ -165,6 +165,7 @@
جاری رکھودرست جوابغلط جواب
+ بھن٘واؤمٹاؤکامیابیاںپروفائل
diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml
index 7413e7b67..e2f3999ec 100644
--- a/app/src/main/res/values-sl/strings.xml
+++ b/app/src/main/res/values-sl/strings.xml
@@ -747,4 +747,6 @@
Hitro in dolgo podrsajte, da izvedete naslednja dejanja:\n– levo/desno: pojdi na prejšnje/naslednje\n– gor: izberi\n– dol: označi, da ni za nalaganjeZa nastavitev svojega avatarja na lestvici vodilnih tapnite »Nastavi kot avatar« v meniju s tremi pikami katere koli slike.Koordinate niso točne koordinate, vendar oseba, ki je naložila to sliko, meni, da so ustrezen približek.
+ Dovoljenje za shranjevanje zavrnjeno
+ Tega predmeta ni mogoče deliti
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index ed25ad98c..f0c8f86ac 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -22,12 +22,15 @@
Додај други описДодај нови доприносДодај допринос из камере
+ Додај допринос из Фотографија
+ Додај допринос из галерије претходних доприносаНатписиОпис језикаНатписОписСликаСве
+ Преглед претрагеСлика дана%1$d датотека се отпрема
@@ -37,6 +40,7 @@
%1$d отпремање%1$d отпремања
+ Покретање отпремањаПроцесуирање %d отпремањеПроцесуирање %d отпремања
@@ -53,6 +57,10 @@
%1$d отпремање%1$d отпремања
+
+ Примање дељеног садржаја... Процесуирање слике може потрајати неко време, у зависности од величине слике и вашег уређаја
+ Примање дељеног садржаја... Процесуирање слика може потрајати неко време, у зависности од величине слика и вашег уређаја
+ ИстрагаИзгледОпште
@@ -71,13 +79,17 @@
Отвори налогПријављивањеСачекајте…
+ Ажурирање натписа и описаСачекајте…Успешно сте пријављени.Пријављивање није успело.Датотека није пронађена. Покушајте са другом датотеком.
+ Максимални лимит за поновно покушавање је прекорачен! Откажите отпремање и покушајте поновоИскључи оптимизацију батерије?
+ Отпремање више од 3 слике ради поузданије када је искључена оптимизација батерије. Искључите оптимизацију батерије за апликацију Остава у подешавањима, за несметано искуство отпремања.\n\nМогући кораци за искључивање оптимизације батерије:\n\nКорак 1: Додирните дугме \'Подешавања\' испод.\n\nКорак 2: Промените са \'Није оптимизовано\' на \'Све апликације\'.\n\nКорак 3: Потражите \'Остава\' или \'fr.free.nrw.commons\'.\n\nКорак 4: Додирните и изаберите \'Не оптимизуј\'.\n\nКорак 5: Притисните \'Готово\'.Потврда идентитета није успела. Пријавите се поново.Отпремање је започето.
+ Отпремање је у реду (омогућен режим ограничене везе)Датотека „%1$s” је отпремљена.Додирните да бисте видели отпремањеОтпремање датотеке „%s”
@@ -86,6 +98,7 @@
Отпремање датотеке „%1$s” није успелоОтпремање %1$s паузираноДодирните да бисте видели
+ Додирните да бисте виделиВаша недавна отпремањаНа чекањуНије успело
@@ -98,6 +111,7 @@
ДелиВиди страницу датотекеОпис (обавезно)
+ Унесите натпис за ову датотекуОписНатписПријава није могућа — грешка на мрежи
@@ -115,6 +129,7 @@
Списак(Још увек нема отпремања)Нема категорија које одговарају %1$s
+ Нису пронађене ставке на Википодацима које се поклапају са %1$sДодајте категорије на слике да бисте олакшали корисницима њихово проналажење на Остави.\n\nДа бисте додали категорију, почните са писањем њеног имена.КатегоријеПодешавања
@@ -182,8 +197,11 @@
Потребна дозвола: Читање спољашње меморије. Апликација не може да приступи Ваших галерији без овога.Потребна дозвола: Писање у спољашњој меморији. Апликација не може да приступи Вашој камери/галерији без ове дозволе.Захтевање дозволе за локацију
+ Забележи локацију за снимке у апликацији
+ Омогућите ово да би сте снимили локацију за снимке у апликацији, у случају да је камера уређаја не снимиУ редуУпозорење
+ Пронађен је дупликат назива датотекаОтпремиДаНе
@@ -229,6 +247,7 @@
Ставка на ВикиподацимаВикипедијски чланакМолимо да опишете датотеку колико је то могуће: Где је направљена? Шта приказује? Шта је контекст? Опишите објекте и/или особе. Откријте информације које се не могу лако погодити, на пример доба дана ако је у питању пејзаж. Ако датотека приказује нешто необично, молимо да објасните шта је то чини необичном.
+ Молимо напишите кратак опис слике. Први наслов би се користио као наслов за слику. Ограничено на 255 карактера.Потенцијални проблеми са овом сликом:Слика је сувише тамна.Слика је мутна.
@@ -237,6 +256,8 @@
Молимо Вас да само отпремате слике које сте ви направили. Не отпремајте слике које сте пронашли на другим налозима на Фејсбуку.Желите ли још увек да отпремите ову слику?Грешка у вези
+ Процес отпремања захтева активни приступ интернету. Проверите вашу везу са интернетом.
+ Пронађени су проблеми у слициМолимо Вас да отпремате слике које сте ви направили. Не отпремајте слике које сте преузели са интернета.Чувај снимке у апликацијиЧување слика снимљених камером у меморији на вашем уређају
@@ -256,6 +277,7 @@
Копирај викитекстВикитекст је копиран у привремену меморију„У близини” можда не ради како треба. Локација није доступна.
+ Приступ локацији је онемогућен. Одаберите вашу локацију ручно да би сте користили ову могућност.Потребна је дозвола за приказивање листе локација у близиниУпутстваВикиподаци
@@ -292,6 +314,7 @@
Недавнo претражени упитиСкорашњи упити језикаДошло је до грешке при учитавању категорија.
+ Дошло је до грешке при учитавању приказа.МедијиКатегоријеСтавке
@@ -307,6 +330,11 @@
ПитањеРезултатАко наставите са отпремањем слика које захтевају брисање, ваш налог ће вероватно бити блокиран. Заиста желите да завршите квиз?
+ Више од %1$s слика које сте отпремили је обрисано. Уколико наставите да отпремате слике које је потребно обрисано, ваш налог ће највероватније бити блокиран.\n\nДа ли сте желели да видите туторијал поново и онда урадите квиз који ће вам помоћи да научите које слике требате или не требате да отпремате?
+ Селфији немају много значаја за енциклопедију. Немојте отпремати слику себе осим ако већ немате чланак о себи на Википедији.
+ Слике споменика и спољашњих пејзажа су у реду за отпремање у већини земаља. Имајте на уму да су привремене уметничке инсталације напољу често заштићене ауторским правима и да их није могуће отпремити.
+ Снимци екрана веб локација сматрају се изведеним делима и подлежу свим ауторским правима на самој веб локацији. Могу се користити уз дозволу аутора. Без такве дозволе, свака уметност коју креирате на основу њиховог дела се законски сматрају нелиценцираном копијом у власништву оригиналног аутора.
+ Један од циљева Оставе је прикупљање квалитетних слика. Због тога не би требало отпремати мутне слике. Увек покушајте да направите лепе слике са добрим осветљењем.Слике из области технологије или културе су добродошле на Остави.Тачних одговора: %1$s. Честитамо!Изаберите једну од две опције да бисте одговорили на питање
@@ -317,8 +345,10 @@
Погрешан одговорЖелите ли да отпремите овај снимак екрана?Дели апликацију
+ РотирајГрешка при добављању места у близини.Не постоје најближа места у близини
+ Грешка при добављању споменика у близини.Нема недавних претрагаДа ли сте сигурни да желите да очистите своју историју претраге?Желите ли заиста да зауставите ово отпремање?
@@ -331,6 +361,7 @@
СтатистикаЗахваљивањаИзабране слике
+ Слике преко „Места у близини”НивоОтпремљене сликеСлике које нису уклоњене
@@ -367,6 +398,7 @@
ОбележивачиНисте додали ниједан обележивачОбележивачи
+ Покренуто је прикупљање дневника. Поново покрените апликацију, извршите акцију коју желите да забележите, и онда додирните \"Пошаљи датотеку дневника\" поновоГрешком сам је отпремио/лаНисам знао/ла да ће бити јавно видљиваСхватио/ла сам да је лоша за моју приватност
@@ -377,7 +409,9 @@
Категорије нису изабранеСлике без категорија ретко су употребљиве. Заиста желите да наставите без избора категорија?Опис није одабран
+ Слике са приказима се лакше проналазе и вероватније ће се користити. Да ли сте сигурни да желите да наставите без избора приказа?Откажи отпремање
+ Коришћење дугмета за враћање уназад ће отказати ваше отпремање и изгубићете ваш напредакНастави отпремање(За све слике у скупу)Претражите ову област
@@ -388,11 +422,19 @@
Дозвола за приказ локацијеТражи дозволу за локацију када је то потребно за функцију приказа картице обавештења у близини.Нешто није у реду. Није могуће добавити достигнућа.
+ Дали сте толико доприноса са којима наш систем за израчунавање достигнућа не може да изађе на крај. Ово је крајње достигнуће.Завршава:Прикажи кампањеПогледајте текуће кампање
+ Дозволите апликацији да прибави локацију у случају да је камера не сними. Камере на неким уређајима је не снимају. У овим случајевима, давање апликацији да прибави и закачи локацију чини ваш допринос кориснијим. Ово можете променити било када у подешавањима.ДозволиОдбаци
+ Укључите приступ локацији у подешавањима и покушајте поново.\n\nНапомена: Отпремање можда неће имати локацију уколико апликација није у могућности да прибави локацију са уређаја у кратком интервалу.
+ Камера у апликацији захтева дозволу за приступ локацији, како би је прикачила вашим сликама у случају да она није доступна у EXIF-у. Дозволите апликацији да приступи вашој локацији и покушајте поново.\n\nНапомена: Отпремање можда неће имати локацију уколико апликација не може да прибави локацију са уређаја у кратком интервалу.
+ Апликација не би снимала локацију заједно са снимцима због недостатка дозволе за локацију
+ Апликација не би снимала локацију заједно са снимцима пошто је GPS искључен
+ Користите бирач слика базиран на документу
+ Више нећете видети кампање. Међутим, ако желите, можете поново да омогућите ово обавештење у подешавањима.Ова функција захтева мрежну везу. Проверите подешавања везе.Дошло је до грешке током обраде слике. Молим вас, покушајте поново!Добијање токена за уређивање
@@ -415,12 +457,15 @@
Да ли је за Оставу?Да ли желите да се захвалите доприносиоцу?Кликните НЕ да номинујете слику за брисање ако је потпуно бескорисна.
+ Логотипи, снимци екрана, филмски постери често представљају кршење ауторских права. Кликните НЕ како би сте номиновали ову слику за брисање
+ %1$s ће бити охрабљен Вашом захвалношћуОх, ово чак није категоризовано!Ова слика је под %1$s категорије.Није за Оставу зато штоКрши ауторска права зато штоСледећа сликаДа, зашто не
+ Додиривањем овог дугмета, биће вам приказана друга скоро отпремљена слика са Викимедијине оставеНема коришћених датотекаНема враћених сликаНема отпремљених слика
@@ -431,6 +476,9 @@
Прикажи непрочитаноДошло је до грешке при избору сликаСачекајте…
+ Истакнуте слике су слике од веома искусних фотографа и илустратора, које је заједница Викимедијине оставе одабрала као неке од највећег квалитета на сајту.
+ Слике отпремљене преко Места у близини су слике које су отпремљене откривањем места на мапи.
+ Ова могућност омогућава уредницима да пошању обавештење захваљивања корисницима који су направили корисне измене - коришћењем мале везе за захваљивање на страници историје или разлици измена.КопираноПримери добрих слика за отпремање на ОставуПримери слика које нису за отпремање
@@ -445,6 +493,8 @@
Модел објективаСеријски бројевиСофтвер
+ Приступ локацији медија је одбијен
+ Можда нећемо моћи да аутоматски прибавимо податке о локацији из слика које отпремите. Додајте одговарајућу локацију за сваку слику пре објављивањаОтпреми фотографије на Викимедијину Оставу директно са свог телефона. Преузми апликацију Оставе сада: %1$sПодели апликацију преко...Информације о слици
@@ -466,8 +516,20 @@
Насумична фотографија са интернатаЛоготипЗато што је то
+ Покушавање ажурирања категорија.
+ Ажурирање категоријеУспешно
+
+ Категорија %1$s је додата.
+ Категорије %1$s су додате.
+
+ Није могуће додати категорије.
+ Ажурирај категоријуУреди приказе
+ Ажурирање координата...
+ Ажурирање координата
+ Ажурирање описа
+ Ажурирање натписаУспешнокоординате %1$s су додате.Описи су додати.
@@ -475,6 +537,8 @@
Није могуће додавање координата.Није могуће додавање описа.Није могуће додавање натписа.
+ Није могуће добити координате.
+ Није могуће добити описе.Уреди описе и натписеПодели слику прекоНемате још увек доприноса
@@ -488,22 +552,41 @@
Потребна сликаТип места:Мост, музеј, хотел итд.
+ Дошло је до грешке са пријављивањем, морате да промените Вашу лозинку !!Оближње место је пронађеноДа ли је ово фотографија %1$s?ОбележивачиПодешавањаУклоњено из обележивачаДодато у обележиваче
+ Дошло је до грешке. Није могуће поставити позадинуПостави као позадинуПостављам позадину, сачекајте…Као на уређајуТамнаСветла
+ Дошло је до грешке приликом отварања подешавања за локацију. Укључите локацију ручно
+ За најбоље резултате, одаберите режим високе прецизности.Укључи локацију?
+ Морате да дате приступ Вашој тренутној локацији да би локација била постављена аутоматски.
+ Да ли сте снимили ове две слике на истом месту? Да ли желите да користите географску ширину/дужину слике са десне стране?Учитај још
+ Места нису пронађена, покушајте да промените критеријуме за претрагу.
+ Предложена унапређења:
+ - Додајте слику у категорије како би сте побољшали употребљивост.
+ - Додајте ову слику у повезани чланак на Википедији који нема слике.Додај слику на Википедији
+ Да ли желите да додате ову слику у чланак на Википедији на %1$s језику?ПотврдиУпутства
+ 1. Користите следећи викитекст:
+ 2. Додиривањем \"Потвдрди\", биће отворен чланак на Википедији
+ 3. Пронађите одговарајући одељак у чланку за вашу слику
+ 4. Тапните на иконицу Уреди (који личи на оловку) за тај одељак.
+ 5. Налепите викитекст на одговарајуће место.
+ 6. Измените викитекст за одговарајуће позиционирање, уколико је потребно. Више информација можете пронаћи <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Manual_of_Style/Images#How_to_place_an_image\">овде</a>.
+ 7. Објавите чланак
+ Копирајте вики синтаксу у међуспремникпаузирајнаставиПаузирано
@@ -516,6 +599,7 @@
РангКорисникБрој
+ Постави као аватар на табелиПостављам за аватара. Сачекајте.Аватар је постављен.Дошло је до грешке при постављању новог аватара. Покушајте поново.
@@ -527,11 +611,20 @@
У близиниУпотребеМој ранк
+ © <a href=\"https://www.mapbox.com/about/maps/\">Mapbox</a> © <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> <a href=\"https://www.mapbox.com/map-feedback/\">Унапредите ову мапу</a>
+ Режим за ограничену везу је омогућен!
+ Режим за ограничену везу је онемогућен. Отпремања на чекању ће се сада наставити.
+ Режим за ограничену везуКвалитетне слике
+ Квалитетне слике су дијаграми или фотографије које испуњавају одређене стандарде квалитета (који су углавном техничке природе) и вредни су за Викимедијине пројектеНастављам отпремање…Паузирам отпремање…Отказујем отпремање…Откажи отпремање
+ Омогућили сте режим за ограничену везу. Сва отпремања су паузирана и биће настављена када искључите овај режим.
+ Режим за ограничену везу је омогућен.
+ Напишите кратак натпис који објашњава шта слика приказује. У опису, наведите шта ову слику чини интересантном или типичном или ретком, и објасните контекст, био он видљив или не. Користите прецизну терминологију што више можете.
+ Остава чини ваше слике вишекратним и прилагођеним свима. Да ли желите да се одрекнете свих права? Да ли желите да вам се припишу? Да ли желите адаптације за коришћење исте лиценце?ПриказујеЛиценца медијаДетаљи медија
@@ -543,38 +636,79 @@
На свим језицимаОдабери локацијуИзабери локацију
+ Прикажи у мапи апликацијеИзмени локацијуЛокација слике
+ Проверите да ли је локација тачнаНазивОписСтавке
+ Прилагођен бирачНема сликаГотовоНазад
+ Добродошли у Прилагођен бирач слика
+ Овај бирач вам приказује које су слике већ отпремљене на Оставу.
+ За разлику од слика са леве стране, слике на десној страни имају лого Оставе, што означава да су већ отпремљене. Додирните и држите за преглед слике.ОдличноОва слика је већ отпремљена на Оставу.
+ Ова слика ће бити уврштена у такмичење Вики воли споменике
+ Прикажи споменике
+ Вики воли споменике — месец!Вики воли споменике
+ Вики воли споменике је међународно такмичење фотографија споменика, које организује ВикимедијаПотребна је дозволаДоприноси корисника/це: %s
+ Достигнућа корисника/це: %sПрикажи корисничку страницуИзмени категоријеНапредне опцијеПримениРесетуј
+ Подаци о локацији помажу вики уредницима да пронађу вашу слику, чинећи је кориснијом.\nВаша скорашња отпремања немају локацију.\nПредлажемо вам да укључите локацију у подешавањима апликације ваше камере.\nХвала вам за отпремања!Локација није пронађена
+ Шта мислите о додавању места где је направљена ова слика?\nПодаци о локацију помажу вики уредницима да пронађу вашу слику, чинећи је кориснијом.\nХвала вам!Додај локацију
+ Молимо уклоните из овог мејла све информације које не желите да делите јавно. Такође, имајте на уму да ће ваша имејл адреса са које објављујете и повезано име и профилна слика, бити јавно видљиви.Детаљи
+ Достигнућа су доступна само у продукционој верзији, проверите документацију за програмере.
+ Табела лидера је доступна само у продукционој верзији, проверите документацију за програмере.
+ Молимо вас да отпремате само слике које сте сами направили. Отпремаоци слика који крше ауторска права ће бити блокирани. Ово се такође односи на бета верзију. Хвала вам што тестирате апликацију!
+ Молимо вас да поништите све информације које не жечите да делите јавно.
+ Ниво API-јаВерзија АндроидаПроизвођач уређајаМодел уређајаНазив уређајаТип мреже
+ Хвала вам за давање повратне информације
+ Грешка приликом слања повратне информације
+ Шта је ваша повратна информација?Ваша повратна информација
+ Означи као „није за отпремање”
+ Уклони ознаку „није за отпремање”
+ Означавање као „није за отпремање”
+ Уклоњена ознака „није за отпремање”
+ Прикажи већ извршене слике
+ Сакривање већ извршених сликаНије пронађено више сликаОва слика је већ отпремљена
+ Није могуће одабрати ову слику за отпремањеОдабрана слика
+ Слика означена као „није за отпремање”Пријави
+ Пријави злоупотребуПријави овог корисникаПријави овај садржајЗахтевај блокаду овог корисника
+ Добродошли у режим бирања на целом екрану
+ Користите два прста да увећате и умањите.
+ Превуците брзо и дуго да би сте извршили ове акције:\n- Лево/десно: Идите на претходно/следеће\n- Горе: Одабери\n- Доле: Означи као „није за отпремање”.
+ Координате су приближне, особа која је отпремила ову слику мисли да су довољно близу.
+ Одбијене дозволе за складиште
+ Није могуће поделити ову ставку
+
+ %d слика је одабрана
+ %d слика је одабрано
+
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 50c741e77..3e29af9b6 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -348,6 +348,7 @@
Fel svarÄr det okej att ladda upp denna skärmdump?Dela app
+ RoteraFel uppstod när platser i närheten hämtades.Inga platser i närhetenFel uppstod när monument i närheten hämtades.
@@ -732,6 +733,8 @@
Svep snabbt och länge för att utföra dessa åtgärder: \n- Vänster/Höger: Gå till föregående/nästa \n- Upp: Markera\n- Ned: Markera som inte för uppladdning.För att ange din avatar för topplistan trycker du på \"Använd som avatar\" i menyn med de tre punkter på valfri bild.Koordinaterna är inte de exakta koordinaterna, men personen som laddade upp denna bild tycker att de är tillräckligt nära.
+ Lagringsbehörigheter nekades
+ Kunde inte dela detta objekt%d markerad bild%d markerade bilder
diff --git a/app/src/main/res/values-tcy/strings.xml b/app/src/main/res/values-tcy/strings.xml
index a890f12aa..5db413720 100644
--- a/app/src/main/res/values-tcy/strings.xml
+++ b/app/src/main/res/values-tcy/strings.xml
@@ -281,6 +281,7 @@
ತಪ್ಪು ಉತ್ತರೊಈ ಪರದೆಚಿತ್ರನ್ ಮಿತೇರಾವರೆ ಒಪ್ಪಿಗೆ ಉಂಡಾ?ಶೇರ್ ಅಪ್ಯ್
+ ತಿರ್ಗಲೆಕೈತಲ್ದ ಜಾಗೊಲೆನ್ ಕಣನಗ ದೋಷವಾಂಡ್.ಇಂಚೊಗು ನಾಡಿನವು ದಾಲಾ ಇಜ್ಜಿಇರ್ ನಾಡ್ನಾ ಇತಿಹಾಸೋನ್ ಮಾಜಾಯಾರಾ ಉಪ್ಪುವರತಾ?
diff --git a/app/src/main/res/values-xal/strings.xml b/app/src/main/res/values-xal/strings.xml
new file mode 100644
index 000000000..0742d2dbc
--- /dev/null
+++ b/app/src/main/res/values-xal/strings.xml
@@ -0,0 +1,188 @@
+
+
+
+ Вики-аһулх һазрин Фэйсбук халх
+ Вики-аһулх һазрин Гитхабдк экн кодмуд
+ Вики-аһулх һазрин лого-темдг
+ Вики-аһулх һазрин вэб-сайт
+ Бәәршл суңһх терзәс һарх
+ Йовулх
+ Оңгдан тодрхаллт немх
+ Шин хүв-немр немх
+ Келнә тодрхаллт
+ Тодрхаллт
+ Дүрсн
+ Бүк
+ Эн өдрин зург
+ Йирңкә
+ Санл, күслт
+ Нууцлл
+ Вики-аһулх һазр
+ Тохрллһ
+ Вики-аһулх һазрур ацалх
+ Ацалгдҗана...
+ Кергләчин нерн
+ Нууц үг
+ Невтрх
+ Нууц үгән мартвт?
+ Бүрткүлх
+ Невтрҗәнә
+ Күләхнтн...
+ Күләхнтн...
+ Невтрлт амҗлтта болла!
+ Невтрҗ чадсн уга!
+ Ацаллт кеҗ экллә!
+ %1$s ацалгдв!
+ Ацаллтын җигсәлтиг үзх
+ Файл ацалгдҗана: %s
+ %1$s ацалгдҗана
+ %1$s ацалгдҗ дуусчана
+ %1$s ацалҗ чадсн уга
+ Энд дарҗ хәләтн
+ Энд дарҗ хәләтн
+ Җигсәлтд орулла
+ Эндү һарв
+ %1$d%% кегдлә
+ Ацалгдҗана
+ Галереяс
+ Зург цокх
+ Мини кесн ацаллт
+ Хувалцх
+ Файлын халхиг үзх
+ Эн файлын нериг заахнтн
+ Тодрхаллт
+ Невтрхд эндү — сүлҗән
+ Эн кергләч Вики-аһулх һазр деер блоклгдсн бәәнә
+ Невтрҗ чадсн уга!
+ Орулх
+ Кесн хүврлтс
+ Орулх
+ Нерн, төрләр хәәх
+ Хадһлх
+ Сергәх
+ Җигсәлт
+ Нерн, төрл
+ Тохрллһ
+ Бүрткүлх
+ Туск
+ Нууцллын бодлһ
+ Туск
+ Дәкн орлдтн
+ Цуцлх
+ Татҗ авх
+ Аңхдгчар бәәсн лиценз
+ Attribution-ShareAlike 4.0
+ Attribution 4.0
+ Attribution-ShareAlike 3.0
+ Attribution 3.0
+ Һарцг: Сиднейн дүүрин театр
+ Тодрхаллт: Сиднейн дүүрин театр, булңгин үзмҗ
+ Тиим
+ Делгрңгү
+ Нерн, төрл
+ Умшҗана...
+ Алькинь чигн суңһад уга
+ Тодрхаллт уга
+ Күүндән уга
+ Сергәх
+ Нә
+ Аңхартн
+ Орулх
+ Тиим
+ Уга
+ Һарцг
+ Тодрхаллтс
+ Тодрхаллт
+ Күүндән
+ Зокагч
+ Лиценз
+ 2ФА код
+ Һархд итклтә бәәнт?
+ Зао уул
+ Лам гөрәсн
+ Солңһта тагт
+ Бамб цецг
+ Википедьт тавта мөрлтн!
+ Тавта мөрлтн — зокагчин эрк
+ Сиднейн дүүрин театр
+ Цуцлх
+ Неех
+ Хаах
+ Нүр
+ Орулх
+ Тохрллһ
+ Санл, күслт
+ Һарх
+ Медгдлмүд
+ тодрхаллт олдсн уга
+ Википедин өгүлл
+ Дүрсн дегәд баран бәәнә
+ Дүрсн тодрха биш бәәнә
+ Холвлтын эндү
+ Хуулврлгдв
+ Эн дүрсиг өңгрүлх
+ Зокагч
+ Зокагчин эрк
+ Бәәршл
+ Програмин хаңһмҗ
+ Дүрснә туск медәлл
+ Амҗлтта
+ Чадсн уга
+ Кевллин герл зург
+ Сүлҗәндк санмсрго герл зург
+ Лого-темдг
+ Яһад гихлә
+ Амҗлтта
+ Амҗлтта
+ Бүртклиг амҗлтта үүскв!
+ Хавчурһс
+ Тохрллһ
+ Баран
+ Батлх
+ 7. Өгүллән ниитлтн
+ завсрлһ
+ үрглҗлүлх
+ Завсрлгдв
+ Үлү
+ Хавчурһс
+ То:
+ То
+ Чинртә дүрсн
+ Делгрңгү умшх
+ Бүк келәр
+ Бәәршл суңһтн
+ Бәәршл суңһтн
+ Бәәршл сольх
+ Дүрснә бәәршл
+ Тодрхаллт
+ Кегдв
+ Буцх
+ Һәәхлтә
+ Кергләчин халхиг үзх
+ Тотрхаллтыг ясврлх
+ Өргдксн тохрллһ
+ Дәкн тохрулх
+ Бәәршл олдсн уга
+ Бәәршл немх
+ Делгрңгү медәлл
+ Андроидын хүвлвр
+ Төкәрмҗин үүлдврләч
+ Төкәрмҗин загвр
+ Төкәрмҗин нерн
+ Сүлҗәнә төрл
+ Санл, күслт өгснд байрлҗанавидн
+ Санл, күслт йовулхд эндү һарв
+ Тана санл, күслт
+ Бәәршүлх биш гиҗ темдглх
+ Бәәршүлх биш гисн темдгиг уга кех
+ Дүрсиг суңһв
+ Хадһлх Зөвшәрлиг эс зөвшәрв
+ Эн зүүләр хувалцх болмҗ уга
+
+ %d дүрс суңһсн
+ %d дүрс суңһсн
+
+
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index ea2941b0e..c1cf36401 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -363,6 +363,7 @@
錯誤答案這張截圖可以上傳嗎?分享應用程式
+ 旋轉獲取附近地點時出錯。找不到附近地點索取附近古蹟景點時出錯。
@@ -749,4 +750,10 @@
快速長滑來執行以下操作:\n- 左/右:跳到上一張/下一張\n- 上:選擇\n- 下:標記為不上傳。要設定您的排行榜頭像,請在任何圖片裡輕觸三點樣式選單中的「設定成頭像」。座標雖不準確,但上傳這張圖片的人認為已經足夠接近了。
+ 儲存裝置權限被拒絕
+ 無法分享此項目
+
+ 已選 %d 張圖片
+ 已選 %d 張圖片
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 45c31888b..9034b385b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -353,6 +353,7 @@
Wrong AnswerIs this screenshot OK to upload?Share App
+ RotateError fetching nearby places.No nearby places around
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 22b6dc720..2de248129 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -158,6 +158,9 @@
+