diff --git a/android/app/src/main/assets/00_NotoSansHebrew-Regular.ttf b/android/app/src/main/assets/00_NotoSansHebrew-Regular.ttf deleted file mode 120000 index adccadfd0a..0000000000 --- a/android/app/src/main/assets/00_NotoSansHebrew-Regular.ttf +++ /dev/null @@ -1 +0,0 @@ -../../../../../data/00_NotoSansHebrew-Regular.ttf \ No newline at end of file diff --git a/android/app/src/main/cpp/app/organicmaps/editor/Editor.cpp b/android/app/src/main/cpp/app/organicmaps/editor/Editor.cpp index b126499ecb..50cff911bf 100644 --- a/android/app/src/main/cpp/app/organicmaps/editor/Editor.cpp +++ b/android/app/src/main/cpp/app/organicmaps/editor/Editor.cpp @@ -188,23 +188,13 @@ Java_app_organicmaps_editor_Editor_nativeShouldShowAddPlace(JNIEnv *, jclass) } JNIEXPORT jboolean JNICALL -Java_app_organicmaps_editor_Editor_nativeShouldEnableEditPlace(JNIEnv *, jclass) +Java_app_organicmaps_editor_Editor_nativeShouldShowAddBusiness(JNIEnv *, jclass) { ::Framework * frm = g_framework->NativeFramework(); if (!frm->HasPlacePageInfo()) return static_cast(false); - return g_framework->GetPlacePageInfo().ShouldEnableEditPlace(); -} - -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_editor_Editor_nativeShouldEnableAddPlace(JNIEnv *, jclass) -{ - ::Framework * frm = g_framework->NativeFramework(); - if (!frm->HasPlacePageInfo()) - return static_cast(false); - - return g_framework->GetPlacePageInfo().ShouldEnableAddPlace(); + return g_framework->GetPlacePageInfo().ShouldShowAddBusiness(); } JNIEXPORT jintArray JNICALL diff --git a/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java b/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java index 176872413f..65d76a153d 100644 --- a/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java +++ b/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java @@ -12,8 +12,6 @@ import android.widget.Button; import android.widget.CheckBox; import android.widget.TextView; -import androidx.activity.result.ActivityResultLauncher; -import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.CallSuper; import androidx.annotation.Keep; import androidx.annotation.NonNull; @@ -24,7 +22,6 @@ import androidx.annotation.StyleRes; import app.organicmaps.base.BaseMwmFragmentActivity; import app.organicmaps.downloader.CountryItem; import app.organicmaps.downloader.MapManager; -import app.organicmaps.intent.Factory; import app.organicmaps.location.LocationHelper; import app.organicmaps.location.LocationListener; import app.organicmaps.util.Config; @@ -62,9 +59,6 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity @Nullable private Dialog mAlertDialog; - @NonNull - private ActivityResultLauncher mApiRequest; - private boolean mAreResourcesDownloaded; private static final int DOWNLOAD = 0; @@ -193,10 +187,6 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity UiUtils.setLightStatusBar(this, true); setContentView(R.layout.activity_download_resources); initViewsAndListeners(); - mApiRequest = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { - setResult(result.getResultCode(), result.getData()); - finish(); - }); if (prepareFilesDownload(false)) { @@ -215,8 +205,6 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity protected void onSafeDestroy() { super.onSafeDestroy(); - mApiRequest.unregister(); - mApiRequest = null; Utils.keepScreenOn(Config.isKeepScreenOnEnabled(), getWindow()); if (mCountryDownloadListenerSlot != 0) { @@ -359,14 +347,6 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity // Disable animation because MwmActivity should appear exactly over this one intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_CLEAR_TOP); - // See {@link SplashActivity.processNavigation()} - if (Factory.isStartedForApiResult(intent)) - { - // Wait for the result from MwmActivity for API callers. - mApiRequest.launch(intent); - return; - } - startActivity(intent); finish(); } diff --git a/android/app/src/main/java/app/organicmaps/SplashActivity.java b/android/app/src/main/java/app/organicmaps/SplashActivity.java index 4480aa4d34..0a11ab35ff 100644 --- a/android/app/src/main/java/app/organicmaps/SplashActivity.java +++ b/android/app/src/main/java/app/organicmaps/SplashActivity.java @@ -18,7 +18,6 @@ import androidx.annotation.StringRes; import androidx.appcompat.app.AppCompatActivity; import app.organicmaps.display.DisplayManager; -import app.organicmaps.intent.Factory; import app.organicmaps.location.LocationHelper; import app.organicmaps.util.Config; import app.organicmaps.util.LocationUtils; @@ -40,9 +39,6 @@ public class SplashActivity extends AppCompatActivity private boolean mCanceled = false; - @SuppressWarnings("NotNullFieldNotInitialized") - @NonNull - private ActivityResultLauncher mApiRequest; @SuppressWarnings("NotNullFieldNotInitialized") @NonNull private ActivityResultLauncher mPermissionRequest; @@ -70,10 +66,6 @@ public class SplashActivity extends AppCompatActivity setContentView(R.layout.activity_splash); mPermissionRequest = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), result -> Config.setLocationRequested()); - mApiRequest = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { - setResult(result.getResultCode(), result.getData()); - finish(); - }); mShareLauncher = SharingUtils.RegisterLauncher(this); if (DisplayManager.from(this).isCarDisplayUsed()) @@ -115,8 +107,6 @@ public class SplashActivity extends AppCompatActivity super.onDestroy(); mPermissionRequest.unregister(); mPermissionRequest = null; - mApiRequest.unregister(); - mApiRequest = null; } private void showFatalErrorDialog(@StringRes int titleId, @StringRes int messageId, Exception error) @@ -182,13 +172,6 @@ public class SplashActivity extends AppCompatActivity // https://github.com/organicmaps/organicmaps/pull/7287 intent.setFlags(intent.getFlags() & (Intent.FLAG_ACTIVITY_FORWARD_RESULT | Intent.FLAG_GRANT_READ_URI_PERMISSION)); - if (Factory.isStartedForApiResult(intent)) - { - // Wait for the result from MwmActivity for API callers. - mApiRequest.launch(intent); - return; - } - Config.setFirstStartDialogSeen(this); startActivity(intent); finish(); diff --git a/android/app/src/main/java/app/organicmaps/api/Const.java b/android/app/src/main/java/app/organicmaps/api/Const.java index 54cef106ff..1b8c4ef84d 100644 --- a/android/app/src/main/java/app/organicmaps/api/Const.java +++ b/android/app/src/main/java/app/organicmaps/api/Const.java @@ -9,9 +9,6 @@ public class Const public static final String EXTRA_PREFIX = AUTHORITY + ".extra"; public static final String ACTION_PREFIX = AUTHORITY + ".action"; - // Request extras - public static final String EXTRA_PICK_POINT = EXTRA_PREFIX + ".PICK_POINT"; - // Response extras public static final String EXTRA_POINT_NAME = EXTRA_PREFIX + ".POINT_NAME"; public static final String EXTRA_POINT_LAT = EXTRA_PREFIX + ".POINT_LAT"; diff --git a/android/app/src/main/java/app/organicmaps/editor/Editor.java b/android/app/src/main/java/app/organicmaps/editor/Editor.java index 4e359bb1aa..827d98af5a 100644 --- a/android/app/src/main/java/app/organicmaps/editor/Editor.java +++ b/android/app/src/main/java/app/organicmaps/editor/Editor.java @@ -55,8 +55,7 @@ public final class Editor public static native boolean nativeShouldShowEditPlace(); public static native boolean nativeShouldShowAddPlace(); - public static native boolean nativeShouldEnableEditPlace(); - public static native boolean nativeShouldEnableAddPlace(); + public static native boolean nativeShouldShowAddBusiness(); @NonNull public static native int[] nativeGetEditableProperties(); diff --git a/android/app/src/main/java/app/organicmaps/intent/Factory.java b/android/app/src/main/java/app/organicmaps/intent/Factory.java index d648b453e8..6f89d64ae9 100644 --- a/android/app/src/main/java/app/organicmaps/intent/Factory.java +++ b/android/app/src/main/java/app/organicmaps/intent/Factory.java @@ -28,14 +28,11 @@ import java.io.File; import java.util.Collections; import java.util.List; -import static app.organicmaps.api.Const.EXTRA_PICK_POINT; - public class Factory { public static boolean isStartedForApiResult(@NonNull Intent intent) { - return ((intent.getFlags() & Intent.FLAG_ACTIVITY_FORWARD_RESULT) != 0) - || intent.getBooleanExtra(EXTRA_PICK_POINT, false); + return (intent.getFlags() & Intent.FLAG_ACTIVITY_FORWARD_RESULT) != 0; } public static class KmzKmlProcessor implements IntentProcessor diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java index 9ff6318d50..c4a5dcec67 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java @@ -450,13 +450,8 @@ public class PlacePageView extends Fragment implements View.OnClickListener, else { UiUtils.showIf(Editor.nativeShouldShowEditPlace(), mEditPlace); + UiUtils.showIf(Editor.nativeShouldShowAddBusiness(), mAddOrganisation); UiUtils.showIf(Editor.nativeShouldShowAddPlace(), mAddPlace); - mEditPlace.setEnabled(Editor.nativeShouldEnableEditPlace()); - mAddPlace.setEnabled(Editor.nativeShouldEnableAddPlace()); - TextView mTvEditPlace = mEditPlace.findViewById(R.id.tv__editor); - TextView mTvAddPlace = mAddPlace.findViewById(R.id.tv__editor); - mTvEditPlace.setTextColor(Editor.nativeShouldEnableEditPlace() ? getResources().getColor(R.color.base_accent) : getResources().getColor(R.color.button_accent_text_disabled)); - mTvAddPlace.setTextColor(Editor.nativeShouldEnableEditPlace() ? getResources().getColor(R.color.base_accent) : getResources().getColor(R.color.button_accent_text_disabled)); UiUtils.showIf(UiUtils.isVisible(mEditPlace) || UiUtils.isVisible(mAddOrganisation) || UiUtils.isVisible(mAddPlace), mEditTopSpace); diff --git a/android/app/src/main/res/values-zh-rTW/strings.xml b/android/app/src/main/res/values-zh-rTW/strings.xml index ba8a8c6b4c..c138fe994f 100644 --- a/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/android/app/src/main/res/values-zh-rTW/strings.xml @@ -12,9 +12,9 @@ 刪除 下載地圖 - 下載失敗,點擊以再試一次 + 下載失敗,輕觸以再試一次 - 正在下載… + 下載中… 公里 @@ -25,13 +25,13 @@ 我的位置 - 以後再說 + 稍後 搜尋 搜尋地圖 - 您當前已禁用此裝置或應用程式的所有位置服務,請在設定中啟用。 + 您目前裝置所有的定位服務或相關應用程式是處於停用的狀態,請從系統設定中選擇啟用。 在地圖上顯示 @@ -42,39 +42,39 @@ 對每個人都免費,用愛製成 - • 沒有廣告,不會跟踪您,更不會收集您的數據 + •沒有廣告,不會跟踪您,更不會收集您的數據 - • 無需耗費太多電量,可離線工作 + • 無電池消耗,離線工作 - • 快速且簡約,由社區開發 + • 快速、簡約、由社區開發 - 由愛好者和志願者開發的開源應用程式。 + 由愛好者和志願者創建的開源應用程序。 位置設定 關閉 - 該應用程式需要硬體加速的 OpenGL。很遺憾,您的裝置不受支持。 + 需要 OpenGL 硬體加速功能的支援。但很不幸的,您的裝置並不支援此功能! 下載 請拔除 USB 線或插入 SD 卡以使用 Organic Maps - 請先釋放一些 SD 卡 / USB 儲存空間以使用 Organic Maps。 - 在您開始使用此應用程式之前,請下載全球地圖到您的裝置。\n它將使用 %s 的儲存空間。 - 前往地圖 - 正在下載%s。您現在可以\n繼續查看地圖。 - 下載%s的地圖嗎? - 更新%s的地圖嗎? + 如要繼續使用,請先釋放一些 SD 卡/ USB 儲存空間 + 在您開始之前,先讓我們下載世界地圖到您的裝置中以便瀏覽。\n這需要資料的 %s。 + 跳到地圖 + 正在下載 %s。您現在 可以繼續使用地圖了 + 下載 %s? + 更新 %s? 暫停 繼續 - %s的地圖下載失敗 + %s 下載失敗 - 新增新的書籤列表 + 新增收藏夾 書籤顏色 - 書籤列表名稱 + 收藏夾名稱 書籤 @@ -92,9 +92,9 @@ 將地圖儲存至 - 選擇下載地圖的資料夾。 + 請選擇下載地圖後要放的位置 - 已下載的地圖 + 地圖 內部私人儲存 @@ -110,7 +110,7 @@ 移動地圖檔案時出錯 - 這可能需要幾分鐘的時間\n請稍候… + 這可能需要幾分鐘\n請稍候… 測量單位 @@ -120,9 +120,9 @@ 在哪兒吃 - 食品 + 食物 - 交通 + 運輸 加油站 @@ -130,7 +130,7 @@ 購物 - 二手貨 + 二手 旅館 @@ -138,7 +138,7 @@ 娛樂 - 自動提款機 + 自動櫃員機 夜生活 @@ -162,38 +162,38 @@ - 露營車設施 + 房車用 - 註釋 + 描述說明 - 已與您分享 Organic Maps 書籤 + 已分享 Organic Maps 書籤 您好!\n\n附件是我的書籤,請在 Organic Maps 中打開。如果您沒有安裝 Organic Maps,可以在這裡下載: https://omaps.app/get?kmz\n\n祝您使用 Organic Maps 旅行愉快! 正在載入書籤… - 書籤載入成功! 您可以在地圖或書籤管理畫面中找到它們。 + 書籤上傳成功! 您可以在地圖上或是書籤管理畫面中找到書籤。 - 書籤載入失敗,檔案可能已損壞或不完整。 + 書籤上傳失敗。 檔案可能有毀損或是不完全。 應用程式無法識別該文件類型:\n%1$s - 無法打開檔案 %1$s\n\n%2$s + 無法開啟文件 %1$s\n\n%2$s 編輯 - 您的位置尚未確定 + 您的位置尚未定位完成 很抱歉,地圖儲存設定目前已停用。 - 地圖下載進行中。 + 地圖下載中。 - 嘿,在 Organic Maps 查看我的目前的位置吧!請打開 %1$s 或 %2$s 鏈接,還沒安裝離線地圖?在此下載: https://omaps.app/get + 嘿,在 Organic Maps 查看我的目前位置吧! %1$s 或%2$s 沒安裝離線地圖?在此下載: https://omaps.app/get - 嘿,看看我在 Organic Maps 上標記的圖釘吧! + 嘿,看看我在 Organic Maps 地圖上的圖釘! - 嗨,到 Organic Maps 查看我目前的位置! + 嗨,到 Organic Maps 地圖查看我的目前位置! 嗨,\n\n我現在在這:%1$s。點擊此連結 %2$s 或此連結 %3$s 來查看在地圖上的位置。\n\n謝謝。 @@ -207,7 +207,7 @@ OpenStreetMap 數據:%s - 您確定要繼續嗎? + 確定要繼續嗎? 軌跡 @@ -233,7 +233,7 @@ 3D 建築 - 3D 建築在省電模式下處於關閉狀態 + 3D 建築在省電模式下關閉 語音指示 @@ -243,18 +243,18 @@ 語音語言 - 測試語音指令(TTS,文本轉語音系統) + 測試語音指令(TTS、文本轉語音 - 如果您現在聽不到聲音,請檢查音量或系統文本轉語音系統的設定。 + 如果您現在聽不到聲音,請檢查音量或系統文本轉語音設置。 - 不可用 + 無法使用 自動縮放 關閉 - 1 小時 - 2 小時 - 6 小時 - 12 小時 - 1 天 + 1小時 + 2小時 + 6小時 + 12小時 + 1天 距离 在地圖上查看 @@ -268,7 +268,7 @@ X (推特) - 反饋 + 意見反應 為我們評分 @@ -278,34 +278,34 @@ 捐助我們 - 支持本項目 + 支持項目 版權 報告問題 - 通過以 8 字形移動手機來改善箭頭方向,以校準羅盤。 + 通過以八字形移動手機來校準指南針來改善箭頭方向 - 通過以 8 字形移動手機以校準羅盤,並在地圖上固定箭頭方向。 + 以 8 字形移動手機以校準指南針並固定地圖上的箭頭方向 - 再次長按地圖即可查看介面 + 再次長按地圖即可看到介面 更新全部 - 取消全部 + 全部取消 已下載 - 已加入到下載隊列 + 已加入下載隊列 在我附近 地圖 下載全部 正在下載: - 要刪除地圖,請停止導航。 + 如欲刪除地圖,請停止導航。 - 路線只能完全處在同一地圖裡時才能被規劃。 + 路程只能完全處在同一地圖裡時才能被建立。 下載地圖 @@ -319,9 +319,9 @@ 使用藍牙、WiFi 或行動網路快速確定您的大致位置 - 下載路線上的所有地圖 + 下載沿線地圖 - 規劃路線需要下載並更新好所有從您的位置到目的地的地圖。 + 建立路線需要下載並更新好所有從您的位置到目的地的地圖。 空間不足 @@ -340,7 +340,7 @@ 紫色 - 橙色 + 橘色 棕色 @@ -356,7 +356,7 @@ 青檸 - 深橙色 + 深橘色 灰色 @@ -364,48 +364,48 @@ 依照路線行進時,請牢記: - — 路況、交通法規和路標始終優先於導航建議; - — 地圖可能不準確,建議的路線可能並非總是前往目的地的最佳路線; - — 建議的路線僅作為推薦路線供您參考; - — 小心對待國界區的路線:我們的應用程式建立的路線有時會在未經授權的地方跨越國界; - 上路時請當心,祝您一路平安! - 檢查 GPS 訊號 - 無法規劃路線。無法識別當前 GPS 座標。 - 請檢查您的 GPS 訊號。啟用無線網路將改善定位精度。 + — 路況、交通規則及號誌優先於導航意見; + — 地圖可能不準確,建議的路線不盡然是最佳選擇; + — 建議的路線僅供推薦參考; + — 小心對待國界區的路線:我們應用程式建立的路線有時會在未經授權的地方跨越國界; + 請保持警戒,一路平安! + 查看 GPS 訊號 + 無法產生路線。 無法定位目前 GPS 座標。 + 請確認您的 GPS 訊號。啟用無線網路將提升地理位置定位準確度。 啟用定位服務 - 無法定位目前 GPS 座標。請啟用定位服務以規劃路線。 - 無法定位路線 - 無法規劃路線。 - 請調整您的起點或目的地。 - 調整出發點 - 路線未規劃。無法定位起點。 + 無法定位目前 GPS 座標。請啟用定位服務以產生路線。 + 路線未找到 + 無法產生路線。 + 請變更起點或最終目的地。 + 變更起點 + 此路線尚未產生。無法定位起點。 請選擇更接近道路的起點。 - 調整目的地 - 路線未規劃。無法定位目的地。 - 請選擇更接近道路的目的地位置。 - 無法定位途徑點。 - 請調整您的途徑點。 + 變更目的地 + 未產生路線。無法定位目的地。 + 請選擇更接近道路的目的地。 + 找不到中途休息站。 + 請調整您的中途休息站。 系統錯誤 - 由於應用程式出錯,因此無法規劃路線。 + 由於此錯誤,尚未建立路線。 請再試一次 - 以後再說 - 您是否要下載地圖,以規劃跨越邊界的更佳路線? - 下載地圖,以規劃一條跨越邊界的更佳路線。 + 現在不要 + 您是否要下載地圖,產生跨越邊界的更好路線? + 若要產生跨越邊界的更理想路線,您需要下載地圖。 - 要開始搜索和規劃路線,請下載地圖,然後您就不再需要網絡連接了。 + 要開始搜索和建立路線,請下載地圖,那您就不再需要網絡連接了。 選擇地圖 顯示 隱藏 類別 - 歷史 - 很抱歉,沒有搜到任何地點。 + 記錄 + 很抱歉,沒有找到任何地點。 - 下載您要搜尋的區域的地圖,或嘗試輸入附近的城鎮或村莊名稱。 + 下載您要搜尋的區域或嘗試新增附近的城鎮/村莊名稱。 搜尋歷史紀錄 - 查看您最近的搜尋記錄。 + 檢視最近的搜尋。 清除搜尋記錄 維基百科 @@ -427,8 +427,8 @@ 刪除排程 全天 (24 小時) - 正在營業 - 已歇業 + 開始營業時間 + 結束營業時間 新增休息時間 營業時間 高級模式 @@ -447,12 +447,12 @@ 自動下載 每天 - 24/7 全天候營業 + 全天候 今天不營業 不營業 今天 將於 %s 後開業 - 將於 %s 後歇業 + 將於 %s 後停業 已停止營業 編輯營業時間 沒有 OpenStreetMap 帳號嗎? @@ -487,45 +487,45 @@ 樓層:%s 所有對地圖的修改都將與地圖一起被刪除。 更新地圖 - 為了規劃路線,您需要更新全部地圖並重新規劃路線。 - 搜尋地圖 - 請檢查您的設定並確保您的裝置已連接至網路。 - 沒有足夠的空間 + 為了建立路線,您需要更新全部地圖並重新規劃路線。 + 尋找地圖 + 請檢查您的設定並確保您的設備已連接至網路。 + 無足夠的空間 請刪除不必要的資料 - 無法登入。 + 登入錯誤。 已驗證的變更 拖動地圖以選擇此物件的正確位置。 編輯中 新增中 該地點的名稱 - 當地語言寫道 + 因為它是用當地語言寫的 類別 問題的詳細描述 不同的問題 - 地點無法放置在這裡 + 物件無法設置在這裡 - 截至 %s 的社群創建的 OpenStreetMap 資料。請訪問 OpenStreetMap.org 以了解有關如何編輯和更新地圖的更多信息。 + 截至 %s 的社群創建的 OpenStreetMap 資料。請訪問 OpenStreetMap.org 以了解更多有關如何編輯和更新地圖的更多信息。 登入,讓其他使用者能看到您所作出的修改。 - %1$d / %2$d + %1$d個/共%2$d個 用手機網路連線下載嗎? 如果您使用行動數據或漫遊來進行下載,將可能導致額外的費用。 輸入正確的門牌號碼 - 樓層數量(最多 %d 層) + 樓層數(最大 %d) - 最多可編輯 %d 層的建築 + 編輯最多 %d 層的建築 郵遞區號 輸入正確的郵遞區號 - 未知地點 + 未知的位置 給 OSM 社區發送標記 詳細註釋 您建議的變更將傳送至 OpenStreetMap 社群。說明無法在 Organic Maps 中編輯的詳細資料。 關於 OpenStreetMap 的更多資訊 - 經營者 + 營運者 找不到合適的類別? - Organic Maps 只允許添加簡單的點類別,即無法添加城鎮、道路、湖泊、建築輪廓等類別。請直接向 OpenStreetMap.org 新增此類類別。請查看我們的指南,以了解詳細的步驟說明。 + Organic Maps 只允許添加簡單的點類別,即無法添加城鎮、道路、湖泊、建築輪廓等類別。 請直接向OpenStreetMap.org新增此類類別。 請查看我們的指南,以了解詳細的步驟說明。 您尚未下載任何地圖 下載地圖來尋找位置和離線瀏覽。 @@ -545,22 +545,22 @@ 照片、評論、預訂 - 每次通過此鏈接預定所獲得的推薦獎金將用於 Organic Maps 的開發。 + 透過此連結進行的每次預訂收到的推薦獎金將用於開發 Organic Maps。 Kayak 上的詳細資訊 編輯書籤 - 備註… + 註解… 重設所有本機變更? 重設 - 移除已新增的地點? + 移除已新增的位置? 移除 該地點不存在 請註明刪除該地點的原因 輸入正確的電話號碼 - 請輸入有效的網址 - 請輸入有效的電子郵件 + 輸入有效網址 + 輸入有效電子郵件 請輸入有效的 Facebook 網頁地址、帳號或頁面名稱 請輸入有效的 Instagram 用戶名或網頁地址 請輸入有效的 Twitter 用戶名或網頁地址 @@ -568,7 +568,7 @@ 請輸入有效的 LINE ID 或網頁地址 將地點新增至 OpenStreetMap - 您想要發送給所有使用者嗎? + 您想要發給所有用戶嗎? 確保您沒有輸入任何個人資料。 OpenStreetMap 編輯人員將檢查更改並在有任何問題時與您聯繫。 @@ -577,70 +577,70 @@ 接受 拒絕 - 使用手機網路顯示更多詳細資訊嗎? + 使用手機網路顯示詳細資訊? 一律使用 僅限今天 今天不使用 手機網路 - 要顯示地點的詳細資訊(例如照片、價格和評價),需要使用手機網絡。 + 需有手機網路才能顯示相片、價格與評論等詳細資訊和地點。 絕不使用 一律詢問 - 諾要顯示交通資料,必須更新地圖。 + 若要顯示交通資料,必須更新地圖。 增加地圖上的字體大小 請更新 Organic Maps - 交通資訊不可用 - 啟用日誌記錄 + 無法使用交通資訊 + 啟用記錄 一般反應 - 我們的語音導航使用“文本轉語音”系統。許多 Android 裝置使用 Google 的文本轉語音系統,您可以從 Google Play (https://play.google.com/store/apps/details?id=com.google.android.tts) 下載或更新這一功能。 - 對於某些語言,您需要從應用商店(例如 Google Play Store、Galaxy Store)中安裝其他語音合成器或語言包。\n打開您的裝置的設定 → 語言和輸入法 → 語音 → 文字轉語音 (TTS) 輸出。\n您可以在這裡管理語音合成的設定(例如,下載語言包供離線使用)和選擇其他文字轉語音引擎。 - 如需瞭解更多資訊,請參閱此指南。 - 拉丁字母音譯 + 我們使用系統 TTS 提供語音指示。許多 Android 裝置使用 Google TTS,您可從 Google Play 下載或更新 (https://play.google.com/store/apps/details?id=com.google.android.tts) + 對於某些語言,您將需要從 App 商店 (Google Play 商店, Galaxy Store) 安裝其他語音合成器或額外的語言套件。\n開啟您裝置的設定 → 語言與輸入 → 語音 → 文字轉換語音輸出。\n在這裡,您可以管理語音合成器的設定(例如,下載語言套件以供離線使用),並選取其他文字轉換語音引擎。 + 如需更多資訊,請參閱本指南。 + 音譯為拉丁文 瞭解更多資訊 退出 - 請搜尋地點或點擊地圖以新增路線起點 + 請使用搜尋或點擊地圖以新增路線起點 - 請搜尋地點或點擊地圖以新增目的地 + 請使用搜尋或點擊地圖以新增目的地 移除 新增經停點 - 請登入 OpenStreetMap 以自動上傳您的所有地圖編輯。諾要了解更多資訊請點擊這裡 - 儲存空間訪問問題 - 外部儲存空間不可用,很可能是因為 SD 卡已移除、毀損,或檔案系統處於唯讀狀態。請進行檢查,然後通過 support\@organicmaps.app 聯絡我們。 + 請登入 OpenStreetMap 自動上傳您所有的地圖編輯內容。了解更多此處 + 儲存空間存取問題 + 外部儲存空間不可用,很可能是因為 SD 卡已移除、毀損,或檔案系統處於唯讀狀態。請進行檢查,然後以 support\@organicmaps.app 方式聯繫我們 模擬不良儲存空間 入口 請輸入正確的名稱 - 列表 + 清單 全部隱藏 全部顯示 %d 個書籤 - 創建新的列表 + 創建新列表 導入書籤和軌跡 - 由於應用程式出錯,導致無法分享 - 無法分享 - 無法分享空列表 + 由於 app 出錯而無法分享 + 分享錯誤 + 無法分享空的列表 名字不能為空 請輸入列表名稱 新的列表 - 這個名稱已經被使用了 + 這個名字已經被使用了 請選擇其他名稱 請稍候… 電話號碼 OpenStreetMap 資料 - 找到 %d 個文件,轉換後您才能看到它們。 + 找到%d個文件。 轉換後你會看到它。 恢復 - %d 個軌跡 + %d 軌跡 隱私 @@ -650,15 +650,15 @@ 捷運 地圖樣式和圖層 捷運圖層不可用 - 該列表為空 - 要增加新書籤,請點擊對象卡片中的星型圖標 + 列表為空 + 要增加新標籤,請點一下對象卡片中的星型圖標 …更多 - 導出為 KMZ - 導出為 GPX + 出口KMZ + 導出GPX 刪除列表 - 允許公眾訪問 - 不允許訪問的私人空間 - 增加說明(文字或 html) + 開放空間 + 私人空間 + 增加說明(文字或html) 私人 限速拍照 地點說明 @@ -673,24 +673,24 @@ 省電模式 如果開啟省電模式,應用程序將根據手機的當前電量關閉耗電功能 從不 - 當電量低時 + 自動 最大程度省電 - 暫時啟用此選項,以便使用“報告問題”功能在幫助對話框中記錄並手動發送詳細的診斷日誌給我們。日誌可能包含位置資訊。 + 暫時啟用此選項,以便使用「回報問題」功能在幫助對話框中記錄並手動發送詳細的診斷日誌給我們。日誌可能包含位置資訊。 線上編輯 繞行設定 避開收費公路 - 避開未鋪砌道路 + 避開未鋪設道路 避開渡輪 避開高速公路 無法規劃路線 - 很遺憾,我們無法使用所選的繞行設定規劃路線。請更改設定,然後重試 - 選擇要避開的道路 + 很遺憾,我們無法使用所選選項規劃路線。請更改設定,然後重試 + 設定繞行路徑 繞行設定已開啟 收費公路 - 未鋪砌道路 + 土路 渡輪 @@ -702,14 +702,14 @@ 容量:%s - 您已到達目的地! - 好的 + 您已經到達了! + - 排序… + 分類…… - 分類排序 + 分類書籤 - 使用默認值 + 採用預設值 按類型 @@ -722,17 +722,17 @@ 一個月前 一個多月前 一年多以前 - 在我附近 + 附近 其他 食物 - 旅遊景點 + 觀光景點 博物館 公園 游泳 山峰 - 動物 + 動物園 旅館 建築物 貨幣 @@ -741,7 +741,7 @@ 加油站 醫療 在列表中搜尋 - 宗教場所 + 宗教聖地 選擇列表 本區域的地鐵導航目前不可用 未找到捷運路線圖 @@ -753,11 +753,11 @@ 下坡 最小高度 最大高度 - 難度 + 難易度 距離: 時間: 放大地圖以查看等高線 - 正在下載 + 載入 下載世界地圖 無法在內部儲存或 SD 卡上建立資料夾和移動檔案 @@ -773,7 +773,7 @@ 在鎖定螢幕上顯示 - 啟用後,即使裝置已鎖定,應用程式仍會在鎖定螢幕上運作。 + 啟用後,即使設備已鎖定,應用程式仍會在鎖定螢幕上運作。 地圖數據來自 OpenStreetMap @@ -783,7 +783,7 @@ 感謝您使用我們社區構建的地圖! - 有了您的捐贈和支持,我們可以創造世界上最好的地圖! + 有了您的捐贈和支持,我們可以創建世界上最好的地圖! 您喜歡我們的應用程序嗎?請捐款以支持發展!還不喜歡嗎?請告訴我們,我們會修復您提到的問題! @@ -807,27 +807,27 @@ 您已連接到 Android Auto - 在手機上繼續 + 繼續打電話 - 轉到汽車屏幕 + 到車用螢幕 此應用程式需要訪問您的位置以進行導航。 授予權限 - 與汽車連接 + 連接到汽車 - 徒步旅行 + 遠足 網路瀏覽器不可用 音量 - 匯出所有書籤和軌跡 + 匯出所有書籤和曲目 文本轉語音系統設定 - 未找到語音合成設定,您確定您的裝置支援該設定嗎? - 免下車通道 + 未找到語音合成設置,您確定您的設備支援它嗎? + 免下車服務 清除搜尋 放大 diff --git a/android/app/src/main/res/values-zh/strings.xml b/android/app/src/main/res/values-zh/strings.xml index 55b965fd05..79b0bb8bbe 100644 --- a/android/app/src/main/res/values-zh/strings.xml +++ b/android/app/src/main/res/values-zh/strings.xml @@ -12,9 +12,9 @@ 删除 下载地图 - 下载失败,点击以再试一次 + 下载失败,重新轻触再试一次 - 正在下载… + 下载… 公里 @@ -25,62 +25,62 @@ 我的位置 - 以后再说 + 稍后 搜索 搜索地图 - 您当前已禁用此设备或应用程序的所有位置服务,请在设置中启用。 + 您目前有此设备的所有位置服务或应用已禁用。请在设置中启用它们。 在地图上显示 下载失败 - 再试一次 + 重试 关于 Organic Maps 对每个人都免费,用爱制成 - • 没有广告,不会跟踪您,更不会收集您的数据 + •没有广告,不会跟踪您,更不会收集您的数据 - • 无需耗费太多电量,可离线工作 + • 无需耗费电池,可离线工作 - • 快速且简约,由社区开发 + • 快速、简约、由社区开发 - 由爱好者和志愿者开发的开源应用程序。 + 由爱好者和志愿者创建的开源应用程序。 位置设置 关闭 - 该应用程序需要硬件加速的 OpenGL。很遗憾,您的设备不受支持。 + 硬件加速的 OpenGL 是必需的。遗憾的是您的设备不支持此功能。 下载 - 请拔除 USB 线或插入 SD 卡以使用 Organic Maps + 请断开 USB 线或插入存储卡以使用 Organic Maps - 请先释放一些 SD 卡 / USB 存储空间以使用 Organic Maps。 - 在您开始使用此应用程序之前,请下载全球地图到您的设备。\n它将使用 %s 的存储空间。 + 请在存储卡/ USB 储存设备上释放一些空间以 使用此应用 + 在您开始前请让我们下载通用世界地图至您的设备中。\n它需要%s的 数据。 前往地图 - 正在下载%s。您现在可以\n继续查看地图。 - 下载%s的地图吗? - 更新%s的地图吗? + 下载 %s。您现在可\n前往地图。 + 下载 %s? + 更新 %s? 暂停 继续 - %s的地图下载失败 + %s下载失败 - 添加新的书签列表 + 添加新的集合 书签颜色 - 书签列表名称 + 书签集名称 书签 书签和轨迹 - 我的地点 + 我的位置 名字 @@ -92,9 +92,9 @@ 将地图保存到 - 选择下载地图的文件夹。 + 选取地图应该下载的位置 - 已下载的地图 + 地图 内部私人存储 @@ -124,7 +124,7 @@ 交通 - 加油站 + 汽油 停车场 @@ -132,7 +132,7 @@ 二手货 - 酒店 + 旅店 旅游景点 @@ -152,7 +152,7 @@ 厕所 - 邮局 + 邮政 警察局 @@ -162,46 +162,46 @@ - 房车设施 + 房车用 注释 - 已与您分享 Organic Maps 书签 + Organic Maps 书签已与您共享 您好!\n\n附件是我的书签,请在 Organic Maps 中打开。如果您没有安装 Organic Maps,可以在这里下载: https://omaps.app/get?kmz\n\n祝您使用 Organic Maps 旅行愉快! - 正在载入书签… + 加载书签 - 书签载入成功!您可以在地图或书签管理页面中找到它们。 + 书签加载成功!您可以在地图或书签管理窗口中找到它们。 - 书签载入失败,文件可能已损坏或不完整。 + 书签上传失败。该文件可能已损坏或有缺陷。 - 应用程序无法识别该文件类型:\n%1$s + 应用程序无法识别文件类型:\n%1$s - 无法打开文件 %1$s\n\n%2$s + 打开文件失败 %1$s\n\n%2$s 编辑 您的位置尚未确定 - 很抱歉,地图存储设置目前已停用。 + 抱歉,地图存储设置目前被禁用 地图下载进行中。 - 嘿,在 Organic Maps 上查看我目前的位置吧!请打开 %1$s 或 %2$s 链接,还没安装离线地图?在此下载: https://omaps.app/get + 嘿,在 Organic Maps 上查看我目前的位置吧!%1$s 或%2$s 未安装离线地图?在此下载: https://omaps.app/get - 嘿,看看我在 Organic Maps 上标记的图钉吧! + 嘿,在 Organic Maps 上查看我标注的图钉吧! - 嗨,到 Organic Maps 查看我当前的位置! + 嗨,到 Organic Maps 查看我的当前位置! 嗨,\n\n我现在在这:%1$s。点击此链接 %2$s 或此链接 %3$s 来查看在地图上的位置。\n\n谢谢。 分享 - 电子邮件 + 邮件 - 已复制到剪贴板:%s + 复制到剪贴板:%s 完成 @@ -212,7 +212,7 @@ 轨迹 长度 - 分享我的位置 + 共享我的位置 常规设置 @@ -233,7 +233,7 @@ 3D 建筑 - 3D 建筑在省电模式下处于关闭状态 + 3D 建筑在省电模式下关闭 语音指导 @@ -243,18 +243,18 @@ 语音语言 - 测试语音指令(TTS,文本转语音系统) + 测试语音指令(TTS,Text-To-Speech) - 如果您现在听不到声音,请检查音量或系统文本到语音系统的设置。 + 如果现在听不到语音,请检查音量或系统文本到语音设置。 - 不可用 + 无法使用 自动缩放 关闭 - 1 小时 - 2 小时 - 6 小时 - 12 小时 - 1 天 + 1小时 + 2小时 + 6小时 + 12小时 + 1天 距离 在地图上查看 @@ -278,21 +278,21 @@ 捐助我们 - 支持本项目 + 支持项目 版权 报告问题 - 通过以 8 字形移动手机来改善箭头方向,以校准罗盘。 + 通过以八字形运动移动手机来改善箭头方向,以校准罗盘。 - 通过以 8 字形移动手机以校准罗盘,并在地图上固定箭头方向。 + 以八字动作移动手机,校准罗盘,并在地图上固定箭头方向。 - 再次长按地图即可查看界面 + 再次长按地图查看界面 更新全部 - 取消全部 + 全部取消 已下载 @@ -305,7 +305,7 @@ 要删除地图,请停止导航。 - 路线只能完全处在同一地图里时才能被规划。 + 路程只能完全处在同一地图里时才能被创建。 下载地图 @@ -319,9 +319,9 @@ 通过蓝牙、WiFi 或移动网络快速确定您的大致位置 - 下载路线上的所有地图 + 下载沿线地图 - 规划路线需要下载并更新好所有从您的位置到目的地的地图。 + 创建路线需要下载并更新好所有从您的位置到目的地的地图。 空间不足 @@ -340,7 +340,7 @@ 紫色 - 橙色 + 橘红色 棕色 @@ -356,7 +356,7 @@ 青柠 - 深橙色 + 深橘色 灰色 @@ -365,35 +365,35 @@ 按照路线行进时,请谨记: — 路况、交通法规和路标始终优先于导航建议; - — 地图可能不准确,建议的路线可能并非总是去往目的地的最佳路线; + — 地图可能不准确,建议的路线可能并非总是去往目的地的最佳路径; — 建议的路线仅作为推荐路线供您采纳; - — 小心对待国界区的路线:我们的应用程序生成的路线有时会在未经授权的地方跨越国界; + — 小心对待国界区的路线:我们应用创造的路线有时会在未经授权的地方跨越国界; 上路时请当心,祝您一路平安! 检查 GPS 信号 - 无法规划路线。无法识别当前 GPS 坐标。 - 请检查您的 GPS 信号。启用无线网络将改善定位精度。 + 无法创建路线。当前 GPS 坐标无法识别。 + 请检查您的 GPS 信号。启用无线网络将改善您的定位精度。 启用定位服务 - 无法定位当前 GPS 坐标。请启用定位服务以规划路线。 + 无法定位当前 GPS 坐标。请启用定位服务以计算路线。 无法定位路线 - 无法规划路线。 + 无法创建路线。 请调整您的起点或目的地。 调整出发点 - 路线未规划。无法定位起点。 + 路线未创建。无法定位起点。 请选择更靠近公路的起点。 调整目的地 - 路线未规划。无法定位目的地。 + 路线未创建。无法定位目的地。 请选择更靠近公路的目的地位置。 - 无法定位途径点。 - 请调整您的途径点。 + 无法定位中间点。 + 请调整您的中间点。 系统错误 - 由于应用程序出错,因此无法规划路线。 - 请再试一次 - 以后再说 - 您是否要下载地图,以规划跨越边界的更佳路线? - 下载地图,以规划一条跨越边界的更佳路线。 + 由于应用程序错误,无法创建路线。 + 请重试 + 现在不用 + 您是否要下载地图并创建一条跨越多张地图的更佳路线? + 下载地图,创建一条跨越此地图边缘的更佳路线。 - 要开始搜索和规划路线,请下载地图,然后您就不再需要网络连接了。 + 要开始搜索和创建路线,请下载地图,那您就不再需要网络连接了。 选择地图 显示 @@ -401,11 +401,11 @@ 隐藏 类别 历史 - 很抱歉,没有搜到任何地点。 + 很抱歉,没有找到任何地点。 - 下载您要搜索的区域的地图,或尝试输入附近的城镇或村庄名称。 + 下载要搜索的地区或尝试添加附近的城镇/村庄名称。 搜索历史记录 - 查看您最近的搜索记录。 + 快速访问最近的搜索查询。 清除搜索记录 维基百科 @@ -426,10 +426,10 @@ 添加计划 删除计划 - 全天(24 小时) - 正在营业 - 已歇业 - 添加休息时间 + 全天(24小时) + 开始营业时间 + 结束营业时间 + 添加非营业时间 营业时间 高级模式 简易模式 @@ -438,7 +438,7 @@ 纠正错误 位置 请详细描述此问题以便 OpenStreetMap 社区能够修复此错误。 - 或者在 https://www.openstreetmap.org/ 上亲自修复此错误。 + 或者在https://www.openstreetmap.org/上亲自修复此错误。 发送 问题 该地点不存在 @@ -447,15 +447,15 @@ 自动下载 每天 - 24/7 全天候营业 + 全天候 今天不营业 不营业 今天 将于 %s 后开业 - 将于 %s 后歇业 + 将于 %s 后停业 已停止营业 - 编辑营业时间 - 没有 OpenStreetMap 账户吗? + 编辑工作时间 + 在OpenStreetMap上没有账户吗? 注册 登录 @@ -480,19 +480,19 @@ 菜肴 选择菜肴 - 电子邮件或用户名 + 邮箱或用户名 新增电话号码 楼层 楼层:%s 所有对地图的修改都将与地图一起被删除。 更新地图 - 为了规划路线,您需要更新全部地图并重新规划路线。 - 搜索地图 + 为了创建路线,您需要更新全部地图并重新规划路线。 + 找到地图 请检查您的设置并确保您的设备已连接至网络。 - 没有足够的空间 + 无足够的空间 请删除不必要的数据 - 无法登录。 + 登录错误。 已验证的更改 拖动地图以选择此对象的正确位置。 编辑中 @@ -502,32 +502,32 @@ 当地语言写道 类别 问题的详细描述 - 不同的问题 - 地点不能放置在这里 + 一个不同的问题 + 对象无法设置在这里 - 截至 %s 的社区创建的 OpenStreetMap 数据。请访问 OpenStreetMap.org 以了解有关如何编辑和更新地图的信息。 + 截至 %s 的社区创建的 OpenStreetMap 数据。请访问 OpenStreetMap.org 以了解更多有关如何编辑和更新地图的信息。 登录,让其他用户能看到您所作出的修改。 - %1$d / %2$d + %1$d个/共%2$d个 用手机网络连接下载吗? 如果您使用移动数据或漫游来进行下载,将可能导致额外的费用。 - 输入正确的门牌号码 - 楼层数量 (最多 %d 层) + 输入正确的房屋号 + 楼号 (最大 %d) 最多可编辑 %d 层的建筑 邮政编码 输入正确的邮政编码 - 未知地点 + 未知位置 给 OSM 社区发送标记 详细备注 您建议的更改将发送至 OpenStreetMap 社区。说明无法在 Organic Maps 编辑的详情。 关于 OpenStreetMap 的更多信息 - 经营者 + 运营者 找不到合适的类别? - Organic Maps 只允许添加简单的点类别,即无法添加城镇、道路、湖泊、建筑轮廓等类别。请直接向 OpenStreetMap.org 添加此类类别。请查看我们的指南,了解详细的步骤说明。 + Organic Maps 只允许添加简单的点类别,即无法添加城镇、道路、湖泊、建筑轮廓等类别。请直接向OpenStreetMap.org添加此类类别。请查看我们的指南,了解详细的步骤说明。 您尚未下载任何地图 - 下载地图来查找位置和离线浏览。 + 下载地图来查找位置和离线浏览 @@ -547,20 +547,20 @@ 每次通过此链接预订所获得的推荐奖金将用于 Organic Maps 的开发。 - 客涯 (Kayak) 上的详细信息 + Kayak 上的详细信息 编辑书签 备注… 重置所有本地更改? 重置 - 删除已添加的地点? + 删除已添加的位置? 删除 该地点不存在 请注明删除该地点的原因 输入正确的电话号码 - 请输入有效的网址 - 请输入有效的电子邮件 + 输入有效网址 + 输入有效电子邮箱 请输入有效的 Facebook 网页地址、账号或页面名称 请输入有效的 Instagram 用户名或网页地址 请输入有效的 Twitter 用户名或网页地址 @@ -568,7 +568,7 @@ 请输入有效的 LINE ID 或网页地址 将地点添加到 OpenStreetMap - 您想要发送给所有用户吗? + 您想要发给所有用户吗? 确保您没有输入任何个人数据。 OpenStreetMap 编辑人员将检查更改并在有任何问题时与您联系。 @@ -577,7 +577,7 @@ 接受 拒绝 - 使用移动网络显示更多详细信息吗? + 使用移动网络显示详细信息? 始终使用 仅在今天 今天不使用 @@ -586,31 +586,31 @@ 要显示地点的详细信息(例如照片、价格和评价),需要使用移动网络。 从不使用 总是询问 - 诺要显示交通数据,必须更新地图。 + 要显示交通数据,必须更新地图。 增大地图上的字体大小 请更新 Organic Maps 交通数据不可用 - 启用日志记录 + 启用记录 - 常规反馈 - 我们的语音导航使用“文本转语音”系统。许多 Android 设备使用 Google 的文本转语音系统,您可以从 Google Play (https://play.google.com/store/apps/details?id=com.google.android.tts) 下载或更新这一功能 - 对于某些语言,您需要从应用商店(例如 Google Play 商店、Galaxy Store)中安装其他语音合成器或语言包。\n打开您的设备的设置 → 语言和输入法 → 语音 → 文字转语音 (TTS) 输出。\n您可以在这里管理语音合成的设置(例如,下载语言包供离线使用)和选择其他文字转语音引擎。 + 一般反馈 + 我们为语音指令使用“文字转语音”系统。许多 Android 设备使用 Google 文字转语音,您可以从 Google Play (https://play.google.com/store/apps/details?id=com.google.android.tts) 下载或更新这一功能 + 对于某些语言,您需要从应用商店(Google Play Market、Galaxy Store)中安装其他语音合成器或语言包。\n打开您的设备的设置 → 语言和输入法 → 语音 → 文字转语音 (TTS) 输出。\n您可以在这里管理语音合成的设置(例如,下载语言包供离线使用)和选择其他文字转语音引擎。 如需了解更多信息,请查阅此指南。 - 拉丁字母音译 - 了解更多信息 + 直译成拉丁文 + 了解更多 退出 - 请搜索地点或点击地图以添加路线起点 + 请使用搜索或点击地图以添加路线起点 - 请搜索地点或点击地图以添加目的地 + 请使用搜索或点击地图以添加目的地 移除 添加经停点 - 请登录 OpenStreetMap 以自动上传您的所有地图编辑。诺要了解更多信息请点击这里 + 请登录OpenStreetMap,自动上传您编辑的所有地图。了解更多信息请点击这里 存储空间访问问题 - 外部存储空间不可用,很可能是因为 SD 卡已移除、损毁,或者文件系统为只读状态。请进行检查,然后通过 support\@organicmaps.app 联系我们。 + 外部存储空间不可用,可能是存储卡已移除、损坏,或者文件系统为只读。请检查,然后通过以下方式联系我们:support\@organicmaps.app 模拟不良存储空间 入口 请输入正确的名称 @@ -624,23 +624,23 @@ 创建新的列表 导入书签和轨迹 - 由于应用程序出错,导致无法分享 - 无法分享 + 由于应用程序出错而无法分享 + 分享错误 无法分享空列表 名字不能为空 请输入列表名称 新的列表 - 这个名称已经被使用了 + 这个名字已经被使用了 请选择其他名称 请稍候… 电话号码 OpenStreetMap 资料 - 找到 %d 个文件,转换后您才能看到它们。 + 找到%d个文件。 转换后你会看到它。 恢复 - %d 个轨迹 + %d 跟踪 隐私 @@ -651,14 +651,14 @@ 地图样式和图层 地铁地图不可用 该列表为空 - 要添加新书签,请点击对象卡片中的星形图标 + 要添加新标签,请单击对象卡中的星形图标 …更多 - 导出为 KMZ - 导出为 GPX + 导出 KMZ + 导出 GPX 删除列表 - 允许公众访问 - 不允许访问的私人空间 - 添加说明(文字或 html) + 公共访问 + 私人访问 + 请添加说明(文字或html) 私人 限速拍照 地点说明 @@ -671,26 +671,26 @@ 永远不会对摄像头发出警告 省电模式 - 如果开启省电模式,应用程序将根据手机的当前电量关闭耗电功能 + 如果开启省电模式,应用程序将根据手机的当前电量关耗电功能 从不 - 当电量低时 + 自动 最大程度省电 - 临时启用此选项,以便使用“报告错误”功能在帮助对话框中记录并手动发送详细诊断日志给我们。日志可能包含位置信息。 + 临时启用此选项,以便使用“报告错误”功能在帮助对话框中记录并手动发送有关您的问题的详细诊断日志给我们。日志可能包含位置信息。 在线编辑 绕行设置 避开收费公路 - 避开未铺砌道路 + 避开未铺设道路 避开轮渡 避开高速公路 无法规划路线 - 很遗憾,我们无法使用所选的绕行设置规划路线。请更改设置,然后重试 - 选择要避开的道路 + 很遗憾,我们无法使用所选选项规划路线。请更改设置,然后重试 + 设置绕行路径 绕行设置已开启 收费公路 - 未铺砌道路 + 土路 轮渡 @@ -702,14 +702,14 @@ 容量:%s - 您已到达目的地! + 您已到达! 好的 - 排序… + 分类…… - 分类排序 + 分类标签 - 使用默认值 + 默认情况下 按类型 @@ -719,19 +719,19 @@ 按名称 一周前 - 一个月前 + 一月前 一个多月前 一年多以前 - 在我附近 + 在我旁边 其他 美食 - 旅游景点 + 名胜 博物馆 公园 游泳 - 山峰 + 动物 酒店 建筑物 @@ -741,10 +741,10 @@ 加油站 医疗 在列表中搜索 - 宗教场所 + 圣地 选择列表 本区域的地铁导航目前不可用 - 未找到地铁路线图 + 地铁路线图未找到 选择地铁站附近的起点和终点 等高线 如需使用等高线,请更新或下载所需区域的地图 @@ -755,9 +755,9 @@ 最大高度 难度 距离: - 时间: + 在路上: 放大地图以查看等高线 - 正在下载 + 加载 下载世界地图 无法在内部存储或 SD 卡上创建文件夹和移动文件 @@ -783,7 +783,7 @@ 感谢您使用我们社区构建的地图! - 有了您的捐赠和支持,我们可以创造世界上最好的地图! + 有了您的捐赠和支持,我们可以创建世界上最好的地图! 您喜欢我们的应用程序吗?请捐款以支持发展!还不喜欢吗?请告诉我们,我们会修复您提到的问题! @@ -822,16 +822,16 @@ 网络浏览器不可用 音量 - 导出所有书签和轨迹 + 导出所有书签和曲目 文本转语音系统设置 未找到语音合成设置,您确定您的设备支持该设置吗? - 面下车通道 + 驾车通过 清除搜索 放大 - 缩小 + 放大 菜单链接 @@ -844,7 +844,7 @@ 关闭省电模式 - 为了获得最准确的导航,我们建议在手机电池设置中停用省电模式。 + 为了获得最准确的导航,我们建议在手机电池设置中禁用省电模式。 地址/区块 diff --git a/coding/read_write_utils.hpp b/coding/read_write_utils.hpp index 6a88053027..d628df6528 100644 --- a/coding/read_write_utils.hpp +++ b/coding/read_write_utils.hpp @@ -120,9 +120,10 @@ namespace rw void ReadVectorOfPOD(TSource & src, TCont & v) { typedef typename TCont::value_type ValueT; - /// This assert fails on std::pair and OsmID class because std::pair is not trivially copyable: - /// std::pair has a non-trivial copy-assignment and move-assignment operator. - //static_assert(std::is_trivially_copyable_v); + /// This assert fails on std::pair and OsmID class. + /// @todo Review this logic in future with new compiler abilities. + /// https://trello.com/c/hzCc9bzN/1254-is-trivial-copy-read-write-utils-hpp + //static_assert(std::is_trivially_copyable::value, ""); uint32_t const count = ReadVarUint(src); if (count > 0) @@ -136,9 +137,10 @@ namespace rw void WriteVectorOfPOD(TSink & sink, TCont const & v) { typedef typename TCont::value_type ValueT; - /// This assert fails on std::pair and OsmID class because std::pair is not trivially copyable: - /// std::pair has a non-trivial copy-assignment and move-assignment operator. - //static_assert(std::is_trivially_copyable_v); + /// This assert fails on std::pair and OsmID class. + /// @todo Review this logic in future with new compiler abilities. + /// https://trello.com/c/hzCc9bzN/1254-is-trivial-copy-read-write-utils-hpp + //static_assert(std::is_trivially_copyable::value, ""); uint32_t const count = static_cast(v.size()); WriteVarUint(sink, count); diff --git a/data/00_NotoSansHebrew-Regular.ttf b/data/00_NotoSansHebrew-Regular.ttf deleted file mode 100644 index b44a0db044..0000000000 Binary files a/data/00_NotoSansHebrew-Regular.ttf and /dev/null differ diff --git a/data/categories.txt b/data/categories.txt index fce98cf8ba..fdef1461ab 100644 --- a/data/categories.txt +++ b/data/categories.txt @@ -188,7 +188,7 @@ tr:4Ulaşım uk:5Транспорт vi:Giao thông zh-Hans:交通 -zh-Hant:交通 +zh-Hant:運輸 el:Συγκοινωνία he:תחבורה sk:Doprava @@ -228,7 +228,7 @@ th:ก๊าซ tr:3Benzinlik|3Yakıt|3Akaryakıt|2Dizel|2Gaz uk:3бензин|3дызель|4паліва|газ vi:Khí đốt -zh-Hans:加油站 +zh-Hans:汽油 zh-Hant:加油站 el:Υγρά Καύσιμα he:גז @@ -353,8 +353,8 @@ th:โรงแรม tr:Otel|Oteller uk:4Готель|готелі vi:Khách sạn -zh-Hans:酒店|旅店|賓館 -zh-Hant:旅馆|飯店|酒店|宾馆 +zh-Hans:旅店|酒店|賓館 +zh-Hant:飯店|酒店|宾馆 el:4Ξενοδοχείο|Διαμονή|Ξενοδοχεία he:מלון|בתי sk:Hotel|Hotely @@ -559,7 +559,7 @@ tr:3Bankamatik uk:3Банкомат vi:ATM zh-Hans:自动取款机 -zh-Hant:1自動提款機 +zh-Hant:1自動櫃員機 el:ATM he:כספומט sk:3Bankomat @@ -604,8 +604,8 @@ th:สำหรับ RV tr:4Karavan Tesisleri uk:Для автобудинків|5Автодім|5Автобудинок|5Трейлер|5Караван|Будинок на колесах vi:Đối với RV -zh-Hans:房车设施 -zh-Hant:露營車設施 +zh-Hans:房车用 +zh-Hant:房車用 ca:Autocaravana amenity-atm|@category_atm @@ -725,7 +725,7 @@ tr:İkinci el uk:Секонд-хенд vi:Đồ cũ zh-Hans:二手货 -zh-Hant:二手貨 +zh-Hant:二手 amenity-bank|@category_bank en:money|U+1F3E6|U+1F4B0|U+1F4B2|U+1F4B3|U+1F4B4|U+1F4B5|U+1F4B6|U+1F4B7 @@ -5781,7 +5781,7 @@ sv:apotekare th:เภสัชกร uk:3ліки zh-Hans:药店|药剂师 -zh-Hant:藥局 +zh-Hant:成藥 el:φαρμακείο|φαρμακοποιός|χορήγηση φαρμάκων fa:داروخانه @@ -5817,7 +5817,7 @@ th:3ไปรษณีย์ tr:3Posta uk:3Пошта vi:Bưu điện -zh-Hans:1邮局 +zh-Hans:1邮政 zh-Hant:1郵局 el:Ταχυδρομείο he:דואר diff --git a/data/fonts_whitelist.txt b/data/fonts_whitelist.txt index 68a45694a8..e2f1b1bbcf 100644 --- a/data/fonts_whitelist.txt +++ b/data/fonts_whitelist.txt @@ -19,6 +19,4 @@ Devanagari 00_NotoSerifDevanagari-Regular.ttf Malayalam /system/fonts/NotoSansMalayalam-Regular.ttf Malayalam 00_NotoSansMalayalam-Regular.ttf Bengali /system/fonts/NotoSansBengali-Regular.ttf -Bengali 00_NotoSansBengali-Regular.ttf -Hebrew /system/fonts/NotoSansHebrew-Regular.ttf -Hebrew 00_NotoSansHebrew-Regular.ttf \ No newline at end of file +Bengali 00_NotoSansBengali-Regular.ttf \ No newline at end of file diff --git a/data/strings/brands_strings.txt b/data/strings/brands_strings.txt index 65ba0e4421..614cecf466 100644 --- a/data/strings/brands_strings.txt +++ b/data/strings/brands_strings.txt @@ -85,7 +85,6 @@ [brand.chilis] en = Chili's - [brand.chipotle] en = Chipotle @@ -148,7 +147,6 @@ en = Domino's Pizza ar = دومينوز بيتزا he = דומינוס פיצה - hi = डॉमिनोज पिज्जा ja = ドミノ・ピザ ko = 도미노피자 ru = Домино'с Пицца @@ -166,7 +164,6 @@ [brand.dunkin_donuts] en = Dunkin Donuts ar = دنكن دونتس - hi = डुंकिन डोनट्स ru = Данкин Донатс [brand.espresso_house] @@ -288,7 +285,6 @@ en = KFC ar = دجاج كنتاكي fr = PFC - hi = केएफसी ja = ケンタッキーフライドチキン th = เค เอฟ ซ zh-Hans = 肯德基 @@ -362,7 +358,7 @@ ar = ماكدونالدز bg = Макдоналдс he = מקדונלד'ס - hi = मैकडॉनल्ड + hi = ट्रेडमार्क ja = マクドナルド ka = მაკდონალდსი ko = 디몰 맥도날드 @@ -505,7 +501,6 @@ [brand.starbucks] en = Starbucks ar = ستاربكس - hi = स्टारबक्स ja = スターバックス ko = 스타벅스 ru = Старбакс @@ -553,7 +548,6 @@ [brand.taco_bell] en = Taco Bell - hi = टाको बेल [brand.telepizza] en = Telepizza @@ -575,7 +569,6 @@ [brand.tim_hortons] en = Tim Hortons - hi = टिम होर्टन [brand.tonden] en = Tonden diff --git a/data/strings/strings.txt b/data/strings/strings.txt index a9d638f960..2281209a7e 100644 --- a/data/strings/strings.txt +++ b/data/strings/strings.txt @@ -272,8 +272,8 @@ tr = İndirme başarısız oldu. Tekrar denemek için dokunun. uk = Помилка завантаження. Натисніть, щоб повторити спробу vi = Tải xuống thất bại, hãy chạm lại để thử một lần nữa - zh-Hans = 下载失败,点击以再试一次 - zh-Hant = 下載失敗,點擊以再試一次 + zh-Hans = 下载失败,重新轻触再试一次 + zh-Hant = 下載失敗,輕觸以再試一次 [downloading] comment = Settings/Downloader - info for country which started downloading @@ -318,8 +318,8 @@ tr = İndiriliyor… uk = Завантажується… vi = Đang tải xuống… - zh-Hans = 正在下载… - zh-Hant = 正在下載… + zh-Hans = 下载… + zh-Hant = 下載中… [kilometres] comment = Choose measurement on first launch alert - choose metric system button @@ -590,8 +590,8 @@ tr = Daha sonra uk = Не зараз vi = Để sau - zh-Hans = 以后再说 - zh-Hant = 以後再說 + zh-Hans = 稍后 + zh-Hant = 稍後 [search] comment = View and button titles for accessibility, please also edit it in iphone/plist.txt @@ -774,8 +774,8 @@ tr = Şu anda bu cihaz veya uygulama için tüm Konum Hizmetleri devre dışı bırakılmış. Lütfen bunu ayarlardan etkinleştirin. uk = Геолокація вимкнена в налаштуваннях пристрою. Будь ласка, увімкніть її для зручного використання програми. vi = Bạn hiện đang tắt tất cả Dịch vụ Định vị cho thiết bị hoặc ứng dụng này. Bạn vui lòng bật lại chúng trong Thiết lập. - zh-Hans = 您当前已禁用此设备或应用程序的所有位置服务,请在设置中启用。 - zh-Hant = 您當前已禁用此裝置或應用程式的所有位置服務,請在設定中啟用。 + zh-Hans = 您目前有此设备的所有位置服务或应用已禁用。请在设置中启用它们。 + zh-Hant = 您目前裝置所有的定位服務或相關應用程式是處於停用的狀態,請從系統設定中選擇啟用。 [zoom_to_country] comment = View and button titles for accessibility @@ -958,7 +958,7 @@ tr = Tekrar Dene uk = Спробуйте ще раз vi = Thử lại - zh-Hans = 再试一次 + zh-Hans = 重试 zh-Hant = 再試一次 [about_menu_title] @@ -1093,8 +1093,8 @@ tr = • Reklam yok, izleyici yok, veri toplama yok uk = • Без реклами, без трекінгу, без стеження vi = • Không có quảng cáo, không theo dõi, không thu thập dữ liệu - zh-Hans = • 没有广告,不会跟踪您,更不会收集您的数据 - zh-Hant = • 沒有廣告,不會跟踪您,更不會收集您的數據 + zh-Hans = •没有广告,不会跟踪您,更不会收集您的数据 + zh-Hant = •沒有廣告,不會跟踪您,更不會收集您的數據 [about_proposition_2] tags = android,ios @@ -1140,8 +1140,8 @@ tr = • Pilinizi tüketmez, çevrimdışı çalışır uk = • Не розряджає батарею, працює в автономному режимі vi = • Không hao pin, hoạt động offline - zh-Hans = • 无需耗费太多电量,可离线工作 - zh-Hant = • 無需耗費太多電量,可離線工作 + zh-Hans = • 无需耗费电池,可离线工作 + zh-Hant = • 無電池消耗,離線工作 [about_proposition_3] tags = android,ios @@ -1186,8 +1186,8 @@ tr = • Hızlı, minimalist, topluluk tarafından geliştirilmiş uk = • Швидкий, мінімалістичний, розроблений спільнотою vi = • Nhanh chóng, tối giản, được phát triển bởi cộng đồng - zh-Hans = • 快速且简约,由社区开发 - zh-Hant = • 快速且簡約,由社區開發 + zh-Hans = • 快速、简约、由社区开发 + zh-Hant = • 快速、簡約、由社區開發 [about_developed_by_enthusiasts] tags = android @@ -1230,8 +1230,8 @@ tr = Teknoloji tutkunları ve gönüllüler tarafından oluşturulan açık kaynaklı bir uygulama. uk = Програма з відкритим кодом, створена ентузіастами та волонтерами. vi = Ứng dụng nguồn mở được tạo bởi những người đam mê và tình nguyện viên. - zh-Hans = 由爱好者和志愿者开发的开源应用程序。 - zh-Hant = 由愛好者和志願者開發的開源應用程式。 + zh-Hans = 由爱好者和志愿者创建的开源应用程序。 + zh-Hant = 由愛好者和志願者創建的開源應用程序。 [location_settings] tags = android @@ -1366,8 +1366,8 @@ tr = Hızlı donanıma sahip bir OpenGL gerekli. Ne yazık ki cihazınız desteklenmiyor. uk = Для роботи програми необхідний апаратно прискорений OpenGL. На жаль, ваш пристрій не підтримується. vi = Cần có OpenGL được tăng tốc phần cứng. Thật không may, thiết bị của bạn không được hỗ trợ. - zh-Hans = 该应用程序需要硬件加速的 OpenGL。很遗憾,您的设备不受支持。 - zh-Hant = 該應用程式需要硬體加速的 OpenGL。很遺憾,您的裝置不受支持。 + zh-Hans = 硬件加速的 OpenGL 是必需的。遗憾的是您的设备不支持此功能。 + zh-Hant = 需要 OpenGL 硬體加速功能的支援。但很不幸的,您的裝置並不支援此功能! [download] tags = android,ios @@ -1456,7 +1456,7 @@ tr = Organic Maps’i kullanabilmek için lütfen USB kablosunun bağlantısını kesin veya hafıza kartı takın uk = Вимкніть USB кабель або вставте SD-карту vi = Bạn vui lòng tháo cáp USB hoặc lắp thẻ nhớ vào để sử dụng Organic Maps - zh-Hans = 请拔除 USB 线或插入 SD 卡以使用 Organic Maps + zh-Hans = 请断开 USB 线或插入存储卡以使用 Organic Maps zh-Hant = 請拔除 USB 線或插入 SD 卡以使用 Organic Maps [not_enough_free_space_on_sdcard] @@ -1502,8 +1502,8 @@ tr = Uygulamayı kullanabilmek için lütfen SD kart/USB depolama aygıtında biraz alan boşaltın uk = Недостатньо вільного місця на SD карті / в пам'яті пристрою для використання програми vi = Bạn vui lòng giải phóng dung lượng trên ổ lưu trữ thẻ SD/USB để có thể sử dụng ứng dụng - zh-Hans = 请先释放一些 SD 卡 / USB 存储空间以使用 Organic Maps。 - zh-Hant = 請先釋放一些 SD 卡 / USB 儲存空間以使用 Organic Maps。 + zh-Hans = 请在存储卡/ USB 储存设备上释放一些空间以 使用此应用 + zh-Hant = 如要繼續使用,請先釋放一些 SD 卡/ USB 儲存空間 [download_resources] tags = android @@ -1547,8 +1547,8 @@ tr = Başlamadan önce cihazınıza genel dünya haritasını indirelim.\n%@ alan gerekli. uk = Перш ніж розпочати дозвольте нам завантажити мапу світу на ваш пристрій.\nВона потребує %@ даних. vi = Trước khi bạn bắt đầu, hãy để chúng tôi tải bản đồ thế giới vào thiết bị của bạn.\nBản đồ này cần %@ dữ liệu. - zh-Hans = 在您开始使用此应用程序之前,请下载全球地图到您的设备。\n它将使用 %@ 的存储空间。 - zh-Hant = 在您開始使用此應用程式之前,請下載全球地圖到您的裝置。\n它將使用 %@ 的儲存空間。 + zh-Hans = 在您开始前请让我们下载通用世界地图至您的设备中。\n它需要%@的 数据。 + zh-Hant = 在您開始之前,先讓我們下載世界地圖到您的裝置中以便瀏覽。\n這需要資料的 %@。 [download_resources_continue] tags = android @@ -1593,7 +1593,7 @@ uk = Перейти на мапу vi = Đến Bản đồ zh-Hans = 前往地图 - zh-Hant = 前往地圖 + zh-Hant = 跳到地圖 [downloading_country_can_proceed] tags = android @@ -1637,8 +1637,8 @@ tr = %@ indiriliyor. Şimdi haritaya\ngidebilirsiniz. uk = Поки завантажується %@\nви можете користуватися програмою. vi = Đang tải xuống %@. Bây giờ bạn đã có thể\nvào bản đồ. - zh-Hans = 正在下载%@。您现在可以\n继续查看地图。 - zh-Hant = 正在下載%@。您現在可以\n繼續查看地圖。 + zh-Hans = 下载 %@。您现在可\n前往地图。 + zh-Hant = 正在下載 %@。您現在 可以繼續使用地圖了 [download_country_ask] tags = android @@ -1682,8 +1682,8 @@ tr = %@ indir? uk = Завантажити %@? vi = Tải xuống %@? - zh-Hans = 下载%@的地图吗? - zh-Hant = 下載%@的地圖嗎? + zh-Hans = 下载 %@? + zh-Hant = 下載 %@? [update_country_ask] tags = android @@ -1727,8 +1727,8 @@ tr = %@ güncelle? uk = Oновити %@? vi = Cập nhật %@? - zh-Hans = 更新%@的地图吗? - zh-Hant = 更新%@的地圖嗎? + zh-Hans = 更新 %@? + zh-Hant = 更新 %@? [pause] comment = REMOVE THIS STRING AFTER REFACTORING @@ -1865,8 +1865,8 @@ tr = %@ indirme işlemi başarısız oldu uk = Не вдалося завантажити %@ vi = %@ - zh-Hans = %@的地图下载失败 - zh-Hant = %@的地圖下載失敗 + zh-Hans = %@下载失败 + zh-Hant = %@ 下載失敗 [add_new_set] comment = "Add new bookmark list" dialog title @@ -1911,8 +1911,8 @@ tr = Yeni Liste Ekle uk = Додати список vi = Thêm Bộ Mới - zh-Hans = 添加新的书签列表 - zh-Hant = 新增新的書籤列表 + zh-Hans = 添加新的集合 + zh-Hant = 新增收藏夾 [bookmark_color] comment = Bookmark Color dialog title @@ -2003,8 +2003,8 @@ tr = Yer İmi Listesi Adı uk = Назва списка мiток vi = Đánh dấu Tên Bộ - zh-Hans = 书签列表名称 - zh-Hant = 書籤列表名稱 + zh-Hans = 书签集名称 + zh-Hant = 收藏夾名稱 [bookmark_sets] comment = "Bookmark Lists" dialog title @@ -2047,8 +2047,8 @@ tr = Yer İmi Listeleri uk = Списки мiток vi = Đánh dấu Bộ - zh-Hans = 书签列表 - zh-Hant = 書籤列表 + zh-Hans = 书签集 + zh-Hant = 收藏夾 [bookmarks] comment = Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. @@ -2183,7 +2183,7 @@ tr = Yerlerim uk = Мої Мітки vi = Các Địa chỉ của Tôi - zh-Hans = 我的地点 + zh-Hans = 我的位置 zh-Hant = 我的地點 [name] @@ -2460,8 +2460,8 @@ tr = Haritaların indirileceği yeri seçin uk = Виберіть місце, куди повинні бути завантажені мапи vi = Chọn vị trí nơi bản đồ sẽ được tải về - zh-Hans = 选择下载地图的文件夹。 - zh-Hant = 選擇下載地圖的資料夾。 + zh-Hans = 选取地图应该下载的位置 + zh-Hant = 請選擇下載地圖後要放的位置 [maps_storage_downloaded] comment = E.g. "Downloaded maps: 500Mb" in Maps Storage settings @@ -2505,8 +2505,8 @@ tr = Haritalar uk = Завантаженнi мапи vi = Bản đồ - zh-Hans = 已下载的地图 - zh-Hant = 已下載的地圖 + zh-Hans = 地图 + zh-Hant = 地圖 [maps_storage_internal] comment = Internal storage type in Maps Storage settings (not accessible by the user) @@ -2795,7 +2795,7 @@ uk = Це може зайняти кілька хвилин.\nБудь ласка, зачекайте… vi = Việc này có thể mất vài phút.\nVui lòng đợi… zh-Hans = 这可能需要几分钟的时间。\n请稍候… - zh-Hant = 這可能需要幾分鐘的時間\n請稍候… + zh-Hant = 這可能需要幾分鐘\n請稍候… [measurement_units] comment = Measurement units title in settings activity @@ -2984,7 +2984,7 @@ uk = Продукти vi = Cửa hàng tạp hóa zh-Hans = 食品 - zh-Hant = 食品 + zh-Hant = 食物 [category_transport] comment = Search category for public transport; any changes should be duplicated in categories.txt @category_transport! @@ -3030,7 +3030,7 @@ uk = Транспорт vi = Giao thông zh-Hans = 交通 - zh-Hant = 交通 + zh-Hant = 運輸 [category_fuel] comment = Search category for fuel stations; any changes should be duplicated in categories.txt @category_fuel! @@ -3075,7 +3075,7 @@ tr = Benzinlik uk = Заправка vi = Khí đốt - zh-Hans = 加油站 + zh-Hans = 汽油 zh-Hant = 加油站 [category_parking] @@ -3213,7 +3213,7 @@ uk = Секонд-хенд vi = Đồ cũ zh-Hans = 二手货 - zh-Hant = 二手貨 + zh-Hant = 二手 [category_hotel] comment = Search category for places to stay; any changes should be duplicated in categories.txt @category_hotel! @@ -3258,7 +3258,7 @@ tr = Otel uk = Готель vi = Khách sạn - zh-Hans = 酒店 + zh-Hans = 旅店 zh-Hant = 旅館 [category_tourism] @@ -3397,7 +3397,7 @@ uk = Банкомат vi = ATM zh-Hans = 自动取款机 - zh-Hant = 自動提款機 + zh-Hant = 自動櫃員機 [category_nightlife] comment = Search category for nightclubs/bars; any changes should be duplicated in categories.txt @category_nightlife! @@ -3721,7 +3721,7 @@ tr = Posta uk = Пошта vi = Bưu điện - zh-Hans = 邮局 + zh-Hans = 邮政 zh-Hant = 郵局 [category_police] @@ -3952,8 +3952,8 @@ tr = Karavan tesisleri uk = Для автобудинків vi = Đối với RV - zh-Hans = 房车设施 - zh-Hant = 露營車設施 + zh-Hans = 房车用 + zh-Hant = 房車用 [[Other translations]] @@ -4001,7 +4001,7 @@ uk = Примітка vi = Ghi chú zh-Hans = 注释 - zh-Hant = 註釋 + zh-Hant = 描述說明 [share_bookmarks_email_subject] comment = Email Subject when sharing bookmark list @@ -4044,8 +4044,8 @@ tr = Seninle paylaşılan Organic Maps yer imleri uk = З вами поділилися мiтками Organic Maps vi = Điểm đánh dấu Organic Maps được chia sẻ - zh-Hans = 已与您分享 Organic Maps 书签 - zh-Hant = 已與您分享 Organic Maps 書籤 + zh-Hans = Organic Maps 书签已与您共享 + zh-Hant = 已分享 Organic Maps 書籤 [share_bookmarks_email_body] tags = android,ios @@ -4124,7 +4124,7 @@ tr = Yer İmleri Yükleniyor uk = Завантаження мiток vi = Tải Điểm đánh dấu - zh-Hans = 正在载入书签… + zh-Hans = 加载书签 zh-Hant = 正在載入書籤… [load_kmz_successful] @@ -4170,8 +4170,8 @@ tr = Yer İmleri başarılı bir şekilde yüklendi! Bunları Haritada veya Yer İmleri Yöneticisi ekranında bulabilirsiniz. uk = Мiтки успішно завантаженi! Ви можете знайти їх на мапі або у ваших збережених мітках. vi = Đã tải điểm đánh dấu thành công! Bạn có thể tìm chúng trên bản đồ hoặc màn hình Trình quản lý Điểm đánh dấu. - zh-Hans = 书签载入成功!您可以在地图或书签管理页面中找到它们。 - zh-Hant = 書籤載入成功! 您可以在地圖或書籤管理畫面中找到它們。 + zh-Hans = 书签加载成功!您可以在地图或书签管理窗口中找到它们。 + zh-Hant = 書籤上傳成功! 您可以在地圖上或是書籤管理畫面中找到書籤。 [load_kmz_failed] comment = Kml file loading failed @@ -4216,8 +4216,8 @@ tr = Yer İmlerini yükleme işlemi başarısız oldu. Dosya bozuk veya hatalı olabilir. uk = Не вдалося завантажити мітки. Файл може бути пошкодженим або несправним. vi = Không tải lên được điểm đánh dấu. Tập tin có thể bị hỏng hoặc lỗi. - zh-Hans = 书签载入失败,文件可能已损坏或不完整。 - zh-Hant = 書籤載入失敗,檔案可能已損壞或不完整。 + zh-Hans = 书签上传失败。该文件可能已损坏或有缺陷。 + zh-Hant = 書籤上傳失敗。 檔案可能有毀損或是不完全。 [unknown_file_type] comment = Failed to recognize the format of a bookmarks or tracks file. @@ -4263,7 +4263,7 @@ tr = Dosya türü uygulama tarafından tanınmıyor:\n%1$@ uk = Тип файлу не розпізнається програмою:\n%1$@ vi = Loại tệp không được ứng dụng nhận dạng:\n%1$@ - zh-Hans = 应用程序无法识别该文件类型:\n%1$@ + zh-Hans = 应用程序无法识别文件类型:\n%1$@ zh-Hant = 應用程式無法識別該文件類型:\n%1$@ [failed_to_open_file] @@ -4311,8 +4311,8 @@ tr = Dosya açılamadı %1$@\n\n%2$@ uk = Не вдалося відкрити файл %1$@\n\n%2$@ vi = Không thể mở tập tin %1$@\n\n%2$@ - zh-Hans = 无法打开文件 %1$@\n\n%2$@ - zh-Hant = 無法打開檔案 %1$@\n\n%2$@ + zh-Hans = 打开文件失败 %1$@\n\n%2$@ + zh-Hant = 無法開啟文件 %1$@\n\n%2$@ [edit] comment = resource for context menu @@ -4362,7 +4362,7 @@ [unknown_current_position] comment = Warning message when doing search around current position - tags = android,ios + tags = android en = Your location hasn't been determined yet af = U ligging is nog nie vasgestel nie ar = لم يتم تحديد موقعك بعد. @@ -4404,7 +4404,7 @@ uk = Ваше місце розташування не визначено vi = Chưa xác định được vị trí của bạn zh-Hans = 您的位置尚未确定 - zh-Hant = 您的位置尚未確定 + zh-Hant = 您的位置尚未定位完成 [cant_change_this_setting] comment = Alert message that we can't run Map Storage settings due to some reasons. @@ -4449,7 +4449,7 @@ tr = Üzgünüz, Harita Depolama ayarları şu anda devre dışı. uk = Вибачте, налаштування папки з мапами зараз недоступні. vi = Rất tiếc, cài đặt Lưu trữ Bản đồ hiện đã bị tắt. - zh-Hans = 很抱歉,地图存储设置目前已停用。 + zh-Hans = 抱歉,地图存储设置目前被禁用 zh-Hant = 很抱歉,地圖儲存設定目前已停用。 [downloading_is_active] @@ -4496,7 +4496,7 @@ uk = Зараз відбувається завантаження країни. vi = Hiện đang tải xuống quốc gia. zh-Hans = 地图下载进行中。 - zh-Hant = 地圖下載進行中。 + zh-Hant = 地圖下載中。 [my_position_share_sms] comment = Share my position using SMS, %1$@ contains om:// and %2$@ https://omaps.app link WITHOUT NAME. @NOTE non-ascii symbols in the link will result in max 70 characters SMS instead of 140. @@ -4540,8 +4540,8 @@ tr = Hey, Organic Maps’te geçerli konumumu incele! %1$@ veya %2$@ Çevrimdışı haritalar sende yok mu? Buradan indir: https://omaps.app/get uk = Глянь де я зараз. Іди %1$@ або %2$@ vi = Này, hãy xem vị trí hiện tại của tôi tại Organic Maps! %1$@ hoặc %2$@ Bạn không có bản đồ ngoại tuyến? Tải xuống tại đây: https://omaps.app/get - zh-Hans = 嘿,在 Organic Maps 上查看我目前的位置吧!请打开 %1$@ 或 %2$@ 链接,还没安装离线地图?在此下载: https://omaps.app/get - zh-Hant = 嘿,在 Organic Maps 查看我的目前的位置吧!請打開 %1$@ 或 %2$@ 鏈接,還沒安裝離線地圖?在此下載: https://omaps.app/get + zh-Hans = 嘿,在 Organic Maps 上查看我目前的位置吧!%1$@ 或%2$@ 未安装离线地图?在此下载: https://omaps.app/get + zh-Hant = 嘿,在 Organic Maps 查看我的目前位置吧! %1$@ 或%2$@ 沒安裝離線地圖?在此下載: https://omaps.app/get [bookmark_share_email_subject] comment = Subject for emailed bookmark @@ -4585,8 +4585,8 @@ tr = Hey, Organic Maps haritasında raptiyemi incele! uk = Поглянь на мою мiтку на мапі Organic Maps vi = Này, hãy xem ghim của tôi tại Organic Maps map - zh-Hans = 嘿,看看我在 Organic Maps 上标记的图钉吧! - zh-Hant = 嘿,看看我在 Organic Maps 上標記的圖釘吧! + zh-Hans = 嘿,在 Organic Maps 上查看我标注的图钉吧! + zh-Hant = 嘿,看看我在 Organic Maps 地圖上的圖釘! [my_position_share_email_subject] comment = Subject for emailed position @@ -4630,8 +4630,8 @@ tr = Hey, Organic Maps’te geçerli konumumu incele! uk = Поглянь на моє поточне місцезнаходження на мапі Organic Maps vi = Này, hãy xem vị trí hiện tại của tôi tại Organic Maps map! - zh-Hans = 嗨,到 Organic Maps 查看我当前的位置! - zh-Hant = 嗨,到 Organic Maps 查看我目前的位置! + zh-Hans = 嗨,到 Organic Maps 查看我的当前位置! + zh-Hant = 嗨,到 Organic Maps 地圖查看我的目前位置! [my_position_share_email] comment = Share my position using EMail, %1$@ is om:// and %2$@ is https://omaps.app link WITHOUT NAME @@ -4767,7 +4767,7 @@ tr = E-posta uk = Ел. пошта vi = Email - zh-Hans = 电子邮件 + zh-Hans = 邮件 zh-Hant = 電子郵件 [copied_to_clipboard] @@ -4812,7 +4812,7 @@ tr = Panoya kopyalandı: %@ uk = Скопійовано в буфер обміну: %@ vi = Đã sao chép vào Bảng tạm: %@ - zh-Hans = 已复制到剪贴板:%@ + zh-Hans = 复制到剪贴板:%@ zh-Hant = 已複製到剪貼簿:%@ [info] @@ -4858,7 +4858,7 @@ uk = Інфо vi = Thông tin zh-Hans = 信息 - zh-Hant = 資訊 + zh-Hant = 簡介 [done] comment = Used for bookmark editing @@ -4947,7 +4947,7 @@ tr = Organic Maps sürümü: %@ uk = Версія Organic Maps: %@. vi = Phiên bản Organic Maps: %@ - zh-Hans = Organic Maps 版本:%@ + zh-Hans = Organic Maps 版本: %@ zh-Hant = Organic Maps 版本:%@ [data_version] @@ -5039,7 +5039,7 @@ uk = Продовжити? vi = Bạn có chắc muốn tiếp tục không? zh-Hans = 您确定要继续吗? - zh-Hant = 您確定要繼續嗎? + zh-Hant = 確定要繼續嗎? [tracks_title] comment = Title for tracks category in bookmarks manager @@ -5132,7 +5132,7 @@ zh-Hant = 長度 [share_my_location] - tags = android,ios + tags = android en = Share My Location af = Deel my ligging ar = مشاركة موقعي @@ -5172,7 +5172,7 @@ tr = Konumumu Paylaş uk = Поділитися моїм місцезнаходженням vi = Chia sẻ Vị trí của tôi - zh-Hans = 分享我的位置 + zh-Hans = 共享我的位置 zh-Hant = 分享我的位置 [prefs_group_general] @@ -5827,8 +5827,8 @@ tr = 3D binalar güç tasarrufu modunda kapatılır uk = 3D будівлі вимкнені в режимі енергозбереження vi = Tòa nhà 3D bị tắt ở chế độ tiết kiệm năng lượng - zh-Hans = 3D 建筑在省电模式下处于关闭状态 - zh-Hant = 3D 建築在省電模式下處於關閉狀態 + zh-Hans = 3D 建筑在省电模式下关闭 + zh-Hant = 3D 建築在省電模式下關閉 [pref_tts_enable_title] comment = Settings «Route» category: «Tts enabled» title @@ -6048,8 +6048,8 @@ tr = Sesli yönlendirmeleri test edin (TTS, Text-To-Speech) uk = Тестування голосових підказок (TTS, Text-To-Speech) vi = Kiểm tra chỉ đường bằng giọng nói (TTS, chuyển văn bản thành giọng nói) - zh-Hans = 测试语音指令(TTS,文本转语音系统) - zh-Hant = 測試語音指令(TTS,文本轉語音系統) + zh-Hans = 测试语音指令(TTS,Text-To-Speech) + zh-Hant = 測試語音指令(TTS、文本轉語音 [pref_tts_playing_test_voice] comment = Settings «Route» category: Pop-up message when clicking «Test Voice Directions» @@ -6093,8 +6093,8 @@ tr = Sesi şimdi duymuyorsanız ses seviyesini veya sistem metin okuma ayarlarını kontrol edin. uk = Якщо ви не чуєте голос, перевірте гучність або налаштування системи перетворення тексту на мовлення. vi = Kiểm tra cài đặt âm lượng hoặc chuyển văn bản sang giọng nói của hệ thống nếu bây giờ bạn không nghe thấy giọng nói. - zh-Hans = 如果您现在听不到声音,请检查音量或系统文本到语音系统的设置。 - zh-Hant = 如果您現在聽不到聲音,請檢查音量或系統文本轉語音系統的設定。 + zh-Hans = 如果现在听不到语音,请检查音量或系统文本到语音设置。 + zh-Hant = 如果您現在聽不到聲音,請檢查音量或系統文本轉語音設置。 [pref_tts_unavailable] comment = Settings «Route» category: «Tts unavailable» subtitle @@ -6138,8 +6138,8 @@ tr = Mevcut Değil uk = Не доступнi vi = Không có sẵn - zh-Hans = 不可用 - zh-Hant = 不可用 + zh-Hans = 无法使用 + zh-Hant = 無法使用 [pref_tts_other_section_title] comment = Title for "Other" section in TTS settings. @@ -6228,7 +6228,7 @@ tr = En sonki rotayı kaydet uk = Недавній маршрут vi = Tìm kiếm gần đây - zh-Hans = 最近的轨迹 + zh-Hans = 最近的路径 zh-Hant = 最近的軌跡 [pref_map_auto_zoom] @@ -6360,8 +6360,8 @@ tr = 1 saat uk = 1 година vi = 1 giờ - zh-Hans = 1 小时 - zh-Hant = 1 小時 + zh-Hans = 1小时 + zh-Hant = 1小時 [duration_2_hours] tags = android,ios @@ -6404,8 +6404,8 @@ tr = 2 saat uk = 2 години vi = 2 giờ - zh-Hans = 2 小时 - zh-Hant = 2 小時 + zh-Hans = 2小时 + zh-Hant = 2小時 [duration_6_hours] tags = android,ios @@ -6448,8 +6448,8 @@ tr = 6 saat uk = 6 годин vi = 6 giờ - zh-Hans = 6 小时 - zh-Hant = 6 小時 + zh-Hans = 6小时 + zh-Hant = 6小時 [duration_12_hours] tags = android,ios @@ -6492,8 +6492,8 @@ tr = 12 saat uk = 12 годин vi = 12 giờ - zh-Hans = 12 小时 - zh-Hant = 12 小時 + zh-Hans = 12小时 + zh-Hant = 12小時 [duration_1_day] tags = android,ios @@ -6536,8 +6536,8 @@ tr = 1 gün uk = 1 день vi = 1 ngày - zh-Hans = 1 天 - zh-Hant = 1 天 + zh-Hans = 1天 + zh-Hant = 1天 [recent_track_help_text] tags = ios @@ -6581,8 +6581,8 @@ tr = Bu özellik, belirli bir süre içinde katedilen yolu kaydetmenizi ve harita üzerinde görüntülemenizi sağlar. Lütfen unutmayın: bu özelliğin etkinleştirilmesi pil tüketiminin artmasına neden olur. Kaydedilen rota, zaman aralığının sona ermesinin ardından otomatik olarak haritadan kaldırılacaktır. uk = Ця функція дозволяє прокласти подоланий маршрут протягом певного проміжку часу та переглянути його на мапі. Звертаємо вашу увагу, що вмикання цієї функції пришвидшить розрядження акумулятора. Щойно сплине заданий проміжок часу, прокладений маршрут буде видалено з мапи. vi = Chức năng này cho phép bạn ghi lại đường đi trong một khoảng thời gian nhất định và xem nó trên bản đồ. Xin lưu ý: việc kích hoạt chức năng này sẽ tăng mức sử dụng pin. Đường đi sẽ tự động bị xóa khỏi bản đồ sau khi kết thúc khoảng thời gian nói trên. - zh-Hans = 记录并显示您在指定时间段内的旅行轨迹。请注意:这会显著增加电池消耗。 - zh-Hant = 記錄並顯示您在指定時間段內的旅行軌跡。請注意:這會顯著增加電池消耗。 + zh-Hans = 它允许您记录一定时间段内的旅行路径,并在地图上查看。请注意:激活此功能会导致电量消耗加快。过期后,轨迹将从地图中自动移除。 + zh-Hant = 它可讓您記錄特定期間所行經的路徑,並在地圖上看到該路徑。請注意:啟用此項功能會增加電池使用量。在時間間隔過期後,會從地圖中自動移除行進路線。 [placepage_distance] tags = android,ios @@ -6891,7 +6891,7 @@ uk = Відгук vi = Phản hồi zh-Hans = 反馈 - zh-Hant = 反饋 + zh-Hant = 意見反應 [rate_the_app] comment = Text in menu @@ -7117,8 +7117,8 @@ tr = En iyi harita uygulamasını birlikte geliştirmemiz için bağış yapın! uk = Пожертвуйте, щоб разом створювати найкращі мапи! vi = Hãy quyên góp để cùng nhau xây dựng những bản đồ tốt nhất! - zh-Hans = 捐助,以共同打造最好的地图! - zh-Hant = 捐助,以共同打造最好的地圖! + zh-Hans = 捐赠,共同打造最好的地图! + zh-Hant = 捐款共同打造最好的地圖! [how_to_support_us] comment = Button in the main Help dialog @@ -7163,8 +7163,8 @@ tr = Bu projeyi destekle uk = Підтримайте проект vi = Hỗ trợ dự án - zh-Hans = 支持本项目 - zh-Hant = 支持本項目 + zh-Hans = 支持项目 + zh-Hant = 支持項目 [copyright] comment = Button in the main Help dialog @@ -7300,7 +7300,7 @@ tr = Haritadaki hataları bildirin veya düzeltin uk = Повідомляйте або виправляйте невірні картографічні дані vi = Báo cáo hoặc sửa dữ liệu bản đồ không chính xác - zh-Hans = 报告或修复不正确的地图数据 + zh-Hans = 报告或修复错误的地图数据 zh-Hant = 報告或修復不正確的地圖數據 [volunteer] @@ -7347,8 +7347,8 @@ tr = Gönüllümüz Olun uk = Стати волонтером vi = Tình nguyện - zh-Hans = 志愿者 - zh-Hant = 志願者 + zh-Hans = 志愿服务 + zh-Hant = 志工服務 [follow_us] comment = "Social media" section header in the About screen @@ -7439,8 +7439,8 @@ tr = E-posta istemcisi henüz kurulmamış. Lütfen e-posta istemcisini yapılandırın veya bize %@ adresinden ulaşmak için başka bir yöntem deneyin uk = Поштовий клієнт не налаштований. Налаштуйте його або скористайтеся іншими способами зв'язку. Наша адреса – %@. vi = Trình khách email này chưa được thiết lập. Bạn vui lòng cấu hình nó hoặc sử dụng một cách khác để liên hệ với chúng tôi tại %@ - zh-Hans = 电子邮件客户端未设置。请配置电子邮件客户端或通过 %@ 联系我们。 - zh-Hant = 電子郵件客戶端未設定。請配置電子郵件客戶端或通過 %@ 聯絡我們。 + zh-Hans = 电子邮件客户端尚未建立。请配置或使用任何其他方式与我们联系%@ + zh-Hant = 電子郵件客戶端尚未建立。請設定或使用任何其他方式與我們聯絡%@ [email_error_title] comment = Alert title @@ -7484,8 +7484,8 @@ tr = E-Posta gönderme hatası uk = Помилка при відправленні листа vi = Lỗi gửi thư - zh-Hans = 电子邮件发送失败 - zh-Hant = 電子郵件發送失敗 + zh-Hans = 电子邮件发送错误 + zh-Hant = 電子郵件發送錯誤 [pref_calibration_title] comment = Settings item title @@ -7573,8 +7573,8 @@ tr = Pusulayı kalibre etmek için telefonu sekiz şeklinde hareket ettirerek ok yönünü iyileştirin. uk = Покращіть напрямок стрілки, повернувши телефон вісімкою, щоб відкалібрувати компас. vi = Cải thiện hướng mũi tên bằng cách di chuyển điện thoại theo chuyển động hình số tám để hiệu chỉnh la bàn. - zh-Hans = 通过以 8 字形移动手机来改善箭头方向,以校准罗盘。 - zh-Hant = 通過以 8 字形移動手機來改善箭頭方向,以校準羅盤。 + zh-Hans = 通过以八字形运动移动手机来改善箭头方向,以校准罗盘。 + zh-Hant = 通過以八字形移動手機來校準指南針來改善箭頭方向 [compass_calibration_required] comment = Toast text when compass calibration may improve the correctness of the current position arrow @@ -7617,8 +7617,8 @@ tr = Pusulayı kalibre etmek ve haritadaki ok yönünü düzeltmek için telefonu sekiz şeklinde hareket ettirin. uk = Рухайте телефон вісімкою, щоб відкалібрувати компас і зафіксувати напрямок стрілки на карті. vi = Di chuyển điện thoại theo chuyển động hình số tám để hiệu chỉnh la bàn và cố định hướng mũi tên trên bản đồ. - zh-Hans = 通过以 8 字形移动手机以校准罗盘,并在地图上固定箭头方向。 - zh-Hant = 通過以 8 字形移動手機以校準羅盤,並在地圖上固定箭頭方向。 + zh-Hans = 以八字动作移动手机,校准罗盘,并在地图上固定箭头方向。 + zh-Hant = 以 8 字形移動手機以校準指南針並固定地圖上的箭頭方向 [long_tap_toast] comment = Toast text when user hides UI with a long tap anywhere on the map @@ -7662,8 +7662,8 @@ tr = Arayüzü görmek için haritaya tekrar uzun dokunun uk = Ще раз потримайте палець на карті, щоб побачити інтерфейс vi = Nhấn và giữ lại vào bản đồ để xem giao diện - zh-Hans = 再次长按地图即可查看界面 - zh-Hant = 再次長按地圖即可查看介面 + zh-Hans = 再次长按地图查看界面 + zh-Hant = 再次長按地圖即可看到介面 [downloader_update_all_button] comment = Update all button text @@ -7751,8 +7751,8 @@ tr = Tümünü İptal Et uk = Скасувати всі vi = Hủy tất cả - zh-Hans = 取消全部 - zh-Hant = 取消全部 + zh-Hans = 全部取消 + zh-Hant = 全部取消 [downloader_downloaded_subtitle] comment = Downloaded maps list header @@ -7884,7 +7884,7 @@ uk = В черзі vi = Đã xếp hàng chờ zh-Hans = 已加入到下载队列 - zh-Hant = 已加入到下載隊列 + zh-Hant = 已加入下載隊列 [downloader_near_me_subtitle] tags = android,ios @@ -8100,7 +8100,7 @@ tr = Bulundu uk = Знайдено vi = Đã tìm thấy - zh-Hans = 已找到 + zh-Hans = 找到 zh-Hant = 已找到 [downloader_status_outdated] @@ -8233,7 +8233,7 @@ uk = Щоб видалити мапу, будь ласка, зупините навiгацiю. vi = Để xóa bản đồ, vui lòng dừng điều hướng. zh-Hans = 要删除地图,请停止导航。 - zh-Hant = 要刪除地圖,請停止導航。 + zh-Hant = 如欲刪除地圖,請停止導航。 [routing_failed_cross_mwm_building] comment = PointsInDifferentMWM @@ -8276,8 +8276,8 @@ tr = Rotalar sadece tamamen tek bir harita dâhilinde oluşturulabilir. uk = Маршрут бути прокладений всередині мапи тільки одного регіону. vi = Tuyến đường chỉ có thể được tạo hoàn toàn được chứa trong một bản đồ. - zh-Hans = 路线只能完全处在同一地图里时才能被规划。 - zh-Hant = 路線只能完全處在同一地圖裡時才能被規劃。 + zh-Hans = 路程只能完全处在同一地图里时才能被创建。 + zh-Hant = 路程只能完全處在同一地圖裡時才能被建立。 [downloader_download_map] comment = Context menu item for downloader. @@ -8590,8 +8590,8 @@ tr = Rota üzerindeki tüm haritaları indir uk = Завантажити мапи з дороги vi = Tải xuống bản đồ theo tuyến đường - zh-Hans = 下载路线上的所有地图 - zh-Hant = 下載路線上的所有地圖 + zh-Hans = 下载沿线地图 + zh-Hant = 下載沿線地圖 [routing_requires_all_map] comment = Text for routing error dialog @@ -8635,8 +8635,8 @@ tr = Rota oluşturabilmemiz için bulunduğunuz yerden hedefinize kadar olan tüm haritaları indirmemiz ve güncellememiz gerekiyor. uk = Для створення маршруту необхідно щоб всі мапи, починаючи від вашого місцезнаходження і до пункту призначення, були завантажені та оновлені. vi = Tạo một tuyến đường đòi hỏi tất cả các bản đồ từ vị trí của bạn đến điểm đến phải được tải xuống và cập nhật. - zh-Hans = 规划路线需要下载并更新好所有从您的位置到目的地的地图。 - zh-Hant = 規劃路線需要下載並更新好所有從您的位置到目的地的地圖。 + zh-Hans = 创建路线需要下载并更新好所有从您的位置到目的地的地图。 + zh-Hant = 建立路線需要下載並更新好所有從您的位置到目的地的地圖。 [routing_not_enough_space] comment = Text for routing error dialog @@ -9169,8 +9169,8 @@ tr = Turuncu uk = Помаранчевий vi = Cam - zh-Hans = 橙色 - zh-Hant = 橙色 + zh-Hans = 橘红色 + zh-Hant = 橘色 [brown] comment = brown color @@ -9526,8 +9526,8 @@ tr = Koyu Turuncu uk = Темно-помаранчевий vi = Cam đậm - zh-Hans = 深橙色 - zh-Hant = 深橙色 + zh-Hans = 深橘色 + zh-Hant = 深橘色 [gray] comment = gray color @@ -9709,7 +9709,7 @@ uk = — Дорожня обстановка, правила дорожнього руху і знаки пріоритетніші, ніж поради програми; vi = — Điều kiện đường, luật giao thông và biển báo đường bộ luôn được ưu tiên hơn lời khuyên định hướng; zh-Hans = — 路况、交通法规和路标始终优先于导航建议; - zh-Hant = — 路況、交通法規和路標始終優先於導航建議; + zh-Hant = — 路況、交通規則及號誌優先於導航意見; [dialog_routing_disclaimer_precision] tags = android,ios @@ -9752,8 +9752,8 @@ tr = — Harita doğru olmayabilir, önerilen rota da hedefinize ulaşmak için en uygun yol olmayabilir; uk = — Мапа може бути неточною, а запропонований маршрут не завжди оптимальний; vi = — Bản đồ có thể không chính xác và tuyến đường được đề xuất có thể không luôn là cách tối ưu nhất để đi đến đích; - zh-Hans = — 地图可能不准确,建议的路线可能并非总是去往目的地的最佳路线; - zh-Hant = — 地圖可能不準確,建議的路線可能並非總是前往目的地的最佳路線; + zh-Hans = — 地图可能不准确,建议的路线可能并非总是去往目的地的最佳路径; + zh-Hant = — 地圖可能不準確,建議的路線不盡然是最佳選擇; [dialog_routing_disclaimer_recommendations] tags = android,ios @@ -9797,7 +9797,7 @@ uk = — Запропоновані маршрути — лише рекомендації; vi = — Các tuyến đường được đề nghị chỉ nên được coi là các khuyến nghị; zh-Hans = — 建议的路线仅作为推荐路线供您采纳; - zh-Hant = — 建議的路線僅作為推薦路線供您參考; + zh-Hant = — 建議的路線僅供推薦參考; [dialog_routing_disclaimer_borders] tags = android,ios @@ -9841,8 +9841,8 @@ tr = — Sınır bölgelerinde rotalar konusunda dikkatli olun: uygulamamız tarafından oluşturulan rotalar bazen izin verilmeyen yerlerdeki ülke sınırlarını geçebilir. uk = — Дотримуйтеся обережності з маршрутами у прикордонних зонах: маршрути, створені нашою програмою, іноді можуть перетинати кордони країн у несанкціонованих місцях; vi = — Chú ý khi thể dục theo những con đường gần đường biên giới: những con đường do ứng dụng của chúng tôi tạo ra đôi khi có khả năng vượt ra khỏi biên giới vào những địa điểm không được phép; - zh-Hans = — 小心对待国界区的路线:我们的应用程序生成的路线有时会在未经授权的地方跨越国界; - zh-Hant = — 小心對待國界區的路線:我們的應用程式建立的路線有時會在未經授權的地方跨越國界; + zh-Hans = — 小心对待国界区的路线:我们应用创造的路线有时会在未经授权的地方跨越国界; + zh-Hant = — 小心對待國界區的路線:我們應用程式建立的路線有時會在未經授權的地方跨越國界; [dialog_routing_disclaimer_beware] tags = android,ios @@ -9886,7 +9886,7 @@ uk = Будьте уважні на дорогах і бережіть себе! vi = Hãy cảnh giác và giữ an toàn trên đường! zh-Hans = 上路时请当心,祝您一路平安! - zh-Hant = 上路時請當心,祝您一路平安! + zh-Hant = 請保持警戒,一路平安! [dialog_routing_check_gps] tags = android,ios @@ -9929,7 +9929,7 @@ uk = Перевірте сигнал GPS vi = Kiểm tra tín hiệu GPS zh-Hans = 检查 GPS 信号 - zh-Hant = 檢查 GPS 訊號 + zh-Hant = 查看 GPS 訊號 [dialog_routing_error_location_not_found] tags = android,ios @@ -9972,8 +9972,8 @@ tr = Rota oluşturulamıyor. Mevcut GPS koordinatları tanımlanamadı. uk = Маршрут не побудовано. Поточну геопозицію не визначено. vi = Không thể tạo tuyến đường. Không xác định được tọa độ GPS hiện tại. - zh-Hans = 无法规划路线。无法识别当前 GPS 坐标。 - zh-Hant = 無法規劃路線。無法識別當前 GPS 座標。 + zh-Hans = 无法创建路线。当前 GPS 坐标无法识别。 + zh-Hant = 無法產生路線。 無法定位目前 GPS 座標。 [dialog_routing_location_turn_wifi] tags = android,ios @@ -10015,8 +10015,8 @@ tr = Lütfen GPS sinyalinizi kontrol edin. Wi-Fi'ı etkinleştirmek konum isabetini arttırır. uk = Будь ласка, перевірте сигнал GPS. Для покращання точності геопозиції увімкніть Wi-Fi. vi = Hãy kiểm tra tín hiệu GPS của bạn. Việc kích hoạt Wi-Fi sẽ cải thiện độ chính xác vị trí của bạn. - zh-Hans = 请检查您的 GPS 信号。启用无线网络将改善定位精度。 - zh-Hant = 請檢查您的 GPS 訊號。啟用無線網路將改善定位精度。 + zh-Hans = 请检查您的 GPS 信号。启用无线网络将改善您的定位精度。 + zh-Hant = 請確認您的 GPS 訊號。啟用無線網路將提升地理位置定位準確度。 [dialog_routing_location_turn_on] tags = android,ios @@ -10102,8 +10102,8 @@ tr = Mevcut GPS koordinatları belirlenemiyor. Rota hesaplamak için konum hizmetlerini etkinleştirin. uk = Поточну геопозицію не визначено. Для побудови маршруту увімкніть режим визначення геопозиції. vi = Không thể xác định vị trí tọa độ GPS hiện tại. Bật các dịch vụ định vị để tính toán tuyến đường. - zh-Hans = 无法定位当前 GPS 坐标。请启用定位服务以规划路线。 - zh-Hant = 無法定位目前 GPS 座標。請啟用定位服務以規劃路線。 + zh-Hans = 无法定位当前 GPS 坐标。请启用定位服务以计算路线。 + zh-Hant = 無法定位目前 GPS 座標。請啟用定位服務以產生路線。 [dialog_routing_download_files] tags = ios @@ -10188,8 +10188,8 @@ tr = Planlanan yoldaki tüm harita ve rota bilgilerini indirip güncelleyerek rotayı hesaplayın. uk = Для побудови маршруту завантажте і обновіть всі мапи і файли маршрутів на шляху руху. vi = Tải về và cập nhật tất cả các bản đồ và các thông tin tuyến đường dọc theo lộ trình dự kiến để tính toán tuyến đường. - zh-Hans = 下载或更新沿预计路线的所有地图,以规划路线。 - zh-Hant = 下載或更新沿預期路線的所有地圖,以規劃路線。 + zh-Hans = 下载和更新所有地图和预定路径沿途的路线信息,以计算路线。 + zh-Hant = 若要產生路線,請下載並更新所有地圖及沿路線的路線檔案。 [dialog_routing_unable_locate_route] tags = android,ios @@ -10233,7 +10233,7 @@ uk = Маршрут не знайдено vi = Không thể xác định tuyến đường zh-Hans = 无法定位路线 - zh-Hant = 無法定位路線 + zh-Hant = 路線未找到 [dialog_routing_cant_build_route] tags = android @@ -10276,8 +10276,8 @@ tr = Rota oluşturulamıyor. uk = Не вдалося побудувати маршрут. vi = Không thể tạo tuyến đường. - zh-Hans = 无法规划路线。 - zh-Hant = 無法規劃路線。 + zh-Hans = 无法创建路线。 + zh-Hant = 無法產生路線。 [dialog_routing_change_start_or_end] tags = android,ios @@ -10320,7 +10320,7 @@ uk = Будь ласка, змініть початкову або кінцеву точку маршруту. vi = Hãy điều chỉnh điểm bắt đầu hoặc điểm đến của bạn. zh-Hans = 请调整您的起点或目的地。 - zh-Hant = 請調整您的起點或目的地。 + zh-Hant = 請變更起點或最終目的地。 [dialog_routing_change_start] tags = android,ios @@ -10363,7 +10363,7 @@ uk = Змініть початкову точку маршруту vi = Điều chỉnh điểm bắt đầu zh-Hans = 调整出发点 - zh-Hant = 調整出發點 + zh-Hant = 變更起點 [dialog_routing_start_not_determined] tags = android,ios @@ -10406,8 +10406,8 @@ tr = Rota oluşturulamadı. Başlangıç noktası belirlenemiyor. uk = Маршрут не побудовано. Не визначено початкову точку маршруту. vi = Tuyến đường chưa được tạo. Không thể xác định vị trí điểm bắt đầu. - zh-Hans = 路线未规划。无法定位起点。 - zh-Hant = 路線未規劃。無法定位起點。 + zh-Hans = 路线未创建。无法定位起点。 + zh-Hant = 此路線尚未產生。無法定位起點。 [dialog_routing_select_closer_start] tags = android,ios @@ -10493,7 +10493,7 @@ uk = Змініть кінцеву точку маршруту vi = Điều chỉnh điểm đến zh-Hans = 调整目的地 - zh-Hant = 調整目的地 + zh-Hant = 變更目的地 [dialog_routing_end_not_determined] tags = android,ios @@ -10536,8 +10536,8 @@ tr = Rota oluşturulamadı. Hedef belirlenemiyor. uk = Маршрут не побудовано. Не визначено кінцеву точку маршруту. vi = Tuyến đường chưa được tạo. Không thể xác định vị trí điểm đến. - zh-Hans = 路线未规划。无法定位目的地。 - zh-Hant = 路線未規劃。無法定位目的地。 + zh-Hans = 路线未创建。无法定位目的地。 + zh-Hant = 未產生路線。無法定位目的地。 [dialog_routing_select_closer_end] tags = android,ios @@ -10580,7 +10580,7 @@ uk = Будь ласка, виберіть кінцеву точку маршруту ближче до дороги. vi = Hãy chọn điểm đến gần với một con đường hơn. zh-Hans = 请选择更靠近公路的目的地位置。 - zh-Hant = 請選擇更接近道路的目的地位置。 + zh-Hant = 請選擇更接近道路的目的地。 [dialog_routing_change_intermediate] tags = android,ios @@ -10622,8 +10622,8 @@ tr = Ara nokta bulunamadı. uk = Не вдалося знайти місцерозташування проміжної точки. vi = Không thể định vị điểm trung gian. - zh-Hans = 无法定位途径点。 - zh-Hant = 無法定位途徑點。 + zh-Hans = 无法定位中间点。 + zh-Hant = 找不到中途休息站。 [dialog_routing_intermediate_not_determined] tags = android,ios @@ -10666,8 +10666,8 @@ tr = Lütfen ara noktanızı ayarlayın. uk = Будь ласка, вкажіть місцерозташування проміжної точки вручну. vi = Vui lòng điều chỉnh điểm trung gian của bạn. - zh-Hans = 请调整您的途径点。 - zh-Hant = 請調整您的途徑點。 + zh-Hans = 请调整您的中间点。 + zh-Hant = 請調整您的中途休息站。 [dialog_routing_system_error] tags = android,ios @@ -10754,8 +10754,8 @@ tr = Uygulama hatası nedeniyle rota oluşturulamadı. uk = Не вдалося прокласти маршрут через помилки програми. vi = Không thể tạo tuyến đường do lỗi ứng dụng. - zh-Hans = 由于应用程序出错,因此无法规划路线。 - zh-Hant = 由於應用程式出錯,因此無法規劃路線。 + zh-Hans = 由于应用程序错误,无法创建路线。 + zh-Hant = 由於此錯誤,尚未建立路線。 [dialog_routing_try_again] tags = android,ios @@ -10797,7 +10797,7 @@ tr = Lütfen tekrar deneyin uk = Спробуйте знову vi = Vui lòng thử lại - zh-Hans = 请再试一次 + zh-Hans = 请重试 zh-Hant = 請再試一次 [not_now] @@ -10840,8 +10840,8 @@ tr = Şimdi Değil uk = Не зараз vi = Lúc khác - zh-Hans = 以后再说 - zh-Hant = 以後再說 + zh-Hans = 现在不用 + zh-Hant = 現在不要 [dialog_routing_download_and_build_cross_route] tags = android,ios @@ -10883,8 +10883,8 @@ tr = Haritayı indirerek birden fazla haritaya uzanan daha uygun bir rota oluşturmak ister misiniz? uk = Завантажити мапу і побудувати більш оптимальний маршрут з перетином межі мапи? vi = Bạn có muốn tải về bản đồ và tạo một tuyến đường tối ưu hơn kéo dài trên nhiều hơn một bản đồ? - zh-Hans = 您是否要下载地图,以规划跨越边界的更佳路线? - zh-Hant = 您是否要下載地圖,以規劃跨越邊界的更佳路線? + zh-Hans = 您是否要下载地图并创建一条跨越多张地图的更佳路线? + zh-Hant = 您是否要下載地圖,產生跨越邊界的更好路線? [dialog_routing_download_cross_route] tags = android,ios @@ -10926,8 +10926,8 @@ tr = Bu haritanın bir kısmından geçen daha uygun bir rota oluşturmak için haritayı indirin. uk = Для побудови більш оптимального маршруту з перетином межі потрібно завантажити мапу. vi = Tải về bản đồ để tạo tuyến đường tối ưu hơn mà đi qua cạnh của bản đồ này. - zh-Hans = 下载地图,以规划一条跨越边界的更佳路线。 - zh-Hant = 下載地圖,以規劃一條跨越邊界的更佳路線。 + zh-Hans = 下载地图,创建一条跨越此地图边缘的更佳路线。 + zh-Hant = 若要產生跨越邊界的更理想路線,您需要下載地圖。 [[Strings for downloading map from search]] @@ -10972,8 +10972,8 @@ tr = Aramak ve rota oluşturmaya başlamak için lütfen haritayı indirin. İndirdikten sonra artık internet bağlantısına ihtiyacınız olmayacak. uk = Щоб розпочати пошук та створення маршрутів, будь ласка, завантажте мапу і вам більше ніколи не знадобиться інтернет-з’єднання. vi = Để bắt đầu tìm kiếm và tạo đường đi, vui lòng tải về bản đồ, và bạn sẽ không cần đến kết nối Internet nữa. - zh-Hans = 要开始搜索和规划路线,请下载地图,然后您就不再需要网络连接了。 - zh-Hant = 要開始搜索和規劃路線,請下載地圖,然後您就不再需要網絡連接了。 + zh-Hans = 要开始搜索和创建路线,请下载地图,那您就不再需要网络连接了。 + zh-Hant = 要開始搜索和建立路線,請下載地圖,那您就不再需要網絡連接了。 [search_select_map] tags = android @@ -11194,8 +11194,8 @@ tr = Varış: %@ uk = Прибуття в %@ vi = Đến: %@ - zh-Hans = 已到达 %@ - zh-Hant = 已到達 %@ + zh-Hans = 抵達:%@ + zh-Hant = 抵達:%@ [dialog_routing_download_and_update_maps] comment = Text for routing::RouterResultCode::FileTooOld dialog. @@ -11237,8 +11237,8 @@ tr = Bir rota oluşturmak için lütfen rota üzerindeki tüm haritaları indirin ve güncelleyin. uk = Для створення маршруту, будь ласка, скачайте та обновіть всі карти за ним. vi = Để tạo đường đi, vui lòng tải về và cập nhật tất cả bản đồ dọc theo tuyến đường. - zh-Hans = 要规划路线,请下载并更新所有沿路线的地图。 - zh-Hant = 要規劃路線,請下載並更新所有沿路線的地圖。 + zh-Hans = 要创建路线,请下载并更新所有沿路线的地图。 + zh-Hant = 要建立路線,請下載並更新所有沿線的地圖。 [categories] tags = android,ios @@ -11326,7 +11326,7 @@ uk = Історія vi = Lịch sử zh-Hans = 历史 - zh-Hant = 歷史 + zh-Hant = 記錄 [search_not_found] tags = android,ios @@ -11369,8 +11369,8 @@ tr = Üzgünüz, hiç bir şey bulamadık. uk = На жаль, нічого не знайдено. vi = Xin lỗi, tôi không tìm thấy kết quả nào. - zh-Hans = 很抱歉,没有搜到任何地点。 - zh-Hant = 很抱歉,沒有搜到任何地點。 + zh-Hans = 很抱歉,没有找到任何地点。 + zh-Hant = 很抱歉,沒有找到任何地點。 [search_not_found_query] tags = android,ios @@ -11415,8 +11415,8 @@ tr = Arama yaptığınız bölgeyi indirin veya yakındaki bir kasaba/köy adını eklemeyi deneyin. uk = Завантажте регіон, де ви шукаєте, або спробуйте додати назву найближчого міста/села. vi = Tải xuống khu vực bạn đang tìm kiếm hoặc thử thêm tên thị trấn/làng gần đó. - zh-Hans = 下载您要搜索的区域的地图,或尝试输入附近的城镇或村庄名称。 - zh-Hant = 下載您要搜尋的區域的地圖,或嘗試輸入附近的城鎮或村莊名稱。 + zh-Hans = 下载要搜索的地区或尝试添加附近的城镇/村庄名称。 + zh-Hant = 下載您要搜尋的區域或嘗試新增附近的城鎮/村莊名稱。 [search_history_title] tags = android,ios @@ -11502,8 +11502,8 @@ tr = Son aramaları görüntüleyin. uk = Швидкий доступ до недавніх результатів пошуку. vi = Truy cập nhanh chóng đến câu hỏi tìm kiếm gần đây. - zh-Hans = 查看您最近的搜索记录。 - zh-Hant = 查看您最近的搜尋記錄。 + zh-Hans = 快速访问最近的搜索查询。 + zh-Hant = 檢視最近的搜尋。 [clear_search] tags = android,ios @@ -12108,7 +12108,7 @@ tr = Tüm Gün (24 saat) uk = Весь день (24 години) vi = Cả ngày (24 giờ) - zh-Hans = 全天(24 小时) + zh-Hans = 全天(24小时) zh-Hant = 全天 (24 小時) [editor_time_open] @@ -12151,8 +12151,8 @@ tr = Açık uk = Відчинено vi = Mở cửa - zh-Hans = 正在营业 - zh-Hant = 正在營業 + zh-Hans = 开始营业时间 + zh-Hant = 開始營業時間 [editor_time_close] tags = android,ios @@ -12194,8 +12194,8 @@ tr = Kapalı uk = Зачинено vi = Đóng cửa - zh-Hans = 已歇业 - zh-Hant = 已歇業 + zh-Hans = 结束营业时间 + zh-Hant = 結束營業時間 [editor_time_add_closed] tags = android,ios @@ -12237,7 +12237,7 @@ tr = Kapalı olduğu saatleri ekle uk = Додати перерву vi = Thêm giờ đóng cửa - zh-Hans = 添加休息时间 + zh-Hans = 添加非营业时间 zh-Hant = 新增休息時間 [editor_time_title] @@ -12577,8 +12577,8 @@ tr = Dünya haritasını değiştirdiniz. Bunu gizlemeyin! Arkadaşlarınıza anlatın ve birlikte düzenleyin. uk = Ви змінили карту світу. Не приховуйте це! Розкажіть своїм друзям і редагуйте разом. vi = Bạn đã thay đổi bản đồ thế giới. Đừng giấu điều đó! Hãy cho các bạn khác biết và cùng nhau chỉnh sửa. - zh-Hans = 您已经改变了世界地图。请别再藏着掖着了!告诉您的朋友们并一起来编辑地图。 - zh-Hant = 您已經改變了世界地圖。請別再藏私了!告訴您的朋友們並一起來編輯地圖。 + zh-Hans = 您已经改变了世界地图。请不要隐藏这一点!告诉您的朋友们并一起编辑它。 + zh-Hant = 您已經改變了世界地圖。別藏私!告訴您的朋友們一起來編輯。 [share_with_friends] tags = ios @@ -12706,7 +12706,7 @@ tr = Veya bunu https://www.openstreetmap.org/ adresinden kendiniz yapın uk = Або зробіть це самостійно на сайті https://www.openstreetmap.org/ vi = Hoặc bạn có thể tự sửa tại https://www.openstreetmap.org/ - zh-Hans = 或者在 https://www.openstreetmap.org/ 上亲自修复此错误。 + zh-Hans = 或者在https://www.openstreetmap.org/上亲自修复此错误。 zh-Hant = 或者在 https://www.openstreetmap.org/ 上親自修復此錯誤 [editor_report_problem_send_button] @@ -13010,8 +13010,8 @@ tr = Şu anda kapalı uk = Зараз закрито vi = Hiện đã đóng - zh-Hans = 现已关门 - zh-Hant = 現已關門 + zh-Hans = 现在关门 + zh-Hant = 現在關門 [daily] comment = Place Page opening hours text @@ -13098,8 +13098,8 @@ tr = 7/24 uk = Цілодобово vi = ngày và đêm - zh-Hans = 24/7 全天候营业 - zh-Hant = 24/7 全天候營業 + zh-Hans = 全天候 + zh-Hant = 全天候 [day_off_today] tags = android,ios @@ -13408,8 +13408,8 @@ sk = Zatvoria o %@ tr = %@ sonra kapanıyor uk = Зачиняється через %@ - zh-Hans = 将于 %@ 后歇业 - zh-Hant = 將於 %@ 後歇業 + zh-Hans = 将于 %@ 后停业 + zh-Hant = 將於 %@ 後停業 [closed] tags = android,ios @@ -13539,7 +13539,7 @@ tr = Çalışma saatlerini düzenle uk = Редагувати години роботи vi = Sửa giờ làm việc - zh-Hans = 编辑营业时间 + zh-Hans = 编辑工作时间 zh-Hant = 編輯營業時間 [no_osm_account] @@ -13583,7 +13583,7 @@ tr = OpenStreetMap hesabınız yok mu? uk = Не зареєстровані в OpenStreetMap? vi = Bạn chưa có tài khoản tại OpenStreetMap ư? - zh-Hans = 没有 OpenStreetMap 账户吗? + zh-Hans = 在OpenStreetMap上没有账户吗? zh-Hant = 沒有 OpenStreetMap 帳號嗎? [register_at_openstreetmap] @@ -13670,8 +13670,8 @@ tr = Şifre (en az 8 karakter) uk = Пароль (мінімум 8 символів) vi = Mật khẩu (tối thiểu 8 ký tự) - zh-Hans = 密码(至少 8 个字符) - zh-Hant = 密碼(至少 8 個字符) + zh-Hans = 密码(最少8个字符) + zh-Hant = 密碼(最少8個字母) [invalid_username_or_password] tags = ios @@ -13972,7 +13972,7 @@ tr = OSM Hesabı uk = Обліковий запис OSM vi = Tài khoản OSM - zh-Hans = OSM 账户 + zh-Hans = OSM账户 zh-Hant = OSM 帳號 [logout] @@ -14059,8 +14059,8 @@ tr = Son yükleme uk = Остання вiдправка vi = Tải lên mới nhất - zh-Hans = 最后上传 - zh-Hant = 最後上傳 + zh-Hans = 上次上传 + zh-Hant = 上次上傳 [thank_you] tags = ios @@ -14189,7 +14189,7 @@ tr = Yerin Adı uk = Назва vi = Tên địa điểm - zh-Hans = 地点名称 + zh-Hans = 地点名 zh-Hant = 地點名稱 [add_language] @@ -14707,7 +14707,7 @@ tr = E-posta veya kullanıcı adı uk = Ел. пошта або ім'я користувача vi = Email hoặc tên người dùng - zh-Hans = 电子邮件或用户名 + zh-Hans = 邮箱或用户名 zh-Hant = 電子郵件或使用者名稱 [phone] @@ -15008,8 +15008,8 @@ tr = Bir rota oluşturmak için tüm haritaları güncellemeli ve ardından rotayı tekrar planlamalısınız. uk = Для побудови маршруту необхідно оновити усі мапи та побудувати маршрут заново. vi = Để tạo một tuyến đường, bạn cần cập nhật tất cả các bản đồ và sau đó lập lại tuyến đường. - zh-Hans = 为了规划路线,您需要更新全部地图并重新规划路线。 - zh-Hant = 為了規劃路線,您需要更新全部地圖並重新規劃路線。 + zh-Hans = 为了创建路线,您需要更新全部地图并重新规划路线。 + zh-Hant = 為了建立路線,您需要更新全部地圖並重新規劃路線。 [downloader_search_field_hint] tags = android,ios @@ -15052,8 +15052,8 @@ tr = Harita bul uk = Знайти мапу vi = Tìm bản đồ - zh-Hans = 搜索地图 - zh-Hant = 搜尋地圖 + zh-Hans = 找到地图 + zh-Hant = 尋找地圖 [migration_download_error_dialog] tags = ios @@ -15096,8 +15096,8 @@ tr = İndirme hatası uk = Помилка завантаження vi = Lỗi tải xuống - zh-Hans = 下载失败 - zh-Hant = 下載失敗 + zh-Hans = 下载错误 + zh-Hant = 下載錯誤 [common_check_internet_connection_dialog] tags = android,ios @@ -15140,7 +15140,7 @@ uk = Будь ласка, перевірте свої налаштування і переконайтеся, що ваш пристрій підлючено до Інтернету. vi = Xin kiểm tra các thiết lập và đảm bảo thiết bị của bạn có kết nối Internet. zh-Hans = 请检查您的设置并确保您的设备已连接至网络。 - zh-Hant = 請檢查您的設定並確保您的裝置已連接至網路。 + zh-Hant = 請檢查您的設定並確保您的設備已連接至網路。 [downloader_no_space_title] tags = android,ios @@ -15182,8 +15182,8 @@ tr = Yeterli alan yok uk = Недостатньо місця vi = Không đủ dung lượng - zh-Hans = 没有足够的空间 - zh-Hant = 沒有足夠的空間 + zh-Hans = 无足够的空间 + zh-Hant = 無足夠的空間 [downloader_no_space_message] tags = android,ios @@ -15269,8 +15269,8 @@ tr = Giriş hatası uk = Виникла помилка при авторизації. vi = Lỗi đăng nhập. - zh-Hans = 无法登录。 - zh-Hant = 無法登入。 + zh-Hans = 登录错误。 + zh-Hant = 登入錯誤。 [editor_profile_changes] tags = android,ios @@ -15662,7 +15662,7 @@ uk = Місцевою мовою vi = Vì nó được viết bằng ngôn ngữ địa phương zh-Hans = 当地语言写道 - zh-Hant = 當地語言寫道 + zh-Hant = 因為它是用當地語言寫的 [editor_edit_place_category_title] tags = android,ios @@ -15791,7 +15791,7 @@ tr = Farklı bir sorun uk = Інші проблема vi = Một vấn đề khác - zh-Hans = 不同的问题 + zh-Hans = 一个不同的问题 zh-Hant = 不同的問題 [whatsnew_editor_message_1] @@ -15834,8 +15834,8 @@ tr = Doğrudan uygulamadan haritaya yeni yerler ekleyin ve mevcut yerleri düzenleyin. uk = Додати нові місця до мапи і редагувати існуючі місця прямо з програми. vi = Nhập các địa điểm mới vào bản đồ, và trực tiếp chỉnh sửa những địa điểm hiện có trên ứng dụng. - zh-Hans = 添加新地点到地图,并直接通过此应用编辑已存在的地点。 - zh-Hant = 新增新地點到地圖,並直接通過此應用編輯已存在的地點。 + zh-Hans = 添加新地点到该地图,并直接通过此应用编辑已存在的地点。 + zh-Hant = 新增新地點到該地圖,並直接通過此應用程式編輯已存在的地點。 [dialog_incorrect_feature_position] tags = ios @@ -15877,8 +15877,8 @@ tr = Konumu değiştir uk = Змініть розташування vi = Thay đổi địa điểm - zh-Hans = 更改位置 - zh-Hant = 更改位置 + zh-Hans = 改变位置 + zh-Hant = 改變位置 [message_invalid_feature_position] tags = android,ios @@ -15920,8 +15920,8 @@ tr = Buraya bir nesne konumlandırılamıyor uk = Об'єкт не може перебувати в цьому місцезнаходженні vi = Một đối tượng không thể đặt được ở đây - zh-Hans = 地点不能放置在这里 - zh-Hant = 地點無法放置在這裡 + zh-Hans = 对象无法设置在这里 + zh-Hant = 物件無法設置在這裡 [osm_presentation] comment = Text in About and OSM Login screens. First %@ is replaced by a local, human readable date. @@ -15967,8 +15967,8 @@ tr = %@ tarihine ait topluluk tarafından oluşturulmuş OpenStreetMap verilerini kullanıyorsunuz. OpenStreetMap.org adresinden haritayı nasıl düzenleyebileceğiniz hakkında bilgi edinebilirsiniz uk = Дані OpenStreetMap, створені спільнотою, станом на %@. Дізнайтеся більше про те, як редагувати та оновлювати мапу на OpenStreetMap.org vi = Dữ liệu OpenStreetMap do cộng đồng tạo ra kể từ %@. Tìm hiểu thêm về cách chỉnh sửa và cập nhật bản đồ tại OpenStreetMap.org - zh-Hans = 截至 %@ 的社区创建的 OpenStreetMap 数据。请访问 OpenStreetMap.org 以了解有关如何编辑和更新地图的信息。 - zh-Hant = 截至 %@ 的社群創建的 OpenStreetMap 資料。請訪問 OpenStreetMap.org 以了解有關如何編輯和更新地圖的更多信息。 + zh-Hans = 截至 %@ 的社区创建的 OpenStreetMap 数据。请访问 OpenStreetMap.org 以了解更多有关如何编辑和更新地图的信息。 + zh-Hant = 截至 %@ 的社群創建的 OpenStreetMap 資料。請訪問 OpenStreetMap.org 以了解更多有關如何編輯和更新地圖的更多信息。 [login_to_make_edits_visible] tags = android,ios @@ -16056,8 +16056,8 @@ tr = İndirmek için daha fazla alana ihtiyacınız var. Lütfen gereksiz verileri silin. uk = Для завантаження потрібно більше вільного місця. Будь ласка, видаліть непотрібні дані. vi = Để tải xuống, bạn cần thêm dung lượng. Xin xóa mọi dữ liệu không cần thiết. - zh-Hans = 为了下载,您需要更多的存储空间。请删除不必要的文件。 - zh-Hant = 為了下載,您需要更多的儲存空間。請刪除不必要的檔案。 + zh-Hans = 为了下载,您需要更多的空间。请删除不必要的数据。 + zh-Hant = 為了下載,您需要更多的空間。請刪除不必要的資料。 [editor_sharing_title] tags = ios @@ -16099,7 +16099,7 @@ tr = Organic Maps haritalarını geliştirdim uk = Я покращив мапи Organic Maps vi = Tôi đã cải thiện các bản đồ Organic Maps - zh-Hans = 我改进了 Organic Maps 地图 + zh-Hans = 我改进了Organic Maps地图 zh-Hant = 我改進了 Organic Maps 地圖 [downloader_of] @@ -16144,8 +16144,8 @@ tr = %1$d/%2$d uk = %1$d з %2$d vi = %1$d trên %2$d - zh-Hans = %1$d / %2$d - zh-Hant = %1$d / %2$d + zh-Hans = %1$d个/共%2$d个 + zh-Hant = %1$d個/共%2$d個 [download_over_mobile_header] tags = android,ios @@ -16273,7 +16273,7 @@ tr = Geçerli bir bina numarası girin uk = Введіть правильний номер будинку vi = Nhập số nhà chính xác - zh-Hans = 输入正确的门牌号码 + zh-Hans = 输入正确的房屋号 zh-Hant = 輸入正確的門牌號碼 [editor_storey_number] @@ -16316,8 +16316,8 @@ tr = Kat sayısı (en fazla %d) uk = Кількість поверхів (максимум %d) vi = Số tầng (tối đa %d) - zh-Hans = 楼层数量 (最多 %d 层) - zh-Hant = 樓層數量(最多 %d 層) + zh-Hans = 楼号 (最大 %d) + zh-Hant = 樓層數(最大 %d) [error_enter_correct_storey_number] comment = Error message in Editor when a user tries to set the number of floors for a building higher than %d floors @@ -16361,7 +16361,7 @@ uk = Редагуйте будівлі висотою максимум %d поверхів vi = Sửa tòa nhà có tối đa %d tầng zh-Hans = 最多可编辑 %d 层的建筑 - zh-Hant = 最多可編輯 %d 層的建築 + zh-Hant = 編輯最多 %d 層的建築 [editor_zip_code] tags = android,ios @@ -16493,8 +16493,8 @@ tr = Bilinmeyen Yer uk = Невідоме місце vi = Địa Điểm Chưa Biết - zh-Hans = 未知地点 - zh-Hant = 未知地點 + zh-Hans = 未知位置 + zh-Hant = 未知的位置 [editor_other_info] tags = android,ios @@ -16715,8 +16715,8 @@ tr = İşletmeci uk = Власник vi = Đơn vị điều hành - zh-Hans = 经营者 - zh-Hant = 經營者 + zh-Hans = 运营者 + zh-Hant = 營運者 [editor_category_unsuitable_title] tags = android @@ -16805,8 +16805,8 @@ tr = Organik Haritalar yalnızca basit nokta kategorileri eklemeye izin verir, yani kasaba, yol, göl, bina ana hatları vb. yoktur. Lütfen bu tür kategorileri doğrudan OpenStreetMap.org'a ekleyin. Adım adım ayrıntılı talimatlar için rehberimize göz atın. uk = Organic Maps дозволяють додавати до мапи лише прості типи об'єктів, тобто без міст, доріг, озер та контурів будівель. Будь ласка, додайте такі категорії на сайті OpenStreetMap.org. Ми також рекомендуємо ознайомитися із детальними інструкціями та іншими додатками для редагування карти. vi = Bản đồ không phải trả tiền chỉ cho phép thêm các danh mục điểm đơn giản, nghĩa là không có thị trấn, đường, hồ, đường viền tòa nhà, v.v. Vui lòng thêm các danh mục đó trực tiếp vào OpenStreetMap.org. Hãy xem hướng dẫn của chúng tôi để biết hướng dẫn chi tiết từng bước. - zh-Hans = Organic Maps 只允许添加简单的点类别,即无法添加城镇、道路、湖泊、建筑轮廓等类别。请直接向 OpenStreetMap.org 添加此类类别。请查看我们的指南,了解详细的步骤说明。 - zh-Hant = Organic Maps 只允許添加簡單的點類別,即無法添加城鎮、道路、湖泊、建築輪廓等類別。請直接向 OpenStreetMap.org 新增此類類別。請查看我們的指南,以了解詳細的步驟說明。 + zh-Hans = Organic Maps 只允许添加简单的点类别,即无法添加城镇、道路、湖泊、建筑轮廓等类别。请直接向OpenStreetMap.org添加此类类别。请查看我们的指南,了解详细的步骤说明。 + zh-Hant = Organic Maps 只允許添加簡單的點類別,即無法添加城鎮、道路、湖泊、建築輪廓等類別。 請直接向OpenStreetMap.org新增此類類別。 請查看我們的指南,以了解詳細的步驟說明。 [downloader_no_downloaded_maps_title] tags = android,ios @@ -16891,7 +16891,7 @@ tr = Çevrimdışı olarak adres bulmak ve gezinmek için haritaları indirin. uk = Завантажте необхідні мапи, щоб знаходити місця та користуватися навігацією без iнтернету. vi = Tải về bản đồ để tìm địa điểm và định hướng ngoại tuyến. - zh-Hans = 下载地图来查找位置和离线浏览。 + zh-Hans = 下载地图来查找位置和离线浏览 zh-Hant = 下載地圖來尋找位置和離線瀏覽。 [current_location_unknown_error_title] @@ -16933,7 +16933,7 @@ tr = Geçerli konum bilinmiyor. uk = Місцезнаходження не знайдено. vi = Chưa biết địa điểm hiện tại. - zh-Hans = 当前位置未知。 + zh-Hans = 当前位置未知 zh-Hant = 目前位置未知。 [current_location_unknown_error_message] @@ -17020,8 +17020,8 @@ tr = Konum hizmetleri devre dışı bırakıldı uk = Ідентифікацію місцезнаходження відключено vi = Chức năng nhận biết địa điểm bị tắt - zh-Hans = 定位服务已被禁用 - zh-Hant = 定位服務已被禁用 + zh-Hans = 地点定位被禁用 + zh-Hant = 地點定位被禁用 [location_services_disabled_message] tags = ios @@ -17063,8 +17063,8 @@ tr = Cihaz ayarlarında coğrafi konuma erişim izni verin uk = Увімкніть доступ до геолокації в налаштуваннях цього пристрою vi = Bật truy cập định vị địa lý trong thiết lập thiết bị - zh-Hans = 启用设备设置中的定位服务 - zh-Hant = 啟用裝置設定中的定位服務 + zh-Hans = 启用设备设置中的地理位置定位 + zh-Hant = 啟用設備設置中的地理位置定位 [location_services_disabled_1] tags = ios @@ -17149,7 +17149,7 @@ uk = 2. Клацніть «Місцезнаходження» vi = 2. Chạm mục Địa điểm zh-Hans = 2. 点击位置 - zh-Hant = 2. 點擊位置 + zh-Hant = 2. 點一下位置 [location_services_disabled_3] comment = iOS Dialog for the case when the location permission is not granted; you might find the exact wording for your language here: https://support.apple.com/en-us/102647 (replace 'en-us' in URL with your language/region) @@ -17191,8 +17191,8 @@ tr = 3. "Uygulamayı Kullanırken"i Seçin uk = 3. Оберіть "Під час роботи програми" vi = 3. Chọn Khi Đang Dùng Ứng dụng - zh-Hans = 3. 点击“使用 App 期间” - zh-Hant = 3. 點擊“使用 App 期間” + zh-Hans = 3. 使用应用时选择 + zh-Hant = 3. 使用應用時選擇 [location_services_disabled_on_device_2] tags = ios @@ -17236,8 +17236,8 @@ tr = 2. Gizlilik'i seçin uk = 2. Виберіть Конфіденційність vi = 2. Chọn Quyền riêng tư - zh-Hans = 2. 点击“隐私和安全性” - zh-Hant = 2. 點擊“隱私權” + zh-Hans = 2. 选择隐私 + zh-Hant = 2. 選擇隱私 [location_services_disabled_on_device_3] tags = ios @@ -17281,8 +17281,8 @@ tr = 3. Konum Servisleri'ni seçin uk = 3. Виберіть Служби визначення місцезнаходження vi = 3. Chọn Dịch vụ định vị - zh-Hans = 3. 选择“定位服务” - zh-Hant = 3. 選擇“定位服務” + zh-Hans = 3.选择位置服务 + zh-Hant = 3. 選擇定位服務 [location_services_disabled_on_device_4] tags = ios @@ -17326,8 +17326,8 @@ tr = 4. Konum Servislerini Açın uk = 4. Увімкніть Служби визначення місцезнаходження vi = 4. Bật Dịch vụ định vị - zh-Hans = 4. 打开“定位服务” - zh-Hant = 4. 開啟“定位服務” + zh-Hans = 4.打开定位服务 + zh-Hant = 4.開啟定位服務 [location_services_disabled_on_device_additional_message] tags = ios @@ -17802,8 +17802,8 @@ tr = Rezervasyon uk = Забронювати vi = Đặt trước - zh-Hans = 预定 - zh-Hant = 預定 + zh-Hans = 预約 + zh-Hant = 預約 [more_on_kayak] comment = A referral link on the place page for some hotels @@ -17893,7 +17893,7 @@ uk = Реферальний бонус, отриманий за кожне бронювання за цим посиланням, йде на розробку Organic Maps. vi = Phần thưởng giới thiệu nhận được cho mỗi lần đặt phòng thông qua liên kết này sẽ hướng tới việc phát triển bản đồ không phải trả tiền. zh-Hans = 每次通过此链接预订所获得的推荐奖金将用于 Organic Maps 的开发。 - zh-Hant = 每次通過此鏈接預定所獲得的推薦獎金將用於 Organic Maps 的開發。 + zh-Hant = 透過此連結進行的每次預訂收到的推薦獎金將用於開發 Organic Maps。 [dialog_kayak_button] comment = A confirmation button text in the explanation dialog that opens hotel details page on Kayak website. @@ -17936,7 +17936,7 @@ tr = Kayak hakkında detaylar uk = Докладніше на Kayak vi = Chi tiết trên Kayak - zh-Hans = 客涯 (Kayak) 上的详细信息 + zh-Hans = Kayak 上的详细信息 zh-Hant = Kayak 上的詳細資訊 [placepage_call_button] @@ -18237,7 +18237,7 @@ uk = Коментар… vi = Nhận xét… zh-Hans = 备注… - zh-Hant = 備註… + zh-Hant = 註解… [editor_reset_edits_message] tags = android,ios @@ -18365,8 +18365,8 @@ tr = Eklenen yer kaldırılsın mı? uk = Видалити об'єкт, що ви додали? vi = Xóa một địa điểm đã thêm? - zh-Hans = 删除已添加的地点? - zh-Hant = 移除已新增的地點? + zh-Hans = 删除已添加的位置? + zh-Hant = 移除已新增的位置? [editor_remove_place_button] tags = android,ios @@ -18616,8 +18616,8 @@ tr = Geçerli bir web adresi girin uk = Введіть вірну адресу веб-сайту vi = Nhập địa chỉ trang web hợp lệ - zh-Hans = 请输入有效的网址 - zh-Hant = 請輸入有效的網址 + zh-Hans = 输入有效网址 + zh-Hant = 輸入有效網址 [error_enter_correct_email] tags = android,ios @@ -18659,8 +18659,8 @@ tr = Geçerli bir e-posta girin uk = Введіть вірну адресу електронної пошти vi = Nhập email hợp lệ - zh-Hans = 请输入有效的电子邮件 - zh-Hant = 請輸入有效的電子郵件 + zh-Hans = 输入有效电子邮箱 + zh-Hant = 輸入有效電子郵件 [error_enter_correct_facebook_page] tags = android @@ -18941,8 +18941,8 @@ tr = Bunu tüm kullanıcılara göndermek ister misiniz? uk = Надіслати усім користувачам? vi = Bạn có muốn gửi cho toàn bộ người dùng? - zh-Hans = 您想要发送给所有用户吗? - zh-Hant = 您想要發送給所有使用者嗎? + zh-Hans = 您想要发给所有用户吗? + zh-Hant = 您想要發給所有用戶嗎? [editor_share_to_all_dialog_message_1] comment = Dialog before publishing the modifications to the public map. @@ -19108,8 +19108,8 @@ tr = En son seyahat edilen rotanızı kaydetmeyi devre dışı bırakmak istiyor musunuz? uk = Вимкнути запис нещодавно пройденого шляху? vi = Tắt ghi lại tuyến đường đã đi gần đây của bạn? - zh-Hans = 禁止记录您最近去过的路线吗? - zh-Hant = 禁止記錄您最近去過的路線嗎? + zh-Hans = 禁止记录您最近去过的路径? + zh-Hant = 禁止記錄您最近去過的路徑? [off_recent_track_background_button] tags = ios @@ -19195,7 +19195,7 @@ uk = Подивись, vi = Xem zh-Hans = 来看看 - zh-Hant = 來看看 + zh-Hant = 看一看 [recent_track_background_dialog_message] tags = ios @@ -19238,8 +19238,8 @@ tr = Organic Maps, en son seyahat ettiğiniz rotayı kaydetmek için arka planda coğrafi konumunuzu kullanır. uk = Organic Maps використовує вашу геопозицію у фоновому режимі для запису нещодавно пройденого шляху. vi = Organic Maps sử dụng định vị của bạn trong ứng dụng chạy nền để ghi lại tuyến đường đã đi gần đây của bạn. - zh-Hans = Organic Maps 在后台使用您的位置记录您最近去过的路线。 - zh-Hant = Organic Maps 在後臺使用您的位置記錄您最近去過的路線。 + zh-Hans = Organic Maps使用背景中的地理位置记录您最近去过的路径。 + zh-Hant = Organic Maps使用背景中的地理位置記錄您最近去過的路徑。 [general_settings] tags = ios @@ -19418,7 +19418,7 @@ uk = Список vi = Danh sách zh-Hans = 列表 - zh-Hant = 列表 + zh-Hant = 清單 [mobile_data_dialog] tags = android,ios @@ -19460,8 +19460,8 @@ tr = Ayrıntılı bilgileri görüntülemek için mobil internet kullanılsın mı? uk = Використовувати мобільні дані для перегляду докладної інформації? vi = Sử dụng mạng Internet di động để hiển thị thông tin chi tiết? - zh-Hans = 使用移动网络显示更多详细信息吗? - zh-Hant = 使用手機網路顯示更多詳細資訊嗎? + zh-Hans = 使用移动网络显示详细信息? + zh-Hant = 使用手機網路顯示詳細資訊? [mobile_data_option_always] tags = android,ios @@ -19680,7 +19680,7 @@ uk = Використання мобільних даних необхідно для сповіщень про оновлення карти та для відображення докладної інформації про місця та мітки. vi = Internet di động là cần thiết để hiển thị thông tin chi tiết về các nơi, ví dụ như ảnh chụp, giá cả và đánh giá. zh-Hans = 要显示地点的详细信息(例如照片、价格和评价),需要使用移动网络。 - zh-Hant = 要顯示地點的詳細資訊(例如照片、價格和評價),需要使用手機網絡。 + zh-Hant = 需有手機網路才能顯示相片、價格與評論等詳細資訊和地點。 [mobile_data_option_never] tags = android,ios @@ -19810,8 +19810,8 @@ tr = Trafik verilerini görüntülemek için haritaların güncellenmesi gerekiyor. uk = Для відображення інформації про трафік необхідно оновити мапи. vi = Để hiển thị dữ liệu giao thông, cần cập nhật bản đồ. - zh-Hans = 诺要显示交通数据,必须更新地图。 - zh-Hant = 諾要顯示交通資料,必須更新地圖。 + zh-Hans = 要显示交通数据,必须更新地图。 + zh-Hant = 若要顯示交通資料,必須更新地圖。 [big_font] tags = android,ios @@ -19941,8 +19941,8 @@ tr = Trafik verilerini görüntülemek için uygulamanın güncellenmesi gerekiyor. uk = Для відображення даних про трафік оновіть додаток. vi = Để hiển thị dữ liệu giao thông, ứng dụng cần phải được cập nhật. - zh-Hans = 诺要显示交通数据,必须更新应用。 - zh-Hant = 諾要顯示交通資訊,必須更新應用。 + zh-Hans = 要显示交通数据,必须更新应用。 + zh-Hant = 若要顯示交通資訊,必須更新 app。 [traffic_data_unavailable] comment = "traffic" as in "road congestion" @@ -19986,7 +19986,7 @@ uk = Дані про трафік недоступні vi = Dữ liệu giao thông không khả dụng zh-Hans = 交通数据不可用 - zh-Hant = 交通資訊不可用 + zh-Hant = 無法使用交通資訊 [enable_logging] tags = android,ios @@ -20029,8 +20029,8 @@ tr = Günlüğü etkinleştir uk = Включити логіювання vi = Bật nhật ký - zh-Hans = 启用日志记录 - zh-Hant = 啟用日誌記錄 + zh-Hans = 启用记录 + zh-Hant = 啟用記錄 [log_file_size] tags = ios @@ -20074,7 +20074,7 @@ tr = Günlük dosyası boyutu: %@ uk = Розмір файлу журналу: %@. vi = Kích thước tệp nhật ký: %@ - zh-Hans = 日志文件大小:%@ + zh-Hans = 日志文件大小: %@ zh-Hant = 日誌檔案大小:%@ [feedback_general] @@ -20119,7 +20119,7 @@ tr = Genel Geri Bildirim uk = Загальний відгук vi = Phản hồi chung - zh-Hans = 常规反馈 + zh-Hans = 一般反馈 zh-Hant = 一般反應 [prefs_languages_information] @@ -20163,8 +20163,8 @@ tr = Sesli yönlendirme için TTS sistemini kullanıyoruz. Çoğu Android cihaz, Google TTS'yi kullanıyor. Uygulamayı, Google Play'den indirebilir veya güncelleyebilirsiniz (https://play.google.com/store/apps/details?id=com.google.android.tts) uk = Для озвучування голосових інструкцій ми використовуємо систему TTS. Більшість Android-пристроїв підтримують систему Google TTS. Для завантаження або оновлення перейдіть до магазину Google Play (https://play.google.com/store/apps/details?id=com.google.android.tts) vi = Chúng tôi sử dụng TTS hệ thống để hướng dẫn bằng giọng nói. Rất nhiều thiết bị Android sử dụng Google TTS, bạn có thể tải về hoặc cập nhật nó từ Google Play (https://play.google.com/store/apps/details?id=com.google.android.tts) - zh-Hans = 我们的语音导航使用“文本转语音”系统。许多 Android 设备使用 Google 的文本转语音系统,您可以从 Google Play (https://play.google.com/store/apps/details?id=com.google.android.tts) 下载或更新这一功能 - zh-Hant = 我們的語音導航使用“文本轉語音”系統。許多 Android 裝置使用 Google 的文本轉語音系統,您可以從 Google Play (https://play.google.com/store/apps/details?id=com.google.android.tts) 下載或更新這一功能。 + zh-Hans = 我们为语音指令使用“文字转语音”系统。许多 Android 设备使用 Google 文字转语音,您可以从 Google Play (https://play.google.com/store/apps/details?id=com.google.android.tts) 下载或更新这一功能 + zh-Hant = 我們使用系統 TTS 提供語音指示。許多 Android 裝置使用 Google TTS,您可從 Google Play 下載或更新 (https://play.google.com/store/apps/details?id=com.google.android.tts) [prefs_languages_information_off] tags = android @@ -20206,8 +20206,8 @@ tr = Bazı diller için uygulama mağazasından (Google Play, Galaxy Store, App Gallery, FDroid) farklı bir konuşma sentezleyicisi veya ek bir dil paketi yüklemeniz gerekebilir. Cihaz ayarları → Dil ve Giriş → Konuşma → Metin Okuma seçeneğini açın. Buradan konuşma sentezi ayarlarını yönetebilir (örneğin, çevrimdışı kullanım için bir dil paketini karşıdan yükleyebilir) ve başka bir metin okuma motorunu seçebilirsiniz. uk = Для деяких мов вам знадобиться встановити інший додаток для синтезу мовлення або додатковий мовний пакет з магазину додатків (Google Play, Galaxy Store, App Gallery, FDroid).\nВідкрийте налаштування пристрою → Мови та введення → Мовлення → Синтез мовлення.\nТут ви можете здійснювати управління налаштуваннями синтезу мовлення (наприклад, завантажити мовний пакет для використання офлайн) або вибрати інший програмний рушій для синтезу мовлення. vi = Đối với một số ngôn ngữ, bạn sẽ cần cài đặt một trình tổng hợp lời nói khác hoặc một gói ngôn ngữ bổ sung từ cửa hàng ứng dụng (Google Play, Galaxy Store, App Gallery, FDroid).\nMở cài đặt của thiết bị → Ngôn ngữ và nhập liệu → Lời nói → Đầu ra văn bản sang lời nói.\nTại đây bạn có thể quản lý các cài đặt tổng hợp lời nói (ví dụ, tải về các gói ngôn ngữ để sử dụng ngoại tuyến) và chọn một công cụ chuyển đổi văn bản sang lời nói khác. - zh-Hans = 对于某些语言,您需要从应用商店(例如 Google Play 商店、Galaxy Store)中安装其他语音合成器或语言包。\n打开您的设备的设置 → 语言和输入法 → 语音 → 文字转语音 (TTS) 输出。\n您可以在这里管理语音合成的设置(例如,下载语言包供离线使用)和选择其他文字转语音引擎。 - zh-Hant = 對於某些語言,您需要從應用商店(例如 Google Play Store、Galaxy Store)中安裝其他語音合成器或語言包。\n打開您的裝置的設定 → 語言和輸入法 → 語音 → 文字轉語音 (TTS) 輸出。\n您可以在這裡管理語音合成的設定(例如,下載語言包供離線使用)和選擇其他文字轉語音引擎。 + zh-Hans = 对于某些语言,您需要从应用商店(Google Play Market、Galaxy Store)中安装其他语音合成器或语言包。\n打开您的设备的设置 → 语言和输入法 → 语音 → 文字转语音 (TTS) 输出。\n您可以在这里管理语音合成的设置(例如,下载语言包供离线使用)和选择其他文字转语音引擎。 + zh-Hant = 對於某些語言,您將需要從 App 商店 (Google Play 商店, Galaxy Store) 安裝其他語音合成器或額外的語言套件。\n開啟您裝置的設定 → 語言與輸入 → 語音 → 文字轉換語音輸出。\n在這裡,您可以管理語音合成器的設定(例如,下載語言套件以供離線使用),並選取其他文字轉換語音引擎。 [prefs_languages_information_off_link] tags = android @@ -20252,7 +20252,7 @@ uk = Додаткову інформацію див. у цьому керівництві. vi = Để biết thêm thông tin, vui lòng kiểm tra bài hướng dẫn này. zh-Hans = 如需了解更多信息,请查阅此指南。 - zh-Hant = 如需瞭解更多資訊,請參閱此指南。 + zh-Hant = 如需更多資訊,請參閱本指南。 [transliteration_title] tags = android,ios @@ -20298,8 +20298,8 @@ tr = Latin harf çevirisi uk = Транслітерація латинськими літерами vi = Chuyển ngữ sang chữ Latinh - zh-Hans = 拉丁字母音译 - zh-Hant = 拉丁字母音譯 + zh-Hans = 直译成拉丁文 + zh-Hant = 音譯為拉丁文 [learn_more] tags = android @@ -20342,7 +20342,7 @@ tr = Daha fazla bilgi edinin uk = Докладніше vi = Tìm hiểu thêm - zh-Hans = 了解更多信息 + zh-Hans = 了解更多 zh-Hant = 瞭解更多資訊 [core_exit] @@ -20433,8 +20433,8 @@ tr = Bir rota başlangıç noktası eklemek için aramayı kullanın veya haritaya dokunun uk = Скористайтеся пошуком або торкніться мапи, щоб додати початкову точку маршруту vi = Sử dụng tìm kiếm hoặc nhấn vào bản đồ để thêm điểm bắt đầu tuyến đường - zh-Hans = 请搜索地点或点击地图以添加路线起点 - zh-Hant = 請搜尋地點或點擊地圖以新增路線起點 + zh-Hans = 请使用搜索或点击地图以添加路线起点 + zh-Hant = 請使用搜尋或點擊地圖以新增路線起點 [routing_add_finish_point] tags = android,ios @@ -20479,8 +20479,8 @@ tr = Bir hedef noktası eklemek için aramayı kullanın veya haritaya dokunun uk = Скористайтеся пошуком або торкніться мапи, щоб додати пункт призначення vi = Sử dụng tìm kiếm hoặc nhấn vào bản đồ để thêm điểm đến - zh-Hans = 请搜索地点或点击地图以添加目的地 - zh-Hant = 請搜尋地點或點擊地圖以新增目的地 + zh-Hans = 请使用搜索或点击地图以添加目的地 + zh-Hant = 請使用搜尋或點擊地圖以新增目的地 [planning_route_manage_route] tags = ios @@ -20790,8 +20790,8 @@ tr = Tüm harita düzenlemelerinizi otomatik olarak yüklemek için lütfen OpenStreetMap'e giriş yapın. Daha fazla bilgi burada. uk = Будь ласка увійдіть в акаунт OpenStreetMap.org, щоб автоматично публікувати зміни до мапи. Подробиці за посиланням. vi = Vui lòng đăng nhập vào OpenStreetMap để tự động tải lên tất cả các chỉnh sửa bản đồ của bạn. Tìm hiểu thêm tại đây. - zh-Hans = 请登录 OpenStreetMap 以自动上传您的所有地图编辑。诺要了解更多信息请点击这里。 - zh-Hant = 請登入 OpenStreetMap 以自動上傳您的所有地圖編輯。諾要了解更多資訊請點擊這裡。 + zh-Hans = 请登录OpenStreetMap,自动上传您编辑的所有地图。了解更多信息请点击这里。 + zh-Hant = 請登入 OpenStreetMap 自動上傳您所有的地圖編輯內容。了解更多此處。 [alert_reauth_message_ios] comment = For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part @@ -20837,8 +20837,8 @@ tr = Tüm harita düzenlemelerinizi otomatik olarak yüklemek için lütfen OpenStreetMap'e giriş yapın. Daha fazla bilgi uk = Будь ласка увійдіть в акаунт OpenStreetMap.org, щоб автоматично публікувати зміни до мапи. Подробиці за vi = Vui lòng đăng nhập vào OpenStreetMap để tự động tải lên tất cả các chỉnh sửa bản đồ của bạn. Tìm hiểu thêm - zh-Hans = 请登录 OpenStreetMap 以自动上传您的所有地图编辑。了解更多 - zh-Hant = 請登入 OpenStreetMap 以自動上傳您的所有地圖編輯。了解更多 + zh-Hans = 请登录OpenStreetMap,自动上传您编辑的所有地图。了解更多信息 + zh-Hant = 請登入 OpenStreetMap 自動上傳您所有的地圖編輯內容。了解更多 [alert_reauth_link_text_ios] comment = For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part @@ -20884,8 +20884,8 @@ tr = burada uk = посиланням vi = tại đây - zh-Hans = 这里 - zh-Hant = 這裡 + zh-Hans = 请点击这里 + zh-Hant = 此處 [dialog_error_storage_title] tags = android @@ -20930,7 +20930,7 @@ uk = Не вдалося отримати доступ до сховища vi = Vấn đề truy cập ổ lưu trữ zh-Hans = 存储空间访问问题 - zh-Hant = 儲存空間訪問問題 + zh-Hant = 儲存空間存取問題 [dialog_error_storage_message] tags = android @@ -20974,8 +20974,8 @@ tr = Harici bellek kullanılamıyor, muhtemelen SD Kart çıkarılmış, hasarlı veya dosya sistemi salt okunur. Lütfen kontrol edin veya support@organicmaps.app adresinden bizimle iletişime geçin uk = Зовнішнє сховище не доступно. Ймовірно, SD-картку пам'яті було вилучено, пошкоджено, або система файлів доступна тільки для читання. Будь ласка, перевірте та зв'яжіться з нами, написавши на адресу електронну пошту support@organicmaps.app vi = Ổ lưu trữ bên ngoài không khả dụng, có thể Thẻ SD đã bị tháo, bị hỏng hoặc hệ thống tập tin được thiết lập chỉ đọc. Hãy kiểm tra và liên hệ với chúng tôi qua support@organicmaps.app - zh-Hans = 外部存储空间不可用,很可能是因为 SD 卡已移除、损毁,或者文件系统为只读状态。请进行检查,然后通过 support@organicmaps.app 联系我们。 - zh-Hant = 外部儲存空間不可用,很可能是因為 SD 卡已移除、毀損,或檔案系統處於唯讀狀態。請進行檢查,然後通過 support@organicmaps.app 聯絡我們。 + zh-Hans = 外部存储空间不可用,可能是存储卡已移除、损坏,或者文件系统为只读。请检查,然后通过以下方式联系我们:support@organicmaps.app + zh-Hant = 外部儲存空間不可用,很可能是因為 SD 卡已移除、毀損,或檔案系統處於唯讀狀態。請進行檢查,然後以 support@organicmaps.app 方式聯繫我們 [setting_emulate_bad_storage] tags = android @@ -21156,7 +21156,7 @@ uk = Списки vi = Danh sách zh-Hans = 列表 - zh-Hant = 列表 + zh-Hant = 清單 [bookmark_lists_hide_all] comment = Do not display all bookmark lists on the map @@ -21358,7 +21358,7 @@ uk = Створити новий список vi = Tạo danh sách mới zh-Hans = 创建新的列表 - zh-Hant = 創建新的列表 + zh-Hant = 創建新列表 [bookmarks_import] tags = android,ios @@ -21493,7 +21493,7 @@ uk = %@ (%@ з %@) vi = %@ (%@ / %@) zh-Hans = %@ (%@ / %@) - zh-Hant = %@ (%@ / %@) + zh-Hant = %@ (%@,共%@) [downloader_process] tags = ios @@ -21539,7 +21539,7 @@ uk = Завантаження %@… vi = Tải về %@… zh-Hans = 正在下載 %@… - zh-Hant = 正在下載 %@… + zh-Hant = 下載 %@ 中…… [downloader_applying] tags = ios @@ -21584,8 +21584,8 @@ tr = %@ uygulanıyor… uk = Застосування %@… vi = Áp dụng %@… - zh-Hans = 正在应用 %@… - zh-Hant = 正在應用 %@… + zh-Hans = 正在套用 %@… + zh-Hant = 應用 %@ 中…… [bookmarks_error_message_share_general] tags = android,ios @@ -21630,8 +21630,8 @@ tr = Bir uygulama hatasından dolayı paylaşılamıyor uk = Неможливо поділитися через помилку програми vi = Không thể chia sẻ do lỗi ứng dụng - zh-Hans = 由于应用程序出错,导致无法分享 - zh-Hant = 由於應用程式出錯,導致無法分享 + zh-Hans = 由于应用程序出错而无法分享 + zh-Hant = 由於 app 出錯而無法分享 [bookmarks_error_title_share_empty] tags = android,ios @@ -21676,8 +21676,8 @@ tr = Paylaşma hatası uk = Помилка обміну vi = Lỗi chia sẻ - zh-Hans = 无法分享 - zh-Hant = 無法分享 + zh-Hans = 分享错误 + zh-Hant = 分享錯誤 [bookmarks_error_message_share_empty] tags = android,ios @@ -21722,7 +21722,7 @@ uk = Неможливо поділитися пустим списком vi = Không thể chia sẻ một danh sách trống zh-Hans = 无法分享空列表 - zh-Hant = 無法分享空列表 + zh-Hant = 無法分享空的列表 [bookmarks_error_title_empty_list_name] tags = android @@ -21905,8 +21905,8 @@ tr = Bu isim zaten alınmış uk = Це ім'я вже зайнято vi = Tên này đã được sử dụng - zh-Hans = 这个名称已经被使用了 - zh-Hant = 這個名稱已經被使用了 + zh-Hans = 这个名字已经被使用了 + zh-Hant = 這個名字已經被使用了 [bookmarks_error_message_list_name_already_taken] tags = android @@ -21995,8 +21995,8 @@ tr = Bu isim çok uzun uk = Це ім'я задовге vi = Tên này quá dài - zh-Hans = 这个名称太长了 - zh-Hant = 這個名稱太長了 + zh-Hans = 这个名字太长了 + zh-Hant = 這個名字太長了 [please_wait] tags = android @@ -22253,8 +22253,8 @@ uk:one = %d файл був знайдений. Ви побачите його після перетворення. uk:other = %d файлів було знайдено. Ви побачите їх після конвертації. vi:other = %d tập tin đã được tìm thấy. Bạn sẽ thấy chúng sau khi chuyển đổi. - zh-Hans = 找到 %d 个文件,转换后您才能看到它们。 - zh-Hant = 找到 %d 個文件,轉換後您才能看到它們。 + zh-Hans = 找到%d个文件。 转换后你会看到它。 + zh-Hant = 找到%d個文件。 轉換後你會看到它。 [button_convert] tags = ios @@ -22299,8 +22299,8 @@ tr = Dönüştür uk = Конвертувати vi = Chuyển đổi - zh-Hans = 转换 - zh-Hant = 轉換 + zh-Hans = 兑换 + zh-Hant = 兌換 [bookmarks_convert_error_title] tags = ios @@ -22502,8 +22502,8 @@ tr = %d rota uk = %d треків vi = %d các chặn đường - zh-Hans = %d 个轨迹 - zh-Hant = %d 個軌跡 + zh-Hans = %d 跟踪 + zh-Hant = %d 軌跡 [privacy] comment = Settings privacy group in settings screen @@ -22868,7 +22868,7 @@ uk = Список порожній vi = Danh sách trống zh-Hans = 该列表为空 - zh-Hant = 該列表為空 + zh-Hant = 列表為空 [bookmarks_empty_list_message] tags = android @@ -22912,8 +22912,8 @@ tr = Yer imi eklemek için önce haritadaki bir yere sonrasında ise yıldız simgesine dokunun uk = Щоб додати нову мітку, натисніть на значок зірочки в картці об’єкта vi = Để thêm dấu trang, hãy nhấn vào một địa điểm trên bản đồ và sau đó nhấn vào biểu tượng dấu sao - zh-Hans = 要添加新书签,请点击对象卡片中的星形图标 - zh-Hant = 要增加新書籤,請點擊對象卡片中的星型圖標 + zh-Hans = 要添加新标签,请单击对象卡中的星形图标 + zh-Hant = 要增加新標籤,請點一下對象卡片中的星型圖標 [category_desc_more] tags = android @@ -23080,8 +23080,8 @@ tr = KMZ Olarak Dışa Aktar uk = Експорт KMZ vi = Xuất KMZ - zh-Hans = 导出为 KMZ - zh-Hant = 導出為 KMZ + zh-Hans = 导出 KMZ + zh-Hant = 出口KMZ [export_file_gpx] tags = android,ios @@ -23124,8 +23124,8 @@ tr = GPX Olarak Dışa Aktar uk = Експорт GPX vi = Xuất GPX - zh-Hans = 导出为 GPX - zh-Hant = 導出為 GPX + zh-Hans = 导出 GPX + zh-Hant = 導出GPX [delete_list] tags = android,ios @@ -23213,8 +23213,8 @@ tr = Haritadan gizle uk = Приховати з карти vi = Ẩn từ bản đồ - zh-Hans = 从地图上隐藏 - zh-Hant = 從地圖上隱藏 + zh-Hans = 从卡中隐藏 + zh-Hant = 從卡中隱藏 [public_access] tags = android @@ -23258,8 +23258,8 @@ tr = Genel erişim uk = Публічний доступ vi = Truy cập công khai - zh-Hans = 允许公众访问 - zh-Hant = 允許公眾訪問 + zh-Hans = 公共访问 + zh-Hant = 開放空間 [limited_access] tags = android @@ -23303,8 +23303,8 @@ tr = Sınırlı erişim uk = Приватний доступ vi = Truy cập hạn chế - zh-Hans = 不允许访问的私人空间 - zh-Hant = 不允許訪問的私人空間 + zh-Hans = 私人访问 + zh-Hant = 私人空間 [bookmark_list_description_hint] tags = android,ios @@ -23348,8 +23348,8 @@ tr = Bir açıklama yazın (metin veya html) uk = Додайте опис (текст чи html) vi = Đánh vào một mô tả (văn bản hoặc html) - zh-Hans = 添加说明(文字或 html) - zh-Hant = 增加說明(文字或 html) + zh-Hans = 请添加说明(文字或html) + zh-Hant = 增加說明(文字或html) [not_shared] tags = android @@ -23850,7 +23850,7 @@ tr = Otomatik mod seçildiğinde, uygulama geçerli pil seviyesine bağlı olarak şarj harcayan özellikleri devre dışı bırakmaya başlar uk = Якщо увімкнено режим енергозбереження, додаток буде відключати енерговитратні функції в залежності від поточного заряду телефону vi = Nếu chế độ tiết kiệm năng lượng được bật, ứng dụng sẽ tắt các chức năng tiêu thụ năng lượng tùy thuộc vào mức pin hiện tại của điện thoại - zh-Hans = 如果开启省电模式,应用程序将根据手机的当前电量关闭耗电功能 + zh-Hans = 如果开启省电模式,应用程序将根据手机的当前电量关耗电功能 zh-Hant = 如果開啟省電模式,應用程序將根據手機的當前電量關閉耗電功能 [power_managment_setting_never] @@ -23942,8 +23942,8 @@ tr = Otomatik uk = Автоматично vi = Tự động - zh-Hans = 当电量低时 - zh-Hant = 當電量低時 + zh-Hans = 自动 + zh-Hant = 自動 [power_managment_setting_manual_max] tags = android,ios @@ -24034,8 +24034,8 @@ tr = Bu seçenek tanılama amacıyla günlüğe kaydetmeyi açar. Ekibimizin uygulamayla ilgili sorunları gidermesine yardımcı olabilir. Sorununuzla ilgili ayrıntılı günlükleri kaydetmek ve bize göndermek için bu seçeneği geçici olarak etkinleştirin. uk = Дана опція вмикається для логування дій з метою діагностики. Це допомагає команді виявити проблеми з додатком. Тимчасово включайте цю настройку тільки для відправки детальної інформації про знайдену вами проблему в додатку через кнопку "Сповістити про помилку". vi = Tùy chọn này được kích hoạt để ghi nhật ký đăng nhập cho mục đích chẩn đoán. Điều này sẽ giúp nhóm chúng tôi làm rõ các vấn đề liên quan đến ứng dụng. Hãy bật tùy chọn này chỉ khi nào có yêu cầu hỗ trợ từ Organic Maps. - zh-Hans = 临时启用此选项,以便使用“报告错误”功能在帮助对话框中记录并手动发送详细诊断日志给我们。日志可能包含位置信息。 - zh-Hant = 暫時啟用此選項,以便使用“報告問題”功能在幫助對話框中記錄並手動發送詳細的診斷日誌給我們。日誌可能包含位置資訊。 + zh-Hans = 临时启用此选项,以便使用“报告错误”功能在帮助对话框中记录并手动发送有关您的问题的详细诊断日志给我们。日志可能包含位置信息。 + zh-Hant = 暫時啟用此選項,以便使用「回報問題」功能在幫助對話框中記錄並手動發送詳細的診斷日誌給我們。日誌可能包含位置資訊。 [access_rules_author_only] tags = android @@ -24215,8 +24215,8 @@ tr = Asfaltsız yollardan kaçın uk = Уникати ґрунтових доріг vi = Tránh đường đất - zh-Hans = 避开未铺砌道路 - zh-Hant = 避開未鋪砌道路 + zh-Hans = 避开未铺设道路 + zh-Hant = 避開未鋪設道路 [avoid_ferry] comment = Recommended length for CarPlay and Android Auto is around 25-27 characters @@ -24397,8 +24397,8 @@ tr = Maalesef, muhtemelen belirlediğiniz seçeneklerden dolayı bir rota bulamadık. Lütfen seçenekleri değiştirin ve tekrar deneyin uk = На жаль, ми не змогли побудувати маршрут з вибраними опціями. Змініть налаштування та спробуйте ще раз vi = Rất tiếc, chúng không thể tạo tuyến đường với những tùy chọn đã chọn. Hãy thay đổi thiết lập và thử lại - zh-Hans = 很遗憾,我们无法使用所选的绕行设置规划路线。请更改设置,然后重试 - zh-Hant = 很遺憾,我們無法使用所選的繞行設定規劃路線。請更改設定,然後重試 + zh-Hans = 很遗憾,我们无法使用所选选项规划路线。请更改设置,然后重试 + zh-Hant = 很遺憾,我們無法使用所選選項規劃路線。請更改設定,然後重試 [define_to_avoid_btn] tags = android,ios @@ -24443,8 +24443,8 @@ tr = Kaçınılması gereken yolları tanımlayın uk = Налаштувати шляхи об’їзду vi = Thiết lập đường đi vòng - zh-Hans = 选择要避开的道路 - zh-Hant = 選擇要避開的道路 + zh-Hans = 设置绕行路径 + zh-Hant = 設定繞行路徑 [change_driving_options_btn] tags = android,ios @@ -24576,8 +24576,8 @@ tr = Asfaltsız yol uk = Ґрунтова дорога vi = Đường đất - zh-Hans = 未铺砌道路 - zh-Hant = 未鋪砌道路 + zh-Hans = 土路 + zh-Hant = 土路 [ferry_crossing] tags = android,ios @@ -24664,8 +24664,8 @@ tr = Hadi gidelim uk = Поїхали vi = Đi nào - zh-Hans = 出发 - zh-Hant = 出發 + zh-Hans = 前往 + zh-Hant = 前往 [pick_destination] tags = ios @@ -24708,8 +24708,8 @@ tr = Hedef uk = Ціль vi = Mục đích - zh-Hans = 目的地 - zh-Hant = 目的地 + zh-Hans = 目标 + zh-Hant = 目標 [follow_my_position] tags = ios @@ -24753,8 +24753,8 @@ tr = Tekrar ortala uk = Відцентрувати vi = Định tâm - zh-Hans = 重新居中 - zh-Hant = 重新居中 + zh-Hans = 定好中心 + zh-Hant = 重新設定中心點 [search_results] tags = ios @@ -24841,8 +24841,8 @@ tr = Sonra uk = Далі vi = Sau đó - zh-Hans = 然后 - zh-Hant = 然後 + zh-Hans = 接下来 + zh-Hant = 接下來 [redirect_route_alert] tags = ios @@ -24886,8 +24886,8 @@ tr = Yeniden bir rota oluşturmak ister misiniz? uk = Бажаєте перебудувати маршрут? vi = Bạn có muốn tạo lại tuyến không? - zh-Hans = 您想重新规划路线吗? - zh-Hant = 您想重新規劃路線嗎? + zh-Hans = 想重建路线? + zh-Hant = 想重建路線? [yes] comment = A generic "Yes" button in dialogs @@ -25087,8 +25087,8 @@ tr = Vardınız! uk = Ви прибули! vi = Bạn đã tới nơi! - zh-Hans = 您已到达目的地! - zh-Hant = 您已到達目的地! + zh-Hans = 您已到达! + zh-Hant = 您已經到達了! [keyboard_availability_alert] tags = ios @@ -25131,7 +25131,7 @@ tr = Klavye sürüş sırasında kullanılamaz uk = Клавіатура недоступна під час руху vi = Bàn phím không khả dụng trong thời gian di chuyển - zh-Hans = 开车时键盘不可用 + zh-Hans = 移动时键盘不可用 zh-Hant = 開車時鍵盤不可用 [dialog_routing_change_start_carplay] @@ -25176,8 +25176,8 @@ tr = Mevcut konumunuzdan rota oluşturulamıyor uk = Неможливо побудувати маршрут від поточного місця розташування vi = Không thể tạo tuyến đường từ địa điểm hiển tại - zh-Hans = 无法从当前位置规划路线 - zh-Hant = 無法從當前位置規劃路線 + zh-Hans = 无法从当前位置构建路线 + zh-Hant = 無法從當前位置構建路線 [dialog_routing_change_end_carplay] tags = ios @@ -25221,8 +25221,8 @@ tr = Hedefinize rota oluşturulamıyor. Lütfen başka bir nokta seçin uk = Неможливо побудувати маршрут до кінцевої точки. Оберіть іншу vi = Không thể tạo tuyến đường tới điểm kết cuối. Hãy chọn điểm khác - zh-Hans = 无法规划到终点的路线。请选择其它目的地 - zh-Hant = 無法規劃到終點的路線。請選擇其它目的地 + zh-Hans = 无法建立到终点的路线。请选择其他(路线) + zh-Hant = 無法建立到終點的路線。請選擇其他(路線) [dialog_routing_check_gps_carplay] tags = ios @@ -25266,8 +25266,8 @@ tr = GPS sinyali yok. Lütfen açık bir alana geçin uk = Немає сигналу GPS. Перейдіть на відкриту місцевість vi = Không có tín hiệu GPS. Hãy đến vị trí có không gian mở - zh-Hans = 没有 GPS 信号。请沿着空旷区域行驶 - zh-Hant = 沒有 GPS 信號。請沿著空曠區域行駛 + zh-Hans = 无GPS信号。请沿着空旷区域行驶 + zh-Hant = 無GPS信號。請沿著空曠區域行駛 [dialog_routing_unable_locate_route_carplay] tags = ios @@ -25311,8 +25311,8 @@ tr = Rota oluşturulamıyor. Lütfen başka bir rota noktası belirtin uk = Неможливо побудувати маршрут. Оберіть інші точки маршруту vi = Không thể tạo tuyến đường. Hãy chọn những điểm khác cho tuyến đường - zh-Hans = 无法规划路线。请选择其他路线点 - zh-Hant = 無法規劃路線。請選擇其他路線點 + zh-Hans = 无法建立路线。请选择其他路线点 + zh-Hant = 無法建立路線。請選擇其他路線點 [dialog_routing_download_files_carplay] tags = ios @@ -25356,8 +25356,8 @@ tr = Rota oluşturmak için cihazınızdaki eksik haritaları indirin uk = Щоб побудувати маршрут, завантажте відсутні карти на своєму пристрої vi = Để tạo tuyến đường, hãy tải xuống các bản đồ còn thiếu về thiết bị - zh-Hans = 为了规划路线,请在您的设备中下载所缺少的地图 - zh-Hant = 為了規劃路線,請在您的裝置中下載所缺少的地圖 + zh-Hans = 为了创建线路,请在您的设备中下载所缺少的地图 + zh-Hant = 爲了創建線路,請在您的設備中下載所缺少的地圖 [dialog_routing_system_error_carplay] tags = ios @@ -25401,8 +25401,8 @@ tr = Hata oluştu. Lütfen uygulamayı yeniden başlatın uk = Виникла помилка. Перезапустіть додаток vi = Đã xảy ra lỗi. Khởi động lại ứng dụng - zh-Hans = 发生了错误,请重新启动应用程序 - zh-Hant = 發生了錯誤,請重新啟動應用程式 + zh-Hans = 发生了错误。请重新启动程序 + zh-Hant = 發生錯誤,請重新啟動 app [dialog_routing_rebuild_from_current_location_carplay] tags = ios @@ -25491,8 +25491,8 @@ tr = Rota, bir arabalı seyahat rotasına dönüştürülecek uk = Маршрут буде змінено на автомобільний vi = Tuyến đường sẽ được thay đổi thành tuyến dành cho xe ô tô - zh-Hans = 路线将转换为汽车路线 - zh-Hant = 路線將轉換為汽車路線 + zh-Hans = 该路线将改为汽车(路线) + zh-Hant = 該路線將改為汽車(路線) [not_all_shown_bookmarks_carplay] tags = ios @@ -25536,7 +25536,7 @@ tr = Tüm yer imleri gösterilmez uk = Відображаються не всі мітки vi = Không phải tất cả dấu trang đều được hiển thị - zh-Hans = 未显示所有书签 + zh-Hans = 并非所有书签都会显示 zh-Hant = 未顯示所有書籤 [switch_to_phone_bookmarks_carplay] @@ -25581,8 +25581,8 @@ tr = Tüm yer imlerini görmek için telefona geçin uk = Перейдіть на телефон, щоб побачити всі мітки vi = Chuyển sang điện thoại để xem tất cả dấu trang - zh-Hans = 切换到手机以查看所有书签 - zh-Hant = 切換到手機以查看所有書籤 + zh-Hans = 切换到手机查看所有书签 + zh-Hant = 切換到手機查看所有書籤 [ok] tags = android,ios @@ -25628,7 +25628,7 @@ uk = Ок vi = Ok zh-Hans = 好的 - zh-Hant = 好的 + zh-Hant = 好 [speedcams_alert_title_carplay_1] tags = ios @@ -25672,8 +25672,8 @@ tr = Hız kameraları uk = Камери vi = Сam tốc độ - zh-Hans = 限速拍照 - zh-Hant = 限速拍照 + zh-Hans = 摄像头 + zh-Hant = 測速照相機 [speedcams_alert_title_carplay_2] tags = ios @@ -25717,7 +25717,7 @@ tr = Hız uyarıları uk = Інфо о камерах vi = Cảnh báo tốc độ - zh-Hans = 超速警告 + zh-Hans = 摄像头信息 zh-Hant = 超速警告 [download_map_carplay] @@ -25762,8 +25762,8 @@ tr = Lütfen haritaları cihazınıza Organic Maps uygulamasından indirin uk = Завантажте карти в додатку Organic Maps на своєму пристрої vi = Vui lòng tải xuống bản đồ trong ứng dụng Organic Maps trên thiết bị của bạn - zh-Hans = 将 Organic Maps 应用程序中的地图下载至个人设备中 - zh-Hant = 將Organic Maps 應用程式中的地圖下載至個人裝置中 + zh-Hans = 将Organic Maps软件中的地图下载至个人设备中 + zh-Hant = 將Organic Maps app 中的地圖下載至個人設備中 [carplay_roundabout_exit] tags = ios @@ -25807,8 +25807,8 @@ tr = %@ çıkış uk = %@ з’їзд vi = Lối ra %@ của vòng xuyến - zh-Hans = 第 %@ 个出口 - zh-Hant = 第 %@ 个出口 + zh-Hans = %@号坡道 + zh-Hant = %@號坡道 [sort] comment = max. 10 symbols, both iOS and Android @@ -25853,8 +25853,8 @@ tr = Sırala… uk = Сортувати vi = Sắp xếp… - zh-Hans = 排序… - zh-Hant = 排序… + zh-Hans = 分类…… + zh-Hant = 分類…… [sort_bookmarks] comment = Android, title, max 20-22 symbols @@ -25899,8 +25899,8 @@ tr = Yer imlerini sırala uk = Сортувати мітки vi = Sắp xếp dấu trang - zh-Hans = 分类排序 - zh-Hant = 分類排序 + zh-Hans = 分类标签 + zh-Hant = 分類書籤 [sort_default] comment = iOS @@ -25945,7 +25945,7 @@ uk = Сортувати за промовчанням vi = Sắp xếp theo mặc định zh-Hans = 默认排序 - zh-Hant = 默認排序 + zh-Hant = 按預設值排序 [sort_type] tags = ios @@ -26167,8 +26167,8 @@ tr = Varsayılana göre uk = Усталено vi = Theo mặc định - zh-Hans = 使用默认值 - zh-Hant = 使用默認值 + zh-Hans = 默认情况下 + zh-Hant = 採用預設值 [by_type] comment = Android @@ -26439,7 +26439,7 @@ tr = Bir ay önce uk = Місяць тому vi = Tháng trước - zh-Hans = 一个月前 + zh-Hans = 一月前 zh-Hant = 一個月前 [moremonth_ago_sorttype] @@ -26571,8 +26571,8 @@ tr = Bana yakınlarda uk = Поруч зі мною vi = Ở gần tôi - zh-Hans = 在我附近 - zh-Hant = 在我附近 + zh-Hans = 在我旁边 + zh-Hant = 附近 [others_sorttype] tags = android,ios @@ -26705,8 +26705,8 @@ tr = Görülecek yerler uk = Пам’ятки vi = Danh lam thắng cảnh - zh-Hans = 旅游景点 - zh-Hant = 旅遊景點 + zh-Hans = 名胜 + zh-Hant = 觀光景點 [museums] tags = android,ios @@ -26881,7 +26881,7 @@ tr = Dağlar uk = Гори vi = Núi non - zh-Hans = 山峰 + zh-Hans = 山 zh-Hant = 山峰 [animals] @@ -26926,7 +26926,7 @@ uk = Тварини vi = Động vật zh-Hans = 动物 - zh-Hant = 動物 + zh-Hant = 動物園 [hotels] tags = android,ios @@ -27324,8 +27324,8 @@ tr = Dini yerler uk = Святі місця vi = Những nơi tôn nghiêm - zh-Hans = 宗教场所 - zh-Hant = 宗教場所 + zh-Hans = 圣地 + zh-Hant = 宗教聖地 [select_list] tags = android @@ -27462,7 +27462,7 @@ tr = Metro rotası bulunamadı uk = Маршрут метро не знайдено vi = Không tìm thấy tuyến Metro - zh-Hans = 未找到地铁路线图 + zh-Hans = 地铁路线图未找到 zh-Hant = 未找到捷運路線圖 [dialog_pedestrian_route_is_long_message] @@ -28041,7 +28041,7 @@ uk = Складність vi = Độ khó zh-Hans = 难度 - zh-Hant = 難度 + zh-Hant = 難易度 [elevation_profile_distance] tags = android @@ -28130,7 +28130,7 @@ tr = Süre: uk = Шлях: vi = Giờ: - zh-Hans = 时间: + zh-Hans = 在路上: zh-Hant = 時間: [isolines_toast_zooms_1_10] @@ -28263,8 +28263,8 @@ tr = İndiriliyor uk = Завантаження vi = Tải xuống - zh-Hans = 正在下载 - zh-Hant = 正在下載 + zh-Hans = 加载 + zh-Hant = 載入 [download_map_title] tags = android @@ -28590,7 +28590,7 @@ tr = Etkinleştirildiğinde, uygulama çalışırken her seferinde cihazınızın kilidini açmanıza gerek kalmaz. uk = Якщо ввімкнено, вам не потрібно щоразу розблоковувати пристрій під час роботи програми. zh-Hans = 启用后,即使设备已锁定,应用程序仍将在锁屏上运行。 - zh-Hant = 啟用後,即使裝置已鎖定,應用程式仍會在鎖定螢幕上運作。 + zh-Hant = 啟用後,即使設備已鎖定,應用程式仍會在鎖定螢幕上運作。 [whats_new_auto_update_title] comment = Autoupdate dialog on start @@ -28686,7 +28686,7 @@ uk = Оновлення мап дозволяє підтримувати інформацію про об'єкти в актуальному стані vi = Cập nhật bản đồ để cập nhật thông tin về các đối tượng trên đó zh-Hans = 更新地图可以让对象的信息保持最新状态 - zh-Hant = 更新地圖以讓對象的資訊保持在最新狀態 + zh-Hant = 更新地圖以讓物件資訊保持在最新狀態 [whats_new_auto_update_button_size] comment = Autoupdate dialog on start @@ -28924,8 +28924,8 @@ tr = Yol Kaydı uk = Маршрут vi = Dấu chân - zh-Hans = 轨迹 - zh-Hant = 軌跡 + zh-Hans = 追踪 + zh-Hant = 追踪 [splash_subtitle] comment = OpenStreetMap text on splash screen @@ -29137,8 +29137,8 @@ tr = Bağışlarınız ve desteğinizle dünyanın en iyi haritalar uygulamasını oluşturabiliriz! uk = Завдяки вашим пожертвам і підтримці ми зможемо створити найкращі карти світу! vi = Với sự đóng góp và hỗ trợ của bạn, chúng tôi có thể tạo ra những bản đồ tốt nhất trên Thế giới! - zh-Hans = 有了您的捐赠和支持,我们可以创造世界上最好的地图! - zh-Hant = 有了您的捐贈和支持,我們可以創造世界上最好的地圖! + zh-Hans = 有了您的捐赠和支持,我们可以创建世界上最好的地图! + zh-Hant = 有了您的捐贈和支持,我們可以創建世界上最好的地圖! [app_tip_02] comment = App tip #02 @@ -29659,7 +29659,7 @@ uk = Продовжуйте в телефоні vi = Tiếp tục trên điện thoại zh-Hans = 在手机上继续 - zh-Hant = 在手機上繼續 + zh-Hant = 繼續打電話 [car_continue_in_the_car] comment = Displayed on the Android Auto or CarPlay screen. Button to display maps on the car screen instead of a phone. Must be no more than 18 symbols! @@ -29704,7 +29704,7 @@ uk = На екран автомобіля vi = Đến màn hình ô tô zh-Hans = 转到汽车屏幕 - zh-Hant = 轉到汽車屏幕 + zh-Hant = 到車用螢幕 [aa_location_permissions_request] comment = Ask user to grant location permissions @@ -29837,7 +29837,7 @@ uk = Підключено до автомобіля vi = Đã kết nối với ô tô zh-Hans = 与汽车连接 - zh-Hant = 與汽車連接 + zh-Hant = 連接到汽車 [button_layer_outdoor] comment = Outdoors/hiking map style (activity) name in the Styles and Layers dialog @@ -29883,7 +29883,7 @@ uk = Активний відпочинок vi = Đi bộ đường dài zh-Hans = 徒步旅行 - zh-Hant = 徒步旅行 + zh-Hant = 遠足 [browser_not_available] comment = Text displayed when a webview or a browser are disabled, and external links can't be opened. @@ -30017,8 +30017,8 @@ tr = Tüm Yer İmlerini ve Rotaları Dışa Aktar uk = Експортувати всі мітки та маршрути vi = Xuất tất cả Dấu trang và Bản nhạc - zh-Hans = 导出所有书签和轨迹 - zh-Hant = 匯出所有書籤和軌跡 + zh-Hans = 导出所有书签和曲目 + zh-Hant = 匯出所有書籤和曲目 [change_color] comment = Text for the editing the Track's color button. @@ -30063,8 +30063,8 @@ tr = Renk değiştir uk = Змінити колір vi = Thay đổi màu sắc - zh-Hans = 更改颜色 - zh-Hant = 更改顏色 + zh-Hans = 改变颜色 + zh-Hant = 換顏色 [pref_tts_open_system_settings] comment = button in (app) TTS settings, to open the system TTS settings. @@ -30156,7 +30156,7 @@ uk = Налаштування синтезу мовлення не знайдено, ви впевнені, що ваш пристрій його підтримує? vi = Không tìm thấy cài đặt Tổng hợp giọng nói, bạn có chắc thiết bị của mình hỗ trợ nó không? zh-Hans = 未找到语音合成设置,您确定您的设备支持该设置吗? - zh-Hant = 未找到語音合成設定,您確定您的裝置支援該設定嗎? + zh-Hant = 未找到語音合成設置,您確定您的設備支援它嗎? [map] comment = Main screen title "Map" displayed in the navigation back button's menu. @@ -30245,8 +30245,8 @@ tr = Arabaya servis uk = З віконцем для водіїв vi = Lái xe qua - zh-Hans = 面下车通道 - zh-Hant = 免下車通道 + zh-Hans = 驾车通过 + zh-Hant = 免下車服務 [clear_the_search] tags = android @@ -30379,7 +30379,7 @@ tr = Uzaklaştır uk = Зменшити vi = Thu nhỏ - zh-Hans = 缩小 + zh-Hans = 放大 zh-Hant = 縮小 [website_menu] @@ -30517,8 +30517,8 @@ tr = Geliştiricilere bir hata raporu göndermek ister misiniz?\nOrganic Maps otomatik olarak herhangi bir hata bilgisi toplamadığı için kullanıcılarımıza güveniyoruz. Organic Maps'i desteklediğiniz için şimdiden teşekkür ederiz! uk = Бажаєте надіслати розробникам звіт про помилку?\nМи покладаємося на наших користувачів, оскільки Organic Maps не збирає інформацію про помилки автоматично. Заздалегідь дякуємо за підтримку Organic Maps! vi = Bạn có muốn gửi báo cáo lỗi cho nhà phát triển không?\nChúng tôi dựa vào người dùng của mình vì Bản đồ không phải trả tiền không tự động thu thập bất kỳ thông tin lỗi nào. Cảm ơn bạn trước vì đã ủng hộ Organic Maps! - zh-Hans = 您想向开发人员发送错误报告吗?\n由于 Organic Maps 不会自动收集任何错误信息,因此我们只能依靠我们的用户。感谢您对 Organic Maps 的支持! - zh-Hant = 您想向開發人員發送錯誤報告嗎?\n由於 Organic Maps 不會自動收集任何錯誤資訊,因此我們只能依靠用戶的協助。感謝您對 Organic Maps 的支持! + zh-Hans = 您想向开发人员发送错误报告吗?\n由于有机地图不会自动收集任何错误信息,因此我们只能依靠我们的用户。感谢您对有机地图的支持! + zh-Hant = 您想向開發人員發送錯誤報告嗎?\n我們依賴我們的用戶,因為有機地圖不會自動收集任何錯誤訊息。預先感謝您對有機地圖的支持! [enable_icloud_synchronization_title] comment = Title for the "Enable iCloud Syncronization" alert. @@ -30610,8 +30610,8 @@ tr = iCloud senkronizasyonu geliştirme aşamasında olan deneysel bir özelliktir. Tüm yer imlerinizin ve kayıtlı rotalarınızın yedeğini aldığınızdan emin olun. uk = Синхронізація з iCloud - це експериментальна функція, яка перебуває на стадії розробки. Переконайтеся, що ви зробили резервну копію всіх ваших мiток і треків. vi = Đồng bộ hóa iCloud là một tính năng thử nghiệm đang được phát triển. Đảm bảo rằng bạn đã tạo bản sao lưu tất cả dấu trang và bản nhạc của mình. - zh-Hans = iCloud 同步是一项正在开发的实验性功能。请确保备份了所有书签和轨迹。 - zh-Hant = iCloud 同步是一項正在開發中的實驗性功能。確保您已備份所有書籤和軌跡。 + zh-Hans = iCloud 同步是一项正在开发的实验性功能。请确保备份了所有书签和曲目。 + zh-Hant = iCloud 同步是一項正在開發中的實驗性功能。確保您已備份所有書籤和曲目。 [icloud_disabled_title] comment = Title for the "iCloud is Disabled" alert. @@ -30701,7 +30701,7 @@ tr = Bu özelliği kullanmak için lütfen cihazınızın ayarlarında iCloud'u etkinleştirin. uk = Щоб скористатися цією функцією, увімкніть iCloud у налаштуваннях вашого пристрою. vi = Vui lòng bật iCloud trong cài đặt thiết bị của bạn để sử dụng tính năng này. - zh-Hans = 请在您的设备设置中启用 iCloud,以使用此功能。 + zh-Hans = 请在设备设置中启用 iCloud,以使用此功能。 zh-Hant = 請在您的裝置設定中啟用 iCloud 以使用此功能。 [enable] @@ -30747,7 +30747,7 @@ uk = Увімкнути vi = Cho phép zh-Hans = 启用 - zh-Hant = 啟用 + zh-Hant = 使能夠 [backup] comment = Title for the "Enable iCloud Syncronization" alert's "Backup" action button. @@ -30885,8 +30885,8 @@ tr = Hata oluştu: Bağlantı hatası nedeniyle senkronizasyon başarısız oldu uk = Помилка: Не вдалося синхронізувати через помилку з'єднання vi = Lỗi: Không đồng bộ được do lỗi kết nối - zh-Hans = 错误:由于连接错误,导致同步失败 - zh-Hant = 錯誤:由於連線錯誤,導致無法同步 + zh-Hans = 错误:由于连接错误,同步失败 + zh-Hant = 錯誤:由於連線錯誤而無法同步 [icloud_synchronization_error_quota_exceeded] comment = iCloud error message: Failed to synchronize due to iCloud quota exceeded @@ -30931,8 +30931,8 @@ tr = Hata: iCloud depolama alanı dolu olduğu için senkronize edilemedi uk = Помилка: Не вдалося синхронізувати через перевищення квоти iCloud vi = Lỗi: Không thể đồng bộ hóa do vượt quá hạn ngạch iCloud - zh-Hans = 错误:由于超过 iCloud 配额,导致同步失败 - zh-Hant = 錯誤:由於超出 iCloud 配額,導致同步失敗 + zh-Hans = 错误:由于超过 iCloud 配额,同步失败 + zh-Hant = 錯誤:由於超出 iCloud 配額而無法同步 [icloud_synchronization_error_cloud_is_unavailable] comment = iCloud error message: iCloud is not available @@ -31115,7 +31115,7 @@ [outdoor_seating] comment = To indicate if restaurant or other place has outdoor seating - tags = android,ios + tags = android en = Outdoor seating af = Buitelug sitplek ar = مقاعد خارجية @@ -31246,5 +31246,5 @@ tr = En doğru navigasyon için, telefonun pil ayarlarında güç tasarrufu modunu devre dışı bırakmanızı öneririz. uk = Для найбільш точної навігації ми рекомендуємо вимкнути режим енергозбереження в налаштуваннях батареї телефону. vi = Để điều hướng chính xác nhất, chúng tôi khuyên bạn nên tắt chế độ tiết kiệm năng lượng trong cài đặt pin của điện thoại. - zh-Hans = 为了获得最准确的导航,我们建议在手机电池设置中停用省电模式。 + zh-Hans = 为了获得最准确的导航,我们建议在手机电池设置中禁用省电模式。 zh-Hant = 為了獲得最準確的導航,我們建議在手機電池設定中停用省電模式。 diff --git a/data/strings/types_strings.txt b/data/strings/types_strings.txt index c0f20edbc5..4a7d008856 100644 --- a/data/strings/types_strings.txt +++ b/data/strings/types_strings.txt @@ -32238,6 +32238,7 @@ zh-Hant = 收藏品 [type.self_service.yes] + tags = android en = Self-service available af = Selfbediening beskikbaar ar = الخدمة الذاتية متاحة @@ -32282,6 +32283,7 @@ zh-Hant = 提供自助服務 [type.self_service.only] + tags = android en = Self-service only af = Slegs selfbediening ar = الخدمة الذاتية فقط @@ -32326,6 +32328,7 @@ zh-Hant = 僅限自助服務 [type.self_service.partially] + tags = android en = Partial self-service af = Gedeeltelike selfbediening ar = خدمة ذاتية جزئية @@ -32370,6 +32373,7 @@ zh-Hant = 部分自助服務 [type.self_service.no] + tags = android en = No self-service af = Geen selfbediening nie ar = لا توجد خدمة ذاتية diff --git a/drape/glyph_manager.cpp b/drape/glyph_manager.cpp index 742da87428..046d824b79 100644 --- a/drape/glyph_manager.cpp +++ b/drape/glyph_manager.cpp @@ -255,11 +255,28 @@ public: auto const yOffset = (currPos.y_offset + static_cast(metrics.horiBearingY) - metrics.height) >> 6; int32_t const xAdvance = currPos.x_advance >> 6; // yAdvance is always zero for horizontal text layouts. + // This height gives 16 instead of expected 22-23. + // int32_t const height = metrics.height >> 6; - outMetrics.AddGlyphMetrics(static_cast(fontIndex), glyphId, xOffset, yOffset, xAdvance, fontPixelSize); + outMetrics.AddGlyphMetrics(static_cast(fontIndex), glyphId, xOffset, yOffset, xAdvance, + GetLineHeigthPixels(metrics.vertAdvance)); } } +private: + int32_t GetLineHeigthPixels(FT_Pos vertAdvance) const + { + // Freetype says that vertAdvance is unreliable if it contains a synthesized value in case of FT_HAS_VERTICAL + // returning false. Testing on supported fonts shows that non-zero vertAdvance can be trusted as a line height. + if (vertAdvance > 0 && vertAdvance < m_fontFace->bbox.yMax) [[likely]] + return vertAdvance >> 6; + + int32_t const bboxYMax = FT_MulFix(m_fontFace->bbox.yMax, m_fontFace->size->metrics.y_scale) >> 6; + int32_t const bboxYMmin = FT_MulFix(m_fontFace->bbox.yMin, m_fontFace->size->metrics.y_scale) >> 6; + + return bboxYMax - bboxYMmin; + } + private: ReaderPtr m_fontReader; FT_StreamRec_ m_stream; diff --git a/indexer/brands_holder.hpp b/indexer/brands_holder.hpp index 8969dca5a6..f41463536a 100644 --- a/indexer/brands_holder.hpp +++ b/indexer/brands_holder.hpp @@ -40,7 +40,7 @@ public: std::set const & GetKeys() const { return m_keys; } - template void ForEachNameByKey(std::string_view key, FnT && fn) const + template void ForEachNameByKey(std::string const & key, FnT && fn) const { auto const it = m_keyToName.find(key); if (it == m_keyToName.end()) @@ -57,17 +57,7 @@ private: void LoadFromStream(std::istream & s); void AddBrand(Brand & brand, std::string const & key); - struct StringViewHash - { - using hash_type = std::hash; - using is_transparent = void; - - // std::size_t operator()(const char* str) const { return hash_type{}(str); } - size_t operator()(std::string_view str) const { return hash_type{}(str); } - size_t operator()(std::string const & str) const { return hash_type{}(str); } - }; - - std::unordered_map, StringViewHash, std::equal_to<>> m_keyToName; + std::unordered_map> m_keyToName; std::set m_keys; }; @@ -77,8 +67,9 @@ BrandsHolder const & GetDefaultBrands(); template void ForEachLocalizedBrands(std::string_view brand, FnT && fn) { bool processed = false; + /// @todo Remove temporary string with the new cpp standard. /// Localized brands are not working as expected now because we store raw names from OSM, not brand IDs. - GetDefaultBrands().ForEachNameByKey(brand, [&fn, &processed](auto const & name) + GetDefaultBrands().ForEachNameByKey(std::string(brand), [&fn, &processed](auto const & name) { fn(name); processed = true; diff --git a/indexer/road_shields_parser.cpp b/indexer/road_shields_parser.cpp index d79f4c949a..ece14d368e 100644 --- a/indexer/road_shields_parser.cpp +++ b/indexer/road_shields_parser.cpp @@ -7,7 +7,6 @@ #include #include -#include #include #include @@ -62,9 +61,6 @@ std::unordered_map const kRoadNetworkShields = { // Estonia parser produces more specific shield types, incl. Generic_Orange. //{"ee:national", RoadShieldType::Generic_Red}, //{"ee:regional", RoadShieldType::Generic_White}, - {"in:ne", RoadShieldType::Generic_Blue}, - {"in:nh", RoadShieldType::Generic_Orange}, - {"in:sh", RoadShieldType::Generic_Green}, {"fr:a-road", RoadShieldType::Generic_Red}, {"jp:national", RoadShieldType::Generic_Blue}, {"jp:regional", RoadShieldType::Generic_Blue}, @@ -235,35 +231,6 @@ public: } }; -class IndiaRoadShieldParser : public RoadShieldParser -{ -public: - explicit IndiaRoadShieldParser(std::string const & baseRoadNumber) : RoadShieldParser(baseRoadNumber) {} - RoadShield ParseRoadShield(std::string_view rawText) const override - { - std::string shieldText(rawText); - - std::erase_if(shieldText, [](char c) { return c == '-' || ::isspace(c); }); - - if (shieldText.size() <= 2) - return RoadShield(RoadShieldType::Default, rawText); - - std::string_view roadType = std::string_view(shieldText).substr(0, 2); - std::string_view roadNumber = std::string_view(shieldText).substr(2); - - if (roadType == "NE") - return RoadShield(RoadShieldType::Generic_Blue, roadNumber); - - if (roadType == "NH") - return RoadShield(RoadShieldType::Generic_Orange, roadNumber); - - if (roadType == "SH") - return RoadShield(RoadShieldType::Generic_Green, roadNumber); - - return RoadShield(RoadShieldType::Default, rawText); - } -}; - class DefaultTypeRoadShieldParser : public RoadShieldParser { public: @@ -665,8 +632,6 @@ RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const & return USRoadShieldParser(roadNumber).GetRoadShields(); if (mwmName == "UK") return UKRoadShieldParser(roadNumber).GetRoadShields(); - if (mwmName == "India") - return IndiaRoadShieldParser(roadNumber).GetRoadShields(); if (mwmName == "Russia") return RussiaRoadShieldParser(roadNumber).GetRoadShields(); if (mwmName == "France") diff --git a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.h b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.h index 1f0d5c170f..68c101950c 100644 --- a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.h +++ b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.h @@ -34,7 +34,7 @@ NS_SWIFT_NAME(FrameworkHelper) + (void)searchInDownloader:(NSString *)query inputLocale:(NSString *)locale completion:(SearchInDownloaderCompletions)completion; -+ (BOOL)canEditMapAtViewportCenter; ++ (BOOL)canEditMap; + (void)showOnMap:(MWMMarkGroupID)categoryId; + (void)showBookmark:(MWMMarkID)bookmarkId; + (void)showTrack:(MWMTrackID)trackId; diff --git a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm index 6581a9cdd5..5fb128f9f4 100644 --- a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm +++ b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm @@ -162,9 +162,8 @@ GetFramework().GetSearchAPI().SearchInDownloader(std::move(params)); } -+ (BOOL)canEditMapAtViewportCenter { - auto const &f = GetFramework(); - return f.CanEditMapForPosition(f.GetViewportCenter()); ++ (BOOL)canEditMap { + return GetFramework().CanEditMap(); } + (void)showOnMap:(MWMMarkGroupID)categoryId { diff --git a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageButtonsData.h b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageButtonsData.h index 14d3574fcf..7671c0bc6f 100644 --- a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageButtonsData.h +++ b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageButtonsData.h @@ -6,9 +6,7 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, readonly) BOOL showAddPlace; @property(nonatomic, readonly) BOOL showEditPlace; - -@property(nonatomic, readonly) BOOL enableAddPlace; -@property(nonatomic, readonly) BOOL enableEditPlace; +@property(nonatomic, readonly) BOOL showAddBusiness; @end diff --git a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageButtonsData.mm b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageButtonsData.mm index 9155eeab3a..96248894d1 100644 --- a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageButtonsData.mm +++ b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageButtonsData.mm @@ -11,9 +11,8 @@ if (self) { _showAddPlace = rawData.ShouldShowAddPlace(); _showEditPlace = rawData.ShouldShowEditPlace(); - _enableAddPlace = rawData.ShouldEnableAddPlace(); - _enableEditPlace = rawData.ShouldEnableEditPlace(); - if (_showAddPlace || _showEditPlace || _enableAddPlace || _enableEditPlace) + _showAddBusiness = rawData.ShouldShowAddBusiness(); + if (_showAddPlace || _showEditPlace || _showAddBusiness) return self; } return nil; diff --git a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.h b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.h index b13a99a62c..93ea1ae20f 100644 --- a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.h +++ b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.h @@ -32,8 +32,6 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, readonly, nullable) NSString *wheelchair; @property(nonatomic, readonly, nullable) NSString *driveThrough; @property(nonatomic, readonly, nullable) NSString *websiteMenu; -@property(nonatomic, readonly, nullable) NSString *selfService; -@property(nonatomic, readonly, nullable) NSString *outdoorSeating; @end diff --git a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.mm b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.mm index 5fa65ac321..0495fa5889 100644 --- a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.mm +++ b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.mm @@ -8,18 +8,12 @@ #include "indexer/validate_and_format_contacts.hpp" #include "indexer/kayak.hpp" -#include "indexer/feature_meta.hpp" #include "map/place_page_info.hpp" using namespace place_page; using namespace osm; -/// Get localized metadata value string when string format is "type.feature.value". -NSString * GetLocalizedMetadataValueString(MapObject::MetadataID metaID, std::string const & value) { - return ToNSString(platform::GetLocalizedTypeName(feature::ToString(metaID) + "." + value)); -} - @implementation PlacePageInfoData @end @@ -90,18 +84,13 @@ NSString * GetLocalizedMetadataValueString(MapObject::MetadataID metaID, std::st _driveThrough = NSLocalizedString(@"drive_through", nil); break; case MetadataID::FMD_WEBSITE_MENU: _websiteMenu = ToNSString(value); break; - case MetadataID::FMD_SELF_SERVICE: _selfService = GetLocalizedMetadataValueString(metaID, value); break; - case MetadataID::FMD_OUTDOOR_SEATING: - if (value == "yes") - _outdoorSeating = NSLocalizedString(@"outdoor_seating", nil); - break; default: break; } }); - + _atm = rawData.HasAtm() ? NSLocalizedString(@"type.amenity.atm", nil) : nil; - + _address = rawData.GetAddress().empty() ? nil : @(rawData.GetAddress().c_str()); _coordFormats = @[@(rawData.GetFormattedCoordinate(place_page::CoordinatesFormat::LatLonDMS).c_str()), @(rawData.GetFormattedCoordinate(place_page::CoordinatesFormat::LatLonDecimal).c_str()), diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm index 652404be7d..cb5147d275 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm @@ -148,7 +148,9 @@ NSString *const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; applyPosition:hasPoint position:point doneBlock:^{ - if ([MWMFrameworkHelper canEditMapAtViewportCenter]) + auto &f = GetFramework(); + + if (IsPointCoveredByDownloadedMaps(f.GetViewportCenter(), f.GetStorage(), f.GetCountryInfoGetter())) [ownerController performSegueWithIdentifier:kMapToCategorySelectorSegue sender:nil]; else [ownerController.alertController presentIncorrectFeauturePositionAlert]; diff --git a/iphone/Maps/Core/Location/MWMLocationManager.mm b/iphone/Maps/Core/Location/MWMLocationManager.mm index 2fe6cdca55..f09477dbf1 100644 --- a/iphone/Maps/Core/Location/MWMLocationManager.mm +++ b/iphone/Maps/Core/Location/MWMLocationManager.mm @@ -3,6 +3,7 @@ #import "MWMLocationObserver.h" #import "MWMLocationPredictor.h" #import "MWMRouter.h" +#import "MapsAppDelegate.h" #import "SwiftBridge.h" #import "location_util.h" @@ -15,6 +16,13 @@ namespace using Observer = id; using Observers = NSHashTable; +typedef NS_OPTIONS(NSUInteger, MWMLocationFrameworkUpdate) { + MWMLocationFrameworkUpdateNone = 0, + MWMLocationFrameworkUpdateLocation = 1 << 0, + MWMLocationFrameworkUpdateHeading = 1 << 1, + MWMLocationFrameworkUpdateStatus = 1 << 2 +}; + enum class GeoMode { Pending, @@ -154,6 +162,7 @@ void setShowLocationAlert(BOOL needShow) { @property(nonatomic) MWMLocationStatus lastLocationStatus; @property(nonatomic) MWMLocationPredictor * predictor; @property(nonatomic) Observers * observers; +@property(nonatomic) MWMLocationFrameworkUpdate frameworkUpdateMode; @property(nonatomic) location::TLocationSource locationSource; @end @@ -217,6 +226,7 @@ void setShowLocationAlert(BOOL needShow) { + (void)applicationDidBecomeActive { [self start]; + [[self manager] updateFrameworkInfo]; } + (void)applicationWillResignActive @@ -263,7 +273,7 @@ void setShowLocationAlert(BOOL needShow) { LOG(LINFO, ("Location status updated from", DebugPrint(self.lastLocationStatus), "to", DebugPrint(locationStatus))); self.lastLocationStatus = locationStatus; if (self.lastLocationStatus != MWMLocationStatusNoError) - GetFramework().OnLocationError((location::TLocationError)self.lastLocationStatus); + self.frameworkUpdateMode |= MWMLocationFrameworkUpdateStatus; for (Observer observer in self.observers) { if ([observer respondsToSelector:@selector(onLocationError:)]) @@ -274,7 +284,8 @@ void setShowLocationAlert(BOOL needShow) { - (void)processHeadingUpdate:(CLHeading *)headingInfo { self.lastHeadingInfo = headingInfo; - GetFramework().OnCompassUpdate(location_util::compassInfoFromHeading(headingInfo)); + self.frameworkUpdateMode |= MWMLocationFrameworkUpdateHeading; +// location::CompassInfo const compassInfo = compassInfoFromHeading(headingInfo); for (Observer observer in self.observers) { if ([observer respondsToSelector:@selector(onHeadingUpdate:)]) @@ -295,10 +306,10 @@ void setShowLocationAlert(BOOL needShow) { { location::GpsInfo const gpsInfo = location_util::gpsInfoFromLocation(locationInfo, source); GpsTracker::Instance().OnLocationUpdated(gpsInfo); - GetFramework().OnLocationUpdate(gpsInfo); self.lastLocationInfo = locationInfo; self.locationSource = source; + self.frameworkUpdateMode |= MWMLocationFrameworkUpdateLocation; for (Observer observer in self.observers) { if ([observer respondsToSelector:@selector(onLocationUpdate:)]) @@ -578,6 +589,54 @@ void setShowLocationAlert(BOOL needShow) { [locationManager stopUpdatingHeading]; } +#pragma mark - Framework + +- (void)updateFrameworkInfo +{ + auto app = UIApplication.sharedApplication; + if (app.applicationState != UIApplicationStateActive) + return; + auto delegate = static_cast(app.delegate); + if (delegate.isDrapeEngineCreated) + { + auto & f = GetFramework(); + if (self.frameworkUpdateMode & MWMLocationFrameworkUpdateLocation) + { + location::GpsInfo const gpsInfo = + location_util::gpsInfoFromLocation(self.lastLocationInfo, self.locationSource); + f.OnLocationUpdate(gpsInfo); + } + if (self.frameworkUpdateMode & MWMLocationFrameworkUpdateHeading) + f.OnCompassUpdate(location_util::compassInfoFromHeading(self.lastHeadingInfo)); + if (self.frameworkUpdateMode & MWMLocationFrameworkUpdateStatus) + f.OnLocationError((location::TLocationError)self.lastLocationStatus); + self.frameworkUpdateMode = MWMLocationFrameworkUpdateNone; + } + else + { + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateFrameworkInfo]; + }); + } +} + +#pragma mark - Property + +- (void)setFrameworkUpdateMode:(MWMLocationFrameworkUpdate)frameworkUpdateMode +{ + if (frameworkUpdateMode != _frameworkUpdateMode && + _frameworkUpdateMode == MWMLocationFrameworkUpdateNone && + frameworkUpdateMode != MWMLocationFrameworkUpdateNone) + { + _frameworkUpdateMode = frameworkUpdateMode; + [self updateFrameworkInfo]; + } + else + { + _frameworkUpdateMode = frameworkUpdateMode; + } +} + #pragma mark - Location alert + (void)enableLocationAlert { diff --git a/iphone/Maps/Images.xcassets/Place Page/ic_placepage_outdoor_seating.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/ic_placepage_outdoor_seating.imageset/Contents.json deleted file mode 100644 index c5fbed49e8..0000000000 --- a/iphone/Maps/Images.xcassets/Place Page/ic_placepage_outdoor_seating.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "ic_placepage_outdoor_seating.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "template-rendering-intent" : "template" - } -} diff --git a/iphone/Maps/Images.xcassets/Place Page/ic_placepage_outdoor_seating.imageset/ic_placepage_outdoor_seating.svg b/iphone/Maps/Images.xcassets/Place Page/ic_placepage_outdoor_seating.imageset/ic_placepage_outdoor_seating.svg deleted file mode 100644 index 18c2cdf0c9..0000000000 --- a/iphone/Maps/Images.xcassets/Place Page/ic_placepage_outdoor_seating.imageset/ic_placepage_outdoor_seating.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/Place Page/ic_placepage_self_service.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/ic_placepage_self_service.imageset/Contents.json deleted file mode 100644 index 40455e7590..0000000000 --- a/iphone/Maps/Images.xcassets/Place Page/ic_placepage_self_service.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "ic_placepage_self_service.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "template-rendering-intent" : "template" - } -} diff --git a/iphone/Maps/Images.xcassets/Place Page/ic_placepage_self_service.imageset/ic_placepage_self_service.svg b/iphone/Maps/Images.xcassets/Place Page/ic_placepage_self_service.imageset/ic_placepage_self_service.svg deleted file mode 100644 index 83d12ceb93..0000000000 --- a/iphone/Maps/Images.xcassets/Place Page/ic_placepage_self_service.imageset/ic_placepage_self_service.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings index 655032fde9..0cd30f98aa 100644 --- a/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "تعديل"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "لم يتم تحديد موقعك بعد."; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "مرحباً، تفقد الدبوس الخاص بي على خريطة Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "الطول"; -"share_my_location" = "مشاركة موقعي"; - "prefs_group_route" = "الملاحة"; "pref_zoom_title" = "أزرار التكبير والتصغير"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "فتح في تطبيق آخر"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "مقاعد خارجية"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "مزاد علني"; "type.shop.collector" = "مقتنيات"; - -"type.self_service.yes" = "الخدمة الذاتية متاحة"; - -"type.self_service.only" = "الخدمة الذاتية فقط"; - -"type.self_service.partially" = "خدمة ذاتية جزئية"; - -"type.self_service.no" = "لا توجد خدمة ذاتية"; diff --git a/iphone/Maps/LocalizedStrings/az.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/az.lproj/Localizable.strings index 15577d539c..3f1f41b0b7 100644 --- a/iphone/Maps/LocalizedStrings/az.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/az.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Redaktə et"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Məkanınız hələ müəyyən edilməyib"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Salam, Organic Maps xəritəsində mənim pin kodumu yoxlayın!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Uzunluq"; -"share_my_location" = "Məkanımı Paylaşın"; - "prefs_group_route" = "Naviqasiya"; "pref_zoom_title" = "Böyütmə düymələri"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Başqa Tətbiqdə Açın"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Çöldə oturma"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Hərrac"; "type.shop.collector" = "Kolleksiya əşyaları"; - -"type.self_service.yes" = "Özünə xidmət mövcuddur"; - -"type.self_service.only" = "Yalnız özünə xidmət"; - -"type.self_service.partially" = "Qismən özünəxidmət"; - -"type.self_service.no" = "Özünə xidmət yoxdur"; diff --git a/iphone/Maps/LocalizedStrings/be.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/be.lproj/Localizable.strings index 495b5a93be..964425b69b 100644 --- a/iphone/Maps/LocalizedStrings/be.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/be.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Рэдагаваць"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Ваша месцазнаходжанне пакуль не вызначана"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Гэй, глядзі маю метку на Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Даўжыня"; -"share_my_location" = "Абагуліць маё месцазнаходжанне"; - "prefs_group_route" = "Навігацыя"; "pref_zoom_title" = "Кнопкі маштабавання"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Адкрыць у іншай прыладзе"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Месцы на адкрытым паветры"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Аўкцыён"; "type.shop.collector" = "Калекцыйныя прадметы"; - -"type.self_service.yes" = "Маецца самаабслугоўванне"; - -"type.self_service.only" = "Толькі самаабслугоўванне"; - -"type.self_service.partially" = "Частковае самаабслугоўванне"; - -"type.self_service.no" = "Няма самаабслугоўвання"; diff --git a/iphone/Maps/LocalizedStrings/bg.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/bg.lproj/Localizable.strings index 8142416904..8888343da4 100644 --- a/iphone/Maps/LocalizedStrings/bg.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/bg.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Редакция"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Местоположението ви още не е определено"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Хей, виж какво съм отбелязал в Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Дължина"; -"share_my_location" = "Споделяне на местоположение"; - "prefs_group_route" = "Навигация"; "pref_zoom_title" = "Мащабни бутони"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Отваряне в друго приложение"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Места за сядане на открито"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Търг"; "type.shop.collector" = "Колекционерски стоки"; - -"type.self_service.yes" = "Налично е самообслужване"; - -"type.self_service.only" = "Само на самообслужване"; - -"type.self_service.partially" = "Частично самообслужване"; - -"type.self_service.no" = "Няма самообслужване"; diff --git a/iphone/Maps/LocalizedStrings/ca.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ca.lproj/Localizable.strings index b481af6bea..6c27e39fa5 100644 --- a/iphone/Maps/LocalizedStrings/ca.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ca.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Edita"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Encara no s'ha pogut determinar la vostra geolocalització"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Ep, mireu el meu marcador a l'Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Longitud"; -"share_my_location" = "Comparteix la meva ubicacio"; - "prefs_group_route" = "Navegació"; "pref_zoom_title" = "Botons de zoom"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Obre en una altra aplicació"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Seients a l'aire lliure"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Subhasta"; "type.shop.collector" = "Col·leccionables"; - -"type.self_service.yes" = "Autoservei disponible"; - -"type.self_service.only" = "Només autoservei"; - -"type.self_service.partially" = "Autoservei parcial"; - -"type.self_service.no" = "Sense autoservei"; diff --git a/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings index 064fce7423..79b76926ff 100644 --- a/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Upravit"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Vaše poloha zatím nebyla určena"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Koukni na moji značku na mapě v Organic Maps"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Délka"; -"share_my_location" = "Sdílet mé umístění"; - "prefs_group_route" = "Navigace"; "pref_zoom_title" = "Tlačítka přiblížení/oddálení"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Otevřít v jiné aplikaci"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Venkovní posezení"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Aukce"; "type.shop.collector" = "Sběratelské předměty"; - -"type.self_service.yes" = "K dispozici je samoobsluha"; - -"type.self_service.only" = "Pouze samoobsluha"; - -"type.self_service.partially" = "Částečná samoobsluha"; - -"type.self_service.no" = "Žádná samoobsluha"; diff --git a/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings index 50153cebbc..3570cd6244 100644 --- a/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Rediger"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Din lokation er ikke blevet bestemt endnu"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hey, tjek min knappenål på Organic Maps kortet ud!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Længde"; -"share_my_location" = "Del min lokation"; - "prefs_group_route" = "Navigation"; "pref_zoom_title" = "Zoom knapper"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Åbn i en anden app"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Udendørs siddepladser"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Auktion"; "type.shop.collector" = "Samlerobjekter"; - -"type.self_service.yes" = "Selvbetjening tilgængelig"; - -"type.self_service.only" = "Kun selvbetjening"; - -"type.self_service.partially" = "Delvis selvbetjening"; - -"type.self_service.no" = "Ingen selvbetjening"; diff --git a/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings index 8d97aee359..45301c6a2f 100644 --- a/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Bearbeiten"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Ihr Standort konnte noch nicht ermittelt werden"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hey, sieh dir meine Stecknadel auf der Organic Maps-Karte an!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Länge"; -"share_my_location" = "Meinen Standort teilen"; - "prefs_group_route" = "Navigation"; "pref_zoom_title" = "Zoom-Tasten"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "In einer anderen App öffnen"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Sitzplätze im Freien"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Auktion"; "type.shop.collector" = "Sammlerstücke"; - -"type.self_service.yes" = "Selbstbedienung verfügbar"; - -"type.self_service.only" = "Nur Selbstbedienung"; - -"type.self_service.partially" = "Teilweise Selbstbedienung"; - -"type.self_service.no" = "Keine Selbstbedienung"; diff --git a/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings index 4bc8060d16..c210608358 100644 --- a/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Επεξεργασία"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Η τοποθεσία σας δεν έχει προσδιοριστεί ακόμη"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Γεια, δες τις τοποθεσίες που έχω καρφιτσώσει στο Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Μήκος"; -"share_my_location" = "Κοινοποίηση της τοποθεσίας μου"; - "prefs_group_route" = "Πλοήγηση"; "pref_zoom_title" = "Πλήκτρα μεγέθυνσης"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Άνοιγμα σε άλλη εφαρμογή"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Εξωτερικά καθίσματα"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Δημοπρασία"; "type.shop.collector" = "Συλλεκτικά αντικείμενα"; - -"type.self_service.yes" = "Διαθέσιμη αυτοεξυπηρέτηση"; - -"type.self_service.only" = "Μόνο αυτοεξυπηρέτηση"; - -"type.self_service.partially" = "Μερική αυτοεξυπηρέτηση"; - -"type.self_service.no" = "Δεν υπάρχει αυτοεξυπηρέτηση"; diff --git a/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings index 46a44f4fbd..0bbf1f28be 100644 --- a/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Edit"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Your location hasn't been determined yet"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hey, check out my pin in Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Length"; -"share_my_location" = "Share My Location"; - "prefs_group_route" = "Navigation"; "pref_zoom_title" = "Zoom buttons"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Open In Another App"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Outdoor seating"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Auction"; "type.shop.collector" = "Collectables"; - -"type.self_service.yes" = "Self-service available"; - -"type.self_service.only" = "Self-service only"; - -"type.self_service.partially" = "Partial self-service"; - -"type.self_service.no" = "No self-service"; diff --git a/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings index ddcb40ee0d..f03a6b3146 100644 --- a/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Edit"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Your location hasn't been determined yet"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hey, check out my pin in Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Length"; -"share_my_location" = "Share My Location"; - "prefs_group_route" = "Navigation"; "pref_zoom_title" = "Zoom buttons"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Open In Another App"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Outdoor seating"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Auction"; "type.shop.collector" = "Collectables"; - -"type.self_service.yes" = "Self-service available"; - -"type.self_service.only" = "Self-service only"; - -"type.self_service.partially" = "Partial self-service"; - -"type.self_service.no" = "No self-service"; diff --git a/iphone/Maps/LocalizedStrings/es-MX.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/es-MX.lproj/Localizable.strings index 5af7c2c560..1234fcb3c8 100644 --- a/iphone/Maps/LocalizedStrings/es-MX.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/es-MX.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Editar"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Su ubicación aún no ha sido determinada"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "¡Mira mi marcador en el mapa de Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Longitud"; -"share_my_location" = "Compartir mi ubicación"; - "prefs_group_route" = "Navegación"; "pref_zoom_title" = "Botones de zoom"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Abrir en otra aplicación"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Asientos al aire libre"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Subasta"; "type.shop.collector" = "Coleccionables"; - -"type.self_service.yes" = "Autoservicio disponible"; - -"type.self_service.only" = "Sólo autoservicio"; - -"type.self_service.partially" = "Autoservicio parcial"; - -"type.self_service.no" = "Sin autoservicio"; diff --git a/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings index e1e92f9515..f0b6dd4c6b 100644 --- a/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Editar"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Su ubicación aún no ha sido determinada"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "¡Mira mi marcador en el mapa de Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Longitud"; -"share_my_location" = "Compartir mi ubicación"; - "prefs_group_route" = "Navegación"; "pref_zoom_title" = "Botones de zoom"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Abrir en otra aplicación"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Asientos al aire libre"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Subasta"; "type.shop.collector" = "Coleccionables"; - -"type.self_service.yes" = "Autoservicio disponible"; - -"type.self_service.only" = "Sólo autoservicio"; - -"type.self_service.partially" = "Autoservicio parcial"; - -"type.self_service.no" = "Sin autoservicio"; diff --git a/iphone/Maps/LocalizedStrings/et.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/et.lproj/Localizable.strings index d178fe3845..c8928b21c9 100644 --- a/iphone/Maps/LocalizedStrings/et.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/et.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Muuda"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Sinu asukoht ei ole veel määratud"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hei, vaata minu asukoha märget Organic Maps kaardil!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Pikkus"; -"share_my_location" = "Jaga minu asukohta"; - "prefs_group_route" = "Navigeerimine"; "pref_zoom_title" = "Zoomi nupud"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Avatud teises rakenduses"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Istekohad õues"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Oksjon"; "type.shop.collector" = "Kollektsioneeritavad esemed"; - -"type.self_service.yes" = "Iseteenindus saadaval"; - -"type.self_service.only" = "Ainult iseteenindus"; - -"type.self_service.partially" = "Osaline iseteenindus"; - -"type.self_service.no" = "Iseteenindus puudub"; diff --git a/iphone/Maps/LocalizedStrings/eu.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/eu.lproj/Localizable.strings index 67275fc88e..f903a1cc81 100644 --- a/iphone/Maps/LocalizedStrings/eu.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/eu.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Editatu"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Zure kokapena ez da oraindik zehaztu"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Begiratu nire markagailua Organic Maps mapan!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Luzera"; -"share_my_location" = "Partekatu nire kokapena"; - "prefs_group_route" = "Nabigazioa"; "pref_zoom_title" = "Zoom botoiak"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Ireki beste aplikazio batean"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Kanpoko eserlekuak"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Enkantea"; "type.shop.collector" = "Bildumagarriak"; - -"type.self_service.yes" = "Autozerbitzua eskuragarri"; - -"type.self_service.only" = "Autozerbitzua soilik"; - -"type.self_service.partially" = "Autozerbitzu partziala"; - -"type.self_service.no" = "Autozerbitzurik ez"; diff --git a/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings index 73c995f7cf..d4bd7b8593 100644 --- a/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fa.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "ویرایش"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "مکان شما هنوز مشخص نشده است"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hey, check out my pin in Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "طول"; -"share_my_location" = "به اشتراک گذاری موقعیت مکانی من"; - "prefs_group_route" = "مسیریابی"; "pref_zoom_title" = "دکمه‌های بزرگنمایی"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "در یک برنامه دیگر باز کنید"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "نشستن در فضای باز"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "حراج"; "type.shop.collector" = "کلکسیونی ها"; - -"type.self_service.yes" = "سلف سرویس در دسترس است"; - -"type.self_service.only" = "فقط سلف سرویس"; - -"type.self_service.partially" = "سلف سرویس جزئی"; - -"type.self_service.no" = "بدون سلف سرویس"; diff --git a/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings index 7d1bdd1af6..8a7b0cf6ec 100644 --- a/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Muokkaa"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Sijaintiasi ei ole vielä määritetty"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hei, katso merkintäni Organic Maps-kartalla!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Pituus"; -"share_my_location" = "Jaa sijaintini"; - "prefs_group_route" = "Navigointi"; "pref_zoom_title" = "Zoomauspainikkeet"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Avaa toisessa sovelluksessa"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Ulkona istuminen"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Huutokauppa"; "type.shop.collector" = "Keräilyesineet"; - -"type.self_service.yes" = "Itsepalvelu saatavilla"; - -"type.self_service.only" = "Vain itsepalvelu"; - -"type.self_service.partially" = "Osittainen itsepalvelu"; - -"type.self_service.no" = "Ei itsepalvelua"; diff --git a/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings index d2bf3fb1a1..cbc91c3616 100644 --- a/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Modifier"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Votre position n'a pas encore été déterminée"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hé, regardez mon signet sur la carte Organic Maps !"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Longueur"; -"share_my_location" = "Partager ma position"; - "prefs_group_route" = "Navigation"; "pref_zoom_title" = "Boutons de zoom"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Ouvrir dans une autre application"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Places en terrasse"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Vente aux enchères"; "type.shop.collector" = "Objets de collection"; - -"type.self_service.yes" = "Libre-service disponible"; - -"type.self_service.only" = "En libre-service uniquement"; - -"type.self_service.partially" = "En libre-service partiellement"; - -"type.self_service.no" = "Pas en libre-service"; diff --git a/iphone/Maps/LocalizedStrings/he.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/he.lproj/Localizable.strings index 4800337008..c65246b178 100644 --- a/iphone/Maps/LocalizedStrings/he.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/he.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "ערוך"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "מיקומך לא אותר עדיין"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "היי, בדוק את הסיכה שלי במפה של Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "אורך"; -"share_my_location" = "שיתוף מיקום שלי"; - "prefs_group_route" = "ניווט"; "pref_zoom_title" = "כפתורי זום"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "פתח באפליקציה אחרת"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "ישיבה בחוץ"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "מכירה פומבית"; "type.shop.collector" = "פריטי אספנות"; - -"type.self_service.yes" = "שירות עצמי זמין"; - -"type.self_service.only" = "שירות עצמי בלבד"; - -"type.self_service.partially" = "שירות עצמי חלקי"; - -"type.self_service.no" = "אין שירות עצמי"; diff --git a/iphone/Maps/LocalizedStrings/hi.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/hi.lproj/Localizable.strings index 1e6d6cc9ac..9c6bfd3b9f 100644 --- a/iphone/Maps/LocalizedStrings/hi.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/hi.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "संपादन करना"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "आपका स्थान अभी तक निर्धारित नहीं किया गया है"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "अरे, ऑर्गेनिक मैप्स में मेरा पिन देखें!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "लंबाई"; -"share_my_location" = "मेरा स्थान साझा करें"; - "prefs_group_route" = "मार्गदर्शन"; "pref_zoom_title" = "ज़ूम बटन"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "किसी अन्य ऐप में खोलें"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "घर के बाहर बैठने"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Auction"; "type.shop.collector" = "Collectables"; - -"type.self_service.yes" = "स्व-सेवा उपलब्ध है"; - -"type.self_service.only" = "केवल स्व-सेवा"; - -"type.self_service.partially" = "आंशिक स्व-सेवा"; - -"type.self_service.no" = "कोई स्व-सेवा नहीं"; diff --git a/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings index 68031a4b5d..dc95156184 100644 --- a/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Szerkeszt"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Még nem határoztuk meg az aktuális helyzetét"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Nézze meg a Organic Maps jelzőmet"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Hossz"; -"share_my_location" = "Helyzetem megosztása"; - "prefs_group_route" = "Navigáció"; "pref_zoom_title" = "Nagyítás/kicsinyítés gombok"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Megnyitás egy másik alkalmazásban"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Kültéri ülőhelyek"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Aukció"; "type.shop.collector" = "Gyűjthető tárgyak"; - -"type.self_service.yes" = "Önkiszolgálás elérhető"; - -"type.self_service.only" = "Csak önkiszolgálás"; - -"type.self_service.partially" = "Részleges önkiszolgálás"; - -"type.self_service.no" = "Nincs önkiszolgálás"; diff --git a/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings index 03ec9a9013..541cc25f08 100644 --- a/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Edit"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Lokasi Anda belum ditentukan"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hei, lihat pinku di peta Organic Maps"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Panjang"; -"share_my_location" = "Bagikan Lokasi Saya"; - "prefs_group_route" = "Navigasi"; "pref_zoom_title" = "Tombol perbesaran"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Buka di Aplikasi Lain"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Tempat duduk di luar ruangan"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Lelang"; "type.shop.collector" = "Barang koleksi"; - -"type.self_service.yes" = "Tersedia layanan mandiri"; - -"type.self_service.only" = "Hanya layanan mandiri"; - -"type.self_service.partially" = "Layanan mandiri sebagian"; - -"type.self_service.no" = "Tidak ada layanan mandiri"; diff --git a/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings index 8142309a37..dde6d40b72 100644 --- a/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Modifica"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "La tua posizione non è stata ancora stabilita"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Puoi vedere il mio luogo preferito sulla mappa Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Lunghezza"; -"share_my_location" = "Condividi la mia posizione"; - "prefs_group_route" = "Navigazione"; "pref_zoom_title" = "Pulsanti per lo zoom"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Apri in un'altra applicazione"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Posti a sedere all'aperto"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Asta"; "type.shop.collector" = "Oggetti da collezione"; - -"type.self_service.yes" = "Disponibile in self-service"; - -"type.self_service.only" = "Solo self-service"; - -"type.self_service.partially" = "Self-service parziale"; - -"type.self_service.no" = "Nessun self-service"; diff --git a/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings index 1fd40735e0..cff9fe46cf 100644 --- a/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "編集"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "現在の座標が未確定です"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Organic Mapsでピン情報を確認"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "距離"; -"share_my_location" = "現在地を共有する"; - "prefs_group_route" = "ナビゲーション"; "pref_zoom_title" = "ズームボタン"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "別のアプリで開く"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "屋外席"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "オークション"; "type.shop.collector" = "コレクタブル"; - -"type.self_service.yes" = "セルフサービス可能"; - -"type.self_service.only" = "セルフサービスのみ"; - -"type.self_service.partially" = "一部セルフサービス"; - -"type.self_service.no" = "セルフサービスはない"; diff --git a/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings index bd0498ed83..e25837955c 100644 --- a/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "편집"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "귀하의 위치를 아직 알아내지 못 했습니다"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Organic Maps 지도에서 내 핀 보기"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "길이"; -"share_my_location" = "내 위치 공유"; - "prefs_group_route" = "네비게이션"; "pref_zoom_title" = "확대/축소 버튼"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "다른 앱에서 열기"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "야외 좌석"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "경매"; "type.shop.collector" = "수집품"; - -"type.self_service.yes" = "셀프 서비스 사용 가능"; - -"type.self_service.only" = "셀프 서비스 전용"; - -"type.self_service.partially" = "부분 셀프 서비스"; - -"type.self_service.no" = "셀프 서비스 없음"; diff --git a/iphone/Maps/LocalizedStrings/mr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/mr.lproj/Localizable.strings index dc3d748114..a1547d9d9f 100644 --- a/iphone/Maps/LocalizedStrings/mr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/mr.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "संपादन"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "तुमचे स्थान अद्याप निश्चित केलेले नाही"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Organic Maps द्वारे एक खूणपत्र पाठवत आहे!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "लांबी"; -"share_my_location" = "माझे स्थान सामायिक करा"; - "prefs_group_route" = "मार्गनिर्देशन"; "pref_zoom_title" = "झूम बटणे"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "दुसऱ्या ॲपमध्ये उघडा"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "बाहेरची आसनव्यवस्था nb = Uteservering"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "लिलाव"; "type.shop.collector" = "संग्रहणीय वस्तू"; - -"type.self_service.yes" = "स्वयं-सेवा उपलब्ध"; - -"type.self_service.only" = "फक्त स्व-सेवा"; - -"type.self_service.partially" = "आंशिक स्व-सेवा"; - -"type.self_service.no" = "स्व-सेवा नाही"; diff --git a/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings index 673293a0bb..f90a0adc83 100644 --- a/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Rediger"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Posisjonen din har ikke blitt fastslått enda"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hei, se merket mitt på Organic Maps-kartet"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Lengde"; -"share_my_location" = "Del posisjonen min"; - "prefs_group_route" = "Navigasjon"; "pref_zoom_title" = "Zoom-knapper"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Åpne i en annen app"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Outdoor seating"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Auksjon"; "type.shop.collector" = "Samleobjekter"; - -"type.self_service.yes" = "Selvbetjening tilgjengelig"; - -"type.self_service.only" = "Kun selvbetjening"; - -"type.self_service.partially" = "Delvis selvbetjening"; - -"type.self_service.no" = "Ingen selvbetjening"; diff --git a/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings index f60e5c10c5..e09d642a25 100644 --- a/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Wijzig"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Je locatie is nog niet vastgesteld"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hey, bekijk mijn pin op Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Lengte"; -"share_my_location" = "Deel mijn locatie"; - "prefs_group_route" = "Navigatie"; "pref_zoom_title" = "Zoomknoppen"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Openen in een andere app"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Zitplaatsen buiten"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Veiling"; "type.shop.collector" = "Verzamelobjecten"; - -"type.self_service.yes" = "Zelfbediening beschikbaar"; - -"type.self_service.only" = "Alleen zelfbediening"; - -"type.self_service.partially" = "Gedeeltelijke zelfbediening"; - -"type.self_service.no" = "Geen zelfbediening"; diff --git a/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings index d49e63a67d..3fd1c1a4cb 100644 --- a/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Edytuj"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Nie określono jeszcze aktualnego położenia"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hej, spójrz na mój znacznik w Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Długość"; -"share_my_location" = "Udostępnij aktualne położenie"; - "prefs_group_route" = "Nawigacja"; "pref_zoom_title" = "Przyciski przybliżania"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Otwórz w innej aplikacji"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Siedzenia na zewnątrz"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Dom aukcyjny"; "type.shop.collector" = "Przedmioty kolekcjonerskie"; - -"type.self_service.yes" = "Dostępna samoobsługa"; - -"type.self_service.only" = "Tylko samoobsługa"; - -"type.self_service.partially" = "Częściowa samoobsługa"; - -"type.self_service.no" = "Brak samoobsługi"; diff --git a/iphone/Maps/LocalizedStrings/pt-BR.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/pt-BR.lproj/Localizable.strings index 27bafbf76c..2e2a45d29f 100644 --- a/iphone/Maps/LocalizedStrings/pt-BR.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/pt-BR.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Editar"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "A sua localização ainda não foi determinada"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Veja o meu marcador no mapa do Organic Maps."; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Comprimento"; -"share_my_location" = "Compartilhar a minha localização"; - "prefs_group_route" = "Navegação"; "pref_zoom_title" = "Botões de zoom"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Abrir em outro aplicativo"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Assentos ao ar livre"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Leilão"; "type.shop.collector" = "Colecionáveis"; - -"type.self_service.yes" = "Autoatendimento disponível"; - -"type.self_service.only" = "Somente autoatendimento"; - -"type.self_service.partially" = "Autoatendimento parcial"; - -"type.self_service.no" = "Sem autoatendimento"; diff --git a/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings index 0a3fb42206..6f35ea5f2f 100644 --- a/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Editar"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "A sua localização ainda não foi determinada"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Veja o meu marcador no mapa do Organic Maps."; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Comprimento"; -"share_my_location" = "Partilhar a minha localização"; - "prefs_group_route" = "Navegação"; "pref_zoom_title" = "Botões de ampliação"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Abrir noutra aplicação"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Assentos ao ar livre"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Leilão"; "type.shop.collector" = "Objectos de colecção"; - -"type.self_service.yes" = "Auto-atendimento disponível"; - -"type.self_service.only" = "Somente autosserviço"; - -"type.self_service.partially" = "Autosserviço parcial"; - -"type.self_service.no" = "Sem autosserviço"; diff --git a/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings index 4d77fa93f3..02bfc653e3 100644 --- a/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Modifică"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Poziția ta nu a fost stabilită încă"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Poți vedea locul meu preferat pe harta Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Lungime"; -"share_my_location" = "Trimite poziția mea"; - "prefs_group_route" = "Navigare"; "pref_zoom_title" = "Butoane zoom"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Deschidere în altă aplicație"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Scaune în aer liber"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Licitație"; "type.shop.collector" = "Colecții"; - -"type.self_service.yes" = "Autoservire disponibilă"; - -"type.self_service.only" = "Numai autoservire"; - -"type.self_service.partially" = "Autoservire parțială"; - -"type.self_service.no" = "Fără autoservire"; diff --git a/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings index aebe58802f..f7be3a0c89 100644 --- a/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Редактировать"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Ваше местоположение ещё не определено"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Смотри мою метку на карте Organic Maps"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Длина"; -"share_my_location" = "Поделиться местоположением"; - "prefs_group_route" = "Навигация"; "pref_zoom_title" = "Кнопки масштаба"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Открыть в другом приложении"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Сидения на открытом воздухе"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Аукцион"; "type.shop.collector" = "Коллекции"; - -"type.self_service.yes" = "Самообслуживание доступно"; - -"type.self_service.only" = "Только самообслуживание"; - -"type.self_service.partially" = "Частичное самообслуживание"; - -"type.self_service.no" = "Никакого самообслуживания"; diff --git a/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings index 224f778c64..a3f5d20f3c 100644 --- a/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Upraviť"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Vaša poloha zatiaľ nebola určená"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Pozri na moju značku na mape Organic Maps"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Dĺžka"; -"share_my_location" = "Zdieľať moje umiestnenie"; - "prefs_group_route" = "Navigácia"; "pref_zoom_title" = "Tlačidlá priblíženia/oddialenia"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Otvoriť v inej aplikácii"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Vonkajšie sedenie"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Aukcia"; "type.shop.collector" = "Zberateľské predmety"; - -"type.self_service.yes" = "K dispozícii je samoobsluha"; - -"type.self_service.only" = "Len samoobslužné služby"; - -"type.self_service.partially" = "Čiastočná samoobsluha"; - -"type.self_service.no" = "Žiadna samoobsluha"; diff --git a/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings index 4ef7e49465..cc9c424c68 100644 --- a/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Redigera"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Din position har inte bestämts ännu"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hej, kolla på min pin på Organic Maps kartan"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Längd"; -"share_my_location" = "Dela Min Plats"; - "prefs_group_route" = "Navigering"; "pref_zoom_title" = "Zoom-knappar"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Öppna i en annan app"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Sittplatser utomhus"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Auktion"; "type.shop.collector" = "Samlingsföremål"; - -"type.self_service.yes" = "Självbetjäning tillgänglig"; - -"type.self_service.only" = "Endast självbetjäning"; - -"type.self_service.partially" = "Delvis självbetjäning"; - -"type.self_service.no" = "Ingen självbetjäning"; diff --git a/iphone/Maps/LocalizedStrings/sw.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sw.lproj/Localizable.strings index e94199900a..054e7f1290 100644 --- a/iphone/Maps/LocalizedStrings/sw.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sw.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Edit"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Your location hasn't been determined yet"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hey, check out my pin in Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Length"; -"share_my_location" = "Share My Location"; - "prefs_group_route" = "Navigation"; "pref_zoom_title" = "Zoom buttons"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Fungua Katika Programu Nyingine"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Viti vya nje"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Mnada"; "type.shop.collector" = "Mikusanyiko"; - -"type.self_service.yes" = "Huduma ya kibinafsi inapatikana"; - -"type.self_service.only" = "Kujihudumia pekee"; - -"type.self_service.partially" = "Kujihudumia kwa sehemu"; - -"type.self_service.no" = "Hakuna huduma binafsi"; diff --git a/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings index 579924eedf..2411ebd6b8 100644 --- a/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "แก้ไข"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "ตำแหน่งที่ตั้งของคุณยังไม่ได้รับการกำหนด"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "เฮ้ ตรวจสอบหมุดของฉันที่ แผนที่ Organic Maps!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "ระยะเวลา"; -"share_my_location" = "แชร์ตำแหน่งที่ตั้งของฉัน"; - "prefs_group_route" = "การนำทาง"; "pref_zoom_title" = "ปุ่มซูม"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "เปิดในแอปอื่น"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "ที่นั่งกลางแจ้ง"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "ประมูล"; "type.shop.collector" = "ของสะสม"; - -"type.self_service.yes" = "มีบริการด้วยตนเอง"; - -"type.self_service.only" = "บริการตนเองเท่านั้น"; - -"type.self_service.partially" = "การบริการตนเองบางส่วน"; - -"type.self_service.no" = "ไม่มีบริการตนเอง"; diff --git a/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings index d6aa262e95..6918f62257 100644 --- a/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Düzenle"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Konumunuz henüz belirlenmedi"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Hey, Organic Maps haritasında raptiyemi incele!"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Uzunluk"; -"share_my_location" = "Konumumu Paylaş"; - "prefs_group_route" = "Navigasyon"; "pref_zoom_title" = "Yakınlaştırma butonları"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Başka Bir Uygulamada Aç"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Açık oturma alanı"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Müzayede"; "type.shop.collector" = "Koleksiyon eşyaları"; - -"type.self_service.yes" = "Self servis mevcut"; - -"type.self_service.only" = "Yalnızca self servis"; - -"type.self_service.partially" = "Kısmi self servis"; - -"type.self_service.no" = "Self servis yok"; diff --git a/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings index 27aba5f885..f6a991906d 100644 --- a/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Редагувати"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Ваше місце розташування не визначено"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Поглянь на мою мiтку на мапі Organic Maps"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Довжина"; -"share_my_location" = "Поділитися моїм місцезнаходженням"; - "prefs_group_route" = "Навігація"; "pref_zoom_title" = "Кнопки трансфокації"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Відкрити в іншій програмі"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Сидіння на відкритому повітрі"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Аукціон"; "type.shop.collector" = "Колекційні речі"; - -"type.self_service.yes" = "Доступне самообслуговування"; - -"type.self_service.only" = "Тільки самообслуговування"; - -"type.self_service.partially" = "Часткове самообслуговування"; - -"type.self_service.no" = "Самообслуговування відсутнє"; diff --git a/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings index 413d9ea88f..24615391bb 100644 --- a/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings @@ -185,9 +185,6 @@ /* resource for context menu */ "edit" = "Sửa"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "Chưa xác định được vị trí của bạn"; - /* Subject for emailed bookmark */ "bookmark_share_email_subject" = "Này, hãy xem ghim của tôi tại Organic Maps map"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "Độ dài"; -"share_my_location" = "Chia sẻ Vị trí của tôi"; - "prefs_group_route" = "Điều hướng"; "pref_zoom_title" = "Nút Phóng to/Thu nhỏ"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "Mở trong ứng dụng khác"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "Chỗ ngồi ngoài trời"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "Bán đấu giá"; "type.shop.collector" = "Đồ sưu tầm"; - -"type.self_service.yes" = "Có sẵn dịch vụ tự phục vụ"; - -"type.self_service.only" = "Chỉ tự phục vụ"; - -"type.self_service.partially" = "Tự phục vụ một phần"; - -"type.self_service.no" = "Không tự phục vụ"; diff --git a/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings index d07fa67d19..d096220d97 100644 --- a/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings @@ -18,7 +18,7 @@ "download_maps" = "下载地图"; /* Settings/Downloader - info for country which started downloading */ -"downloading" = "正在下载…"; +"downloading" = "下载…"; /* Choose measurement on first launch alert - choose metric system button */ "kilometres" = "公里"; @@ -33,7 +33,7 @@ "core_my_position" = "我的位置"; /* Update maps later button text */ -"later" = "以后再说"; +"later" = "稍后"; /* View and button titles for accessibility, please also edit it in iphone/plist.txt */ "search" = "搜索"; @@ -54,13 +54,13 @@ "about_headline" = "对每个人都免费,用爱制成"; /* Text in About screen */ -"about_proposition_1" = "• 没有广告,不会跟踪您,更不会收集您的数据"; +"about_proposition_1" = "•没有广告,不会跟踪您,更不会收集您的数据"; /* Text in About screen */ -"about_proposition_2" = "• 无需耗费太多电量,可离线工作"; +"about_proposition_2" = "• 无需耗费电池,可离线工作"; /* Text in About screen */ -"about_proposition_3" = "• 快速且简约,由社区开发"; +"about_proposition_3" = "• 快速、简约、由社区开发"; "close" = "关闭"; @@ -70,13 +70,13 @@ "continue_download" = "继续"; /* "Add new bookmark list" dialog title */ -"add_new_set" = "添加新的书签列表"; +"add_new_set" = "添加新的集合"; /* Add Bookmark list dialog - hint when the list name is empty */ -"bookmark_set_name" = "书签列表名称"; +"bookmark_set_name" = "书签集名称"; /* "Bookmark Lists" dialog title */ -"bookmark_sets" = "书签列表"; +"bookmark_sets" = "书签集"; /* Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. */ "bookmarks" = "书签"; @@ -85,7 +85,7 @@ "bookmarks_and_tracks" = "书签和轨迹"; /* Default bookmark list name */ -"core_my_places" = "我的地点"; +"core_my_places" = "我的位置"; /* Editor title above street and house number, duplicates [type.building.address] in types_strings.txt */ "address" = "地址"; @@ -109,7 +109,7 @@ "category_transport" = "交通"; /* Search category for fuel stations; any changes should be duplicated in categories.txt @category_fuel! */ -"category_fuel" = "加油站"; +"category_fuel" = "汽油"; /* Search category for parking lots; any changes should be duplicated in categories.txt @category_parking! */ "category_parking" = "停车场"; @@ -121,7 +121,7 @@ "category_secondhand" = "二手货"; /* Search category for places to stay; any changes should be duplicated in categories.txt @category_hotel! */ -"category_hotel" = "酒店"; +"category_hotel" = "旅店"; /* Search category sight seeings and touristic attractions; any changes should be duplicated in categories.txt @category_tourism! */ "category_tourism" = "旅游景点"; @@ -151,7 +151,7 @@ "category_toilet" = "厕所"; /* Search category for post offices; any changes should be duplicated in categories.txt @category_post! */ -"category_post" = "邮局"; +"category_post" = "邮政"; /* Search category for police; any changes should be duplicated in categories.txt @category_police! */ "category_police" = "警察局"; @@ -166,7 +166,7 @@ "category_water" = "水"; /* Search category for RV facilities; any changes should be duplicated in categories.txt @category_rv! */ -"category_rv" = "房车设施"; +"category_rv" = "房车用"; /********** Other translations **********/ @@ -174,31 +174,28 @@ "share_bookmarks_email_body" = "您好!\n\n附件是我的书签,请在 Organic Maps 中打开。如果您没有安装 Organic Maps,可以在这里下载: https://omaps.app/get?kmz\n\n祝您使用 Organic Maps 旅行愉快!"; /* message title of loading file */ -"load_kmz_title" = "正在载入书签…"; +"load_kmz_title" = "加载书签"; /* Kmz file successful loading */ -"load_kmz_successful" = "书签载入成功!您可以在地图或书签管理页面中找到它们。"; +"load_kmz_successful" = "书签加载成功!您可以在地图或书签管理窗口中找到它们。"; /* Kml file loading failed */ -"load_kmz_failed" = "书签载入失败,文件可能已损坏或不完整。"; +"load_kmz_failed" = "书签上传失败。该文件可能已损坏或有缺陷。"; /* resource for context menu */ "edit" = "编辑"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "您的位置尚未确定"; - /* Subject for emailed bookmark */ -"bookmark_share_email_subject" = "嘿,看看我在 Organic Maps 上标记的图钉吧!"; +"bookmark_share_email_subject" = "嘿,在 Organic Maps 上查看我标注的图钉吧!"; /* Subject for emailed position */ -"my_position_share_email_subject" = "嗨,到 Organic Maps 查看我当前的位置!"; +"my_position_share_email_subject" = "嗨,到 Organic Maps 查看我的当前位置!"; /* Share by email button text, also used in editor and About. */ -"email" = "电子邮件"; +"email" = "邮件"; /* Text for message when used successfully copied something */ -"copied_to_clipboard" = "已复制到剪贴板:%@"; +"copied_to_clipboard" = "复制到剪贴板:%@"; /* place preview title */ "info" = "信息"; @@ -207,7 +204,7 @@ "done" = "完成"; /* Prints version number in About dialog */ -"version" = "Organic Maps 版本:%@"; +"version" = "Organic Maps 版本: %@"; /* Title for tracks category in bookmarks manager */ "tracks_title" = "轨迹"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "长度"; -"share_my_location" = "共享我的位置"; - "prefs_group_route" = "导航"; "pref_zoom_title" = "缩放按钮"; @@ -246,7 +241,7 @@ "pref_map_3d_buildings_title" = "3D 建筑"; /* A message in Settings/Preferences explaining why is it not possible to enable 3D buildings when max power saving mode is enabled */ -"pref_map_3d_buildings_disabled_summary" = "3D 建筑在省电模式下处于关闭状态"; +"pref_map_3d_buildings_disabled_summary" = "3D 建筑在省电模式下关闭"; /* Settings «Route» category: «Tts enabled» title */ "pref_tts_enable_title" = "语音指导"; @@ -261,29 +256,29 @@ "pref_tts_language_title" = "语音语言"; /* Settings «Route» category: «Test Voice Directions» title */ -"pref_tts_test_voice_title" = "测试语音指令(TTS,文本转语音系统)"; +"pref_tts_test_voice_title" = "测试语音指令(TTS,Text-To-Speech)"; /* Title for "Other" section in TTS settings. */ "pref_tts_other_section_title" = "其他"; /* Settings «Map» category: «Record track» title */ -"pref_track_record_title" = "最近的轨迹"; +"pref_track_record_title" = "最近的路径"; "pref_map_auto_zoom" = "自动缩放"; "duration_disabled" = "关闭"; -"duration_1_hour" = "1 小时"; +"duration_1_hour" = "1小时"; -"duration_2_hours" = "2 小时"; +"duration_2_hours" = "2小时"; -"duration_6_hours" = "6 小时"; +"duration_6_hours" = "6小时"; -"duration_12_hours" = "12 小时"; +"duration_12_hours" = "12小时"; -"duration_1_day" = "1 天"; +"duration_1_day" = "1天"; -"recent_track_help_text" = "记录并显示您在指定时间段内的旅行轨迹。请注意:这会显著增加电池消耗。"; +"recent_track_help_text" = "它允许您记录一定时间段内的旅行路径,并在地图上查看。请注意:激活此功能会导致电量消耗加快。过期后,轨迹将从地图中自动移除。"; "placepage_distance" = "距离"; @@ -320,7 +315,7 @@ "donate" = "捐助我们"; /* Tex label above the Donate button */ -"donate_description" = "捐助,以共同打造最好的地图!"; +"donate_description" = "捐赠,共同打造最好的地图!"; /* Button in the main Help dialog */ "copyright" = "版权"; @@ -329,25 +324,25 @@ "report_a_bug" = "报告问题"; /* Button in the About screen */ -"report_incorrect_map_bug" = "报告或修复不正确的地图数据"; +"report_incorrect_map_bug" = "报告或修复错误的地图数据"; /* Button in the About screen */ -"volunteer" = "志愿者"; +"volunteer" = "志愿服务"; /* "Social media" section header in the About screen */ "follow_us" = "关注并联系我们:"; /* Alert text */ -"email_error_body" = "电子邮件客户端未设置。请配置电子邮件客户端或通过 %@ 联系我们。"; +"email_error_body" = "电子邮件客户端尚未建立。请配置或使用任何其他方式与我们联系%@"; /* Alert title */ -"email_error_title" = "电子邮件发送失败"; +"email_error_title" = "电子邮件发送错误"; /* Settings item title */ "pref_calibration_title" = "指南针校准"; /* Toast text when user hides UI with a long tap anywhere on the map */ -"long_tap_toast" = "再次长按地图即可查看界面"; +"long_tap_toast" = "再次长按地图查看界面"; /* Update all button text */ "downloader_update_all_button" = "更新全部"; @@ -370,7 +365,7 @@ "downloader_downloading" = "正在下载:"; -"downloader_search_results" = "已找到"; +"downloader_search_results" = "找到"; /* Status of outdated country in the list */ "downloader_status_outdated" = "更新"; @@ -382,7 +377,7 @@ "downloader_delete_map_while_routing_dialog" = "要删除地图,请停止导航。"; /* PointsInDifferentMWM */ -"routing_failed_cross_mwm_building" = "路线只能完全处在同一地图里时才能被规划。"; +"routing_failed_cross_mwm_building" = "路程只能完全处在同一地图里时才能被创建。"; /* Context menu item for downloader. */ "downloader_download_map" = "下载地图"; @@ -394,10 +389,10 @@ "downloader_delete_map" = "删除地图"; /* Text for routing error dialog */ -"routing_download_maps_along" = "下载路线上的所有地图"; +"routing_download_maps_along" = "下载沿线地图"; /* Text for routing error dialog */ -"routing_requires_all_map" = "规划路线需要下载并更新好所有从您的位置到目的地的地图。"; +"routing_requires_all_map" = "创建路线需要下载并更新好所有从您的位置到目的地的地图。"; /* bookmark button text */ "bookmark" = "书签"; @@ -422,7 +417,7 @@ "purple" = "紫色"; /* orange color */ -"orange" = "橙色"; +"orange" = "橘红色"; /* brown color */ "brown" = "棕色"; @@ -446,7 +441,7 @@ "lime" = "青柠"; /* deep orange color */ -"deep_orange" = "深橙色"; +"deep_orange" = "深橘色"; /* gray color */ "gray" = "灰色"; @@ -461,27 +456,27 @@ "dialog_routing_disclaimer_priority" = "— 路况、交通法规和路标始终优先于导航建议;"; -"dialog_routing_disclaimer_precision" = "— 地图可能不准确,建议的路线可能并非总是去往目的地的最佳路线;"; +"dialog_routing_disclaimer_precision" = "— 地图可能不准确,建议的路线可能并非总是去往目的地的最佳路径;"; "dialog_routing_disclaimer_recommendations" = "— 建议的路线仅作为推荐路线供您采纳;"; -"dialog_routing_disclaimer_borders" = "— 小心对待国界区的路线:我们的应用程序生成的路线有时会在未经授权的地方跨越国界;"; +"dialog_routing_disclaimer_borders" = "— 小心对待国界区的路线:我们应用创造的路线有时会在未经授权的地方跨越国界;"; "dialog_routing_disclaimer_beware" = "上路时请当心,祝您一路平安!"; "dialog_routing_check_gps" = "检查 GPS 信号"; -"dialog_routing_error_location_not_found" = "无法规划路线。无法识别当前 GPS 坐标。"; +"dialog_routing_error_location_not_found" = "无法创建路线。当前 GPS 坐标无法识别。"; -"dialog_routing_location_turn_wifi" = "请检查您的 GPS 信号。启用无线网络将改善定位精度。"; +"dialog_routing_location_turn_wifi" = "请检查您的 GPS 信号。启用无线网络将改善您的定位精度。"; "dialog_routing_location_turn_on" = "启用定位服务"; -"dialog_routing_location_unknown_turn_on" = "无法定位当前 GPS 坐标。请启用定位服务以规划路线。"; +"dialog_routing_location_unknown_turn_on" = "无法定位当前 GPS 坐标。请启用定位服务以计算路线。"; "dialog_routing_download_files" = "下载所需文件"; -"dialog_routing_download_and_update_all" = "下载或更新沿预计路线的所有地图,以规划路线。"; +"dialog_routing_download_and_update_all" = "下载和更新所有地图和预定路径沿途的路线信息,以计算路线。"; "dialog_routing_unable_locate_route" = "无法定位路线"; @@ -489,29 +484,29 @@ "dialog_routing_change_start" = "调整出发点"; -"dialog_routing_start_not_determined" = "路线未规划。无法定位起点。"; +"dialog_routing_start_not_determined" = "路线未创建。无法定位起点。"; "dialog_routing_select_closer_start" = "请选择更靠近公路的起点。"; "dialog_routing_change_end" = "调整目的地"; -"dialog_routing_end_not_determined" = "路线未规划。无法定位目的地。"; +"dialog_routing_end_not_determined" = "路线未创建。无法定位目的地。"; "dialog_routing_select_closer_end" = "请选择更靠近公路的目的地位置。"; -"dialog_routing_change_intermediate" = "无法定位途径点。"; +"dialog_routing_change_intermediate" = "无法定位中间点。"; -"dialog_routing_intermediate_not_determined" = "请调整您的途径点。"; +"dialog_routing_intermediate_not_determined" = "请调整您的中间点。"; "dialog_routing_system_error" = "系统错误"; -"dialog_routing_application_error" = "由于应用程序出错,因此无法规划路线。"; +"dialog_routing_application_error" = "由于应用程序错误,无法创建路线。"; -"dialog_routing_try_again" = "请再试一次"; +"dialog_routing_try_again" = "请重试"; -"dialog_routing_download_and_build_cross_route" = "您是否要下载地图,以规划跨越边界的更佳路线?"; +"dialog_routing_download_and_build_cross_route" = "您是否要下载地图并创建一条跨越多张地图的更佳路线?"; -"dialog_routing_download_cross_route" = "下载地图,以规划一条跨越边界的更佳路线。"; +"dialog_routing_download_cross_route" = "下载地图,创建一条跨越此地图边缘的更佳路线。"; /********** Strings for downloading map from search **********/ @@ -526,23 +521,23 @@ "routing_planning_error" = "路线计划失败"; /* Arrive routing message in navigation view */ -"routing_arrive" = "已到达 %@"; +"routing_arrive" = "抵達:%@"; /* Text for routing::RouterResultCode::FileTooOld dialog. */ -"dialog_routing_download_and_update_maps" = "要规划路线,请下载并更新所有沿路线的地图。"; +"dialog_routing_download_and_update_maps" = "要创建路线,请下载并更新所有沿路线的地图。"; "categories" = "类别"; "history" = "历史"; -"search_not_found" = "很抱歉,没有搜到任何地点。"; +"search_not_found" = "很抱歉,没有找到任何地点。"; /* The message when user did not find anything in the search. */ -"search_not_found_query" = "下载您要搜索的区域的地图,或尝试输入附近的城镇或村庄名称。"; +"search_not_found_query" = "下载要搜索的地区或尝试添加附近的城镇/村庄名称。"; "search_history_title" = "搜索历史记录"; -"search_history_text" = "查看您最近的搜索记录。"; +"search_history_text" = "快速访问最近的搜索查询。"; "clear_search" = "清除搜索记录"; @@ -569,13 +564,13 @@ "editor_time_delete" = "删除计划"; /* Text for allday switch. */ -"editor_time_allday" = "全天(24 小时)"; +"editor_time_allday" = "全天(24小时)"; -"editor_time_open" = "正在营业"; +"editor_time_open" = "开始营业时间"; -"editor_time_close" = "已歇业"; +"editor_time_close" = "结束营业时间"; -"editor_time_add_closed" = "添加休息时间"; +"editor_time_add_closed" = "添加非营业时间"; "editor_time_title" = "营业时间"; @@ -589,7 +584,7 @@ "editor_add_select_location" = "位置"; -"editor_done_dialog_1" = "您已经改变了世界地图。请别再藏着掖着了!告诉您的朋友们并一起来编辑地图。"; +"editor_done_dialog_1" = "您已经改变了世界地图。请不要隐藏这一点!告诉您的朋友们并一起编辑它。"; "share_with_friends" = "与朋友分享"; @@ -598,12 +593,12 @@ "autodownload" = "自动下载"; /* Place Page opening hours text */ -"closed_now" = "现已关门"; +"closed_now" = "现在关门"; /* Place Page opening hours text */ "daily" = "每天"; -"twentyfour_seven" = "24/7 全天候营业"; +"twentyfour_seven" = "全天候"; "day_off_today" = "今天不营业"; @@ -621,17 +616,17 @@ "closes_at" = "Closes at %@"; -"closes_in" = "将于 %@ 后歇业"; +"closes_in" = "将于 %@ 后停业"; "closed" = "已停止营业"; "add_opening_hours" = "添加营业时间"; -"no_osm_account" = "没有 OpenStreetMap 账户吗?"; +"no_osm_account" = "在OpenStreetMap上没有账户吗?"; "register_at_openstreetmap" = "注册"; -"password_8_chars_min" = "密码(至少 8 个字符)"; +"password_8_chars_min" = "密码(最少8个字符)"; "invalid_username_or_password" = "无效的用户名或密码。"; @@ -641,18 +636,18 @@ "forgot_password" = "忘记密码"; -"osm_account" = "OSM 账户"; +"osm_account" = "OSM账户"; "logout" = "登出"; /* Information text: "Last upload 11.01.2016" */ -"last_upload" = "最后上传"; +"last_upload" = "上次上传"; "thank_you" = "谢谢您"; "edit_place" = "编辑地点"; -"place_name" = "地点名称"; +"place_name" = "地点名"; "add_language" = "添加语言"; @@ -675,7 +670,7 @@ "select_cuisine" = "选择菜肴"; /* login text field */ -"email_or_username" = "电子邮件或用户名"; +"email_or_username" = "邮箱或用户名"; "phone" = "电话"; @@ -687,13 +682,13 @@ "downloader_update_maps" = "更新地图"; -"downloader_search_field_hint" = "搜索地图"; +"downloader_search_field_hint" = "找到地图"; -"migration_download_error_dialog" = "下载失败"; +"migration_download_error_dialog" = "下载错误"; "common_check_internet_connection_dialog" = "请检查您的设置并确保您的设备已连接至网络。"; -"downloader_no_space_title" = "没有足够的空间"; +"downloader_no_space_title" = "无足够的空间"; "downloader_no_space_message" = "请删除不必要的数据"; @@ -718,32 +713,32 @@ "editor_edit_place_category_title" = "类别"; -"whatsnew_editor_message_1" = "添加新地点到地图,并直接通过此应用编辑已存在的地点。"; +"whatsnew_editor_message_1" = "添加新地点到该地图,并直接通过此应用编辑已存在的地点。"; -"dialog_incorrect_feature_position" = "更改位置"; +"dialog_incorrect_feature_position" = "改变位置"; -"message_invalid_feature_position" = "地点不能放置在这里"; +"message_invalid_feature_position" = "对象无法设置在这里"; /* Text in About and OSM Login screens. First %@ is replaced by a local, human readable date. */ -"osm_presentation" = "截至 %@ 的社区创建的 OpenStreetMap 数据。请访问 OpenStreetMap.org 以了解有关如何编辑和更新地图的信息。"; +"osm_presentation" = "截至 %@ 的社区创建的 OpenStreetMap 数据。请访问 OpenStreetMap.org 以了解更多有关如何编辑和更新地图的信息。"; "login_to_make_edits_visible" = "登录,让其他用户能看到您所作出的修改。"; /* Error dialog no space */ -"migration_no_space_message" = "为了下载,您需要更多的存储空间。请删除不必要的文件。"; +"migration_no_space_message" = "为了下载,您需要更多的空间。请删除不必要的数据。"; -"editor_sharing_title" = "我改进了 Organic Maps 地图"; +"editor_sharing_title" = "我改进了Organic Maps地图"; /* Downloaded 10 **of** 20 <- it is that "of" */ -"downloader_of" = "%1$d / %2$d"; +"downloader_of" = "%1$d个/共%2$d个"; "download_over_mobile_header" = "用手机网络连接下载吗?"; "download_over_mobile_message" = "如果您使用移动数据或漫游来进行下载,将可能导致额外的费用。"; -"error_enter_correct_house_number" = "输入正确的门牌号码"; +"error_enter_correct_house_number" = "输入正确的房屋号"; -"editor_storey_number" = "楼层数量 (最多 %d 层)"; +"editor_storey_number" = "楼号 (最大 %d)"; /* Error message in Editor when a user tries to set the number of floors for a building higher than %d floors */ "error_enter_correct_storey_number" = "最多可编辑 %d 层的建筑"; @@ -753,7 +748,7 @@ "error_enter_correct_zip_code" = "输入正确的邮政编码"; /* Place Page title for long tap */ -"core_placepage_unknown_place" = "未知地点"; +"core_placepage_unknown_place" = "未知位置"; "editor_other_info" = "给 OSM 社区发送标记"; @@ -763,32 +758,32 @@ "editor_more_about_osm" = "关于 OpenStreetMap 的更多信息"; -"editor_operator" = "经营者"; +"editor_operator" = "运营者"; "downloader_no_downloaded_maps_title" = "您尚未下载任何地图"; -"downloader_no_downloaded_maps_message" = "下载地图来查找位置和离线浏览。"; +"downloader_no_downloaded_maps_message" = "下载地图来查找位置和离线浏览"; -"current_location_unknown_error_title" = "当前位置未知。"; +"current_location_unknown_error_title" = "当前位置未知"; "current_location_unknown_error_message" = "定位到您的当前位置时出错。请检查您的设备是否正常运作,然后再试一次。"; -"location_services_disabled_header" = "定位服务已被禁用"; +"location_services_disabled_header" = "地点定位被禁用"; -"location_services_disabled_message" = "启用设备设置中的定位服务"; +"location_services_disabled_message" = "启用设备设置中的地理位置定位"; "location_services_disabled_1" = "1. 打开设置"; "location_services_disabled_2" = "2. 点击位置"; /* iOS Dialog for the case when the location permission is not granted; you might find the exact wording for your language here: https://support.apple.com/en-us/102647 (replace 'en-us' in URL with your language/region) */ -"location_services_disabled_3" = "3. 点击“使用 App 期间”"; +"location_services_disabled_3" = "3. 使用应用时选择"; -"location_services_disabled_on_device_2" = "2. 点击“隐私和安全性”"; +"location_services_disabled_on_device_2" = "2. 选择隐私"; -"location_services_disabled_on_device_3" = "3. 选择“定位服务”"; +"location_services_disabled_on_device_3" = "3.选择位置服务"; -"location_services_disabled_on_device_4" = "4. 打开“定位服务”"; +"location_services_disabled_on_device_4" = "4.打开定位服务"; "location_services_disabled_on_device_additional_message" = "或继续使用 Organic Maps,但无法定位到您目前所在的位置。"; @@ -815,7 +810,7 @@ "placepage_more_button" = "更多"; -"book_button" = "预定"; +"book_button" = "预約"; /* A referral link on the place page for some hotels */ "more_on_kayak" = "照片、评论、预订"; @@ -824,7 +819,7 @@ "dialog_kayak_disclaimer" = "每次通过此链接预订所获得的推荐奖金将用于 Organic Maps 的开发。"; /* A confirmation button text in the explanation dialog that opens hotel details page on Kayak website. */ -"dialog_kayak_button" = "客涯 (Kayak) 上的详细信息"; +"dialog_kayak_button" = "Kayak 上的详细信息"; "placepage_call_button" = "呼叫"; @@ -844,7 +839,7 @@ "editor_reset_edits_button" = "重置"; -"editor_remove_place_message" = "删除已添加的地点?"; +"editor_remove_place_message" = "删除已添加的位置?"; "editor_remove_place_button" = "删除"; @@ -855,16 +850,16 @@ /* Phone number error message */ "error_enter_correct_phone" = "输入正确的电话号码"; -"error_enter_correct_web" = "请输入有效的网址"; +"error_enter_correct_web" = "输入有效网址"; -"error_enter_correct_email" = "请输入有效的电子邮件"; +"error_enter_correct_email" = "输入有效电子邮箱"; "refresh" = "更新"; "placepage_add_place_button" = "将地点添加到 OpenStreetMap"; /* Displayed when saving some edits to the map to warn against publishing personal data */ -"editor_share_to_all_dialog_title" = "您想要发送给所有用户吗?"; +"editor_share_to_all_dialog_title" = "您想要发给所有用户吗?"; /* Dialog before publishing the modifications to the public map. */ "editor_share_to_all_dialog_message_1" = "确保您没有输入任何个人数据。"; @@ -874,14 +869,14 @@ "navigation_stop_button" = "停止"; /* iOS dialog for the case when recent track recording is on and the app comes back from background */ -"recent_track_background_dialog_title" = "禁止记录您最近去过的路线吗?"; +"recent_track_background_dialog_title" = "禁止记录您最近去过的路径?"; "off_recent_track_background_button" = "禁用"; /* For sharing via SMS and so on */ "sharing_call_action_look" = "来看看"; -"recent_track_background_dialog_message" = "Organic Maps 在后台使用您的位置记录您最近去过的路线。"; +"recent_track_background_dialog_message" = "Organic Maps使用背景中的地理位置记录您最近去过的路径。"; "general_settings" = "常规设置"; @@ -894,7 +889,7 @@ /* A noun - a button name used to show search results in list form */ "search_in_table" = "列表"; -"mobile_data_dialog" = "使用移动网络显示更多详细信息吗?"; +"mobile_data_dialog" = "使用移动网络显示详细信息?"; "mobile_data_option_always" = "始终使用"; @@ -911,30 +906,30 @@ "mobile_data_option_ask" = "总是询问"; -"traffic_update_maps_text" = "诺要显示交通数据,必须更新地图。"; +"traffic_update_maps_text" = "要显示交通数据,必须更新地图。"; "big_font" = "增大地图上的字体大小"; /* "traffic" as in road congestion */ -"traffic_update_app_message" = "诺要显示交通数据,必须更新应用。"; +"traffic_update_app_message" = "要显示交通数据,必须更新应用。"; /* "traffic" as in "road congestion" */ "traffic_data_unavailable" = "交通数据不可用"; -"enable_logging" = "启用日志记录"; +"enable_logging" = "启用记录"; -"log_file_size" = "日志文件大小:%@"; +"log_file_size" = "日志文件大小: %@"; -"transliteration_title" = "拉丁字母音译"; +"transliteration_title" = "直译成拉丁文"; /* Subway exits for public transport marks on the map */ "core_exit" = "退出"; /* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "请搜索地点或点击地图以添加路线起点"; +"routing_add_start_point" = "请使用搜索或点击地图以添加路线起点"; /* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "请搜索地点或点击地图以添加目的地"; +"routing_add_finish_point" = "请使用搜索或点击地图以添加目的地"; "planning_route_manage_route" = "管理路线"; @@ -949,10 +944,10 @@ "start_from_my_position" = "起点"; /* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */ -"alert_reauth_message_ios" = "请登录 OpenStreetMap 以自动上传您的所有地图编辑。了解更多"; +"alert_reauth_message_ios" = "请登录OpenStreetMap,自动上传您编辑的所有地图。了解更多信息"; /* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */ -"alert_reauth_link_text_ios" = "这里"; +"alert_reauth_link_text_ios" = "请点击这里"; "core_entrance" = "入口"; @@ -976,25 +971,25 @@ "downloader_process" = "正在下載 %@…"; -"downloader_applying" = "正在应用 %@…"; +"downloader_applying" = "正在套用 %@…"; -"bookmarks_error_message_share_general" = "由于应用程序出错,导致无法分享"; +"bookmarks_error_message_share_general" = "由于应用程序出错而无法分享"; -"bookmarks_error_title_share_empty" = "无法分享"; +"bookmarks_error_title_share_empty" = "分享错误"; "bookmarks_error_message_share_empty" = "无法分享空列表"; "bookmarks_error_message_empty_list_name" = "请输入列表名称"; -"bookmarks_error_title_list_name_already_taken" = "这个名称已经被使用了"; +"bookmarks_error_title_list_name_already_taken" = "这个名字已经被使用了"; -"bookmarks_error_title_list_name_too_long" = "这个名称太长了"; +"bookmarks_error_title_list_name_too_long" = "这个名字太长了"; "profile" = "OpenStreetMap 资料"; "bookmarks_detect_title" = "检测到新文件"; -"button_convert" = "转换"; +"button_convert" = "兑换"; "bookmarks_convert_error_title" = "错误"; @@ -1016,15 +1011,15 @@ "popular_place" = "Popular"; -"export_file" = "导出为 KMZ"; +"export_file" = "导出 KMZ"; -"export_file_gpx" = "导出为 GPX"; +"export_file_gpx" = "导出 GPX"; "delete_list" = "删除列表"; -"hide_from_map" = "从地图上隐藏"; +"hide_from_map" = "从卡中隐藏"; -"bookmark_list_description_hint" = "添加说明(文字或 html)"; +"bookmark_list_description_hint" = "请添加说明(文字或html)"; "tags_loading_error_subtitle" = "加载标签时出错,请重试"; @@ -1045,15 +1040,15 @@ "power_managment_title" = "省电模式"; -"power_managment_description" = "如果开启省电模式,应用程序将根据手机的当前电量关闭耗电功能"; +"power_managment_description" = "如果开启省电模式,应用程序将根据手机的当前电量关耗电功能"; "power_managment_setting_never" = "从不"; -"power_managment_setting_auto" = "当电量低时"; +"power_managment_setting_auto" = "自动"; "power_managment_setting_manual_max" = "最大程度省电"; -"enable_logging_warning_message" = "临时启用此选项,以便使用“报告错误”功能在帮助对话框中记录并手动发送详细诊断日志给我们。日志可能包含位置信息。"; +"enable_logging_warning_message" = "临时启用此选项,以便使用“报告错误”功能在帮助对话框中记录并手动发送有关您的问题的详细诊断日志给我们。日志可能包含位置信息。"; "driving_options_title" = "绕行设置"; @@ -1061,7 +1056,7 @@ "avoid_tolls" = "避开收费公路"; /* Recommended length for CarPlay and Android Auto is around 25-27 characters */ -"avoid_unpaved" = "避开未铺砌道路"; +"avoid_unpaved" = "避开未铺设道路"; /* Recommended length for CarPlay and Android Auto is around 25-27 characters */ "avoid_ferry" = "避开轮渡"; @@ -1070,29 +1065,29 @@ "unable_to_calc_alert_title" = "无法规划路线"; -"unable_to_calc_alert_subtitle" = "很遗憾,我们无法使用所选的绕行设置规划路线。请更改设置,然后重试"; +"unable_to_calc_alert_subtitle" = "很遗憾,我们无法使用所选选项规划路线。请更改设置,然后重试"; -"define_to_avoid_btn" = "选择要避开的道路"; +"define_to_avoid_btn" = "设置绕行路径"; "change_driving_options_btn" = "绕行设置已开启"; "toll_road" = "收费公路"; -"unpaved_road" = "未铺砌道路"; +"unpaved_road" = "土路"; "ferry_crossing" = "轮渡"; -"trip_start" = "出发"; +"trip_start" = "前往"; -"pick_destination" = "目的地"; +"pick_destination" = "目标"; -"follow_my_position" = "重新居中"; +"follow_my_position" = "定好中心"; "search_results" = "搜索结果"; -"then_turn" = "然后"; +"then_turn" = "接下来"; -"redirect_route_alert" = "您想重新规划路线吗?"; +"redirect_route_alert" = "想重建路线?"; /* A generic "Yes" button in dialogs */ "yes" = "是"; @@ -1109,42 +1104,42 @@ /* To indicate the capacity of car parkings, bicycle parkings, electric vehicle charging stations... */ "capacity" = "容量:%@"; -"trip_finished" = "您已到达目的地!"; +"trip_finished" = "您已到达!"; -"keyboard_availability_alert" = "开车时键盘不可用"; +"keyboard_availability_alert" = "移动时键盘不可用"; -"dialog_routing_change_start_carplay" = "无法从当前位置规划路线"; +"dialog_routing_change_start_carplay" = "无法从当前位置构建路线"; -"dialog_routing_change_end_carplay" = "无法规划到终点的路线。请选择其它目的地"; +"dialog_routing_change_end_carplay" = "无法建立到终点的路线。请选择其他(路线)"; -"dialog_routing_check_gps_carplay" = "没有 GPS 信号。请沿着空旷区域行驶"; +"dialog_routing_check_gps_carplay" = "无GPS信号。请沿着空旷区域行驶"; -"dialog_routing_unable_locate_route_carplay" = "无法规划路线。请选择其他路线点"; +"dialog_routing_unable_locate_route_carplay" = "无法建立路线。请选择其他路线点"; -"dialog_routing_download_files_carplay" = "为了规划路线,请在您的设备中下载所缺少的地图"; +"dialog_routing_download_files_carplay" = "为了创建线路,请在您的设备中下载所缺少的地图"; -"dialog_routing_system_error_carplay" = "发生了错误,请重新启动应用程序"; +"dialog_routing_system_error_carplay" = "发生了错误。请重新启动程序"; "dialog_routing_rebuild_from_current_location_carplay" = "该路线将从您的当前位置重建"; -"dialog_routing_rebuild_for_vehicle_carplay" = "路线将转换为汽车路线"; +"dialog_routing_rebuild_for_vehicle_carplay" = "该路线将改为汽车(路线)"; -"not_all_shown_bookmarks_carplay" = "未显示所有书签"; +"not_all_shown_bookmarks_carplay" = "并非所有书签都会显示"; -"switch_to_phone_bookmarks_carplay" = "切换到手机以查看所有书签"; +"switch_to_phone_bookmarks_carplay" = "切换到手机查看所有书签"; "ok" = "好的"; -"speedcams_alert_title_carplay_1" = "限速拍照"; +"speedcams_alert_title_carplay_1" = "摄像头"; -"speedcams_alert_title_carplay_2" = "超速警告"; +"speedcams_alert_title_carplay_2" = "摄像头信息"; -"download_map_carplay" = "将 Organic Maps 应用程序中的地图下载至个人设备中"; +"download_map_carplay" = "将Organic Maps软件中的地图下载至个人设备中"; -"carplay_roundabout_exit" = "第 %@ 个出口"; +"carplay_roundabout_exit" = "%@号坡道"; /* max. 10 symbols, both iOS and Android */ -"sort" = "排序…"; +"sort" = "分类……"; /* iOS */ "sort_default" = "默认排序"; @@ -1159,13 +1154,13 @@ "week_ago_sorttype" = "一周前"; -"month_ago_sorttype" = "一个月前"; +"month_ago_sorttype" = "一月前"; "moremonth_ago_sorttype" = "一个多月前"; "moreyear_ago_sorttype" = "一年多以前"; -"near_me_sorttype" = "在我附近"; +"near_me_sorttype" = "在我旁边"; "others_sorttype" = "其他"; @@ -1174,7 +1169,7 @@ "food_places" = "美食"; -"tourist_places" = "旅游景点"; +"tourist_places" = "名胜"; "museums" = "博物馆"; @@ -1182,7 +1177,7 @@ "swim_places" = "游泳"; -"mountains" = "山峰"; +"mountains" = "山"; "animals" = "动物"; @@ -1202,11 +1197,11 @@ "search_in_the_list" = "在列表中搜索"; -"religious_places" = "宗教场所"; +"religious_places" = "圣地"; "transit_not_found" = "本区域的地铁导航目前不可用"; -"dialog_pedestrian_route_is_long_header" = "未找到地铁路线图"; +"dialog_pedestrian_route_is_long_header" = "地铁路线图未找到"; "dialog_pedestrian_route_is_long_message" = "选择地铁站附近的起点和终点"; @@ -1234,13 +1229,13 @@ "elevation_profile_difficulty" = "难度"; -"elevation_profile_time" = "时间:"; +"elevation_profile_time" = "在路上:"; "isolines_toast_zooms_1_10" = "放大地图以查看等高线"; "downloader_updating_ios" = "更新"; -"downloader_loading_ios" = "正在下载"; +"downloader_loading_ios" = "加载"; /* Autoupdate dialog on start */ "whats_new_auto_update_title" = "更新已下载的地图"; @@ -1264,7 +1259,7 @@ "move" = "移动"; /* edit track screen title */ -"track_title" = "轨迹"; +"track_title" = "追踪"; /* Telegram group url for the "?" About page */ "telegram_url" = "https://t.me/OrganicMapsApp"; @@ -1282,7 +1277,7 @@ "app_tip_00" = "感谢您使用我们社区构建的地图!"; /* App tip #01 */ -"app_tip_01" = "有了您的捐赠和支持,我们可以创造世界上最好的地图!"; +"app_tip_01" = "有了您的捐赠和支持,我们可以创建世界上最好的地图!"; /* App tip #02 */ "app_tip_02" = "您喜欢我们的应用程序吗?请捐款以支持发展!还不喜欢吗?请告诉我们,我们会修复您提到的问题!"; @@ -1324,33 +1319,33 @@ "button_layer_outdoor" = "徒步旅行"; /* Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks */ -"bookmarks_export" = "导出所有书签和轨迹"; +"bookmarks_export" = "导出所有书签和曲目"; /* Text for the editing the Track's color button. */ -"change_color" = "更改颜色"; +"change_color" = "改变颜色"; /* Main screen title "Map" displayed in the navigation back button's menu. */ "map" = "地图"; -"drive_through" = "面下车通道"; +"drive_through" = "驾车通过"; /* Restaurant or other food place's menu URL field in the Editor */ "website_menu" = "菜单链接"; /* Message for the bug report alert. */ -"bugreport_alert_message" = "您想向开发人员发送错误报告吗?\n由于 Organic Maps 不会自动收集任何错误信息,因此我们只能依靠我们的用户。感谢您对 Organic Maps 的支持!"; +"bugreport_alert_message" = "您想向开发人员发送错误报告吗?\n由于有机地图不会自动收集任何错误信息,因此我们只能依靠我们的用户。感谢您对有机地图的支持!"; /* Title for the "Enable iCloud Syncronization" alert. */ "enable_icloud_synchronization_title" = "启用 iCloud 同步"; /* Message for the "Enable iCloud Syncronization" alert. */ -"enable_icloud_synchronization_message" = "iCloud 同步是一项正在开发的实验性功能。请确保备份了所有书签和轨迹。"; +"enable_icloud_synchronization_message" = "iCloud 同步是一项正在开发的实验性功能。请确保备份了所有书签和曲目。"; /* Title for the "iCloud is Disabled" alert. */ "icloud_disabled_title" = "iCloud 已禁用"; /* Message for the "iCloud is Disabled" alert. */ -"icloud_disabled_message" = "请在您的设备设置中启用 iCloud,以使用此功能。"; +"icloud_disabled_message" = "请在设备设置中启用 iCloud,以使用此功能。"; /* Title for the "Enable iCloud Syncronization" alert's "Enable" action button. */ "enable" = "启用"; @@ -1362,10 +1357,10 @@ "icloud_synchronization_error_alert_title" = "iCloud 同步失败"; /* iCloud error message: Failed to synchronize due to connection error */ -"icloud_synchronization_error_connection_error" = "错误:由于连接错误,导致同步失败"; +"icloud_synchronization_error_connection_error" = "错误:由于连接错误,同步失败"; /* iCloud error message: Failed to synchronize due to iCloud quota exceeded */ -"icloud_synchronization_error_quota_exceeded" = "错误:由于超过 iCloud 配额,导致同步失败"; +"icloud_synchronization_error_quota_exceeded" = "错误:由于超过 iCloud 配额,同步失败"; /* iCloud error message: iCloud is not available */ "icloud_synchronization_error_cloud_is_unavailable" = "错误:iCloud 不可用"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "在另一个应用程序中打开"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "室外座位"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "拍卖会"; "type.shop.collector" = "收藏品"; - -"type.self_service.yes" = "提供自助服务"; - -"type.self_service.only" = "仅限自助服务"; - -"type.self_service.partially" = "部分自助服务"; - -"type.self_service.no" = "无自助服务"; diff --git a/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.stringsdict b/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.stringsdict index 20c8ecb0fd..6e23d3d8b3 100644 --- a/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.stringsdict +++ b/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.stringsdict @@ -35,7 +35,7 @@ NSStringFormatValueTypeKey d other - 找到 %d 个文件,转换后您才能看到它们。 + 找到%d个文件。 转换后你会看到它。 @@ -50,7 +50,7 @@ NSStringFormatValueTypeKey d other - %d 个轨迹 + %d 跟踪 diff --git a/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings index 35fb15d5b5..faceb05101 100644 --- a/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings @@ -18,7 +18,7 @@ "download_maps" = "下載地圖"; /* Settings/Downloader - info for country which started downloading */ -"downloading" = "正在下載…"; +"downloading" = "下載中…"; /* Choose measurement on first launch alert - choose metric system button */ "kilometres" = "公里"; @@ -33,7 +33,7 @@ "core_my_position" = "我的位置"; /* Update maps later button text */ -"later" = "以後再說"; +"later" = "稍後"; /* View and button titles for accessibility, please also edit it in iphone/plist.txt */ "search" = "搜尋"; @@ -54,13 +54,13 @@ "about_headline" = "對每個人都免費,用愛製成"; /* Text in About screen */ -"about_proposition_1" = "• 沒有廣告,不會跟踪您,更不會收集您的數據"; +"about_proposition_1" = "•沒有廣告,不會跟踪您,更不會收集您的數據"; /* Text in About screen */ -"about_proposition_2" = "• 無需耗費太多電量,可離線工作"; +"about_proposition_2" = "• 無電池消耗,離線工作"; /* Text in About screen */ -"about_proposition_3" = "• 快速且簡約,由社區開發"; +"about_proposition_3" = "• 快速、簡約、由社區開發"; "close" = "關閉"; @@ -70,13 +70,13 @@ "continue_download" = "繼續"; /* "Add new bookmark list" dialog title */ -"add_new_set" = "新增新的書籤列表"; +"add_new_set" = "新增收藏夾"; /* Add Bookmark list dialog - hint when the list name is empty */ -"bookmark_set_name" = "書籤列表名稱"; +"bookmark_set_name" = "收藏夾名稱"; /* "Bookmark Lists" dialog title */ -"bookmark_sets" = "書籤列表"; +"bookmark_sets" = "收藏夾"; /* Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. */ "bookmarks" = "書籤"; @@ -103,10 +103,10 @@ "category_eat" = "在哪兒吃"; /* Search category for grocery stores; any changes should be duplicated in categories.txt @category_food! */ -"category_food" = "食品"; +"category_food" = "食物"; /* Search category for public transport; any changes should be duplicated in categories.txt @category_transport! */ -"category_transport" = "交通"; +"category_transport" = "運輸"; /* Search category for fuel stations; any changes should be duplicated in categories.txt @category_fuel! */ "category_fuel" = "加油站"; @@ -118,7 +118,7 @@ "category_shopping" = "購物"; /* Search category for second_hand/charity/antique/auction shops; any changes should be duplicated in categories.txt @category_secondhand! */ -"category_secondhand" = "二手貨"; +"category_secondhand" = "二手"; /* Search category for places to stay; any changes should be duplicated in categories.txt @category_hotel! */ "category_hotel" = "旅館"; @@ -130,7 +130,7 @@ "category_entertainment" = "娛樂"; /* Search category for ATMs; any changes should be duplicated in categories.txt @category_atm! */ -"category_atm" = "自動提款機"; +"category_atm" = "自動櫃員機"; /* Search category for nightclubs/bars; any changes should be duplicated in categories.txt @category_nightlife! */ "category_nightlife" = "夜生活"; @@ -166,7 +166,7 @@ "category_water" = "水"; /* Search category for RV facilities; any changes should be duplicated in categories.txt @category_rv! */ -"category_rv" = "露營車設施"; +"category_rv" = "房車用"; /********** Other translations **********/ @@ -177,22 +177,19 @@ "load_kmz_title" = "正在載入書籤…"; /* Kmz file successful loading */ -"load_kmz_successful" = "書籤載入成功! 您可以在地圖或書籤管理畫面中找到它們。"; +"load_kmz_successful" = "書籤上傳成功! 您可以在地圖上或是書籤管理畫面中找到書籤。"; /* Kml file loading failed */ -"load_kmz_failed" = "書籤載入失敗,檔案可能已損壞或不完整。"; +"load_kmz_failed" = "書籤上傳失敗。 檔案可能有毀損或是不完全。"; /* resource for context menu */ "edit" = "編輯"; -/* Warning message when doing search around current position */ -"unknown_current_position" = "您的位置尚未定位完成"; - /* Subject for emailed bookmark */ -"bookmark_share_email_subject" = "嘿,看看我在 Organic Maps 上標記的圖釘吧!"; +"bookmark_share_email_subject" = "嘿,看看我在 Organic Maps 地圖上的圖釘!"; /* Subject for emailed position */ -"my_position_share_email_subject" = "嗨,到 Organic Maps 查看我目前的位置!"; +"my_position_share_email_subject" = "嗨,到 Organic Maps 地圖查看我的目前位置!"; /* Share by email button text, also used in editor and About. */ "email" = "電子郵件"; @@ -201,7 +198,7 @@ "copied_to_clipboard" = "已複製到剪貼簿:%@"; /* place preview title */ -"info" = "資訊"; +"info" = "簡介"; /* Used for bookmark editing */ "done" = "完成"; @@ -215,8 +212,6 @@ /* Length of track in cell that describes route */ "length" = "長度"; -"share_my_location" = "分享我的位置"; - "prefs_group_route" = "導航"; "pref_zoom_title" = "縮放按鈕"; @@ -246,7 +241,7 @@ "pref_map_3d_buildings_title" = "3D 建築"; /* A message in Settings/Preferences explaining why is it not possible to enable 3D buildings when max power saving mode is enabled */ -"pref_map_3d_buildings_disabled_summary" = "3D 建築在省電模式下處於關閉狀態"; +"pref_map_3d_buildings_disabled_summary" = "3D 建築在省電模式下關閉"; /* Settings «Route» category: «Tts enabled» title */ "pref_tts_enable_title" = "語音指示"; @@ -261,7 +256,7 @@ "pref_tts_language_title" = "語音語言"; /* Settings «Route» category: «Test Voice Directions» title */ -"pref_tts_test_voice_title" = "測試語音指令(TTS,文本轉語音系統)"; +"pref_tts_test_voice_title" = "測試語音指令(TTS、文本轉語音"; /* Title for "Other" section in TTS settings. */ "pref_tts_other_section_title" = "其他"; @@ -273,17 +268,17 @@ "duration_disabled" = "關閉"; -"duration_1_hour" = "1 小時"; +"duration_1_hour" = "1小時"; -"duration_2_hours" = "2 小時"; +"duration_2_hours" = "2小時"; -"duration_6_hours" = "6 小時"; +"duration_6_hours" = "6小時"; -"duration_12_hours" = "12 小時"; +"duration_12_hours" = "12小時"; -"duration_1_day" = "1 天"; +"duration_1_day" = "1天"; -"recent_track_help_text" = "記錄並顯示您在指定時間段內的旅行軌跡。請注意:這會顯著增加電池消耗。"; +"recent_track_help_text" = "它可讓您記錄特定期間所行經的路徑,並在地圖上看到該路徑。請注意:啟用此項功能會增加電池使用量。在時間間隔過期後,會從地圖中自動移除行進路線。"; "placepage_distance" = "距离"; @@ -320,7 +315,7 @@ "donate" = "捐助我們"; /* Tex label above the Donate button */ -"donate_description" = "捐助,以共同打造最好的地圖!"; +"donate_description" = "捐款共同打造最好的地圖!"; /* Button in the main Help dialog */ "copyright" = "版權"; @@ -332,22 +327,22 @@ "report_incorrect_map_bug" = "報告或修復不正確的地圖數據"; /* Button in the About screen */ -"volunteer" = "志願者"; +"volunteer" = "志工服務"; /* "Social media" section header in the About screen */ "follow_us" = "關注並聯絡我們:"; /* Alert text */ -"email_error_body" = "電子郵件客戶端未設定。請配置電子郵件客戶端或通過 %@ 聯絡我們。"; +"email_error_body" = "電子郵件客戶端尚未建立。請設定或使用任何其他方式與我們聯絡%@"; /* Alert title */ -"email_error_title" = "電子郵件發送失敗"; +"email_error_title" = "電子郵件發送錯誤"; /* Settings item title */ "pref_calibration_title" = "指南針校準"; /* Toast text when user hides UI with a long tap anywhere on the map */ -"long_tap_toast" = "再次長按地圖即可查看介面"; +"long_tap_toast" = "再次長按地圖即可看到介面"; /* Update all button text */ "downloader_update_all_button" = "更新全部"; @@ -359,7 +354,7 @@ "downloader_available_maps" = "可用"; /* Country queued for download */ -"downloader_queued" = "已加入到下載隊列"; +"downloader_queued" = "已加入下載隊列"; "downloader_near_me_subtitle" = "在我附近"; @@ -379,10 +374,10 @@ "downloader_status_failed" = "失敗"; /* Displayed in a dialog that appears when a user tries to delete a map while the app is in the follow route mode */ -"downloader_delete_map_while_routing_dialog" = "要刪除地圖,請停止導航。"; +"downloader_delete_map_while_routing_dialog" = "如欲刪除地圖,請停止導航。"; /* PointsInDifferentMWM */ -"routing_failed_cross_mwm_building" = "路線只能完全處在同一地圖裡時才能被規劃。"; +"routing_failed_cross_mwm_building" = "路程只能完全處在同一地圖裡時才能被建立。"; /* Context menu item for downloader. */ "downloader_download_map" = "下載地圖"; @@ -394,10 +389,10 @@ "downloader_delete_map" = "刪除地圖"; /* Text for routing error dialog */ -"routing_download_maps_along" = "下載路線上的所有地圖"; +"routing_download_maps_along" = "下載沿線地圖"; /* Text for routing error dialog */ -"routing_requires_all_map" = "規劃路線需要下載並更新好所有從您的位置到目的地的地圖。"; +"routing_requires_all_map" = "建立路線需要下載並更新好所有從您的位置到目的地的地圖。"; /* bookmark button text */ "bookmark" = "書籤"; @@ -422,7 +417,7 @@ "purple" = "紫色"; /* orange color */ -"orange" = "橙色"; +"orange" = "橘色"; /* brown color */ "brown" = "棕色"; @@ -446,7 +441,7 @@ "lime" = "青檸"; /* deep orange color */ -"deep_orange" = "深橙色"; +"deep_orange" = "深橘色"; /* gray color */ "gray" = "灰色"; @@ -459,59 +454,59 @@ "dialog_routing_disclaimer_title" = "依照路線行進時,請牢記:"; -"dialog_routing_disclaimer_priority" = "— 路況、交通法規和路標始終優先於導航建議;"; +"dialog_routing_disclaimer_priority" = "— 路況、交通規則及號誌優先於導航意見;"; -"dialog_routing_disclaimer_precision" = "— 地圖可能不準確,建議的路線可能並非總是前往目的地的最佳路線;"; +"dialog_routing_disclaimer_precision" = "— 地圖可能不準確,建議的路線不盡然是最佳選擇;"; -"dialog_routing_disclaimer_recommendations" = "— 建議的路線僅作為推薦路線供您參考;"; +"dialog_routing_disclaimer_recommendations" = "— 建議的路線僅供推薦參考;"; -"dialog_routing_disclaimer_borders" = "— 小心對待國界區的路線:我們的應用程式建立的路線有時會在未經授權的地方跨越國界;"; +"dialog_routing_disclaimer_borders" = "— 小心對待國界區的路線:我們應用程式建立的路線有時會在未經授權的地方跨越國界;"; -"dialog_routing_disclaimer_beware" = "上路時請當心,祝您一路平安!"; +"dialog_routing_disclaimer_beware" = "請保持警戒,一路平安!"; -"dialog_routing_check_gps" = "檢查 GPS 訊號"; +"dialog_routing_check_gps" = "查看 GPS 訊號"; -"dialog_routing_error_location_not_found" = "無法規劃路線。無法識別當前 GPS 座標。"; +"dialog_routing_error_location_not_found" = "無法產生路線。 無法定位目前 GPS 座標。"; -"dialog_routing_location_turn_wifi" = "請檢查您的 GPS 訊號。啟用無線網路將改善定位精度。"; +"dialog_routing_location_turn_wifi" = "請確認您的 GPS 訊號。啟用無線網路將提升地理位置定位準確度。"; "dialog_routing_location_turn_on" = "啟用定位服務"; -"dialog_routing_location_unknown_turn_on" = "無法定位目前 GPS 座標。請啟用定位服務以規劃路線。"; +"dialog_routing_location_unknown_turn_on" = "無法定位目前 GPS 座標。請啟用定位服務以產生路線。"; "dialog_routing_download_files" = "下載所需檔案"; -"dialog_routing_download_and_update_all" = "下載或更新沿預期路線的所有地圖,以規劃路線。"; +"dialog_routing_download_and_update_all" = "若要產生路線,請下載並更新所有地圖及沿路線的路線檔案。"; -"dialog_routing_unable_locate_route" = "無法定位路線"; +"dialog_routing_unable_locate_route" = "路線未找到"; -"dialog_routing_change_start_or_end" = "請調整您的起點或目的地。"; +"dialog_routing_change_start_or_end" = "請變更起點或最終目的地。"; -"dialog_routing_change_start" = "調整出發點"; +"dialog_routing_change_start" = "變更起點"; -"dialog_routing_start_not_determined" = "路線未規劃。無法定位起點。"; +"dialog_routing_start_not_determined" = "此路線尚未產生。無法定位起點。"; "dialog_routing_select_closer_start" = "請選擇更接近道路的起點。"; -"dialog_routing_change_end" = "調整目的地"; +"dialog_routing_change_end" = "變更目的地"; -"dialog_routing_end_not_determined" = "路線未規劃。無法定位目的地。"; +"dialog_routing_end_not_determined" = "未產生路線。無法定位目的地。"; -"dialog_routing_select_closer_end" = "請選擇更接近道路的目的地位置。"; +"dialog_routing_select_closer_end" = "請選擇更接近道路的目的地。"; -"dialog_routing_change_intermediate" = "無法定位途徑點。"; +"dialog_routing_change_intermediate" = "找不到中途休息站。"; -"dialog_routing_intermediate_not_determined" = "請調整您的途徑點。"; +"dialog_routing_intermediate_not_determined" = "請調整您的中途休息站。"; "dialog_routing_system_error" = "系統錯誤"; -"dialog_routing_application_error" = "由於應用程式出錯,因此無法規劃路線。"; +"dialog_routing_application_error" = "由於此錯誤,尚未建立路線。"; "dialog_routing_try_again" = "請再試一次"; -"dialog_routing_download_and_build_cross_route" = "您是否要下載地圖,以規劃跨越邊界的更佳路線?"; +"dialog_routing_download_and_build_cross_route" = "您是否要下載地圖,產生跨越邊界的更好路線?"; -"dialog_routing_download_cross_route" = "下載地圖,以規劃一條跨越邊界的更佳路線。"; +"dialog_routing_download_cross_route" = "若要產生跨越邊界的更理想路線,您需要下載地圖。"; /********** Strings for downloading map from search **********/ @@ -526,23 +521,23 @@ "routing_planning_error" = "路線計劃失敗"; /* Arrive routing message in navigation view */ -"routing_arrive" = "已到達 %@"; +"routing_arrive" = "抵達:%@"; /* Text for routing::RouterResultCode::FileTooOld dialog. */ -"dialog_routing_download_and_update_maps" = "要規劃路線,請下載並更新所有沿路線的地圖。"; +"dialog_routing_download_and_update_maps" = "要建立路線,請下載並更新所有沿線的地圖。"; "categories" = "類別"; -"history" = "歷史"; +"history" = "記錄"; -"search_not_found" = "很抱歉,沒有搜到任何地點。"; +"search_not_found" = "很抱歉,沒有找到任何地點。"; /* The message when user did not find anything in the search. */ -"search_not_found_query" = "下載您要搜尋的區域的地圖,或嘗試輸入附近的城鎮或村莊名稱。"; +"search_not_found_query" = "下載您要搜尋的區域或嘗試新增附近的城鎮/村莊名稱。"; "search_history_title" = "搜尋歷史紀錄"; -"search_history_text" = "查看您最近的搜尋記錄。"; +"search_history_text" = "檢視最近的搜尋。"; "clear_search" = "清除搜尋記錄"; @@ -571,9 +566,9 @@ /* Text for allday switch. */ "editor_time_allday" = "全天 (24 小時)"; -"editor_time_open" = "正在營業"; +"editor_time_open" = "開始營業時間"; -"editor_time_close" = "已歇業"; +"editor_time_close" = "結束營業時間"; "editor_time_add_closed" = "新增休息時間"; @@ -589,7 +584,7 @@ "editor_add_select_location" = "位置"; -"editor_done_dialog_1" = "您已經改變了世界地圖。請別再藏私了!告訴您的朋友們並一起來編輯地圖。"; +"editor_done_dialog_1" = "您已經改變了世界地圖。別藏私!告訴您的朋友們一起來編輯。"; "share_with_friends" = "与朋友分享"; @@ -598,12 +593,12 @@ "autodownload" = "自動下載"; /* Place Page opening hours text */ -"closed_now" = "現已關門"; +"closed_now" = "現在關門"; /* Place Page opening hours text */ "daily" = "每天"; -"twentyfour_seven" = "24/7 全天候營業"; +"twentyfour_seven" = "全天候"; "day_off_today" = "今天不營業"; @@ -621,7 +616,7 @@ "closes_at" = "Closes at %@"; -"closes_in" = "將於 %@ 後歇業"; +"closes_in" = "將於 %@ 後停業"; "closed" = "已停止營業"; @@ -631,7 +626,7 @@ "register_at_openstreetmap" = "註冊"; -"password_8_chars_min" = "密碼(至少 8 個字符)"; +"password_8_chars_min" = "密碼(最少8個字母)"; "invalid_username_or_password" = "無效的使用者名稱或密碼。"; @@ -646,7 +641,7 @@ "logout" = "登出"; /* Information text: "Last upload 11.01.2016" */ -"last_upload" = "最後上傳"; +"last_upload" = "上次上傳"; "thank_you" = "謝謝您"; @@ -687,13 +682,13 @@ "downloader_update_maps" = "更新地圖"; -"downloader_search_field_hint" = "搜尋地圖"; +"downloader_search_field_hint" = "尋找地圖"; -"migration_download_error_dialog" = "下載失敗"; +"migration_download_error_dialog" = "下載錯誤"; -"common_check_internet_connection_dialog" = "請檢查您的設定並確保您的裝置已連接至網路。"; +"common_check_internet_connection_dialog" = "請檢查您的設定並確保您的設備已連接至網路。"; -"downloader_no_space_title" = "沒有足夠的空間"; +"downloader_no_space_title" = "無足夠的空間"; "downloader_no_space_message" = "請刪除不必要的資料"; @@ -714,28 +709,28 @@ "editor_edit_place_name_hint" = "該地點的名稱"; /* The second part of the editor_edit_place_name_hint to explain that name should be entered in a local language, see https://wiki.openstreetmap.org/wiki/Key:name */ -"editor_default_language_hint" = "當地語言寫道"; +"editor_default_language_hint" = "因為它是用當地語言寫的"; "editor_edit_place_category_title" = "類別"; -"whatsnew_editor_message_1" = "新增新地點到地圖,並直接通過此應用編輯已存在的地點。"; +"whatsnew_editor_message_1" = "新增新地點到該地圖,並直接通過此應用程式編輯已存在的地點。"; -"dialog_incorrect_feature_position" = "更改位置"; +"dialog_incorrect_feature_position" = "改變位置"; -"message_invalid_feature_position" = "地點無法放置在這裡"; +"message_invalid_feature_position" = "物件無法設置在這裡"; /* Text in About and OSM Login screens. First %@ is replaced by a local, human readable date. */ -"osm_presentation" = "截至 %@ 的社群創建的 OpenStreetMap 資料。請訪問 OpenStreetMap.org 以了解有關如何編輯和更新地圖的更多信息。"; +"osm_presentation" = "截至 %@ 的社群創建的 OpenStreetMap 資料。請訪問 OpenStreetMap.org 以了解更多有關如何編輯和更新地圖的更多信息。"; "login_to_make_edits_visible" = "登入,讓其他使用者能看到您所作出的修改。"; /* Error dialog no space */ -"migration_no_space_message" = "為了下載,您需要更多的儲存空間。請刪除不必要的檔案。"; +"migration_no_space_message" = "為了下載,您需要更多的空間。請刪除不必要的資料。"; "editor_sharing_title" = "我改進了 Organic Maps 地圖"; /* Downloaded 10 **of** 20 <- it is that "of" */ -"downloader_of" = "%1$d / %2$d"; +"downloader_of" = "%1$d個/共%2$d個"; "download_over_mobile_header" = "用手機網路連線下載嗎?"; @@ -743,17 +738,17 @@ "error_enter_correct_house_number" = "輸入正確的門牌號碼"; -"editor_storey_number" = "樓層數量(最多 %d 層)"; +"editor_storey_number" = "樓層數(最大 %d)"; /* Error message in Editor when a user tries to set the number of floors for a building higher than %d floors */ -"error_enter_correct_storey_number" = "最多可編輯 %d 層的建築"; +"error_enter_correct_storey_number" = "編輯最多 %d 層的建築"; "editor_zip_code" = "郵遞區號"; "error_enter_correct_zip_code" = "輸入正確的郵遞區號"; /* Place Page title for long tap */ -"core_placepage_unknown_place" = "未知地點"; +"core_placepage_unknown_place" = "未知的位置"; "editor_other_info" = "給 OSM 社區發送標記"; @@ -763,7 +758,7 @@ "editor_more_about_osm" = "關於 OpenStreetMap 的更多資訊"; -"editor_operator" = "經營者"; +"editor_operator" = "營運者"; "downloader_no_downloaded_maps_title" = "您尚未下載任何地圖"; @@ -773,22 +768,22 @@ "current_location_unknown_error_message" = "定位到您的當前位置時出錯。請檢查您的裝置是否正常運作,然後再試一次。"; -"location_services_disabled_header" = "定位服務已被禁用"; +"location_services_disabled_header" = "地點定位被禁用"; -"location_services_disabled_message" = "啟用裝置設定中的定位服務"; +"location_services_disabled_message" = "啟用設備設置中的地理位置定位"; "location_services_disabled_1" = "1. 開啟設定"; -"location_services_disabled_2" = "2. 點擊位置"; +"location_services_disabled_2" = "2. 點一下位置"; /* iOS Dialog for the case when the location permission is not granted; you might find the exact wording for your language here: https://support.apple.com/en-us/102647 (replace 'en-us' in URL with your language/region) */ -"location_services_disabled_3" = "3. 點擊“使用 App 期間”"; +"location_services_disabled_3" = "3. 使用應用時選擇"; -"location_services_disabled_on_device_2" = "2. 點擊“隱私權”"; +"location_services_disabled_on_device_2" = "2. 選擇隱私"; -"location_services_disabled_on_device_3" = "3. 選擇“定位服務”"; +"location_services_disabled_on_device_3" = "3. 選擇定位服務"; -"location_services_disabled_on_device_4" = "4. 開啟“定位服務”"; +"location_services_disabled_on_device_4" = "4.開啟定位服務"; "location_services_disabled_on_device_additional_message" = "或繼續使用 Organic Maps,但無法定位到您目前所在的位置。"; @@ -815,13 +810,13 @@ "placepage_more_button" = "更多"; -"book_button" = "預定"; +"book_button" = "預約"; /* A referral link on the place page for some hotels */ "more_on_kayak" = "照片、評論、預訂"; /* An explanation dialog shown when clicking on more_on_kayak link. */ -"dialog_kayak_disclaimer" = "每次通過此鏈接預定所獲得的推薦獎金將用於 Organic Maps 的開發。"; +"dialog_kayak_disclaimer" = "透過此連結進行的每次預訂收到的推薦獎金將用於開發 Organic Maps。"; /* A confirmation button text in the explanation dialog that opens hotel details page on Kayak website. */ "dialog_kayak_button" = "Kayak 上的詳細資訊"; @@ -838,13 +833,13 @@ "editor_edits_sent_message" = "您的註釋將發送至 OpenStreetMap"; -"editor_comment_hint" = "備註…"; +"editor_comment_hint" = "註解…"; "editor_reset_edits_message" = "重設所有本機變更?"; "editor_reset_edits_button" = "重設"; -"editor_remove_place_message" = "移除已新增的地點?"; +"editor_remove_place_message" = "移除已新增的位置?"; "editor_remove_place_button" = "移除"; @@ -855,16 +850,16 @@ /* Phone number error message */ "error_enter_correct_phone" = "輸入正確的電話號碼"; -"error_enter_correct_web" = "請輸入有效的網址"; +"error_enter_correct_web" = "輸入有效網址"; -"error_enter_correct_email" = "請輸入有效的電子郵件"; +"error_enter_correct_email" = "輸入有效電子郵件"; "refresh" = "更新"; "placepage_add_place_button" = "將地點新增至 OpenStreetMap"; /* Displayed when saving some edits to the map to warn against publishing personal data */ -"editor_share_to_all_dialog_title" = "您想要發送給所有使用者嗎?"; +"editor_share_to_all_dialog_title" = "您想要發給所有用戶嗎?"; /* Dialog before publishing the modifications to the public map. */ "editor_share_to_all_dialog_message_1" = "確保您沒有輸入任何個人資料。"; @@ -874,14 +869,14 @@ "navigation_stop_button" = "停止"; /* iOS dialog for the case when recent track recording is on and the app comes back from background */ -"recent_track_background_dialog_title" = "禁止記錄您最近去過的路線嗎?"; +"recent_track_background_dialog_title" = "禁止記錄您最近去過的路徑?"; "off_recent_track_background_button" = "禁用"; /* For sharing via SMS and so on */ -"sharing_call_action_look" = "來看看"; +"sharing_call_action_look" = "看一看"; -"recent_track_background_dialog_message" = "Organic Maps 在後臺使用您的位置記錄您最近去過的路線。"; +"recent_track_background_dialog_message" = "Organic Maps使用背景中的地理位置記錄您最近去過的路徑。"; "general_settings" = "一般設定"; @@ -892,9 +887,9 @@ "decline" = "拒絕"; /* A noun - a button name used to show search results in list form */ -"search_in_table" = "列表"; +"search_in_table" = "清單"; -"mobile_data_dialog" = "使用手機網路顯示更多詳細資訊嗎?"; +"mobile_data_dialog" = "使用手機網路顯示詳細資訊?"; "mobile_data_option_always" = "一律使用"; @@ -905,36 +900,36 @@ "mobile_data" = "手機網路"; /* NOTE to translators: please synchronize your translation with the English one. */ -"mobile_data_description" = "要顯示地點的詳細資訊(例如照片、價格和評價),需要使用手機網絡。"; +"mobile_data_description" = "需有手機網路才能顯示相片、價格與評論等詳細資訊和地點。"; "mobile_data_option_never" = "絕不使用"; "mobile_data_option_ask" = "一律詢問"; -"traffic_update_maps_text" = "諾要顯示交通資料,必須更新地圖。"; +"traffic_update_maps_text" = "若要顯示交通資料,必須更新地圖。"; "big_font" = "增加地圖上的字體大小"; /* "traffic" as in road congestion */ -"traffic_update_app_message" = "諾要顯示交通資訊,必須更新應用。"; +"traffic_update_app_message" = "若要顯示交通資訊,必須更新 app。"; /* "traffic" as in "road congestion" */ -"traffic_data_unavailable" = "交通資訊不可用"; +"traffic_data_unavailable" = "無法使用交通資訊"; -"enable_logging" = "啟用日誌記錄"; +"enable_logging" = "啟用記錄"; "log_file_size" = "日誌檔案大小:%@"; -"transliteration_title" = "拉丁字母音譯"; +"transliteration_title" = "音譯為拉丁文"; /* Subway exits for public transport marks on the map */ "core_exit" = "退出"; /* User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". */ -"routing_add_start_point" = "請搜尋地點或點擊地圖以新增路線起點"; +"routing_add_start_point" = "請使用搜尋或點擊地圖以新增路線起點"; /* User selected the start of a route by pressing Route From. Now the destination of a route should be selected using search or by tapping on the map and then pressing "Route To". */ -"routing_add_finish_point" = "請搜尋地點或點擊地圖以新增目的地"; +"routing_add_finish_point" = "請使用搜尋或點擊地圖以新增目的地"; "planning_route_manage_route" = "管理路線"; @@ -949,52 +944,52 @@ "start_from_my_position" = "起點"; /* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's first part */ -"alert_reauth_message_ios" = "請登入 OpenStreetMap 以自動上傳您的所有地圖編輯。了解更多"; +"alert_reauth_message_ios" = "請登入 OpenStreetMap 自動上傳您所有的地圖編輯內容。了解更多"; /* For iOS message 'alert_reauth_message' should be splitted in two parts: message + link. Here's link part */ -"alert_reauth_link_text_ios" = "這裡"; +"alert_reauth_link_text_ios" = "此處"; "core_entrance" = "入口"; "error_enter_correct_name" = "請輸入正確的名稱"; -"bookmark_lists" = "列表"; +"bookmark_lists" = "清單"; /* Do not display all bookmark lists on the map */ "bookmark_lists_hide_all" = "全部隱藏"; "bookmark_lists_show_all" = "全部顯示"; -"bookmarks_create_new_group" = "創建新的列表"; +"bookmarks_create_new_group" = "創建新列表"; /* Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files */ "bookmarks_import" = "導入書籤和軌跡"; "downloader_hide_screen" = "隱藏畫面"; -"downloader_percent" = "%@ (%@ / %@)"; +"downloader_percent" = "%@ (%@,共%@)"; -"downloader_process" = "正在下載 %@…"; +"downloader_process" = "下載 %@ 中……"; -"downloader_applying" = "正在應用 %@…"; +"downloader_applying" = "應用 %@ 中……"; -"bookmarks_error_message_share_general" = "由於應用程式出錯,導致無法分享"; +"bookmarks_error_message_share_general" = "由於 app 出錯而無法分享"; -"bookmarks_error_title_share_empty" = "無法分享"; +"bookmarks_error_title_share_empty" = "分享錯誤"; -"bookmarks_error_message_share_empty" = "無法分享空列表"; +"bookmarks_error_message_share_empty" = "無法分享空的列表"; "bookmarks_error_message_empty_list_name" = "請輸入列表名稱"; -"bookmarks_error_title_list_name_already_taken" = "這個名稱已經被使用了"; +"bookmarks_error_title_list_name_already_taken" = "這個名字已經被使用了"; -"bookmarks_error_title_list_name_too_long" = "這個名稱太長了"; +"bookmarks_error_title_list_name_too_long" = "這個名字太長了"; "profile" = "OpenStreetMap 資料"; "bookmarks_detect_title" = "檢測到新文件"; -"button_convert" = "轉換"; +"button_convert" = "兌換"; "bookmarks_convert_error_title" = "錯誤"; @@ -1016,15 +1011,15 @@ "popular_place" = "受歡迎的"; -"export_file" = "導出為 KMZ"; +"export_file" = "出口KMZ"; -"export_file_gpx" = "導出為 GPX"; +"export_file_gpx" = "導出GPX"; "delete_list" = "刪除列表"; -"hide_from_map" = "從地圖上隱藏"; +"hide_from_map" = "從卡中隱藏"; -"bookmark_list_description_hint" = "增加說明(文字或 html)"; +"bookmark_list_description_hint" = "增加說明(文字或html)"; "tags_loading_error_subtitle" = "載入標籤時出錯,請重試"; @@ -1049,11 +1044,11 @@ "power_managment_setting_never" = "從不"; -"power_managment_setting_auto" = "當電量低時"; +"power_managment_setting_auto" = "自動"; "power_managment_setting_manual_max" = "最大程度省電"; -"enable_logging_warning_message" = "暫時啟用此選項,以便使用“報告問題”功能在幫助對話框中記錄並手動發送詳細的診斷日誌給我們。日誌可能包含位置資訊。"; +"enable_logging_warning_message" = "暫時啟用此選項,以便使用「回報問題」功能在幫助對話框中記錄並手動發送詳細的診斷日誌給我們。日誌可能包含位置資訊。"; "driving_options_title" = "繞行設定"; @@ -1061,7 +1056,7 @@ "avoid_tolls" = "避開收費公路"; /* Recommended length for CarPlay and Android Auto is around 25-27 characters */ -"avoid_unpaved" = "避開未鋪砌道路"; +"avoid_unpaved" = "避開未鋪設道路"; /* Recommended length for CarPlay and Android Auto is around 25-27 characters */ "avoid_ferry" = "避開渡輪"; @@ -1070,29 +1065,29 @@ "unable_to_calc_alert_title" = "無法規劃路線"; -"unable_to_calc_alert_subtitle" = "很遺憾,我們無法使用所選的繞行設定規劃路線。請更改設定,然後重試"; +"unable_to_calc_alert_subtitle" = "很遺憾,我們無法使用所選選項規劃路線。請更改設定,然後重試"; -"define_to_avoid_btn" = "選擇要避開的道路"; +"define_to_avoid_btn" = "設定繞行路徑"; "change_driving_options_btn" = "繞行設定已開啟"; "toll_road" = "收費公路"; -"unpaved_road" = "未鋪砌道路"; +"unpaved_road" = "土路"; "ferry_crossing" = "渡輪"; -"trip_start" = "出發"; +"trip_start" = "前往"; -"pick_destination" = "目的地"; +"pick_destination" = "目標"; -"follow_my_position" = "重新居中"; +"follow_my_position" = "重新設定中心點"; "search_results" = "搜尋結果"; -"then_turn" = "然後"; +"then_turn" = "接下來"; -"redirect_route_alert" = "您想重新規劃路線嗎?"; +"redirect_route_alert" = "想重建路線?"; /* A generic "Yes" button in dialogs */ "yes" = "是"; @@ -1109,45 +1104,45 @@ /* To indicate the capacity of car parkings, bicycle parkings, electric vehicle charging stations... */ "capacity" = "容量:%@"; -"trip_finished" = "您已到達目的地!"; +"trip_finished" = "您已經到達了!"; "keyboard_availability_alert" = "開車時鍵盤不可用"; -"dialog_routing_change_start_carplay" = "無法從當前位置規劃路線"; +"dialog_routing_change_start_carplay" = "無法從當前位置構建路線"; -"dialog_routing_change_end_carplay" = "無法規劃到終點的路線。請選擇其它目的地"; +"dialog_routing_change_end_carplay" = "無法建立到終點的路線。請選擇其他(路線)"; -"dialog_routing_check_gps_carplay" = "沒有 GPS 信號。請沿著空曠區域行駛"; +"dialog_routing_check_gps_carplay" = "無GPS信號。請沿著空曠區域行駛"; -"dialog_routing_unable_locate_route_carplay" = "無法規劃路線。請選擇其他路線點"; +"dialog_routing_unable_locate_route_carplay" = "無法建立路線。請選擇其他路線點"; -"dialog_routing_download_files_carplay" = "為了規劃路線,請在您的裝置中下載所缺少的地圖"; +"dialog_routing_download_files_carplay" = "爲了創建線路,請在您的設備中下載所缺少的地圖"; -"dialog_routing_system_error_carplay" = "發生了錯誤,請重新啟動應用程式"; +"dialog_routing_system_error_carplay" = "發生錯誤,請重新啟動 app"; "dialog_routing_rebuild_from_current_location_carplay" = "該路線將從您的當前位置重建"; -"dialog_routing_rebuild_for_vehicle_carplay" = "路線將轉換為汽車路線"; +"dialog_routing_rebuild_for_vehicle_carplay" = "該路線將改為汽車(路線)"; "not_all_shown_bookmarks_carplay" = "未顯示所有書籤"; -"switch_to_phone_bookmarks_carplay" = "切換到手機以查看所有書籤"; +"switch_to_phone_bookmarks_carplay" = "切換到手機查看所有書籤"; -"ok" = "好的"; +"ok" = "好"; -"speedcams_alert_title_carplay_1" = "限速拍照"; +"speedcams_alert_title_carplay_1" = "測速照相機"; "speedcams_alert_title_carplay_2" = "超速警告"; -"download_map_carplay" = "將Organic Maps 應用程式中的地圖下載至個人裝置中"; +"download_map_carplay" = "將Organic Maps app 中的地圖下載至個人設備中"; -"carplay_roundabout_exit" = "第 %@ 个出口"; +"carplay_roundabout_exit" = "%@號坡道"; /* max. 10 symbols, both iOS and Android */ -"sort" = "排序…"; +"sort" = "分類……"; /* iOS */ -"sort_default" = "默認排序"; +"sort_default" = "按預設值排序"; "sort_type" = "按類型排序"; @@ -1165,7 +1160,7 @@ "moreyear_ago_sorttype" = "一年多以前"; -"near_me_sorttype" = "在我附近"; +"near_me_sorttype" = "附近"; "others_sorttype" = "其他"; @@ -1174,7 +1169,7 @@ "food_places" = "食物"; -"tourist_places" = "旅遊景點"; +"tourist_places" = "觀光景點"; "museums" = "博物館"; @@ -1184,7 +1179,7 @@ "mountains" = "山峰"; -"animals" = "動物"; +"animals" = "動物園"; "hotels" = "旅館"; @@ -1202,7 +1197,7 @@ "search_in_the_list" = "在列表中搜尋"; -"religious_places" = "宗教場所"; +"religious_places" = "宗教聖地"; "transit_not_found" = "本區域的地鐵導航目前不可用"; @@ -1232,7 +1227,7 @@ "elevation_profile_maxaltitude" = "最大高度"; -"elevation_profile_difficulty" = "難度"; +"elevation_profile_difficulty" = "難易度"; "elevation_profile_time" = "時間:"; @@ -1240,13 +1235,13 @@ "downloader_updating_ios" = "更新"; -"downloader_loading_ios" = "正在下載"; +"downloader_loading_ios" = "載入"; /* Autoupdate dialog on start */ "whats_new_auto_update_title" = "更新已下載的地圖"; /* Autoupdate dialog on start */ -"whats_new_auto_update_message" = "更新地圖以讓對象的資訊保持在最新狀態"; +"whats_new_auto_update_message" = "更新地圖以讓物件資訊保持在最新狀態"; /* Autoupdate dialog on start */ "whats_new_auto_update_button_size" = "更新 (%@)"; @@ -1264,7 +1259,7 @@ "move" = "移動"; /* edit track screen title */ -"track_title" = "軌跡"; +"track_title" = "追踪"; /* Telegram group url for the "?" About page */ "telegram_url" = "https://t.me/OrganicMapsApp"; @@ -1282,7 +1277,7 @@ "app_tip_00" = "感謝您使用我們社區構建的地圖!"; /* App tip #01 */ -"app_tip_01" = "有了您的捐贈和支持,我們可以創造世界上最好的地圖!"; +"app_tip_01" = "有了您的捐贈和支持,我們可以創建世界上最好的地圖!"; /* App tip #02 */ "app_tip_02" = "您喜歡我們的應用程序嗎?請捐款以支持發展!還不喜歡嗎?請告訴我們,我們會修復您提到的問題!"; @@ -1315,36 +1310,36 @@ "car_used_on_the_car_screen" = "您現在正在汽車螢幕上使用 Organic Maps"; /* Displayed on the phone screen. Button to display maps on the phone screen instead of a car */ -"car_continue_on_the_phone" = "在手機上繼續"; +"car_continue_on_the_phone" = "繼續打電話"; /* Displayed on the Android Auto or CarPlay screen. Button to display maps on the car screen instead of a phone. Must be no more than 18 symbols! */ -"car_continue_in_the_car" = "轉到汽車屏幕"; +"car_continue_in_the_car" = "到車用螢幕"; /* Outdoors/hiking map style (activity) name in the Styles and Layers dialog */ -"button_layer_outdoor" = "徒步旅行"; +"button_layer_outdoor" = "遠足"; /* Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks */ -"bookmarks_export" = "匯出所有書籤和軌跡"; +"bookmarks_export" = "匯出所有書籤和曲目"; /* Text for the editing the Track's color button. */ -"change_color" = "更改顏色"; +"change_color" = "換顏色"; /* Main screen title "Map" displayed in the navigation back button's menu. */ "map" = "地圖"; -"drive_through" = "免下車通道"; +"drive_through" = "免下車服務"; /* Restaurant or other food place's menu URL field in the Editor */ "website_menu" = "選單連結"; /* Message for the bug report alert. */ -"bugreport_alert_message" = "您想向開發人員發送錯誤報告嗎?\n由於 Organic Maps 不會自動收集任何錯誤資訊,因此我們只能依靠用戶的協助。感謝您對 Organic Maps 的支持!"; +"bugreport_alert_message" = "您想向開發人員發送錯誤報告嗎?\n我們依賴我們的用戶,因為有機地圖不會自動收集任何錯誤訊息。預先感謝您對有機地圖的支持!"; /* Title for the "Enable iCloud Syncronization" alert. */ "enable_icloud_synchronization_title" = "啟用 iCloud 同步"; /* Message for the "Enable iCloud Syncronization" alert. */ -"enable_icloud_synchronization_message" = "iCloud 同步是一項正在開發中的實驗性功能。確保您已備份所有書籤和軌跡。"; +"enable_icloud_synchronization_message" = "iCloud 同步是一項正在開發中的實驗性功能。確保您已備份所有書籤和曲目。"; /* Title for the "iCloud is Disabled" alert. */ "icloud_disabled_title" = "iCloud 已停用"; @@ -1353,7 +1348,7 @@ "icloud_disabled_message" = "請在您的裝置設定中啟用 iCloud 以使用此功能。"; /* Title for the "Enable iCloud Syncronization" alert's "Enable" action button. */ -"enable" = "啟用"; +"enable" = "使能夠"; /* Title for the "Enable iCloud Syncronization" alert's "Backup" action button. */ "backup" = "备份"; @@ -1362,10 +1357,10 @@ "icloud_synchronization_error_alert_title" = "iCloud 同步失敗"; /* iCloud error message: Failed to synchronize due to connection error */ -"icloud_synchronization_error_connection_error" = "錯誤:由於連線錯誤,導致無法同步"; +"icloud_synchronization_error_connection_error" = "錯誤:由於連線錯誤而無法同步"; /* iCloud error message: Failed to synchronize due to iCloud quota exceeded */ -"icloud_synchronization_error_quota_exceeded" = "錯誤:由於超出 iCloud 配額,導致同步失敗"; +"icloud_synchronization_error_quota_exceeded" = "錯誤:由於超出 iCloud 配額而無法同步"; /* iCloud error message: iCloud is not available */ "icloud_synchronization_error_cloud_is_unavailable" = "錯誤:iCloud 不可用"; @@ -1373,9 +1368,6 @@ /* Title for the "Open In Another App" button on the PlacePage. */ "open_in_app" = "在另一個應用程式中打開"; -/* To indicate if restaurant or other place has outdoor seating */ -"outdoor_seating" = "戶外座位"; - /********** Types **********/ @@ -3988,11 +3980,3 @@ "type.shop.auction" = "拍賣"; "type.shop.collector" = "收藏品"; - -"type.self_service.yes" = "提供自助服務"; - -"type.self_service.only" = "僅限自助服務"; - -"type.self_service.partially" = "部分自助服務"; - -"type.self_service.no" = "沒有自助服務"; diff --git a/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.stringsdict b/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.stringsdict index 2e583114ac..cd908ff122 100644 --- a/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.stringsdict +++ b/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.stringsdict @@ -35,7 +35,7 @@ NSStringFormatValueTypeKey d other - 找到 %d 個文件,轉換後您才能看到它們。 + 找到%d個文件。 轉換後你會看到它。 @@ -50,7 +50,7 @@ NSStringFormatValueTypeKey d other - %d 個軌跡 + %d 軌跡 diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index 188673e516..2a0165961d 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -630,7 +630,6 @@ FA637ED329A500BE00D8921A /* drules_proto_outdoors_light.txt in Resources */ = {isa = PBXBuildFile; fileRef = FA637ECF29A500BE00D8921A /* drules_proto_outdoors_light.txt */; }; FA637ED429A500BE00D8921A /* drules_proto_outdoors_dark.txt in Resources */ = {isa = PBXBuildFile; fileRef = FA637ED029A500BE00D8921A /* drules_proto_outdoors_dark.txt */; }; FA637ED529A500BE00D8921A /* drules_proto_outdoors_dark.bin in Resources */ = {isa = PBXBuildFile; fileRef = FA637ED129A500BE00D8921A /* drules_proto_outdoors_dark.bin */; }; - FA80EB6B2C6BEB9300C5E8E5 /* 00_NotoSansHebrew-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FA80EB682C6BEB9300C5E8E5 /* 00_NotoSansHebrew-Regular.ttf */; }; FA853BA726BC3ACE0026D455 /* CoreApi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA853BA626BC3ACE0026D455 /* CoreApi.framework */; }; FA853BA926BC3B8A0026D455 /* libbase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FA853BA826BC3B8A0026D455 /* libbase.a */; }; FA853BAB26BC3B8A0026D455 /* libcoding.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FA853BAA26BC3B8A0026D455 /* libcoding.a */; }; @@ -1664,7 +1663,6 @@ FA637ED029A500BE00D8921A /* drules_proto_outdoors_dark.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = drules_proto_outdoors_dark.txt; path = ../../data/drules_proto_outdoors_dark.txt; sourceTree = ""; }; FA637ED129A500BE00D8921A /* drules_proto_outdoors_dark.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; name = drules_proto_outdoors_dark.bin; path = ../../data/drules_proto_outdoors_dark.bin; sourceTree = ""; }; FA64D9A813F975AD00350ECF /* types.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = types.txt; path = ../../data/types.txt; sourceTree = SOURCE_ROOT; }; - FA80EB682C6BEB9300C5E8E5 /* 00_NotoSansHebrew-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "00_NotoSansHebrew-Regular.ttf"; path = "../../data/00_NotoSansHebrew-Regular.ttf"; sourceTree = ""; }; FA853BA626BC3ACE0026D455 /* CoreApi.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CoreApi.framework; sourceTree = BUILT_PRODUCTS_DIR; }; FA853BA826BC3B8A0026D455 /* libbase.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libbase.a; sourceTree = BUILT_PRODUCTS_DIR; }; FA853BAA26BC3B8A0026D455 /* libcoding.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libcoding.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -3789,7 +3787,6 @@ children = ( 6B679E88266BFD090074AE2A /* 00_NotoNaskhArabic-Regular.ttf */, FAC4E60F2C1FA9FC0043979C /* 00_NotoSansBengali-Regular.ttf */, - FA80EB682C6BEB9300C5E8E5 /* 00_NotoSansHebrew-Regular.ttf */, 6B15907026623AE500944BBA /* 00_NotoSansThai-Regular.ttf */, FA45118E2A5EC15100CD8F64 /* 00_NotoSerifDevanagari-Regular.ttf */, FAC4E6092C1FA4C40043979C /* 00_NotoSansMalayalam-Regular.ttf */, @@ -4076,7 +4073,6 @@ 340E1EF21E2F614400CE49BF /* Main.storyboard in Resources */, F6E2FE521E097BA00083EBEC /* MWMActionBarButton.xib in Resources */, EDBD68072B625724005DD151 /* LocationServicesDisabledAlert.xib in Resources */, - FA80EB6B2C6BEB9300C5E8E5 /* 00_NotoSansHebrew-Regular.ttf in Resources */, 993DF0CA23F6BD0600AC231A /* ElevationDetailsViewController.xib in Resources */, F623DA6F1C9C2E62006A3436 /* MWMAddPlaceNavigationBar.xib in Resources */, 6741A9991BF340DE002C974C /* MWMAlertViewController.xib in Resources */, diff --git a/iphone/Maps/UI/BottomMenu/Menu/BottomMenuInteractor.swift b/iphone/Maps/UI/BottomMenu/Menu/BottomMenuInteractor.swift index ac05c2e465..706d66a71e 100644 --- a/iphone/Maps/UI/BottomMenu/Menu/BottomMenuInteractor.swift +++ b/iphone/Maps/UI/BottomMenu/Menu/BottomMenuInteractor.swift @@ -4,7 +4,6 @@ protocol BottomMenuInteractorProtocol: AnyObject { func downloadMaps() func donate() func openSettings() - func shareLocation(cell: BottomMenuItemCell) } @objc protocol BottomMenuDelegate { @@ -61,17 +60,4 @@ extension BottomMenuInteractor: BottomMenuInteractorProtocol { close() mapViewController?.performSegue(withIdentifier: "Map2Settings", sender: nil) } - - func shareLocation(cell: BottomMenuItemCell) { - let lastLocation = LocationManager.lastLocation() - guard let coordinates = lastLocation?.coordinate else { - let alert = UIAlertController(title: L("unknown_current_position"), message: nil, preferredStyle: .alert) - alert.addAction(UIAlertAction(title: L("ok"), style: .default, handler: nil)) - viewController?.present(alert, animated: true, completion: nil) - return; - } - guard let viewController = viewController else { return } - let vc = ActivityViewController.share(forMyPosition: coordinates) - vc.present(inParentViewController: viewController, anchorView: cell.anchorView) - } } diff --git a/iphone/Maps/UI/BottomMenu/Menu/BottomMenuPresenter.swift b/iphone/Maps/UI/BottomMenu/Menu/BottomMenuPresenter.swift index 81447c0281..6eeb9b8495 100644 --- a/iphone/Maps/UI/BottomMenu/Menu/BottomMenuPresenter.swift +++ b/iphone/Maps/UI/BottomMenu/Menu/BottomMenuPresenter.swift @@ -8,7 +8,6 @@ class BottomMenuPresenter: NSObject { case downloadMaps case donate case settings - case share } enum Sections: Int { case layers @@ -60,7 +59,7 @@ extension BottomMenuPresenter { let cell = tableView.dequeueReusableCell(cell: BottomMenuItemCell.self)! switch CellType(rawValue: correctedRow(indexPath.row))! { case .addPlace: - let enabled = MWMNavigationDashboardManager.shared().state == .hidden && FrameworkHelper.canEditMapAtViewportCenter() + let enabled = MWMNavigationDashboardManager.shared().state == .hidden && FrameworkHelper.canEditMap() cell.configure(imageName: "ic_add_place", title: L("placepage_add_place_button"), badgeCount: 0, @@ -80,11 +79,6 @@ extension BottomMenuPresenter { title: L("settings"), badgeCount: 0, enabled: true) - case .share: - cell.configure(imageName: "ic_menu_share", - title: L("share_my_location"), - badgeCount: 0, - enabled: true) } return cell } @@ -94,13 +88,6 @@ extension BottomMenuPresenter { //MARK: -- UITableDelegate extension BottomMenuPresenter { - func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { - if let cell = tableView.cellForRow(at: indexPath) as? BottomMenuItemCell { - return cell.isEnabled ? indexPath : nil - } - return indexPath - } - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { guard indexPath.section == Sections.items.rawValue else { return @@ -115,10 +102,6 @@ extension BottomMenuPresenter { interactor.donate() case .settings: interactor.openSettings() - case .share: - if let cell = tableView.cellForRow(at: indexPath) as? BottomMenuItemCell { - interactor.shareLocation(cell: cell) - } } } } diff --git a/iphone/Maps/UI/BottomMenu/Menu/Cells/BottomMenuItemCell.swift b/iphone/Maps/UI/BottomMenu/Menu/Cells/BottomMenuItemCell.swift index f490b8615f..b59332d089 100644 --- a/iphone/Maps/UI/BottomMenu/Menu/Cells/BottomMenuItemCell.swift +++ b/iphone/Maps/UI/BottomMenu/Menu/Cells/BottomMenuItemCell.swift @@ -14,7 +14,7 @@ class BottomMenuItemCell: UITableViewCell { } } - private(set) var isEnabled: Bool = true + private var isEnabled: Bool = true private var isPromo: Bool = false func configure(imageName: String, title: String, badgeCount: UInt, enabled: Bool) { diff --git a/iphone/Maps/UI/PlacePage/Components/PlacePageButtonsViewController.swift b/iphone/Maps/UI/PlacePage/Components/PlacePageButtonsViewController.swift index 94fe524a30..434f7f6fe1 100644 --- a/iphone/Maps/UI/PlacePage/Components/PlacePageButtonsViewController.swift +++ b/iphone/Maps/UI/PlacePage/Components/PlacePageButtonsViewController.swift @@ -1,13 +1,18 @@ protocol PlacePageButtonsViewControllerDelegate: AnyObject { + func didPressHotels() func didPressAddPlace() func didPressEditPlace() + func didPressAddBusiness() } class PlacePageButtonsViewController: UIViewController { +// @IBOutlet var bookingButton: UIButton! @IBOutlet var addPlaceButton: UIButton! @IBOutlet var editPlaceButton: UIButton! +// @IBOutlet var addBusinessButton: UIButton! private var buttons: [UIButton?] { +// [bookingButton, addPlaceButton, editPlaceButton, addBusinessButton] [addPlaceButton, editPlaceButton] } @@ -25,11 +30,18 @@ class PlacePageButtonsViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() +// bookingButton.isHidden = !buttonsData.showHotelDescription addPlaceButton.isHidden = !buttonsData.showAddPlace editPlaceButton.isHidden = !buttonsData.showEditPlace +// addBusinessButton.isHidden = !buttonsData.showAddBusiness - addPlaceButton.isEnabled = buttonsData.enableAddPlace - editPlaceButton.isEnabled = buttonsData.enableEditPlace + buttons.forEach { + $0?.isEnabled = buttonsEnabled + } + } + + @IBAction func onBooking(_ sender: UIButton) { + delegate?.didPressHotels() } @IBAction func onAddPlace(_ sender: UIButton) { @@ -39,4 +51,8 @@ class PlacePageButtonsViewController: UIViewController { @IBAction func onEditPlace(_ sender: UIButton) { delegate?.didPressEditPlace() } + + @IBAction func onAddBusiness(_ sender: UIButton) { + delegate?.didPressAddBusiness() + } } diff --git a/iphone/Maps/UI/PlacePage/Components/PlacePageInfoViewController.swift b/iphone/Maps/UI/PlacePage/Components/PlacePageInfoViewController.swift index 3481eb7c55..a0fdddd9aa 100644 --- a/iphone/Maps/UI/PlacePage/Components/PlacePageInfoViewController.swift +++ b/iphone/Maps/UI/PlacePage/Components/PlacePageInfoViewController.swift @@ -127,8 +127,6 @@ class PlacePageInfoViewController: UIViewController { private var openWithAppView: InfoItemViewController? private var capacityView: InfoItemViewController? private var wheelchairView: InfoItemViewController? - private var selfServiceView: InfoItemViewController? - private var outdoorSeatingView: InfoItemViewController? private var driveThroughView: InfoItemViewController? var placePageInfoData: PlacePageInfoData! @@ -253,14 +251,6 @@ class PlacePageInfoViewController: UIViewController { wheelchairView = createInfoItem(wheelchair, icon: UIImage(named: "ic_placepage_wheelchair")) } - if let selfService = placePageInfoData.selfService { - selfServiceView = createInfoItem(selfService, icon: UIImage(named: "ic_placepage_self_service")) - } - - if let outdoorSeating = placePageInfoData.outdoorSeating { - outdoorSeatingView = createInfoItem(outdoorSeating, icon: UIImage(named: "ic_placepage_outdoor_seating")) - } - if let driveThrough = placePageInfoData.driveThrough { driveThroughView = createInfoItem(driveThrough, icon: UIImage(named: "ic_placepage_drive_through")) } diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageCommonLayout.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageCommonLayout.swift index f15f7f85d1..9f230375bd 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageCommonLayout.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/Layouts/PlacePageCommonLayout.swift @@ -70,6 +70,7 @@ class PlacePageCommonLayout: NSObject, IPlacePageLayout { lazy var buttonsViewController: PlacePageButtonsViewController = { let vc = storyboard.instantiateViewController(ofType: PlacePageButtonsViewController.self) vc.buttonsData = placePageData.buttonsData! + vc.buttonsEnabled = placePageData.mapNodeAttributes?.nodeStatus == .onDisk vc.delegate = interactor return vc } () diff --git a/kml/CMakeLists.txt b/kml/CMakeLists.txt index d1f5112d36..4bfa286a58 100644 --- a/kml/CMakeLists.txt +++ b/kml/CMakeLists.txt @@ -22,6 +22,7 @@ set(SRC types_v8.hpp types_v8mm.hpp types_v9.hpp + types_v9mm.hpp visitors.hpp ) diff --git a/kml/header_binary.hpp b/kml/header_binary.hpp index 51a1e79ee7..cc00eab3f9 100644 --- a/kml/header_binary.hpp +++ b/kml/header_binary.hpp @@ -1,8 +1,6 @@ #pragma once -#include "coding/reader.hpp" #include "coding/serdes_binary_header.hpp" -#include "coding/write_to_sink.hpp" #include @@ -26,11 +24,19 @@ enum class Version : uint8_t // tags to kml V9 = 9, // 01 October 2020: add minZoom to bookmarks Latest = V9, - V8MM = 10 // 27 July 2023: MapsMe release version v15.0.71617. Technically it's version is 8 - // (first byte is 0x08), but it's not compatible with V8 from this repo. It has - // no compilations. + V8MM = 10, // 27 July 2023: MapsMe released version v15.0.71617. Technically its version is 8 + // (first byte is 0x08), but it's not compatible with V8 from this repo. It has + // no compilations. + V9MM = 11 // In July 2024 MapsMe released version with a new KMB format. Technically its version is 9 + // (first byte is 0x09), but it's not compatible with OrganicMaps V9 from this repo. + // It supports multiline geometry. }; +inline std::string DebugPrint(Version v) +{ + return ::DebugPrint(static_cast(v)); +} + struct Header { template diff --git a/kml/kml_tests/serdes_tests.cpp b/kml/kml_tests/serdes_tests.cpp index ea1939d462..f61c439119 100644 --- a/kml/kml_tests/serdes_tests.cpp +++ b/kml/kml_tests/serdes_tests.cpp @@ -7,6 +7,8 @@ #include "indexer/classificator_loader.hpp" +#include "platform/platform.hpp" + #include "coding/file_reader.hpp" #include "coding/file_writer.hpp" #include "coding/hex.hpp" @@ -19,7 +21,6 @@ #include #include -#include #include #include @@ -849,8 +850,8 @@ UNIT_TEST(Kml_Deserialization_From_Bin_V8_And_V8MM) TEST(false, ("Exception raised", exc.what())); } - // Can't compare dataFromBinV8.m_categoryData and dataFromBinV8MM.m_categoryData directly - // because new format has less properties and different m_id. Compare some properties here: +// Can't compare dataFromBinV8.m_categoryData and dataFromBinV8MM.m_categoryData directly +// because new format has less properties and different m_id. Compare some properties here: TEST_EQUAL(dataFromBinV8.m_categoryData.m_name, dataFromBinV8MM.m_categoryData.m_name, ()); TEST_EQUAL(dataFromBinV8.m_categoryData.m_description, dataFromBinV8MM.m_categoryData.m_description, ()); TEST_EQUAL(dataFromBinV8.m_categoryData.m_annotation, dataFromBinV8MM.m_categoryData.m_annotation, ()); @@ -865,6 +866,79 @@ UNIT_TEST(Kml_Deserialization_From_Bin_V8_And_V8MM) TEST_EQUAL(dataFromBinV8.m_tracksData, dataFromBinV8MM.m_tracksData, ()); } +UNIT_TEST(Kml_Deserialization_From_KMB_V8_And_V9MM) +{ + kml::FileData dataFromBinV8; + try + { + MemReader reader(kBinKmlV8.data(), kBinKmlV8.size()); + kml::binary::DeserializerKml des(dataFromBinV8); + des.Deserialize(reader); + } + catch (kml::binary::DeserializerKml::DeserializeException const & exc) + { + TEST(false, ("Failed to deserialize data from KMB V8 and V9MM", exc.what())); + } + + kml::FileData dataFromBinV9MM; + try + { + MemReader reader(kBinKmlV9MM.data(), kBinKmlV9MM.size()); + kml::binary::DeserializerKml des(dataFromBinV9MM); + des.Deserialize(reader); + } + catch (kml::binary::DeserializerKml::DeserializeException const & exc) + { + TEST(false, ("Failed to deserialize data from KMB V9MM", exc.what())); + } + + // Can't compare dataFromBinV8.m_categoryData and dataFromBinV9MM.m_categoryData directly + // because new format has less properties and different m_id. Compare some properties here: + TEST_EQUAL(dataFromBinV8.m_categoryData.m_name, dataFromBinV9MM.m_categoryData.m_name, ()); + TEST_EQUAL(dataFromBinV8.m_categoryData.m_description, dataFromBinV9MM.m_categoryData.m_description, ()); + TEST_EQUAL(dataFromBinV8.m_categoryData.m_annotation, dataFromBinV9MM.m_categoryData.m_annotation, ()); + TEST_EQUAL(dataFromBinV8.m_categoryData.m_accessRules, dataFromBinV9MM.m_categoryData.m_accessRules, ()); + TEST_EQUAL(dataFromBinV8.m_categoryData.m_visible, dataFromBinV9MM.m_categoryData.m_visible, ()); + TEST_EQUAL(dataFromBinV8.m_categoryData.m_rating, dataFromBinV9MM.m_categoryData.m_rating, ()); + TEST_EQUAL(dataFromBinV8.m_categoryData.m_reviewsNumber, dataFromBinV9MM.m_categoryData.m_reviewsNumber, ()); + TEST_EQUAL(dataFromBinV8.m_categoryData.m_tags, dataFromBinV9MM.m_categoryData.m_tags, ()); + TEST_EQUAL(dataFromBinV8.m_categoryData.m_properties, dataFromBinV9MM.m_categoryData.m_properties, ()); + + dataFromBinV8.m_bookmarksData[0].m_id = dataFromBinV9MM.m_bookmarksData[0].m_id; // V8 and V9MM bookmarks have different IDs. Fix ID value manually. + TEST_EQUAL(dataFromBinV8.m_bookmarksData, dataFromBinV9MM.m_bookmarksData, ()); + + dataFromBinV8.m_tracksData[0].m_id = dataFromBinV9MM.m_tracksData[0].m_id; // V8 and V9MM tracks have different IDs. Fix ID value manually. + TEST_EQUAL(dataFromBinV8.m_tracksData, dataFromBinV9MM.m_tracksData, ()); +} + +UNIT_TEST(Kml_Deserialization_From_KMB_V9MM_With_MultiGeometry) +{ + kml::FileData dataFromBinV9MM; + try + { + MemReader reader(kBinKmlMultiGeometryV9MM.data(), kBinKmlMultiGeometryV9MM.size()); + kml::binary::DeserializerKml des(dataFromBinV9MM); + des.Deserialize(reader); + } + catch (kml::binary::DeserializerKml::DeserializeException const & exc) + { + TEST(false, ("Failed to deserialize data from KMB V9MM", exc.what())); + } + + TEST_EQUAL(dataFromBinV9MM.m_tracksData.size(), 1, ()); + + // Verify that geometry has two lines + auto lines = dataFromBinV9MM.m_tracksData[0].m_geometry.m_lines; + TEST_EQUAL(lines.size(), 2, ()); + + // Verify that each line has 3 points + auto line1 = lines[0]; + auto line2 = lines[1]; + + TEST_EQUAL(line1.size(), 3, ()); + TEST_EQUAL(line2.size(), 3, ()); +} + UNIT_TEST(Kml_Ver_2_3) { std::string_view constexpr data = R"( diff --git a/kml/kml_tests/tests_data.hpp b/kml/kml_tests/tests_data.hpp index 270d1c7372..0b5f0d848f 100644 --- a/kml/kml_tests/tests_data.hpp +++ b/kml/kml_tests/tests_data.hpp @@ -1644,3 +1644,90 @@ std::vector const kBinKmlV8MM = { 0x76, 0xb6, 0x17, 0x26, 0x46, 0x2f, 0x4c, 0xa2, 0x32, 0x03, 0x73, 0x28, 0x03, 0x8d, 0x3a, 0x5e, 0x98, 0x00, 0x01, 0x00, 0x29 }; + +// kBinKmlV9MM contains the same bookmarks and tracks as kBinKmlV8 +std::vector const kBinKmlV9MM = { + 0x09, 0x26, 0x41, 0x3a, 0x33, 0x39, 0x37, 0x33, 0x65, 0x66, 0x34, 0x64, 0x2d, 0x66, 0x35, 0x31, + 0x65, 0x2d, 0x34, 0x61, 0x37, 0x31, 0x2d, 0x38, 0x65, 0x64, 0x34, 0x2d, 0x64, 0x65, 0x61, 0x33, + 0x63, 0x31, 0x39, 0x30, 0x64, 0x61, 0x63, 0x35, 0x00, 0x1e, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xea, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x8e, 0x85, 0xd7, 0xc7, 0x03, + 0x37, 0x02, 0x00, 0x00, 0xeb, 0x8c, 0x98, 0xfd, 0x94, 0x32, 0x01, 0x03, 0x01, 0x02, 0x08, 0x09, + 0x02, 0x00, 0x02, 0x08, 0x01, 0x02, 0x00, 0x04, 0x01, 0x03, 0x02, 0x00, 0x06, 0x08, 0x05, 0x01, + 0x00, 0x07, 0x01, 0x00, 0x08, 0x01, 0x00, 0x09, 0x03, 0x00, 0x0a, 0x01, 0x0b, 0x02, 0x0c, 0x02, + 0x00, 0x0d, 0x01, 0x0e, 0x04, 0x00, 0x0f, 0x01, 0x10, 0x02, 0x11, 0x03, 0x12, 0x01, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xce, 0x02, 0x00, 0x00, 0xcb, 0x02, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0xea, 0x30, 0xb5, 0x9f, 0xa8, 0xc1, 0x02, 0x8c, + 0xbe, 0xf0, 0xd0, 0x02, 0x01, 0x00, 0x00, 0x05, 0x02, 0x00, 0x14, 0x08, 0x13, 0x02, 0x00, 0x16, + 0x08, 0x15, 0x02, 0x00, 0x18, 0x01, 0x17, 0x01, 0x00, 0x19, 0x04, 0x00, 0x1a, 0x01, 0x1b, 0x02, + 0x1c, 0x03, 0x1d, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xbd, 0x94, + 0xdc, 0x1e, 0x00, 0xff, 0x00, 0x00, 0xff, 0xc8, 0xc2, 0xeb, 0x23, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xa0, 0xf7, 0x36, 0x01, 0x03, 0xea, 0xbe, 0xd0, 0x82, 0x05, 0x98, 0xfc, 0xe0, 0xa1, 0x05, 0x85, + 0xe5, 0xfe, 0x01, 0xad, 0xc7, 0xd6, 0x01, 0xf1, 0x98, 0x0a, 0xe2, 0xc4, 0x80, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x1e, 0x08, 0x1f, 0x02, 0x00, 0x20, 0x08, 0x21, + 0x03, 0x00, 0x22, 0x01, 0x23, 0x02, 0x24, 0x04, 0x00, 0x25, 0x01, 0x26, 0x02, 0x27, 0x03, 0x28, + 0x4e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x0d, 0x0f, 0x0f, 0x21, 0x10, 0x19, + 0x07, 0x05, 0x09, 0x03, 0x09, 0x05, 0x05, 0x09, 0x06, 0x09, 0x06, 0x1b, 0x0d, 0x2c, 0x19, 0x11, + 0x20, 0x05, 0x0c, 0x06, 0x0c, 0x06, 0x0a, 0x19, 0x16, 0x2c, 0x05, 0x05, 0x05, 0x0c, 0x06, 0x0c, + 0x06, 0xce, 0x03, 0x51, 0x00, 0x01, 0x00, 0x01, 0x04, 0x01, 0x03, 0x05, 0x03, 0x05, 0x08, 0x23, + 0x07, 0x07, 0x04, 0x09, 0x06, 0x02, 0x0b, 0x05, 0x08, 0x0d, 0x07, 0x78, 0x0f, 0x06, 0x0d, 0x13, + 0x06, 0x05, 0x15, 0x08, 0x42, 0x17, 0x07, 0x0c, 0x19, 0x06, 0x06, 0x1b, 0x06, 0x12, 0x1d, 0x08, + 0x8d, 0x01, 0x1f, 0x07, 0x11, 0x25, 0x09, 0x39, 0x27, 0x07, 0x1a, 0x29, 0x07, 0x07, 0x2d, 0x08, + 0x7d, 0x2f, 0x07, 0x0f, 0x33, 0x06, 0x0a, 0x35, 0x09, 0x6d, 0x37, 0x08, 0x17, 0x39, 0x06, 0x09, + 0x3b, 0x06, 0x14, 0x3d, 0x08, 0xb9, 0x01, 0x3f, 0x07, 0x16, 0x45, 0x08, 0x28, 0x47, 0x07, 0x0b, + 0x4d, 0x08, 0x7b, 0x55, 0x08, 0x45, 0x57, 0x07, 0x0e, 0x5d, 0x09, 0xaa, 0x01, 0x5f, 0x09, 0x13, + 0x65, 0x08, 0x40, 0x67, 0x07, 0x1b, 0x69, 0x08, 0xc1, 0x01, 0x6d, 0x08, 0x7f, 0x6f, 0x07, 0x10, + 0x75, 0x09, 0x75, 0x77, 0x08, 0x1d, 0x7d, 0x08, 0xbb, 0x01, 0x7f, 0x07, 0x18, 0x85, 0x01, 0x09, + 0x25, 0x95, 0x01, 0x09, 0x44, 0x9d, 0x01, 0x09, 0x98, 0x01, 0xa5, 0x01, 0x08, 0x3f, 0xad, 0x01, + 0x08, 0x7e, 0xb5, 0x01, 0x09, 0x70, 0xb7, 0x01, 0x09, 0x19, 0xbd, 0x01, 0x09, 0xba, 0x01, 0xc5, + 0x01, 0x09, 0x2f, 0xcd, 0x01, 0x08, 0x7c, 0xd5, 0x01, 0x09, 0x68, 0xdd, 0x01, 0x09, 0xb2, 0x01, + 0xdf, 0x01, 0x08, 0xc0, 0x01, 0xe5, 0x01, 0x09, 0x41, 0xe9, 0x01, 0x08, 0xd1, 0x01, 0xed, 0x01, + 0x09, 0x8a, 0x01, 0xf5, 0x01, 0x08, 0x79, 0xf7, 0x01, 0x09, 0x21, 0xfd, 0x01, 0x09, 0xbe, 0x01, + 0xa5, 0x02, 0x09, 0x3b, 0xb5, 0x02, 0x09, 0x6e, 0xdd, 0x02, 0x09, 0xac, 0x01, 0xdf, 0x02, 0x09, + 0x15, 0xf5, 0x02, 0x09, 0x76, 0x85, 0x03, 0x09, 0x26, 0x95, 0x03, 0x09, 0x61, 0x9d, 0x03, 0x09, + 0x9b, 0x01, 0xb5, 0x03, 0x09, 0x74, 0xb7, 0x03, 0x09, 0x20, 0xbd, 0x03, 0x09, 0xbd, 0x01, 0xc5, + 0x03, 0x09, 0x30, 0xd5, 0x03, 0x09, 0x6c, 0xdd, 0x03, 0x09, 0xb5, 0x01, 0xe5, 0x03, 0x09, 0x43, + 0xed, 0x03, 0x09, 0x8f, 0x01, 0xf7, 0x03, 0x09, 0x22, 0xfd, 0x03, 0x09, 0xbf, 0x01, 0xc0, 0x04, + 0xb5, 0xa1, 0x7a, 0x44, 0x7d, 0xb5, 0xa1, 0x7d, 0x77, 0x11, 0xe8, 0x89, 0x46, 0xc9, 0x8a, 0xac, + 0x84, 0x6e, 0x35, 0xfa, 0x1d, 0x4b, 0x23, 0xc2, 0x43, 0xe4, 0x4a, 0x21, 0x19, 0xc4, 0xa1, 0x4c, + 0xa0, 0x9c, 0x0c, 0x61, 0xa0, 0xa2, 0x7c, 0xa5, 0xaa, 0xf9, 0x53, 0xab, 0xaa, 0xee, 0x35, 0x7a, + 0x6d, 0xff, 0x9b, 0xbe, 0xad, 0xd1, 0x2c, 0xea, 0x13, 0xa7, 0x3a, 0xad, 0xa0, 0x4c, 0xe5, 0xa6, + 0x65, 0xca, 0x34, 0xce, 0xbf, 0xb6, 0xdc, 0x8a, 0x06, 0x7f, 0x9e, 0x41, 0x7e, 0x69, 0x03, 0x49, + 0x2b, 0x28, 0xa0, 0x26, 0xe0, 0x95, 0xba, 0x55, 0xb0, 0x27, 0x4f, 0x0e, 0x17, 0x8a, 0xc2, 0xba, + 0xbe, 0x8c, 0xf1, 0xa4, 0x0a, 0x07, 0x68, 0xb2, 0xec, 0x4b, 0x16, 0x93, 0xa3, 0xb9, 0x65, 0x9b, + 0xe4, 0xd7, 0xc4, 0x01, 0x86, 0x07, 0xfc, 0xef, 0xb5, 0xcc, 0x4e, 0xb1, 0xc0, 0x7e, 0xbf, 0xf9, + 0x1c, 0xc4, 0xfb, 0x77, 0x25, 0x90, 0xfc, 0x58, 0x89, 0x2f, 0xe0, 0x06, 0x8c, 0x44, 0xc2, 0x9e, + 0xba, 0x0c, 0xc0, 0x74, 0x00, 0x18, 0x89, 0x43, 0x96, 0x45, 0x88, 0xf5, 0x75, 0x7e, 0xbc, 0x36, + 0xb0, 0x83, 0x79, 0xe2, 0x8e, 0x7c, 0x9c, 0x67, 0x90, 0x4a, 0x07, 0x00, 0x00, 0x00, 0xe9, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x59, 0x4e, 0x1f, 0x71, 0x5b, 0x3b, + 0xa2, 0x47, 0xa7, 0x62, 0xa0, 0x50, 0x28, 0x0a, 0x42, 0x47, 0x87, 0xfe, 0x5d, 0x41, 0xc8, 0xbf, + 0xe9, 0x4b, 0x23, 0xeb, 0x7c, 0x94, 0xdf, 0x45, 0xe0, 0x58, 0x9c, 0x01, 0x74, 0xb9, 0xbc, 0xc9, + 0xe8, 0xfd, 0x26, 0x13, 0x8b, 0x1c, 0xc8, 0xc3, 0x06, 0xa4, 0xac, 0xb4, 0x49, 0x06, 0x01, 0x00, + 0x29 +}; + +// kBinKmlMultiGeometryV9MM contains the track with two lines in geometry +std::vector const kBinKmlMultiGeometryV9MM = { + 0x09, 0x26, 0x41, 0x3a, 0x33, 0x39, 0x37, 0x33, 0x65, 0x66, 0x34, 0x64, 0x2d, 0x66, 0x35, 0x31, + 0x65, 0x2d, 0x34, 0x61, 0x37, 0x31, 0x2d, 0x38, 0x65, 0x64, 0x34, 0x2d, 0x64, 0x65, 0x61, 0x33, + 0x63, 0x31, 0x39, 0x30, 0x64, 0x61, 0x63, 0x35, 0x00, 0x1e, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xd3, 0xd0, 0xc3, 0x90, 0x95, 0x32, 0x00, 0x00, 0x09, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x13, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb3, 0xe6, 0xcc, 0x19, 0x00, 0xff, 0xc7, 0x6e, + 0x00, 0x00, 0x02, 0x03, 0x84, 0x92, 0xe7, 0x90, 0x04, 0xe2, 0x85, 0x84, 0x9f, 0x05, 0xf5, 0x02, + 0xad, 0x05, 0xa3, 0x01, 0x85, 0x02, 0xff, 0xff, 0x03, 0x00, 0x00, 0x03, 0xa0, 0x8a, 0xe9, 0x90, + 0x04, 0xdc, 0x89, 0x87, 0x9f, 0x05, 0x0c, 0xe9, 0x02, 0x9b, 0x02, 0x09, 0xff, 0xff, 0x03, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0b, 0x11, 0x06, 0x1d, 0x00, 0x04, 0x01, 0x01, 0x05, 0x0b, + 0x02, 0x04, 0x6d, 0x03, 0x05, 0x3c, 0x04, 0x06, 0x03, 0x05, 0x04, 0x10, 0x06, 0x04, 0x71, 0x07, + 0x05, 0x66, 0x08, 0x04, 0x75, 0x09, 0x05, 0x0f, 0x0a, 0x05, 0x73, 0x0b, 0x05, 0x57, 0x0c, 0x05, + 0x06, 0x0d, 0x05, 0x32, 0x0e, 0x05, 0x77, 0x0f, 0x05, 0x6c, 0x11, 0x05, 0x0d, 0x13, 0x05, 0x4e, + 0x14, 0x06, 0x05, 0x17, 0x05, 0x69, 0x19, 0x05, 0x2f, 0x1a, 0x05, 0x74, 0x1b, 0x05, 0x5d, 0x1c, + 0x05, 0x08, 0x1d, 0x05, 0x37, 0x1e, 0x05, 0x79, 0x1f, 0x05, 0x6e, 0x24, 0x06, 0x04, 0x34, 0x06, + 0x0a, 0x28, 0xfe, 0xa0, 0xf5, 0xf6, 0xc1, 0xf4, 0xbb, 0x38, 0xe8, 0x29, 0x99, 0xe0, 0x0b, 0xa4, + 0x4a, 0x99, 0x03, 0xce, 0x28, 0x46, 0x46, 0xc0, 0x90, 0x36, 0x01, 0x00, 0x04 +}; diff --git a/kml/serdes_binary.hpp b/kml/serdes_binary.hpp index a33101bcfd..32302fb5af 100644 --- a/kml/serdes_binary.hpp +++ b/kml/serdes_binary.hpp @@ -6,13 +6,10 @@ #include "kml/types_v7.hpp" #include "kml/types_v8.hpp" #include "kml/types_v8mm.hpp" +#include "kml/types_v9mm.hpp" #include "kml/types.hpp" #include "kml/visitors.hpp" -#include "platform/platform.hpp" - -#include "coding/read_write_utils.hpp" -#include "coding/sha1.hpp" #include "coding/text_storage.hpp" #include @@ -195,6 +192,16 @@ public: m_data = dataV8MM.ConvertToLatestVersion(); break; } + case Version::V9MM: + { + FileDataV9MM dataV9MM; + dataV9MM.m_deviceId = m_data.m_deviceId; + dataV9MM.m_serverId = m_data.m_serverId; + DeserializeFileData(subReader, dataV9MM); + + m_data = dataV9MM.ConvertToLatestVersion(); + break; + } case Version::V7: { FileDataV7 dataV7; @@ -251,21 +258,23 @@ private: NonOwningReaderSource source(reader); m_header.Deserialize(source); - if (m_header.m_version == Version::V8) + if (m_header.m_version == Version::V8 || m_header.m_version == Version::V9) { - // Check if file has Opensource V8 or MapsMe V8. - // Actual V8 format has 6 offset (uint64_t) in header. While V8MM has 5 offsets. + // Check if file has Opensource V8/V9 or MapsMe V8/V9 format. + // Actual V8/V9 format has 6 offsets (uint64_t) in header. While V8MM/V9MM has 5 offsets. // It means that first section (usually categories) has offset 0x28 = 40 = 5 * 8. if (m_header.m_categoryOffset == 0x28 || m_header.m_bookmarksOffset == 0x28 || m_header.m_tracksOffset == 0x28 || m_header.m_stringsOffset == 0x28 || m_header.m_compilationsOffset == 0x28) { - LOG(LWARNING, ("KMB file has version V8MM")); - m_header.m_version = Version::V8MM; + m_header.m_version = (m_header.m_version == Version::V8 ? Version::V8MM : Version::V9MM); + LOG(LINFO, ("KMB file has version", m_header.m_version)); + m_header.m_eosOffset = m_header.m_stringsOffset; m_header.m_stringsOffset = m_header.m_compilationsOffset; } } + m_initialized = true; } diff --git a/kml/serdes_gpx.cpp b/kml/serdes_gpx.cpp index 38968beb91..3a7226c817 100644 --- a/kml/serdes_gpx.cpp +++ b/kml/serdes_gpx.cpp @@ -412,13 +412,8 @@ void SaveBookmarkData(Writer & writer, BookmarkData const & bookmarkData) { auto const [lat, lon] = mercator::ToLatLon(bookmarkData.m_point); writer << "\n"; - // If user customized the default bookmark name, it's saved in m_customName. - auto name = GetDefaultLanguage(bookmarkData.m_customName); - if (!name) - name = GetDefaultLanguage(bookmarkData.m_name); // Original POI name stored when bookmark was created. - if (name) - writer << kIndent2 << "" << *name << "\n"; - + if (auto const name = GetDefaultLanguage(bookmarkData.m_name)) + writer << kIndent2 << "" << name.value() << "\n"; if (auto const description = GetDefaultLanguage(bookmarkData.m_description)) { writer << kIndent2 << ""; diff --git a/kml/types.cpp b/kml/types.cpp index 68d96d34ba..713cbdeabf 100644 --- a/kml/types.cpp +++ b/kml/types.cpp @@ -38,4 +38,15 @@ void MultiGeometry::FromPoints(std::vector const & points) ASSERT(line.size() > 1, ()); m_lines.push_back(std::move(line)); } + +MultiGeometry mergeGeometry(std::vector && aGeometries) +{ + MultiGeometry merged; + for (auto && geometry : aGeometries) + for (auto && line : geometry.m_lines) + merged.m_lines.push_back(std::move(line)); + + return merged; +} + } // namespace kml diff --git a/kml/types_v8mm.hpp b/kml/types_v8mm.hpp index 52dd0b4f35..d5ef985b83 100644 --- a/kml/types_v8mm.hpp +++ b/kml/types_v8mm.hpp @@ -264,20 +264,20 @@ struct CategoryDataV8MM }; // FileDataV8MM contains the same sections as FileDataV8 but with no compilations -struct FileDataV8MM +template struct FileDataMMImpl { - DECLARE_VISITOR_AND_DEBUG_PRINT(FileDataV8MM, visitor(m_serverId, "serverId"), + DECLARE_VISITOR_AND_DEBUG_PRINT(FileDataMMImpl, visitor(m_serverId, "serverId"), visitor(m_categoryData, "category"), visitor(m_bookmarksData, "bookmarks"), visitor(m_tracksData, "tracks")) - bool operator==(FileDataV8MM const & data) const + bool operator==(FileDataMMImpl const & data) const { return m_serverId == data.m_serverId && m_categoryData == data.m_categoryData && m_bookmarksData == data.m_bookmarksData && m_tracksData == data.m_tracksData; } - bool operator!=(FileDataV8MM const & data) const { return !operator==(data); } + bool operator!=(FileDataMMImpl const & data) const { return !operator==(data); } FileData ConvertToLatestVersion() { @@ -307,6 +307,9 @@ struct FileDataV8MM // Bookmarks collection. std::vector m_bookmarksData; // Tracks collection. - std::vector m_tracksData; + std::vector m_tracksData; }; + +using FileDataV8MM = FileDataMMImpl; + } // namespace kml diff --git a/kml/types_v9mm.hpp b/kml/types_v9mm.hpp new file mode 100644 index 0000000000..685ab6d57f --- /dev/null +++ b/kml/types_v9mm.hpp @@ -0,0 +1,53 @@ +#pragma once + +#include "kml/types.hpp" +#include "kml/types_v8mm.hpp" + +namespace kml +{ + +MultiGeometry mergeGeometry(std::vector && aGeometries); + +struct TrackDataV9MM : TrackDataV8MM +{ + DECLARE_VISITOR_AND_DEBUG_PRINT(TrackDataV9MM, visitor(m_id, "id"), + visitor(m_localId, "localId"), + visitor(m_name, "name"), + visitor(m_description, "description"), + visitor(m_layers, "layers"), + visitor(m_timestamp, "timestamp"), + visitor(m_multiGeometry, "multiGeometry"), // V9MM introduced multiGeometry instead of a single one + visitor(m_visible, "visible"), + visitor(m_constant1, "constant1"), + visitor(m_constant2, "constant2"), + visitor(m_constant3, "constant3"), + visitor(m_nearestToponyms, "nearestToponyms"), + visitor(m_properties, "properties"), + VISITOR_COLLECTABLE) + + DECLARE_COLLECTABLE(LocalizableStringIndex, m_name, m_description, m_nearestToponyms, m_properties) + + TrackData ConvertToLatestVersion() + { + TrackData data; + data.m_id = m_id; + data.m_localId = m_localId; + data.m_name = m_name; + data.m_description = m_description; + data.m_layers = m_layers; + data.m_timestamp = m_timestamp; + data.m_geometry = mergeGeometry(std::move(m_multiGeometry)); + data.m_visible = m_visible; + data.m_nearestToponyms = m_nearestToponyms; + data.m_properties = m_properties; + return data; + } + + std::vector m_multiGeometry; +}; + + +// Contains the same sections as FileDataV8MM but with changed m_tracksData format +using FileDataV9MM = FileDataMMImpl; + +} // namespace kml diff --git a/map/framework.cpp b/map/framework.cpp index 7725336e68..2d6e1abf70 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -15,7 +15,6 @@ #include "search/engine.hpp" #include "search/locality_finder.hpp" -#include "storage/storage.hpp" #include "storage/country_info_getter.hpp" #include "storage/storage_helpers.hpp" @@ -654,7 +653,7 @@ void Framework::FillNotMatchedPlaceInfo(place_page::Info & info, m2::PointD cons info.SetCustomNameWithCoordinates(mercator, m_stringsBundle.GetString("core_placepage_unknown_place")); else info.SetCustomName(customTitle); - info.SetCanEditOrAdd(CanEditMapForPosition(mercator)); + info.SetCanEditOrAdd(CanEditMap()); info.SetMercator(mercator); } @@ -680,9 +679,11 @@ void Framework::FillInfoFromFeatureType(FeatureType & ft, place_page::Info & inf FillDescription(ft, info); auto const mwmInfo = ft.GetID().m_mwmId.GetInfo(); - bool const isMapVersionEditable = CanEditMapForPosition(info.GetMercator()); - bool const canEditOrAdd = featureStatus != FeatureStatus::Obsolete && isMapVersionEditable; + bool const isMapVersionEditable = mwmInfo && mwmInfo->m_version.IsEditableMap(); + bool const canEditOrAdd = featureStatus != FeatureStatus::Obsolete && CanEditMap() && + isMapVersionEditable; info.SetCanEditOrAdd(canEditOrAdd); + //info.SetPopularity(m_popularityLoader.Get(ft.GetID())); // Fill countryId for place page info auto const & types = info.GetTypes(); @@ -2854,10 +2855,9 @@ void SetHostingBuildingAddress(FeatureID const & hostingBuildingFid, DataSource } } // namespace -bool Framework::CanEditMapForPosition(m2::PointD const & position) const +bool Framework::CanEditMap() const { - ASSERT(m_infoGetter, ("CountryInfoGetter shouldn't be nullprt.")); - return GetStorage().IsAllowedToEditVersion(m_infoGetter->GetRegionCountryId(position)); + return !GetStorage().IsDownloadInProgress(); } bool Framework::CreateMapObject(m2::PointD const & mercator, uint32_t const featureType, diff --git a/map/framework.hpp b/map/framework.hpp index e345b7d721..88fe446de2 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -721,8 +721,10 @@ protected: void RegisterCountryFilesOnRoute(std::shared_ptr ptr) const override; public: + /// @name Editor interface. + /// Initializes feature for Create Object UI. /// @returns false in case when coordinate is in the ocean or mwm is not downloaded. - bool CanEditMapForPosition(m2::PointD const & position) const; + bool CanEditMap() const; bool CreateMapObject(m2::PointD const & mercator, uint32_t const featureType, osm::EditableMapObject & emo) const; /// @returns false if feature is invalid or can't be edited. diff --git a/map/gps_track_storage.cpp b/map/gps_track_storage.cpp index a4c7e5c769..cb897cef38 100644 --- a/map/gps_track_storage.cpp +++ b/map/gps_track_storage.cpp @@ -88,15 +88,15 @@ inline size_t GetItemCount(size_t fileSize) inline bool WriteVersion(fstream & f, uint32_t version) { - static_assert(kHeaderSize == sizeof(version)); + static_assert(kHeaderSize == sizeof(version), ""); version = SwapIfBigEndianMacroBased(version); f.write(reinterpret_cast(&version), kHeaderSize); - return f.good() && f.flush().good(); + return f.good(); } inline bool ReadVersion(fstream & f, uint32_t & version) { - static_assert(kHeaderSize == sizeof(version)); + static_assert(kHeaderSize == sizeof(version), ""); f.read(reinterpret_cast(&version), kHeaderSize); version = SwapIfBigEndianMacroBased(version); return f.good(); @@ -111,20 +111,6 @@ GpsTrackStorage::GpsTrackStorage(string const & filePath, size_t maxItemCount) { ASSERT_GREATER(m_maxItemCount, 0, ()); - auto const createNewFile = [this] - { - m_stream.open(m_filePath, ios::in | ios::out | ios::binary | ios::trunc); - - if (!m_stream) - MYTHROW(OpenException, ("Open file error.", m_filePath)); - - if (!WriteVersion(m_stream, kCurrentVersion)) - MYTHROW(OpenException, ("Write version error.", m_filePath)); - - m_itemCount = 0; - }; - - // Open existing file m_stream.open(m_filePath, ios::in | ios::out | ios::binary); @@ -132,12 +118,7 @@ GpsTrackStorage::GpsTrackStorage(string const & filePath, size_t maxItemCount) { uint32_t version = 0; if (!ReadVersion(m_stream, version)) - { - LOG(LWARNING, ("Recreating", m_filePath, "because can't read version from it.")); - m_stream.close(); - createNewFile(); - version = kCurrentVersion; - } + MYTHROW(OpenException, ("Read version error.", m_filePath)); if (version == kCurrentVersion) { @@ -155,8 +136,6 @@ GpsTrackStorage::GpsTrackStorage(string const & filePath, size_t maxItemCount) m_stream.seekp(offset, ios::beg); if (!m_stream.good()) MYTHROW(OpenException, ("Seek to the offset error:", offset, m_filePath)); - - LOG(LINFO, ("Restored", m_itemCount, "points from gps track storage")); } else { @@ -167,7 +146,18 @@ GpsTrackStorage::GpsTrackStorage(string const & filePath, size_t maxItemCount) } if (!m_stream) - createNewFile(); + { + // Create new file + m_stream.open(m_filePath, ios::in | ios::out | ios::binary | ios::trunc); + + if (!m_stream) + MYTHROW(OpenException, ("Open file error.", m_filePath)); + + if (!WriteVersion(m_stream, kCurrentVersion)) + MYTHROW(OpenException, ("Write version error.", m_filePath)); + + m_itemCount = 0; + } } void GpsTrackStorage::Append(vector const & items) @@ -317,12 +307,13 @@ void GpsTrackStorage::TruncFile() m_stream.open(m_filePath, ios::in | ios::out | ios::binary | ios::ate); if (!m_stream) - MYTHROW(OpenException, ("File:", m_filePath)); + MYTHROW(WriteException, ("File:", m_filePath)); m_itemCount = newItemCount; // Write position must be after last item position (end of file) - ASSERT_EQUAL(m_stream.tellp(), static_cast(GetItemOffset(m_itemCount)), ()); + ASSERT_EQUAL(m_stream.tellp(), static_cast( + GetItemOffset(m_itemCount)), ()); } size_t GpsTrackStorage::GetFirstItemIndex() const diff --git a/map/place_page_info.cpp b/map/place_page_info.cpp index 9242e62994..6df6943a4a 100644 --- a/map/place_page_info.cpp +++ b/map/place_page_info.cpp @@ -29,7 +29,7 @@ bool Info::IsBookmark() const bool Info::ShouldShowAddPlace() const { auto const isPointOrBuilding = IsPointType() || IsBuilding(); - return !(IsFeature() && isPointOrBuilding); + return m_canEditOrAdd && !(IsFeature() && isPointOrBuilding); } void Info::SetFromFeatureType(FeatureType & ft) @@ -290,8 +290,9 @@ void Info::SetBookmarkId(kml::MarkId bookmarkId) bool Info::ShouldShowEditPlace() const { - // TODO(mgsergio): Does IsFeature() imply !IsMyPosition()? - return !IsMyPosition() && IsFeature(); + return m_canEditOrAdd && + // TODO(mgsergio): Does IsFeature() imply !IsMyPosition()? + !IsMyPosition() && IsFeature(); } kml::LocalizableString Info::FormatNewBookmarkName() const diff --git a/map/place_page_info.hpp b/map/place_page_info.hpp index 4ed026198d..1b5479e605 100644 --- a/map/place_page_info.hpp +++ b/map/place_page_info.hpp @@ -113,11 +113,9 @@ public: /// Edit and add bool ShouldShowAddPlace() const; + bool ShouldShowAddBusiness() const { return m_canEditOrAdd && IsBuilding(); } bool ShouldShowEditPlace() const; - bool ShouldEnableAddPlace() const { return m_canEditOrAdd; }; - bool ShouldEnableEditPlace() const { return m_canEditOrAdd; }; - /// @returns true if Back API button should be displayed. bool HasApiUrl() const { return !m_apiUrl.empty(); } /// TODO: Support all possible Internet types in UI. @See MapObject::GetInternet(). diff --git a/map/routing_mark.cpp b/map/routing_mark.cpp index 9c4b00d1b8..01b651645f 100644 --- a/map/routing_mark.cpp +++ b/map/routing_mark.cpp @@ -630,11 +630,10 @@ uint16_t RoadWarningMark::GetPriority() const { switch (m_type) { - using enum RoadWarningMarkType; - case Toll: return static_cast(Priority::RoadWarningFirstToll); - case Ferry: return static_cast(Priority::RoadWarningFirstFerry); - case Dirty: return static_cast(Priority::RoadWarningFirstDirty); - case Count: CHECK(false, ()); break; + case RoadWarningMarkType::Toll: return static_cast(Priority::RoadWarningFirstToll); + case RoadWarningMarkType::Ferry: return static_cast(Priority::RoadWarningFirstFerry); + case RoadWarningMarkType::Dirty: return static_cast(Priority::RoadWarningFirstDirty); + case RoadWarningMarkType::Count: CHECK(false, ()); break; } } return static_cast(Priority::RoadWarning); @@ -666,17 +665,16 @@ void RoadWarningMark::SetDistance(std::string const & distance) drape_ptr RoadWarningMark::GetSymbolNames() const { - std::string_view symbolName; + std::string symbolName; switch (m_type) { - using enum RoadWarningMarkType; - case Toll: symbolName = "paid_road"; break; - case Ferry: symbolName = "ferry"; break; - case Dirty: symbolName = "unpaved_road"; break; - case Count: CHECK(false, ()); break; + case RoadWarningMarkType::Toll: symbolName = "paid_road"; break; + case RoadWarningMarkType::Ferry: symbolName = "ferry"; break; + case RoadWarningMarkType::Dirty: symbolName = "unpaved_road"; break; + case RoadWarningMarkType::Count: CHECK(false, ()); break; } auto symbol = make_unique_dp(); - symbol->emplace(1 /* zoomLevel */, symbolName); + symbol->insert(std::make_pair(1 /* zoomLevel */, symbolName)); return symbol; } @@ -685,11 +683,10 @@ std::string RoadWarningMark::GetLocalizedRoadWarningType(RoadWarningMarkType typ { switch (type) { - using enum RoadWarningMarkType; - case Toll: return platform::GetLocalizedString("toll_road"); - case Ferry: return platform::GetLocalizedString("ferry_crossing"); - case Dirty: return platform::GetLocalizedString("unpaved_road"); - case Count: CHECK(false, ("Invalid road warning mark type", type)); break; + case RoadWarningMarkType::Toll: return platform::GetLocalizedString("toll_road"); + case RoadWarningMarkType::Ferry: return platform::GetLocalizedString("ferry_crossing"); + case RoadWarningMarkType::Dirty: return platform::GetLocalizedString("unpaved_road"); + case RoadWarningMarkType::Count: CHECK(false, ("Invalid road warning mark type", type)); break; } return {}; } @@ -698,11 +695,10 @@ std::string DebugPrint(RoadWarningMarkType type) { switch (type) { - using enum RoadWarningMarkType; - case Toll: return "Toll"; - case Ferry: return "Ferry"; - case Dirty: return "Dirty"; - case Count: return "Count"; + case RoadWarningMarkType::Toll: return "Toll"; + case RoadWarningMarkType::Ferry: return "Ferry"; + case RoadWarningMarkType::Dirty: return "Dirty"; + case RoadWarningMarkType::Count: return "Count"; } UNREACHABLE(); } diff --git a/platform/distance.cpp b/platform/distance.cpp index 59fcdb416b..43eed86639 100644 --- a/platform/distance.cpp +++ b/platform/distance.cpp @@ -202,10 +202,10 @@ std::string DebugPrint(Distance::Units units) { switch (units) { - case Distance::Units::Meters: return "m"; - case Distance::Units::Kilometers: return "km"; - case Distance::Units::Feet: return "ft"; - case Distance::Units::Miles: return "mi"; + case Distance::Units::Meters: return "Distance::Units::Meters"; + case Distance::Units::Kilometers: return "Distance::Units::Kilometers"; + case Distance::Units::Feet: return "Distance::Units::Feet"; + case Distance::Units::Miles: return "Distance::Units::Miles"; default: UNREACHABLE(); } } diff --git a/platform/localization.cpp b/platform/localization.cpp index 14f2e90cc1..48338edd92 100644 --- a/platform/localization.cpp +++ b/platform/localization.cpp @@ -1,5 +1,6 @@ #include "platform/localization.hpp" +#include "platform/measurement_utils.hpp" #include "platform/settings.hpp" #include @@ -10,18 +11,18 @@ namespace { enum class MeasurementType { - Distance, + Distance = 0, Speed, Altitude }; -LocalizedUnits const & GetLocalizedUnits(measurement_utils::Units units, MeasurementType measurementType) +const LocalizedUnits & GetLocalizedUnits(measurement_utils::Units units, MeasurementType measurementType) { - static LocalizedUnits const lengthImperial = {GetLocalizedString("ft"), GetLocalizedString("mi")}; - static LocalizedUnits const lengthMetric = {GetLocalizedString("m"), GetLocalizedString("km")}; + static LocalizedUnits UnitsLenghImperial = {GetLocalizedString("ft"), GetLocalizedString("mi")}; + static LocalizedUnits UnitsLenghMetric = {GetLocalizedString("m"), GetLocalizedString("km")}; - static LocalizedUnits const speedImperial = {GetLocalizedString("ft"), GetLocalizedString("miles_per_hour")}; - static LocalizedUnits const speedMetric = {GetLocalizedString("m"), GetLocalizedString("kilometers_per_hour")}; + static LocalizedUnits UnitsSpeedImperial = {GetLocalizedString("ft"), GetLocalizedString("miles_per_hour")}; + static LocalizedUnits UnitsSpeedMetric = {GetLocalizedString("m"), GetLocalizedString("kilometers_per_hour")}; switch (measurementType) { @@ -29,27 +30,27 @@ LocalizedUnits const & GetLocalizedUnits(measurement_utils::Units units, Measure case MeasurementType::Altitude: switch (units) { - case measurement_utils::Units::Imperial: return lengthImperial; - case measurement_utils::Units::Metric: return lengthMetric; + case measurement_utils::Units::Imperial: return UnitsLenghImperial; + case measurement_utils::Units::Metric: return UnitsLenghMetric; } break; case MeasurementType::Speed: switch (units) { - case measurement_utils::Units::Imperial: return speedImperial; - case measurement_utils::Units::Metric: return speedMetric; + case measurement_utils::Units::Imperial: return UnitsSpeedImperial; + case measurement_utils::Units::Metric: return UnitsSpeedMetric; } } UNREACHABLE(); } } // namespace -LocalizedUnits const & GetLocalizedDistanceUnits() +LocalizedUnits GetLocalizedDistanceUnits() { return GetLocalizedUnits(measurement_utils::GetMeasurementUnits(), MeasurementType::Distance); } -LocalizedUnits const & GetLocalizedAltitudeUnits() +LocalizedUnits GetLocalizedAltitudeUnits() { return GetLocalizedUnits(measurement_utils::GetMeasurementUnits(), MeasurementType::Altitude); } @@ -59,7 +60,7 @@ const std::string & GetLocalizedSpeedUnits(measurement_utils::Units units) return GetLocalizedUnits(units, MeasurementType::Speed).m_high; } -std::string const & GetLocalizedSpeedUnits() +std::string GetLocalizedSpeedUnits() { return GetLocalizedSpeedUnits(measurement_utils::GetMeasurementUnits()); } diff --git a/platform/localization.hpp b/platform/localization.hpp index fd64fca430..7e0ab39f0f 100644 --- a/platform/localization.hpp +++ b/platform/localization.hpp @@ -2,7 +2,10 @@ #include -#include "platform/measurement_utils.hpp" +namespace measurement_utils +{ +enum class Units; +} namespace platform { @@ -18,9 +21,9 @@ extern std::string GetLocalizedString(std::string const & key); extern std::string GetCurrencySymbol(std::string const & currencyCode); extern std::string GetLocalizedMyPositionBookmarkName(); -extern LocalizedUnits const & GetLocalizedDistanceUnits(); -extern LocalizedUnits const & GetLocalizedAltitudeUnits(); +extern LocalizedUnits GetLocalizedDistanceUnits(); +extern LocalizedUnits GetLocalizedAltitudeUnits(); -extern std::string const & GetLocalizedSpeedUnits(measurement_utils::Units units); -extern std::string const & GetLocalizedSpeedUnits(); +extern const std::string & GetLocalizedSpeedUnits(measurement_utils::Units units); +extern std::string GetLocalizedSpeedUnits(); } // namespace platform diff --git a/platform/measurement_utils.cpp b/platform/measurement_utils.cpp index 579077f2dc..ddb2b0fc5e 100644 --- a/platform/measurement_utils.cpp +++ b/platform/measurement_utils.cpp @@ -8,6 +8,7 @@ #include "base/bits.hpp" #include "base/macros.hpp" #include "base/math.hpp" +#include "base/stl_helpers.hpp" #include "base/string_utils.hpp" #include @@ -17,20 +18,24 @@ namespace measurement_utils { -std::string ToStringPrecision(double d, int pr) +using namespace platform; +using namespace settings; +using namespace std; +using namespace strings; + +string ToStringPrecision(double d, int pr) { // We assume that the app will be restarted if a user changes device's locale. - static auto const locale = platform::GetCurrentLocale(); + static Locale const loc = GetCurrentLocale(); - return ToStringPrecisionLocale(locale, d, pr); + return ToStringPrecisionLocale(loc, d, pr); } -std::string ToStringPrecisionLocale(platform::Locale const & loc, double d, int pr) +string ToStringPrecisionLocale(Locale loc, double d, int pr) { - // TODO(AB): Check if snprintf is faster. - std::ostringstream ss; - ss << std::setprecision(pr) << std::fixed << d; - std::string out = ss.str(); + stringstream ss; + ss << setprecision(pr) << fixed << d; + string out = ss.str(); // std::locale does not work on Android NDK, so decimal and grouping (thousands) separator // shall be customized manually here. @@ -53,7 +58,7 @@ std::string ToStringPrecisionLocale(platform::Locale const & loc, double d, int return out; } -std::string_view DebugPrint(Units units) +std::string DebugPrint(Units units) { switch (units) { @@ -65,7 +70,7 @@ std::string_view DebugPrint(Units units) Units GetMeasurementUnits() { - Units units = Units::Metric; + Units units = measurement_utils::Units::Metric; settings::TryGet(settings::kMeasurementUnits, units); return units; } @@ -80,32 +85,32 @@ double ToSpeedKmPH(double speed, Units units) UNREACHABLE(); } -std::string FormatLatLonAsDMSImpl(double value, char positive, char negative, int dac) +string FormatLatLonAsDMSImpl(double value, char positive, char negative, int dac) { using namespace base; - std::ostringstream sstream; - sstream << std::setfill('0'); + ostringstream sstream; + sstream << setfill('0'); // Degrees double i; - double d = std::modf(std::fabs(value), &i); - sstream << std::setw(2) << i << "°"; + double d = modf(fabs(value), &i); + sstream << setw(2) << i << "°"; // Minutes - d = std::modf(d * 60.0, &i); - sstream << std::setw(2) << i << "′"; + d = modf(d * 60.0, &i); + sstream << setw(2) << i << "′"; // Seconds d = d * 60.0; if (dac == 0) d = SignedRound(d); - d = std::modf(d, &i); - sstream << std::setw(2) << i; + d = modf(d, &i); + sstream << setw(2) << i; if (dac > 0) - sstream << strings::to_string_dac(d, dac).substr(1); + sstream << to_string_dac(d, dac).substr(1); sstream << "″"; @@ -123,55 +128,55 @@ std::string FormatLatLonAsDMSImpl(double value, char positive, char negative, in return sstream.str(); } -std::string FormatLatLonAsDMS(double lat, double lon, bool withComma, int dac) +string FormatLatLonAsDMS(double lat, double lon, bool withComma, int dac) { return (FormatLatLonAsDMSImpl(lat, 'N', 'S', dac) + (withComma ? ", " : " ") + FormatLatLonAsDMSImpl(lon, 'E', 'W', dac)); } -void FormatLatLonAsDMS(double lat, double lon, std::string & latText, std::string & lonText, int dac) +void FormatLatLonAsDMS(double lat, double lon, string & latText, string & lonText, int dac) { latText = FormatLatLonAsDMSImpl(lat, 'N', 'S', dac); lonText = FormatLatLonAsDMSImpl(lon, 'E', 'W', dac); } -void FormatMercatorAsDMS(m2::PointD const & mercator, std::string & lat, std::string & lon, int dac) +void FormatMercatorAsDMS(m2::PointD const & mercator, string & lat, string & lon, int dac) { lat = FormatLatLonAsDMSImpl(mercator::YToLat(mercator.y), 'N', 'S', dac); lon = FormatLatLonAsDMSImpl(mercator::XToLon(mercator.x), 'E', 'W', dac); } -std::string FormatMercatorAsDMS(m2::PointD const & mercator, int dac) +string FormatMercatorAsDMS(m2::PointD const & mercator, int dac) { return FormatLatLonAsDMS(mercator::YToLat(mercator.y), mercator::XToLon(mercator.x), dac); } // @TODO take into account decimal points or commas as separators in different locales -std::string FormatLatLon(double lat, double lon, int dac) +string FormatLatLon(double lat, double lon, int dac) { - return strings::to_string_dac(lat, dac) + " " + strings::to_string_dac(lon, dac); + return to_string_dac(lat, dac) + " " + to_string_dac(lon, dac); } -std::string FormatLatLon(double lat, double lon, bool withComma, int dac) +string FormatLatLon(double lat, double lon, bool withComma, int dac) { - return strings::to_string_dac(lat, dac) + (withComma ? ", " : " ") + strings::to_string_dac(lon, dac); + return to_string_dac(lat, dac) + (withComma ? ", " : " ") + to_string_dac(lon, dac); } -void FormatLatLon(double lat, double lon, std::string & latText, std::string & lonText, int dac) +void FormatLatLon(double lat, double lon, string & latText, string & lonText, int dac) { - latText = strings::to_string_dac(lat, dac); - lonText = strings::to_string_dac(lon, dac); + latText = to_string_dac(lat, dac); + lonText = to_string_dac(lon, dac); } -std::string FormatMercator(m2::PointD const & mercator, int dac) +string FormatMercator(m2::PointD const & mercator, int dac) { return FormatLatLon(mercator::YToLat(mercator.y), mercator::XToLon(mercator.x), dac); } -void FormatMercator(m2::PointD const & mercator, std::string & lat, std::string & lon, int dac) +void FormatMercator(m2::PointD const & mercator, string & lat, string & lon, int dac) { - lat = strings::to_string_dac(mercator::YToLat(mercator.y), dac); - lon = strings::to_string_dac(mercator::XToLon(mercator.x), dac); + lat = to_string_dac(mercator::YToLat(mercator.y), dac); + lon = to_string_dac(mercator::XToLon(mercator.x), dac); } double MpsToUnits(double metersPerSecond, Units units) @@ -184,13 +189,13 @@ double MpsToUnits(double metersPerSecond, Units units) UNREACHABLE(); } -std::string FormatSpeedNumeric(double metersPerSecond, Units units) +string FormatSpeedNumeric(double metersPerSecond, Units units) { double const unitsPerHour = MpsToUnits(metersPerSecond, units); return ToStringPrecision(unitsPerHour, unitsPerHour >= 10.0 ? 0 : 1); } -std::string FormatOsmLink(double lat, double lon, int zoom) +string FormatOsmLink(double lat, double lon, int zoom) { static constexpr char chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_~"; @@ -199,7 +204,7 @@ std::string FormatOsmLink(double lat, double lon, int zoom) uint32_t const x = round((lon + 180.0) * factor); uint32_t const y = round((lat + 90.0) * factor * 2.0); uint64_t const code = bits::BitwiseMerge(y, x); - std::string osmUrl = "https://osm.org/go/"; + string osmUrl = "https://osm.org/go/"; for (int i = 0; i < (zoom + 10) / 3; ++i) { @@ -214,7 +219,7 @@ std::string FormatOsmLink(double lat, double lon, int zoom) return osmUrl + "?m"; } -bool OSMDistanceToMeters(std::string const & osmRawValue, double & outMeters) +bool OSMDistanceToMeters(string const & osmRawValue, double & outMeters) { using strings::is_finite; @@ -242,9 +247,9 @@ bool OSMDistanceToMeters(std::string const & osmRawValue, double & outMeters) double const inches = strtod(s, &stop); if (s != stop && *stop == '"' && is_finite(inches)) outMeters += InchesToMeters(inches); - return true; } + break; // Inches. case '"': outMeters = InchesToMeters(outMeters); return true; @@ -283,9 +288,9 @@ bool OSMDistanceToMeters(std::string const & osmRawValue, double & outMeters) return true; } -std::string OSMDistanceToMetersString(std::string const & osmRawValue, - bool supportZeroAndNegativeValues, - int digitsAfterComma) +string OSMDistanceToMetersString(string const & osmRawValue, + bool supportZeroAndNegativeValues, + int digitsAfterComma) { double meters; if (OSMDistanceToMeters(osmRawValue, meters)) diff --git a/platform/measurement_utils.hpp b/platform/measurement_utils.hpp index 906d4960e5..4d29d790d7 100644 --- a/platform/measurement_utils.hpp +++ b/platform/measurement_utils.hpp @@ -13,7 +13,7 @@ enum class Units Imperial = 1 }; -std::string_view DebugPrint(Units units); +std::string DebugPrint(Units units); Units GetMeasurementUnits(); @@ -64,5 +64,5 @@ std::string OSMDistanceToMetersString(std::string const & osmRawValue, bool supportZeroAndNegativeValues = true, int digitsAfterComma = 2); std::string ToStringPrecision(double d, int pr); -std::string ToStringPrecisionLocale(platform::Locale const & locale, double d, int pr); +std::string ToStringPrecisionLocale(platform::Locale loc, double d, int pr); } // namespace measurement_utils diff --git a/platform/mwm_version.cpp b/platform/mwm_version.cpp index 5431d6b508..27b22ab6ab 100644 --- a/platform/mwm_version.cpp +++ b/platform/mwm_version.cpp @@ -16,6 +16,11 @@ namespace version { namespace { +// Editing maps older than approximately two months old is disabled, since the data +// is most likely already fixed on OSM. Not limited to the latest one or two versions, +// because a user can forget to update maps after a new app version has been installed +// automatically in the background. +uint64_t constexpr kMaxSecondsTillNoEdits = 3600 * 24 * 31 * 2; char const MWM_PROLOG[] = "MWM"; } @@ -43,6 +48,11 @@ uint32_t MwmVersion::GetVersion() const return base::GenerateYYMMDD(tm.tm_year, tm.tm_mon, tm.tm_mday); } +bool MwmVersion::IsEditableMap() const +{ + return m_secondsSinceEpoch + kMaxSecondsTillNoEdits > base::SecondsSinceEpoch(); +} + std::string DebugPrint(Format f) { return "v" + strings::to_string(static_cast(f) + 1); diff --git a/platform/mwm_version.hpp b/platform/mwm_version.hpp index f58944f243..e7f9301010 100644 --- a/platform/mwm_version.hpp +++ b/platform/mwm_version.hpp @@ -43,6 +43,8 @@ public: /// \return version as YYMMDD. uint32_t GetVersion() const; + bool IsEditableMap() const; + /// @name Used in tests only. /// @{ void SetFormat(Format format) { m_format = format; } diff --git a/platform/platform.cpp b/platform/platform.cpp index e4bc3667f8..1026368300 100644 --- a/platform/platform.cpp +++ b/platform/platform.cpp @@ -196,7 +196,6 @@ void Platform::GetFontNames(FilesList & res) const char constexpr const * arrDef[] = { "00_NotoNaskhArabic-Regular.ttf", "00_NotoSansBengali-Regular.ttf", - "00_NotoSansHebrew-Regular.ttf", "00_NotoSansMalayalam-Regular.ttf", "00_NotoSansThai-Regular.ttf", "00_NotoSerifDevanagari-Regular.ttf", diff --git a/platform/platform_tests/distance_tests.cpp b/platform/platform_tests/distance_tests.cpp index ad642f6f16..9bcbddb721 100644 --- a/platform/platform_tests/distance_tests.cpp +++ b/platform/platform_tests/distance_tests.cpp @@ -4,23 +4,11 @@ #include "platform/measurement_utils.hpp" #include "platform/settings.hpp" -#include - namespace platform { -std::string MakeDistanceStr(std::string value, Distance::Units unit) +std::string MakeDistanceStr(std::string const & value, std::string const & unit) { - static Locale const loc = GetCurrentLocale(); - - constexpr char kHardCodedGroupingSeparator = ','; - if (auto found = value.find(kHardCodedGroupingSeparator); found != std::string::npos) - value.replace(found, 1, loc.m_groupingSeparator); - - constexpr char kHardCodedDecimalSeparator = '.'; - if (auto found = value.find(kHardCodedDecimalSeparator); found != std::string::npos) - value.replace(found, 1, loc.m_decimalSeparator); - - return value.append(kNarrowNonBreakingSpace).append(DebugPrint(unit)); + return value + kNarrowNonBreakingSpace + unit; } struct ScopedSettings @@ -55,64 +43,70 @@ UNIT_TEST(Distance_InititalDistance) UNIT_TEST(Distance_CreateFormatted) { - using enum Distance::Units; { ScopedSettings const guard(measurement_utils::Units::Metric); Distance const d = Distance::CreateFormatted(100); - TEST_EQUAL(d.GetUnits(), Meters, ()); + TEST_EQUAL(d.GetUnits(), Distance::Units::Meters, ()); TEST_ALMOST_EQUAL_ULPS(d.GetDistance(), 100.0, ()); TEST_EQUAL(d.GetDistanceString(), "100", ()); - TEST_EQUAL(d.ToString(), MakeDistanceStr("100", Meters), ()); + TEST_EQUAL(d.ToString(), MakeDistanceStr("100", "m"), ()); } { ScopedSettings const guard(measurement_utils::Units::Imperial); Distance const d = Distance::CreateFormatted(100); - TEST_EQUAL(d.GetUnits(), Feet, ()); + TEST_EQUAL(d.GetUnits(), Distance::Units::Feet, ()); TEST_ALMOST_EQUAL_ULPS(d.GetDistance(), 330.0, ()); TEST_EQUAL(d.GetDistanceString(), "330", ()); - TEST_EQUAL(d.ToString(), MakeDistanceStr("330", Feet), ()); + TEST_EQUAL(d.ToString(), MakeDistanceStr("330", "ft"), ()); } } UNIT_TEST(Distance_CreateAltitudeFormatted) { - using enum Distance::Units; { ScopedSettings const guard(measurement_utils::Units::Metric); - TEST_EQUAL(Distance::FormatAltitude(5), MakeDistanceStr("5", Meters), ()); - TEST_EQUAL(Distance::FormatAltitude(-8849), MakeDistanceStr("-8849", Meters), ()); - TEST_EQUAL(Distance::FormatAltitude(12345), MakeDistanceStr("12,345", Meters), ()); + TEST_EQUAL(Distance::FormatAltitude(5), MakeDistanceStr("5", "m"), ()); + } + { + ScopedSettings const guard(measurement_utils::Units::Metric); + + TEST_EQUAL(Distance::FormatAltitude(-8849), MakeDistanceStr("-8849", "m"), ()); + } + { + ScopedSettings const guard(measurement_utils::Units::Metric); + + TEST_EQUAL(Distance::FormatAltitude(12345), MakeDistanceStr("12,345", "m"), ()); } { ScopedSettings const guard(measurement_utils::Units::Imperial); - TEST_EQUAL(Distance::FormatAltitude(10000), MakeDistanceStr("32,808", Feet), ()); + TEST_EQUAL(Distance::FormatAltitude(10000), MakeDistanceStr("32,808", "ft"), ()); } } UNIT_TEST(Distance_IsLowUnits) { - using enum Distance::Units; - TEST_EQUAL(Distance(0.0, Meters).IsLowUnits(), true, ()); - TEST_EQUAL(Distance(0.0, Feet).IsLowUnits(), true, ()); - TEST_EQUAL(Distance(0.0, Kilometers).IsLowUnits(), false, ()); - TEST_EQUAL(Distance(0.0, Miles).IsLowUnits(), false, ()); + TEST_EQUAL(Distance(0.0, Distance::Units::Meters).IsLowUnits(), true, ()); + TEST_EQUAL(Distance(0.0, Distance::Units::Feet).IsLowUnits(), true, ()); + TEST_EQUAL(Distance(0.0, Distance::Units::Kilometers).IsLowUnits(), false, ()); + TEST_EQUAL(Distance(0.0, Distance::Units::Miles).IsLowUnits(), false, ()); } UNIT_TEST(Distance_IsHighUnits) { - using enum Distance::Units; - TEST_EQUAL(Distance(0.0, Meters).IsHighUnits(), false, ()); - TEST_EQUAL(Distance(0.0, Feet).IsHighUnits(), false, ()); - TEST_EQUAL(Distance(0.0, Kilometers).IsHighUnits(), true, ()); - TEST_EQUAL(Distance(0.0, Miles).IsHighUnits(), true, ()); + TEST_EQUAL(Distance(0.0, Distance::Units::Meters).IsHighUnits(), false, ()); + TEST_EQUAL(Distance(0.0, Distance::Units::Feet).IsHighUnits(), false, ()); + TEST_EQUAL(Distance(0.0, Distance::Units::Kilometers).IsHighUnits(), true, ()); + TEST_EQUAL(Distance(0.0, Distance::Units::Miles).IsHighUnits(), true, ()); } UNIT_TEST(Distance_To) { + using Units = Distance::Units; + struct TestData { double initialDistance; @@ -122,48 +116,47 @@ UNIT_TEST(Distance_To) Distance::Units newUnits; }; - using enum Distance::Units; // clang-format off TestData constexpr testData[] = { - {0.1, Meters, Feet, 0, Feet}, - {0.3, Meters, Feet, 1, Feet}, - {0.3048, Meters, Feet, 1, Feet}, - {0.4573, Meters, Feet, 2, Feet}, - {0.9, Meters, Feet, 3, Feet}, - {3, Meters, Feet, 10, Feet}, - {30.17, Meters, Feet, 99, Feet}, - {30.33, Meters, Feet, 100, Feet}, - {30.49, Meters, Feet, 100, Feet}, - {33.5, Meters, Feet, 110, Feet}, - {302, Meters, Feet, 990, Feet}, - {304.7, Meters, Feet, 0.2, Miles}, - {304.8, Meters, Feet, 0.2, Miles}, - {402.3, Meters, Feet, 0.2, Miles}, - {402.4, Meters, Feet, 0.3, Miles}, - {482.8, Meters, Feet, 0.3, Miles}, - {1609.3, Meters, Feet, 1.0, Miles}, - {1610, Meters, Feet, 1.0, Miles}, - {1770, Meters, Feet, 1.1, Miles}, - {15933, Meters, Feet, 9.9, Miles}, - {16093, Meters, Feet, 10, Miles}, - {16093.5, Meters, Feet, 10, Miles}, - {16898.464, Meters, Feet, 11, Miles}, - {16898.113, Meters, Kilometers, 17, Kilometers}, - {302, Meters, Miles, 990, Feet}, - {994, Meters, Kilometers, 990, Meters}, - {995, Meters, Kilometers, 1.0, Kilometers}, - {0.1, Kilometers, Meters, 100, Meters}, - {0.3, Kilometers, Kilometers, 300, Meters}, - {12, Kilometers, Feet, 7.5, Miles}, - {0.1, Kilometers, Feet, 330, Feet}, - {110, Feet, Meters, 34, Meters}, - {1100, Feet, Kilometers, 340, Meters}, - {1100, Feet, Meters, 340, Meters}, - {1100, Feet, Miles, 0.2, Miles}, - {0.2, Miles, Meters, 320, Meters}, - {11, Miles, Meters, 18, Kilometers}, - {11, Miles, Kilometers, 18, Kilometers}, - {0.1, Miles, Feet, 530, Feet}, + {0.1, Units::Meters, Units::Feet, 0, Units::Feet}, + {0.3, Units::Meters, Units::Feet, 1, Units::Feet}, + {0.3048, Units::Meters, Units::Feet, 1, Units::Feet}, + {0.4573, Units::Meters, Units::Feet, 2, Units::Feet}, + {0.9, Units::Meters, Units::Feet, 3, Units::Feet}, + {3, Units::Meters, Units::Feet, 10, Units::Feet}, + {30.17, Units::Meters, Units::Feet, 99, Units::Feet}, + {30.33, Units::Meters, Units::Feet, 100, Units::Feet}, + {30.49, Units::Meters, Units::Feet, 100, Units::Feet}, + {33.5, Units::Meters, Units::Feet, 110, Units::Feet}, + {302, Units::Meters, Units::Feet, 990, Units::Feet}, + {304.7, Units::Meters, Units::Feet, 0.2, Units::Miles}, + {304.8, Units::Meters, Units::Feet, 0.2, Units::Miles}, + {402.3, Units::Meters, Units::Feet, 0.2, Units::Miles}, + {402.4, Units::Meters, Units::Feet, 0.3, Units::Miles}, + {482.8, Units::Meters, Units::Feet, 0.3, Units::Miles}, + {1609.3, Units::Meters, Units::Feet, 1.0, Units::Miles}, + {1610, Units::Meters, Units::Feet, 1.0, Units::Miles}, + {1770, Units::Meters, Units::Feet, 1.1, Units::Miles}, + {15933, Units::Meters, Units::Feet, 9.9, Units::Miles}, + {16093, Units::Meters, Units::Feet, 10, Units::Miles}, + {16093.5, Units::Meters, Units::Feet, 10, Units::Miles}, + {16898.464, Units::Meters, Units::Feet, 11, Units::Miles}, + {16898.113, Units::Meters, Units::Kilometers, 17, Units::Kilometers}, + {302, Units::Meters, Units::Miles, 990, Units::Feet}, + {994, Units::Meters, Units::Kilometers, 990, Units::Meters}, + {995, Units::Meters, Units::Kilometers, 1.0, Units::Kilometers}, + {0.1, Units::Kilometers, Units::Meters, 100, Units::Meters}, + {0.3, Units::Kilometers, Units::Kilometers, 300, Units::Meters}, + {12, Units::Kilometers, Units::Feet, 7.5, Units::Miles}, + {0.1, Units::Kilometers, Units::Feet, 330, Units::Feet}, + {110, Units::Feet, Units::Meters, 34, Units::Meters}, + {1100, Units::Feet, Units::Kilometers, 340, Units::Meters}, + {1100, Units::Feet, Units::Meters, 340, Units::Meters}, + {1100, Units::Feet, Units::Miles, 0.2, Units::Miles}, + {0.2, Units::Miles, Units::Meters, 320, Units::Meters}, + {11, Units::Miles, Units::Meters, 18, Units::Kilometers}, + {11, Units::Miles, Units::Kilometers, 18, Units::Kilometers}, + {0.1, Units::Miles, Units::Feet, 530, Units::Feet}, }; // clang-format on @@ -178,187 +171,186 @@ UNIT_TEST(Distance_To) UNIT_TEST(Distance_ToPlatformUnitsFormatted) { - using enum Distance::Units; { ScopedSettings const guard(measurement_utils::Units::Metric); - Distance d{11, Feet}; + Distance d{11, Distance::Units::Feet}; Distance newDistance = d.ToPlatformUnitsFormatted(); - TEST_EQUAL(newDistance.GetUnits(), Meters, (d.ToString())); + TEST_EQUAL(newDistance.GetUnits(), Distance::Units::Meters, (d.ToString())); TEST_ALMOST_EQUAL_ULPS(newDistance.GetDistance(), 3.0, (d.ToString())); TEST_EQUAL(newDistance.GetDistanceString(), "3", (d.ToString())); - TEST_EQUAL(newDistance.ToString(), MakeDistanceStr("3", Meters), (d.ToString())); + TEST_EQUAL(newDistance.ToString(), MakeDistanceStr("3", "m"), (d.ToString())); - d = Distance{11, Kilometers}; + d = Distance{11, Distance::Units::Kilometers}; newDistance = d.ToPlatformUnitsFormatted(); - TEST_EQUAL(newDistance.GetUnits(), Kilometers, (d.ToString())); + TEST_EQUAL(newDistance.GetUnits(), Distance::Units::Kilometers, (d.ToString())); TEST_ALMOST_EQUAL_ULPS(newDistance.GetDistance(), 11.0, (d.ToString())); TEST_EQUAL(newDistance.GetDistanceString(), "11", (d.ToString())); - TEST_EQUAL(newDistance.ToString(), MakeDistanceStr("11", Kilometers), (d.ToString())); + TEST_EQUAL(newDistance.ToString(), MakeDistanceStr("11", "km"), (d.ToString())); } { ScopedSettings const guard(measurement_utils::Units::Imperial); - Distance d{11, Feet}; + Distance d{11, Distance::Units::Feet}; Distance newDistance = d.ToPlatformUnitsFormatted(); - TEST_EQUAL(newDistance.GetUnits(), Feet, (d.ToString())); + TEST_EQUAL(newDistance.GetUnits(), Distance::Units::Feet, (d.ToString())); TEST_ALMOST_EQUAL_ULPS(newDistance.GetDistance(), 11.0, (d.ToString())); TEST_EQUAL(newDistance.GetDistanceString(), "11", (d.ToString())); - TEST_EQUAL(newDistance.ToString(), MakeDistanceStr("11", Feet), (d.ToString())); + TEST_EQUAL(newDistance.ToString(), MakeDistanceStr("11", "ft"), (d.ToString())); - d = Distance{11, Kilometers}; + d = Distance{11, Distance::Units::Kilometers}; newDistance = d.ToPlatformUnitsFormatted(); - TEST_EQUAL(newDistance.GetUnits(), Miles, (d.ToString())); + TEST_EQUAL(newDistance.GetUnits(), Distance::Units::Miles, (d.ToString())); TEST_ALMOST_EQUAL_ULPS(newDistance.GetDistance(), 6.8, (d.ToString())); TEST_EQUAL(newDistance.GetDistanceString(), "6.8", (d.ToString())); - TEST_EQUAL(newDistance.ToString(), MakeDistanceStr("6.8", Miles), (d.ToString())); + TEST_EQUAL(newDistance.ToString(), MakeDistanceStr("6.8", "mi"), (d.ToString())); } } UNIT_TEST(Distance_GetUnits) { - using enum Distance::Units; - TEST_EQUAL(Distance(1234).GetUnits(), Meters, ()); - TEST_EQUAL(Distance(1234, Kilometers).GetUnits(), Kilometers, ()); - TEST_EQUAL(Distance(1234, Feet).GetUnits(), Feet, ()); - TEST_EQUAL(Distance(1234, Miles).GetUnits(), Miles, ()); + TEST_EQUAL(Distance(1234).GetUnits(), Distance::Units::Meters, ()); + TEST_EQUAL(Distance(1234, Distance::Units::Kilometers).GetUnits(), Distance::Units::Kilometers, ()); + TEST_EQUAL(Distance(1234, Distance::Units::Feet).GetUnits(), Distance::Units::Feet, ()); + TEST_EQUAL(Distance(1234, Distance::Units::Miles).GetUnits(), Distance::Units::Miles, ()); } UNIT_TEST(Distance_GetUnitsString) { - using enum Distance::Units; TEST_EQUAL(Distance(1234).GetUnitsString(), "m", ()); - TEST_EQUAL(Distance(1234, Meters).GetUnitsString(), "m", ()); - TEST_EQUAL(Distance(1234, Kilometers).GetUnitsString(), "km", ()); - TEST_EQUAL(Distance(1234, Feet).GetUnitsString(), "ft", ()); - TEST_EQUAL(Distance(1234, Miles).GetUnitsString(), "mi", ()); + TEST_EQUAL(Distance(1234, Distance::Units::Meters).GetUnitsString(), "m", ()); + TEST_EQUAL(Distance(1234, Distance::Units::Kilometers).GetUnitsString(), "km", ()); + TEST_EQUAL(Distance(1234, Distance::Units::Feet).GetUnitsString(), "ft", ()); + TEST_EQUAL(Distance(1234, Distance::Units::Miles).GetUnitsString(), "mi", ()); } UNIT_TEST(Distance_FormattedDistance) { + using Units = Distance::Units; + struct TestData { Distance distance; double formattedDistance; - Distance::Units formattedUnits; - std::string formattedDistanceStringInUsLocale; + Units formattedUnits; + std::string formattedDistanceString; + std::string formattedString; }; - using enum Distance::Units; // clang-format off TestData const testData[] = { // From Meters to Meters - {Distance(0, Meters), 0, Meters, "0"}, - {Distance(0.3, Meters), 0, Meters, "0"}, - {Distance(0.9, Meters), 1, Meters, "1"}, - {Distance(1, Meters), 1, Meters, "1"}, - {Distance(1.234, Meters), 1, Meters, "1"}, - {Distance(9.99, Meters), 10, Meters, "10"}, - {Distance(10.01, Meters), 10, Meters, "10"}, - {Distance(10.4, Meters), 10, Meters, "10"}, - {Distance(10.5, Meters), 11, Meters, "11"}, - {Distance(10.51, Meters), 11, Meters, "11"}, - {Distance(64.2, Meters), 64, Meters, "64"}, - {Distance(99, Meters), 99, Meters, "99"}, - {Distance(100, Meters), 100, Meters, "100"}, - {Distance(101, Meters), 100, Meters, "100"}, - {Distance(109, Meters), 110, Meters, "110"}, - {Distance(991, Meters), 990, Meters, "990"}, + {Distance(0, Units::Meters), 0, Units::Meters, "0", MakeDistanceStr("0", "m")}, + {Distance(0.3, Units::Meters), 0, Units::Meters, "0", MakeDistanceStr("0", "m")}, + {Distance(0.9, Units::Meters), 1, Units::Meters, "1", MakeDistanceStr("1", "m")}, + {Distance(1, Units::Meters), 1, Units::Meters, "1", MakeDistanceStr("1", "m")}, + {Distance(1.234, Units::Meters), 1, Units::Meters, "1", MakeDistanceStr("1", "m")}, + {Distance(9.99, Units::Meters), 10, Units::Meters, "10", MakeDistanceStr("10", "m")}, + {Distance(10.01, Units::Meters), 10, Units::Meters, "10", MakeDistanceStr("10", "m")}, + {Distance(10.4, Units::Meters), 10, Units::Meters, "10", MakeDistanceStr("10", "m")}, + {Distance(10.5, Units::Meters), 11, Units::Meters, "11", MakeDistanceStr("11", "m")}, + {Distance(10.51, Units::Meters), 11, Units::Meters, "11", MakeDistanceStr("11", "m")}, + {Distance(64.2, Units::Meters), 64, Units::Meters, "64", MakeDistanceStr("64", "m")}, + {Distance(99, Units::Meters), 99, Units::Meters, "99", MakeDistanceStr("99", "m")}, + {Distance(100, Units::Meters), 100, Units::Meters, "100", MakeDistanceStr("100", "m")}, + {Distance(101, Units::Meters), 100, Units::Meters, "100", MakeDistanceStr("100", "m")}, + {Distance(109, Units::Meters), 110, Units::Meters, "110", MakeDistanceStr("110", "m")}, + {Distance(991, Units::Meters), 990, Units::Meters, "990", MakeDistanceStr("990", "m")}, // From Kilometers to Kilometers - {Distance(0, Kilometers), 0, Meters, "0"}, - {Distance(0.3, Kilometers), 300, Meters, "300"}, - {Distance(1.234, Kilometers), 1.2, Kilometers, "1.2"}, - {Distance(10, Kilometers), 10, Kilometers, "10"}, - {Distance(11, Kilometers), 11, Kilometers, "11"}, - {Distance(54, Kilometers), 54, Kilometers, "54"}, - {Distance(99.99, Kilometers), 100, Kilometers, "100"}, - {Distance(100.01, Kilometers), 100, Kilometers, "100"}, - {Distance(115, Kilometers), 115, Kilometers, "115"}, - {Distance(999, Kilometers), 999, Kilometers, "999"}, - {Distance(1000, Kilometers), 1000, Kilometers, "1000"}, - {Distance(1049.99, Kilometers), 1050, Kilometers, "1050"}, - {Distance(1050, Kilometers), 1050, Kilometers, "1050"}, - {Distance(1050.01, Kilometers), 1050, Kilometers, "1050"}, - {Distance(1234, Kilometers), 1234, Kilometers, "1234"}, - {Distance(12345, Kilometers), 12345, Kilometers, "12,345"}, + {Distance(0, Units::Kilometers), 0, Units::Meters, "0", MakeDistanceStr("0", "m")}, + {Distance(0.3, Units::Kilometers), 300, Units::Meters, "300", MakeDistanceStr("300", "m")}, + {Distance(1.234, Units::Kilometers), 1.2, Units::Kilometers, "1.2", MakeDistanceStr("1.2", "km")}, + {Distance(10, Units::Kilometers), 10, Units::Kilometers, "10", MakeDistanceStr("10", "km")}, + {Distance(11, Units::Kilometers), 11, Units::Kilometers, "11", MakeDistanceStr("11", "km")}, + {Distance(54, Units::Kilometers), 54, Units::Kilometers, "54", MakeDistanceStr("54", "km")}, + {Distance(99.99, Units::Kilometers), 100, Units::Kilometers, "100", MakeDistanceStr("100", "km")}, + {Distance(100.01, Units::Kilometers), 100, Units::Kilometers, "100", MakeDistanceStr("100", "km")}, + {Distance(115, Units::Kilometers), 115, Units::Kilometers, "115", MakeDistanceStr("115", "km")}, + {Distance(999, Units::Kilometers), 999, Units::Kilometers, "999", MakeDistanceStr("999", "km")}, + {Distance(1000, Units::Kilometers), 1000, Units::Kilometers, "1000", MakeDistanceStr("1000", "km")}, + {Distance(1049.99, Units::Kilometers), 1050, Units::Kilometers, "1050", MakeDistanceStr("1050", "km")}, + {Distance(1050, Units::Kilometers), 1050, Units::Kilometers, "1050", MakeDistanceStr("1050", "km")}, + {Distance(1050.01, Units::Kilometers), 1050, Units::Kilometers, "1050", MakeDistanceStr("1050", "km")}, + {Distance(1234, Units::Kilometers), 1234, Units::Kilometers, "1234", MakeDistanceStr("1234", "km")}, + {Distance(12345, Units::Kilometers), 12345, Units::Kilometers, "12,345", MakeDistanceStr("12,345", "km")}, // From Feet to Feet - {Distance(0, Feet), 0, Feet, "0"}, - {Distance(1, Feet), 1, Feet, "1"}, - {Distance(9.99, Feet), 10, Feet, "10"}, - {Distance(10.01, Feet), 10, Feet, "10"}, - {Distance(95, Feet), 95, Feet, "95"}, - {Distance(125, Feet), 130, Feet, "130"}, - {Distance(991, Feet), 990, Feet, "990"}, + {Distance(0, Units::Feet), 0, Units::Feet, "0", MakeDistanceStr("0", "ft")}, + {Distance(1, Units::Feet), 1, Units::Feet, "1", MakeDistanceStr("1", "ft")}, + {Distance(9.99, Units::Feet), 10, Units::Feet, "10", MakeDistanceStr("10", "ft")}, + {Distance(10.01, Units::Feet), 10, Units::Feet, "10", MakeDistanceStr("10", "ft")}, + {Distance(95, Units::Feet), 95, Units::Feet, "95", MakeDistanceStr("95", "ft")}, + {Distance(125, Units::Feet), 130, Units::Feet, "130", MakeDistanceStr("130", "ft")}, + {Distance(991, Units::Feet), 990, Units::Feet, "990", MakeDistanceStr("990", "ft")}, // From Miles to Miles - {Distance(0, Miles), 0, Feet, "0"}, - {Distance(0.1, Miles), 530, Feet, "530"}, - {Distance(1, Miles), 1.0, Miles, "1.0"}, - {Distance(1.234, Miles), 1.2, Miles, "1.2"}, - {Distance(9.99, Miles), 10, Miles, "10"}, - {Distance(10.01, Miles), 10, Miles, "10"}, - {Distance(11, Miles), 11, Miles, "11"}, - {Distance(54, Miles), 54, Miles, "54"}, - {Distance(145, Miles), 145, Miles, "145"}, - {Distance(999, Miles), 999, Miles, "999"}, - {Distance(1149.99, Miles), 1150, Miles, "1150"}, - {Distance(1150, Miles), 1150, Miles, "1150"}, - {Distance(1150.01, Miles), 1150, Miles, "1150"}, - {Distance(12345.0, Miles), 12345, Miles, "12,345"}, + {Distance(0, Units::Miles), 0, Units::Feet, "0", MakeDistanceStr("0", "ft")}, + {Distance(0.1, Units::Miles), 530, Units::Feet, "530", MakeDistanceStr("530", "ft")}, + {Distance(1, Units::Miles), 1.0, Units::Miles, "1.0", MakeDistanceStr("1.0", "mi")}, + {Distance(1.234, Units::Miles), 1.2, Units::Miles, "1.2", MakeDistanceStr("1.2", "mi")}, + {Distance(9.99, Units::Miles), 10, Units::Miles, "10", MakeDistanceStr("10", "mi")}, + {Distance(10.01, Units::Miles), 10, Units::Miles, "10", MakeDistanceStr("10", "mi")}, + {Distance(11, Units::Miles), 11, Units::Miles, "11", MakeDistanceStr("11", "mi")}, + {Distance(54, Units::Miles), 54, Units::Miles, "54", MakeDistanceStr("54", "mi")}, + {Distance(145, Units::Miles), 145, Units::Miles, "145", MakeDistanceStr("145", "mi")}, + {Distance(999, Units::Miles), 999, Units::Miles, "999", MakeDistanceStr("999", "mi")}, + {Distance(1149.99, Units::Miles), 1150, Units::Miles, "1150", MakeDistanceStr("1150", "mi")}, + {Distance(1150, Units::Miles), 1150, Units::Miles, "1150", MakeDistanceStr("1150", "mi")}, + {Distance(1150.01, Units::Miles), 1150, Units::Miles, "1150", MakeDistanceStr("1150", "mi")}, + {Distance(12345.0, Units::Miles), 12345, Units::Miles, "12,345", MakeDistanceStr("12,345", "mi")}, // From Meters to Kilometers - {Distance(999, Meters), 1.0, Kilometers, "1.0"}, - {Distance(1000, Meters), 1.0, Kilometers, "1.0"}, - {Distance(1001, Meters), 1.0, Kilometers, "1.0"}, - {Distance(1100, Meters), 1.1, Kilometers, "1.1"}, - {Distance(1140, Meters), 1.1, Kilometers, "1.1"}, - {Distance(1151, Meters), 1.2, Kilometers, "1.2"}, - {Distance(1500, Meters), 1.5, Kilometers, "1.5"}, - {Distance(1549.9, Meters), 1.5, Kilometers, "1.5"}, - {Distance(1550, Meters), 1.6, Kilometers, "1.6"}, - {Distance(1551, Meters), 1.6, Kilometers, "1.6"}, - {Distance(9949, Meters), 9.9, Kilometers, "9.9"}, - {Distance(9992, Meters), 10, Kilometers, "10"}, - {Distance(10000, Meters), 10, Kilometers, "10"}, - {Distance(10499.9, Meters), 10, Kilometers, "10"}, - {Distance(10501, Meters), 11, Kilometers, "11"}, - {Distance(101'001, Meters), 101, Kilometers, "101"}, - {Distance(101'999, Meters), 102, Kilometers, "102"}, - {Distance(287'386, Meters), 287, Kilometers, "287"}, + {Distance(999, Units::Meters), 1.0, Units::Kilometers, "1.0", MakeDistanceStr("1.0", "km")}, + {Distance(1000, Units::Meters), 1.0, Units::Kilometers, "1.0", MakeDistanceStr("1.0", "km")}, + {Distance(1001, Units::Meters), 1.0, Units::Kilometers, "1.0", MakeDistanceStr("1.0", "km")}, + {Distance(1100, Units::Meters), 1.1, Units::Kilometers, "1.1", MakeDistanceStr("1.1", "km")}, + {Distance(1140, Units::Meters), 1.1, Units::Kilometers, "1.1", MakeDistanceStr("1.1", "km")}, + {Distance(1151, Units::Meters), 1.2, Units::Kilometers, "1.2", MakeDistanceStr("1.2", "km")}, + {Distance(1500, Units::Meters), 1.5, Units::Kilometers, "1.5", MakeDistanceStr("1.5", "km")}, + {Distance(1549.9, Units::Meters), 1.5, Units::Kilometers, "1.5", MakeDistanceStr("1.5", "km")}, + {Distance(1550, Units::Meters), 1.6, Units::Kilometers, "1.6", MakeDistanceStr("1.6", "km")}, + {Distance(1551, Units::Meters), 1.6, Units::Kilometers, "1.6", MakeDistanceStr("1.6", "km")}, + {Distance(9949, Units::Meters), 9.9, Units::Kilometers, "9.9", MakeDistanceStr("9.9", "km")}, + {Distance(9992, Units::Meters), 10, Units::Kilometers, "10", MakeDistanceStr("10", "km")}, + {Distance(10000, Units::Meters), 10, Units::Kilometers, "10", MakeDistanceStr("10", "km")}, + {Distance(10499.9, Units::Meters), 10, Units::Kilometers, "10", MakeDistanceStr("10", "km")}, + {Distance(10501, Units::Meters), 11, Units::Kilometers, "11", MakeDistanceStr("11", "km")}, + {Distance(101'001, Units::Meters), 101, Units::Kilometers, "101", MakeDistanceStr("101", "km")}, + {Distance(101'999, Units::Meters), 102, Units::Kilometers, "102", MakeDistanceStr("102", "km")}, + {Distance(287'386, Units::Meters), 287, Units::Kilometers, "287", MakeDistanceStr("287", "km")}, // From Feet to Miles - {Distance(999, Feet), 0.2, Miles, "0.2"}, - {Distance(1000, Feet), 0.2, Miles, "0.2"}, - {Distance(1150, Feet), 0.2, Miles, "0.2"}, - {Distance(5280, Feet), 1.0, Miles, "1.0"}, - {Distance(7920, Feet), 1.5, Miles, "1.5"}, - {Distance(10560, Feet), 2.0, Miles, "2.0"}, - {Distance(100'000, Feet), 19, Miles, "19"}, - {Distance(285'120, Feet), 54, Miles, "54"}, - {Distance(633'547, Feet), 120, Miles, "120"}, - {Distance(633'600, Feet), 120, Miles, "120"}, - {Distance(633'653, Feet), 120, Miles, "120"}, - {Distance(999'999, Feet), 189, Miles, "189"}, + {Distance(999, Units::Feet), 0.2, Units::Miles, "0.2", MakeDistanceStr("0.2", "mi")}, + {Distance(1000, Units::Feet), 0.2, Units::Miles, "0.2", MakeDistanceStr("0.2", "mi")}, + {Distance(1150, Units::Feet), 0.2, Units::Miles, "0.2", MakeDistanceStr("0.2", "mi")}, + {Distance(5280, Units::Feet), 1.0, Units::Miles, "1.0", MakeDistanceStr("1.0", "mi")}, + {Distance(7920, Units::Feet), 1.5, Units::Miles, "1.5", MakeDistanceStr("1.5", "mi")}, + {Distance(10560, Units::Feet), 2.0, Units::Miles, "2.0", MakeDistanceStr("2.0", "mi")}, + {Distance(100'000, Units::Feet), 19, Units::Miles, "19", MakeDistanceStr("19", "mi")}, + {Distance(285'120, Units::Feet), 54, Units::Miles, "54", MakeDistanceStr("54", "mi")}, + {Distance(633'547, Units::Feet), 120, Units::Miles, "120", MakeDistanceStr("120", "mi")}, + {Distance(633'600, Units::Feet), 120, Units::Miles, "120", MakeDistanceStr("120", "mi")}, + {Distance(633'653, Units::Feet), 120, Units::Miles, "120", MakeDistanceStr("120", "mi")}, + {Distance(999'999, Units::Feet), 189, Units::Miles, "189", MakeDistanceStr("189", "mi")}, }; // clang-format on - for (auto const & [distance, formattedDistance, formattedUnits, formattedDistanceStringInUsLocale] : testData) + for (TestData const & data : testData) { - Distance const formatted = distance.GetFormattedDistance(); + Distance const formatted = data.distance.GetFormattedDistance(); // Run two times to verify that nothing breaks after second format for (auto const & d : {formatted, formatted.GetFormattedDistance()}) { - TEST_ALMOST_EQUAL_ULPS(d.GetDistance(), formattedDistance, (distance)); - TEST_EQUAL(d.GetUnits(), formattedUnits, (distance)); - auto const formattedString = MakeDistanceStr(formattedDistanceStringInUsLocale, formattedUnits); - TEST_EQUAL(d.ToString(), formattedString, (distance)); + TEST_ALMOST_EQUAL_ULPS(d.GetDistance(), data.formattedDistance, (data.distance)); + TEST_EQUAL(d.GetUnits(), data.formattedUnits, (data.distance)); + TEST_EQUAL(d.GetDistanceString(), data.formattedDistanceString, (data.distance)); + TEST_EQUAL(d.ToString(), data.formattedString, (data.distance)); } } } diff --git a/platform/platform_unix_impl.cpp b/platform/platform_unix_impl.cpp index c5ac6b5843..231381e9be 100644 --- a/platform/platform_unix_impl.cpp +++ b/platform/platform_unix_impl.cpp @@ -114,7 +114,7 @@ Platform::TStorageStatus Platform::GetWritableStorageStatus(uint64_t neededSize) struct statfs st; int const ret = statfs(m_writableDir.c_str(), &st); - LOG(LINFO, ("statfs return =", ret, + LOG(LDEBUG, ("statfs return =", ret, "; block size =", st.f_bsize, "; blocks available =", st.f_bavail)); @@ -125,7 +125,7 @@ Platform::TStorageStatus Platform::GetWritableStorageStatus(uint64_t neededSize) } auto const availableBytes = st.f_bsize * st.f_bavail; - LOG(LINFO, ("Free space check: requested =", neededSize, "; available =", availableBytes)); + LOG(LDEBUG, ("Free space check: requested =", neededSize, "; available =", availableBytes)); if (availableBytes < neededSize) return NOT_ENOUGH_SPACE; diff --git a/qt/CMakeLists.txt b/qt/CMakeLists.txt index 8513577266..e9265004b0 100644 --- a/qt/CMakeLists.txt +++ b/qt/CMakeLists.txt @@ -139,7 +139,6 @@ copy_resources( 00_NotoNaskhArabic-Regular.ttf 00_NotoSansBengali-Regular.ttf - 00_NotoSansHebrew-Regular.ttf 00_NotoSansMalayalam-Regular.ttf 00_NotoSansThai-Regular.ttf 00_NotoSerifDevanagari-Regular.ttf diff --git a/routing/route.cpp b/routing/route.cpp index 3bfd7d096f..e18a2a86d1 100644 --- a/routing/route.cpp +++ b/routing/route.cpp @@ -535,9 +535,6 @@ std::string Route::DebugPrintTurns() const // Always print first elemenst as Start. if (i == 0 || !turn.IsTurnNone()) { - res += DebugPrint(mercator::ToLatLon(m_routeSegments[i].GetJunction())); - res += "\n"; - res += DebugPrint(turn); res += "\n"; diff --git a/routing/routing_helpers.cpp b/routing/routing_helpers.cpp index 22244cd452..78dff21fe5 100644 --- a/routing/routing_helpers.cpp +++ b/routing/routing_helpers.cpp @@ -72,7 +72,7 @@ void ReconstructRoute(DirectionsEngine & engine, IndexRoadGraph const & graph, route.SetGeometry(routeGeometry.begin(), routeGeometry.end()); - LOG(LINFO, (route.DebugPrintTurns())); + LOG(LDEBUG, (route.DebugPrintTurns())); } Segment ConvertEdgeToSegment(NumMwmIds const & numMwmIds, Edge const & edge) diff --git a/routing/turns_notification_manager.cpp b/routing/turns_notification_manager.cpp index 7867f490c0..8408493c53 100644 --- a/routing/turns_notification_manager.cpp +++ b/routing/turns_notification_manager.cpp @@ -189,8 +189,6 @@ std::string NotificationManager::GenerateFirstTurnSound(TurnItem const & turn, d uint32_t const roundedDistToPronounceUnits = m_settings.RoundByPresetSoundedDistancesUnits(distToPronounceUnits); m_nextTurnNotificationProgress = PronouncedNotification::First; - - LOG(LINFO, ("TTS meters to pronounce", distanceToPronounceNotificationM, "meters to turn", distanceToTurnMeters, "meters to start pronounce", startPronounceDistMeters, "speed m/s", m_speedMetersPerSecond)); return GenerateTurnText(roundedDistToPronounceUnits, turn.m_exitNum, false /* useThenInsteadOfDistance */, turn, nextStreetInfo); } @@ -211,8 +209,6 @@ std::string NotificationManager::GenerateFirstTurnSound(TurnItem const & turn, d { m_nextTurnNotificationProgress = PronouncedNotification::Second; FastForwardFirstTurnNotification(); - - LOG(LINFO,("TTS meters to pronounce", distanceToPronounceNotificationM, "meters to turn", distanceToTurnMeters, "speed m/s", m_speedMetersPerSecond)); return GenerateTurnText(0 /* distMeters */, turn.m_exitNum, false /* useThenInsteadOfDistance */, turn, nextStreetInfo); } diff --git a/storage/storage.cpp b/storage/storage.cpp index 6c8d12a895..208efc4661 100644 --- a/storage/storage.cpp +++ b/storage/storage.cpp @@ -23,7 +23,6 @@ #include "base/logging.hpp" #include "base/stl_helpers.hpp" #include "base/string_utils.hpp" -#include "base/timer.hpp" #include "defines.hpp" @@ -43,16 +42,6 @@ namespace { string const kDownloadQueueKey = "DownloadQueue"; - -// Editing maps older than approximately three months old is disabled, since the data -// is most likely already fixed on OSM. Not limited to the latest one or two versions, -// because a user can forget to update maps after a new app version has been installed -// automatically in the background. -uint64_t const kMaxSecondsTillLastVersionUpdate = 3600 * 24 * 31 * 3; -// Editing maps older than approximately six months old is disabled, because the device -// may have been offline for a long time. -uint64_t const kMaxSecondsTillNoEdits = 3600 * 24 * 31 * 6; - void DeleteCountryIndexes(LocalCountryFile const & localFile) { platform::CountryIndexes::DeleteFromDisk(localFile); @@ -1280,25 +1269,6 @@ bool Storage::HasLatestVersion(CountryId const & countryId) const return CountryStatusEx(countryId) == Status::OnDisk; } -bool Storage::IsAllowedToEditVersion(CountryId const & countryId) const -{ - auto const status = CountryStatusEx(countryId); - switch (status) - { - case Status::OnDisk: return true; - case Status::OnDiskOutOfDate: - { - auto const localFile = GetLatestLocalFile(countryId); - ASSERT(localFile, ("Local file shouldn't be nullptr.")); - auto const currentVersionTime = base::YYMMDDToSecondsSinceEpoch(static_cast(m_currentVersion)); - auto const localVersionTime = base::YYMMDDToSecondsSinceEpoch(static_cast(localFile->GetVersion())); - return currentVersionTime - localVersionTime < kMaxSecondsTillLastVersionUpdate && - base::SecondsSinceEpoch() - localVersionTime < kMaxSecondsTillNoEdits; - } - default: return false; - } -} - int64_t Storage::GetVersion(CountryId const & countryId) const { CHECK_THREAD_CHECKER(m_threadChecker, ()); diff --git a/storage/storage.hpp b/storage/storage.hpp index 92100159bc..992b016172 100644 --- a/storage/storage.hpp +++ b/storage/storage.hpp @@ -378,9 +378,6 @@ public: /// \brief Returns true if the last version of countryId has been downloaded. bool HasLatestVersion(CountryId const & countryId) const; - /// \brief Returns true if the version of countryId can be used to update maps. - bool IsAllowedToEditVersion(CountryId const & countryId) const; - /// Returns version of downloaded mwm or zero. int64_t GetVersion(CountryId const & countryId) const;