Merge remote-tracking branch 'refs/remotes/commons-app/master'
|
|
@ -10,6 +10,7 @@ dependencies {
|
|||
implementation 'com.github.nicolas-raoul:Quadtree:ac16ea8035bf07'
|
||||
implementation 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'
|
||||
implementation 'in.yuvi:http.fluent:1.3'
|
||||
implementation 'com.github.chrisbanes:PhotoView:2.0.0'
|
||||
implementation 'com.android.volley:volley:1.0.0'
|
||||
implementation 'ch.acra:acra:4.9.2'
|
||||
implementation 'org.mediawiki:api:1.3'
|
||||
|
|
@ -34,7 +35,7 @@ dependencies {
|
|||
implementation "com.jakewharton:butterknife:$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 'io.reactivex.rxjava2:rxandroid:2.0.1'
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package fr.free.nrw.commons;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.view.PagerAdapter;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
@ -9,6 +10,7 @@ import android.widget.TextView;
|
|||
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import butterknife.Optional;
|
||||
|
||||
public class WelcomePagerAdapter extends PagerAdapter {
|
||||
static final int[] PAGE_LAYOUTS = new int[]{
|
||||
|
|
@ -20,6 +22,7 @@ public class WelcomePagerAdapter extends PagerAdapter {
|
|||
};
|
||||
private static final int PAGE_FINAL = 4;
|
||||
private Callback callback;
|
||||
private ViewGroup container;
|
||||
|
||||
/**
|
||||
* Changes callback to provided one
|
||||
|
|
@ -53,6 +56,7 @@ public class WelcomePagerAdapter extends PagerAdapter {
|
|||
|
||||
@Override
|
||||
public Object instantiateItem(ViewGroup container, int position) {
|
||||
this.container=container;
|
||||
LayoutInflater inflater = LayoutInflater.from(container.getContext());
|
||||
ViewGroup layout = (ViewGroup) inflater.inflate(PAGE_LAYOUTS[position], container, false);
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import android.widget.EditText;
|
|||
import android.widget.TextView;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
|
@ -83,6 +84,10 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
private LoginTextWatcher textWatcher = new LoginTextWatcher();
|
||||
|
||||
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";
|
||||
|
||||
@Override
|
||||
|
|
@ -123,7 +128,7 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
|
||||
forgotPasswordText.setOnClickListener(view -> forgotPassword());
|
||||
|
||||
if(BuildConfig.FLAVOR == "beta"){
|
||||
if(BuildConfig.FLAVOR.equals("beta")){
|
||||
loginCredentials.setText(getString(R.string.login_credential));
|
||||
} else {
|
||||
loginCredentials.setVisibility(View.GONE);
|
||||
|
|
@ -140,8 +145,12 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
}
|
||||
|
||||
public void hideKeyboard(View view) {
|
||||
InputMethodManager inputMethodManager =(InputMethodManager)this.getSystemService(Activity.INPUT_METHOD_SERVICE);
|
||||
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||
if (view != null) {
|
||||
InputMethodManager inputMethodManager = (InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE);
|
||||
if (inputMethodManager != null) {
|
||||
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -216,6 +225,8 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
handlePassResult(username, password);
|
||||
} else {
|
||||
loginCurrentlyInProgress = false;
|
||||
errorMessageShown = true;
|
||||
resultantError = result;
|
||||
handleOtherResults(result);
|
||||
}
|
||||
}
|
||||
|
|
@ -267,18 +278,18 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
if (result.equals("NetworkFailure")) {
|
||||
// Matches NetworkFailure which is created by the doInBackground method
|
||||
showMessageAndCancelDialog(R.string.login_failed_network);
|
||||
} else if (result.toLowerCase().contains("nosuchuser".toLowerCase()) || result.toLowerCase().contains("noname".toLowerCase())) {
|
||||
} else if (result.toLowerCase(Locale.getDefault()).contains("nosuchuser".toLowerCase()) || result.toLowerCase().contains("noname".toLowerCase())) {
|
||||
// Matches nosuchuser, nosuchusershort, noname
|
||||
showMessageAndCancelDialog(R.string.login_failed_username);
|
||||
emptySensitiveEditFields();
|
||||
} else if (result.toLowerCase().contains("wrongpassword".toLowerCase())) {
|
||||
} else if (result.toLowerCase(Locale.getDefault()).contains("wrongpassword".toLowerCase())) {
|
||||
// Matches wrongpassword, wrongpasswordempty
|
||||
showMessageAndCancelDialog(R.string.login_failed_password);
|
||||
emptySensitiveEditFields();
|
||||
} else if (result.toLowerCase().contains("throttle".toLowerCase())) {
|
||||
} else if (result.toLowerCase(Locale.getDefault()).contains("throttle".toLowerCase())) {
|
||||
// Matches unknown throttle error codes
|
||||
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
|
||||
showMessageAndCancelDialog(R.string.login_failed_blocked);
|
||||
} else if (result.equals("2FA")) {
|
||||
|
|
@ -342,15 +353,22 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putBoolean(LOGING_IN, loginCurrentlyInProgress);
|
||||
outState.putBoolean(ERROR_MESSAGE_SHOWN, errorMessageShown);
|
||||
outState.putString(RESULTANT_ERROR, resultantError);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRestoreInstanceState(Bundle savedInstanceState) {
|
||||
super.onRestoreInstanceState(savedInstanceState);
|
||||
loginCurrentlyInProgress = savedInstanceState.getBoolean(LOGING_IN, false);
|
||||
errorMessageShown = savedInstanceState.getBoolean(ERROR_MESSAGE_SHOWN, false);
|
||||
if(loginCurrentlyInProgress){
|
||||
performLogin();
|
||||
}
|
||||
if(errorMessageShown){
|
||||
resultantError = savedInstanceState.getString(RESULTANT_ERROR);
|
||||
handleOtherResults(resultantError);
|
||||
}
|
||||
}
|
||||
|
||||
public void askUserForTwoFactorAuth() {
|
||||
|
|
@ -362,7 +380,9 @@ public class LoginActivity extends AccountAuthenticatorActivity {
|
|||
|
||||
public void showMessageAndCancelDialog(@StringRes int resId) {
|
||||
showMessage(resId, R.color.secondaryDarkColor);
|
||||
progressDialog.cancel();
|
||||
if(progressDialog != null){
|
||||
progressDialog.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
public void showSuccessAndDismissDialog() {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import android.support.v7.widget.RecyclerView;
|
|||
import android.text.Editable;
|
||||
import android.text.TextUtils;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
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.mwapi.MediaWikiApi;
|
||||
import fr.free.nrw.commons.upload.MwVolleyApi;
|
||||
import fr.free.nrw.commons.upload.SingleUploadFragment;
|
||||
import fr.free.nrw.commons.utils.StringSortingUtils;
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
|
|
@ -131,8 +129,13 @@ public class CategorizationFragment extends CommonsDaggerSupportFragment {
|
|||
}
|
||||
|
||||
public void hideKeyboard(View view) {
|
||||
InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
|
||||
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||
|
||||
if (view != null) {
|
||||
InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
|
||||
if (inputMethodManager != null) {
|
||||
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ public class DeleteTask extends AsyncTask<Void, Integer, Boolean> {
|
|||
|
||||
String logPageString = "\n{{Commons:Deletion requests/" + media.getFilename() +
|
||||
"}}\n";
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd", Locale.getDefault());
|
||||
String date = sdf.format(calendar.getTime());
|
||||
|
||||
String userPageString = "\n{{subst:idw|" + media.getFilename() +
|
||||
|
|
|
|||
|
|
@ -16,11 +16,6 @@ import dagger.android.support.DaggerFragment;
|
|||
import fr.free.nrw.commons.Media;
|
||||
import fr.free.nrw.commons.R;
|
||||
|
||||
|
||||
/**
|
||||
* Created by root on 09.01.2018.
|
||||
*/
|
||||
|
||||
public class FeaturedImagesListFragment extends DaggerFragment {
|
||||
private GridView gridView;
|
||||
private MockGridViewAdapter gridAdapter;
|
||||
|
|
|
|||
|
|
@ -458,7 +458,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
|
|||
if (date == null || date.toString() == null || date.toString().isEmpty()) {
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -369,7 +369,7 @@ public class NearbyActivity extends NavigationBaseActivity implements LocationUp
|
|||
Gson gson = new GsonBuilder()
|
||||
.registerTypeAdapter(Uri.class, new UriSerializer())
|
||||
.create();
|
||||
String gsonCurLatLng = gson.toJson(curLatLang);
|
||||
String gsonCurLatLng = gson.toJson(curLatLng);
|
||||
bundle.clear();
|
||||
bundle.putString("CurLatLng", gsonCurLatLng);
|
||||
|
||||
|
|
|
|||
|
|
@ -102,6 +102,11 @@ public class SettingsFragment extends PreferenceFragment {
|
|||
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");
|
||||
sendLogsPreference.setOnPreferenceClickListener(preference -> {
|
||||
//first we need to check if we have the necessary permissions
|
||||
|
|
@ -128,8 +133,8 @@ public class SettingsFragment extends PreferenceFragment {
|
|||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
if (requestCode == REQUEST_CODE_WRITE_EXTERNAL_STORAGE) {
|
||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
if (requestCode == REQUEST_CODE_WRITE_EXTERNAL_STORAGE && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
{
|
||||
sendAppLogsViaEmail();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ public class FileUtils {
|
|||
|
||||
final String id = DocumentsContract.getDocumentId(uri);
|
||||
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);
|
||||
} else if (isMediaDocument(uri)) { // MediaProvider
|
||||
|
|
|
|||
|
|
@ -166,7 +166,8 @@ public class MultipleShareActivity extends AuthenticatedActivity
|
|||
View target = getCurrentFocus();
|
||||
if (target != null) {
|
||||
InputMethodManager imm = (InputMethodManager) target.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
imm.hideSoftInputFromWindow(target.getWindowToken(), 0);
|
||||
if (imm != null)
|
||||
imm.hideSoftInputFromWindow(target.getWindowToken(), 0);
|
||||
}
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.add(R.id.uploadsFragmentContainer, categorizationFragment, "categorization")
|
||||
|
|
@ -221,8 +222,8 @@ public class MultipleShareActivity extends AuthenticatedActivity
|
|||
|
||||
//TODO: 15/10/17 should location permission be explicitly requested if not provided?
|
||||
//check if location permission is enabled
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
if (ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
|
||||
{
|
||||
locationPermitted = true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import android.text.Editable;
|
|||
import android.text.TextUtils;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
|
|
@ -89,9 +88,9 @@ public class MultipleUploadListFragment extends Fragment {
|
|||
if (view == null) {
|
||||
view = LayoutInflater.from(getContext()).inflate(R.layout.layout_upload_item, viewGroup, false);
|
||||
holder = new UploadHolderView();
|
||||
holder.image = (SimpleDraweeView) view.findViewById(R.id.uploadImage);
|
||||
holder.title = (TextView) view.findViewById(R.id.uploadTitle);
|
||||
holder.overlay = (RelativeLayout) view.findViewById(R.id.uploadOverlay);
|
||||
holder.image = view.findViewById(R.id.uploadImage);
|
||||
holder.title = view.findViewById(R.id.uploadTitle);
|
||||
holder.overlay = view.findViewById(R.id.uploadOverlay);
|
||||
|
||||
holder.image.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, photoSize.y));
|
||||
holder.image.setHierarchy(GenericDraweeHierarchyBuilder
|
||||
|
|
@ -129,11 +128,8 @@ public class MultipleUploadListFragment extends Fragment {
|
|||
super.onStop();
|
||||
|
||||
// FIXME: Stops the keyboard from being shown 'stale' while moving out of this fragment into the next
|
||||
View target = getView().findFocus();
|
||||
if (target != null) {
|
||||
InputMethodManager imm = (InputMethodManager) target.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
imm.hideSoftInputFromWindow(target.getWindowToken(), 0);
|
||||
}
|
||||
View target = getActivity().getCurrentFocus();
|
||||
hideKeyboard(target);
|
||||
}
|
||||
|
||||
// FIXME: Wrong result type
|
||||
|
|
@ -169,8 +165,8 @@ public class MultipleUploadListFragment extends Fragment {
|
|||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_multiple_uploads_list, container, false);
|
||||
photosGrid = (GridView) view.findViewById(R.id.multipleShareBackground);
|
||||
baseTitle = (EditText) view.findViewById(R.id.multipleBaseTitle);
|
||||
photosGrid = view.findViewById(R.id.multipleShareBackground);
|
||||
baseTitle = view.findViewById(R.id.multipleBaseTitle);
|
||||
|
||||
photosAdapter = new PhotoDisplayAdapter();
|
||||
photosGrid.setAdapter(photosAdapter);
|
||||
|
|
@ -190,8 +186,12 @@ public class MultipleUploadListFragment extends Fragment {
|
|||
}
|
||||
|
||||
public void hideKeyboard(View view) {
|
||||
InputMethodManager inputMethodManager =(InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
|
||||
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||
if (view != null) {
|
||||
InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
|
||||
if (inputMethodManager != null) {
|
||||
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -2,33 +2,50 @@ package fr.free.nrw.commons.upload;
|
|||
|
||||
import android.Manifest;
|
||||
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.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
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.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.ParcelFileDescriptor;
|
||||
import android.provider.MediaStore;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.RequiresApi;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.graphics.drawable.VectorDrawableCompat;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.graphics.BitmapCompat;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.util.Log;
|
||||
import android.view.MenuItem;
|
||||
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.Toast;
|
||||
|
||||
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
|
||||
import com.facebook.drawee.view.SimpleDraweeView;
|
||||
import com.github.chrisbanes.photoview.PhotoView;
|
||||
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
|
|
@ -63,8 +80,11 @@ import fr.free.nrw.commons.utils.ImageUtils;
|
|||
import fr.free.nrw.commons.mwapi.MediaWikiApi;
|
||||
import timber.log.Timber;
|
||||
|
||||
|
||||
|
||||
import static fr.free.nrw.commons.upload.ExistingFileAsync.Result.DUPLICATE_PROCEED;
|
||||
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
|
||||
|
|
@ -120,6 +140,12 @@ public class ShareActivity
|
|||
private boolean haveCheckedForOtherImages = false;
|
||||
private boolean isNearbyUpload = false;
|
||||
|
||||
private Animator CurrentAnimator;
|
||||
private long ShortAnimationDuration;
|
||||
private FloatingActionButton zoomInButton;
|
||||
private FloatingActionButton zoomOutButton;
|
||||
|
||||
|
||||
/**
|
||||
* Called when user taps the submit button.
|
||||
*/
|
||||
|
|
@ -257,6 +283,18 @@ public class ShareActivity
|
|||
if (mediaUri != null) {
|
||||
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) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,21 +3,20 @@ package fr.free.nrw.commons.upload;
|
|||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
|
||||
import android.text.Editable;
|
||||
import android.text.Html;
|
||||
import android.text.TextWatcher;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.util.Log;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
|
|
@ -61,6 +60,7 @@ public class SingleUploadFragment extends CommonsDaggerSupportFragment {
|
|||
@BindView(R.id.share_license_summary) TextView licenseSummaryView;
|
||||
@BindView(R.id.licenseSpinner) Spinner licenseSpinner;
|
||||
|
||||
|
||||
@Inject @Named("default_preferences") SharedPreferences prefs;
|
||||
@Inject @Named("direct_nearby_upload_prefs") SharedPreferences directPrefs;
|
||||
|
||||
|
|
@ -184,9 +184,12 @@ public class SingleUploadFragment extends CommonsDaggerSupportFragment {
|
|||
}
|
||||
|
||||
public void hideKeyboard(View view) {
|
||||
Log.i("hide", "hideKeyboard: ");
|
||||
InputMethodManager inputMethodManager =(InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
|
||||
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||
if (view != null) {
|
||||
InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
|
||||
if (inputMethodManager != null) {
|
||||
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -224,7 +227,7 @@ public class SingleUploadFragment extends CommonsDaggerSupportFragment {
|
|||
setLicenseSummary(license);
|
||||
prefs.edit()
|
||||
.putString(Prefs.DEFAULT_LICENSE, license)
|
||||
.commit();
|
||||
.apply();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -301,11 +304,8 @@ public class SingleUploadFragment extends CommonsDaggerSupportFragment {
|
|||
super.onStop();
|
||||
|
||||
// FIXME: Stops the keyboard from being shown 'stale' while moving out of this fragment into the next
|
||||
View target = getView().findFocus();
|
||||
if (target != null) {
|
||||
InputMethodManager imm = (InputMethodManager) target.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
imm.hideSoftInputFromWindow(target.getWindowToken(), 0);
|
||||
}
|
||||
View target = getActivity().getCurrentFocus();
|
||||
hideKeyboard(target);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
|
@ -346,6 +346,7 @@ public class SingleUploadFragment extends CommonsDaggerSupportFragment {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private void showInfoAlert (int titleStringID, int messageStringID){
|
||||
new AlertDialog.Builder(getContext())
|
||||
.setTitle(titleStringID)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package fr.free.nrw.commons.utils;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.Locale;
|
||||
|
||||
import info.debatty.java.stringsimilarity.Levenshtein;
|
||||
|
||||
|
|
@ -28,8 +29,8 @@ public class StringSortingUtils {
|
|||
}
|
||||
|
||||
private static double calculateSimilarity(String firstString, String secondString) {
|
||||
String longer = firstString.toLowerCase();
|
||||
String shorter = secondString.toLowerCase();
|
||||
String longer = firstString.toLowerCase(Locale.getDefault());
|
||||
String shorter = secondString.toLowerCase(Locale.getDefault());
|
||||
|
||||
if (firstString.length() < secondString.length()) {
|
||||
longer = secondString;
|
||||
|
|
|
|||
BIN
app/src/main/res/drawable-hdpi/ic_zoom_in_white_24dp.png
Normal file
|
After Width: | Height: | Size: 422 B |
BIN
app/src/main/res/drawable-hdpi/ic_zoom_out_white_24dp.png
Normal file
|
After Width: | Height: | Size: 412 B |
BIN
app/src/main/res/drawable-mdpi/ic_zoom_in_white_24dp.png
Normal file
|
After Width: | Height: | Size: 257 B |
BIN
app/src/main/res/drawable-mdpi/ic_zoom_out_white_24dp.png
Normal file
|
After Width: | Height: | Size: 249 B |
BIN
app/src/main/res/drawable-xhdpi/ic_zoom_in_white_24dp.png
Normal file
|
After Width: | Height: | Size: 486 B |
BIN
app/src/main/res/drawable-xhdpi/ic_zoom_out_white_24dp.png
Normal file
|
After Width: | Height: | Size: 470 B |
BIN
app/src/main/res/drawable-xxhdpi/ic_zoom_in_white_24dp.png
Normal file
|
After Width: | Height: | Size: 737 B |
BIN
app/src/main/res/drawable-xxhdpi/ic_zoom_out_white_24dp.png
Normal file
|
After Width: | Height: | Size: 731 B |
BIN
app/src/main/res/drawable-xxxhdpi/ic_zoom_in_white_24dp.png
Normal file
|
After Width: | Height: | Size: 954 B |
BIN
app/src/main/res/drawable-xxxhdpi/ic_zoom_out_white_24dp.png
Normal file
|
After Width: | Height: | Size: 925 B |
BIN
app/src/main/res/drawable/ic_zoom_in_white_24dp.png
Normal file
|
After Width: | Height: | Size: 422 B |
BIN
app/src/main/res/drawable/ic_zoom_out_white_24dp.png
Normal file
|
After Width: | Height: | Size: 412 B |
|
|
@ -1,13 +1,33 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="horizontal"
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
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. -->
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -59,6 +79,8 @@
|
|||
android:textColor="#0c609c"
|
||||
android:textStyle="bold"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
|
@ -19,7 +19,8 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@id/toolbar"
|
||||
android:background="?attr/mainBackground">
|
||||
android:background="?attr/mainBackground"
|
||||
android:id="@+id/container">
|
||||
|
||||
<com.facebook.drawee.view.SimpleDraweeView
|
||||
android:id="@+id/backgroundImage"
|
||||
|
|
@ -32,7 +33,35 @@
|
|||
android:layout_width="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>
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
<android.support.design.widget.NavigationView
|
||||
|
|
|
|||
|
|
@ -88,3 +88,4 @@
|
|||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
android:textColor="#FFFFFFFF"
|
||||
style="?android:textAppearanceSmall"
|
||||
/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</FrameLayout>
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@android:id/text1"
|
||||
style="?android:attr/spinnerDropDownItemStyle"
|
||||
android:maxLines="1"
|
||||
android:singleLine="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?android:attr/listPreferredItemHeight"
|
||||
android:ellipsize="marquee"
|
||||
|
|
|
|||
|
|
@ -1,14 +1,18 @@
|
|||
<?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:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#0c609c"
|
||||
android:gravity="center_vertical"
|
||||
>
|
||||
|
||||
<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_gravity="center_horizontal"
|
||||
android:layout_height="180dp"
|
||||
|
|
@ -60,4 +64,22 @@
|
|||
android:textStyle="bold"
|
||||
/>
|
||||
|
||||
</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>
|
||||
|
|
@ -71,6 +71,7 @@
|
|||
<string name="categories_search_text_hint">Etsi luokkia</string>
|
||||
<string name="menu_save_categories">Tallenna</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="enable_gps">Ota GPS käyttöön</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_license_empty">Tuntematon lisenssi</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="write_storage_permission_rationale" fuzzy="true">Vaadittava lupa: Kirjoita ulkoiseen tallennustilaan. Sovellus ei voi toimia ilman tätä.</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">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="ok">OK</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_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_author">Tekijä</string>
|
||||
<string name="media_detail_uploaded_date">Tallennuspäivämäärä</string>
|
||||
<string name="media_detail_license">Lisenssi</string>
|
||||
<string name="media_detail_coordinates">Koordinaatit</string>
|
||||
|
|
@ -221,6 +223,7 @@
|
|||
<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_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="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>
|
||||
|
|
@ -233,6 +236,9 @@
|
|||
<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="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_not_available">Sijainti ei käytettävissä.</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_mention">%1$s mainitsi sinut %2$s.</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"><u>Arvostele meidät</u></string>
|
||||
<string name="about_faq"><u>UKK</u></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"><u>Käännä</u></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>
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
* ViDam
|
||||
-->
|
||||
<resources>
|
||||
<string name="preference_category_general">Általános</string>
|
||||
<string name="preference_category_feedback">Visszajelzés</string>
|
||||
<string name="preference_category_location">Helyszín</string>
|
||||
<string name="app_name">Commons</string>
|
||||
|
|
@ -54,6 +55,7 @@
|
|||
<string name="menu_share">Megosztás</string>
|
||||
<string name="menu_open_in_browser">Megtekintés böngészőben</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="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>
|
||||
|
|
@ -91,11 +93,12 @@
|
|||
<string name="categories_activity_title">Kategóriák</string>
|
||||
<string name="title_activity_settings">Beállítások</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="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 <a href=\"https://github.com/commons-app/apps-android-commons/issues\">GitHub-problémát</a> hibabejelentéssel vagy fejlesztési javaslattal.</string>
|
||||
<string name="about_privacy_policy" fuzzy="true"><a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\">Adatvédelmi irányelvek</a></string>
|
||||
<string name="about_credits" fuzzy="true"><a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\">Köszönetnyilvánítás</a></string>
|
||||
<string name="about_privacy_policy"><u>Adatvédelmi irányelvek</u></string>
|
||||
<string name="about_credits"><u>Köszönetnyilvánítás</u></string>
|
||||
<string name="title_activity_about">Névjegy</string>
|
||||
<string name="menu_feedback">Visszajelzés küldése (e-mailben)</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_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_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_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>
|
||||
|
|
@ -168,6 +174,7 @@
|
|||
<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_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_license">Licenc</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_info">Bevezető</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="no_description_found">nincs leírás</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="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="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="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_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_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"><u>Értékelj minket</u></string>
|
||||
<string name="about_faq"><u>GYIK</u></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>
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@
|
|||
<string name="categories_activity_title">Flokkar</string>
|
||||
<string name="title_activity_settings">Stillingar</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="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 <a href=\"https://github.com/commons-app/apps-android-commons/issues\">GitHub tilkynningar (issue)</a> 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_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_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_license">Notkunarleyfi</string>
|
||||
<string name="media_detail_coordinates">Hnit</string>
|
||||
|
|
@ -211,6 +214,7 @@
|
|||
<string name="navigation_item_logout">Útskráning</string>
|
||||
<string name="navigation_item_info">Kennsla</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="no_description_found">engin lýsing fannst</string>
|
||||
<string name="nearby_info_menu_commons_article">Síða Commons-skrár</string>
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
* Davio
|
||||
* Nemo bis
|
||||
* S4b1nuz E.656
|
||||
* Sarah Bernabei
|
||||
* Una giornata uggiosa '94
|
||||
* Wim b
|
||||
-->
|
||||
|
|
@ -87,6 +88,7 @@
|
|||
<string name="categories_activity_title">Categorie</string>
|
||||
<string name="title_activity_settings">Impostazioni</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="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 <a href=\"https://github.com/commons-app/apps-android-commons/issues\">segnalazione GitHub</a> 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_description">Descrizione</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_license">Licenza</string>
|
||||
<string name="media_detail_coordinates">Coordinate</string>
|
||||
|
|
@ -194,6 +197,7 @@
|
|||
<string name="navigation_item_logout">Esci</string>
|
||||
<string name="navigation_item_info">Tutorial</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="nearby_info_menu_commons_article">Pagina di Commons del file</string>
|
||||
<string name="nearby_info_menu_wikidata_article">Elemento Wikidata</string>
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
<string name="preference_category_feedback">משוב</string>
|
||||
<string name="preference_category_location">מיקום</string>
|
||||
<string name="app_name">ויקישיתוף</string>
|
||||
<string name="bullet">•</string>
|
||||
<string name="menu_settings">הגדרות</string>
|
||||
<string name="username">שם משתמש</string>
|
||||
<string name="password">ססמה</string>
|
||||
|
|
@ -208,6 +209,7 @@
|
|||
<string name="welcome_image_no_selfies">בלי תמונות סלפי</string>
|
||||
<string name="welcome_image_proprietary">תמונה קניינית</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="cancel">ביטול</string>
|
||||
<string name="navigation_drawer_open">פתיחה</string>
|
||||
|
|
@ -226,6 +228,7 @@
|
|||
<string name="no_description_found">לא נמצא תיאור</string>
|
||||
<string name="nearby_info_menu_commons_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="title_info">כותרת מתארת ייחודית לקובץ, שתשמש שם קובץ. אפשר להשתמש בשפה פשוטה עם רווחים. אין לכלול סיומת קובץ</string>
|
||||
<string name="description_info">נא לתאר את המדיה כמה שיותר: איפה היא נוצרה? מה היא מראה? מה ההקשר? נא לתאר את העצמים או את האנשים. נא לחשוף מידע שאי־אפשר לנחש בקלות, למשל, הזמן ביום אם זאת תמונת נוף. אם המדיה מציגה משהו בלתי־רגיל, נא להסביר מה מיוחד בה.</string>
|
||||
|
|
@ -238,8 +241,10 @@
|
|||
<string name="send_log_file">שליחת קובץ יומן</string>
|
||||
<string name="send_log_file_description">שליחת קובץ יומן למפתחים בדואר אלקטרוני</string>
|
||||
<string name="no_web_browser">לא נמצא דפדפן שיוכל לפתוח את הכתובת</string>
|
||||
<string name="null_url">שגיאה! כתובת ה־URL לא נמצאה</string>
|
||||
<string name="nominate_deletion">להציע מחיקה</string>
|
||||
<string name="nominated_for_deletion">התמונה הזאת מועמדת למחיקה</string>
|
||||
<string name="nominated_see_more"/>
|
||||
<string name="view_browser">הצגה בדפדפן</string>
|
||||
<string name="nearby_location_has_not_changed">המיקום לא השתנה.</string>
|
||||
<string name="nearby_location_not_available">המיקום אינו זמין.</string>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@
|
|||
* פוילישער
|
||||
-->
|
||||
<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="menu_settings">איינשטעלונגען</string>
|
||||
<string name="username">באַניצער־נאָמען</string>
|
||||
|
|
@ -48,6 +51,7 @@
|
|||
<string name="categories_search_text_hint">זוכן קאטעגאריעס</string>
|
||||
<string name="menu_save_categories">אויפֿהיטן</string>
|
||||
<string name="refresh_button">דערפֿרישן</string>
|
||||
<string name="display_list_button">ליסטע</string>
|
||||
<plurals name="contributions_subtitle">
|
||||
<item quantity="zero">\@string/contributions_subtitle_zero </item>
|
||||
<item quantity="one">איין ארויפֿלאד</item>
|
||||
|
|
@ -66,7 +70,7 @@
|
|||
<string name="provider_categories">לעצטיק־געניצטע קאטעגאריעס</string>
|
||||
<string name="menu_cancel_upload">אַנולירן</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">Attribution 3.0</string>
|
||||
<string name="license_name_cc0">CC0</string>
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@
|
|||
<string name="warning">Hişyarî</string>
|
||||
<string name="yes">Erê</string>
|
||||
<string name="no">Na</string>
|
||||
<string name="media_detail_author">Xwedî</string>
|
||||
<string name="media_detail_coordinates">Koordînat</string>
|
||||
<string name="cancel">Betal bike</string>
|
||||
<string name="navigation_drawer_open">Veke</string>
|
||||
|
|
|
|||
|
|
@ -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_improve">Leet w.e.g. <a href=\"https://github.com/commons-app/apps-android-commons/issues\"> e GitHub Problem</a> fir Problemer ze mellen a Proposen ze maachen.</string>
|
||||
<string name="about_privacy_policy"><u>Dateschutzrichtlinn</u></string>
|
||||
<string name="about_credits" fuzzy="true"><a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\">Merci</a></string>
|
||||
<string name="about_credits"><u>Merci</u></string>
|
||||
<string name="title_activity_about">Iwwer</string>
|
||||
<string name="menu_feedback">Feedback schécken (per E-Mail)</string>
|
||||
<string name="no_email_client">Keen E-Mail-Client installéiert</string>
|
||||
|
|
|
|||
|
|
@ -87,6 +87,27 @@
|
|||
<string name="title_activity_signup">Registreer</string>
|
||||
<string name="title_activity_featured_images">Oetgeleechde plaetjes</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 <a href=\"https://github.com/commons-app/apps-android-commons/issues\">GitHub-perbleem</a> veur fouteverslaag en veurstèlle.</string>
|
||||
<string name="about_privacy_policy"><u>Privaatbeleid</u></string>
|
||||
<string name="about_credits"><u>Toesjrif</u></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 <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">beleid op Wikimedia Commons</a>.</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_four">Naamsvermeljing 4.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="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_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="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>
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@
|
|||
<string name="no">Nē</string>
|
||||
<string name="media_detail_title">Nosaukums</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_license">Licence</string>
|
||||
<string name="media_detail_coordinates">Koordinātas</string>
|
||||
|
|
|
|||
|
|
@ -172,6 +172,7 @@
|
|||
<string name="media_detail_media_title">Tytuł pliku</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_author">Autor</string>
|
||||
<string name="media_detail_uploaded_date">Data przesłania</string>
|
||||
<string name="media_detail_license">Licencja</string>
|
||||
<string name="media_detail_coordinates">Współrzędne</string>
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@
|
|||
<string name="media_detail_title">عنوان</string>
|
||||
<string name="media_detail_media_title">میڈیا دا عنوان</string>
|
||||
<string name="media_detail_description">تفصیل</string>
|
||||
<string name="media_detail_author">مصنف</string>
|
||||
<string name="media_detail_uploaded_date">اپ لوڈ تھیوݨ دی تاریخ</string>
|
||||
<string name="media_detail_license">لائیسنس</string>
|
||||
<string name="media_detail_coordinates">کوآرڈینیٹ</string>
|
||||
|
|
@ -113,6 +114,7 @@
|
|||
<string name="navigation_item_feedback">تہاڈی رائے</string>
|
||||
<string name="navigation_item_logout">لاگ آؤٹ</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_wikipedia_article">وکی پیڈیا دا مضمون</string>
|
||||
<string name="give_permission">اجازت ݙیوو</string>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
<string name="preference_category_feedback">Geri bildirim</string>
|
||||
<string name="preference_category_location">Konum</string>
|
||||
<string name="app_name">Commons</string>
|
||||
<string name="bullet">•</string>
|
||||
<string name="menu_settings">Ayarlar</string>
|
||||
<string name="username">Kullanıcı adı</string>
|
||||
<string name="password">Parola</string>
|
||||
|
|
@ -91,6 +92,7 @@
|
|||
<string name="categories_activity_title">Kategoriler</string>
|
||||
<string name="title_activity_settings">Ayarlar</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="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 <a href=\"https://github.com/commons-app/apps-android-commons\">Kaynak</a> ve <a href=\"https://commons-app.github.io/\">website</a>. Hata raporları ve önerileri için yeni bir <a href=\"https://github.com/commons-app/apps-android-commons/issues\">GitHub sorunu</a> 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_1">Başlık: Sidney Opera Binası</string>
|
||||
<string name="tutorial_4_subtext_2">Açı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_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>
|
||||
|
|
@ -161,8 +164,8 @@
|
|||
<string name="detail_description_empty">Açıklama yok</string>
|
||||
<string name="detail_license_empty">Bilinmeyen lisans</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="write_storage_permission_rationale" fuzzy="true">Gerekli izin: Harici depolama birimi üzerine yazma. 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">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="ok">Tamam</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_description">Açı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_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_license">Lisans</string>
|
||||
<string name="media_detail_coordinates">Koordinatlar</string>
|
||||
|
|
@ -217,6 +222,7 @@
|
|||
<string name="navigation_item_logout">Çıkış</string>
|
||||
<string name="navigation_item_info">Eğitim</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="no_description_found">hiçbir açıklama bulunamadı</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="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_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_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_wikidata">VİKİVERİ</string>
|
||||
<string name="nearby_wikipedia">VİKİPEDİ</string>
|
||||
<string name="nearby_commons">COMMONS</string>
|
||||
<string name="about_rate_us"><u>Bizi oyla</u></string>
|
||||
<string name="about_faq"><u>SSS</u></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"><u>Çevir</u></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>
|
||||
|
|
|
|||
|
|
@ -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_final_text">You think you got it?</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_loading">Loading…</string>
|
||||
<string name="detail_panel_cats_none">None selected</string>
|
||||
|
|
|
|||
|
|
@ -52,10 +52,10 @@
|
|||
<PreferenceCategory
|
||||
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">
|
||||
<intent android:action="android.intent.action.VIEW"
|
||||
android:data="@string/beta_opt_in_link" />
|
||||
</Preference>
|
||||
|
||||
<Preference
|
||||
|
|
|
|||