Merge branch 'master' into lint-cleanup

This commit is contained in:
Paul Hawke 2017-09-13 19:16:55 -05:00
commit d4fd6f8b77
44 changed files with 381 additions and 272 deletions

View file

@ -77,6 +77,29 @@ android {
}
}
productFlavors {
prod {
buildConfigField "String", "WIKIMEDIA_API_HOST", "\"https://commons.wikimedia.org/w/api.php\""
buildConfigField "String", "WIKIMEDIA_FORGE_API_HOST", "\"https://tools.wmflabs.org/\""
buildConfigField "String", "IMAGE_URL_BASE", "\"https://upload.wikimedia.org/wikipedia/commons\""
buildConfigField "String", "HOME_URL", "\"https://commons.wikimedia.org/wiki/\""
buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.org/wiki/\""
buildConfigField "String", "EVENTLOG_URL", "\"https://www.wikimedia.org/beacon/event\""
buildConfigField "String", "EVENTLOG_WIKI", "\"commonswiki\""
}
beta {
// What values do we need to hit the BETA versions of the site / api ?
buildConfigField "String", "WIKIMEDIA_API_HOST", "\"https://commons.wikimedia.beta.wmflabs.org/w/api.php\""
buildConfigField "String", "WIKIMEDIA_FORGE_API_HOST", "\"https://tools.wmflabs.org/\""
buildConfigField "String", "IMAGE_URL_BASE", "\"https://upload.beta.wmflabs.org/wikipedia/commons\""
buildConfigField "String", "HOME_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/\""
buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/wiki/\""
buildConfigField "String", "EVENTLOG_URL", "\"https://commons.wikimedia.beta.wmflabs.org/beacon/event\""
buildConfigField "String", "EVENTLOG_WIKI", "\"commonswiki\""
}
}
lintOptions {
disable 'MissingTranslation'
disable 'ExtraTranslation'

View file

@ -1,23 +0,0 @@
package fr.free.nrw.commons;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.hamcrest.CoreMatchers.is;
// TODO: use Robolectric and make it runnable without a connected device
@RunWith(AndroidJUnit4.class)
public class MediaTest {
@Test public void displayTitleShouldStripExtension() {
Media m = new Media("File:Example.jpg");
Assert.assertThat(m.getDisplayTitle(), is("Example"));
}
@Test public void displayTitleShouldUseSpaceForUnderscore() {
Media m = new Media("File:Example 1_2.jpg");
Assert.assertThat(m.getDisplayTitle(), is("Example 1 2"));
}
}

View file

@ -1,57 +0,0 @@
package fr.free.nrw.commons;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.ArrayList;
import java.util.List;
import fr.free.nrw.commons.location.LatLng;
import fr.free.nrw.commons.nearby.NearbyBaseMarker;
import fr.free.nrw.commons.nearby.NearbyController;
import fr.free.nrw.commons.nearby.Place;
import static org.hamcrest.CoreMatchers.is;
@RunWith(AndroidJUnit4.class)
public class NearbyControllerTest {
private Context instrumentationContext;
@Before
public void setup() {
instrumentationContext = InstrumentationRegistry.getTargetContext();
}
@Test public void testNullAttractions() {
LatLng location = new LatLng(0, 0, 0);
List<NearbyBaseMarker> options =
NearbyController.loadAttractionsFromLocationToBaseMarkerOptions(
location,
null,
instrumentationContext
);
Assert.assertThat(options.size(), is(0));
}
@Test public void testEmptyList() {
LatLng location = new LatLng(0, 0, 0);
List<Place> emptyList = new ArrayList<>();
List<NearbyBaseMarker> options =
NearbyController.loadAttractionsFromLocationToBaseMarkerOptions(
location,
emptyList,
instrumentationContext
);
Assert.assertThat(options.size(), is(0));
}
}

View file

@ -1,61 +0,0 @@
package fr.free.nrw.commons;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.net.URLEncoder;
import static org.hamcrest.CoreMatchers.is;
// TODO: use Robolectric and make it runnable without a connected device
@RunWith(AndroidJUnit4.class)
public class PageTitleTest {
@Test public void displayTextShouldNotBeUnderscored() {
Assert.assertThat(new PageTitle("Ex_1 ").getDisplayText(),
is("Ex 1"));
}
@Test public void moreThanTwoColons() {
Assert.assertThat(new PageTitle("File:sample:a.jpg").getPrefixedText(),
is("File:Sample:a.jpg"));
}
@Test public void getTextShouldReturnWithoutNamespace() {
Assert.assertThat(new PageTitle("File:sample.jpg").getText(),
is("Sample.jpg"));
}
@Test public void capitalizeNameAfterNamespace() {
Assert.assertThat(new PageTitle("File:sample.jpg").getPrefixedText(),
is("File:Sample.jpg"));
}
@Test public void prefixedTextShouldBeUnderscored() {
Assert.assertThat(new PageTitle("Ex 1 ").getPrefixedText(),
is("Ex_1"));
}
@Test public void getMobileUriForTest() {
Assert.assertThat(new PageTitle("Test").getMobileUri().toString(),
is("https://commons.m.wikimedia.org/wiki/Test"));
}
@Test public void spaceBecomesUnderscoreInUri() {
Assert.assertThat(new PageTitle("File:Ex 1.jpg").getCanonicalUri().toString(),
is("https://commons.wikimedia.org/wiki/File:Ex_1.jpg"));
}
@Test public void leaveSubpageNamesUncapitalizedInUri() {
Assert.assertThat(new PageTitle("User:Ex/subpage").getCanonicalUri().toString(),
is("https://commons.wikimedia.org/wiki/User:Ex/subpage"));
}
@Test public void unicodeUri() throws Throwable {
Assert.assertThat(new PageTitle("User:例").getCanonicalUri().toString(),
is("https://commons.wikimedia.org/wiki/User:" + URLEncoder.encode("", "utf-8")));
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View file

@ -49,12 +49,6 @@ import timber.log.Timber;
public class CommonsApplication extends Application {
private Account currentAccount = null; // Unlike a savings account...
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 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_WIKI = "commonswiki";
public static final Object[] EVENT_UPLOAD_ATTEMPT = {"MobileAppUploadAttempts", 5334329L};
public static final Object[] EVENT_LOGIN_ATTEMPT = {"MobileAppLoginAttempts", 5257721L};
@ -90,7 +84,7 @@ public class CommonsApplication extends Application {
public MediaWikiApi getMWApi() {
if (api == null) {
api = new ApacheHttpClientMediaWikiApi(API_URL);
api = new ApacheHttpClientMediaWikiApi(BuildConfig.WIKIMEDIA_API_HOST);
}
return api;
}

View file

@ -58,7 +58,7 @@ public class PageTitle {
*/
@NonNull
public Uri getCanonicalUri() {
String uriStr = CommonsApplication.HOME_URL + Uri.encode(getPrefixedText(), ":/");
String uriStr = BuildConfig.HOME_URL + Uri.encode(getPrefixedText(), ":/");
return Uri.parse(uriStr);
}
@ -71,7 +71,7 @@ public class PageTitle {
*/
@NonNull
public Uri getMobileUri() {
String uriStr = CommonsApplication.MOBILE_HOME_URL + Uri.encode(getPrefixedText(), ":/");
String uriStr = BuildConfig.MOBILE_HOME_URL + Uri.encode(getPrefixedText(), ":/");
return Uri.parse(uriStr);
}

View file

@ -40,7 +40,6 @@ import javax.xml.transform.stream.StreamResult;
import fr.free.nrw.commons.settings.Prefs;
import timber.log.Timber;
public class Utils {
// Get SHA1 of file from input stream
@ -80,10 +79,12 @@ public class Utils {
}
}
/** Fix Html.fromHtml is deprecated problem
/**
* Fix Html.fromHtml is deprecated problem
*
* @param source provided Html string
* @return returned Spanned of appropriate method according to version check
* */
*/
public static Spanned fromHtml(String source) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return Html.fromHtml(source, Html.FROM_HTML_MODE_LEGACY);
@ -127,7 +128,7 @@ public class Utils {
public static String makeThumbBaseUrl(String filename) {
String name = new PageTitle(filename).getPrefixedText();
String sha = new String(Hex.encodeHex(DigestUtils.md5(name)));
return String.format("%s/%s/%s/%s", CommonsApplication.IMAGE_URL_BASE, sha.substring(0, 1), sha.substring(0, 2), urlEncode(name));
return String.format("%s/%s/%s/%s", BuildConfig.IMAGE_URL_BASE, sha.substring(0, 1), sha.substring(0, 2), urlEncode(name));
}
public static String getStringFromDOM(Node dom) {
@ -277,6 +278,6 @@ public class Utils {
}
public static boolean isDarkTheme(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context).getBoolean("theme",false);
return PreferenceManager.getDefaultSharedPreferences(context).getBoolean("theme", false);
}
}

View file

@ -41,12 +41,12 @@ public class LogBuilder {
try {
fullData.put("schema", schema);
fullData.put("revision", rev);
fullData.put("wiki", CommonsApplication.EVENTLOG_WIKI);
fullData.put("wiki", BuildConfig.EVENTLOG_WIKI);
data.put("device", EventLog.DEVICE);
data.put("platform", "Android/" + Build.VERSION.RELEASE);
data.put("appversion", "Android/" + BuildConfig.VERSION_NAME);
fullData.put("event", data);
return new URL(CommonsApplication.EVENTLOG_URL + "?" + Utils.urlEncode(fullData.toString()) + ";");
return new URL(BuildConfig.EVENTLOG_URL + "?" + Utils.urlEncode(fullData.toString()) + ";");
} catch (MalformedURLException | JSONException e) {
throw new RuntimeException(e);
}

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="235.0"
android:viewportWidth="235.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.68,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.67,0 99,-44.32 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48c47.21,0 85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#EDA33F" android:pathData="M197.23,117.5c0,44.03 -35.69,79.72 -79.73,79.72c-44.03,0 -79.73,-35.69 -79.73,-79.72c0,-44.03 35.69,-79.73 79.73,-79.73C161.53,37.77 197.23,73.47 197.23,117.5z"/>
<path android:fillColor="#352200" android:pathData="M116.97,97.32c-38.84,0 -71.25,11.73 -78.86,27.34c0.63,7.06 2.16,13.86 4.51,20.28c12.15,12.41 40.86,21.13 74.35,21.13c35.18,0 65.08,-9.63 76.06,-23.04c1.76,-5.21 3,-10.67 3.65,-16.3C191.03,110.1 157.5,97.32 116.97,97.32z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="235.0"
android:viewportWidth="235.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.68,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.67,0 99,-44.32 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48c47.21,0 85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#EDA33F" android:pathData="M197.23,117.5c0,44.03 -35.69,79.72 -79.73,79.72c-44.03,0 -79.73,-35.69 -79.73,-79.72c0,-44.03 35.69,-79.73 79.73,-79.73C161.53,37.77 197.23,73.47 197.23,117.5z"/>
<path android:fillColor="#007F9F" android:pathData="M177.13,170.39c2.87,-3.23 5.47,-6.69 7.79,-10.36c-8.9,-5.09 -35.72,-8.79 -67.42,-8.79s-58.52,3.7 -67.42,8.79c2.32,3.66 4.92,7.13 7.79,10.36c12.51,3.49 34.53,5.81 59.63,5.81C142.6,176.2 164.63,173.88 177.13,170.39z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="235.0"
android:viewportWidth="235.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.68,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.67,0 99,-44.32 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48c47.21,0 85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#EDA33F" android:pathData="M197.23,117.5c0,44.03 -35.69,79.72 -79.73,79.72c-44.03,0 -79.73,-35.69 -79.73,-79.72c0,-44.03 35.69,-79.73 79.73,-79.73C161.53,37.77 197.23,73.47 197.23,117.5z"/>
<path android:fillColor="#FF000000" android:pathData="M66.97,166.68a50.53,7.7 0,1 0,101.06 0a50.53,7.7 0,1 0,-101.06 0z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="235.0"
android:viewportWidth="235.001" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.67,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.67,0 99,-44.32 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48s85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#EDA33F" android:pathData="M117.5,117.5m-79.73,0a79.73,79.73 0,1 1,159.45 0a79.73,79.73 0,1 1,-159.45 0"/>
<path android:fillColor="#FF000000" android:pathData="M49.31,154.69a68.19,8.86 0,1 0,136.39 0a68.19,8.86 0,1 0,-136.39 0z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="112.8"
android:viewportWidth="112.8" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h112.8v112.8h-112.8z"/>
<path android:fillColor="#E3E3E3" android:pathData="M56.4,8.88c-26.24,0 -47.52,21.28 -47.52,47.52c0,26.24 21.27,47.52 47.52,47.52c26.25,0 47.52,-21.28 47.52,-47.52C103.92,30.16 82.64,8.88 56.4,8.88zM56.4,97.43c-22.66,0 -41.03,-18.37 -41.03,-41.03c0,-22.66 18.37,-41.03 41.03,-41.03c22.66,0 41.03,18.37 41.03,41.03C97.43,79.06 79.06,97.43 56.4,97.43z"/>
<path android:fillColor="#54B948" android:pathData="M56.4,56.73m-38.27,0a38.27,38.27 0,1 1,76.54 0a38.27,38.27 0,1 1,-76.54 0"/>
<path android:fillColor="#352200" android:pathData="M28.6,69.79a27.8,10.31 0,1 0,55.6 0a27.8,10.31 0,1 0,-55.6 0z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="235.0"
android:viewportWidth="235.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.68,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.67,0 99,-44.32 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48c47.21,0 85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#EDA33F" android:pathData="M197.23,117.5c0,44.03 -35.69,79.72 -79.73,79.72c-44.03,0 -79.73,-35.69 -79.73,-79.72c0,-44.03 35.69,-79.73 79.73,-79.73C161.53,37.77 197.23,73.47 197.23,117.5z"/>
<path android:fillColor="#FF000000" android:pathData="M56.94,153.5a60.56,8.91 0,1 0,121.12 0a60.56,8.91 0,1 0,-121.12 0z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="235.0"
android:viewportWidth="235.001" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.67,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.67,0 99,-44.32 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48s85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#EDA33F" android:pathData="M117.5,117.5m-79.73,0a79.73,79.73 0,1 1,159.45 0a79.73,79.73 0,1 1,-159.45 0"/>
<path android:fillColor="#FF000000" android:pathData="M73.44,165.32a44.06,7.71 0,1 0,88.13 0a44.06,7.71 0,1 0,-88.13 0z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="235.0"
android:viewportWidth="235.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.68,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.67,0 99,-44.32 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48c47.21,0 85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#EDA33F" android:pathData="M197.23,117.5c0,44.03 -35.69,79.72 -79.73,79.72c-44.03,0 -79.73,-35.69 -79.73,-79.72c0,-44.03 35.69,-79.73 79.73,-79.73C161.53,37.77 197.23,73.47 197.23,117.5z"/>
<path android:fillColor="#FF000000" android:pathData="M64.19,148.92a53.31,8.12 0,1 0,106.62 0a53.31,8.12 0,1 0,-106.62 0z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="112.801"
android:viewportWidth="112.8" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h112.8v112.8h-112.8z"/>
<path android:fillColor="#E3E3E3" android:pathData="M56.4,8.88c-26.24,0 -47.52,21.28 -47.52,47.52s21.27,47.52 47.52,47.52c26.25,0 47.52,-21.28 47.52,-47.52S82.64,8.88 56.4,8.88zM56.4,97.43c-22.66,0 -41.03,-18.37 -41.03,-41.03c0,-22.66 18.37,-41.03 41.03,-41.03c22.66,0 41.03,18.37 41.03,41.03C97.43,79.06 79.06,97.43 56.4,97.43z"/>
<path android:fillColor="#54B948" android:pathData="M56.4,56.73m-38.27,0a38.27,38.27 0,1 1,76.54 0a38.27,38.27 0,1 1,-76.54 0"/>
<path android:fillColor="#007F9F" android:pathData="M18.13,56.73c0,21.13 17.13,38.27 38.27,38.27c21.14,0 38.27,-17.13 38.27,-38.27c0,-4.1 -0.65,-8.03 -1.84,-11.73H19.97C18.78,48.7 18.13,52.64 18.13,56.73z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="235.0"
android:viewportWidth="235.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.68,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.67,0 99,-44.32 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48s85.48,38.27 85.48,85.48S164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#EDA33F" android:pathData="M197.23,117.5c0,44.03 -35.69,79.72 -79.73,79.72c-44.03,0 -79.73,-35.69 -79.73,-79.72c0,-44.03 35.69,-79.73 79.73,-79.73C161.53,37.77 197.23,73.47 197.23,117.5z"/>
<path android:fillColor="#FF000000" android:pathData="M73.27,163.84a44.23,6.61 0,1 0,88.46 0a44.23,6.61 0,1 0,-88.46 0z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="235.0"
android:viewportWidth="235.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.67,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.68,0 99,-44.33 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48c47.21,0 85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#54B948" android:pathData="M117.5,118.19m-79.73,0a79.73,79.73 0,1 1,159.45 0a79.73,79.73 0,1 1,-159.45 0"/>
<path android:fillColor="#FF000000" android:pathData="M54.44,151.1a62.06,8.91 0,1 0,124.12 0a62.06,8.91 0,1 0,-124.12 0z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="112.8"
android:viewportWidth="112.8" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h112.8v112.8h-112.8z"/>
<path android:fillColor="#E3E3E3" android:pathData="M56.4,8.88c-26.24,0 -47.52,21.27 -47.52,47.52c0,26.24 21.27,47.52 47.52,47.52c26.25,0 47.52,-21.28 47.52,-47.52C103.92,30.16 82.64,8.88 56.4,8.88zM56.4,97.43c-22.66,0 -41.03,-18.37 -41.03,-41.03s18.37,-41.03 41.03,-41.03c22.66,0 41.03,18.37 41.03,41.03S79.06,97.43 56.4,97.43z"/>
<path android:fillColor="#54B948" android:pathData="M56.4,56.73m-38.27,0a38.27,38.27 0,1 1,76.54 0a38.27,38.27 0,1 1,-76.54 0"/>
<path android:fillColor="#007F9F" android:pathData="M18.13,56.73c0,21.14 17.13,38.27 38.27,38.27c21.14,0 38.27,-17.13 38.27,-38.27c0,-4.09 -0.65,-8.03 -1.84,-11.73H19.97C18.78,48.7 18.13,52.64 18.13,56.73z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="235.0"
android:viewportWidth="235.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.68,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.67,0 99,-44.32 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48c47.21,0 85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#EDA33F" android:pathData="M197.23,117.5c0,44.03 -35.69,79.72 -79.73,79.72c-44.03,0 -79.73,-35.69 -79.73,-79.72c0,-44.03 35.69,-79.73 79.73,-79.73C161.53,37.77 197.23,73.47 197.23,117.5z"/>
<path android:fillColor="#54B948" android:pathData="M50.99,153.38a65.64,7.45 0,1 0,131.28 0a65.64,7.45 0,1 0,-131.28 0z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="235.0"
android:viewportWidth="235.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.68,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.67,0 99,-44.32 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48c47.21,0 85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#EDA33F" android:pathData="M197.23,117.5c0,44.03 -35.69,79.72 -79.73,79.72c-44.03,0 -79.73,-35.69 -79.73,-79.72c0,-44.03 35.69,-79.73 79.73,-79.73C161.53,37.77 197.23,73.47 197.23,117.5z"/>
<path android:fillColor="#352200" android:pathData="M48.69,144.99a69.93,13.72 0,1 0,139.86 0a69.93,13.72 0,1 0,-139.86 0z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="112.801"
android:viewportWidth="112.801" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h112.8v112.8h-112.8z"/>
<path android:fillColor="#E3E3E3" android:pathData="M56.4,8.88c-26.24,0 -47.52,21.27 -47.52,47.52c0,26.24 21.27,47.52 47.52,47.52c26.25,0 47.52,-21.27 47.52,-47.52C103.92,30.16 82.64,8.88 56.4,8.88zM56.4,97.43c-22.66,0 -41.03,-18.37 -41.03,-41.03c0,-22.66 18.37,-41.03 41.03,-41.03c22.66,0 41.03,18.37 41.03,41.03C97.43,79.06 79.06,97.43 56.4,97.43z"/>
<path android:fillColor="#54B948" android:pathData="M56.4,56.4m-38.27,0a38.27,38.27 0,1 1,76.54 0a38.27,38.27 0,1 1,-76.54 0"/>
<path android:fillColor="#352200" android:pathData="M19.31,61.45a36.97,17.44 0,1 0,73.93 0a36.97,17.44 0,1 0,-73.93 0z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="234.999"
android:viewportWidth="235.001" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.67,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.67,0 99,-44.32 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48s85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#EDA33F" android:pathData="M197.23,117.5c0,44.03 -35.69,79.72 -79.73,79.72c-44.03,0 -79.73,-35.69 -79.73,-79.72c0,-44.03 35.69,-79.73 79.73,-79.73C161.53,37.77 197.23,73.47 197.23,117.5z"/>
<path android:fillColor="#352200" android:pathData="M195.22,99.74c-4.62,-1.5 -10.24,-2.97 -14.99,-3.58l-37.11,-5.24c-42.73,-5.28 -76.6,-2.88 -101.46,1.97c-2.52,7.75 -3.89,16.02 -3.89,24.61c0,44.03 35.69,79.72 79.73,79.72c44.03,0 79.73,-35.69 79.73,-79.72C197.23,111.39 196.52,105.46 195.22,99.74z"/>

View file

@ -1,6 +1,5 @@
<vector android:height="24dp" android:viewportHeight="235.0"
android:viewportWidth="235.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.68,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.67,0 99,-44.32 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48c47.21,0 85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#EDA33F" android:pathData="M197.23,117.5c0,44.03 -35.69,79.72 -79.73,79.72c-44.03,0 -79.73,-35.69 -79.73,-79.72c0,-44.03 35.69,-79.73 79.73,-79.73C161.53,37.77 197.23,73.47 197.23,117.5z"/>
<path android:fillColor="#FF000000" android:pathData="M51.77,153.81a65.73,6.07 0,1 0,131.47 0a65.73,6.07 0,1 0,-131.47 0z"/>

View file

@ -1,18 +1,17 @@
<vector android:height="24dp" android:viewportHeight="235.0"
android:viewportWidth="235.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#B1B1B1" android:pathData="M0,0h235v235h-235z"/>
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.67,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.68,0 99,-44.33 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48c47.21,0 85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#54B948" android:pathData="M117.5,118.19m-79.73,0a79.73,79.73 0,1 1,159.45 0a79.73,79.73 0,1 1,-159.45 0"/>
<path android:fillColor="#58595B" android:pathData="M117.5,197.91c44.03,0 79.73,-35.69 79.73,-79.72c0,-7.58 -1.08,-14.9 -3.06,-21.85c-27.77,-4.05 -53.39,-3.37 -55.11,0.61H91.73c-3.07,-5.81 -25.77,-5.67 -49.91,-3.83c-2.61,7.89 -4.04,16.31 -4.04,25.07C37.77,162.22 73.47,197.91 117.5,197.91z"/>
<path android:fillColor="#3D3D3E" android:pathData="M176.06,147.04c-5,-10.15 -18.33,-10.73 -20.33,-16.44c-1.53,-4.37 3.93,-20.85 0.29,-36.94c-9.63,0.21 -16.12,1.36 -16.96,3.3H91.73c-1.53,-2.89 -7.93,-4.31 -16.94,-4.78c3.91,15.01 8.94,33.28 11.94,39.63c3.67,7.75 2,17.74 2.33,27.58c0.22,6.6 -0.97,20.34 -1,32.89c9.11,3.62 19.03,5.64 29.44,5.64c24.39,0 46.21,-10.96 60.83,-28.22C178.44,159.86 178.05,151.07 176.06,147.04z"/>
<path android:fillColor="#007F9F" android:pathData="M117.5,197.91c16.31,0 31.46,-4.9 44.09,-13.3c-0.56,-5.74 -1.6,-13.6 -3.53,-22.06c-3.83,-16.83 -13.67,-24.67 -14.5,-28.83s5.5,-30.04 -4.5,-36.77c0,0 -18.33,-1.77 -47.33,0c2.83,7.27 5.83,21.44 8.5,27.1c2.67,5.67 2.17,17.83 3,24.33c0.73,5.67 2.31,34.44 0.22,48.27C108.01,197.46 112.7,197.91 117.5,197.91z"/>
<path android:fillColor="#FFFFFF" android:pathData="M161.59,184.61c-0.56,-5.74 -1.6,-13.6 -3.53,-22.06c-3.83,-16.83 -13.67,-24.67 -14.5,-28.83s5.5,-30.04 -4.5,-36.77c0,0 -0.43,-0.04 -1.26,-0.1c1.76,6.13 6.76,10.69 4.76,20.66s-2.25,18.22 2.25,25.47c3.95,6.37 15.43,26.47 14.69,42.97C160.21,185.51 160.9,185.07 161.59,184.61z"/>
<path android:fillColor="#FFFFFF" android:pathData="M103.23,148.39c0.73,5.67 2.31,34.44 0.22,48.27c2.45,0.44 4.94,0.76 7.46,0.97c-3.13,-11.2 -4.51,-35.25 -4.1,-42.4c0.5,-8.75 -1.75,-19 -3.25,-28c-1.35,-8.11 -5.75,-20.49 -10.33,-30.36c-0.5,0.03 -1,0.06 -1.5,0.09c2.83,7.27 5.83,21.44 8.5,27.1C102.89,129.72 102.39,141.89 103.23,148.39z"/>
<path android:fillColor="#FFFFFF" android:pathData="M102.56,98.97c2.88,4.13 8.88,14.75 9.13,29.5C114.31,119.22 114.69,107.1 102.56,98.97z"/>
<path android:fillColor="#FFFFFF" android:pathData="M115.06,101.1c2.5,4.13 7.73,14.75 7.94,29.5C125.29,121.35 125.61,109.22 115.06,101.1z"/>
<path android:fillColor="#FFFFFF" android:pathData="M125.64,100.1c2.12,3.5 6.55,12.5 6.73,25C134.31,117.26 134.59,106.98 125.64,100.1z"/>
<path android:fillColor="#FFFFFF" android:pathData="M111.03,134.72c0.31,7.5 5.88,9.38 9.16,22.75s-1.9,16.5 0,25.13c-3.47,-10.13 -0.47,-17.25 -3.35,-25S110.6,140.97 111.03,134.72z"/>
<path android:fillColor="#FFFFFF" android:pathData="M123.85,144.12c0.23,6.87 4.35,8.58 6.77,20.83c2.42,12.24 -1.4,15.1 0,23c-2.57,-9.27 -0.35,-15.79 -2.47,-22.89S123.52,149.84 123.85,144.12z"/>
<path android:fillColor="#FFFFFF" android:pathData="M129.24,131.8c0.53,6.85 4.72,8.38 7.68,20.51c2.96,12.13 -0.74,15.15 1.02,22.98c-2.97,-9.15 -1.05,-15.76 -3.48,-22.75S129.18,137.54 129.24,131.8z"/>
<path android:fillColor="#FFFFFF" android:pathData="M139.08,138.81c0.55,6.85 4.74,8.37 7.72,20.49c2.98,12.12 -0.7,15.15 1.06,22.98c-2.99,-9.14 -1.08,-15.76 -3.53,-22.75C141.88,152.54 139.02,144.54 139.08,138.81z"/>
android:viewportWidth="235.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#E3E3E3" android:pathData="M117.5,18.5c-54.67,0 -99,44.32 -99,99c0,54.67 44.32,99 99,99c54.68,0 99,-44.33 99,-99C216.5,62.83 172.18,18.5 117.5,18.5zM117.5,202.98c-47.21,0 -85.48,-38.27 -85.48,-85.48c0,-47.21 38.27,-85.48 85.48,-85.48c47.21,0 85.48,38.27 85.48,85.48C202.98,164.71 164.71,202.98 117.5,202.98z"/>
<path android:fillColor="#54B948" android:pathData="M117.5,118.19m-79.73,0a79.73,79.73 0,1 1,159.45 0a79.73,79.73 0,1 1,-159.45 0"/>
<path android:fillColor="#58595B" android:pathData="M117.5,197.91c44.03,0 79.73,-35.69 79.73,-79.72c0,-7.58 -1.08,-14.9 -3.06,-21.85c-27.77,-4.05 -53.39,-3.37 -55.11,0.61H91.73c-3.07,-5.81 -25.77,-5.67 -49.91,-3.83c-2.61,7.89 -4.04,16.31 -4.04,25.07C37.77,162.22 73.47,197.91 117.5,197.91z"/>
<path android:fillColor="#3D3D3E" android:pathData="M176.06,147.04c-5,-10.15 -18.33,-10.73 -20.33,-16.44c-1.53,-4.37 3.93,-20.85 0.29,-36.94c-9.63,0.21 -16.12,1.36 -16.96,3.3H91.73c-1.53,-2.89 -7.93,-4.31 -16.94,-4.78c3.91,15.01 8.94,33.28 11.94,39.63c3.67,7.75 2,17.74 2.33,27.58c0.22,6.6 -0.97,20.34 -1,32.89c9.11,3.62 19.03,5.64 29.44,5.64c24.39,0 46.21,-10.96 60.83,-28.22C178.44,159.86 178.05,151.07 176.06,147.04z"/>
<path android:fillColor="#007F9F" android:pathData="M117.5,197.91c16.31,0 31.46,-4.9 44.09,-13.3c-0.56,-5.74 -1.6,-13.6 -3.53,-22.06c-3.83,-16.83 -13.67,-24.67 -14.5,-28.83s5.5,-30.04 -4.5,-36.77c0,0 -18.33,-1.77 -47.33,0c2.83,7.27 5.83,21.44 8.5,27.1c2.67,5.67 2.17,17.83 3,24.33c0.73,5.67 2.31,34.44 0.22,48.27C108.01,197.46 112.7,197.91 117.5,197.91z"/>
<path android:fillColor="#FFFFFF" android:pathData="M161.59,184.61c-0.56,-5.74 -1.6,-13.6 -3.53,-22.06c-3.83,-16.83 -13.67,-24.67 -14.5,-28.83s5.5,-30.04 -4.5,-36.77c0,0 -0.43,-0.04 -1.26,-0.1c1.76,6.13 6.76,10.69 4.76,20.66s-2.25,18.22 2.25,25.47c3.95,6.37 15.43,26.47 14.69,42.97C160.21,185.51 160.9,185.07 161.59,184.61z"/>
<path android:fillColor="#FFFFFF" android:pathData="M103.23,148.39c0.73,5.67 2.31,34.44 0.22,48.27c2.45,0.44 4.94,0.76 7.46,0.97c-3.13,-11.2 -4.51,-35.25 -4.1,-42.4c0.5,-8.75 -1.75,-19 -3.25,-28c-1.35,-8.11 -5.75,-20.49 -10.33,-30.36c-0.5,0.03 -1,0.06 -1.5,0.09c2.83,7.27 5.83,21.44 8.5,27.1C102.89,129.72 102.39,141.89 103.23,148.39z"/>
<path android:fillColor="#FFFFFF" android:pathData="M102.56,98.97c2.88,4.13 8.88,14.75 9.13,29.5C114.31,119.22 114.69,107.1 102.56,98.97z"/>
<path android:fillColor="#FFFFFF" android:pathData="M115.06,101.1c2.5,4.13 7.73,14.75 7.94,29.5C125.29,121.35 125.61,109.22 115.06,101.1z"/>
<path android:fillColor="#FFFFFF" android:pathData="M125.64,100.1c2.12,3.5 6.55,12.5 6.73,25C134.31,117.26 134.59,106.98 125.64,100.1z"/>
<path android:fillColor="#FFFFFF" android:pathData="M111.03,134.72c0.31,7.5 5.88,9.38 9.16,22.75s-1.9,16.5 0,25.13c-3.47,-10.13 -0.47,-17.25 -3.35,-25S110.6,140.97 111.03,134.72z"/>
<path android:fillColor="#FFFFFF" android:pathData="M123.85,144.12c0.23,6.87 4.35,8.58 6.77,20.83c2.42,12.24 -1.4,15.1 0,23c-2.57,-9.27 -0.35,-15.79 -2.47,-22.89S123.52,149.84 123.85,144.12z"/>
<path android:fillColor="#FFFFFF" android:pathData="M129.24,131.8c0.53,6.85 4.72,8.38 7.68,20.51c2.96,12.13 -0.74,15.15 1.02,22.98c-2.97,-9.15 -1.05,-15.76 -3.48,-22.75S129.18,137.54 129.24,131.8z"/>
<path android:fillColor="#FFFFFF" android:pathData="M139.08,138.81c0.55,6.85 4.74,8.37 7.72,20.49c2.98,12.12 -0.7,15.15 1.06,22.98c-2.99,-9.14 -1.08,-15.76 -3.53,-22.75C141.88,152.54 139.02,144.54 139.08,138.81z"/>
</vector>

View file

@ -1,66 +1,68 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:foreground="?attr/selectableItemBackground"
android:layout_height="@dimen/icon_size"
android:layout_height="wrap_content"
android:foreground="?selectableItemBackground"
android:minHeight="72dp"
>
<RelativeLayout
<ImageView
android:id="@+id/icon"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:background="@android:color/white"
android:contentDescription="@string/no_image_found"
android:scaleType="centerCrop"
android:src="@drawable/empty_photo"
/>
<TextView
android:id="@+id/distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp"
android:textAppearance="@style/TextAppearance.AppCompat.Caption"
tools:text="@string/placeholder_place_distance"
/>
<TextView
android:id="@+id/tvName"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
android:layout_height="wrap_content"
android:layout_alignTop="@id/distance"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
android:layout_toEndOf="@id/icon"
android:layout_toLeftOf="@id/distance"
android:layout_toRightOf="@id/icon"
android:layout_toStartOf="@id/distance"
android:ellipsize="end"
android:maxLines="2"
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
tools:text="@string/placeholder_place_name"
/>
<ImageView
android:id="@+id/icon"
android:layout_width="@dimen/icon_size"
android:layout_height="match_parent"
android:src="@drawable/empty_photo"
android:background="#ffffff"
android:scaleType="centerCrop"
android:contentDescription="@string/no_image_found"
/>
<TextView
android:id="@+id/tvDesc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignEnd="@id/distance"
android:layout_alignLeft="@id/tvName"
android:layout_alignRight="@id/distance"
android:layout_alignStart="@id/tvName"
android:layout_below="@id/tvName"
android:layout_marginBottom="16dp"
android:ellipsize="end"
android:maxLines="4"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
tools:text="@string/placeholder_place_description"
/>
<TextView
android:id="@+id/distance"
android:layout_width="@dimen/icon_size"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/icon"
android:gravity="center"
android:padding="@dimen/tiny_margin"
style="?android:textAppearanceSmallInverse"
android:textColor="#ffffff"
android:background="@color/text_background"
tools:text="@string/placeholder_place_distance"
/>
<TextView
android:id="@+id/tvName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/icon"
android:layout_toRightOf="@+id/icon"
android:paddingTop="@dimen/small_margin"
android:paddingLeft="@dimen/small_margin"
android:paddingRight="@dimen/small_margin"
android:maxLines="2"
android:ellipsize="none"
style="?android:textAppearanceMedium"
tools:text="@string/placeholder_place_name"
/>
<TextView
android:id="@+id/tvDesc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/icon"
android:layout_toRightOf="@+id/icon"
android:layout_below="@+id/tvName"
android:padding="@dimen/small_margin"
android:ellipsize="none"
android:maxLines="4"
style="?android:textAppearanceSmall"
tools:text="@string/placeholder_place_description"
/>
</RelativeLayout>
</FrameLayout>
</RelativeLayout>

View file

@ -147,6 +147,9 @@
<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>
<string name="media_detail_uploaded_date">Deiziad enporzhiañ</string>
<string name="media_detail_license">Aotre-implijout</string>
<string name="media_detail_coordinates">Daveennoù</string>
<string name="media_detail_coordinates_empty">N\'eo ket bet pourchaset</string>
<string name="become_a_tester_title">Deuit da vezañ un amprouer beta</string>
<string name="become_a_tester_description">En em enskrivañ en hor c\'hanol beta war Google Play ha kaout ur rakmoned d\'an arc\'hwelioù nevez d\'an drein difaziet</string>
<string name="use_wikidata">Ober gant Wikidata</string>

View file

@ -76,6 +76,8 @@
<string name="preference_license">Lizentzia</string>
<string name="use_previous">Aurreko izenburu/deskribapena erabili</string>
<string name="allow_gps">Oraingo kokapena automatikoki lortu</string>
<string name="preference_theme">Gau modua</string>
<string name="preference_theme_summary">Gai iluna erabili</string>
<string name="license_name_cc_by_sa_four"> Aitortu-PartekatuBerdin 4.0</string>
<string name="license_name_cc_by_four">Aitortu 4.0</string>
<string name="license_name_cc_by_sa"> Aitortu-PartekatuBerdin 3.0</string>
@ -115,15 +117,29 @@
<string name="media_detail_title">Izenburua</string>
<string name="media_detail_media_title">Fitxategiaren izenburua</string>
<string name="media_detail_description">Deskribapena</string>
<string name="media_detail_uploaded_date">Igoera data</string>
<string name="media_detail_license">Lizentzia</string>
<string name="media_detail_coordinates">Koordenatuak</string>
<string name="media_detail_coordinates_empty">Ez da eskeini</string>
<string name="become_a_tester_title">Beta testatzaile bihurtu</string>
<string name="use_wikidata">Wikidata erabili</string>
<string name="use_wikidata_summary">(Erne:hau kentzeak mugikorrak datu asko kontsumitzea ekar dezake)</string>
<string name="maximum_limit">Gehienezko muga</string>
<string name="maximum_limit_alert">500 baino gehiago ezin dira erakutsi</string>
<string name="commons_logo">Commonsen logoa</string>
<string name="background_image">Atzealdeko irudia</string>
<string name="mediaimage_failed">Media irudiak kale egin du</string>
<string name="no_image_found">Ez da irudirik aurkitu</string>
<string name="upload_image">Igo irudia</string>
<string name="welcome_image_mount_zao">Zao Mendia</string>
<string name="welcome_image_llamas">Llamak</string>
<string name="welcome_image_rainbow_bridge">Ortzadar zubia</string>
<string name="welcome_image_tulip">Tulipa</string>
<string name="welcome_image_no_selfies">Selfirik ez</string>
<string name="welcome_image_proprietary">Jabetza irudia</string>
<string name="welcome_image_welcome_wikipedia">Ongi etorri Wikipedia</string>
<string name="welcome_image_welcome_copyright">Ongi etorri copyright-a</string>
<string name="welcome_image_sydney_opera_house">Sidneiko Opera Etxea</string>
<string name="cancel">Utzi</string>
<string name="navigation_drawer_open">Ireki</string>
<string name="navigation_drawer_close">Itxi</string>
@ -132,9 +148,11 @@
<string name="navigation_item_nearby">Gertukoak</string>
<string name="navigation_item_about">Honi buruz</string>
<string name="navigation_item_settings">Ezarpenak</string>
<string name="navigation_item_feedback">Atzeraelikadura</string>
<string name="navigation_item_logout">Saioa itxi</string>
<string name="navigation_item_info" fuzzy="true">Sarrera</string>
<string name="navigation_item_info">Tutoriala</string>
<string name="no_description_found">Deskripziorik ez da aurkitu</string>
<string name="nearby_info_menu_commons_article">Artxibo orrialde komuna</string>
<string name="nearby_info_menu_wikidata_article" fuzzy="true">WikiData Artikulua</string>
<string name="nearby_info_menu_wikidata_article">Wikidata itema</string>
<string name="error_while_cache">Argazkiak hartzerakoan sortutako akatsa</string>
</resources>

View file

@ -20,11 +20,11 @@
<string name="upload_progress_notification_title_finishing">اتمام بارگذاری %1$s</string>
<string name="upload_failed_notification_title">%1$s بارگذاری نشد</string>
<string name="upload_failed_notification_subtitle">برای دیدن انگشت بزنید</string>
<plurals name="uploads_pending_notification_indicator" fuzzy="true">
<item quantity="one">یک پرونده در حال بارگذاری</item>
<plurals name="uploads_pending_notification_indicator">
<item quantity="one">%d پرونده در حال بارگذاری</item>
<item quantity="other">%d پرونده در حال بارگذاری</item>
</plurals>
<string name="title_activity_contributions" fuzzy="true">بارگذاری‌های من</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>
@ -42,6 +42,7 @@
<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>
<string name="login_failed_generic">ورود ناموفق بود</string>
<string name="share_upload_button">بارگذاری</string>
<string name="multiple_share_base_title">نام این مجموعه</string>
@ -49,17 +50,21 @@
<string name="menu_upload_single">بارگذاری</string>
<string name="categories_search_text_hint">جستجوی رده‌ها</string>
<string name="menu_save_categories">ذخیره</string>
<plurals name="contributions_subtitle" fuzzy="true">
<item quantity="zero">هنوز بارگذاری نشده است</item>
<item quantity="one">یک بارگذاری شد</item>
<string name="refresh_button">تازه کردن</string>
<string name="gps_disabled">مکان‌یاب در دستگاه شما خاموش است. آیا دوست دارید فعال شود؟</string>
<string name="enable_gps">فعال کردن مکان‌یاب</string>
<string name="contributions_subtitle_zero">هنوز هیچ بارگذاری</string>
<plurals name="contributions_subtitle">
<item quantity="zero">\@string/contributions_subtitle_zero</item>
<item quantity="one">بارگذاری شد</item>
<item quantity="other">%d بارگذاری شد</item>
</plurals>
<plurals name="starting_multiple_uploads" fuzzy="true">
<item quantity="one">شروع بارگذاری پرونده</item>
<item quantity="other">شروع بارگذاری %d پرونده</item>
<plurals name="starting_multiple_uploads">
<item quantity="one">شروع %d بارگذاری پرونده</item>
<item quantity="other">شروع بارگذاری %d پرونده</item>
</plurals>
<plurals name="multiple_uploads_title" fuzzy="true">
<item quantity="one">۱ بارگذاری</item>
<plurals name="multiple_uploads_title">
<item quantity="one">%d بارگذاری</item>
<item quantity="other">%d بارگذاری</item>
</plurals>
<string name="categories_not_found">رده‌ای منطبق با %1$s یافت نشد</string>
@ -68,9 +73,10 @@
<string name="title_activity_settings">تنظیمات</string>
<string name="title_activity_signup">ثبت نام</string>
<string name="menu_about">درباره</string>
<string name="about_license" fuzzy="true">نرم‌افزار متن‌باز آزاد تحت &lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\"&gt;مجوز آپاچی نسخهٔ ۲&lt;/a&gt;\n\nویکی‌انبار و نشانش یک نشان تجاری‌ست و با اجازهٔ بنیاد ویکی‌مدیا استفاده می‌شود. ما زیرمجموعه یا شعبهٔ بنیاد نیستیم.</string>
<string name="about_license">نرم‌افزار متن‌باز آزاد تحت &lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\"&gt;مجوز آپاچی نسخهٔ ۲&lt;/a&gt;\n\n%1$s و نشانش یک نشان تجاری‌ست و با اجازهٔ بنیاد ویکی‌مدیا استفاده می‌شود. ما زیرمجموعه یا شعبهٔ بنیاد نیستیم.</string>
<string name="about_improve">&lt;a href=\"https://github.com/commons-app/apps-android-commons\"&gt;Source&lt;/a&gt; and &lt;a href=\"https://commons-app.github.io/\"&gt;وب‌سایت&lt;/a&gt; در گیت‌هاب. ایجاد یک &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;درخواست در گیت‌هاب&lt;/a&gt; برای گزارش باگ و یا پیشنهاد یک خصوصیت جدید.</string>
<string name="about_privacy_policy">&lt;a href=\"https://wikimediafoundation.org/wiki/Privacy_policy\"&gt;سیاست حفظ حریم خصوصی&lt;/a&gt;</string>
<string name="about_credits">&lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\"&gt;مجوز&lt;/a&gt;</string>
<string name="title_activity_about">درباره</string>
<string name="menu_feedback">ارسال بازخورد (از طریق ایمیل)</string>
<string name="no_email_client">نرم‌افزار ایمیل نصب نیست</string>
@ -80,11 +86,16 @@
<string name="menu_retry_upload">تلاش مجدد</string>
<string name="menu_cancel_upload">لغو</string>
<string name="share_license_summary">این نگاره تحت مجوز %1$s است</string>
<string name="media_upload_policy">با بارگذاری این تصویر، تأیید می‌کنم که این اثر کار خودم است و از محتوای دارای حق تکثیر یا سلفی برای ایجاد آن استفاده نکرده‌ام و شرایط ذکر شده در By submitting this picture, I declare that this is my own work, that it does not contain copyrighted material or selfies, and otherwise adheres to &lt;a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\"&gt;سیاست‌های ویکی‌انبار&lt;/a&gt; را رعایت می‌کند.</string>
<string name="menu_download">دریافت</string>
<string name="preference_license">مجوز</string>
<string name="use_previous">از عنوان/توضیحات پیشین استفاده کنید</string>
<string name="allow_gps">دریافت خودکار موقعیت کنونی</string>
<string name="allow_gps_summary">درحال دریافت موقعیت برای پیشنهاد رده در صورتی که برچسب جغرافیایی وجود نداشته باشد.</string>
<string name="preference_theme">حالت شبانه</string>
<string name="preference_theme_summary">استفاده از حالت تیره</string>
<string name="license_name_cc_by_sa_four">CC Attribution-ShareAlike 4.0</string>
<string name="license_name_cc_by_four">Attribution 4.0</string>
<string name="license_name_cc_by_sa">CC Attribution-ShareAlike 3.0</string>
<string name="license_name_cc_by">CC Attribution 3.0</string>
<string name="license_name_cc0">CC0</string>
@ -127,8 +138,60 @@
<string name="location_permission_rationale">اجازه‌های اختیاری: دریافت موقعیت برای پیشنهاد رده</string>
<string name="ok">تأیید</string>
<string name="title_activity_nearby">مکان‌‌های اطراف</string>
<string name="no_nearby">مکانی در نزدیکی یافت نشد</string>
<string name="warning">هشدار</string>
<string name="file_exists">پرونده در ویکی‌انبار موجود است. آیا مطمئنید که می‌خواهید ادامه دهید؟</string>
<string name="yes">بله</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="media_detail_uploaded_date">تاریخ بارگذاری</string>
<string name="media_detail_license">مجوز</string>
<string name="media_detail_coordinates">مختصات‌ها</string>
<string name="media_detail_coordinates_empty">ارائه نشده است</string>
<string name="become_a_tester_title">آزمایشگر نسخهٔ آزمایشی شوید</string>
<string name="become_a_tester_description">به گروه آزمایشی ما در گوگل‌پلی بپیوندید و از خصوصیات جدید و خطاهای رفع‌شده زودتر از دیگران برخوردار شوید.</string>
<string name="use_wikidata">استفاده از ویکی‌داده</string>
<string name="use_wikidata_summary">(هشدار: غیرفعال کردن این ممکن است حجم زیادی از اینترنت تلفن همراه را مصرف کند)</string>
<string name="_2fa_code">کد 2FA</string>
<string name="number_of_uploads">محدودیت بارگذاری اخیر من</string>
<string name="maximum_limit">حداکثر محدودیت</string>
<string name="maximum_limit_alert">عدم توانایی در نمایش بیش از ۵۰۰ مورد</string>
<string name="set_limit">تنظیم محدودیت بارگذاری‌های اخیر</string>
<string name="login_failed_2fa_not_supported">تأیید دومرحله‌ای الان پشتیبانی نمی‌شود.</string>
<string name="logout_verification">آیا واقعاً قصد خروج از سامانه را دارید؟</string>
<string name="commons_logo">نشان ویکی‌انبار</string>
<string name="background_image">تصویر پس‌زمینه</string>
<string name="mediaimage_failed">خطای تصویر رسانه</string>
<string name="no_image_found">تصویری یافت نشد</string>
<string name="upload_image">بارگذاری تصویر</string>
<string name="welcome_image_mount_zao">کوه زائو</string>
<string name="welcome_image_llamas">لاما</string>
<string name="welcome_image_rainbow_bridge">رینبو بریج</string>
<string name="welcome_image_tulip">لاله</string>
<string name="welcome_image_no_selfies">سلفی نه</string>
<string name="welcome_image_proprietary">تصویر اختصاصی</string>
<string name="welcome_image_welcome_wikipedia">به ویکی‌پدیا خوش‌آمدید</string>
<string name="welcome_image_welcome_copyright">حق‌تکثیر خوش‌آمدگویی</string>
<string name="welcome_image_sydney_opera_house">خانه اپرای سیدنی</string>
<string name="cancel">لغو</string>
<string name="navigation_drawer_open">باز کردن</string>
<string name="navigation_drawer_close">بستن</string>
<string name="navigation_item_home">خانه</string>
<string name="navigation_item_upload">بارگذاری</string>
<string name="navigation_item_nearby">در نزدیکی</string>
<string name="navigation_item_about">درباره</string>
<string name="navigation_item_settings">تنظیمات</string>
<string name="navigation_item_feedback">بازخورد</string>
<string name="navigation_item_logout">خروج</string>
<string name="navigation_item_info">آموزش</string>
<string name="nearby_needs_permissions">مکان‌های اطراف بدون اجازه دادن به مکان‌یاب مقدور نیست</string>
<string name="no_description_found">توضیحی یافت نشد</string>
<string name="nearby_info_menu_commons_article">صفحهٔ دروند در ویکی‌انبار</string>
<string name="nearby_info_menu_wikidata_article">آیتم ویکی‌داده</string>
<string name="error_while_cache">خطا در زمان دریافت تصاویر</string>
<string name="title_info">عنوانی توصیفی و یکتا برای پرونده که به عنوان نام پرونده در نظر گرفته خواهد شد. ترجیحاً به زبان ساده باشد، می‌توانید فاصله هم به کار ببرید. پسوند پرونده را ننویسید.</string>
<string name="description_info">لطفاً تصویر را تا حد توان شرح دهید. کجا گرفته شده‌است؟ شامل چه چیزی می‌شود؟ لطفاً اشیا یا افراد را شرح دهید. اطلاعاتی که به راحتی قابل مشاهده هستند را صرفه‌نظر کنید. اگر چیزی در تصویر غیر طبیعی به نظر می‌رسد آن را شرح دهید.</string>
</resources>

View file

@ -176,5 +176,5 @@
<string name="navigation_item_info">Bevezető</string>
<string name="no_description_found">nincs leírás</string>
<string name="nearby_info_menu_commons_article" fuzzy="true">Commons szócikk</string>
<string name="nearby_info_menu_wikidata_article">Wikidata tétel</string>
<string name="nearby_info_menu_wikidata_article">Wikidata-elem</string>
</resources>

View file

@ -103,7 +103,8 @@
<string name="welcome_image_llamas">An animal. See [[:d:Q42569|Wikidata item Q42569]] for a list of possible translations.</string>
<string name="welcome_image_rainbow_bridge">A bridge in Japan. See [[:d:Q1046736|Wikidata item Q1046736]] for a list of possible translations.</string>
<string name="welcome_image_tulip">A flower. See [[:d:Q93201|Wikidata item Q93201]] for a list of possible translations.</string>
<string name="welcome_image_welcome_wikipedia">Welcome Wikipedia</string>
<string name="welcome_image_welcome_wikipedia">Description of [https://github.com/commons-app/apps-android-commons/blob/master/app/src/main/res/drawable-hdpi/welcome_wikipedia.png the image] displayed on the welcome screen to illustrate {{msg-wm|Commons-android-strings-welcome wikipedia text}} and {{msg-wm|Commons-android-strings-welcome wikipedia subtext}}.</string>
<string name="welcome_image_welcome_copyright">Description of [https://github.com/commons-app/apps-android-commons/blob/master/app/src/main/res/drawable-hdpi/welcome_copyright.png the image] displayed on the welcome screen to illustrate {{msg-wm|Commons-android-strings-welcome copyright text}} and {{msg-wm|Commons-android-strings-welcome copyright subtext}}.</string>
<string name="welcome_image_sydney_opera_house">A building in the city of Sydney. See [[:d:Q45178|Wikidata item Q45178]] for a list of possible translations.</string>
<string name="cancel">{{Identical|Cancel}}</string>
<string name="navigation_drawer_open">{{Identical|Open}}</string>

View file

@ -41,7 +41,7 @@
<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_blocked">افسوس، ھي واھپ العام تي بندشيل آھي</string>
<string name="login_failed_generic">داخل ٿيڻ ناڪام</string>
<string name="share_upload_button">چاڙھيو</string>
<string name="multiple_share_base_title">ھن سيٽ کي نالو ڏيو</string>

View file

@ -16,6 +16,7 @@
<string name="upload_progress_notification_title_start">اپ لوڈ %1$s شروع تھیندا پئے</string>
<string name="upload_progress_notification_title_in_progress">%1$s اپ لوڈ تھیندا پئے</string>
<string name="upload_progress_notification_title_finishing">%1$s اپ لوڈ پورا تھیندا پئے</string>
<string name="upload_failed_notification_subtitle">ݙیکھݨ کیتے انگل پھیرو</string>
<string name="title_activity_contributions">میݙے حالیہ اپ لوڈ</string>
<string name="contribution_state_queued">قطار وچ</string>
<string name="contribution_state_failed">ناکام</string>
@ -50,6 +51,7 @@
<string name="menu_download">ڈاؤن لوڈ ، لہاوݨ</string>
<string name="preference_license">لائیسنس</string>
<string name="preference_theme">رات آلا مزاج</string>
<string name="preference_theme_summary">گھاٹا تھیم ورتو</string>
<string name="license_name_cc0">سی سی او</string>
<string name="license_name_cc_zero">سی سی زیرو</string>
<string name="tutorial_3_text">براہ مہربانی اپ لوڈ نہ کرو</string>
@ -72,6 +74,7 @@
<string name="media_detail_title">عنوان</string>
<string name="media_detail_media_title">میڈیا دا عنوان</string>
<string name="media_detail_description">تفصیل</string>
<string name="media_detail_uploaded_date">اپ لوڈ تھیوݨ دی تاریخ</string>
<string name="media_detail_license">لائیسنس</string>
<string name="media_detail_coordinates">کوآرڈینیٹ</string>
<string name="media_detail_coordinates_empty">کجھ نی ݙسیا</string>

View file

@ -81,7 +81,7 @@
<string name="title_activity_settings">Налаштування</string>
<string name="title_activity_signup">Зареєструватися</string>
<string name="menu_about">Про програму</string>
<string name="about_license" fuzzy="true">Програмне забезпечення з відкритим кодом випущено під &lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\"&gt;ліцензією Apache в.2&lt;/a&gt;. Вікісховище і його логотип є товарними знаками Фонду Вікімедіа і використовуються за дозволом Фонду Вікімедіа. Ми не користуємось підтримкою Фонду Вікімедіа і не є його афіліатом.</string>
<string name="about_license">Програмне забезпечення з відкритим кодом випущено під &lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\"&gt;ліцензією Apache в.2&lt;/a&gt;. 1$s і його логотип є товарними знаками Фонду Вікімедіа і використовуються за дозволом Фонду Вікімедіа. Ми не користуємось підтримкою Фонду Вікімедіа і не є його афіліатом.</string>
<string name="about_improve">&lt;a href=\"https://github.com/commons-app/apps-android-commons\"&gt;Вихідний код&lt;/a&gt; і &lt;a href=\"https://commons-app.github.io/\"&gt;веб-сайт&lt;/a&gt; на GitHub. Створіть нове &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;завдання на GitHub&lt;/a&gt; для повідомлення про баги або для висловлення пропозицій.</string>
<string name="about_privacy_policy">&lt;a href=\"https://wikimediafoundation.org/wiki/Privacy_policy\"&gt;Політика приватності&lt;/a&gt;</string>
<string name="about_credits">&lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\"&gt;Автори&lt;/a&gt;</string>
@ -94,6 +94,7 @@
<string name="menu_retry_upload">Повторити</string>
<string name="menu_cancel_upload">Скасувати</string>
<string name="share_license_summary">Це зображення буде ліцензоване згідно з %1$s</string>
<string name="media_upload_policy">Подаючи це зображення, я підтверджую, що це моя власна робота, яка не містить захищених авторським правом матеріалів чи селфі, а також відповідає &lt;a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines/uk\"&gt;правилам Вікісховища&lt;/a&gt;.</string>
<string name="menu_download">Завантажити</string>
<string name="preference_license">Ліцензія</string>
<string name="use_previous">Використати попередню назву/опис</string>
@ -196,6 +197,9 @@
<string name="navigation_item_info">Посібник</string>
<string name="nearby_needs_permissions">Місця поблизу неможливо показати без дозволу на визначення місця розташування.</string>
<string name="no_description_found">опис не знайдено</string>
<string name="nearby_info_menu_commons_article" fuzzy="true">Стаття на Вікісховищі</string>
<string name="nearby_info_menu_commons_article">Сторінка файлу у Вікісховищі</string>
<string name="nearby_info_menu_wikidata_article">Елемент Вікіданих</string>
<string name="error_while_cache">Помилка кешування зображень</string>
<string name="title_info">Унікальна описова назва файлу. Ви можете використовувати простий текст з пробілами. Не вказуйте розширення файлу</string>
<string name="description_info">Будь ласка, докладно опишіть файл: де його було зроблено? що на ньому зображено? який контекст? Будь ласка, опишіть об\'єкти чи осіб. Додайте інформацію, яку не можна легко здогадатися, наприклад, пору доби для фотографії пейзажу. Якщо зображено щось незвичайне, постарайтеся пояснити, що робить його незвичайним.</string>
</resources>

View file

@ -39,6 +39,7 @@
<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>
<string name="login_failed_generic">Đăng nhập thất bại</string>
<string name="share_upload_button">Tải lên</string>
<string name="multiple_share_base_title">Đặt tên nhóm này</string>
@ -47,6 +48,7 @@
<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="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">
@ -74,6 +76,7 @@
<string name="menu_retry_upload">Thử lại</string>
<string name="menu_cancel_upload">Hủy bỏ</string>
<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 &lt;a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines?uselang=vi\"&gt;các quy định Wikimedia Commons&lt;/a&gt;.</string>
<string name="menu_download">Tải về</string>
<string name="preference_license">Giấy phép</string>
<string name="use_previous">Sử dụng tiêu đề/miêu tả trước</string>
@ -125,6 +128,7 @@
<string name="location_permission_rationale">Tùy chọn cấp phép: Định vị hiện tại để nhận gợi ý thể loại</string>
<string name="ok">OK</string>
<string name="title_activity_nearby">Nơi Lân cận</string>
<string name="no_nearby">Không tìm thấy nơi lân cận</string>
<string name="warning">Cảnh báo</string>
<string name="file_exists">Tập tin này đã tồn tại ở Commons. Bạn có chắc chắn muốn tiếp tục?</string>
<string name="yes"></string>
@ -141,15 +145,26 @@
<string name="become_a_tester_description">Tham gia kênh thử nghiệm của chúng tôi trên Google Play và nhận các tính năng mới cùng những bản sửa lỗi sớm hơn</string>
<string name="use_wikidata">Dùng Wikidata</string>
<string name="use_wikidata_summary">(Cảnh báo: tắt đi có thể tăng sử dụng dữ liệu di động rất lớn)</string>
<string name="_2fa_code">Mã Hai Nhân tố</string>
<string name="number_of_uploads">Giới hạn Tải lên Gần đây của Tôi</string>
<string name="maximum_limit">Tối đa</string>
<string name="maximum_limit_alert">Không thể hiển thị hơn 500 cái</string>
<string name="set_limit">Đặt Giới hạn Tải lên Gần đây</string>
<string name="login_failed_2fa_not_supported">Hiện chưa hỗ trợ xác thực dùng hai nhân tố.</string>
<string name="logout_verification">Bạn có chắc chắn muốn đăng xuất?</string>
<string name="commons_logo">Biểu trưng Commons</string>
<string name="background_image">Hình nền</string>
<string name="mediaimage_failed">Hình ảnh bị Thất bại</string>
<string name="no_image_found">Không tìm thấy Hình ảnh</string>
<string name="upload_image">Tải lên Hình</string>
<string name="welcome_image_mount_zao">Núi Zaō</string>
<string name="welcome_image_llamas">Lạc đà không bướu</string>
<string name="welcome_image_rainbow_bridge">Cầu Cầu vồng</string>
<string name="welcome_image_tulip">Tu-líp</string>
<string name="welcome_image_no_selfies">Không cho phép Ảnh tự chụp</string>
<string name="welcome_image_proprietary">Hình có Bản quyền</string>
<string name="welcome_image_welcome_wikipedia">Hoan nghênh: Wikipedia</string>
<string name="welcome_image_welcome_copyright">Hoan nghênh: Bản quyền</string>
<string name="welcome_image_sydney_opera_house">Nhà hát Opera Sydney</string>
<string name="cancel">Hủy bỏ</string>
<string name="navigation_drawer_open">Mở</string>
@ -162,5 +177,11 @@
<string name="navigation_item_feedback">Phản hồi</string>
<string name="navigation_item_logout">Đăng xuất</string>
<string name="navigation_item_info">Hướng dẫn</string>
<string name="nearby_needs_permissions">Cần có quyền truy cập vị trí của bạn để hiển thị các địa điểm lân cận</string>
<string name="no_description_found">không tìm thấy miêu tả</string>
<string name="nearby_info_menu_commons_article">Trang tập tin Commons</string>
<string name="nearby_info_menu_wikidata_article">Khoản mục Wikidata</string>
<string name="error_while_cache">Xuất hiện lỗi khi đưa hình ảnh vào vùng nhớ đệm</string>
<string name="title_info">Tên ngắn và duy nhất cho tập tin sẽ được dùng làm tên tập tin. Có thể dùng thuật ngữ bình thường với khoảng cách. Đừng bao gồm phần mở rộng tập tin.</string>
<string name="description_info">Xin vui lòng miêu tả phương tiện càng đầy đủ càng tốt: Chụp ở đâu? Trong hình có gì? Bối cảnh làm sao? Xin vui lòng miêu tả các đối tượng và người trong hình. Cho biết những thông tin khó đoán ra, chẳng hạn giờ trong ngày nếu là phong cảnh. Nếu phương tiện có gì kỳ lạ, xin vui lòng giải thích tại sao nó kỳ lạ.</string>
</resources>

View file

@ -3,7 +3,6 @@
<!-- Some colours are same for dark/light themes. They are written two times in case
we want to change light ones later.
-->
<color name="text_background">#90000000</color>
<color name="item_white_background">#ffffffff</color>
<color name="main_background_dark">#000000</color>
<color name="main_background_light">#ffffff</color>

View file

@ -1,7 +1,4 @@
<resources>
<dimen name="icon_size">120dp</dimen>
<dimen name="tiny_margin">4dp</dimen>
<dimen name="small_margin">8dp</dimen>
<dimen name="bottom_peak_height">240dp</dimen>
<dimen name="overflow_button_dimen">48dp</dimen>
</resources>

View file

@ -0,0 +1,25 @@
package fr.free.nrw.commons;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class MediaTest {
@Test
public void displayTitleShouldStripExtension() {
Media m = new Media("File:Example.jpg");
assertThat(m.getDisplayTitle(), is("Example"));
}
@Test
public void displayTitleShouldUseSpaceForUnderscore() {
Media m = new Media("File:Example 1_2.jpg");
assertThat(m.getDisplayTitle(), is("Example 1 2"));
}
}

View file

@ -0,0 +1,44 @@
package fr.free.nrw.commons;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import java.util.ArrayList;
import java.util.List;
import fr.free.nrw.commons.location.LatLng;
import fr.free.nrw.commons.nearby.NearbyBaseMarker;
import fr.free.nrw.commons.nearby.Place;
import static fr.free.nrw.commons.nearby.NearbyController.loadAttractionsFromLocationToBaseMarkerOptions;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class NearbyControllerTest {
@Test
public void testNullAttractions() {
LatLng location = new LatLng(0, 0, 0);
List<NearbyBaseMarker> options = loadAttractionsFromLocationToBaseMarkerOptions(
location, null, RuntimeEnvironment.application);
assertThat(options.size(), is(0));
}
@Test
public void testEmptyList() {
LatLng location = new LatLng(0, 0, 0);
List<Place> emptyList = new ArrayList<>();
List<NearbyBaseMarker> options = loadAttractionsFromLocationToBaseMarkerOptions(
location, emptyList, RuntimeEnvironment.application);
assertThat(options.size(), is(0));
}
}

View file

@ -0,0 +1,70 @@
package fr.free.nrw.commons;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.net.URLEncoder;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class PageTitleTest {
@Test
public void displayTextShouldNotBeUnderscored() {
assertThat(new PageTitle("Ex_1 ").getDisplayText(),
is("Ex 1"));
}
@Test
public void moreThanTwoColons() {
assertThat(new PageTitle("File:sample:a.jpg").getPrefixedText(),
is("File:Sample:a.jpg"));
}
@Test
public void getTextShouldReturnWithoutNamespace() {
assertThat(new PageTitle("File:sample.jpg").getText(),
is("Sample.jpg"));
}
@Test
public void capitalizeNameAfterNamespace() {
assertThat(new PageTitle("File:sample.jpg").getPrefixedText(),
is("File:Sample.jpg"));
}
@Test
public void prefixedTextShouldBeUnderscored() {
assertThat(new PageTitle("Ex 1 ").getPrefixedText(),
is("Ex_1"));
}
@Test
public void getMobileUriForTest() {
assertThat(new PageTitle("Test").getMobileUri().toString(),
is(BuildConfig.MOBILE_HOME_URL + "Test"));
}
@Test
public void spaceBecomesUnderscoreInUri() {
assertThat(new PageTitle("File:Ex 1.jpg").getCanonicalUri().toString(),
is(BuildConfig.HOME_URL + "File:Ex_1.jpg"));
}
@Test
public void leaveSubpageNamesUncapitalizedInUri() {
assertThat(new PageTitle("User:Ex/subpage").getCanonicalUri().toString(),
is(BuildConfig.HOME_URL + "User:Ex/subpage"));
}
@Test
public void unicodeUri() throws Throwable {
assertThat(new PageTitle("User:例").getCanonicalUri().toString(),
is(BuildConfig.HOME_URL + "User:" + URLEncoder.encode("", "utf-8")));
}
}