From 6b5f05d036b473f0259e57ada2555b08639a2583 Mon Sep 17 00:00:00 2001 From: stopflock Date: Mon, 29 Sep 2025 12:20:35 -0500 Subject: [PATCH] Italian and Chinese coz why not --- lib/localizations/it.json | 258 ++++++++++++++++++++++++++++++++++++++ lib/localizations/zh.json | 258 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 516 insertions(+) create mode 100644 lib/localizations/it.json create mode 100644 lib/localizations/zh.json diff --git a/lib/localizations/it.json b/lib/localizations/it.json new file mode 100644 index 0000000..c80cb36 --- /dev/null +++ b/lib/localizations/it.json @@ -0,0 +1,258 @@ +{ + "language": { + "name": "Italiano" + }, + "app": { + "title": "DeFlock" + }, + "actions": { + "tagNode": "Nuovo Nodo", + "download": "Scarica", + "settings": "Impostazioni", + "edit": "Modifica", + "delete": "Elimina", + "cancel": "Annulla", + "ok": "OK", + "close": "Chiudi", + "submit": "Invia", + "saveEdit": "Salva Modifica", + "clear": "Pulisci" + }, + "followMe": { + "off": "Attiva seguimi (nord in alto)", + "northUp": "Attiva seguimi (rotazione)", + "rotating": "Disattiva seguimi" + }, + "settings": { + "title": "Impostazioni", + "language": "Lingua", + "systemDefault": "Predefinito del Sistema", + "aboutInfo": "Informazioni", + "aboutThisApp": "Informazioni su questa App", + "maxNodes": "Max nodi recuperati/disegnati", + "maxNodesSubtitle": "Imposta un limite superiore per il numero di nodi sulla mappa (predefinito: 250).", + "maxNodesWarning": "Probabilmente non vuoi farlo a meno che non sei assolutamente sicuro di avere una buona ragione per farlo.", + "offlineMode": "Modalità Offline", + "offlineModeSubtitle": "Disabilita tutte le richieste di rete tranne per aree locali/offline.", + "offlineModeWarningTitle": "Download Attivi", + "offlineModeWarningMessage": "L'attivazione della modalità offline cancellerà qualsiasi download di area attivo. Vuoi continuare?", + "enableOfflineMode": "Attiva Modalità Offline" + }, + "node": { + "title": "Nodo #{}", + "tagSheetTitle": "Tag Dispositivo di Sorveglianza", + "queuedForUpload": "Nodo in coda per il caricamento", + "editQueuedForUpload": "Modifica nodo in coda per il caricamento", + "deleteQueuedForUpload": "Eliminazione nodo in coda per il caricamento", + "confirmDeleteTitle": "Elimina Nodo", + "confirmDeleteMessage": "Sei sicuro di voler eliminare il nodo #{}? Questa azione non può essere annullata." + }, + "addNode": { + "profile": "Profilo", + "direction": "Direzione {}°", + "profileNoDirectionInfo": "Questo profilo non richiede una direzione.", + "mustBeLoggedIn": "Devi essere loggato per inviare nuovi nodi. Per favore accedi tramite Impostazioni.", + "enableSubmittableProfile": "Abilita un profilo inviabile nelle Impostazioni per inviare nuovi nodi.", + "profileViewOnlyWarning": "Questo profilo è solo per la visualizzazione della mappa. Per favore seleziona un profilo inviabile per inviare nuovi nodi.", + "refineTags": "Affina Tag", + "refineTagsWithProfile": "Affina Tag ({})" + }, + "editNode": { + "title": "Modifica Nodo #{}", + "profile": "Profilo", + "direction": "Direzione {}°", + "profileNoDirectionInfo": "Questo profilo non richiede una direzione.", + "mustBeLoggedIn": "Devi essere loggato per modificare i nodi. Per favore accedi tramite Impostazioni.", + "sandboxModeWarning": "Impossibile inviare modifiche di nodi di produzione alla sandbox. Passa alla modalità Produzione nelle Impostazioni per modificare i nodi.", + "enableSubmittableProfile": "Abilita un profilo inviabile nelle Impostazioni per modificare i nodi.", + "profileViewOnlyWarning": "Questo profilo è solo per la visualizzazione della mappa. Per favore seleziona un profilo inviabile per modificare i nodi.", + "refineTags": "Affina Tag", + "refineTagsWithProfile": "Affina Tag ({})" + }, + "download": { + "title": "Scarica Area Mappa", + "maxZoomLevel": "Livello zoom max", + "storageEstimate": "Stima archiviazione:", + "tilesAndSize": "{} tile, {} MB", + "minZoom": "Zoom min:", + "maxRecommendedZoom": "Zoom max raccomandato: Z{}", + "withinTileLimit": "Entro il limite di {} tile", + "exceedsTileLimit": "La selezione corrente supera il limite di {} tile", + "offlineModeWarning": "Download disabilitati in modalità offline. Disabilita la modalità offline per scaricare nuove aree.", + "downloadStarted": "Download avviato! Recupero tile e telecamere...", + "downloadFailed": "Impossibile avviare il download: {}" + }, + "uploadMode": { + "title": "Destinazione Upload", + "subtitle": "Scegli dove vengono caricate le telecamere", + "production": "Produzione", + "sandbox": "Sandbox", + "simulate": "Simula", + "productionDescription": "Carica nel database OSM dal vivo (visibile a tutti gli utenti)", + "sandboxDescription": "Gli upload vanno alla Sandbox OSM (sicuro per i test, si resetta regolarmente).", + "simulateDescription": "Simula upload (non contatta i server OSM)" + }, + "auth": { + "loggedInAs": "Loggato come {}", + "loginToOSM": "Accedi a OpenStreetMap", + "tapToLogout": "Tocca per disconnetterti", + "requiredToSubmit": "Richiesto per inviare dati delle telecamere", + "loggedOut": "Disconnesso", + "testConnection": "Testa Connessione", + "testConnectionSubtitle": "Verifica che le credenziali OSM funzionino", + "connectionOK": "Connessione OK - le credenziali sono valide", + "connectionFailed": "Connessione fallita - per favore accedi di nuovo" + }, + "queue": { + "pendingUploads": "Upload in sospeso: {}", + "simulateModeEnabled": "Modalità simulazione abilitata – upload simulati", + "sandboxMode": "Modalità sandbox – upload vanno alla Sandbox OSM", + "tapToViewQueue": "Tocca per vedere la coda", + "clearUploadQueue": "Pulisci Coda Upload", + "removeAllPending": "Rimuovi tutti i {} upload in sospeso", + "clearQueueTitle": "Pulisci Coda", + "clearQueueConfirm": "Rimuovere tutti i {} upload in sospeso?", + "queueCleared": "Coda pulita", + "uploadQueueTitle": "Coda Upload ({} elementi)", + "queueIsEmpty": "La coda è vuota", + "cameraWithIndex": "Telecamera {}", + "error": " (Errore)", + "completing": " (Completamento...)", + "destination": "Dest: {}", + "latitude": "Lat: {}", + "longitude": "Lon: {}", + "direction": "Direzione: {}°", + "attempts": "Tentativi: {}", + "uploadFailedRetry": "Upload fallito. Tocca riprova per tentare di nuovo.", + "retryUpload": "Riprova upload", + "clearAll": "Pulisci Tutto" + }, + "tileProviders": { + "title": "Fornitori di Tile", + "noProvidersConfigured": "Nessun fornitore di tile configurato", + "tileTypesCount": "{} tipi di tile", + "apiKeyConfigured": "Chiave API configurata", + "needsApiKey": "Richiede chiave API", + "editProvider": "Modifica Fornitore", + "addProvider": "Aggiungi Fornitore", + "deleteProvider": "Elimina Fornitore", + "deleteProviderConfirm": "Sei sicuro di voler eliminare \"{}\"?", + "providerName": "Nome Fornitore", + "providerNameHint": "es., Mappe Personalizzate Inc.", + "providerNameRequired": "Il nome del fornitore è obbligatorio", + "apiKey": "Chiave API (Opzionale)", + "apiKeyHint": "Inserisci la chiave API se richiesta dai tipi di tile", + "tileTypes": "Tipi di Tile", + "addType": "Aggiungi Tipo", + "noTileTypesConfigured": "Nessun tipo di tile configurato", + "atLeastOneTileTypeRequired": "È richiesto almeno un tipo di tile", + "manageTileProviders": "Gestisci Fornitori" + }, + "tileTypeEditor": { + "editTileType": "Modifica Tipo Tile", + "addTileType": "Aggiungi Tipo Tile", + "name": "Nome", + "nameHint": "es., Satellite", + "nameRequired": "Il nome è obbligatorio", + "urlTemplate": "Template URL", + "urlTemplateHint": "https://esempio.com/{z}/{x}/{y}.png", + "urlTemplateRequired": "Il template URL è obbligatorio", + "urlTemplatePlaceholders": "L'URL deve contenere i segnaposto {z}, {x} e {y}", + "attribution": "Attribuzione", + "attributionHint": "© Fornitore Mappe", + "attributionRequired": "L'attribuzione è obbligatoria", + "fetchPreview": "Ottieni Anteprima", + "previewTileLoaded": "Tile di anteprima caricato con successo", + "previewTileFailed": "Impossibile ottenere l'anteprima: {}", + "save": "Salva" + }, + "profiles": { + "nodeProfiles": "Profili Nodo", + "newProfile": "Nuovo Profilo", + "builtIn": "Integrato", + "custom": "Personalizzato", + "view": "Visualizza", + "deleteProfile": "Elimina Profilo", + "deleteProfileConfirm": "Sei sicuro di voler eliminare \"{}\"?", + "profileDeleted": "Profilo eliminato" + }, + "mapTiles": { + "title": "Tile Mappa", + "manageProviders": "Gestisci Fornitori" + }, + "profileEditor": { + "viewProfile": "Visualizza Profilo", + "newProfile": "Nuovo Profilo", + "editProfile": "Modifica Profilo", + "profileName": "Nome profilo", + "profileNameHint": "es., Telecamera ALPR Personalizzata", + "profileNameRequired": "Il nome del profilo è obbligatorio", + "requiresDirection": "Richiede Direzione", + "requiresDirectionSubtitle": "Se le telecamere di questo tipo necessitano di un tag direzione", + "submittable": "Inviabile", + "submittableSubtitle": "Se questo profilo può essere usato per invii di telecamere", + "osmTags": "Tag OSM", + "addTag": "Aggiungi Tag", + "saveProfile": "Salva Profilo", + "keyHint": "chiave", + "valueHint": "valore", + "atLeastOneTagRequired": "È richiesto almeno un tag", + "profileSaved": "Profilo \"{}\" salvato" + }, + "operatorProfileEditor": { + "newOperatorProfile": "Nuovo Profilo Operatore", + "editOperatorProfile": "Modifica Profilo Operatore", + "operatorName": "Nome operatore", + "operatorNameHint": "es., Dipartimento di Polizia di Austin", + "operatorNameRequired": "Il nome dell'operatore è obbligatorio", + "operatorProfileSaved": "Profilo operatore \"{}\" salvato" + }, + "operatorProfiles": { + "title": "Profili Operatore", + "noProfilesMessage": "Nessun profilo operatore definito. Creane uno per applicare tag operatore agli invii di nodi.", + "tagsCount": "{} tag", + "deleteOperatorProfile": "Elimina Profilo Operatore", + "deleteOperatorProfileConfirm": "Sei sicuro di voler eliminare \"{}\"?", + "operatorProfileDeleted": "Profilo operatore eliminato" + }, + "offlineAreas": { + "noAreasTitle": "Nessuna area offline", + "noAreasSubtitle": "Scarica un'area mappa per l'uso offline.", + "provider": "Fornitore", + "maxZoom": "Zoom max", + "zoomLevels": "Z{}-{}", + "latitude": "Lat", + "longitude": "Lon", + "tiles": "Tile", + "size": "Dimensione", + "cameras": "Telecamere", + "areaIdFallback": "Area {}...", + "renameArea": "Rinomina area", + "refreshWorldTiles": "Aggiorna/ri-scarica tile mondiali", + "deleteOfflineArea": "Elimina area offline", + "cancelDownload": "Annulla download", + "renameAreaDialogTitle": "Rinomina Area Offline", + "areaNameLabel": "Nome Area", + "renameButton": "Rinomina", + "megabytes": "MB", + "kilobytes": "KB", + "progress": "{}%" + }, + "refineTagsSheet": { + "title": "Affina Tag", + "operatorProfile": "Profilo Operatore", + "done": "Fatto", + "none": "Nessuno", + "noAdditionalOperatorTags": "Nessun tag operatore aggiuntivo", + "additionalTags": "tag aggiuntivi", + "additionalTagsTitle": "Tag Aggiuntivi", + "noTagsDefinedForProfile": "Nessun tag definito per questo profilo operatore.", + "noOperatorProfiles": "Nessun profilo operatore definito", + "noOperatorProfilesMessage": "Crea profili operatore nelle Impostazioni per applicare tag aggiuntivi ai tuoi invii di nodi." + }, + "layerSelector": { + "cannotChangeTileTypes": "Impossibile cambiare tipi di tile durante il download di aree offline", + "selectMapLayer": "Seleziona Livello Mappa", + "noTileProvidersAvailable": "Nessun fornitore di tile disponibile" + } +} \ No newline at end of file diff --git a/lib/localizations/zh.json b/lib/localizations/zh.json new file mode 100644 index 0000000..222fc4d --- /dev/null +++ b/lib/localizations/zh.json @@ -0,0 +1,258 @@ +{ + "language": { + "name": "中文" + }, + "app": { + "title": "DeFlock" + }, + "actions": { + "tagNode": "新建节点", + "download": "下载", + "settings": "设置", + "edit": "编辑", + "delete": "删除", + "cancel": "取消", + "ok": "确定", + "close": "关闭", + "submit": "提交", + "saveEdit": "保存编辑", + "clear": "清空" + }, + "followMe": { + "off": "启用跟随模式(北向上)", + "northUp": "启用跟随模式(旋转)", + "rotating": "禁用跟随模式" + }, + "settings": { + "title": "设置", + "language": "语言", + "systemDefault": "系统默认", + "aboutInfo": "关于 / 信息", + "aboutThisApp": "关于此应用", + "maxNodes": "最大节点获取/绘制数", + "maxNodesSubtitle": "设置地图上节点数量的上限(默认:250)。", + "maxNodesWarning": "除非您确定有充分的理由,否则您可能不想这样做。", + "offlineMode": "离线模式", + "offlineModeSubtitle": "禁用除本地/离线区域外的所有网络请求。", + "offlineModeWarningTitle": "活动下载", + "offlineModeWarningMessage": "启用离线模式将取消任何活动的区域下载。您要继续吗?", + "enableOfflineMode": "启用离线模式" + }, + "node": { + "title": "节点 #{}", + "tagSheetTitle": "监控设备标签", + "queuedForUpload": "节点已排队上传", + "editQueuedForUpload": "节点编辑已排队上传", + "deleteQueuedForUpload": "节点删除已排队上传", + "confirmDeleteTitle": "删除节点", + "confirmDeleteMessage": "您确定要删除节点 #{} 吗?此操作无法撤销。" + }, + "addNode": { + "profile": "配置文件", + "direction": "方向 {}°", + "profileNoDirectionInfo": "此配置文件不需要方向。", + "mustBeLoggedIn": "您必须登录才能提交新节点。请通过设置登录。", + "enableSubmittableProfile": "在设置中启用可提交的配置文件以提交新节点。", + "profileViewOnlyWarning": "此配置文件仅用于地图查看。请选择可提交的配置文件来提交新节点。", + "refineTags": "细化标签", + "refineTagsWithProfile": "细化标签({})" + }, + "editNode": { + "title": "编辑节点 #{}", + "profile": "配置文件", + "direction": "方向 {}°", + "profileNoDirectionInfo": "此配置文件不需要方向。", + "mustBeLoggedIn": "您必须登录才能编辑节点。请通过设置登录。", + "sandboxModeWarning": "无法将生产节点的编辑提交到沙盒。在设置中切换到生产模式以编辑节点。", + "enableSubmittableProfile": "在设置中启用可提交的配置文件以编辑节点。", + "profileViewOnlyWarning": "此配置文件仅用于地图查看。请选择可提交的配置文件来编辑节点。", + "refineTags": "细化标签", + "refineTagsWithProfile": "细化标签({})" + }, + "download": { + "title": "下载地图区域", + "maxZoomLevel": "最大缩放级别", + "storageEstimate": "存储估算:", + "tilesAndSize": "{} 瓦片,{} MB", + "minZoom": "最小缩放:", + "maxRecommendedZoom": "最大推荐缩放:Z{}", + "withinTileLimit": "在 {} 瓦片限制内", + "exceedsTileLimit": "当前选择超出 {} 瓦片限制", + "offlineModeWarning": "离线模式下禁用下载。禁用离线模式以下载新区域。", + "downloadStarted": "下载已开始!正在获取瓦片和摄像头...", + "downloadFailed": "启动下载失败:{}" + }, + "uploadMode": { + "title": "上传目标", + "subtitle": "选择摄像头上传位置", + "production": "生产环境", + "sandbox": "沙盒", + "simulate": "模拟", + "productionDescription": "上传到实时 OSM 数据库(对所有用户可见)", + "sandboxDescription": "上传到 OSM 沙盒(测试安全,定期重置)。", + "simulateDescription": "模拟上传(不联系 OSM 服务器)" + }, + "auth": { + "loggedInAs": "已登录为 {}", + "loginToOSM": "登录 OpenStreetMap", + "tapToLogout": "点击登出", + "requiredToSubmit": "提交摄像头数据所需", + "loggedOut": "已登出", + "testConnection": "测试连接", + "testConnectionSubtitle": "验证 OSM 凭据是否有效", + "connectionOK": "连接正常 - 凭据有效", + "connectionFailed": "连接失败 - 请重新登录" + }, + "queue": { + "pendingUploads": "待上传:{}", + "simulateModeEnabled": "模拟模式已启用 – 上传已模拟", + "sandboxMode": "沙盒模式 – 上传到 OSM 沙盒", + "tapToViewQueue": "点击查看队列", + "clearUploadQueue": "清空上传队列", + "removeAllPending": "移除所有 {} 个待上传项", + "clearQueueTitle": "清空队列", + "clearQueueConfirm": "移除所有 {} 个待上传项?", + "queueCleared": "队列已清空", + "uploadQueueTitle": "上传队列({} 项)", + "queueIsEmpty": "队列为空", + "cameraWithIndex": "摄像头 {}", + "error": "(错误)", + "completing": "(完成中...)", + "destination": "目标:{}", + "latitude": "纬度:{}", + "longitude": "经度:{}", + "direction": "方向:{}°", + "attempts": "尝试次数:{}", + "uploadFailedRetry": "上传失败。点击重试再次尝试。", + "retryUpload": "重试上传", + "clearAll": "全部清空" + }, + "tileProviders": { + "title": "瓦片提供商", + "noProvidersConfigured": "未配置瓦片提供商", + "tileTypesCount": "{} 种瓦片类型", + "apiKeyConfigured": "API 密钥已配置", + "needsApiKey": "需要 API 密钥", + "editProvider": "编辑提供商", + "addProvider": "添加提供商", + "deleteProvider": "删除提供商", + "deleteProviderConfirm": "您确定要删除 \"{}\" 吗?", + "providerName": "提供商名称", + "providerNameHint": "例如,自定义地图公司", + "providerNameRequired": "提供商名称为必填项", + "apiKey": "API 密钥(可选)", + "apiKeyHint": "如果瓦片类型需要,请输入 API 密钥", + "tileTypes": "瓦片类型", + "addType": "添加类型", + "noTileTypesConfigured": "未配置瓦片类型", + "atLeastOneTileTypeRequired": "至少需要一种瓦片类型", + "manageTileProviders": "管理提供商" + }, + "tileTypeEditor": { + "editTileType": "编辑瓦片类型", + "addTileType": "添加瓦片类型", + "name": "名称", + "nameHint": "例如,卫星", + "nameRequired": "名称为必填项", + "urlTemplate": "URL 模板", + "urlTemplateHint": "https://example.com/{z}/{x}/{y}.png", + "urlTemplateRequired": "URL 模板为必填项", + "urlTemplatePlaceholders": "URL 必须包含 {z}、{x} 和 {y} 占位符", + "attribution": "归属", + "attributionHint": "© 地图提供商", + "attributionRequired": "归属为必填项", + "fetchPreview": "获取预览", + "previewTileLoaded": "预览瓦片加载成功", + "previewTileFailed": "获取预览失败:{}", + "save": "保存" + }, + "profiles": { + "nodeProfiles": "节点配置文件", + "newProfile": "新建配置文件", + "builtIn": "内置", + "custom": "自定义", + "view": "查看", + "deleteProfile": "删除配置文件", + "deleteProfileConfirm": "您确定要删除 \"{}\" 吗?", + "profileDeleted": "配置文件已删除" + }, + "mapTiles": { + "title": "地图瓦片", + "manageProviders": "管理提供商" + }, + "profileEditor": { + "viewProfile": "查看配置文件", + "newProfile": "新建配置文件", + "editProfile": "编辑配置文件", + "profileName": "配置文件名称", + "profileNameHint": "例如,自定义 ALPR 摄像头", + "profileNameRequired": "配置文件名称为必填项", + "requiresDirection": "需要方向", + "requiresDirectionSubtitle": "此类型的摄像头是否需要方向标签", + "submittable": "可提交", + "submittableSubtitle": "此配置文件是否可用于摄像头提交", + "osmTags": "OSM 标签", + "addTag": "添加标签", + "saveProfile": "保存配置文件", + "keyHint": "键", + "valueHint": "值", + "atLeastOneTagRequired": "至少需要一个标签", + "profileSaved": "配置文件 \"{}\" 已保存" + }, + "operatorProfileEditor": { + "newOperatorProfile": "新建运营商配置文件", + "editOperatorProfile": "编辑运营商配置文件", + "operatorName": "运营商名称", + "operatorNameHint": "例如,奥斯汀警察局", + "operatorNameRequired": "运营商名称为必填项", + "operatorProfileSaved": "运营商配置文件 \"{}\" 已保存" + }, + "operatorProfiles": { + "title": "运营商配置文件", + "noProfilesMessage": "未定义运营商配置文件。创建一个以将运营商标签应用于节点提交。", + "tagsCount": "{} 个标签", + "deleteOperatorProfile": "删除运营商配置文件", + "deleteOperatorProfileConfirm": "您确定要删除 \"{}\" 吗?", + "operatorProfileDeleted": "运营商配置文件已删除" + }, + "offlineAreas": { + "noAreasTitle": "无离线区域", + "noAreasSubtitle": "下载地图区域以供离线使用。", + "provider": "提供商", + "maxZoom": "最大缩放", + "zoomLevels": "Z{}-{}", + "latitude": "纬度", + "longitude": "经度", + "tiles": "瓦片", + "size": "大小", + "cameras": "摄像头", + "areaIdFallback": "区域 {}...", + "renameArea": "重命名区域", + "refreshWorldTiles": "刷新/重新下载世界瓦片", + "deleteOfflineArea": "删除离线区域", + "cancelDownload": "取消下载", + "renameAreaDialogTitle": "重命名离线区域", + "areaNameLabel": "区域名称", + "renameButton": "重命名", + "megabytes": "MB", + "kilobytes": "KB", + "progress": "{}%" + }, + "refineTagsSheet": { + "title": "细化标签", + "operatorProfile": "运营商配置文件", + "done": "完成", + "none": "无", + "noAdditionalOperatorTags": "无额外运营商标签", + "additionalTags": "额外标签", + "additionalTagsTitle": "额外标签", + "noTagsDefinedForProfile": "此运营商配置文件未定义标签。", + "noOperatorProfiles": "未定义运营商配置文件", + "noOperatorProfilesMessage": "在设置中创建运营商配置文件,以将额外标签应用于您的节点提交。" + }, + "layerSelector": { + "cannotChangeTileTypes": "在下载离线区域时无法更改瓦片类型", + "selectMapLayer": "选择地图图层", + "noTileProvidersAvailable": "无可用瓦片提供商" + } +} \ No newline at end of file