Merged, Resolve merge conflicts

This commit is contained in:
nextLane 2017-03-13 23:06:42 +05:30
commit c6352a3792
49 changed files with 284 additions and 75 deletions

View file

@ -3,10 +3,10 @@ android:
components: components:
- platform-tools - platform-tools
- tools - tools
- build-tools-25.0.0 - build-tools-25.0.1
- extra-google-m2repository - extra-google-m2repository
- extra-android-m2repository - extra-android-m2repository
- android-23 - android-25
- sys-img-x86-android-18 - sys-img-x86-android-18
jdk: jdk:
# - openjdk8 # not yet available # - openjdk8 # not yet available

View file

@ -1,5 +1,8 @@
# Wikimedia Commons for Android # Wikimedia Commons for Android
##v2.0.2
- Make "View in browser" direct to mobile website
##v2.0.1 ##v2.0.1
- Disabled minify again (reenabling test failed) - Disabled minify again (reenabling test failed)
- Hotfix for ShareAction bug - Hotfix for ShareAction bug

View file

@ -1,10 +1,13 @@
# Wikimedia Commons Android app # Wikimedia Commons Android app [![Build status](https://api.travis-ci.org/commons-app/apps-android-commons.svg)](https://travis-ci.org/commons-app/apps-android-commons)
The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons. Download the app [here][8], or view our [website][9]. The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons. Download the app [here][8], or view our [website][9].
Initially started by the Wikimedia Foundation, this app is now maintained by volunteers. Anyone is welcome to improve it, just choose among the [open issues](https://github.com/commons-app/apps-android-commons/issues) and send us a pull request :-) Initially started by the Wikimedia Foundation, this app is now maintained by volunteers. Anyone is welcome to improve it, just choose among the [open issues](https://github.com/commons-app/apps-android-commons/issues) and send us a pull request :-)
[![Build status](https://api.travis-ci.org/commons-app/apps-android-commons.svg)](https://travis-ci.org/commons-app/apps-android-commons) <a href="https://f-droid.org/repository/browse/?fdid=fr.free.nrw.commons" target="_blank">
<img src="https://f-droid.org/badge/get-it-on.png" alt="Get it on F-Droid" height="90"/></a>
<a href="https://play.google.com/store/apps/details?id=fr.free.nrw.commons" target="_blank">
<img src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png" alt="Get it on Google Play" height="90"/></a>
## Develop with Android Studio or IntelliJ ## ## Develop with Android Studio or IntelliJ ##

View file

@ -12,30 +12,24 @@ dependencies {
compile 'ch.acra:acra:4.7.0' compile 'ch.acra:acra:4.7.0'
compile 'org.mediawiki:api:1.3' compile 'org.mediawiki:api:1.3'
compile 'commons-codec:commons-codec:1.10' compile 'commons-codec:commons-codec:1.10'
compile 'com.android.support:support-v4:25.0.0' compile "com.android.support:support-v4:${project.supportLibVersion}"
compile 'com.android.support:appcompat-v7:25.0.0' compile "com.android.support:appcompat-v7:${project.supportLibVersion}"
compile 'com.android.support:design:25.0.0' compile "com.android.support:design:${project.supportLibVersion}"
compile 'com.google.code.gson:gson:2.7'
testCompile 'junit:junit:4.12' testCompile 'junit:junit:4.12'
//noinspection GradleDependency - old version has required feature
compile 'com.google.code.gson:gson:1.4'
} }
android { android {
compileSdkVersion 23 compileSdkVersion project.compileSdkVersion
buildToolsVersion '25' buildToolsVersion project.buildToolsVersion
useLibrary 'org.apache.http.legacy' useLibrary 'org.apache.http.legacy'
defaultConfig { defaultConfig {
applicationId "fr.free.nrw.commons" applicationId 'fr.free.nrw.commons'
minSdkVersion 15 minSdkVersion project.minSdkVersion
targetSdkVersion 23 targetSdkVersion project.targetSdkVersion
ndk {
moduleName "libtranscode"
}
} }
buildTypes { buildTypes {

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="placeholder_place_distance">Overlay</string>
<string name="placeholder_place_name">Name</string>
<string name="placeholder_place_description">Description</string>
</resources>

View file

@ -1,7 +1,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="fr.free.nrw.commons" package="fr.free.nrw.commons"
android:versionCode="64" android:versionCode="65"
android:versionName="2.0.1" > android:versionName="2.0.2" >
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
@ -85,7 +86,7 @@
<activity <activity
android:name=".nearby.NearbyActivity" android:name=".nearby.NearbyActivity"
android:label="@string/title_activity_nearby" android:label="@string/title_activity_nearby"
android:parentActivityName=".contributions.ContributionsActivity"/> android:parentActivityName=".contributions.ContributionsActivity" />
<service android:name=".upload.UploadService" > <service android:name=".upload.UploadService" >
</service> </service>

View file

@ -59,6 +59,7 @@ public class CommonsApplication extends Application {
public static final String API_URL = "https://commons.wikimedia.org/w/api.php"; public static final String API_URL = "https://commons.wikimedia.org/w/api.php";
public static final String IMAGE_URL_BASE = "https://upload.wikimedia.org/wikipedia/commons"; public static final String IMAGE_URL_BASE = "https://upload.wikimedia.org/wikipedia/commons";
public static final String HOME_URL = "https://commons.wikimedia.org/wiki/"; public static final String HOME_URL = "https://commons.wikimedia.org/wiki/";
public static final String MOBILE_HOME_URL = "https://commons.m.wikimedia.org/wiki/";
public static final String EVENTLOG_URL = "https://www.wikimedia.org/beacon/event"; public static final String EVENTLOG_URL = "https://www.wikimedia.org/beacon/event";
public static final String EVENTLOG_WIKI = "commonswiki"; public static final String EVENTLOG_WIKI = "commonswiki";

View file

@ -7,6 +7,7 @@ import org.xmlpull.v1.XmlPullParser;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -54,7 +55,7 @@ public class LicenseList {
public String nameIdForTemplate(String template) { public String nameIdForTemplate(String template) {
// hack :D (converts dashes and periods to underscores) // hack :D (converts dashes and periods to underscores)
// cc-by-sa-3.0 -> cc_by_sa_3_0 // cc-by-sa-3.0 -> cc_by_sa_3_0
return "license_name_" + template.toLowerCase().replace("-", "_").replace(".", "_"); return "license_name_" + template.toLowerCase(Locale.ENGLISH).replace("-", "_").replace(".", "_");
} }
private int stringIdByName(String stringId) { private int stringIdByName(String stringId) {

View file

@ -61,6 +61,10 @@ public class Media implements Parcelable {
return CommonsApplication.HOME_URL + "File:" + Utils.urlEncode(getFilename().replace("File:", "").replace(" ", "_")); return CommonsApplication.HOME_URL + "File:" + Utils.urlEncode(getFilename().replace("File:", "").replace(" ", "_"));
} }
public String getMobileDescriptionUrl() {
return CommonsApplication.MOBILE_HOME_URL + "File:" + Utils.urlEncode(getFilename().replace("File:", "").replace(" ", "_"));
}
public Uri getLocalUri() { public Uri getLocalUri() {
return localUri; return localUri;
} }

View file

@ -27,6 +27,7 @@ import java.security.NoSuchAlgorithmException;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.Locale;
import java.util.TimeZone; import java.util.TimeZone;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -81,7 +82,7 @@ public class Utils {
} }
public static Date parseMWDate(String mwDate) { public static Date parseMWDate(String mwDate) {
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); // Assuming MW always gives me UTC SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH); // Assuming MW always gives me UTC
try { try {
return isoFormat.parse(mwDate); return isoFormat.parse(mwDate);
} catch (ParseException e) { } catch (ParseException e) {
@ -90,7 +91,7 @@ public class Utils {
} }
public static String toMWDate(Date date) { public static String toMWDate(Date date) {
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); // Assuming MW always gives me UTC SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH); // Assuming MW always gives me UTC
isoFormat.setTimeZone(TimeZone.getTimeZone("UTC")); isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
return isoFormat.format(date); return isoFormat.format(date);
} }
@ -201,7 +202,7 @@ public class Utils {
} }
public static String capitalize(String string) { public static String capitalize(String string) {
return string.substring(0,1).toUpperCase() + string.substring(1); return string.substring(0,1).toUpperCase(Locale.getDefault()) + string.substring(1);
} }
public static String licenseTemplateFor(String license) { public static String licenseTemplateFor(String license) {
@ -303,13 +304,17 @@ public class Utils {
Pattern jpegPattern = Pattern.compile("\\.jpeg$", Pattern.CASE_INSENSITIVE); Pattern jpegPattern = Pattern.compile("\\.jpeg$", Pattern.CASE_INSENSITIVE);
// People are used to ".jpg" more than ".jpeg" which the system gives us. // People are used to ".jpg" more than ".jpeg" which the system gives us.
if (extension != null && extension.toLowerCase().equals("jpeg")) { if (extension != null && extension.toLowerCase(Locale.ENGLISH).equals("jpeg")) {
extension = "jpg"; extension = "jpg";
} }
title = jpegPattern.matcher(title).replaceFirst(".jpg"); title = jpegPattern.matcher(title).replaceFirst(".jpg");
if (extension != null && !title.toLowerCase().endsWith("." + extension.toLowerCase())) { if (extension != null && !title.toLowerCase(Locale.getDefault()).endsWith("." + extension.toLowerCase(Locale.ENGLISH))) {
title += "." + extension; title += "." + extension;
} }
return title; return title;
} }
public static boolean isNullOrWhiteSpace(String value) {
return value == null || value.trim().isEmpty();
}
} }

View file

@ -1,12 +1,16 @@
package fr.free.nrw.commons.auth; package fr.free.nrw.commons.auth;
import android.Manifest;
import android.accounts.Account; import android.accounts.Account;
import android.accounts.AccountManager; import android.accounts.AccountManager;
import android.accounts.AccountManagerFuture; import android.accounts.AccountManagerFuture;
import android.accounts.AuthenticatorException; import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException; import android.accounts.OperationCanceledException;
import android.content.pm.PackageManager;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import java.io.IOException; import java.io.IOException;
@ -22,12 +26,13 @@ public abstract class AuthenticatedActivity extends AppCompatActivity {
private String authCookie; private String authCookie;
public AuthenticatedActivity(String accountType) { public AuthenticatedActivity(String accountType) {
this.accountType = accountType; this.accountType = accountType;
} }
private class GetAuthCookieTask extends AsyncTask<Void, String, String> { private class GetAuthCookieTask extends AsyncTask<Void, String, String> {
private Account account; private Account account;
private AccountManager accountManager; private AccountManager accountManager;
public GetAuthCookieTask(Account account, AccountManager accountManager) { public GetAuthCookieTask(Account account, AccountManager accountManager) {
this.account = account; this.account = account;
this.accountManager = accountManager; this.accountManager = accountManager;
@ -36,7 +41,7 @@ public abstract class AuthenticatedActivity extends AppCompatActivity {
@Override @Override
protected void onPostExecute(String result) { protected void onPostExecute(String result) {
super.onPostExecute(result); super.onPostExecute(result);
if(result != null) { if (result != null) {
authCookie = result; authCookie = result;
onAuthCookieAcquired(result); onAuthCookieAcquired(result);
} else { } else {
@ -63,6 +68,7 @@ public abstract class AuthenticatedActivity extends AppCompatActivity {
private class AddAccountTask extends AsyncTask<Void, String, String> { private class AddAccountTask extends AsyncTask<Void, String, String> {
private AccountManager accountManager; private AccountManager accountManager;
public AddAccountTask(AccountManager accountManager) { public AddAccountTask(AccountManager accountManager) {
this.accountManager = accountManager; this.accountManager = accountManager;
} }
@ -70,9 +76,8 @@ public abstract class AuthenticatedActivity extends AppCompatActivity {
@Override @Override
protected void onPostExecute(String result) { protected void onPostExecute(String result) {
super.onPostExecute(result); super.onPostExecute(result);
if(result != null) { if (result != null) {
Account[] allAccounts =accountManager.getAccountsByType(accountType); Account curAccount = getCurrentAccount();
Account curAccount = allAccounts[0];
GetAuthCookieTask getCookieTask = new GetAuthCookieTask(curAccount, accountManager); GetAuthCookieTask getCookieTask = new GetAuthCookieTask(curAccount, accountManager);
getCookieTask.execute(); getCookieTask.execute();
} else { } else {
@ -80,6 +85,18 @@ public abstract class AuthenticatedActivity extends AppCompatActivity {
} }
} }
@Nullable
private Account getCurrentAccount() {
if (ActivityCompat.checkSelfPermission(AuthenticatedActivity.this, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
return null;
}
Account[] allAccounts = accountManager.getAccountsByType(accountType);
if (allAccounts == null) {
return null;
}
return allAccounts[0];
}
@Override @Override
protected String doInBackground(Void... params) { protected String doInBackground(Void... params) {
AccountManagerFuture<Bundle> resultFuture = accountManager.addAccount(accountType, null, null, null, AuthenticatedActivity.this, null, null); AccountManagerFuture<Bundle> resultFuture = accountManager.addAccount(accountType, null, null, null, AuthenticatedActivity.this, null, null);

View file

@ -26,10 +26,12 @@ import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import java.io.IOException; import java.io.IOException;
import java.util.Locale;
import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.CommonsApplication;
import fr.free.nrw.commons.EventLog; import fr.free.nrw.commons.EventLog;
import fr.free.nrw.commons.R; import fr.free.nrw.commons.R;
import fr.free.nrw.commons.Utils;
import fr.free.nrw.commons.WelcomeActivity; import fr.free.nrw.commons.WelcomeActivity;
import fr.free.nrw.commons.contributions.ContributionsActivity; import fr.free.nrw.commons.contributions.ContributionsActivity;
import fr.free.nrw.commons.contributions.ContributionsContentProvider; import fr.free.nrw.commons.contributions.ContributionsContentProvider;
@ -220,7 +222,7 @@ public class LoginActivity extends AccountAuthenticatorActivity {
private void performLogin() { private void performLogin() {
String username = usernameEdit.getText().toString(); String username = usernameEdit.getText().toString();
// Because Mediawiki is upercase-first-char-then-case-sensitive :) // Because Mediawiki is upercase-first-char-then-case-sensitive :)
String canonicalUsername = username.substring(0,1).toUpperCase() + username.substring(1); String canonicalUsername = Utils.capitalize(username.substring(0,1)) + username.substring(1);
String password = passwordEdit.getText().toString(); String password = passwordEdit.getText().toString();

View file

@ -11,6 +11,7 @@ import android.text.TextUtils;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.Locale;
import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.CommonsApplication;
import fr.free.nrw.commons.EventLog; import fr.free.nrw.commons.EventLog;
@ -131,7 +132,7 @@ public class Contribution extends Media {
public String getPageContents() { public String getPageContents() {
StringBuffer buffer = new StringBuffer(); StringBuffer buffer = new StringBuffer();
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
buffer buffer
.append("== {{int:filedesc}} ==\n") .append("== {{int:filedesc}} ==\n")

View file

@ -143,7 +143,7 @@ public class MediaDetailPagerFragment extends Fragment implements ViewPager.OnPa
// View in browser // View in browser
Intent viewIntent = new Intent(); Intent viewIntent = new Intent();
viewIntent.setAction(Intent.ACTION_VIEW); viewIntent.setAction(Intent.ACTION_VIEW);
viewIntent.setData(Uri.parse(m.getDescriptionUrl())); viewIntent.setData(Uri.parse(m.getMobileDescriptionUrl()));
startActivity(viewIntent); startActivity(viewIntent);
return true; return true;
case R.id.menu_download_current_image: case R.id.menu_download_current_image:

View file

@ -49,13 +49,16 @@ public class ModificationsSyncAdapter extends AbstractThreadedSyncAdapter {
String authCookie; String authCookie;
try { try {
authCookie = AccountManager.get(getContext()).blockingGetAuthToken(account, "", false); authCookie = AccountManager.get(getContext()).blockingGetAuthToken(account, "", false);
} catch (OperationCanceledException e) { } catch (OperationCanceledException | AuthenticatorException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} catch (IOException e) { } catch (IOException e) {
Log.d("Commons", "Could not authenticate :("); Log.d("Commons", "Could not authenticate :(");
return; return;
} catch (AuthenticatorException e) { }
throw new RuntimeException(e);
if(Utils.isNullOrWhiteSpace(authCookie)) {
Log.d("Commons", "Could not authenticate :(");
return;
} }
MWApi api = CommonsApplication.createMWApi(); MWApi api = CommonsApplication.createMWApi();

View file

@ -130,7 +130,7 @@ public class SingleUploadFragment extends Fragment {
setLicenseSummary(license); setLicenseSummary(license);
SharedPreferences.Editor editor = prefs.edit(); SharedPreferences.Editor editor = prefs.edit();
editor.putString(Prefs.DEFAULT_LICENSE, license); editor.putString(Prefs.DEFAULT_LICENSE, license);
editor.commit(); editor.apply();
} }
@Override @Override

View file

@ -41,8 +41,7 @@
android:textStyle="bold" android:textStyle="bold"
android:textAlignment="center" android:textAlignment="center"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:textColor="@android:color/white" android:textColor="@android:color/white"/>
android:singleLine="false"/>
<Button <Button
android:layout_width="120dp" android:layout_width="120dp"

View file

@ -5,7 +5,6 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="horizontal" android:orientation="horizontal"
android:id="@+id/contributionsFragmentContainer" android:id="@+id/contributionsFragmentContainer"
android:background="#000000"
> >
<fragment <fragment

View file

@ -6,7 +6,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_margin="16dp" android:layout_margin="16dp"
android:gravity="center" android:gravity="center"

View file

@ -22,7 +22,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="match_parent" android:layout_width="match_parent"
android:hint="@string/categories_search_text_hint" android:hint="@string/categories_search_text_hint"
android:singleLine="true" android:maxLines="1"
android:imeOptions="flagNoExtractUi" android:imeOptions="flagNoExtractUi"
/> />

View file

@ -43,7 +43,7 @@
<LinearLayout <LinearLayout
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
> >
<!-- Placeholder. Height gets set at runtime based on container size; the initial value is a hack to keep <!-- Placeholder. Height gets set at runtime based on container size; the initial value is a hack to keep
@ -73,7 +73,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:text="Title" android:text="@string/media_detail_title"
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
android:paddingBottom="6dp" android:paddingBottom="6dp"
@ -81,7 +81,7 @@
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Title of the media" android:text="@string/media_detail_media_title"
android:id="@+id/mediaDetailTitle" android:id="@+id/mediaDetailTitle"
android:layout_gravity="left|start" android:layout_gravity="left|start"
android:textColor="@android:color/white" android:textColor="@android:color/white"
@ -106,7 +106,7 @@
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Description" android:text="@string/media_detail_description"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
@ -115,7 +115,7 @@
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Description of the media goes here. This can potentially be fairly long, and will need to wrap across multiple lines. We hope it looks nice though." android:text="@string/media_detail_description_explanation"
android:background="#20ffffff" android:background="#20ffffff"
android:id="@+id/mediaDetailDesc" android:id="@+id/mediaDetailDesc"
android:textColor="@android:color/white" android:textColor="@android:color/white"

View file

@ -18,7 +18,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:scrollHorizontally="false" android:scrollHorizontally="false"
android:singleLine="true" android:maxLines="1"
android:hint="@string/share_title_hint" android:hint="@string/share_title_hint"
android:imeOptions="flagNoExtractUi" android:imeOptions="flagNoExtractUi"
/> />

View file

@ -29,7 +29,7 @@
style="?android:textAppearanceSmallInverse" style="?android:textAppearanceSmallInverse"
android:textColor="#ffffff" android:textColor="#ffffff"
android:background="@color/text_background" android:background="@color/text_background"
tools:text="Overlay" tools:text="@string/placeholder_place_distance"
/> />
<TextView <TextView
@ -44,7 +44,7 @@
android:maxLines="1" android:maxLines="1"
android:ellipsize="none" android:ellipsize="none"
style="?android:textAppearanceMedium" style="?android:textAppearanceMedium"
tools:text="Name" tools:text="@string/placeholder_place_name"
/> />
<TextView <TextView
@ -58,7 +58,7 @@
android:ellipsize="none" android:ellipsize="none"
android:maxLines="4" android:maxLines="4"
style="?android:textAppearanceSmall" style="?android:textAppearanceSmall"
tools:text="Description" tools:text="@string/placeholder_place_description"
/> />
</RelativeLayout> </RelativeLayout>

View file

@ -27,9 +27,7 @@
android:id="@+id/proprietary_x" android:id="@+id/proprietary_x"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:layout_width="140dp" android:layout_width="140dp"
android:layout_height="wrap_content" android:layout_height="wrap_content" />
android:layout_toRightOf="@+id/selfie_x"
/>
</LinearLayout> </LinearLayout>

View file

@ -29,7 +29,6 @@
android:layout_height="120dp" android:layout_height="120dp"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/welcome_wikipedia"
/> />
</LinearLayout> </LinearLayout>
@ -44,7 +43,6 @@
android:textAlignment="center" android:textAlignment="center"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:singleLine="false"
/> />
<Button <Button

View file

@ -160,4 +160,8 @@ u2022 বিষয়শ্রেণী: সিডনি অপেরা হা
<string name="file_exists">এই ফাইলটি ইতিমধ্যে কমন্সে বিদ্যমান। আপনি কি নিশ্চিত আপনি সামনে এগুতে চান?</string> <string name="file_exists">এই ফাইলটি ইতিমধ্যে কমন্সে বিদ্যমান। আপনি কি নিশ্চিত আপনি সামনে এগুতে চান?</string>
<string name="yes">হ্যাঁ</string> <string name="yes">হ্যাঁ</string>
<string name="no">না</string> <string name="no">না</string>
<string name="media_detail_title">শিরোনাম</string>
<string name="media_detail_media_title">মিডিয়ার শিরোনাম</string>
<string name="media_detail_description">বিবরণ</string>
<string name="media_detail_description_explanation">মিডিয়ার বিবরণ এখানে যাবে। এই মোটামুটি দীর্ঘ হতে পারে এবং একাধিক লাইনে লিখতে হতে পারে। আমরা আশা করি এটি দেখতে সুন্দর হবে।</string>
</resources> </resources>

View file

@ -160,4 +160,8 @@ Pouezit war ar c\'hemenn-mañ (pe distroit en a-raok) evit mont dreist ar bazenn
<string name="file_exists">Emañ ar restr-mañ war Commons c\'hoazh. Ha sur oc\'h e fell deoc\'h kenderc\'hel ?</string> <string name="file_exists">Emañ ar restr-mañ war Commons c\'hoazh. Ha sur oc\'h e fell deoc\'h kenderc\'hel ?</string>
<string name="yes">Ya</string> <string name="yes">Ya</string>
<string name="no">Ket</string> <string name="no">Ket</string>
<string name="media_detail_title">Titl</string>
<string name="media_detail_media_title">Titl ar media</string>
<string name="media_detail_description">Deskrivadur</string>
<string name="media_detail_description_explanation">Amañ e lakaer titl ar media. Gallout a ra bezañ hir-mat ha mont dre meur a linenn. Spi hon eus e vo bravik an disoc\'h koulskoude.</string>
</resources> </resources>

View file

@ -132,4 +132,6 @@ Gomin Wikimedia.</string>
<string name="detail_description_empty">Dim disgrifiad</string> <string name="detail_description_empty">Dim disgrifiad</string>
<string name="detail_license_empty">Trwydded anhysbys</string> <string name="detail_license_empty">Trwydded anhysbys</string>
<string name="menu_refresh">Adnewyddu</string> <string name="menu_refresh">Adnewyddu</string>
<string name="media_detail_title">Teitl</string>
<string name="media_detail_description">Disgrifiad</string>
</resources> </resources>

View file

@ -160,4 +160,11 @@ u2022 Kategorien: Opernhaus von Sydney, Opernhaus von Sydney von Westen, Opernha
<string name="file_exists">Diese Datei ist bereits auf Commons vorhanden. Bist du sicher, dass du fortfahren möchtest?</string> <string name="file_exists">Diese Datei ist bereits auf Commons vorhanden. Bist du sicher, dass du fortfahren möchtest?</string>
<string name="yes">Ja</string> <string name="yes">Ja</string>
<string name="no">Nein</string> <string name="no">Nein</string>
<string name="media_detail_title">Titel</string>
<string name="media_detail_media_title">Titel des Mediums</string>
<string name="media_detail_description">Beschreibung</string>
<string name="media_detail_description_explanation">Hier folgt die Beschreibung des Mediums. Diese kann möglicherweise ziemlich lang sein und erfordert dann einen Umbruch auf mehreren Zeilen. Wir hoffen, dass sie dennoch gut aussieht.</string>
<string name="become_a_tester_title">Beta-Tester werden</string>
<string name="become_a_tester_description">Melde dich bei unserem Beta-Kanal auf Google Play an und erhalte frühen Zugriff auf neue Funktionen und Fehlerbehebungen</string>
<string name="beta_opt_in_link">https://play.google.com/apps/testing/fr.free.nrw.commons</string>
</resources> </resources>

View file

@ -165,4 +165,8 @@ imágenes de carteles, portadas de libro, etc.</string>
<string name="file_exists">Este archivo ya existe en Commons. ¿Confirmas que quieres continuar?</string> <string name="file_exists">Este archivo ya existe en Commons. ¿Confirmas que quieres continuar?</string>
<string name="yes"></string> <string name="yes"></string>
<string name="no">No</string> <string name="no">No</string>
<string name="media_detail_title">Título</string>
<string name="media_detail_media_title">Título del multimedia</string>
<string name="media_detail_description">Descripción</string>
<string name="media_detail_description_explanation">Aquí va la descripción del multimedia. Potencialmente, puede ser bastante largo, y deberá agruparse en múltiples líneas. De todas formas, esperamos que se ve bien.</string>
</resources> </resources>

View file

@ -82,7 +82,7 @@ Wikimedia Commons an det Wikimedia-Commons-Logo san markintiaken faan\'t Wikimed
<string name="no_uploads_yet">Dü heest noch nian bilen huuchschüürd.</string> <string name="no_uploads_yet">Dü heest noch nian bilen huuchschüürd.</string>
<string name="menu_retry_upload">Noch ans ferschük</string> <string name="menu_retry_upload">Noch ans ferschük</string>
<string name="menu_cancel_upload">Ufbreeg</string> <string name="menu_cancel_upload">Ufbreeg</string>
<string name="share_license_summary">Detdiar bil feit det lisens %$1 .</string> <string name="share_license_summary">Detdiar bil feit det lisens %1$s</string>
<string name="menu_download">Deelloose</string> <string name="menu_download">Deelloose</string>
<string name="preference_license">Lisens</string> <string name="preference_license">Lisens</string>
<string name="use_previous">Ual tiitel/beskriiwang brük</string> <string name="use_previous">Ual tiitel/beskriiwang brük</string>

View file

@ -14,7 +14,7 @@
<string name="upload_completed_notification_title">Ua hoʻouka ʻia ʻo %1$s</string> <string name="upload_completed_notification_title">Ua hoʻouka ʻia ʻo %1$s</string>
<string name="upload_completed_notification_text">Kīkē no ka ʻike ʻana o kāu hoʻouka</string> <string name="upload_completed_notification_text">Kīkē no ka ʻike ʻana o kāu hoʻouka</string>
<string name="upload_progress_notification_title_start">Hoʻomaka nei i ka hoʻouka ʻana o %1$s</string> <string name="upload_progress_notification_title_start">Hoʻomaka nei i ka hoʻouka ʻana o %1$s</string>
<string name="upload_progress_notification_title_in_progress">Hoʻouka nei ʻo</string> <string name="upload_progress_notification_title_in_progress">Hoʻouka nei ʻo %1$s</string>
<string name="upload_progress_notification_title_finishing">Hele a pau ka hoʻouka ʻana o %1$s</string> <string name="upload_progress_notification_title_finishing">Hele a pau ka hoʻouka ʻana o %1$s</string>
<string name="upload_failed_notification_title">Ua hāʻule ʻo %1$s i ka hoʻouka ʻana</string> <string name="upload_failed_notification_title">Ua hāʻule ʻo %1$s i ka hoʻouka ʻana</string>
<string name="upload_failed_notification_subtitle">Kīkē no ka ʻike ʻana</string> <string name="upload_failed_notification_subtitle">Kīkē no ka ʻike ʻana</string>

View file

@ -2,6 +2,6 @@
<resources> <resources>
<string name="crash_dialog_title">Az alkalmazás összeomlott</string> <string name="crash_dialog_title">Az alkalmazás összeomlott</string>
<string name="crash_dialog_text">Hoppá! Valami elromlott!</string> <string name="crash_dialog_text">Hoppá! Valami elromlott!</string>
<string name="crash_dialog_comment_prompt">Kérjük írja meg nekünk emailben, hogy mit csinált a programban. Ez segít kijavítani a hibát!</string> <string name="crash_dialog_comment_prompt">Kérjük, írd meg nekünk e-mailben, hogy épp mit csináltál. Ez segít nekünk kijavítani a hibát!</string>
<string name="crash_dialog_ok_toast">Köszönjük!</string> <string name="crash_dialog_ok_toast">Köszönjük!</string>
</resources> </resources>

View file

@ -45,7 +45,7 @@
<string name="login_failed_generic">Bejelentkezési hiba</string> <string name="login_failed_generic">Bejelentkezési hiba</string>
<string name="share_upload_button">Feltöltés</string> <string name="share_upload_button">Feltöltés</string>
<string name="multiple_share_base_title">Nevezd el a gyűjteményt</string> <string name="multiple_share_base_title">Nevezd el a gyűjteményt</string>
<string name="provider_modifications">Értesítések</string> <string name="provider_modifications">Változtatások</string>
<string name="menu_upload_single">Feltöltés</string> <string name="menu_upload_single">Feltöltés</string>
<string name="categories_search_text_hint">Keresés a kategóriák között</string> <string name="categories_search_text_hint">Keresés a kategóriák között</string>
<string name="menu_save_categories">Mentés</string> <string name="menu_save_categories">Mentés</string>
@ -77,7 +77,7 @@ Kattints erre az üzenetre a lépés kihagyásához</string>
<string name="about_improve">&lt;a href=\"https://github.com/commons-app/apps-android-commons\"&gt;Forráskód&lt;/a&gt; és &lt;a href=\"https://commons-app.github.io/\"&gt;weboldal&lt;/a&gt; a GitHubon. Nyiss egy új &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;GitHub-problémát&lt;/a&gt; hibabejelentéssel vagy fejlesztési javaslattal.</string> <string name="about_improve">&lt;a href=\"https://github.com/commons-app/apps-android-commons\"&gt;Forráskód&lt;/a&gt; és &lt;a href=\"https://commons-app.github.io/\"&gt;weboldal&lt;/a&gt; a GitHubon. Nyiss egy új &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;GitHub-problémát&lt;/a&gt; hibabejelentéssel vagy fejlesztési javaslattal.</string>
<string name="about_privacy_policy">&lt;a href=\"https://wikimediafoundation.org/wiki/Adatvédelmi_irányelv\"&gt;Adatvédelmi irányelvek&lt;/a&gt;</string> <string name="about_privacy_policy">&lt;a href=\"https://wikimediafoundation.org/wiki/Adatvédelmi_irányelv\"&gt;Adatvédelmi irányelvek&lt;/a&gt;</string>
<string name="title_activity_about">Névjegy</string> <string name="title_activity_about">Névjegy</string>
<string name="menu_feedback">Visszajelzés küldése (email)</string> <string name="menu_feedback">Visszajelzés küldése (e-mailben)</string>
<string name="no_email_client">Nincs telepített levelezőprogram</string> <string name="no_email_client">Nincs telepített levelezőprogram</string>
<string name="provider_categories">Legutóbb használt kategóriák</string> <string name="provider_categories">Legutóbb használt kategóriák</string>
<string name="waiting_first_sync">Várakozás az első szinkronizálásra...</string> <string name="waiting_first_sync">Várakozás az első szinkronizálásra...</string>
@ -90,6 +90,8 @@ Kattints erre az üzenetre a lépés kihagyásához</string>
<string name="use_previous">Előző cím/leírás használata</string> <string name="use_previous">Előző cím/leírás használata</string>
<string name="allow_gps">Automatikusan megkapja a jelenlegi helyet</string> <string name="allow_gps">Automatikusan megkapja a jelenlegi helyet</string>
<string name="allow_gps_summary">Lekéri a jelenlegi helyet, hogy lehetőség legyen kategóriajavaslatokra a nem földrajzi címkézett képeknél.</string> <string name="allow_gps_summary">Lekéri a jelenlegi helyet, hogy lehetőség legyen kategóriajavaslatokra a nem földrajzi címkézett képeknél.</string>
<string name="license_name_cc_by_sa_four">Nevezd meg! Így add tovább! 4.0</string>
<string name="license_name_cc_by_four">Nevezd meg! 4.0</string>
<string name="license_name_cc_by_sa">Nevezd meg! Így add tovább! 3.0</string> <string name="license_name_cc_by_sa">Nevezd meg! Így add tovább! 3.0</string>
<string name="license_name_cc_by">Attribution 3.0</string> <string name="license_name_cc_by">Attribution 3.0</string>
<string name="license_name_cc0">CC0</string> <string name="license_name_cc0">CC0</string>
@ -158,4 +160,8 @@ Kattints erre az üzenetre a lépés kihagyásához</string>
<string name="file_exists">Ez a fájl már létezik a Commons-on. Biztos, hogy folytatni akarod?</string> <string name="file_exists">Ez a fájl már létezik a Commons-on. Biztos, hogy folytatni akarod?</string>
<string name="yes">Igen</string> <string name="yes">Igen</string>
<string name="no">Nem</string> <string name="no">Nem</string>
<string name="media_detail_title">Cím</string>
<string name="media_detail_media_title">Média címe</string>
<string name="media_detail_description">Leírás</string>
<string name="media_detail_description_explanation">A média leírása kerül ide. Ez akár egészen hosszú is lehet, és több sorba fog kerülni. Azért reméljük, jól néz majd ki.</string>
</resources> </resources>

View file

@ -160,4 +160,8 @@
<string name="file_exists">הקובץ הזה כבר קיים בוויקישיתוף. האם להמשיך?</string> <string name="file_exists">הקובץ הזה כבר קיים בוויקישיתוף. האם להמשיך?</string>
<string name="yes">כן</string> <string name="yes">כן</string>
<string name="no">לא</string> <string name="no">לא</string>
<string name="media_detail_title">כותרת</string>
<string name="media_detail_media_title">כותרת המדיה</string>
<string name="media_detail_description">תיאור</string>
<string name="media_detail_description_explanation">תיאור המדיה יהיה כאן. זה יכול להיות ארוך למדי, ולהתפרס על מספר שורות. אנחנו מקווים שזה נראה טוב.</string>
</resources> </resources>

View file

@ -151,4 +151,7 @@
<string name="file_exists">이 파일은 이미 공용에 존재합니다. 계속하시겠습니까?</string> <string name="file_exists">이 파일은 이미 공용에 존재합니다. 계속하시겠습니까?</string>
<string name="yes"></string> <string name="yes"></string>
<string name="no">아니오</string> <string name="no">아니오</string>
<string name="media_detail_title">제목</string>
<string name="media_detail_media_title">미디어 제목</string>
<string name="media_detail_description">설명</string>
</resources> </resources>

View file

@ -159,4 +159,7 @@ Leet w.e.g. &lt;a href=\"https://github.com/commons-app/apps-android-commons/iss
<string name="file_exists">Dëse Fichier gëtt et schonn op Commons. Sidd Dir sécher datt Dir virufuere wëllt?</string> <string name="file_exists">Dëse Fichier gëtt et schonn op Commons. Sidd Dir sécher datt Dir virufuere wëllt?</string>
<string name="yes">Jo</string> <string name="yes">Jo</string>
<string name="no">Neen</string> <string name="no">Neen</string>
<string name="media_detail_title">Titel</string>
<string name="media_detail_description">Beschreiwung</string>
<string name="become_a_tester_title">Beta-Tester ginn</string>
</resources> </resources>

View file

@ -161,4 +161,11 @@ u2022 Категорија: Сиднејска опера, Сиднејскат
<string name="file_exists">Податотекава веќе постои на Ризницата. Дали сигурно сакате да продолжите?</string> <string name="file_exists">Податотекава веќе постои на Ризницата. Дали сигурно сакате да продолжите?</string>
<string name="yes">Да</string> <string name="yes">Да</string>
<string name="no">Не</string> <string name="no">Не</string>
<string name="media_detail_title">Наслов</string>
<string name="media_detail_media_title">Наслов на податотеката</string>
<string name="media_detail_description">Опис</string>
<string name="media_detail_description_explanation">Тука оди описот на податотеката. Ова потенцијално може да биде прилично долго, и ќе треба да се преломи во неколку реда. Се надеваме дека ќе изгледа добро.</string>
<string name="become_a_tester_title">Станете бета-испробувач</string>
<string name="become_a_tester_description">Пријавете се на нашиот бета-канал на Google Play и добивајте ран пристап до нови можности и исправки на грешки</string>
<string name="beta_opt_in_link">https://play.google.com/apps/testing/fr.free.nrw.commons</string>
</resources> </resources>

View file

@ -160,4 +160,6 @@ Kliknij ten komunikat lub naciśnij „cofnij”, aby pominąć ten krok.</strin
<string name="file_exists">Ten plik już istnieje na Commons. Jesteś pewien, że chcesz kontynuować?</string> <string name="file_exists">Ten plik już istnieje na Commons. Jesteś pewien, że chcesz kontynuować?</string>
<string name="yes">Tak</string> <string name="yes">Tak</string>
<string name="no">Nie</string> <string name="no">Nie</string>
<string name="media_detail_title">Tytuł</string>
<string name="media_detail_description">Opis</string>
</resources> </resources>

View file

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Comun</string>
<string name="menu_settings">Paràmeter</string>
<string name="username">Stranòm</string>
<string name="password">Ciav</string>
<string name="login">Intré ant ël sistema</string>
<string name="signup">Anscriv-se</string>
<string name="logging_in_title">Conession</string>
<string name="logging_in_message">Ch\'a l\'abia passiensa...</string>
<string name="login_success">A l\'é intrà ant ël sistema!</string>
<string name="login_failed">Falì a rintré ant ël sistema!</string>
<string name="upload_failed">Archivi nen trovà. Për piasì, ch\'a preuva con n\'àutr.</string>
<string name="authentication_failed">Autentificassion falìa!</string>
<string name="uploading_started">Cariament ancaminà!</string>
<string name="upload_completed_notification_title">%1$s carià!</string>
<string name="upload_completed_notification_text">Sgnaché për vëdde sò cariament</string>
<string name="upload_progress_notification_title_start">Inissi dël cariament %1$s</string>
<string name="upload_progress_notification_title_in_progress">%1$s carià</string>
<string name="upload_progress_notification_title_finishing">Fin dël cariament %1$s</string>
<string name="upload_failed_notification_title">Cariament falì a %1$s</string>
<string name="upload_failed_notification_subtitle">Sgnaché për ësmon-e</string>
<plurals name="uploads_pending_notification_indicator">
<item quantity="one">1 archivi an camin ch\'as caria</item>
<item quantity="other">%d archivi an camin ch\'as cario</item>
</plurals>
<string name="title_activity_contributions">Ij mè cariament</string>
<string name="contribution_state_queued">An coa</string>
<string name="contribution_state_failed">Falì</string>
<string name="contribution_state_in_progress">%1$d%% completà</string>
<string name="contribution_state_starting">Cariament</string>
<string name="menu_from_gallery">Da la galarìa</string>
<string name="menu_from_camera">Fé na fòto</string>
<string name="menu_nearby">Davzin</string>
<string name="provider_contributions">Ij mè cariament</string>
<string name="menu_share">Partagé</string>
<string name="menu_open_in_browser">Smon-e ant ël navigador</string>
<string name="share_title_hint">Tìtol</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_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_generic">Falì a rintré ant ël sistema</string>
<string name="share_upload_button">Carié</string>
<string name="multiple_share_base_title">Deje un nòm a s\'ansem</string>
<string name="provider_modifications">Modìfiche</string>
<string name="menu_upload_single">Carié</string>
<string name="categories_search_text_hint">Sërché dle categorìe</string>
<string name="menu_save_categories">Argistré</string>
<plurals name="contributions_subtitle">
<item quantity="zero">Ancor gnun cariament</item>
<item quantity="one">1 cariament</item>
<item quantity="other">%d cariament</item>
</plurals>
<plurals name="starting_multiple_uploads">
<item quantity="one">1 cariament ancaminà</item>
<item quantity="other">%d cariament ancaminà</item>
</plurals>
<plurals name="multiple_uploads_title">
<item quantity="one">1 cariament</item>
<item quantity="other">%d cariament</item>
</plurals>
<string name="categories_not_found">Gnun-e categorìe rëspondente a %1$s trovà</string>
<string name="categories_skip_explanation">Ch\'a gionta dle categorìe, për ch\'a sia pi belfé trové soe plance su Wikimedia Commons.
Ch\'a ancamin-a a scrive për gionté dle categorìe.
Ch\'a sgnaca an s\'ën mëssage (o ch\'a sgnaca ël boton andaré) për sauté \'s pass.</string>
<string name="categories_activity_title">Categorìe</string>
<string name="preference_tracking">Rapòrt d\'utilisassion</string>
<string name="preference_tracking_summary">Mandé ij rapòrt d\'usagi a Wikimedia për giutene a amelioré l\'aplicassion</string>
<string name="title_activity_settings">Paràmeter</string>
<string name="title_activity_signup">Marchesse</string>
<string name="menu_about">A propòsit</string>
<string name="about_license">Ij programa Open Source a son publicà sota la &lt;a href=\"https://github.com/wikimedia/apps-android-commons/blob/master/COPYING\"&gt;licensa Apache v2&lt;/a&gt;. Wikimedia Commons e sò sìmbol a son dle marche argistrà dla Fondassion Wikimedia e a son dovrà con ël përmess ëd la Fondassion Wikimedia. Nojàutri i soma nen aprovà da o afilià a la Fondassion Wikimedia.</string>
<string name="about_improve">&lt;a href=\"https://github.com/commons-app/apps-android-commons\"&gt;Sorgiss&lt;/a&gt; e &lt;a href=\"https://commons-app.github.io/\"&gt;sit an sl\'aragnà&lt;/a&gt; su GitHub. Creé na neuva &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;signalassion GitHub&lt;/a&gt; për signalé dij givo e dij sugeriment.</string>
<string name="about_privacy_policy">&lt;a href=\"https://wikimediafoundation.org/wiki/Privacy_policy\"&gt;Régole ëd confidensialità&lt;/a&gt;</string>
<string name="title_activity_about">A propòsit</string>
<string name="menu_feedback">Mandé dij coment (për pòsta eletrònica)</string>
<string name="no_email_client">Gnun clien ëd pòsta eletrònica anstalà</string>
<string name="provider_categories">Categorìe dovrà ëd recent</string>
<string name="waiting_first_sync">Atèisa ëd prima sincronisassion...</string>
<string name="no_uploads_yet">A l\'ha ancor nen carià ëd fòto.</string>
<string name="menu_retry_upload">Prové torna</string>
<string name="menu_cancel_upload">Anulé</string>
<string name="share_license_summary">Costa plancia a sarà sota la licensa %1$s</string>
<string name="menu_download">Dëscarié</string>
</resources>

View file

@ -163,4 +163,7 @@
<string name="file_exists">Этот файл уже существует на Викискладе. Вы уверены, что хотите продолжить?</string> <string name="file_exists">Этот файл уже существует на Викискладе. Вы уверены, что хотите продолжить?</string>
<string name="yes">Да</string> <string name="yes">Да</string>
<string name="no">Нет</string> <string name="no">Нет</string>
<string name="media_detail_title">Название</string>
<string name="media_detail_description">Описание</string>
<string name="become_a_tester_title">Стать бета-тестером</string>
</resources> </resources>

View file

@ -164,4 +164,11 @@ u2022 Категорії: Sydney Opera House, Sydney Opera House from the west,
<string name="file_exists">Цей файл вже існує на Вікісховищі. Ви впевнені, що хочете продовжити?</string> <string name="file_exists">Цей файл вже існує на Вікісховищі. Ви впевнені, що хочете продовжити?</string>
<string name="yes">Так</string> <string name="yes">Так</string>
<string name="no">Ні</string> <string name="no">Ні</string>
<string name="media_detail_title">Назва</string>
<string name="media_detail_media_title">Назва медіафайлу</string>
<string name="media_detail_description">Опис</string>
<string name="media_detail_description_explanation">Сюди потрапляє опис медіафайлу. Він потенційно може бути досить довгим і розтягнутися на декілька рядків. Однак ми сподіваємось, що він виглядатиме гарно.</string>
<string name="become_a_tester_title">Станьте бета-тестером</string>
<string name="become_a_tester_description">Увійдіть на наш бета-канал на Google Play і отримайте ранній доступ до нових функцій та виправлень багів</string>
<string name="beta_opt_in_link">https://play.google.com/apps/testing/fr.free.nrw.commons</string>
</resources> </resources>

View file

@ -160,4 +160,8 @@
<string name="file_exists">此檔案已存在於共享資源上。您確定要繼續嗎?</string> <string name="file_exists">此檔案已存在於共享資源上。您確定要繼續嗎?</string>
<string name="yes"></string> <string name="yes"></string>
<string name="no"></string> <string name="no"></string>
<string name="media_detail_title">標題</string>
<string name="media_detail_media_title">多媒體標體</string>
<string name="media_detail_description">描述</string>
<string name="media_detail_description_explanation">描述使用在此的多媒體。若內容可能會很長的話請斷開換行。我們希望這樣可以讓內容看起來較好些。</string>
</resources> </resources>

View file

@ -36,7 +36,7 @@
<string name="menu_share">分享</string> <string name="menu_share">分享</string>
<string name="menu_open_in_browser">在浏览器中查看</string> <string name="menu_open_in_browser">在浏览器中查看</string>
<string name="share_title_hint">标题</string> <string name="share_title_hint">标题</string>
<string name="share_description_hint">描述</string> <string name="share_description_hint">说明</string>
<string name="login_failed_network">无法登录 - 网络故障</string> <string name="login_failed_network">无法登录 - 网络故障</string>
<string name="login_failed_username">无法登录 - 请检查您的用户名</string> <string name="login_failed_username">无法登录 - 请检查您的用户名</string>
<string name="login_failed_password">无法登录 - 请检查您的密码</string> <string name="login_failed_password">无法登录 - 请检查您的密码</string>
@ -159,4 +159,8 @@
<string name="file_exists">此文件在共享资源已存在。您确定要继续么?</string> <string name="file_exists">此文件在共享资源已存在。您确定要继续么?</string>
<string name="yes"></string> <string name="yes"></string>
<string name="no"></string> <string name="no"></string>
<string name="media_detail_title">标题</string>
<string name="media_detail_media_title">媒体的标题</string>
<string name="media_detail_description">说明</string>
<string name="media_detail_description_explanation">在此填写媒体的说明。这可能会相当长,并将需要包裹在多行中。我们希望它看起来很好。</string>
</resources> </resources>

View file

@ -155,4 +155,11 @@ Tap this message (or hit back) to skip this step.</string>
<string name="file_exists">This file already exists on Commons. Are you sure you want to proceed?</string> <string name="file_exists">This file already exists on Commons. Are you sure you want to proceed?</string>
<string name="yes">Yes</string> <string name="yes">Yes</string>
<string name="no">No</string> <string name="no">No</string>
<string name="media_detail_title">Title</string>
<string name="media_detail_media_title">Title of the media</string>
<string name="media_detail_description">Description</string>
<string name="media_detail_description_explanation">Description of the media goes here. This can potentially be fairly long, and will need to wrap across multiple lines. We hope it looks nice though.</string>
<string name="become_a_tester_title">Become a Beta Tester</string>
<string name="become_a_tester_description">Opt-in to our beta channel on Google Play and get early access to new features and bug fixes</string>
<string name="beta_opt_in_link">https://play.google.com/apps/testing/fr.free.nrw.commons</string>
</resources> </resources>

View file

@ -13,5 +13,11 @@
android:summary="@string/allow_gps_summary" android:summary="@string/allow_gps_summary"
android:key="allowGps" /> android:key="allowGps" />
<Preference android:title="@string/become_a_tester_title"
android:summary="@string/become_a_tester_description">
<intent android:action="android.intent.action.VIEW"
android:data="@string/beta_opt_in_link" />
</Preference>
</PreferenceScreen> </PreferenceScreen>

View file

@ -5,7 +5,7 @@ buildscript {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:2.3.0' classpath "com.android.tools.build:gradle:${project.gradleVersion}"
} }
} }

View file

@ -1 +1,9 @@
android.useDeprecatedNdk=true gradleVersion = 2.3.0
supportLibVersion = 25.2.0
compileSdkVersion = android-25
buildToolsVersion = 25.0.1
minSdkVersion = 15
targetSdkVersion = 25

View file

@ -1,4 +1,4 @@
#Fri Mar 03 19:41:57 IST 2017
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME