diff --git a/locales/pt.json b/locales/pt.json
new file mode 100644
index 0000000..7a6446c
--- /dev/null
+++ b/locales/pt.json
@@ -0,0 +1,171 @@
+{
+ "about": {
+ "bug-reports": "Relatórios de erros e pedidos de novas funcionalidades:",
+ "bug-reports-back": "server / backend, routing engine, Android app, profiles, brouter.de site:",
+ "bug-reports-front": "web client / frontend:",
+ "contact": "Contacto:",
+ "data": "Dados:",
+ "data-description": "This is based on OpenStreetMap. It is usually updated once a week when a new Planet file is available, see dates of data files.",
+ "description": "Online service of the BRouter routing engine. For the offline Android app and more information see brouter.de.",
+ "details": "Privacy Policy, \nCredits,\nChangelog and\nmore info on the client.",
+ "support": "General discussions/questions, support:",
+ "title": "Sobre"
+ },
+ "credits": {
+ "brouter": "BRouter",
+ "brouter-license": "BRouter © Arndt Brenschede",
+ "cycling-hiking-tiles": "Cycling & Hiking tiles",
+ "digitalglobe-license": "© DigitalGlobe (Terms of Use)",
+ "esri-license": "World Imagery © Esri, sources: Esri, DigitalGlobe, Earthstar Geographics, CNES/Airbus DS, GeoEye, USDA FSA, USGS, Getmapping, Aerogrid, IGN, IGP, and the GIS User Community",
+ "esri-tiles": "Esri World Imagery",
+ "map-data": "Dados do mapa",
+ "nominatim": "Search by Nominatim",
+ "opencyclemap-outdoors-tiles": "OpenCycleMap & Outdoors tiles",
+ "openstreetmap": "© OpenStreetMap contributors under ODbL",
+ "opentopomap-license": "© OpenTopoMap under CC-BY-SA SRTM",
+ "opentopomap-tiles": "OpenTopoMap tiles",
+ "osm-license": "openstreetmap.org under CC-BY-SA 2.0",
+ "osm-tiles": "OpenStreetMap tiles",
+ "osmde-tiles": "OpenStreetMap.de tiles",
+ "thunderforest-license": "© Thunderforest under CC-BY-SA 2.0",
+ "waymarked-license": "© Waymarked Trails under CC-BY-SA 3.0 DE"
+ },
+ "footer": {
+ "ascend": "Ascend (Plain ascend)",
+ "cost": "Cost (Mean cost factor)",
+ "distance": "Distance",
+ "kilometer": "kilometer",
+ "kilometer-abbrev": "km",
+ "kilowatthour": "kilowatt hour",
+ "kilowatthour-abbrev": "kWh",
+ "meter": "meter",
+ "meter-abbrev": "m",
+ "minutes": "minutes",
+ "minutes-abbrev": "min",
+ "total-energy": "Total Energy (per 100km)",
+ "travel-time": "Travel time"
+ },
+ "layers": {
+ "add-base": "Add base layer",
+ "add-overlay": "Add overlay",
+ "customize": "Customize layers",
+ "placeholder-layer-name": "Custom layer name. (ex: OpenStreetMap)",
+ "placeholder-layer-url": "Custom layer URL. (ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png)",
+ "remove-selection": "Remove selection"
+ },
+ "map": {
+ "attribution-osm-long": "OpenStreetMap contributors",
+ "attribution-osm-short": "OpenStreetMap",
+ "clear-route": "Clear route",
+ "copyright": "Copyright",
+ "cycling": "Cycling",
+ "delete-nogo-areas": " also delete all no-go areas",
+ "delete-route": "Delete route?",
+ "draw-route-start": "Draw route (D key)",
+ "draw-route-stop": "Stop drawing route (ESC key)",
+ "hiking": "Hiking",
+ "layer": {
+ "bing": "Bing Aerial",
+ "cycle": "OpenCycleMap (Thunderf.)",
+ "cycling": "Cycling (Waymarked Trails)",
+ "digitalglobe": "DigitalGlobe Recent Imagery",
+ "esri": "Esri World Imagery",
+ "hiking": "Hiking (Waymarked Trails)",
+ "osm": "OpenStreetMap",
+ "osmde": "OpenStreetMap.de",
+ "outdoors": "Outdoors (Thunderforest)",
+ "strava-segments": "Strava segments",
+ "topo": "OpenTopoMap"
+ },
+ "loading": "Loading…",
+ "locate-me": "Show me where I am",
+ "nogo": {
+ "cancel": "Cancel drawing no-go area",
+ "click-drag": "Click and drag to draw circle",
+ "draw": "Draw no-go area (circle)",
+ "edit": "Click to edit",
+ "help": "□ = move / resize, = delete,
click circle to quit editing"
+ },
+ "opacity-slider": "Set transparency of route track and markers",
+ "privacy": "Privacy",
+ "strava-biking": "Show Strava biking segments",
+ "strava-running": "Show Strava running segments",
+ "zoomInTitle": "Zoom in",
+ "zoomOutTitle": "Zoom out"
+ },
+ "navbar": {
+ "about": "About",
+ "alternative": {
+ "first": "1st alternative",
+ "original": "Original",
+ "second": "2nd alternative",
+ "third": "3rd alternative"
+ },
+ "download": {
+ "csv": "data CSV",
+ "geojson": "GeoJSON",
+ "gpx": "GPX",
+ "kml": "KML",
+ "title": "Download"
+ },
+ "profile": {
+ "car-eco": "Car (economic)",
+ "car-fast": "Car (fast)",
+ "car-test": "Car (test)",
+ "custom": "Custom",
+ "fastbike": "Fastbike",
+ "fastbike-asia-pacific": "Fastbike (Asia Pacific)",
+ "fastbike-lowtraffic": "Fastbike (low traffic)",
+ "hiking-beta": "Hiking (beta)",
+ "moped": "Moped",
+ "rail": "Rail",
+ "river": "River",
+ "safety": "Safety",
+ "shortest": "Shortest",
+ "trekking": "Trekking bike",
+ "trekking-ignore-cr": "Trekking bike (ignore cycle routes)",
+ "trekking-noferries": "Trekking bike (no ferries)",
+ "trekking-nosteps": "Trekking bike (no steps)",
+ "trekking-steep": "Trekking bike (steep)",
+ "vm-forum-liegerad-schnell": "Recumbent bike (fast)",
+ "vm-forum-velomobil-schnell": "Velomobile (fast)"
+ }
+ },
+ "sidebar": {
+ "custom-profile": {
+ "title": "Custom profile"
+ },
+ "data": {
+ "title": "Data"
+ },
+ "itinerary": {
+ "title": "Itinerary"
+ },
+ "layers": {
+ "custom-layers": "Custom layers",
+ "customize": "Add or remove custom layers",
+ "table": {
+ "URL": "URL",
+ "empty": "No custom layer configured yet.",
+ "name": "Name",
+ "type": "Type"
+ },
+ "title": "Layers"
+ },
+ "profile": {
+ "clear": "Clear",
+ "help": "Help",
+ "placeholder": "Write your custom profile here.",
+ "upload": "Upload"
+ }
+ },
+ "title": "BRouter web client",
+ "warning": {
+ "cannot-get-route": "Error getting route URL",
+ "no-response": "no response from server",
+ "no-route-found": "Error: cannot find a route for given points. Maybe try to move them closer to roads?",
+ "profile-error": "Profile error: no or empty response from server",
+ "temporary-profile": "Note: Uploaded custom profiles are only cached temporarily on the server.
Please save your edits to your local PC.",
+ "upload-error": "Upload error: {{error}}"
+ }
+}
diff --git a/locales/zh-TW.json b/locales/zh-TW.json
index bdf40cb..3e31bd1 100644
--- a/locales/zh-TW.json
+++ b/locales/zh-TW.json
@@ -115,20 +115,20 @@
"custom": "自訂",
"fastbike": "機車",
"fastbike-asia-pacific": "機車 (亞太)",
- "fastbike-lowtraffic": "Fastbike (low traffic)",
+ "fastbike-lowtraffic": "機車 (低交通流量)",
"hiking-beta": "遠足 (Beta測試中)",
"moped": "機慢車",
"rail": "鐵道",
"river": "河道",
"safety": "安全",
"shortest": "最短",
- "trekking": "Trekking bike",
- "trekking-ignore-cr": "Trekking bike (ignore cycle routes)",
- "trekking-noferries": "Trekking bike (no ferries)",
- "trekking-nosteps": "Trekking bike (no steps)",
- "trekking-steep": "Trekking bike (steep)",
- "vm-forum-liegerad-schnell": "Recumbent bike (fast)",
- "vm-forum-velomobil-schnell": "Velomobile (fast)"
+ "trekking": "登山越野車",
+ "trekking-ignore-cr": "登山越野車 (忽視自行車道)",
+ "trekking-noferries": "登山越野車 (不經過渡輪)",
+ "trekking-nosteps": "登山越野車 (跳過階梯)",
+ "trekking-steep": "登山越野車 (極限)",
+ "vm-forum-liegerad-schnell": "臥式自行車 (速度型)",
+ "vm-forum-velomobil-schnell": "躺車 (速度型)"
}
},
"sidebar": {