diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 01a2ec888..1c1068327 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,7 @@ + diff --git a/app/src/main/java/fr/free/nrw/commons/Utils.java b/app/src/main/java/fr/free/nrw/commons/Utils.java index 587a65467..232fa6605 100644 --- a/app/src/main/java/fr/free/nrw/commons/Utils.java +++ b/app/src/main/java/fr/free/nrw/commons/Utils.java @@ -178,9 +178,13 @@ public class Utils { public static Bitmap getScreenShot(View view) { View screenView = view.getRootView(); screenView.setDrawingCacheEnabled(true); - Bitmap bitmap = Bitmap.createBitmap(screenView.getDrawingCache()); - screenView.setDrawingCacheEnabled(false); - return bitmap; + Bitmap drawingCache = screenView.getDrawingCache(); + if (drawingCache != null) { + Bitmap bitmap = Bitmap.createBitmap(drawingCache); + screenView.setDrawingCacheEnabled(false); + return bitmap; + } + return null; } /* diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionBoundaryCallback.kt b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionBoundaryCallback.kt index 00f002176..bf6d42ac2 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionBoundaryCallback.kt +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionBoundaryCallback.kt @@ -70,7 +70,9 @@ class ContributionBoundaryCallback @Inject constructor( } ) }else { - compositeDisposable.clear() + if (compositeDisposable != null){ + compositeDisposable.clear() + } } } 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 073823ed0..b17c256f0 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 @@ -74,8 +74,8 @@ public class ContributionsListFragment extends CommonsDaggerSupportFragment impl @BindView(R.id.fab_custom_gallery) FloatingActionButton fabCustomGallery; - @Inject - SystemThemeUtils systemThemeUtils; + @Inject + SystemThemeUtils systemThemeUtils; @Inject ContributionController controller; @@ -265,34 +265,34 @@ public class ContributionsListFragment extends CommonsDaggerSupportFragment impl }); } - @OnClick(R.id.fab_custom_gallery) - void launchCustomSelector(){ - controller.initiateCustomGalleryPickWithPermission(getActivity()); - } - - private void animateFAB(final boolean isFabOpen) { - this.isFabOpen = !isFabOpen; - if (fabPlus.isShown()) { - if (isFabOpen) { - fabPlus.startAnimation(rotate_backward); - fabCamera.startAnimation(fab_close); - fabGallery.startAnimation(fab_close); - fabCustomGallery.startAnimation(fab_close); - fabCamera.hide(); - fabGallery.hide(); - fabCustomGallery.hide(); - } else { - fabPlus.startAnimation(rotate_forward); - fabCamera.startAnimation(fab_open); - fabGallery.startAnimation(fab_open); - fabCustomGallery.startAnimation(fab_open); - fabCamera.show(); - fabGallery.show(); - fabCustomGallery.show(); - } - this.isFabOpen = !isFabOpen; + @OnClick(R.id.fab_custom_gallery) + void launchCustomSelector(){ + controller.initiateCustomGalleryPickWithPermission(getActivity()); + } + + private void animateFAB(final boolean isFabOpen) { + this.isFabOpen = !isFabOpen; + if (fabPlus.isShown()) { + if (isFabOpen) { + fabPlus.startAnimation(rotate_backward); + fabCamera.startAnimation(fab_close); + fabGallery.startAnimation(fab_close); + fabCustomGallery.startAnimation(fab_close); + fabCamera.hide(); + fabGallery.hide(); + fabCustomGallery.hide(); + } else { + fabPlus.startAnimation(rotate_forward); + fabCamera.startAnimation(fab_open); + fabGallery.startAnimation(fab_open); + fabCustomGallery.startAnimation(fab_open); + fabCamera.show(); + fabGallery.show(); + fabCustomGallery.show(); + } + this.isFabOpen = !isFabOpen; + } } - } /** * Shows welcome message if user has no contributions yet i.e. new user. diff --git a/app/src/main/java/fr/free/nrw/commons/logging/LogsSender.java b/app/src/main/java/fr/free/nrw/commons/logging/LogsSender.java index 9490d9bcf..68f7bd78c 100644 --- a/app/src/main/java/fr/free/nrw/commons/logging/LogsSender.java +++ b/app/src/main/java/fr/free/nrw/commons/logging/LogsSender.java @@ -1,5 +1,7 @@ package fr.free.nrw.commons.logging; +import static org.acra.ACRA.getErrorReporter; + import android.content.Context; import android.content.Intent; import android.net.Uri; @@ -62,6 +64,8 @@ public abstract class LogsSender implements ReportSender { final Uri logFileUri = getZippedLogFileUri(context, report); if (logFileUri != null) { sendEmail(context, logFileUri); + } else { + getErrorReporter().handleSilentException(null); } } diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index d913ff149..f7db4574e 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -546,8 +546,8 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment implements image.getHierarchy().setFailureImage(R.drawable.image_placeholder); DraweeController controller = Fresco.newDraweeControllerBuilder() - .setLowResImageRequest(ImageRequest.fromUri(media.getThumbUrl())) - .setImageRequest(ImageRequest.fromUri(media.getImageUrl())) + .setLowResImageRequest(ImageRequest.fromUri(media != null ? media.getThumbUrl() : null)) + .setImageRequest(ImageRequest.fromUri(media != null ? media.getImageUrl() : null)) .setControllerListener(aspectRatioListener) .setOldController(image.getController()) .build(); diff --git a/app/src/main/java/fr/free/nrw/commons/profile/ProfileActivity.java b/app/src/main/java/fr/free/nrw/commons/profile/ProfileActivity.java index b443efa42..2e0f6c261 100644 --- a/app/src/main/java/fr/free/nrw/commons/profile/ProfileActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/profile/ProfileActivity.java @@ -1,8 +1,20 @@ package fr.free.nrw.commons.profile; +import android.app.AlertDialog; import android.content.Context; import android.content.Intent; +import android.graphics.Bitmap; +import android.net.Uri; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; +import androidx.appcompat.widget.Toolbar; +import androidx.core.content.FileProvider; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.viewpager.widget.ViewPager; @@ -10,12 +22,18 @@ import butterknife.BindView; import butterknife.ButterKnife; import com.google.android.material.tabs.TabLayout; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.ViewPagerAdapter; +import fr.free.nrw.commons.auth.SessionManager; import fr.free.nrw.commons.profile.achievements.AchievementsFragment; import fr.free.nrw.commons.profile.leaderboard.LeaderboardFragment; import fr.free.nrw.commons.theme.BaseActivity; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; /** * This activity will set two tabs, achievements and @@ -31,6 +49,12 @@ public class ProfileActivity extends BaseActivity { @BindView(R.id.tab_layout) TabLayout tabLayout; + @BindView(R.id.toolbar) + Toolbar toolbar; + + @Inject + SessionManager sessionManager; + private ViewPagerAdapter viewPagerAdapter; private AchievementsFragment achievementsFragment; private LeaderboardFragment leaderboardFragment; @@ -40,7 +64,9 @@ public class ProfileActivity extends BaseActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_profile); ButterKnife.bind(this); - setTitle(R.string.Profile); + setSupportActionBar(toolbar); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + setTitle(sessionManager.getUserName()); supportFragmentManager = getSupportFragmentManager(); viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); @@ -49,6 +75,16 @@ public class ProfileActivity extends BaseActivity { setTabs(); } + /** + * Navigate up event + * @return boolean + */ + @Override + public boolean onSupportNavigateUp() { + onBackPressed(); + return true; + } + /** * Creates a way to change current activity to AchievementActivity * @param context @@ -75,10 +111,84 @@ public class ProfileActivity extends BaseActivity { viewPagerAdapter.notifyDataSetChanged(); } + @Override public void onDestroy() { super.onDestroy(); compositeDisposable.clear(); } + /** + * To inflate menu + * @param menu Menu + * @return boolean + */ + @Override + public boolean onCreateOptionsMenu(final Menu menu) { + final MenuInflater menuInflater = getMenuInflater(); + menuInflater.inflate(R.menu.menu_about, menu); + return super.onCreateOptionsMenu(menu); + } + + /** + * To receive the id of selected item and handle further logic for that selected item + * @param item MenuItem + * @return boolean + */ + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + // take screenshot in form of bitmap and show it in Alert Dialog + if (item.getItemId() == R.id.share_app_icon) { + final View rootView = getWindow().getDecorView().findViewById(android.R.id.content); + final Bitmap screenShot = Utils.getScreenShot(rootView); + showAlert(screenShot); + return true; + } + return super.onOptionsItemSelected(item); + } + + /** + * It displays the alertDialog with Image of screenshot + * @param screenshot screenshot of the present screen + */ + public void showAlert(final Bitmap screenshot) { + final AlertDialog.Builder alert = new AlertDialog.Builder(this); + final LayoutInflater factory = LayoutInflater.from(this); + final View view = factory.inflate(R.layout.image_alert_layout, null); + final ImageView screenShotImage = view.findViewById(R.id.alert_image); + screenShotImage.setImageBitmap(screenshot); + final TextView shareMessage = view.findViewById(R.id.alert_text); + shareMessage.setText(R.string.achievements_share_message); + alert.setView(view); + alert.setPositiveButton(R.string.about_translate_proceed, (dialog, which) -> shareScreen(screenshot)); + alert.setNegativeButton(android.R.string.cancel, (dialog, which) -> dialog.cancel()); + alert.show(); + } + + /** + * To take bitmap and store it temporary storage and share it + * @param bitmap bitmap of screenshot + */ + void shareScreen(final Bitmap bitmap) { + try { + final File file = new File(getExternalCacheDir(), "screen.png"); + final FileOutputStream fileOutputStream = new FileOutputStream(file); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream); + fileOutputStream.flush(); + fileOutputStream.close(); + file.setReadable(true, false); + + final Uri fileUri = FileProvider + .getUriForFile(getApplicationContext(), + getPackageName() + ".provider", file); + grantUriPermission(getPackageName(), fileUri, Intent.FLAG_GRANT_READ_URI_PERMISSION); + final Intent intent = new Intent(android.content.Intent.ACTION_SEND); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.putExtra(Intent.EXTRA_STREAM, fileUri); + intent.setType("image/png"); + startActivity(Intent.createChooser(intent, getString(R.string.share_image_via))); + } catch (final IOException e) { + e.printStackTrace(); + } + } } \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/profile/achievements/AchievementsFragment.java b/app/src/main/java/fr/free/nrw/commons/profile/achievements/AchievementsFragment.java index efd416631..fd2864398 100644 --- a/app/src/main/java/fr/free/nrw/commons/profile/achievements/AchievementsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/profile/achievements/AchievementsFragment.java @@ -3,14 +3,10 @@ package fr.free.nrw.commons.profile.achievements; import android.accounts.Account; import android.app.AlertDialog; import android.app.AlertDialog.Builder; -import android.content.Intent; -import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -21,22 +17,11 @@ import android.widget.RelativeLayout; import android.widget.TextView; import androidx.appcompat.view.ContextThemeWrapper; import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.core.content.FileProvider; import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat; - -import com.dinuscxj.progressbar.CircleProgressBar; -import org.apache.commons.lang3.StringUtils; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.Objects; - -import javax.inject.Inject; - import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; +import com.dinuscxj.progressbar.CircleProgressBar; import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.auth.SessionManager; @@ -46,6 +31,9 @@ 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.util.Objects; +import javax.inject.Inject; +import org.apache.commons.lang3.StringUtils; import timber.log.Timber; /** @@ -174,74 +162,6 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment { return rootView; } - @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater menuInflater) { - // Inflate the menu; this adds items to the action bar if it is present. - super.onCreateOptionsMenu(menu, menuInflater); - menuInflater.inflate(R.menu.menu_about, menu); - item = menu.getItem(0); - item.setVisible(false); - } - - /** - * To receive the id of selected item and handle further logic for that selected item - */ - @Override - public boolean onOptionsItemSelected(MenuItem item) { - int id = item.getItemId(); - // take screenshot in form of bitmap and show it in Alert Dialog - if (id == R.id.share_app_icon) { - View rootView = getActivity().getWindow().getDecorView().findViewById(android.R.id.content); - Bitmap screenShot = Utils.getScreenShot(rootView); - showAlert(screenShot); - } - - return super.onOptionsItemSelected(item); - } - - /** - * It displays the alertDialog with Image of screenshot - * @param screenshot - */ - public void showAlert(Bitmap screenshot){ - AlertDialog.Builder alertadd = new AlertDialog.Builder(getActivity()); - LayoutInflater factory = LayoutInflater.from(getActivity()); - final View view = factory.inflate(R.layout.image_alert_layout, null); - ImageView screenShotImage = view.findViewById(R.id.alert_image); - screenShotImage.setImageBitmap(screenshot); - TextView shareMessage = view.findViewById(R.id.alert_text); - shareMessage.setText(R.string.achievements_share_message); - alertadd.setView(view); - alertadd.setPositiveButton(R.string.about_translate_proceed, (dialog, which) -> shareScreen(screenshot)); - alertadd.setNegativeButton(android.R.string.cancel, (dialog, which) -> dialog.cancel()); - alertadd.show(); - } - - /** - * To take bitmap and store it temporary storage and share it - * @param bitmap - */ - void shareScreen(Bitmap bitmap) { - try { - File file = new File(getActivity().getExternalCacheDir(), "screen.png"); - FileOutputStream fOut = new FileOutputStream(file); - bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut); - fOut.flush(); - fOut.close(); - file.setReadable(true, false); - Uri fileUri = FileProvider - .getUriForFile(getActivity().getApplicationContext(), getActivity().getPackageName()+".provider", file); - getActivity().grantUriPermission(getActivity().getPackageName(), fileUri, Intent.FLAG_GRANT_READ_URI_PERMISSION); - final Intent intent = new Intent(android.content.Intent.ACTION_SEND); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.putExtra(Intent.EXTRA_STREAM, fileUri); - intent.setType("image/png"); - startActivity(Intent.createChooser(intent, getString(R.string.share_image_via))); - } catch (IOException e) { - e.printStackTrace(); - } - } - /** * To invoke the AlertDialog on clicking info button */ 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 4c8346858..970aa6ad0 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 @@ -45,6 +45,7 @@ import fr.free.nrw.commons.upload.license.MediaLicenseFragment; import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment; import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment.UploadMediaDetailFragmentCallback; import fr.free.nrw.commons.upload.worker.UploadWorker; +import fr.free.nrw.commons.utils.DialogUtil; import fr.free.nrw.commons.utils.PermissionUtils; import fr.free.nrw.commons.utils.ViewUtil; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -107,6 +108,10 @@ public class UploadActivity extends BaseActivity implements UploadContract.View, private Place place; private List uploadableFiles = Collections.emptyList(); private int currentSelectedPosition = 0; + /* + Checks for if multiple files selected + */ + private boolean isMultipleFilesSelected = false; public static final String EXTRA_FILES = "commons_image_exta"; @@ -399,12 +404,20 @@ public class UploadActivity extends BaseActivity implements UploadContract.View, Timber.d("Received intent %s with action %s", intent.toString(), intent.getAction()); uploadableFiles = intent.getParcelableArrayListExtra(EXTRA_FILES); + isMultipleFilesSelected = uploadableFiles.size() > 1; Timber.i("Received multiple upload %s", uploadableFiles.size()); place = intent.getParcelableExtra(PLACE_OBJECT); resetDirectPrefs(); } + /** + * Returns if multiple files selected or not. + */ + public boolean getIsMultipleFilesSelected() { + return isMultipleFilesSelected; + } + public void resetDirectPrefs() { directKvStore.remove(PLACE_OBJECT); } @@ -502,4 +515,20 @@ public class UploadActivity extends BaseActivity implements UploadContract.View, uploadCategoriesFragment.setCallback(null); } } + + /** + * Overrides the back button to make sure the user is prepared to lose their progress + */ + @Override + public void onBackPressed() { + DialogUtil.showAlertDialog(this, + getString(R.string.back_button_warning), + getString(R.string.back_button_warning_desc), + getString(R.string.back_button_continue), + getString(R.string.back_button_warning), + null, + this::finish + ); + } + } 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 fd5dda9d8..bed3e3454 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 @@ -13,7 +13,7 @@ import java.util.Collections; import java.util.List; public class UploadItem { - + private final Uri mediaUri; private final String mimeType; private ImageCoordinates gpsCoords; @@ -26,24 +26,24 @@ public class UploadItem { private final Uri contentUri; - @SuppressLint("CheckResult") - UploadItem(final Uri mediaUri, - final String mimeType, - final ImageCoordinates gpsCoords, - final Place place, - final long createdTimestamp, - final String createdTimestampSource, - final Uri contentUri) { - this.createdTimestampSource = createdTimestampSource; - uploadMediaDetails = new ArrayList<>(Collections.singletonList(new UploadMediaDetail())); - this.place = place; - this.mediaUri = mediaUri; - this.mimeType = mimeType; - this.gpsCoords = gpsCoords; - this.createdTimestamp = createdTimestamp; - this.contentUri = contentUri; - imageQuality = BehaviorSubject.createDefault(ImageUtils.IMAGE_WAIT); - } + @SuppressLint("CheckResult") + UploadItem(final Uri mediaUri, + final String mimeType, + final ImageCoordinates gpsCoords, + final Place place, + final long createdTimestamp, + final String createdTimestampSource, + final Uri contentUri) { + this.createdTimestampSource = createdTimestampSource; + uploadMediaDetails = new ArrayList<>(Collections.singletonList(new UploadMediaDetail())); + this.place = place; + this.mediaUri = mediaUri; + this.mimeType = mimeType; + this.gpsCoords = gpsCoords; + this.createdTimestamp = createdTimestamp; + this.contentUri = contentUri; + imageQuality = BehaviorSubject.createDefault(ImageUtils.IMAGE_WAIT); + } public String getCreatedTimestampSource() { return createdTimestampSource; @@ -69,11 +69,11 @@ public class UploadItem { return imageQuality.getValue(); } - public Uri getContentUri() { return contentUri; } + public Uri getContentUri() { return contentUri; } - public void setImageQuality(final int imageQuality) { - this.imageQuality.onNext(imageQuality); - } + public void setImageQuality(final int imageQuality) { + this.imageQuality.onNext(imageQuality); + } /** * Sets the corresponding place to the uploadItem diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java index cb51ac4ff..17ac18e51 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java @@ -123,8 +123,6 @@ public class UploadMediaDetailAdapter extends RecyclerView.Adapter searchForCategory(filter.toString()), Timber::e); } + /** + * Removes the tv subtitle If the activity is the instance of [UploadActivity] and + * if multiple files aren't selected. + */ + private void setTvSubTitle() { + final Activity activity = getActivity(); + if (activity instanceof UploadActivity) { + final boolean isMultipleFileSelected = ((UploadActivity) activity).getIsMultipleFilesSelected(); + if (!isMultipleFileSelected) { + tvSubTitle.setVisibility(View.GONE); + } + } + } + private void searchForCategory(String query) { presenter.searchForCategories(query); } 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 0b1dc5156..dce952ca1 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 @@ -1,5 +1,6 @@ package fr.free.nrw.commons.upload.depicts; +import android.app.Activity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -20,6 +21,7 @@ import com.google.android.material.textfield.TextInputLayout; import com.jakewharton.rxbinding2.view.RxView; import com.jakewharton.rxbinding2.widget.RxTextView; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.upload.UploadActivity; import fr.free.nrw.commons.upload.UploadBaseFragment; import fr.free.nrw.commons.upload.UploadModel; import fr.free.nrw.commons.upload.structure.depictions.DepictedItem; @@ -41,6 +43,8 @@ public class DepictsFragment extends UploadBaseFragment implements DepictsContra @BindView(R.id.depicts_title) TextView depictsTitle; + @BindView(R.id.depicts_subtitle) + TextView depictsSubTitle; @BindView(R.id.depicts_search_container) TextInputLayout depictsSearchContainer; @BindView(R.id.depicts_search) @@ -76,7 +80,8 @@ public class DepictsFragment extends UploadBaseFragment implements DepictsContra */ private void init() { depictsTitle.setText(getString(R.string.step_count, callback.getIndexInViewFlipper(this) + 1, - callback.getTotalNumberOfSteps(), getString(R.string.depicts_step_title))); + callback.getTotalNumberOfSteps(), getString(R.string.depicts_step_title))); + setDepictsSubTitle(); tooltip.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -88,6 +93,20 @@ public class DepictsFragment extends UploadBaseFragment implements DepictsContra addTextChangeListenerToSearchBox(); } + /** + * Removes the depicts subtitle If the activity is the instance of [UploadActivity] and + * if multiple files aren't selected. + */ + private void setDepictsSubTitle() { + final Activity activity = getActivity(); + if (activity instanceof UploadActivity) { + final boolean isMultipleFileSelected = ((UploadActivity) activity).getIsMultipleFilesSelected(); + if (!isMultipleFileSelected) { + depictsSubTitle.setVisibility(View.GONE); + } + } + } + /** * Initialise recyclerView and set adapter */ diff --git a/app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.java index 530d4bf61..6164fd6cc 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.java @@ -1,5 +1,6 @@ package fr.free.nrw.commons.upload.license; +import android.app.Activity; import android.net.Uri; import android.os.Bundle; import android.text.Html; @@ -20,6 +21,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import fr.free.nrw.commons.upload.UploadActivity; import fr.free.nrw.commons.utils.DialogUtil; import java.util.List; @@ -38,6 +40,8 @@ public class MediaLicenseFragment extends UploadBaseFragment implements MediaLic @BindView(R.id.tv_title) TextView tvTitle; + @BindView(R.id.tv_subtitle) + TextView tvSubTitle; @BindView(R.id.spinner_license_list) Spinner spinnerLicenseList; @BindView(R.id.tv_share_license_summary) @@ -72,7 +76,8 @@ public class MediaLicenseFragment extends UploadBaseFragment implements MediaLic private void init() { tvTitle.setText(getString(R.string.step_count, callback.getIndexInViewFlipper(this) + 1, - callback.getTotalNumberOfSteps(), getString(R.string.license_step_title))); + callback.getTotalNumberOfSteps(), getString(R.string.license_step_title))); + setTvSubTitle(); tooltip.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -84,6 +89,20 @@ public class MediaLicenseFragment extends UploadBaseFragment implements MediaLic presenter.getLicenses(); } + /** + * Removes the tv Subtitle If the activity is the instance of [UploadActivity] and + * if multiple files aren't selected. + */ + private void setTvSubTitle() { + final Activity activity = getActivity(); + if (activity instanceof UploadActivity) { + final boolean isMultipleFileSelected = ((UploadActivity) activity).getIsMultipleFilesSelected(); + if (!isMultipleFileSelected) { + tvSubTitle.setVisibility(View.GONE); + } + } + } + private void initPresenter() { presenter.onAttachView(this); } diff --git a/app/src/main/res/layout/layout_upload_depicts_item.xml b/app/src/main/res/layout/layout_upload_depicts_item.xml index 9a0549236..a92384801 100644 --- a/app/src/main/res/layout/layout_upload_depicts_item.xml +++ b/app/src/main/res/layout/layout_upload_depicts_item.xml @@ -1,46 +1,54 @@ + + + android:checkMark="?android:attr/textCheckMark" + android:checked="false" + android:gravity="center_vertical" + android:padding="@dimen/tiny_gap" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/depicted_image" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - + - + + android:id="@+id/depicts_label" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Label" + android:textStyle="bold" /> + android:id="@+id/description" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Description" /> + + diff --git a/app/src/main/res/values-ab/strings.xml b/app/src/main/res/values-ab/strings.xml index 90389729b..b0b1cd5aa 100644 --- a/app/src/main/res/values-ab/strings.xml +++ b/app/src/main/res/values-ab/strings.xml @@ -1,6 +1,7 @@ @@ -86,4 +87,5 @@ Архиарақәа Иҭыҵтәуп ахҳаа ԥшаам + Аҭагалара аԥыхра diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 2cb981aeb..aaabdc763 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -395,6 +395,9 @@ Bilder ohne Kategorien sind selten nutzbar. Bist du sicher, dass du ohne die Auswahl von Kategorien hochladen möchtest? Keine Motive ausgewählt Bilder mit Motive sind leichter zu finden und werden eher verwendet. Bist dusicher, dass du ohne Auswahl von Motiven fortfahren möchtest? + Hochladen abbrechen + Wenn du den Zurück-Button verwendest, wird das Hochladen abgebrochen und du verlierst deine bisherigen Schritte + Hochladen fortsetzen (für alle Bilder im Satz) Diesen Bereich durchsuchen Berechtigungsanfrage diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 9876529b1..32de41a1c 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -236,6 +236,7 @@ Tämä kuva otettiin eri paikassa. Tallenna vain kuvia, jotka olet itse ottanut. Älä tallenna kuvia, joita olet löytänyt muiden ihmisten Facebook-tileiltä. Haluatko silti tallentaa tämän kuvan? + Yhteysvirhe Kuvasta löytyi ongelmia Tallenna vain kuvia, jotka olet itse ottanut. Älä tallenna kuvia, joita olet ladannut internetistä. Tallenna sovelluksen sisäisiä otoksia @@ -452,6 +453,7 @@ Sarjanumerot Ohjelmisto Lähetä valokuvia suoraan Wikimedia Commonsiin puhelimestasi. Lataa Commons-appi nyt: %1$s + Jaa sovellus... Kuvan tiedot Luokkia ei löytynyt Peruutettu tallennus @@ -479,6 +481,7 @@ Ei voitu lisätä luokkia. Päivitetään luokkia + Onnistui Jaa kuva Et ole vielä lahjoittanut mitään Käyttäjätunnus luotu! @@ -501,6 +504,7 @@ Käytä järjestelmän Tumma Vaalea + Ota sijainti käyttöön? Lataa lisää Paikkoja ei löytynyt, yritä vaihtaa hakuehtojasi. Ehdota parannuksia: @@ -547,7 +551,15 @@ Jatketaan lähettämistä... Keskeytetään lähetys... Esittää + Median lisenssi + Median tiedot Näytä luokkasivu Lue lisää Kaikilla kielillä + Valitse sijainti + Valitse sijainti + Näytä karttasovelluksessa + Muokkaa sijaintia + Kuvan sijainti + Tarkista, onko sijainti oikea diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index bc68c9636..313e4068a 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -403,6 +403,9 @@ Les images sans catégories sont rarement utilisables. Voulez-vous vraiment continuer sans sélectionner des catégories  appropriées ? Aucun élément représenté sélectionné Les images avec des éléments représentés sont plus faciles à trouver et plus susceptibles d’être utilisées. Voulez-vous vraiment continuer sans sélectionner des éléments représentés ? + Annuler le téléchargement + L’utilisation du bouton de retour annulera ce téléchargement et vous perdrez votre progression + Continuer le téléchargement (Pour toutes les images dans le jeu) Chercher dans cette zone Demande d’autorisation diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index b09fc9b81..87ed689b7 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -386,6 +386,8 @@ Le immagini senza categorie sono raramente utilizzabili. Sei sicuro di voler continuare senza selezionare le categorie? Non sono stati selezionati elementi Le immagini con descrizioni possono essere trovate più facilmente ed è più probabile il loro utilizzo. Davvero vuoi continuare senza selezionare elementi raffigurati? + Annulla caricamento + Continua caricamento (Per tutte le immagini nell\'insieme) Cerca in questa area Richiesta di permesso diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index eae4d6540..617501071 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -406,6 +406,9 @@ תמונות ללא קטגוריות בדרך כלל אינן שימושיות. להמשיך ללא בחירת קטגוריות? לא נבחרו מוצגים קל יותר למצוא תמונות עם מוצגים ויש סיכוי גבוה יותר שמישהו ישתמש בהן. האם ברצונך באמת להמשיך בלי לבחור מוצגים? + ביטול ההעלאה + שימוש בכתפור החזרה יבטל את ההעלאה הזאת וההתקדמות שלך תלך לאיבוד + נמשך ההעלאה (לכל התמונות בסדרה) חיפוש באזור הזה בקשת הרשאה diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 5c0616a4f..389287383 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -9,6 +9,7 @@ * Hinaloe * Kkairri * LaMagiaaa +* MathXplore * Nicolas Raoul * Omotecho * Otokoume @@ -31,11 +32,11 @@ (%1$d) アップロードを開始中です - - %1$d 件のアップロードを開始中 + + %d 件のアップロードを処理中 - - %1$d 件のアップロード + + %d 件のアップロード この画像は%1$sライセンスのもとにアップロードされます @@ -73,7 +74,7 @@ アップロードは待機中です(接続制限モードが有効) %1$s をアップロードしました! アップロードしたものを表示するにはタップしてください - %1$s のアップロードを開始中 + %s のアップロードを開始中 %1$s をアップロード中 %1$s のアップロードを完了中 %1$s のアップロードに失敗しました @@ -241,6 +242,8 @@ この画像の撮影地点は別の場所です。 あなた自身の撮影したがぞうに限定してアップロードしてください。他人のFacebookアカウントの画像をアップロードすることはやめてください。 それでもこの画像をアップロードしますか? + 接続エラーが発生しました + アップロードの過程にはインタネットアクセスへの接続が必要です。ネットワーク接続をご確認ください。 画像に問題があります あなた自身の撮影した画像に限定してアップロードしてください。ウェブ上からダウンロードした画像はアップロードできません。 アプリの画面キャプチャを保存 @@ -388,6 +391,9 @@ カテゴリを指定しない画像は使用されることがほとんどありません。ほんとうにカテゴリを選択しないまま作業を続けますか? 描写を選択していません 描写を添えた画像はないものよりも探しやすく利用されやすくなります。描写を選ばないまま、先に進んでよいですか? + アップロードをキャンセル + バックボタンを使うとこのアップロードはキャンセルされ、これまでの進行は消失します + アップロードを続ける (画像全点を組み写真にする場合) この地域を検索 許可を申請 @@ -583,4 +589,8 @@ メディアのライセンス メディアの詳細 カテゴリのページを表示 + すべての言語 + 地図アプリに表示 + 位置を編集 + 場所が正しいかどうかを確認する diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index b5f14eac8..59def2338 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -382,6 +382,8 @@ 선택된 분류 없음 분류가 없는 그림은 거의 유용하지 않습니다. 분류를 선택하지 않고 제출하시겠습니까? 선택된 서술 없음 + 올리기 취소 + 계속 올리기 이 지역을 검색 권한 요청 사진이 필요한 주변 장소를 표시하기 위해 현재 위치를 사용하시겠습니까? @@ -524,4 +526,8 @@ 모든 언어 장소 선택하기 장소 선택 + 맵 앱에 표시 + 위치 편집 + 이미지 위치 + 위치가 올바른지 확인 diff --git a/app/src/main/res/values-ky/strings.xml b/app/src/main/res/values-ky/strings.xml index 2834326ca..e6109a926 100644 --- a/app/src/main/res/values-ky/strings.xml +++ b/app/src/main/res/values-ky/strings.xml @@ -2,6 +2,7 @@ @@ -93,4 +94,7 @@ Жүктөлүүдө… Тандалган жок Жаңылоо + Жүктөөнү жокко чыгаруу + Артка баскычын колдонуу менен бул жүктөө жокко чыгарылат жана сиз ийгиликти жоготосуз + Жүктөөнү улантуу diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index 9f783d968..6860c4fa1 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -376,6 +376,9 @@ Некатегоризираните слики се слабо употребливи. Дали сигурно сакате да продолжите без да ставите категории? Немате избрано прикажувања Сликите со прикажувања се полезни за наоѓање, со што е поголема веројатноста дека ќе бидат искористени. Дали сигурно сакате да продолжите без да изберете прикажувања? + Откажи подигање + Ако стиснете на копчето за одење назад, со тоа ќе го откажете подигањето и ќе го изгубите досегашниот напредок + Продолжи со подигање (За сите слики во збирот) Пребарај на ова подрачје Барање за дозвола diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 2a44daab2..1350c3792 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -13,6 +13,7 @@ * Optilete * Patio * Robin van der Linde +* Romaine * Rots61 * Siebrand * Sjoerddebruin @@ -24,20 +25,31 @@ %1$d bestand aan het uploaden %1$d bestanden aan het uploaden - - \@string/contributions_subtitle_zero - %1$d upload - %1$d uploads + + (%1$d) + (%1$d) - + Uploaden starten + Bezig met 1 upload Bezig met %1$d uploads - + %1$d upload %1$d uploads - Deze afbeelding wordt gelicenseerd onder %1$s + + Deze afbeelding wordt gelicenseerd onder %1$s + Deze afbeeldingen worden gelicenseerd onder %1$s + + + %1$d upload + %1$d uploads + + + Gedeelde inhoud wordt ontvangen. Het verwerken van de afbeelding kan enige tijd duren, afhankelijk van de grootte van de afbeelding en uw apparaat + Gedeelde inhoud wordt ontvangen. Het verwerken van de afbeeldingen kan enige tijd duren, afhankelijk van de grootte van de afbeeldingen en uw apparaat + Verkennen Uiterlijk Algemeen @@ -60,6 +72,7 @@ Bestand niet gevonden. Probeer een ander bestand. Verifiëring is mislukt. Meld je opnieuw aan. Uploaden is begonnen + Uploaden in wachtrij (beperkte verbindingsmodus ingeschakeld) %1$s geüpload Wijs aan om uw upload te bekijken Bestand wordt geüpload: %s @@ -81,31 +94,38 @@ Delen Bestandspagina bekijken Titel (verplicht) + Geef een bijschrift op voor dit bestand Beschrijving + Bijschrift Aanmelden niet mogelijk. Er is een probleem met het netwerk U hebt te vaak geprobeerd aan te melden. Probeer het over een aantal minuten opnieuw. Deze gebruiker is helaas geblokkeerd op Wikimedia Commons + U moet uw tweefactorauthenticatiecode opgeven. Aanmelden mislukt Uploaden Geef deze verzameling een naam Wijzigingen Uploaden Categorieën zoeken + Zoek naar items die uw media weergeven (berg, Taj Mahal, enz.) Opslaan Vernieuwen Lijst (Nog geen uploads) Er zijn geen categorieën met \"%1$s\" gevonden - Voeg categorieën toe om uw afbeeldingen makkelijker te vinden te maken op Wikimedia Commons.\n\nBegin met het toevoegen van categorieën.\n\nKlik op dit bericht, of ga terug, om deze stap over te slaan. + Geen Wikidata-items gevonden die overeenkomen met %1$s + Voeg categorieën toe om uw afbeeldingen makkelijker te vinden te maken op Wikimedia Commons.\nBegin met typen om categorieën toe te voegen. Categorieën Instellingen Registreren Uitgelichte afbeelding Categorie + Peer review Over - Opensourcesoftware vrijgegeven onder de <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\">Apache License v2</a>. Wikimedia Commons en haar logo zijn handelsmerken van de Wikimedia Foundation en worden gebruikt met toestemming van de Wikimedia Foundation. We worden niet bekrachtigd door en zijn niet verbonden met de Wikimedia Foundation. + De Wikimedia Commons-app is een open-source-app die is gemaakt en onderhouden door begunstigden en vrijwilligers van de Wikimedia-gemeenschap. De Wikimedia Foundation is niet betrokken bij het maken, ontwikkelen of onderhouden van de app. <a href=\"https://github.com/commons-app/apps-android-commons\">Broncode</a> en <a href=\"https://commons-app.github.io/\">website</a> op GitHub. Maak een nieuwe <a href=\"%1$s\">melding op GitHub</a> voor bugs en suggesties. Privacybeleid + Credits Over Terugkoppeling geven (via e-mail) Geen e-mail-client geïnstalleerd @@ -114,6 +134,7 @@ U hebt nog geen afbeeldingen geüpload. Opnieuw proberen Annuleren + Door deze foto in te dienen, verklaar ik dat dit mijn eigen werk is, dat het geen auteursrechtelijk beschermd materiaal of selfies bevat en dat het verder voldoet aan het <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">Wikimedia Commons-beleid</a>. Downloaden Standaard licentie Gebruik vorige titel en omschrijving @@ -131,10 +152,16 @@ Uw afbeeldingen helpen mensen over de hele wereld met kennis opdoen! Upload alstublieft alleen afbeeldingen die volledig door uzelf gemaakt zijn: Natuurlijke voorwerpen (bloemen, dieren, bergen) + Nuttige objecten (fietsen, treinstations) + Bekende mensen (uw burgemeester, olympische atleten die u ontmoet heeft) Gelieve NIET te uploaden: + Selfies of foto\'s van uw vrienden + Foto\'s die u van internet heeft gedownload Schermfoto\'s van oorspronkelijke toepassingen Voorbeeld van een upload: Titel: Opera van Sydney + Beschrijving: Sydney Opera House gezien vanaf de overkant van de baai + Categorieën: Sydney Opera House from the west, Sydney Opera House remote views Draag uw afbeelding bij. Help pagina\'s in Wikipedia tot leven te laten komen! Afbeeldingen op Wikipedia komen van Wikimedia Commons. Uw afbeeldingen helpen mensen van over de hele wereld te leren. @@ -145,16 +172,24 @@ Categorieën Laden... Geen selectie + Geen onderschrift Geen beschrijving Geen overleg Onbekende licentie Vernieuwen + Opslagtoestemming aanvragen Benodigde toestemming: Lees externe opslag. Zonder toestemming kan de app uw foto galerij niet bekijken. + Vereiste toestemming: externe opslag schrijven. Zonder dit heeft de app geen toegang tot uw camera/galerij. + Locatietoestemming aanvragen OK Waarschuwing + Dubbele afbeelding gevonden + Uploaden Ja Nee + Onderschrift Titel + Beschrijvingen Beschrijving Overleg Auteur @@ -163,12 +198,23 @@ Coördinaten Niet opgegeven Word een bèta tester + Meld u aan voor ons bètakanaal op Google Play en krijg vroege toegang tot nieuwe functies en bugfixes 2FA-code + Wilt u echt uitloggen? Commons logo Commons website Commons Facebookpagina + Commons Github-broncode + Media-afbeelding is mislukt Geen subcategorieën gevonden + Geen bovenliggende categorieën gevonden + Mount Zao + Lama\'s + Rainbow Bridge Tulp + Welkom op Wikipedia + Welkom Auteursrecht + Sydney Opera House Annuleren Openen Sluiten @@ -181,19 +227,29 @@ Afmelden Zelfstudie Meldingen + Beoordeling geen beschrijving gevonden + Commons-bestandspagina Wikidata-item Wikipedia-artikel + Beschrijf de media zo veel mogelijk: Waar is de opname gemaakt? Wat laat het zien? Wat is de context? Beschrijf de objecten of personen. Onthul informatie die niet gemakkelijk te raden is, bijvoorbeeld het tijdstip van de dag als het een landschap is. Als de media iets ongewoons laat zien, leg dan uit wat het ongebruikelijk maakt. + Geef een korte beschrijving van de afbeelding. Het eerste bijschrift zou worden gebruikt als de titel voor de afbeelding. Beperk tot 255 tekens. + Mogelijke problemen met deze afbeelding: Afbeelding is te donker. Afbeelding is onscherp. Afbeelding staat al in Commons. Deze foto is op een andere locatie genomen. Upload alleen foto\'s die je zelf hebt genomen. Upload geen foto\'s die je op Facebookaccounts van anderen hebt gevonden. Wil je deze afbeelding nog steeds uploaden? + Verbindingsfout + Het uploadproces vereist een actieve internettoegang. Controleer uw netwerkverbinding. + Problemen gevonden in afbeelding Upload alleen foto\'s die je zelf hebt genomen. Upload geen foto\'s die je van internet hebt gedownload. In-app opnamen opslaan + Foto\'s die met de in-app-camera zijn gemaakt, opslaan in de opslag van uw apparaat Aanmelden bij je profiel Logboekbestand verzenden + Stuur een logbestand via e-mail naar ontwikkelaars om problemen met de app op te lossen. Opmerking: logboeken kunnen mogelijk identificerende informatie bevatten Geen webbrowser gevonden om URL te openen Fout! URL niet gevonden Nomineer voor Verwijdering @@ -217,6 +273,7 @@ Zelfstudie overslaan Geen internet Fout bij ophalen berichten. + Fout bij ophalen van afbeelding voor beoordeling. Druk op vernieuwen om het opnieuw te proberen. Geen berichten. Vertalen Talen @@ -224,68 +281,329 @@ Ga door Annuleren Opnieuw proberen + Dit zijn de plaatsen bij u in de buurt die foto\'s nodig hebben om bijbehorende Wikipedia-artikelen te illustreren.\n\nHet klikken op \'ZOEK IN DIT GEBIED\' vergrendelt de kaart en start een zoekopdracht in de buurt rond die locatie. + Deze plaats heeft een foto nodig. + Deze plaats heeft al een foto. + Deze plek bestaat niet meer. Geen afbeeldingen gevonden! Er is een fout opgetreden tijdens het laden van de afbeeldingen. Geüpload door: %1$s Geblokkeerd + U bent geblokkeerd voor het bewerken van Commons Afbeelding van de dag Afbeelding van de dag Zoeken Commons doorzoeken Zoeken Recente zoekopdrachten: + Recente zoekopdrachten + Er is een fout opgetreden bij het laden van categorieën. + Er is een fout opgetreden tijdens het laden van de beschrijvingen. Media Categorieën + Items Uitgelicht + Geüpload via mobiel + Afbeelding toegevoegd aan %1$s op Wikidata! + Het bijwerken van corresponderende Wikidata-entiteit is mislukt! Stel in als achtergrond Achtergrond succesvol ingesteld! Vragenspel Kan je afbeelding worden geplaatst? Vraag Uitslag + Als 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? + Meer dan %1$s van de afbeeldingen die u heeft geüpload, zijn verwijderd. Als u doorgaat met het uploaden van afbeeldingen die moeten worden verwijderd, wordt uw account waarschijnlijk geblokkeerd.\n\nWilt u de tutorial opnieuw bekijken en vervolgens een quiz doen om u te helpen te leren welk type afbeeldingen u wel of niet moet uploaden? + Selfies hebben niet veel encyclopedische waarde. Upload geen foto van uzelf, tenzij u al een Wikipedia-artikel over uzelf heeft. + Foto\'s van monumenten en landschappen buiten kunnen in de meeste landen worden geüpload. Houd er rekening mee dat tijdelijke kunstinstallaties buiten vaak auteursrechtelijk beschermd zijn en niet OK zijn om te uploaden. + Screenshots van websites worden beschouwd als afgeleide werken en vallen onder het auteursrecht van de website zelf. Deze kunnen gebruikt worden na toestemming van de auteur. Zonder dergelijke toestemming wordt elke kunst die u maakt op basis van hun werk wettelijk beschouwd als een kopie zonder licentie die eigendom is van de oorspronkelijke auteur. + Een van de doelen van Commons is het verzamelen van kwaliteitsafbeeldingen. Daarom mogen wazige afbeeldingen niet worden geüpload. Probeer altijd mooie foto\'s te maken met goede belichting. + Foto\'s met technologie of cultuur zijn van harte welkom op Commons. + U heeft %1$s van de antwoorden goed. Gefeliciteerd! + Selecteer een van de twee opties om de vraag te beantwoorden + Inlogsessie verlopen, log opnieuw in. + Deel je quiz met je vrienden! Doorgaan Correct antwoord Fout antwoord + Is deze screenshot OK om te uploaden? Toepassing delen + Fout bij het ophalen van plaatsen in de buurt. Geen recente zoekopdrachten + Weet u zeker dat u uw zoekgeschiedenis wilt wissen? + Wilt u deze zoekopdracht verwijderen? + Zoekgeschiedenis verwijderd + Nomineer voor verwijdering Verwijderen + Prestaties + Profiel Statistieken + Ontvangen bedankjes + Uitgelichte afbeeldingen + Afbeeldingen via \"Plaatsen in de buurt\" + Niveau + Geüploade afbeeldingen + Afbeeldingen niet teruggedraaid + Gebruikte afbeeldingen + Deel u prestaties met uw vrienden! + Uw niveau neemt toe naarmate u aan deze vereisten voldoet. Items in de sectie \'statistieken\' tellen niet mee voor uw niveau. + minimum vereist: + Het aantal afbeeldingen dat u naar Commons heeft geüpload, via uploadsoftware + Het percentage afbeeldingen dat u naar Commons heeft geüpload en dat niet is verwijderd + Het aantal afbeeldingen dat u naar Commons heeft geüpload en dat in Wikimedia-artikelen is gebruikt Fout opgetreden! + Commons-melding + Gebruik aangepaste auteursnaam + Gebruik een aangepaste auteursnaam in plaats van uw gebruikersnaam tijdens het uploaden van foto\'s + Aangepaste auteursnaam Bijdragen Dichtbij Meldingen Meldingen (gelezen) Meldingen dichtbij weergeven + Toon in-app-melding voor de dichtstbijzijnde plaats die foto\'s nodig heeft Lijst Toestemming om op te slaan + We hebben uw toestemming nodig om toegang te krijgen tot de externe opslag van uw apparaat om afbeeldingen te uploaden. + U zult de dichtstbijzijnde plaats die foto\'s nodig heeft niet meer zien. U kunt deze melding desgewenst echter opnieuw inschakelen in de Instellingen. Stap %1$d van %2$d: %3$s Volgende Vorige Verzenden + 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 geen compatibele kaarttoepassing gevonden op uw apparaat. Installeer een kaarttoepassing om deze functie te gebruiken. + Afbeeldingen + Locaties + Toevoegen/verwijderen van bladwijzers + Bladwijzers + U hebt geen bladwijzers toegevoegd + Bladwijzers + Logboekverzameling is gestart. Start de app opnieuw op, voer de actie uit die u wilt loggen en tik vervolgens nogmaals op \'Logboekbestand verzenden\' + Ik heb het per ongeluk geüpload + Ik wist niet dat het publiekelijk zichtbaar zou zijn + Ik realiseerde me dat het slecht is voor mijn privacy. + Ik ben van gedachten veranderd, ik wil niet dat het nog publiekelijk zichtbaar is. + Sorry, deze foto is niet interessant voor een encyclopedie Geüpload door mijzelf op %1$s, gebruikt in %2$d artikel(en). + Welkom bij Commons!\n\nUpload je eerste media door op de knop Toevoegen te klikken. + Geen categorieën geselecteerd + Afbeeldingen zonder categorieën zijn zelden bruikbaar. Weet je zeker dat je verder wilt gaan zonder categorieën te selecteren? + Geen beschrijvingen geselecteerd + Afbeeldingen met beschrijvingen zijn gemakkelijker te vinden en zullen eerder worden gebruikt. Weet u zeker dat u wilt doorgaan zonder beschrijvingen te selecteren? + (Voor alle afbeelding(en) in set) + Zoek in dit gebied Machtigingsverzoek + Wilt u dat wij uw huidige locatie gebruiken om de dichtstbijzijnde plaats weer te geven die foto\'s nodig heeft? + Kan zonder locatierechten de dichtstbijzijnde plaats waarvoor foto\'s nodig zijn niet weergeven Niet meer vragen Machtiging voor locatie vragen Naar machtiging voor locatie vragen als dat nodig is voor de functie meldingskaart dichtbij weergeven. + Er is iets misgegaan, we konden uw prestaties niet ophalen + U heeft zoveel bijdragen geleverd dat ons prestatieberekeningssysteem het niet aankan. Dit is de ultieme prestatie. + Eindigt op: + Campagnes weergeven + Bekijk de lopende campagnes + U ziet de campagnes niet meer. U kunt deze melding desgewenst echter opnieuw inschakelen in de Instellingen. + Voor deze functie is een netwerkverbinding vereist, controleer uw verbindingsinstellingen. + Er is een fout opgetreden tijdens het verwerken van de afbeelding. Probeer het opnieuw! + Token ophalen om te bewerken + Sjabloon toevoegen voor categoriecontrole + Categoriecontrole aanvragen voor %1$s + Categoriecontrole wordt aangevraagd + Categoriecontrole aangevraagd + Verzoek om categoriecontrole werkte niet + Categoriecontrole aangevraagd voor %1$s + Kan categoriecontrole niet aanvragen voor %1$s + Categoriecontrole aanvragen voor %1$s + Afgerond + Verzending bedankje is gelukt + Bedankje succesvol verzonden naar %1$s + Verzending bedankje naar %1$s is mislukt + Verzending bedankje is mislukt + Verstuur een bedankje voor %1$s + Voldoet dit aan de regels van het auteursrecht? + Is dit correct gecategoriseerd? + Valt dit binnen de scope? + 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 waardering + Oh, 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 + Volgende afbeelding + Ja, waarom niet + Als u op deze knop klikt, krijgt u nog een recent geüploade afbeelding van Wikimedia Commons + U kunt afbeeldingen bekijken en de kwaliteit van Wikimedia Commons verbeteren.\n De vier beoordelingsparameters zijn: \n - Valt deze afbeelding binnen de scope? \n - Voldoet deze afbeelding aan de regels van het auteursrecht? \n - Is deze afbeelding correct gecategoriseerd? \n - Als alles goed gaat kunt u ook de inzender bedanken. + Geen afbeeldingen gebruikt + Geen afbeeldingen teruggedraaid Geen afbeeldingen geüpload + Je heeft geen ongelezen meldingen U hebt geen gelezen melding Logboeken delen via Bekijk gelezen Ongelezen bekijken + Er is een fout opgetreden bij het kiezen van afbeeldingen Een ogenblik geduld… + Uitgelichte afbeeldingen zijn afbeeldingen van zeer bekwame fotografen en illustratoren op de site die door de Wikimedia Commons-gemeenschap zijn gekozen als de hoogste kwaliteit. + Afbeeldingen die zijn geüpload via Plaatsen in de buurt zijn de afbeeldingen die worden geüpload door plaatsen op de kaart te ontdekken. + Met deze functie kunnen redacteuren een bedankbericht sturen naar gebruikers die nuttige bewerkingen uitvoeren - door een kleine bedanklink op de geschiedenispagina of diff-pagina te gebruiken. + Kopiëren naar volgende media + Gekopieerd + Voorbeelden van goede afbeeldingen om te uploaden naar Commons + Voorbeelden van afbeeldingen die niet mogen worden geüpload + Sla deze afbeelding over + Download mislukt!!. We kunnen het bestand niet downloaden zonder toestemming voor externe opslag. + EXIF-tags beheren + Selecteer welke EXIF-tags in uploads moeten worden behouden Auteur Auteursrechten Locatie Cameramodel + Lensmodel + Serienummers + Software + Upload foto\'s rechtstreeks vanaf uw telefoon naar Wikimedia Commons. Download de Commons-app nu: %1$s + App delen via... + Afbeeldingsinfo + Geen categorieën gevonden + Geen beschrijvingen gevonden + Uploaden geannuleerd + Er zijn geen gegevens voor de titel of beschrijving van de vorige afbeelding + Waarom moet %1$s worden verwijderd? %1$s is geüpload door %2$s + Standaard beschrijvingstaal + Nomineren voor verwijdering + Afgerond + %1$s genomineerd voor verwijdering. + Mislukt + Kan verwijdering niet aanvragen. + Een selfie + Wazig + Onzin + Persfoto + Willekeurige foto van internet Logo + Want het is + Ik probeer categorieën bij te werken. + Categorie-update + Afgerond + + Categorie %1$s is toegevoegd. + Categorieën %1$s zijn toegevoegd. + + Kan geen categorieën toevoegen. + Categorieën bijwerken + Ik probeer de coördinaten bij te werken. + Coördinaten bijwerken + Afgerond + Coördinaten %1$s zijn toegevoegd. + Kan geen coördinaten toevoegen. + Kan coördinaten niet opvragen. Deel afbeelding via + U heeft nog geen bijdragen gedaan Profiel gemaakt! + De tekst is gekopieerd naar het klembord. + Melding gemarkeerd als gelezen + Er is een fout opgetreden! + Plaatsstatus: + Bestaat + Heeft foto nodig + Plaatstype: + Brug, museum, hotel, enz. + Er is iets misgegaan met inloggen, u moet uw wachtwoord opnieuw instellen !! + MEDIA + Plaats in de buurt gevonden + Is dit een foto van plaats %1$s? + Bladwijzers + Instellingen Bladwijzer verwijderd Als bladwijzer toegevoegd + Er is iets fout gegaan. Kan de achtergrond niet instellen + Instellen als achtergrond + Wordt ingesteld als achtergrond. Een ogenblik geduld... + Volgsysteem + Donker + Licht + Kan locatie-instellingen niet openen. Schakel locatie handmatig in + Kies voor de beste resultaten de modus van hoge nauwkeurigheid. + Locatie inschakelen? + In de buurt heeft locatie nodig om correct te werken + Heeft u deze twee foto\'s op dezelfde plek gemaakt? Wilt u de breedtegraad/lengtegraad van de afbeelding rechts gebruiken? + Laad meer + Geen plaatsen gevonden, probeer uw zoekcriteria te wijzigen. + Voorgestelde verbeteringen: + - Voeg categorieën toe aan deze afbeelding om de bruikbaarheid te verbeteren. + - Voeg deze afbeelding toe aan het bijbehorende Wikipedia-artikel dat geen afbeeldingen heeft. + Afbeelding toevoegen aan Wikipedia + Wil je deze afbeelding toevoegen aan het Wikipedia-artikel in het %1$ Bevestigen Instructies + 1. Gebruik de volgende wikitekst: + 2. Als u op Bevestigen klikt, wordt het Wikipedia-artikel geopend + 3. Zoek een geschikte sectie in het artikel voor uw afbeelding + 4. Klik op het pictogram Bewerken (zoals een potlood) voor die sectie. + 5. Plak de wikitekst op de juiste plaats. + 7. Publiceer het artikel + Kopieer wikicode naar klembord pauzeren hervatten Gepauzeerd + Meer + Favorieten + Prestaties + Scorebord + Ranking: + Aantal: + Ranking + Gebruiker + Aantal + Instellen als leaderboard-avatar + Instellen als avatar, even geduld aub + Avatar ingesteld + Fout bij instellen nieuwe avatar, probeer het opnieuw + Instellen als avatar + Jaarlijks + Wekelijks + Alle tijden + Uploaden + In de buurt + Gebruikt + Mijn ranking + Mapbox-telemetrie + Stuur geanonimiseerde locatie- en gebruiksgegevens naar Mapbox bij gebruik van de functie In de buurt + &#169; <a href=\"https://www.mapbox.com/about/maps/\">Mapbox</a> &#169; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> <a href=\"https://www.mapbox.com/map-feedback/\">Verbeter deze kaart</a> + Beperkte verbindingsmodus ingeschakeld! + Beperkte verbindingsmodus uitgeschakeld. Uploads die in behandeling zijn, worden nu hervat. + Beperkte verbindingsmodus + Kwaliteitsafbeeldingen + Kwaliteitsafbeeldingen zijn diagrammen of foto\'s die voldoen aan bepaalde kwaliteitsnormen (die meestal technisch van aard zijn) en waardevol zijn voor Wikimedia-projecten + Uploaden hervatten… + Uploaden onderbreken… + U hebt de beperkte verbindingsmodus ingeschakeld. Alle uploads worden gepauzeerd en worden hervat zodra u deze modus uitschakelt. + Beperkte verbindingsmodus is ingeschakeld. + Schrijf een kort bijschrift dat zegt wat uw foto laat zien. Geef in de beschrijving aan wat de foto interessant of typisch of zeldzaam maakt en leg de context uit, zichtbaar of niet. Gebruik zoveel mogelijk exacte terminologie. + Zoek en selecteer alle concepten die deze afbeelding uitbeeldt. Wees zo specifiek mogelijk. Als de afbeelding meerdere items weergeeft, kies ze dan allemaal binnen redelijke grenzen. Kies geen generieke tags als er meer specifieke tags beschikbaar zijn. + Selecteer de juiste categorieën. In tegenstelling tot afbeeldingen zijn categorieën alleen in het Engels. + Commons maakt uw foto\'s herbruikbaar en aangepasbaar voor iedereen. Wilt u afstand doen van alle rechten? Wilt u worden toegeschreven? Wilt u dat aanpassingen dezelfde licentie gebruiken? + Beeldt af + Medialicentie + Mediadetails + Categoriepagina bekijken + Itempagina bekijken + Taal van de gebruikersinterface van de app + Verwijdert onderschrift en beschrijving + Meer lezen + In alle talen + Kies een locatie + Pannen en zoomen om aan te passen + Locatiekiezer afsluiten + Selecteer locatie + Toon in kaart-app + Locatie bewerken + De afbeeldingsweergave van de locatiekiezer + De schaduw van de afbeeldingsweergave van de locatiekiezer + Afbeeldingslocatie + Controleer of de locatie correct is diff --git a/app/src/main/res/values-nqo/strings.xml b/app/src/main/res/values-nqo/strings.xml index 9b49d1f49..fd4c10a98 100644 --- a/app/src/main/res/values-nqo/strings.xml +++ b/app/src/main/res/values-nqo/strings.xml @@ -37,7 +37,7 @@ ߟߊ߬ߦߟߍ߬ߟߌ ߓߘߊ߫ ߘߊߡߌ߬ߣߊ߬߹ %1$s ߟߊ߬ߦߟߍ߬ߟߌ ߊ߬ ߛߐ߲߬ߞߌ߲߫ ߞߴߌ ߟߊ߫ ߟߊ߬ߦߟߍ߬ߣߍ߲ ߠߎ߬ ߘߐߜߍ߫ - %1$s ߟߊ߬ߦߟߍ߬ߟߌ ߓߘߊ߫ ߘߊߡߌ߬ߣߊ߫ + %1$s ߟߊ߬ߦߟߍ ߦߴߌ ߘߐ߫ %1$s ߟߊ߬ߦߟߍ߬ߟߌ ߦߋ߫ ߛߋ߲߬ߠߊ߫ %1$s ߟߊ߬ߦߟߍ߬ߟߌ ߞߎ߲߬ߘߏ߲߬ߠߌ߲ ߦߴߌ ߘߐ߫ %1$s ߟߊ߬ߦߟߍ߬ߟߌ ߓߘߊ߫ ߗߌߙߏ߲߫ @@ -53,6 +53,7 @@ ߛߌ߬ߢߐ߲߮ ߒ ߠߊ߫ ߟߊ߬ߦߟߍ߬ߣߍ߲ ߠߎ߬ ߊ߬ ߟߊߖߍ߲ߛߍ߲߫ + ߞߐߕߐ߮ ߞߐߜߍ ߦߋ߫ ߝߍ߬ߛߓߍߟߌ (ߡߊߢߌ߬ߣߌ߲߬ߞߊ߬ߣߍ߲) ߝߍ߬ߛߓߍߟߌ ߘߏ߫ ߡߊߛߐ߫ ߞߐߕߐ߮ ߣߌ߲߬ ߠߊ߫ ߖߊ߰ߣߌ߲߫ ߞߊ߲߬ߛߓߍߟߌ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index f9cf246a2..a73f71c07 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -407,6 +407,9 @@ Obrazy bez kategorii rzadko nadają się do użycia. Czy na pewno chcesz kontynuować bez wybierania kategorii? Nie wybrano żadnych obrazów Obrazy ze wskazanymi przedstawieniami są łatwiejsze do znalezienia i częściej używane. Czy na pewno chcesz kontynuować bez wybierania przedstawień? + Anuluj przesyłanie + Użycie przycisku „Wstecz” spowoduje anulowanie przesyłania i utratę postępów + Kontynuuj przesyłanie (Dla wszystkich obrazów w zestawie) Przeszukaj ten obszar Prośba o pozwolenie diff --git a/app/src/main/res/values-pms/strings.xml b/app/src/main/res/values-pms/strings.xml index 6240fb0d8..4d4e8b057 100644 --- a/app/src/main/res/values-pms/strings.xml +++ b/app/src/main/res/values-pms/strings.xml @@ -374,6 +374,9 @@ Le plance sensa categorìa, a so da ràir dovràbij. É-lo sigur ëd vorèj continué sensa serne dle categorìe? Gnun-e descrission selessionà Le plance con dle descrission a l\'é pi bel fé troveje e a l\'é pi probàbil ch\'as deuvro. É-lo sigur ëd vorèj continué sensa selessioné dla descrission? + Anulé ël cariament + An sgnacand an sël boton andré, ës cariament a sarà anulà e chiel a perdrà ij sò progress + Andé anans a carié (Për tute le plance dl\'ansem) Arserché an costa zòna Arcesta d\'autorisassion diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 6101bab17..98712a46e 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -390,6 +390,9 @@ Imagens sem categorias raramente são utilizáveis. Tem certeza de que deseja continuar sem selecionar categorias? Nenhuma representação selecionada Imagens com representações são mais facilmente encontradas e mais propensas a serem usadas. Tem certeza de que deseja continuar sem selecionar representações? + Cancelar carregamento + Usar o botão Voltar cancelará este carregamento e você perderá seu progresso + Continuar carregamento (Para todas as imagens no conjunto) Pesquisar nesta área Pedido de Permissão diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 618d3f3cc..9ba02bca8 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -23,6 +23,7 @@ * Patriccck * Redredsonia * Rubin16 +* Thothsum * Vlad5250 * VoxelJ * Wikisaurus @@ -418,6 +419,9 @@ Изображения без категорий используются редко. Вы уверены, что хотите продолжить, не выбрав категории? Описания не выбраны Изображения с описаниями будет проще найти и использовать. Вы уверены, что хотите продолжить без выбора описаний? + Отменить загрузку + Использование кнопки «Назад» отменит эту загрузку + Продолжить загрузку (Для всех изображений в наборе) Искать в этой области Запрос разрешения @@ -634,5 +638,7 @@ Выйти из окна выбора местоположения Выберите местоположение Показать в приложении карты + Изменить местоположение + Расположение изображения Проверьте правильность местоположения diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 61f5b8def..d14b79eda 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -395,6 +395,9 @@ Obrázky bez kategórií sú zriedka použiteľné. Naozaj chcete nahrať obrázok bez výberu kategórií? Neboli zvolené žiadne zobrazenia Kreslené alebo maľované obrázky je ľahšie nájsť a použiť. Chcete naozaj pokračovať bez zadania spôsobu vykresľovania obrázkov? + Zrušiť nahrávanie + Použitím tlačidla späť zrušíte toto nahrávanie aj celý pokrok nahrávania + Pokračujte v nahrávaní (Pre všetky obrázky v sade) Prehľadať túto oblasť Je požadované oprávnenie diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index c3be6ee2f..420143bc7 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -381,6 +381,9 @@ Bilder utan kategorier används sällan. Är du säker på att du vill fortsätta utan att välja kategorier? Inga beskrivningar har valts Bilder med beskrivningar kan hittas lättare och kommer mer sannolikt användas. Är du säker på att du vill fortsätta utan att välja beskrivningar? + Avbryt uppladdning + Bakåtknappen avbryter denna uppladdning och du förlorar dina framsteg + Fortsätt uppladdning (För alla bilder i uppsättningen) Sök i detta område Begäran om behörighet diff --git a/app/src/main/res/values-ta/error.xml b/app/src/main/res/values-ta/error.xml index 57a83c13a..05680bfaf 100644 --- a/app/src/main/res/values-ta/error.xml +++ b/app/src/main/res/values-ta/error.xml @@ -1,7 +1,11 @@ + பொதுவகம் செயலிழந்தது + ஏதோ தவறாகியுள்ளது! + நீங்கள் என்ன செய்கிறீர்கள் என்று எங்களிடம் கூறுங்கள், பின்னர் அதை எங்களுக்கு மின்னஞ்சல் மூலம் பகிரவும். அதை சரிசெய்ய எங்களுக்கு உதவும்! நன்றி! diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index 2a253a337..d1068eeea 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -1,6 +1,7 @@