diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json new file mode 100644 index 00000000..b26137e6 --- /dev/null +++ b/frontend/src/i18n/de.json @@ -0,0 +1,149 @@ +{ + "about-dialog": { + "header": "Über FacilMap {{version}}", + "license-text": "{{facilmap}} is unter der {{license}} verfügbar.", + "license-text-facilmap": "FacilMap", + "license-text-license": "GNU Affero General Public License, Version 3", + "issues-text": "Bitte melden Sie Fehler und Verbesserungsvorschläge auf {{tracker}}.", + "issues-text-tracker": "GitHub", + "help-text": "Wenn Sie Fragen haben, schauen Sie sich die {{documentation}} an, schreiben Sie ins {{discussions}} oder fragen im {{chat}}.", + "help-text-documentation": "Dokumentation", + "help-text-discussions": "Forum", + "help-text-chat": "Matrix-Chat", + "privacy-information": "Informationen zum Datenschutz", + "map-data": "Kartendaten", + "map-data-search": "Suche", + "map-data-pois": "POIs", + "map-data-directions": "Routenberechnung", + "map-data-geoip": "GeoIP", + "map-data-geoip-description": "Dieses Produkt enthält GeoLite2-Daten von Maxmind, verfügbar unter {{maxmind}}.", + "attribution-osm-contributors": "OSM-Mitwirkende", + "programs-libraries": "Programme/Bibliotheken", + "icons": "Symbole" + }, + + "click-marker-tab": { + "look-up-error": "Fehler beim Laden der Geoinformationen" + }, + + "client-provider": { + "loading-map-header": "Karte wird geladen", + "loading-map": "Karte wird geladen…", + "connecting-header": "Verbindung wird hergestellt", + "connecting": "Verbindung mit dem Server wird hergestellt…", + "map-deleted-header": "Karte gelöscht", + "map-deleted": "Die Karte wurde gelöscht.", + "close-map": "Karte schließen", + "connection-error": "Bei der Verbindung zum Server ist ein Fehler aufgetreten", + "open-map-error": "Beim Öffnen der Karte ist ein Fehler aufgetreten", + "disconnected-header": "Verbindung unterbrochen", + "disconnected": "Die Verbindung zum Server ist verloren gegangen. Verbindung wird wiederhergestellt…" + }, + + "edit-filter-dialog": { + "title": "Filter", + "apply": "Anwenden", + "introduction": "Hier können Sie eine Filterformel festlegen, die definiert, welche Marker/Linien basierend auf ihren Attributen angezeigt/versteckt werden sollen. Die Filterformel beeinflusst nur Ihre persönliche Ansicht der Karte, sie kann jedoch als Teil einer gespeicherten Ansicht oder eines geteilten Links wiederverwendet werden.", + "syntax-header": "Syntax", + "variable": "Variable", + "operator": "Operator", + "description": "Beschreibung", + "example": "Beispiel", + "name-description": "Name des Markers oder der Linie", + "type-description": "Art des Objekts: {{marker}} (Marker) / {{line}} (Linie)", + "typeId-description": "Typ des Objekts: {{items}})", + "typeId-description-item": "{{typeId}} ({{typeName}})", + "typeId-description-separator": " / ", + "data-description-1": "Feldwerte (Beispiel: {{example1}} oder {{example2}}).", + "data-description-2": "Für Checkbox-Felder ist der Wert {{uncheckedValue}} (nicht selektiert) oder {{checkedValue}} (selektiert).", + "lon-lat-description": "Koordinaten des Markers", + "colour-description": "Farbe des Markers oder der Linie", + "size-description": "Größe des Markers", + "symbol-description": "Symbol des Markers", + "shape-description": "Form des Markers", + "ele-description": "Höhe über NN des Markers", + "mode-description": "Routenmethode der Linie (z.\u202fB. {{straight}} (Luftlinie) / {{car}} (Auto) / {{bicycle}} (Fahrrad) / {{pedestrian}} (zu Fuß) / {{track}} (importierter GPX-Track))", + "width-description": "Dicke der Linie", + "stroke-description": "Kontur der Linie ({{solid}} (durchgezogen) / {{dashed}} (gestrichelt) / {{dotted}} (gepunktet))", + "distance-description": "Länge der Linie in Kilometern", + "time-description": "Reisedauer der Linie in Sekunden", + "ascent-descent-description": "Gesamteranstieg/-abstieg der Linie", + "routePoints-description": "Koordinaten der Wegpunkte der Linie", + "number-description": "Zahl", + "text-description": "Zeichenkette", + "mathematical-description": "Mathematische Operationen ({{modulo}}: modulo, {{power}}: Potenz)", + "logical-description": "Logische Operationen", + "ternary-description": "Wenn/dann/sonst-Operator", + "comparison-description": "Vergleich ({{notEqual}}: ungleich) (Groß-/Kleinschreibung relevant)", + "list-description": "Listen-Operator ({{in}}: Wert kommt in der Liste vor, {{notIn}}: Wert kommt nicht in der Liste vor) (Groß-/Kleinschreibung relevant)", + "regexp-description": "Regulärer Ausdruck (Groß-/Kleinschreibung relevant)", + "lower-description": "Zu Kleinbuchstaben konvertieren", + "round-description": "Runden ({{round}}: kaufmännisch runden, {{ceil}}: aufrunden, {{floor}}: abrunden)", + "functions-description": "Mathematische Funktionen ({{abs}}: Betrag, {{log}}: Natürlicher Logarithmus, {{sqrt}}: Quadratwurzel)", + "min-max-description": "Kleinster/größter Wert" + }, + + "modal-dialog": { + "close": "Schließen", + "cancel": "Abbrechen", + "save": "Speichern" + }, + + "user-preferences-dialog": { + "title": "Benutzereinstellungen", + "introduction": "Diese Einstellungen werden als Cookies auf Ihrem Computer gespeichert und werden unabhängig von der geöffneten Karte angewendet.", + "language": "Sprache", + "units": "Einheiten", + "units-metric": "Metrisch", + "units-us": "US customary (Meilen und Füße)" + }, + + "toolbox-add-dropdown": { + "label": "Erstellen", + "manage-types": "Objekttypen verwalten" + }, + + "toolbox-collab-maps-dropdown": { + "label": "Kollaborative Karten", + "bookmark": "Karte „{{padName}}“ als Favoriten hinzufügen", + "manage-bookmarks": "Favoriten verwalten", + "create-map": "Neue Karte erstellen", + "open-map": "Existierende Karte öffnen", + "open-other-map": "Andere Karte öffnen", + "close-map": "Karte „{{padName}}“ schließen" + }, + + "toolbox-help-dropdown": { + "label": "Hilfe", + "documentation": "Benutzerhandbuch", + "matrix-chat": "Matrix-Chat", + "bugtracker": "Fehler melden", + "forum": "Frage stellen", + "about": "Über {{appName}}" + }, + + "toolbox-map-style-dropdown": { + "label": "Kartenstil", + "openstreetmap": "OpenStreetMap", + "google-maps": "Google Maps", + "google-maps-satellite": "Google Maps (Satellit)", + "bing-maps": "Bing Maps" + }, + + "toolbox-tools-dropdown": { + "label": "Werkzeuge", + "share": "Teilen", + "open-file": "Datei öffnen", + "export": "Exportieren", + "filter": "Filter", + "settings": "Eigenschaften", + "history": "Versionsgeschichte", + "user-preferences": "Benutzereinstellungen" + }, + + "toolbox-views-dropdown": { + "label": "Ansichten", + "save-current-view": "Ansicht speichern", + "manage-views": "Ansichten verwalten" + } +} \ No newline at end of file diff --git a/frontend/src/i18n/de.ts b/frontend/src/i18n/de.ts deleted file mode 100644 index 582a0b57..00000000 --- a/frontend/src/i18n/de.ts +++ /dev/null @@ -1,151 +0,0 @@ -const messagesDe = { - "about-dialog": { - "header": `Über FacilMap {{version}}`, - "license-text": `{{facilmap}} is unter der {{license}} verfügbar.`, - "license-text-facilmap": `FacilMap`, - "license-text-license": `GNU Affero General Public License, Version 3`, - "issues-text": `Bitte melden Sie Fehler und Verbesserungsvorschläge auf {{tracker}}.`, - "issues-text-tracker": `GitHub`, - "help-text": `Wenn Sie Fragen haben, schauen Sie sich die {{documentation}} an, schreiben Sie ins {{discussions}} oder fragen im {{chat}}.`, - "help-text-documentation": `Dokumentation`, - "help-text-discussions": `Forum`, - "help-text-chat": `Matrix-Chat`, - "privacy-information": `Informationen zum Datenschutz`, - "map-data": `Kartendaten`, - "map-data-search": `Suche`, - "map-data-pois": `POIs`, - "map-data-directions": `Routenberechnung`, - "map-data-geoip": `GeoIP`, - "map-data-geoip-description": `Dieses Produkt enthält GeoLite2-Daten von Maxmind, verfügbar unter {{maxmind}}.`, - "attribution-osm-contributors": `OSM-Mitwirkende`, - "programs-libraries": `Programme/Bibliotheken`, - "icons": `Symbole` - }, - - "click-marker-tab": { - "look-up-error": `Fehler beim Laden der Geoinformationen` - }, - - "client-provider": { - "loading-map-header": `Karte wird geladen`, - "loading-map": `Karte wird geladen…`, - "connecting-header": `Verbindung wird hergestellt`, - "connecting": `Verbindung mit dem Server wird hergestellt…`, - "map-deleted-header": `Karte gelöscht`, - "map-deleted": `Die Karte wurde gelöscht.`, - "close-map": `Karte schließen`, - "connection-error": `Bei der Verbindung zum Server ist ein Fehler aufgetreten`, - "open-map-error": `Beim Öffnen der Karte ist ein Fehler aufgetreten`, - "disconnected-header": `Verbindung unterbrochen`, - "disconnected": `Die Verbindung zum Server ist verloren gegangen. Verbindung wird wiederhergestellt…` - }, - - "edit-filter-dialog": { - "title": `Filter`, - "apply": `Anwenden`, - "introduction": `Hier können Sie eine Filterformel festlegen, die definiert, welche Marker/Linien basierend auf ihren Attributen angezeigt/versteckt werden sollen. Die Filterformel beeinflusst nur Ihre persönliche Ansicht der Karte, sie kann jedoch als Teil einer gespeicherten Ansicht oder eines geteilten Links wiederverwendet werden.`, - "syntax-header": `Syntax`, - "variable": `Variable`, - "operator": `Operator`, - "description": `Beschreibung`, - "example": `Beispiel`, - "name-description": `Name des Markers oder der Linie`, - "type-description": `Art des Objekts: {{marker}} (Marker) / {{line}} (Linie)`, - "typeId-description": `Typ des Objekts: {{items}})`, - "typeId-description-item": `{{typeId}} ({{typeName}})`, - "typeId-description-separator": ` / `, - "data-description-1": `Feldwerte (Beispiel: {{example1}} oder {{example2}}).`, - "data-description-2": `Für Checkbox-Felder ist der Wert {{uncheckedValue}} (nicht selektiert) oder {{checkedValue}} (selektiert).`, - "lon-lat-description": `Koordinaten des Markers`, - "colour-description": `Farbe des Markers oder der Linie`, - "size-description": `Größe des Markers`, - "symbol-description": `Symbol des Markers`, - "shape-description": `Form des Markers`, - "ele-description": `Höhe über NN des Markers`, - "mode-description": `Routenmethode der Linie (z.\u202fB. {{straight}} (Luftlinie) / {{car}} (Auto) / {{bicycle}} (Fahrrad) / {{pedestrian}} (zu Fuß) / {{track}} (importierter GPX-Track))`, - "width-description": `Dicke der Linie`, - "stroke-description": `Kontur der Linie ({{solid}} (durchgezogen) / {{dashed}} (gestrichelt) / {{dotted}} (gepunktet))`, - "distance-description": `Länge der Linie in Kilometern`, - "time-description": `Reisedauer der Linie in Sekunden`, - "ascent-descent-description": `Gesamteranstieg/-abstieg der Linie`, - "routePoints-description": `Koordinaten der Wegpunkte der Linie`, - "number-description": `Zahl`, - "text-description": `Zeichenkette`, - "mathematical-description": `Mathematische Operationen ({{modulo}}: modulo, {{power}}: Potenz)`, - "logical-description": `Logische Operationen`, - "ternary-description": `Wenn/dann/sonst-Operator`, - "comparison-description": `Vergleich ({{notEqual}}: ungleich) (Groß-/Kleinschreibung relevant)`, - "list-description": `Listen-Operator ({{in}}: Wert kommt in der Liste vor, {{notIn}}: Wert kommt nicht in der Liste vor) (Groß-/Kleinschreibung relevant)`, - "regexp-description": `Regulärer Ausdruck (Groß-/Kleinschreibung relevant)`, - "lower-description": `Zu Kleinbuchstaben konvertieren`, - "round-description": `Runden ({{round}}: kaufmännisch runden, {{ceil}}: aufrunden, {{floor}}: abrunden)`, - "functions-description": `Mathematische Funktionen ({{abs}}: Betrag, {{log}}: Natürlicher Logarithmus, {{sqrt}}: Quadratwurzel)`, - "min-max-description": `Kleinster/größter Wert` - }, - - "modal-dialog": { - "close": "Schließen", - "cancel": "Abbrechen", - "save": "Speichern" - }, - - "user-preferences-dialog": { - "title": `Benutzereinstellungen`, - "introduction": `Diese Einstellungen werden als Cookies auf Ihrem Computer gespeichert und werden unabhängig von der geöffneten Karte angewendet.`, - "language": `Sprache`, - "units": `Einheiten`, - "units-metric": `Metrisch`, - "units-us": `US customary (Meilen und Füße)` - }, - - "toolbox-add-dropdown": { - "label": `Erstellen`, - "manage-types": `Objekttypen verwalten` - }, - - "toolbox-collab-maps-dropdown": { - "label": `Kollaborative Karten`, - "bookmark": `Karte „{{padName}}“ als Favoriten hinzufügen`, - "manage-bookmarks": `Favoriten verwalten`, - "create-map": `Neue Karte erstellen`, - "open-map": `Existierende Karte öffnen`, - "open-other-map": `Andere Karte öffnen`, - "close-map": `Karte „{{padName}}“ schließen` - }, - - "toolbox-help-dropdown": { - "label": `Hilfe`, - "documentation": `Benutzerhandbuch`, - "matrix-chat": `Matrix-Chat`, - "bugtracker": `Fehler melden`, - "forum": `Frage stellen`, - "about": `Über {{appName}}` - }, - - "toolbox-map-style-dropdown": { - "label": `Kartenstil`, - "openstreetmap": `OpenStreetMap`, - "google-maps": `Google Maps`, - "google-maps-satellite": `Google Maps (Satellit)`, - "bing-maps": `Bing Maps` - }, - - "toolbox-tools-dropdown": { - "label": `Werkzeuge`, - "share": `Teilen`, - "open-file": `Datei öffnen`, - "export": `Exportieren`, - "filter": `Filter`, - "settings": `Eigenschaften`, - "history": `Versionsgeschichte`, - "user-preferences": `Benutzereinstellungen` - }, - - "toolbox-views-dropdown": { - "label": `Ansichten`, - "save-current-view": `Ansicht speichern`, - "manage-views": `Ansichten verwalten` - } -}; - -export default messagesDe; \ No newline at end of file diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json new file mode 100644 index 00000000..2217cff1 --- /dev/null +++ b/frontend/src/i18n/en.json @@ -0,0 +1,149 @@ +{ + "about-dialog": { + "header": "About FacilMap {{version}}", + "license-text": "{{facilmap}} is available under the {{license}}.", + "license-text-facilmap": "FacilMap", + "license-text-license": "GNU Affero General Public License, Version 3", + "issues-text": "If something does not work or you have a suggestion for improvement, please report on the {{tracker}}.", + "issues-text-tracker": "issue tracker", + "help-text": "If you have a question, please have a look at the {{documentation}}, raise a question in the {{discussions}} or ask in the {{chat}}.", + "help-text-documentation": "documentation", + "help-text-discussions": "discussion forum", + "help-text-chat": "Matrix chat", + "privacy-information": "Privacy information", + "map-data": "Map data", + "map-data-search": "Search", + "map-data-pois": "POIs", + "map-data-directions": "Directions", + "map-data-geoip": "GeoIP", + "map-data-geoip-description": "This product includes GeoLite2 data created by MaxMind, available from {{maxmind}}.", + "attribution-osm-contributors": "OSM Contributors", + "programs-libraries": "Programs/libraries", + "icons": "Icons" + }, + + "click-marker-tab": { + "look-up-error": "Error looking up point" + }, + + "client-provider": { + "loading-map-header": "Loading", + "loading-map": "Loading map…", + "connecting-header": "Connecting", + "connecting": "Connecting to server…", + "map-deleted-header": "Map deleted", + "map-deleted": "This map has been deleted.", + "close-map": "Close map", + "connection-error": "Error connecting to server", + "open-map-error": "Error opening map", + "disconnected-header": "Disconnected", + "disconnected": "The connection to the server was lost. Trying to reconnect…" + }, + + "edit-filter-dialog": { + "title": "Filter", + "apply": "Apply", + "introduction": "Here you can set an advanced expression to show/hide certain markers/lines based on their attributes. The filter expression only applies to your view of the map, but it can be persisted as part of a saved view or a shared link.", + "syntax-header": "Syntax", + "variable": "Variable", + "operator": "Operator", + "description": "Description", + "example": "Example", + "name-description": "Marker/Line name", + "type-description": "{{marker}} / {{line}}", + "typeId-description": "{{items}})", + "typeId-description-item": "{{typeId}} ({{typeName}})", + "typeId-description-separator": " / ", + "data-description-1": "Field values (example: {{example1}} or {{example2}}).", + "data-description-2": "For checkbox fields, the value is {{uncheckedValue}} (unchecked) or {{checkedValue}} (checked).", + "lon-lat-description": "Marker coordinates", + "colour-description": "Marker/line colour", + "size-description": "Marker size", + "symbol-description": "Marker icon", + "shape-description": "Marker shape", + "ele-description": "Marker elevation", + "mode-description": "Line routing mode ({{straight}} / {{car}} / {{bicycle}} / {{pedestrian}} / {{track}})", + "width-description": "Line width", + "stroke-description": "Line stroke ({{solid}} (solid) / {{dashed}} / {{dotted}})", + "distance-description": "Line distance in kilometers", + "time-description": "Line routing time in seconds", + "ascent-descent-description": "Total ascent/descent of line", + "routePoints-description": "Line point coordinates", + "number-description": "Numerical value", + "text-description": "Text value", + "mathematical-description": "Mathematical operations ({{modulo}}: modulo, {{power}}: power)", + "logical-description": "Logical operators", + "ternary-description": "if/then/else operator", + "comparison-description": "Comparison ({{notEqual}}: not equal) (case sensitive)", + "list-description": "List operator (case sensitive)", + "regexp-description": "Regular expression match (case sensitive)", + "lower-description": "Convert to lower case", + "round-description": "Round ({{ceil}}: up, {{floor}}: down)", + "functions-description": "Mathematical functions", + "min-max-description": "Smallest/highest value" + }, + + "modal-dialog": { + "close": "Close", + "cancel": "Cancel", + "save": "Save" + }, + + "user-preferences-dialog": { + "title": "User preferences", + "introduction": "These settings are stored on your computer as a cookie and are applied independently of the opened map.", + "language": "Language", + "units": "Units", + "units-metric": "Metric", + "units-us": "US customary (miles, feet)" + }, + + "toolbox-add-dropdown": { + "label": "Add", + "manage-types": "Manage types" + }, + + "toolbox-collab-maps-dropdown": { + "label": "Collaborative maps", + "bookmark": "Bookmark map “{{padName}}”", + "manage-bookmarks": "Manage bookmarks", + "create-map": "Create a new map", + "open-map": "Open an existing map", + "open-other-map": "Open another map", + "close-map": "Close map “{{padName}}”" + }, + + "toolbox-help-dropdown": { + "label": "Help", + "documentation": "Documentation", + "matrix-chat": "Matrix chat room", + "bugtracker": "Report a problem", + "forum": "Ask a question", + "about": "About {{appName}}" + }, + + "toolbox-map-style-dropdown": { + "label": "Map style", + "openstreetmap": "OpenStreetMap", + "google-maps": "Google Maps", + "google-maps-satellite": "Google Maps (Satellite)", + "bing-maps": "Bing Maps" + }, + + "toolbox-tools-dropdown": { + "label": "Tools", + "share": "Share", + "open-file": "Open file", + "export": "Export", + "filter": "Filter", + "settings": "Settings", + "history": "History", + "user-preferences": "User preferences" + }, + + "toolbox-views-dropdown": { + "label": "Views", + "save-current-view": "Save current view", + "manage-views": "Manage views" + } +} \ No newline at end of file diff --git a/frontend/src/i18n/en.ts b/frontend/src/i18n/en.ts deleted file mode 100644 index 77dfe73d..00000000 --- a/frontend/src/i18n/en.ts +++ /dev/null @@ -1,151 +0,0 @@ -const messagesEn = { - "about-dialog": { - "header": `About FacilMap {{version}}`, - "license-text": `{{facilmap}} is available under the {{license}}.`, - "license-text-facilmap": `FacilMap`, - "license-text-license": `GNU Affero General Public License, Version 3`, - "issues-text": `If something does not work or you have a suggestion for improvement, please report on the {{tracker}}.`, - "issues-text-tracker": `issue tracker`, - "help-text": `If you have a question, please have a look at the {{documentation}}, raise a question in the {{discussions}} or ask in the {{chat}}.`, - "help-text-documentation": `documentation`, - "help-text-discussions": `discussion forum`, - "help-text-chat": `Matrix chat`, - "privacy-information": `Privacy information`, - "map-data": `Map data`, - "map-data-search": `Search`, - "map-data-pois": `POIs`, - "map-data-directions": `Directions`, - "map-data-geoip": `GeoIP`, - "map-data-geoip-description": `This product includes GeoLite2 data created by MaxMind, available from {{maxmind}}.`, - "attribution-osm-contributors": `OSM Contributors`, - "programs-libraries": `Programs/libraries`, - "icons": `Icons` - }, - - "click-marker-tab": { - "look-up-error": `Error looking up point` - }, - - "client-provider": { - "loading-map-header": `Loading`, - "loading-map": `Loading map…`, - "connecting-header": `Connecting`, - "connecting": `Connecting to server…`, - "map-deleted-header": `Map deleted`, - "map-deleted": `This map has been deleted.`, - "close-map": `Close map`, - "connection-error": `Error connecting to server`, - "open-map-error": `Error opening map`, - "disconnected-header": `Disconnected`, - "disconnected": `The connection to the server was lost. Trying to reconnect…` - }, - - "edit-filter-dialog": { - "title": `Filter`, - "apply": `Apply`, - "introduction": `Here you can set an advanced expression to show/hide certain markers/lines based on their attributes. The filter expression only applies to your view of the map, but it can be persisted as part of a saved view or a shared link.`, - "syntax-header": `Syntax`, - "variable": `Variable`, - "operator": `Operator`, - "description": `Description`, - "example": `Example`, - "name-description": `Marker/Line name`, - "type-description": `{{marker}} / {{line}}`, - "typeId-description": `{{items}})`, - "typeId-description-item": `{{typeId}} ({{typeName}})`, - "typeId-description-separator": ` / `, - "data-description-1": `Field values (example: {{example1}} or {{example2}}).`, - "data-description-2": `For checkbox fields, the value is {{uncheckedValue}} (unchecked) or {{checkedValue}} (checked).`, - "lon-lat-description": `Marker coordinates`, - "colour-description": `Marker/line colour`, - "size-description": `Marker size`, - "symbol-description": `Marker icon`, - "shape-description": `Marker shape`, - "ele-description": `Marker elevation`, - "mode-description": `Line routing mode ({{straight}} / {{car}} / {{bicycle}} / {{pedestrian}} / {{track}})`, - "width-description": `Line width`, - "stroke-description": `Line stroke ({{solid}} (solid) / {{dashed}} / {{dotted}})`, - "distance-description": `Line distance in kilometers`, - "time-description": `Line routing time in seconds`, - "ascent-descent-description": `Total ascent/descent of line`, - "routePoints-description": `Line point coordinates`, - "number-description": `Numerical value`, - "text-description": `Text value`, - "mathematical-description": `Mathematical operations ({{modulo}}: modulo, {{power}}: power)`, - "logical-description": `Logical operators`, - "ternary-description": `if/then/else operator`, - "comparison-description": `Comparison ({{notEqual}}: not equal) (case sensitive)`, - "list-description": `List operator (case sensitive)`, - "regexp-description": `Regular expression match (case sensitive)`, - "lower-description": `Convert to lower case`, - "round-description": `Round ({{ceil}}: up, {{floor}}: down)`, - "functions-description": `Mathematical functions`, - "min-max-description": `Smallest/highest value` - }, - - "modal-dialog": { - "close": "Close", - "cancel": "Cancel", - "save": "Save" - }, - - "user-preferences-dialog": { - "title": `User preferences`, - "introduction": `These settings are stored on your computer as a cookie and are applied independently of the opened map.`, - "language": `Language`, - "units": `Units`, - "units-metric": `Metric`, - "units-us": `US customary (miles, feet)` - }, - - "toolbox-add-dropdown": { - "label": `Add`, - "manage-types": `Manage types` - }, - - "toolbox-collab-maps-dropdown": { - "label": `Collaborative maps`, - "bookmark": `Bookmark map “{{padName}}”`, - "manage-bookmarks": `Manage bookmarks`, - "create-map": `Create a new map`, - "open-map": `Open an existing map`, - "open-other-map": `Open another map`, - "close-map": `Close map “{{padName}}”` - }, - - "toolbox-help-dropdown": { - "label": `Help`, - "documentation": `Documentation`, - "matrix-chat": `Matrix chat room`, - "bugtracker": `Report a problem`, - "forum": `Ask a question`, - "about": `About {{appName}}` - }, - - "toolbox-map-style-dropdown": { - "label": `Map style`, - "openstreetmap": `OpenStreetMap`, - "google-maps": `Google Maps`, - "google-maps-satellite": `Google Maps (Satellite)`, - "bing-maps": `Bing Maps` - }, - - "toolbox-tools-dropdown": { - "label": `Tools`, - "share": `Share`, - "open-file": `Open file`, - "export": `Export`, - "filter": `Filter`, - "settings": `Settings`, - "history": `History`, - "user-preferences": `User preferences` - }, - - "toolbox-views-dropdown": { - "label": `Views`, - "save-current-view": `Save current view`, - "manage-views": `Manage views` - } -}; - -export default messagesEn; \ No newline at end of file diff --git a/frontend/src/lib/utils/i18n.ts b/frontend/src/lib/utils/i18n.ts index 540b7320..bb3953a0 100644 --- a/frontend/src/lib/utils/i18n.ts +++ b/frontend/src/lib/utils/i18n.ts @@ -1,8 +1,8 @@ /// import { type i18n } from "i18next"; import { defineComponent, ref } from "vue"; -import messagesEn from "../../i18n/en"; -import messagesDe from "../../i18n/de"; +import messagesEn from "../../i18n/en.json"; +import messagesDe from "../../i18n/de.json"; import { decodeQueryString, getRawI18n, onI18nReady, setCurrentUnitsGetter } from "facilmap-utils"; import { cookies } from "./cookies"; import { unitsValidator } from "facilmap-types"; @@ -15,13 +15,13 @@ onI18nReady((i18n) => { }); if (import.meta.hot) { - import.meta.hot.accept("../../i18n/en", (m) => { + import.meta.hot.accept("../../i18n/en.json", (m) => { onI18nReady((i18n) => { i18n.addResourceBundle("en", namespace, m!.default); }); }); - import.meta.hot.accept("../../i18n/de", (m) => { + import.meta.hot.accept("../../i18n/de.json", (m) => { onI18nReady((i18n) => { i18n.addResourceBundle("de", namespace, m!.default); }); diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index a1b4f18e..8dca6117 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -18,5 +18,5 @@ { "path": "../utils/tsconfig.json" }, { "path": "../tsconfig.json" } ], - "include": ["src/**/*"] + "include": ["src/**/*", "src/**/*.json"] } \ No newline at end of file diff --git a/server/src/i18n.ts b/server/src/i18n.ts index 159d13ab..101ee03f 100644 --- a/server/src/i18n.ts +++ b/server/src/i18n.ts @@ -1,6 +1,6 @@ import { defaultI18nGetter, getRawI18n, onI18nReady, setLanguageDetector, setI18nGetter, isCustomLanguageDetector, isCustomI18nGetter, LANG_QUERY, LANG_COOKIE, setCurrentUnitsGetter } from "facilmap-utils"; -import messagesEn from "./i18n/en"; -import messagesDe from "./i18n/de"; +import messagesEn from "./i18n/en.json"; +import messagesDe from "./i18n/de.json"; import type { i18n } from "i18next"; import type { Domain } from "domain"; import { Router } from "express"; diff --git a/server/src/i18n/de.json b/server/src/i18n/de.json new file mode 100644 index 00000000..772951a9 --- /dev/null +++ b/server/src/i18n/de.json @@ -0,0 +1,54 @@ +{ + "pad-not-found-error": "Karte {{padId}} konnte nicht gefunden werden.", + "pad-read-not-found-error": "Karte mit der Lese-ID {{padId}} konnte nicht gefunden werden.", + + "database": { + "type-not-found-error": "Typ {{typeId}} existiert nicht.", + "object-not-found-in-pad-error": "Objekt {{id}} vom Typ „{{type}}“ konnte auf der Karte {{padId}} nicht gefunden werden.", + "old-pad-data-not-available-error": "Alte Karteneinstellungen nicht verfügbar.", + "unknown-type-error": "Unbekannter Typ „{{type}}“.", + "route-points-not-an-array-error": "routePoints ist kein Array", + "route-points-less-than-two-points-error": "Eine Linie kann nicht weniger als zwei Routenpunkte haben.", + "cannot-use-type-for-line-error": "Typ der Art „{{type}}“ kann nicht für Linien benutzt werden.", + "cannot-use-type-for-marker-error": "Typ der Art „{{type}}“ kann nicht für Marker benutzt werden.", + "unique-pad-ids-error": "Lese-ID, Schreib-ID und Admin-ID müssen unterschiedlich sein.", + "unique-pad-ids-read-write-error": "Lese-ID und Schreib-ID müssen unterschiedlich sein.", + "unique-pad-ids-read-admin-error": "Lese-ID und Admin-ID müssen unterschiedlich sein.", + "unique-pad-ids-write-admin-error": "Schreib-ID und Admin-ID müssen unterschiedlich sein.", + "pad-id-taken-error": "ID „{{id}}“ ist bereits vergeben.", + "pad-disappeared-error": "Karte wurde während des Abspeicherns gelöscht." + }, + + "routing": { + "ors-token-warning": "Warnung: Kein ORS-Token konfiguriert. Bitten Sie den Administrator, die Umgebungsvariable ORS_TOKEN zu setzen.", + "too-much-distance-error": "Die Distanz zwischen den Routenpunkten ist zu groß. Versuchen Sie, einige Zwischenpunkte hinzuzufügen.", + "invalid-response-error": "Ungültige Antwort vom Routenserver.", + "mapbox-token-warning": "Kein Mapbox-Token konfiguriert. Bitten Sie den Administrator, die Umgebungsvariable MAPBOX_TOKEN zu setzen.", + "mapbox-error": "Route konnte nicht berechnet werden ({{code}})." + }, + + "socket": { + "only-in-admin-error": "Nur im Admin-Modus verfügbar.", + "only-in-write-error": "Nur im Schreib-Modus verfügbar.", + "pad-id-set-error": "Karten-ID bereits gesetzt.", + "pad-not-exist-error": "Diese Karte existiert nicht.", + "pad-already-loaded-error": "Karte bereits geladen.", + "no-map-open-error": "Keine Karte geöffnet.", + "unknown-format-error": "Unbekanntes Format", + "route-not-available-error": "Route nicht verfügbar.", + "route-name": "FacilMap-Route", + "already-listening-to-history-error": "Änderungsgeschichte bereits abonniert.", + "not-listening-to-history-error": "Änderungsgeschichte nicht abonniert.", + "admin-revert-error": "Diese Änderung kann nur im Admin-Modus rückgängig gemacht werden." + }, + + "search": { + "url-request-error": "Laden von „{{url}}“ fehlgeschlagen (Status: {{status}}).", + "url-response-error": "Ungültige Antwort vom Server.", + "url-unknown-format-error": "Unbekanntes Dateiformat." + }, + + "webserver": { + "map-not-found-error": "Karte mit der ID {{padId}} konnte nicht gefunden werden." + } +} \ No newline at end of file diff --git a/server/src/i18n/de.ts b/server/src/i18n/de.ts deleted file mode 100644 index b04fd0ec..00000000 --- a/server/src/i18n/de.ts +++ /dev/null @@ -1,56 +0,0 @@ -const messagesDe = { - "pad-not-found-error": `Karte {{padId}} konnte nicht gefunden werden.`, - "pad-read-not-found-error": `Karte mit der Lese-ID {{padId}} konnte nicht gefunden werden.`, - - "database": { - "type-not-found-error": `Typ {{typeId}} existiert nicht.`, - "object-not-found-in-pad-error": `Objekt {{id}} vom Typ „{{type}}“ konnte auf der Karte {{padId}} nicht gefunden werden.`, - "old-pad-data-not-available-error": `Alte Karteneinstellungen nicht verfügbar.`, - "unknown-type-error": `Unbekannter Typ „{{type}}“.`, - "route-points-not-an-array-error": `routePoints ist kein Array`, - "route-points-less-than-two-points-error": `Eine Linie kann nicht weniger als zwei Routenpunkte haben.`, - "cannot-use-type-for-line-error": `Typ der Art „{{type}}“ kann nicht für Linien benutzt werden.`, - "cannot-use-type-for-marker-error": `Typ der Art „{{type}}“ kann nicht für Marker benutzt werden.`, - "unique-pad-ids-error": `Lese-ID, Schreib-ID und Admin-ID müssen unterschiedlich sein.`, - "unique-pad-ids-read-write-error": `Lese-ID und Schreib-ID müssen unterschiedlich sein.`, - "unique-pad-ids-read-admin-error": `Lese-ID und Admin-ID müssen unterschiedlich sein.`, - "unique-pad-ids-write-admin-error": `Schreib-ID und Admin-ID müssen unterschiedlich sein.`, - "pad-id-taken-error": `ID „{{id}}“ ist bereits vergeben.`, - "pad-disappeared-error": `Karte wurde während des Abspeicherns gelöscht.` - }, - - "routing": { - "ors-token-warning": `Warnung: Kein ORS-Token konfiguriert. Bitten Sie den Administrator, die Umgebungsvariable ORS_TOKEN zu setzen.`, - "too-much-distance-error": `Die Distanz zwischen den Routenpunkten ist zu groß. Versuchen Sie, einige Zwischenpunkte hinzuzufügen.`, - "invalid-response-error": `Ungültige Antwort vom Routenserver.`, - "mapbox-token-warning": `Kein Mapbox-Token konfiguriert. Bitten Sie den Administrator, die Umgebungsvariable MAPBOX_TOKEN zu setzen.`, - "mapbox-error": `Route konnte nicht berechnet werden ({{code}}).` - }, - - "socket": { - "only-in-admin-error": `Nur im Admin-Modus verfügbar.`, - "only-in-write-error": `Nur im Schreib-Modus verfügbar.`, - "pad-id-set-error": `Karten-ID bereits gesetzt.`, - "pad-not-exist-error": `Diese Karte existiert nicht.`, - "pad-already-loaded-error": `Karte bereits geladen.`, - "no-map-open-error": `Keine Karte geöffnet.`, - "unknown-format-error": `Unbekanntes Format`, - "route-not-available-error": `Route nicht verfügbar.`, - "route-name": `FacilMap-Route`, - "already-listening-to-history-error": `Änderungsgeschichte bereits abonniert.`, - "not-listening-to-history-error": `Änderungsgeschichte nicht abonniert.`, - "admin-revert-error": `Diese Änderung kann nur im Admin-Modus rückgängig gemacht werden.` - }, - - "search": { - "url-request-error": `Laden von „{{url}}“ fehlgeschlagen (Status: {{status}}).`, - "url-response-error": `Ungültige Antwort vom Server.`, - "url-unknown-format-error": `Unbekanntes Dateiformat.` - }, - - "webserver": { - "map-not-found-error": `Karte mit der ID {{padId}} konnte nicht gefunden werden.` - } -}; - -export default messagesDe; diff --git a/server/src/i18n/en.json b/server/src/i18n/en.json new file mode 100644 index 00000000..ddf06b4c --- /dev/null +++ b/server/src/i18n/en.json @@ -0,0 +1,54 @@ +{ + "pad-not-found-error": "Map {{padId}} could not be found.", + "pad-read-not-found-error": "Map with read-only ID {{padId}} could not be found.", + + "database": { + "type-not-found-error": "Type {{typeId}} does not exist.", + "object-not-found-in-pad-error": "{{type}} {{id}} of map {{padId}} could not be found.", + "old-pad-data-not-available-error": "Old map data not available.", + "unknown-type-error": "Unknown type \"{{type}}\".", + "route-points-not-an-array-error": "routePoints is not an array", + "route-points-less-than-two-points-error": "A line cannot have less than two route points.", + "cannot-use-type-for-line-error": "Cannot use {{type}} type for line.", + "cannot-use-type-for-marker-error": "Cannot use {{type}} type for marker.", + "unique-pad-ids-error": "Read-only, read-write and admin ID have to be different from each other.", + "unique-pad-ids-read-write-error": "Read-only and read-write ID cannot be the same.", + "unique-pad-ids-read-admin-error": "Read-only and admin ID cannot be the same.", + "unique-pad-ids-write-admin-error": "Read-write and admin ID cannot be the same.", + "pad-id-taken-error": "ID '{{id}}' is already taken.", + "pad-disappeared-error": "Map has disappeared after updating." + }, + + "routing": { + "ors-token-warning": "Warning: No ORS token configured. Please ask the administrator to set ORS_TOKEN in the environment or in config.env.", + "too-much-distance-error": "Too much distance between route points. Consider adding some via points.", + "invalid-response-error": "Invalid response from routing server.", + "mapbox-token-warning": "No Mapbox token configured. Please ask the administrator to set MAPBOX_TOKEN in the environment or in config.env.", + "mapbox-error": "Route could not be calculated ({{code}})." + }, + + "socket": { + "only-in-admin-error": "Only available in admin mode.", + "only-in-write-error": "Only available in write mode.", + "pad-id-set-error": "Map ID already set", + "pad-not-exist-error": "This map does not exist", + "pad-already-loaded-error": "Map already loaded.", + "no-map-open-error": "No map opened.", + "unknown-format-error": "Unknown format", + "route-not-available-error": "Route not available.", + "route-name": "FacilMap route", + "already-listening-to-history-error": "Already listening to history.", + "not-listening-to-history-error": "Not listening to history.", + "admin-revert-error": "This kind of change can only be reverted in admin mode." + }, + + "search": { + "url-request-error": "Request to \"{{url}}\" failed with status {{status}}.", + "url-response-error": "Invalid response from server.", + "url-unknown-format-error": "Unknown file format." + }, + + "webserver": { + "map-not-found-error": "Map with ID {{padId}} could not be found." + } +} \ No newline at end of file diff --git a/server/src/i18n/en.ts b/server/src/i18n/en.ts deleted file mode 100644 index 7b194441..00000000 --- a/server/src/i18n/en.ts +++ /dev/null @@ -1,56 +0,0 @@ -const messagesEn = { - "pad-not-found-error": `Map {{padId}} could not be found.`, - "pad-read-not-found-error": `Map with read-only ID {{padId}} could not be found.`, - - "database": { - "type-not-found-error": `Type {{typeId}} does not exist.`, - "object-not-found-in-pad-error": `{{type}} {{id}} of map {{padId}} could not be found.`, - "old-pad-data-not-available-error": `Old map data not available.`, - "unknown-type-error": `Unknown type "{{type}}".`, - "route-points-not-an-array-error": `routePoints is not an array`, - "route-points-less-than-two-points-error": `A line cannot have less than two route points.`, - "cannot-use-type-for-line-error": `Cannot use {{type}} type for line.`, - "cannot-use-type-for-marker-error": `Cannot use {{type}} type for marker.`, - "unique-pad-ids-error": `Read-only, read-write and admin ID have to be different from each other.`, - "unique-pad-ids-read-write-error": `Read-only and read-write ID cannot be the same.`, - "unique-pad-ids-read-admin-error": `Read-only and admin ID cannot be the same.`, - "unique-pad-ids-write-admin-error": `Read-write and admin ID cannot be the same.`, - "pad-id-taken-error": `ID '{{id}}' is already taken.`, - "pad-disappeared-error": `Map has disappeared after updating.` - }, - - "routing": { - "ors-token-warning": `Warning: No ORS token configured. Please ask the administrator to set ORS_TOKEN in the environment or in config.env.`, - "too-much-distance-error": `Too much distance between route points. Consider adding some via points.`, - "invalid-response-error": `Invalid response from routing server.`, - "mapbox-token-warning": `No Mapbox token configured. Please ask the administrator to set MAPBOX_TOKEN in the environment or in config.env.`, - "mapbox-error": `Route could not be calculated ({{code}}).` - }, - - "socket": { - "only-in-admin-error": `Only available in admin mode.`, - "only-in-write-error": `Only available in write mode.`, - "pad-id-set-error": `Map ID already set`, - "pad-not-exist-error": `This map does not exist`, - "pad-already-loaded-error": `Map already loaded.`, - "no-map-open-error": `No map opened.`, - "unknown-format-error": `Unknown format`, - "route-not-available-error": `Route not available.`, - "route-name": `FacilMap route`, - "already-listening-to-history-error": `Already listening to history.`, - "not-listening-to-history-error": `Not listening to history.`, - "admin-revert-error": `This kind of change can only be reverted in admin mode.` - }, - - "search": { - "url-request-error": `Request to "{{url}}" failed with status {{status}}.`, - "url-response-error": `Invalid response from server.`, - "url-unknown-format-error": `Unknown file format.` - }, - - "webserver": { - "map-not-found-error": `Map with ID {{padId}} could not be found.` - } -}; - -export default messagesEn; diff --git a/server/tsconfig.json b/server/tsconfig.json index ac8b52c5..3278a0dc 100644 --- a/server/tsconfig.json +++ b/server/tsconfig.json @@ -14,6 +14,7 @@ ], "include": [ "src/**/*", + "src/**/*.json", "vite.config.ts", "server.ts" ] diff --git a/tsconfig.base.json b/tsconfig.base.json index cb536557..fb4dda98 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -6,6 +6,7 @@ "strict": true, "moduleResolution": "bundler", "skipLibCheck": true, - "verbatimModuleSyntax": true + "verbatimModuleSyntax": true, + "resolveJsonModule": true } } \ No newline at end of file diff --git a/utils/src/i18n.ts b/utils/src/i18n.ts index 23d610e8..b294390a 100644 --- a/utils/src/i18n.ts +++ b/utils/src/i18n.ts @@ -1,8 +1,8 @@ /// import type { i18n } from "i18next"; import { getRawI18n, onI18nReady } from "./i18n-utils"; -import messagesDe from "./i18n/de"; -import messagesEn from "./i18n/en"; +import messagesDe from "./i18n/de.json"; +import messagesEn from "./i18n/en.json"; const namespace = "facilmap-utils"; @@ -12,13 +12,13 @@ onI18nReady((i18n) => { }); if (import.meta.hot) { - import.meta.hot.accept("./i18n/en", (m) => { + import.meta.hot.accept("./i18n/en.json", (m) => { onI18nReady((i18n) => { i18n.addResourceBundle("en", namespace, m!.default); }); }); - import.meta.hot.accept("./i18n/de", (m) => { + import.meta.hot.accept("./i18n/de.json", (m) => { onI18nReady((i18n) => { i18n.addResourceBundle("de", namespace, m!.default); }); diff --git a/utils/src/i18n/de.json b/utils/src/i18n/de.json new file mode 100644 index 00000000..027ab48b --- /dev/null +++ b/utils/src/i18n/de.json @@ -0,0 +1,53 @@ +{ + "elevation": { + "http-error": "Unerwarteter Fehler beim Laden der Höhe über NN (Status {{status}})." + }, + + "format": { + "time": "{{hours}}:{{minutes}}", + "route-time": "{{time}} {{mode}}", + "distance-km": "{{distance}}\u202fkm", + "distance-mi": "{{distance}}\u202fmi", + "elevation-m": "{{elevation}}\u202fm", + "elevation-ft": "{{elevation}}\u202fft" + }, + + "objects": { + "untitled-marker": "Unbenannter Marker", + "untitled-lined": "Unbenannte Linie" + }, + + "pads": { + "unnamed-map": "Unbenannte Karte", + "page-title": "{{padName}} – {{appName}}", + "fallback-page-description": "Eine vielseitige Karte auf OpenStreetMap-Basis, auf der Marker und Linien mit Live-Kollaboration gesetzt werden können." + }, + + "routing": { + "route-mode-hgv": "mit dem LKW", + "route-mode-car": "mit dem Auto", + "route-mode-road-bike": "mit dem Rennrad", + "route-mode-mountain-bike": "mit dem Mountain Bike", + "route-mode-electric-bike": "mit dem E-Bike", + "route-mode-bicycle": "mit dem Fahrrad", + "route-mode-wheelchair": "mit dem Rollstuhl", + "route-mode-foot": "zu Fuß", + "route-time": "{{time}}\u202Fh {{mode}}" + }, + + "search": { + "http-error": "Unerwarteter Fehler bei der Suche (Status {{status}}).", + "from": "von", + "to": "nach", + "via": "über", + "hgv": "mit dem LKW", + "car": "mit dem Auto", + "road-bike": "mit dem Rennrad", + "mountain-bike": "mit dem Mountain Bike", + "electric-bike": "mit dem E-Bike|mit dem Pedelec", + "bicycle": "mit dem Rad|mit dem Fahrrad", + "wheelchair": "mit dem Rollstuhl", + "foot": "zu Fuß", + "straight": "Luftlinie" + } +} \ No newline at end of file diff --git a/utils/src/i18n/de.ts b/utils/src/i18n/de.ts deleted file mode 100644 index 1f37fe07..00000000 --- a/utils/src/i18n/de.ts +++ /dev/null @@ -1,55 +0,0 @@ -const messagesDe = { - "elevation": { - "http-error": `Unerwarteter Fehler beim Laden der Höhe über NN (Status {{status}}).` - }, - - "format": { - "time": `{{hours}}:{{minutes}}`, - "route-time": `{{time}} {{mode}}`, - "distance-km": `{{distance}}\u202fkm`, - "distance-mi": `{{distance}}\u202fmi`, - "elevation-m": `{{elevation}}\u202fm`, - "elevation-ft": `{{elevation}}\u202fft` - }, - - "objects": { - "untitled-marker": `Unbenannter Marker`, - "untitled-lined": `Unbenannte Linie` - }, - - "pads": { - "unnamed-map": `Unbenannte Karte`, - "page-title": `{{padName}} – {{appName}}`, - "fallback-page-description": `Eine vielseitige Karte auf OpenStreetMap-Basis, auf der Marker und Linien mit Live-Kollaboration gesetzt werden können.` - }, - - "routing": { - "route-mode-hgv": `mit dem LKW`, - "route-mode-car": `mit dem Auto`, - "route-mode-road-bike": `mit dem Rennrad`, - "route-mode-mountain-bike": `mit dem Mountain Bike`, - "route-mode-electric-bike": `mit dem E-Bike`, - "route-mode-bicycle": `mit dem Fahrrad`, - "route-mode-wheelchair": `mit dem Rollstuhl`, - "route-mode-foot": `zu Fuß`, - "route-time": `{{time}}\u202Fh {{mode}}` - }, - - "search": { - "http-error": `Unerwarteter Fehler bei der Suche (Status {{status}}).`, - "from": `von`, - "to": `nach`, - "via": `über`, - "hgv": `mit dem LKW`, - "car": `mit dem Auto`, - "road-bike": `mit dem Rennrad`, - "mountain-bike": `mit dem Mountain Bike`, - "electric-bike": `mit dem E-Bike|mit dem Pedelec`, - "bicycle": `mit dem Rad|mit dem Fahrrad`, - "wheelchair": `mit dem Rollstuhl`, - "foot": `zu Fuß`, - "straight": `Luftlinie` - } -}; - -export default messagesDe; diff --git a/utils/src/i18n/en.json b/utils/src/i18n/en.json new file mode 100644 index 00000000..8bbfdedb --- /dev/null +++ b/utils/src/i18n/en.json @@ -0,0 +1,52 @@ +{ + "elevation": { + "http-error": "Looking up elevations failed with status {{status}}." + }, + + "format": { + "time": "{{hours}}:{{minutes}}\u202Fh", + "route-time": "{{time}} {{mode}}", + "distance-km": "{{distance}}\u202fkm", + "distance-mi": "{{distance}}\u202fmi", + "elevation-m": "{{elevation}}\u202fm", + "elevation-ft": "{{elevation}}\u202fft" + }, + + "objects": { + "untitled-marker": "Untitled marker", + "untitled-line": "Untitled line" + }, + + "pads": { + "unnamed-map": "Unnamed map", + "page-title": "{{padName}} – {{appName}}", + "fallback-page-description": "A fully-featured OpenStreetMap-based map where markers and lines can be added with live collaboration." + }, + + "routing": { + "route-mode-hgv": "by HGV", + "route-mode-car": "by car", + "route-mode-road-bike": "by road bike", + "route-mode-mountain-bike": "by mountain bike", + "route-mode-electric-bike": "by electric bike", + "route-mode-bicycle": "by bicycle", + "route-mode-wheelchair": "by wheelchair", + "route-mode-foot": "on foot" + }, + + "search": { + "http-error": "Search failed with status {{status}}.", + "from": "from", + "to": "to", + "via": "via", + "hgv": "by HGV", + "car": "by car", + "road-bike": "by road bike", + "mountain-bike": "by mountain bike", + "electric-bike": "by electric bike", + "bicycle": "by bicycle|by bike", + "wheelchair": "by wheelchair", + "foot": "on foot|by walk|by walking|walking", + "straight": "straight|by helicopter" + } +} \ No newline at end of file diff --git a/utils/src/i18n/en.ts b/utils/src/i18n/en.ts deleted file mode 100644 index e887ca76..00000000 --- a/utils/src/i18n/en.ts +++ /dev/null @@ -1,54 +0,0 @@ -const messagesEn = { - "elevation": { - "http-error": `Looking up elevations failed with status {{status}}.` - }, - - "format": { - "time": `{{hours}}:{{minutes}}\u202Fh`, - "route-time": `{{time}} {{mode}}`, - "distance-km": `{{distance}}\u202fkm`, - "distance-mi": `{{distance}}\u202fmi`, - "elevation-m": `{{elevation}}\u202fm`, - "elevation-ft": `{{elevation}}\u202fft` - }, - - "objects": { - "untitled-marker": `Untitled marker`, - "untitled-line": `Untitled line` - }, - - "pads": { - "unnamed-map": `Unnamed map`, - "page-title": `{{padName}} – {{appName}}`, - "fallback-page-description": `A fully-featured OpenStreetMap-based map where markers and lines can be added with live collaboration.` - }, - - "routing": { - "route-mode-hgv": `by HGV`, - "route-mode-car": `by car`, - "route-mode-road-bike": `by road bike`, - "route-mode-mountain-bike": `by mountain bike`, - "route-mode-electric-bike": `by electric bike`, - "route-mode-bicycle": `by bicycle`, - "route-mode-wheelchair": `by wheelchair`, - "route-mode-foot": `on foot` - }, - - "search": { - "http-error": `Search failed with status {{status}}.`, - "from": `from`, - "to": `to`, - "via": `via`, - "hgv": `by HGV`, - "car": `by car`, - "road-bike": `by road bike`, - "mountain-bike": `by mountain bike`, - "electric-bike": `by electric bike`, - "bicycle": `by bicycle|by bike`, - "wheelchair": `by wheelchair`, - "foot": `on foot|by walk|by walking|walking`, - "straight": `straight|by helicopter` - } -}; - -export default messagesEn; diff --git a/utils/tsconfig.json b/utils/tsconfig.json index 1dcd74a7..175e9a0f 100644 --- a/utils/tsconfig.json +++ b/utils/tsconfig.json @@ -11,5 +11,5 @@ { "path": "./tsconfig.node.json" }, { "path": "../types/tsconfig.json" } ], - "include": ["src/**/*"] + "include": ["src/**/*", "src/**/*.json"] } \ No newline at end of file