forked from organicmaps/organicmaps
Compare commits
20 commits
master
...
alpha/2024
Author | SHA1 | Date | |
---|---|---|---|
|
a3a0ebbf00 | ||
|
bbb2be5a8a | ||
|
69c49a89b5 | ||
|
55a4b68aef | ||
918ed8bc33 | |||
9fbb8532d3 | |||
e0874392c8 | |||
|
fb7e9e9c6b | ||
|
861d780e7e | ||
|
a460cdc470 | ||
|
5a2b17b60c | ||
|
1b1c98191b | ||
|
cb828cdedd | ||
|
45ad713590 | ||
|
774cce2f2a | ||
|
5afcbca474 | ||
|
5adde3a170 | ||
|
1236f9edf4 | ||
|
b0872fe7d2 | ||
|
c2cf5647a7 |
172 changed files with 3307 additions and 2707 deletions
|
@ -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'
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
11
android/app/src/main/res/drawable/ic_open_in.xml
Normal file
11
android/app/src/main/res/drawable/ic_open_in.xml
Normal 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>
|
|
@ -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
|
||||
|
|
24
android/app/src/main/res/layout/place_page_open_in.xml
Normal file
24
android/app/src/main/res/layout/place_page_open_in.xml
Normal 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>
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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 -->
|
||||
|
|
|
@ -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 -->
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
propMinSdkVersion=21
|
||||
propTargetSdkVersion=34
|
||||
propCompileSdkVersion=34
|
||||
propTargetSdkVersion=35
|
||||
propCompileSdkVersion=35
|
||||
|
||||
org.gradle.caching=true
|
||||
org.gradle.jvmargs=-Xmx1024m -Xms256m
|
||||
|
|
BIN
data/World.mwm
BIN
data/World.mwm
Binary file not shown.
Binary file not shown.
4614
data/countries.txt
4614
data/countries.txt
File diff suppressed because it is too large
Load diff
|
@ -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":"بعد خمسين متراً",
|
||||
|
|
|
@ -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":"Праз пяцьдзесят метраў",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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ů",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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":"Σε πενήντα μέτρα",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"onto":"onto",
|
||||
"take_exit_number":"Take exit",
|
||||
"take_exit_number_street_verb":"NULL",
|
||||
"route_recalculating":"Recalculating the route",
|
||||
"destination":"You’ll arrive.",
|
||||
"you_have_reached_the_destination":"You have arrived.",
|
||||
"in_50_meters":"In fifty meters",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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":"در پنجاه متری",
|
||||
|
|
|
@ -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ä",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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":"पचास मीटर में।",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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":"五十メートル先",
|
||||
|
|
|
@ -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":"오십 미터 앞",
|
||||
|
|
|
@ -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":"पन्नास मीटर मध्ये",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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
Loading…
Add table
Reference in a new issue