i18n workflow improvements and tweaks (#22586)
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions

* mobile button spacing

* prevent console warning about div being descendant of p

* ensure consistent spacing

* add missing i18n keys

* i18n fixes

- add missing translations
- fix dot notation keys

* use plain string

* add missing key

* add i18next-cli commands for extraction and status

also add false positives removal for several keys

* add i18n key check step to PR workflow

* formatting
This commit is contained in:
Josh Hawkins
2026-03-23 08:48:02 -05:00
committed by GitHub
parent 57c0473e6e
commit 7b6d0c5e42
26 changed files with 1262 additions and 162 deletions
+7 -3
View File
@@ -161,7 +161,8 @@
"resetToDefault": "Reset to Default",
"saveAll": "Save All",
"savingAll": "Saving All…",
"undoAll": "Undo All"
"undoAll": "Undo All",
"retry": "Retry"
},
"menu": {
"system": "System",
@@ -275,7 +276,8 @@
"error": {
"title": "Failed to save config changes: {{errorMessage}}",
"noMessage": "Failed to save config changes"
}
},
"success": "Successfully saved config changes."
}
},
"role": {
@@ -310,5 +312,7 @@
"readTheDocumentation": "Read the documentation",
"information": {
"pixels": "{{area}}px"
}
},
"no_items": "No items",
"validation_errors": "Validation Errors"
}
+2 -1
View File
@@ -81,6 +81,7 @@
"zones": "Zones",
"mask": "Mask",
"motion": "Motion",
"regions": "Regions"
"regions": "Regions",
"paths": "Paths"
}
}
@@ -23,15 +23,17 @@
},
"toast": {
"success": {
"deletedCategory": "Deleted Class",
"deletedImage": "Deleted Images",
"deletedModel_one": "Successfully deleted {{count}} model",
"deletedModel_other": "Successfully deleted {{count}} models",
"categorizedImage": "Successfully Classified Image",
"trainedModel": "Successfully trained model.",
"trainingModel": "Successfully started model training.",
"updatedModel": "Successfully updated model configuration",
"renamedCategory": "Successfully renamed class to {{name}}"
"renamedCategory": "Successfully renamed class to {{name}}",
"deletedCategory_one": "Deleted {{count}} class",
"deletedCategory_other": "Deleted {{count}} classes",
"deletedImage_one": "Deleted {{count}} image",
"deletedImage_other": "Deleted {{count}} images"
},
"error": {
"deleteImageFailed": "Failed to delete: {{errorMessage}}",
+4 -2
View File
@@ -15,8 +15,10 @@
"description": "Review items can only be created for a camera when recordings are enabled for that camera."
}
},
"timeline": "Timeline",
"timeline.aria": "Select timeline",
"timeline": {
"label": "Timeline",
"aria": "Select timeline"
},
"zoomIn": "Zoom In",
"zoomOut": "Zoom Out",
"events": {
+11 -1
View File
@@ -169,7 +169,8 @@
},
"title": {
"label": "Title"
}
},
"scoreInfo": "Score Information"
},
"itemMenu": {
"downloadVideo": {
@@ -220,12 +221,18 @@
"debugReplay": {
"label": "Debug replay",
"aria": "View this tracked object in the debug replay view"
},
"more": {
"aria": "More"
}
},
"dialog": {
"confirmDelete": {
"title": "Confirm Delete",
"desc": "Deleting this tracked object removes the snapshot, any saved embeddings, and any associated tracking details entries. Recorded footage of this tracked object in History view will <em>NOT</em> be deleted.<br /><br />Are you sure you want to proceed?"
},
"toast": {
"error": "Error deleting this tracked object: {{errorMessage}}"
}
},
"noTrackedObjects": "No Tracked Objects Found",
@@ -248,5 +255,8 @@
},
"concerns": {
"label": "Concerns"
},
"objectLifecycle": {
"noImageFound": "No image found for this tracked object."
}
}
+4 -2
View File
@@ -6,8 +6,10 @@
"cases": "Cases",
"uncategorizedExports": "Uncategorized Exports"
},
"deleteExport": "Delete Export",
"deleteExport.desc": "Are you sure you want to delete {{exportName}}?",
"deleteExport": {
"label": "Delete Export",
"desc": "Are you sure you want to delete {{exportName}}?"
},
"editExport": {
"title": "Rename Export",
"desc": "Enter a new name for this export.",
+4 -2
View File
@@ -1,6 +1,8 @@
{
"documentTitle": "Live - Frigate",
"documentTitle.withCamera": "{{camera}} - Live - Frigate",
"documentTitle": {
"default": "Live - Frigate",
"withCamera": "{{camera}} - Live - Frigate"
},
"lowBandwidthMode": "Low-bandwidth Mode",
"twoWayTalk": {
"enable": "Enable Two Way Talk",
+13 -2
View File
@@ -515,7 +515,6 @@
"reviewClassification": {
"title": "Review Classification",
"desc": "Frigate categorizes review items as Alerts and Detections. By default, all <em>person</em> and <em>car</em> objects are considered Alerts. You can refine categorization of your review items by configuring required zones for them.",
"noDefinedZones": "No zones are defined for this camera.",
"objectAlertsTips": "All {{alertsLabels}} objects on {{cameraName}} will be shown as Alerts.",
"zoneObjectAlertsTips": "All {{alertsLabels}} objects detected in {{zone}} on {{cameraName}} will be shown as Alerts.",
@@ -553,6 +552,17 @@
"motionMaskLabel": "Motion Mask {{number}}",
"objectMaskLabel": "Object Mask {{number}}",
"form": {
"id": {
"error": {
"mustNotBeEmpty": "ID must not be empty.",
"alreadyExists": "A mask with this ID already exists for this camera."
}
},
"name": {
"error": {
"mustNotBeEmpty": "Name must not be empty."
}
},
"zoneName": {
"error": {
"mustBeAtLeastTwoCharacters": "Zone name must be at least 2 characters.",
@@ -1286,7 +1296,8 @@
},
"camera": {
"title": "Camera Settings",
"description": "These settings apply only to this camera and override the global settings."
"description": "These settings apply only to this camera and override the global settings.",
"noCameras": "No cameras available"
},
"advancedSettingsCount": "Advanced Settings ({{count}})",
"advancedCount": "Advanced ({{count}})",
+2 -1
View File
@@ -35,7 +35,8 @@
"cameras_count_other": "{{count}} Cameras"
},
"empty": "No messages captured yet",
"count": "{{count}} messages",
"count_one": "{{count}} message",
"count_other": "{{count}} messages",
"expanded": {
"payload": "Payload"
}