mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 12:53:55 +01:00
Merge remote-tracking branch 'refs/remotes/commons-app/master' into upload-overhaul-fork
This commit is contained in:
commit
c885c31cc5
104 changed files with 981 additions and 494 deletions
|
|
@ -7,18 +7,25 @@ import java.util.ArrayList;
|
|||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import fr.free.nrw.commons.upload.MwVolleyApi;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import fr.free.nrw.commons.upload.GpsCategoryModel;
|
||||
import timber.log.Timber;
|
||||
|
||||
@Singleton
|
||||
public class CacheController {
|
||||
|
||||
private final GpsCategoryModel gpsCategoryModel;
|
||||
private final QuadTree<List<String>> quadTree;
|
||||
private double x, y;
|
||||
private QuadTree<List<String>> quadTree;
|
||||
private double xMinus, xPlus, yMinus, yPlus;
|
||||
|
||||
private static final int EARTH_RADIUS = 6378137;
|
||||
|
||||
public CacheController() {
|
||||
@Inject
|
||||
CacheController(GpsCategoryModel gpsCategoryModel) {
|
||||
this.gpsCategoryModel = gpsCategoryModel;
|
||||
quadTree = new QuadTree<>(-180, -90, +180, +90);
|
||||
}
|
||||
|
||||
|
|
@ -31,8 +38,8 @@ public class CacheController {
|
|||
|
||||
public void cacheCategory() {
|
||||
List<String> pointCatList = new ArrayList<>();
|
||||
if (MwVolleyApi.GpsCatExists.getGpsCatExists()) {
|
||||
pointCatList.addAll(MwVolleyApi.getGpsCat());
|
||||
if (gpsCategoryModel.getGpsCatExists()) {
|
||||
pointCatList.addAll(gpsCategoryModel.getCategoryList());
|
||||
Timber.d("Categories being cached: %s", pointCatList);
|
||||
} else {
|
||||
Timber.d("No categories found, so no categories cached");
|
||||
|
|
@ -65,7 +72,7 @@ public class CacheController {
|
|||
}
|
||||
|
||||
//Based on algorithm at http://gis.stackexchange.com/questions/2951/algorithm-for-offsetting-a-latitude-longitude-by-some-amount-of-meters
|
||||
public void convertCoordRange() {
|
||||
private void convertCoordRange() {
|
||||
//Position, decimal degrees
|
||||
double lat = y;
|
||||
double lon = x;
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ import butterknife.ButterKnife;
|
|||
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.GpsCategoryModel;
|
||||
import fr.free.nrw.commons.utils.StringSortingUtils;
|
||||
import fr.free.nrw.commons.utils.ViewUtil;
|
||||
import io.reactivex.Observable;
|
||||
|
|
@ -73,6 +73,7 @@ public class CategorizationFragment extends CommonsDaggerSupportFragment {
|
|||
@Inject @Named("prefs") SharedPreferences prefsPrefs;
|
||||
@Inject @Named("direct_nearby_upload_prefs") SharedPreferences directPrefs;
|
||||
@Inject CategoryDao categoryDao;
|
||||
@Inject GpsCategoryModel gpsCategoryModel;
|
||||
|
||||
private RVRendererAdapter<CategoryItem> categoriesAdapter;
|
||||
private OnCategoriesSaveHandler onCategoriesSaveHandler;
|
||||
|
|
@ -253,7 +254,6 @@ public class CategorizationFragment extends CommonsDaggerSupportFragment {
|
|||
}
|
||||
|
||||
private Observable<CategoryItem> defaultCategories() {
|
||||
|
||||
Observable<CategoryItem> directCat = directCategories();
|
||||
if (hasDirectCategories) {
|
||||
Timber.d("Image has direct Cat");
|
||||
|
|
@ -287,9 +287,7 @@ public class CategorizationFragment extends CommonsDaggerSupportFragment {
|
|||
}
|
||||
|
||||
private Observable<CategoryItem> gpsCategories() {
|
||||
return Observable.fromIterable(
|
||||
MwVolleyApi.GpsCatExists.getGpsCatExists()
|
||||
? MwVolleyApi.getGpsCat() : new ArrayList<>())
|
||||
return Observable.fromIterable(gpsCategoryModel.getCategoryList())
|
||||
.map(name -> new CategoryItem(name, false));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,18 +9,18 @@ import dagger.android.support.AndroidSupportInjectionModule;
|
|||
import fr.free.nrw.commons.CommonsApplication;
|
||||
import fr.free.nrw.commons.MediaWikiImageView;
|
||||
import fr.free.nrw.commons.auth.LoginActivity;
|
||||
import fr.free.nrw.commons.contributions.Contribution;
|
||||
import fr.free.nrw.commons.contributions.ContributionsActivity;
|
||||
import fr.free.nrw.commons.contributions.ContributionsSyncAdapter;
|
||||
import fr.free.nrw.commons.delete.DeleteTask;
|
||||
import fr.free.nrw.commons.modifications.ModificationsSyncAdapter;
|
||||
import fr.free.nrw.commons.settings.SettingsFragment;
|
||||
import fr.free.nrw.commons.nearby.PlaceRenderer;
|
||||
import fr.free.nrw.commons.upload.FileProcessor;
|
||||
import fr.free.nrw.commons.settings.SettingsFragment;
|
||||
|
||||
|
||||
@Singleton
|
||||
@Component(modules = {
|
||||
CommonsApplicationModule.class,
|
||||
NetworkingModule.class,
|
||||
AndroidInjectionModule.class,
|
||||
AndroidSupportInjectionModule.class,
|
||||
ActivityBuilderModule.class,
|
||||
|
|
|
|||
|
|
@ -6,21 +6,15 @@ import android.content.SharedPreferences;
|
|||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.util.LruCache;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import fr.free.nrw.commons.BuildConfig;
|
||||
import fr.free.nrw.commons.CommonsApplication;
|
||||
import fr.free.nrw.commons.auth.AccountUtil;
|
||||
import fr.free.nrw.commons.auth.SessionManager;
|
||||
import fr.free.nrw.commons.caching.CacheController;
|
||||
import fr.free.nrw.commons.data.DBOpenHelper;
|
||||
import fr.free.nrw.commons.location.LocationServiceManager;
|
||||
import fr.free.nrw.commons.mwapi.ApacheHttpClientMediaWikiApi;
|
||||
import fr.free.nrw.commons.mwapi.MediaWikiApi;
|
||||
import fr.free.nrw.commons.nearby.NearbyPlaces;
|
||||
import fr.free.nrw.commons.upload.UploadController;
|
||||
|
|
@ -33,7 +27,6 @@ import static fr.free.nrw.commons.modifications.ModificationsContentProvider.MOD
|
|||
@SuppressWarnings({"WeakerAccess", "unused"})
|
||||
public class CommonsApplicationModule {
|
||||
public static final String CATEGORY_AUTHORITY = "fr.free.nrw.commons.categories.contentprovider";
|
||||
public static final long OK_HTTP_CACHE_SIZE = 10 * 1024 * 1024;
|
||||
|
||||
private Context applicationContext;
|
||||
|
||||
|
|
@ -117,37 +110,12 @@ public class CommonsApplicationModule {
|
|||
return new SessionManager(context, mediaWikiApi, sharedPreferences);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
public MediaWikiApi provideMediaWikiApi(Context context,
|
||||
@Named("default_preferences") SharedPreferences defaultPreferences,
|
||||
@Named("category_prefs") SharedPreferences categoryPrefs,
|
||||
Gson gson) {
|
||||
return new ApacheHttpClientMediaWikiApi(context, BuildConfig.WIKIMEDIA_API_HOST, defaultPreferences, categoryPrefs, gson);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
public LocationServiceManager provideLocationServiceManager(Context context) {
|
||||
return new LocationServiceManager(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gson objects are very heavy. The app should ideally be using just one instance of it instead of creating new instances everywhere.
|
||||
* @return returns a singleton Gson instance
|
||||
*/
|
||||
@Provides
|
||||
@Singleton
|
||||
public Gson provideGson() {
|
||||
return new Gson();
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
public CacheController provideCacheController() {
|
||||
return new CacheController();
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
public DBOpenHelper provideDBOpenHelper(Context context) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,59 @@
|
|||
package fr.free.nrw.commons.di;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import fr.free.nrw.commons.BuildConfig;
|
||||
import fr.free.nrw.commons.mwapi.ApacheHttpClientMediaWikiApi;
|
||||
import fr.free.nrw.commons.mwapi.MediaWikiApi;
|
||||
import okhttp3.HttpUrl;
|
||||
import okhttp3.OkHttpClient;
|
||||
|
||||
@Module
|
||||
@SuppressWarnings({"WeakerAccess", "unused"})
|
||||
public class NetworkingModule {
|
||||
public static final long OK_HTTP_CACHE_SIZE = 10 * 1024 * 1024;
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
public OkHttpClient provideOkHttpClient() {
|
||||
return new OkHttpClient.Builder().build();
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
public MediaWikiApi provideMediaWikiApi(Context context,
|
||||
@Named("default_preferences") SharedPreferences defaultPreferences,
|
||||
@Named("category_prefs") SharedPreferences categoryPrefs,
|
||||
Gson gson) {
|
||||
return new ApacheHttpClientMediaWikiApi(context, BuildConfig.WIKIMEDIA_API_HOST, defaultPreferences, categoryPrefs, gson);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Named("commons_mediawiki_url")
|
||||
@NonNull
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
public HttpUrl provideMwUrl() {
|
||||
return HttpUrl.parse(BuildConfig.COMMONS_URL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gson objects are very heavy. The app should ideally be using just one instance of it instead of creating new instances everywhere.
|
||||
* @return returns a singleton Gson instance
|
||||
*/
|
||||
@Provides
|
||||
@Singleton
|
||||
public Gson provideGson() {
|
||||
return new GsonBuilder().create();
|
||||
}
|
||||
|
||||
}
|
||||
101
app/src/main/java/fr/free/nrw/commons/mwapi/CategoryApi.java
Normal file
101
app/src/main/java/fr/free/nrw/commons/mwapi/CategoryApi.java
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
package fr.free.nrw.commons.mwapi;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
import fr.free.nrw.commons.mwapi.model.ApiResponse;
|
||||
import fr.free.nrw.commons.mwapi.model.Page;
|
||||
import fr.free.nrw.commons.mwapi.model.PageCategory;
|
||||
import io.reactivex.Single;
|
||||
import okhttp3.HttpUrl;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import okhttp3.ResponseBody;
|
||||
import timber.log.Timber;
|
||||
|
||||
/**
|
||||
* Uses the OkHttp library to implement calls to the Commons MediaWiki API to match GPS coordinates
|
||||
* with nearby Commons categories. Parses the results using GSON to obtain a list of relevant
|
||||
* categories. Note: that caller is responsible for executing the request() method on a background
|
||||
* thread.
|
||||
*/
|
||||
public class CategoryApi {
|
||||
|
||||
private final OkHttpClient okHttpClient;
|
||||
private final HttpUrl mwUrl;
|
||||
private final Gson gson;
|
||||
|
||||
@Inject
|
||||
public CategoryApi(OkHttpClient okHttpClient, Gson gson,
|
||||
@Named("commons_mediawiki_url") HttpUrl mwUrl) {
|
||||
this.okHttpClient = okHttpClient;
|
||||
this.mwUrl = mwUrl;
|
||||
this.gson = gson;
|
||||
}
|
||||
|
||||
public Single<List<String>> request(String coords) {
|
||||
return Single.fromCallable(() -> {
|
||||
HttpUrl apiUrl = buildUrl(coords);
|
||||
Timber.d("URL: %s", apiUrl.toString());
|
||||
|
||||
Request request = new Request.Builder().get().url(apiUrl).build();
|
||||
Response response = okHttpClient.newCall(request).execute();
|
||||
ResponseBody body = response.body();
|
||||
if (body == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
ApiResponse apiResponse = gson.fromJson(body.charStream(), ApiResponse.class);
|
||||
Set<String> categories = new LinkedHashSet<>();
|
||||
if (apiResponse != null && apiResponse.hasPages()) {
|
||||
for (Page page : apiResponse.query.pages) {
|
||||
for (PageCategory category : page.getCategories()) {
|
||||
categories.add(category.withoutPrefix());
|
||||
}
|
||||
}
|
||||
}
|
||||
return new ArrayList<>(categories);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds URL with image coords for MediaWiki API calls
|
||||
* Example URL: https://commons.wikimedia.org/w/api.php?action=query&prop=categories|coordinates|pageprops&format=json&clshow=!hidden&coprop=type|name|dim|country|region|globe&codistancefrompoint=38.11386944444445|13.356263888888888&generator=geosearch&redirects=&ggscoord=38.11386944444445|1.356263888888888&ggsradius=100&ggslimit=10&ggsnamespace=6&ggsprop=type|name|dim|country|region|globe&ggsprimary=all&formatversion=2
|
||||
*
|
||||
* @param coords Coordinates to build query with
|
||||
* @return URL for API query
|
||||
*/
|
||||
private HttpUrl buildUrl(String coords) {
|
||||
return mwUrl.newBuilder()
|
||||
.addPathSegment("w")
|
||||
.addPathSegment("api.php")
|
||||
.addQueryParameter("action", "query")
|
||||
.addQueryParameter("prop", "categories|coordinates|pageprops")
|
||||
.addQueryParameter("format", "json")
|
||||
.addQueryParameter("clshow", "!hidden")
|
||||
.addQueryParameter("coprop", "type|name|dim|country|region|globe")
|
||||
.addQueryParameter("codistancefrompoint", coords)
|
||||
.addQueryParameter("generator", "geosearch")
|
||||
.addQueryParameter("ggscoord", coords)
|
||||
.addQueryParameter("ggsradius", "10000")
|
||||
.addQueryParameter("ggslimit", "10")
|
||||
.addQueryParameter("ggsnamespace", "6")
|
||||
.addQueryParameter("ggsprop", "type|name|dim|country|region|globe")
|
||||
.addQueryParameter("ggsprimary", "all")
|
||||
.addQueryParameter("formatversion", "2")
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package fr.free.nrw.commons.mwapi.model;
|
||||
|
||||
public class ApiResponse {
|
||||
public Query query;
|
||||
|
||||
public ApiResponse() {
|
||||
}
|
||||
|
||||
public boolean hasPages() {
|
||||
return query != null && query.pages != null;
|
||||
}
|
||||
}
|
||||
17
app/src/main/java/fr/free/nrw/commons/mwapi/model/Page.java
Normal file
17
app/src/main/java/fr/free/nrw/commons/mwapi/model/Page.java
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
package fr.free.nrw.commons.mwapi.model;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
public class Page {
|
||||
public String title;
|
||||
public PageCategory[] categories;
|
||||
public PageCategory category;
|
||||
|
||||
public Page() {
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public PageCategory[] getCategories() {
|
||||
return categories != null ? categories : new PageCategory[0];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package fr.free.nrw.commons.mwapi.model;
|
||||
|
||||
public class PageCategory {
|
||||
public String title;
|
||||
|
||||
public PageCategory() {
|
||||
}
|
||||
|
||||
public String withoutPrefix() {
|
||||
return title != null ? title.replace("Category:", "") : "";
|
||||
}
|
||||
}
|
||||
10
app/src/main/java/fr/free/nrw/commons/mwapi/model/Query.java
Normal file
10
app/src/main/java/fr/free/nrw/commons/mwapi/model/Query.java
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
package fr.free.nrw.commons.mwapi.model;
|
||||
|
||||
public class Query {
|
||||
public Page[] pages;
|
||||
|
||||
public Query() {
|
||||
pages = new Page[0];
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package fr.free.nrw.commons.upload;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
|
|
@ -22,6 +23,8 @@ import javax.inject.Inject;
|
|||
|
||||
import fr.free.nrw.commons.caching.CacheController;
|
||||
import fr.free.nrw.commons.di.ApplicationlessInjection;
|
||||
import fr.free.nrw.commons.mwapi.CategoryApi;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
import timber.log.Timber;
|
||||
|
||||
import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext;
|
||||
|
|
@ -42,6 +45,10 @@ public class FileProcessor implements SimilarImageDialogFragment.onResponse{
|
|||
|
||||
@Inject
|
||||
CacheController cacheController;
|
||||
@Inject
|
||||
GpsCategoryModel gpsCategoryModel;
|
||||
@Inject
|
||||
CategoryApi apiCall;
|
||||
|
||||
FileProcessor(Uri mediaUri, ContentResolver contentResolver, SharedPreferences prefs, Context context) {
|
||||
this.mediaUri = mediaUri;
|
||||
|
|
@ -169,8 +176,9 @@ public class FileProcessor implements SimilarImageDialogFragment.onResponse{
|
|||
|
||||
/**
|
||||
* Initiates retrieval of image coordinates or user coordinates, and caching of coordinates.
|
||||
* Then initiates the calls to MediaWiki API through an instance of MwVolleyApi.
|
||||
* Then initiates the calls to MediaWiki API through an instance of CategoryApi.
|
||||
*/
|
||||
@SuppressLint("CheckResult")
|
||||
public void useImageCoords() {
|
||||
if (decimalCoords != null) {
|
||||
Timber.d("Decimal coords of image: %s", decimalCoords);
|
||||
|
|
@ -183,8 +191,6 @@ public class FileProcessor implements SimilarImageDialogFragment.onResponse{
|
|||
cacheController.setQtPoint(decLongitude, decLatitude);
|
||||
}
|
||||
|
||||
MwVolleyApi apiCall = new MwVolleyApi(context);
|
||||
|
||||
List<String> displayCatList = cacheController.findCategory();
|
||||
boolean catListEmpty = displayCatList.isEmpty();
|
||||
|
||||
|
|
@ -192,12 +198,21 @@ public class FileProcessor implements SimilarImageDialogFragment.onResponse{
|
|||
// If no categories found in cache, call MediaWiki API to match image coords with nearby Commons categories
|
||||
if (catListEmpty) {
|
||||
cacheFound = false;
|
||||
apiCall.request(decimalCoords);
|
||||
apiCall.request(decimalCoords)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(Schedulers.io())
|
||||
.subscribe(
|
||||
gpsCategoryModel::setCategoryList,
|
||||
throwable -> {
|
||||
Timber.e(throwable);
|
||||
gpsCategoryModel.clear();
|
||||
}
|
||||
);
|
||||
Timber.d("displayCatList size 0, calling MWAPI %s", displayCatList);
|
||||
} else {
|
||||
cacheFound = true;
|
||||
Timber.d("Cache found, setting categoryList in MwVolleyApi to %s", displayCatList);
|
||||
MwVolleyApi.setGpsCat(displayCatList);
|
||||
Timber.d("Cache found, setting categoryList in model to %s", displayCatList);
|
||||
gpsCategoryModel.setCategoryList(displayCatList);
|
||||
}
|
||||
} else {
|
||||
Timber.d("EXIF: no coords");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
package fr.free.nrw.commons.upload;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@Singleton
|
||||
public class GpsCategoryModel {
|
||||
private Set<String> categorySet;
|
||||
|
||||
@Inject
|
||||
public GpsCategoryModel() {
|
||||
clear();
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
categorySet = new HashSet<>();
|
||||
}
|
||||
|
||||
public boolean getGpsCatExists() {
|
||||
return !categorySet.isEmpty();
|
||||
}
|
||||
|
||||
public List<String> getCategoryList() {
|
||||
return new ArrayList<>(categorySet);
|
||||
}
|
||||
|
||||
public void setCategoryList(List<String> categoryList) {
|
||||
clear();
|
||||
categorySet.addAll(categoryList != null ? categoryList : new ArrayList<>());
|
||||
}
|
||||
|
||||
public void add(String categoryString) {
|
||||
categorySet.add(categoryString);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,249 +0,0 @@
|
|||
package fr.free.nrw.commons.upload;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
|
||||
import com.android.volley.Cache;
|
||||
import com.android.volley.NetworkResponse;
|
||||
import com.android.volley.Request;
|
||||
import com.android.volley.RequestQueue;
|
||||
import com.android.volley.Response;
|
||||
import com.android.volley.VolleyError;
|
||||
import com.android.volley.toolbox.HttpHeaderParser;
|
||||
import com.android.volley.toolbox.JsonRequest;
|
||||
import com.android.volley.toolbox.Volley;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import timber.log.Timber;
|
||||
|
||||
/**
|
||||
* Uses the Volley library to implement asynchronous calls to the Commons MediaWiki API to match
|
||||
* GPS coordinates with nearby Commons categories. Parses the results using GSON to obtain a list
|
||||
* of relevant categories.
|
||||
*/
|
||||
public class MwVolleyApi {
|
||||
|
||||
private static RequestQueue REQUEST_QUEUE;
|
||||
private static final Gson GSON = new GsonBuilder().create();
|
||||
|
||||
private static Set<String> categorySet;
|
||||
private static List<String> categoryList;
|
||||
|
||||
private static final String MWURL = "https://commons.wikimedia.org/";
|
||||
private final Context context;
|
||||
|
||||
public MwVolleyApi(Context context) {
|
||||
this.context = context;
|
||||
categorySet = new HashSet<>();
|
||||
}
|
||||
|
||||
public static List<String> getGpsCat() {
|
||||
return categoryList;
|
||||
}
|
||||
|
||||
public static void setGpsCat(List<String> cachedList) {
|
||||
categoryList = new ArrayList<>();
|
||||
categoryList.addAll(cachedList);
|
||||
Timber.d("Setting GPS cats from cache: %s", categoryList);
|
||||
}
|
||||
|
||||
public void request(String coords) {
|
||||
String apiUrl = buildUrl(coords);
|
||||
Timber.d("URL: %s", apiUrl);
|
||||
|
||||
JsonRequest<QueryResponse> request = new QueryRequest(apiUrl,
|
||||
new LogResponseListener<>(), new LogResponseErrorListener());
|
||||
getQueue().add(request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds URL with image coords for MediaWiki API calls
|
||||
* Example URL: https://commons.wikimedia.org/w/api.php?action=query&prop=categories|coordinates|pageprops&format=json&clshow=!hidden&coprop=type|name|dim|country|region|globe&codistancefrompoint=38.11386944444445|13.356263888888888&generator=geosearch&redirects=&ggscoord=38.11386944444445|1.356263888888888&ggsradius=100&ggslimit=10&ggsnamespace=6&ggsprop=type|name|dim|country|region|globe&ggsprimary=all&formatversion=2
|
||||
* @param coords Coordinates to build query with
|
||||
* @return URL for API query
|
||||
*/
|
||||
private String buildUrl(String coords) {
|
||||
|
||||
Uri.Builder builder = Uri.parse(MWURL).buildUpon();
|
||||
|
||||
builder.appendPath("w")
|
||||
.appendPath("api.php")
|
||||
.appendQueryParameter("action", "query")
|
||||
.appendQueryParameter("prop", "categories|coordinates|pageprops")
|
||||
.appendQueryParameter("format", "json")
|
||||
.appendQueryParameter("clshow", "!hidden")
|
||||
.appendQueryParameter("coprop", "type|name|dim|country|region|globe")
|
||||
.appendQueryParameter("codistancefrompoint", coords)
|
||||
.appendQueryParameter("generator", "geosearch")
|
||||
.appendQueryParameter("ggscoord", coords)
|
||||
.appendQueryParameter("ggsradius", "10000")
|
||||
.appendQueryParameter("ggslimit", "10")
|
||||
.appendQueryParameter("ggsnamespace", "6")
|
||||
.appendQueryParameter("ggsprop", "type|name|dim|country|region|globe")
|
||||
.appendQueryParameter("ggsprimary", "all")
|
||||
.appendQueryParameter("formatversion", "2");
|
||||
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
private synchronized RequestQueue getQueue() {
|
||||
if (REQUEST_QUEUE == null) {
|
||||
REQUEST_QUEUE = Volley.newRequestQueue(context);
|
||||
}
|
||||
return REQUEST_QUEUE;
|
||||
}
|
||||
|
||||
private static class LogResponseListener<T> implements Response.Listener<T> {
|
||||
|
||||
@Override
|
||||
public void onResponse(T response) {
|
||||
Timber.d(response.toString());
|
||||
}
|
||||
}
|
||||
|
||||
private static class LogResponseErrorListener implements Response.ErrorListener {
|
||||
|
||||
@Override
|
||||
public void onErrorResponse(VolleyError error) {
|
||||
Timber.e(error.toString());
|
||||
}
|
||||
}
|
||||
|
||||
private static class QueryRequest extends JsonRequest<QueryResponse> {
|
||||
|
||||
public QueryRequest(String url,
|
||||
Response.Listener<QueryResponse> listener,
|
||||
Response.ErrorListener errorListener) {
|
||||
super(Request.Method.GET, url, null, listener, errorListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Response<QueryResponse> parseNetworkResponse(NetworkResponse response) {
|
||||
String json = parseString(response);
|
||||
QueryResponse queryResponse = GSON.fromJson(json, QueryResponse.class);
|
||||
return Response.success(queryResponse, cacheEntry(response));
|
||||
}
|
||||
|
||||
private Cache.Entry cacheEntry(NetworkResponse response) {
|
||||
return HttpHeaderParser.parseCacheHeaders(response);
|
||||
}
|
||||
|
||||
private String parseString(NetworkResponse response) {
|
||||
try {
|
||||
return new String(response.data, HttpHeaderParser.parseCharset(response.headers));
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
return new String(response.data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class GpsCatExists {
|
||||
private static boolean gpsCatExists;
|
||||
|
||||
public static void setGpsCatExists(boolean gpsCat) {
|
||||
gpsCatExists = gpsCat;
|
||||
}
|
||||
|
||||
public static boolean getGpsCatExists() {
|
||||
return gpsCatExists;
|
||||
}
|
||||
}
|
||||
|
||||
private static class QueryResponse {
|
||||
private Query query = new Query();
|
||||
|
||||
private String printSet() {
|
||||
if (categorySet == null || categorySet.isEmpty()) {
|
||||
GpsCatExists.setGpsCatExists(false);
|
||||
Timber.d("gpsCatExists=%b", GpsCatExists.getGpsCatExists());
|
||||
return "No collection of categories";
|
||||
} else {
|
||||
GpsCatExists.setGpsCatExists(true);
|
||||
Timber.d("gpsCatExists=%b", GpsCatExists.getGpsCatExists());
|
||||
return "CATEGORIES FOUND" + categorySet.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
if (query != null) {
|
||||
return "query=" + query.toString() + "\n" + printSet();
|
||||
} else {
|
||||
return "No pages found";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class Query {
|
||||
private Page [] pages;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder("pages=" + "\n");
|
||||
if (pages != null) {
|
||||
for (Page page : pages) {
|
||||
builder.append(page.toString());
|
||||
builder.append("\n");
|
||||
}
|
||||
builder.replace(builder.length() - 1, builder.length(), "");
|
||||
return builder.toString();
|
||||
} else {
|
||||
return "No pages found";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class Page {
|
||||
private int pageid;
|
||||
private int ns;
|
||||
private String title;
|
||||
private Category[] categories;
|
||||
private Category category;
|
||||
|
||||
public Page() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
StringBuilder builder = new StringBuilder("PAGEID=" + pageid + " ns=" + ns + " title=" + title + "\n" + " CATEGORIES= ");
|
||||
|
||||
if (categories == null || categories.length == 0) {
|
||||
builder.append("no categories exist\n");
|
||||
} else {
|
||||
for (Category category : categories) {
|
||||
builder.append(category.toString());
|
||||
builder.append("\n");
|
||||
if (category != null) {
|
||||
String categoryString = category.toString().replace("Category:", "");
|
||||
categorySet.add(categoryString);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
categoryList = new ArrayList<>(categorySet);
|
||||
builder.replace(builder.length() - 1, builder.length(), "");
|
||||
return builder.toString();
|
||||
}
|
||||
}
|
||||
|
||||
private static class Category {
|
||||
private String title;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return title;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,6 +1,9 @@
|
|||
package fr.free.nrw.commons.upload;
|
||||
|
||||
import android.Manifest;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
|
|
@ -63,7 +66,9 @@ import fr.free.nrw.commons.modifications.ModificationsContentProvider;
|
|||
import fr.free.nrw.commons.modifications.ModifierSequence;
|
||||
import fr.free.nrw.commons.modifications.ModifierSequenceDao;
|
||||
import fr.free.nrw.commons.modifications.TemplateRemoveModifier;
|
||||
import fr.free.nrw.commons.mwapi.CategoryApi;
|
||||
import fr.free.nrw.commons.mwapi.MediaWikiApi;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
import fr.free.nrw.commons.utils.ViewUtil;
|
||||
import timber.log.Timber;
|
||||
|
||||
|
|
@ -99,8 +104,13 @@ public class ShareActivity
|
|||
@Inject
|
||||
ModifierSequenceDao modifierSequenceDao;
|
||||
@Inject
|
||||
CategoryApi apiCall;
|
||||
@Inject
|
||||
@Named("default_preferences")
|
||||
SharedPreferences prefs;
|
||||
@Inject
|
||||
GpsCategoryModel gpsCategoryModel;
|
||||
|
||||
@BindView(R.id.container)
|
||||
FrameLayout flContainer;
|
||||
@BindView(R.id.backgroundImage)
|
||||
|
|
@ -115,6 +125,7 @@ public class ShareActivity
|
|||
FloatingActionButton mainFab;
|
||||
@BindView(R.id.expanded_image)
|
||||
PhotoView expandedImageView;
|
||||
|
||||
private String source;
|
||||
private String mimeType;
|
||||
private CategorizationFragment categorizationFragment;
|
||||
|
|
@ -461,8 +472,6 @@ public class ShareActivity
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
|
|
|
|||
|
|
@ -54,8 +54,6 @@
|
|||
<string name="share_title_hint">العنوان</string>
|
||||
<string name="share_description_hint">الوصف</string>
|
||||
<string name="login_failed_network">لا يمكن تسجيل الدخول - فشل في شبكة الاتصال</string>
|
||||
<string name="login_failed_username">لا يمكن تسجيل الدخول - فضلا تحقق من اسم المستخدم</string>
|
||||
<string name="login_failed_password">لا يمكن تسجيل الدخول - فضلا تحقق من كلمة السر</string>
|
||||
<string name="login_failed_throttled">الكثير من المحاولات غير الناجحة. الرجاء المحاولة مرة أخرى في بضع دقائق.</string>
|
||||
<string name="login_failed_blocked">عذراً، لقد تم منع هذا المستخدم على كومنز</string>
|
||||
<string name="login_failed_2fa_needed">يجب توفير رمز التحقق المزدوج.</string>
|
||||
|
|
|
|||
|
|
@ -49,8 +49,6 @@
|
|||
<string name="add_title_toast">Apurre un títulu pa esti ficheru</string>
|
||||
<string name="share_description_hint">Descripción</string>
|
||||
<string name="login_failed_network">Nun se pudo aniciar sesión – error de rede</string>
|
||||
<string name="login_failed_username">Nun se pudo aniciar sesión – por favor compruebe\'l so nome d\'usuariu</string>
|
||||
<string name="login_failed_password">Nun se pudo aniciar sesión – por favor compruebe la so contraseña</string>
|
||||
<string name="login_failed_throttled">Demasiaos intentos incorreutos. Téntalo otra vuelta n\'unos minutos.</string>
|
||||
<string name="login_failed_blocked">Sentímoslo, esti usuariu ta bloquiáu en Commons</string>
|
||||
<string name="login_failed_2fa_needed">Tienes de dar el códigu d\'identificación de dos factores.</string>
|
||||
|
|
|
|||
|
|
@ -43,8 +43,6 @@
|
|||
<string name="share_title_hint">Naslov</string>
|
||||
<string name="share_description_hint">Opis</string>
|
||||
<string name="login_failed_network">Ne mogu da vas prijavim – mreža ne radi</string>
|
||||
<string name="login_failed_username">Ne mogu da vas prijavim – proverite svoje korisničko ime</string>
|
||||
<string name="login_failed_password">Ne mogu da vas prijavim – proverite svoju lozinku</string>
|
||||
<string name="login_failed_throttled">Previše neuspešnih pokušaja. Probajte ponovo za nekoliko minuta.</string>
|
||||
<string name="login_failed_blocked">Nažalost, korisnik je blokiran na Ostavi</string>
|
||||
<string name="login_failed_2fa_needed">Morate uneti svoj dvofaktorski kod za autentifikaciju.</string>
|
||||
|
|
|
|||
|
|
@ -50,8 +50,6 @@
|
|||
<string name="add_title_toast">Был файлдың атамаһын күрһәт</string>
|
||||
<string name="share_description_hint">Тасуирлама</string>
|
||||
<string name="login_failed_network">Инеп булмай - интернет хатаһы</string>
|
||||
<string name="login_failed_username">Инмәнең - ҡулланыусы исемеңде тикшер</string>
|
||||
<string name="login_failed_password">Инмәнең - серһуҙеңде тикшер</string>
|
||||
<string name="login_failed_throttled">Күп тапҡыр яңылыштың. Зинһар, бер-нисә минуттан тағы ла инеп ҡара</string>
|
||||
<string name="login_failed_blocked">Ғәфү итегеҙ, әммә был исемдәге ҡатнашыусыға Викискладҡа инеү тыйылған</string>
|
||||
<string name="login_failed_2fa_needed">Ике тапҡыр раҫлай торған шәхси кодты яҙырға кәрәк</string>
|
||||
|
|
|
|||
|
|
@ -32,8 +32,6 @@
|
|||
<string name="share_title_hint">Заглавие</string>
|
||||
<string name="share_description_hint">Описание</string>
|
||||
<string name="login_failed_network">Неуспешно влизане – проблем в мрежата</string>
|
||||
<string name="login_failed_username">Неуспешно влизане – моля проверете потребителското си име</string>
|
||||
<string name="login_failed_password">Неуспешно влизане – моля проверете паролата си</string>
|
||||
<string name="share_upload_button">Качване</string>
|
||||
<string name="provider_modifications">Изменения</string>
|
||||
<string name="menu_upload_single">Качване</string>
|
||||
|
|
|
|||
|
|
@ -57,8 +57,6 @@
|
|||
<string name="add_title_toast">এই ফাইলটির জন্য একটি শিরোনাম প্রদান করুন</string>
|
||||
<string name="share_description_hint">বিবরণ</string>
|
||||
<string name="login_failed_network">প্রবেশ করা যাচ্ছে না - নেটওয়ার্ক ব্যর্থতা</string>
|
||||
<string name="login_failed_username">প্রবেশ করা যাচ্ছে না - অনুগ্রহ করে আপনার ব্যবহারকারী নাম পরীক্ষা করুন।</string>
|
||||
<string name="login_failed_password">প্রবেশ করা যাচ্ছে না - অনুগ্রহ করে আপনার পাসওয়ার্ড পরীক্ষা করুন</string>
|
||||
<string name="login_failed_throttled">খুব বেশি অসফল প্রচেষ্টা। অনুগ্রহ করে কয়েক মিনিট পরে আবারও চেষ্টা করুন।</string>
|
||||
<string name="login_failed_blocked">দুঃখিত, এই ব্যবহারকারীকে কমন্সে বাধা দেয়া হয়েছে</string>
|
||||
<string name="login_failed_2fa_needed">অাপনাকে অবশ্যই অাপনার দু\'স্তরের সত্যায়নকরণ কোড দিতে হবে।</string>
|
||||
|
|
|
|||
|
|
@ -52,8 +52,6 @@
|
|||
<string name="add_title_toast">Roit un titl d\'ar restr-mañ, mar plij</string>
|
||||
<string name="share_description_hint">Deskrivadur</string>
|
||||
<string name="login_failed_network">Ne c\'haller ket kevreañ - rouedad sac\'het</string>
|
||||
<string name="login_failed_username">Ne c\'haller ket kevreañ - Gwiriit hoc\'h anv implijer, mar plij</string>
|
||||
<string name="login_failed_password">Ne c\'haller ket kevreañ - Gwiriit ho ker tremen, mar plij</string>
|
||||
<string name="login_failed_throttled">Re a daolioù-esae. Klaskit en-dro a-benn ur pennadig amzer.</string>
|
||||
<string name="login_failed_blocked">Hon digarezit, prennet eo bet an implijer-mañ e Commons</string>
|
||||
<string name="login_failed_2fa_needed">Rankout a rit reiñ ho kod dilesa gant daou faktor.</string>
|
||||
|
|
|
|||
|
|
@ -43,8 +43,6 @@
|
|||
<string name="share_title_hint">Naslov</string>
|
||||
<string name="share_description_hint">Opis</string>
|
||||
<string name="login_failed_network">Ne mogu Vas prijaviti – mreža ne radi</string>
|
||||
<string name="login_failed_username">Ne mogu Vas prijaviti – provjerite svoje korisničko ime</string>
|
||||
<string name="login_failed_password">Ne mogu Vas prijaviti – provjerite svoje lozinku</string>
|
||||
<string name="login_failed_throttled">Napravili ste previše grešaka u prijavi. Pokušajte ponovo za nekoliko minuta.</string>
|
||||
<string name="login_failed_blocked">Žao nam je, korisnik je blokiran na Commonsu</string>
|
||||
<string name="login_failed_2fa_needed">Morate upisati kôd za potvrdu u 2 koraka.</string>
|
||||
|
|
|
|||
|
|
@ -50,8 +50,6 @@
|
|||
<string name="share_title_hint">Títol</string>
|
||||
<string name="share_description_hint">Descripció</string>
|
||||
<string name="login_failed_network">No s\'ha pogut iniciar la sessió – error de xarxa</string>
|
||||
<string name="login_failed_username">No s\'ha pogut iniciar la sessió – si et plau comprova el teu nom d\'usuari</string>
|
||||
<string name="login_failed_password">No s’ha pogut iniciar la sessió. Comproveu la vostra contrasenya</string>
|
||||
<string name="login_failed_throttled">Massa intents erronis – Proveu-ho de nou d\'aquí uns minuts.</string>
|
||||
<string name="login_failed_blocked">Ho sentim, aquest usuari ha estat blocat a Commons</string>
|
||||
<string name="login_failed_2fa_needed">Heu de proporcionar el vostre codi d\'autenticació de dos factors.</string>
|
||||
|
|
@ -192,4 +190,5 @@
|
|||
<string name="notifications_thank_you_edit">Gràcies per fer una modificació</string>
|
||||
<string name="notifications_mention" fuzzy="true">%1$s us ha mencionat a %2$s.</string>
|
||||
<string name="about_faq" fuzzy="true">Preguntes freqüents</string>
|
||||
<string name="no_images_found">No s’ha trobat cap imatge.</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -61,8 +61,6 @@
|
|||
<string name="add_title_toast">Vložte prosím název tohoto souboru</string>
|
||||
<string name="share_description_hint">Popis</string>
|
||||
<string name="login_failed_network">Nelze se přihlásit - selhání sítě</string>
|
||||
<string name="login_failed_username">Nelze se přihlásit - prosím zkontrolujte své uživatelské jméno</string>
|
||||
<string name="login_failed_password">Nelze se přihlásit - zkontrolujte prosím své heslo</string>
|
||||
<string name="login_failed_throttled">Příliš mnoho neúspěšných pokusů. Zkuste to prosím znovu za několik minut.</string>
|
||||
<string name="login_failed_blocked">Omlouváme se, tento uživatel byl na Commons zablokován</string>
|
||||
<string name="login_failed_2fa_needed">Prosím vložte kód pro své dvoufázové ověření.</string>
|
||||
|
|
|
|||
|
|
@ -41,8 +41,6 @@
|
|||
<string name="share_title_hint">Titel</string>
|
||||
<string name="share_description_hint">Òpisënk</string>
|
||||
<string name="login_failed_network">Ni mòże sã wlogòwac - fela sécë</string>
|
||||
<string name="login_failed_username">Ni mòże sã wlogòwac - sprôwdzë miono brëkòwnika</string>
|
||||
<string name="login_failed_password">Ni mòże sã wlogòwac - sprôwdzë parolã</string>
|
||||
<string name="login_failed_throttled">Za wiele nieùdałich prób wlogòwaniô. Spróbùjë znowa za czile minut.</string>
|
||||
<string name="login_failed_blocked">Nen brëkòwnik òstôł zablokòwóny na Commons</string>
|
||||
<string name="login_failed_2fa_needed">Mùszisz wpisac swój kòd dlô dwafaktorowi aùtorizacëji.</string>
|
||||
|
|
|
|||
|
|
@ -43,8 +43,6 @@
|
|||
<string name="share_title_hint">Teitl</string>
|
||||
<string name="share_description_hint">Disgrifiad</string>
|
||||
<string name="login_failed_network">Yn methu mewngofnodi - methodd y rhwydwaith</string>
|
||||
<string name="login_failed_username">Yn methu mewngofnodi - gwirwch eich enw defnyddiwr</string>
|
||||
<string name="login_failed_password">Yn methu mewngofnodi - gwirwch eich cyfrinair</string>
|
||||
<string name="login_failed_throttled">Cafwyd gormod o ymgeision aflwyddiannus. Oedwch ennyd cyn ceisio eto.</string>
|
||||
<string name="login_failed_blocked">Ymddiheurwn. Mae\'r defnyddiwr hwn wedi ei flocio ar Gomin Wikimedia</string>
|
||||
<string name="login_failed_2fa_needed">Mae\'n rhaid i chi roi eich cod adnabod 2 ffactor.</string>
|
||||
|
|
|
|||
|
|
@ -54,8 +54,6 @@
|
|||
<string name="add_title_toast">Angiv venligt en titel for denne fil</string>
|
||||
<string name="share_description_hint">Beskrivelse</string>
|
||||
<string name="login_failed_network">Kan ikke logge på - netværksfejl</string>
|
||||
<string name="login_failed_username">Ude af stand til at logge på - tjek venligst dit brugernavn</string>
|
||||
<string name="login_failed_password">Ude af stand til at logge på - tjek venligst din adgangskode</string>
|
||||
<string name="login_failed_throttled">Alt for mange mislykkede forsøg. Prøv igen om et par minutter.</string>
|
||||
<string name="login_failed_blocked">Beklager, denne bruger er blevet blokeret på Commons</string>
|
||||
<string name="login_failed_2fa_needed">Du skal angive din tofaktorgodkendelseskode.</string>
|
||||
|
|
|
|||
|
|
@ -53,8 +53,7 @@
|
|||
<string name="add_title_toast">Bitte gib einen Titel für diese Datei an</string>
|
||||
<string name="share_description_hint">Beschreibung</string>
|
||||
<string name="login_failed_network">Anmeldung fehlgeschlagen – Netzwerkfehler</string>
|
||||
<string name="login_failed_username">Anmeldung fehlgeschlagen – Bitte Benutzernamen überprüfen</string>
|
||||
<string name="login_failed_password">Anmeldung fehlgeschlagen – Bitte Passwort überprüfen</string>
|
||||
<string name="login_failed_wrong_credentials">Anmeldung fehlgeschlagen. Bitte Benutzernamen und Passwort überprüfen.</string>
|
||||
<string name="login_failed_throttled">Zu viele erfolglose Versuche. Bitte in einigen Minuten erneut versuchen.</string>
|
||||
<string name="login_failed_blocked">Dieser Benutzer wurde leider auf Commons gesperrt</string>
|
||||
<string name="login_failed_2fa_needed">Du musst deinen Code zur Zwei-Faktor-Authentifizierung angeben.</string>
|
||||
|
|
|
|||
|
|
@ -52,8 +52,6 @@
|
|||
<string name="share_title_hint">Sername</string>
|
||||
<string name="share_description_hint">Şınasnayış</string>
|
||||
<string name="login_failed_network">Xırabiya kewten-network xeta</string>
|
||||
<string name="login_failed_username">Ronıştışo abeno - Namey karberi ye xo kontrol kerë</string>
|
||||
<string name="login_failed_password">Ronıştışo nêabeno - Parolay xo kontrol kerë</string>
|
||||
<string name="login_failed_throttled">Şıma xeylê rayi kerd ke cı kewê, a ser nêvıst. Şıma rê zehmet 2-3 deqey ra tepeya reyna bıcerrebnên.</string>
|
||||
<string name="login_failed_blocked">Qısur mewni rê, Karber commons dı bloqe biyo.</string>
|
||||
<string name="login_failed_generic">Nidekeweya de</string>
|
||||
|
|
|
|||
|
|
@ -57,8 +57,7 @@
|
|||
<string name="add_title_toast">Παρακαλώ παρέχετε ένα τίτλο για αυτό το αρχείο</string>
|
||||
<string name="share_description_hint">Περιγραφή</string>
|
||||
<string name="login_failed_network">Δεν είναι δυνατή η σύνδεση - αποτυχία του δικτύου</string>
|
||||
<string name="login_failed_username">Δεν είναι δυνατή η σύνδεση - ελέγξτε το όνομα χρήστη σας</string>
|
||||
<string name="login_failed_password">Δεν είναι δυνατή η σύνδεση - παρακαλούμε ελέγξτε τον κωδικό σας</string>
|
||||
<string name="login_failed_wrong_credentials">Αποτυχία σύνδεσης - παρακαλώ ελέγξτε το όνομα χρήστη και τον κωδικό σας</string>
|
||||
<string name="login_failed_throttled">Πάρα πολλές ανεπιτυχείς προσπάθειες. Παρακαλώ δοκιμάστε ξανά σε λίγα λεπτά.</string>
|
||||
<string name="login_failed_blocked">Συγνώμη, αυτός ο χρήστης έχει αποκλειστεί από τα Commons</string>
|
||||
<string name="login_failed_2fa_needed">Πρέπει να δώσετε τον κωδικό πιστοποίησης με δύο παράγοντες</string>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Authors:
|
||||
* 2axterix2
|
||||
* Adjen
|
||||
* Benfutbol10
|
||||
* Fitoschido
|
||||
* Jduranboger
|
||||
|
|
@ -57,8 +58,7 @@
|
|||
<string name="add_title_toast">Proporciona un título para este archivo</string>
|
||||
<string name="share_description_hint">Descripción</string>
|
||||
<string name="login_failed_network">No se pudo iniciar sesión: falla de red</string>
|
||||
<string name="login_failed_username">No se pudo iniciar sesión: revisa tu nombre de usuario</string>
|
||||
<string name="login_failed_password">No se pudo iniciar sesión: revisa tu contraseña</string>
|
||||
<string name="login_failed_wrong_credentials">No se puede acceder. Revisa el nombre de usuario y la contraseña</string>
|
||||
<string name="login_failed_throttled">Demasiados intentos fallidos. Inténtalo de nuevo en unos minutos.</string>
|
||||
<string name="login_failed_blocked">Lo sentimos, este usuario ha sido bloqueado en Commons</string>
|
||||
<string name="login_failed_2fa_needed">Debes proporcionar tu código de auntenticación de dos factores.</string>
|
||||
|
|
|
|||
|
|
@ -48,8 +48,6 @@
|
|||
<string name="share_title_hint">Izenburua</string>
|
||||
<string name="share_description_hint">Deskribapena</string>
|
||||
<string name="login_failed_network">Ezin izan da sartu - sarean akatsa</string>
|
||||
<string name="login_failed_username">Ezin izan da sartu - ziurtatu ezazu zure erabiltzaile izena</string>
|
||||
<string name="login_failed_password">Ezin izan da sartu - ziurta ezazu zure pasahitza</string>
|
||||
<string name="login_failed_throttled">Sartzeko saiakera txar gehiegi. Mesedez saiatu zaitez minutu batzuk barru.</string>
|
||||
<string name="login_failed_blocked">Barka, baina erabiltzaile hau blokeatuta dago Commonsen</string>
|
||||
<string name="login_failed_generic">Saio hasieran akatsa</string>
|
||||
|
|
|
|||
|
|
@ -56,8 +56,6 @@
|
|||
<string name="add_title_toast">لطفاً نامی را برای این پرونده انتخاب کنید</string>
|
||||
<string name="share_description_hint">توضیحات</string>
|
||||
<string name="login_failed_network">قادر به ورود نیست - شکست شبکهای</string>
|
||||
<string name="login_failed_username">ناتوانی در ورود - لطفاً نام کاربریتان را بررسی کنید</string>
|
||||
<string name="login_failed_password">ناتوانی در ورود - لطفاً گذرواژهیتان را بررسی کنید</string>
|
||||
<string name="login_failed_throttled">تلاش ناموفق بیش از حد. لطفاً چند دقیقهٔ دیگر دوباره تلاش کنید</string>
|
||||
<string name="login_failed_blocked">پوزش، کاربر در ویکیانبار بسته شدهاست</string>
|
||||
<string name="login_failed_2fa_needed">باید تأیید دومرحلهای را فعال کنید.</string>
|
||||
|
|
|
|||
|
|
@ -2,10 +2,11 @@
|
|||
<!-- Authors:
|
||||
* Nike
|
||||
* Olli
|
||||
* Pyscowicz
|
||||
* Silvonen
|
||||
-->
|
||||
<resources>
|
||||
<string name="crash_dialog_title">Commons app on kaatunut</string>
|
||||
<string name="crash_dialog_title">Commons on kaatunut</string>
|
||||
<string name="crash_dialog_text">Pahoittelemme, virhe tapahtui.</string>
|
||||
<string name="crash_dialog_comment_prompt">Kerro meille mitä teit äsken, sähköpostitse. Se auttaa meitä korjaamaan ongelman!</string>
|
||||
<string name="crash_dialog_ok_toast">Kiitos!</string>
|
||||
|
|
|
|||
|
|
@ -58,8 +58,6 @@
|
|||
<string name="add_title_toast">Anna tälle tiedostolle otsikko</string>
|
||||
<string name="share_description_hint">Kuvaus</string>
|
||||
<string name="login_failed_network">Kirjautuminen epäonnistui - verkkovirhe</string>
|
||||
<string name="login_failed_username">Kirjautuminen epäonnistui - tarkista käyttäjätunnus</string>
|
||||
<string name="login_failed_password">Kirjautuminen epäonnistui - tarkista salasanasi</string>
|
||||
<string name="login_failed_throttled">Liikaa epäonnistuneita yrityksiä. Yritä uudelleen parin minuutin kuluttua.</string>
|
||||
<string name="login_failed_blocked">Pahoittelut, tämä käyttäjä on estetty Commonsissa</string>
|
||||
<string name="login_failed_2fa_needed">Anna kaksivaiheisen tunnistuksen koodi.</string>
|
||||
|
|
@ -162,8 +160,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">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="read_storage_permission_rationale">Vaadittu oikeus: Ulkoisen tallennustilan luku. Sovellus ei voi päästä galleriaasi ilman tätä oikeutta.</string>
|
||||
<string name="write_storage_permission_rationale">Vaadittu oikeus: Kirjoita ulkoiseen tallennustilaan. Sovellus 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>
|
||||
|
|
@ -262,4 +260,8 @@
|
|||
<string name="about_translate_proceed">Jatka</string>
|
||||
<string name="about_translate_cancel">Peruuta</string>
|
||||
<string name="retry">Yritä uudelleen</string>
|
||||
<string name="showcase_view_got_it_button">Selvä!</string>
|
||||
<string name="no_images_found">Kuvia ei löytynyt!</string>
|
||||
<string name="image_uploaded_by">Tallentanut: %1$s</string>
|
||||
<string name="share_app_title">Jaa sovellus</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -34,8 +34,6 @@
|
|||
<string name="share_title_hint">Heiti</string>
|
||||
<string name="share_description_hint">Frágreiðing</string>
|
||||
<string name="login_failed_network">Ómøguligt at rita inn - feilur í netsambandinum</string>
|
||||
<string name="login_failed_username">Ómøguligt at rita inn - vinarliga eftirkanna títt brúkaranavn</string>
|
||||
<string name="login_failed_password">Ómøguligt at rita inn - vinarliga kanna eftir, um títt loyniorð er rætt</string>
|
||||
<string name="login_failed_throttled" fuzzy="true">Ov nógv miseydnaðar royndir. Vinarliga royn aftur um fáir minuttir</string>
|
||||
<string name="login_failed_blocked">Haldið okkum tilgóðar, hesin brúkari er blivin sperraður á Commons</string>
|
||||
<string name="login_failed_generic">Login miseydnaðist</string>
|
||||
|
|
|
|||
|
|
@ -65,8 +65,7 @@
|
|||
<string name="add_title_toast">Veuillez donner un titre à ce fichier</string>
|
||||
<string name="share_description_hint">Description</string>
|
||||
<string name="login_failed_network">Impossible de se connecter — panne de réseau</string>
|
||||
<string name="login_failed_username">Impossible de se connecter — veuillez vérifier votre nom d’utilisateur</string>
|
||||
<string name="login_failed_password">Impossible de se connecter — veuillez vérifier votre mot de passe</string>
|
||||
<string name="login_failed_wrong_credentials">Impossible de se connecter — veuillez vérifier votre nom d’utilisateur et votre mot de passe</string>
|
||||
<string name="login_failed_throttled">Trop de tentatives infructueuses. Veuillez réessayer dans quelques minutes.</string>
|
||||
<string name="login_failed_blocked">Désolé, cet utilisateur a été bloqué dans Commons</string>
|
||||
<string name="login_failed_2fa_needed">Vous devez fournir votre code d’authentification à deux facteurs.</string>
|
||||
|
|
|
|||
|
|
@ -42,8 +42,6 @@
|
|||
<string name="share_title_hint">Tiitel</string>
|
||||
<string name="share_description_hint">Beskriiwang</string>
|
||||
<string name="login_failed_network">Bi\'t uunmeldin as wat skiaf gingen - näätwerk-feeler</string>
|
||||
<string name="login_failed_username">Bi\'t uunmeldin as wat skiaf gingen - luke ans efter di brükernööm</string>
|
||||
<string name="login_failed_password">Bi\'t uunmeldin as wat skiaf gingen - luke ans efter det paaswurd</string>
|
||||
<string name="login_failed_throttled">Tu fölsis fersoocht saner lok. Ferschük det uun hög minüüten noch ans nei.</string>
|
||||
<string name="login_failed_blocked">Didiar brüker as üüb Commons speret wurden.</string>
|
||||
<string name="login_failed_2fa_needed">Dü skel dan code för\'t tau-straal-gudkäänen (2FA) uundu.</string>
|
||||
|
|
|
|||
|
|
@ -55,8 +55,6 @@
|
|||
<string name="add_title_toast">Por favor, proporcione un título para este ficheiro</string>
|
||||
<string name="share_description_hint">Descrición</string>
|
||||
<string name="login_failed_network">Erro ao acceder ao sistema: Fallou a rede</string>
|
||||
<string name="login_failed_username">Erro ao acceder ao sistema: Comprobe o seu nome de usuario</string>
|
||||
<string name="login_failed_password">Erro ao acceder ao sistema: Comprobe o seu contrasinal</string>
|
||||
<string name="login_failed_throttled">Demasiados intentos incorrectos. Inténteo de novo nuns minutos.</string>
|
||||
<string name="login_failed_blocked">Sentímolo, este usuario está bloqueado en Commons</string>
|
||||
<string name="login_failed_2fa_needed">Debe proporcionar o seu código de autenticación de dous factores.</string>
|
||||
|
|
|
|||
|
|
@ -34,8 +34,6 @@
|
|||
<string name="share_title_hint">Poʻo Inoa</string>
|
||||
<string name="share_description_hint">Hōʻike ʻAno</string>
|
||||
<string name="login_failed_network">Hiki ʻole ke ʻeʻe - hāʻule pūnaewele</string>
|
||||
<string name="login_failed_username">Hiki ʻole ke ʻeʻe - hōʻoiaʻiʻo i kāu inoa mea hoʻohana ke ʻoluʻolu</string>
|
||||
<string name="login_failed_password">Hiki ʻole ke ʻeʻe - hōʻoiaʻiʻo i kāu ʻōlelo hūnā ke ʻoluʻolu</string>
|
||||
<string name="login_failed_throttled" fuzzy="true">Hoʻāʻo ʻeʻe ʻole he nui kā. E ʻoluʻolu, e hana hou i ka wā hou aku</string>
|
||||
<string name="login_failed_blocked">E kala mai, ua pale ʻia kēia mea hoʻohana ma ke Kahilehulehu</string>
|
||||
<string name="login_failed_generic">Hāʻule ka ʻeʻena</string>
|
||||
|
|
|
|||
|
|
@ -53,8 +53,6 @@
|
|||
<string name="share_title_hint">शीर्षक</string>
|
||||
<string name="share_description_hint">विवरण</string>
|
||||
<string name="login_failed_network">प्रवेश नहीं हो रहा - नेटवर्क विफल</string>
|
||||
<string name="login_failed_username">प्रवेश नहीं हो रहा - कृपया अपना सदस्य नाम जाँचें</string>
|
||||
<string name="login_failed_password">प्रवेश नहीं हो रहा - कृपया अपना पासवर्ड जाँचें</string>
|
||||
<string name="login_failed_throttled">ढेर सारे असफल प्रयास होने के कारण कुछ मिनटों के बाद प्रयास करें।</string>
|
||||
<string name="login_failed_blocked">क्षमा करें, यह सदस्य कॉमन्स में अवरोधित है</string>
|
||||
<string name="login_failed_2fa_needed">आपको अपना दो कारक प्रमाणन कोड प्रदान करना होगा।</string>
|
||||
|
|
|
|||
10
app/src/main/res/values-hr/error.xml
Normal file
10
app/src/main/res/values-hr/error.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Authors:
|
||||
* MaGa
|
||||
-->
|
||||
<resources>
|
||||
<string name="crash_dialog_title">Aplikacija Zajednički poslužitelj je prestala s radom</string>
|
||||
<string name="crash_dialog_text">Nešto je krenulo po krivu!</string>
|
||||
<string name="crash_dialog_comment_prompt">Napišite nam što radite i podijelite s nama putem elektroničke pošte. Pomoći će nam da to popravimo!</string>
|
||||
<string name="crash_dialog_ok_toast">Hvala Vam!</string>
|
||||
</resources>
|
||||
275
app/src/main/res/values-hr/strings.xml
Normal file
275
app/src/main/res/values-hr/strings.xml
Normal file
|
|
@ -0,0 +1,275 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Authors:
|
||||
* MaGa
|
||||
-->
|
||||
<resources>
|
||||
<string name="preference_category_appearance">Izgled</string>
|
||||
<string name="preference_category_general">Opće</string>
|
||||
<string name="preference_category_feedback">Povratna informacija</string>
|
||||
<string name="preference_category_location">Lokacija</string>
|
||||
<string name="app_name">Zajednički poslužitelj</string>
|
||||
<string name="bullet">•</string>
|
||||
<string name="menu_settings">Postavke</string>
|
||||
<string name="username">Suradničko ime</string>
|
||||
<string name="password">Zaporka</string>
|
||||
<string name="login_credential">Prijavite se na Commons beta račun</string>
|
||||
<string name="login">Prijavi se</string>
|
||||
<string name="forgot_password">Zaboravljena zaporka?</string>
|
||||
<string name="signup">Otvori račun</string>
|
||||
<string name="logging_in_title">Prijava</string>
|
||||
<string name="logging_in_message">Molimo pričekajte ...</string>
|
||||
<string name="login_success">Prijava uspješna!</string>
|
||||
<string name="login_failed">Prijava neuspješna!</string>
|
||||
<string name="upload_failed">Datoteka nije pronađena. Molimo probajte drugu.</string>
|
||||
<string name="authentication_failed">Autentifikacija neuspješna!</string>
|
||||
<string name="uploading_started">Postavljanje započeto!</string>
|
||||
<string name="upload_completed_notification_title">%1$s postavljeno!</string>
|
||||
<string name="upload_completed_notification_text">Dodirnite da biste vidjeli datoteku</string>
|
||||
<string name="upload_progress_notification_title_start">Počinje postavljanje %1$s</string>
|
||||
<string name="upload_progress_notification_title_in_progress">Postavljanje %1$s</string>
|
||||
<string name="upload_progress_notification_title_finishing">Završeno postavljanje %1$s</string>
|
||||
<string name="upload_failed_notification_title">Postavljanje %1$s neuspješno</string>
|
||||
<string name="upload_failed_notification_subtitle">Dodirnite da biste vidjeli</string>
|
||||
<plurals name="uploads_pending_notification_indicator">
|
||||
<item quantity="one">Postavlja se %1$d datoteka</item>
|
||||
<item quantity="other">Postavljaju se %1$d datoteke</item>
|
||||
</plurals>
|
||||
<string name="title_activity_contributions">Moja nedavja postavljanja</string>
|
||||
<string name="contribution_state_queued">U redu čekanja</string>
|
||||
<string name="contribution_state_failed">Neuspješno</string>
|
||||
<string name="contribution_state_in_progress">%1$d%% postavljeno</string>
|
||||
<string name="contribution_state_starting">Postavljanje</string>
|
||||
<string name="menu_from_gallery">Iz galerije</string>
|
||||
<string name="menu_from_camera">Napravi sliku</string>
|
||||
<string name="menu_nearby">U blizini</string>
|
||||
<string name="provider_contributions">Moja postavljanja</string>
|
||||
<string name="menu_share">Podijeli</string>
|
||||
<string name="menu_open_in_browser">Pogledaj u pregledniku</string>
|
||||
<string name="share_title_hint">Naziv</string>
|
||||
<string name="add_title_toast">Molimo imenujte ovu datoteku</string>
|
||||
<string name="share_description_hint">Opis</string>
|
||||
<string name="login_failed_network">Prijava nije moguća - mrežna pogrješka</string>
|
||||
<string name="login_failed_wrong_credentials">Prijava nije moguća - molimo provjerite suradničko ime i zaportku</string>
|
||||
<string name="login_failed_throttled">Previše neuspješnih pokušaja, molimo probajte opet za par minuta.</string>
|
||||
<string name="login_failed_blocked">Ispričavamo se, ovaj je suradnik blokiran na Zajendičkom poslužitelju</string>
|
||||
<string name="login_failed_2fa_needed">Morate upisati autetifikacijski kôd od dva faktora</string>
|
||||
<string name="login_failed_generic">Prijava neuspješna</string>
|
||||
<string name="share_upload_button">Postavljanje</string>
|
||||
<string name="multiple_share_base_title">Imenujte ovaj set</string>
|
||||
<string name="provider_modifications">Promjene</string>
|
||||
<string name="menu_upload_single">Postavljanje</string>
|
||||
<string name="categories_search_text_hint">Pretraži kategorije</string>
|
||||
<string name="menu_save_categories">Spremi</string>
|
||||
<string name="refresh_button">Osvježi</string>
|
||||
<string name="display_list_button">Popis</string>
|
||||
<string name="gps_disabled">GPS je onemogućen na Vašem uređaju. Želite li ga omogućiti?</string>
|
||||
<string name="enable_gps">Omogući GPS</string>
|
||||
<string name="contributions_subtitle_zero">Nemate još postavljenih datoteka</string>
|
||||
<plurals name="contributions_subtitle">
|
||||
<item quantity="zero">\@string/contributions_subtitle_zero</item>
|
||||
<item quantity="one">%1$d postavljena datoteka</item>
|
||||
<item quantity="other">%1$d postavljene datoteke</item>
|
||||
</plurals>
|
||||
<plurals name="starting_multiple_uploads">
|
||||
<item quantity="one">Započeto %1$d postavljanje</item>
|
||||
<item quantity="other">Započeta %1$d postavljanja</item>
|
||||
</plurals>
|
||||
<plurals name="multiple_uploads_title">
|
||||
<item quantity="one">%1$d postavljanje</item>
|
||||
<item quantity="other">%1$d postavljanja</item>
|
||||
</plurals>
|
||||
<string name="categories_not_found">Nema kategorija koje odgovoraju upitu %1$s</string>
|
||||
<string name="categories_skip_explanation">Dodajte slikama kategorije kako bi se lakše pronašle. Da biste ih dodali, započnite s upisivanjem.</string>
|
||||
<string name="categories_activity_title">Kategorije</string>
|
||||
<string name="title_activity_settings">Postavke</string>
|
||||
<string name="title_activity_signup">Otvori račun</string>
|
||||
<string name="title_activity_featured_images">Izabrane slike</string>
|
||||
<string name="menu_about">O</string>
|
||||
<string name="about_license">Aplikacija The Wikimedia Commons je aplikacija otvorenog kôda koju razvijaju i održavaju volonteri Wikimedijine zajednice. Zaklada Wikimedija nije uključena u stvaranje, razvoj ili održavanje ove aplikacije.</string>
|
||||
<string name="about_improve">Da biste prijavili poteškoću ili dali prijedlog, stvorite <a href=\"https://github.com/commons-app/apps-android-commons/issues\">novi zahtjev na GitHubu</a>.</string>
|
||||
<string name="about_privacy_policy"><u>Politika privatnosti</u></string>
|
||||
<string name="about_credits"><u>Zasluge</u></string>
|
||||
<string name="title_activity_about">O</string>
|
||||
<string name="menu_feedback">Pošaljite povratnu informaciju (putem elektroničke pošte)</string>
|
||||
<string name="no_email_client">Klijent za elektroničku poštu nije instaliran</string>
|
||||
<string name="provider_categories">Nedavno rabljene kategorije</string>
|
||||
<string name="waiting_first_sync">Pričekajte za prvu sinkronizaciju...</string>
|
||||
<string name="no_uploads_yet">Nemate još postavljenih slika.</string>
|
||||
<string name="menu_retry_upload">Pokušaj ponovo</string>
|
||||
<string name="menu_cancel_upload">Odustani</string>
|
||||
<string name="share_license_summary">Ova će slika biti licencirana pod %1$s</string>
|
||||
<string name="media_upload_policy">Slanjem ove slike izjavljujem da je ona moje djelo i ne sadrži materijale zaštićene autorskim pravom ili selfije, te da je u skladu sa <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">smjernicama Zajedničkog poslužitelja</a>.</string>
|
||||
<string name="menu_download">Preuzmi</string>
|
||||
<string name="preference_license">Podrazumijevana licencija</string>
|
||||
<string name="use_previous">Rabite prethodni naziv/opis</string>
|
||||
<string name="allow_gps">Automatski pribavi trenutačnu lokaciju</string>
|
||||
<string name="allow_gps_summary">Ako slika nema oznaku lokacije, pribavi trenutačnu lokaciju kako bi se mogle ponuditi kategorije</string>
|
||||
<string name="preference_theme">Noćni način</string>
|
||||
<string name="preference_theme_summary">Rabi tamnu temu</string>
|
||||
<string name="license_name_cc_by_sa_four"> Imenovanje-Dijeli pod istim uvjetima 4.0</string>
|
||||
<string name="license_name_cc_by_four"> Imenovanje 4.0</string>
|
||||
<string name="license_name_cc_by_sa"> Imenovanje-Dijeli pod istim uvjetima 3.0</string>
|
||||
<string name="license_name_cc_by"> Imenovanje 3.0</string>
|
||||
<string name="license_name_cc0">CC0</string>
|
||||
<string name="license_name_cc_by_sa_3_0">CC BY-SA 3.0</string>
|
||||
<string name="license_name_cc_by_sa_3_0_at">CC BY-SA 3.0 (Austrija)</string>
|
||||
<string name="license_name_cc_by_sa_3_0_de">CC BY-SA 3.0 (Njemačka)</string>
|
||||
<string name="license_name_cc_by_sa_3_0_ee">CC BY-SA 3.0 (Estonija)</string>
|
||||
<string name="license_name_cc_by_sa_3_0_es">CC BY-SA 3.0 (Španjolska)</string>
|
||||
<string name="license_name_cc_by_sa_3_0_hr">CC BY-SA 3.0 (Hrvatska)</string>
|
||||
<string name="license_name_cc_by_sa_3_0_lu">CC BY-SA 3.0 (Luksemburg)</string>
|
||||
<string name="license_name_cc_by_sa_3_0_nl">CC BY-SA 3.0 (Nizozemska)</string>
|
||||
<string name="license_name_cc_by_sa_3_0_no">CC BY-SA 3.0 (Norveška)</string>
|
||||
<string name="license_name_cc_by_sa_3_0_pl">CC BY-SA 3.0 (Poljska)</string>
|
||||
<string name="license_name_cc_by_sa_3_0_ro">CC BY-SA 3.0 (Rumunjska)</string>
|
||||
<string name="license_name_cc_by_3_0">CC BY 3.0</string>
|
||||
<string name="license_name_cc_by_sa_4_0">CC BY-SA 4.0</string>
|
||||
<string name="license_name_cc_by_4_0">CC BY 4.0</string>
|
||||
<string name="license_name_cc_zero">CC Zero</string>
|
||||
<string name="tutorial_1_text">Na Zajedničkom poslužitelju se nalazi većina slika rabljena na Wikipediji.</string>
|
||||
<string name="tutorial_1_subtext">Vaše slike pomažu u edukaciji ljudi diljem svijeta!</string>
|
||||
<string name="tutorial_2_text">Molimo postavite slike koje su u cijelosti Vaše djelo:</string>
|
||||
<string name="tutorial_2_subtext">Objekti iz prirode (cvijeće, životinje, planine)\n• Korisni objekti (bicikla, željezničke postaje)\n• Poznate osobe (Vaš gradonačelnik, olimpijski sportaš kojeg ste sreli)</string>
|
||||
<string name="tutorial_2_subtext_1">Objekti iz prirode (cvijeće, životinje, planine)</string>
|
||||
<string name="tutorial_2_subtext_2">Korisni objekti (bicikla, željezničke postaje)</string>
|
||||
<string name="tutorial_2_subtext_3">Poznate osobe (Vaš gradonačelnik, olimpijski sportaš kojeg ste sreli)</string>
|
||||
<string name="tutorial_3_text">Molimo NE postavljajte:</string>
|
||||
<string name="tutorial_3_subtext">- selfije ili slike Vaših prijatelja\n- slike koje ste preuzeli s interneta\n- snimke ekrana zaštićenih aplikacija</string>
|
||||
<string name="tutorial_3_subtext_1">Selfije ili slike Vaših prijatelja</string>
|
||||
<string name="tutorial_3_subtext_2">Slike koje ste preuzeli s interneta</string>
|
||||
<string name="tutorial_3_subtext_3">Snimke ekrana zaštićenih aplikacija</string>
|
||||
<string name="tutorial_4_text">Primjer postavljanja:</string>
|
||||
<string name="tutorial_4_subtext">- Naziv: Sydneyska opera\n- Opis: Sydneyska opera viđena iz zaljeva\n- Kategorije: Sydney Opera House from the west, Sydney Opera House remote views</string>
|
||||
<string name="tutorial_4_subtext_1">Naziv: Sydneyska opera</string>
|
||||
<string name="tutorial_4_subtext_2">Opis: Sydneyska opera viđena iz zaljeva</string>
|
||||
<string name="tutorial_4_subtext_3">Kategorije: Sydney Opera House from the west, Sydney Opera House remote views</string>
|
||||
<string name="welcome_wikipedia_text">Dijelite Vaše slike. Pomozite da članci na Wikipediji zažive!</string>
|
||||
<string name="welcome_wikipedia_subtext">Slike na wikipediji su sa Zajedničkog poslužitelja.</string>
|
||||
<string name="welcome_copyright_text">Vaše slike pomažu u edukaciji ljudi diljem svijeta.</string>
|
||||
<string name="welcome_copyright_subtext">Izbjegavajte materijale s autorskim pravima koje ste pronašli na internetu (slike plakata, naslovnice knjiga, i slično).</string>
|
||||
<string name="welcome_final_text">Jeste li razumjeli?</string>
|
||||
<string name="welcome_final_button_text">Da!</string>
|
||||
<string name="detail_panel_cats_label">Kategorije</string>
|
||||
<string name="detail_panel_cats_loading">Učitavanje...</string>
|
||||
<string name="detail_panel_cats_none">Ništa nije odabrano</string>
|
||||
<string name="detail_description_empty">Nema opisa</string>
|
||||
<string name="detail_license_empty">Nepoznata licencija</string>
|
||||
<string name="menu_refresh">Osvježi</string>
|
||||
<string name="read_storage_permission_rationale">Potrebno dopuštenje čitanja vanjske pohrane. Bez toga aplikacija ne može pristupiti Vašoj galeriji.</string>
|
||||
<string name="write_storage_permission_rationale">Potrebno dopuštenje spremanja na vanjsku pohranu. Bez toga aplikacija ne može pristupiti Vašoj kameri.</string>
|
||||
<string name="location_permission_rationale">Potrebno dopuštenje za određivanje trenutačne lokacije za prijedloge kategorija (nije obvezno)</string>
|
||||
<string name="ok">U redu</string>
|
||||
<string name="title_activity_nearby">Mjesta u blizini</string>
|
||||
<string name="no_nearby">Nisu pronađena mjesta u blizini</string>
|
||||
<string name="warning">Upozorenje</string>
|
||||
<string name="file_exists">Ova datoteka već postoji na Zajedničkom poslužitelju. Jeste li sigurni da želite nastaviti?</string>
|
||||
<string name="yes">Da</string>
|
||||
<string name="no">Ne</string>
|
||||
<string name="media_detail_title">Naslov</string>
|
||||
<string name="media_detail_media_title">Naslov medija</string>
|
||||
<string name="media_detail_description">Opis</string>
|
||||
<string name="media_detail_description_explanation">Ovdje ide opis datoteke. Mogao bi biti poprilično dug i trebat će se prelomiti u nekoliko redova. Nadamo se da će lijepo izgledati.</string>
|
||||
<string name="media_detail_author">Autor</string>
|
||||
<string name="media_detail_author_explanation">Ovdje ide suradničko ime autora izabrane slike.</string>
|
||||
<string name="media_detail_uploaded_date">Datum postavljanja</string>
|
||||
<string name="media_detail_license">Licencija</string>
|
||||
<string name="media_detail_coordinates">Koordinate</string>
|
||||
<string name="media_detail_coordinates_empty">Ništa nije navedeno</string>
|
||||
<string name="become_a_tester_title">Postani beta tester</string>
|
||||
<string name="become_a_tester_description">Prijavite se na naš beta-kanal na Google Playu i dobijte raniji pristup novim mogućnostima i ispravkama pogrješaka</string>
|
||||
<string name="_2fa_code">Kôd za provjeru u 2 koraka</string>
|
||||
<string name="number_of_uploads">Moje ograničenje nedavnih postavljanja</string>
|
||||
<string name="maximum_limit">Najviše moguće</string>
|
||||
<string name="maximum_limit_alert">Nije moguće prikazati više od 500</string>
|
||||
<string name="set_limit">Postavi ograničenje nedavnih postavljanja</string>
|
||||
<string name="login_failed_2fa_not_supported">Kôd za provjeru u 2 koraka nije podržan.</string>
|
||||
<string name="logout_verification">Zaista se želite odjaviti?</string>
|
||||
<string name="commons_logo">Logotip Zajedničkog poslužitelja</string>
|
||||
<string name="commons_website">Mrežno mjesto Zajedničkog poslužitelja</string>
|
||||
<string name="commons_facebook">Stranica Zajedničkog poslužitelja na Facebooku</string>
|
||||
<string name="commons_github">Izvorni kôd Zajedničkog poslužitelja na Githubu</string>
|
||||
<string name="background_image">Pozadinska slika</string>
|
||||
<string name="mediaimage_failed">Slika nije uspjela</string>
|
||||
<string name="no_image_found">Slika nije pronađena</string>
|
||||
<string name="upload_image">Postavi sliku</string>
|
||||
<string name="welcome_image_mount_zao">Planina Zao</string>
|
||||
<string name="welcome_image_llamas">Ljame</string>
|
||||
<string name="welcome_image_rainbow_bridge">Dugin most</string>
|
||||
<string name="welcome_image_tulip">Tulipan</string>
|
||||
<string name="welcome_image_no_selfies">Bez selfija</string>
|
||||
<string name="welcome_image_proprietary">Vlasnička slika</string>
|
||||
<string name="welcome_image_welcome_wikipedia">Welcome (Wikipedija)</string>
|
||||
<string name="welcome_image_welcome_copyright">Dobro došli (autorska prava)</string>
|
||||
<string name="welcome_image_sydney_opera_house">Sidnejska opera</string>
|
||||
<string name="cancel">Odustani</string>
|
||||
<string name="navigation_drawer_open">Otvori</string>
|
||||
<string name="navigation_drawer_close">Zatvori</string>
|
||||
<string name="navigation_item_home">Početna stranica</string>
|
||||
<string name="navigation_item_upload">Postavljanje</string>
|
||||
<string name="navigation_item_nearby">U blizini</string>
|
||||
<string name="navigation_item_about">O</string>
|
||||
<string name="navigation_item_settings">Postavke</string>
|
||||
<string name="navigation_item_feedback">Povratna informacija</string>
|
||||
<string name="navigation_item_logout">Odjava</string>
|
||||
<string name="navigation_item_info">Upute</string>
|
||||
<string name="navigation_item_notification">Obavijesti</string>
|
||||
<string name="navigation_item_featured_images">Izabrano</string>
|
||||
<string name="nearby_needs_permissions">Mjesta u blizini ne mogu biti prikazana bez dopuštenja određivanja lokacije</string>
|
||||
<string name="no_description_found">nema opisa</string>
|
||||
<string name="nearby_info_menu_commons_article">Stranica datoteke na Zajedničkom poslužitelju</string>
|
||||
<string name="nearby_info_menu_wikidata_article">Stavka na Wikidati</string>
|
||||
<string name="nearby_info_menu_wikipedia_article">Članak na Wikipediji</string>
|
||||
<string name="error_while_cache">Pogrješka predmemoriranja slika</string>
|
||||
<string name="title_info">Jedinstveni naziv datoteke koji će služiti kao njeno ime. Možete koristiti uobičajeni jezik s razmacima. Ne uključuje datotečni nastavak.</string>
|
||||
<string name="description_info">Opišite medij što je više moguće: gdje je napravljen, što prikazuje,... Opišite objekte ili osobe. Napišite informacije koje ne mogu biti lako okrivene, npr. doba dana ako je u pitanju pejzaž. Ako medij prikazuje nešto neobično, molimo objasnite što je neobično.</string>
|
||||
<string name="upload_image_too_dark">Slika je pretamna, želite ili je ipak ostaviti? Zajednički poslužitelj je namijenjen slikama od enciklopedijske vrijednosti.</string>
|
||||
<string name="upload_image_blurry">Slika je mutna, želite ili je ipak ostaviti? Zajednički poslužitelj je namijenjen slikama od enciklopedijske vrijednosti.</string>
|
||||
<string name="give_permission">Daj dopuštenje</string>
|
||||
<string name="use_external_storage">Rabi vanjsku pohranu</string>
|
||||
<string name="use_external_storage_summary">Spremite slike načinjene kamerom Vašeg uređaja</string>
|
||||
<string name="login_to_your_account">Prijavite se na Vaš račun</string>
|
||||
<string name="send_log_file">Pošalji zapisnik</string>
|
||||
<string name="send_log_file_description">Pošalji zapisnik elektroničkom poštom razvijateljima</string>
|
||||
<string name="no_web_browser">Preglednik nije pronađen</string>
|
||||
<string name="null_url">Pogrješka! URL nije pronađen</string>
|
||||
<string name="nominate_deletion">Predloži za brisanje</string>
|
||||
<string name="nominated_for_deletion">Slika je predložena za brisanje</string>
|
||||
<string name="view_browser">Pogledaj u pregledniku</string>
|
||||
<string name="nearby_location_has_not_changed">Lokacija nepromijenjena.</string>
|
||||
<string name="nearby_location_not_available">Lokacija nedostupna.</string>
|
||||
<string name="location_permission_rationale_nearby">Potrebno je dopuštenje za popis mjesta u blizini</string>
|
||||
<string name="get_directions">PRIBAVI UPUTE</string>
|
||||
<string name="read_article">PROČITAJ ČLANAK</string>
|
||||
<string name="notifications_welcome">%1$s, dobro došli na Zajednički poslužitelj! Drago nam je da ste tu.</string>
|
||||
<string name="notifications_talk_page_message">%1$s Vam je ostavio poruku na Vašoj razgovornoj stranici</string>
|
||||
<string name="notifications_thank_you_edit">Hvala Vam na uređivanju</string>
|
||||
<string name="notifications_mention">%1$s Vas je spomenuo na %2$s.</string>
|
||||
<string name="toggle_view_button">Prebaci prikaz</string>
|
||||
<string name="nearby_directions">UPUTE</string>
|
||||
<string name="nearby_wikidata">WIKIDATA</string>
|
||||
<string name="nearby_wikipedia">WIKIPEDIJA</string>
|
||||
<string name="nearby_commons">ZAJEDNIČKI POSLUŽITELJ</string>
|
||||
<string name="about_rate_us"><u>Ocijenite nas</u></string>
|
||||
<string name="about_faq"><u>ČPP</u></string>
|
||||
<string name="welcome_skip_button">Preskoči upute</string>
|
||||
<string name="no_internet">Internet nije dostupan</string>
|
||||
<string name="internet_established">Internet je dostupan</string>
|
||||
<string name="error_notifications">Pogrješka dohvaćanja obavijesti</string>
|
||||
<string name="no_notifications">Nema obavijesti</string>
|
||||
<string name="about_translate"><u>Prevedi</u></string>
|
||||
<string name="about_translate_title">Jezici</string>
|
||||
<string name="about_translate_message">Odaberite jezik na koji bi željeli prevoditi</string>
|
||||
<string name="about_translate_proceed">Nastavi</string>
|
||||
<string name="about_translate_cancel">Odustani</string>
|
||||
<string name="retry">Pokušaj ponovo</string>
|
||||
<string name="showcase_view_got_it_button">U redu!</string>
|
||||
<string name="showcase_view_whole_nearby_activity">Ovo su mjesta u blizini koja trebaju slike za ilustriranje članaka o njima na Wikipediji</string>
|
||||
<string name="showcase_view_list_icon">Dodirnite da biste dobili popis ovih mjesta</string>
|
||||
<string name="showcase_view_plus_fab">Možete postaviti sliku s bilo kojeg mjesta u Vašoj galeriji ili kameri</string>
|
||||
<string name="no_images_found">Slike nisu pronađene!</string>
|
||||
<string name="error_loading_images">Pogrješka prilikom učitavanja slika.</string>
|
||||
<string name="image_uploaded_by">Postavio: %1$s</string>
|
||||
<string name="share_app_title">Aplikacija za dijeljenje</string>
|
||||
<string name="share_coordinates_not_present">Prilikom označavanja slike koordinate nisu navedene</string>
|
||||
<string name="error_fetching_nearby_places">Pogrješka prilikom dohvaćanja mjesta u blizini.</string>
|
||||
</resources>
|
||||
|
|
@ -35,8 +35,6 @@
|
|||
<string name="share_title_hint">Titel</string>
|
||||
<string name="share_description_hint">Beschreibung</string>
|
||||
<string name="login_failed_network">Oonmeldung fehlgeschlooht – Netzwerrekfehler</string>
|
||||
<string name="login_failed_username">Oonmeldung fehlgeschlooht – Bittschön Benutzernoome üwerprüfe</string>
|
||||
<string name="login_failed_password">Oonmeldung fehlgeschlooht – Bittschön Passwort üwerprüfe</string>
|
||||
<string name="login_failed_throttled" fuzzy="true">Zu viele erfollichlose Versuche. Bittschön in en poor Minute wieder erneit versuche.</string>
|
||||
<string name="login_failed_blocked">Der Benutzer woard leider uff Commons gesperrt</string>
|
||||
<string name="login_failed_generic">Oonmeldung fehlgeschlooht</string>
|
||||
|
|
|
|||
|
|
@ -34,8 +34,6 @@
|
|||
<string name="share_title_hint">Titul</string>
|
||||
<string name="share_description_hint">Wopisanje</string>
|
||||
<string name="login_failed_network">Přizjewjenje je so njeporadźiło - syćowy zmylk</string>
|
||||
<string name="login_failed_username">Přizjewjenje je njemóžno - prošu přepruwuj swoje wužiwarske mjeno</string>
|
||||
<string name="login_failed_password">Přizjewjenje njeje móžno - prošu přepruwuj swoje hesło</string>
|
||||
<string name="login_failed_throttled" fuzzy="true">Přewjele njewuspěšnych pospytow. Prošu spytaj za něšto mjeńšin hišće raz.</string>
|
||||
<string name="login_failed_blocked">Tutoho wužiwarja su bohužel na Commons zablokowali</string>
|
||||
<string name="login_failed_generic">Přizjewjenje je so njeporadźiło</string>
|
||||
|
|
|
|||
|
|
@ -59,8 +59,6 @@
|
|||
<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>
|
||||
<string name="login_failed_password">Nem lehet bejelentkezni - ellenőrizd a jelszavad</string>
|
||||
<string name="login_failed_throttled">Túl sok sikertelen próbálkozás. Próbálkozz újra pár perc múlva.</string>
|
||||
<string name="login_failed_blocked">Sajnáljuk, ezt a felhasználót blokkolták a Commonson</string>
|
||||
<string name="login_failed_2fa_needed">Meg kell adnia a kétlépcsős hitelesítő kódját.</string>
|
||||
|
|
|
|||
|
|
@ -46,8 +46,6 @@
|
|||
<string name="share_title_hint">Judul</string>
|
||||
<string name="share_description_hint">Deskripsi</string>
|
||||
<string name="login_failed_network">Tidak dapat login - kesalahan pada jaringan</string>
|
||||
<string name="login_failed_username">Tidak dapat masuk log - harap periksa nama pengguna Anda</string>
|
||||
<string name="login_failed_password">Tidak dapat masuk log - harap periksa kata sandi Anda</string>
|
||||
<string name="login_failed_throttled" fuzzy="true">Terlalu banyak usaha yang gagal. Harap coba lagi dalam beberapa menit</string>
|
||||
<string name="login_failed_blocked">Maaf, pengguna ini telah diblokir di Commons</string>
|
||||
<string name="login_failed_generic">Gagal masuk log</string>
|
||||
|
|
|
|||
|
|
@ -49,8 +49,6 @@
|
|||
<string name="add_title_toast">Gefðu þessari skrá einhvern titil</string>
|
||||
<string name="share_description_hint">Lýsing</string>
|
||||
<string name="login_failed_network">Innskráning mistókst - bilun í neti</string>
|
||||
<string name="login_failed_username">Innskráning mistókst. Athugaðu notandanafnið þitt</string>
|
||||
<string name="login_failed_password">Innskráning mistókst. Athugaðu lykilorðið þitt</string>
|
||||
<string name="login_failed_throttled">Of margar misteknar tilraunir. Reyndu aftur eftir nokkrar mínútur.</string>
|
||||
<string name="login_failed_blocked">Því miður, þessi notandi hefur verið bannaður á Commons</string>
|
||||
<string name="login_failed_2fa_needed">Þú verður að setja inn tveggja-þrepa auðkenningarkóðann þinn.</string>
|
||||
|
|
|
|||
|
|
@ -53,8 +53,6 @@
|
|||
<string name="share_title_hint">Titolo</string>
|
||||
<string name="share_description_hint">Descrizione</string>
|
||||
<string name="login_failed_network">Impossibile effettuare l\'accesso - errore di rete</string>
|
||||
<string name="login_failed_username">Impossibile effettuare l\'accesso - controlla il nome utente</string>
|
||||
<string name="login_failed_password">Impossibile effettuare l\'accesso - controlla la password</string>
|
||||
<string name="login_failed_throttled">Troppi tentativi falliti. Riprova tra alcuni minuti.</string>
|
||||
<string name="login_failed_blocked">Spiacente, questo utente è stato bloccato su Commons</string>
|
||||
<string name="login_failed_2fa_needed">Devi fornire il tuo codice di autenticazione a due fattori.</string>
|
||||
|
|
|
|||
|
|
@ -58,8 +58,7 @@
|
|||
<string name="add_title_toast">נא לתת כותרת לקובץ הזה</string>
|
||||
<string name="share_description_hint">תיאור</string>
|
||||
<string name="login_failed_network">לא ניתן להיכנס – כשל בתקשורת</string>
|
||||
<string name="login_failed_username">לא ניתן להיכנס – נא לבדוק את שם המשתמש שלך</string>
|
||||
<string name="login_failed_password">לא ניתן להיכנס – נא לבדוק את הססמה שלך</string>
|
||||
<string name="login_failed_wrong_credentials">לא ניתן להיכנס לחשבון – נא לבדוק את שם המשתמש ואת הסיסמה</string>
|
||||
<string name="login_failed_throttled">יותר מדי ניסיונות כושלים להיכנס. נא לנסות שוב בעוד מספר דקות.</string>
|
||||
<string name="login_failed_blocked">סליחה, החשבון הזה חסום בוויקישיתוף</string>
|
||||
<string name="login_failed_2fa_needed">יש לספק את קוד האימות הדו־שלבי שלך.</string>
|
||||
|
|
|
|||
|
|
@ -58,8 +58,6 @@
|
|||
<string name="add_title_toast">ファイル名をつけてください</string>
|
||||
<string name="share_description_hint">説明</string>
|
||||
<string name="login_failed_network">ログインできません - ネットワークのエラーです</string>
|
||||
<string name="login_failed_username">ログインできません - 利用者名を確認してください</string>
|
||||
<string name="login_failed_password">ログインできません - パスワードを確認してください</string>
|
||||
<string name="login_failed_throttled">失敗した回数が多すぎます。数分待ってからもう一度お試しください。</string>
|
||||
<string name="login_failed_blocked">申し訳ありませんが、この利用者はコモンズでブロックされています。</string>
|
||||
<string name="login_failed_2fa_needed">2要素認証コードを提供する必要があります。</string>
|
||||
|
|
|
|||
|
|
@ -40,8 +40,6 @@
|
|||
<string name="share_title_hint">Sesirah</string>
|
||||
<string name="share_description_hint">Wedharan</string>
|
||||
<string name="login_failed_network">Ora bisa mlebu log - jaringané gagal</string>
|
||||
<string name="login_failed_username">Ora bisa mlebu log - tiliki jeneng panganggoné panjenengan</string>
|
||||
<string name="login_failed_password">Ora bisa mlebu log - tiliki tembung wadiné panjenengan</string>
|
||||
<string name="login_failed_throttled">Kakèhan upaya sing gagal. Jajalana manèh mengko.</string>
|
||||
<string name="login_failed_blocked">Ngapunten, panganggo iki wis diblokir ing Commons</string>
|
||||
<string name="login_failed_2fa_needed">Panjenengan kudu ngisi kodhe otèntifikasi rong faktoré panjenengan</string>
|
||||
|
|
|
|||
|
|
@ -42,8 +42,6 @@
|
|||
<string name="share_title_hint">სათაური</string>
|
||||
<string name="share_description_hint">აღწერა</string>
|
||||
<string name="login_failed_network">შესვლა ვერ ხერხდება - ქსელის შეცდომა</string>
|
||||
<string name="login_failed_username">შესვლა ვერ ხერხდება - გთხოვთ შეამოწმოთ სახელი</string>
|
||||
<string name="login_failed_password">შესვლა ვერ ხერხდება - გთხოვთ შეამოწმოთ პაროლი</string>
|
||||
<string name="login_failed_throttled">ძალიან ბევრი წარუმატებელი მცდელობა. გთხოვთ, რამდენიმე წუთში სცადეთ კვლავ.</string>
|
||||
<string name="login_failed_blocked">უკაცრავად, ეს მომხმარებელი დაბლოკილია ვიკისაწყობში</string>
|
||||
<string name="login_failed_2fa_needed">თქვენ უნდა შეიყვანოთ ორფაქტორიანი ავტორიზაციის კოდი.</string>
|
||||
|
|
|
|||
|
|
@ -42,8 +42,6 @@
|
|||
<string name="share_title_hint">Azwel</string>
|
||||
<string name="share_description_hint">Aglam</string>
|
||||
<string name="login_failed_network">Ur izmir ara ad yeqqen - tuccḍa n uẓeṭṭa</string>
|
||||
<string name="login_failed_username">Ur izmir ara ad yeqqen - wali isem-ik n useqdac</string>
|
||||
<string name="login_failed_password">Ur izmir ara ad yeqqen - wali awal-ik uffir</string>
|
||||
<string name="login_failed_throttled">Ddeq n uɛraḍ ur yeddin ara. Ɛreḍ akka di kra n tisdatin</string>
|
||||
<string name="login_failed_blocked">Suref-aɣ, aseqdac-agi yewḥel di Commons</string>
|
||||
<string name="login_failed_2fa_needed">Yessefk ad d-muddeḍ tangalt n n usesbteb s snat n tarrayin.</string>
|
||||
|
|
|
|||
|
|
@ -35,8 +35,6 @@
|
|||
<string name="share_title_hint">ចំណងជើង</string>
|
||||
<string name="share_description_hint">បរិយាយ</string>
|
||||
<string name="login_failed_network">មិនអាចកត់ឈ្មោះចូល - បណ្តាញ network បរាជ័យ</string>
|
||||
<string name="login_failed_username">មិនអាចកត់ឈ្មោះចូល - សូមពិនិត្យឈ្មោះអ្នកប្រើប្រាស់របស់អ្នក</string>
|
||||
<string name="login_failed_password">មិនអាចកត់ឈ្មោះចូល - សូមពិនិត្យលេខសម្ងាត់របស់អ្នក</string>
|
||||
<string name="login_failed_throttled" fuzzy="true">ការព្យាយាមមិនបានសម្រេចមានចំនួនច្រើនដងពេក។ សូមព្យាយាមម្តងទៀតនៅប៉ុន្មាននាទីក្រោយ។</string>
|
||||
<string name="login_failed_blocked">សូមអភ័យទោស អ្នកប្រើប្រាស់រូបនេះត្រូវបានហាមឃាត់នៅ Commons</string>
|
||||
<string name="login_failed_generic">កត់ឈ្មោះចូលបរាជ័យ</string>
|
||||
|
|
|
|||
|
|
@ -42,8 +42,6 @@
|
|||
<string name="share_title_hint">제목</string>
|
||||
<string name="share_description_hint">설명</string>
|
||||
<string name="login_failed_network">가입할수 없습니다 - 망 오유입니다</string>
|
||||
<string name="login_failed_username">가입할수 없습니다 - 사용자이름을 확인하세요</string>
|
||||
<string name="login_failed_password">가입할수 없습니다 - 통행암호를 확인하세요</string>
|
||||
<string name="login_failed_throttled">실패한 시도가 너무 많습니다. 몇분후에 다시 시도하세요.</string>
|
||||
<string name="login_failed_blocked">죄송합니다, 이 사용자는 공용에서 차단되였습니다</string>
|
||||
<string name="login_failed_2fa_needed">두인자검증부호를 제공해야 합니다.</string>
|
||||
|
|
|
|||
|
|
@ -58,8 +58,7 @@
|
|||
<string name="add_title_toast">이 파일의 제목을 지정해 주십시오</string>
|
||||
<string name="share_description_hint">설명</string>
|
||||
<string name="login_failed_network">로그인할 수 없습니다 - 네트워크 오류입니다</string>
|
||||
<string name="login_failed_username">로그인할 수 없습니다 - 사용자 이름을 확인하세요</string>
|
||||
<string name="login_failed_password">로그인할 수 없습니다 - 비밀번호를 확인하세요</string>
|
||||
<string name="login_failed_wrong_credentials">로그인할 수 없습니다 - 사용자 이름과 비밀번호를 확인해 주십시오</string>
|
||||
<string name="login_failed_throttled">실패한 시도가 너무 많습니다. 몇 분 후에 다시 시도하세요.</string>
|
||||
<string name="login_failed_blocked">죄송합니다, 이 사용자는 공용에서 차단되었습니다</string>
|
||||
<string name="login_failed_2fa_needed">2요소 인증 코드를 제공해야 합니다.</string>
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
<string name="title_activity_about">Тасвири</string>
|
||||
<string name="menu_retry_upload">Такрарламакъ</string>
|
||||
<string name="menu_cancel_upload">Гери алмакъ</string>
|
||||
<string name="menu_download">Юклемек</string>
|
||||
<string name="menu_download">Эндирмек</string>
|
||||
<string name="license_name_cc0">CC0</string>
|
||||
<string name="license_name_cc_by_sa_3_0">CC BY-SA 3.0</string>
|
||||
<string name="license_name_cc_by_sa_3_0_de">CC BY-SA 3.0 (Алмания)</string>
|
||||
|
|
@ -47,6 +47,7 @@
|
|||
<string name="license_name_cc_by_sa_4_0">CC BY-SA 4.0</string>
|
||||
<string name="license_name_cc_by_4_0">CC BY 4.0</string>
|
||||
<string name="license_name_cc_zero">CC Zero</string>
|
||||
<string name="tutorial_3_subtext_2">Интернетден эндирген суратларынг</string>
|
||||
<string name="tutorial_4_text">Юклев уьлгю:</string>
|
||||
<string name="welcome_final_button_text">Дюр!</string>
|
||||
<string name="detail_panel_cats_label">Категориялар</string>
|
||||
|
|
|
|||
|
|
@ -39,8 +39,6 @@
|
|||
<string name="share_title_hint">Аталышы</string>
|
||||
<string name="share_description_hint">Баяндамасы</string>
|
||||
<string name="login_failed_network">Кирүүгө болбой жатат - тармакта үзгүлтүк бар</string>
|
||||
<string name="login_failed_username">Кирүүгө мүмкүн эмес - сураныч, колдонуучу ысымыңызды текшериңиз</string>
|
||||
<string name="login_failed_password">Кирүүгө мүмкүн эмес - сураныч, сыр сөзүңүздү текшериңиз</string>
|
||||
<string name="login_failed_throttled" fuzzy="true">Өтө көп натыйжасыз иш аракет. Суранабыз, бир нече мүнөттөн кийин кайталаңыз</string>
|
||||
<string name="login_failed_blocked">Кечириңиз, бул кодонуучу Уикиказынада блокко алынган.</string>
|
||||
<string name="login_failed_generic">Системага кирүүдө катачылык бар!</string>
|
||||
|
|
|
|||
|
|
@ -50,8 +50,6 @@
|
|||
<string name="share_title_hint">Titel</string>
|
||||
<string name="share_description_hint">Beschreiwung</string>
|
||||
<string name="login_failed_network">Aloggen huet net funktionéiert - Feeler mam Reseau</string>
|
||||
<string name="login_failed_username">Login net méiglech - kuckt w.e.g. Äre Benotzernumm no</string>
|
||||
<string name="login_failed_password">Login net méiglech - kuckt w.e.g. Äert Passwuert no</string>
|
||||
<string name="login_failed_throttled">Ze dacks ouni Succès probéiert. Probéiert w.e.g. an e puer Minutten nach eng Kéier.</string>
|
||||
<string name="login_failed_blocked">Pardon, dëse Benotzer ass op Commons gespaart</string>
|
||||
<string name="login_failed_generic">Aloggen huet net funktionéiert</string>
|
||||
|
|
|
|||
|
|
@ -50,8 +50,6 @@
|
|||
<string name="add_title_toast">Gaef estebleef \'ne naam veur dit bestandj</string>
|
||||
<string name="share_description_hint">Besjrieving</string>
|
||||
<string name="login_failed_network">Kan zich neet aanmelde - netwirkfout</string>
|
||||
<string name="login_failed_username">Kan zich neet aanmelde - controleer de gebroekersnaam</string>
|
||||
<string name="login_failed_password">Kan zich neet aanmelde - controleer die wachwaord</string>
|
||||
<string name="login_failed_throttled">Te väöl mislökde kieëre geperbeerd. Perbeer estebleef oppernuuj euver e paar menuut.</string>
|
||||
<string name="login_failed_blocked">Deze gebroeker is geblokkeerd op Commons</string>
|
||||
<string name="login_failed_2fa_needed">Doe mós diene twieëfaktorische bevestigingscode opgaeve.</string>
|
||||
|
|
|
|||
|
|
@ -45,8 +45,6 @@
|
|||
<string name="share_title_hint">Pavadinimas</string>
|
||||
<string name="share_description_hint">Aprašymas</string>
|
||||
<string name="login_failed_network">Negalima prisijungti - tinklo klaida</string>
|
||||
<string name="login_failed_username">Negalima prisijungti - prašome patikrinti savo vartotojo vardą</string>
|
||||
<string name="login_failed_password">Negalima prisijungti - prašome patikrinti savo slaptažodį</string>
|
||||
<string name="login_failed_throttled">Per daug nesėkmingų bandymų. Pabandykite dar kartą po keleto minučių.</string>
|
||||
<string name="login_failed_blocked">Atsiprašome, šis vartotojas buvo užblokuotas Commons</string>
|
||||
<string name="login_failed_generic">Prisijungti nepavyko</string>
|
||||
|
|
|
|||
|
|
@ -49,8 +49,7 @@
|
|||
<string name="add_title_toast">Ставете ѝ наслов на податотеката</string>
|
||||
<string name="share_description_hint">Опис</string>
|
||||
<string name="login_failed_network">Не можам да Ве најавам — мрежата не работи</string>
|
||||
<string name="login_failed_username">Не можам да Ве најавам — проверете си го корисничкото име</string>
|
||||
<string name="login_failed_password">Не можам да Ве најавам — проверете си ја лозинката</string>
|
||||
<string name="login_failed_wrong_credentials">Не можев да ве најавам. Проверете ги корисничкото име и лозинката.</string>
|
||||
<string name="login_failed_throttled">Направени се премногу неуспешни обиди. Обидете се пак за некоја минута.</string>
|
||||
<string name="login_failed_blocked">Нажалост, корисникот е блокиран на Ризницата</string>
|
||||
<string name="login_failed_2fa_needed">Мора да го укажете вашиот код за двочинителска заверка.</string>
|
||||
|
|
|
|||
|
|
@ -50,8 +50,6 @@
|
|||
<string name="add_title_toast">ഈ പ്രമാണത്തിന് ഒരു തലക്കെട്ട് നൽകുക.</string>
|
||||
<string name="share_description_hint">വിവരണം</string>
|
||||
<string name="login_failed_network">പ്രവേശിക്കാനായില്ല - നെറ്റ്വർക്ക് പരാജയപ്പെട്ടു</string>
|
||||
<string name="login_failed_username">പ്രവേശിക്കാനായില്ല - ദയവായി താങ്കളുടെ ഉപയോക്തൃനാമം പരിശോധിക്കുക</string>
|
||||
<string name="login_failed_password">പ്രവേശിക്കാനായില്ല - ദയവായി താങ്കളുടെ രഹസ്യവാക്ക് പരിശോധിക്കുക</string>
|
||||
<string name="login_failed_throttled">നിരവധി വിജയകരമല്ലാത്ത ശ്രമങ്ങൾ നടന്നിരിക്കുന്നു. വീണ്ടും ശ്രമിക്കുന്നതിനു മുമ്പ് ഏതാനം മിനിറ്റുകൾ വിശ്രമിക്കുക.</string>
|
||||
<string name="login_failed_blocked">ക്ഷമിക്കുക, ഈ ഉപയോക്താവ് കോമൺസിൽ നിന്ന് തടയപ്പെട്ടിരിക്കുകയാണ്</string>
|
||||
<string name="login_failed_2fa_needed">താങ്കളുടെ ദ്വി-ഘടക സാധൂകരണ കോഡ് നൽകുക.</string>
|
||||
|
|
|
|||
|
|
@ -54,8 +54,6 @@
|
|||
<string name="add_title_toast">कृपया या फाईलसाठी शीर्षक प्रदान करा</string>
|
||||
<string name="share_description_hint">वर्णन</string>
|
||||
<string name="login_failed_network">सनोंद प्रवेश अशक्य - नेटवर्क नाही</string>
|
||||
<string name="login_failed_username">सनोंद प्रवेश अशक्य - कृपया आपले सदस्यनाव तपासा</string>
|
||||
<string name="login_failed_password">सनोंद प्रवेश अशक्य - कृपया आपला परवलीचा शब्द तपासा</string>
|
||||
<string name="login_failed_throttled">अनेक अयशस्वी प्रयत्न.काही मिनीटांनंतर पुन्हा प्रयत्न करा.</string>
|
||||
<string name="login_failed_blocked">माफ करा, कॉमन्सवर हा सदस्य प्रतिबंधित आहे</string>
|
||||
<string name="login_failed_2fa_needed">आपण आपल्या दोन कारक प्रमाणिकरण कोड प्रदान करणे आवश्यक आहे.</string>
|
||||
|
|
|
|||
|
|
@ -37,8 +37,6 @@
|
|||
<string name="share_title_hint">Tajuk</string>
|
||||
<string name="share_description_hint">Keterangan</string>
|
||||
<string name="login_failed_network">Tidak boleh log masuk - kegagalan rangkaian</string>
|
||||
<string name="login_failed_username">Tidak dapat log masuk - Sila semak nama pengguna anda</string>
|
||||
<string name="login_failed_password">Tidak dapat log masuk - Sila semak kata laluan anda</string>
|
||||
<string name="login_failed_throttled" fuzzy="true">Terlalu banyak cubaan yang tidak berjaya. Sila cuba lagi dalam beberapa minit</string>
|
||||
<string name="login_failed_blocked">Maaf, pengguna ini telah disekat di Commons</string>
|
||||
<string name="login_failed_generic">Log masuk gagal</string>
|
||||
|
|
|
|||
|
|
@ -49,8 +49,6 @@
|
|||
<string name="share_title_hint">Tittel</string>
|
||||
<string name="share_description_hint">Beskrivelse</string>
|
||||
<string name="login_failed_network">Innlogging feilet - nettverksproblem</string>
|
||||
<string name="login_failed_username">Innlogging feilet - sjekk brukernavnet ditt</string>
|
||||
<string name="login_failed_password">Innlogging feilet - sjekk passordet ditt</string>
|
||||
<string name="login_failed_throttled">For mange misslykkede forsøk. Vennligst prøv igjen om noen få minutter.</string>
|
||||
<string name="login_failed_blocked">Beklager, denne brukeren har blitt blokkert på Commons</string>
|
||||
<string name="login_failed_2fa_needed">Du må oppgi tofaktorautentiseringskoden din.</string>
|
||||
|
|
|
|||
|
|
@ -39,8 +39,6 @@
|
|||
<string name="share_title_hint">शीर्षक</string>
|
||||
<string name="share_description_hint">वर्णन</string>
|
||||
<string name="login_failed_network">प्रवेश गर्न असमर्थ - जडान खराबी</string>
|
||||
<string name="login_failed_username">प्रवेश गर्न असमर्थ - कृपया तपाईंको प्रयोगकर्ता नाम जाँच गर्नुहोस्</string>
|
||||
<string name="login_failed_password">प्रवेश गर्न असमर्थ - कृपया आफ्नो पासवर्ड जाँच गर्नुहोस</string>
|
||||
<string name="login_failed_throttled" fuzzy="true">धेरै असफल प्रयासहरू भए । कृपया केही मिनेट पछि पुन: प्रयास गर्नुहोस</string>
|
||||
<string name="login_failed_blocked">माफ गर्नुहोस, यो प्रयोगकर्तालाई कमोन्समा ब्लक गरिएको छ</string>
|
||||
<string name="login_failed_generic">प्रवेश सफल हुन सकेन</string>
|
||||
|
|
|
|||
|
|
@ -47,8 +47,6 @@
|
|||
<string name="share_title_hint">Naam</string>
|
||||
<string name="share_description_hint">Beschrijving</string>
|
||||
<string name="login_failed_network">Aanmelden niet mogelijk. Er is een probleem met het netwerk</string>
|
||||
<string name="login_failed_username">Aanmelden niet mogelijk. Controleer uw gebruikersnaam</string>
|
||||
<string name="login_failed_password">Aanmelden niet mogelijk. Controleer uw wachtwoord</string>
|
||||
<string name="login_failed_throttled">U hebt te vaak geprobeerd aan te melden. Probeer het over een aantal minuten opnieuw.</string>
|
||||
<string name="login_failed_blocked">Deze gebruiker is helaas geblokkeerd op Wikimedia Commons</string>
|
||||
<string name="login_failed_generic">Aanmelden mislukt</string>
|
||||
|
|
|
|||
|
|
@ -43,8 +43,6 @@
|
|||
<string name="share_title_hint">Títol</string>
|
||||
<string name="share_description_hint">Descripcion</string>
|
||||
<string name="login_failed_network">Impossible de se connectar — pana de ret</string>
|
||||
<string name="login_failed_username">Impossible de se connectar — verificatz vòstre nom d’utilizaire</string>
|
||||
<string name="login_failed_password">Impossible de se connectar — verificatz vòstre senhal</string>
|
||||
<string name="login_failed_throttled">Tròp de temptativas infructuosas. Ensajatz tornarmai dins qualques minutas.</string>
|
||||
<string name="login_failed_blocked">O planhèm, aqueste utilizaire es estat blocat dins Commons</string>
|
||||
<string name="login_failed_generic">Error de connexion</string>
|
||||
|
|
|
|||
|
|
@ -35,8 +35,6 @@
|
|||
<string name="share_title_hint">ଶିରୋନାମ</string>
|
||||
<string name="share_description_hint">ବିବରଣୀ</string>
|
||||
<string name="login_failed_network">ଲଗ ଇନ କରିବାରେ ବିଫଳ - ନେଟୱାର୍କରେ ଅସୁବିଧା</string>
|
||||
<string name="login_failed_username">ଲଗ ଇନ କରିବାରେ ବିଫଳ - ଦୟାକରି ନିଜର ସଭ୍ୟ ନାମ ପରଖିନିଅନ୍ତୁ</string>
|
||||
<string name="login_failed_password">ଲଗ ଇନ କରିବାରେ ବିଫଳ - ଦୟାକରି ନିଜର ପାସୱାର୍ଡ଼ ପରଖିନିଅନ୍ତୁ</string>
|
||||
<string name="login_failed_throttled" fuzzy="true">ଖୁବ ଅଧିକ ଅସଫଳ ଚେଷ୍ଟା । ଦୟାକରି କେଇ ମିନିଟ ଛାଡ଼ି ଚେଷ୍ଟା କରନ୍ତୁ</string>
|
||||
<string name="login_failed_blocked">କ୍ଷମା ଘେନିବେ, ଏହି ସଭ୍ୟଙ୍କୁ କମନ୍ସରେ ଅଟକାଯାଇଛି</string>
|
||||
<string name="login_failed_generic">ଲଗଇନ ହେଲାନାହିଁ</string>
|
||||
|
|
|
|||
|
|
@ -43,8 +43,6 @@
|
|||
<string name="share_title_hint">ਸਿਰਲੇਖ</string>
|
||||
<string name="share_description_hint">ਵੇਰਵਾ</string>
|
||||
<string name="login_failed_network">ਦਾਖ਼ਲਾ ਨਹੀਂ ਹੋ ਰਿਹਾ - ਨੈੱਟਵਰਕ ਫੇਲ੍ਹ ਹੋਇਆ ਹੈ</string>
|
||||
<string name="login_failed_username">ਦਾਖ਼ਲਾ ਨਹੀਂ ਹੋ ਰਿਹਾ - ਆਪਣਾ ਵਰਤੋਂਕਾਰ ਨਾਂ ਚੈੱਕ ਕਰੋ</string>
|
||||
<string name="login_failed_password">ਦਾਖ਼ਲਾ ਨਹੀਂ ਹੋ ਰਿਹਾ - ਆਪਣਾ ਪਾਸਵਰਡ ਚੈੱਕ ਕਰੋ ਜੀ</string>
|
||||
<string name="login_failed_throttled">ਬਹੁਤ ਸਾਰੀਆਂ ਅਸਫ਼ਲ ਕੋਸ਼ਿਸ਼ਾਂ। ਥੋੜ੍ਹੀ ਦੇਰ ਬਾਅਦ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।</string>
|
||||
<string name="login_failed_blocked">ਅਫ਼ਸੋਸ, ਇਹ ਵਰਤੋਂਕਾਰ ਕਾਮਨਜ਼ ਉੱਤੇ ਬਲਾਕ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ</string>
|
||||
<string name="login_failed_generic">ਦਾਖ਼ਲਾ ਫੇਲ੍ਹ ਹੋਇਆ</string>
|
||||
|
|
|
|||
|
|
@ -60,8 +60,7 @@
|
|||
<string name="share_title_hint">Tytuł</string>
|
||||
<string name="share_description_hint">Opis</string>
|
||||
<string name="login_failed_network">Nie można zalogować - błąd sieci</string>
|
||||
<string name="login_failed_username">Nie można zalogować - sprawdź nazwę użytkownika</string>
|
||||
<string name="login_failed_password">Nie można zalogować - sprawdź hasło</string>
|
||||
<string name="login_failed_wrong_credentials">Nie można się zalogować - sprawdź swoją nazwę użytkownika i hasło</string>
|
||||
<string name="login_failed_throttled">Zbyt wiele nieudanych prób zalogowania. Spróbuj ponownie za kilka minut.</string>
|
||||
<string name="login_failed_blocked">Przepraszamy, ten użytkownik został zablokowany na Commons</string>
|
||||
<string name="login_failed_2fa_needed">Wprowadź swój kod dla dwuetapowej autoryzacji.</string>
|
||||
|
|
|
|||
|
|
@ -49,8 +49,7 @@
|
|||
<string name="add_title_toast">Për piasì, ch\'a-j buta \'n tìtol a s\'archivi</string>
|
||||
<string name="share_description_hint">Descrission</string>
|
||||
<string name="login_failed_network">Impossìbil rintré ant ël sistema - la rej a marcia nen</string>
|
||||
<string name="login_failed_username">Impossìbil rintré ant ël sistema - për piasì, ch\'a verìfica sò stranòm</string>
|
||||
<string name="login_failed_password">Impossìbil rintré ant ël sistema - për piasì, ch\'a contròla soa ciav</string>
|
||||
<string name="login_failed_wrong_credentials">Impossìbil rintré ant ël sistema - për piasì ch\'a contròla sò stranòm e soa ciav</string>
|
||||
<string name="login_failed_throttled">Tròpi tentativ falì. Për piasì, ch\'a preuva torna da-sì chèiche minute.</string>
|
||||
<string name="login_failed_blocked">An dëspias, s\'utent-sì a l\'é stàit blocà ansima a Commons</string>
|
||||
<string name="login_failed_2fa_needed">A dev fornì sò còdes d\'autentificassion a doi fator.</string>
|
||||
|
|
|
|||
|
|
@ -37,8 +37,6 @@
|
|||
<string name="add_title_toast">مهرباني وکړئ د دې دوتنې لپاره سرلیک چمتو کړئ</string>
|
||||
<string name="share_description_hint">څرگندونه</string>
|
||||
<string name="login_failed_network">د ننوتلو توان نلري - د شبکې ناکامي</string>
|
||||
<string name="login_failed_username">د ننوتلو توان نلري - لطفاً خپل کارن نوم وګورئ</string>
|
||||
<string name="login_failed_password">د ننوتلو توان نلري - لطفاً خپل پټنوم وګورئ</string>
|
||||
<string name="login_failed_throttled">ډیری ناکامه هڅې. لطفا څو دقیقې وروسته بیا هڅه وکړئ.</string>
|
||||
<string name="login_failed_blocked">بخښنه غواړو، په دي کارن د کامنز لخوا بنديز ولګول شو</string>
|
||||
<string name="login_failed_generic">غونډال کې ننوتنه نابريالې شوه</string>
|
||||
|
|
|
|||
|
|
@ -61,8 +61,7 @@
|
|||
<string name="add_title_toast">Forneça um título para este arquivo</string>
|
||||
<string name="share_description_hint">Descrição</string>
|
||||
<string name="login_failed_network">Erro ao efetuar o login - falha na rede</string>
|
||||
<string name="login_failed_username">Erro ao efetuar o login - confira seu nome de usuário</string>
|
||||
<string name="login_failed_password">Erro ao efetuar o login - confira sua senha</string>
|
||||
<string name="login_failed_wrong_credentials">Não é possível fazer o login - verifique seu nome de usuário e senha</string>
|
||||
<string name="login_failed_throttled">Muitas tentativas malsucedidas. Tente de novo daqui alguns minutos.</string>
|
||||
<string name="login_failed_blocked">Desculpe, esse usuário foi banido do Commons</string>
|
||||
<string name="login_failed_2fa_needed">Você precisa fornecer o seu código de ativação de dois fatores.</string>
|
||||
|
|
|
|||
|
|
@ -58,8 +58,7 @@
|
|||
<string name="add_title_toast">Forneça um título para este ficheiro, por favor</string>
|
||||
<string name="share_description_hint">Descrição</string>
|
||||
<string name="login_failed_network">Não foi possível iniciar sessão - falha de rede</string>
|
||||
<string name="login_failed_username">Não foi possível iniciar sessão - verifique o seu nome de utilizador(a)</string>
|
||||
<string name="login_failed_password">Não foi possível iniciar sessão - verifique a sua palavra-passe</string>
|
||||
<string name="login_failed_wrong_credentials">Não foi possível iniciar sessão - verifique o seu nome de utilizador e a palavra-passe</string>
|
||||
<string name="login_failed_throttled">Demasiadas tentativas malsucedidas. Por favor, tente de novo dentro de alguns minutos.</string>
|
||||
<string name="login_failed_blocked">Desculpe, este utilizador foi bloqueado no Commons</string>
|
||||
<string name="login_failed_2fa_needed">Precisa fornecer o seu código de ativação de dois fatores.</string>
|
||||
|
|
@ -222,7 +221,7 @@
|
|||
<string name="navigation_item_settings">Configurações</string>
|
||||
<string name="navigation_item_feedback">Comentários</string>
|
||||
<string name="navigation_item_logout">Sair</string>
|
||||
<string name="navigation_item_info">Tutorial</string>
|
||||
<string name="navigation_item_info">Explicação</string>
|
||||
<string name="navigation_item_notification">Notificações</string>
|
||||
<string name="navigation_item_featured_images">Destacadas</string>
|
||||
<string name="nearby_needs_permissions">Os sítios aqui perto não podem ser apresentados sem permissões de localização</string>
|
||||
|
|
|
|||
|
|
@ -50,8 +50,6 @@
|
|||
<string name="share_title_hint">{{Identical|Title}}</string>
|
||||
<string name="share_description_hint">{{Identical|Description}}</string>
|
||||
<string name="login_failed_network">Error message shown to user when login can not be completed due to network issues.</string>
|
||||
<string name="login_failed_username">Error message shown to user when login can not be completed because the user name is wrong.</string>
|
||||
<string name="login_failed_password">Error message shown to user when login can not be completed beause the password is wrong</string>
|
||||
<string name="login_failed_throttled">Error message shown to user when login can not be completed because the user has attempted to login too many times in a short period of time, and hence been throttled.</string>
|
||||
<string name="login_failed_blocked">Error message shown to user when login can not be completed because the user is blocked on Wikimedia Commons</string>
|
||||
<string name="login_failed_generic">{{Identical|Login failed}}</string>
|
||||
|
|
|
|||
|
|
@ -44,8 +44,6 @@
|
|||
<string name="share_title_hint">Titlu</string>
|
||||
<string name="share_description_hint">Descriere</string>
|
||||
<string name="login_failed_network">Autentificare nereușită – defecțiune de rețea</string>
|
||||
<string name="login_failed_username">Autentificare nereușită – verificați-vă numele de utilizator</string>
|
||||
<string name="login_failed_password">Autentificare nereușită – verificați-vă parola</string>
|
||||
<string name="login_failed_throttled">Prea multe încercări nereușite. Încercați din nou peste câteva minute.</string>
|
||||
<string name="login_failed_blocked">Ne pare rău, acest utilizator a fost blocat la Commons</string>
|
||||
<string name="login_failed_2fa_needed">Trebuie să introduceți tokenul de autentificare.</string>
|
||||
|
|
|
|||
|
|
@ -62,8 +62,7 @@
|
|||
<string name="add_title_toast">Пожалуйста, укажите название этого файла</string>
|
||||
<string name="share_description_hint">Описание</string>
|
||||
<string name="login_failed_network">Не удаётся войти — сбой сети</string>
|
||||
<string name="login_failed_username">Не удалось войти — пожалуйста, проверьте своё имя пользователя</string>
|
||||
<string name="login_failed_password">Не удалось войти — пожалуйста, проверьте свой пароль</string>
|
||||
<string name="login_failed_wrong_credentials">Не удаётся войти — проверьте ваше имя пользователя и пароль</string>
|
||||
<string name="login_failed_throttled">Слишком много неудачных попыток. Пожалуйста, попробуйте ещё раз через несколько минут.</string>
|
||||
<string name="login_failed_blocked">Извините, но участник с таким именем был заблокирован на Викискладе</string>
|
||||
<string name="login_failed_2fa_needed">Вы должны ввести код двухфакторной аутентификации.</string>
|
||||
|
|
|
|||
|
|
@ -42,8 +42,6 @@
|
|||
<string name="share_title_hint">عنوان</string>
|
||||
<string name="share_description_hint">تشريح</string>
|
||||
<string name="login_failed_network">ناقابلِ داخل ٿيڻ - باھمڄار ناڪامي</string>
|
||||
<string name="login_failed_username">ناقابلِ داخل ٿيڻ - براءِ مھرباني پنھنجو واپرائيندڙ-نانءُ چڪاسيو</string>
|
||||
<string name="login_failed_password">ناقابل داخل ٿيڻ - براءِ مھرباني پنھنجو ڳجھولفظ چڪاسيو</string>
|
||||
<string name="login_failed_throttled">ھيڪانديون ناڪام ڪوششون. براءِ مھرباني ڪجھ منٽن کانپوءِ ٻيھر ڪوشش ڪريو.</string>
|
||||
<string name="login_failed_blocked">افسوس، ھي واپرائيندڙ العام تي بندشيل آھي</string>
|
||||
<string name="login_failed_generic">داخل ٿيڻ ناڪام</string>
|
||||
|
|
|
|||
|
|
@ -44,8 +44,6 @@
|
|||
<string name="share_title_hint">මාතෘකාව</string>
|
||||
<string name="share_description_hint">විස්තරය</string>
|
||||
<string name="login_failed_network">පිවිසීමට නොහැකිය-ජාලය ඇනහිටීමක්</string>
|
||||
<string name="login_failed_username">පිවිසීමට නොහැකිය-කරුණාකර ඔබගේ පිවිසුම්-නාමය පරික්ෂා කරන්න</string>
|
||||
<string name="login_failed_password">පිවිසීමට නොහැකිය-කරුණාකර ඔබගේ මුරපදය පරික්ෂා කරන්න.</string>
|
||||
<string name="login_failed_throttled">බොහෝ අසාර්ථක උත්සාහයන් කර ඇත. කරුණාකර මිනිත්තු කිහිපයකට පසුව උත්සාහ කරන්න</string>
|
||||
<string name="login_failed_blocked">කණගාටුයි,මෙම පරිශීලක වාරණයට ලක්කර ඇත.</string>
|
||||
<string name="login_failed_2fa_needed">ඔබ ඔබගේ ද්විත්ව සහතික කිරීමේ කේතය ඇතුලත් කළ යුතුය.</string>
|
||||
|
|
|
|||
|
|
@ -51,8 +51,6 @@
|
|||
<string name="add_title_toast">Prosím, dajte tomuto súboru názov</string>
|
||||
<string name="share_description_hint">Opis</string>
|
||||
<string name="login_failed_network">prihlásenie zlyhalo - zlyhanie siete</string>
|
||||
<string name="login_failed_username">Prihlásenie zlyhalo - skontrolujte vaše používateľské meno</string>
|
||||
<string name="login_failed_password">Prihlásenie zlyhalo - skontrolujte vaše heslo</string>
|
||||
<string name="login_failed_throttled">Príliš veľa neúspešných pokusov. Skúste to znova o niekoľko minút.</string>
|
||||
<string name="login_failed_blocked">Ospravedlňujeme sa, tento užívateľ bol na Commons zablokovaný</string>
|
||||
<string name="login_failed_generic">Prihlásenie zlyhalo</string>
|
||||
|
|
|
|||
|
|
@ -57,8 +57,6 @@
|
|||
<string name="add_title_toast">Унесите наслов за ову датотеку</string>
|
||||
<string name="share_description_hint">Опис</string>
|
||||
<string name="login_failed_network">Неуспешно пријављивање – грешка на мрежи</string>
|
||||
<string name="login_failed_username">Неуспешно пријављивање – проверите Ваше корисничко име</string>
|
||||
<string name="login_failed_password">Неуспешно пријављивање – проверите Вашу лозинку</string>
|
||||
<string name="login_failed_throttled">Превише неуспешних покушаја. Пробајте поново за неколико минута.</string>
|
||||
<string name="login_failed_blocked">Нажалост, овај корисник је блокиран на Остави</string>
|
||||
<string name="login_failed_2fa_needed">Морате унети Ваш двофакторски код за аутентификацију.</string>
|
||||
|
|
|
|||
|
|
@ -43,8 +43,6 @@
|
|||
<string name="share_title_hint">Judul</string>
|
||||
<string name="share_description_hint">Pedaran</string>
|
||||
<string name="login_failed_network">Teu bisa login - gangguan jaringan</string>
|
||||
<string name="login_failed_username">Teu bisa login - pariksa sandiasma</string>
|
||||
<string name="login_failed_password">Teu bisa login - pariksa kecap sandi</string>
|
||||
<string name="login_failed_throttled">Loba teuing nu gagalna. Mangga cobian sababaraha menit deui mah</string>
|
||||
<string name="login_failed_blocked">Punten, ieu kontributor geus diblokir di Commons</string>
|
||||
<string name="login_failed_2fa_needed">Anjeun kudu nyayagakeun kodeu oténtikasi dua faktor.</string>
|
||||
|
|
|
|||
|
|
@ -55,8 +55,7 @@
|
|||
<string name="add_title_toast">Var god ange en titel för denna fil</string>
|
||||
<string name="share_description_hint">Beskrivning</string>
|
||||
<string name="login_failed_network">Det gick inte att logga in - nätverksfel</string>
|
||||
<string name="login_failed_username">Det gick inte att logga in - var god kontrollera ditt användarnamn</string>
|
||||
<string name="login_failed_password">Det gick inte att logga in - var god kontrollera ditt lösenord</string>
|
||||
<string name="login_failed_wrong_credentials">Kunde inte logga in - kontrollera ditt användarnamn och lösenord</string>
|
||||
<string name="login_failed_throttled">För många misslyckade försök. Var god försök igen om några minuter.</string>
|
||||
<string name="login_failed_blocked">Tyvärr, denna användare har blockerats på Commons</string>
|
||||
<string name="login_failed_2fa_needed">Du måste ange din tvåstegsverifieringskod.</string>
|
||||
|
|
|
|||
|
|
@ -38,8 +38,6 @@
|
|||
<string name="share_title_hint">శీర్షిక</string>
|
||||
<string name="share_description_hint">వివరణ</string>
|
||||
<string name="login_failed_network">లాగిన్ చెయ్యలేకపోయాం - నెట్వర్కు విఫలం</string>
|
||||
<string name="login_failed_username">లాగిన్ చెయ్యలేకపోయాం - మీ వాడుకరిపేరును సరిచూసుకోండి</string>
|
||||
<string name="login_failed_password">లాగిన్ చెయ్యలేకపోయాం - మీ సంకేతపదాన్ని సరిచూసుకోండి</string>
|
||||
<string name="login_failed_throttled">మరీ ఎక్కువ విఫల యత్నాలు చేసారు. కొద్ది నిముషాలాగి ప్రయత్నించండి</string>
|
||||
<string name="login_failed_blocked">ఈ వాడుకరి కామన్స్ లో నిరోధించబడ్డారు, సారీ.</string>
|
||||
<string name="login_failed_generic">లాగిన్ విఫలమైంది</string>
|
||||
|
|
|
|||
|
|
@ -48,8 +48,6 @@
|
|||
<string name="add_title_toast">กรุณาระบุชืิ่อเรื่องของไฟล์นี้</string>
|
||||
<string name="share_description_hint">คำอธิบาย</string>
|
||||
<string name="login_failed_network">ไม่สามารถเข้าสู่ระบบได้ - ความล้มเหลวของเครือข่าย</string>
|
||||
<string name="login_failed_username">ไม่สามารถเข้าสู่ระบบได้ - กรุณาตรวจสอบชื่อผู้ใช้ของคุณ</string>
|
||||
<string name="login_failed_password">ไม่สามารถเข้าสู่ระบบได้ - กรุณาตรวจสอบรหัสผ่านของคุณ</string>
|
||||
<string name="login_failed_throttled">จำนวนครั้งที่พยายามไม่สำเร็จมากเกินไป กรุณาลองอีกครั้งในอีกสักครู่</string>
|
||||
<string name="login_failed_blocked">ขออภัย ผู้ใช้นี้ถูกบล็อกบนคอมมอนส์อยู่</string>
|
||||
<string name="login_failed_2fa_needed">คุณต้องระบุโค้ดการตรวจสอบความถูกต้องสองปัจจัยของคุณ</string>
|
||||
|
|
|
|||
|
|
@ -57,8 +57,6 @@
|
|||
<string name="add_title_toast">Lütfen bu dosya için bir başlık ekleyin</string>
|
||||
<string name="share_description_hint">Açıklama</string>
|
||||
<string name="login_failed_network">Oturum açılamıyor - ağ hatası</string>
|
||||
<string name="login_failed_username">Oturum açılamıyor - lütfen kullanıcı adınızı kontrol edin</string>
|
||||
<string name="login_failed_password">Oturum açılamıyor - lütfen parolanızı kontrol edin</string>
|
||||
<string name="login_failed_throttled">Çok sayıda başarısız girişimde bulundunuz. Birkaç dakika sonra tekrar deneyin.</string>
|
||||
<string name="login_failed_blocked">Üzgünüz, bu kullanıcı Commons\'ta engellendi</string>
|
||||
<string name="login_failed_2fa_needed">İki faktörlü kimlik doğrulama kodunu sağlamalısınız.</string>
|
||||
|
|
|
|||
|
|
@ -39,8 +39,6 @@
|
|||
<string name="share_title_hint">ماۋزۇ</string>
|
||||
<string name="share_description_hint">چۈشەندۈرۈش</string>
|
||||
<string name="login_failed_network">تىزىملىتىش - تور كاشىلىسى</string>
|
||||
<string name="login_failed_username">تىزىملاشقا ئامالسىز - سىزنىڭ ئابونت نامىڭىزنى تەكشۈرۈپ بېقىڭ</string>
|
||||
<string name="login_failed_password">تىزىملاشقا ئامالسىز مەخپىي نومۇرىڭىزنى تەكشۈرۈپ بېقىڭ</string>
|
||||
<string name="login_failed_throttled">مەغلۇپ بولغان قېتىم سانى بەك كۆپ . نەچچە مىنۇتتىن كېيىن قايتا سىناڭ .</string>
|
||||
<string name="login_failed_blocked">كەچۈرۈڭ، بۇ ئابونت ئاللىقاچان ئورتاق بەھرىمەن بولىدىغان بايلىق مەنبەسى دائىرىلىك</string>
|
||||
<string name="login_failed_2fa_needed">سىز چوقۇم سىزنىڭ قوش ئامىل تەكشۈرۈش كودىنى تاپشۇرىسىز .</string>
|
||||
|
|
|
|||
|
|
@ -58,8 +58,7 @@
|
|||
<string name="add_title_toast">Будь ласка, вкажіть назву цього файлу</string>
|
||||
<string name="share_description_hint">Опис</string>
|
||||
<string name="login_failed_network">Неможливо увійти — збій у мережі</string>
|
||||
<string name="login_failed_username">Неможливо увійти — будь ласка, перевірте своє ім\'я користувача</string>
|
||||
<string name="login_failed_password">Неможливо увійти — будь ласка, перевірте свій пароль</string>
|
||||
<string name="login_failed_wrong_credentials">Неможливо увійти — будь ласка перевірте ім\'я користувача та пароль</string>
|
||||
<string name="login_failed_throttled">Надто багато невдалих спроб. Будь ласка, спробуйте знову через кілька хвилин.</string>
|
||||
<string name="login_failed_blocked">Вибачте, цього користувача було заблоковано на Вікісховищі</string>
|
||||
<string name="login_failed_2fa_needed">Ви повинні надати код двофакторної автентифікації.</string>
|
||||
|
|
@ -150,7 +149,7 @@
|
|||
<string name="tutorial_2_subtext_2">Корисні об\'єкти (велосипеди, залізничні станції)</string>
|
||||
<string name="tutorial_2_subtext_3">Відомі люди (ваш мер, спортсмен-олімпієць, якого ви зустріли)</string>
|
||||
<string name="tutorial_3_text">Будь ласка, НЕ завантажуйте:</string>
|
||||
<string name="tutorial_3_subtext">- Селфі або фото своїх друзів \n- Зображення, які Ви завантажили з інтернету \n- Скріншоти патентованих програм</string>
|
||||
<string name="tutorial_3_subtext">- Селфі або фото своїх друзів \n- Зображення, які Ви завантажили з інтернету \n- Знімки екрану пропрієтарних програм</string>
|
||||
<string name="tutorial_3_subtext_1">Селфі чи фото ваших друзів</string>
|
||||
<string name="tutorial_3_subtext_2">Зображення, які ви завантажили з інтернету</string>
|
||||
<string name="tutorial_3_subtext_3">Знімки екрану пропрієтарних програм</string>
|
||||
|
|
@ -162,7 +161,7 @@
|
|||
<string name="welcome_wikipedia_text">Надсилайте Ваші зображення. Допоможіть оживити статті Вікіпедії!</string>
|
||||
<string name="welcome_wikipedia_subtext">Зображення у Вікіпедії надходять з Вікісховища.</string>
|
||||
<string name="welcome_copyright_text">Ваші зображення допомагають освіті людей у всьому світі.</string>
|
||||
<string name="welcome_copyright_subtext">Уникайте захищених авторським правом матеріалів, знайдених в Інтернеті, а також зображень плакатів, обкладинок книг і т. п.</string>
|
||||
<string name="welcome_copyright_subtext">Уникайте захищених авторським правом матеріалів, знайдених в Інтернеті, а також зображень плакатів, обкладинок книг, тощо.</string>
|
||||
<string name="welcome_final_text">Ви це зрозуміли?</string>
|
||||
<string name="welcome_final_button_text">Так!</string>
|
||||
<string name="welcome_help_button_text"/>
|
||||
|
|
|
|||
|
|
@ -45,8 +45,6 @@
|
|||
<string name="share_title_hint">عنوان</string>
|
||||
<string name="share_description_hint">وضاحت</string>
|
||||
<string name="login_failed_network">لاگ ان ہونے میں ناکام - نیٹ ورک ناکامی</string>
|
||||
<string name="login_failed_username">لاگ ان ہونے میں ناکام - براہ مہربانی اپنا صارف نام کی جانچ کریں</string>
|
||||
<string name="login_failed_password">لاگ ان ہونے میں ناکام - براہ مہربانی - اپنے پاس ورڈ کی جانچ کریں</string>
|
||||
<string name="login_failed_throttled">بے شمار ناکام کوششیں کچھ منٹوں میں دوبارہ کوشش کریں۔</string>
|
||||
<string name="login_failed_blocked">معذرت، یہ صارف کومنز پر بلاک کردیا گیا ہے</string>
|
||||
<string name="login_failed_2fa_needed">آپ کو اپنے دو عامل کے تصدیق کوڈ فراہم کرنا چاہیے۔</string>
|
||||
|
|
|
|||
|
|
@ -1,16 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Authors:
|
||||
* Harriettruong3
|
||||
* Leducthn
|
||||
* Minh Nguyen
|
||||
* Thanhtai2009
|
||||
* Tuankiet65
|
||||
-->
|
||||
<resources>
|
||||
<string name="preference_category_feedback">Phản hồi</string>
|
||||
<string name="preference_category_location">Vị trí</string>
|
||||
<string name="app_name">Commons</string>
|
||||
<string name="bullet">•</string>
|
||||
<string name="menu_settings">Thiết lập</string>
|
||||
<string name="username">Tên người dùng</string>
|
||||
<string name="password">Mật khẩu</string>
|
||||
<string name="login_credential">Đăng nhập vào tài khoản Commons Beta của bạn</string>
|
||||
<string name="login">Đăng nhập</string>
|
||||
<string name="forgot_password">Quên mật khẩu?</string>
|
||||
<string name="signup">Mở tài khoản</string>
|
||||
<string name="logging_in_title">Đang đăng nhập</string>
|
||||
<string name="logging_in_message">Vui lòng chờ…</string>
|
||||
|
|
@ -26,7 +32,10 @@
|
|||
<string name="upload_progress_notification_title_finishing">Đang hoàn thành việc tải lên tập tin %1$s</string>
|
||||
<string name="upload_failed_notification_title">Tải lên tập tin %1$s thất bại</string>
|
||||
<string name="upload_failed_notification_subtitle">Chạm để xem</string>
|
||||
<string name="uploads_pending_notification_indicator" fuzzy="true">%d tập tin đang được tải lên</string>
|
||||
<plurals name="uploads_pending_notification_indicator">
|
||||
<item quantity="one">%1$d tập tin đang được tải lên</item>
|
||||
<item quantity="other">%1$d tập tin đang được tải lên</item>
|
||||
</plurals>
|
||||
<string name="title_activity_contributions">Tập tin Tôi đã Tải lên Gần đây</string>
|
||||
<string name="contribution_state_queued">Đang chờ</string>
|
||||
<string name="contribution_state_failed">Thất bại</string>
|
||||
|
|
@ -39,10 +48,9 @@
|
|||
<string name="menu_share">Chia sẻ</string>
|
||||
<string name="menu_open_in_browser">Mở trong Trình duyệt</string>
|
||||
<string name="share_title_hint">Tên</string>
|
||||
<string name="add_title_toast">Xin hãy đặt tiêu đề cho tập tin này</string>
|
||||
<string name="share_description_hint">Miêu tả</string>
|
||||
<string name="login_failed_network">Không thể đăng nhập – có lỗi mạng</string>
|
||||
<string name="login_failed_username">Không thể đăng nhập – xin vui lòng kiểm tra tên người dùng</string>
|
||||
<string name="login_failed_password">Không thể đăng nhập – xin vui lòng kiểm tra mật khẩu</string>
|
||||
<string name="login_failed_throttled">Đã đăng nhập thất bại quá nhiều lần. Xin vui lòng thử lại trong vòng vài phút.</string>
|
||||
<string name="login_failed_blocked">Rất tiếc, người dùng này đã bị cấm tại Commons</string>
|
||||
<string name="login_failed_2fa_needed">Bạn phải cung cấp mã xác thực dùng hai nhân tố.</string>
|
||||
|
|
@ -54,25 +62,31 @@
|
|||
<string name="categories_search_text_hint">Tìm thể loại</string>
|
||||
<string name="menu_save_categories">Lưu</string>
|
||||
<string name="refresh_button">Làm mới</string>
|
||||
<string name="display_list_button">Danh sách</string>
|
||||
<string name="gps_disabled">Chức năng GPS đang tắt trên thiết bị của bạn. Bạn có muốn bật nó lên?</string>
|
||||
<string name="enable_gps">Bật GPS</string>
|
||||
<string name="contributions_subtitle_zero">Chưa có tập tin tải lên</string>
|
||||
<plurals name="contributions_subtitle" fuzzy="true">
|
||||
<plurals name="contributions_subtitle">
|
||||
<item quantity="zero">\@string/contributions_subtitle_zero</item>
|
||||
<item quantity="other">%1$d tập tin tải lên</item>
|
||||
<item quantity="one">%1$d tập tin đã tải lên</item>
|
||||
<item quantity="other">%1$d tập tin đã tải lên</item>
|
||||
</plurals>
|
||||
<string name="starting_multiple_uploads">Đang bắt đầu tải lên %1$d tập tin</string>
|
||||
<string name="multiple_uploads_title" fuzzy="true">%1$d tập tin tải lên</string>
|
||||
<plurals name="multiple_uploads_title">
|
||||
<item quantity="one">%1$d tập tin đã tải lên</item>
|
||||
<item quantity="other">%1$d tập tin đã tải lên</item>
|
||||
</plurals>
|
||||
<string name="categories_not_found">Không tìm thấy thể loại khớp với %1$s</string>
|
||||
<string name="categories_skip_explanation" fuzzy="true">Xếp các hình ảnh vào thể loại để cho chúng dễ tìm kiếm hơn trên Wikimedia Commons.\n\nHãy bắt đầu nhập tên thể loại để tìm kiếm.\nChạm vào thông điệp này (hoặc bấm Quay lại) để bỏ qua bước này.</string>
|
||||
<string name="categories_skip_explanation">Xếp các hình ảnh vào thể loại để giúp chúng dễ tìm kiếm hơn trên Wikimedia Commons.\nHãy bắt đầu nhập để thêm thể loại.</string>
|
||||
<string name="categories_activity_title">Thể loại</string>
|
||||
<string name="title_activity_settings">Cài đặt</string>
|
||||
<string name="title_activity_signup">Mở tài khoản</string>
|
||||
<string name="title_activity_featured_images">Hình ảnh chọn lọc</string>
|
||||
<string name="menu_about">Giới thiệu</string>
|
||||
<string name="about_license" fuzzy="true">Phần mềm mã nguồn mở được phát hành theo <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\">Giấy phép Apache v2</a>. %1$s và biểu trưng của nó là nhãn hiệu của Quỹ Wikimedia và được sử dụng do Quỹ Wikimedia cho phép. Chúng tôi không được Quỹ Wikimedia ủng hộ hoặc nhận làm chi nhánh.</string>
|
||||
<string name="about_improve" fuzzy="true"><a href=\"https://github.com/commons-app/apps-android-commons\">Mã nguồn</a> và <a href=\"https://commons-app.github.io/\">trang chủ</a> tại GitHub. <a href=\"https://github.com/commons-app/apps-android-commons/issues\">Tạo vấn đề GitHub mới</a> để báo cáo lỗi hoặc gợi ý thay đổi.</string>
|
||||
<string name="about_privacy_policy" fuzzy="true"/>
|
||||
<string name="about_credits" fuzzy="true"><a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\">Công trạng</a></string>
|
||||
<string name="about_license">Ứng dụng Wikimedia Commons là ứng dụng mã nguồn mở được sáng tạo và quản lý bởi các tình nguyện viên và những người được tin tưởng của cộng đồng Wikipedia. Wikimedia Foundation không tham gia vào sự tạo lập, phát triển cũng như quản lý của ứng dụng.</string>
|
||||
<string name="about_improve">Tạo một <a href=\"https://github.com/commons-app/apps-android-commons/issues\">thảo luận (issue) mới trên GitHub</a> để báo cáo lỗi cũng như đưa ra các ý tưởng.</string>
|
||||
<string name="about_privacy_policy"><u>Chính sách riêng tư</u></string>
|
||||
<string name="about_credits"><u>Công trạng</u></string>
|
||||
<string name="title_activity_about">Giới thiệu</string>
|
||||
<string name="menu_feedback">Gửi Phản hồi (qua Thư điện tử)</string>
|
||||
<string name="no_email_client">Không có chương trình thư điện tử nào được cài đặt</string>
|
||||
|
|
@ -84,7 +98,7 @@
|
|||
<string name="share_license_summary">Hình này sẽ được phát hành theo giấy phép %1$s</string>
|
||||
<string name="media_upload_policy">Với việc đăng hình này, tôi tuyên bố rằng nó là tác phẩm của chính mình, rằng nó không chứa nội dung có bản quyền hoặc ảnh tự chụp, và về mặt khác thì hoàn toàn tuân theo <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines?uselang=vi\">các quy định Wikimedia Commons</a>.</string>
|
||||
<string name="menu_download">Tải về</string>
|
||||
<string name="preference_license" fuzzy="true">Giấy phép</string>
|
||||
<string name="preference_license">Giấy phép mặc định</string>
|
||||
<string name="use_previous">Sử dụng tiêu đề/miêu tả trước</string>
|
||||
<string name="allow_gps">Lấy vị trí hiện tại tự động</string>
|
||||
<string name="allow_gps_summary">Định vị hiện tại để nhận gợi ý thể loại trong trường hợp hình ảnh chưa được gắn thẻ địa lý</string>
|
||||
|
|
|
|||
|
|
@ -41,8 +41,6 @@
|
|||
<string name="share_title_hint">დუდჯოხო</string>
|
||||
<string name="share_description_hint">ეჭარუა</string>
|
||||
<string name="login_failed_network">მიშულაქ ვემიხუჯინუ - რშვილიშ ჩილათა</string>
|
||||
<string name="login_failed_username">მიშულაქ ვემიხუჯინუ - ქორთხინთ გეგნაჯინით ჯოხოს</string>
|
||||
<string name="login_failed_password">მიშულაქ ვემიხუჯინუ - ქორთხინთ გეგნაჯინით პაროლს</string>
|
||||
<string name="login_failed_throttled">ძალამ მიარე უმწუძინუ ცადება. ქორთხინ, მუხირენ წუთშა ხოლო ქოცადით.</string>
|
||||
<string name="login_failed_blocked">მორდება, თე მახვარებუ ბლოკირი რე ვიკიოწკარუეს</string>
|
||||
<string name="login_failed_2fa_needed">თქვა გემშიონათ ოკო ჟირფაქტორიანი ავტორიზაციაშ კოდი.</string>
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
* Kly
|
||||
* LNDDYL
|
||||
* Liuxinyu970226
|
||||
* S099001
|
||||
* Simon Shek
|
||||
* StephDC
|
||||
* Wwycheuk
|
||||
|
|
@ -28,7 +29,7 @@
|
|||
<string name="logging_in_message">請稍候…</string>
|
||||
<string name="login_success">登入成功!</string>
|
||||
<string name="login_failed">登入失敗!</string>
|
||||
<string name="upload_failed">找不到檔案。請嘗試其它檔案看看。</string>
|
||||
<string name="upload_failed">找不到檔案。請試試看其它檔案。</string>
|
||||
<string name="authentication_failed">未能核對身分!</string>
|
||||
<string name="uploading_started">開始上傳!</string>
|
||||
<string name="upload_completed_notification_title">已上傳%1$s!</string>
|
||||
|
|
@ -42,7 +43,7 @@
|
|||
<item quantity="one">正在上載 %1$d 個檔案</item>
|
||||
<item quantity="other">正在上載 %1$d 個檔案</item>
|
||||
</plurals>
|
||||
<string name="title_activity_contributions">我的最近上傳</string>
|
||||
<string name="title_activity_contributions">我最近的上傳</string>
|
||||
<string name="contribution_state_queued">已佇列</string>
|
||||
<string name="contribution_state_failed">失敗</string>
|
||||
<string name="contribution_state_in_progress">%1$d%%完成</string>
|
||||
|
|
@ -57,8 +58,7 @@
|
|||
<string name="add_title_toast">請提供此檔案的標題</string>
|
||||
<string name="share_description_hint">說明</string>
|
||||
<string name="login_failed_network">無法登入-網路故障</string>
|
||||
<string name="login_failed_username">無法登入-請檢查您的使用者名稱</string>
|
||||
<string name="login_failed_password">無法登入-請檢查您的密碼</string>
|
||||
<string name="login_failed_wrong_credentials">無法登入 - 請檢查您的使用者名稱與密碼</string>
|
||||
<string name="login_failed_throttled">失敗次數過多。請於幾分鐘後重試。</string>
|
||||
<string name="login_failed_blocked">很抱歉,該使用者已被維基共享資源封禁</string>
|
||||
<string name="login_failed_2fa_needed">必須提供您的雙重因素身分核對代碼。</string>
|
||||
|
|
@ -110,7 +110,7 @@
|
|||
<string name="media_upload_policy">透過提交此圖片,我宣佈這是我個人創作的成品,且不包含受版權保護或自拍內容,並除此之外遵守<a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">維基媒體共享資源方針</a>。</string>
|
||||
<string name="menu_download">下載</string>
|
||||
<string name="preference_license">預設授權條款</string>
|
||||
<string name="use_previous">使用先前標題/說明</string>
|
||||
<string name="use_previous">使用先前標題、說明</string>
|
||||
<string name="allow_gps">自動獲取目前位置</string>
|
||||
<string name="allow_gps_summary">若圖片未有地理標記,就以目前位置來作為分類建議。</string>
|
||||
<string name="preference_theme">夜間模式</string>
|
||||
|
|
@ -155,9 +155,10 @@
|
|||
<string name="welcome_wikipedia_text">貢獻您的圖片,使維基百科的文章更加生動!</string>
|
||||
<string name="welcome_wikipedia_subtext">維基百科的圖片,來自維基共享資源。</string>
|
||||
<string name="welcome_copyright_text">您的圖片可以幫助教育世界各地的人。</string>
|
||||
<string name="welcome_copyright_subtext">避免使用受版權保護的材料,例如從互聯網找來的圖片、海報、書籍封面等</string>
|
||||
<string name="welcome_copyright_subtext">避免使用受版權保護的材料,例如從網際網路找來的圖片、海報、書籍封面等</string>
|
||||
<string name="welcome_final_text">明白了嗎?</string>
|
||||
<string name="welcome_final_button_text">是!</string>
|
||||
<string name="welcome_help_button_text">此提示為空,可能無效。請見錯誤報告: https://github.com/commons-app/apps-android-commons/issues/1333 。</string>
|
||||
<string name="detail_panel_cats_label">分類</string>
|
||||
<string name="detail_panel_cats_loading">載入中…</string>
|
||||
<string name="detail_panel_cats_none">未選擇</string>
|
||||
|
|
@ -243,6 +244,7 @@
|
|||
<string name="null_url">錯誤!查無 URL</string>
|
||||
<string name="nominate_deletion">提名刪除</string>
|
||||
<string name="nominated_for_deletion">此圖片已被提名刪除。</string>
|
||||
<string name="nominated_see_more">此提示為空,可能無效。請見錯誤報告: https://github.com/commons-app/apps-android-commons/issues/1333 。</string>
|
||||
<string name="view_browser">於瀏覽器檢視</string>
|
||||
<string name="nearby_location_has_not_changed">位置無法更改。</string>
|
||||
<string name="nearby_location_not_available">位置無效。</string>
|
||||
|
|
|
|||
|
|
@ -55,8 +55,6 @@
|
|||
<string name="add_title_toast">请提供此文件的标题</string>
|
||||
<string name="share_description_hint">说明</string>
|
||||
<string name="login_failed_network">无法登录 - 网络故障</string>
|
||||
<string name="login_failed_username">无法登录 - 请检查您的用户名</string>
|
||||
<string name="login_failed_password">无法登录 - 请检查您的密码</string>
|
||||
<string name="login_failed_throttled">失败次数过多。请在几分钟后重试。</string>
|
||||
<string name="login_failed_blocked">对不起,该用户已经被共享资源封禁</string>
|
||||
<string name="login_failed_2fa_needed">您必须提供您的双因素验证代码。</string>
|
||||
|
|
|
|||
|
|
@ -1,14 +1,13 @@
|
|||
package fr.free.nrw.commons
|
||||
|
||||
import android.content.ContentProviderClient
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.support.v4.util.LruCache
|
||||
import com.google.gson.Gson
|
||||
import com.nhaarman.mockito_kotlin.mock
|
||||
import com.squareup.leakcanary.RefWatcher
|
||||
import fr.free.nrw.commons.auth.AccountUtil
|
||||
import fr.free.nrw.commons.auth.SessionManager
|
||||
import fr.free.nrw.commons.caching.CacheController
|
||||
import fr.free.nrw.commons.data.DBOpenHelper
|
||||
import fr.free.nrw.commons.di.CommonsApplicationComponent
|
||||
import fr.free.nrw.commons.di.CommonsApplicationModule
|
||||
|
|
@ -33,21 +32,30 @@ class TestCommonsApplication : CommonsApplication() {
|
|||
override fun setupLeakCanary(): RefWatcher = RefWatcher.DISABLED
|
||||
}
|
||||
|
||||
@Suppress("MemberVisibilityCanBePrivate")
|
||||
class MockCommonsApplicationModule(appContext: Context) : CommonsApplicationModule(appContext) {
|
||||
val accountUtil: AccountUtil = mock()
|
||||
val appSharedPreferences: SharedPreferences = mock()
|
||||
val defaultSharedPreferences: SharedPreferences = mock()
|
||||
val categorySharedPreferences: SharedPreferences = mock()
|
||||
val otherSharedPreferences: SharedPreferences = mock()
|
||||
val uploadController: UploadController = mock()
|
||||
val mockSessionManager: SessionManager = mock()
|
||||
val mediaWikiApi: MediaWikiApi = mock()
|
||||
val locationServiceManager: LocationServiceManager = mock()
|
||||
val cacheController: CacheController = mock()
|
||||
val mockDbOpenHelper: DBOpenHelper = mock()
|
||||
val nearbyPlaces: NearbyPlaces = mock()
|
||||
val lruCache: LruCache<String, String> = mock()
|
||||
val gson: Gson = Gson()
|
||||
val categoryClient: ContentProviderClient = mock()
|
||||
val contributionClient: ContentProviderClient = mock()
|
||||
val modificationClient: ContentProviderClient = mock()
|
||||
val uploadPrefs: SharedPreferences = mock()
|
||||
|
||||
override fun provideCategoryContentProviderClient(context: Context?): ContentProviderClient = categoryClient
|
||||
|
||||
override fun provideContributionContentProviderClient(context: Context?): ContentProviderClient = contributionClient
|
||||
|
||||
override fun provideModificationContentProviderClient(context: Context?): ContentProviderClient = modificationClient
|
||||
|
||||
override fun providesDirectNearbyUploadPreferences(context: Context?): SharedPreferences = uploadPrefs
|
||||
|
||||
override fun providesAccountUtil(context: Context): AccountUtil = accountUtil
|
||||
|
||||
|
|
@ -61,12 +69,8 @@ class MockCommonsApplicationModule(appContext: Context) : CommonsApplicationModu
|
|||
|
||||
override fun providesSessionManager(context: Context, mediaWikiApi: MediaWikiApi, sharedPreferences: SharedPreferences): SessionManager = mockSessionManager
|
||||
|
||||
override fun provideMediaWikiApi(context: Context, sharedPreferences: SharedPreferences, categorySharedPreferences: SharedPreferences, gson: Gson): MediaWikiApi = mediaWikiApi
|
||||
|
||||
override fun provideLocationServiceManager(context: Context): LocationServiceManager = locationServiceManager
|
||||
|
||||
override fun provideCacheController(): CacheController = cacheController
|
||||
|
||||
override fun provideDBOpenHelper(context: Context): DBOpenHelper = mockDbOpenHelper
|
||||
|
||||
override fun provideNearbyPlaces(): NearbyPlaces = nearbyPlaces
|
||||
|
|
|
|||
178
app/src/test/kotlin/fr/free/nrw/commons/mwapi/CategoryApiTest.kt
Normal file
178
app/src/test/kotlin/fr/free/nrw/commons/mwapi/CategoryApiTest.kt
Normal file
|
|
@ -0,0 +1,178 @@
|
|||
package fr.free.nrw.commons.mwapi
|
||||
|
||||
import com.google.gson.Gson
|
||||
import fr.free.nrw.commons.mwapi.model.Page
|
||||
import fr.free.nrw.commons.mwapi.model.PageCategory
|
||||
import okhttp3.HttpUrl
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.mockwebserver.MockResponse
|
||||
import okhttp3.mockwebserver.MockWebServer
|
||||
import org.junit.After
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
|
||||
class CategoryApiTest {
|
||||
private lateinit var server: MockWebServer
|
||||
private lateinit var url: String
|
||||
private lateinit var categoryApi: CategoryApi
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
server = MockWebServer()
|
||||
url = "http://${server.hostName}:${server.port}/"
|
||||
categoryApi = CategoryApi(OkHttpClient.Builder().build(), Gson(), HttpUrl.parse(url))
|
||||
}
|
||||
|
||||
@After
|
||||
fun teardown() {
|
||||
server.shutdown()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun apiReturnsEmptyListWhenError() {
|
||||
server.enqueue(MockResponse().setResponseCode(400).setBody(""))
|
||||
|
||||
assertTrue(categoryApi.request("foo").blockingGet().isEmpty())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun apiReturnsEmptyWhenTheresNoQuery() {
|
||||
server.success(emptyMap())
|
||||
|
||||
assertTrue(categoryApi.request("foo").blockingGet().isEmpty())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun apiReturnsEmptyWhenQueryHasNoPages() {
|
||||
server.success(mapOf("query" to emptyMap<String, Any>()))
|
||||
|
||||
assertTrue(categoryApi.request("foo").blockingGet().isEmpty())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun apiReturnsEmptyWhenQueryHasPagesButTheyreEmpty() {
|
||||
server.success(mapOf("query" to
|
||||
mapOf("pages" to emptyList<String>())))
|
||||
|
||||
assertTrue(categoryApi.request("foo").blockingGet().isEmpty())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun singlePageSingleCategory() {
|
||||
server.success(mapOf("query" to
|
||||
mapOf("pages" to listOf(
|
||||
page(listOf("one"))
|
||||
))))
|
||||
|
||||
val response = categoryApi.request("foo").blockingGet()
|
||||
|
||||
assertEquals(1, response.size)
|
||||
assertEquals("one", response[0])
|
||||
}
|
||||
|
||||
@Test
|
||||
fun multiplePagesSingleCategory() {
|
||||
server.success(mapOf("query" to
|
||||
mapOf("pages" to listOf(
|
||||
page(listOf("one")),
|
||||
page(listOf("two"))
|
||||
))))
|
||||
|
||||
val response = categoryApi.request("foo").blockingGet()
|
||||
|
||||
assertEquals(2, response.size)
|
||||
assertEquals("one", response[0])
|
||||
assertEquals("two", response[1])
|
||||
}
|
||||
|
||||
@Test
|
||||
fun singlePageMultipleCategories() {
|
||||
server.success(mapOf("query" to
|
||||
mapOf("pages" to listOf(
|
||||
page(listOf("one", "two"))
|
||||
))))
|
||||
|
||||
val response = categoryApi.request("foo").blockingGet()
|
||||
|
||||
assertEquals(2, response.size)
|
||||
assertEquals("one", response[0])
|
||||
assertEquals("two", response[1])
|
||||
}
|
||||
|
||||
@Test
|
||||
fun multiplePagesMultipleCategories() {
|
||||
server.success(mapOf("query" to
|
||||
mapOf("pages" to listOf(
|
||||
page(listOf("one", "two")),
|
||||
page(listOf("three", "four"))
|
||||
))))
|
||||
|
||||
val response = categoryApi.request("foo").blockingGet()
|
||||
|
||||
assertEquals(4, response.size)
|
||||
assertEquals("one", response[0])
|
||||
assertEquals("two", response[1])
|
||||
assertEquals("three", response[2])
|
||||
assertEquals("four", response[3])
|
||||
}
|
||||
|
||||
@Test
|
||||
fun multiplePagesMultipleCategories_duplicatesRemoved() {
|
||||
server.success(mapOf("query" to
|
||||
mapOf("pages" to listOf(
|
||||
page(listOf("one", "two", "three")),
|
||||
page(listOf("three", "four", "one"))
|
||||
))))
|
||||
|
||||
val response = categoryApi.request("foo").blockingGet()
|
||||
|
||||
assertEquals(4, response.size)
|
||||
assertEquals("one", response[0])
|
||||
assertEquals("two", response[1])
|
||||
assertEquals("three", response[2])
|
||||
assertEquals("four", response[3])
|
||||
}
|
||||
|
||||
@Test
|
||||
fun requestSendsWhatWeExpect() {
|
||||
server.success(mapOf("query" to mapOf("pages" to emptyList<String>())))
|
||||
|
||||
val coords = "foo,bar"
|
||||
categoryApi.request(coords).blockingGet()
|
||||
|
||||
server.takeRequest().let { request ->
|
||||
assertEquals("GET", request.method)
|
||||
assertEquals("/w/api.php", request.requestUrl.encodedPath())
|
||||
request.requestUrl.let { url ->
|
||||
assertEquals("query", url.queryParameter("action"))
|
||||
assertEquals("categories|coordinates|pageprops", url.queryParameter("prop"))
|
||||
assertEquals("json", url.queryParameter("format"))
|
||||
assertEquals("!hidden", url.queryParameter("clshow"))
|
||||
assertEquals("type|name|dim|country|region|globe", url.queryParameter("coprop"))
|
||||
assertEquals(coords, url.queryParameter("codistancefrompoint"))
|
||||
assertEquals("geosearch", url.queryParameter("generator"))
|
||||
assertEquals(coords, url.queryParameter("ggscoord"))
|
||||
assertEquals("10000", url.queryParameter("ggsradius"))
|
||||
assertEquals("10", url.queryParameter("ggslimit"))
|
||||
assertEquals("6", url.queryParameter("ggsnamespace"))
|
||||
assertEquals("type|name|dim|country|region|globe", url.queryParameter("ggsprop"))
|
||||
assertEquals("all", url.queryParameter("ggsprimary"))
|
||||
assertEquals("2", url.queryParameter("formatversion"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun page(catList: List<String>) = Page().apply {
|
||||
categories = catList.map {
|
||||
PageCategory().apply {
|
||||
title = "Category:$it"
|
||||
}
|
||||
}.toTypedArray()
|
||||
}
|
||||
}
|
||||
|
||||
fun MockWebServer.success(response: Map<String, Any>) {
|
||||
enqueue(MockResponse().setResponseCode(200).setBody(Gson().toJson(response)))
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package fr.free.nrw.commons.mwapi.model
|
||||
|
||||
import org.junit.Assert.*
|
||||
import org.junit.Test
|
||||
|
||||
class ApiResponseTest {
|
||||
@Test
|
||||
fun hasPages_whenQueryIsNull() {
|
||||
val response = ApiResponse()
|
||||
assertFalse(response.hasPages())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun hasPages_whenPagesIsNull() {
|
||||
val response = ApiResponse()
|
||||
response.query = Query()
|
||||
response.query.pages = null
|
||||
assertFalse(response.hasPages())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun hasPages_defaultsToSafeValue() {
|
||||
val response = ApiResponse()
|
||||
response.query = Query()
|
||||
assertNotNull(response.query.pages)
|
||||
assertTrue(response.hasPages())
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package fr.free.nrw.commons.mwapi.model
|
||||
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
|
||||
class PageCategoryTest {
|
||||
@Test
|
||||
fun stripPrefix_whenPresent() {
|
||||
val testObject = PageCategory()
|
||||
testObject.title = "Category:Foo"
|
||||
assertEquals("Foo", testObject.withoutPrefix())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun stripPrefix_prefixAbsent() {
|
||||
val testObject = PageCategory()
|
||||
testObject.title = "Foo_Bar"
|
||||
assertEquals("Foo_Bar", testObject.withoutPrefix())
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue