Compare commits

...
Sign in to create a new pull request.

20 commits

Author SHA1 Message Date
Alexander Borsuk
a3a0ebbf00 [strings] Regenerated
Signed-off-by: Alexander Borsuk <me@alex.bio>
2024-08-29 12:01:10 +02:00
Alexander Borsuk
bbb2be5a8a [strings] Added missing difficult trails translations
Signed-off-by: Alexander Borsuk <me@alex.bio>
2024-08-29 12:00:44 +02:00
Alexander Borsuk
69c49a89b5 Fix the use of infinity
-ffast-math does not support infinity values

Signed-off-by: Alexander Borsuk <me@alex.bio>
2024-08-29 11:41:28 +02:00
Mikhail Mitrofanov
55a4b68aef Improved calculations for speed limit violations on the road
This PR resolves the issue mentioned in the comment:
https://github.com/organicmaps/organicmaps/issues/8934#issuecomment-2295239837

The error was in the condition:
last.getSpeed() > info.speedLimitMps

Here, a float was compared with a double, leading to incorrect calculations when determining the text color. For example:

(22.375252f > 22.37525199999) = false (expected true)
(22.375252f > 22.375252) = false (this is correct)
(22.375252f > 22.37521) = true (this is correct)
My fix involves converting the numbers to int before comparing them, which eliminates these comparison anomalies.

Signed-off-by: Mikhail Mitrofanov <mk.mitrofanov@outlook.com>
2024-08-29 11:39:57 +02:00
918ed8bc33 [Android] hide UI in big direction mode
Signed-off-by: Harry Bond <me@hbond.xyz>
2024-08-29 11:35:31 +02:00
9fbb8532d3 [android] Add "Open in another app" button
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2024-08-29 11:35:06 +02:00
e0874392c8 [strings] Regenerated
Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
2024-08-29 11:35:06 +02:00
Isira Seneviratne
fb7e9e9c6b [android] Simplify TTS code using AudioManagerCompat
Signed-off-by: Isira Seneviratne <isirasen96@gmail.com>
2024-08-29 11:34:34 +02:00
parneet-guraya
861d780e7e Use new result apis
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2024-08-29 11:32:59 +02:00
Viktor Govako
a460cdc470 [planet] New data from 240824.
Signed-off-by: Viktor Govako <viktor.govako@gmail.com>
2024-08-29 11:32:42 +02:00
David Martinez
5a2b17b60c [editor][ios] Add outdoor_seating to editor
Signed-off-by: David Martinez <47610359+dvdmrtnz@users.noreply.github.com>
2024-08-29 11:32:19 +02:00
David Martinez
1b1c98191b [editor][ios] Add self_service to editor
Signed-off-by: David Martinez <47610359+dvdmrtnz@users.noreply.github.com>
2024-08-29 11:32:19 +02:00
David Martinez
cb828cdedd [strings] Add self_service string to iOS
Signed-off-by: David Martinez <47610359+dvdmrtnz@users.noreply.github.com>
2024-08-29 11:32:19 +02:00
Arthur-GYT
45ad713590 [editor] Fix bug for outdoor_seating key
Signed-off-by: Arthur-GYT <a.gayot@posteo.com>
2024-08-29 11:32:01 +02:00
Alexander Borsuk
774cce2f2a [android] Update dependencies
Signed-off-by: Alexander Borsuk <me@alex.bio>
2024-08-29 11:31:46 +02:00
Alexander Borsuk
5afcbca474 [android] Update gradle plugin to 8.5.2
Signed-off-by: Alexander Borsuk <me@alex.bio>
2024-08-29 11:31:46 +02:00
Alexander Borsuk
5adde3a170 [android] Update NDK to the latest LTS version 27.0.12077973
Signed-off-by: Alexander Borsuk <me@alex.bio>
2024-08-29 11:31:46 +02:00
Alexander Borsuk
1236f9edf4 [android] Updated Android to 15 (API 35)
Signed-off-by: Alexander Borsuk <me@alex.bio>
2024-08-29 11:31:19 +02:00
Alexander Borsuk
b0872fe7d2 [api] Fixed wrong geo url parsing with &z= in the host name instead of ?z=
Signed-off-by: Alexander Borsuk <me@alex.bio>
2024-08-29 11:30:33 +02:00
zyphlar
c2cf5647a7 Add recalculating TTS announcement
Signed-off-by: zyphlar <zyphlar@users.noreply.github.com>
2024-08-29 11:29:49 +02:00
172 changed files with 3307 additions and 2707 deletions

View file

