diff --git a/CHANGELOG.md b/CHANGELOG.md index e86f1b0e8..035835839 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Wikimedia Commons for Android +## v2.6.7 +- Added null checks to prevent frequent crashes in ModificationsSyncAdapter + ## v2.6.6 - Refactored Dagger to fix crashes encountered in production - Fixed "?" displaying in description of Nearby places diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..ee7f42e06 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1 @@ +Please see our guidelines in the wiki: https://github.com/commons-app/apps-android-commons/wiki/Volunteers-welcome%21 diff --git a/app/build.gradle b/app/build.gradle index 284b07ecc..98693126e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -83,8 +83,8 @@ android { defaultConfig { applicationId 'fr.free.nrw.commons' - versionCode 81 - versionName '2.6.6' + versionCode 82 + versionName '2.6.7' setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName()) minSdkVersion project.minSdkVersion diff --git a/app/src/main/java/fr/free/nrw/commons/auth/AccountUtil.java b/app/src/main/java/fr/free/nrw/commons/auth/AccountUtil.java index a020c1fb7..0513280b5 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/AccountUtil.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/AccountUtil.java @@ -19,6 +19,8 @@ import static fr.free.nrw.commons.modifications.ModificationsContentProvider.MOD public class AccountUtil { public static final String ACCOUNT_TYPE = "fr.free.nrw.commons"; + public static final String AUTH_COOKIE = "authCookie"; + public static final String AUTH_TOKEN_TYPE = "CommonsAndroid"; private final Context context; public AccountUtil(Context context) { diff --git a/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java index e793d5eb9..e39528252 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java @@ -1,71 +1,29 @@ package fr.free.nrw.commons.auth; -import android.accounts.Account; -import android.accounts.AccountManager; -import android.accounts.AccountManagerFuture; import android.os.Bundle; import javax.inject.Inject; +import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.theme.NavigationBaseActivity; -import io.reactivex.Single; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; -import timber.log.Timber; -import static android.accounts.AccountManager.KEY_ACCOUNT_NAME; -import static fr.free.nrw.commons.auth.AccountUtil.ACCOUNT_TYPE; +import static fr.free.nrw.commons.auth.AccountUtil.AUTH_COOKIE; public abstract class AuthenticatedActivity extends NavigationBaseActivity { @Inject SessionManager sessionManager; - + @Inject + MediaWikiApi mediaWikiApi; private String authCookie; - - private void getAuthCookie(Account account, AccountManager accountManager) { - Single.fromCallable(() -> accountManager.blockingGetAuthToken(account, "", false)) - .subscribeOn(Schedulers.io()) - .doOnError(Timber::e) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe( - this:: onAuthCookieAcquired, - throwable -> onAuthFailure()); - } - - private void addAccount(AccountManager accountManager) { - Single.just(accountManager.addAccount(ACCOUNT_TYPE, null, null, - null, AuthenticatedActivity.this, null, null)) - .subscribeOn(Schedulers.io()) - .map(AccountManagerFuture::getResult) - .doOnEvent((bundle, throwable) -> { - if (!bundle.containsKey(KEY_ACCOUNT_NAME)) { - throw new RuntimeException("Bundle doesn't contain account-name key: " - + KEY_ACCOUNT_NAME); - } - }) - .map(bundle -> bundle.getString(KEY_ACCOUNT_NAME)) - .doOnError(Timber::e) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(s -> { - Account[] allAccounts = accountManager.getAccountsByType(ACCOUNT_TYPE); - Account curAccount = allAccounts[0]; - getAuthCookie(curAccount, accountManager); - }, - throwable -> onAuthFailure()); - } - protected void requestAuthToken() { if (authCookie != null) { onAuthCookieAcquired(authCookie); return; } - AccountManager accountManager = AccountManager.get(this); - Account curAccount = sessionManager.getCurrentAccount(); - if (curAccount == null) { - addAccount(accountManager); - } else { - getAuthCookie(curAccount, accountManager); + authCookie = sessionManager.getAuthCookie(); + if (authCookie != null) { + onAuthCookieAcquired(authCookie); } } @@ -74,14 +32,14 @@ public abstract class AuthenticatedActivity extends NavigationBaseActivity { super.onCreate(savedInstanceState); if (savedInstanceState != null) { - authCookie = savedInstanceState.getString("authCookie"); + authCookie = savedInstanceState.getString(AUTH_COOKIE); } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - outState.putString("authCookie", authCookie); + outState.putString(AUTH_COOKIE, authCookie); } protected abstract void onAuthCookieAcquired(String authCookie); diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java index 780f4310b..c5707b970 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java @@ -1,6 +1,9 @@ package fr.free.nrw.commons.auth; +import android.accounts.Account; import android.accounts.AccountAuthenticatorActivity; +import android.accounts.AccountAuthenticatorResponse; +import android.accounts.AccountManager; import android.app.ProgressDialog; import android.content.Intent; import android.content.SharedPreferences; @@ -8,6 +11,7 @@ import android.os.Bundle; import android.support.annotation.ColorRes; import android.support.annotation.NonNull; import android.support.annotation.StringRes; +import android.support.design.widget.TextInputLayout; import android.support.v4.app.NavUtils; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatDelegate; @@ -21,6 +25,8 @@ import android.widget.Button; import android.widget.EditText; import android.widget.TextView; +import java.io.IOException; + import javax.inject.Inject; import javax.inject.Named; @@ -36,10 +42,16 @@ import fr.free.nrw.commons.contributions.ContributionsActivity; import fr.free.nrw.commons.di.ApplicationlessInjection; import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.theme.NavigationBaseActivity; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; import timber.log.Timber; import static android.view.KeyEvent.KEYCODE_ENTER; +import static android.view.View.VISIBLE; import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE; +import static fr.free.nrw.commons.auth.AccountUtil.ACCOUNT_TYPE; +import static fr.free.nrw.commons.auth.AccountUtil.AUTH_TOKEN_TYPE; public class LoginActivity extends AccountAuthenticatorActivity { @@ -58,6 +70,7 @@ public class LoginActivity extends AccountAuthenticatorActivity { @BindView(R.id.loginTwoFactor) EditText twoFactorEdit; @BindView(R.id.error_message_container) ViewGroup errorMessageContainer; @BindView(R.id.error_message) TextView errorMessage; + @BindView(R.id.two_factor_container)TextInputLayout twoFactorContainer; ProgressDialog progressDialog; private AppCompatDelegate delegate; private LoginTextWatcher textWatcher = new LoginTextWatcher(); @@ -122,14 +135,109 @@ public class LoginActivity extends AccountAuthenticatorActivity { super.onDestroy(); } - private LoginTask getLoginTask() { - return new LoginTask( - this, - canonicializeUsername(usernameEdit.getText().toString()), - passwordEdit.getText().toString(), - twoFactorEdit.getText().toString(), - accountUtil, mwApi, defaultPrefs - ); + private void performLogin() { + Timber.d("Login to start!"); + final String username = canonicializeUsername(usernameEdit.getText().toString()); + final String password = passwordEdit.getText().toString(); + String twoFactorCode = twoFactorEdit.getText().toString(); + + showLoggingProgressBar(); + Observable.fromCallable(() -> login(username, password, twoFactorCode)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(result -> handleLogin(username, password, result)); + } + + private String login(String username, String password, String twoFactorCode) { + try { + if (twoFactorCode.isEmpty()) { + return mwApi.login(username, password); + } else { + return mwApi.login(username, password, twoFactorCode); + } + } catch (IOException e) { + // Do something better! + return "NetworkFailure"; + } + } + + private void handleLogin(String username, String password, String result) { + Timber.d("Login done!"); + if (result.equals("PASS")) { + handlePassResult(username, password); + } else { + handleOtherResults(result); + } + } + + private void showLoggingProgressBar() { + progressDialog = new ProgressDialog(this); + progressDialog.setIndeterminate(true); + progressDialog.setTitle(getString(R.string.logging_in_title)); + progressDialog.setMessage(getString(R.string.logging_in_message)); + progressDialog.setCanceledOnTouchOutside(false); + progressDialog.show(); + } + + private void handlePassResult(String username, String password) { + showSuccessAndDismissDialog(); + requestAuthToken(); + AccountAuthenticatorResponse response = null; + + Bundle extras = getIntent().getExtras(); + if (extras != null) { + Timber.d("Bundle of extras: %s", extras); + response = extras.getParcelable(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE); + if (response != null) { + Bundle authResult = new Bundle(); + authResult.putString(AccountManager.KEY_ACCOUNT_NAME, username); + authResult.putString(AccountManager.KEY_ACCOUNT_TYPE, ACCOUNT_TYPE); + response.onResult(authResult); + } + } + + accountUtil.createAccount(response, username, password); + startMainActivity(); + } + + protected void requestAuthToken() { + AccountManager accountManager = AccountManager.get(this); + Account curAccount = sessionManager.getCurrentAccount(); + if (curAccount != null) { + accountManager.setAuthToken(curAccount, AUTH_TOKEN_TYPE, mwApi.getAuthCookie()); + } + } + + /** + * Match known failure message codes and provide messages. + * + * @param result String + */ + private void handleOtherResults(String result) { + if (result.equals("NetworkFailure")) { + // Matches NetworkFailure which is created by the doInBackground method + showMessageAndCancelDialog(R.string.login_failed_network); + } else if (result.toLowerCase().contains("nosuchuser".toLowerCase()) || result.toLowerCase().contains("noname".toLowerCase())) { + // Matches nosuchuser, nosuchusershort, noname + showMessageAndCancelDialog(R.string.login_failed_username); + emptySensitiveEditFields(); + } else if (result.toLowerCase().contains("wrongpassword".toLowerCase())) { + // Matches wrongpassword, wrongpasswordempty + showMessageAndCancelDialog(R.string.login_failed_password); + emptySensitiveEditFields(); + } else if (result.toLowerCase().contains("throttle".toLowerCase())) { + // Matches unknown throttle error codes + showMessageAndCancelDialog(R.string.login_failed_throttled); + } else if (result.toLowerCase().contains("userblocked".toLowerCase())) { + // Matches login-userblocked + showMessageAndCancelDialog(R.string.login_failed_blocked); + } else if (result.equals("2FA")) { + askUserForTwoFactorAuth(); + } else { + // Occurs with unhandled login failure codes + Timber.d("Login failed with reason: %s", result); + showMessageAndCancelDialog(R.string.login_failed_generic); + } } /** @@ -181,12 +289,10 @@ public class LoginActivity extends AccountAuthenticatorActivity { } public void askUserForTwoFactorAuth() { - if (BuildConfig.DEBUG) { - twoFactorEdit.setVisibility(View.VISIBLE); - showMessageAndCancelDialog(R.string.login_failed_2fa_needed); - } else { - showMessageAndCancelDialog(R.string.login_failed_2fa_not_supported); - } + progressDialog.dismiss(); + twoFactorContainer.setVisibility(VISIBLE); + twoFactorEdit.setVisibility(VISIBLE); + showMessageAndCancelDialog(R.string.login_failed_2fa_needed); } public void showMessageAndCancelDialog(@StringRes int resId) { @@ -209,12 +315,6 @@ public class LoginActivity extends AccountAuthenticatorActivity { finish(); } - private void performLogin() { - Timber.d("Login to start!"); - LoginTask task = getLoginTask(); - task.execute(); - } - private void signUp() { Intent intent = new Intent(this, SignupActivity.class); startActivity(intent); @@ -238,7 +338,7 @@ public class LoginActivity extends AccountAuthenticatorActivity { private void showMessage(@StringRes int resId, @ColorRes int colorResId) { errorMessage.setText(getString(resId)); errorMessage.setTextColor(ContextCompat.getColor(this, colorResId)); - errorMessageContainer.setVisibility(View.VISIBLE); + errorMessageContainer.setVisibility(VISIBLE); } private AppCompatDelegate getDelegate() { @@ -260,7 +360,7 @@ public class LoginActivity extends AccountAuthenticatorActivity { @Override public void afterTextChanged(Editable editable) { boolean enabled = usernameEdit.getText().length() != 0 && passwordEdit.getText().length() != 0 - && (BuildConfig.DEBUG || twoFactorEdit.getText().length() != 0 || twoFactorEdit.getVisibility() != View.VISIBLE); + && (BuildConfig.DEBUG || twoFactorEdit.getText().length() != 0 || twoFactorEdit.getVisibility() != VISIBLE); loginButton.setEnabled(enabled); } } diff --git a/app/src/main/java/fr/free/nrw/commons/auth/SessionManager.java b/app/src/main/java/fr/free/nrw/commons/auth/SessionManager.java index 779b73b34..a7e62c34e 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/SessionManager.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/SessionManager.java @@ -2,15 +2,13 @@ package fr.free.nrw.commons.auth; import android.accounts.Account; import android.accounts.AccountManager; -import android.accounts.AuthenticatorException; -import android.accounts.OperationCanceledException; import android.content.Context; - -import java.io.IOException; +import android.content.SharedPreferences; import fr.free.nrw.commons.mwapi.MediaWikiApi; import io.reactivex.Completable; import io.reactivex.Observable; +import timber.log.Timber; import static fr.free.nrw.commons.auth.AccountUtil.ACCOUNT_TYPE; @@ -21,11 +19,13 @@ public class SessionManager { private final Context context; private final MediaWikiApi mediaWikiApi; private Account currentAccount; // Unlike a savings account... ;-) + private SharedPreferences sharedPreferences; - public SessionManager(Context context, MediaWikiApi mediaWikiApi) { + public SessionManager(Context context, MediaWikiApi mediaWikiApi, SharedPreferences sharedPreferences) { this.context = context; this.mediaWikiApi = mediaWikiApi; this.currentAccount = null; + this.sharedPreferences = sharedPreferences; } /** @@ -51,14 +51,28 @@ public class SessionManager { } accountManager.invalidateAuthToken(ACCOUNT_TYPE, mediaWikiApi.getAuthCookie()); - try { - String authCookie = accountManager.blockingGetAuthToken(curAccount, "", false); - mediaWikiApi.setAuthCookie(authCookie); - return true; - } catch (OperationCanceledException | NullPointerException | IOException | AuthenticatorException e) { - e.printStackTrace(); + String authCookie = getAuthCookie(); + + if (authCookie == null) { return false; } + mediaWikiApi.setAuthCookie(authCookie); + return true; + } + + public String getAuthCookie() { + boolean isLoggedIn = sharedPreferences.getBoolean("isUserLoggedIn", false); + + if (!isLoggedIn) { + Timber.e("User is not logged in"); + return null; + } else { + String authCookie = sharedPreferences.getString("getAuthCookie", null); + if (authCookie == null) { + Timber.e("Auth cookie is null even after login"); + } + return authCookie; + } } public Completable clearAllAccounts() { diff --git a/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticator.java b/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticator.java index c08e27966..78039f6a9 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticator.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticator.java @@ -5,53 +5,37 @@ import android.accounts.Account; import android.accounts.AccountAuthenticatorResponse; import android.accounts.AccountManager; import android.accounts.NetworkErrorException; +import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import java.io.IOException; +import fr.free.nrw.commons.contributions.ContributionsContentProvider; +import fr.free.nrw.commons.modifications.ModificationsContentProvider; -import fr.free.nrw.commons.mwapi.MediaWikiApi; - -import static android.accounts.AccountManager.ERROR_CODE_UNSUPPORTED_OPERATION; -import static android.accounts.AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE; -import static android.accounts.AccountManager.KEY_ACCOUNT_NAME; -import static android.accounts.AccountManager.KEY_ACCOUNT_TYPE; -import static android.accounts.AccountManager.KEY_AUTHTOKEN; -import static android.accounts.AccountManager.KEY_BOOLEAN_RESULT; -import static android.accounts.AccountManager.KEY_ERROR_CODE; -import static android.accounts.AccountManager.KEY_ERROR_MESSAGE; -import static android.accounts.AccountManager.KEY_INTENT; import static fr.free.nrw.commons.auth.AccountUtil.ACCOUNT_TYPE; -import static fr.free.nrw.commons.auth.LoginActivity.PARAM_USERNAME; +import static fr.free.nrw.commons.auth.AccountUtil.AUTH_TOKEN_TYPE; public class WikiAccountAuthenticator extends AbstractAccountAuthenticator { + private static final String[] SYNC_AUTHORITIES = {ContributionsContentProvider.CONTRIBUTION_AUTHORITY, ModificationsContentProvider.MODIFICATIONS_AUTHORITY}; + @NonNull private final Context context; - private MediaWikiApi mediaWikiApi; - WikiAccountAuthenticator(Context context, MediaWikiApi mwApi) { + public WikiAccountAuthenticator(@NonNull Context context) { super(context); this.context = context; - this.mediaWikiApi = mwApi; } - private Bundle unsupportedOperation() { + @Override + public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) { Bundle bundle = new Bundle(); - bundle.putInt(KEY_ERROR_CODE, ERROR_CODE_UNSUPPORTED_OPERATION); - - // HACK: the docs indicate that this is a required key bit it's not displayed to the user. - bundle.putString(KEY_ERROR_MESSAGE, ""); - + bundle.putString("test", "editProperties"); return bundle; } - private boolean supportedAccountType(@Nullable String type) { - return ACCOUNT_TYPE.equals(type); - } - @Override public Bundle addAccount(@NonNull AccountAuthenticatorResponse response, @NonNull String accountType, @Nullable String authTokenType, @@ -59,86 +43,48 @@ public class WikiAccountAuthenticator extends AbstractAccountAuthenticator { throws NetworkErrorException { if (!supportedAccountType(accountType)) { - return unsupportedOperation(); + Bundle bundle = new Bundle(); + bundle.putString("test", "addAccount"); + return bundle; } return addAccount(response); } - private Bundle addAccount(AccountAuthenticatorResponse response) { - Intent Intent = new Intent(context, LoginActivity.class); - Intent.putExtra(KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response); - - Bundle bundle = new Bundle(); - bundle.putParcelable(KEY_INTENT, Intent); - - return bundle; - } - @Override public Bundle confirmCredentials(@NonNull AccountAuthenticatorResponse response, @NonNull Account account, @Nullable Bundle options) throws NetworkErrorException { - return unsupportedOperation(); + Bundle bundle = new Bundle(); + bundle.putString("test", "confirmCredentials"); + return bundle; } @Override - public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) { - return unsupportedOperation(); - } - - private String getAuthCookie(String username, String password) throws IOException { - //TODO add 2fa support here - String result = mediaWikiApi.login(username, password); - if (result.equals("PASS")) { - return mediaWikiApi.getAuthCookie(); - } else { - return null; - } - } - - @Override - public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account, - String authTokenType, Bundle options) throws NetworkErrorException { - // Extract the username and password from the Account Manager, and ask - // the server for an appropriate AuthToken. - final AccountManager am = AccountManager.get(context); - final String password = am.getPassword(account); - if (password != null) { - String authCookie; - try { - authCookie = getAuthCookie(account.name, password); - } catch (IOException e) { - // Network error! - e.printStackTrace(); - throw new NetworkErrorException(e); - } - if (authCookie != null) { - final Bundle result = new Bundle(); - result.putString(KEY_ACCOUNT_NAME, account.name); - result.putString(KEY_ACCOUNT_TYPE, ACCOUNT_TYPE); - result.putString(KEY_AUTHTOKEN, authCookie); - return result; - } - } - - // If we get here, then we couldn't access the user's password - so we - // need to re-prompt them for their credentials. We do that by creating - // an intent to display our AuthenticatorActivity panel. - final Intent intent = new Intent(context, LoginActivity.class); - intent.putExtra(PARAM_USERNAME, account.name); - intent.putExtra(KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response); - final Bundle bundle = new Bundle(); - bundle.putParcelable(KEY_INTENT, intent); + public Bundle getAuthToken(@NonNull AccountAuthenticatorResponse response, + @NonNull Account account, @NonNull String authTokenType, + @Nullable Bundle options) + throws NetworkErrorException { + Bundle bundle = new Bundle(); + bundle.putString("test", "getAuthToken"); return bundle; } @Nullable @Override public String getAuthTokenLabel(@NonNull String authTokenType) { - //Note: the wikipedia app actually returns a string here.... - //return supportedAccountType(authTokenType) ? context.getString(R.string.wikimedia) : null; - return null; + return supportedAccountType(authTokenType) ? AUTH_TOKEN_TYPE : null; + } + + @Nullable + @Override + public Bundle updateCredentials(@NonNull AccountAuthenticatorResponse response, + @NonNull Account account, @Nullable String authTokenType, + @Nullable Bundle options) + throws NetworkErrorException { + Bundle bundle = new Bundle(); + bundle.putString("test", "updateCredentials"); + return bundle; } @Nullable @@ -147,16 +93,50 @@ public class WikiAccountAuthenticator extends AbstractAccountAuthenticator { @NonNull Account account, @NonNull String[] features) throws NetworkErrorException { Bundle bundle = new Bundle(); - bundle.putBoolean(KEY_BOOLEAN_RESULT, false); + bundle.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, false); return bundle; } - @Nullable - @Override - public Bundle updateCredentials(@NonNull AccountAuthenticatorResponse response, - @NonNull Account account, @Nullable String authTokenType, - @Nullable Bundle options) throws NetworkErrorException { - return unsupportedOperation(); + private boolean supportedAccountType(@Nullable String type) { + return ACCOUNT_TYPE.equals(type); } + private Bundle addAccount(AccountAuthenticatorResponse response) { + Intent intent = new Intent(context, LoginActivity.class); + intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response); + + Bundle bundle = new Bundle(); + bundle.putParcelable(AccountManager.KEY_INTENT, intent); + + return bundle; + } + + private Bundle unsupportedOperation() { + Bundle bundle = new Bundle(); + bundle.putInt(AccountManager.KEY_ERROR_CODE, AccountManager.ERROR_CODE_UNSUPPORTED_OPERATION); + + // HACK: the docs indicate that this is a required key bit it's not displayed to the user. + bundle.putString(AccountManager.KEY_ERROR_MESSAGE, ""); + + return bundle; + } + + @Override + public Bundle getAccountRemovalAllowed(AccountAuthenticatorResponse response, + Account account) throws NetworkErrorException { + Bundle result = super.getAccountRemovalAllowed(response, account); + + if (result.containsKey(AccountManager.KEY_BOOLEAN_RESULT) + && !result.containsKey(AccountManager.KEY_INTENT)) { + boolean allowed = result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT); + + if (allowed) { + for (String auth : SYNC_AUTHORITIES) { + ContentResolver.cancelSync(account, auth); + } + } + } + + return result; + } } diff --git a/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java b/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java index 6bc6de076..826f2ceee 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java @@ -1,30 +1,26 @@ package fr.free.nrw.commons.auth; +import android.accounts.AbstractAccountAuthenticator; import android.content.Intent; import android.os.IBinder; - -import javax.inject.Inject; +import android.support.annotation.Nullable; import fr.free.nrw.commons.di.CommonsDaggerService; -import fr.free.nrw.commons.mwapi.MediaWikiApi; - -import static android.accounts.AccountManager.ACTION_AUTHENTICATOR_INTENT; public class WikiAccountAuthenticatorService extends CommonsDaggerService { - @Inject MediaWikiApi mwApi; - private WikiAccountAuthenticator wikiAccountAuthenticator = null; + @Nullable + private AbstractAccountAuthenticator authenticator; @Override - public IBinder onBind(Intent intent) { - if (!intent.getAction().equals(ACTION_AUTHENTICATOR_INTENT)) { - return null; - } - - if (wikiAccountAuthenticator == null) { - wikiAccountAuthenticator = new WikiAccountAuthenticator(this, mwApi); - } - return wikiAccountAuthenticator.getIBinder(); + public void onCreate() { + super.onCreate(); + authenticator = new WikiAccountAuthenticator(this); } + @Nullable + @Override + public IBinder onBind(Intent intent) { + return authenticator == null ? null : authenticator.getIBinder(); + } } diff --git a/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.java b/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.java index f7e11dbf8..efc9c29b6 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.java +++ b/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.java @@ -96,14 +96,15 @@ public class CommonsApplicationModule { @Provides @Singleton public SessionManager providesSessionManager(Context context, - MediaWikiApi mediaWikiApi) { - return new SessionManager(context, mediaWikiApi); + MediaWikiApi mediaWikiApi, + @Named("default_preferences") SharedPreferences sharedPreferences) { + return new SessionManager(context, mediaWikiApi, sharedPreferences); } @Provides @Singleton - public MediaWikiApi provideMediaWikiApi(Context context) { - return new ApacheHttpClientMediaWikiApi(context, BuildConfig.WIKIMEDIA_API_HOST); + public MediaWikiApi provideMediaWikiApi(Context context, @Named("default_preferences") SharedPreferences sharedPreferences) { + return new ApacheHttpClientMediaWikiApi(context, BuildConfig.WIKIMEDIA_API_HOST, sharedPreferences); } @Provides diff --git a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java index 85bfedcfa..5d716d738 100644 --- a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java @@ -1,9 +1,6 @@ package fr.free.nrw.commons.modifications; import android.accounts.Account; -import android.accounts.AccountManager; -import android.accounts.AuthenticatorException; -import android.accounts.OperationCanceledException; import android.content.AbstractThreadedSyncAdapter; import android.content.ContentProviderClient; import android.content.Context; @@ -16,7 +13,7 @@ import java.io.IOException; import javax.inject.Inject; -import fr.free.nrw.commons.CommonsApplication; +import fr.free.nrw.commons.auth.SessionManager; import fr.free.nrw.commons.contributions.Contribution; import fr.free.nrw.commons.contributions.ContributionDao; import fr.free.nrw.commons.contributions.ContributionsContentProvider; @@ -29,6 +26,8 @@ public class ModificationsSyncAdapter extends AbstractThreadedSyncAdapter { @Inject MediaWikiApi mwApi; @Inject ContributionDao contributionDao; @Inject ModifierSequenceDao modifierSequenceDao; + @Inject + SessionManager sessionManager; public ModificationsSyncAdapter(Context context, boolean autoInitialize) { super(context, autoInitialize); @@ -56,16 +55,7 @@ public class ModificationsSyncAdapter extends AbstractThreadedSyncAdapter { return; } - String authCookie; - try { - authCookie = AccountManager.get(getContext()).blockingGetAuthToken(account, "", false); - } catch (OperationCanceledException | AuthenticatorException e) { - throw new RuntimeException(e); - } catch (IOException e) { - Timber.d("Could not authenticate :("); - return; - } - + String authCookie = sessionManager.getAuthCookie(); if (isNullOrWhiteSpace(authCookie)) { Timber.d("Could not authenticate :("); return; @@ -92,22 +82,31 @@ public class ModificationsSyncAdapter extends AbstractThreadedSyncAdapter { while (!allModifications.isAfterLast()) { ModifierSequence sequence = modifierSequenceDao.fromCursor(allModifications); Contribution contrib; - Cursor contributionCursor; + + if (contributionsClient == null) { + Timber.e("ContributionsClient is null. This should not happen!"); + return; + } + try { contributionCursor = contributionsClient.query(sequence.getMediaUri(), null, null, null, null); } catch (RemoteException e) { throw new RuntimeException(e); } - contributionCursor.moveToFirst(); + + if (contributionCursor != null) { + contributionCursor.moveToFirst(); + } + contrib = contributionDao.fromCursor(contributionCursor); - if (contrib.getState() == Contribution.STATE_COMPLETED) { + if (contrib != null && contrib.getState() == Contribution.STATE_COMPLETED) { String pageContent; try { pageContent = mwApi.revisionsByFilename(contrib.getFilename()); } catch (IOException e) { - Timber.d("Network fuckup on modifications sync!"); + Timber.d("Network messed up on modifications sync!"); continue; } @@ -118,13 +117,13 @@ public class ModificationsSyncAdapter extends AbstractThreadedSyncAdapter { try { editResult = mwApi.edit(editToken, processedPageContent, contrib.getFilename(), sequence.getEditSummary()); } catch (IOException e) { - Timber.d("Network fuckup on modifications sync!"); + Timber.d("Network messed up on modifications sync!"); continue; } Timber.d("Response is %s", editResult); - if (!editResult.equals("Success")) { + if (!"Success".equals(editResult)) { // FIXME: Log this somewhere else Timber.d("Non success result! %s", editResult); } else { diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java b/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java index 09e89e7b4..fe9700ef5 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java @@ -1,6 +1,7 @@ package fr.free.nrw.commons.mwapi; import android.content.Context; +import android.content.SharedPreferences; import android.os.Build; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -60,8 +61,9 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi { private AbstractHttpClient httpClient; private MWApi api; private Context context; + private SharedPreferences sharedPreferences; - public ApacheHttpClientMediaWikiApi(Context context, String apiURL) { + public ApacheHttpClientMediaWikiApi(Context context, String apiURL, SharedPreferences sharedPreferences) { this.context = context; BasicHttpParams params = new BasicHttpParams(); SchemeRegistry schemeRegistry = new SchemeRegistry(); @@ -69,9 +71,16 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi { final SSLSocketFactory sslSocketFactory = SSLSocketFactory.getSocketFactory(); schemeRegistry.register(new Scheme("https", sslSocketFactory, 443)); ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry); - params.setParameter(CoreProtocolPNames.USER_AGENT, "Commons/" + BuildConfig.VERSION_NAME + " (https://mediawiki.org/wiki/Apps/Commons) Android/" + Build.VERSION.RELEASE); + params.setParameter(CoreProtocolPNames.USER_AGENT, getUserAgent()); httpClient = new DefaultHttpClient(cm, params); api = new MWApi(apiURL, httpClient); + this.sharedPreferences = sharedPreferences; + } + + @Override + @NonNull + public String getUserAgent() { + return "Commons/" + BuildConfig.VERSION_NAME + " (https://mediawiki.org/wiki/Apps/Commons) Android/" + Build.VERSION.RELEASE; } @VisibleForTesting @@ -86,11 +95,13 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi { * @throws IOException On api request IO issue */ public String login(String username, String password) throws IOException { + String loginToken = getLoginToken(); + Timber.d("Login token is %s", loginToken); return getErrorCodeToReturn(api.action("clientlogin") .param("rememberMe", "1") .param("username", username) .param("password", password) - .param("logintoken", getLoginToken()) + .param("logintoken", loginToken) .param("loginreturnurl", "https://commons.wikimedia.org") .post()); } @@ -103,12 +114,14 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi { * @throws IOException On api request IO issue */ public String login(String username, String password, String twoFactorCode) throws IOException { + String loginToken = getLoginToken(); + Timber.d("Login token is %s", loginToken); return getErrorCodeToReturn(api.action("clientlogin") - .param("rememberMe", "1") + .param("rememberMe", "true") .param("username", username) .param("password", password) - .param("logintoken", getLoginToken()) - .param("logincontinue", "1") + .param("logintoken", loginToken) + .param("logincontinue", "true") .param("OATHToken", twoFactorCode) .post()); } @@ -133,14 +146,17 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi { String status = loginApiResult.getString("/api/clientlogin/@status"); if (status.equals("PASS")) { api.isLoggedIn = true; + setAuthCookieOnLogin(true); return status; } else if (status.equals("FAIL")) { + setAuthCookieOnLogin(false); return loginApiResult.getString("/api/clientlogin/@messagecode"); } else if ( status.equals("UI") && loginApiResult.getString("/api/clientlogin/requests/_v/@id").equals("TOTPAuthenticationRequest") && loginApiResult.getString("/api/clientlogin/requests/_v/@provider").equals("Two-factor authentication (OATH).") ) { + setAuthCookieOnLogin(false); return "2FA"; } @@ -148,6 +164,18 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi { return "genericerror-" + status; } + private void setAuthCookieOnLogin(boolean isLoggedIn) { + SharedPreferences.Editor editor = sharedPreferences.edit(); + if (isLoggedIn) { + editor.putBoolean("isUserLoggedIn", true); + editor.putString("getAuthCookie", api.getAuthCookie()); + } else { + editor.putBoolean("isUserLoggedIn", false); + editor.remove("getAuthCookie"); + } + editor.apply(); + } + @Override public String getAuthCookie() { return api.getAuthCookie(); diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java b/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java index 70ab38297..da9403b62 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java @@ -12,6 +12,8 @@ import io.reactivex.Observable; import io.reactivex.Single; public interface MediaWikiApi { + String getUserAgent(); + String getAuthCookie(); void setAuthCookie(String authCookie); diff --git a/app/src/main/res/menu/menu_nearby.xml b/app/src/main/res/menu/menu_nearby.xml index 0143b9ef1..3cc771ea9 100644 --- a/app/src/main/res/menu/menu_nearby.xml +++ b/app/src/main/res/menu/menu_nearby.xml @@ -4,7 +4,7 @@ فشل رفع %1$s انقر لتشاهد - %d رفع ملف - %d رفع ملفات + %1$d رفع ملف + %1$d رفع ملفات مرفوعاتي الأخيرة في قائمة الانتظار @@ -54,6 +54,7 @@ عطل نظام الملاحة العالمي GPS بجهازك. أترغب في التنشيط؟ تفعيل GPS لا مرفوعات بعد + {{جمع|واحد=%1$d رفع|%1$d رفع}} لا توجد تصنيفات تطابق %1$s أضف التصانيف لتسهل اكتشاف صورك على ويكيميديا كومنز.\n\nابدأ الكتاب لتضيف التصانيف.\nانقر هذه الرسالة لتتجاوز هذه الخطوة. تصنيفات @@ -122,4 +123,7 @@ تسجيل الخروج إشعارات صفحة ملف كومنز + مرحبا بكم في ويكيمديا كومنز، %1$s! نحن سعداء لأنك هنا. + %1$s رسالة على صفحة الحديث + %1$s ذكر لك على %2$s. diff --git a/app/src/main/res/values-ast/strings.xml b/app/src/main/res/values-ast/strings.xml index a2b64fde6..204fd3767 100644 --- a/app/src/main/res/values-ast/strings.xml +++ b/app/src/main/res/values-ast/strings.xml @@ -22,7 +22,7 @@ Toque pa velo Xubiendo un ficheru - Xubiendo %d ficheros + Xubiendo %1$d ficheros Les mios xubes recién En cola @@ -56,16 +56,16 @@ Inda nun hai xubes \@string/contributions_subtitle_zero - 1 carga - %d cargues + %1$d carga + %1$d cargues - Principiando 1 carga - Principiando %d cargues + Principiando %1$d carga + Principiando %1$d cargues - 1 carga - %d cargues + %1$d carga + %1$d cargues Nun s\'alcontró denguna categoría que case con %1$s Amiesta categoríes pa facer les imaxes más fáciles d\'alcontrar en Wikimedia Commons.\nPrincipia a escribir p\'amestar categoríes. @@ -74,7 +74,7 @@ Date d\'alta Tocante a La app de Wikimedia Commons ye software de códigu abiertu, creáu y calteníu por becaos y voluntarios de la comunidá de Wikimedia. La Fundación Wikimedia nun participa na creación, desendolcu nin caltenimientu de la app. - El <a href=\"https://github.com/commons-app/apps-android-commons\">códigu fonte</a> ya\'l <a href=\"https://commons-app.github.io/\">sitiu web</a> tán en GitHub. Crea una nueva <a href=\"https://github.com/commons-app/apps-android-commons/issues\">incidencia en GitHub</a> pa informar de problemes y suxerencies. + Crea una nueva <a href=\"https://github.com/commons-app/apps-android-commons/issues\">incidencia en GitHub</a> pa informar de problemes y suxerencies. <a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\">Política d\'intimidá</a> <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\">Créditos</a> Tocante a @@ -164,6 +164,9 @@ Anguaño nun hai encontu pa autenticación de dos factores. ¿Confirmes que quies salir? Logo de Commons + Sitiu web de Commons + Páxina de Facebook de Commons + Códigu fonte de Commons en GitHub Imaxe de fondu Falló la imaxe multimedia Nun s\'atopó nenguna imaxe @@ -207,4 +210,9 @@ Ríquese permisu p\'amosar una llista de llugares cercanos CÓMO LLEGAR LLEER L\'ARTÍCULU + ¡Afáyate\'n Wikimedia Commons, %1$s! Préstanos que teas equí. + %1$s dexó un mensaxe na to páxina d\'alderique + Gracies por facer una edición + %1$s te mentó en %2$s. + Alternar vista 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 af3aaa3e0..be209bfa5 100644 --- a/app/src/main/res/values-b+sr+Latn/strings.xml +++ b/app/src/main/res/values-b+sr+Latn/strings.xml @@ -21,8 +21,8 @@ Ne mogu da otpremim „%1$s“ Tapnite da biste videli - %d datoteka se otprema - %d datoteke se otpremaju + %1$d datoteka se otprema + %1$d datoteke se otpremaju Moja skorašnja otpremanja Na čekanju @@ -54,18 +54,18 @@ GPS je onemogućen na Vašem uređaju. Želite li ga omogućiti? Omogući GPS Još uvek nema otpremanja - + \@string/contributions_subtitle_zero - %d otpremanje - %d otpremanja + %1$d otpremanje + %1$d otpremanja - - Započni %d otpremanje - Započni %d otpremanja + + Započni %1$d otpremanje + Započni %1$d otpremanja - - %d otpremanje - %d otpremanja + + %1$d otpremanje + %1$d otpremanja Nema kategorija koje odgovaraju %1$s Dodajte kategorije na slike da biste olakšali korisnicima njihovo pronalaženje na Ostavi.\n\nDa biste dodali kategoriju, počnite sa pisanjem njenog imena. @@ -205,4 +205,5 @@ Lokacija nije promenjena. Lokacija nije dostupna. Potrebna je dozvola za prikazivanje liste lokacija u blizini + Dobrodošli na Wikimedia Commons, %1$s! Drago nam je da ste ovdje. diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 4628ca951..abb15ac3d 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -32,8 +32,8 @@ Качване Съхраняване - %d качване - %d качвания + %1$d качване + %1$d качвания Категории Настройки diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index 6af522d50..6333a81eb 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -21,8 +21,8 @@ %1$s আপলোড ব্যর্থ দেখার জন্য টোকা দিন - %dটি ফাইল আপলোড হচ্ছে - %dটি ফাইল আপলোড হচ্ছে + %1$dটি ফাইল আপলোড হচ্ছে + %1$dটি ফাইল আপলোড হচ্ছে আমার সাম্প্রতিক আপলোড অপেক্ষারত @@ -56,16 +56,16 @@ এখনো কোন আপলোড নেই \@string/contributions_subtitle_zero - %dটি আপলোড - %dটি আপলোড + %1$dটি আপলোড + %1$dটি আপলোড - %dটি আপলোড শুরু হয়েছে - %dটি আপলোড শুরু হয়েছে + %1$dটি আপলোড শুরু হয়েছে + %1$dটি আপলোড শুরু হয়েছে - %dটি আপলোড - %dটি আপলোড + %1$dটি আপলোড + %1$dটি আপলোড %1$s-এর সাথে মিলে এমন কোন বিষয়শ্রেণী পাওয়া যায়নি উইকিমিডিয়া কমন্স থেকে আপনার মিডিয়া ফাইলটি সহজে খুঁজে পেতে বিষয়শ্রেণী যুক্ত করুন।\n\nবিষয়শ্রেণী যোগ করার জন্য টাইপিং শুরু করুন। @@ -209,8 +209,8 @@ কাছাকাছি স্থানসমূহের একটি তালিকা প্রদর্শন করতে অনুমতি প্রয়োজন নির্দেশনা পান নিবন্ধ পড়ুন - উইকিমিডিয়া কমন্সে স্বাগতম, %s! আপনাকে এখানে পেয়ে আমরা আনন্দিত। - %s আপনার আলাপ পাতায় একটি বার্তা দিয়েছেন + উইকিমিডিয়া কমন্সে স্বাগতম, %1$s! আপনাকে এখানে পেয়ে আমরা আনন্দিত। + %1$s আপনার আলাপ পাতায় একটি বার্তা দিয়েছেন একটি সম্পাদনা করার জন্য আপনাকে ধন্যবাদ - %s আপনাকে %s-এ উল্লেখ করেছেন। + %1$s আপনাকে %2$s-এ উল্লেখ করেছেন। diff --git a/app/src/main/res/values-br/strings.xml b/app/src/main/res/values-br/strings.xml index 01a0bc962..7258215aa 100644 --- a/app/src/main/res/values-br/strings.xml +++ b/app/src/main/res/values-br/strings.xml @@ -21,8 +21,8 @@ C\'hwitet en deus enporzhiañ %1$s Pouezit evit diskwel - %d restr o vezañ karget - %d restr o vezañ karget + %1$d restr o vezañ karget + %1$d restr o vezañ karget Ma enporzhiadennoù nevez Lakaet el lostenn @@ -56,16 +56,16 @@ Enporzhiadenn ebet c\'hoazh ! Pellgardenn ebet c\'hoazh - %d bellgargadenn - %d Pellgargadennoù + %1$d bellgargadenn + %1$d Pellgargadennoù - %d bellgargadenn loc\'het - %d pellgargadennoù loc\'het + %1$d bellgargadenn loc\'het + %1$d pellgargadennoù loc\'het - %d bellgargadenn - %d pellgargadennoù + %1$d bellgargadenn + %1$d pellgargadennoù N\'eus bet kavet rummad ebet o klotañ gant %1$s Ouzhpennit rummadoù evit ma vo aesoc\'h kavout ho skeudennoù war Wikimedia Commons.\n\nKrogit da skrivañ evit ouzhpennañ rummadoù. @@ -75,7 +75,7 @@ Diwar-benn Meziant frank a wirioù embannet dindan <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\">an Aotre-implijout Apache v2</a>. Merkoù kenwerzhel eus Diazezadur Wikimedia eo Wikimedia Commons hag e logoioù. Gallout a reont bezañ implijet gant aotre an Diazezadur. N\'omp nag aprouet gant Diazezadur Wiikimedia na stag outañ. <a href=\"https://github.com/commons-app/apps-android-commons\">Mammenn</a> ha <a href=\"https://commons-app.github.io/\">lec\'hienn</a> war GitHub. Krouiñ ur <a href=\"https://github.com/commons-app/apps-android-commons/issues\">gemennadenn GitHub nevez</a> evit kelaouiñ a-zivout un draen bennak pe bet kinnigoù. - <a href=\"https://wikimediafoundation.org/wiki/Privacy_policy\">Reolennoù prevezded</a> + <a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy_policy\">Reolennoù prevezded</a> <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\">Trugarekadennoù</a> Diwar-benn Kas ho soñj (dre bostel) @@ -120,7 +120,7 @@ ARABAT enporzhiañ : - Emskeudennoù pe skeudennoù eus ho mignoned\n- Skeudennoù pellgarget ganeoc\'h diwar an Internet\n- Tapadennoù-skramm arloadoù prevez Skouer un enporzhiadenn : - - Titl : Ti opera Sydney\n- Desskrivadur : Ti opera Sydney gwelet eus tu all ar bae\n- Rummadoù : Ti opera Sydney, Ti opera Sydney gwelet eus ar c\'hornôg, Gweloù a-bell eus ti opera Sydney + - Titl : Ti opera Sydney\n- Desskrivadur : Ti opera Sydney gwelet eus tu all ar bae\n- Rummadoù : Ti opera Sydney, Ti opera Sydney gwelet eus ar c\'hornôg, Gweloù a-bell eus ti opera Sydney Kemerit perzh gant ho skeudennoù. Sikourit pennadoù Wikipedia da zont da vev ! Dont a ra skeudennoù Wikipedia eus Wikimedia Commons. Ho skeudennoù a sikour an dud da zeskiñ traoù dre ar bed a-bezh. @@ -160,6 +160,9 @@ Ne vez ket embreget an dilesadur gant daou faktor evit ar mare. Sur oc\'h e fell deoc\'h digevreañ ? Logo Commons + Lec\'hienn web Commons + Pajenn Facebook Commons + Kod mammenn Github Commons N\'eus bet kavet skeudenn ebet Kargañ ur skeudenn Menez Zao @@ -185,8 +188,13 @@ Kemennoù Ne c\'haller ket diskwel al lec\'hioù tost ma ne rannit ket ho lec\'hiadur N\'eus bet kavet deskrivadur ebet - Pennad Commons + Pajennad restroù Commons Elfenn Wikidata + Reiñ ar gwir + Implijout ar stokañ diavaez + Enrollit ar skeudennoù tennet gant luc\'hskeudennerez ho penveg + Kevreit ouzh ho kont + N\'eo ket cheñchet al lec\'hiadur. Kaout urzhioù Lenn ar pennad diff --git a/app/src/main/res/values-bs/strings.xml b/app/src/main/res/values-bs/strings.xml index b107dda91..05bacb4de 100644 --- a/app/src/main/res/values-bs/strings.xml +++ b/app/src/main/res/values-bs/strings.xml @@ -21,8 +21,8 @@ Postavljanje datoteke %1$s nije uspjelo Dodirnite da biste vidjeli - postavlja se %d datoteka - postavlja se %d datoteka + postavlja se %1$d datoteka + postavlja se %1$d datoteka Moje nedavno postavljene datoteke Na čekanju @@ -54,18 +54,18 @@ GPS je onemogućen na Vašem uređaju. Želite li ga omogućiti? Omogući GPS Zasad nema postavljenih datoteka - + \@string/contributions_subtitle_zero - postavljena %d datoteka - postavljenih datoteka: %d + postavljena %1$d datoteka + postavljenih datoteka: %1$d - - Započinjem postavljanje %d datoteke - Započinjem postavljanje %d datoteka/-e + + Započinjem postavljanje %1$d datoteke + Započinjem postavljanje %1$d datoteka/-e - - %d postavljanje - %d postavljanja + + %1$d postavljanje + %1$d postavljanja Nema kategorija koje odgovoraju %1$s Dodajte kategorije da biste korisnicima olakšali pronalaženje slika na Wikimedia Commonsu.\n\nPočnite pisati da biste dodali kategoriju.\nDodirnite ovu poruku (ili pritisnite dugme \"nazad\") da biste preskočili ovaj korak. diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index ef7c15efa..e678dfc26 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -20,9 +20,9 @@ Acabant la càrrega al servidor de %1$s Error al carregar %1$s Prem per veure-ho - + s\'està carregant 1 fitxer - s\'estan carregant %d fitxers + s\'estan carregant %1$d fitxers Les meves càrregues recents En cua @@ -56,16 +56,16 @@ Encara no hi ha cap càrrega \@string/contributions_subtitle_zero - %d càrrega - %d càrregues + %1$d càrrega + %1$d càrregues - S\'està iniciant %d càrrega - S\'estan iniciant %d càrregues + S\'està iniciant %1$d càrrega + S\'estan iniciant %1$d càrregues - + 1 càrrega - %d càrregues + %1$d càrregues No s\'ha trobat cap categoria que coincideixi amb %1$s Afegiu categories per fer que les vostres imatges siguin més fàcils de trobar a Wikimedia Commons. @@ -178,5 +178,5 @@ COM ANAR-HI LLEGIU L’ARTICLE Gràcies per fer una modificació - %s us ha mencionat a %s. + %1$s us ha mencionat a %2$s. diff --git a/app/src/main/res/values-cs/error.xml b/app/src/main/res/values-cs/error.xml index 66ac4f378..050ae78d7 100644 --- a/app/src/main/res/values-cs/error.xml +++ b/app/src/main/res/values-cs/error.xml @@ -1,7 +1,7 @@ Commons spadly - Ups. Něco je špatně! + Něco se pokazilo! Řekněte nám, co jste dělali a dejte nám to vědět e-mailem. Pomůže sjednat nápravu! Děkujeme vám! diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 5ae7392c0..39c5af4cf 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -21,8 +21,8 @@ Načítání souboru %1$s se nezdařilo Klepnutím zobrazíte - %d soubor se nahrává - %d souborů se nahrává + %1$d soubor se nahrává + %1$d souborů se nahrává Moje nedávné obrázky Ve frontě @@ -57,15 +57,15 @@ Žádné soubory 1 soubor - %d souborů + %1$d souborů - Spouští se nahrávání %d souboru - Spouští se nahrávání %d souborů + Spouští se nahrávání %1$d souboru + Spouští se nahrávání %1$d souborů - %d nahrávání - %d nahrávání + %1$d nahrávání + %1$d nahrávání Žádné kategorie neodpovídají „%1$s“ Přidejte kategorie, aby bylo vaše obrázky možno na Wikimedia Commons najít. @@ -73,8 +73,8 @@ Nastavení Zaregistrovat se O aplikaci - Open Source software dostupný za podmínek <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\">Apache License v2</a>. %1$s a logo %1$s jsou ochranné známky Wikimedia Foundation a jsou použity se svolením Wikimedia Foundation. Nejsme podporováni Wikimedia Foundation ani nejsme její součástí. - <a href=\"https://github.com/commons-app/apps-android-commons\">Zdrojový kód</a>, <a href=\"https://commons-app.github.io/\">webová stránka</a> a <a href=\"https://github.com/commons-app/apps-android-commons/issues\">hlášení chyb a sdílení nápadů</a> na GitHubu. + Aplikace Wikimedia Commons je open source software vytvářený a spravovaný členy komunity Wikimedia. Nadace Wikimedia se neúčastní tvorby, vývoje či správy aplikace. + Otevřete nové <a href=\"https://github.com/commons-app/apps-android-commons/issues\">hlášení na GitHubu</a> pro nahlášení chyb a návrhů. <a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\">Ochrana osobních údajů</a> <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\">Autoři</a> O aplikaci @@ -86,6 +86,7 @@ Opakovat Zrušit Tento obrázek bude zveřejněn pod licencí %1$s + Odesláním tohoto souboru potvrzuji, že je mým vlastním dílem, neobsahuje autorskoprávně chráněný materiál a nejedná se o selfie a ani jinak neporušuje <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">pravidla a doporučení Wikimedia Commons</a>. Stáhnout Licence Použít předchozí název a popis @@ -120,7 +121,7 @@ Prosím NENAHRÁVEJTE: - Selfie nebo obrázky vašich přátel\n- Obrázky stažené z Internetu\n- Screenshoty z proprietárních aplikací Příklad nahraného souboru: - - Název: Opera v Sydney\n- Popis: Opera v Sydney, pohled přes záliv\n- Kategorie: Sydney Opera House, Sydney Opera House from the west, Sydney Opera House remote views + - Název: Opera v Sydney\n- Popis: Opera v Sydney, pohled přes záliv\n- Kategorie: Sydney Opera House from the west, Sydney Opera House remote views Přispějte svými obrázky. Pomozte oživit články na Wikipedii. Obrázky na Wikipedii pochází \nz Wikimedia Commons. Vaše obrázky pomáhají vzdělávat lidi po celém světě. @@ -134,6 +135,7 @@ Neznámá licence Obnovit Požadováno oprávnění ke čtení externího úložiště. Aplikace bez toho nemůže pracovat. + Požadováno oprávnění k zápisu do externího úložiště. Aplikace bez toho nemůže pracovat. Volitelně: Umožněte aplikaci, aby získávala aktuální polohu a nabízela na jejím základě kategorie OK Místa v okolí @@ -149,6 +151,7 @@ Datum nahrání souboru Licence Souřadnice + Žádné vložené souřadnice Staňte se beta testery Přihlásit se do našeho beta kanálu na Google Play a dostávat včasný přístup k novinkám a opravám chyb Použít Wikidata @@ -161,6 +164,9 @@ Tato aplikace zatím nepodporuje tzv. dvoufázové ověření. Opravdu se chcete odhlásit? Logo Wikimedia Commons + Stránka Commons + Facebooková stránka Commons + Zdrojový kód Commons na GitHubu Obrázek na pozadí Obrázek Nebyl nalezen žádný obrázek @@ -185,16 +191,28 @@ Zpětná vazba Odhlášení Průvodce + Upozornění Místa poblíž nebude možné zobrazit, neuvedete-li svojí polohu. nebyl nalezen žádný popisek Stránka souboru na Commons Položka Wikidat + Chyba při meziukládání obrázků + Unikátní a popisný název pro daný soubor, který bude sloužit jako název souboru. Můžete použít běžný psaný jazyk s mezerami; nezahrnujte koncovku souboru. + Popište prosím obrázek, jak jen to je možné: Kde byl pořízen? Co znázorňuje? Jaký je kontext obrázku? Popisujte prosím významné předměty nebo osoby na obrázku a nezapomeňte na informace, které není možné snadno odhadnout ze samotného obrázku, jako je například denní doba, pokud jde o krajinu. Pokud je na obrázku něco neobvyklého, popište, co to dělá neobvyklým. Dát povolení + Použít externí úložiště + Uložit obrázky pořízené fotoaparátem, jenž je součástí této aplikace Odeslat log Odeslat log vývojářům e-mailem Přihlásit se k účtu Vaše umístění se nezměnilo. Umístění není dostupné. + Vyžadováno povolení k zobrazení seznamu blízkých míst NAVIGOVAT PŘEČÍST ČLÁNEK + Vítejte na Wikimedia Commons, %1$s! Jsme rádi, že jste zde. + %2$s vám napsal na vaši diskusní stránku + Děkujeme za vaši editaci + %1$s vás zmínil na %2$s. + Přepnout pohled diff --git a/app/src/main/res/values-csb/strings.xml b/app/src/main/res/values-csb/strings.xml index 47f21d85d..f89303b2b 100644 --- a/app/src/main/res/values-csb/strings.xml +++ b/app/src/main/res/values-csb/strings.xml @@ -21,8 +21,8 @@ Wladënk %1$s nie darzëł sã Tkni, abë òbôczëc - Wladënk %d lopka - Wladënk %d lopków + Wladënk %1$d lopka + Wladënk %1$d lopków Mòjé slédno wladowóné lopczi Żdające @@ -54,18 +54,18 @@ GPS je w twòjim ùrządzeniém wëłączony. Chcesz gò włączëc? Wëłączë GPS Nie dô jesz wladënków - + Przesłano @string/contributions_subtitle_zero - Przesłano %d lopk - Przesłano %d lopczi + Przesłano %1$d lopk + Przesłano %1$d lopczi - - Naczãto %d wladënk - Naczãto %d wladënczi + + Naczãto %1$d wladënk + Naczãto %1$d wladënczi - - %d wladënk - %d wladënczi + + %1$d wladënk + %1$d wladënczi Felënk pasowny kategòrëji do %1$s Kategòrëje diff --git a/app/src/main/res/values-cy/strings.xml b/app/src/main/res/values-cy/strings.xml index 5af28c3cf..27480ee3d 100644 --- a/app/src/main/res/values-cy/strings.xml +++ b/app/src/main/res/values-cy/strings.xml @@ -22,7 +22,7 @@ Tapiwch i weld 1 ffeil yn uwchlwytho - %d ffeil yn uwchlwytho + %1$d ffeil yn uwchlwytho Fy uwchlwythiadau Yn y ciw @@ -52,15 +52,15 @@ Dim Uwchlwythiadau eto 1 uwchlwythiad - %d uwchlwythiad + %1$d uwchlwythiad Cychwyn uwchlwytho 1 ffeil - Cychwyn uwchlwytho %d ffeil + Cychwyn uwchlwytho %1$d ffeil 1 uwchlwythiad - %d uwchlwythiad + %1$d uwchlwythiad Dim categori\'n cyfateb i %1$s ar gael Cychwynwch deipio i ychwanegu categoriau.\nCyffyrddwch y neges hon (neu ddewis Nôl) i fynd i\'r cam nesaf. diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index c0f2c0228..5437d0008 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -21,8 +21,8 @@ Overførsel af %1$s mislykkedes Klik for at se - %d fil overføres - %d filer overføres + %1$d fil overføres + %1$d filer overføres Mine seneste overførsler I kø @@ -56,16 +56,16 @@ Ingen overførelser endnu \@string/contributions_subtitle_zero - %d overførsel - %d overførelser + %1$d overførsel + %1$d overførsler - Starter %d overførsel - Starter %d overførsler + Starter %1$d overførsel + Starter %1$d overførsler - %d overførsel - %d overførsler + %1$d overførsel + %1$d overførsler Ingen kategorier matchende %1$s er fundet Tilføj kategorier for at gøre billederne mere synlig på Wikimedia Commons. Tast for at tilføje kategorier. @@ -74,7 +74,7 @@ Opret konto Om Wikimedia Commons-programmet oprettet og udviklet af frivillige i Wikimediafællesskabet. Wikimedia Foundation er ikke involveret i oprettelse, udvikling eller vedligeholdelse af programmet. - <a href=\"https://github.com/commons-app/apps-android-commons\">Kilde</a> og <a href=\"https://commons-app.github.io/\">hjemmeside</a> på GitHub. Opret en ny <a href=\"https://github.com/commons-app/apps-android-commons/issues\">GitHub-sag</a> for fejlrapporter og forslag. + Opret en ny <a href=\"https://github.com/commons-app/apps-android-commons/issues\">GitHub-sag</a> for fejlrapporter og forslag. <a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\">Privatlivspolitik</a> <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\">Bidragsydere</a> Om @@ -164,6 +164,9 @@ Tofaktorgodkendelse er ikke understøttet i øjeblikket. Ønsker du at logge ud? Commons-logo + Commons-hjemmeside + Commons Facebook-side + Commons Github-kildekode Baggrundsbillede Mediebillede mislykkedes Intet billede fundet @@ -207,4 +210,9 @@ Tilladelse kræves for at vise en liste over steder i nærheden FÅ RUTEHJÆLP LÆS ARTIKEL + Velkommen til Wikimedia Commons, %1$s! Vi er glad for, at du er her. + %1$s efterlod en besked på din diskussionsside + Tak fordi du lavede en redigering + %1$s nævnte dig på %2$s. + Skift visning diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 2542f5d38..58e0b272a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -22,7 +22,7 @@ Tippen zum Betrachten Eine Datei wird hochgeladen - %d Dateien werden hochgeladen + %1$d Dateien werden hochgeladen Meine kürzlich hochgeladenen Dateien In der Warteschlange @@ -57,15 +57,15 @@ \@string/contributions_subtitle_zero Eine hochgeladene Datei - %d hochgeladene Dateien + %1$d hochgeladene Dateien Starte einen Upload - Starte %d Uploads + Starte %1$d Uploads Eine hochgeladene Datei - %d hochgeladene Dateien + %1$d hochgeladene Dateien Die Kategorie „%1$s“ wurde nicht gefunden Füge Kategorien hinzu, um deine Bilder auf Wikimedia Commons auffindbarer zu machen.\nBeginne mit der Eingabe, um Kategorien hinzuzufügen. @@ -210,8 +210,9 @@ Berechtigung zur Anzeige einer Liste mit Orten in der Nähe erforderlich RICHTUNGEN ABRUFEN ARTIKEL LESEN - Willkommen auf Wikimedia Commons, %s! Wir sind froh, dass du hier bist. - %s hinterließ eine Nachricht auf deiner Diskussionsseite + Willkommen auf Wikimedia Commons, %1$s! Wir sind froh, dass du hier bist. + %1$s hinterließ eine Nachricht auf deiner Diskussionsseite Vielen Dank für deine Bearbeitung - %s erwähnte dich auf %s. + %1$s erwähnte dich auf %2$s. + Ansicht wechseln diff --git a/app/src/main/res/values-diq/strings.xml b/app/src/main/res/values-diq/strings.xml index d5f18eeac..8ab93b5ed 100644 --- a/app/src/main/res/values-diq/strings.xml +++ b/app/src/main/res/values-diq/strings.xml @@ -22,7 +22,7 @@ pıpawane xo bıvin 1 dosye selagnayış - %d dosye Selagnayışi + %1$d dosye Selagnayışi Barkerdışê mınê peyêni Ratneya @@ -52,19 +52,19 @@ Theba bar nêbı 1 bar kerdış - %d bar kerdışi + %1$d bar kerdışi Sergendış 1 bar kerdış - Sergendış %d bar kerdışi + Sergendış %1$d bar kerdışi 1 bar kerdış - %d bar kerdışi + %1$d bar kerdışi Kategoriyan de %1$s deye theba çıniyo Kategori cı kerdışi rê nusnayış bıkeré. Ena gamer ravêrdışi rê mesaci bıpıloğnê yana peyd şırê. - Kategoriy + Kategoriyi Sazi Qeyd be Heq te cı @@ -100,7 +100,7 @@ Misal bar kerden: Şıma fam kerdê? E! - Kategoriy + Kategoriyi Bar beno… Theba nêweçineya Akerdenayış çıniyo diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 665077d5e..bdaafb27b 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -22,7 +22,7 @@ Πατήστε για να δείτε 1 αρχείο επιφορτώνεται - %d αρχεία επιφορτώνονται + %1$d αρχεία επιφορτώνονται Οι Πρόσφατες Φορτώσεις Μου Στην ουρά @@ -56,16 +56,16 @@ Δεν υπάρχουν ακόμα φορτωμένα αρχεία Δεν υπάρχουν επιφορτώσεις ακόμη - 1 επιφόρτωση - %d επιφορτώσεις + %1$d επιφόρτωση + %1$d επιφορτώσεις - Έναρξη 1 επιφόρτωσης - Έναρτξη %d επιφορτώσεων + Έναρξη %1$d επιφόρτωσης + Έναρξη %1$d επιφορτώσεων - 1 επιφόρτωση - %d επιφορτώσεις + %1$d επιφόρτωση + %1$d επιφορτώσεις Δεν βρέθηκαν κατηγορίες που ταιριάζουν %1$s Προσθέστε κατηγορίες για να κάνετε τις εικόνες σας πιο ανιχνεύσιμες στα Wikimedia Commons.\n\nΑρχίστε να γράφετε για να προσθέσετε κατηγορίες.\nΠατήστε αυτό το μήνυμα (ή πατήστε επιστροφή) για να παραλείψετε αυτό το βήμα. @@ -210,8 +210,9 @@ Απαιτείται άδεια για την εμφάνιση λίστας κοντινών σημείων Λάβετε κατευθύνσεις Ανάγνωση άρθρου - Καλωσήρθατε στο Wikimedia Commons, %s! Είμαστε χαρούμενοι που είστε εδώ. - Ο %s άφησε ένα μήνυμα στην σελίδα συζήτησής σας + Καλωσήρθατε στο Wikimedia Commons, %1$s! Είμαστε χαρούμενοι που είστε εδώ. + Ο %1$s άφησε ένα μήνυμα στην σελίδα συζήτησής σας Ευχαριστούμε που κάνατε μια επεξεργασία - Ο %s σας ανέφερε στο %s. + Ο %1$s σας ανέφερε στο %2$s. + Μεταβολή προβολής diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 3c5eab2a5..978749d96 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -21,8 +21,8 @@ Falló la carga de %1$s Toca para ver - Subiendo %d archivo - Subiendo %d archivos + Cargando %1$d archivo + Cargando %1$d archivos Mis subidas recientes En la cola @@ -56,16 +56,16 @@ No hay subidas aún \@string/contributions_subtitle_zero - %d subida - %d subidas + %1$d carga + %1$d cargas - Iniciando 1 subida - Iniciando %d subidas + Iniciando %1$d carga + Iniciando %1$d cargas - %d subida - %d subidas + %1$d carga + %1$d cargas No se encontraron categorías que coincidieran con %1$s Añade categorías para hacer que tus imágenes sean más fáciles de encontrar en Wikimedia Commons.\nComienza a escribir para añadir categorías. @@ -210,8 +210,8 @@ Se necesita permiso para mostrar una lista de lugares cercanos CÓMO LLEGAR LEER ARTÍCULO - ¡Te damos la bienvenida a Wikimedia Commons, %s! Qué bueno que estés aquí. - %s dejó un mensaje en tu página de discusión + ¡Te damos la bienvenida a Wikimedia Commons, %1$s! Qué bueno que estés aquí. + %1$s dejó un mensaje en tu página de discusión Gracias por realizar una edición - %s te ha mencionado en %s. + %1$s te ha mencionado en %2$s. diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index dc7947c87..a340d7d72 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -51,7 +51,7 @@ Oraindik igoerarik ez igoera 1 - %d igoera + %1$d igoera Ez da kategoriak aukritu %1$s izenarekin Gehitu kategoriak zure argazkiak Wikimedia Commonsen aurkitzen errazagoak izan daitezen. diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 6ed2c5981..68d522865 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -21,8 +21,8 @@ %1$s بارگذاری نشد برای دیدن انگشت بزنید - %d پرونده در حال بارگذاری - %d پرونده در حال بارگذاری + %1$d پرونده در حال بارگذاری + %1$d پرونده در حال بارگذاری بارگذاری‌های اخیر من در صف @@ -54,18 +54,14 @@ مکان‌یاب در دستگاه شما خاموش است. آیا دوست دارید فعال شود؟ فعال کردن مکان‌یاب هنوز هیچ بارگذاری - - \@string/contributions_subtitle_zero - بارگذاری شد - %d بارگذاری شد - + {{%1$d|zero=@string/contributions_subtitle_zero|one=بارگذاری شد|%1$d بارگذاری شد}} - شروع %d بارگذاری پرونده - شروع بارگذاری %d پرونده + شروع %1$d بارگذاری پرونده + شروع بارگذاری %1$d پرونده - %d بارگذاری - %d بارگذاری + %1$d بارگذاری + %1$d بارگذاری رده‌ای منطبق با %1$s یافت نشد برای دسترسی آسان‌تر در ویکی‌انبار به تصویرهایتان رده بیافزائید.\n\nشروع به افزودن رده. @@ -210,8 +206,9 @@ برای نمایش مکان‌ّای اطراف نیاز به اجازه است. دریافت جهت‌‌ها خواندن مقاله - %s، به ویکی‌انبار خوش آمدید! خوشحالیم که اینجا هستید. - %s در صفحهٔ بحث شما پیامی گذاشته‌است + %1$s، به ویکی‌انبار خوش آمدید! خوشحالیم که اینجا هستید. + %1$s در صفحهٔ بحث شما پیامی گذاشته‌است برای ویرایش ممنون - %s در %s به شما اشاره کرده‌است. + %1$s در %2$s به شما اشاره کرده‌است. + دکمه نمایش diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index b69e08fe1..01864d294 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -22,7 +22,7 @@ Napauta katsoaksesi 1 tiedosto tallentuu - %d tiedostoa tallentuu + %1$d tiedostoa tallentuu Viimeaikaiset tallennukseni Jonossa @@ -54,18 +54,18 @@ GPS ei ole käytössä. Haluatko ottaa sen käyttöön? Ota GPS käyttöön Ei tallennuksia vielä - + \@string/contributions_subtitle_zero - %d tallennus - %d tallennusta + %1$d tallennus + %1$d tallennusta - - aloitetaan %d tallennus - aloitetaan %d tallennusta + + aloitetaan %1$d tallennus + aloitetaan %1$d tallennusta - - %d tallennus - %d tallennusta + + %1$d tallennus + %1$d tallennusta Luokkaa %1$s ei löytynyt Lisää luokkia tehdäksesi kuvistasi enemmän löydettäviä Wikimedia Commonssissa.\nAloita kirjoittaminen lisätäksesi luokkia. @@ -121,7 +121,7 @@ ÄLÄ tallenna seuraavia: - Selfiet tai kuvat ystävistäsi\n- Netistä ladatut kuvat\n- Kuvakaappaukset kaupallisista sovelluksista Tallennusesimerkki: - - Otsikko: Sydneyn operatalo\n- Kuvaus: Sydneyn oopperatalo katsottuna lahden toisella puolella\n- Luokat: Sydneyn oopperatalo, Sydneyn oopperatalo lännestä, Sydneyn oopperatalo etänäkymät + - Otsikko: Sydneyn oopperatalo\n- Kuvaus: Sydneyn oopperatalo katsottuna lahden toiselta puolelta\n- Luokat: Sydneyn oopperatalo, Sydneyn oopperatalo lännestä, Sydneyn oopperatalon etänäkymät Herätä Wikipedia-artikkelit eloon kuvillasi! Tuo kuvasi Wikipediaan. Wikipedian kuvat tulevat Wikimedia Commonsista. Kuvasi auttavat useita ihmisiä ympäri maailmaa artikkeleiden ymmärtämisessä. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index e7408e25e..75e42c9d5 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -21,8 +21,8 @@ Le téléversement de %1$s a échoué Appuyer pour afficher - %d fichier en cours de téléversement - %d fichiers en cours de téléversement + %1$d fichier en cours de téléchargement + %1$d fichiers en cours de téléchargement Mes téléversements récents Mis en file d\'attente @@ -56,16 +56,16 @@ Encore aucun téléversement \@string/contributions_subtitle_zero - %d téléversement - %d téléversements + %1$d téléchargement + %1$d téléchargements - %d téléversement démarré - %d téléversements démarrés + %1$d téléchargement démarré + %1$d téléchargements démarrés - %d téléversement - %d téléversements + %1$d téléchargement + %1$d téléchargements Aucune catégorie correspondant à %1$s trouvée Ajoutez des catégories pour rendre vos images plus simples à trouver sur Wikimedia Commons. \nCommencer à ajouter des catégories. @@ -210,8 +210,9 @@ Une permission est requise pour afficher une liste de lieux relatifs OBTENIR DES DIRECTIVES LIRE L’ARTICLE - Bienvenue sur Wikimedia Commons, %s! Nous sommes heureux que vous soyez venu. - %s a laissé un message sur votre page de discussion + Bienvenue sur Wikimedia Commons, %1$s! Nous sommes heureux que vous soyez venu. + %1$s a laissé un message sur votre page de discussion Merci de faire une modification - %s vous a mentionné sur %s . + %1$s vous a mentionné sur %2$s . + Basculer l’affichage diff --git a/app/src/main/res/values-frr/strings.xml b/app/src/main/res/values-frr/strings.xml index 317890630..4d8ed0d4a 100644 --- a/app/src/main/res/values-frr/strings.xml +++ b/app/src/main/res/values-frr/strings.xml @@ -21,8 +21,8 @@ Huuchschüüren faan „%1$s“ skiaf gingen Tipe, am det uuntulukin - %d datei woort huuchschüürd - %d datein wurd huuchschüürd + %1$d datei woort huuchschüürd + %1$d datein wurd huuchschüürd Min tuleetst huuchschüürd datein Skal noch teew @@ -54,18 +54,18 @@ GPS as üüb dan aperoot ei uun. Wel dü det nü aktiwiare? GPS aktiwiare Bit nü nian uploads - + \@string/contributions_subtitle_zero Ian huuchschüürd datei - %d huuchschüürd datein + %1$d huuchschüürd datein - - Began %d upload - Began %d uploads + + Began %1$d upload + Began %1$d uploads - - %d huuchschüürd datei - %d huuchschüürd datein + + %1$d huuchschüürd datei + %1$d huuchschüürd datein Det kategorii „%1$s“ küd ei fünjen wurd. Dü könst nei kategoriin iinracht, amdat din bilen beeder fünjen wurd. Eder skriiw en kategorii-nööm of tipe üüb det nooracht (of gung üüb det \'turag\'-fial), an läät di straal ütj. diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 96d94dec9..90de742cc 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -21,8 +21,8 @@ Erro ao cargar \"%1$s\" Prema para mostralo - Cargando %d ficheiro - Cargando %d ficheiros + Cargando %1$d ficheiro + Cargando %1$d ficheiros As miñas subas recentes Na cola @@ -56,16 +56,16 @@ Aínda non hai subas \@string/contributions_subtitle_zero - %d carga - %d cargas + %1$d carga + %1$d cargas - Iniciando %d carga - Iniciando %d cargas + Iniciando %1$d carga + Iniciando %1$d cargas - %d carga - %d cargas + %1$d carga + %1$d cargas Non se atopou ningunha categoría que coincidise con \"%1$s\" Engada categorías para facer máis accesibles as súas imaxes na Wikimedia Commons.\nComece a escribir para engadir categorías. @@ -210,8 +210,8 @@ Precísase permiso para amosar unha lista de lugares preto de aquí OBTER DIRECCIÓNS LER ARTIGO - Benvido a Wikimedia Commons, %s! Alegrámonos de que estea aquí. - %s deixoulle unha mensaxe na súa páxina de conversa + Benvido a Wikimedia Commons, %1$s! Alegrámonos de que estea aquí. + %1$s deixoulle unha mensaxe na súa páxina de conversa Grazas por realizar unha edición - %s mencionouno en %s. + %1$s mencionouno en %2$s. diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 718121ceb..452bb6523 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -20,7 +20,7 @@ %1$s का अपलोड पूरा हुआ %1$s का अपलोड विफल हुआ देखने हेतु टैप करें - + %d फ़ाइल अपलोड हो रहा %d फ़ाइलें अपलोड हो रहीं @@ -55,16 +55,16 @@ जीपीएस सक्षम करें अभी तक कोई अपलोड नहीं - %d अपलोड - %d अपलोड्स + %1$d अपलोड + %1$d अपलोड्स - %d अपलोड शुरू - %d अपलोड शुरू + %1$d अपलोड शुरू + %1$d अपलोड शुरू - - %d अपलोड - %d अपलोड + + %1$d अपलोड + %1$d अपलोड %1$s से कोई श्रेणी मेल नहीं खाती विकिमीडिया कॉमन्स पर अपनी छवियों को अधिक खोजने योग्य बनाने के लिए श्रेणियां जोड़ें|\nश्रेणियां जोड़ने के लिए टाइप करना प्रारंभ करें| @@ -209,8 +209,8 @@ आसपास के स्थान दिखाने के लिए अनुमति चाहिए दिशा - निर्देश प्राप्त करें लेख पढ़ें - विकिमीडिया कॉमन्स पर आपका स्वागत है, %s! हमें हर्ष है कि आप यहाँ हैं। - %s ने आपके वार्ता पृष्ठ पर सन्देश छोड़ा है + विकिमीडिया कॉमन्स पर आपका स्वागत है, %1$s! हमें हर्ष है कि आप यहाँ हैं। + %1$s ने आपके वार्ता पृष्ठ पर सन्देश छोड़ा है सम्पादन करने के लिए धन्यवाद - %s ने %s में आपका उल्लेख किया है + %1$s ने %2$s में आपका उल्लेख किया है diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 0910c3b42..134563a09 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -21,8 +21,8 @@ %1$s feltöltése sikertelen Érintsd meg a megtekintéshez - %d fájl feltöltése folyamatban - %d fájl feltöltése folyamatban + %1$d fájl feltöltése folyamatban + %1$d fájl feltöltése folyamatban Legutóbbi feltöltéseim Várólistán @@ -56,16 +56,16 @@ Még nincsenek feltöltések \@string/contributions_subtitle_zero - %d feltöltés - %d feltöltés + %1$d feltöltés + %1$d feltöltés - %d feltöltés kezdése - %d feltöltés kezdése + %1$d feltöltés kezdése + %1$d feltöltés kezdése - %d feltöltés - %d feltöltés + %1$d feltöltés + %1$d feltöltés Nincs a(z) „%1$s” keresési kifejezésnek megfelelő kategória Adj kategóriákat a képekhez, hogy könnyebben meg lehessen találni őket a Commonson.\nKezdd el beírni a kategória nevét, hogy hozzáadd.\nBökj erre az üzenetre (vagy a vissza gombra) a lépés kihagyásához @@ -74,7 +74,7 @@ Regisztráció Névjegy A Wikimedia Commons applikáció egy nyílt forráskódú szoftver, amit a Wikimedia-közösség önkéntesei készítettek és tartanak karban. A Wikimédia Alapítvány nem vesz részt az applikáció megalkotásában, fejlesztésében és üzemeltetésében. - <a href=\"https://github.com/commons-app/apps-android-commons\">Forráskód</a> és <a href=\"https://commons-app.github.io/\">weboldal</a> a GitHubon. Nyiss egy új <a href=\"https://github.com/commons-app/apps-android-commons/issues\">GitHub-problémát</a> hibabejelentéssel vagy fejlesztési javaslattal. + Nyiss egy új <a href=\"https://github.com/commons-app/apps-android-commons/issues\">GitHub-problémát</a> hibabejelentéssel vagy fejlesztési javaslattal. <a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\">Adatvédelmi irányelvek</a> <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\">Köszönetnyilvánítás</a> Névjegy diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 6cb355fee..a739449c4 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -20,7 +20,7 @@ Tekan untuk melihat Mengunggah 1 berkas - Mengunggah %d berkas + Mengunggah %1$d berkas Unggahan saya Antrean @@ -49,15 +49,15 @@ Tidak ada unggahan 1 unggahan - %d unggahan + %1$d unggahan Memulai 1 unggahan - Memulai %d unggahan + Memulai %1$d unggahan 1 unggahan - %d unggahan + %1$d unggahan Tidak ada kategori yang cocok dengan %1$s Tambahkan kategori agar foto Anda lebih mudah ditemukan di Wikimedia Commons. diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 397d78312..3d766f26d 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -22,7 +22,7 @@ Tekan untuk melihat mengunggah 1 berkas - mengunggah %d berkas + mengunggah %1$d berkas Unggahan saya Antrean @@ -52,15 +52,15 @@ Tidak ada unggahan 1 unggahan - %d unggahan + %1$d unggahan Memulai 1 unggahan - Memulai %d unggahan + Memulai %1$d unggahan 1 unggahan - %d unggahan + %1$d unggahan Tidak ada kategori yang cocok dengan %1$s Tambahkan kategori agar foto Anda lebih mudah ditemukan di Wikimedia Commons.\n\nMulai mengetik untuk menambahkan kategori.\nTekan pesan ini (atau tekan kembali) untuk melewatkan langkah ini. diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml index f0b280f77..36c7ee2b4 100644 --- a/app/src/main/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -21,8 +21,8 @@ Innsending á %1$s mistókst Bankaðu til að skoða - %d skrá að sendast inn - %d skrár að sendast inn + %1$d skrá að sendast inn + %1$d skrár að sendast inn Nýlega innsendar skrár Í biðröð @@ -54,18 +54,18 @@ GPS er óvirkt í tækinu þínu. Viltu virkja það? Virkja GPS Engar innsendingar ennþá - + \@string/contributions_subtitle_zero - %d innsending - %d innsendingar + %1$d innsending + %1$d innsendingar - - Byrja %d innsendingu - Byrja %d innsendingar + + Byrja %1$d innsendingu + Byrja %1$d innsendingar - - %d innsending - %d innsendingar + + %1$d innsending + %1$d innsendingar Engir flokkar sem samsvara %1$s fundust Bættu við flokkum til að gera myndirnar þínar aðgengilegri á Wikimedia Commons\nByrjaðu að skrifa til að bæta við flokkum. @@ -210,8 +210,8 @@ Heimild þarf til að birta lista yfir staði í nágrenninu FÁ LEIÐSÖGN LESA GREIN - Velkomin á Wikimedia Commons, %s! Við erum ánægð með að þú skulir vera hérna. - %s skildi eftir skilaboð á spjallsíðunni þinni + Velkomin á Wikimedia Commons, %1$s! Við erum ánægð með að þú skulir vera hérna. + %1$s skildi eftir skilaboð á spjallsíðunni þinni Takk fyrir að hafa gert breytingar - %s minntist á þig á %s. + %1$s minntist á þig á %2$s. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 05e462fe4..df93909d4 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -21,8 +21,8 @@ Caricamento di %1$s non riuscito Premi per visualizzare - %d file in caricamento - %d file in caricamento + %1$d file in caricamento + %1$d file in caricamento I miei ultimi caricamenti In coda @@ -56,16 +56,16 @@ Non è stato ancora caricato niente \@string/contributions_subtitle_zero - 1 caricamento - %d caricamenti + %1$d caricamento + %1$d caricamenti - Iniziato %d caricamento - Iniziati %d caricamenti + Iniziato %1$d caricamento + Iniziati %1$d caricamenti - %d caricamento - %d caricamenti + %1$d caricamento + %1$d caricamenti Non è stata trovata alcuna categoria che contiene %1$s Aggiungi categorie per rendere le tue immagini più facilmente individuabili su Wikimedia Commons.\nInizia a digitare per aggiungere categorie. @@ -181,8 +181,8 @@ Posizione non disponibile. OTTIENI DIREZIONI LEGGI VOCE - Benvenuto in Wikimedia Commons, %s! Siamo contenti che tu sia qui. - %s ti ha lasciato un messaggio nella tua pagina di discussione + Benvenuto in Wikimedia Commons, %1$s! Siamo contenti che tu sia qui. + %1$s ti ha lasciato un messaggio nella tua pagina di discussione Grazie per aver fatto una modifica - %s ti ha menzionato su %s. + %1$s ti ha menzionato su %2$s. diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 9d897f6a9..cc5026d83 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -22,7 +22,7 @@ נא ללחוץ כדי להציג קובץ אחד מועלה - %d קבצים מועלים + %1$d קבצים מועלים ההעלאות האחרונות שלי בתור @@ -55,16 +55,17 @@ הפעלת GPS לא הועלה עדיין שום דבר + \@string/contributions_subtitle_zero העלאה אחת - %d העלאות + %1$d העלאות התחלת העלאה - התחלת %d העלאות + התחלת 1$d% העלאות העלאה אחת - %d העלאות + %1$d העלאות לא נמצאו קטגוריות בשם %1$s יש להוסיף קטגוריות כדי שיהיה קל יותר למצוא את התמונות שלך בוויקישיתוף.\nכדי להוסיף קטגוריה יש להתחיל לכתוב. @@ -164,7 +165,10 @@ האם באמת לצאת מהחשבון? סמל ויקישיתוף אתר ויקישיתוף + עמוד הפייסבוק של ויקישיתוף + קוד המקור של ויקישיתוף ב־GitHub תמונת רקע + תמונת המדיה נכשלה לא נמצאה תמונה העלאת תמונה הר זאו @@ -186,6 +190,7 @@ משוב יציאה מדריך + הודעות אי־אפשר להציג מקומות בסביבה ללא הרשאות מיקום לא נמצא תיאור דף קובץ בוויקישיתוף @@ -204,4 +209,9 @@ נדרשת הרשאה כדי להציג רשימה של מקומות בסביבה קבלת כיוונים קריאה הערך + ברוך בואך לוויקישיתוף של ויקימדיה, %1$s! שמחים לראות אותך כאן אצלנו. + קיבלת הודעה מאת %1$s בעמוד השיחה שלך + תודה לך על העריכה + אוזכרת על ידי %2$s ב{{GRAMMAR:תחילית|%1$s}}. + החלפת מצב תצוגה diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 4b7135d0b..0806e8f54 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -21,7 +21,7 @@ %1$s のアップロードに失敗しました 閲覧するにはタップしてください - %d 件のファイルをアップロード中 + %1$d 件のファイルをアップロード中 自分の最近のアップロードファイル 順番待ち中 @@ -46,7 +46,7 @@ このセットに名前をつけてください 変更 アップロード - 検索するカテゴリ + カテゴリを検索 保存 更新 お使いのデバイスではGPSが無効になっています。有効にしますか? @@ -54,13 +54,13 @@ まだ何もアップロードされていません。 \@string/contributions_subtitle_zero - %d 件のアップロード + %1$d 件のアップロード - %d 件のアップロードを開始中 + %1$d 件のアップロードを開始中 - %d 件のアップロード + %1$d 件のアップロード %1$s に一致するカテゴリが見つかりません あなたの画像をウィキメディア・コモンズで見つけやすくするためにカテゴリを追加してください。\n\nカテゴリ名の入力を開始してください。\nこの手順をスキップするにはこのメッセージをタップしてください(または戻るボタン)。 diff --git a/app/src/main/res/values-ji/strings.xml b/app/src/main/res/values-ji/strings.xml index a523d2754..c955a3e73 100644 --- a/app/src/main/res/values-ji/strings.xml +++ b/app/src/main/res/values-ji/strings.xml @@ -21,8 +21,8 @@ ארויפֿלאדן %1$s דורכגעפֿאלן דרוקט צו באקוקן - %d טעקע לאדט אן - %d טעקעס לאדן אן + %1$d טעקע לאדט אן + %1$d טעקעס לאדן אן מײַנע לעצטיקע ארויפֿלאדן אין ריי @@ -48,11 +48,11 @@ \@string/contributions_subtitle_zero איין ארויפֿלאד - %d ארויפֿלאדן + %1$d ארויפֿלאדן - אנהייבן %d ארויפֿלאד - אנהייבן %d ארויפֿלאדן + אנהייבן %1$d ארויפֿלאד + אנהייבן %1$d ארויפֿלאדן קאַטעגאריעס איינשטעלונגען diff --git a/app/src/main/res/values-jv/strings.xml b/app/src/main/res/values-jv/strings.xml index 10afc01bf..95c315e2a 100644 --- a/app/src/main/res/values-jv/strings.xml +++ b/app/src/main/res/values-jv/strings.xml @@ -20,7 +20,7 @@ Rampung ngunggah %1$s Wurung ngunggah %1$s Tunyuk saperlu ndeleng - + %d barkas lagi diunggah Unggahanku Sing Anyar @@ -53,18 +53,18 @@ GPS dipatèni ing pirantiné panjenengan. Panjenengan arep ngurubaké? Urubaké GPS Durung ana unggahan - + \@string/contributions_subtitle_zero - %d unggahan - %d unggahan + %1$d unggahan + %1$d unggahan - - Miwiti %d unggahan - Miwiti %d unggahan + + Miwiti %1$d unggahan + Miwiti %1$d unggahan - - %d unggahan - %d unggahan + + %1$d unggahan + %1$d unggahan Ora ana kategori sing cocog karo %1$s Kategori diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index 276550210..83e834d9a 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -20,9 +20,9 @@ ატვირთვის დასრულება %1$ %1$ ატვირთვა ვერ მოხერხდა დააჭირეთ სანახავად - - %d ფაილი იტვირთება - %d ფაილი იტვირთება + + %1$d ფაილი იტვირთება + %1$d ფაილი იტვირთება ჩემი ბოლო ატვირთვები რიგი @@ -54,18 +54,18 @@ თქვენ მოწყობილობაზე GPS გამორთულია. ნამდვილად გსურთ ჩართვა? GPS-ის ჩართვა ატვირთვები არ არის - + \@string/contributions_subtitle_zero - %d ატვირთვა - %d ატვირთვა + %1$d ატვირთვა + %1$d ატვირთვა - - იწყება %d ატვირთვა - იწყება %d ატვირთვა + + იწყება %1$d ატვირთვა + იწყება %1$d ატვირთვა - - %d ატვირთვა - %d ატვირთვა + + %1$d ატვირთვა + %1$d ატვირთვა კატეგორია კონფიგურაცია diff --git a/app/src/main/res/values-kab/strings.xml b/app/src/main/res/values-kab/strings.xml index 87795b9c2..651981705 100644 --- a/app/src/main/res/values-kab/strings.xml +++ b/app/src/main/res/values-kab/strings.xml @@ -21,8 +21,8 @@ Asali n %1$s ur yeddi ara Senned akken ad sekneḍ - %d n ufaylu yezga yettali - %d n ifuyla zgan ttalin + %1$d n ufaylu yezga yettali + %1$d n ifuyla zgan ttalin Ifuyla yulin melmi kan Ttraǧun @@ -56,16 +56,16 @@ Usla ayen yulin \@string/contributions_subtitle_zero - %d n usali - %d n usali + %1$d n usali + %1$d n usali - Beddu n %d n usali - Beddu n %d n usali + Beddu n %1$d n usali + Beddu n %1$d n usali - %d n usali - %d n usali + %1$d n usali + %1$d n usali Ulac taggayin imenṭaḍen akked %1$s i yettwafen Rnu taggayin akken ad terreḍ tugniwin-ik sehlent i tifin di Wikimedia Commons.\n\nBdu timerna n taggayin. @@ -74,7 +74,7 @@ Jerred Ɣef Asnas Wikipedia Commons d asnas n uɣbalu yeldin i d-yennulfan udiɣ yettwarfed sɣur iwiziwen d wid i t-iḍemnen n tmezdagnut Wikimedia. Tasbeddit Wikimedia ur tetteka ara deg usnulfu-is, tanfelit-is, neɣ aseggem n usnas. - <a href=\"https://github.com/commons-app/apps-android-commons\">Iɣbula</a> akked <a href=\"https://commons-app.github.io/\">usmel web</a> di GitHub. Rnu <a href=\"https://github.com/commons-app/apps-android-commons/issues\">tummla GitHub</a> tamaynut akken ad temmleḍ ibugen neɣ ad d-mudded isumar. + Rnu <a href=\"https://github.com/commons-app/apps-android-commons/issues\">tummla tamaynut GitHub</a> akken ad temmleḍ ibugen neɣ ad d-mudded isumar. <a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\">Tasertit n tbaḍnit</a> <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\">Ismaden</a> Ɣef @@ -164,6 +164,9 @@ Asesteb s snat n tarrayin ur yettusefrak ara akka tura. Tabɣiḍ ad teffɣeḍ? Alugu Commons + Asmel wen n Commons + Asmel Facebook n Commons + Tangalt aɣbalu Github n Commons Tugna n ugilal Tugna n midya ur teddi ara Ulac tugna @@ -188,6 +191,7 @@ Tikti Tuffɣa Atuṭuryel + Ilɣa Imḍiqen iqerben zemren ur ttwaskanen ara ma yella ur tebḍiḍ ara adig-ik arakal. ulac aglam yettwafen Asebter n ifuyla yettwasnen @@ -206,4 +210,8 @@ Ilaq usireg i uskan tabdart n wadigen iqerben AWI IWELLIHEN ƔER AMAGRAD + Anṣuf ar Wikimedia Commons, %1$s! Nefreḥ yes-k dagi. + %1$syeǧǧa-d izen deg usenter n uskasi + Tanemmirt ɣef ubeddel + %1$s yemmel-ak-id deg %2$s . diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml index 48b531318..370026cd4 100644 --- a/app/src/main/res/values-kn/strings.xml +++ b/app/src/main/res/values-kn/strings.xml @@ -21,8 +21,8 @@ %1$s ಅಪ್ಲೋಡ್ ಮಾಡುವಿಕೆ ವಿಫಲವಾಗಿದೆ ನೋಡಲು ಮೆಲ್ಲಗೆ ತಟ್ಟಿ - %d ಕಡತ ಅಪ್ಲೋಡ್ ಅಗುತ್ತಿದೆ - %d ಕಡತಗಳು ಅಪ್ಲೋಡ್ ಅಗುತ್ತಿದೆ + %1$d ಕಡತ ಅಪ್ಲೋಡ್ ಅಗುತ್ತಿದೆ + %1$d ಕಡತಗಳು ಅಪ್ಲೋಡ್ ಅಗುತ್ತಿದೆ ನನ್ನ ಇತ್ತಿಚಿನ ಅಪ್ಲೋಡ್ಗಳು ಸರತಿಸಾಲಿನಲ್ಲಿದೆ diff --git a/app/src/main/res/values-ko-kp/strings.xml b/app/src/main/res/values-ko-kp/strings.xml new file mode 100644 index 000000000..a8dd2b83e --- /dev/null +++ b/app/src/main/res/values-ko-kp/strings.xml @@ -0,0 +1,132 @@ + + + 공용 + 설정 + 사용자 이름 + 통행암호 + 가입 + 가입하기 + 가입 중 + 기다려주세요… + 가입 성공! + 가입 실패! + 서류를 찾을수 없습니다. 다른 서류를 사용해주십시오. + 인증 실패! + 올리적재를 시작했습니다! + %1$s 서류를 올리적재하였습니다! + 당신의 올리적재를 보려면 두드리세요 + %1$s 서류 올리적재를 시작하는중 + %1$s 서류를 올리적재하는중 + %1$s 서류 올리적재를 완료하는중 + %1$s 서류 올리적재 실패 + 보려면 두드리세요 + + %1$d개의 서류를 올리적재하는중 + %1$d개의 서류를 올리적재하는중 + + 내 최근 올리적재 + 대기중 + 실패 + %1$d%% 완료 + 올리적재중 + 화랑에서 선택 + 사진 찍기 + 근처 + 내 올리적재 + 공유 + 열람기로 보기 + 제목 + 설명 + 가입할수 없습니다 - 망 오유입니다 + 가입할수 없습니다 - 사용자이름을 확인하세요 + 가입할수 없습니다 - 통행암호를 확인하세요 + 실패한 시도가 너무 많습니다. 몇분후에 다시 시도하세요. + 죄송합니다, 이 사용자는 공용에서 차단되였습니다 + 두인자검증부호를 제공해야 합니다. + 가입 실패 + 올리적재 + 이 모임에 이름짓기 + 바뀜 + 올리적재 + 분류 검색 + 보관 + 재생 + 장치에서 GPS가 금지되여있습니다. 허가하시겠습니까? + GPS 허가 + 아직 올리적재가 없습니다 + + \@string/contributions_subtitle_zero + %1$d개 올리적재 + + + %1$d장의 올리적재를 시작합니다 + %1$d장의 올리적재를 시작합니다 + + + %1$d개 올리적재 + + %1$s와(과) 일치하는 분류를 찾을수 없습니다 + 분류 + 설정 + 등록하기 + 정보 + 위키매체공용 프로그람은 공개원천 응용프로그람이며 위키매체공동체내의 자원봉사자에 의해 유지됩니다. 위키매체재단은 응용프로그람의 생성, 개발, 유지보수에 관여하지 않습니다. + <a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\">개인정보정책</a> + <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\">제작진</a> + 정보 + (전자우편으로) 반결합 발신하기 + 설치된 전자우편 의뢰기가 없습니다 + 최근에 사용한 분류 + 첫 동기를 기다리는중… + 아직 사진을 올리적재하지 않았습니다. + 다시 시도 + 취소 + 이 그림은 %1$s에 따라 사용이 허가됩니다 + 이 그림에 대해서, 이것이 본인이 창작한 저작물이며, 저작권에 위배되는것이 포함되지 않았으며, <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">위키매체공용정책</a>에 위배되지 않는다는것에 동의합니다. + 내리적재 + 허가권 + 이전의 제목/설명을 사용하기 + 자동으로 현재 위치 얻기 + 화상에 지리정보꼬리표가 달려 있지 않다면, 현재 위치를 검색하여 분류를 제안해주십시오 + 야간방식 + 어두운 주제 쓰기 + 저작자표시-동일조건변경허락 4.0 + 저작자표시 4.0 + 저작자표시-동일조건변경허락 3.0 + 저작자표시 3.0 + CC0 + 크리에이티브코먼즈 저작자표시-동일조건변경허락 3.0 + 크리에이티브코먼즈 저작자표시-동일조건변경허락 3.0 (오스트리아) + 크리에이티브코먼즈 저작자표시-동일조건변경허락 3.0 (도이췰란드) + 크리에이티브코먼즈 저작자표시-동일조건변경허락 3.0 (에스또니야) + 크리에이티브코먼즈 저작자표시-동일조건변경허락 3.0 (에스빠냐) + 크리에이티브코먼즈 저작자표시-동일조건변경허락 3.0 (흐르바쯔까) + 크리에이티브코먼즈 저작자표시-동일조건변경허락 3.0 (룩셈부르그) + 크리에이티브코먼즈 저작자표시-동일조건변경허락 3.0 (네데를란드) + 크리에이티브코먼즈 저작자표시-동일조건변경허락 3.0 (노르웨이) + 크리에이티브코먼즈 저작자표시-동일조건변경허락 3.0 (뽈스까) + 크리에이티브코먼즈 저작자표시-동일조건변경허락 3.0 (로므니아) + 크리에이티브코먼즈 저작자표시 3.0 + 크리에이티브코먼즈 저작자표시-동일조건변경허락 4.0 + 크리에이티브코먼즈 저작자표시 4.0 + CC 령 + 위키매체공용은 위키백과에 쓰이는 대부분의 화상을 주관합니다. + 당신의 화상은 전전세계 사람들을 교육하는데 도움이 됩니다! + 탈퇴 + 강좌 + 알림 + 위치 허가가 없으면 주변 장소를 표시할수 없습니다 + 설명이 없습니다 + 공용 서류 문서 + 위키자료 항목 + 그림 캐쉬처리 오유 + 이 서류를 설명할수 있는 제목으로, 서류 이름으로 사용됩니다. 띄여쓰기를 포함한 일반적인 단어를 사용할수 있습니다. 서류 확장자는 포함하지 마세요 + 권한 주기 + 외부기억기 사용하기 + 일지서류 발신하기 + 전자우편으로 개발자에게 일지서류 발신하기 + %1$s님, 위키매체공용에 오신것을 환영합니다! 반갑습니다. + %1$s님이 당신의 사용자 토론 문서에 글을 남겼습니다 + 편집해 주셔서 감사합니다 + %1$s님이 %2$s에서 당신을 언급했습니다. + diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 829b07aa9..a38bf2fc8 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -21,8 +21,8 @@ %1$s 파일 올리기 실패 보려면 탭하세요 - %d개의 파일을 올리는 중 - %d개의 파일을 올리는 중 + %1$d개의 파일을 올리는 중 + %1$d개의 파일을 올리는 중 내 최근 업로드 대기 중 @@ -56,15 +56,14 @@ 아직 올린 항목이 없습니다 \@string/contributions_subtitle_zero - 1개 업로드 - %d개 업로드 + %1$d개 업로드 - %d장의 업로드를 시작합니다 - %d장의 업로드를 시작합니다 + %1$d장의 업로드를 시작합니다 + %1$d장의 업로드를 시작합니다 - %d개 업로드 + %1$d개 업로드 %1$s와(과) 일치하는 분류를 찾을 수 없습니다 위키미디어 공용에서 그림을 더 찾기 쉽게 만들기 위해 분류를 추가합니다.\n분류를 추가하려면 입력을 시작하세요. @@ -163,6 +162,7 @@ 2요소 인증은 현재 지원하지 않습니다. 정말 로그아웃하시겠습니까? 공용 로고 + 공용 웹사이트 배경 그림 미디어 그림 실패 그림이 없습니다 @@ -203,4 +203,8 @@ 위치가 변경되지 않았습니다. 위치를 사용할 수 없습니다. 주변 장소의 목록을 표시하기 위한 권한이 필요합니다. + %1$s님, 위키미디어 공용에 오신 것을 환영합니다! 반갑습니다. + %1$s님이 당신의 사용자 토론 문서에 글을 남겼습니다 + 편집해 주셔서 감사합니다 + %1$s님이 %2$s에서 당신을 언급했습니다. diff --git a/app/src/main/res/values-ky/strings.xml b/app/src/main/res/values-ky/strings.xml index 5dcb02a77..517570895 100644 --- a/app/src/main/res/values-ky/strings.xml +++ b/app/src/main/res/values-ky/strings.xml @@ -20,7 +20,7 @@ Көрүү үчүн басыңыз 1 файл жүктөлүүдө - %d файл жүктөлүүдө + %1$d файл жүктөлүүдө Менин жүктөөлөрүм Кезек @@ -49,15 +49,15 @@ Азырынча жүктөөлөр жок 1 жүктөө - %d жүктөө + %1$d жүктөө 1 жүктөө башталды - %d жүктөө башталды + %1$d жүктөө башталды 1 жүктөө - %d жүктөө + %1$d жүктөө %1$s түрмөктөрү табылган жок Уикиказынада Сиздин сүрөттөрдү жеңил табуу үчүн түрмөктөрдү кошуңуз.\n\nТүрмөктөрдү жазууну баштаңыз.\nБул кадамды аттап өтүү үчүн, бул билдирүүнү (же кийинкини) басыңыз. diff --git a/app/src/main/res/values-lb/strings.xml b/app/src/main/res/values-lb/strings.xml index 734841765..70e72e959 100644 --- a/app/src/main/res/values-lb/strings.xml +++ b/app/src/main/res/values-lb/strings.xml @@ -22,7 +22,7 @@ Dréckt fir nach eng Kéier ze probéieren ee Fichier eroplueden - %d Fichieren eroplueden + %1$d Fichieren eroplueden Meng rezent eropgeluede Fichieren An der Queue @@ -55,16 +55,16 @@ Nach keng eropgeluede Fichieren N@string/contributions_subtitle_zero - 1 Fichier eropgelueden - %d Fichieren eropgelueden + Ee Fichier eropgelueden + %1$d Fichieren eropgelueden Ugefaang 1 Fichier eropzelueden - Ugefaang %d Fichieren eropzelueden + Ugefaang %1$d Fichieren eropzelueden - 1 Fichier eropgelueden - %d Fichieren eropgelueden + Ee Fichier eropgelueden + %1$d Fichieren eropgelueden D\'Kategorie %1$s gouf net fonnt Setzt Kategorien dobäi fir datt Är Biller méi einfach op Wikimedia Commons ze fanne sinn.\n\nFänkt u mat Tippe fir Kategorien dobäizesetzen. @@ -195,5 +195,7 @@ De Plaz huet net geännert. Plaz ass net disponibel. ARTIKEL LIESEN + Wëllkomm op Wikimedia Commons, %1$s! Mir si frou datt Dir hei sidd. Merci datt Dir eng Ännerung gemaach hutt + %1$s huet Iech op %2$s ernimmt. diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index ed9bcec38..43b7fa862 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -21,8 +21,8 @@ Įkelti %1$s nepavyko Bakstelėkite norėdami Rodyti - %d keliamas failas - %d keliamų failų + %1$d keliamas failas + %1$d keliami failai Naujausi mano įkėlimai Eilėje @@ -53,18 +53,18 @@ GPS išjungta jūsų įrenginyje. Ar norite įjungti? Išjungti GPS Nėra įkėlimų kol kas - - Dar nėra įkėlimų + + \@string/contributions_subtitle_zero 1 įkėlimas - %d įkėlimai + %1$d įkėlimai - Pradedamas %d įkėlimas - Pradedami %d įkėlimai + Pradedamas %1$d įkėlimas + Pradedami %1$d įkėlimai - %d įkėlimas - %d įkėlimai + %1$d įkėlimas + %1$d įkėlimai Nerasta kategorijų, atitinkančiu %1$s Pridėkite kategorijas, kad jūsų paveikslėliai būtų lengviau randami Vikimedija Commons.\n -\n -Pradėkite rašyti, kad pridėtumėte kategorijas. @@ -136,4 +136,7 @@ Atsijungti Suteikti leidimą Prisijunkite prie savo paskyros + %1$s paliko žinutę jūsų aptarimo puslapyje + Dėkoja jums už atliktą pakeitimą + %1$s jus paminėjo %2$s. diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 82e2e1065..1926747c5 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -98,4 +98,5 @@ Izmantot ārējo krātuvi LASĪT RAKSTU Paldies par labojumu + Pārslēgt skatu diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index e35407a63..8a9811cd0 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -21,8 +21,8 @@ Подигањето на „%1$s“ не успеа Допрете за да погледате - Се подига %d податотека - Се подигаат %d податотеки + Се подига %1$d податотека + Се подигаат %1$d податотеки Мои скорешни подигања Чека ред @@ -56,16 +56,16 @@ Сè уште нема подигања \@string/contributions_subtitle_zero - %d подигање - %d подигања + %1$d подигање + %1$d подигања - Започнувам %d подигање - Започнувам %d подигања + Започнувам %1$d подигање + Започнувам %1$d подигања - %d подигање - %d подигања + %1$d подигање + %1$d подигања Нема категории што одговараат на %1$s Ставете им категории на сликите, за да можат корисниците полесно да ги најдат на Ризницата.\n\nЗа да ставите категорија, почнете со пишување на нејзиното име. @@ -210,8 +210,9 @@ Се бара дозвола за приказ на список на околни места ДАЈ НАСОКИ ПРОЧИТАЈ СТАТИЈА - Добре дојдовте на Ризницата, %s! Драго ни е што сте тука. - %s ви остави порака на разговорната страница + Добре дојдовте на Ризницата, %1$s! Драго ни е што сте тука. + %1$s ви остави порака на разговорната страница Ви благодариме за уредувањето - %s ве спомна на %s. + %1$s ве спомна на %2$s. + Смени поглед diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index a5248015a..fe59034e2 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -20,7 +20,7 @@ കാണാനായി ടാപ് ചെയ്യുക 1 പ്രമാണം അപ്‌ലോഡ് ചെയ്യുന്നു - %d പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യുന്നു + %1$d പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യുന്നു എന്റെ അപ്‌ലോഡുകൾ നിരയായി വെച്ചു @@ -49,15 +49,15 @@ ഒരു അപ്‌ലോഡും ചെയ്തില്ല ഒരു അപ്‌ലോഡ് - %d അപ്‌ലോഡുകൾ + %1$d അപ്‌ലോഡുകൾ ഒരു അപ്‌ലോഡ് തുടങ്ങുന്നു - %d അപ്‌ലോഡുകൾ തുടങ്ങുന്നു + %1$d അപ്‌ലോഡുകൾ തുടങ്ങുന്നു ഒരു അപ്‌ലോഡ് - %d അപ്‌ലോഡുകൾ + %1$d അപ്‌ലോഡുകൾ %1$s എന്നതുമായി പൊരുത്തമുള്ള ഒരു വർഗ്ഗവും കണ്ടെത്താനായില്ല താങ്കളുടെ ചിത്രങ്ങൾ വിക്കിമീഡിയ കോമൺസിൽ കൂടുതൽ എളുപ്പത്തിൽ കണ്ടെത്തപ്പെടാനായി വർഗ്ഗങ്ങൾ ചേർക്കുക.\n\nവർഗ്ഗങ്ങൾ ചേർക്കാനായി ടൈപ്പ് ചെയ്ത് തുടങ്ങുക.\nഈ ഘട്ടം ഒഴിവാക്കാൻ ടാപ് ചെയ്യുക (അല്ലെങ്കിൽ പിന്നോട്ട് പോവുക). diff --git a/app/src/main/res/values-mr/strings.xml b/app/src/main/res/values-mr/strings.xml index 9a766f31a..f7f65ef00 100644 --- a/app/src/main/res/values-mr/strings.xml +++ b/app/src/main/res/values-mr/strings.xml @@ -22,7 +22,7 @@ बघण्यास अलगद टपली मारा १ संचिका अपभारीत आहे - %d संचिका अपभारीत आहे + %1$d संचिका अपभारीत आहे माझी अपभारणे प्रतिक्षावलीत ठेवले @@ -53,15 +53,15 @@ अद्याप अपभारणे नाहीत एक अपभारण - %d अपभारणे + %1$d अपभारणे १ अपभारण सुरू करीत आहे upload - %d अपभारणे सुरू करीत आहे + %1$d अपभारणे सुरू करीत आहे १ अपभारण - %d अपभारणे + %1$d अपभारणे %1$s शी जुळणारे कोणतेच वर्ग सापडले नाहीत विकिमिडिया कॉमन्सवर आपल्या संचिकांना शोधणे सोपी जाण्यासाठी त्यांना वर्ग जोडा.\n\nवर्ग जोडण्यास टंकन सुरू करा.\nही पायरी चुकविण्यास या संदेशावर अलगद टिचका (किंवा बॅक कळ टिचका) diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index 5fb921843..7c19027e3 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -43,15 +43,15 @@ Muat naik Cari dalam kategori Simpan - + Belum ada muatnaik - %d muatnaik - %d muatnaik + %1$d muatnaik + %1$d muatnaik Memulakan %d kerja muat naik - - %d muatnaik - %d muatnaik + + %1$d muatnaik + %1$d muatnaik Tiada kategori yang sepadan dengan %1$s dijumpai Tambahkan kategori supaya gambar-gambar anda lebih senang ditemui di Wikimedia Commons.\n\nMula menaip untuk menambahkan kategori.\nKetik mesej ini (atau tekan butang undur) untuk melangkau langkah ini. diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 44e991e32..25eb9ee4e 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -20,9 +20,9 @@ Avslutter opplasting av %1$s Opplastingen av %1$s feilet Trykk for å vise - - %d fil lastes opp - %d filer lastes opp + + %1$d fil lastes opp + %1$d filer lastes opp Mine nylige opplastinger I ventekø @@ -54,18 +54,18 @@ GPS er slått av på denne enheten. Ønsker du å slå den på? Slå på GPS Ingen opplastinger ennå - + \@string/contributions_subtitle_zero - %d opplasting - %d opplastinger + %1$d opplasting + %1$d opplastinger - Starter %d opplasting - Starter %d opplastinger + Starter %1$d opplasting + Starter %1$d opplastinger - - %d opplasting - %d opplastinger + + %1$d opplasting + %1$d opplastinger Ingen kategorier som stemte overens med %1$s funnet Legg til kategorier for å gjøre bildene dine lettere å finne på Wikimedia Commons.\n\nBegynn å skrive navnet på kategoriene. @@ -74,7 +74,7 @@ Registrer deg Om Wikimedia Commons-appen er åpen kildekode og er skapt og vedlikeholdt av stipendiater og frivillige fra Wikimedia-fellesskapet. Wikimedia Foundation er ikke involvert i utviklingen eller vedlikeholdet av appen. - <a href=\"https://github.com/commons-app/apps-android-commons\">Kildekode</a> og <a href=\"https://commons-app.github.io/\">nettside</a> på GitHub. Opprett en ny <a href=\"https://github.com/commons-app/apps-android-commons/issues\">GitHub-sak</a> for feilrapporter og forslag. + Opprett en ny <a href=\"https://github.com/commons-app/apps-android-commons/issues\">GitHub-sak</a> for feilrapporter og forslag. <a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\">Personvernpolicy</a> <a href=\"https://github.com/commons-app/apps-android-comons/blob/master/CREDITS\">Bidragsytere</a> Om @@ -164,6 +164,9 @@ Tofaktorautentisering støttes ikke ennå. Ønsker du virkelig å logge ut? Commons-logo + Commons-nettsted + Commons\' Facebook-side + Commons\' kildekode på GitHub Bakgrunnsbilde Mediebilde feilet Intet bilde funnet @@ -207,4 +210,8 @@ Tillatelse kreves for å vise listen over steder i nærheten FÅ VEIBESKRIVELSE LES ARTIKKEL + Velkommen til Wikimedia Commons, %1$s! Vi er glade for at du er her. + %1$s la igjen en beskjed på diskusjonssiden din + Takk for at du har gjort en redigering + %1$s nevnte deg på %2$s. diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 23314b38f..69c35cada 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -21,8 +21,8 @@ Het uploaden van %1$s is mislukt Wijs aan om te bekijken - %d bestand aan het uploaden - %d bestanden aan het uploaden + %1$d bestand aan het uploaden + %1$d bestanden aan het uploaden Mijn uploads In wachtrij @@ -54,15 +54,15 @@ Nog geen uploads 1 upload - %d uploads + %1$d uploads Bezig met 1 upload - Bezig met %d uploads + Bezig met %1$d uploads 1 upload - %d uploads + %1$d 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. diff --git a/app/src/main/res/values-oc/strings.xml b/app/src/main/res/values-oc/strings.xml index c3783f760..548be1198 100644 --- a/app/src/main/res/values-oc/strings.xml +++ b/app/src/main/res/values-oc/strings.xml @@ -20,9 +20,9 @@ Fin del telecargament %1$s Telecargament fracassat a %1$s Quichar per afichar - - %d fichièr en cors de cargament - %d fichièrs en cors de cargament + + %1$d fichièr en cors de cargament + %1$d fichièrs en cors de cargament Mos darrièrs cargaments Mes en fila d\'espèra @@ -50,18 +50,18 @@ Recercar de categorias Enregistrar Refrescar - + \@string/contributions_subtitle_zero - %d cargament - %d cargaments + %1$d cargament + %1$d cargaments - - %d cargament aviat - %d cargaments aviats + + %1$d cargament aviat + %1$d cargaments aviats - - %d cargament - %d cargaments + + %1$d cargament + %1$d cargaments Cap de categoria que correspond a %1$s pas trobada Categorias diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 4d74c2cd6..a0d00bc5a 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -21,7 +21,7 @@ ਵੇਖਣ ਲਈ ਥਪੇੜੋ ੧ ਫ਼ਾਈਲ ਚੜ੍ਹਾਈ ਜਾ ਰਹੀ ਹੈ - %d ਫ਼ਾਈਲਾਂ ਚੜ੍ਹਾਈਆਂ ਜਾ ਰਹੀਆਂ ਹਨ + %1$d ਫ਼ਾਈਲਾਂ ਚੜ੍ਹਾਈਆਂ ਜਾ ਰਹੀਆਂ ਹਨ ਮੇਰੇ ਅੱਪਲੋਡ ਕਤਾਰ ਵਿਚ @@ -54,16 +54,16 @@ ਫ਼ਿਲਹਾਲ ਕੋਈ ਅੱਪਲੋਡ ਨਹੀਂ \@string/contributions_subtitle_zero - %d upload - %d ਅੱਪਲੋਡ + %1$d upload + %1$d ਅੱਪਲੋਡ - %d ਅੱਪਲੋਡ ਸ਼ੁਰੂ ਹੋ ਰਹੀ ਹੈ - %d ਸ਼ੁਰੂ ਹੋ ਰਹੇ ਹਨ + %1$d ਅੱਪਲੋਡ ਸ਼ੁਰੂ ਹੋ ਰਹੀ ਹੈ + %1$d ਸ਼ੁਰੂ ਹੋ ਰਹੇ ਹਨ &d ਅੱਪਲੋਡ - %d ਅੱਪਲੋਡਾਂ + %1$d ਅੱਪਲੋਡਾਂ %1$s ਨਾਲ਼ ਮੇਲ ਖਾਂਦੀ ਕੋਈ ਸ਼੍ਰੇਣੀ ਨਹੀਂ ਲੱਭੀ ਆਪਣੀਆਂ ਤਸਵੀਰਾਂ ਨੂੰ ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਵਿਚ ਜ਼ਿਆਦਾ ਲੱਭਣਯੋਗ ਬਣਾਉਣ ਲਈ ਸ਼੍ਰੇਣੀਆਂ ਜੋੜੋ।\n\nਸ਼੍ਰੇਣੀਆਂ ਜੋੜਨ ਲਈ ਟਾਈਪ ਕਰਨ ਅਰੰਭ ਕਰੋ।\nਇਸ ਕਾਰਜ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਨ ਲਈ ਇਹ ਸੁਨੇਹਾ ਥਪੇੜੋ (ਜਾਂ ਵਾਪਸੀ ਬਟਨ ਦਬਾਓ)। diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index be7f6c752..20fc55610 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -21,8 +21,8 @@ Wysyłanie %1$s nieudane Dotknij, aby zobaczyć - Przesyłanie %d pliku - Przesyłanie %d plików + Przesyłanie %1$d pliku + Przesyłanie %1$d plików Niedawno przesłane W kolejce @@ -56,16 +56,16 @@ Na razie brak przesłanych plików! Przesłano @string/contributions_subtitle_zero - Przesłano %d plik - Przesłano %d pliki + Przesłano %1$d plik + Przesłano %1$d pliki - Rozpoczęto %d przesyłanie - Rozpoczęto %d przesyłania + Rozpoczęto %1$d przesyłanie + Rozpoczęto %1$d przesyłania - %d przesłanie - %d przesłania + %1$d przesłanie + %1$d przesłania Nie znaleziono kategorii pasujących do %1$s Dodaj kategorie, aby ułatwić odnalezienie plików w Wikimedia Commons.\nZacznij pisać, aby dodać kategorie. @@ -183,5 +183,6 @@ Element Wikidanych Podaj krótką, opisową i unikalną nazwę, która będzie służyła jako nazwa pliku. Możesz używać prostego języka i spacji. Nie dodawaj rozszerzenia pliku. Zaloguj się na swoje konto - Witamy w Wikimedia Commons, %s! Cieszymy się, że tu jesteś. + Witamy w Wikimedia Commons, %1$s! Cieszymy się, że tu jesteś. + %1$s wspomniał o Tobie w %2$s. diff --git a/app/src/main/res/values-pms/strings.xml b/app/src/main/res/values-pms/strings.xml index e869921c1..42347b7ee 100644 --- a/app/src/main/res/values-pms/strings.xml +++ b/app/src/main/res/values-pms/strings.xml @@ -21,8 +21,8 @@ Cariament falì a %1$s Sgnaché për ësmon-e - %d archivi an camin ch\'as caria - %d archivi an camin ch\'as cario + %1$d archivi an camin ch\'as caria + %1$d archivi an camin ch\'as cario Ij mè cariament recent An coa @@ -56,16 +56,16 @@ Ancor gnun cariament \@string/contributions_subtitle_zero - %d cariament - %d cariament + %1$d cariament + %1$d cariament - %d cariament ancaminà - %d cariament ancaminà + %1$d cariament ancaminà + %1$d cariament ancaminà - %d cariament - %d cariament + %1$d cariament + %1$d cariament Gnun-e categorìe rëspondente a %1$s trovà Ch\'a gionta dle categorìe, për ch\'a sia pi belfé trové soe plance su Wikimedia Commons.\nCh\'a ancamin-a a scrive për gionté dle categorìe. @@ -210,8 +210,9 @@ A-i é da manca dël përmess pr\'ësmon-e na lista dij pòst davzin OTEN-E D\'ANSTRUSSION LESE L\'ARTÌCOL - Bin-ëvnù an Wikimedia Commons, %s! I soma content ëd vëdd-lo sì. - %s a l\'ha lassà un mëssagi su soa pàgina ëd ciaciarade + Bin-ëvnù an Wikimedia Commons, %1$s! I soma content ëd vëdd-lo sì. + %1$s a l\'ha lassà un mëssagi su soa pàgina ëd ciaciarade Mersì d\'avèj fàit na modìfica - %s a l\'ha massionalo su %s . + %1$s a l\'ha massionalo su %2$s . + Cangé la visualisassion diff --git a/app/src/main/res/values-ps/strings.xml b/app/src/main/res/values-ps/strings.xml index 800bb79ba..439943662 100644 --- a/app/src/main/res/values-ps/strings.xml +++ b/app/src/main/res/values-ps/strings.xml @@ -32,9 +32,9 @@ وېشنيزې پلټل خوندي کول بياتازه کول - + 1 پورته کول - %d پورته کول + %1$d پورته کول وېشنيزې امستنې diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index be9036d40..5792df782 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -22,7 +22,7 @@ Toque para ver carregando arquivo - carregando %d arquivos + carregando %1$d arquivos Meus envios recentes Na fila @@ -56,16 +56,16 @@ Ainda não carregado \@string/contributions_subtitle_zero - %d envio - %d envios + %1$d envio + %1$d envios - Iniciando 1 carregamento - Iniciando %d carregamentos + Iniciando %1$d carregamento + Iniciando %1$d carregamentos - 1 carregamento - %d carregamentos + %1$d carregamento + %1$d carregamentos Nenhuma categoria correspondente %1$s encontrada Adicione categorias para fazer suas imagens mais vistas no Wikimedia Commons. \n\nComece a digitar para adicionar categorias.\nAperte nesta mensagem (ou aperte para voltar) para pular este passo @@ -210,8 +210,9 @@ Permissão necessária para exibir uma lista de locais próximos OBTER DIREÇÕES LER ARTIGO - Bem-vindo ao Wikimedia Commons, %s! É um prazer tê-lo aqui. - %s deixou uma mensagem na sua página de discussão + Bem-vindo ao Wikimedia Commons, %1$s! É um prazer tê-lo aqui. + %1$s deixou uma mensagem na sua página de discussão Obrigado por ter realizado uma edição - %s fez menção a você em %s. + %1$s fez menção a você em %2$s. + Visualização de alternância diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index be96d27f1..bfd0027fd 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -21,8 +21,8 @@ O carregamento de %1$s falhou Toque para ver - %d a carregar um ficheiro - a carregar %d ficheiros + %1$d a carregar um ficheiro + a carregar %1$d ficheiros Meus carregamentos recentes Em espera @@ -56,16 +56,16 @@ Ainda não foram enviados ficheiros \@string/contributions_subtitle_zero - %d carregamento - %d carregamentos + %1$d carregamento + %1$d carregamentos - A iniciar %d carregamento - A iniciar %d carregamentos + A iniciar %1$d carregamento + A iniciar %1$d carregamentos - %d carregamento - %d carregamentos + %1$d carregamento + %1$d carregamentos Nenhuma categoria correspondente %1$s encontrada Adicione categorias para tornar as suas imagens mais fáceis de encontrar no Wikimedia Commons.\nComece a digitar para adicionar categorias. @@ -210,8 +210,9 @@ É necessária a permissão para mostrar uma lista dos sítios aqui perto OBTER DIREÇÕES LER ARTIGO - Bem-vindo ao Wikimedia Commons, %s! É um prazer tê-lo aqui. - %s deixou uma mensagem na sua página de discussão + Bem-vindo ao Wikimedia Commons, %1$s! É um prazer tê-lo aqui. + %1$s deixou uma mensagem na sua página de discussão Obrigado por ter realizado uma edição - %s fez menção a si em %s. + %1$s fez menção a si em %2$s. + Alternar modo de visionamento diff --git a/app/src/main/res/values-qq/strings.xml b/app/src/main/res/values-qq/strings.xml index 1c92111cb..3f2035941 100644 --- a/app/src/main/res/values-qq/strings.xml +++ b/app/src/main/res/values-qq/strings.xml @@ -20,8 +20,8 @@ Title for notification about upload failing. %1$s represents file name Text for notification about upload being completed. - Status text about number of uploads left.\n* %d represents number of uploads left, including current one\n - Status text about number of uploads left.\n* %d represents number of uploads left, including current one\n + Status text about number of uploads left.\n* %1$d represents number of uploads left, including current one\n + Status text about number of uploads left.\n* %1$d represents number of uploads left, including current one\n Title for screen showing my contributions. Show status of upload as currently queued.\n{{Identical|Queue}} diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index cea885296..8021d2970 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -22,8 +22,8 @@ Atingeți pentru a vizualiza 1 fișier se încarcă - %d fișiere se încarcă - %d de fișiere se încarcă + %1$d fișiere se încarcă + %1$d de fișiere se încarcă Încărcările mele În așteptare @@ -52,19 +52,19 @@ Salvare \@string/contributions_subtitle_zero - %d încărcare - %d încărcări - %d de încărcări + %1$d încărcare + %1$d încărcări + %1$d de încărcări Se pornește 1 încărcare - Se pornesc %d încărcări - Se pornesc %d de încărcări + Se pornesc %1$d încărcări + Se pornesc %1$d de încărcări - + 1 încărcare - %d încărcări - %d de încărcări + %1$d încărcări + %1$d de încărcări Nu s-a găsit nicio categorie corespunzătoare cu %1$s Adăugați categorii pentru a facilita găsirea imaginilor dumneavoastră la Wikimedia Commons.\n\nÎncepeți să tastați pentru a adăuga categorii.\nAtingeți acest mesaj (sau mergeți înapoi) pentru a omite acest pas. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index c41602c77..eece93a93 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -21,9 +21,9 @@ Загрузка %1$s не удалась Нажмите для просмотра - %d файл загружается - %d файла загружается - %d файлов загружается + %1$d файл загружается + %1$d файла загружается + %1$d файлов загружается Мои недавние загрузки В очереди @@ -57,19 +57,19 @@ Загрузок пока нет \@string/contributions_subtitle_zero - %d загрузка - %d загрузки - %d загрузок + %1$d загрузка + %1$d загрузки + %1$d загрузок - Начинается %d загрузка - Начинается %d загрузки - Начинается %d загрузок + Начинается %1$d загрузка + Начинается %1$d загрузки + Начинается %1$d загрузок - %d загрузка - %d загрузки - %d загрузок + %1$d загрузка + %1$d загрузки + %1$d загрузок Категории, соответствующие %1$s, не найдены Добавьте категории, чтобы ваши изображения можно было легко найти на Викискладе.\nНачните вводить название для добавления категорий. @@ -214,8 +214,9 @@ Необходимо разрешение для отображения списка мест поблизости Показать на карте во внешней программе ЧИТАТЬ СТАТЬЮ - Добро пожаловать в Wikimedia Commons, %s! Рады вас здесь видеть :-) - %s оставил сообщение на вашей странице обсуждения + Добро пожаловать на Викисклад, %1$s! Рады вас здесь видеть. + %1$s оставил сообщение на вашей странице обсуждения Спасибо за правку - %s упомянул вас на %s. + %1$s упомянул вас на %2$s. + Переключить режим просмотра diff --git a/app/src/main/res/values-sd/strings.xml b/app/src/main/res/values-sd/strings.xml index 93cc55e57..c42a38464 100644 --- a/app/src/main/res/values-sd/strings.xml +++ b/app/src/main/res/values-sd/strings.xml @@ -21,8 +21,8 @@ %1$s جو چاڙھڻ ناڪام ويو ڏسڻ لاءِ ٺونگيو - %d فائيل چاڙھيندي - %d فائيلَ چاڙھيندي + %1$d فائيل چاڙھيندي + %1$d فائيلَ چاڙھيندي منھنجا تازا چاڙھ قطار ۾ @@ -52,18 +52,18 @@ تازو ڪيو جي پي ايس چالو ڪيو (اين ايبل جي پي ايس) اڃان تائين ڪو به ڄاڙهه (اَپلوڊ) نه ٿيو آهي - + \@string/contributions_subtitle_zero - %d چاڙھ - %d چاڙھَ + %1$d چاڙھ + %1$d چاڙھَ - - چاڙھ %d شروع ڪندي - چاڙھَ %d شروع ڪندي + + چاڙھ %1$d شروع ڪندي + چاڙھَ %d$1 شروع ڪندي - %d چاڙھ - %d چاڙھَ + %1$d چاڙھ + %1$d چاڙھَ %1$s سان ملندڙ ڪوبہ زمرو نہ لڌو پنھنجي عڪسن ۾ زمرا وجھو تہ جيئن وڪيميڊيا العام تي وڌيڪ ڳولا لائق ٿي سگھن.\n\nزمرا وجھڻ لاءِ لکڻ شروع ڪريو. diff --git a/app/src/main/res/values-si/strings.xml b/app/src/main/res/values-si/strings.xml index 25761cc36..6af78dbe6 100644 --- a/app/src/main/res/values-si/strings.xml +++ b/app/src/main/res/values-si/strings.xml @@ -20,7 +20,7 @@ %1$s උඩුගතකිරීම් අවසන් කරමින් උදුගතකරමින් %1$s අසාර්ථකයි පෙන්වන්න තට්ටු කරන්න. - + 1 ගොනුවක් උඩුගත කෙරේ ගොනු %d ක් උඩුගත කෙරේ @@ -54,18 +54,18 @@ ඔබගේ උපකරණයේ GPS ක්‍රියා විරහිත කර ඇත. ඔබ එය නැවත ක්‍රියා කිරීමට කැමතිද? GPS ක්‍රියා කරවන්න තවම උඩුගත කිරීම් කිසිවක් නැත - + තවමත් කිසිදු උඩුගත කිරීමක් නැත එක් උඩුගත කිරීමක් ඇත - උඩුගත කිරීම් %d ක් ඇත + උඩුගත කිරීම් %1$d ක් ඇත - + 1 උඩුගත කිරීමක් ආරම්භ කරමින් - උඩුගත කිරීම් %d ක් ආරම්භ කරමින් + උඩුගත කිරීම් %1$d ක් ආරම්භ කරමින් - + 1 උඩුගත කිරීමක් - උඩුගත කිරීම් %d ක් + උඩුගත කිරීම් %1$d ක් ප්‍රවර්ග සැසඳේන්නේ නැත %1$s හමුවිsය ප්‍රවර්ග @@ -109,7 +109,13 @@ CC Zero විකිමාධ්‍ය කොමන්ස් විසින් විකිපීඩියාහි බාවිතා වන ඡායාරූප වලින් වැඩි කොටසක් සදහා සත්කාරකත්වය දරයි. ඔබේ ඡායාරූප ලොව පුරා ජනතාව දැනුවත් කිරීමට උදව් වේ! + කරුණාකර ඔබ විසින් නිපදවූ හෝ ඔබ විසින් ගනු ලැබූ චායාරූප පමණක් උඩුගත කරන්න: + කරුණාකර උඩුගත කිරීමෙන් වැලකී සිටින්න: උදාහරණ උඩුගත කිරීම: + ඔබගේ චායාරූප වලින් දායකත්වය ලබාදෙන්න. විකිපීඩියා ලිපි වලට ජීවය දෙන්න උදව් වෙන්න! + විකිපීඩියාවෙහි ඇති පින්තූර විකිමීඩියා කොමන්ස් වෙතින් පැමිණි ඒවායි. + ඔබගේ චායාරූප ලොව පුරා මිනිසුන්ව දැනුවත් කිරීමට උඩව් දෙයි. + ඔබ හිතන්නෙ ඔබට එය තේරුම් ගත්තා කියලද? ඔව්! ප්‍රවර්ග පූරණය වෙමින් @@ -119,10 +125,28 @@ නැවත ප්‍රාණවත් කරන්න හරි අවට ස්ථාන + ළඟපාත තැන් කිසිවක් සොයා ගැනීමට නොහැකි විය අනතුරු හැඟවීමයි + මෙම ගොනුව දැනටමත් කොමන්ස් හි ඇත. ඔබට ඉදිරියට ‍යෑම ගැන විශ්වාසද? ඔව් නැත මාතෘකාව + මෙම මාධ්‍ය අන්ගයේ මාතෘකාව + විස්තරය + උඩුගත කර දිනය + බලපත්‍රය + ඛණ්ඩාංක + කිසිවක් සපයා නොමැත + විකිදත්ත භාවිතා කරන්න + දිවිත්ව තහවුරු කිරීමේ කේතය + මගේ අලුත්ම උඩුගත කිරීම් පෙන්වීමේ සීමාව + උපරිම සීමාව + 500 කට වඩා පෙන්විය නොහැක + අලුත්ම උඩුගත කිරීම් පෙන්වීමට සීමාවක් දමන්න + ද්විත්ව තහවුරු කිරීමේ ක්‍රියා මාර්ගය තවම ක්‍රියා කරන්නෙ නැත. + ඔබට ඇත්තටම නික්මීමට අවශ්‍යද? + කොමන්ස් ලාන්චනය + කොමන්ස් වෙබ් අඩවිය කොමන්ස් ෆේස්බුක් පිටුව කිසිම චායාරූපයක් සොයාගැනීමට නොහැකි විය පිතූරය උඩුගත කරන්න @@ -140,6 +164,7 @@ සැකසුම් ප්‍රතිචාරය නික්මීම + පාඩම නිවේදන කිසිම තොරතුරක් සොයාගැනීමට නොමැත විකිදත්ත අයිතමය @@ -148,6 +173,6 @@ ස්ථානය වෙනස් වී නොමැත ස්ථානය දී නොමැත මෙමේ ලිපිය කියවන්න - විකිමීඩියා කොමන්ස් වෙත ඔබව සාදරයෙන් පිළිගනිමු! ඔබ මෙහි පැමිණීම ගැන අපි හද පත්ලෙන්ම සතුටු වෙමු. - ඔබගේ කතා පිටුවේ %s විසින් පණිවුඩයක් තබා ඇත + විකිමීඩියා කොමන්ස් වෙත ඔබව සාදරයෙන් පිළිගනිමු! ඔබ මෙහි පැමිණීම ගැන අපි හද පත්ලෙන්ම සතුටු වෙමු. + ඔබගේ කතා පිටුවේ %1$s විසින් පණිවුඩයක් තබා ඇත diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index d42d3cadd..003e169c4 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -21,8 +21,8 @@ Nahrávanie %1$s zlyhalo Kliknutím zobrazíte - nahráva sa %d súbor - nahrávajú sa %d súbory + nahráva sa %1$d súbor + nahrávajú sa %1$d súbory Moje nedávno nahrané Nahrávanie je v poradí @@ -151,5 +151,6 @@ Spätná väzba Odhlásiť sa Návod + Upozornenia nenašiel sa žiaden popis diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 325256cbd..cb3ba3419 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -21,8 +21,8 @@ Отпремање „%1$s“ неуспешно Додирните да бисте видели - %d датотека се отпрема - %d датотеке се отпремају + %1$d датотека се отпрема + %1$d датотеке се отпремају Моја скорашња отпремања На чекању @@ -54,18 +54,18 @@ GPS је онемогућен на Вашем уређају. Желите ли га омогућити? Омогући GPS Још увек нема отпремања - + \@string/contributions_subtitle_zero - %d отпремање - %d отпремања + %1$d отпремање + %1$d отпремања - - Започни %d отпремање - Започни %d отпремања + + Започни %1$d отпремање + Започни %1$d отпремања - %d отпремање - %d отпремања + %1$d отпремање + %1$d отпремања Нема категорија које одговарају %1$s Додајте категорије на слике да бисте олакшали корисницима њихово проналажење на Остави.\n\nДа бисте додали категорију, почните са писањем њеног имена. diff --git a/app/src/main/res/values-su/strings.xml b/app/src/main/res/values-su/strings.xml index 77003e209..042cae3fc 100644 --- a/app/src/main/res/values-su/strings.xml +++ b/app/src/main/res/values-su/strings.xml @@ -20,9 +20,9 @@ Méréskeun unjalan %1$s Ngunjal %1$s gagal Toél pikeun nempo - - ngunjal %d berkas - ngunjal %d berkas + + ngunjal %1$d berkas + ngunjal %1$d berkas Unjalan panungtung kuring Antrian @@ -56,16 +56,16 @@ Can aya nu diunjal \@string/contributions_subtitle_zero - %d unjalan - %d unjalan + %1$d unjalan + %1$d unjalan Ngamimitian saunjalan - Ngamimitian %d unjalan + Ngamimitian %1$d unjalan - + saunjalan - %d unjalan + %1$d unjalan Teu mendak kategori anu cocog jeung %1$s Tambahkeun kategori hambéh gambar anjeun beuki gampang katarana di Wikimédia Commons.\n\nMimitian ku ngetik kategori.\nToél ieu talatah (atawa toél deui) pikeun ngaliwatkeun ieu bagęan. diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index c73542aa8..a0450280b 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -21,8 +21,8 @@ Uppladdning av %1$s misslyckades Tryck för att visa - %d fil laddas upp - %d filer laddas upp + %1$d fil laddas upp + %1$d filer laddas upp Mina senaste uppladdningar Köade @@ -56,16 +56,16 @@ Inga uppladdningar ännu \@string/contributions_subtitle_zero - %d uppladdning - %d uppladdningar + %1$d uppladdning + %1$d uppladdningar - Startar %d uppladdning - Startar %d uppladdningar + Startar %1$d uppladdning + Startar %1$d uppladdningar - %d uppladdning - %d uppladdningar + %1$d uppladdning + %1$d uppladdningar Inga kategorier som stämmer överens med %1$s hittades Lägg till kategorier för att göra dina bilder enklare att hitta på Wikimedia Commons.\n\nBörja skriva för att lägga till kategorier. @@ -210,8 +210,9 @@ Behörighet krävs för att visa en lista över platser i närheten FÅ VÄGBESKRIVNINGAR LÄS ARTIKEL - Välkommen till Wikimedia Commons, %s! Vi är glada att du är här. - %s lämnade ett meddelande på din diskussionssida + Välkommen till Wikimedia Commons, %1$s! Vi är glada att du är här. + %1$s lämnade ett meddelande på din diskussionssida Tack för att du gjorde en redigering - %s nämnde dig på %s. + %1$s nämnde dig på %2$s. + Växla vy diff --git a/app/src/main/res/values-tcy/strings.xml b/app/src/main/res/values-tcy/strings.xml index 4ece0c348..deda69193 100644 --- a/app/src/main/res/values-tcy/strings.xml +++ b/app/src/main/res/values-tcy/strings.xml @@ -20,9 +20,9 @@ %1$s ಅಪ್ಲೋಡ್ ಕೈದ್ ಆವೊಂದುಂಡು. %1$s ಅಪ್ಲೋಡ್ ಸರಿ ಆತಿಜಿ ತುಯಾರ ಮೆಲ್ಲ ಒತ್ತುಲೆ - - %d ಕಡತ ಅಪ್ಲೊಡ್ ಆವೊಂದುಂಡು - %d ಕಡತೊಲು ಅಪ್ಲೋಡ್ ಆವೊಂದುಂಡು + + %1$d ಕಡತ ಅಪ್ಲೊಡ್ ಆವೊಂದುಂಡು + %1$d ಕಡತೊಲು ಅಪ್ಲೋಡ್ ಆವೊಂದುಂಡು ಎನ್ನ ದಿಂಜಯೀನಾ ವಿಚಾರೊಳು ದಿಂಜೊಂತುಂಡು diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index a82d02554..2b3c68a2d 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -20,7 +20,7 @@ กำลังเสร็จสิ้นการอัปโหลด %1$s การอัปโหลด %1$s ล้มเหลว แตะเพื่อดู - กำลังอัปโหลดไฟล์ %d ไฟล์ + กำลังอัปโหลดไฟล์ %1$d ไฟล์ การอัปโหลดล่าสุดของฉัน อยู่ในคิว ล้มเหลว @@ -51,11 +51,11 @@ GPS ถูกปิดใช้งานในอุปกรณ์ของคุณอยู่ คุณต้องการเปิดใช้งานหรือไม่? เปิดใช้งาน GPS ยังไม่มีการอัปโหลด - การอัปโหลด %d รายการ - กำลังเริ่มการอัปโหลด %d รายการ + การอัปโหลด %1$d รายการ + กำลังเริ่มการอัปโหลด %1$d รายการ - การอัปโหลด %d รายการ - การอัปโหลด %d รายการ + การอัปโหลด %1$d รายการ + การอัปโหลด %1$d รายการ ไม่พบหมวดหมู่ที่ตรงกับ %$1s เพิ่มหมวดหมู่เพื่อทำให้รูปภาพของคุณค้นพบได้ง่ายขึ้นบน Wikimedia Commons\n\nเริ่มพิมพ์เพื่อเพิ่มหมวดหมู่\nแตะข้อความนี้ (หรือกดปุ่มย้อนกลับ) เพื่อข้ามขั้นตอนนี้ diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index e541f2f23..f5df91381 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -21,8 +21,8 @@ %1$s dosyasının yüklemesi başarısız oldu Görüntülemek için dokunun - %d dosya karşıya yükleniyor - %d dosya karşıya yükleniyor + %1$d dosya karşıya yükleniyor + %1$d dosya karşıya yükleniyor Yakın Zamandaki Yüklemelerim Sırada @@ -54,18 +54,18 @@ GPS, cihazınızda devre dışı bırakılmıştır. Etkinleştirmek ister misiniz? GPS\'i etkinleştir Henüz yüklenmedi - + \@string/contributions_subtitle_zero - %d yükleme - %d yükleme + %1$d yükleme + %1$d yükleme - - %d yüklenmeye başlanıyor - %d yüklenmeye başlanıyor + + %1$d yüklenmeye başlanıyor + %1$d yüklenmeye başlanıyor - - %d yükleme - %d yükleme + + %1$d yükleme + %1$d yükleme %1$s ile eşleşen bir kategori bulunamadı Resimlerinizi Wikimedia Commons\'ta daha bulunabilir duruma getirmek için kategoriler ekleyin.\nKategori eklemek için yazmaya başlayın. diff --git a/app/src/main/res/values-ug/error.xml b/app/src/main/res/values-ug/error.xml index 405717ab9..8b2c00876 100644 --- a/app/src/main/res/values-ug/error.xml +++ b/app/src/main/res/values-ug/error.xml @@ -1,4 +1,5 @@ + بايلىقتىن ئورتاق بەھرىمەن بولۇش ، ھالاك بولدى رەھمەت سىزگە! diff --git a/app/src/main/res/values-ug/strings.xml b/app/src/main/res/values-ug/strings.xml index b5e76081a..b0f0333db 100644 --- a/app/src/main/res/values-ug/strings.xml +++ b/app/src/main/res/values-ug/strings.xml @@ -5,30 +5,53 @@ ئىشلەتكۇچى ئىسمى پارول تىزىمغا كىرىڭ + خەتلىتىش تىزىمغا كىرىۋاتىدۇ سەل كۈتۈڭ… تىزىمغا كىرىش مۇۋەپپەقىيەتلىك! تىزىمغا كىرەلمىدى! + ھۆججەت تېپىلمىدى . سىناپ بېقىڭ ، باشقا ھۆججەتلەر . + سالاھىيەتنى ئىسپاتىنى تەكشۈرۈش مەغلۇپ بولدى ! يۈكلەش باشلاندى! %1$s يۈكلەندى! + چېكىپ كۆرۈپ بېقىڭ ، سىزنىڭ يۇقىرىغا يوللاش باشلىنىۋاتىدۇ %1$s يۈكلەندى %1$s يۈكلىنىۋاتىدۇ! %1$s يۈكلەش تاماملىنىۋاتىدۇ يۈكلىنىۋاتىدۇ %1$s مەغلۇپ بولدى - يۈكلىگەنلىرىم + چېكىپ كۆرۈش + يۈكلىگەنلىرىم + ئادەم كىردى + مەغلۇپ بولدى %1$d%% تاماملاندى يۈكلەۋاتىدۇ + تىن رەسىم ئامبىرى سۈرەتكە تارتىڭ + يېقىندىكى يۈكلىگەنلىرىم ئورتاقلىشىش توركۆرگۈدە ئېچىڭ + ماۋزۇ چۈشەندۈرۈش + تىزىملىتىش - تور كاشىلىسى + تىزىملاشقا ئامالسىز - سىزنىڭ ئابونت نامىڭىزنى تەكشۈرۈپ بېقىڭ + تىزىملاشقا ئامالسىز مەخپىي نومۇرىڭىزنى تەكشۈرۈپ بېقىڭ + مەغلۇپ بولغان قېتىم سانى بەك كۆپ . نەچچە مىنۇتتىن كېيىن قايتا سىناڭ . + كەچۈرۈڭ، بۇ ئابونت ئاللىقاچان ئورتاق بەھرىمەن بولىدىغان بايلىق مەنبەسى دائىرىلىك + سىز چوقۇم سىزنىڭ قوش ئامىل تەكشۈرۈش كودىنى تاپشۇرىسىز . + تىزىملاش مەغلۇپ بولدى يۈكلەڭ + نام بېرىش بۇ گۇرۇپپا سۈرەت + ئۇقتۇرۇشلار يۈكلە كاتېگورىيىنى ئىزدەڭ ساقلاڭ + يېڭىلاش + GPS سىزنىڭ ئۈسكۈنەم ئىشلىتىشتىن توختىدى . سىز قوزغىتامسىز يوق ؟ + ئىشلىشكە باشلاشGPS تەڭشەكلەر ھەققىدە + ۋاز كەچ چۈشۈرۈڭ ئىجازەتنامە CC Attribution-ShareAlike 3.0 @@ -46,8 +69,39 @@ CC BY 3.0 CC0 ھەئە! - كاتېگورىيە - يۈكلەۋاتىدۇ… + تۈرلەر + يۈكلەۋاتىدۇ… تاللانمىغان چۈشەندۈرۈلۈشى يوق + جەزملەش + ئاگاھلاندۇرۇش + ھەئە + ياق + ماۋزۇ + ۋاستە ماۋزۇسى + چۈشەندۈرۈش + بۇ يەردە تولدۇرۇپ ، ئاخبارات ۋاستىلىرى توغرىسىدا ئىزاھات بەردى . بۇ بەلكىم خېلى ئۇزۇن ، ھەم كۆپ يۈككە مۇھتاج بولىدۇ . بىز ئۇ قارىماققا بەك ئۈمىد قىلىمەن . + ئۈستىگە يەتكۈزۈش چىسلاسى + ئىجازەتنامە + كوئوردىناتلار + تەمىنلىمەيدۇ + سىناق نۇسخىدىكى سىناق قىلغۇچى بولۇپ قالدى + بىز كىرگەن Google Play، ئۈستىدىكى ئۆلچەش قانىلى ، ھەمدە تېخىمۇ بالدۇر يېڭى ئىقتىدارى ۋە خاتا ئەسلىگە كەلتۈرۈش + ئىشلەتكۈچى ۋىكى سانلىق مەلۇماتى + ( ئەسكەرتىش : بۇ ئىقتىدارى بەلكىم زور مىقداردا مەنئى قىلىنغان كۆچمە سانلىق مەلۇمات ئېقىم مىقدارى ھەققى ) + 2FAكودى + مېنىڭ يېقىندىن بۇيان يۇقىرىغا يوللاش چەكلەش + ئەڭ چوڭ چەكلەش + يېقىندا چىقىرىش چەكلىمىسى تەڭشەش + نۆۋەتتىكى قوش ئامىل دەلىللەشنى قوللىمايدۇ + سىز راستتىنلا چېكىنىپ چىقامسىز ؟ + بايلىقتىن ئورتاق بەھرىمەن بولۇش بەلگىسى + ئورتاق بەھرىمان بولىدىغان توربەت بايلىقى + كۆرۈنۈش رەسىمى + ۋاستە رەسىمى مەغلۇپ بولدى + رەسىمنى تاپالمىدى + رەسىم يەتكۈزۈش + ھەسەت ھۈسەن كۆۋرۈك + تەھرىرلەپ چىقارغىنىڭىزغا رەھمەت + مۇۋاپىق كۆرۈنۈش ئالماشتۇرۇش diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 830ee5456..809bfc84b 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -21,10 +21,10 @@ Не вдалося завантажити %1$s Торкніться, щоб переглянути - Завантажується %d файл - Завантажуються %d файли - Завантажується %d файлів - Завантажується %d файлів + Завантажується %1$d файл + Завантажуються %1$d файли + Завантажується %1$d файлів + Завантажується %1$d файлів Мої останні завантаження У черзі @@ -58,22 +58,22 @@ Ще нема завантажень \@string/contributions_subtitle_zero - %d завантаження - %d завантаження - %d завантажень - %d завантажень + %1$d завантаження + %1$d завантаження + %1$d завантажень + %1$d завантажень - Починається %d завантаження - Починаються %d завантаження - Починаються %d завантажень - Починаються %d завантажень + Починається %1$d завантаження + Починаються %1$d завантаження + Починаються %1$d завантажень + Починаються %1$d завантажень - %d завантаження - %d завантаження - %d завантажень - %d завантажень + %1$d завантаження + %1$d завантаження + %1$d завантажень + %1$d завантажень Категорій, відповідних %1$s, не знайдено Додайте категорії, щоб Ваші зображення було легше знайти у Вікісховищі. \n\nПочніть вводити текст, щоб додати категорії. @@ -123,7 +123,7 @@ CC BY 4.0 CC Zero На Вікісховищі зберігається більшість зображень, що використовуються у Вікіпедії. - Ваші зображення допомагають навчати людей по всьому світі! + Ваші зображення допомагають освіті людей по всьому світу! Будь ласка, завантажуйте зображення, повністю виконані або створені Вами: u2022 Природні об\'єкти (квіти, тварини, гори) \nu2022 Корисні об\'єкти (велосипеди, залізничні вокзали) \nu2022 Відомі люди (Ваш мер, олімпійські атлети, яких Ви зустрічали) Будь ласка, НЕ завантажуйте: @@ -142,8 +142,8 @@ Немає опису Невідома ліцензія Оновити - Обов\'язковий дозвіл: читання зовнішньої пам\'яті. Програмка не може працювати без цього. - Необхідний дозвіл: записування на зовнішнє сховище. Додаток не може працювати без цього. + Обов\'язковий дозвіл: читання зовнішньої пам\'яті. Програма не може працювати без цього. + Обов\'язковий дозвіл: записування на зовнішнє сховище. Програма не може працювати без цього. Додатковий дозвіл: отримувати поточне розташування для підказок категорій Гаразд Місця поблизу @@ -161,9 +161,9 @@ Координати Не передбачено Станьте бета-тестером - Увійдіть на наш бета-канал на Google Play і отримайте ранній доступ до нових функцій та виправлень багів + Підпишіться на наш бета-канал на Google Play і отримайте ранній доступ до нових функцій та виправлень багів Використати Вікідані - (Попередження: вимкнення цього може спричинити використання значного обсягу мобільних даних) + (Попередження: вимкнення може спричинити використання значного обсягу мобільних даних) Код 2FA Ліміт моїх останніх завантажень Максимальний ліміт @@ -199,6 +199,7 @@ Зворотний зв\'язок Вийти Посібник + Сповіщення Місця поблизу неможливо показати без дозволу на визначення місця розташування. опис не знайдено Сторінка файлу у Вікісховищі @@ -208,7 +209,7 @@ Будь ласка, докладно опишіть файл: де його було зроблено? що на ньому зображено? який контекст? Будь ласка, опишіть об\'єкти чи осіб. Додайте інформацію, яку не можна легко здогадатися, наприклад, пору доби для фотографії пейзажу. Якщо зображено щось незвичайне, постарайтеся пояснити, що робить його незвичайним. Надати дозвіл Використовувати зовнішнє сховище - Зберігати зображення, виконані вбудованою в додатку камерою Вашого пристрою + Зберігати зображення, виконані вбудованою камерою Вашого пристрою Надіслати лог-файл Надіслати лог-файл розробникам електронною поштою Увійдіть у свій обліковий запис @@ -217,4 +218,9 @@ Потрібний дозвіл для показу списку місць поблизу Показати на мапі у зовнішній програмі ЧИТАТИ СТАТТЮ + Вітаємо у Wikimedia Commons, %1$s! Раді вас бачити. + %1$s залишив повідомлення на вашій сторінці обговорення + Дякуємо за правку + %1$s згадав вас на %2$s. + Перемкнути режим перегляду diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index 01ad30d7d..a78c0d7e4 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -21,8 +21,8 @@ اپلوڈ %1$s ہونے میں ناکام دیکھنے کے لیے ٹیپ کریں - %d فائل اپلوڈ ہورہی ہے - %d فائلیں اپلوڈ ہورہی ہے + %1$d فائل اپلوڈ ہورہی ہے + %1$d فائلیں اپلوڈ ہورہی ہے میں حالیہ اپلوڈ قطار @@ -54,18 +54,18 @@ جی پی ایس آپ کے آلے میں غیر فعال ہے۔ آپ اس کو فعال کرنا چاہینگے؟ جی پی ایس فعال کریں ابھی تک کوئی اپلوڈ نہیں - + \@string/contributions_subtitle_zero - %d اپلوڈ - %d اپلوڈ + %1$d اپلوڈ + %1$d اپلوڈ - - شروع %d اپلوڈ - شروع %d اپلوڈ + + شروع %1$d اپلوڈ + شروع %d$1 اپلوڈ - - %d اپلوڈ - %d اپلوڈ + + %1$d اپلوڈ + %1$d اپلوڈ %1$s سے کوئی زمرہ جات میل نہیں کھاتے ویکیمیڈیا کامنز پر اپنی تصاویر کو قابل دریافت بنانے کے لیے زمرے شامل کریں۔\n\nزمرے شامل کرنے کے لیے لکھنا شروع کریں۔\n\nاس مرحلے کو نظر انداز کرنے کے لیے اس پیغام یا (یا پیچھے) پر ٹیپ کریں۔ diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 2e884eb83..7bfdf837f 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -20,7 +20,7 @@ Đang hoàn thành việc tải lên tập tin %1$s Tải lên tập tin %1$s thất bại Chạm để xem - %d tập tin đang được tải lên + %d tập tin đang được tải lên Tập tin Tôi đã Tải lên Gần đây Đang chờ Thất bại @@ -51,12 +51,12 @@ Chức năng GPS đang tắt trên thiết bị của bạn. Bạn có muốn bật nó lên? Bật GPS Chưa có tập tin tải lên - + \@string/contributions_subtitle_zero - %d tập tin tải lên + %1$d tập tin tải lên - Đang bắt đầu tải lên %d tập tin - %d tập tin tải lên + Đang bắt đầu tải lên %1$d tập tin + %1$d tập tin tải lên Không tìm thấy thể loại khớp với %1$s Xếp các hình ảnh vào thể loại để cho chúng dễ tìm kiếm hơn trên Wikimedia Commons.\n\nHãy bắt đầu nhập tên thể loại để tìm kiếm.\nChạm vào thông điệp này (hoặc bấm Quay lại) để bỏ qua bước này. Thể loại diff --git a/app/src/main/res/values-xmf/strings.xml b/app/src/main/res/values-xmf/strings.xml index e54a7395a..cec936e7c 100644 --- a/app/src/main/res/values-xmf/strings.xml +++ b/app/src/main/res/values-xmf/strings.xml @@ -20,9 +20,9 @@ ეხარგუაშ თება %1$ %1$ ეხარგუაქ ვემიხუჯინუ ოძირაფალო ქეგუწკანტეთ - - %d ფაილი იხარგუ - %d ფაილი იხარგუ + + %1$d ფაილი იხარგუ + %1$d ფაილი იხარგუ ჩქიმი ბოლო ეხარგუეფი რადი @@ -56,16 +56,16 @@ ეხარგუეფი ვა რე \@string/contributions_subtitle_zero - %d ეხარგუა - %d ეხარგუა + %1$d ეხარგუა + %1$d ეხარგუა - იჭყაფუ %d ეხარგუა - იჭყაფუ %d ეხარგუა + იჭყაფუ %1$d ეხარგუა + იჭყაფუ %1$d ეხარგუა - - %d ეხარგუა - %d ეხარგუა + + %1$d ეხარგუა + %1$d ეხარგუა კატეგორია პარამეტრეფი diff --git a/app/src/main/res/values-yi/strings.xml b/app/src/main/res/values-yi/strings.xml index 0c0c3287b..27ea76605 100644 --- a/app/src/main/res/values-yi/strings.xml +++ b/app/src/main/res/values-yi/strings.xml @@ -20,7 +20,7 @@ דרוקט צו באקוקן 1 טעקע לאדט אן - %d טעקעס לאדן אן + %1$d טעקעס לאדן אן מײַנע ארויפלאדן אין ריי @@ -43,7 +43,7 @@ נאך נישט קיין ארויפֿלאדן 1 ארויפֿלאד - %d ארויפֿלאדן + %1$d ארויפֿלאדן קאַטעגאריעס באניץ באריכטן diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 2d5756fe8..379cc42ae 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -19,8 +19,8 @@ 上传%1$s失败 轻触以查看 - %d个文件上传中 - %d个文件上传中 + %1$d个文件上传中 + %1$d个文件上传中 我上传的内容 队列 @@ -47,17 +47,17 @@ 搜索分类 保存 - %d次上传 - %d次上传 + %1$d次上传 + %1$d次上传 没有上传 - 开始%d次上传 - 开始%d次上传 + 开始%1$d次上传 + 开始%1$d次上传 - %d次上传 - %d次上传 + %1$d次上传 + %1$d次上传 没有找到匹配%1$s的分类 为您的图片添加分类,让它们在维基共享上更容易被找到。 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 846fc02dd..fa6265e52 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -21,8 +21,8 @@ 上傳%1$s失敗 輕觸檢視 - 正在上載 %d 個檔案 - 正在上載 %d 個檔案 + 正在上載 %1$d 個檔案 + 正在上載 %1$d 個檔案 我的最近上傳 已佇列 @@ -56,16 +56,16 @@ 尚未上傳 \@string/contributions_subtitle_zero - %d 次上傳 - %d 次上傳 + %1$d 次上傳 + %1$d 次上傳 - 開始 %d 次上傳 - 開始 %d 次上傳 + 開始 %1$d 次上傳 + 開始 %1$d 次上傳 - %d 次上傳 - %d 次上傳 + %1$d 次上傳 + %1$d 次上傳 沒有發現與 %1$s 相符的分類 為您的圖片添加分類,使別人在維基共享資源更容易找到。\n\n開始輸入以添加分類。 @@ -210,8 +210,9 @@ 需權限來顯示附近地點清單 取得導向 讀取條目 - %s,歡迎來到維基共享資源!我們很高興您來到這裡。 - %s 留了訊息在您的對話頁 + %1$s,歡迎來到維基共享資源!我們很高興您來到這裡。 + %1$s 留了訊息在您的對話頁 感謝您所做的編輯 - %s 在 %s 提到了您。 + %1$s 在 %2$s 提到了您。 + 切換檢視 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 11f1963b0..201f93f42 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -21,8 +21,8 @@ 上传%1$s失败 点击查看 - %d个文件正在上传 - %d个文件正在上传 + %1$d个文件正在上传 + %1$d个文件正在上传 我的最近上传 已入队列 @@ -56,16 +56,16 @@ 尚无上传 \@string/contributions_subtitle_zero - %d次上传 - %d次上传 + %1$d次上传 + %1$d次上传 - 开始%d次上传 - 开始%d次上传 + 开始%1$d次上传 + 开始%1$d次上传 - %d次上传 - %d次上传 + %1$d次上传 + %1$d次上传 没有找到匹配%1$s的分类 添加分类使您的图像更容易在维基共享资源被找到。开始输入以添加分类。 @@ -210,8 +210,9 @@ 需要权限以显示附近地点列表 获得指示 阅读条目 - 欢迎来到维基共享资源,%s!我们很高兴您来这里。 - %s在您的讨论页上留下了一条消息 + 欢迎来到维基共享资源,%1$s!我们很高兴您来这里。 + %1$s在您的讨论页上留下了一条消息 感谢您做出编辑 - %s在%s提到了您。 + %1$s在%2$s提到了您。 + 切换视图 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d95d2042a..ceba924e1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -21,8 +21,8 @@ Uploading %1$s failed Tap to view - %d file uploading - %d files uploading + %1$d file uploading + %1$d files uploading My Recent Uploads Queued @@ -57,16 +57,16 @@ @string/contributions_subtitle_zero - %d upload - %d uploads + %1$d upload + %1$d uploads - Starting %d upload - Starting %d uploads + Starting %1$d upload + Starting %1$d uploads - %d upload - %d uploads + %1$d upload + %1$d uploads No categories matching %1$s found Add categories to make your images more discoverable on Wikimedia Commons.\nStart typing to add categories. @@ -215,11 +215,12 @@ Location has not changed. Location not available. Permission required to display a list of nearby places - GET DIRECTIONS + GET DIRECTIONS READ ARTICLE - Welcome to Wikimedia Commons, %s! We\'re glad you\'re here. - %s left a message on your talk page + Welcome to Wikimedia Commons, %1$s! We\'re glad you\'re here. + %1$s left a message on your talk page Thank you for making an edit - %s mentioned you on %s. + %1$s mentioned you on %2$s. + Toggle view diff --git a/app/src/test/java/fr/free/nrw/commons/TestCommonsApplication.java b/app/src/test/java/fr/free/nrw/commons/TestCommonsApplication.java index aad8a22b8..6b9f583b4 100644 --- a/app/src/test/java/fr/free/nrw/commons/TestCommonsApplication.java +++ b/app/src/test/java/fr/free/nrw/commons/TestCommonsApplication.java @@ -84,12 +84,12 @@ public class TestCommonsApplication extends CommonsApplication { } @Override - public SessionManager providesSessionManager(Context context, MediaWikiApi mediaWikiApi) { + public SessionManager providesSessionManager(Context context, MediaWikiApi mediaWikiApi, SharedPreferences sharedPreferences) { return sessionManager; } @Override - public MediaWikiApi provideMediaWikiApi(Context context) { + public MediaWikiApi provideMediaWikiApi(Context context, SharedPreferences sharedPreferences) { return mediaWikiApi; } diff --git a/app/src/test/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.java b/app/src/test/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.java index e6b53d460..e2c8b82f6 100644 --- a/app/src/test/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.java +++ b/app/src/test/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.java @@ -1,12 +1,13 @@ package fr.free.nrw.commons.mwapi; +import android.content.SharedPreferences; import android.os.Build; +import android.preference.PreferenceManager; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @@ -36,11 +37,13 @@ public class ApacheHttpClientMediaWikiApiTest { private ApacheHttpClientMediaWikiApi testObject; private MockWebServer server; + private SharedPreferences sharedPreferences; @Before public void setUp() throws Exception { server = new MockWebServer(); - testObject = new ApacheHttpClientMediaWikiApi(RuntimeEnvironment.application, "http://" + server.getHostName() + ":" + server.getPort() + "/"); + sharedPreferences = PreferenceManager.getDefaultSharedPreferences(RuntimeEnvironment.application); + testObject = new ApacheHttpClientMediaWikiApi(RuntimeEnvironment.application, "http://" + server.getHostName() + ":" + server.getPort() + "/", sharedPreferences); testObject.setWikiMediaToolforgeUrl("http://" + server.getHostName() + ":" + server.getPort() + "/"); } @@ -126,11 +129,11 @@ public class ApacheHttpClientMediaWikiApiTest { RecordedRequest loginRequest = assertBasicRequestParameters(server, "POST"); body = parseBody(loginRequest.getBody().readUtf8()); - assertEquals("1", body.get("rememberMe")); + assertEquals("true", body.get("rememberMe")); assertEquals("foo", body.get("username")); assertEquals("bar", body.get("password")); assertEquals("baz", body.get("logintoken")); - assertEquals("1", body.get("logincontinue")); + assertEquals("true", body.get("logincontinue")); assertEquals("2fa", body.get("OATHToken")); assertEquals("xml", body.get("format"));