more localization

This commit is contained in:
stopflock
2025-08-31 14:01:03 -05:00
parent 3150297bb0
commit f05a31f40b
21 changed files with 1963 additions and 1184 deletions
+10 -2
View File
@@ -26,7 +26,9 @@ Want to add support for your language? It's simple:
}
```
3. **Submit a PR** with just that one file. Done!
3. **Add your language to the About screen**: Edit `assets/info.txt` and add your language section at the bottom (copy the English section and translate it)
4. **Submit a PR** with your JSON file and the updated about.txt. Done!
The new language will automatically appear in Settings → Language.
@@ -44,6 +46,12 @@ The new language will automatically appear in Settings → Language.
- `fr.json` - Français
- `de.json` - Deutsch
## Files to Update
For a complete translation, you'll need to touch:
1. **`lib/localizations/xx.json`** - Main UI translations (buttons, menus, etc.)
2. **`assets/info.txt`** - About screen content (add your language section)
## That's It!
No configuration files, no build steps, no complex setup. Just add your JSON file and it works.
No configuration files, no build steps, no complex setup. Add your files and it works.
+150 -3
View File
@@ -12,7 +12,10 @@
"edit": "Bearbeiten",
"cancel": "Abbrechen",
"ok": "OK",
"close": "Schließen"
"close": "Schließen",
"submit": "Senden",
"saveEdit": "Bearbeitung Speichern",
"clear": "Löschen"
},
"followMe": {
"off": "Verfolgung aktivieren (Norden oben)",
@@ -24,10 +27,154 @@
"language": "Sprache",
"systemDefault": "Systemstandard",
"aboutInfo": "Über / Informationen",
"aboutThisApp": "Über Diese App"
"aboutThisApp": "Über Diese App",
"maxNodes": "Max. geladene/angezeigte Knoten",
"maxNodesSubtitle": "Obergrenze für die Anzahl der Knoten auf der Karte festlegen (Standard: 250).",
"maxNodesWarning": "Sie möchten das wahrscheinlich nicht tun, es sei denn, Sie sind absolut sicher, dass Sie einen guten Grund dafür haben.",
"offlineMode": "Offline-Modus",
"offlineModeSubtitle": "Alle Netzwerkanfragen außer für lokale/Offline-Bereiche deaktivieren.",
"offlineModeWarningTitle": "Aktive Downloads",
"offlineModeWarningMessage": "Die Aktivierung des Offline-Modus bricht alle aktiven Bereichsdownloads ab. Möchten Sie fortfahren?",
"enableOfflineMode": "Offline-Modus Aktivieren"
},
"node": {
"title": "Knoten #{}",
"tagSheetTitle": "Gerät-Tags"
"tagSheetTitle": "Gerät-Tags",
"queuedForUpload": "Knoten zum Upload eingereiht",
"editQueuedForUpload": "Knotenbearbeitung zum Upload eingereiht"
},
"addNode": {
"profile": "Profil",
"direction": "Richtung {}°",
"profileNoDirectionInfo": "Dieses Profil benötigt keine Richtung.",
"mustBeLoggedIn": "Sie müssen angemeldet sein, um neue Knoten zu übertragen. Bitte melden Sie sich über die Einstellungen an.",
"enableSubmittableProfile": "Aktivieren Sie ein übertragbares Profil in den Einstellungen, um neue Knoten zu übertragen.",
"profileViewOnlyWarning": "Dieses Profil ist nur zum Anzeigen der Karte gedacht. Bitte wählen Sie ein übertragbares Profil aus, um neue Knoten zu übertragen.",
"refineTags": "Tags Verfeinern",
"refineTagsWithProfile": "Tags Verfeinern ({})"
},
"editNode": {
"title": "Knoten #{} Bearbeiten",
"profile": "Profil",
"direction": "Richtung {}°",
"profileNoDirectionInfo": "Dieses Profil benötigt keine Richtung.",
"mustBeLoggedIn": "Sie müssen angemeldet sein, um Knoten zu bearbeiten. Bitte melden Sie sich über die Einstellungen an.",
"sandboxModeWarning": "Bearbeitungen von Produktionsknoten können nicht an die Sandbox übertragen werden. Wechseln Sie in den Produktionsmodus in den Einstellungen, um Knoten zu bearbeiten.",
"enableSubmittableProfile": "Aktivieren Sie ein übertragbares Profil in den Einstellungen, um Knoten zu bearbeiten.",
"profileViewOnlyWarning": "Dieses Profil ist nur zum Anzeigen der Karte gedacht. Bitte wählen Sie ein übertragbares Profil aus, um Knoten zu bearbeiten.",
"refineTags": "Tags Verfeinern",
"refineTagsWithProfile": "Tags Verfeinern ({})"
},
"download": {
"title": "Kartenbereich Herunterladen",
"maxZoomLevel": "Max. Zoom-Level",
"storageEstimate": "Speicher-Schätzung:",
"tilesAndSize": "{} Kacheln, {} MB",
"minZoom": "Min. Zoom:",
"maxRecommendedZoom": "Max. empfohlenes Zoom: Z{}",
"withinTileLimit": "Innerhalb {} Kachel-Limit",
"exceedsTileLimit": "Aktuelle Auswahl überschreitet {} Kachel-Limit",
"offlineModeWarning": "Downloads im Offline-Modus deaktiviert. Deaktivieren Sie den Offline-Modus, um neue Bereiche herunterzuladen.",
"downloadStarted": "Download gestartet! Lade Kacheln und Kameras...",
"downloadFailed": "Download konnte nicht gestartet werden: {}"
},
"uploadMode": {
"title": "Upload-Ziel",
"subtitle": "Wählen Sie, wohin Kameras hochgeladen werden",
"production": "Produktion",
"sandbox": "Sandbox",
"simulate": "Simulieren",
"productionDescription": "Hochladen in die Live-OSM-Datenbank (für alle Benutzer sichtbar)",
"sandboxDescription": "Uploads gehen an die OSM Sandbox (sicher zum Testen, wird regelmäßig zurückgesetzt).",
"sandboxNote": "HINWEIS: Aufgrund von OpenStreetMap-Limitierungen werden Kameras, die an die Sandbox übermittelt werden, NICHT in der Karte dieser App angezeigt.",
"simulateDescription": "Uploads simulieren (kontaktiert OSM-Server nicht)"
},
"auth": {
"loggedInAs": "Angemeldet als {}",
"loginToOSM": "Bei OpenStreetMap anmelden",
"tapToLogout": "Zum Abmelden antippen",
"requiredToSubmit": "Erforderlich, um Kameradaten zu übertragen",
"loggedOut": "Abgemeldet",
"testConnection": "Verbindung Testen",
"testConnectionSubtitle": "OSM-Anmeldedaten überprüfen",
"connectionOK": "Verbindung OK - Anmeldedaten sind gültig",
"connectionFailed": "Verbindung fehlgeschlagen - bitte erneut anmelden"
},
"queue": {
"pendingUploads": "Ausstehende Uploads: {}",
"simulateModeEnabled": "Simulationsmodus aktiviert Uploads simuliert",
"sandboxMode": "Sandbox-Modus Uploads gehen an OSM Sandbox",
"tapToViewQueue": "Zum Anzeigen der Warteschlange antippen",
"clearUploadQueue": "Upload-Warteschlange Löschen",
"removeAllPending": "Alle {} ausstehenden Uploads entfernen",
"clearQueueTitle": "Warteschlange Löschen",
"clearQueueConfirm": "Alle {} ausstehenden Uploads entfernen?",
"queueCleared": "Warteschlange geleert",
"uploadQueueTitle": "Upload-Warteschlange ({} Elemente)",
"queueIsEmpty": "Warteschlange ist leer",
"cameraWithIndex": "Kamera {}",
"error": " (Fehler)",
"completing": " (Wird abgeschlossen...)",
"destination": "Ziel: {}",
"latitude": "Lat: {}",
"longitude": "Lon: {}",
"direction": "Richtung: {}°",
"attempts": "Versuche: {}",
"uploadFailedRetry": "Upload fehlgeschlagen. Zum Wiederholen antippen.",
"retryUpload": "Upload wiederholen",
"clearAll": "Alle Löschen"
},
"tileProviders": {
"title": "Kachel-Anbieter",
"noProvidersConfigured": "Keine Kachel-Anbieter konfiguriert",
"tileTypesCount": "{} Kachel-Typen",
"apiKeyConfigured": "API-Schlüssel konfiguriert",
"needsApiKey": "Benötigt API-Schlüssel",
"editProvider": "Anbieter Bearbeiten",
"addProvider": "Anbieter Hinzufügen",
"deleteProvider": "Anbieter Löschen",
"deleteProviderConfirm": "Sind Sie sicher, dass Sie \"{}\" löschen möchten?",
"providerName": "Anbieter-Name",
"providerNameHint": "z.B. Benutzerdefinierte Karten GmbH",
"providerNameRequired": "Anbieter-Name ist erforderlich",
"apiKey": "API-Schlüssel (Optional)",
"apiKeyHint": "API-Schlüssel eingeben, falls von Kachel-Typen benötigt",
"tileTypes": "Kachel-Typen",
"addType": "Typ Hinzufügen",
"noTileTypesConfigured": "Keine Kachel-Typen konfiguriert",
"atLeastOneTileTypeRequired": "Mindestens ein Kachel-Typ ist erforderlich",
"manageTileProviders": "Anbieter Verwalten"
},
"tileTypeEditor": {
"editTileType": "Kachel-Typ Bearbeiten",
"addTileType": "Kachel-Typ Hinzufügen",
"name": "Name",
"nameHint": "z.B. Satellit",
"nameRequired": "Name ist erforderlich",
"urlTemplate": "URL-Vorlage",
"urlTemplateHint": "https://beispiel.com/{z}/{x}/{y}.png",
"urlTemplateRequired": "URL-Vorlage ist erforderlich",
"urlTemplatePlaceholders": "URL muss {z}, {x} und {y} Platzhalter enthalten",
"attribution": "Zuschreibung",
"attributionHint": "© Karten-Anbieter",
"attributionRequired": "Zuschreibung ist erforderlich",
"fetchPreview": "Vorschau Laden",
"previewTileLoaded": "Vorschau-Kachel erfolgreich geladen",
"previewTileFailed": "Vorschau laden fehlgeschlagen: {}",
"save": "Speichern"
},
"profiles": {
"nodeProfiles": "Knoten-Profile",
"newProfile": "Neues Profil",
"builtIn": "Eingebaut",
"custom": "Benutzerdefiniert",
"view": "Anzeigen",
"deleteProfile": "Profil Löschen",
"deleteProfileConfirm": "Sind Sie sicher, dass Sie \"{}\" löschen möchten?",
"profileDeleted": "Profil gelöscht"
},
"mapTiles": {
"title": "Karten-Kacheln",
"manageProviders": "Anbieter Verwalten"
}
}
+150 -3
View File
@@ -12,7 +12,10 @@
"edit": "Edit",
"cancel": "Cancel",
"ok": "OK",
"close": "Close"
"close": "Close",
"submit": "Submit",
"saveEdit": "Save Edit",
"clear": "Clear"
},
"followMe": {
"off": "Enable follow-me (north up)",
@@ -24,10 +27,154 @@
"language": "Language",
"systemDefault": "System Default",
"aboutInfo": "About / Info",
"aboutThisApp": "About This App"
"aboutThisApp": "About This App",
"maxNodes": "Max nodes fetched/drawn",
"maxNodesSubtitle": "Set an upper limit for the number of nodes on the map (default: 250).",
"maxNodesWarning": "You probably don't want to do that unless you are absolutely sure you have a good reason for it.",
"offlineMode": "Offline Mode",
"offlineModeSubtitle": "Disable all network requests except for local/offline areas.",
"offlineModeWarningTitle": "Active Downloads",
"offlineModeWarningMessage": "Enabling offline mode will cancel any active area downloads. Do you want to continue?",
"enableOfflineMode": "Enable Offline Mode"
},
"node": {
"title": "Node #{}",
"tagSheetTitle": "Surveillance Device Tags"
"tagSheetTitle": "Surveillance Device Tags",
"queuedForUpload": "Node queued for upload",
"editQueuedForUpload": "Node edit queued for upload"
},
"addNode": {
"profile": "Profile",
"direction": "Direction {}°",
"profileNoDirectionInfo": "This profile does not require a direction.",
"mustBeLoggedIn": "You must be logged in to submit new nodes. Please log in via Settings.",
"enableSubmittableProfile": "Enable a submittable profile in Settings to submit new nodes.",
"profileViewOnlyWarning": "This profile is for map viewing only. Please select a submittable profile to submit new nodes.",
"refineTags": "Refine Tags",
"refineTagsWithProfile": "Refine Tags ({})"
},
"editNode": {
"title": "Edit Node #{}",
"profile": "Profile",
"direction": "Direction {}°",
"profileNoDirectionInfo": "This profile does not require a direction.",
"mustBeLoggedIn": "You must be logged in to edit nodes. Please log in via Settings.",
"sandboxModeWarning": "Cannot submit edits on production nodes to sandbox. Switch to Production mode in Settings to edit nodes.",
"enableSubmittableProfile": "Enable a submittable profile in Settings to edit nodes.",
"profileViewOnlyWarning": "This profile is for map viewing only. Please select a submittable profile to edit nodes.",
"refineTags": "Refine Tags",
"refineTagsWithProfile": "Refine Tags ({})"
},
"download": {
"title": "Download Map Area",
"maxZoomLevel": "Max zoom level",
"storageEstimate": "Storage estimate:",
"tilesAndSize": "{} tiles, {} MB",
"minZoom": "Min zoom:",
"maxRecommendedZoom": "Max recommended zoom: Z{}",
"withinTileLimit": "Within {} tile limit",
"exceedsTileLimit": "Current selection exceeds {} tile limit",
"offlineModeWarning": "Downloads disabled while in offline mode. Disable offline mode to download new areas.",
"downloadStarted": "Download started! Fetching tiles and cameras...",
"downloadFailed": "Failed to start download: {}"
},
"uploadMode": {
"title": "Upload Destination",
"subtitle": "Choose where cameras are uploaded",
"production": "Production",
"sandbox": "Sandbox",
"simulate": "Simulate",
"productionDescription": "Upload to the live OSM database (visible to all users)",
"sandboxDescription": "Uploads go to the OSM Sandbox (safe for testing, resets regularly).",
"sandboxNote": "NOTE: Due to OpenStreetMap limitations, cameras submitted to the sandbox will NOT appear on the map in this app.",
"simulateDescription": "Simulate uploads (does not contact OSM servers)"
},
"auth": {
"loggedInAs": "Logged in as {}",
"loginToOSM": "Log in to OpenStreetMap",
"tapToLogout": "Tap to logout",
"requiredToSubmit": "Required to submit camera data",
"loggedOut": "Logged out",
"testConnection": "Test Connection",
"testConnectionSubtitle": "Verify OSM credentials are working",
"connectionOK": "Connection OK - credentials are valid",
"connectionFailed": "Connection failed - please re-login"
},
"queue": {
"pendingUploads": "Pending uploads: {}",
"simulateModeEnabled": "Simulate mode enabled uploads simulated",
"sandboxMode": "Sandbox mode uploads go to OSM Sandbox",
"tapToViewQueue": "Tap to view queue",
"clearUploadQueue": "Clear Upload Queue",
"removeAllPending": "Remove all {} pending uploads",
"clearQueueTitle": "Clear Queue",
"clearQueueConfirm": "Remove all {} pending uploads?",
"queueCleared": "Queue cleared",
"uploadQueueTitle": "Upload Queue ({} items)",
"queueIsEmpty": "Queue is empty",
"cameraWithIndex": "Camera {}",
"error": " (Error)",
"completing": " (Completing...)",
"destination": "Dest: {}",
"latitude": "Lat: {}",
"longitude": "Lon: {}",
"direction": "Direction: {}°",
"attempts": "Attempts: {}",
"uploadFailedRetry": "Upload failed. Tap retry to try again.",
"retryUpload": "Retry upload",
"clearAll": "Clear All"
},
"tileProviders": {
"title": "Tile Providers",
"noProvidersConfigured": "No tile providers configured",
"tileTypesCount": "{} tile types",
"apiKeyConfigured": "API Key configured",
"needsApiKey": "Needs API key",
"editProvider": "Edit Provider",
"addProvider": "Add Provider",
"deleteProvider": "Delete Provider",
"deleteProviderConfirm": "Are you sure you want to delete \"{}\"?",
"providerName": "Provider Name",
"providerNameHint": "e.g., Custom Maps Inc.",
"providerNameRequired": "Provider name is required",
"apiKey": "API Key (Optional)",
"apiKeyHint": "Enter API key if required by tile types",
"tileTypes": "Tile Types",
"addType": "Add Type",
"noTileTypesConfigured": "No tile types configured",
"atLeastOneTileTypeRequired": "At least one tile type is required",
"manageTileProviders": "Manage Providers"
},
"tileTypeEditor": {
"editTileType": "Edit Tile Type",
"addTileType": "Add Tile Type",
"name": "Name",
"nameHint": "e.g., Satellite",
"nameRequired": "Name is required",
"urlTemplate": "URL Template",
"urlTemplateHint": "https://example.com/{z}/{x}/{y}.png",
"urlTemplateRequired": "URL template is required",
"urlTemplatePlaceholders": "URL must contain {z}, {x}, and {y} placeholders",
"attribution": "Attribution",
"attributionHint": "© Map Provider",
"attributionRequired": "Attribution is required",
"fetchPreview": "Fetch Preview",
"previewTileLoaded": "Preview tile loaded successfully",
"previewTileFailed": "Failed to fetch preview: {}",
"save": "Save"
},
"profiles": {
"nodeProfiles": "Node Profiles",
"newProfile": "New Profile",
"builtIn": "Built-in",
"custom": "Custom",
"view": "View",
"deleteProfile": "Delete Profile",
"deleteProfileConfirm": "Are you sure you want to delete \"{}\"?",
"profileDeleted": "Profile deleted"
},
"mapTiles": {
"title": "Map Tiles",
"manageProviders": "Manage Providers"
}
}
+150 -3
View File
@@ -12,7 +12,10 @@
"edit": "Editar",
"cancel": "Cancelar",
"ok": "Aceptar",
"close": "Cerrar"
"close": "Cerrar",
"submit": "Enviar",
"saveEdit": "Guardar Edición",
"clear": "Limpiar"
},
"followMe": {
"off": "Activar seguimiento (norte arriba)",
@@ -24,10 +27,154 @@
"language": "Idioma",
"systemDefault": "Sistema por Defecto",
"aboutInfo": "Acerca de / Información",
"aboutThisApp": "Acerca de Esta App"
"aboutThisApp": "Acerca de Esta App",
"maxNodes": "Máx. nodos obtenidos/dibujados",
"maxNodesSubtitle": "Establecer un límite superior para el número de nodos en el mapa (predeterminado: 250).",
"maxNodesWarning": "Probablemente no quieras hacer eso a menos que estés absolutamente seguro de que tienes una buena razón para ello.",
"offlineMode": "Modo Sin Conexión",
"offlineModeSubtitle": "Deshabilitar todas las solicitudes de red excepto para áreas locales/sin conexión.",
"offlineModeWarningTitle": "Descargas Activas",
"offlineModeWarningMessage": "Habilitar el modo sin conexión cancelará cualquier descarga de área activa. ¿Desea continuar?",
"enableOfflineMode": "Habilitar Modo Sin Conexión"
},
"node": {
"title": "Nodo #{}",
"tagSheetTitle": "Etiquetas del Dispositivo"
"tagSheetTitle": "Etiquetas del Dispositivo",
"queuedForUpload": "Nodo en cola para subir",
"editQueuedForUpload": "Edición de nodo en cola para subir"
},
"addNode": {
"profile": "Perfil",
"direction": "Dirección {}°",
"profileNoDirectionInfo": "Este perfil no requiere una dirección.",
"mustBeLoggedIn": "Debe estar conectado para enviar nuevos nodos. Por favor, inicie sesión a través de Configuración.",
"enableSubmittableProfile": "Habilite un perfil envíable en Configuración para enviar nuevos nodos.",
"profileViewOnlyWarning": "Este perfil es solo para visualización del mapa. Por favor, seleccione un perfil envíable para enviar nuevos nodos.",
"refineTags": "Refinar Etiquetas",
"refineTagsWithProfile": "Refinar Etiquetas ({})"
},
"editNode": {
"title": "Editar Nodo #{}",
"profile": "Perfil",
"direction": "Dirección {}°",
"profileNoDirectionInfo": "Este perfil no requiere una dirección.",
"mustBeLoggedIn": "Debe estar conectado para editar nodos. Por favor, inicie sesión a través de Configuración.",
"sandboxModeWarning": "No se pueden enviar ediciones de nodos de producción al sandbox. Cambie al modo Producción en Configuración para editar nodos.",
"enableSubmittableProfile": "Habilite un perfil envíable en Configuración para editar nodos.",
"profileViewOnlyWarning": "Este perfil es solo para visualización del mapa. Por favor, seleccione un perfil envíable para editar nodos.",
"refineTags": "Refinar Etiquetas",
"refineTagsWithProfile": "Refinar Etiquetas ({})"
},
"download": {
"title": "Descargar Área del Mapa",
"maxZoomLevel": "Nivel máx. de zoom",
"storageEstimate": "Estimación de almacenamiento:",
"tilesAndSize": "{} mosaicos, {} MB",
"minZoom": "Zoom mín.:",
"maxRecommendedZoom": "Zoom máx. recomendado: Z{}",
"withinTileLimit": "Dentro del límite de {} mosaicos",
"exceedsTileLimit": "La selección actual excede el límite de {} mosaicos",
"offlineModeWarning": "Descargas deshabilitadas en modo sin conexión. Deshabilite el modo sin conexión para descargar nuevas áreas.",
"downloadStarted": "¡Descarga iniciada! Obteniendo mosaicos y cámaras...",
"downloadFailed": "Error al iniciar la descarga: {}"
},
"uploadMode": {
"title": "Destino de Subida",
"subtitle": "Elige dónde se suben las cámaras",
"production": "Producción",
"sandbox": "Sandbox",
"simulate": "Simular",
"productionDescription": "Subir a la base de datos OSM en vivo (visible para todos los usuarios)",
"sandboxDescription": "Las subidas van al Sandbox de OSM (seguro para pruebas, se reinicia regularmente).",
"sandboxNote": "NOTA: Debido a las limitaciones de OpenStreetMap, las cámaras enviadas al sandbox NO aparecerán en el mapa de esta aplicación.",
"simulateDescription": "Simular subidas (no contacta servidores OSM)"
},
"auth": {
"loggedInAs": "Conectado como {}",
"loginToOSM": "Iniciar sesión en OpenStreetMap",
"tapToLogout": "Toque para cerrar sesión",
"requiredToSubmit": "Requerido para enviar datos de cámaras",
"loggedOut": "Sesión cerrada",
"testConnection": "Probar Conexión",
"testConnectionSubtitle": "Verificar que las credenciales de OSM funcionen",
"connectionOK": "Conexión OK - las credenciales son válidas",
"connectionFailed": "Conexión falló - por favor, inicie sesión nuevamente"
},
"queue": {
"pendingUploads": "Subidas pendientes: {}",
"simulateModeEnabled": "Modo simulación activado subidas simuladas",
"sandboxMode": "Modo sandbox subidas van al Sandbox OSM",
"tapToViewQueue": "Toque para ver cola",
"clearUploadQueue": "Limpiar Cola de Subida",
"removeAllPending": "Eliminar todas las {} subidas pendientes",
"clearQueueTitle": "Limpiar Cola",
"clearQueueConfirm": "¿Eliminar todas las {} subidas pendientes?",
"queueCleared": "Cola limpiada",
"uploadQueueTitle": "Cola de Subida ({} elementos)",
"queueIsEmpty": "La cola está vacía",
"cameraWithIndex": "Cámara {}",
"error": " (Error)",
"completing": " (Completando...)",
"destination": "Dest: {}",
"latitude": "Lat: {}",
"longitude": "Lon: {}",
"direction": "Dirección: {}°",
"attempts": "Intentos: {}",
"uploadFailedRetry": "Subida falló. Toque reintentar para intentar de nuevo.",
"retryUpload": "Reintentar subida",
"clearAll": "Limpiar Todo"
},
"tileProviders": {
"title": "Proveedores de Tiles",
"noProvidersConfigured": "No hay proveedores de tiles configurados",
"tileTypesCount": "{} tipos de tiles",
"apiKeyConfigured": "Clave API configurada",
"needsApiKey": "Necesita clave API",
"editProvider": "Editar Proveedor",
"addProvider": "Agregar Proveedor",
"deleteProvider": "Eliminar Proveedor",
"deleteProviderConfirm": "¿Está seguro de que desea eliminar \"{}\"?",
"providerName": "Nombre del Proveedor",
"providerNameHint": "ej., Mapas Personalizados Inc.",
"providerNameRequired": "El nombre del proveedor es requerido",
"apiKey": "Clave API (Opcional)",
"apiKeyHint": "Ingrese la clave API si es requerida por los tipos de tiles",
"tileTypes": "Tipos de Tiles",
"addType": "Agregar Tipo",
"noTileTypesConfigured": "No hay tipos de tiles configurados",
"atLeastOneTileTypeRequired": "Se requiere al menos un tipo de tile",
"manageTileProviders": "Gestionar Proveedores"
},
"tileTypeEditor": {
"editTileType": "Editar Tipo de Tile",
"addTileType": "Agregar Tipo de Tile",
"name": "Nombre",
"nameHint": "ej., Satélite",
"nameRequired": "El nombre es requerido",
"urlTemplate": "Plantilla de URL",
"urlTemplateHint": "https://ejemplo.com/{z}/{x}/{y}.png",
"urlTemplateRequired": "La plantilla de URL es requerida",
"urlTemplatePlaceholders": "La URL debe contener marcadores {z}, {x} y {y}",
"attribution": "Atribución",
"attributionHint": "© Proveedor de Mapas",
"attributionRequired": "La atribución es requerida",
"fetchPreview": "Obtener Vista Previa",
"previewTileLoaded": "Tile de vista previa cargado exitosamente",
"previewTileFailed": "Falló al obtener vista previa: {}",
"save": "Guardar"
},
"profiles": {
"nodeProfiles": "Perfiles de Nodos",
"newProfile": "Nuevo Perfil",
"builtIn": "Incorporado",
"custom": "Personalizado",
"view": "Ver",
"deleteProfile": "Eliminar Perfil",
"deleteProfileConfirm": "¿Está seguro de que desea eliminar \"{}\"?",
"profileDeleted": "Perfil eliminado"
},
"mapTiles": {
"title": "Tiles de Mapa",
"manageProviders": "Gestionar Proveedores"
}
}
+150 -3
View File
@@ -12,7 +12,10 @@
"edit": "Modifier",
"cancel": "Annuler",
"ok": "OK",
"close": "Fermer"
"close": "Fermer",
"submit": "Soumettre",
"saveEdit": "Sauvegarder Modification",
"clear": "Effacer"
},
"followMe": {
"off": "Activer le suivi (nord en haut)",
@@ -24,10 +27,154 @@
"language": "Langue",
"systemDefault": "Par Défaut du Système",
"aboutInfo": "À Propos / Informations",
"aboutThisApp": "À Propos de Cette App"
"aboutThisApp": "À Propos de Cette App",
"maxNodes": "Max. nœuds récupérés/dessinés",
"maxNodesSubtitle": "Définir une limite supérieure pour le nombre de nœuds sur la carte (par défaut: 250).",
"maxNodesWarning": "Vous ne voulez probablement pas faire cela à moins d'être absolument sûr d'avoir une bonne raison de le faire.",
"offlineMode": "Mode Hors Ligne",
"offlineModeSubtitle": "Désactiver toutes les requêtes réseau sauf pour les zones locales/hors ligne.",
"offlineModeWarningTitle": "Téléchargements Actifs",
"offlineModeWarningMessage": "L'activation du mode hors ligne annulera tous les téléchargements de zone actifs. Voulez-vous continuer?",
"enableOfflineMode": "Activer le Mode Hors Ligne"
},
"node": {
"title": "Nœud #{}",
"tagSheetTitle": "Balises du Dispositif"
"tagSheetTitle": "Balises du Dispositif",
"queuedForUpload": "Nœud mis en file pour envoi",
"editQueuedForUpload": "Modification de nœud mise en file pour envoi"
},
"addNode": {
"profile": "Profil",
"direction": "Direction {}°",
"profileNoDirectionInfo": "Ce profil ne nécessite pas de direction.",
"mustBeLoggedIn": "Vous devez être connecté pour soumettre de nouveaux nœuds. Veuillez vous connecter via les Paramètres.",
"enableSubmittableProfile": "Activez un profil soumissible dans les Paramètres pour soumettre de nouveaux nœuds.",
"profileViewOnlyWarning": "Ce profil est uniquement pour la visualisation de la carte. Veuillez sélectionner un profil soumissible pour soumettre de nouveaux nœuds.",
"refineTags": "Affiner Balises",
"refineTagsWithProfile": "Affiner Balises ({})"
},
"editNode": {
"title": "Modifier Nœud #{}",
"profile": "Profil",
"direction": "Direction {}°",
"profileNoDirectionInfo": "Ce profil ne nécessite pas de direction.",
"mustBeLoggedIn": "Vous devez être connecté pour modifier les nœuds. Veuillez vous connecter via les Paramètres.",
"sandboxModeWarning": "Impossible de soumettre des modifications de nœuds de production au sandbox. Passez au mode Production dans les Paramètres pour modifier les nœuds.",
"enableSubmittableProfile": "Activez un profil soumissible dans les Paramètres pour modifier les nœuds.",
"profileViewOnlyWarning": "Ce profil est uniquement pour la visualisation de la carte. Veuillez sélectionner un profil soumissible pour modifier les nœuds.",
"refineTags": "Affiner Balises",
"refineTagsWithProfile": "Affiner Balises ({})"
},
"download": {
"title": "Télécharger Zone de Carte",
"maxZoomLevel": "Niveau de zoom max.",
"storageEstimate": "Estimation de stockage:",
"tilesAndSize": "{} tuiles, {} MB",
"minZoom": "Zoom min.:",
"maxRecommendedZoom": "Zoom max. recommandé: Z{}",
"withinTileLimit": "Dans la limite de {} tuiles",
"exceedsTileLimit": "La sélection actuelle dépasse la limite de {} tuiles",
"offlineModeWarning": "Téléchargements désactivés en mode hors ligne. Désactivez le mode hors ligne pour télécharger de nouvelles zones.",
"downloadStarted": "Téléchargement démarré! Récupération des tuiles et caméras...",
"downloadFailed": "Échec du démarrage du téléchargement: {}"
},
"uploadMode": {
"title": "Destination de Téléchargement",
"subtitle": "Choisir où les caméras sont téléchargées",
"production": "Production",
"sandbox": "Sandbox",
"simulate": "Simuler",
"productionDescription": "Télécharger vers la base de données OSM en direct (visible pour tous les utilisateurs)",
"sandboxDescription": "Les téléchargements vont vers le Sandbox OSM (sûr pour les tests, réinitialisé régulièrement).",
"sandboxNote": "NOTE: En raison des limitations d'OpenStreetMap, les caméras soumises au sandbox n'apparaîtront PAS sur la carte dans cette application.",
"simulateDescription": "Simuler les téléchargements (ne contacte pas les serveurs OSM)"
},
"auth": {
"loggedInAs": "Connecté en tant que {}",
"loginToOSM": "Se connecter à OpenStreetMap",
"tapToLogout": "Appuyer pour se déconnecter",
"requiredToSubmit": "Requis pour soumettre des données de caméras",
"loggedOut": "Déconnecté",
"testConnection": "Tester Connexion",
"testConnectionSubtitle": "Vérifier que les identifiants OSM fonctionnent",
"connectionOK": "Connexion OK - les identifiants sont valides",
"connectionFailed": "Connexion échouée - veuillez vous reconnecter"
},
"queue": {
"pendingUploads": "Téléchargements en attente: {}",
"simulateModeEnabled": "Mode simulation activé téléchargements simulés",
"sandboxMode": "Mode sandbox téléchargements vont vers OSM Sandbox",
"tapToViewQueue": "Appuyer pour voir la file",
"clearUploadQueue": "Vider File de Téléchargement",
"removeAllPending": "Supprimer tous les {} téléchargements en attente",
"clearQueueTitle": "Vider File",
"clearQueueConfirm": "Supprimer tous les {} téléchargements en attente?",
"queueCleared": "File vidée",
"uploadQueueTitle": "File de Téléchargement ({} éléments)",
"queueIsEmpty": "La file est vide",
"cameraWithIndex": "Caméra {}",
"error": " (Erreur)",
"completing": " (Finalisation...)",
"destination": "Dest: {}",
"latitude": "Lat: {}",
"longitude": "Lon: {}",
"direction": "Direction: {}°",
"attempts": "Tentatives: {}",
"uploadFailedRetry": "Téléchargement échoué. Appuyer pour réessayer.",
"retryUpload": "Réessayer téléchargement",
"clearAll": "Tout Vider"
},
"tileProviders": {
"title": "Fournisseurs de Tuiles",
"noProvidersConfigured": "Aucun fournisseur de tuiles configuré",
"tileTypesCount": "{} types de tuiles",
"apiKeyConfigured": "Clé API configurée",
"needsApiKey": "Nécessite une clé API",
"editProvider": "Modifier Fournisseur",
"addProvider": "Ajouter Fournisseur",
"deleteProvider": "Supprimer Fournisseur",
"deleteProviderConfirm": "Êtes-vous sûr de vouloir supprimer \"{}\"?",
"providerName": "Nom du Fournisseur",
"providerNameHint": "ex., Cartes Personnalisées Inc.",
"providerNameRequired": "Le nom du fournisseur est requis",
"apiKey": "Clé API (Optionnel)",
"apiKeyHint": "Entrez la clé API si requise par les types de tuiles",
"tileTypes": "Types de Tuiles",
"addType": "Ajouter Type",
"noTileTypesConfigured": "Aucun type de tuile configuré",
"atLeastOneTileTypeRequired": "Au moins un type de tuile est requis",
"manageTileProviders": "Gérer Fournisseurs"
},
"tileTypeEditor": {
"editTileType": "Modifier Type de Tuile",
"addTileType": "Ajouter Type de Tuile",
"name": "Nom",
"nameHint": "ex., Satellite",
"nameRequired": "Le nom est requis",
"urlTemplate": "Modèle d'URL",
"urlTemplateHint": "https://exemple.com/{z}/{x}/{y}.png",
"urlTemplateRequired": "Le modèle d'URL est requis",
"urlTemplatePlaceholders": "L'URL doit contenir les marqueurs {z}, {x} et {y}",
"attribution": "Attribution",
"attributionHint": "© Fournisseur de Cartes",
"attributionRequired": "L'attribution est requise",
"fetchPreview": "Récupérer Aperçu",
"previewTileLoaded": "Tuile d'aperçu chargée avec succès",
"previewTileFailed": "Échec de récupération de l'aperçu: {}",
"save": "Sauvegarder"
},
"profiles": {
"nodeProfiles": "Profils de Nœuds",
"newProfile": "Nouveau Profil",
"builtIn": "Intégré",
"custom": "Personnalisé",
"view": "Voir",
"deleteProfile": "Supprimer Profil",
"deleteProfileConfirm": "Êtes-vous sûr de vouloir supprimer \"{}\"?",
"profileDeleted": "Profil supprimé"
},
"mapTiles": {
"title": "Tuiles de Carte",
"manageProviders": "Gérer Fournisseurs"
}
}