@ -22,7 +22,7 @@ buildscript {
googleFirebaseServicesDefault
dependencies {
classpath 'com.android.tools.build:gradle:8.5.1'
classpath 'com.android.tools.build:gradle:8.5.2'
if (googleFirebaseServicesEnabled) {
println('Building with Google Firebase Services')
@ -100,7 +100,7 @@ android {
// All properties are read from gradle.properties file
compileSdk propCompileSdkVersion.toInteger()
ndkVersion '26.3.11579264'
ndkVersion '27.0.12077973'
defaultConfig {
// Default package name is taken from the manifest and should be app.organicmaps
@ -365,7 +365,7 @@ dependencies {
// Google Firebase Services
if (googleFirebaseServicesEnabled) {
// Import the BoM for the Firebase platform
implementation platform('com.google.firebase:firebase-bom:33.1.2')
implementation platform('com.google.firebase:firebase-bom:33.2.0')
// Add the dependencies for the Crashlytics and Analytics libraries
// When using the BoM, you don't specify versions in Firebase library dependencies
implementation 'com.google.firebase:firebase-crashlytics'
@ -377,21 +377,22 @@ dependencies {
// We don't use Kotlin, but some dependencies are actively using it.
// See https://stackoverflow.com/a/75719642
implementation 'androidx.core:core:1.13.1'
implementation(platform('org.jetbrains.kotlin:kotlin-bom:2.0.0'))
implementation 'androidx.annotation:annotation:1.8.1'
implementation(platform('org.jetbrains.kotlin:kotlin-bom:2.0.20'))
implementation 'androidx.annotation:annotation:1.8.2'
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'androidx.car.app:app:1.7.0-beta01'
implementation 'androidx.car.app:app-projected:1.7.0-beta01'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.fragment:fragment:1.8.2'
implementation 'androidx.media:media:1.7.0'
implementation 'androidx.preference:preference:1.2.1'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation 'androidx.work:work-runtime:2.9.0'
implementation 'androidx.work:work-runtime:2.9.1'
implementation 'androidx.lifecycle:lifecycle-process:2.8.4'
implementation 'com.google.android.material:material:1.12.0'
// Fix for app/organicmaps/util/FileUploadWorker.java:14: error: cannot access ListenableFuture
// https://github.com/organicmaps/organicmaps/issues/6106
implementation 'com.google.guava:guava:33.2.1-android'
implementation 'com.google.guava:guava:33.3.0-android'
implementation 'com.github.devnullorthrow:MPAndroidChart:3.2.0-alpha'
implementation 'net.jcip:jcip-annotations:1.0'

View file

@ -56,6 +56,8 @@
#include "base/math.hpp"
#include "base/sunrise_sunset.hpp"
#include "ge0/url_generator.hpp"
#include "3party/open-location-code/openlocationcode.h"
#include <memory>
@ -954,7 +956,16 @@ Java_app_organicmaps_Framework_nativeGetGe0Url(JNIEnv * env, jclass, jdouble lat
{
::Framework * fr = frm();
double const scale = (zoomLevel > 0 ? zoomLevel : fr->GetDrawScale());
string const url = fr->CodeGe0url(lat, lon, scale, jni::ToNativeString(env, name));
string const url = ge0::GenerateShortShowMapUrl(lat, lon, scale, jni::ToNativeString(env, name));
return jni::ToJavaString(env, url);
}
JNIEXPORT jstring JNICALL
Java_app_organicmaps_Framework_nativeGetGeoUri(JNIEnv * env, jclass, jdouble lat, jdouble lon, jdouble zoomLevel, jstring name)
{
::Framework * fr = frm();
double const scale = (zoomLevel > 0 ? zoomLevel : fr->GetDrawScale());
string const url = ge0::GenerateGeoUri(lat, lon, scale, jni::ToNativeString(env, name));
return jni::ToJavaString(env, url);
}

View file

@ -194,6 +194,7 @@ public class Framework
public static native String nativeFormatSpeed(double speed);
public static native String nativeGetGe0Url(double lat, double lon, double zoomLevel, String name);
public static native String nativeGetGeoUri(double lat, double lon, double zoomLevel, String name);
public static native String nativeGetAddress(double lat, double lon);

View file

@ -156,7 +156,11 @@ public class MwmActivity extends BaseMwmFragmentActivity
EditorHostFragment.class.getName(),
ReportFragment.class.getName() };
public static final int REQ_CODE_DRIVING_OPTIONS = 6;
public final ActivityResultLauncher<Intent> startDrivingOptionsForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult ->
{
if( activityResult.getResultCode() == Activity.RESULT_OK)
rebuildLastRoute();
});
private static final String MAIN_MENU_ID = "MAIN_MENU_BOTTOM_SHEET";
private static final String LAYERS_MENU_ID = "LAYERS_MENU_BOTTOM_SHEET";
@ -624,7 +628,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
if (!mIsTabletLayout)
{
mRoutingPlanInplaceController = new RoutingPlanInplaceController(this, this, this);
mRoutingPlanInplaceController = new RoutingPlanInplaceController(this, startDrivingOptionsForResult, this, this);
removeCurrentFragment(false);
}
@ -701,6 +705,16 @@ public class MwmActivity extends BaseMwmFragmentActivity
}
}
/** Hides/shows UI while keeping state
* @param isUiHidden True to hide the UI
**/
public void hideOrShowUIWithoutClosingPlacePage(boolean isUiHidden)
{
// Used instead of closeBottomSheet to preserve state and hide instantly
UiUtils.showIf(!isUiHidden, findViewById(R.id.place_page_container_fragment));
mMapButtonsViewModel.setButtonsHidden(isUiHidden);
}
private void showSearchToolbar()
{
mSearchController.show();
@ -1030,18 +1044,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
mPowerSaveDisclaimerState = PowerSaveDisclaimerState.SHOWN;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK)
return;
if (requestCode == REQ_CODE_DRIVING_OPTIONS)
rebuildLastRoute();
}
private void rebuildLastRoute()
{
RoutingController.get().attach(this);
@ -1695,7 +1697,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
mAlertDialog = new MaterialAlertDialogBuilder(this, R.style.MwmTheme_AlertDialog)
.setTitle(R.string.unable_to_calc_alert_title)
.setMessage(R.string.unable_to_calc_alert_subtitle)
.setPositiveButton(R.string.settings, (dialog, which) -> DrivingOptionsActivity.start(this))
.setPositiveButton(R.string.settings, (dialog, which) -> DrivingOptionsActivity.start(this, startDrivingOptionsForResult))
.setNegativeButton(R.string.cancel, null)
.setOnDismissListener(dialog -> mAlertDialog = null)
.show();

View file

@ -13,6 +13,7 @@ import android.view.View;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.CallSuper;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
@ -55,9 +56,6 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment<Bookmark
{
private static final String TAG = BookmarkCategoriesFragment.class.getSimpleName();
static final int REQ_CODE_DELETE_CATEGORY = 102;
static final int REQ_CODE_IMPORT_DIRECTORY = 103;
private static final int MAX_CATEGORY_NAME_LENGTH = 60;
public static final String BOOKMARKS_CATEGORIES_MENU_ID = "BOOKMARKS_CATEGORIES_BOTTOM_SHEET";
@ -73,6 +71,22 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment<Bookmark
@NonNull
private DataChangedListener mCategoriesAdapterObserver;
private final ActivityResultLauncher<Intent> startBookmarkListForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult -> {
if( activityResult.getResultCode() == Activity.RESULT_OK)
onDeleteActionSelected(getSelectedCategory());
});
private final ActivityResultLauncher<Intent> startImportDirectoryForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult ->
{
if( activityResult.getResultCode() == Activity.RESULT_OK)
onImportDirectoryResult(activityResult.getData());
});
private final ActivityResultLauncher<Intent> startBookmarkSettingsForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult -> {
// not handled at the moment
});
@Override
@LayoutRes
protected int getLayoutRes()
@ -254,14 +268,14 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment<Bookmark
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
intent.putExtra(DocumentsContract.EXTRA_EXCLUDE_SELF, true);
startActivityForResult(intent, REQ_CODE_IMPORT_DIRECTORY);
startImportDirectoryForResult.launch(intent);
}
@Override
public void onItemClick(@NonNull View v, @NonNull BookmarkCategory category)
{
mSelectedCategory = category;
BookmarkListActivity.startForResult(this, category);
BookmarkListActivity.startForResult(this, startBookmarkListForResult, category);
}
@Override
@ -289,54 +303,42 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment<Bookmark
private void onSettingsActionSelected(@NonNull BookmarkCategory category)
{
BookmarkCategorySettingsActivity.startForResult(this, category);
BookmarkCategorySettingsActivity.startForResult(this, startBookmarkSettingsForResult, category);
}
@Override
public final void onActivityResult(int requestCode, int resultCode, Intent data)
private void onImportDirectoryResult(Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK)
return;
switch (requestCode)
{
case REQ_CODE_DELETE_CATEGORY -> onDeleteActionSelected(getSelectedCategory());
case REQ_CODE_IMPORT_DIRECTORY ->
{
if (data == null)
throw new AssertionError("Data is null");
if (data == null)
throw new AssertionError("Data is null");
final Context context = requireActivity();
final Uri rootUri = data.getData();
final ProgressDialog dialog = new ProgressDialog(context, R.style.MwmTheme_ProgressDialog);
dialog.setMessage(getString(R.string.wait_several_minutes));
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setIndeterminate(true);
dialog.setCancelable(false);
dialog.show();
Logger.d(TAG, "Importing bookmarks from " + rootUri);
MwmApplication app = MwmApplication.from(context);
final File tempDir = new File(StorageUtils.getTempPath(app));
final ContentResolver resolver = context.getContentResolver();
ThreadPool.getStorage().execute(() -> {
AtomicInteger found = new AtomicInteger(0);
StorageUtils.listContentProviderFilesRecursively(
final Context context = requireActivity();
final Uri rootUri = data.getData();
final ProgressDialog dialog = new ProgressDialog(context, R.style.MwmTheme_ProgressDialog);
dialog.setMessage(getString(R.string.wait_several_minutes));
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setIndeterminate(true);
dialog.setCancelable(false);
dialog.show();
Logger.d(TAG, "Importing bookmarks from " + rootUri);
MwmApplication app = MwmApplication.from(context);
final File tempDir = new File(StorageUtils.getTempPath(app));
final ContentResolver resolver = context.getContentResolver();
ThreadPool.getStorage().execute(() -> {
AtomicInteger found = new AtomicInteger(0);
StorageUtils.listContentProviderFilesRecursively(
resolver, rootUri, uri -> {
if (BookmarkManager.INSTANCE.importBookmarksFile(resolver, uri, tempDir))
found.incrementAndGet();
});
UiThread.run(() -> {
if (dialog.isShowing())
dialog.dismiss();
int found_val = found.get();
String message = context.getResources().getQuantityString(
UiThread.run(() -> {
if (dialog.isShowing())
dialog.dismiss();
int found_val = found.get();
String message = context.getResources().getQuantityString(
R.plurals.bookmarks_detect_message, found_val, found_val);
Toast.makeText(requireContext(), message, Toast.LENGTH_LONG).show();
});
});
}
default -> throw new AssertionError("Invalid requestCode: " + requestCode);
}
Toast.makeText(requireContext(), message, Toast.LENGTH_LONG).show();
});
});
}
@Override

View file

@ -2,6 +2,7 @@ package app.organicmaps.bookmarks;
import android.content.Intent;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
@ -11,7 +12,6 @@ import app.organicmaps.bookmarks.data.BookmarkCategory;
public class BookmarkCategorySettingsActivity extends BaseMwmFragmentActivity
{
public static final int REQUEST_CODE = 107;
public static final String EXTRA_BOOKMARK_CATEGORY = "bookmark_category";
@Override
@ -32,11 +32,11 @@ public class BookmarkCategorySettingsActivity extends BaseMwmFragmentActivity
return BookmarkCategorySettingsFragment.class;
}
public static void startForResult(@NonNull Fragment fragment,
public static void startForResult(@NonNull Fragment fragment, ActivityResultLauncher<Intent> startBookmarkSettingsForResult,
@NonNull BookmarkCategory category)
{
android.content.Intent intent = new Intent(fragment.requireActivity(), BookmarkCategorySettingsActivity.class)
.putExtra(EXTRA_BOOKMARK_CATEGORY, category);
fragment.startActivityForResult(intent, REQUEST_CODE);
startBookmarkSettingsForResult.launch(intent);
}
}

View file

@ -3,6 +3,7 @@ package app.organicmaps.bookmarks;
import android.content.Intent;
import android.os.Bundle;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.StyleRes;
@ -57,11 +58,11 @@ public class BookmarkListActivity extends BaseToolbarActivity
return R.layout.bookmarks_activity;
}
static void startForResult(@NonNull Fragment fragment, @NonNull BookmarkCategory category)
static void startForResult(@NonNull Fragment fragment, ActivityResultLauncher<Intent> startBookmarkListForResult, @NonNull BookmarkCategory category)
{
Bundle args = new Bundle();
Intent intent = new Intent(fragment.requireActivity(), BookmarkListActivity.class);
intent.putExtra(BookmarksListFragment.EXTRA_CATEGORY, category);
fragment.startActivityForResult(intent, BookmarkCategoriesFragment.REQ_CODE_DELETE_CATEGORY);
startBookmarkListForResult.launch(intent);
}
}

View file

@ -12,6 +12,7 @@ import android.view.View;
import android.view.ViewGroup;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@ -66,6 +67,15 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
private static final String OPTIONS_MENU_ID = "OPTIONS_MENU_BOTTOM_SHEET";
private ActivityResultLauncher<SharingUtils.SharingIntent> shareLauncher;
private final ActivityResultLauncher<Intent> startBookmarkListForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult -> {
System.out.println("resultCode: " + activityResult.getResultCode());
handleActivityResult();
});
private final ActivityResultLauncher<Intent> startBookmarkSettingsForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult -> {
System.out.println("resultCode: " + activityResult.getResultCode());
handleActivityResult();
});
@SuppressWarnings("NotNullFieldNotInitialized")
@NonNull
@ -132,7 +142,9 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
BookmarkCollectionAdapter adapter = new BookmarkCollectionAdapter(getCategoryOrThrow(),
mCategoryItems);
adapter.setOnClickListener((v, item) -> BookmarkListActivity.startForResult(this, item));
adapter.setOnClickListener((v, item) -> {
BookmarkListActivity.startForResult(this, startBookmarkListForResult, item);
});
return adapter;
}
@ -697,7 +709,7 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
private void onSettingsOptionSelected()
{
BookmarkCategorySettingsActivity.startForResult(this, mCategoryDataSource.getData());
BookmarkCategorySettingsActivity.startForResult(this, startBookmarkSettingsForResult, mCategoryDataSource.getData());
}
private void onDeleteOptionSelected()
@ -745,11 +757,8 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
BookmarksSharingHelper.INSTANCE.onPreparedFileForSharing(requireActivity(), shareLauncher, result);
}
@Override
@SuppressWarnings("deprecation") // https://github.com/organicmaps/organicmaps/issues/3630
public void onActivityResult(int requestCode, int resultCode, Intent data)
private void handleActivityResult()
{
super.onActivityResult(requestCode, resultCode, data);
getAdapter().notifyDataSetChanged();
ActionBar actionBar = ((AppCompatActivity) requireActivity()).getSupportActionBar();
actionBar.setTitle(mCategoryDataSource.getData().getName());

View file

@ -5,6 +5,8 @@ import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.CallSuper;
import androidx.annotation.Keep;
import androidx.annotation.NonNull;
@ -38,6 +40,8 @@ public class DownloaderFragment extends BaseMwmRecyclerFragment<DownloaderAdapte
private int mSubscriberSlot;
final ActivityResultLauncher<Intent> startVoiceRecognitionForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult -> mToolbarController.onVoiceRecognitionResult(activityResult));
private final RecyclerView.OnScrollListener mScrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState)
@ -206,13 +210,6 @@ public class DownloaderFragment extends BaseMwmRecyclerFragment<DownloaderAdapte
return mAdapter;
}
@Override
@SuppressWarnings("deprecation") // https://github.com/organicmaps/organicmaps/issues/3630
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
mToolbarController.onActivityResult(requestCode, resultCode, data);
}
@NonNull
@Override

View file

@ -58,10 +58,9 @@ class DownloaderToolbarController extends SearchToolbarController
}
@Override
@SuppressWarnings("deprecated") // https://github.com/organicmaps/organicmaps/issues/3630
protected void startVoiceRecognition(Intent intent, int code)
protected void startVoiceRecognition(Intent intent)
{
mFragment.startActivityForResult(intent, code);
mFragment.startVoiceRecognitionForResult.launch(intent);
}
@Override

View file

@ -7,6 +7,7 @@ import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;
@ -103,6 +104,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
private SwitchCompat mWifi;
private TextView mSelfService;
private SwitchCompat mOutdoorSeating;
private boolean hasMOutdoorSeatingChanges = false;
// Default Metadata entries.
private static final class MetadataEntry
@ -221,7 +223,10 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
Editor.nativeSetHasWifi(mWifi.isChecked());
Editor.nativeSetNames(mParent.getNamesAsArray());
Editor.nativeSetSwitchInput(Metadata.MetadataType.FMD_OUTDOOR_SEATING.toInt(), mOutdoorSeating.isChecked(), "yes", "no");
if(hasMOutdoorSeatingChanges)
{
Editor.nativeSetSwitchInput(Metadata.MetadataType.FMD_OUTDOOR_SEATING.toInt(), mOutdoorSeating.isChecked(), "yes", "no");
}
for (var e : mMetadata.entrySet())
Editor.nativeSetMetadata(e.getKey().toInt(), e.getValue().mEdit.getText().toString());
@ -467,6 +472,13 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
View blockOutdoorSeating = view.findViewById(R.id.block_outdoor_seating);
mOutdoorSeating = view.findViewById(R.id.sw__outdoor_seating);
blockOutdoorSeating.setOnClickListener(this);
mOutdoorSeating.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
hasMOutdoorSeatingChanges = true;
}
});
View blockOpeningHours = view.findViewById(R.id.block_opening_hours);
mEditOpeningHours = blockOpeningHours.findViewById(R.id.edit_opening_hours);
mEditOpeningHours.setOnClickListener(this);

View file

@ -1,12 +1,14 @@
package app.organicmaps.routing;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.DrawableRes;
import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
@ -77,6 +79,7 @@ public class RoutingPlanController extends ToolbarController
}
RoutingPlanController(View root, Activity activity,
ActivityResultLauncher<Intent> startDrivingOptionsForResult,
@NonNull RoutingPlanInplaceController.RoutingPlanListener routingPlanListener,
@Nullable RoutingBottomMenuListener listener)
{
@ -102,7 +105,7 @@ public class RoutingPlanController extends ToolbarController
View btn = mDrivingOptionsBtnContainer.findViewById(R.id.driving_options_btn);
mDrivingOptionsImage = mFrame.findViewById(R.id.driving_options_btn_img);
btn.setOnClickListener(v -> DrivingOptionsActivity.start(requireActivity()));
btn.setOnClickListener(v -> DrivingOptionsActivity.start(requireActivity(), startDrivingOptionsForResult));
mDriverOptionsLayoutListener = new SelfTerminatedDrivingOptionsLayoutListener();
mAnimToggle = MwmApplication.from(activity.getApplicationContext())
.getResources().getInteger(R.integer.anim_default);

View file

@ -7,9 +7,9 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;
import app.organicmaps.Framework;
import app.organicmaps.MwmActivity;
import app.organicmaps.R;
import app.organicmaps.base.BaseMwmFragment;
@ -21,15 +21,9 @@ public class RoutingPlanFragment extends BaseMwmFragment
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
final FragmentActivity activity = requireActivity();
final MwmActivity activity = (MwmActivity) requireActivity();
View res = inflater.inflate(R.layout.fragment_routing, container, false);
RoutingBottomMenuListener listener = null;
if (activity instanceof RoutingBottomMenuListener)
listener = (RoutingBottomMenuListener) activity;
RoutingPlanInplaceController.RoutingPlanListener planListener =
(RoutingPlanInplaceController.RoutingPlanListener) activity;
mPlanController = new RoutingPlanController(res, activity, planListener, listener);
mPlanController = new RoutingPlanController(res, activity, activity.startDrivingOptionsForResult, activity, activity);
return res;
}

View file

@ -2,8 +2,10 @@ package app.organicmaps.routing;
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.content.Intent;
import android.os.Bundle;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@ -20,10 +22,11 @@ public class RoutingPlanInplaceController extends RoutingPlanController
private Animator mAnimator;
public RoutingPlanInplaceController(@NonNull MwmActivity activity,
ActivityResultLauncher<Intent> startDrivingOptionsForResult,
@NonNull RoutingPlanListener routingPlanListener,
@NonNull RoutingBottomMenuListener listener)
{
super(activity.findViewById(R.id.routing_plan_frame), activity, routingPlanListener, listener);
super(activity.findViewById(R.id.routing_plan_frame), activity, startDrivingOptionsForResult, routingPlanListener, listener);
mRoutingPlanListener = routingPlanListener;
}

View file

@ -10,6 +10,8 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@ -112,10 +114,9 @@ public class SearchFragment extends BaseMwmFragment
}
@Override
@SuppressWarnings("deprecation") // https://github.com/organicmaps/organicmaps/issues/3630
protected void startVoiceRecognition(Intent intent, int code)
protected void startVoiceRecognition(Intent intent)
{
startActivityForResult(intent, code);
startVoiceRecognitionForResult.launch(intent);
}
@Override
@ -167,6 +168,11 @@ public class SearchFragment extends BaseMwmFragment
private String mInitialLocale;
private boolean mInitialSearchOnMap = false;
private final ActivityResultLauncher<Intent> startVoiceRecognitionForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult ->
{
mToolbarController.onVoiceRecognitionResult(activityResult);
});
private final LocationListener mLocationListener = new LocationListener()
{
@Override
@ -521,14 +527,6 @@ public class SearchFragment extends BaseMwmFragment
mToolbarController.showProgress(true);
}
@Override
@SuppressWarnings("deprecation") // https://github.com/organicmaps/organicmaps/issues/3630
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
mToolbarController.onActivityResult(requestCode, resultCode, data);
}
@Override
public boolean onBackPressed()
{

View file

@ -3,10 +3,9 @@ package app.organicmaps.settings;
import android.app.Activity;
import android.content.Intent;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import app.organicmaps.MwmActivity;
import app.organicmaps.base.BaseMwmFragmentActivity;
public class DrivingOptionsActivity extends BaseMwmFragmentActivity
@ -17,9 +16,9 @@ public class DrivingOptionsActivity extends BaseMwmFragmentActivity
return DrivingOptionsFragment.class;
}
public static void start(@NonNull Activity activity)
public static void start(@NonNull Activity activity, ActivityResultLauncher<Intent> startDrivingOptionsForResult)
{
Intent intent = new Intent(activity, DrivingOptionsActivity.class);
activity.startActivityForResult(intent, MwmActivity.REQ_CODE_DRIVING_OPTIONS);
startDrivingOptionsForResult.launch(intent);
}
}

View file

@ -1,5 +1,6 @@
package app.organicmaps.settings;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.content.res.Configuration;
@ -11,6 +12,8 @@ import android.text.style.ForegroundColorSpan;
import android.view.View;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
@ -35,7 +38,6 @@ import java.util.Map;
public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment
{
private static final int REQUEST_INSTALL_DATA = 1;
@NonNull
@SuppressWarnings("NotNullFieldNotInitialized")
@ -67,6 +69,14 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment
private LanguageData mCurrentLanguage;
private String mSelectedLanguage;
private final ActivityResultLauncher<Intent> startInstallDataIntentForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), activityResult -> {
if(activityResult.getResultCode() == Activity.RESULT_OK)
{
onInstallDataResult();
}
});
private final Preference.OnPreferenceChangeListener mEnabledListener = (preference, newValue) -> {
final boolean set = (Boolean) newValue;
if (!set)
@ -107,8 +117,7 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment
if (lang.downloaded)
setLanguage(lang);
else
UiUtils.startActivityForResult(VoiceInstructionsSettingsFragment.this,
new Intent(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA), REQUEST_INSTALL_DATA);
UiUtils.startActivityForResult(startInstallDataIntentForResult, new Intent(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA));
return false;
};
@ -181,21 +190,13 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment
updateTts();
}
@Override
@SuppressWarnings("deprecation") // https://github.com/organicmaps/organicmaps/issues/3630
public void onActivityResult(int requestCode, int resultCode, Intent data)
private void onInstallDataResult()
{
// Do not check resultCode here as it is always RESULT_CANCELED
super.onActivityResult(requestCode, resultCode, data);
updateTts();
if (requestCode == REQUEST_INSTALL_DATA)
{
updateTts();
LanguageData lang = mLanguages.get(mSelectedLanguage);
if (lang != null && lang.downloaded)
setLanguage(lang);
}
LanguageData lang = mLanguages.get(mSelectedLanguage);
if (lang != null && lang.downloaded)
setLanguage(lang);
}
private void enableListeners(boolean enable)

View file

@ -1,64 +0,0 @@
package app.organicmaps.sound;
import android.content.Context;
import android.media.AudioAttributes;
import android.media.AudioFocusRequest;
import android.media.AudioManager;
import android.os.Build;
import androidx.annotation.Nullable;
import static android.media.AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK;
public class AudioFocusManager
{
@Nullable
private AudioManager mAudioManager = null;
@Nullable
private AudioManager.OnAudioFocusChangeListener mOnFocusChange = null;
@Nullable
private AudioFocusRequest mAudioFocusRequest = null;
public AudioFocusManager(@Nullable Context context)
{
if (context != null)
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if (Build.VERSION.SDK_INT < 26)
mOnFocusChange = focusGain -> {};
else
mAudioFocusRequest = new AudioFocusRequest.Builder(AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK).setAudioAttributes(
new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_ASSISTANCE_NAVIGATION_GUIDANCE)
.setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
.build()
).build();
}
public boolean requestAudioFocus()
{
boolean isMusicActive = false;
if (mAudioManager != null)
{
isMusicActive = mAudioManager.isMusicActive();
if (Build.VERSION.SDK_INT < 26)
mAudioManager.requestAudioFocus(mOnFocusChange, AudioManager.STREAM_VOICE_CALL, AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
else
mAudioManager.requestAudioFocus(mAudioFocusRequest);
}
return isMusicActive;
}
public void releaseAudioFocus()
{
if (mAudioManager != null)
{
if (Build.VERSION.SDK_INT < 26)
mAudioManager.abandonAudioFocus(mOnFocusChange);
else
mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest);
}
}
}

View file

@ -2,6 +2,7 @@ package app.organicmaps.sound;
import android.content.Context;
import android.content.res.Resources;
import android.media.AudioManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@ -11,6 +12,11 @@ import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.media.AudioAttributesCompat;
import androidx.media.AudioFocusRequestCompat;
import androidx.media.AudioManagerCompat;
import app.organicmaps.MwmApplication;
import app.organicmaps.R;
import app.organicmaps.util.Config;
@ -47,7 +53,18 @@ public enum TtsPlayer
private TextToSpeech mTts;
private boolean mInitializing;
private AudioFocusManager mAudioFocusManager;
private final AudioFocusRequestCompat mAudioFocusRequest =
new AudioFocusRequestCompat.Builder(AudioManagerCompat.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK)
.setAudioAttributes(
new AudioAttributesCompat.Builder()
.setUsage(AudioAttributesCompat.USAGE_ASSISTANCE_NAVIGATION_GUIDANCE)
.setContentType(AudioAttributesCompat.CONTENT_TYPE_SPEECH)
.build()
)
.setOnAudioFocusChangeListener(focusChange -> {})
.build();
private AudioManager mAudioManager;
private final Bundle mParams = new Bundle();
@ -162,27 +179,27 @@ public enum TtsPlayer
mTts.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) {
mAudioFocusManager.requestAudioFocus();
AudioManagerCompat.requestAudioFocus(mAudioManager, mAudioFocusRequest);
}
@Override
public void onDone(String utteranceId) {
mAudioFocusManager.releaseAudioFocus();
AudioManagerCompat.abandonAudioFocusRequest(mAudioManager, mAudioFocusRequest);
}
@Override
@SuppressWarnings("deprecated") // abstract method must be implemented
public void onError(String utteranceId)
{
mAudioFocusManager.releaseAudioFocus();
AudioManagerCompat.abandonAudioFocusRequest(mAudioManager, mAudioFocusRequest);
}
@Override
public void onError(String utteranceId, int errorCode) {
mAudioFocusManager.releaseAudioFocus();
AudioManagerCompat.abandonAudioFocusRequest(mAudioManager, mAudioFocusRequest);
}
});
mAudioFocusManager = new AudioFocusManager(context);
mAudioManager = ContextCompat.getSystemService(context, AudioManager.class);
mParams.putFloat(TextToSpeech.Engine.KEY_PARAM_VOLUME, Config.TTS.getVolume());
mInitializing = false;
}));
@ -198,11 +215,10 @@ public enum TtsPlayer
if (Config.TTS.isEnabled())
try
{
boolean isMusicActive = mAudioFocusManager.requestAudioFocus();
if (isMusicActive)
delayHandler.postDelayed(() -> mTts.speak(textToSpeak, TextToSpeech.QUEUE_ADD, mParams, textToSpeak), TTS_SPEAK_DELAY_MILLIS);
else
mTts.speak(textToSpeak, TextToSpeech.QUEUE_ADD, mParams, textToSpeak);
final boolean isMusicActive = mAudioManager.isMusicActive();
AudioManagerCompat.requestAudioFocus(mAudioManager, mAudioFocusRequest);
final long delay = isMusicActive ? TTS_SPEAK_DELAY_MILLIS : 0;
delayHandler.postDelayed(() -> mTts.speak(textToSpeak, TextToSpeech.QUEUE_ADD, mParams, textToSpeak), delay);
}
catch (IllegalArgumentException e)
{
@ -222,7 +238,7 @@ public enum TtsPlayer
if (isReady())
try
{
mAudioFocusManager.releaseAudioFocus();
AudioManagerCompat.abandonAudioFocusRequest(mAudioManager, mAudioFocusRequest);
mTts.stop();
}
catch (IllegalArgumentException e)

View file

@ -18,6 +18,8 @@ import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.AnyRes;
import androidx.annotation.AttrRes;
import androidx.annotation.ColorInt;
@ -32,7 +34,6 @@ import androidx.core.graphics.Insets;
import androidx.core.view.WindowCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.core.view.WindowInsetsControllerCompat;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.textfield.TextInputLayout;
@ -384,10 +385,9 @@ public final class UiUtils
}
}
@SuppressWarnings("deprecation") // https://github.com/organicmaps/organicmaps/issues/3630
public static void startActivityForResult(@NonNull Fragment fragment, @NonNull Intent intent, int requestCode)
public static void startActivityForResult(ActivityResultLauncher<Intent> startForResult, @NonNull Intent intent)
{
fragment.startActivityForResult(intent, requestCode);
startForResult.launch(intent);
}
// utility class

View file

@ -10,6 +10,7 @@ import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import androidx.activity.result.ActivityResult;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
@ -22,7 +23,6 @@ import com.google.android.material.textfield.TextInputEditText;
public class SearchToolbarController extends ToolbarController implements View.OnClickListener
{
private static final int REQUEST_VOICE_RECOGNITION = 0xCA11;
@Nullable
private final View mToolbarContainer;
@NonNull
@ -107,7 +107,7 @@ public class SearchToolbarController extends ToolbarController implements View.O
clear();
}
protected void startVoiceRecognition(Intent intent, int code)
protected void startVoiceRecognition(Intent intent)
{
throw new RuntimeException("To be used startVoiceRecognition() must be implemented by descendant class");
}
@ -130,7 +130,7 @@ public class SearchToolbarController extends ToolbarController implements View.O
try
{
startVoiceRecognition(InputUtils.createIntentForVoiceRecognition(
requireActivity().getString(getVoiceInputPrompt())), REQUEST_VOICE_RECOGNITION);
requireActivity().getString(getVoiceInputPrompt())));
}
catch (ActivityNotFoundException e)
{
@ -210,14 +210,18 @@ public class SearchToolbarController extends ToolbarController implements View.O
UiUtils.showIf(show, mSearchContainer);
}
public void onActivityResult(int requestCode, int resultCode, Intent data)
public void onVoiceRecognitionResult(ActivityResult activityResult)
{
if (requestCode == REQUEST_VOICE_RECOGNITION && resultCode == Activity.RESULT_OK)
{
String result = InputUtils.getBestRecognitionResult(data);
if (!TextUtils.isEmpty(result))
setQuery(result);
}
if(activityResult.getResultCode() == Activity.RESULT_OK)
{
if (activityResult.getData() == null)
{
return;
}
String recognitionResult = InputUtils.getBestRecognitionResult(activityResult.getData());
if (!TextUtils.isEmpty(recognitionResult))
setQuery(recognitionResult);
}
}
public void setHint(@StringRes int hint)

View file

@ -222,7 +222,7 @@ public class NavMenu
else
mSpeedValue.setText(speedAndUnits.first);
if (info.speedLimitMps > 0.0 && last.getSpeed() > info.speedLimitMps)
if (info.speedLimitMps > 0.0 && (int) last.getSpeed() > (int) info.speedLimitMps)
{
if (info.isSpeedCamLimitExceeded())
mSpeedValue.setTextColor(ContextCompat.getColor(mActivity, R.color.white_primary));

View file

@ -11,6 +11,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.organicmaps.Framework;
import app.organicmaps.MwmActivity;
import app.organicmaps.R;
import app.organicmaps.base.BaseMwmDialogFragment;
import app.organicmaps.bookmarks.data.DistanceAndAzimut;
@ -46,6 +47,7 @@ public class DirectionFragment extends BaseMwmDialogFragment
{
final View root = inflater.inflate(R.layout.fragment_direction, container, false);
root.setOnTouchListener((v, event) -> {
root.performClick();
dismiss();
return false;
});
@ -99,6 +101,7 @@ public class DirectionFragment extends BaseMwmDialogFragment
super.onResume();
LocationHelper.from(requireContext()).addListener(this);
SensorHelper.from(requireContext()).addListener(this);
((MwmActivity) requireActivity()).hideOrShowUIWithoutClosingPlacePage(true);
refreshViews();
}
@ -110,6 +113,13 @@ public class DirectionFragment extends BaseMwmDialogFragment
SensorHelper.from(requireContext()).removeListener(this);
}
@Override
public void onStop()
{
super.onStop();
((MwmActivity) requireActivity()).hideOrShowUIWithoutClosingPlacePage(false);
}
@Override
public void onLocationUpdated(@NonNull Location location)
{

View file

@ -2,6 +2,7 @@ package app.organicmaps.widget.placepage;
import android.content.Context;
import android.location.Location;
import android.net.Uri;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
@ -238,6 +239,10 @@ public class PlacePageView extends Fragment implements View.OnClickListener,
LinearLayout latlon = mFrame.findViewById(R.id.ll__place_latlon);
latlon.setOnClickListener(this);
LinearLayout openIn = mFrame.findViewById(R.id.ll__place_open_in);
openIn.setOnClickListener(this);
openIn.setOnLongClickListener(this);
openIn.setVisibility(VISIBLE);
mTvLatlon = mFrame.findViewById(R.id.tv__place_latlon);
mWifi = mFrame.findViewById(R.id.ll__place_wifi);
mTvWiFi = mFrame.findViewById(R.id.tv__place_wifi);
@ -579,6 +584,12 @@ public class PlacePageView extends Fragment implements View.OnClickListener,
.apply();
refreshLatLon();
}
else if (id == R.id.ll__place_open_in)
{
final String uri = Framework.nativeGetGeoUri(mMapObject.getLat(), mMapObject.getLon(),
mMapObject.getScale(), mMapObject.getName());
Utils.openUri(requireContext(), Uri.parse(uri));
}
else if (id == R.id.direction_frame)
showBigDirection();
}
@ -614,6 +625,12 @@ public class PlacePageView extends Fragment implements View.OnClickListener,
items.add(formatted);
}
}
else if (id == R.id.ll__place_open_in)
{
final String uri = Framework.nativeGetGeoUri(mMapObject.getLat(), mMapObject.getLon(),
mMapObject.getScale(), mMapObject.getName());
PlacePageUtils.copyToClipboard(requireContext(), mFrame, uri);
}
else if (id == R.id.ll__place_operator)
items.add(mTvOperator.getText().toString());
else if (id == R.id.ll__place_network)

View file

@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal"
android:autoMirrored="true">
<path
android:fillColor="@android:color/white"
android:pathData="M200,840Q167,840 143.5,816.5Q120,793 120,760L120,200Q120,167 143.5,143.5Q167,120 200,120L480,120L480,200L200,200Q200,200 200,200Q200,200 200,200L200,760Q200,760 200,760Q200,760 200,760L760,760Q760,760 760,760Q760,760 760,760L760,480L840,480L840,760Q840,793 816.5,816.5Q793,840 760,840L200,840ZM388,628L332,572L704,200L560,200L560,120L840,120L840,400L760,400L760,256L388,628Z"/>
</vector>

View file

@ -73,6 +73,8 @@
<!-- ToDo: Address is missing compared with iOS. It's shown in title but anyway .. -->
<include layout="@layout/place_page_latlon"/>
<include layout="@layout/place_page_open_in"/>
</LinearLayout>
<include

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll__place_open_in"
style="@style/PlacePageItemFrame"
android:tag="open_in"
tools:background="#20FF0000"
tools:visibility="visible">
<ImageView
android:id="@+id/iv__place_open_in"
style="@style/PlacePageMetadataIcon"
app:srcCompat="@drawable/ic_open_in"
app:tint="?colorAccent"/>
<TextView
android:id="@+id/tv__place_open_in"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/open_in_app"
android:textAppearance="@style/MwmTextAppearance.PlacePage.Accent"/>
</LinearLayout>

View file

@ -837,6 +837,8 @@
<string name="website_menu">رابط القائمة</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">عرض القائمة</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">فتح في تطبيق آخر</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">الخدمة الذاتية</string>
<string name="select_option">حدد الخيار</string>
@ -1259,9 +1261,9 @@
<string name="type.highway.motorway_link.tunnel">نفق</string>
<string name="type.highway.path">مسار</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">مسار</string>
<string name="type.highway.path.difficult">درب صعب أو ضعيف الرؤية</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">مسار</string>
<string name="type.highway.path.expert">أثر صعب للغاية أو لا يمكن تمييزه</string>
<string name="type.highway.path.bicycle">مسار للمشاة والدراجات معاً</string>
<string name="type.highway.footway.bicycle">مسار للمشاة والدراجات معاً</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -806,6 +806,8 @@
<string name="website_menu">Menyu keçidi</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Menyuya baxın</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Başqa Tətbiqdə Açın</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Özünəxidmət</string>
<string name="select_option">Seçim seçin</string>
@ -1218,9 +1220,9 @@
<string name="type.highway.motorway_link.tunnel">Tunel</string>
<string name="type.highway.path">Yol</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Yol</string>
<string name="type.highway.path.difficult">Çətin və ya zəif görünən cığır</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Yol</string>
<string name="type.highway.path.expert">Çox çətin və ya fərqlənməyən cığır</string>
<string name="type.highway.path.bicycle">Velosiped və Gəzinti Yolu</string>
<string name="type.highway.footway.bicycle">Velosiped və Gəzinti Yolu</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -817,6 +817,8 @@
<string name="website_menu">Спасылка на меню</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Паглядзець меню</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Адкрыць у іншай прыладзе</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Самаабслугоўванне</string>
<string name="select_option">Выберыце варыянт</string>
@ -1018,8 +1020,16 @@
<string name="type.highway.motorway_link.bridge">Мост</string>
<!-- These translations are used for all type.highway.*.tunnel. -->
<string name="type.highway.motorway_link.tunnel">Тунэль</string>
<string name="type.highway.path">Сцежка</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Складаная ці дрэнна бачная сцежка</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Вельмі складаная ці неадметная сцежка</string>
<string name="type.highway.path.bicycle">Сцежка</string>
<string name="type.highway.footway.bicycle">Сцежка</string>
<!-- These translations are used for all type.highway.*.bridge. -->
<string name="type.highway.path.bridge">Мост</string>
<string name="type.highway.path.horse">Сцежка</string>
<!-- These translations are used for all type.highway.*.tunnel. -->
<string name="type.highway.path.tunnel">Тунэль</string>
<!-- These translations are used for all type.highway.*.bridge. -->
@ -1086,6 +1096,7 @@
<string name="type.highway.unclassified.bridge">Мост</string>
<!-- These translations are used for all type.highway.*.tunnel. -->
<string name="type.highway.unclassified.tunnel">Тунэль</string>
<string name="type.area_highway.path">Сцежка</string>
<string name="type.area_highway.trunk">Траса</string>
<!-- SECTION: Types: Historic -->

View file

@ -741,6 +741,8 @@
<string name="website_menu">Връзка към менюто</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Преглед на менюто</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Отваряне в друго приложение</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Самообслужване</string>
<string name="select_option">Изберете опция</string>
@ -896,8 +898,16 @@
<string name="type.highway.motorway_link.bridge">Мост</string>
<!-- These translations are used for all type.highway.*.tunnel. -->
<string name="type.highway.motorway_link.tunnel">Тунел</string>
<string name="type.highway.path">Път</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Трудна или слабо видима пътека</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Много трудна или неразличима пътека</string>
<string name="type.highway.path.bicycle">Път</string>
<string name="type.highway.footway.bicycle">Път</string>
<!-- These translations are used for all type.highway.*.bridge. -->
<string name="type.highway.path.bridge">Мост</string>
<string name="type.highway.path.horse">Път</string>
<!-- These translations are used for all type.highway.*.tunnel. -->
<string name="type.highway.path.tunnel">Тунел</string>
<!-- These translations are used for all type.highway.*.bridge. -->
@ -964,6 +974,7 @@
<string name="type.highway.unclassified.bridge">Мост</string>
<!-- These translations are used for all type.highway.*.tunnel. -->
<string name="type.highway.unclassified.tunnel">Тунел</string>
<string name="type.area_highway.path">Път</string>
<string name="type.area_highway.trunk">Автомагистрала</string>
<!-- SECTION: Types: Historic -->

View file

@ -828,6 +828,8 @@
<string name="website_menu">Enllaç del menú</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Visualitza el menú</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Obre en una altra aplicació</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Autoservei</string>
<string name="select_option">Seleccioneu l\'opció</string>
@ -1066,6 +1068,15 @@
<string name="type.highway.busway">Carretera dedicada a l\'autobús</string>
<string name="type.highway.footway.sidewalk">Vorera</string>
<string name="type.highway.footway.crossing">Pas de vianants</string>
<string name="type.highway.path">Camí</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Ruta difícil o poc visible</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Sender molt difícil o indistingible</string>
<string name="type.highway.path.bicycle">Camí</string>
<string name="type.highway.footway.bicycle">Camí</string>
<string name="type.highway.path.horse">Camí</string>
<string name="type.area_highway.path">Camí</string>
<!-- SECTION: Types: Historic -->
<string name="type.historic.aircraft">Avions històrics</string>

View file

@ -790,6 +790,8 @@
<string name="website_menu">Odkaz na menu</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Zobrazit menu</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Otevřít v jiné aplikaci</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Samoobsluha</string>
<string name="select_option">Vyberte možnost</string>
@ -1156,9 +1158,9 @@
<string name="type.highway.motorway_link.tunnel">Tunel</string>
<string name="type.highway.path">Cesta</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Cesta</string>
<string name="type.highway.path.difficult">Obtížná nebo špatně viditelná stezka</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Cesta</string>
<string name="type.highway.path.expert">Velmi obtížná nebo nezřetelná stopa</string>
<string name="type.highway.path.bicycle">Cesta</string>
<string name="type.highway.footway.bicycle">Cesta</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -780,6 +780,8 @@
<string name="website_menu">Link til menu</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Vis menu</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Åbn i en anden app</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Selvbetjening</string>
<string name="select_option">Vælg mulighed</string>
@ -1136,9 +1138,9 @@
<string name="type.highway.motorway_link.tunnel">Tunnel</string>
<string name="type.highway.path">Sti</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Sti</string>
<string name="type.highway.path.difficult">Vanskelig eller dårligt synlig sti</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Sti</string>
<string name="type.highway.path.expert">Meget svær eller umulig at skelne fra hinanden</string>
<string name="type.highway.path.bicycle">Sti</string>
<string name="type.highway.footway.bicycle">Sti</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -826,6 +826,8 @@
<string name="website_menu">Link zur Speisekarte</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Speisekarte</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">In einer anderen App öffnen</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Selbstbedienung</string>
<string name="select_option">Option auswählen</string>

View file

@ -823,6 +823,8 @@
<string name="website_menu">Σύνδεσμος μενού</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Προβολή μενού</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Άνοιγμα σε άλλη εφαρμογή</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Αυτοεξυπηρέτηση</string>
<string name="select_option">Επιλέξτε επιλογή</string>
@ -1197,9 +1199,9 @@
<string name="type.highway.motorway_link.tunnel">Σήραγγα</string>
<string name="type.highway.path">Διαδρομή</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Διαδρομή</string>
<string name="type.highway.path.difficult">Δύσκολη ή ελάχιστα ορατή διαδρομή</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Διαδρομή</string>
<string name="type.highway.path.expert">Πολύ δύσκολο ή δυσδιάκριτο μονοπάτι</string>
<string name="type.highway.path.bicycle">Διαδρομή</string>
<string name="type.highway.footway.bicycle">Διαδρομή</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -830,6 +830,8 @@
<string name="website_menu">Enlace al menú</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Ver menú</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Abrir en otra aplicación</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Autoservicio</string>
<string name="select_option">Selecciona la opción</string>
@ -1256,9 +1258,9 @@
<string name="type.highway.motorway_link.tunnel">Túnel</string>
<string name="type.highway.path">Camino</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Camino</string>
<string name="type.highway.path.difficult">Sendero difícil o poco visible</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Camino</string>
<string name="type.highway.path.expert">Sendero muy difícil o indistinguible</string>
<string name="type.highway.path.bicycle">Camino para bicicletas</string>
<string name="type.highway.footway.bicycle">Camino para bicicletas</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -816,6 +816,8 @@
<string name="website_menu">Menüü link</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Menüü vaatamine</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Avatud teises rakenduses</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Iseteenindus</string>
<string name="select_option">Valige valik</string>
@ -1240,9 +1242,9 @@
<string name="type.highway.motorway_link.tunnel">Tunnel</string>
<string name="type.highway.path">Rada</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Rada</string>
<string name="type.highway.path.difficult">Raske või halvasti nähtav rada</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Rada</string>
<string name="type.highway.path.expert">Väga raske või eristamatu rada</string>
<string name="type.highway.path.bicycle">Jalgratta- ja jalgtee</string>
<string name="type.highway.footway.bicycle">Jalgratta- ja jalgtee</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -824,6 +824,8 @@
<string name="website_menu">Menuaren esteka</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Ikusi menua</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Ireki beste aplikazio batean</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Autozerbitzu</string>
<string name="select_option">Hautatu aukera</string>
@ -1239,9 +1241,9 @@
<string name="type.highway.motorway_link.tunnel">Tunel</string>
<string name="type.highway.path">Bidea</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Bidea</string>
<string name="type.highway.path.difficult">Ibilbide zaila edo gaizki ikusten da</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Bidea</string>
<string name="type.highway.path.expert">Oso bide zaila edo bereiztezina</string>
<string name="type.highway.path.bicycle">Bidea</string>
<string name="type.highway.footway.bicycle">Bidea</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -780,6 +780,8 @@
<string name="website_menu">لینک منو</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">مشاهده منو</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">در یک برنامه دیگر باز کنید</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">سلف سرویس</string>
<string name="select_option">گزینه را انتخاب کنید</string>
@ -1062,9 +1064,9 @@
<string name="type.highway.motorway_link.tunnel">تونل</string>
<string name="type.highway.path">مسیر</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">مسیر</string>
<string name="type.highway.path.difficult">مسیر دشوار یا ضعیف قابل مشاهده است</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">مسیر</string>
<string name="type.highway.path.expert">مسیر بسیار دشوار یا غیر قابل تشخیص</string>
<string name="type.highway.path.bicycle">مسیر</string>
<string name="type.highway.footway.bicycle">مسیر</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -827,6 +827,8 @@
<string name="website_menu">Valikkolinkki</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Näytä valikko</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Avaa toisessa sovelluksessa</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Itsepalvelu</string>
<string name="select_option">Valitse vaihtoehto</string>
@ -1240,9 +1242,9 @@
<string name="type.highway.motorway_link.tunnel">Tunneli</string>
<string name="type.highway.path">Polku</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Polku</string>
<string name="type.highway.path.difficult">Vaikea tai huonosti näkyvä reitti</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Polku</string>
<string name="type.highway.path.expert">Erittäin vaikea tai erottamaton jälki</string>
<string name="type.highway.path.bicycle">Pyörä- ja jalkatie</string>
<string name="type.highway.footway.bicycle">Pyörä- ja jalkatie</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -832,6 +832,8 @@
<string name="website_menu">Lien vers le menu</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Voir le menu</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Ouvrir dans une autre application</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Libre-service</string>
<string name="select_option">Sélectionner une option</string>
@ -1242,9 +1244,9 @@
<string name="type.highway.motorway_link.tunnel">Tunnel</string>
<string name="type.highway.path">Chemin</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Chemin</string>
<string name="type.highway.path.difficult">Sentier difficile ou peu visibl</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Chemin</string>
<string name="type.highway.path.expert">Sentier très difficile ou indiscernabl</string>
<string name="type.highway.path.bicycle">Chemin</string>
<string name="type.highway.footway.bicycle">Chemin</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -558,6 +558,8 @@
<string name="website_menu">मेनू लिंक</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">मेनू देखें</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">किसी अन्य ऐप में खोलें</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">स्वयं सेवा hu = Önkiszolgáló</string>
<string name="select_option">विकल्प चुनें</string>
@ -842,9 +844,9 @@
<string name="type.highway.motorway_link">फ्रीवे प्रवेश</string>
<string name="type.highway.path">पथ</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">पथ</string>
<string name="type.highway.path.difficult">कठिन या ख़राब दिखाई देने वाला मार्ग</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">पथ</string>
<string name="type.highway.path.expert">बहुत कठिन या अप्रभेद्य पथ</string>
<string name="type.highway.path.bicycle">पथ</string>
<string name="type.highway.footway.bicycle">पथ</string>
<string name="type.highway.path.horse">पथ</string>

View file

@ -798,6 +798,8 @@
<string name="website_menu">Menü link</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Menü megtekintése</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Megnyitás egy másik alkalmazásban</string>
<string name="select_option">Válassza ki a lehetőséget</string>
<!-- To indicate if restaurant or other place has outdoor seating -->
<string name="outdoor_seating">Kültéri ülőhelyek</string>
@ -1164,9 +1166,9 @@
<string name="type.highway.motorway_link.tunnel">Alagút</string>
<string name="type.highway.path">Ösvény</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Ösvény</string>
<string name="type.highway.path.difficult">Nehéz vagy rosszul látható nyomvonal</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Ösvény</string>
<string name="type.highway.path.expert">Nagyon nehéz vagy megkülönböztethetetlen nyomvonal</string>
<string name="type.highway.path.bicycle">Ösvény</string>
<string name="type.highway.footway.bicycle">Ösvény</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -780,6 +780,8 @@
<string name="website_menu">Tautan menu</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Lihat Menu</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Buka di Aplikasi Lain</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Layanan mandiri</string>
<string name="select_option">Pilih opsi</string>
@ -1142,9 +1144,9 @@
<string name="type.highway.motorway_link.tunnel">Terowongan</string>
<string name="type.highway.path">Jalur</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Jalur</string>
<string name="type.highway.path.difficult">Jejak yang sulit atau kurang terlihר)</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Jalur</string>
<string name="type.highway.path.expert">Jejak yang sangat sulit atau tidak dapat dibedakם)</string>
<string name="type.highway.path.bicycle">Jalur</string>
<string name="type.highway.footway.bicycle">Jalur</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -810,6 +810,8 @@
<string name="website_menu">Link al menu</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Visualizza menu</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Apri in un\'altra applicazione</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Self service</string>
<string name="select_option">Seleziona l\'opzione</string>

View file

@ -816,6 +816,8 @@
<string name="website_menu">קישור לתפריט</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">תפריט תצוגה</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">פתח באפליקציה אחרת</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">שירות עצמי</string>
<string name="select_option">בחר אפשרות</string>
@ -1240,9 +1242,9 @@
<string name="type.highway.motorway_link.tunnel">מִנהָרָה</string>
<string name="type.highway.path">שביל</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">רמה 3/6) שביל קשה או לא ברור)</string>
<string name="type.highway.path.difficult">שביל קשה או לא נראה לעין</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">רמה 4+/6) מסלול למומחים או ללא שבילים מסודרים)</string>
<string name="type.highway.path.expert">מסלול קשה מאוד או בלתי ניתן להבחנה</string>
<string name="type.highway.path.bicycle">שביל להולכי רגל ואופניים</string>
<string name="type.highway.footway.bicycle">שביל להולכי רגל ואופניים</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -826,6 +826,8 @@
<string name="website_menu">メニューリンク</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">メニューを見る</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">別のアプリで開く</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">セルフサービス</string>
<string name="select_option">オプションを選択する</string>
@ -1223,9 +1225,9 @@
<string name="type.highway.motorway_link.tunnel">トンネル</string>
<string name="type.highway.path">歩道</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">歩道</string>
<string name="type.highway.path.difficult">困難な、または見通しの悪いトレイル</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">歩道</string>
<string name="type.highway.path.expert">非常に難しい、または区別がつかないトレイル</string>
<string name="type.highway.path.bicycle">歩道</string>
<string name="type.highway.footway.bicycle">歩道</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -778,6 +778,8 @@
<string name="website_menu">메뉴 링크</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">메뉴 보기</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">다른 앱에서 열기</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">셀프 서비스</string>
<string name="select_option">옵션 선택</string>
@ -1146,9 +1148,9 @@
<string name="type.highway.motorway_link.tunnel">터널</string>
<string name="type.highway.path"></string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult"></string>
<string name="type.highway.path.difficult">어렵거나 잘 보이지 않는 트레일</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert"></string>
<string name="type.highway.path.expert">매우 어렵거나 구별하기 어려운 흔적</string>
<string name="type.highway.path.bicycle"></string>
<string name="type.highway.footway.bicycle"></string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -788,6 +788,8 @@
<string name="website_menu">मेनू लिंक</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">मेनू पहा</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">दुसऱ्या ॲपमध्ये उघडा</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">स्व: सेवा nb = Selvbetjening</string>
<string name="select_option">पर्याय निवडा nb = Velg alternativ</string>
@ -1120,9 +1122,9 @@
<string name="type.highway.motorway_link.tunnel">बोगदा</string>
<string name="type.highway.path">पथ</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">पथ</string>
<string name="type.highway.path.difficult">अवघड किंवा खराब दृश्यमान पायवाट</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">पथ</string>
<string name="type.highway.path.expert">अतिशय अवघड किंवा वेगळे न करता येणारी पायवाट</string>
<string name="type.highway.path.bicycle">सायकल आणि पाऊलवाट</string>
<string name="type.highway.footway.bicycle">सायकल आणि पाऊलवाट</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -823,6 +823,8 @@
<string name="website_menu">Lenke til menyen</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Vis meny</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Åpne i en annen app</string>
<!-- Disclaimer title shown when Power Saving Mode is enabled -->
<string name="power_save_dialog_title">Slå av strømsparingsmodus</string>
<!-- Disclaimer summary shown when Power Saving Mode is enabled -->
@ -1195,9 +1197,9 @@
<string name="type.highway.motorway_link.tunnel">Tunnel</string>
<string name="type.highway.path">Sti</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Sti</string>
<string name="type.highway.path.difficult">Vanskelig eller dårlig synlig sti</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Sti</string>
<string name="type.highway.path.expert">Svært vanskelig eller umulig å skille ut stien</string>
<string name="type.highway.path.bicycle">Sti</string>
<string name="type.highway.footway.bicycle">Sti</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -823,6 +823,8 @@
<string name="website_menu">Menulink</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Bekijk menu</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Openen in een andere app</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Zelfbediening</string>
<string name="select_option">Selecteer optie</string>
@ -1244,9 +1246,9 @@
<string name="type.highway.motorway_link.tunnel">Tunnel</string>
<string name="type.highway.path">Pad</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Pad</string>
<string name="type.highway.path.difficult">Moeilijk of slecht zichtbaar pad</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Pad</string>
<string name="type.highway.path.expert">Zeer moeilijk of niet te onderscheiden spoor</string>
<string name="type.highway.path.bicycle">Fietspad</string>
<string name="type.highway.footway.bicycle">Fietspad</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -830,6 +830,8 @@
<string name="website_menu">Link do menu</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Wyświetl menu</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Otwórz w innej aplikacji</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Samoobsługa</string>
<string name="select_option">Wybierz opcję</string>
@ -1252,9 +1254,9 @@
<string name="type.highway.motorway_link.tunnel">Tunel</string>
<string name="type.highway.path">Ścieżka</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Ścieżka</string>
<string name="type.highway.path.difficult">Trudny lub słabo widoczny szlak</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Ścieżka</string>
<string name="type.highway.path.expert">Bardzo trudny lub nierozróżnialny szlak</string>
<string name="type.highway.path.bicycle">Ścieżka dla rowerów</string>
<string name="type.highway.footway.bicycle">Ścieżka dla rowerów</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -752,6 +752,8 @@
<string name="website_menu">Link do cardápio</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Exibir menu</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Abrir em outro aplicativo</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Autoatendimento</string>
<string name="select_option">Selecionar opção</string>
@ -1126,11 +1128,10 @@
<string name="type.highway.motorway_link.bridge">Ponte</string>
<!-- These translations are used for all type.highway.*.tunnel. -->
<string name="type.highway.motorway_link.tunnel">Túnel</string>
<string name="type.highway.path">Caminho</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Caminho</string>
<string name="type.highway.path.difficult">Trilha difícil ou pouco visível</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Caminho</string>
<string name="type.highway.path.expert">Trilha muito difícil ou indistinguível</string>
<string name="type.highway.path.bicycle">Caminho para ciclistas</string>
<string name="type.highway.footway.bicycle">Caminho para ciclistas</string>
<!-- These translations are used for all type.highway.*.bridge. -->
@ -1233,7 +1234,6 @@
<string name="type.area_highway.footway">Caminho pedonal</string>
<string name="type.area_highway.living_street">Rua residencial</string>
<string name="type.area_highway.motorway">Rodovia</string>
<string name="type.area_highway.path">Caminho</string>
<string name="type.area_highway.pedestrian">Caminho pedonal</string>
<string name="type.area_highway.primary">Estrada</string>
<string name="type.area_highway.residential">Rua residencial</string>

View file

@ -791,6 +791,8 @@
<string name="website_menu">Link do menu</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Ver menu</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Abrir noutra aplicação</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Autosserviço</string>
<string name="select_option">Selecionar opção</string>
@ -1200,9 +1202,9 @@
<string name="type.highway.motorway_link.tunnel">Túnel</string>
<string name="type.highway.path">Caminho</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Caminho</string>
<string name="type.highway.path.difficult">Trilho difícil ou pouco visível</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Caminho</string>
<string name="type.highway.path.expert">Trilho muito difícil ou indistinguível</string>
<string name="type.highway.path.bicycle">Caminho</string>
<string name="type.highway.footway.bicycle">Caminho</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -805,6 +805,8 @@
<string name="website_menu">Legătura de meniu</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Vezi meniul</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Deschidere în altă aplicație</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Autoservire</string>
<string name="select_option">Selectați opțiunea</string>
@ -1166,9 +1168,9 @@
<string name="type.highway.motorway_link.tunnel">Tunel</string>
<string name="type.highway.path">Cale</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Cale</string>
<string name="type.highway.path.difficult">Traseu dificil sau puțin vizibil</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Cale</string>
<string name="type.highway.path.expert">Traseu foarte dificil sau imposibil de distins</string>
<string name="type.highway.path.bicycle">Cale</string>
<string name="type.highway.footway.bicycle">Cale</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -841,6 +841,8 @@
<string name="website_menu">Ссылка на меню</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Посмотреть меню</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Открыть в другом приложении</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Самообслуживание</string>
<string name="select_option">Выберите вариант</string>

View file

@ -819,6 +819,8 @@
<string name="website_menu">Odkaz na menu</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Zobraziť menu</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Otvoriť v inej aplikácii</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Samoobslužné služby</string>
<string name="select_option">Vyberte možnosť</string>
@ -1235,9 +1237,9 @@
<string name="type.highway.motorway_link.tunnel">Tunel</string>
<string name="type.highway.path">Cesta</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Cesta</string>
<string name="type.highway.path.difficult">Náročná alebo zle viditeľná trasa</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Cesta</string>
<string name="type.highway.path.expert">Veľmi náročná alebo nezreteľná stopa</string>
<string name="type.highway.path.bicycle">Cesta pre cyklistov a chodcov</string>
<string name="type.highway.footway.bicycle">Cesta pre cyklistov a chodcov</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -777,6 +777,8 @@
<string name="website_menu">Länk till meny</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Visa meny</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Öppna i en annan app</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Självbetjäning</string>
<string name="select_option">Välj alternativ</string>
@ -1141,9 +1143,9 @@
<string name="type.highway.motorway_link.tunnel">Tunnel</string>
<string name="type.highway.path">Gångväg</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Gångväg</string>
<string name="type.highway.path.difficult">Svår eller dåligt synlig led</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Gångväg</string>
<string name="type.highway.path.expert">Mycket svår eller omöjlig att urskilja spår</string>
<string name="type.highway.path.bicycle">Gångväg</string>
<string name="type.highway.footway.bicycle">Gångväg</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -349,6 +349,8 @@
<string name="website_menu">Kiungo cha menyu</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Tazama Menyu</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Fungua Katika Programu Nyingine</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Kujihudumia</string>
<string name="select_option">Chagua chaguo</string>
@ -508,8 +510,16 @@
<string name="type.highway.motorway_link.bridge">Daraja</string>
<!-- These translations are used for all type.highway.*.tunnel. -->
<string name="type.highway.motorway_link.tunnel">Mtaro</string>
<string name="type.highway.path">Njia</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Njia ngumu au isiyoonekana vizuri</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Njia ngumu sana au isiyoweza kutofautishwa</string>
<string name="type.highway.path.bicycle">Njia</string>
<string name="type.highway.footway.bicycle">Njia</string>
<!-- These translations are used for all type.highway.*.bridge. -->
<string name="type.highway.path.bridge">Daraja</string>
<string name="type.highway.path.horse">Njia</string>
<!-- These translations are used for all type.highway.*.tunnel. -->
<string name="type.highway.path.tunnel">Mtaro</string>
<!-- These translations are used for all type.highway.*.bridge. -->
@ -574,6 +584,7 @@
<string name="type.highway.unclassified.bridge">Daraja</string>
<!-- These translations are used for all type.highway.*.tunnel. -->
<string name="type.highway.unclassified.tunnel">Mtaro</string>
<string name="type.area_highway.path">Njia</string>
<!-- SECTION: Types: Historic -->
<string name="type.historic">Kitu cha kihistoria</string>

View file

@ -778,6 +778,8 @@
<string name="website_menu">ลิงค์เมนู</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">ดูเมนู</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">เปิดในแอปอื่น</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">บริการตนเอง</string>
<string name="select_option">เลือกตัวเลือก</string>
@ -1148,9 +1150,9 @@
<string name="type.highway.motorway_link.tunnel">อุโมงค์</string>
<string name="type.highway.path">เส้นทาง</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">เส้นทาง</string>
<string name="type.highway.path.difficult">เส้นทางที่ยากลำบากหรือมองเห็นได้ไม่ดี</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">เส้นทาง</string>
<string name="type.highway.path.expert">เส้นทางที่ยากมากหรือแยกไม่ออก</string>
<string name="type.highway.path.bicycle">เส้นทาง</string>
<string name="type.highway.footway.bicycle">เส้นทาง</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -832,6 +832,8 @@
<string name="website_menu">Menü bağlantısı</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Menüyü Görüntüle</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Başka Bir Uygulamada Aç</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Self servis</string>
<string name="select_option">Seçeneği seçin</string>
@ -1250,9 +1252,9 @@
<string name="type.highway.motorway_link.tunnel">Tünel</string>
<string name="type.highway.path">Yol</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Yol</string>
<string name="type.highway.path.difficult">Zor veya kötü görünür patika</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Yol</string>
<string name="type.highway.path.expert">Çok zor veya ayırt edilemeyen iz</string>
<string name="type.highway.path.bicycle">Bisiklet ve Yürüyüş Yolu</string>
<string name="type.highway.footway.bicycle">Bisiklet ve Yürüyüş Yolu</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -832,6 +832,8 @@
<string name="website_menu">Посилання на меню</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Переглянути меню</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Відкрити в іншій програмі</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Самообслуговування</string>
<string name="select_option">Виберіть варіант</string>
@ -1255,9 +1257,9 @@
<string name="type.highway.motorway_link.tunnel">Тунель</string>
<string name="type.highway.path">Стежка</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Стежка</string>
<string name="type.highway.path.difficult">Складна або погано видима стежка</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Стежка</string>
<string name="type.highway.path.expert">Дуже складна або невиразна стежка</string>
<string name="type.highway.path.bicycle">Велопішохідна доріжка</string>
<string name="type.highway.footway.bicycle">Велопішохідна доріжка</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -776,6 +776,8 @@
<string name="website_menu">Liên kết thực đơn</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">Xem thực đơn</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Mở trong ứng dụng khác</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Tự phục vụ</string>
<string name="select_option">Chọn tùy chọn</string>
@ -1144,9 +1146,9 @@
<string name="type.highway.motorway_link.tunnel">Đường hầm</string>
<string name="type.highway.path">Đường</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">Đường</string>
<string name="type.highway.path.difficult">Đường đi khó hoặc khó nhìn thấy</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">Đường</string>
<string name="type.highway.path.expert">Đường đi rất khó khăn hoặc không thể phân biệt được</string>
<string name="type.highway.path.bicycle">Đường</string>
<string name="type.highway.footway.bicycle">Đường</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -837,6 +837,8 @@
<string name="website_menu">選單連結</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">查看選單</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">在另一個應用程式中打開</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">自助服務</string>
<string name="select_option">選擇選項</string>
@ -1257,9 +1259,9 @@
<string name="type.highway.motorway_link.tunnel">隧道</string>
<string name="type.highway.path">人行步道</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">人行步道</string>
<string name="type.highway.path.difficult">困難或不明顯的小路</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">人行步道</string>
<string name="type.highway.path.expert">非常困難或難以區分的路線</string>
<string name="type.highway.path.bicycle">人行步道</string>
<string name="type.highway.footway.bicycle">人行步道</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -837,6 +837,8 @@
<string name="website_menu">菜单链接</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">查看菜单</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">在另一个应用程序中打开</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">自助服务</string>
<string name="select_option">选择选项</string>
@ -1259,9 +1261,9 @@
<string name="type.highway.motorway_link.tunnel">隧道</string>
<string name="type.highway.path">小道</string>
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
<string name="type.highway.path.difficult">小道</string>
<string name="type.highway.path.difficult">难走或难见的小路</string>
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
<string name="type.highway.path.expert">小道</string>
<string name="type.highway.path.expert">非常困难或难以分辨的路径</string>
<string name="type.highway.path.bicycle">小道</string>
<string name="type.highway.footway.bicycle">小道</string>
<!-- These translations are used for all type.highway.*.bridge. -->

View file

@ -864,6 +864,8 @@
<string name="website_menu">Menu Link</string>
<!-- Button in the Place Page which opens a restaurant or other food place's menu in a browser -->
<string name="view_menu">View Menu</string>
<!-- Title for the "Open In Another App" button on the PlacePage. -->
<string name="open_in_app">Open In Another App</string>
<!-- To indicate if the place proposed self service... -->
<string name="self_service">Self-service</string>
<string name="select_option">Select option</string>

View file

@ -134,6 +134,7 @@
<item name="android:colorPrimaryDark">@android:color/black</item>
<item name="android:windowBackground">@color/bg_dialog_translucent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
</style>
<style name="MwmMain.DialogFragment.TimePicker" parent="Theme.MaterialComponents.Light.Dialog.Alert">

View file

@ -1,5 +1,5 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '8.5.1' apply false
id 'com.android.library' version '8.5.1' apply false
id 'com.android.application' version '8.5.2' apply false
id 'com.android.library' version '8.5.2' apply false
}

View file

@ -1,6 +1,6 @@
propMinSdkVersion=21
propTargetSdkVersion=34
propCompileSdkVersion=34
propTargetSdkVersion=35
propCompileSdkVersion=35
org.gradle.caching=true
org.gradle.jvmargs=-Xmx1024m -Xms256m

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -27,6 +27,7 @@
"onto":"إلى",
"take_exit_number":"خروج إلى",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"إعادة حساب المسار",
"destination":"سوف تصل.",
"you_have_reached_the_destination":"لقد وصلت.",
"in_50_meters":"بعد خمسين متراً",

View file

@ -27,6 +27,7 @@
"onto":"на",
"take_exit_number":"З'езд на",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Пераразлік маршруту",
"destination":"Вы прыбудзеце ў пункт прызначэння.",
"you_have_reached_the_destination":"Вы прыбылі ў пункт прызначэння.",
"in_50_meters":"Праз пяцьдзесят метраў",

View file

@ -27,6 +27,7 @@
"onto":"onto",
"take_exit_number":"Agafeu la sortida",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Recalcular el recorregut",
"destination":"Arribareu a la destinació.",
"you_have_reached_the_destination":"Heu arribat.",
"in_50_meters":"A cinquanta metres",

View file

@ -27,6 +27,7 @@
"onto":"na",
"take_exit_number":"výstup na",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Přepočítání trasy",
"destination":"Přijedete do cíle.",
"you_have_reached_the_destination":"Jste v cíli.",
"in_50_meters":"Za padesát metrů",

View file

@ -27,6 +27,7 @@
"onto":"ad",
"take_exit_number":"Afkørsel ad",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Genberegning af ruten",
"destination":"Ankommer du.",
"you_have_reached_the_destination":"Du er ankommet.",
"in_50_meters":"Om halvtreds meter",

View file

@ -27,6 +27,7 @@
"onto":"auf",
"take_exit_number":"Nehmen Sie die Ausfahrt auf",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Neuberechnung der Route",
"destination":"Werden Sie ankommen.",
"you_have_reached_the_destination":"Sie sind angekommen.",
"in_50_meters":"In fünfzig Metern",

View file

@ -27,6 +27,7 @@
"onto":"στην",
"take_exit_number":"Εξοδος στην",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Επαναϋπολογισμός της διαδρομής",
"destination":"Θα φτάσετε.",
"you_have_reached_the_destination":"Έχετε φτάσει.",
"in_50_meters":"Σε πενήντα μέτρα",

View file

@ -27,6 +27,7 @@
"onto":"onto",
"take_exit_number":"Take exit",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Recalculating the route",
"destination":"Youll arrive.",
"you_have_reached_the_destination":"You have arrived.",
"in_50_meters":"In fifty meters",

View file

@ -27,6 +27,7 @@
"onto":"hacia",
"take_exit_number":"Tome la salida",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Recalcular la ruta",
"destination":"Llegará a su destino.",
"you_have_reached_the_destination":"Ha llegado a su destino.",
"in_50_meters":"En cincuenta metros",

View file

@ -27,6 +27,7 @@
"onto":"hacia",
"take_exit_number":"Tome la salida",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Recalcular la ruta",
"destination":"Llegará a su destino.",
"you_have_reached_the_destination":"Ha llegado a su destino.",
"in_50_meters":"En cincuenta metros",

View file

@ -27,6 +27,7 @@
"onto":"NULL",
"take_exit_number":"Irten",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Ibilbidea berriro kalkulatzea",
"destination":"Zure helmugara iritsiko zara.",
"you_have_reached_the_destination":"Helmugara iritsi zara.",
"in_50_meters":"Berrogeita hamar metrora",

View file

@ -27,6 +27,7 @@
"onto":"ﺐﻫ",
"take_exit_number":"خروجﺐﻫ",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"محاسبه مجدد مسیر",
"destination":"به مقصد خواهيد رسيد.",
"you_have_reached_the_destination":"به مقصد رسيديد.",
"in_50_meters":"در پنجاه متری",

View file

@ -27,6 +27,7 @@
"onto":"tielle",
"take_exit_number":"Poistu tielle",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Reitin uudelleenlaskenta",
"destination":"Olet perillä.",
"you_have_reached_the_destination":"Olet saapunut.",
"in_50_meters":"Viidenkymmenen metrin päässä",

View file

@ -27,6 +27,7 @@
"onto":"sur",
"take_exit_number":"Sortie sur",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Recalcul de l'itinéraire",
"destination":"Vous arriverez.",
"you_have_reached_the_destination":"Vous êtes arrivé.",
"in_50_meters":"Dans cinquante mètres",

View file

@ -27,6 +27,7 @@
"onto":"पर",
"take_exit_number":"बाहर जाएं पर",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"मार्ग की पुनर्गणना",
"destination":"गंतव्य स्थान",
"you_have_reached_the_destination":"आप पहुंच गए हैं।",
"in_50_meters":"पचास मीटर में।",

View file

@ -27,6 +27,7 @@
"onto":"na",
"take_exit_number":"Izlaz na",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Recalculating the route",
"destination":"Stižete.",
"you_have_reached_the_destination":"Stigli ste.",
"in_50_meters":"Za pedeset metara",

View file

@ -27,6 +27,7 @@
"onto":"a",
"take_exit_number":"Hajtson ki a",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Az útvonal újraszámítása",
"destination":"Megérkezik.",
"you_have_reached_the_destination":"Megérkezett.",
"in_50_meters":"Ötven méter után",

View file

@ -27,6 +27,7 @@
"onto":"ke",
"take_exit_number":"Keluar ke",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Menghitung ulang rute",
"destination":"Anda akan tiba.",
"you_have_reached_the_destination":"Anda sudah sampai.",
"in_50_meters":"Setelah lima puluh meter",

View file

@ -27,6 +27,7 @@
"onto":"sulla",
"take_exit_number":"Uscita sulla",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Ricalcolo del percorso",
"destination":"Arriverai.",
"you_have_reached_the_destination":"Sei arrivato.",
"in_50_meters":"Tra cinquanta metri",

View file

@ -27,6 +27,7 @@
"onto":"NULL",
"take_exit_number":"出口を出る",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"ルートの再計算",
"destination":"到着します。",
"you_have_reached_the_destination":"目的地に到着しました。",
"in_50_meters":"五十メートル先",

View file

@ -27,6 +27,7 @@
"onto":"NULL",
"take_exit_number":"출구",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"경로 다시 계산하기",
"destination":"도착할 예정입니다.",
"you_have_reached_the_destination":"도착했습니다.",
"in_50_meters":"오십 미터 앞",

View file

@ -27,6 +27,7 @@
"onto":"वर",
"take_exit_number":"बाहेर पडा वर",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"मार्गाची पुनर्गणना करत आहे",
"destination":"तुम्ही पोहोचाल.",
"you_have_reached_the_destination":"तुम्ही पोहोचला आहात.",
"in_50_meters":"पन्नास मीटर मध्ये",

View file

@ -27,6 +27,7 @@
"onto":"inn på",
"take_exit_number":"Ta avkjøringen inn på",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Beregner ruten på nytt",
"destination":"Ankommer du.",
"you_have_reached_the_destination":"Du har ankommet.",
"in_50_meters":"Om femti meter",

View file

@ -27,6 +27,7 @@
"onto":"naar",
"take_exit_number":"Verlaat naar",
"take_exit_number_street_verb":"Neem",
"route_recalculating":"De route herberekenen",
"destination":"Arriveert u.",
"you_have_reached_the_destination":"Bestemming bereikt.",
"in_50_meters":"Over vijftig meter",

View file

@ -27,6 +27,7 @@
"onto":"na",
"take_exit_number":"Wybierz zjazd",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Ponowne obliczanie trasy",
"destination":"Dojedziesz do celu.",
"you_have_reached_the_destination":"Dotarłeś do celu.",
"in_50_meters":"Za pięćdziesiąt metrów",

View file

@ -27,6 +27,7 @@
"onto":"para",
"take_exit_number":"Pegue a saída",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Recalcular a rota",
"destination":"Você chegará ao seu destino.",
"you_have_reached_the_destination":"Você chegou ao seu destino.",
"in_50_meters":"Em cinquenta metros",

View file

@ -27,6 +27,7 @@
"onto":"para",
"take_exit_number":"Siga pela saída",
"take_exit_number_street_verb":"NULL",
"route_recalculating":"Recalcular o itinerário",
"destination":"Chegará ao seu destino.",
"you_have_reached_the_destination":"Chegou ao seu destino.",
"in_50_meters":"A cinquenta metros",

Some files were not shown because too many files have changed in this diff Show more