mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 12:23:58 +01:00
Merge branch 'commons-app:main' into main
This commit is contained in:
commit
5ae75509cb
35 changed files with 571 additions and 430 deletions
|
|
@ -14,10 +14,8 @@ import android.view.MenuItem;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
|
@ -27,8 +25,7 @@ import androidx.appcompat.app.AppCompatDelegate;
|
|||
import androidx.core.app.NavUtils;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
|
||||
import fr.free.nrw.commons.databinding.ActivityLoginBinding;
|
||||
import fr.free.nrw.commons.utils.ActivityUtils;
|
||||
import java.util.Locale;
|
||||
import org.wikipedia.AppAdapter;
|
||||
|
|
@ -42,15 +39,9 @@ import org.wikipedia.login.LoginResult;
|
|||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import butterknife.OnEditorAction;
|
||||
import butterknife.OnFocusChange;
|
||||
import fr.free.nrw.commons.BuildConfig;
|
||||
import fr.free.nrw.commons.R;
|
||||
import fr.free.nrw.commons.Utils;
|
||||
import fr.free.nrw.commons.WelcomeActivity;
|
||||
import fr.free.nrw.commons.contributions.MainActivity;
|
||||
import fr.free.nrw.commons.di.ApplicationlessInjection;
|
||||
import fr.free.nrw.commons.kvstore.JsonKvStore;
|
||||
|
|
@ -87,30 +78,7 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
@Inject
|
||||
SystemThemeUtils systemThemeUtils;
|
||||
|
||||
@BindView(R.id.login_button)
|
||||
Button loginButton;
|
||||
|
||||
@BindView(R.id.login_username)
|
||||
EditText usernameEdit;
|
||||
|
||||
@BindView(R.id.login_password)
|
||||
EditText passwordEdit;
|
||||
|
||||
@BindView(R.id.login_two_factor)
|
||||
EditText twoFactorEdit;
|
||||
|
||||
@BindView(R.id.error_message_container)
|
||||
ViewGroup errorMessageContainer;
|
||||
|
||||
@BindView(R.id.error_message)
|
||||
TextView errorMessage;
|
||||
|
||||
@BindView(R.id.login_credentials)
|
||||
TextView loginCredentials;
|
||||
|
||||
@BindView(R.id.two_factor_container)
|
||||
TextInputLayout twoFactorContainer;
|
||||
|
||||
private ActivityLoginBinding binding;
|
||||
ProgressDialog progressDialog;
|
||||
private AppCompatDelegate delegate;
|
||||
private LoginTextWatcher textWatcher = new LoginTextWatcher();
|
||||
|
|
@ -120,6 +88,7 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
final String saveErrorMessage ="errorMessage";
|
||||
final String saveUsername="username";
|
||||
final String savePassword="password";
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
|
@ -133,18 +102,26 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
getDelegate().installViewFactory();
|
||||
getDelegate().onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.activity_login);
|
||||
binding = ActivityLoginBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
|
||||
ButterKnife.bind(this);
|
||||
binding.loginUsername.addTextChangedListener(textWatcher);
|
||||
binding.loginPassword.addTextChangedListener(textWatcher);
|
||||
binding.loginTwoFactor.addTextChangedListener(textWatcher);
|
||||
|
||||
usernameEdit.addTextChangedListener(textWatcher);
|
||||
passwordEdit.addTextChangedListener(textWatcher);
|
||||
twoFactorEdit.addTextChangedListener(textWatcher);
|
||||
binding.skipLogin.setOnClickListener(view -> skipLogin());
|
||||
binding.forgotPassword.setOnClickListener(view -> forgotPassword());
|
||||
binding.aboutPrivacyPolicy.setOnClickListener(view -> onPrivacyPolicyClicked());
|
||||
binding.signUpButton.setOnClickListener(view -> signUp());
|
||||
binding.loginButton.setOnClickListener(view -> performLogin());
|
||||
|
||||
binding.loginPassword.setOnEditorActionListener(this::onEditorAction);
|
||||
binding.loginPassword.setOnFocusChangeListener(this::onPasswordFocusChanged);
|
||||
|
||||
if (ConfigUtils.isBetaFlavour()) {
|
||||
loginCredentials.setText(getString(R.string.login_credential));
|
||||
binding.loginCredentials.setText(getString(R.string.login_credential));
|
||||
} else {
|
||||
loginCredentials.setVisibility(View.GONE);
|
||||
binding.loginCredentials.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
/**
|
||||
|
|
@ -152,16 +129,14 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
* @param view The keyboard
|
||||
* @param hasFocus Set to true if the keyboard has focus
|
||||
*/
|
||||
@OnFocusChange(R.id.login_password)
|
||||
void onPasswordFocusChanged(View view, boolean hasFocus) {
|
||||
if (!hasFocus) {
|
||||
ViewUtil.hideKeyboard(view);
|
||||
}
|
||||
}
|
||||
|
||||
@OnEditorAction(R.id.login_password)
|
||||
boolean onEditorAction(int actionId, KeyEvent keyEvent) {
|
||||
if (loginButton.isEnabled()) {
|
||||
boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
|
||||
if (binding.loginButton.isEnabled()) {
|
||||
if (actionId == IME_ACTION_DONE) {
|
||||
performLogin();
|
||||
return true;
|
||||
|
|
@ -174,8 +149,7 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
}
|
||||
|
||||
|
||||
@OnClick(R.id.skip_login)
|
||||
void skipLogin() {
|
||||
protected void skipLogin() {
|
||||
new AlertDialog.Builder(this).setTitle(R.string.skip_login_title)
|
||||
.setMessage(R.string.skip_login_message)
|
||||
.setCancelable(false)
|
||||
|
|
@ -187,18 +161,15 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
.show();
|
||||
}
|
||||
|
||||
@OnClick(R.id.forgot_password)
|
||||
void forgotPassword() {
|
||||
protected void forgotPassword() {
|
||||
Utils.handleWebUrl(this, Uri.parse(BuildConfig.FORGOT_PASSWORD_URL));
|
||||
}
|
||||
|
||||
@OnClick(R.id.about_privacy_policy)
|
||||
void onPrivacyPolicyClicked() {
|
||||
protected void onPrivacyPolicyClicked() {
|
||||
Utils.handleWebUrl(this, Uri.parse(BuildConfig.PRIVACY_POLICY_URL));
|
||||
}
|
||||
|
||||
@OnClick(R.id.sign_up_button)
|
||||
void signUp() {
|
||||
protected void signUp() {
|
||||
Intent intent = new Intent(this, SignupActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
|
@ -236,23 +207,23 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
usernameEdit.removeTextChangedListener(textWatcher);
|
||||
passwordEdit.removeTextChangedListener(textWatcher);
|
||||
twoFactorEdit.removeTextChangedListener(textWatcher);
|
||||
binding.loginUsername.removeTextChangedListener(textWatcher);
|
||||
binding.loginPassword.removeTextChangedListener(textWatcher);
|
||||
binding.loginTwoFactor.removeTextChangedListener(textWatcher);
|
||||
delegate.onDestroy();
|
||||
if(null!=loginClient) {
|
||||
loginClient.cancel();
|
||||
}
|
||||
binding = null;
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@OnClick(R.id.login_button)
|
||||
public void performLogin() {
|
||||
Timber.d("Login to start!");
|
||||
final String username = usernameEdit.getText().toString();
|
||||
final String rawUsername = usernameEdit.getText().toString().trim();
|
||||
final String password = passwordEdit.getText().toString();
|
||||
String twoFactorCode = twoFactorEdit.getText().toString();
|
||||
final String username = binding.loginUsername.getText().toString();
|
||||
final String rawUsername = binding.loginUsername.getText().toString().trim();
|
||||
final String password = binding.loginPassword.getText().toString();
|
||||
String twoFactorCode = binding.loginTwoFactor.getText().toString();
|
||||
|
||||
showLoggingProgressBar();
|
||||
doLogin(username, password, twoFactorCode);
|
||||
|
|
@ -389,9 +360,9 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
|
||||
public void askUserForTwoFactorAuth() {
|
||||
progressDialog.dismiss();
|
||||
twoFactorContainer.setVisibility(VISIBLE);
|
||||
twoFactorEdit.setVisibility(VISIBLE);
|
||||
twoFactorEdit.requestFocus();
|
||||
binding.twoFactorContainer.setVisibility(VISIBLE);
|
||||
binding.loginTwoFactor.setVisibility(VISIBLE);
|
||||
binding.loginTwoFactor.requestFocus();
|
||||
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
|
||||
showMessageAndCancelDialog(R.string.login_failed_2fa_needed);
|
||||
|
|
@ -422,15 +393,15 @@ 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(VISIBLE);
|
||||
binding.errorMessage.setText(getString(resId));
|
||||
binding.errorMessage.setTextColor(ContextCompat.getColor(this, colorResId));
|
||||
binding.errorMessageContainer.setVisibility(VISIBLE);
|
||||
}
|
||||
|
||||
private void showMessage(String message, @ColorRes int colorResId) {
|
||||
errorMessage.setText(message);
|
||||
errorMessage.setTextColor(ContextCompat.getColor(this, colorResId));
|
||||
errorMessageContainer.setVisibility(VISIBLE);
|
||||
binding.errorMessage.setText(message);
|
||||
binding.errorMessage.setTextColor(ContextCompat.getColor(this, colorResId));
|
||||
binding.errorMessageContainer.setVisibility(VISIBLE);
|
||||
}
|
||||
|
||||
private AppCompatDelegate getDelegate() {
|
||||
|
|
@ -451,9 +422,11 @@ 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() != VISIBLE);
|
||||
loginButton.setEnabled(enabled);
|
||||
boolean enabled = binding.loginUsername.getText().length() != 0 &&
|
||||
binding.loginPassword.getText().length() != 0 &&
|
||||
(BuildConfig.DEBUG || binding.loginTwoFactor.getText().length() != 0 ||
|
||||
binding.loginTwoFactor.getVisibility() != VISIBLE);
|
||||
binding.loginButton.setEnabled(enabled);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -471,22 +444,22 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
} else {
|
||||
outState.putBoolean(saveProgressDailog,false);
|
||||
}
|
||||
outState.putString(saveErrorMessage,errorMessage.getText().toString()); //Save the errorMessage
|
||||
outState.putString(saveErrorMessage,binding.errorMessage.getText().toString()); //Save the errorMessage
|
||||
outState.putString(saveUsername,getUsername()); // Save the username
|
||||
outState.putString(savePassword,getPassword()); // Save the password
|
||||
}
|
||||
private String getUsername() {
|
||||
return usernameEdit.getText().toString();
|
||||
return binding.loginUsername.getText().toString();
|
||||
}
|
||||
private String getPassword(){
|
||||
return passwordEdit.getText().toString();
|
||||
return binding.loginPassword.getText().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRestoreInstanceState(final Bundle savedInstanceState) {
|
||||
super.onRestoreInstanceState(savedInstanceState);
|
||||
usernameEdit.setText(savedInstanceState.getString(saveUsername));
|
||||
passwordEdit.setText(savedInstanceState.getString(savePassword));
|
||||
binding.loginUsername.setText(savedInstanceState.getString(saveUsername));
|
||||
binding.loginPassword.setText(savedInstanceState.getString(savePassword));
|
||||
if(savedInstanceState.getBoolean(saveProgressDailog)) {
|
||||
performLogin();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,9 +15,6 @@ import android.widget.Toast;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
||||
import fr.free.nrw.commons.AboutActivity;
|
||||
import fr.free.nrw.commons.BuildConfig;
|
||||
|
|
@ -26,11 +23,11 @@ import fr.free.nrw.commons.R;
|
|||
import fr.free.nrw.commons.WelcomeActivity;
|
||||
import fr.free.nrw.commons.actions.PageEditClient;
|
||||
import fr.free.nrw.commons.auth.LoginActivity;
|
||||
import fr.free.nrw.commons.databinding.FragmentMoreBottomSheetBinding;
|
||||
import fr.free.nrw.commons.di.ApplicationlessInjection;
|
||||
import fr.free.nrw.commons.feedback.FeedbackContentCreator;
|
||||
import fr.free.nrw.commons.feedback.model.Feedback;
|
||||
import fr.free.nrw.commons.feedback.FeedbackDialog;
|
||||
import fr.free.nrw.commons.feedback.OnFeedbackSubmitCallback;
|
||||
import fr.free.nrw.commons.kvstore.JsonKvStore;
|
||||
import fr.free.nrw.commons.logging.CommonsLogSender;
|
||||
import fr.free.nrw.commons.profile.ProfileActivity;
|
||||
|
|
@ -49,10 +46,8 @@ public class MoreBottomSheetFragment extends BottomSheetDialogFragment {
|
|||
|
||||
@Inject
|
||||
CommonsLogSender commonsLogSender;
|
||||
@BindView(R.id.more_profile)
|
||||
TextView moreProfile;
|
||||
|
||||
@BindView((R.id.more_peer_review)) TextView morePeerReview;
|
||||
private TextView moreProfile;
|
||||
|
||||
@Inject @Named("default_preferences")
|
||||
JsonKvStore store;
|
||||
|
|
@ -66,20 +61,31 @@ public class MoreBottomSheetFragment extends BottomSheetDialogFragment {
|
|||
public View onCreateView(@NonNull final LayoutInflater inflater,
|
||||
@Nullable final ViewGroup container, @Nullable final Bundle savedInstanceState) {
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
final View view = inflater.inflate(R.layout.fragment_more_bottom_sheet, container, false);
|
||||
ButterKnife.bind(this, view);
|
||||
final @NonNull FragmentMoreBottomSheetBinding binding =
|
||||
FragmentMoreBottomSheetBinding.inflate(inflater, container, false);
|
||||
moreProfile = binding.moreProfile;
|
||||
|
||||
if(store.getBoolean(CommonsApplication.IS_LIMITED_CONNECTION_MODE_ENABLED)){
|
||||
morePeerReview.setVisibility(View.GONE);
|
||||
binding.morePeerReview.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
binding.moreLogout.setOnClickListener(v -> onLogoutClicked());
|
||||
binding.moreFeedback.setOnClickListener(v -> onFeedbackClicked());
|
||||
binding.moreAbout.setOnClickListener(v -> onAboutClicked());
|
||||
binding.moreTutorial.setOnClickListener(v -> onTutorialClicked());
|
||||
binding.moreSettings.setOnClickListener(v -> onSettingsClicked());
|
||||
binding.moreProfile.setOnClickListener(v -> onProfileClicked());
|
||||
binding.morePeerReview.setOnClickListener(v -> onPeerReviewClicked());
|
||||
|
||||
setUserName();
|
||||
return view;
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull final Context context) {
|
||||
super.onAttach(context);
|
||||
ApplicationlessInjection
|
||||
.getInstance(getActivity().getApplicationContext())
|
||||
.getInstance(requireActivity().getApplicationContext())
|
||||
.getCommonsApplicationComponent()
|
||||
.inject(this);
|
||||
}
|
||||
|
|
@ -102,22 +108,20 @@ public class MoreBottomSheetFragment extends BottomSheetDialogFragment {
|
|||
}
|
||||
|
||||
|
||||
@OnClick(R.id.more_logout)
|
||||
public void onLogoutClicked() {
|
||||
new AlertDialog.Builder(getActivity())
|
||||
protected void onLogoutClicked() {
|
||||
new AlertDialog.Builder(requireActivity())
|
||||
.setMessage(R.string.logout_verification)
|
||||
.setCancelable(false)
|
||||
.setPositiveButton(R.string.yes, (dialog, which) -> {
|
||||
BaseLogoutListener logoutListener = new BaseLogoutListener();
|
||||
CommonsApplication app = (CommonsApplication) getContext().getApplicationContext();
|
||||
app.clearApplicationData(getContext(), logoutListener);
|
||||
final CommonsApplication app = (CommonsApplication)
|
||||
requireContext().getApplicationContext();
|
||||
app.clearApplicationData(requireContext(), new BaseLogoutListener());
|
||||
})
|
||||
.setNegativeButton(R.string.no, (dialog, which) -> dialog.cancel())
|
||||
.show();
|
||||
}
|
||||
|
||||
@OnClick(R.id.more_feedback)
|
||||
public void onFeedbackClicked() {
|
||||
protected void onFeedbackClicked() {
|
||||
showFeedbackDialog();
|
||||
}
|
||||
|
||||
|
|
@ -125,19 +129,14 @@ public class MoreBottomSheetFragment extends BottomSheetDialogFragment {
|
|||
* Creates and shows a dialog asking feedback from users
|
||||
*/
|
||||
private void showFeedbackDialog() {
|
||||
new FeedbackDialog(getContext(), new OnFeedbackSubmitCallback() {
|
||||
@Override
|
||||
public void onFeedbackSubmit(Feedback feedback) {
|
||||
uploadFeedback(feedback);
|
||||
}
|
||||
}).show();
|
||||
new FeedbackDialog(getContext(), this::uploadFeedback).show();
|
||||
}
|
||||
|
||||
/**
|
||||
* uploads feedback data on the server
|
||||
*/
|
||||
void uploadFeedback(Feedback feedback) {
|
||||
FeedbackContentCreator feedbackContentCreator = new FeedbackContentCreator(getContext(), feedback);
|
||||
void uploadFeedback(final Feedback feedback) {
|
||||
final FeedbackContentCreator feedbackContentCreator = new FeedbackContentCreator(getContext(), feedback);
|
||||
|
||||
Single<Boolean> single =
|
||||
pageEditClient.prependEdit("Commons:Mobile_app/Feedback", feedbackContentCreator.toString(), "Summary")
|
||||
|
|
@ -162,12 +161,10 @@ public class MoreBottomSheetFragment extends BottomSheetDialogFragment {
|
|||
* This method shows the alert dialog when a user wants to send feedback about the app.
|
||||
*/
|
||||
private void showAlertDialog() {
|
||||
new AlertDialog.Builder(getActivity())
|
||||
new AlertDialog.Builder(requireActivity())
|
||||
.setMessage(R.string.feedback_sharing_data_alert)
|
||||
.setCancelable(false)
|
||||
.setPositiveButton(R.string.ok, (dialog, which) -> {
|
||||
sendFeedback();
|
||||
})
|
||||
.setPositiveButton(R.string.ok, (dialog, which) -> sendFeedback())
|
||||
.show();
|
||||
}
|
||||
|
||||
|
|
@ -194,32 +191,27 @@ public class MoreBottomSheetFragment extends BottomSheetDialogFragment {
|
|||
}
|
||||
}
|
||||
|
||||
@OnClick(R.id.more_about)
|
||||
public void onAboutClicked() {
|
||||
protected void onAboutClicked() {
|
||||
final Intent intent = new Intent(getActivity(), AboutActivity.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
getActivity().startActivity(intent);
|
||||
requireActivity().startActivity(intent);
|
||||
}
|
||||
|
||||
@OnClick(R.id.more_tutorial)
|
||||
public void onTutorialClicked() {
|
||||
protected void onTutorialClicked() {
|
||||
WelcomeActivity.startYourself(getActivity());
|
||||
}
|
||||
|
||||
@OnClick(R.id.more_settings)
|
||||
public void onSettingsClicked() {
|
||||
protected void onSettingsClicked() {
|
||||
final Intent intent = new Intent(getActivity(), SettingsActivity.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
getActivity().startActivity(intent);
|
||||
requireActivity().startActivity(intent);
|
||||
}
|
||||
|
||||
@OnClick(R.id.more_profile)
|
||||
public void onProfileClicked() {
|
||||
protected void onProfileClicked() {
|
||||
ProfileActivity.startYourself(getActivity(), getUserName(), false);
|
||||
}
|
||||
|
||||
@OnClick(R.id.more_peer_review)
|
||||
public void onPeerReviewClicked() {
|
||||
protected void onPeerReviewClicked() {
|
||||
ReviewActivity.startYourself(getActivity(), getString(R.string.title_activity_review));
|
||||
}
|
||||
|
||||
|
|
@ -233,7 +225,7 @@ public class MoreBottomSheetFragment extends BottomSheetDialogFragment {
|
|||
nearbyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||
nearbyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
startActivity(nearbyIntent);
|
||||
getActivity().finish();
|
||||
requireActivity().finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,18 +15,17 @@ import android.widget.ProgressBar;
|
|||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.view.ContextThemeWrapper;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import com.dinuscxj.progressbar.CircleProgressBar;
|
||||
import fr.free.nrw.commons.R;
|
||||
import fr.free.nrw.commons.Utils;
|
||||
import fr.free.nrw.commons.auth.SessionManager;
|
||||
import fr.free.nrw.commons.databinding.FragmentAchievementsBinding;
|
||||
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
|
||||
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient;
|
||||
import fr.free.nrw.commons.utils.ConfigUtils;
|
||||
|
|
@ -62,86 +61,19 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
|
||||
private LevelController.LevelInfo levelInfo;
|
||||
|
||||
@BindView(R.id.achievement_badge_image)
|
||||
ImageView imageView;
|
||||
|
||||
@BindView(R.id.achievement_badge_text)
|
||||
TextView badgeText;
|
||||
|
||||
@BindView(R.id.achievement_level)
|
||||
TextView levelNumber;
|
||||
|
||||
@BindView(R.id.thanks_received)
|
||||
TextView thanksReceived;
|
||||
|
||||
@BindView(R.id.images_uploaded_progressbar)
|
||||
CircleProgressBar imagesUploadedProgressbar;
|
||||
|
||||
@BindView(R.id.tv_uploaded_images)
|
||||
AppCompatTextView uploadedImagesTextview;
|
||||
|
||||
@BindView(R.id.images_used_by_wiki_progress_bar)
|
||||
CircleProgressBar imagesUsedByWikiProgressBar;
|
||||
|
||||
@BindView(R.id.tv_wiki_pb)
|
||||
AppCompatTextView imagesUsedByWikiTextview;
|
||||
|
||||
@BindView(R.id.image_reverts_progressbar)
|
||||
CircleProgressBar imageRevertsProgressbar;
|
||||
|
||||
@BindView(R.id.image_featured)
|
||||
TextView imagesFeatured;
|
||||
|
||||
@BindView(R.id.quality_images)
|
||||
TextView tvQualityImages;
|
||||
|
||||
@BindView(R.id.images_revert_limit_text)
|
||||
TextView imagesRevertLimitText;
|
||||
|
||||
@BindView(R.id.progressBar)
|
||||
ProgressBar progressBar;
|
||||
|
||||
@BindView(R.id.layout_image_uploaded)
|
||||
RelativeLayout layoutImageUploaded;
|
||||
|
||||
@BindView(R.id.layout_image_reverts)
|
||||
RelativeLayout layoutImageReverts;
|
||||
|
||||
@BindView(R.id.layout_image_used_by_wiki)
|
||||
RelativeLayout layoutImageUsedByWiki;
|
||||
|
||||
@BindView(R.id.layout_statistics)
|
||||
LinearLayout layoutStatistics;
|
||||
|
||||
@BindView(R.id.images_used_by_wiki_text)
|
||||
TextView imageByWikiText;
|
||||
|
||||
@BindView(R.id.images_reverted_text)
|
||||
TextView imageRevertedText;
|
||||
|
||||
@BindView(R.id.images_upload_text_param)
|
||||
TextView imageUploadedText;
|
||||
|
||||
@BindView(R.id.wikidata_edits)
|
||||
TextView wikidataEditsText;
|
||||
|
||||
@BindView(R.id.tv_achievements_of_user)
|
||||
AppCompatTextView tvAchievementsOfUser;
|
||||
|
||||
@Inject
|
||||
SessionManager sessionManager;
|
||||
|
||||
@Inject
|
||||
OkHttpJsonApiClient okHttpJsonApiClient;
|
||||
|
||||
private FragmentAchievementsBinding binding;
|
||||
|
||||
private CompositeDisposable compositeDisposable = new CompositeDisposable();
|
||||
|
||||
// To keep track of the number of wiki edits made by a user
|
||||
private int numberOfEdits = 0;
|
||||
|
||||
// menu item for action bar
|
||||
private MenuItem item;
|
||||
|
||||
private String userName;
|
||||
|
||||
@Override
|
||||
|
|
@ -160,8 +92,17 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
*/
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View rootView = inflater.inflate(R.layout.fragment_achievements, container, false);
|
||||
ButterKnife.bind(this, rootView);
|
||||
binding = FragmentAchievementsBinding.inflate(inflater, container, false);
|
||||
View rootView = binding.getRoot();
|
||||
|
||||
binding.achievementInfo.setOnClickListener(view -> showInfoDialog());
|
||||
binding.imagesUploadInfo.setOnClickListener(view -> showUploadInfo());
|
||||
binding.imagesRevertedInfo.setOnClickListener(view -> showRevertedInfo());
|
||||
binding.imagesUsedByWikiInfo.setOnClickListener(view -> showUsedByWikiInfo());
|
||||
binding.imagesNearbyInfo.setOnClickListener(view -> showImagesViaNearbyInfo());
|
||||
binding.imagesFeaturedInfo.setOnClickListener(view -> showFeaturedImagesInfo());
|
||||
binding.thanksReceivedInfo.setOnClickListener(view -> showThanksReceivedInfo());
|
||||
binding.qualityImagesInfo.setOnClickListener(view -> showQualityImagesInfo());
|
||||
|
||||
// DisplayMetrics used to fetch the size of the screen
|
||||
DisplayMetrics displayMetrics = new DisplayMetrics();
|
||||
|
|
@ -171,33 +112,33 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
|
||||
// Used for the setting the size of imageView at runtime
|
||||
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams)
|
||||
imageView.getLayoutParams();
|
||||
binding.achievementBadgeImage.getLayoutParams();
|
||||
params.height = (int) (height * BADGE_IMAGE_HEIGHT_RATIO);
|
||||
params.width = (int) (width * BADGE_IMAGE_WIDTH_RATIO);
|
||||
imageView.requestLayout();
|
||||
progressBar.setVisibility(View.VISIBLE);
|
||||
binding.achievementBadgeImage.requestLayout();
|
||||
binding.progressBar.setVisibility(View.VISIBLE);
|
||||
|
||||
setHasOptionsMenu(true);
|
||||
|
||||
// Set the initial value of WikiData edits to 0
|
||||
wikidataEditsText.setText("0");
|
||||
if(sessionManager.getUserName().equals(userName)){
|
||||
tvAchievementsOfUser.setVisibility(View.GONE);
|
||||
binding.wikidataEdits.setText("0");
|
||||
if(sessionManager.getUserName() == null || sessionManager.getUserName().equals(userName)){
|
||||
binding.tvAchievementsOfUser.setVisibility(View.GONE);
|
||||
}else{
|
||||
tvAchievementsOfUser.setVisibility(View.VISIBLE);
|
||||
tvAchievementsOfUser.setText(getString(R.string.achievements_of_user,userName));
|
||||
binding.tvAchievementsOfUser.setVisibility(View.VISIBLE);
|
||||
binding.tvAchievementsOfUser.setText(getString(R.string.achievements_of_user,userName));
|
||||
}
|
||||
|
||||
// Achievements currently unimplemented in Beta flavor. Skip all API calls.
|
||||
if(ConfigUtils.isBetaFlavour()) {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
imageByWikiText.setText(R.string.no_image);
|
||||
imageRevertedText.setText(R.string.no_image_reverted);
|
||||
imageUploadedText.setText(R.string.no_image_uploaded);
|
||||
wikidataEditsText.setText("0");
|
||||
imagesFeatured.setText("0");
|
||||
tvQualityImages.setText("0");
|
||||
thanksReceived.setText("0");
|
||||
binding.progressBar.setVisibility(View.GONE);
|
||||
binding.imagesUsedByWikiText.setText(R.string.no_image);
|
||||
binding.imagesRevertedText.setText(R.string.no_image_reverted);
|
||||
binding.imagesUploadTextParam.setText(R.string.no_image_uploaded);
|
||||
binding.wikidataEdits.setText("0");
|
||||
binding.imageFeatured.setText("0");
|
||||
binding.qualityImages.setText("0");
|
||||
binding.achievementLevel.setText("0");
|
||||
setMenuVisibility(true);
|
||||
return rootView;
|
||||
}
|
||||
|
|
@ -206,6 +147,12 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
return rootView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
binding = null;
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMenuVisibility(boolean visible) {
|
||||
super.setMenuVisibility(visible);
|
||||
|
|
@ -230,8 +177,7 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
/**
|
||||
* To invoke the AlertDialog on clicking info button
|
||||
*/
|
||||
@OnClick(R.id.achievement_info)
|
||||
public void showInfoDialog(){
|
||||
protected void showInfoDialog(){
|
||||
launchAlert(
|
||||
getResources().getString(R.string.Achievements),
|
||||
getResources().getString(R.string.achievements_info_message));
|
||||
|
|
@ -242,7 +188,7 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
* which then calls parseJson when results are fetched
|
||||
*/
|
||||
private void setAchievements() {
|
||||
progressBar.setVisibility(View.VISIBLE);
|
||||
binding.progressBar.setVisibility(View.VISIBLE);
|
||||
if (checkAccount()) {
|
||||
try{
|
||||
|
||||
|
|
@ -256,8 +202,8 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
setUploadCount(Achievements.from(response));
|
||||
} else {
|
||||
Timber.d("success");
|
||||
layoutImageReverts.setVisibility(View.INVISIBLE);
|
||||
imageView.setVisibility(View.INVISIBLE);
|
||||
binding.layoutImageReverts.setVisibility(View.INVISIBLE);
|
||||
binding.achievementBadgeImage.setVisibility(View.INVISIBLE);
|
||||
// If the number of edits made by the user are more than 150,000
|
||||
// in some cases such high number of wiki edit counts cause the
|
||||
// achievements calculator to fail in some cases, for more details
|
||||
|
|
@ -299,7 +245,7 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(edits -> {
|
||||
numberOfEdits = edits;
|
||||
wikidataEditsText.setText(String.valueOf(edits));
|
||||
binding.wikidataEdits.setText(String.valueOf(edits));
|
||||
}, e -> {
|
||||
Timber.e("Error:" + e);
|
||||
}));
|
||||
|
|
@ -314,11 +260,11 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
*/
|
||||
private void showSnackBarWithRetry(boolean tooManyAchievements) {
|
||||
if (tooManyAchievements) {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
binding.progressBar.setVisibility(View.GONE);
|
||||
ViewUtil.showDismissibleSnackBar(getActivity().findViewById(android.R.id.content),
|
||||
R.string.achievements_fetch_failed_ultimate_achievement, R.string.retry, view -> setAchievements());
|
||||
} else {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
binding.progressBar.setVisibility(View.GONE);
|
||||
ViewUtil.showDismissibleSnackBar(getActivity().findViewById(android.R.id.content),
|
||||
R.string.achievements_fetch_failed, R.string.retry, view -> setAchievements());
|
||||
}
|
||||
|
|
@ -329,7 +275,7 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
*/
|
||||
private void onError() {
|
||||
ViewUtil.showLongToast(getActivity(), getResources().getString(R.string.error_occurred));
|
||||
progressBar.setVisibility(View.GONE);
|
||||
binding.progressBar.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -368,10 +314,10 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
if (uploadCount==0){
|
||||
setZeroAchievements();
|
||||
}else {
|
||||
imagesUploadedProgressbar.setVisibility(View.VISIBLE);
|
||||
imagesUploadedProgressbar.setProgress
|
||||
binding.imagesUploadedProgressbar.setVisibility(View.VISIBLE);
|
||||
binding.imagesUploadedProgressbar.setProgress
|
||||
(100*uploadCount/levelInfo.getMaxUploadCount());
|
||||
uploadedImagesTextview.setText
|
||||
binding.tvUploadedImages.setText
|
||||
(uploadCount + "/" + levelInfo.getMaxUploadCount());
|
||||
}
|
||||
|
||||
|
|
@ -387,14 +333,14 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
getString(R.string.ok),
|
||||
() -> {},
|
||||
true);
|
||||
imagesUploadedProgressbar.setVisibility(View.INVISIBLE);
|
||||
imageRevertsProgressbar.setVisibility(View.INVISIBLE);
|
||||
imagesUsedByWikiProgressBar.setVisibility(View.INVISIBLE);
|
||||
imageView.setVisibility(View.INVISIBLE);
|
||||
imageByWikiText.setText(R.string.no_image);
|
||||
imageRevertedText.setText(R.string.no_image_reverted);
|
||||
imageUploadedText.setText(R.string.no_image_uploaded);
|
||||
imageView.setVisibility(View.INVISIBLE);
|
||||
binding.imagesUploadedProgressbar.setVisibility(View.INVISIBLE);
|
||||
binding.imageRevertsProgressbar.setVisibility(View.INVISIBLE);
|
||||
binding.imagesUsedByWikiProgressBar.setVisibility(View.INVISIBLE);
|
||||
binding.achievementBadgeImage.setVisibility(View.INVISIBLE);
|
||||
binding.imagesUsedByWikiText.setText(R.string.no_image);
|
||||
binding.imagesRevertedText.setText(R.string.no_image_reverted);
|
||||
binding.imagesUploadTextParam.setText(R.string.no_image_uploaded);
|
||||
binding.achievementBadgeImage.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -402,11 +348,11 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
* @param notRevertPercentage
|
||||
*/
|
||||
private void setImageRevertPercentage(int notRevertPercentage){
|
||||
imageRevertsProgressbar.setVisibility(View.VISIBLE);
|
||||
imageRevertsProgressbar.setProgress(notRevertPercentage);
|
||||
binding.imageRevertsProgressbar.setVisibility(View.VISIBLE);
|
||||
binding.imageRevertsProgressbar.setProgress(notRevertPercentage);
|
||||
String revertPercentage = Integer.toString(notRevertPercentage);
|
||||
imageRevertsProgressbar.setProgressTextFormatPattern(revertPercentage + "%%");
|
||||
imagesRevertLimitText.setText(getResources().getString(R.string.achievements_revert_limit_message)+ levelInfo.getMinNonRevertPercentage() + "%");
|
||||
binding.imageRevertsProgressbar.setProgressTextFormatPattern(revertPercentage + "%%");
|
||||
binding.imagesRevertLimitText.setText(getResources().getString(R.string.achievements_revert_limit_message)+ levelInfo.getMinNonRevertPercentage() + "%");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -415,90 +361,81 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
* @param achievements
|
||||
*/
|
||||
private void inflateAchievements(Achievements achievements) {
|
||||
imagesUsedByWikiProgressBar.setVisibility(View.VISIBLE);
|
||||
thanksReceived.setText(String.valueOf(achievements.getThanksReceived()));
|
||||
imagesUsedByWikiProgressBar.setProgress
|
||||
binding.imagesUsedByWikiProgressBar.setVisibility(View.VISIBLE);
|
||||
binding.achievementLevel.setText(String.valueOf(achievements.getThanksReceived()));
|
||||
binding.imagesUsedByWikiProgressBar.setProgress
|
||||
(100 * achievements.getUniqueUsedImages() / levelInfo.getMaxUniqueImages());
|
||||
if(imagesUsedByWikiTextview != null) {
|
||||
imagesUsedByWikiTextview.setText
|
||||
if(binding.tvWikiPb != null) {
|
||||
binding.tvWikiPb.setText
|
||||
(achievements.getUniqueUsedImages() + "/" + levelInfo.getMaxUniqueImages());
|
||||
}
|
||||
imagesFeatured.setText(String.valueOf(achievements.getFeaturedImages()));
|
||||
tvQualityImages.setText(String.valueOf(achievements.getQualityImages()));
|
||||
binding.imageFeatured.setText(String.valueOf(achievements.getFeaturedImages()));
|
||||
binding.qualityImages.setText(String.valueOf(achievements.getQualityImages()));
|
||||
String levelUpInfoString = getString(R.string.level).toUpperCase();
|
||||
levelUpInfoString += " " + levelInfo.getLevelNumber();
|
||||
levelNumber.setText(levelUpInfoString);
|
||||
imageView.setImageDrawable(VectorDrawableCompat.create(getResources(), R.drawable.badge,
|
||||
binding.achievementLevel.setText(levelUpInfoString);
|
||||
binding.achievementBadgeImage.setImageDrawable(VectorDrawableCompat.create(getResources(), R.drawable.badge,
|
||||
new ContextThemeWrapper(getActivity(), levelInfo.getLevelStyle()).getTheme()));
|
||||
badgeText.setText(Integer.toString(levelInfo.getLevelNumber()));
|
||||
binding.achievementBadgeText.setText(Integer.toString(levelInfo.getLevelNumber()));
|
||||
}
|
||||
|
||||
/**
|
||||
* to hide progressbar
|
||||
*/
|
||||
private void hideProgressBar(Achievements achievements) {
|
||||
if (progressBar != null) {
|
||||
if (binding.progressBar != null) {
|
||||
levelInfo = LevelController.LevelInfo.from(achievements.getImagesUploaded(),
|
||||
achievements.getUniqueUsedImages(),
|
||||
achievements.getNotRevertPercentage());
|
||||
inflateAchievements(achievements);
|
||||
setUploadProgress(achievements.getImagesUploaded());
|
||||
setImageRevertPercentage(achievements.getNotRevertPercentage());
|
||||
progressBar.setVisibility(View.GONE);
|
||||
item.setVisible(true);
|
||||
binding.progressBar.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@OnClick(R.id.images_upload_info)
|
||||
public void showUploadInfo(){
|
||||
protected void showUploadInfo(){
|
||||
launchAlertWithHelpLink(
|
||||
getResources().getString(R.string.images_uploaded),
|
||||
getResources().getString(R.string.images_uploaded_explanation),
|
||||
IMAGES_UPLOADED_URL);
|
||||
}
|
||||
|
||||
@OnClick(R.id.images_reverted_info)
|
||||
public void showRevertedInfo(){
|
||||
protected void showRevertedInfo(){
|
||||
launchAlertWithHelpLink(
|
||||
getResources().getString(R.string.image_reverts),
|
||||
getResources().getString(R.string.images_reverted_explanation),
|
||||
IMAGES_REVERT_URL);
|
||||
}
|
||||
|
||||
@OnClick(R.id.images_used_by_wiki_info)
|
||||
public void showUsedByWikiInfo(){
|
||||
protected void showUsedByWikiInfo(){
|
||||
launchAlertWithHelpLink(
|
||||
getResources().getString(R.string.images_used_by_wiki),
|
||||
getResources().getString(R.string.images_used_explanation),
|
||||
IMAGES_USED_URL);
|
||||
}
|
||||
|
||||
@OnClick(R.id.images_nearby_info)
|
||||
public void showImagesViaNearbyInfo(){
|
||||
protected void showImagesViaNearbyInfo(){
|
||||
launchAlertWithHelpLink(
|
||||
getResources().getString(R.string.statistics_wikidata_edits),
|
||||
getResources().getString(R.string.images_via_nearby_explanation),
|
||||
IMAGES_NEARBY_PLACES_URL);
|
||||
}
|
||||
|
||||
@OnClick(R.id.images_featured_info)
|
||||
public void showFeaturedImagesInfo(){
|
||||
protected void showFeaturedImagesInfo(){
|
||||
launchAlertWithHelpLink(
|
||||
getResources().getString(R.string.statistics_featured),
|
||||
getResources().getString(R.string.images_featured_explanation),
|
||||
IMAGES_FEATURED_URL);
|
||||
}
|
||||
|
||||
@OnClick(R.id.thanks_received_info)
|
||||
public void showThanksReceivedInfo(){
|
||||
protected void showThanksReceivedInfo(){
|
||||
launchAlertWithHelpLink(
|
||||
getResources().getString(R.string.statistics_thanks),
|
||||
getResources().getString(R.string.thanks_received_explanation),
|
||||
THANKS_URL);
|
||||
}
|
||||
|
||||
@OnClick(R.id.quality_images_info)
|
||||
public void showQualityImagesInfo() {
|
||||
launchAlertWithHelpLink(
|
||||
getResources().getString(R.string.statistics_quality),
|
||||
|
|
|
|||
|
|
@ -230,6 +230,7 @@
|
|||
<string name="about_rate_us">Оценете ни!</string>
|
||||
<string name="about_faq">ЧЗВ</string>
|
||||
<string name="no_internet">Няма връзка с интернет</string>
|
||||
<string name="about_translate">Превеждане</string>
|
||||
<string name="about_translate_title">Езици</string>
|
||||
<string name="about_translate_cancel">Отказ</string>
|
||||
<string name="showcase_view_needs_photo">Това място има нужда от снимка.</string>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
<!-- Authors:
|
||||
* Aftabuzzaman
|
||||
* Bellayet
|
||||
* Borhan
|
||||
* Elias Ahmmad
|
||||
* Leemon2010
|
||||
* Md. Golam Mukit Khan
|
||||
|
|
@ -332,6 +333,7 @@
|
|||
<string name="wrong">ভুল উত্তর</string>
|
||||
<string name="quiz_screenshot_question">এই স্ক্রিনশটটি কি আপলোড করা ঠিক হয়েছে?</string>
|
||||
<string name="share_app_title">অ্যাপ শেয়ার করুন</string>
|
||||
<string name="rotate">ঘোরান</string>
|
||||
<string name="error_fetching_nearby_places">কাছাকাছি স্থানগুলি আনতে ত্রুটি।</string>
|
||||
<string name="no_nearby_places_around">আশেপাশে কোনো এলাকা পাওয়া যায়নি</string>
|
||||
<string name="error_fetching_nearby_monuments">আশেপাশের স্মৃতিস্তম্ভগুলি আনায়নে ত্রুটি৷</string>
|
||||
|
|
@ -524,4 +526,5 @@
|
|||
<string name="report_user">এই ব্যবহারকারীকে প্রতিবেদন করুন</string>
|
||||
<string name="report_content">এই বিষয়বস্তু সম্পর্কে অভিযোগ জানান</string>
|
||||
<string name="request_user_block">এই ব্যবহারকারীকে বাধাদনের অনুরোধ করুন</string>
|
||||
<string name="permissions_are_required_for_functionality">কার্যকারিতার জন্য অনুমতি প্রয়োজন</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@
|
|||
* Nekky-chan
|
||||
* Ngschaider
|
||||
* Pyscowicz
|
||||
* Sebastian Wallroth
|
||||
* SpaceEnergy
|
||||
* Sujan
|
||||
* Sushi
|
||||
* Tacsipacsi
|
||||
|
|
@ -91,6 +93,7 @@
|
|||
<string name="bullet">•</string>
|
||||
<string name="menu_settings">Einstellungen</string>
|
||||
<string name="intent_share_upload_label">Zu Commons hochladen</string>
|
||||
<string name="upload_in_progress">Hochladen läuft</string>
|
||||
<string name="username">Benutzername</string>
|
||||
<string name="password">Passwort</string>
|
||||
<string name="login_credential">Bei deinem Commons-Beta-Benutzerkonto anmelden</string>
|
||||
|
|
@ -104,6 +107,9 @@
|
|||
<string name="login_success">Anmeldung erfolgreich!</string>
|
||||
<string name="login_failed">Anmeldung fehlgeschlagen!</string>
|
||||
<string name="upload_failed">Datei nicht gefunden. Bitte versuche es mit einer anderen Datei.</string>
|
||||
<string name="retry_limit_reached">Maximales Wiederholungslimit erreicht! Bitte brich den Upload ab und versuche es erneut</string>
|
||||
<string name="unrestricted_battery_mode">Batterieoptimierung ausschalten?</string>
|
||||
<string name="suggest_unrestricted_mode">Das Hochladen von mehr als 3 Bildern funktioniert zuverlässiger, wenn die Batterieoptimierung ausgeschaltet ist. Bitte schalten Sie die Batterieoptimierung für die Commons-App in den Einstellungen aus, um ein reibungsloses Upload-Erlebnis zu gewährleisten. \n\nMögliche Schritte zum Ausschalten der Batterieoptimierung:\n\nSchritt 1: Tippen Sie unten auf die Schaltfläche „Einstellungen“.\n\nSchritt 2: Wechseln Sie von „Nicht optimiert“ zu „Alle“. apps‘.\n\nSchritt 3: Suchen Sie nach „Commons“ oder „fr.free.nrw.commons“.\n\nSchritt 4: Tippen Sie darauf und wählen Sie „Nicht optimieren“.\n\nSchritt 5: Klicken Sie auf „Fertig“.</string>
|
||||
<string name="authentication_failed">Authentifizierung fehlgeschlagen. Bitte erneut anmelden.</string>
|
||||
<string name="uploading_started">Hochladen gestartet!</string>
|
||||
<string name="uploading_queued">Hochladen in Warteschlange (eingeschränkter Verbindungsmodus aktiviert)</string>
|
||||
|
|
@ -218,6 +224,8 @@
|
|||
<string name="read_storage_permission_rationale">Erforderliche Berechtigung: Externen Speicher lesen. Die App kann ohne diese Berechtigung nicht auf deine Galerie zugreifen.</string>
|
||||
<string name="write_storage_permission_rationale">Erforderliche Berechtigung: Externen Speicher beschreiben. Die App kann ohne diese Berechtigung nicht auf deine Kamera oder Galerie zugreifen.</string>
|
||||
<string name="location_permission_title">Anfordern der Standortfreigabe</string>
|
||||
<string name="in_app_camera_location_permission_title">Zeichnen Sie den Standort für In-App-Aufnahmen auf</string>
|
||||
<string name="in_app_camera_location_switch_pref_summary">Aktivieren Sie diese Option, um den Standort mit In-App-Aufnahmen aufzuzeichnen, falls die Kamera des Geräts ihn nicht aufzeichnet</string>
|
||||
<string name="ok">Okay</string>
|
||||
<string name="warning">Warnung</string>
|
||||
<string name="duplicate_file_name">Duplizierter Dateiname gefunden</string>
|
||||
|
|
@ -296,6 +304,7 @@
|
|||
<string name="copy_wikicode">Den Wikitext in die Zwischenablage kopieren</string>
|
||||
<string name="wikicode_copied">Der Wikitext wurde in die Zwischenablage kopiert</string>
|
||||
<string name="nearby_location_not_available">„In der Nähe“ arbeiten möglicherwiese nicht richtig. Der Standort ist nicht verfügbar.</string>
|
||||
<string name="upload_location_access_denied">Standortzugriff verweigert. Bitte legen Sie Ihren Standort manuell fest, um diese Funktion nutzen zu können.</string>
|
||||
<string name="location_permission_rationale_nearby">Berechtigung zur Anzeige einer Liste mit Orten in der Nähe erforderlich</string>
|
||||
<string name="nearby_directions">Richtungen</string>
|
||||
<string name="nearby_wikidata">Wikidata</string>
|
||||
|
|
@ -363,6 +372,7 @@
|
|||
<string name="wrong">Falsche Antwort</string>
|
||||
<string name="quiz_screenshot_question">Darf dieses Bildschirmfoto hochgeladen werden?</string>
|
||||
<string name="share_app_title">App teilen</string>
|
||||
<string name="rotate">Drehen</string>
|
||||
<string name="error_fetching_nearby_places">Fehler beim Abrufen der Orte in der Nähe.</string>
|
||||
<string name="no_nearby_places_around">Keine Orte in der Nähe gefunden</string>
|
||||
<string name="error_fetching_nearby_monuments">Fehler beim Abrufen von Denkmälern in der Nähe.</string>
|
||||
|
|
@ -443,6 +453,16 @@
|
|||
<string name="ends_on">Endet am:</string>
|
||||
<string name="display_campaigns">Kampagnen anzeigen</string>
|
||||
<string name="display_campaigns_explanation">Die laufenden Kampagnen ansehen</string>
|
||||
<string name="in_app_camera_location_access_explanation">Erlauben Sie der App, den Standort abzurufen, falls die Kamera ihn nicht aufzeichnet. Einige Gerätekameras zeichnen den Standort nicht auf. In solchen Fällen wird Ihr Beitrag nützlicher, wenn Sie die App den Standort abrufen und anhängen lassen. Sie können dies jederzeit in den Einstellungen ändern</string>
|
||||
<string name="option_allow">Erlauben</string>
|
||||
<string name="option_dismiss">Ablehnen</string>
|
||||
<string name="in_app_camera_needs_location">Bitte aktivieren Sie den Standortzugriff in den Einstellungen und versuchen Sie es erneut. \n\nHinweis: Der Upload enthält möglicherweise keinen Standort, wenn die App den Standort nicht innerhalb eines kurzen Zeitraums vom Gerät abrufen kann.</string>
|
||||
<string name="in_app_camera_location_permission_rationale">Die In-App-Kamera benötigt eine Standortberechtigung, um sie an Ihre Bilder anzuhängen, falls der Standort nicht in EXIF verfügbar ist. Bitte erlauben Sie der App, auf Ihren Standort zuzugreifen, und versuchen Sie es erneut.\n\nHinweis: Der Upload enthält möglicherweise keinen Standort, wenn die App den Standort nicht innerhalb eines kurzen Zeitraums vom Gerät abrufen kann.</string>
|
||||
<string name="in_app_camera_location_permission_denied">Aufgrund fehlender Standortberechtigung konnte die App den Standort nicht zusammen mit In-Shots aufzeichnen</string>
|
||||
<string name="in_app_camera_location_unavailable">Die App zeichnet den Standort nicht zusammen mit In-Shots auf, da das GPS ausgeschaltet ist</string>
|
||||
<string name="open_document_photo_picker_title">Verwenden Sie die dokumentbasierte Fotoauswahl</string>
|
||||
<string name="open_document_photo_picker_explanation">Bei der neuen Android-Fotoauswahl besteht die Gefahr, dass Standortinformationen verloren gehen. Aktivieren Sie diese Option, wenn Sie sie anscheinend verwenden.</string>
|
||||
<string name="location_loss_warning">Wenn Sie dies deaktivieren, wird möglicherweise die neue Android-Fotoauswahl aktiviert. Es besteht die Gefahr, dass Standortinformationen verloren gehen.\n\nTippen Sie auf „Weitere Informationen“, um weitere Informationen zu erhalten.</string>
|
||||
<string name="nearby_campaign_dismiss_message">Du wirst die Kampagnen nicht mehr sehen. Du kannst dennoch diese Benachrichtigung in den Einstellungen erneut aktivieren, falls du dies möchtest.</string>
|
||||
<string name="this_function_needs_network_connection">Diese Funktion erfordert eine Netzwerkverbindung. Bitte überprüfe deine Verbindungseinstellungen.</string>
|
||||
<string name="error_processing_image">Bei der Verarbeitung des Bildes ist ein Fehler aufgetreten. Bitte erneut versuchen!</string>
|
||||
|
|
@ -588,6 +608,7 @@
|
|||
<string name="recommend_high_accuracy_mode">Die besten Ergebnisse erzielst du, wenn du den Modus „Hohe Genauigkeit“ wählst.</string>
|
||||
<string name="ask_to_turn_location_on">Standort einschalten?</string>
|
||||
<string name="nearby_needs_location">Für die Funktion „in der Nähe“ muss der Standort aktiviert sein, um richtig zu funktionieren</string>
|
||||
<string name="upload_map_location_access">Sie müssen Zugriff auf Ihren aktuellen Standort gewähren, um den Standort automatisch festzulegen.</string>
|
||||
<string name="use_location_from_similar_image">Hast du diese beiden Bilder am selben Ort aufgenommen? Möchtest du den Breiten- und Längengrad des rechten Bildes verwenden?</string>
|
||||
<string name="load_more">Mehr laden</string>
|
||||
<string name="nearby_no_results">Keine Orte gefunden, versuche, deine Suchkriterien zu ändern.</string>
|
||||
|
|
@ -714,6 +735,8 @@
|
|||
<string name="your_feedback">Dein Feedback</string>
|
||||
<string name="mark_as_not_for_upload">Als nicht zum Hochladen markieren</string>
|
||||
<string name="unmark_as_not_for_upload">Markierung als nicht zum Hochladen aufheben</string>
|
||||
<string name="marking_as_not_for_upload">Als nicht zum Hochladen markieren</string>
|
||||
<string name="unmarking_as_not_for_upload">Markierung als nicht zum Hochladen aufheben</string>
|
||||
<string name="show_already_actioned_pictures">Bereits bearbeitete Bilder anzeigen</string>
|
||||
<string name="hiding_already_actioned_pictures">Ausblenden bereits bearbeiteter Bilder</string>
|
||||
<string name="no_more_images_found">Keine Bilder mehr gefunden</string>
|
||||
|
|
@ -731,4 +754,11 @@
|
|||
<string name="full_screen_mode_features_info">Wische schnell und lange, um diese Aktionen auszuführen:\n- Links/Rechts: Zum vorherigen/nächsten gehen\n- Nach oben: Auswählen\n- Nach unten: Als nicht zum Hochladen markieren.</string>
|
||||
<string name="set_up_avatar_toast_string">Um deinen Bestenlisten Avatar einzustellen, klicke \"Set as avatar\" in dem Drei-Punkte-Menü bei jedem Bild.</string>
|
||||
<string name="similar_coordinate_description_auto_set">Die Koordinaten sind nicht exakt genug, aber der Uploader dieses Bildes denkt, sie sind nah genug.</string>
|
||||
<string name="storage_permissions_denied">Speicherberechtigungen verweigert</string>
|
||||
<string name="unable_to_share_upload_item">Dieser Artikel kann nicht geteilt werden</string>
|
||||
<string name="permissions_are_required_for_functionality">Für die Funktionalität sind Berechtigungen erforderlich</string>
|
||||
<plurals name="custom_picker_images_selected_title_appendix">
|
||||
<item quantity="one">%d Bild ausgewählt</item>
|
||||
<item quantity="other"> %d Bilder ausgewählt</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -289,6 +289,9 @@
|
|||
<string name="provider_bookmarks">Nişan</string>
|
||||
<string name="provider_bookmarks_location">Nişani</string>
|
||||
<string name="no_categories_selected">Kategoriyê ke nêweçiniyê</string>
|
||||
<string name="back_button_warning">Barkerdışi bıtexelne</string>
|
||||
<string name="option_allow">Mısade bıde</string>
|
||||
<string name="option_dismiss">Red ke</string>
|
||||
<string name="nominate_for_deletion_done">Temam</string>
|
||||
<string name="review_thanks_yes_button_text" fuzzy="true">Eya, çıra mebo</string>
|
||||
<string name="review_thanks_no_button_text" fuzzy="true">Resımo bahdoyên</string>
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
* Madamebiblio
|
||||
* MarcoAurelio
|
||||
* MarionaDSR
|
||||
* McDutchie
|
||||
* Miguel2706
|
||||
* Mirzali
|
||||
* No se
|
||||
|
|
@ -528,7 +529,7 @@
|
|||
<string name="no_categories_found">No se encontró ninguna categoría</string>
|
||||
<string name="no_depiction_found">No se encontraron representaciones</string>
|
||||
<string name="upload_cancelled">Se canceló la carga</string>
|
||||
<string name="previous_image_title_description_not_found">No hay datos sobre el título o la descripción anteriores de la imagen</string>
|
||||
<string name="previous_image_title_description_not_found">No hay datos sobre el título o la descripción de la imagen anterior</string>
|
||||
<string name="dialog_box_text_nomination">¿Por qué debe borrarse %1$s?</string>
|
||||
<string name="review_is_uploaded_by">%1$s fue subida por: %2$s</string>
|
||||
<string name="default_description_language">Idioma por defecto de la descripción</string>
|
||||
|
|
@ -614,7 +615,7 @@
|
|||
<string name="missing_category">- Añadir las categorias a esta imagen para mejorar su usabilidad.</string>
|
||||
<string name="missing_article">- Añadir esta imagen al artículo relacionado de Wikipedia que no tiene imagen.</string>
|
||||
<string name="add_picture_to_wikipedia_article_title">Añadir la imagen a Wikipedia</string>
|
||||
<string name="add_picture_to_wikipedia_article_desc">¿Quieres añadir esta imagen al artículo de %1$s de Wikipedia?</string>
|
||||
<string name="add_picture_to_wikipedia_article_desc">¿Quieres añadir esta imagen al artículo de Wikipedia en %1$s?</string>
|
||||
<string name="confirm">Confirmar</string>
|
||||
<string name="instructions_title">Instrucciones</string>
|
||||
<string name="wikipedia_instructions_step_1">1. Usa el siguiente wikitexto:</string>
|
||||
|
|
|
|||
|
|
@ -326,6 +326,7 @@
|
|||
<string name="wrong">جواب نادرست</string>
|
||||
<string name="quiz_screenshot_question">آیا این عکس از صفحه برای بارگذاری مناسب است؟</string>
|
||||
<string name="share_app_title">اشتراک اپلیکیشن</string>
|
||||
<string name="rotate">چرخاندن</string>
|
||||
<string name="error_fetching_nearby_places">خطا در آوردن مکانهای نزدیک.</string>
|
||||
<string name="error_fetching_nearby_monuments">خطا در واکشی یادمانهای نزدیک.</string>
|
||||
<string name="no_recent_searches">جستجوهای اخیر وجود ندارد</string>
|
||||
|
|
|
|||
|
|
@ -336,8 +336,8 @@
|
|||
<string name="no_images_found">Aucune image trouvée !</string>
|
||||
<string name="error_loading_images">Une erreur s’est produite durant le chargement des images.</string>
|
||||
<string name="image_uploaded_by">Téléversé par : %1$s</string>
|
||||
<string name="block_notification_title">{{GENDER:|Bloqué|Bloquée}}</string>
|
||||
<string name="block_notification">Vous avez été bloqué et ne pouvez plus modifier sur Commons</string>
|
||||
<string name="block_notification_title">Bloqué(e)</string>
|
||||
<string name="block_notification">Vous avez été bloqué(e) et ne pouvez plus modifier Commons</string>
|
||||
<string name="app_widget_heading">Image du jour</string>
|
||||
<string name="menu_search_button">Chercher</string>
|
||||
<string name="search_commons">Rechercher dans Commons</string>
|
||||
|
|
@ -706,7 +706,7 @@
|
|||
<string name="welcome_custom_selector_ok">Génial</string>
|
||||
<string name="custom_selector_already_uploaded_image_text">Cette image a déjà été téléversée sur Commons.</string>
|
||||
<string name="place_state_wlm">WLM</string>
|
||||
<string name="wlm_upload_info">Cette image sera entrée dans le concours « Wiki aime les monuments » de 2021</string>
|
||||
<string name="wlm_upload_info">Cette image sera entrée dans le concours « Wiki aime les monuments »</string>
|
||||
<string name="display_monuments">Afficher les monuments</string>
|
||||
<string name="wlm_month_message">C’est le mois de « Wiki aime les monuments » !</string>
|
||||
<string name="learn_more">EN SAVOIR PLUS</string>
|
||||
|
|
@ -764,6 +764,9 @@
|
|||
<string name="full_screen_mode_features_info">Balayez rapidement et assez loin pour effectuer les actions suivantes :\n– vers la gauche / droite : aller au précédent / suivant ;\n– vers le haut : sélectionner ;\n– vers le bas : marquer comme à ne pas téléverser.</string>
|
||||
<string name="set_up_avatar_toast_string">Pour configurer votre avatar de classement, appuyez sur « Définir comme avatar » dans le menu à trois points de n’importe quelle image.</string>
|
||||
<string name="similar_coordinate_description_auto_set">Les coordonnées ne sont pas les coordonnées exactes, mais la personne qui a téléversé cette image pense qu’elles sont suffisamment proches.</string>
|
||||
<string name="storage_permissions_denied">Droits de stockage refusés</string>
|
||||
<string name="unable_to_share_upload_item">Impossible de partager cet élément</string>
|
||||
<string name="permissions_are_required_for_functionality">Des autorisations sont nécessaires pour la fonctionnalité</string>
|
||||
<plurals name="custom_picker_images_selected_title_appendix">
|
||||
<item quantity="one">%d image sélectionnée</item>
|
||||
<item quantity="other">%d images sélectionnées</item>
|
||||
|
|
|
|||
|
|
@ -491,4 +491,8 @@
|
|||
<string name="report_user">Felhasználó jelentése</string>
|
||||
<string name="report_content">Tartalom jelentése</string>
|
||||
<string name="request_user_block">Kérelem a felhasználó letiltásához</string>
|
||||
<plurals name="custom_picker_images_selected_title_appendix">
|
||||
<item quantity="one">%d kép kiválasztva</item>
|
||||
<item quantity="other"> %d kép kiválasztva</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
* McDutchie
|
||||
-->
|
||||
<resources>
|
||||
<string name="crash_dialog_title">Commons: crash</string>
|
||||
<string name="crash_dialog_title">Commons ha collabite</string>
|
||||
<string name="crash_dialog_text">Ups. Qualcosa ha facite fiasco!</string>
|
||||
<string name="crash_dialog_comment_prompt">Dice nos lo que tu faceva, e invia nos lo per e-mail. Isto nos adjutara a corriger le problema!</string>
|
||||
<string name="crash_dialog_ok_toast">Gratias!</string>
|
||||
|
|
|
|||
|
|
@ -186,9 +186,9 @@
|
|||
<string name="storage_permission_title">Requestar permission de immagazinage</string>
|
||||
<string name="read_storage_permission_rationale">Permission necessari: lectura de immagazinage externe. Le application non pote acceder a tu galeria sin isto.</string>
|
||||
<string name="write_storage_permission_rationale">Permission necessari: Scriber sur immagazinage externe. Le app non pote acceder a tu camera/galeria sin isto.</string>
|
||||
<string name="location_permission_title">Requestar permission de position</string>
|
||||
<string name="location_permission_title">Requestar permission de localisation</string>
|
||||
<string name="in_app_camera_location_permission_title">Memorisar le position geographic pro photos prendite in le application</string>
|
||||
<string name="in_app_camera_location_switch_pref_summary">Activa isto pro memorisar le position geographic con photos prendite in le application in caso que le camera del apparato non lo registra</string>
|
||||
<string name="in_app_camera_location_switch_pref_summary">Activa isto pro memorisar le localisation con photos prendite in le application in caso que le camera del apparato non lo registra</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="warning">Advertimento</string>
|
||||
<string name="duplicate_file_name">Nomine de file duplicate trovate</string>
|
||||
|
|
@ -266,8 +266,8 @@
|
|||
<string name="login_alert_message">Per favor aperi session pro usar iste function</string>
|
||||
<string name="copy_wikicode">Copiar le wikitexto al area de transferentia</string>
|
||||
<string name="wikicode_copied">Le wikitexto ha essite copiate al area de transferentia</string>
|
||||
<string name="nearby_location_not_available">\"A proximitate\" poterea non functionar, perque le position geographic non es disponibile.</string>
|
||||
<string name="upload_location_access_denied">Le accesso al position ha essite refusate. Per favor indica tu position manualmente pro usar iste function.</string>
|
||||
<string name="nearby_location_not_available">“A proximitate” poterea non functionar perque le localisation non es disponibile.</string>
|
||||
<string name="upload_location_access_denied">Le accesso al localisation ha essite refusate. Per favor indica tu localisation manualmente pro usar iste function.</string>
|
||||
<string name="location_permission_rationale_nearby">Permission necessari pro monstrar un lista de locos a proximitate</string>
|
||||
<string name="nearby_directions">Itinerario</string>
|
||||
<string name="nearby_wikidata">Wikidata</string>
|
||||
|
|
@ -406,26 +406,26 @@
|
|||
<string name="upload_flow_all_images_in_set">(Pro tote le imagines in le insimul)</string>
|
||||
<string name="search_this_area">Cercar in iste area</string>
|
||||
<string name="nearby_card_permission_title">Requesta de permission</string>
|
||||
<string name="nearby_card_permission_explanation">Vole tu que nos usa tu position actual pro monstrar le loco le plus vicin que ha besonio de imagines?</string>
|
||||
<string name="unable_to_display_nearest_place">Non es possibile monstrar le loco le plus proxime que ha besonio de imagines sin permission de acceder al position.</string>
|
||||
<string name="nearby_card_permission_explanation">Vole tu que nos usa tu localisation actual pro monstrar le loco le plus vicin que ha besonio de imagines?</string>
|
||||
<string name="unable_to_display_nearest_place">Non es possibile monstrar le loco le plus vicin que ha besonio de imagines sin permission de acceder al localisation.</string>
|
||||
<string name="never_ask_again">Nunquam demandar isto de novo</string>
|
||||
<string name="display_location_permission_title">Demandar permission de position</string>
|
||||
<string name="display_location_permission_title">Demandar permission de localisation</string>
|
||||
<string name="display_location_permission_explanation">Demandar le permission de acceder al position quando es necessari pro le function de notification a proximitate.</string>
|
||||
<string name="achievements_fetch_failed">Un problema ha occurrite. Non esseva possibile obtener tu realisationes.</string>
|
||||
<string name="achievements_fetch_failed_ultimate_achievement">Tu ha facite tante contributiones que nostre systema de calculo de realisationes non pote contar los. Iste es le realisation ultime!</string>
|
||||
<string name="ends_on">Termina le:</string>
|
||||
<string name="display_campaigns">Monstrar campanias</string>
|
||||
<string name="display_campaigns_explanation">Vider le campanias in curso</string>
|
||||
<string name="in_app_camera_location_access_explanation">Permitter al application obtener le position geographic in caso que le camera non lo registra. Alcun cameras de apparatos non registra le position. In tal casos, permitter al application obtener e attachar le position rende tu contribution plus utile. Tu pote cambiar isto a tote momento in le Parametros.</string>
|
||||
<string name="in_app_camera_location_access_explanation">Permitter al application obtener le localisation in caso que le camera non lo registra. Alcun cameras de apparatos non registra le localisation. In tal casos, permitter al application obtener e attachar le localisation rende tu contribution plus utile. Tu pote cambiar isto a tote momento in le Parametros.</string>
|
||||
<string name="option_allow">Permitter</string>
|
||||
<string name="option_dismiss">Clauder</string>
|
||||
<string name="in_app_camera_needs_location">Per favor, activa le accesso al position in le Parametros e essaya lo de novo.\n\nNota: Le file incargate pote non haber le position si le application non pote recuperar le position del apparato in curte tempore.</string>
|
||||
<string name="in_app_camera_location_permission_rationale">Le camera in le application necessita permission al position pro attachar lo a tu imagines in caso que le position non es disponibile in EXIF. Per favor, permitte al application acceder a tu position e essaya lo de novo.\n\nNota: Le file incargate pote non haber le position si le application non pote recuperar le position del apparato in curte tempore.</string>
|
||||
<string name="in_app_camera_needs_location">Per favor, activa le accesso al localisation in le Parametros e essaya lo de novo.\n\nNota: Le file incargate pote non haber le localisation si le application non pote recuperar le localisation del apparato in curte tempore.</string>
|
||||
<string name="in_app_camera_location_permission_rationale">Le camera in le application require le permission de acceder al localisation pro attachar lo a tu imagines in caso que le localisation non es disponibile in EXIF. Per favor, permitte al application acceder a tu localisation e essaya lo de novo.\n\nNota: Le file incargate pote non haber le localisation si le application non pote recuperar le localisation del apparato in curte tempore.</string>
|
||||
<string name="in_app_camera_location_permission_denied">Le application non registrara le position con photos prendite desde le application a causa del manco de permission de position</string>
|
||||
<string name="in_app_camera_location_unavailable">Le application non registrara le position con photos prendite desde le application perque GPS ha essite disactivate</string>
|
||||
<string name="in_app_camera_location_unavailable">Le application non registrara le localisation con photos prendite desde le application perque GPS ha essite disactivate</string>
|
||||
<string name="open_document_photo_picker_title">Usar selector de photos basate sur documento</string>
|
||||
<string name="open_document_photo_picker_explanation">Le nove selector de photos de Android risca perder le information de position. Activa lo su tu sembla usar lo.</string>
|
||||
<string name="location_loss_warning">Si tu disactiva isto, le nove selector de photos de Android pote esser activate. Isto involve le periculo que information de position pote esser perdite.\n\nTocca ‘Leger plus’ pro plus information.</string>
|
||||
<string name="open_document_photo_picker_explanation">Le nove selector de photos de Android risca perder le information de localisation. Activa lo su tu sembla usar lo.</string>
|
||||
<string name="location_loss_warning">Si tu disactiva isto, le nove selector de photos de Android pote esser activate. Isto involve le periculo que information de localisation pote esser perdite.\n\nTocca ‘Leger plus’ pro plus information.</string>
|
||||
<string name="nearby_campaign_dismiss_message">Tu non videra plus le campanias. Totevia, tu pote reactivar iste notification in le Parametros si tu vole.</string>
|
||||
<string name="this_function_needs_network_connection">Iste function require un connexion al rete. Per favor verifica tu parametros de connexion.</string>
|
||||
<string name="error_processing_image">Un error ha occurrite durante le processamento del imagine. Per favor essaya lo de novo!</string>
|
||||
|
|
@ -436,6 +436,7 @@
|
|||
<string name="check_category_success_title">Controlo de categoria requestate</string>
|
||||
<string name="check_category_failure_title">Le requesta de controlo de categoria non ha functionate</string>
|
||||
<string name="check_category_success_message">Controlo de categoria requestate pro %1$s</string>
|
||||
<string name="check_category_failure_message">Non poteva requestar un controlo de categoria pro %1$s</string>
|
||||
<string name="check_category_toast">Requesta de un controlo de categoria pro %1$s</string>
|
||||
<string name="nominate_for_deletion_done">Facite</string>
|
||||
<string name="send_thank_success_title">Invio de regratiamento: Successo</string>
|
||||
|
|
@ -481,18 +482,249 @@
|
|||
<string name="manage_exif_tags_summary">Selige qual etiquettas EXIF conservar in files incargate</string>
|
||||
<string name="exif_tag_name_author">Autor</string>
|
||||
<string name="exif_tag_name_copyright">Derectos de autor</string>
|
||||
<string name="exif_tag_name_location">Loco</string>
|
||||
<string name="exif_tag_name_location">Localisation</string>
|
||||
<string name="exif_tag_name_cameraModel">Modello de camera</string>
|
||||
<string name="exif_tag_name_lensModel">Modello de lente</string>
|
||||
<string name="exif_tag_name_serialNumbers">Numeros de serie</string>
|
||||
<string name="exif_tag_name_software">Software</string>
|
||||
<string name="media_location_permission_denied">Accesso al localisation del file multimedial refusate</string>
|
||||
<string name="add_location_manually">Es possibile que nos non potera obtener automaticamente le datos de localisation del imagines que tu incarga. Per favor adde le localisation appropriate pro cata imagine ante de submitter.</string>
|
||||
<string name="share_text">Incarga photos a Wikimedia Commons directemente desde tu telephono. Discarga le app de Commons ora: %1$s</string>
|
||||
<string name="share_via">Condivider app via…</string>
|
||||
<string name="image_info">Information del imagine</string>
|
||||
<string name="no_categories_found">Necun categoria trovate</string>
|
||||
<string name="no_depiction_found">Necun representation trovate</string>
|
||||
<string name="upload_cancelled">Incargamento cancellate</string>
|
||||
<string name="previous_image_title_description_not_found">Il non ha datos sur le titulo o description del imagine anterior</string>
|
||||
<string name="dialog_box_text_nomination">Proque debe %1$s esser delite?</string>
|
||||
<string name="review_is_uploaded_by">%1$s es incargate per: %2$s</string>
|
||||
<string name="default_description_language">Lingua predefinite de description</string>
|
||||
<string name="delete_helper_show_deletion_title">Nominar pro deletion</string>
|
||||
<string name="delete_helper_show_deletion_title_success">Successo</string>
|
||||
<string name="delete_helper_show_deletion_message_if">%1$s nominate pro deletion.</string>
|
||||
<string name="delete_helper_show_deletion_title_failed">Fallite</string>
|
||||
<string name="delete_helper_show_deletion_message_else">Non poteva requestar deletion.</string>
|
||||
<string name="delete_helper_ask_spam_selfie">un ‘selfie’ que non es usate in alcun articulo</string>
|
||||
<string name="delete_helper_ask_spam_blurry">totalmente indistincte</string>
|
||||
<string name="delete_helper_ask_spam_nonsense">nonsenso, absolutemente non usabile in alcun articulo</string>
|
||||
<string name="delete_helper_ask_reason_copyright_press_photo">Photo de pressa</string>
|
||||
<string name="delete_helper_ask_reason_copyright_internet_photo">Un photo qualcunque prendite de internet</string>
|
||||
<string name="delete_helper_ask_reason_copyright_logo">Logo</string>
|
||||
<string name="delete_helper_ask_reason_copyright_no_freedom_of_panorama">Violation del libertate de panorama</string>
|
||||
<string name="delete_helper_ask_alert_set_positive_button_reason">Perque es</string>
|
||||
<string name="category_edit_helper_make_edit_toast">Tentativa in curso de actualisar categorias.</string>
|
||||
<string name="category_edit_helper_show_edit_title">Actualisation de categoria</string>
|
||||
<string name="category_edit_helper_show_edit_title_success">Successo</string>
|
||||
<plurals name="category_edit_helper_show_edit_message_if">
|
||||
<item quantity="one">Le categoria %1$s es addite.</item>
|
||||
<item quantity="other">Le categorias %1$s es addite.</item>
|
||||
</plurals>
|
||||
<string name="category_edit_helper_edit_message_else">Non poteva adder categorias.</string>
|
||||
<string name="category_edit_button_text">Actualisar categorias</string>
|
||||
<string name="depictions_edit_helper_make_edit_toast">Tentativa in curso de actualisar representationes.</string>
|
||||
<string name="depictions_edit_helper_show_edit_title">Modificar representationes</string>
|
||||
<plurals name="depictions_edit_helper_show_edit_message_if">
|
||||
<item quantity="one">Le representation %1$s es addite.</item>
|
||||
<item quantity="other">Le representationes %1$s es addite.</item>
|
||||
</plurals>
|
||||
<string name="depictions_edit_helper_edit_message_else">Non poteva adder representationes.</string>
|
||||
<string name="coordinates_edit_helper_make_edit_toast">Tentativa in curso de actualisar coordinatas.</string>
|
||||
<string name="coordinates_edit_helper_show_edit_title">Actualisation de coordinatas</string>
|
||||
<string name="description_edit_helper_show_edit_title">Actualisation del description</string>
|
||||
<string name="caption_edit_helper_show_edit_title">Actualisation del legenda</string>
|
||||
<string name="coordinates_edit_helper_show_edit_title_success">Successo</string>
|
||||
<string name="coordinates_edit_helper_show_edit_message">Le coordinatas %1$s es addite.</string>
|
||||
<string name="description_edit_helper_show_edit_message">Descriptiones es addite.</string>
|
||||
<string name="caption_edit_helper_show_edit_message">Legenda es addite.</string>
|
||||
<string name="coordinates_edit_helper_edit_message_else">Non poteva adder categorias.</string>
|
||||
<string name="description_edit_helper_edit_message_else">Non poteva adder descriptiones</string>
|
||||
<string name="caption_edit_helper_edit_message_else">Non poteva adder legenda.</string>
|
||||
<string name="coordinates_picking_unsuccessful">Non pote obtener coordinatas.</string>
|
||||
<string name="descriptions_picking_unsuccessful">Non pote obtener descriptiones.</string>
|
||||
<string name="description_activity_title">Modificar descriptiones e legendas</string>
|
||||
<string name="share_image_via">Condivider imagine via</string>
|
||||
<string name="you_have_no_achievements_yet">Tu non ha ancora facite alcun contribution</string>
|
||||
<string name="no_achievements_yet">%s non ha ancora facite alcun contribution</string>
|
||||
<string name="account_created">Conto create!</string>
|
||||
<string name="text_copy">Texto copiate al area de transferentia</string>
|
||||
<string name="notification_mark_read">Notification marcate como legite</string>
|
||||
<string name="some_error">Un error ha occurrite!</string>
|
||||
<string name="place_state">Stato del loco:</string>
|
||||
<string name="place_state_exists">Existe</string>
|
||||
<string name="place_state_needs_photo">Require photo</string>
|
||||
<string name="place_type">Typo de loco:</string>
|
||||
<string name="nearby_search_hint">Ponte, museo, hotel, etc.</string>
|
||||
<string name="you_must_reset_your_passsword">Un error ha occurrite durante le apertura de session. Es necessari reinitialisar tu contrasigno.</string>
|
||||
<string name="title_for_media">MULTIMEDIA</string>
|
||||
<string name="title_for_child_classes">CLASSES FILIO</string>
|
||||
<string name="title_for_parent_classes">CLASSES GENITOR</string>
|
||||
<string name="upload_nearby_place_found_title">Loco a proximitate trovate</string>
|
||||
<string name="upload_nearby_place_found_description">Es isto un photo de %1$s?</string>
|
||||
<string name="title_app_shortcut_bookmark">Marcapaginas</string>
|
||||
<string name="title_app_shortcut_setting">Configurationes</string>
|
||||
<string name="remove_bookmark">Removite del marcapaginas</string>
|
||||
<string name="add_bookmark">Addite al marcapaginas</string>
|
||||
<string name="wallpaper_set_unsuccessfully">Qualcosa ha vadite mal. Non poteva fixar le fundo de schermo</string>
|
||||
<string name="setting_wallpaper_dialog_title">Fixar como fundo de schermo</string>
|
||||
<string name="setting_wallpaper_dialog_message">Installation del fundo de schermo. Un momento…</string>
|
||||
<string name="theme_default_name">Sequer le systema</string>
|
||||
<string name="theme_dark_name">Obscur</string>
|
||||
<string name="theme_light_name">Clar</string>
|
||||
<string name="cannot_open_location_settings">Fallimento de acceder al parametros de localisation. Per favor activa manualmente le localisation</string>
|
||||
<string name="recommend_high_accuracy_mode">Pro le melior resultatos, elige le modo de alte precision.</string>
|
||||
<string name="ask_to_turn_location_on">Activar localisation?</string>
|
||||
<string name="nearby_needs_location">‘Locos a proximitate’ require que le localisation es activate pro functionar correctemente</string>
|
||||
<string name="upload_map_location_access">Tu debe dar accesso a tu localisation actual pro determinar automaticamente tu position.</string>
|
||||
<string name="use_location_from_similar_image">Ha tu prendite iste duo photos al mesme loco? Vole tu usar le latitude/longitude del imagine al dextra?</string>
|
||||
<string name="load_more">Cargar plus</string>
|
||||
<string name="nearby_no_results">Necun loco trovate. Tenta cambiar tu criterios de recerca.</string>
|
||||
<string name="todo_improve">Meliorationes suggerite:</string>
|
||||
<string name="missing_category">- Adde categorias a iste imagine pro meliorar le usabilitate.</string>
|
||||
<string name="missing_article">- Adde iste imagine al articulo de Wikipedia associate que non ha imagines.</string>
|
||||
<string name="add_picture_to_wikipedia_article_title">Adder imagine a Wikipedia</string>
|
||||
<string name="add_picture_to_wikipedia_article_desc">Vole tu adder iste photo al articulo de Wikipedia in %1$s?</string>
|
||||
<string name="confirm">Confirmar</string>
|
||||
<string name="instructions_title">Instructiones</string>
|
||||
<string name="wikipedia_instructions_step_1">1. Usa le sequente wikitexto:</string>
|
||||
<string name="wikipedia_instructions_step_2">2. Cliccar sur Confirmar aperira le articulo de Wikipedia</string>
|
||||
<string name="wikipedia_instructions_step_3">3. Cerca un section appropriate in le articulo pro tu imagine</string>
|
||||
<string name="wikipedia_instructions_step_4">4. Clicca sur le icone Modificar (resimilante un stilo) pro ille section.</string>
|
||||
<string name="wikipedia_instructions_step_5">5. Colla le wikitexto in le loco appropriate.</string>
|
||||
<string name="wikipedia_instructions_step_6">6. Modifica le wikitexto pro un positionamento appropriate, si necessari. Pro plus information, lege <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Manual_of_Style/Images#How_to_place_an_image\">isto</a>.</string>
|
||||
<string name="wikipedia_instructions_step_7">7. Publica le articulo</string>
|
||||
<string name="copy_wikicode_to_clipboard">Copiar le wikicodice al area de transferentia</string>
|
||||
<string name="pause">pausar</string>
|
||||
<string name="resume">reprender</string>
|
||||
<string name="paused">Pausate</string>
|
||||
<string name="more">Plus</string>
|
||||
<string name="bookmarks">Marcapaginas</string>
|
||||
<string name="achievements_tab_title">Realisationes</string>
|
||||
<string name="leaderboard_tab_title">Tabula de classamento</string>
|
||||
<string name="rank_prefix">Rango:</string>
|
||||
<string name="count_prefix">Numero:</string>
|
||||
<string name="leaderboard_column_rank">Rango</string>
|
||||
<string name="leaderboard_column_user">Usator</string>
|
||||
<string name="leaderboard_column_count">Numero</string>
|
||||
<string name="setting_avatar_dialog_title">Fixar como avatar pro le tabula de classamento</string>
|
||||
<string name="setting_avatar_dialog_message">Fixation como avatar in curso, un momento</string>
|
||||
<string name="avatar_set_successfully">Avatar fixate</string>
|
||||
<string name="avatar_set_unsuccessfully">Error durante le fixation del nove avatar, per favor reproba</string>
|
||||
<string name="menu_set_avatar">Eliger como avatar</string>
|
||||
<string name="leaderboard_yearly">Annual</string>
|
||||
<string name="leaderboard_weekly">Septimanal</string>
|
||||
<string name="leaderboard_all_time">Tote le tempore</string>
|
||||
<string name="leaderboard_upload">Incargar</string>
|
||||
<string name="leaderboard_nearby">A proximitate</string>
|
||||
<string name="leaderboard_used">Usate</string>
|
||||
<string name="leaderboard_my_rank_button_text">Mi rango</string>
|
||||
<string name="map_attribution">&#169; <a href=\"https://www.mapbox.com/about/maps/\">Mapbox</a> &#169; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> <a href=\"https://www.mapbox.com/map-feedback/\">Meliorar iste carta</a></string>
|
||||
<string name="limited_connection_enabled">Le modo de connexion limitate ha essite activate!</string>
|
||||
<string name="limited_connection_disabled">Le modo de connexion limitate ha essite disactivate. Le incargamentos attendente se reprendera ora.</string>
|
||||
<string name="limited_connection_mode">Modo de connexion limitate</string>
|
||||
<string name="statistics_quality">Imagines de qualitate</string>
|
||||
<string name="quality_images_info">Le imagines de qualitate es diagrammas o photographias que compli certe standards de qualitate (generalmente de character technic) e que es preciose pro le projectos de Wikimedia.</string>
|
||||
<string name="resuming_upload">Reprende incargamento…</string>
|
||||
<string name="pausing_upload">Pausa incargamento…</string>
|
||||
<string name="cancelling_upload">Cancella incargamento…</string>
|
||||
<string name="cancel_upload">Cancellar incargamento</string>
|
||||
<string name="limited_connection_explanation">Tu ha activate le modo de connexion limitate. Tote le incargamentos es pausate e continuara quando iste modo es disactivate.</string>
|
||||
<string name="limited_connection_is_on">Le modo de connexion limitate es active.</string>
|
||||
<string name="media_details_tooltip">Per favor, scribe un curte legenda que describe lo que tu imagine monstra. In le description, indica lo que rende le imagine interessante, typic o rar, e explica le contexto, visibile o non. Emplea terminos tanto exacte como possibile.</string>
|
||||
<string name="depicts_tooltip">Per favor, trova e selige tote le conceptos que iste imagine representa. Sia tanto specific como possibile. Si le imagine representa plure cosas, selige totes intra limites rationabile. Non selige etiquettas generic si existe etiquettas plus specific.</string>
|
||||
<string name="categories_tooltip">Per favor, selige le categorias appropriate. A differentia del representationes, le categorias es solmente in anglese.</string>
|
||||
<string name="license_tooltip">Commons rende tu imagines reusabile e adaptabile per omnes. Vole tu renunciar a tote derectos? Vole tu esser attribuite? Vole tu que le adaptationes usa le mesme licentia?</string>
|
||||
<string name="depicts_step_title">Representa</string>
|
||||
<string name="license_step_title">Licentia del file multimedial</string>
|
||||
<string name="media_detail_step_title">Detalios sur le file multimedial</string>
|
||||
<string name="menu_view_category_page">Vider pagina de categoria</string>
|
||||
<string name="menu_view_item_page">Visitar le pagina del objecto</string>
|
||||
<string name="app_ui_language">Lingua del interfacie de usator del application</string>
|
||||
<string name="remove">Remove un legenda e un description</string>
|
||||
<string name="read_help_link">Leger plus</string>
|
||||
<string name="media_detail_in_all_languages">In tote le linguas</string>
|
||||
<string name="choose_a_location">Elige un position</string>
|
||||
<string name="pan_and_zoom_to_adjust">Move le panorama e face zoom pro adjustar</string>
|
||||
<string name="select_location_location_picker">Selige position</string>
|
||||
<string name="show_in_map_app">Monstrar in application cartographic</string>
|
||||
<string name="modify_location">Modificar position</string>
|
||||
<string name="location_picker_image_view">Le vista in imagine del selector de loco</string>
|
||||
<string name="location_picker_image_view_shadow">\n Le umbra del vista in imagine del selector de loco</string>
|
||||
<string name="image_location">Localisation del imagine</string>
|
||||
<string name="check_whether_location_is_correct">Verificar si le localisation es correcte</string>
|
||||
<string name="label">Etiquetta</string>
|
||||
<string name="description">Description</string>
|
||||
<string name="title_page_bookmarks_items">Elementos</string>
|
||||
<string name="custom_selector_title">Selector personalisate</string>
|
||||
<string name="custom_selector_empty_text">Necun imagine</string>
|
||||
<string name="done">Facite</string>
|
||||
<string name="back">Retro</string>
|
||||
<string name="welcome_custom_picture_selector_text">Benvenite al selector de imagine personalisate</string>
|
||||
<string name="custom_selector_info_text1">Iste selector te monstra qual imagines tu ha ja incargate a Commons.</string>
|
||||
<string name="custom_selector_info_text2">A differentia del imagine al sinistra, le imagine al dextra ha le logo de Commons que indica que illo ha ja essite incargate.\n Tocca e mantene pro un previsualisation del imagine.</string>
|
||||
<string name="welcome_custom_selector_ok">Genial</string>
|
||||
<string name="custom_selector_already_uploaded_image_text">Iste imagine ha ja essite incargate a Commons.</string>
|
||||
<string name="wlm_upload_info">Iste imagine entrara in le concurso Wiki Loves Monuments.</string>
|
||||
<string name="display_monuments">Monstrar monumentos</string>
|
||||
<string name="wlm_month_message">Es le mense de Wiki Loves Monuments!</string>
|
||||
<string name="learn_more">LEGER PLUS</string>
|
||||
<string name="wlm_campaign_description">Wiki Loves Monuments es un concurso international de photographias de monumentos organisate per Wikimedia</string>
|
||||
<string name="need_permission">Permission necessari</string>
|
||||
<string name="read_phone_state_permission_message">Le cartas a proximitate debe leger le STATO DEL TELEPHONO pro functionar correctemente</string>
|
||||
<string name="contributions_of_user">Contributiones del usator: %s</string>
|
||||
<string name="achievements_of_user">Realisationes del usator: %s</string>
|
||||
<string name="menu_view_user_page">Visitar le pagina del usator</string>
|
||||
<string name="edit_depictions">Modificar representationes</string>
|
||||
<string name="edit_categories">Modificar categorias</string>
|
||||
<string name="advanced_options">Optiones avantiate</string>
|
||||
<string name="advanced_query_info_text">Tu pote personalisar le consulta ‘A proximitate’. In caso de errores, reinitialisa e applica.</string>
|
||||
<string name="apply">Applicar</string>
|
||||
<string name="reset">Reinitialisar</string>
|
||||
<string name="location_message">Le datos de localisation adjuta le redactores wiki a trovar tu imagine, rendente lo multo plus utile.\nTu files recentemente incargate non ha localisation.\nNos suggere que tu activa le localisation un le parametros de tu application de camera.\nGratias pro incargar!</string>
|
||||
<string name="no_location_found_title">Necun localisation trovate</string>
|
||||
<string name="no_location_found_message">Proque non adder le loco ubi iste imagine ha essite prendite?\nLe datos de localisation adjuta le redactores wiki a trovar tu imagine, rendente lo multo plus utile.\nGratias!</string>
|
||||
<string name="add_location">Adder localisation</string>
|
||||
<string name="feedback_sharing_data_alert">Per favor remove de iste e-mail omne information que tu non vole condivider publicamente. In ultra, sia conscie que le adresse de e-mail que tu usa pro publicar, e le nomine e imagine de profilo associate, essera visibile publicamente.</string>
|
||||
<string name="explore_map_details">Detalios</string>
|
||||
<string name="achievements_unavailable_beta">Le realisationes es disponibile solmente in le version de production. Per favor consulta le documentation del disveloppator.</string>
|
||||
<string name="leaderboard_unavailable_beta">Le tabula de classamento es solmente disponibile in le version de production. Per favor consulta le documentation del disveloppator.</string>
|
||||
<string name="copyright_popup">Per favor incarga solmente imagines que tu ha prendite tu mesme. Le incargatores de imagines con derectos de autor essera blocate. Isto se applica equalmente al version beta. Gratias pro testar le application!</string>
|
||||
<string name="select_feedback_data_choice">Per favor dismarca omne information que tu non vole condivider publicamente.</string>
|
||||
<string name="api_level">Nivello del API</string>
|
||||
<string name="android_version">Version Android</string>
|
||||
<string name="device_manufacturer">Fabricante del apparato</string>
|
||||
<string name="device_model">Modello del apparato</string>
|
||||
<string name="device_name">Nomine del apparato</string>
|
||||
<string name="network_type">Typo de rete</string>
|
||||
<string name="thanks_feedback">Gratias pro dar retroaction</string>
|
||||
<string name="error_feedback">Error durante le invio del retroaction</string>
|
||||
<string name="enter_description">Que es tu commentario?</string>
|
||||
<string name="your_feedback">Tu commentario</string>
|
||||
<string name="mark_as_not_for_upload">Marcar como non a incargar</string>
|
||||
<string name="unmark_as_not_for_upload">Dismarcar como non a incargar</string>
|
||||
<string name="marking_as_not_for_upload">Marca como non a incargar</string>
|
||||
<string name="unmarking_as_not_for_upload">Dismarca como non a incargar</string>
|
||||
<string name="show_already_actioned_pictures">Monstrar imagines ja tractate</string>
|
||||
<string name="hiding_already_actioned_pictures">Celar imagines ja tractate</string>
|
||||
<string name="no_more_images_found">Necun altere imagine trovate</string>
|
||||
<string name="this_image_is_already_uploaded">Iste imagine ha ja essite incargate</string>
|
||||
<string name="can_not_select_this_image_for_upload">Non pote seliger iste imagine pro incargamento</string>
|
||||
<string name="image_selected">Imagine seligite</string>
|
||||
<string name="image_marked_as_not_for_upload">Imagine marcate como non a incargar</string>
|
||||
<string name="menu_view_report">Reportar</string>
|
||||
<string name="report_violation">Reportar violation</string>
|
||||
<string name="report_user">Reportar iste usator</string>
|
||||
<string name="report_content">Reportar iste contento</string>
|
||||
<string name="request_user_block">Requestar de blocar iste usator</string>
|
||||
<string name="welcome_to_full_screen_mode_text">Benvenite al modo de selection de plen schermo</string>
|
||||
<string name="full_screen_mode_zoom_info">Usa duo digitos pro facer zoom avante e retro.</string>
|
||||
<string name="full_screen_mode_features_info">Glissa rapidemente e longe pro exequer iste actiones:\n- Sinistra/Dextra: Ir al precedente/sequente\n- In alto: Seliger\n- In basso: Marcar como non a incargar.</string>
|
||||
<string name="set_up_avatar_toast_string">Pro eliger tu avatar pro le tabula de classamento, tocca \"Eliger como avatar\" in le menu a tres punctos de qualcunque imagine.</string>
|
||||
<string name="similar_coordinate_description_auto_set">Le coordinatas non es exacte, ma le persona qui ha incargate iste imagine pensa que illos es satis proxime.</string>
|
||||
<string name="storage_permissions_denied">Permission de immagazinage refusate</string>
|
||||
<string name="unable_to_share_upload_item">Non pote condivider iste objecto</string>
|
||||
<string name="permissions_are_required_for_functionality">Permissiones es necessari pro functionalitate</string>
|
||||
<plurals name="custom_picker_images_selected_title_appendix">
|
||||
<item quantity="one">%d imagine seligite</item>
|
||||
<item quantity="other">%d imagines seligite</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
* Ilham151096
|
||||
* Iwan Novirion
|
||||
* Joseagush
|
||||
* McDutchie
|
||||
* NFarras
|
||||
* Naufal06
|
||||
* Pebaryan
|
||||
|
|
@ -651,7 +652,7 @@
|
|||
<string name="welcome_custom_selector_ok">Bagus</string>
|
||||
<string name="custom_selector_already_uploaded_image_text">Gambar ini sudah diunggah di Commons.</string>
|
||||
<string name="place_state_wlm">WLM</string>
|
||||
<string name="wlm_upload_info">Gambar ini akan dimasukkan ke dalam kontes Wiki Loves Monuents 2021</string>
|
||||
<string name="wlm_upload_info" fuzzy="true">Gambar ini akan dimasukkan ke dalam kontes Wiki Loves Monuments</string>
|
||||
<string name="display_monuments">Tampilkan monumen</string>
|
||||
<string name="wlm_month_message">Ini adalah bulan Wiki Loves Monuments!</string>
|
||||
<string name="learn_more">PELAJARI LEBIH LANJUT</string>
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
<string name="show_captions_description">Deskripto</string>
|
||||
<string name="nearby_row_image">Imajo</string>
|
||||
<string name="nearby_all">Omna</string>
|
||||
<string name="nearby_filter_toggle">Irar adsupre</string>
|
||||
<string name="nearby_filter_search">Serchar vidado</string>
|
||||
<string name="nearby_filter_state">Loko-stando</string>
|
||||
<string name="appwidget_img">Diala imajo</string>
|
||||
|
|
@ -70,10 +71,13 @@
|
|||
<string name="signup">Enirar</string>
|
||||
<string name="logging_in_title">Eniranta</string>
|
||||
<string name="logging_in_message">Voluntez vartar...</string>
|
||||
<string name="updating_caption_title">Aktualiganta etiketi e deskripturi</string>
|
||||
<string name="updating_caption_message">Voluntez vartar...</string>
|
||||
<string name="login_success">Eniro sucesoza!</string>
|
||||
<string name="login_failed">Eniro faliis!</string>
|
||||
<string name="upload_failed">Arkivo ne trovita. Voluntez probar altr arkivo.</string>
|
||||
<string name="unrestricted_battery_mode">Ka desmuntar l\'optimizo di la baterio?</string>
|
||||
<string name="suggest_unrestricted_mode">Sendar plu kam 3 imaji esas plu efikiva kande l\'optimizo di la baterio esas desmuntita. Voluntez desmuntar l\'optimizo di la baterio del ajusti dil utensilo de Commons, por plugrandigar l\'efikeso. \n\nQuale desmuntar l\'optimizo-sistemo di la baterio:\n\n#: Kliktez la butono \"ajusti\" (\'\'Settings\'\') adinfre.\n\n#: Selektez \"ne optimizita (\'\'Not optimized\'\') por omna utensili (\'\'All apps\'\').\n\n#: Serchez \"Commons\" o \"fr.free.nrw.commons\".\n\n#: Kliktez ol e selektez \"ne optimizar\" (\'\'Don\'t optimize\'\').\n\n#: Kliktez \"facita\" (\'\'Done\'\').</string>
|
||||
<string name="authentication_failed">L\'autentikigo faliis, voluntez itere enirar.</string>
|
||||
<string name="uploading_started">Komencis sendar!</string>
|
||||
<string name="uploading_queued">Sendajo ajornata (modulo \"limitizita konekto\" aktiva)</string>
|
||||
|
|
@ -111,6 +115,7 @@
|
|||
<string name="provider_modifications">Modifikuri</string>
|
||||
<string name="menu_upload_single">Kargar</string>
|
||||
<string name="categories_search_text_hint">Serchar kategorii</string>
|
||||
<string name="depicts_search_text_hint">Serchez kozi quin vua \'\'media\'\' montras (monti, \'\'Taj Mahal\'\', edc.)</string>
|
||||
<string name="menu_save_categories">Registragar</string>
|
||||
<string name="refresh_button">Rinovigar</string>
|
||||
<string name="display_list_button">Listar</string>
|
||||
|
|
|
|||
|
|
@ -698,7 +698,7 @@
|
|||
<string name="title_page_bookmarks_items">פריטים</string>
|
||||
<string name="custom_selector_title">בורר מותאם אישית</string>
|
||||
<string name="custom_selector_empty_text">אין תמונות</string>
|
||||
<string name="done">בוצע</string>
|
||||
<string name="done">סיום</string>
|
||||
<string name="back">חזרה</string>
|
||||
<string name="welcome_custom_picture_selector_text">ברוך בואך לבוחר התמונות המותאמות</string>
|
||||
<string name="custom_selector_info_text1">הבורר מציג לך אילו תמונות כבר העלית לוויקישיתוף.</string>
|
||||
|
|
@ -706,7 +706,7 @@
|
|||
<string name="welcome_custom_selector_ok">מגניב</string>
|
||||
<string name="custom_selector_already_uploaded_image_text">התמונה הזאת כבר הועלתה לוויקישיתוף.</string>
|
||||
<string name="place_state_wlm">ויקיפדיה אוהבת אתרי מורשת</string>
|
||||
<string name="wlm_upload_info">התמונה הזאת תוכנס לתחרות ויקי אוהבת אתרי מורשת 2021</string>
|
||||
<string name="wlm_upload_info">התמונה הזאת תוכנס לתחרות ויקי אוהבת אתרי מורשת</string>
|
||||
<string name="display_monuments">הצגת אתרי מורשת</string>
|
||||
<string name="wlm_month_message">זהו חודש ויקי אוהבת אתרי מורשת!</string>
|
||||
<string name="learn_more">מידע נוסף</string>
|
||||
|
|
@ -766,6 +766,7 @@
|
|||
<string name="similar_coordinate_description_auto_set">נקודות הציון אינן מדויקות, אבל האדם שהעלה את התמונה הזאת חושב שהן קרובות מספיק.</string>
|
||||
<string name="storage_permissions_denied">הרשאת האחסון נדחתה</string>
|
||||
<string name="unable_to_share_upload_item">לא ניתן לשתף את הפריט הזה</string>
|
||||
<string name="permissions_are_required_for_functionality">צריך הרשאות כדי להשתמש בזה</string>
|
||||
<plurals name="custom_picker_images_selected_title_appendix">
|
||||
<item quantity="one">נבחרה תמונה אחת</item>
|
||||
<item quantity="two">נבחרו שתי תמונות</item>
|
||||
|
|
|
|||
|
|
@ -515,6 +515,9 @@
|
|||
<item quantity="other">題材 %1$s が追加されました。</item>
|
||||
</plurals>
|
||||
<string name="depictions_edit_helper_edit_message_else">題材を追加できませんでした。</string>
|
||||
<string name="coordinates_edit_helper_show_edit_title_success">成功</string>
|
||||
<string name="coordinates_edit_helper_show_edit_message">座標%1$sは追加されました。</string>
|
||||
<string name="description_edit_helper_show_edit_message">説明が追加されました。</string>
|
||||
<string name="share_image_via">画像をシェア</string>
|
||||
<string name="no_achievements_yet">%sはまだ投稿をしたことがありません</string>
|
||||
<string name="account_created">アカウントを作成しました</string>
|
||||
|
|
@ -628,6 +631,7 @@
|
|||
<string name="api_level">APIレベル</string>
|
||||
<string name="android_version">アンドロイドのバージョン</string>
|
||||
<string name="device_manufacturer">デバイスの製造元</string>
|
||||
<string name="device_model">デバイスモデル</string>
|
||||
<string name="device_name">デバイス名</string>
|
||||
<string name="network_type">ネットワークの種類</string>
|
||||
<string name="thanks_feedback">フィードバックをありがとうございました</string>
|
||||
|
|
@ -644,4 +648,8 @@
|
|||
<string name="report_user">この利用者を報告</string>
|
||||
<string name="report_content">このコンテンツを報告する</string>
|
||||
<string name="set_up_avatar_toast_string">リーダーボードのアバターを設定するには、任意の画像の 3 つのドット メニューで [アバターとして設定] をタップします。</string>
|
||||
<string name="permissions_are_required_for_functionality">この機能には権限が必要です</string>
|
||||
<plurals name="custom_picker_images_selected_title_appendix">
|
||||
<item quantity="other">%d件の画像が選択されました</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -342,6 +342,7 @@
|
|||
<string name="wrong">오답</string>
|
||||
<string name="quiz_screenshot_question">이 스크린샷을 올리시겠습니까?</string>
|
||||
<string name="share_app_title">앱 공유</string>
|
||||
<string name="rotate">회전</string>
|
||||
<string name="error_fetching_nearby_places">주변 장소를 가져오는데 오류가 있습니다.</string>
|
||||
<string name="no_nearby_places_around">근처에 장소가 없습니다</string>
|
||||
<string name="no_recent_searches">최근 검색 없음</string>
|
||||
|
|
|
|||
|
|
@ -269,6 +269,7 @@
|
|||
<string name="continue_message">Virufueren</string>
|
||||
<string name="correct">Richteg Äntwert</string>
|
||||
<string name="wrong">Falsch Äntwert</string>
|
||||
<string name="rotate">Dréinen</string>
|
||||
<string name="nominate_delete">Nominéiere fir ze Läschen</string>
|
||||
<string name="delete">Läschen</string>
|
||||
<string name="Achievements">Realisatiounen</string>
|
||||
|
|
@ -279,6 +280,7 @@
|
|||
<string name="level">Niveau</string>
|
||||
<string name="images_uploaded">Eropgeluede Biller</string>
|
||||
<string name="image_reverts">Biller net zréckgesat</string>
|
||||
<string name="images_used_by_wiki">Benotzte Biller</string>
|
||||
<string name="error_occurred">Feeler opgetrueden!</string>
|
||||
<string name="notifications_channel_name_all">Notifikatioun vu Commons</string>
|
||||
<string name="contributions_fragment">Kontributiounen</string>
|
||||
|
|
@ -310,6 +312,9 @@
|
|||
<string name="option_allow">Erlaben</string>
|
||||
<string name="option_dismiss">Verwerfen</string>
|
||||
<string name="nominate_for_deletion_done">Fäerdeg</string>
|
||||
<string name="send_thank_success_title">Merci schécken: Erfollegräich</string>
|
||||
<string name="send_thank_failure_title">Merci schécken: Feeler</string>
|
||||
<string name="send_thank_toast">Merci fir %1$s schécken</string>
|
||||
<string name="review_copyright">Entsprécht dat de Copyright-Reegelen?</string>
|
||||
<string name="review_category">Ass dëst richteg kategoriséiert?</string>
|
||||
<string name="review_spam_explanation">Klickt op NEEN fir dëst Bild fir d\'Läsche virzeschloen, falls et guer net nëtzlech ass.</string>
|
||||
|
|
@ -334,6 +339,7 @@
|
|||
<string name="exif_tag_name_author">Auteur</string>
|
||||
<string name="exif_tag_name_copyright">Copyright</string>
|
||||
<string name="exif_tag_name_location">Plaz</string>
|
||||
<string name="exif_tag_name_cameraModel">Kamera-Modell</string>
|
||||
<string name="exif_tag_name_serialNumbers">Seriennummeren</string>
|
||||
<string name="exif_tag_name_software">Software</string>
|
||||
<string name="share_text">Luet Fotoen direkt vun Ärem Handy op Wikimedia Commons erop. Luet d\'Commons-App elo erof: %1$s</string>
|
||||
|
|
@ -455,4 +461,9 @@
|
|||
<string name="error_feedback">Feeler beim Schécke vum Feedback</string>
|
||||
<string name="enter_description">Wéi ass Äre Feedback?</string>
|
||||
<string name="your_feedback">Äre Feedback</string>
|
||||
<string name="menu_view_report">Mellen</string>
|
||||
<string name="report_violation">Verstouss mellen</string>
|
||||
<string name="report_user">Dëse Benotzer mellen</string>
|
||||
<string name="report_content">Dësen Inhalt mellen</string>
|
||||
<string name="request_user_block">Ufroe fir dëse Benotzer ze spären</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -672,7 +672,7 @@
|
|||
<string name="welcome_custom_selector_ok">Одлично</string>
|
||||
<string name="custom_selector_already_uploaded_image_text">Оваа слика е веќе подигната на Ризницата.</string>
|
||||
<string name="place_state_wlm">WLM</string>
|
||||
<string name="wlm_upload_info">Оваа слика ќе учествува во натпреварот „Вики ги сака спомениците 2021“</string>
|
||||
<string name="wlm_upload_info">Оваа слика ќе учествува во натпреварот „Вики ги сака спомениците“</string>
|
||||
<string name="display_monuments">Прикажи споменици</string>
|
||||
<string name="wlm_month_message">Ова е месец на „Вики ги сака спомениците“!</string>
|
||||
<string name="learn_more">ДОЗНАЈТЕ ПОВЕЌЕ</string>
|
||||
|
|
@ -732,6 +732,7 @@
|
|||
<string name="similar_coordinate_description_auto_set">Наведените координати не се прецизни, но лицето што ја подигнало сликава смета дека се доволно блиску.</string>
|
||||
<string name="storage_permissions_denied">Дозволата за складирање е одбиена</string>
|
||||
<string name="unable_to_share_upload_item">Не може да се сподели оваа ставка</string>
|
||||
<string name="permissions_are_required_for_functionality">Се бараат дозволи за функцијата</string>
|
||||
<plurals name="custom_picker_images_selected_title_appendix">
|
||||
<item quantity="one">Избрана е %d слика</item>
|
||||
<item quantity="other">Избрани се %d слики</item>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
<!-- Authors:
|
||||
* A67-A67
|
||||
* Bouman4
|
||||
* Ciell
|
||||
* Dutchy45
|
||||
* Elroy
|
||||
* Festina90
|
||||
|
|
@ -32,12 +33,12 @@
|
|||
<string name="submit">Verzenden</string>
|
||||
<string name="add_another_description">Nog een beschrijving toevoegen</string>
|
||||
<string name="add_new_contribution">Nieuwe bijdrage toevoegen</string>
|
||||
<string name="add_contribution_from_camera">Bijdrage van de camera toevoegen</string>
|
||||
<string name="add_contribution_from_photos">Bijdrage uit Foto\'s toevoegen</string>
|
||||
<string name="add_contribution_from_contributions_gallery">Bijdrage uit galerij met eerdere bijdragen toevoegen</string>
|
||||
<string name="add_contribution_from_camera">Bestand vanaf camera delen</string>
|
||||
<string name="add_contribution_from_photos">Bestand uit foto\'s delen</string>
|
||||
<string name="add_contribution_from_contributions_gallery">Bestand uit galerij met eerdere bijdragen toevoegen</string>
|
||||
<string name="show_captions">Bijschriften</string>
|
||||
<string name="row_item_language_description">Taalbeschrijving</string>
|
||||
<string name="row_item_caption">Bijschrift</string>
|
||||
<string name="row_item_caption">Titel</string>
|
||||
<string name="show_captions_description">Beschrijving</string>
|
||||
<string name="nearby_row_image">Afbeelding</string>
|
||||
<string name="nearby_all">Alle</string>
|
||||
|
|
@ -86,7 +87,7 @@
|
|||
<string name="upload_in_progress">Aan het uploaden</string>
|
||||
<string name="username">Gebruikersnaam</string>
|
||||
<string name="password">Wachtwoord</string>
|
||||
<string name="login_credential">Aanmelden bij uw Commons Beta-account</string>
|
||||
<string name="login_credential">Aanmelden met uw Commons Beta-account</string>
|
||||
<string name="login">Aanmelden</string>
|
||||
<string name="forgot_password">Wachtwoord vergeten?</string>
|
||||
<string name="signup">Inschrijven</string>
|
||||
|
|
@ -415,7 +416,7 @@
|
|||
<string name="provider_bookmarks">Bladwijzers</string>
|
||||
<string name="bookmark_empty">U hebt geen bladwijzers toegevoegd</string>
|
||||
<string name="provider_bookmarks_location">Bladwijzers</string>
|
||||
<string name="log_collection_started">Logboekverzameling is gestart. Start de app opnieuw op, voer de actie uit die u wilt loggen en tik vervolgens nogmaals op \'Logboekbestand verzenden\'</string>
|
||||
<string name="log_collection_started">Logboekverzameling is gestart. Start de app opnieuw op, verricht de handeling die u wilt loggen en tik dan nogmaals op ‘Logboekbestand verzenden’</string>
|
||||
<string name="deletion_reason_uploaded_by_mistake">Ik heb het per ongeluk geüpload</string>
|
||||
<string name="deletion_reason_publicly_visible">Ik wist niet dat het publiekelijk zichtbaar zou zijn</string>
|
||||
<string name="deletion_reason_bad_for_my_privacy">Ik realiseerde me dat het slecht is voor mijn privacy.</string>
|
||||
|
|
@ -543,8 +544,8 @@
|
|||
<string name="category_edit_helper_show_edit_title">Categorie-update</string>
|
||||
<string name="category_edit_helper_show_edit_title_success">Afgerond</string>
|
||||
<plurals name="category_edit_helper_show_edit_message_if">
|
||||
<item quantity="one">Categorie %1$s is toegevoegd.</item>
|
||||
<item quantity="other">Categorieën %1$s zijn toegevoegd.</item>
|
||||
<item quantity="one">Categorie %1$s wordt toegevoegd.</item>
|
||||
<item quantity="other">Categorieën %1$s worden toegevoegd.</item>
|
||||
</plurals>
|
||||
<string name="category_edit_helper_edit_message_else">Kan geen categorieën toevoegen.</string>
|
||||
<string name="category_edit_button_text">Categorieën bijwerken</string>
|
||||
|
|
@ -560,9 +561,9 @@
|
|||
<string name="description_edit_helper_show_edit_title">Bijwerking beschrijving</string>
|
||||
<string name="caption_edit_helper_show_edit_title">Bijwerking bijschrift</string>
|
||||
<string name="coordinates_edit_helper_show_edit_title_success">Afgerond</string>
|
||||
<string name="coordinates_edit_helper_show_edit_message">Coördinaten %1$s zijn toegevoegd.</string>
|
||||
<string name="description_edit_helper_show_edit_message">Beschrijvingen zijn toegevoegd.</string>
|
||||
<string name="caption_edit_helper_show_edit_message">Bijschrift is toegevoegd.</string>
|
||||
<string name="coordinates_edit_helper_show_edit_message">Coördinaten %1$s worden toegevoegd.</string>
|
||||
<string name="description_edit_helper_show_edit_message">Beschrijvingen worden toegevoegd.</string>
|
||||
<string name="caption_edit_helper_show_edit_message">Bijschrift wordt toegevoegd.</string>
|
||||
<string name="coordinates_edit_helper_edit_message_else">Kan geen coördinaten toevoegen.</string>
|
||||
<string name="description_edit_helper_edit_message_else">Kon beschrijvingen niet toevoegen.</string>
|
||||
<string name="caption_edit_helper_edit_message_else">Kon bijschrift niet toevoegen.</string>
|
||||
|
|
@ -594,7 +595,7 @@
|
|||
<string name="wallpaper_set_unsuccessfully">Er is iets fout gegaan. Kan de achtergrond niet instellen</string>
|
||||
<string name="setting_wallpaper_dialog_title">Instellen als achtergrond</string>
|
||||
<string name="setting_wallpaper_dialog_message">Wordt ingesteld als achtergrond. Een ogenblik geduld...</string>
|
||||
<string name="theme_default_name">Volgsysteem</string>
|
||||
<string name="theme_default_name">Systeem volgen</string>
|
||||
<string name="theme_dark_name">Donker</string>
|
||||
<string name="theme_light_name">Licht</string>
|
||||
<string name="cannot_open_location_settings">Kan locatie-instellingen niet openen. Schakel locatie handmatig in</string>
|
||||
|
|
@ -751,6 +752,7 @@
|
|||
<string name="similar_coordinate_description_auto_set">De coördinaten zijn niet precies, maar degene die deze foto heeft geüpload vindt dat ze redelijk in de buurt komen.</string>
|
||||
<string name="storage_permissions_denied">Opslagtoestemming geweigerd</string>
|
||||
<string name="unable_to_share_upload_item">Kan dit item niet delen</string>
|
||||
<string name="permissions_are_required_for_functionality">Voor functionaliteit zijn toestemmingen vereist</string>
|
||||
<plurals name="custom_picker_images_selected_title_appendix">
|
||||
<item quantity="one">%d afbeelding geselecteerd</item>
|
||||
<item quantity="other">%d afbeeldingen geselecteerd</item>
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
* InternerowyGołąb
|
||||
* Kareyac
|
||||
* Krottyianock
|
||||
* Matlin
|
||||
* Matma Rex
|
||||
* Mazab IZW
|
||||
* Olaf
|
||||
|
|
@ -97,6 +98,7 @@
|
|||
<string name="bullet">•</string>
|
||||
<string name="menu_settings">Ustawienia</string>
|
||||
<string name="intent_share_upload_label">Prześlij do Commons</string>
|
||||
<string name="upload_in_progress">Przesyłanie w toku</string>
|
||||
<string name="username">Nazwa użytkownika</string>
|
||||
<string name="password">Hasło</string>
|
||||
<string name="login_credential">Zaloguj się na konto Commons Beta</string>
|
||||
|
|
@ -110,6 +112,8 @@
|
|||
<string name="login_success">Zalogowano pomyślnie!</string>
|
||||
<string name="login_failed">Logowanie nie powiodło się!</string>
|
||||
<string name="upload_failed">Nie znaleziono pliku. Spróbuj znaleźć inny.</string>
|
||||
<string name="retry_limit_reached">Osiągnięto maksymalny limit ponownych prób! Anuluj przesyłanie i spróbuj ponownie</string>
|
||||
<string name="unrestricted_battery_mode">Wyłączyć optymalizację baterii?</string>
|
||||
<string name="authentication_failed">Uwierzytelnianie nie powiodło się, zaloguj się ponownie</string>
|
||||
<string name="uploading_started">Wysyłanie rozpoczęte!</string>
|
||||
<string name="uploading_queued">Prześlij w kolejce (włączony tryb ograniczonego połączenia)</string>
|
||||
|
|
@ -224,6 +228,8 @@
|
|||
<string name="read_storage_permission_rationale">Wymagane uprawnienia: odczyt z dysku zewnętrznego. Bez tego aplikacja nie będzie w stanie uzyskać dostępu do twojej galerii.</string>
|
||||
<string name="write_storage_permission_rationale">Wymagane uprawnienia: odczyt z dysku zewnętrznego. Bez tego aplikacja nie będzie w stanie uzyskać dostępu do aparatu/galerii.</string>
|
||||
<string name="location_permission_title">Prośba o dostęp do lokalizacji</string>
|
||||
<string name="in_app_camera_location_permission_title">Zapisz lokalizację zdjęć w aplikacji</string>
|
||||
<string name="in_app_camera_location_switch_pref_summary">Włącz tę opcję, aby rejestrować lokalizację za pomocą zdjęć w aplikacji, na wypadek gdyby kamera urządzenia jej nie zarejestrowała</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="warning">Ostrzeżenie</string>
|
||||
<string name="duplicate_file_name">Znaleziono zduplikowaną nazwę pliku</string>
|
||||
|
|
@ -302,6 +308,7 @@
|
|||
<string name="copy_wikicode">Skopiuj wikitext do schowka</string>
|
||||
<string name="wikicode_copied">Wikitext został skopiowany do schowka</string>
|
||||
<string name="nearby_location_not_available">W pobliżu może nie działać poprawnie, Lokalizacja jest niedostępna.</string>
|
||||
<string name="upload_location_access_denied">Odmowa dostępu do lokalizacji. Aby skorzystać z tej funkcji, ustaw swoją lokalizację ręcznie.</string>
|
||||
<string name="location_permission_rationale_nearby">Uprawnienie wymagane do wyświetlania listy pobliskich miejsc</string>
|
||||
<string name="nearby_directions">Wskazówki</string>
|
||||
<string name="nearby_wikidata">Wikidane</string>
|
||||
|
|
@ -369,6 +376,7 @@
|
|||
<string name="wrong">Zła odpowiedź</string>
|
||||
<string name="quiz_screenshot_question">Czy ten zrzut ekranu nadaje się do przesłania?</string>
|
||||
<string name="share_app_title">Udostępnij aplikację</string>
|
||||
<string name="rotate">Obrót</string>
|
||||
<string name="error_fetching_nearby_places">Błąd podczas pobierania pobliskich miejsc.</string>
|
||||
<string name="no_nearby_places_around">Brak miejsc w pobliżu</string>
|
||||
<string name="error_fetching_nearby_monuments">Błąd pobierania pobliskich zabytków.</string>
|
||||
|
|
@ -449,6 +457,8 @@
|
|||
<string name="ends_on">Kończy się na:</string>
|
||||
<string name="display_campaigns">Wyświetl kampanie</string>
|
||||
<string name="display_campaigns_explanation">Zobacz trwające kampanie</string>
|
||||
<string name="option_allow">Zezwól</string>
|
||||
<string name="option_dismiss">Odrzuć</string>
|
||||
<string name="location_loss_warning" fuzzy="true">Upewnij się, że ten nowy selektor Androida nie usuwa lokalizacji ze zdjęć.</string>
|
||||
<string name="nearby_campaign_dismiss_message">Kampanie już nie będą widoczne. Jednak w razie potrzeby możesz ponownie włączyć to powiadomienie w ustawieniach.</string>
|
||||
<string name="this_function_needs_network_connection">Ta funkcja wymaga połączenia sieciowego, sprawdź ustawienia połączenia.</string>
|
||||
|
|
@ -534,6 +544,7 @@
|
|||
<string name="delete_helper_ask_reason_copyright_press_photo">Zdjęcie prasowe</string>
|
||||
<string name="delete_helper_ask_reason_copyright_internet_photo">Losowe zdjęcie z internetu</string>
|
||||
<string name="delete_helper_ask_reason_copyright_logo">Logo</string>
|
||||
<string name="delete_helper_ask_reason_copyright_no_freedom_of_panorama">Naruszenie wolności panoramy</string>
|
||||
<string name="delete_helper_ask_alert_set_positive_button_reason">Ponieważ jest to</string>
|
||||
<string name="category_edit_helper_make_edit_toast">Próba aktualizacji kategorii.</string>
|
||||
<string name="category_edit_helper_show_edit_title">Aktualizacja kategorii</string>
|
||||
|
|
@ -601,6 +612,7 @@
|
|||
<string name="recommend_high_accuracy_mode">Aby uzyskać najlepsze wyniki, wybierz tryb wysokiej dokładności.</string>
|
||||
<string name="ask_to_turn_location_on">Włączyć lokalizację?</string>
|
||||
<string name="nearby_needs_location">Lokalizacja W pobliżu wymaga włączonej lokalizacji, aby działać poprawnie</string>
|
||||
<string name="upload_map_location_access">Aby ustawić lokalizację automatycznie, musisz przyznać dostęp do swojej bieżącej lokalizacji.</string>
|
||||
<string name="use_location_from_similar_image">Czy zrobiłeś te dwa zdjęcia w tym samym miejscu? Czy chcesz użyć szerokości/długości geograficznej obrazu po prawej stronie?</string>
|
||||
<string name="load_more">Wczytaj więcej</string>
|
||||
<string name="nearby_no_results">Nie znaleziono miejsc, spróbuj zmienić kryteria wyszukiwania.</string>
|
||||
|
|
@ -727,6 +739,8 @@
|
|||
<string name="your_feedback">Twoja opinia</string>
|
||||
<string name="mark_as_not_for_upload">Oznacz jako nieprzeznaczone do przesłania</string>
|
||||
<string name="unmark_as_not_for_upload">Odznacz jako nie do przesłania</string>
|
||||
<string name="marking_as_not_for_upload">Oznacz jako nieprzeznaczone do przesłania</string>
|
||||
<string name="unmarking_as_not_for_upload">Oznacz jako nieprzeznaczone do przesłania</string>
|
||||
<string name="show_already_actioned_pictures">Pokaż już wykonane zdjęcia</string>
|
||||
<string name="hiding_already_actioned_pictures">Ukrywanie już wykonanych zdjęć</string>
|
||||
<string name="no_more_images_found">Nie znaleziono więcej obrazów</string>
|
||||
|
|
@ -744,4 +758,5 @@
|
|||
<string name="full_screen_mode_features_info">Przesuń szybko i długo, aby wykonać następujące czynności: \n- Lewo/Prawo: Przejdź do poprzedniego/następnego \n- Góra: Wybierz\n- Dół: Oznacz jako nieprzeznaczone do przesłania.</string>
|
||||
<string name="set_up_avatar_toast_string">Aby skonfigurować swojego awatara rankingu, dotknij \'Ustaw jako awatar\' w menu z trzema kropkami dowolnego obrazu.</string>
|
||||
<string name="similar_coordinate_description_auto_set">Współrzędne nie są dokładnymi współrzędnymi, ale osoba, która przesłała to zdjęcie, uważa, że są wystarczająco blisko.</string>
|
||||
<string name="unable_to_share_upload_item">Nie można udostępnić tego elementu</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
<!-- Authors:
|
||||
* Ajeje Brazorf
|
||||
* Amire80
|
||||
* Googology
|
||||
* LeGuyanaisPure
|
||||
* Liuxinyu970226
|
||||
* Madhurgupta10
|
||||
|
|
@ -176,6 +177,7 @@
|
|||
<string name="exif_tag_name_author">{{Identical|Author}}</string>
|
||||
<string name="exif_tag_name_location">{{Identical|Location}}</string>
|
||||
<string name="title_app_shortcut_bookmark">{{identical|Bookmark}}</string>
|
||||
<string name="theme_default_name">Option to make the app\'s theme follow the global system setting.</string>
|
||||
<string name="more">{{Identical|More}}</string>
|
||||
<string name="map_attribution"><code>&amp;#169;</code> is the copyright symbol (©).</string>
|
||||
<string name="location_picker_image_view_shadow">A description of a visual element, location picker image shadow. Used for accesibility usually.</string>
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
* Kaganer
|
||||
* Kareyac
|
||||
* MaxBioHazard
|
||||
* McDutchie
|
||||
* Megakott
|
||||
* Monirec
|
||||
* Movses
|
||||
|
|
@ -723,7 +724,7 @@
|
|||
<string name="custom_selector_info_text2">В отличие от изображения слева, изображение справа имеет логотип Commons, указывающий, что оно уже загружено.\n Нажмите и удерживайте для предварительного просмотра изображения.</string>
|
||||
<string name="welcome_custom_selector_ok">Потрясающе</string>
|
||||
<string name="custom_selector_already_uploaded_image_text">Это изображение уже было загружено на Викисклад.</string>
|
||||
<string name="wlm_upload_info">Это изображение будет участвовать в конкурсе «Вики любит памятники — 2021».</string>
|
||||
<string name="wlm_upload_info">Это изображение будет участвовать в конкурсе «Вики любит памятники».</string>
|
||||
<string name="display_monuments">Показать памятники</string>
|
||||
<string name="wlm_month_message">Это месяц «Вики любит памятники»!</string>
|
||||
<string name="learn_more">УЗНАТЬ ПОДРОБНЕЕ</string>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
* AtonX
|
||||
* Kusavica
|
||||
* Luky001
|
||||
* McDutchie
|
||||
* Patriccck
|
||||
* Patrik L.
|
||||
* Sudo77(new)
|
||||
|
|
@ -671,7 +672,7 @@
|
|||
<string name="custom_selector_info_text2">Na rozdiel od obrázka v ľavo, obrázkov v pravo má logo Commons, ktoré indikuje, že už je nahraný. Podržte kurzor nad obrázkom pre náhľad.</string>
|
||||
<string name="welcome_custom_selector_ok">Úžasné</string>
|
||||
<string name="custom_selector_already_uploaded_image_text">Tento obrázok už bol do Commons nahraný.</string>
|
||||
<string name="wlm_upload_info">Tento obrázok bude zaradený do súťaže Wiki miluje monumenty 2021</string>
|
||||
<string name="wlm_upload_info" fuzzy="true">Tento obrázok bude zaradený do súťaže Wiki miluje monumenty</string>
|
||||
<string name="display_monuments">Zobraziť monumenty</string>
|
||||
<string name="wlm_month_message">Je mesiac Wiki miluje monumenty!</string>
|
||||
<string name="learn_more">ZISTIŤ VIAC</string>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
<!-- Authors:
|
||||
* Eleassar
|
||||
* HairyFotr
|
||||
* McDutchie
|
||||
* Upwinxp
|
||||
-->
|
||||
<resources>
|
||||
|
|
@ -689,7 +690,7 @@
|
|||
<string name="welcome_custom_selector_ok">Odlično</string>
|
||||
<string name="custom_selector_already_uploaded_image_text">Ta slika je že naložena v Zbirko.</string>
|
||||
<string name="place_state_wlm">WLM</string>
|
||||
<string name="wlm_upload_info">Ta slika bo vključena v natečaj Viki obožuje spomenike 2021</string>
|
||||
<string name="wlm_upload_info" fuzzy="true">Ta slika bo vključena v natečaj Viki obožuje spomenike</string>
|
||||
<string name="display_monuments">Prikaži spomenike</string>
|
||||
<string name="wlm_month_message">Odprt je natečaj Viki obožuje spomenike!</string>
|
||||
<string name="learn_more">VEČ O TEM</string>
|
||||
|
|
|
|||
|
|
@ -580,7 +580,7 @@
|
|||
<string name="confirm">Потврди</string>
|
||||
<string name="instructions_title">Упутства</string>
|
||||
<string name="wikipedia_instructions_step_1">1. Користите следећи викитекст:</string>
|
||||
<string name="wikipedia_instructions_step_2">2. Додиривањем \"Потвдрди\", биће отворен чланак на Википедији</string>
|
||||
<string name="wikipedia_instructions_step_2">2. Кликом на потврди, биће отворен чланак на Википедији</string>
|
||||
<string name="wikipedia_instructions_step_3">3. Пронађите одговарајући одељак у чланку за вашу слику</string>
|
||||
<string name="wikipedia_instructions_step_4">4. Тапните на иконицу Уреди (који личи на оловку) за тај одељак.</string>
|
||||
<string name="wikipedia_instructions_step_5">5. Налепите викитекст на одговарајуће место.</string>
|
||||
|
|
@ -707,6 +707,7 @@
|
|||
<string name="similar_coordinate_description_auto_set">Координате су приближне, особа која је отпремила ову слику мисли да су довољно близу.</string>
|
||||
<string name="storage_permissions_denied">Одбијене дозволе за складиште</string>
|
||||
<string name="unable_to_share_upload_item">Није могуће поделити ову ставку</string>
|
||||
<string name="permissions_are_required_for_functionality">Потребна је дозвола за функционалност</string>
|
||||
<plurals name="custom_picker_images_selected_title_appendix">
|
||||
<item quantity="one">%d слика је одабрана</item>
|
||||
<item quantity="other">%d слика је одабрано</item>
|
||||
|
|
|
|||
|
|
@ -735,6 +735,7 @@
|
|||
<string name="similar_coordinate_description_auto_set">Koordinaterna är inte de exakta koordinaterna, men personen som laddade upp denna bild tycker att de är tillräckligt nära.</string>
|
||||
<string name="storage_permissions_denied">Lagringsbehörigheter nekades</string>
|
||||
<string name="unable_to_share_upload_item">Kunde inte dela detta objekt</string>
|
||||
<string name="permissions_are_required_for_functionality">Behörigheter krävs för funktionalitet</string>
|
||||
<plurals name="custom_picker_images_selected_title_appendix">
|
||||
<item quantity="one">%d markerad bild</item>
|
||||
<item quantity="other">%d markerade bilder</item>
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
* JackUKElliott
|
||||
* Joseph
|
||||
* McAang
|
||||
* McDutchie
|
||||
* Mirzali
|
||||
* MrSchipunov
|
||||
* MuratTheTurkish
|
||||
|
|
@ -690,7 +691,7 @@
|
|||
<string name="custom_selector_info_text2">Soldaki resimden farklı olarak, sağdaki resimde zaten yüklendiğini belirten Commons logosu var.\n Resim ön izlemesi için dokunup basılı tutun.</string>
|
||||
<string name="welcome_custom_selector_ok">Harika</string>
|
||||
<string name="custom_selector_already_uploaded_image_text">Bu resim zaten Commons\'a yüklendi.</string>
|
||||
<string name="wlm_upload_info">Bu resim Viki, Anıtları Seviyor 2021 yarışmasına katılacaktır</string>
|
||||
<string name="wlm_upload_info" fuzzy="true">Bu resim Viki, Anıtları Seviyor yarışmasına katılacaktır</string>
|
||||
<string name="display_monuments">Anıtları göster</string>
|
||||
<string name="wlm_month_message">Viki, Anıtları Seviyor ayı!</string>
|
||||
<string name="learn_more">DAHA FAZLA BİLGİ EDİN</string>
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
* LNDDYL
|
||||
* Liuxinyu970226
|
||||
* Madhurgupta10
|
||||
* McDutchie
|
||||
* Reke
|
||||
* S099001
|
||||
* Simon Shek
|
||||
|
|
@ -692,7 +693,7 @@
|
|||
<string name="welcome_custom_selector_ok">棒極了</string>
|
||||
<string name="custom_selector_already_uploaded_image_text">此圖片已上傳到維基共享資源。</string>
|
||||
<string name="place_state_wlm">維基愛古蹟</string>
|
||||
<string name="wlm_upload_info">此圖片會進入2021年維基愛古蹟競賽</string>
|
||||
<string name="wlm_upload_info">此圖片會加入到維基愛古蹟競賽</string>
|
||||
<string name="display_monuments">顯示古蹟景點</string>
|
||||
<string name="wlm_month_message">本月有「維基愛古蹟」活動!</string>
|
||||
<string name="learn_more">了解更多</string>
|
||||
|
|
@ -752,6 +753,7 @@
|
|||
<string name="similar_coordinate_description_auto_set">座標雖不準確,但上傳這張圖片的人認為已經足夠接近了。</string>
|
||||
<string name="storage_permissions_denied">儲存裝置權限被拒絕</string>
|
||||
<string name="unable_to_share_upload_item">無法分享此項目</string>
|
||||
<string name="permissions_are_required_for_functionality">功能需要權限</string>
|
||||
<plurals name="custom_picker_images_selected_title_appendix">
|
||||
<item quantity="one">已選 %d 張圖片</item>
|
||||
<item quantity="other">已選 %d 張圖片</item>
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
* LittlePaw365
|
||||
* Liuxinyu970226
|
||||
* Looong
|
||||
* McDutchie
|
||||
* NACHOgao3
|
||||
* Qiyue2001
|
||||
* Shizhao
|
||||
|
|
@ -712,7 +713,7 @@
|
|||
<string name="custom_selector_info_text2">右边的图片与左边的不同,它具有已上传至维基共享资源的标志。\n点击并长按来预览图像。</string>
|
||||
<string name="welcome_custom_selector_ok">棒极了</string>
|
||||
<string name="custom_selector_already_uploaded_image_text">此图像已上传至维基共享资源。</string>
|
||||
<string name="wlm_upload_info">此图像将会进入2021年维基爱古迹竞赛</string>
|
||||
<string name="wlm_upload_info">此图像将会进入维基爱古迹竞赛</string>
|
||||
<string name="display_monuments">显示古迹</string>
|
||||
<string name="wlm_month_message">维基爱古迹的月份!</string>
|
||||
<string name="learn_more">了解更多</string>
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@
|
|||
<string name="become_a_tester_title">Become a Beta Tester</string>
|
||||
<string name="become_a_tester_description">Opt-in to our beta channel on Google Play and get early access to new features and bug fixes</string>
|
||||
<string name="beta_opt_in_link">https://play.google.com/apps/testing/fr.free.nrw.commons</string>
|
||||
<string name="mapbox_commons_app_token">pk.eyJ1Ijoibmljb2xhcy1yYW91bCIsImEiOiJjbG53d3k0cnAwY2p4MnRteGs1dnNuZnY2In0.sg6FsrlIFZfvHc4Uyf3b4w</string>
|
||||
<string name="mapbox_commons_app_token">pk.eyJ1Ijoibmljb2xhcy1yYW91bCIsImEiOiJjbG93YnU5ZTEwM3pqMmttbzIxNGVvOGgxIn0.T1o536AcyVpl5Q7eypJEAg</string>
|
||||
<string name="_2fa_code">2FA Code</string>
|
||||
<string name="logout_verification">Do you really want to logout?</string>
|
||||
<string name="mediaimage_failed">Media Image Failed</string>
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.widget.Button
|
||||
import android.widget.TextView
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import fr.free.nrw.commons.R
|
||||
import fr.free.nrw.commons.TestAppAdapter
|
||||
|
|
@ -55,7 +56,7 @@ class LoginActivityUnitTests {
|
|||
private lateinit var keyEvent: KeyEvent
|
||||
|
||||
@Mock
|
||||
private lateinit var loginButton: Button
|
||||
private lateinit var textView: TextView
|
||||
|
||||
@Mock
|
||||
private lateinit var bundle: Bundle
|
||||
|
|
@ -95,40 +96,12 @@ class LoginActivityUnitTests {
|
|||
fun testOnEditorActionCaseDefault() {
|
||||
val method: Method = LoginActivity::class.java.getDeclaredMethod(
|
||||
"onEditorAction",
|
||||
TextView::class.java,
|
||||
Int::class.java,
|
||||
KeyEvent::class.java
|
||||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(activity, 0, keyEvent)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testOnEditorActionCaseLoginEnabledFirstCase() {
|
||||
Whitebox.setInternalState(activity, "loginButton", loginButton)
|
||||
`when`(loginButton.isEnabled).thenReturn(true)
|
||||
val method: Method = LoginActivity::class.java.getDeclaredMethod(
|
||||
"onEditorAction",
|
||||
Int::class.java,
|
||||
KeyEvent::class.java
|
||||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(activity, EditorInfo.IME_ACTION_DONE, keyEvent)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testOnEditorActionCaseLoginEnabledSecondCase() {
|
||||
Whitebox.setInternalState(activity, "loginButton", loginButton)
|
||||
`when`(loginButton.isEnabled).thenReturn(true)
|
||||
`when`(keyEvent.keyCode).thenReturn(KeyEvent.KEYCODE_ENTER)
|
||||
val method: Method = LoginActivity::class.java.getDeclaredMethod(
|
||||
"onEditorAction",
|
||||
Int::class.java,
|
||||
KeyEvent::class.java
|
||||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(activity, 0, keyEvent)
|
||||
method.invoke(activity, textView, 0, keyEvent)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -56,9 +56,6 @@ class MoreBottomSheetFragmentUnitTests {
|
|||
@Mock
|
||||
private lateinit var store: JsonKvStore
|
||||
|
||||
@Mock
|
||||
private lateinit var morePeerReview: TextView
|
||||
|
||||
@Mock
|
||||
private lateinit var pageEditClient: PageEditClient
|
||||
|
||||
|
|
@ -76,7 +73,6 @@ class MoreBottomSheetFragmentUnitTests {
|
|||
fragmentTransaction.commitNowAllowingStateLoss()
|
||||
|
||||
Whitebox.setInternalState(fragment, "store", store)
|
||||
Whitebox.setInternalState(fragment, "morePeerReview", morePeerReview)
|
||||
Whitebox.setInternalState(fragment, "pageEditClient", pageEditClient)
|
||||
|
||||
`when`(store.getBoolean(CommonsApplication.IS_LIMITED_CONNECTION_MODE_ENABLED)).thenReturn(
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package fr.free.nrw.commons.profile.achievements
|
||||
|
||||
import android.accounts.Account
|
||||
import android.content.Context
|
||||
import android.os.Looper
|
||||
import android.view.LayoutInflater
|
||||
|
|
@ -55,109 +56,37 @@ class AchievementsFragmentUnitTests {
|
|||
|
||||
private lateinit var layoutInflater: LayoutInflater
|
||||
|
||||
@Mock
|
||||
private lateinit var imageView: ImageView
|
||||
|
||||
@Mock
|
||||
private lateinit var badgeText: TextView
|
||||
|
||||
@Mock
|
||||
private lateinit var levelNumber: TextView
|
||||
|
||||
@Mock
|
||||
private lateinit var thanksReceived: TextView
|
||||
|
||||
@Mock
|
||||
private lateinit var imagesUploadedProgressbar: CircleProgressBar
|
||||
|
||||
@Mock
|
||||
private lateinit var imagesUsedByWikiProgressBar: CircleProgressBar
|
||||
|
||||
@Mock
|
||||
private lateinit var imageRevertsProgressbar: CircleProgressBar
|
||||
|
||||
@Mock
|
||||
private lateinit var imagesFeatured: TextView
|
||||
|
||||
@Mock
|
||||
private lateinit var tvQualityImages: TextView
|
||||
|
||||
@Mock
|
||||
private lateinit var imagesRevertLimitText: TextView
|
||||
|
||||
@Mock
|
||||
private lateinit var imageByWikiText: TextView
|
||||
|
||||
@Mock
|
||||
private lateinit var imageRevertedText: TextView
|
||||
|
||||
@Mock
|
||||
private lateinit var imageUploadedText: TextView
|
||||
|
||||
@Mock
|
||||
private lateinit var progressBar: ProgressBar
|
||||
|
||||
@Mock
|
||||
private lateinit var sessionManager: SessionManager
|
||||
|
||||
@Mock
|
||||
private lateinit var parentView: ViewGroup
|
||||
|
||||
@Mock
|
||||
private lateinit var account: Account
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
MockitoAnnotations.openMocks(this)
|
||||
|
||||
fragment = AchievementsFragment()
|
||||
Whitebox.setInternalState(fragment, "sessionManager", sessionManager)
|
||||
Mockito.`when`(sessionManager.userName).thenReturn("Test")
|
||||
Mockito.`when`(sessionManager.currentAccount).thenReturn(account)
|
||||
|
||||
context = ApplicationProvider.getApplicationContext()
|
||||
menuItem = RoboMenuItem(context)
|
||||
AppAdapter.set(TestAppAdapter())
|
||||
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
||||
fragment = AchievementsFragment()
|
||||
val fragmentManager: FragmentManager = activity.supportFragmentManager
|
||||
val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction()
|
||||
fragmentTransaction.add(fragment, null)
|
||||
fragmentTransaction.commitNowAllowingStateLoss()
|
||||
|
||||
layoutInflater = LayoutInflater.from(activity)
|
||||
view = LayoutInflater.from(activity)
|
||||
.inflate(R.layout.fragment_achievements, null) as View
|
||||
view = fragment.onCreateView(layoutInflater, activity.findViewById(R.id.container), null)!!
|
||||
|
||||
achievements = Achievements(0, 0, 0, 0, 0, 0, 0)
|
||||
|
||||
Whitebox.setInternalState(fragment, "thanksReceived", thanksReceived)
|
||||
Whitebox.setInternalState(
|
||||
fragment,
|
||||
"imagesUsedByWikiProgressBar",
|
||||
imagesUsedByWikiProgressBar
|
||||
)
|
||||
Whitebox.setInternalState(
|
||||
fragment,
|
||||
"imagesUsedByWikiProgressBar",
|
||||
imagesUsedByWikiProgressBar
|
||||
)
|
||||
Whitebox.setInternalState(fragment, "imagesFeatured", imagesFeatured)
|
||||
Whitebox.setInternalState(fragment, "tvQualityImages", tvQualityImages)
|
||||
Whitebox.setInternalState(fragment, "levelNumber", levelNumber)
|
||||
Whitebox.setInternalState(fragment, "imageView", imageView)
|
||||
Whitebox.setInternalState(fragment, "badgeText", badgeText)
|
||||
Whitebox.setInternalState(fragment, "imagesUploadedProgressbar", imagesUploadedProgressbar)
|
||||
Whitebox.setInternalState(fragment, "imageRevertsProgressbar", imageRevertsProgressbar)
|
||||
Whitebox.setInternalState(
|
||||
fragment,
|
||||
"imagesUsedByWikiProgressBar",
|
||||
imagesUsedByWikiProgressBar
|
||||
)
|
||||
Whitebox.setInternalState(fragment, "imageView", imageView)
|
||||
Whitebox.setInternalState(fragment, "imageByWikiText", imageByWikiText)
|
||||
Whitebox.setInternalState(fragment, "imageRevertedText", imageRevertedText)
|
||||
Whitebox.setInternalState(fragment, "imageUploadedText", imageUploadedText)
|
||||
Whitebox.setInternalState(fragment, "imageView", imageView)
|
||||
Whitebox.setInternalState(fragment, "progressBar", progressBar)
|
||||
Whitebox.setInternalState(fragment, "imagesRevertLimitText", imagesRevertLimitText)
|
||||
Whitebox.setInternalState(fragment, "item", menuItem)
|
||||
Whitebox.setInternalState(fragment, "sessionManager", sessionManager)
|
||||
Whitebox.setInternalState(fragment, "mView", parentView)
|
||||
|
||||
Mockito.`when`(sessionManager.userName).thenReturn("Test")
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -354,18 +283,20 @@ class AchievementsFragmentUnitTests {
|
|||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testMenuVisibilityOverrideNotVisible() {
|
||||
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||
val method: Method = AchievementsFragment::class.java.getDeclaredMethod(
|
||||
"setMenuVisibility",
|
||||
Boolean::class.java
|
||||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(fragment, false)
|
||||
Assert.assertNull(ShadowToast.getLatestToast())
|
||||
assertToast()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testMenuVisibilityOverrideVisibleWithContext() {
|
||||
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||
Mockito.`when`(parentView.context).thenReturn(context)
|
||||
val method: Method = AchievementsFragment::class.java.getDeclaredMethod(
|
||||
"setMenuVisibility",
|
||||
|
|
@ -373,14 +304,19 @@ class AchievementsFragmentUnitTests {
|
|||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(fragment, true)
|
||||
if(ConfigUtils.isBetaFlavour) {
|
||||
assertToast()
|
||||
}
|
||||
|
||||
private fun assertToast() {
|
||||
if (ConfigUtils.isBetaFlavour) {
|
||||
Assert.assertEquals(
|
||||
ShadowToast.getTextOfLatestToast().toString(),
|
||||
context.getString(R.string.achievements_unavailable_beta)
|
||||
)
|
||||
} else {
|
||||
Assert.assertNull(
|
||||
ShadowToast.getTextOfLatestToast()
|
||||
Assert.assertEquals(
|
||||
context.getString(R.string.user_not_logged_in),
|
||||
ShadowToast.getTextOfLatestToast().toString()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue