Merge remote-tracking branch 'refs/remotes/commons-app/master'

This commit is contained in:
misaochan 2018-05-01 01:23:29 +10:00
commit 25f0fa31a4
48 changed files with 562 additions and 78 deletions

View file

@ -10,6 +10,7 @@ dependencies {
implementation 'com.github.nicolas-raoul:Quadtree:ac16ea8035bf07' implementation 'com.github.nicolas-raoul:Quadtree:ac16ea8035bf07'
implementation 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar' implementation 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'
implementation 'in.yuvi:http.fluent:1.3' implementation 'in.yuvi:http.fluent:1.3'
implementation 'com.github.chrisbanes:PhotoView:2.0.0'
implementation 'com.android.volley:volley:1.0.0' implementation 'com.android.volley:volley:1.0.0'
implementation 'ch.acra:acra:4.9.2' implementation 'ch.acra:acra:4.9.2'
implementation 'org.mediawiki:api:1.3' implementation 'org.mediawiki:api:1.3'
@ -34,7 +35,7 @@ dependencies {
implementation "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION" implementation "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION"
kapt "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION" kapt "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION"
implementation 'com.squareup.okhttp3:okhttp:3.8.1' implementation 'com.squareup.okhttp3:okhttp:3.9.1'
implementation 'com.squareup.okio:okio:1.13.0' implementation 'com.squareup.okio:okio:1.13.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'

View file

@ -1,5 +1,6 @@
package fr.free.nrw.commons; package fr.free.nrw.commons;
import android.net.Uri;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.view.PagerAdapter; import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -9,6 +10,7 @@ import android.widget.TextView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
import butterknife.Optional;
public class WelcomePagerAdapter extends PagerAdapter { public class WelcomePagerAdapter extends PagerAdapter {
static final int[] PAGE_LAYOUTS = new int[]{ static final int[] PAGE_LAYOUTS = new int[]{
@ -20,6 +22,7 @@ public class WelcomePagerAdapter extends PagerAdapter {
}; };
private static final int PAGE_FINAL = 4; private static final int PAGE_FINAL = 4;
private Callback callback; private Callback callback;
private ViewGroup container;
/** /**
* Changes callback to provided one * Changes callback to provided one
@ -53,6 +56,7 @@ public class WelcomePagerAdapter extends PagerAdapter {
@Override @Override
public Object instantiateItem(ViewGroup container, int position) { public Object instantiateItem(ViewGroup container, int position) {
this.container=container;
LayoutInflater inflater = LayoutInflater.from(container.getContext()); LayoutInflater inflater = LayoutInflater.from(container.getContext());
ViewGroup layout = (ViewGroup) inflater.inflate(PAGE_LAYOUTS[position], container, false); ViewGroup layout = (ViewGroup) inflater.inflate(PAGE_LAYOUTS[position], container, false);
if( BuildConfig.FLAVOR == "beta"){ if( BuildConfig.FLAVOR == "beta"){
@ -102,5 +106,15 @@ public class WelcomePagerAdapter extends PagerAdapter {
} }
} }
@Optional
@OnClick(R.id.welcomeInfo)
void onHelpClicked () {
try {
Utils.handleWebUrl(container.getContext(),Uri.parse("https://commons.wikimedia.org/wiki/Help:Contents" ));
} catch (Exception e) {
e.printStackTrace();
}
}
} }
} }

View file

@ -29,6 +29,7 @@ import android.widget.EditText;
import android.widget.TextView; import android.widget.TextView;
import java.io.IOException; import java.io.IOException;
import java.util.Locale;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
@ -83,6 +84,10 @@ public class LoginActivity extends AccountAuthenticatorActivity {
private LoginTextWatcher textWatcher = new LoginTextWatcher(); private LoginTextWatcher textWatcher = new LoginTextWatcher();
private Boolean loginCurrentlyInProgress = false; private Boolean loginCurrentlyInProgress = false;
private Boolean errorMessageShown = false;
private String resultantError;
private static final String RESULTANT_ERROR = "resultantError";
private static final String ERROR_MESSAGE_SHOWN = "errorMessageShown";
private static final String LOGING_IN = "logingIn"; private static final String LOGING_IN = "logingIn";
@Override @Override
@ -123,7 +128,7 @@ public class LoginActivity extends AccountAuthenticatorActivity {
forgotPasswordText.setOnClickListener(view -> forgotPassword()); forgotPasswordText.setOnClickListener(view -> forgotPassword());
if(BuildConfig.FLAVOR == "beta"){ if(BuildConfig.FLAVOR.equals("beta")){
loginCredentials.setText(getString(R.string.login_credential)); loginCredentials.setText(getString(R.string.login_credential));
} else { } else {
loginCredentials.setVisibility(View.GONE); loginCredentials.setVisibility(View.GONE);
@ -140,9 +145,13 @@ public class LoginActivity extends AccountAuthenticatorActivity {
} }
public void hideKeyboard(View view) { public void hideKeyboard(View view) {
if (view != null) {
InputMethodManager inputMethodManager = (InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE); InputMethodManager inputMethodManager = (InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
} }
}
}
@Override @Override
@ -216,6 +225,8 @@ public class LoginActivity extends AccountAuthenticatorActivity {
handlePassResult(username, password); handlePassResult(username, password);
} else { } else {
loginCurrentlyInProgress = false; loginCurrentlyInProgress = false;
errorMessageShown = true;
resultantError = result;
handleOtherResults(result); handleOtherResults(result);
} }
} }
@ -267,18 +278,18 @@ public class LoginActivity extends AccountAuthenticatorActivity {
if (result.equals("NetworkFailure")) { if (result.equals("NetworkFailure")) {
// Matches NetworkFailure which is created by the doInBackground method // Matches NetworkFailure which is created by the doInBackground method
showMessageAndCancelDialog(R.string.login_failed_network); showMessageAndCancelDialog(R.string.login_failed_network);
} else if (result.toLowerCase().contains("nosuchuser".toLowerCase()) || result.toLowerCase().contains("noname".toLowerCase())) { } else if (result.toLowerCase(Locale.getDefault()).contains("nosuchuser".toLowerCase()) || result.toLowerCase().contains("noname".toLowerCase())) {
// Matches nosuchuser, nosuchusershort, noname // Matches nosuchuser, nosuchusershort, noname
showMessageAndCancelDialog(R.string.login_failed_username); showMessageAndCancelDialog(R.string.login_failed_username);
emptySensitiveEditFields(); emptySensitiveEditFields();
} else if (result.toLowerCase().contains("wrongpassword".toLowerCase())) { } else if (result.toLowerCase(Locale.getDefault()).contains("wrongpassword".toLowerCase())) {
// Matches wrongpassword, wrongpasswordempty // Matches wrongpassword, wrongpasswordempty
showMessageAndCancelDialog(R.string.login_failed_password); showMessageAndCancelDialog(R.string.login_failed_password);
emptySensitiveEditFields(); emptySensitiveEditFields();
} else if (result.toLowerCase().contains("throttle".toLowerCase())) { } else if (result.toLowerCase(Locale.getDefault()).contains("throttle".toLowerCase())) {
// Matches unknown throttle error codes // Matches unknown throttle error codes
showMessageAndCancelDialog(R.string.login_failed_throttled); showMessageAndCancelDialog(R.string.login_failed_throttled);
} else if (result.toLowerCase().contains("userblocked".toLowerCase())) { } else if (result.toLowerCase(Locale.getDefault()).contains("userblocked".toLowerCase())) {
// Matches login-userblocked // Matches login-userblocked
showMessageAndCancelDialog(R.string.login_failed_blocked); showMessageAndCancelDialog(R.string.login_failed_blocked);
} else if (result.equals("2FA")) { } else if (result.equals("2FA")) {
@ -342,15 +353,22 @@ public class LoginActivity extends AccountAuthenticatorActivity {
protected void onSaveInstanceState(Bundle outState) { protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
outState.putBoolean(LOGING_IN, loginCurrentlyInProgress); outState.putBoolean(LOGING_IN, loginCurrentlyInProgress);
outState.putBoolean(ERROR_MESSAGE_SHOWN, errorMessageShown);
outState.putString(RESULTANT_ERROR, resultantError);
} }
@Override @Override
protected void onRestoreInstanceState(Bundle savedInstanceState) { protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState); super.onRestoreInstanceState(savedInstanceState);
loginCurrentlyInProgress = savedInstanceState.getBoolean(LOGING_IN, false); loginCurrentlyInProgress = savedInstanceState.getBoolean(LOGING_IN, false);
errorMessageShown = savedInstanceState.getBoolean(ERROR_MESSAGE_SHOWN, false);
if(loginCurrentlyInProgress){ if(loginCurrentlyInProgress){
performLogin(); performLogin();
} }
if(errorMessageShown){
resultantError = savedInstanceState.getString(RESULTANT_ERROR);
handleOtherResults(resultantError);
}
} }
public void askUserForTwoFactorAuth() { public void askUserForTwoFactorAuth() {
@ -362,8 +380,10 @@ public class LoginActivity extends AccountAuthenticatorActivity {
public void showMessageAndCancelDialog(@StringRes int resId) { public void showMessageAndCancelDialog(@StringRes int resId) {
showMessage(resId, R.color.secondaryDarkColor); showMessage(resId, R.color.secondaryDarkColor);
if(progressDialog != null){
progressDialog.cancel(); progressDialog.cancel();
} }
}
public void showSuccessAndDismissDialog() { public void showSuccessAndDismissDialog() {
showMessage(R.string.login_success, R.color.primaryDarkColor); showMessage(R.string.login_success, R.color.primaryDarkColor);

View file

@ -10,7 +10,6 @@ import android.support.v7.widget.RecyclerView;
import android.text.Editable; import android.text.Editable;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
@ -43,7 +42,6 @@ import fr.free.nrw.commons.R;
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.mwapi.MediaWikiApi;
import fr.free.nrw.commons.upload.MwVolleyApi; import fr.free.nrw.commons.upload.MwVolleyApi;
import fr.free.nrw.commons.upload.SingleUploadFragment;
import fr.free.nrw.commons.utils.StringSortingUtils; import fr.free.nrw.commons.utils.StringSortingUtils;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
@ -131,9 +129,14 @@ public class CategorizationFragment extends CommonsDaggerSupportFragment {
} }
public void hideKeyboard(View view) { public void hideKeyboard(View view) {
if (view != null) {
InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE); InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
} }
}
}
@Override @Override
public void onDestroyView() { public void onDestroyView() {

View file

@ -83,7 +83,7 @@ public class DeleteTask extends AsyncTask<Void, Integer, Boolean> {
String logPageString = "\n{{Commons:Deletion requests/" + media.getFilename() + String logPageString = "\n{{Commons:Deletion requests/" + media.getFilename() +
"}}\n"; "}}\n";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd", Locale.getDefault());
String date = sdf.format(calendar.getTime()); String date = sdf.format(calendar.getTime());
String userPageString = "\n{{subst:idw|" + media.getFilename() + String userPageString = "\n{{subst:idw|" + media.getFilename() +

View file

@ -16,11 +16,6 @@ import dagger.android.support.DaggerFragment;
import fr.free.nrw.commons.Media; import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.R; import fr.free.nrw.commons.R;
/**
* Created by root on 09.01.2018.
*/
public class FeaturedImagesListFragment extends DaggerFragment { public class FeaturedImagesListFragment extends DaggerFragment {
private GridView gridView; private GridView gridView;
private MockGridViewAdapter gridAdapter; private MockGridViewAdapter gridAdapter;

View file

@ -458,7 +458,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
if (date == null || date.toString() == null || date.toString().isEmpty()) { if (date == null || date.toString() == null || date.toString().isEmpty()) {
return "Uploaded date not available"; return "Uploaded date not available";
} }
SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy"); SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy", Locale.getDefault());
return formatter.format(date); return formatter.format(date);
} }

View file

@ -369,7 +369,7 @@ public class NearbyActivity extends NavigationBaseActivity implements LocationUp
Gson gson = new GsonBuilder() Gson gson = new GsonBuilder()
.registerTypeAdapter(Uri.class, new UriSerializer()) .registerTypeAdapter(Uri.class, new UriSerializer())
.create(); .create();
String gsonCurLatLng = gson.toJson(curLatLang); String gsonCurLatLng = gson.toJson(curLatLng);
bundle.clear(); bundle.clear();
bundle.putString("CurLatLng", gsonCurLatLng); bundle.putString("CurLatLng", gsonCurLatLng);

View file

@ -102,6 +102,11 @@ public class SettingsFragment extends PreferenceFragment {
return true; return true;
}); });
Preference betaTesterPreference = findPreference("becomeBetaTester");
betaTesterPreference.setOnPreferenceClickListener(preference -> {
Utils.handleWebUrl(getActivity(),Uri.parse(getResources().getString(R.string.beta_opt_in_link)));
return true;
});
Preference sendLogsPreference = findPreference("sendLogFile"); Preference sendLogsPreference = findPreference("sendLogFile");
sendLogsPreference.setOnPreferenceClickListener(preference -> { sendLogsPreference.setOnPreferenceClickListener(preference -> {
//first we need to check if we have the necessary permissions //first we need to check if we have the necessary permissions
@ -128,8 +133,8 @@ public class SettingsFragment extends PreferenceFragment {
@Override @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults); super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_CODE_WRITE_EXTERNAL_STORAGE) { if (requestCode == REQUEST_CODE_WRITE_EXTERNAL_STORAGE && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { {
sendAppLogsViaEmail(); sendAppLogsViaEmail();
} }
} }

View file

@ -59,7 +59,7 @@ public class FileUtils {
final String id = DocumentsContract.getDocumentId(uri); final String id = DocumentsContract.getDocumentId(uri);
final Uri contentUri = ContentUris.withAppendedId( final Uri contentUri = ContentUris.withAppendedId(
Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); Uri.parse("content://downloads/document"), Long.valueOf(id));
returnPath = getDataColumn(context, contentUri, null, null); returnPath = getDataColumn(context, contentUri, null, null);
} else if (isMediaDocument(uri)) { // MediaProvider } else if (isMediaDocument(uri)) { // MediaProvider

View file

@ -166,6 +166,7 @@ public class MultipleShareActivity extends AuthenticatedActivity
View target = getCurrentFocus(); View target = getCurrentFocus();
if (target != null) { if (target != null) {
InputMethodManager imm = (InputMethodManager) target.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); InputMethodManager imm = (InputMethodManager) target.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null)
imm.hideSoftInputFromWindow(target.getWindowToken(), 0); imm.hideSoftInputFromWindow(target.getWindowToken(), 0);
} }
getSupportFragmentManager().beginTransaction() getSupportFragmentManager().beginTransaction()
@ -221,8 +222,8 @@ public class MultipleShareActivity extends AuthenticatedActivity
//TODO: 15/10/17 should location permission be explicitly requested if not provided? //TODO: 15/10/17 should location permission be explicitly requested if not provided?
//check if location permission is enabled //check if location permission is enabled
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
if (ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { {
locationPermitted = true; locationPermitted = true;
} }
} }

View file

@ -11,7 +11,6 @@ import android.text.Editable;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
@ -89,9 +88,9 @@ public class MultipleUploadListFragment extends Fragment {
if (view == null) { if (view == null) {
view = LayoutInflater.from(getContext()).inflate(R.layout.layout_upload_item, viewGroup, false); view = LayoutInflater.from(getContext()).inflate(R.layout.layout_upload_item, viewGroup, false);
holder = new UploadHolderView(); holder = new UploadHolderView();
holder.image = (SimpleDraweeView) view.findViewById(R.id.uploadImage); holder.image = view.findViewById(R.id.uploadImage);
holder.title = (TextView) view.findViewById(R.id.uploadTitle); holder.title = view.findViewById(R.id.uploadTitle);
holder.overlay = (RelativeLayout) view.findViewById(R.id.uploadOverlay); holder.overlay = view.findViewById(R.id.uploadOverlay);
holder.image.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, photoSize.y)); holder.image.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, photoSize.y));
holder.image.setHierarchy(GenericDraweeHierarchyBuilder holder.image.setHierarchy(GenericDraweeHierarchyBuilder
@ -129,11 +128,8 @@ public class MultipleUploadListFragment extends Fragment {
super.onStop(); super.onStop();
// FIXME: Stops the keyboard from being shown 'stale' while moving out of this fragment into the next // FIXME: Stops the keyboard from being shown 'stale' while moving out of this fragment into the next
View target = getView().findFocus(); View target = getActivity().getCurrentFocus();
if (target != null) { hideKeyboard(target);
InputMethodManager imm = (InputMethodManager) target.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(target.getWindowToken(), 0);
}
} }
// FIXME: Wrong result type // FIXME: Wrong result type
@ -169,8 +165,8 @@ public class MultipleUploadListFragment extends Fragment {
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_multiple_uploads_list, container, false); View view = inflater.inflate(R.layout.fragment_multiple_uploads_list, container, false);
photosGrid = (GridView) view.findViewById(R.id.multipleShareBackground); photosGrid = view.findViewById(R.id.multipleShareBackground);
baseTitle = (EditText) view.findViewById(R.id.multipleBaseTitle); baseTitle = view.findViewById(R.id.multipleBaseTitle);
photosAdapter = new PhotoDisplayAdapter(); photosAdapter = new PhotoDisplayAdapter();
photosGrid.setAdapter(photosAdapter); photosGrid.setAdapter(photosAdapter);
@ -190,9 +186,13 @@ public class MultipleUploadListFragment extends Fragment {
} }
public void hideKeyboard(View view) { public void hideKeyboard(View view) {
if (view != null) {
InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE); InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
} }
}
}
@Override @Override
public void onDestroyView() { public void onDestroyView() {

View file

@ -2,33 +2,50 @@ package fr.free.nrw.commons.upload;
import android.Manifest; import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapRegionDecoder;
import android.graphics.Point;
import android.graphics.Rect;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor;
import android.provider.MediaStore;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi; import android.support.annotation.RequiresApi;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar; import android.support.design.widget.Snackbar;
import android.support.graphics.drawable.VectorDrawableCompat; import android.support.graphics.drawable.VectorDrawableCompat;
import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.support.v4.graphics.BitmapCompat;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.WindowManager;
import android.view.animation.DecelerateInterpolator;
import android.view.inputmethod.InputMethodManager;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder; import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.view.SimpleDraweeView; import com.facebook.drawee.view.SimpleDraweeView;
import com.github.chrisbanes.photoview.PhotoView;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@ -63,8 +80,11 @@ import fr.free.nrw.commons.utils.ImageUtils;
import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.mwapi.MediaWikiApi;
import timber.log.Timber; import timber.log.Timber;
import static fr.free.nrw.commons.upload.ExistingFileAsync.Result.DUPLICATE_PROCEED; import static fr.free.nrw.commons.upload.ExistingFileAsync.Result.DUPLICATE_PROCEED;
import static fr.free.nrw.commons.upload.ExistingFileAsync.Result.NO_DUPLICATE; import static fr.free.nrw.commons.upload.ExistingFileAsync.Result.NO_DUPLICATE;
import static java.lang.Long.min;
/** /**
* Activity for the title/desc screen after image is selected. Also starts processing image * Activity for the title/desc screen after image is selected. Also starts processing image
@ -120,6 +140,12 @@ public class ShareActivity
private boolean haveCheckedForOtherImages = false; private boolean haveCheckedForOtherImages = false;
private boolean isNearbyUpload = false; private boolean isNearbyUpload = false;
private Animator CurrentAnimator;
private long ShortAnimationDuration;
private FloatingActionButton zoomInButton;
private FloatingActionButton zoomOutButton;
/** /**
* Called when user taps the submit button. * Called when user taps the submit button.
*/ */
@ -257,6 +283,18 @@ public class ShareActivity
if (mediaUri != null) { if (mediaUri != null) {
backgroundImageView.setImageURI(mediaUri); backgroundImageView.setImageURI(mediaUri);
} }
zoomInButton = (FloatingActionButton) findViewById(R.id.media_upload_zoom_in);
try {
zoomInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
zoomImageFromThumb(backgroundImageView, mediaUri);
}
});
} catch (Exception e){
Log.i("exception", e.toString());
}
zoomOutButton = (FloatingActionButton) findViewById(R.id.media_upload_zoom_out);
if (savedInstanceState != null) { if (savedInstanceState != null) {
contribution = savedInstanceState.getParcelable("contribution"); contribution = savedInstanceState.getParcelable("contribution");
@ -690,4 +728,189 @@ public class ShareActivity
} }
} }
} }
private void zoomImageFromThumb(final View thumbView, Uri imageuri ) {
// If there's an animation in progress, cancel it
// immediately and proceed with this one.
if (CurrentAnimator != null) {
CurrentAnimator.cancel();
}
hideKeyboard(ShareActivity.this);
InputStream input = null;
Bitmap scaled = null;
try {
input = this.getContentResolver().openInputStream(imageuri);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
BitmapRegionDecoder decoder = null;
try {
decoder = BitmapRegionDecoder.newInstance(input, false);
} catch (IOException e) {
e.printStackTrace();
}
Bitmap bitmap = decoder.decodeRegion(new Rect(10, 10, 50, 50), null);
try {
//Compress the Image
System.gc();
Runtime rt = Runtime.getRuntime();
long maxMemory = rt.freeMemory();
bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageuri);
int bitmapByteCount= BitmapCompat.getAllocationByteCount(bitmap);
long height = bitmap.getHeight();
long width = bitmap.getWidth();
long calHeight = (long) ((height * maxMemory)/(bitmapByteCount * 1.1));
long calWidth = (long) ((width * maxMemory)/(bitmapByteCount * 1.1));
scaled = Bitmap.createScaledBitmap(bitmap,(int) Math.min(width,calWidth), (int) Math.min(height,calHeight), true);
} catch (IOException e) {
} catch (NullPointerException e){
scaled = bitmap;
}
// Load the high-resolution "zoomed-in" image.
PhotoView expandedImageView = (PhotoView) findViewById(
R.id.expanded_image);
expandedImageView.setImageBitmap(scaled);
// Calculate the starting and ending bounds for the zoomed-in image.
// This step involves lots of math. Yay, math.
final Rect startBounds = new Rect();
final Rect finalBounds = new Rect();
final Point globalOffset = new Point();
// The start bounds are the global visible rectangle of the thumbnail,
// and the final bounds are the global visible rectangle of the container
// view. Also set the container view's offset as the origin for the
// bounds, since that's the origin for the positioning animation
// properties (X, Y).
thumbView.getGlobalVisibleRect(startBounds);
findViewById(R.id.container)
.getGlobalVisibleRect(finalBounds, globalOffset);
startBounds.offset(-globalOffset.x, -globalOffset.y);
finalBounds.offset(-globalOffset.x, -globalOffset.y);
// Adjust the start bounds to be the same aspect ratio as the final
// bounds using the "center crop" technique. This prevents undesirable
// stretching during the animation. Also calculate the start scaling
// factor (the end scaling factor is always 1.0).
float startScale;
if ((float) finalBounds.width() / finalBounds.height()
> (float) startBounds.width() / startBounds.height()) {
// Extend start bounds horizontally
startScale = (float) startBounds.height() / finalBounds.height();
float startWidth = startScale * finalBounds.width();
float deltaWidth = (startWidth - startBounds.width()) / 2;
startBounds.left -= deltaWidth;
startBounds.right += deltaWidth;
} else {
// Extend start bounds vertically
startScale = (float) startBounds.width() / finalBounds.width();
float startHeight = startScale * finalBounds.height();
float deltaHeight = (startHeight - startBounds.height()) / 2;
startBounds.top -= deltaHeight;
startBounds.bottom += deltaHeight;
}
// Hide the thumbnail and show the zoomed-in view. When the animation
// begins, it will position the zoomed-in view in the place of the
// thumbnail.
thumbView.setAlpha(0f);
expandedImageView.setVisibility(View.VISIBLE);
zoomOutButton.setVisibility(View.VISIBLE);
zoomInButton.setVisibility(View.GONE);
// Set the pivot point for SCALE_X and SCALE_Y transformations
// to the top-left corner of the zoomed-in view (the default
// is the center of the view).
expandedImageView.setPivotX(0f);
expandedImageView.setPivotY(0f);
// Construct and run the parallel animation of the four translation and
// scale properties (X, Y, SCALE_X, and SCALE_Y).
AnimatorSet set = new AnimatorSet();
set
.play(ObjectAnimator.ofFloat(expandedImageView, View.X,
startBounds.left, finalBounds.left))
.with(ObjectAnimator.ofFloat(expandedImageView, View.Y,
startBounds.top, finalBounds.top))
.with(ObjectAnimator.ofFloat(expandedImageView, View.SCALE_X,
startScale, 1f))
.with(ObjectAnimator.ofFloat(expandedImageView,
View.SCALE_Y, startScale, 1f));
set.setDuration(ShortAnimationDuration);
set.setInterpolator(new DecelerateInterpolator());
set.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
CurrentAnimator = null;
}
@Override
public void onAnimationCancel(Animator animation) {
CurrentAnimator = null;
}
});
set.start();
CurrentAnimator = set;
// Upon clicking the zoomed-in image, it should zoom back down
// to the original bounds and show the thumbnail instead of
// the expanded image.
final float startScaleFinal = startScale;
zoomOutButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (CurrentAnimator != null) {
CurrentAnimator.cancel();
}
zoomOutButton.setVisibility(View.GONE);
zoomInButton.setVisibility(View.VISIBLE);
// Animate the four positioning/sizing properties in parallel,
// back to their original values.
AnimatorSet set = new AnimatorSet();
set.play(ObjectAnimator
.ofFloat(expandedImageView, View.X, startBounds.left))
.with(ObjectAnimator
.ofFloat(expandedImageView,
View.Y,startBounds.top))
.with(ObjectAnimator
.ofFloat(expandedImageView,
View.SCALE_X, startScaleFinal))
.with(ObjectAnimator
.ofFloat(expandedImageView,
View.SCALE_Y, startScaleFinal));
set.setDuration(ShortAnimationDuration);
set.setInterpolator(new DecelerateInterpolator());
set.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
thumbView.setAlpha(1f);
expandedImageView.setVisibility(View.GONE);
CurrentAnimator = null;
}
@Override
public void onAnimationCancel(Animator animation) {
thumbView.setAlpha(1f);
expandedImageView.setVisibility(View.GONE);
CurrentAnimator = null;
}
});
set.start();
CurrentAnimator = set;
}
});
}
public static void hideKeyboard(Activity activity) {
View view = activity.findViewById(R.id.titleEdit | R.id.descEdit);
if (view != null) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
} }

View file

@ -3,21 +3,20 @@ package fr.free.nrw.commons.upload;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.graphics.Color; import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v4.view.ViewCompat; import android.support.v4.view.ViewCompat;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import android.text.Editable; import android.text.Editable;
import android.text.Html; import android.text.Html;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.text.method.LinkMovementMethod; import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
@ -61,6 +60,7 @@ public class SingleUploadFragment extends CommonsDaggerSupportFragment {
@BindView(R.id.share_license_summary) TextView licenseSummaryView; @BindView(R.id.share_license_summary) TextView licenseSummaryView;
@BindView(R.id.licenseSpinner) Spinner licenseSpinner; @BindView(R.id.licenseSpinner) Spinner licenseSpinner;
@Inject @Named("default_preferences") SharedPreferences prefs; @Inject @Named("default_preferences") SharedPreferences prefs;
@Inject @Named("direct_nearby_upload_prefs") SharedPreferences directPrefs; @Inject @Named("direct_nearby_upload_prefs") SharedPreferences directPrefs;
@ -184,10 +184,13 @@ public class SingleUploadFragment extends CommonsDaggerSupportFragment {
} }
public void hideKeyboard(View view) { public void hideKeyboard(View view) {
Log.i("hide", "hideKeyboard: "); if (view != null) {
InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE); InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
} }
}
}
@Override @Override
public void onDestroyView() { public void onDestroyView() {
@ -224,7 +227,7 @@ public class SingleUploadFragment extends CommonsDaggerSupportFragment {
setLicenseSummary(license); setLicenseSummary(license);
prefs.edit() prefs.edit()
.putString(Prefs.DEFAULT_LICENSE, license) .putString(Prefs.DEFAULT_LICENSE, license)
.commit(); .apply();
} }
@ -301,11 +304,8 @@ public class SingleUploadFragment extends CommonsDaggerSupportFragment {
super.onStop(); super.onStop();
// FIXME: Stops the keyboard from being shown 'stale' while moving out of this fragment into the next // FIXME: Stops the keyboard from being shown 'stale' while moving out of this fragment into the next
View target = getView().findFocus(); View target = getActivity().getCurrentFocus();
if (target != null) { hideKeyboard(target);
InputMethodManager imm = (InputMethodManager) target.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(target.getWindowToken(), 0);
}
} }
@NonNull @NonNull
@ -346,6 +346,7 @@ public class SingleUploadFragment extends CommonsDaggerSupportFragment {
} }
} }
private void showInfoAlert (int titleStringID, int messageStringID){ private void showInfoAlert (int titleStringID, int messageStringID){
new AlertDialog.Builder(getContext()) new AlertDialog.Builder(getContext())
.setTitle(titleStringID) .setTitle(titleStringID)

View file

@ -1,6 +1,7 @@
package fr.free.nrw.commons.utils; package fr.free.nrw.commons.utils;
import java.util.Comparator; import java.util.Comparator;
import java.util.Locale;
import info.debatty.java.stringsimilarity.Levenshtein; import info.debatty.java.stringsimilarity.Levenshtein;
@ -28,8 +29,8 @@ public class StringSortingUtils {
} }
private static double calculateSimilarity(String firstString, String secondString) { private static double calculateSimilarity(String firstString, String secondString) {
String longer = firstString.toLowerCase(); String longer = firstString.toLowerCase(Locale.getDefault());
String shorter = secondString.toLowerCase(); String shorter = secondString.toLowerCase(Locale.getDefault());
if (firstString.length() < secondString.length()) { if (firstString.length() < secondString.length()) {
longer = secondString; longer = secondString;

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 731 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 954 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

View file

@ -1,13 +1,33 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#0c609c" android:background="#0c609c"
android:gravity="center"
>
>
<TextView
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="@dimen/large_gap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome_help_button_text"
android:id="@+id/welcomeInfo"
android:layout_gravity="end|top"
android:layout_marginTop="@dimen/standard_gap"
android:layout_marginRight="@dimen/standard_gap"
android:layout_marginEnd="@dimen/standard_gap"
android:textSize="@dimen/normal_text"
android:textColor="@android:color/white"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center">
<!-- Sorry about the hardcoded sizes here. They're image-related. --> <!-- Sorry about the hardcoded sizes here. They're image-related. -->
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -59,6 +79,8 @@
android:textColor="#0c609c" android:textColor="#0c609c"
android:textStyle="bold" android:textStyle="bold"
/> />
</LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout>
</RelativeLayout>

View file

@ -19,7 +19,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_below="@id/toolbar" android:layout_below="@id/toolbar"
android:background="?attr/mainBackground"> android:background="?attr/mainBackground"
android:id="@+id/container">
<com.facebook.drawee.view.SimpleDraweeView <com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/backgroundImage" android:id="@+id/backgroundImage"
@ -32,7 +33,35 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
<com.github.chrisbanes.photoview.PhotoView
android:id="@+id/expanded_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible" />
</FrameLayout> </FrameLayout>
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="@dimen/standard_gap"
android:layout_marginBottom="@dimen/standard_gap"
android:src="@drawable/ic_zoom_in_white_24dp"
android:id="@+id/media_upload_zoom_in"/>
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:visibility="gone"
android:layout_marginRight="@dimen/standard_gap"
android:layout_marginBottom="@dimen/standard_gap"
android:src="@drawable/ic_zoom_out_white_24dp"
android:id="@+id/media_upload_zoom_out"/>
</RelativeLayout> </RelativeLayout>
<android.support.design.widget.NavigationView <android.support.design.widget.NavigationView

View file

@ -88,3 +88,4 @@
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>

View file

@ -34,6 +34,7 @@
android:textColor="#FFFFFFFF" android:textColor="#FFFFFFFF"
style="?android:textAppearanceSmall" style="?android:textAppearanceSmall"
/> />
</RelativeLayout> </RelativeLayout>
</FrameLayout> </FrameLayout>

View file

@ -2,7 +2,7 @@
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1" android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle" style="?android:attr/spinnerDropDownItemStyle"
android:maxLines="1" android:singleLine="true"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight" android:layout_height="?android:attr/listPreferredItemHeight"
android:ellipsize="marquee" android:ellipsize="marquee"

View file

@ -1,14 +1,18 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#0c609c" android:background="#0c609c"
android:gravity="center_vertical"
> >
<LinearLayout <LinearLayout
android:gravity="center" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_vertical">
<LinearLayout
android:gravity="center_vertical"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_height="180dp" android:layout_height="180dp"
@ -61,3 +65,21 @@
/> />
</LinearLayout> </LinearLayout>
<TextView
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|end"
android:layout_marginTop="@dimen/standard_gap"
android:layout_marginRight="@dimen/standard_gap"
android:layout_marginEnd="@dimen/standard_gap"
android:id="@+id/welcomeInfo"
android:textSize="@dimen/normal_text"
android:textColor="@android:color/white"
android:text="@string/welcome_help_button_text"
android:layout_marginBottom="@dimen/large_gap"
android:paddingBottom="@dimen/large_gap"
/>
</RelativeLayout>

View file

@ -71,6 +71,7 @@
<string name="categories_search_text_hint">Etsi luokkia</string> <string name="categories_search_text_hint">Etsi luokkia</string>
<string name="menu_save_categories">Tallenna</string> <string name="menu_save_categories">Tallenna</string>
<string name="refresh_button">Päivitä</string> <string name="refresh_button">Päivitä</string>
<string name="display_list_button">Lista</string>
<string name="gps_disabled">GPS ei ole käytössä. Haluatko ottaa sen käyttöön?</string> <string name="gps_disabled">GPS ei ole käytössä. Haluatko ottaa sen käyttöön?</string>
<string name="enable_gps">Ota GPS käyttöön</string> <string name="enable_gps">Ota GPS käyttöön</string>
<string name="contributions_subtitle_zero">Ei tallennuksia vielä</string> <string name="contributions_subtitle_zero">Ei tallennuksia vielä</string>
@ -161,8 +162,8 @@
<string name="detail_description_empty">Ei kuvausta</string> <string name="detail_description_empty">Ei kuvausta</string>
<string name="detail_license_empty">Tuntematon lisenssi</string> <string name="detail_license_empty">Tuntematon lisenssi</string>
<string name="menu_refresh">Päivitä</string> <string name="menu_refresh">Päivitä</string>
<string name="read_storage_permission_rationale" fuzzy="true">Vaadittu oikeus: Ulkoisen tallennustilan luku. Appi ei toimi ilman tätä oikeutta.</string> <string name="read_storage_permission_rationale">Vaadittu oikeus: Ulkoisen tallennustilan luku. Appi ei voi päästä galleriaasi ilman tätä oikeutta.</string>
<string name="write_storage_permission_rationale" fuzzy="true">Vaadittava lupa: Kirjoita ulkoiseen tallennustilaan. Sovellus ei voi toimia ilman tätä.</string> <string name="write_storage_permission_rationale">Vaadittava lupa: Kirjoita ulkoiseen tallennustilaan. Appi ei voi päästä kameraasi ilman tätä oikeutta.</string>
<string name="location_permission_rationale">Valinnainen lupa: Saada tämänhetkinen sijainti loukkasuosituksia varten.</string> <string name="location_permission_rationale">Valinnainen lupa: Saada tämänhetkinen sijainti loukkasuosituksia varten.</string>
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="title_activity_nearby">Lähellä olevat paikat</string> <string name="title_activity_nearby">Lähellä olevat paikat</string>
@ -175,6 +176,7 @@
<string name="media_detail_media_title">Median otsikko</string> <string name="media_detail_media_title">Median otsikko</string>
<string name="media_detail_description">Kuvaus</string> <string name="media_detail_description">Kuvaus</string>
<string name="media_detail_description_explanation">Median kuvaus menee tänne. Tämä voi mahdollisesti olla melko pitkä, ja sen täytyy kääriä poikittain useita rivejä. Toivomme, että se näyttää silti hyvältä.</string> <string name="media_detail_description_explanation">Median kuvaus menee tänne. Tämä voi mahdollisesti olla melko pitkä, ja sen täytyy kääriä poikittain useita rivejä. Toivomme, että se näyttää silti hyvältä.</string>
<string name="media_detail_author">Tekijä</string>
<string name="media_detail_uploaded_date">Tallennuspäivämäärä</string> <string name="media_detail_uploaded_date">Tallennuspäivämäärä</string>
<string name="media_detail_license">Lisenssi</string> <string name="media_detail_license">Lisenssi</string>
<string name="media_detail_coordinates">Koordinaatit</string> <string name="media_detail_coordinates">Koordinaatit</string>
@ -221,6 +223,7 @@
<string name="no_description_found">kuvausta ei löytynyt</string> <string name="no_description_found">kuvausta ei löytynyt</string>
<string name="nearby_info_menu_commons_article">Commons-tiedostosivu</string> <string name="nearby_info_menu_commons_article">Commons-tiedostosivu</string>
<string name="nearby_info_menu_wikidata_article">Wikidata-kohde</string> <string name="nearby_info_menu_wikidata_article">Wikidata-kohde</string>
<string name="nearby_info_menu_wikipedia_article">Wikipedia-artikkeli</string>
<string name="error_while_cache">Virhe varastoidessa kuvia</string> <string name="error_while_cache">Virhe varastoidessa kuvia</string>
<string name="title_info">Tiedoston yksilöllinen ja kuvaava otsikko, jota käytetään tiedostonimenä. Voit käyttää tavallista kieltä välilyönnein. Älä sisällytä tiedoston päätettä.</string> <string name="title_info">Tiedoston yksilöllinen ja kuvaava otsikko, jota käytetään tiedostonimenä. Voit käyttää tavallista kieltä välilyönnein. Älä sisällytä tiedoston päätettä.</string>
<string name="description_info">Kuvaile mediaa niin paljon kuin mahdollista: Missä se otettiin? Mitä se esittää? Mikä on asiayhteys? Kuvaile esineitä tai henkilöitä. Tuo ilmi tietoja, joita ei ole helppo arvailla, esimerkiksi vuorokaudenaika, jos se on maisema. Jos media esittää jotain epätavallista, selitä, mikä tekee siitä epätavallisen.</string> <string name="description_info">Kuvaile mediaa niin paljon kuin mahdollista: Missä se otettiin? Mitä se esittää? Mikä on asiayhteys? Kuvaile esineitä tai henkilöitä. Tuo ilmi tietoja, joita ei ole helppo arvailla, esimerkiksi vuorokaudenaika, jos se on maisema. Jos media esittää jotain epätavallista, selitä, mikä tekee siitä epätavallisen.</string>
@ -233,6 +236,9 @@
<string name="send_log_file">Lähetä lokitiedosto</string> <string name="send_log_file">Lähetä lokitiedosto</string>
<string name="send_log_file_description">Lähetä lokitiedosto kehittäjille sähköpostin kautta</string> <string name="send_log_file_description">Lähetä lokitiedosto kehittäjille sähköpostin kautta</string>
<string name="null_url">Virhe! URL-osoitetta ei löytynyt</string> <string name="null_url">Virhe! URL-osoitetta ei löytynyt</string>
<string name="nominate_deletion">Ehdotettu poistettavaksi</string>
<string name="nominated_for_deletion">Tätä kuvaa on ehdotettu poistettavaksi.</string>
<string name="view_browser">Näytä selaimessa</string>
<string name="nearby_location_has_not_changed">Sijainti ei ole muuttunut.</string> <string name="nearby_location_has_not_changed">Sijainti ei ole muuttunut.</string>
<string name="nearby_location_not_available">Sijainti ei käytettävissä.</string> <string name="nearby_location_not_available">Sijainti ei käytettävissä.</string>
<string name="location_permission_rationale_nearby">Lupa vaaditaan läheisten paikkojen luettelon näyttämiseen</string> <string name="location_permission_rationale_nearby">Lupa vaaditaan läheisten paikkojen luettelon näyttämiseen</string>
@ -243,6 +249,17 @@
<string name="notifications_thank_you_edit">Kiitos muokkaamisestasi</string> <string name="notifications_thank_you_edit">Kiitos muokkaamisestasi</string>
<string name="notifications_mention">%1$s mainitsi sinut %2$s.</string> <string name="notifications_mention">%1$s mainitsi sinut %2$s.</string>
<string name="toggle_view_button">Vaihda näkymä</string> <string name="toggle_view_button">Vaihda näkymä</string>
<string name="about_faq" fuzzy="true">Usein Kysytyt Kysymykset</string> <string name="nearby_wikidata">WIKIDATA</string>
<string name="nearby_wikipedia">WIKIPEDIA</string>
<string name="nearby_commons">COMMONS</string>
<string name="about_rate_us">&lt;u&gt;Arvostele meidät&lt;/u&gt;</string>
<string name="about_faq">&lt;u&gt;UKK&lt;/u&gt;</string>
<string name="welcome_skip_button">Ohita opetus</string> <string name="welcome_skip_button">Ohita opetus</string>
<string name="no_internet">Internet ei saatavissa</string>
<string name="internet_established">Internet saatavana</string>
<string name="about_translate">&lt;u&gt;Käännä&lt;/u&gt;</string>
<string name="about_translate_title">Kielet</string>
<string name="about_translate_proceed">Jatka</string>
<string name="about_translate_cancel">Peruuta</string>
<string name="retry">Yritä uudelleen</string>
</resources> </resources>

View file

@ -13,6 +13,7 @@
* ViDam * ViDam
--> -->
<resources> <resources>
<string name="preference_category_general">Általános</string>
<string name="preference_category_feedback">Visszajelzés</string> <string name="preference_category_feedback">Visszajelzés</string>
<string name="preference_category_location">Helyszín</string> <string name="preference_category_location">Helyszín</string>
<string name="app_name">Commons</string> <string name="app_name">Commons</string>
@ -54,6 +55,7 @@
<string name="menu_share">Megosztás</string> <string name="menu_share">Megosztás</string>
<string name="menu_open_in_browser">Megtekintés böngészőben</string> <string name="menu_open_in_browser">Megtekintés böngészőben</string>
<string name="share_title_hint">Cím</string> <string name="share_title_hint">Cím</string>
<string name="add_title_toast">Kérlek, adj címet a fájlnak</string>
<string name="share_description_hint">Leírás</string> <string name="share_description_hint">Leírás</string>
<string name="login_failed_network">Nem lehet bejelentkezni - hálózati hiba</string> <string name="login_failed_network">Nem lehet bejelentkezni - hálózati hiba</string>
<string name="login_failed_username">Nem lehet bejelentkezni - ellenőrizd a felhasználóneved</string> <string name="login_failed_username">Nem lehet bejelentkezni - ellenőrizd a felhasználóneved</string>
@ -91,11 +93,12 @@
<string name="categories_activity_title">Kategóriák</string> <string name="categories_activity_title">Kategóriák</string>
<string name="title_activity_settings">Beállítások</string> <string name="title_activity_settings">Beállítások</string>
<string name="title_activity_signup">Regisztráció</string> <string name="title_activity_signup">Regisztráció</string>
<string name="title_activity_featured_images">Kiemelt képek</string>
<string name="menu_about">Névjegy</string> <string name="menu_about">Névjegy</string>
<string name="about_license">A Wikimedia Commons applikáció egy nyílt forráskódú szoftver, amit a Wikimedia-közösség önkéntesei készítettek és tartanak karban. A Wikimédia Alapítvány nem vesz részt az applikáció megalkotásában, fejlesztésében és üzemeltetésében.</string> <string name="about_license">A Wikimedia Commons applikáció egy nyílt forráskódú szoftver, amit a Wikimedia-közösség önkéntesei készítettek és tartanak karban. A Wikimédia Alapítvány nem vesz részt az applikáció megalkotásában, fejlesztésében és üzemeltetésében.</string>
<string name="about_improve">Nyiss egy új &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;GitHub-problémát&lt;/a&gt; hibabejelentéssel vagy fejlesztési javaslattal.</string> <string name="about_improve">Nyiss egy új &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;GitHub-problémát&lt;/a&gt; hibabejelentéssel vagy fejlesztési javaslattal.</string>
<string name="about_privacy_policy" fuzzy="true">&lt;a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\"&gt;Adatvédelmi irányelvek&lt;/a&gt;</string> <string name="about_privacy_policy">&lt;u&gt;Adatvédelmi irányelvek&lt;/u&gt;</string>
<string name="about_credits" fuzzy="true">&lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\"&gt;Köszönetnyilvánítás&lt;/a&gt;</string> <string name="about_credits">&lt;u&gt;Köszönetnyilvánítás&lt;/u&gt;</string>
<string name="title_activity_about">Névjegy</string> <string name="title_activity_about">Névjegy</string>
<string name="menu_feedback">Visszajelzés küldése (e-mailben)</string> <string name="menu_feedback">Visszajelzés küldése (e-mailben)</string>
<string name="no_email_client">Nincs telepített levelezőprogram</string> <string name="no_email_client">Nincs telepített levelezőprogram</string>
@ -136,7 +139,10 @@
<string name="tutorial_1_text">A Wikimédia Commons tárolja a Wikipédián használt képek többségét.</string> <string name="tutorial_1_text">A Wikimédia Commons tárolja a Wikipédián használt képek többségét.</string>
<string name="tutorial_1_subtext">A képeid segítik az ismeretterjesztést az egész világon!</string> <string name="tutorial_1_subtext">A képeid segítik az ismeretterjesztést az egész világon!</string>
<string name="tutorial_2_text">Kérjük, tölts fel képeket, amelyeket teljes mértékben te fotóztál vagy készítettél:</string> <string name="tutorial_2_text">Kérjük, tölts fel képeket, amelyeket teljes mértékben te fotóztál vagy készítettél:</string>
<string name="tutorial_2_subtext" fuzzy="true">- Természeti tárgyak (virágok, állatok, hegyek)\n- Hasznos tárgyak (kerékpárok, vasútállomások)\n- Híres emberek (a polgármestered, olimpikonok, akikkel találkoztál)</string> <string name="tutorial_2_subtext">Természeti tárgyak (virágok, állatok, hegyek)\n• Hasznos tárgyak (kerékpárok, vasútállomások)\n• Híres emberek (a polgármestered, olimpikonok, akikkel találkoztál)</string>
<string name="tutorial_2_subtext_1">Természeti tárgyak (virágok, állatok, hegyek)</string>
<string name="tutorial_2_subtext_2">Hasznos tárgyak (kerékpárok, vasútállomások)</string>
<string name="tutorial_2_subtext_3">Híres emberek (a polgármestered, olimpikonok, akikkel találkoztál)</string>
<string name="tutorial_3_text">Kérjük, NE tölts fel:</string> <string name="tutorial_3_text">Kérjük, NE tölts fel:</string>
<string name="tutorial_3_subtext">- Szelfiket vagy képeket a barátaidról\n- Internetröl letöltött képeket\n- Kereskedelmi alkalmazások képernyőképeit</string> <string name="tutorial_3_subtext">- Szelfiket vagy képeket a barátaidról\n- Internetröl letöltött képeket\n- Kereskedelmi alkalmazások képernyőképeit</string>
<string name="tutorial_4_text">Példa feltöltés:</string> <string name="tutorial_4_text">Példa feltöltés:</string>
@ -168,6 +174,7 @@
<string name="media_detail_media_title">Média címe</string> <string name="media_detail_media_title">Média címe</string>
<string name="media_detail_description">Leírás</string> <string name="media_detail_description">Leírás</string>
<string name="media_detail_description_explanation">A média leírása kerül ide. Ez akár egészen hosszú is lehet, és több sorba fog kerülni. Azért reméljük, jól néz majd ki.</string> <string name="media_detail_description_explanation">A média leírása kerül ide. Ez akár egészen hosszú is lehet, és több sorba fog kerülni. Azért reméljük, jól néz majd ki.</string>
<string name="media_detail_author">Szerző</string>
<string name="media_detail_uploaded_date">Feltöltési dátum</string> <string name="media_detail_uploaded_date">Feltöltési dátum</string>
<string name="media_detail_license">Licenc</string> <string name="media_detail_license">Licenc</string>
<string name="media_detail_coordinates">Koordináták</string> <string name="media_detail_coordinates">Koordináták</string>
@ -207,6 +214,7 @@
<string name="navigation_item_logout">Kijelentkezés</string> <string name="navigation_item_logout">Kijelentkezés</string>
<string name="navigation_item_info">Bevezető</string> <string name="navigation_item_info">Bevezető</string>
<string name="navigation_item_notification">Értesítések</string> <string name="navigation_item_notification">Értesítések</string>
<string name="navigation_item_featured_images">Kiemelt</string>
<string name="nearby_needs_permissions">Közeli helyek nem megjeleníthetőek a helyadatokhoz való hozzáférés engedélyezése nélkül</string> <string name="nearby_needs_permissions">Közeli helyek nem megjeleníthetőek a helyadatokhoz való hozzáférés engedélyezése nélkül</string>
<string name="no_description_found">nincs leírás</string> <string name="no_description_found">nincs leírás</string>
<string name="nearby_info_menu_commons_article">Commons leírólap</string> <string name="nearby_info_menu_commons_article">Commons leírólap</string>
@ -221,10 +229,26 @@
<string name="login_to_your_account">Bejelentkezés a fiókodba</string> <string name="login_to_your_account">Bejelentkezés a fiókodba</string>
<string name="send_log_file">Naplófájlok küldése</string> <string name="send_log_file">Naplófájlok küldése</string>
<string name="send_log_file_description">Naplófájlok küldése e-mailben a fejlesztőknek</string> <string name="send_log_file_description">Naplófájlok küldése e-mailben a fejlesztőknek</string>
<string name="no_web_browser">Nem található böngésző az URL megnyitásához</string>
<string name="null_url">Hiba! URL nem található.</string> <string name="null_url">Hiba! URL nem található.</string>
<string name="nominate_deletion">Törlésre jelölés</string> <string name="nominate_deletion">Törlésre jelölés</string>
<string name="nominated_for_deletion">Ezt a képet törlésre jelölték.</string>
<string name="view_browser">Megtekintés böngészőben</string>
<string name="nearby_location_has_not_changed">A hely nem változott.</string> <string name="nearby_location_has_not_changed">A hely nem változott.</string>
<string name="nearby_location_not_available">A hely nem érhető el.</string> <string name="nearby_location_not_available">A hely nem érhető el.</string>
<string name="location_permission_rationale_nearby">Közeli helyek listájának megtekintéséhez engedély szükséges</string>
<string name="notifications_welcome">Üdvözlünk a Wikimedia Commonson, %1$s! Örülünk, hogy itt vagy.</string> <string name="notifications_welcome">Üdvözlünk a Wikimedia Commonson, %1$s! Örülünk, hogy itt vagy.</string>
<string name="notifications_thank_you_edit">Köszönjük a szerkesztésedet!</string> <string name="notifications_thank_you_edit">Köszönjük a szerkesztésedet!</string>
<string name="nearby_wikidata">WIKIDATA</string>
<string name="nearby_wikipedia">WIKIPÉDIA</string>
<string name="nearby_commons">COMMONS</string>
<string name="about_rate_us">&lt;u&gt;Értékelj minket&lt;/u&gt;</string>
<string name="about_faq">&lt;u&gt;GYIK&lt;/u&gt;</string>
<string name="welcome_skip_button">Útmutató átugrása</string>
<string name="no_internet">Internet nem elérhető</string>
<string name="internet_established">Internet elérhető</string>
<string name="no_notifications">Nincs értesítés</string>
<string name="about_translate_title">Nyelvek</string>
<string name="about_translate_cancel">Mégse</string>
<string name="retry">Újra</string>
</resources> </resources>

View file

@ -84,6 +84,7 @@
<string name="categories_activity_title">Flokkar</string> <string name="categories_activity_title">Flokkar</string>
<string name="title_activity_settings">Stillingar</string> <string name="title_activity_settings">Stillingar</string>
<string name="title_activity_signup">Nýskrá</string> <string name="title_activity_signup">Nýskrá</string>
<string name="title_activity_featured_images">Áberandi myndir</string>
<string name="menu_about">Um</string> <string name="menu_about">Um</string>
<string name="about_license">Wikimedia Commons forritið er opinn og frjáls hugbúnaður sem gerður er og viðhaldið af stuðningsaðilum og sjálfboðaliðum Wikimedia samfélagsins. Wikimedia Foundation sjálfseignarstofnunin kemur ekki að gerð, forritun eða viðhaldi forritsins. \</string> <string name="about_license">Wikimedia Commons forritið er opinn og frjáls hugbúnaður sem gerður er og viðhaldið af stuðningsaðilum og sjálfboðaliðum Wikimedia samfélagsins. Wikimedia Foundation sjálfseignarstofnunin kemur ekki að gerð, forritun eða viðhaldi forritsins. \</string>
<string name="about_improve">Útbúðu nýjar &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;GitHub tilkynningar (issue)&lt;/a&gt; til að koma villum og uppástungum á framfæri.</string> <string name="about_improve">Útbúðu nýjar &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;GitHub tilkynningar (issue)&lt;/a&gt; til að koma villum og uppástungum á framfæri.</string>
@ -169,6 +170,8 @@
<string name="media_detail_media_title">Titill þessa gagnamiðils</string> <string name="media_detail_media_title">Titill þessa gagnamiðils</string>
<string name="media_detail_description">Lýsing</string> <string name="media_detail_description">Lýsing</string>
<string name="media_detail_description_explanation">Lýsing á gagnamiðlinum kemur hér. Þetta má vera nokkuð langt og mun þurfa að skríða yfir nokkrar línur. Við vonum að þetta líti samt þokkalega út.</string> <string name="media_detail_description_explanation">Lýsing á gagnamiðlinum kemur hér. Þetta má vera nokkuð langt og mun þurfa að skríða yfir nokkrar línur. Við vonum að þetta líti samt þokkalega út.</string>
<string name="media_detail_author">Höfundur</string>
<string name="media_detail_author_explanation">Nafn höfundar myndarinnar kemur hér.</string>
<string name="media_detail_uploaded_date">Sent inn þann</string> <string name="media_detail_uploaded_date">Sent inn þann</string>
<string name="media_detail_license">Notkunarleyfi</string> <string name="media_detail_license">Notkunarleyfi</string>
<string name="media_detail_coordinates">Hnit</string> <string name="media_detail_coordinates">Hnit</string>
@ -211,6 +214,7 @@
<string name="navigation_item_logout">Útskráning</string> <string name="navigation_item_logout">Útskráning</string>
<string name="navigation_item_info">Kennsla</string> <string name="navigation_item_info">Kennsla</string>
<string name="navigation_item_notification">Tilkynningar</string> <string name="navigation_item_notification">Tilkynningar</string>
<string name="navigation_item_featured_images">Efst á baugi</string>
<string name="nearby_needs_permissions">Ekki er hægt að birta nálæga staði an heimildar til að ná í hnattstaðsetningu</string> <string name="nearby_needs_permissions">Ekki er hægt að birta nálæga staði an heimildar til að ná í hnattstaðsetningu</string>
<string name="no_description_found">engin lýsing fannst</string> <string name="no_description_found">engin lýsing fannst</string>
<string name="nearby_info_menu_commons_article">Síða Commons-skrár</string> <string name="nearby_info_menu_commons_article">Síða Commons-skrár</string>

View file

@ -5,6 +5,7 @@
* Davio * Davio
* Nemo bis * Nemo bis
* S4b1nuz E.656 * S4b1nuz E.656
* Sarah Bernabei
* Una giornata uggiosa '94 * Una giornata uggiosa '94
* Wim b * Wim b
--> -->
@ -87,6 +88,7 @@
<string name="categories_activity_title">Categorie</string> <string name="categories_activity_title">Categorie</string>
<string name="title_activity_settings">Impostazioni</string> <string name="title_activity_settings">Impostazioni</string>
<string name="title_activity_signup">Registrati</string> <string name="title_activity_signup">Registrati</string>
<string name="title_activity_featured_images">Immagini in evidenza</string>
<string name="menu_about">Informazioni</string> <string name="menu_about">Informazioni</string>
<string name="about_license">L\'app di Wikimedia Commons è un\'applicazione open source creata e mantenuta da beneficiari e volontari della comunità Wikimedia. La Fondazione Wikimedia non è coinvolta nella creazione, sviluppo o manutenzione dell\'applicazione.</string> <string name="about_license">L\'app di Wikimedia Commons è un\'applicazione open source creata e mantenuta da beneficiari e volontari della comunità Wikimedia. La Fondazione Wikimedia non è coinvolta nella creazione, sviluppo o manutenzione dell\'applicazione.</string>
<string name="about_improve">Crea una nuova &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;segnalazione GitHub&lt;/a&gt; per riportare errori e suggerimenti.</string> <string name="about_improve">Crea una nuova &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;segnalazione GitHub&lt;/a&gt; per riportare errori e suggerimenti.</string>
@ -161,6 +163,7 @@
<string name="media_detail_media_title">Titolo del file multimediale</string> <string name="media_detail_media_title">Titolo del file multimediale</string>
<string name="media_detail_description">Descrizione</string> <string name="media_detail_description">Descrizione</string>
<string name="media_detail_author">Autore</string> <string name="media_detail_author">Autore</string>
<string name="media_detail_author_explanation">Il nome dell\'autore dell\'immagine in evidenza va scritto qui.</string>
<string name="media_detail_uploaded_date">Data di caricamento</string> <string name="media_detail_uploaded_date">Data di caricamento</string>
<string name="media_detail_license">Licenza</string> <string name="media_detail_license">Licenza</string>
<string name="media_detail_coordinates">Coordinate</string> <string name="media_detail_coordinates">Coordinate</string>
@ -194,6 +197,7 @@
<string name="navigation_item_logout">Esci</string> <string name="navigation_item_logout">Esci</string>
<string name="navigation_item_info">Tutorial</string> <string name="navigation_item_info">Tutorial</string>
<string name="navigation_item_notification">Notifiche</string> <string name="navigation_item_notification">Notifiche</string>
<string name="navigation_item_featured_images">In evidenza</string>
<string name="no_description_found">nessuna descrizione trovata</string> <string name="no_description_found">nessuna descrizione trovata</string>
<string name="nearby_info_menu_commons_article">Pagina di Commons del file</string> <string name="nearby_info_menu_commons_article">Pagina di Commons del file</string>
<string name="nearby_info_menu_wikidata_article">Elemento Wikidata</string> <string name="nearby_info_menu_wikidata_article">Elemento Wikidata</string>

View file

@ -17,6 +17,7 @@
<string name="preference_category_feedback">משוב</string> <string name="preference_category_feedback">משוב</string>
<string name="preference_category_location">מיקום</string> <string name="preference_category_location">מיקום</string>
<string name="app_name">ויקישיתוף</string> <string name="app_name">ויקישיתוף</string>
<string name="bullet"></string>
<string name="menu_settings">הגדרות</string> <string name="menu_settings">הגדרות</string>
<string name="username">שם משתמש</string> <string name="username">שם משתמש</string>
<string name="password">ססמה</string> <string name="password">ססמה</string>
@ -208,6 +209,7 @@
<string name="welcome_image_no_selfies">בלי תמונות סלפי</string> <string name="welcome_image_no_selfies">בלי תמונות סלפי</string>
<string name="welcome_image_proprietary">תמונה קניינית</string> <string name="welcome_image_proprietary">תמונה קניינית</string>
<string name="welcome_image_welcome_wikipedia">ברוך בואך ויקיפדיה</string> <string name="welcome_image_welcome_wikipedia">ברוך בואך ויקיפדיה</string>
<string name="welcome_image_welcome_copyright">הודעה לגבי זכויות יוצרים</string>
<string name="welcome_image_sydney_opera_house">בית האופרה של סידני</string> <string name="welcome_image_sydney_opera_house">בית האופרה של סידני</string>
<string name="cancel">ביטול</string> <string name="cancel">ביטול</string>
<string name="navigation_drawer_open">פתיחה</string> <string name="navigation_drawer_open">פתיחה</string>
@ -226,6 +228,7 @@
<string name="no_description_found">לא נמצא תיאור</string> <string name="no_description_found">לא נמצא תיאור</string>
<string name="nearby_info_menu_commons_article">דף קובץ בוויקישיתוף</string> <string name="nearby_info_menu_commons_article">דף קובץ בוויקישיתוף</string>
<string name="nearby_info_menu_wikidata_article">פריט ויקינתונים</string> <string name="nearby_info_menu_wikidata_article">פריט ויקינתונים</string>
<string name="nearby_info_menu_wikipedia_article">ערך בוויקיפדיה</string>
<string name="error_while_cache">שגיאה במשירת תמונות במטמון</string> <string name="error_while_cache">שגיאה במשירת תמונות במטמון</string>
<string name="title_info">כותרת מתארת ייחודית לקובץ, שתשמש שם קובץ. אפשר להשתמש בשפה פשוטה עם רווחים. אין לכלול סיומת קובץ</string> <string name="title_info">כותרת מתארת ייחודית לקובץ, שתשמש שם קובץ. אפשר להשתמש בשפה פשוטה עם רווחים. אין לכלול סיומת קובץ</string>
<string name="description_info">נא לתאר את המדיה כמה שיותר: איפה היא נוצרה? מה היא מראה? מה ההקשר? נא לתאר את העצמים או את האנשים. נא לחשוף מידע שאי־אפשר לנחש בקלות, למשל, הזמן ביום אם זאת תמונת נוף. אם המדיה מציגה משהו בלתי־רגיל, נא להסביר מה מיוחד בה.</string> <string name="description_info">נא לתאר את המדיה כמה שיותר: איפה היא נוצרה? מה היא מראה? מה ההקשר? נא לתאר את העצמים או את האנשים. נא לחשוף מידע שאי־אפשר לנחש בקלות, למשל, הזמן ביום אם זאת תמונת נוף. אם המדיה מציגה משהו בלתי־רגיל, נא להסביר מה מיוחד בה.</string>
@ -238,8 +241,10 @@
<string name="send_log_file">שליחת קובץ יומן</string> <string name="send_log_file">שליחת קובץ יומן</string>
<string name="send_log_file_description">שליחת קובץ יומן למפתחים בדואר אלקטרוני</string> <string name="send_log_file_description">שליחת קובץ יומן למפתחים בדואר אלקטרוני</string>
<string name="no_web_browser">לא נמצא דפדפן שיוכל לפתוח את הכתובת</string> <string name="no_web_browser">לא נמצא דפדפן שיוכל לפתוח את הכתובת</string>
<string name="null_url">שגיאה! כתובת ה־URL לא נמצאה</string>
<string name="nominate_deletion">להציע מחיקה</string> <string name="nominate_deletion">להציע מחיקה</string>
<string name="nominated_for_deletion">התמונה הזאת מועמדת למחיקה</string> <string name="nominated_for_deletion">התמונה הזאת מועמדת למחיקה</string>
<string name="nominated_see_more"/>
<string name="view_browser">הצגה בדפדפן</string> <string name="view_browser">הצגה בדפדפן</string>
<string name="nearby_location_has_not_changed">המיקום לא השתנה.</string> <string name="nearby_location_has_not_changed">המיקום לא השתנה.</string>
<string name="nearby_location_not_available">המיקום אינו זמין.</string> <string name="nearby_location_not_available">המיקום אינו זמין.</string>

View file

@ -3,6 +3,9 @@
* פוילישער * פוילישער
--> -->
<resources> <resources>
<string name="preference_category_general">אַלגעמיין</string>
<string name="preference_category_feedback">פֿידבעק</string>
<string name="preference_category_location">לאקאציע</string>
<string name="app_name">קאמאנס</string> <string name="app_name">קאמאנס</string>
<string name="menu_settings">איינשטעלונגען</string> <string name="menu_settings">איינשטעלונגען</string>
<string name="username">באַניצער־נאָמען</string> <string name="username">באַניצער־נאָמען</string>
@ -48,6 +51,7 @@
<string name="categories_search_text_hint">זוכן קאטעגאריעס</string> <string name="categories_search_text_hint">זוכן קאטעגאריעס</string>
<string name="menu_save_categories">אויפֿהיטן</string> <string name="menu_save_categories">אויפֿהיטן</string>
<string name="refresh_button">דערפֿרישן</string> <string name="refresh_button">דערפֿרישן</string>
<string name="display_list_button">ליסטע</string>
<plurals name="contributions_subtitle"> <plurals name="contributions_subtitle">
<item quantity="zero">\@string/contributions_subtitle_zero </item> <item quantity="zero">\@string/contributions_subtitle_zero </item>
<item quantity="one">איין ארויפֿלאד</item> <item quantity="one">איין ארויפֿלאד</item>
@ -66,7 +70,7 @@
<string name="provider_categories">לעצטיק־געניצטע קאטעגאריעס</string> <string name="provider_categories">לעצטיק־געניצטע קאטעגאריעס</string>
<string name="menu_cancel_upload">אַנולירן</string> <string name="menu_cancel_upload">אַנולירן</string>
<string name="menu_download">אראָפלאָדן</string> <string name="menu_download">אראָפלאָדן</string>
<string name="preference_license" fuzzy="true">ליצענץ</string> <string name="preference_license">סטאנדארט־ליצענץ</string>
<string name="license_name_cc_by_sa">Attribution-ShareAlike 3.0</string> <string name="license_name_cc_by_sa">Attribution-ShareAlike 3.0</string>
<string name="license_name_cc_by">Attribution 3.0</string> <string name="license_name_cc_by">Attribution 3.0</string>
<string name="license_name_cc0">CC0</string> <string name="license_name_cc0">CC0</string>

View file

@ -69,6 +69,7 @@
<string name="warning">Hişyarî</string> <string name="warning">Hişyarî</string>
<string name="yes">Erê</string> <string name="yes">Erê</string>
<string name="no">Na</string> <string name="no">Na</string>
<string name="media_detail_author">Xwedî</string>
<string name="media_detail_coordinates">Koordînat</string> <string name="media_detail_coordinates">Koordînat</string>
<string name="cancel">Betal bike</string> <string name="cancel">Betal bike</string>
<string name="navigation_drawer_open">Veke</string> <string name="navigation_drawer_open">Veke</string>

View file

@ -89,7 +89,7 @@
<string name="about_license">D\'App Wikimedia Commons ass eng \'Open-Source-App\' déi vu Fräiwëllege vun der Wikimedia Foundation entwéckelt gouf an och vun hinnen ënnerhal gëtt. D\'Wikimedia Foundation ass net an d\'Entwécklung oder den Ënnerhalt vun der App implizéiert.</string> <string name="about_license">D\'App Wikimedia Commons ass eng \'Open-Source-App\' déi vu Fräiwëllege vun der Wikimedia Foundation entwéckelt gouf an och vun hinnen ënnerhal gëtt. D\'Wikimedia Foundation ass net an d\'Entwécklung oder den Ënnerhalt vun der App implizéiert.</string>
<string name="about_improve">Leet w.e.g. &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt; e GitHub Problem&lt;/a&gt; fir Problemer ze mellen a Proposen ze maachen.</string> <string name="about_improve">Leet w.e.g. &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt; e GitHub Problem&lt;/a&gt; fir Problemer ze mellen a Proposen ze maachen.</string>
<string name="about_privacy_policy">&lt;u&gt;Dateschutzrichtlinn&lt;/u&gt;</string> <string name="about_privacy_policy">&lt;u&gt;Dateschutzrichtlinn&lt;/u&gt;</string>
<string name="about_credits" fuzzy="true">&lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\"&gt;Merci&lt;/a&gt;</string> <string name="about_credits">&lt;u&gt;Merci&lt;/u&gt;</string>
<string name="title_activity_about">Iwwer</string> <string name="title_activity_about">Iwwer</string>
<string name="menu_feedback">Feedback schécken (per E-Mail)</string> <string name="menu_feedback">Feedback schécken (per E-Mail)</string>
<string name="no_email_client">Keen E-Mail-Client installéiert</string> <string name="no_email_client">Keen E-Mail-Client installéiert</string>

View file

@ -87,6 +87,27 @@
<string name="title_activity_signup">Registreer</string> <string name="title_activity_signup">Registreer</string>
<string name="title_activity_featured_images">Oetgeleechde plaetjes</string> <string name="title_activity_featured_images">Oetgeleechde plaetjes</string>
<string name="menu_about">Euver</string> <string name="menu_about">Euver</string>
<string name="about_license">De Wikimedia Commons-app is \'nen app op aope brónne, gemaak en óngerhaje door gerechtigde en vriewilligers vanne Wikimedia-gemeinsjap. De Wikimedia Foundation is neet betróch inne maak, óntwikkeling of \'t óngerhawd vannen app.</string>
<string name="about_improve">Maak e nuuj &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;GitHub-perbleem&lt;/a&gt; veur fouteverslaag en veurstèlle.</string>
<string name="about_privacy_policy">&lt;u&gt;Privaatbeleid&lt;/u&gt;</string>
<string name="about_credits">&lt;u&gt;Toesjrif&lt;/u&gt;</string>
<string name="title_activity_about">Euver</string>
<string name="menu_feedback">Sjik feedback (mitten e-mail)</string>
<string name="no_email_client">Geine e-mailcliënt geïnstalleerd</string>
<string name="provider_categories">Recèntelik gebroekde categorieje</string>
<string name="waiting_first_sync">Oppe ieëste synchronisatie \'nt wachte...</string>
<string name="no_uploads_yet">Doe höbs nag gein plaetjes geüpload.</string>
<string name="menu_retry_upload">Perbeer oppernuuj</string>
<string name="menu_cancel_upload">Braek aaf</string>
<string name="share_license_summary">Dit plaetje weurt gelicenseerd ónger %1$s</string>
<string name="media_upload_policy">Door dit plaetje toe te veuge verklaor ich det dit mien eige werk is en det \'t gein auteursrechtelik besjurmp matterjaal of selfies bevatj en angeszins instump mit \'t &lt;a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\"&gt;beleid op Wikimedia Commons&lt;/a&gt;.</string>
<string name="menu_download">Download</string>
<string name="preference_license">Standerdlicentie</string>
<string name="use_previous">Gebroek veurige naam/besjrieving</string>
<string name="allow_gps">Haol autematis de hujige locatie op</string>
<string name="allow_gps_summary">Haol de hujige locatie op veur categorieveurstèlle te make wen \'t bild gein geotags haet</string>
<string name="preference_theme">Nachmodus</string>
<string name="preference_theme_summary">Gebroeker duuster thema</string>
<string name="license_name_cc_by_sa_four"> Naamsvermeljing-GeliekDeile 4.0</string> <string name="license_name_cc_by_sa_four"> Naamsvermeljing-GeliekDeile 4.0</string>
<string name="license_name_cc_by_four">Naamsvermeljing 4.0</string> <string name="license_name_cc_by_four">Naamsvermeljing 4.0</string>
<string name="license_name_cc_by_sa">Naamsvermeljing-GeliekDeile 3.0</string> <string name="license_name_cc_by_sa">Naamsvermeljing-GeliekDeile 3.0</string>
@ -109,5 +130,41 @@
<string name="license_name_cc_zero">CC Zero</string> <string name="license_name_cc_zero">CC Zero</string>
<string name="tutorial_1_text">Op Wikimedia Commons staon de meiste plaetjes die waere gebroek op Wikipedia.</string> <string name="tutorial_1_text">Op Wikimedia Commons staon de meiste plaetjes die waere gebroek op Wikipedia.</string>
<string name="tutorial_1_subtext">Dien plaetjes helpe luuj oppe ganse werreld mit \'t opdoon van kènnis!</string> <string name="tutorial_1_subtext">Dien plaetjes helpe luuj oppe ganse werreld mit \'t opdoon van kènnis!</string>
<string name="tutorial_2_text">Upload estebleef allein plaetjes die gans door dichzelf zint gemaak:</string>
<string name="tutorial_2_subtext">Netuurobjekte (blome, bieëster, berg)\n• Henjige veurwerpe (fietsje, treinstaasjes)\n• Bekandje luuj (de börgermeisters, Olumpische atlete die se kins)</string>
<string name="tutorial_2_subtext_1">Netuurobjekte (blome, bieëster, berg)</string>
<string name="tutorial_2_subtext_2">Henjige veurwerpe (fietsje, treinstaasjes)</string>
<string name="tutorial_2_subtext_3">Bekandje luuj (de börgermeisters, Olumpische atlete die se kins)</string>
<string name="tutorial_3_text">Upload estebleef NEET:</string>
<string name="tutorial_3_subtext">- Selfies of foto\'s van dien vrunj\n- Foto\'s die se höbs downgeload van \'t internet\n- Sjermplaetjes van eige apps</string>
<string name="tutorial_3_subtext_1">Selfies of foto\'s van dien vrunj</string>
<string name="tutorial_3_subtext_2">Foto\'s die se höbs downgeload van \'t internet</string>
<string name="tutorial_3_subtext_3">Sjermplaetjes van eige apps</string>
<string name="tutorial_4_text">Uploadveurbild:</string>
<string name="tutorial_4_subtext">- Titel: Operahoes in Sydney\n- Besjrieving: Operahoes in Sydney gezeen vanaaf d\'n euverkantj vanne bej\n- Categorieje: Operahoes in Sydney vanoet \'t wèste, Operahoes in Sydney van wied aaf</string>
<string name="tutorial_4_subtext_1">Titel: Operahoes in Sydney</string>
<string name="tutorial_4_subtext_2">Besjrieving: Operahoes in Sydney gezeen vanaaf d\'n euverkantj vanne bej</string>
<string name="tutorial_4_subtext_3">Categorieje: Operahoes in Sydney vanoet \'t wèste, Operahoes in Sydney van wied aaf</string>
<string name="welcome_wikipedia_text">Draag dien plaetjes bie. Help Wikipedia-artikel toet laeve te kómme!</string>
<string name="welcome_wikipedia_subtext">Plaetjes op Wikipedia kómme van Wikimedia Commons.</string>
<string name="welcome_copyright_text">Dien plaetjes helpe luuj van euver de ganse werreld mit lieëre.</string>
<string name="welcome_copyright_subtext">Verkóm auteursrechtelik besjurmp matterjaal det se op internet höbs gevónje wie plaetjes van poeasters, beuk en zo wiejer.</string>
<string name="welcome_final_text">Versteis se \'t?</string>
<string name="welcome_final_button_text">Jao!</string>
<string name="detail_panel_cats_label">Categorieje</string>
<string name="detail_panel_cats_loading">\'nt laje...</string>
<string name="detail_panel_cats_none">Geine gekaoze</string>
<string name="detail_description_empty">Gein besjrieving</string>
<string name="detail_license_empty">Ónbekande licentie</string>
<string name="menu_refresh">Vernuuj</string> <string name="menu_refresh">Vernuuj</string>
<string name="ok">Klaor</string>
<string name="title_activity_nearby">Plaatse in de buurt</string>
<string name="no_nearby">Gein plaatse in de buurt gevónje</string>
<string name="warning">Waorsjoewing</string>
<string name="file_exists">Dit bestandj besteit al op Commons. Wèts se zeker det se door wils gaon?</string>
<string name="yes">Jao</string>
<string name="no">Nae</string>
<string name="media_detail_title">Titel</string>
<string name="media_detail_media_title">Bestandjstitel</string>
<string name="media_detail_description">Besjrieving</string>
</resources> </resources>

View file

@ -79,6 +79,7 @@
<string name="no"></string> <string name="no"></string>
<string name="media_detail_title">Nosaukums</string> <string name="media_detail_title">Nosaukums</string>
<string name="media_detail_description">Apraksts</string> <string name="media_detail_description">Apraksts</string>
<string name="media_detail_author">Autors</string>
<string name="media_detail_uploaded_date">Augšupielādēšanas datums</string> <string name="media_detail_uploaded_date">Augšupielādēšanas datums</string>
<string name="media_detail_license">Licence</string> <string name="media_detail_license">Licence</string>
<string name="media_detail_coordinates">Koordinātas</string> <string name="media_detail_coordinates">Koordinātas</string>

View file

@ -172,6 +172,7 @@
<string name="media_detail_media_title">Tytuł pliku</string> <string name="media_detail_media_title">Tytuł pliku</string>
<string name="media_detail_description">Opis</string> <string name="media_detail_description">Opis</string>
<string name="media_detail_description_explanation">Tu jest miejsce na opis pliku. Mogą być dość długie i wymagać przewijania podczas czytania. Chcemy, by wszystko wyglądało dobrze.</string> <string name="media_detail_description_explanation">Tu jest miejsce na opis pliku. Mogą być dość długie i wymagać przewijania podczas czytania. Chcemy, by wszystko wyglądało dobrze.</string>
<string name="media_detail_author">Autor</string>
<string name="media_detail_uploaded_date">Data przesłania</string> <string name="media_detail_uploaded_date">Data przesłania</string>
<string name="media_detail_license">Licencja</string> <string name="media_detail_license">Licencja</string>
<string name="media_detail_coordinates">Współrzędne</string> <string name="media_detail_coordinates">Współrzędne</string>

View file

@ -89,6 +89,7 @@
<string name="media_detail_title">عنوان</string> <string name="media_detail_title">عنوان</string>
<string name="media_detail_media_title">میڈیا دا عنوان</string> <string name="media_detail_media_title">میڈیا دا عنوان</string>
<string name="media_detail_description">تفصیل</string> <string name="media_detail_description">تفصیل</string>
<string name="media_detail_author">مصنف</string>
<string name="media_detail_uploaded_date">اپ لوڈ تھیوݨ دی تاریخ</string> <string name="media_detail_uploaded_date">اپ لوڈ تھیوݨ دی تاریخ</string>
<string name="media_detail_license">لائیسنس</string> <string name="media_detail_license">لائیسنس</string>
<string name="media_detail_coordinates">کوآرڈینیٹ</string> <string name="media_detail_coordinates">کوآرڈینیٹ</string>
@ -113,6 +114,7 @@
<string name="navigation_item_feedback">تہاڈی رائے</string> <string name="navigation_item_feedback">تہاڈی رائے</string>
<string name="navigation_item_logout">لاگ آؤٹ</string> <string name="navigation_item_logout">لاگ آؤٹ</string>
<string name="navigation_item_info">ٹیٹوریل</string> <string name="navigation_item_info">ٹیٹوریل</string>
<string name="navigation_item_featured_images">خاص</string>
<string name="nearby_info_menu_wikidata_article">وکی ڈیٹا آئٹم</string> <string name="nearby_info_menu_wikidata_article">وکی ڈیٹا آئٹم</string>
<string name="nearby_info_menu_wikipedia_article">وکی پیڈیا دا مضمون</string> <string name="nearby_info_menu_wikipedia_article">وکی پیڈیا دا مضمون</string>
<string name="give_permission">اجازت ݙیوو</string> <string name="give_permission">اجازت ݙیوو</string>

View file

@ -16,6 +16,7 @@
<string name="preference_category_feedback">Geri bildirim</string> <string name="preference_category_feedback">Geri bildirim</string>
<string name="preference_category_location">Konum</string> <string name="preference_category_location">Konum</string>
<string name="app_name">Commons</string> <string name="app_name">Commons</string>
<string name="bullet"></string>
<string name="menu_settings">Ayarlar</string> <string name="menu_settings">Ayarlar</string>
<string name="username">Kullanıcı adı</string> <string name="username">Kullanıcı adı</string>
<string name="password">Parola</string> <string name="password">Parola</string>
@ -91,6 +92,7 @@
<string name="categories_activity_title">Kategoriler</string> <string name="categories_activity_title">Kategoriler</string>
<string name="title_activity_settings">Ayarlar</string> <string name="title_activity_settings">Ayarlar</string>
<string name="title_activity_signup">Kaydol</string> <string name="title_activity_signup">Kaydol</string>
<string name="title_activity_featured_images">Seçkin Resimler</string>
<string name="menu_about">Hakkında</string> <string name="menu_about">Hakkında</string>
<string name="about_license">Wikimedia Commons uygulaması, Wikimedia topluluğunun imtiyaz sahibi ve gönüllüleri tarafından oluşturulmuş ve sürdürülmüş açık kaynak kodlu bir uygulamadır. Vikipedi Vakfı, uygulamanın oluşturulması, geliştirilmesi veya bakımına dahil değildir.</string> <string name="about_license">Wikimedia Commons uygulaması, Wikimedia topluluğunun imtiyaz sahibi ve gönüllüleri tarafından oluşturulmuş ve sürdürülmüş açık kaynak kodlu bir uygulamadır. Vikipedi Vakfı, uygulamanın oluşturulması, geliştirilmesi veya bakımına dahil değildir.</string>
<string name="about_improve">GitHub üzerinde &lt;a href=\"https://github.com/commons-app/apps-android-commons\"&gt;Kaynak&lt;/a&gt; ve &lt;a href=\"https://commons-app.github.io/\"&gt;website&lt;/a&gt;. Hata raporları ve önerileri için yeni bir &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;GitHub sorunu&lt;/a&gt; oluştur.</string> <string name="about_improve">GitHub üzerinde &lt;a href=\"https://github.com/commons-app/apps-android-commons\"&gt;Kaynak&lt;/a&gt; ve &lt;a href=\"https://commons-app.github.io/\"&gt;website&lt;/a&gt;. Hata raporları ve önerileri için yeni bir &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;GitHub sorunu&lt;/a&gt; oluştur.</string>
@ -149,6 +151,7 @@
<string name="tutorial_4_subtext">- Başlık: Sydney Opera Binası\n- Tanım: Körfezin genelinden bakıldığında Sydney Opera Binası\n- Kategoriler: Sydney Opera Binası, batıdan Sydney Opera Binası</string> <string name="tutorial_4_subtext">- Başlık: Sydney Opera Binası\n- Tanım: Körfezin genelinden bakıldığında Sydney Opera Binası\n- Kategoriler: Sydney Opera Binası, batıdan Sydney Opera Binası</string>
<string name="tutorial_4_subtext_1">Başlık: Sidney Opera Binası</string> <string name="tutorial_4_subtext_1">Başlık: Sidney Opera Binası</string>
<string name="tutorial_4_subtext_2">ıklama: Sidney Opera Binası\'nın körfezin karşısından görünümü</string> <string name="tutorial_4_subtext_2">ıklama: Sidney Opera Binası\'nın körfezin karşısından görünümü</string>
<string name="tutorial_4_subtext_3">Kategoriler: Batıdan Sidney Opera Binası, Sidney Opera Binası uzaktan manzaraları</string>
<string name="welcome_wikipedia_text">Resimleriniz ile Vikipedi maddelerinin canlandırılmasına katkıda bulunabilirsiniz!</string> <string name="welcome_wikipedia_text">Resimleriniz ile Vikipedi maddelerinin canlandırılmasına katkıda bulunabilirsiniz!</string>
<string name="welcome_wikipedia_subtext">Vikipedi\'ye Wikimedia Commons\'tan gelen görüntüler.</string> <string name="welcome_wikipedia_subtext">Vikipedi\'ye Wikimedia Commons\'tan gelen görüntüler.</string>
<string name="welcome_copyright_text">Görüntüler dünya insanlarının eğitiminde yardımcı olur.</string> <string name="welcome_copyright_text">Görüntüler dünya insanlarının eğitiminde yardımcı olur.</string>
@ -161,8 +164,8 @@
<string name="detail_description_empty">ıklama yok</string> <string name="detail_description_empty">ıklama yok</string>
<string name="detail_license_empty">Bilinmeyen lisans</string> <string name="detail_license_empty">Bilinmeyen lisans</string>
<string name="menu_refresh">Yenile</string> <string name="menu_refresh">Yenile</string>
<string name="read_storage_permission_rationale" fuzzy="true">Gerekli izinler: Harici depolama biriminin okunması. Uygulama buna izin verilmeden çalışmaz.</string> <string name="read_storage_permission_rationale">Gerekli izin: Harici belleği oku. Uygulama, galerinize bu olmadan erişemez.</string>
<string name="write_storage_permission_rationale" fuzzy="true">Gerekli izin: Harici depolama birimi üzerine yazma. Uygulama buna izin verilmeden çalışmaz.</string> <string name="write_storage_permission_rationale">Gerekli izin: Harici depolama yazın. Uygulama kameranıza bu olmadan erişemez.</string>
<string name="location_permission_rationale">İsteğe bağlı izin: Kategori önerileri için geçerli konum alma</string> <string name="location_permission_rationale">İsteğe bağlı izin: Kategori önerileri için geçerli konum alma</string>
<string name="ok">Tamam</string> <string name="ok">Tamam</string>
<string name="title_activity_nearby">Yakındaki yerler</string> <string name="title_activity_nearby">Yakındaki yerler</string>
@ -175,6 +178,8 @@
<string name="media_detail_media_title">Medyanın başlığı</string> <string name="media_detail_media_title">Medyanın başlığı</string>
<string name="media_detail_description">ıklama</string> <string name="media_detail_description">ıklama</string>
<string name="media_detail_description_explanation">Medya için yapılan tanımı/açıklamayı buraya yazınız. Açıklamanız uzun olabilir ve birden fazla satıra sığabilir. Umuyoruz ki güzel ve bilgilendirici olacaktır.</string> <string name="media_detail_description_explanation">Medya için yapılan tanımı/açıklamayı buraya yazınız. Açıklamanız uzun olabilir ve birden fazla satıra sığabilir. Umuyoruz ki güzel ve bilgilendirici olacaktır.</string>
<string name="media_detail_author">Yazar</string>
<string name="media_detail_author_explanation">Seçkin resim yazarının kullanıcı adı buraya eklenir.</string>
<string name="media_detail_uploaded_date">Yükleme tarihi</string> <string name="media_detail_uploaded_date">Yükleme tarihi</string>
<string name="media_detail_license">Lisans</string> <string name="media_detail_license">Lisans</string>
<string name="media_detail_coordinates">Koordinatlar</string> <string name="media_detail_coordinates">Koordinatlar</string>
@ -217,6 +222,7 @@
<string name="navigation_item_logout">Çıkış</string> <string name="navigation_item_logout">Çıkış</string>
<string name="navigation_item_info">Eğitim</string> <string name="navigation_item_info">Eğitim</string>
<string name="navigation_item_notification">Bildirimler</string> <string name="navigation_item_notification">Bildirimler</string>
<string name="navigation_item_featured_images">Seçkin</string>
<string name="nearby_needs_permissions">Yakındaki yerler, konum izinleri olmadan görüntülenemez</string> <string name="nearby_needs_permissions">Yakındaki yerler, konum izinleri olmadan görüntülenemez</string>
<string name="no_description_found">hiçbir açıklama bulunamadı</string> <string name="no_description_found">hiçbir açıklama bulunamadı</string>
<string name="nearby_info_menu_commons_article">Commons dosya sayfası</string> <string name="nearby_info_menu_commons_article">Commons dosya sayfası</string>
@ -244,7 +250,25 @@
<string name="get_directions">TALİMATLAR</string> <string name="get_directions">TALİMATLAR</string>
<string name="read_article">MADDE OKU</string> <string name="read_article">MADDE OKU</string>
<string name="notifications_welcome">Wikimedia Commons\'a hoşgedin %1$s! Burada olduğun için mutluyuz.</string> <string name="notifications_welcome">Wikimedia Commons\'a hoşgedin %1$s! Burada olduğun için mutluyuz.</string>
<string name="notifications_talk_page_message">%1$s mesaj sayfasınıza bir mesaj bıraktı.</string>
<string name="notifications_thank_you_edit">Düzenlemeniz için teşekkürler</string> <string name="notifications_thank_you_edit">Düzenlemeniz için teşekkürler</string>
<string name="notifications_mention">%1$s , %2$s \'de senden bahsetti</string> <string name="notifications_mention">%1$s , %2$s \'de senden bahsetti</string>
<string name="toggle_view_button">Görünümü değiştir</string>
<string name="nearby_directions">YOL TARİFİ</string> <string name="nearby_directions">YOL TARİFİ</string>
<string name="nearby_wikidata">VİKİVERİ</string>
<string name="nearby_wikipedia">VİKİPEDİ</string>
<string name="nearby_commons">COMMONS</string>
<string name="about_rate_us">&lt;u&gt;Bizi oyla&lt;/u&gt;</string>
<string name="about_faq">&lt;u&gt;SSS&lt;/u&gt;</string>
<string name="welcome_skip_button">Eğiticiyi Atla</string>
<string name="no_internet">İnternet kullanılamıyor</string>
<string name="internet_established">İnternet kullanılabilir</string>
<string name="error_notifications">Bildirim alınırken hata oluştu</string>
<string name="no_notifications">Bildirim bulunamadı</string>
<string name="about_translate">&lt;u&gt;Çevir&lt;/u&gt;</string>
<string name="about_translate_title">Diller</string>
<string name="about_translate_message">Çevirileri göndermek istediğiniz dili seçin</string>
<string name="about_translate_proceed">İlerle</string>
<string name="about_translate_cancel">Vazgeç</string>
<string name="retry">Tekrar Deneyin</string>
</resources> </resources>

View file

@ -149,6 +149,7 @@
<string name="welcome_copyright_subtext">Avoid copyrighted materials you found from the Internet as well as images of posters, book covers, etc.</string> <string name="welcome_copyright_subtext">Avoid copyrighted materials you found from the Internet as well as images of posters, book covers, etc.</string>
<string name="welcome_final_text">You think you got it?</string> <string name="welcome_final_text">You think you got it?</string>
<string name="welcome_final_button_text">Yes!</string> <string name="welcome_final_button_text">Yes!</string>
<string name="welcome_help_button_text"><u>More Information</u></string>
<string name="detail_panel_cats_label">Categories</string> <string name="detail_panel_cats_label">Categories</string>
<string name="detail_panel_cats_loading">Loading…</string> <string name="detail_panel_cats_loading">Loading…</string>
<string name="detail_panel_cats_none">None selected</string> <string name="detail_panel_cats_none">None selected</string>

View file

@ -52,10 +52,10 @@
<PreferenceCategory <PreferenceCategory
android:title="@string/preference_category_feedback"> android:title="@string/preference_category_feedback">
<Preference android:title="@string/become_a_tester_title" <Preference
android:key="becomeBetaTester"
android:title="@string/become_a_tester_title"
android:summary="@string/become_a_tester_description"> android:summary="@string/become_a_tester_description">
<intent android:action="android.intent.action.VIEW"
android:data="@string/beta_opt_in_link" />
</Preference> </Preference>
<Preference <Preference