Consolidate documentation i18n keys (#19714)

* Consolidate documentation i18n keys

* individual translations
This commit is contained in:
Josh Hawkins 2025-08-22 17:19:00 -05:00 committed by GitHub
parent a88760efa1
commit 95131541c5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
59 changed files with 121 additions and 116 deletions

View File

@ -106,5 +106,7 @@
}, },
"label": { "label": {
"back": "Върни се" "back": "Върни се"
} },
"selectItem": "Избери {{item}}",
"readTheDocumentation": "Прочетете документацията"
} }

View File

@ -261,5 +261,6 @@
"title": "404", "title": "404",
"desc": "Pàgina no trobada" "desc": "Pàgina no trobada"
}, },
"selectItem": "Selecciona {{item}}" "selectItem": "Selecciona {{item}}",
"readTheDocumentation": "Llegir la documentació"
} }

View File

@ -261,5 +261,7 @@
"admin": "Správce", "admin": "Správce",
"viewer": "Divák", "viewer": "Divák",
"desc": "Správci mají plný přístup ke všem funkcím v uživatelském rozhraní Frigate. Diváci jsou omezeni na sledování kamer, položek přehledu a historických záznamů v UI." "desc": "Správci mají plný přístup ke všem funkcím v uživatelském rozhraní Frigate. Diváci jsou omezeni na sledování kamer, položek přehledu a historických záznamů v UI."
} },
"selectItem": "Vybrat {{item}}",
"readTheDocumentation": "Přečtěte si dokumentaci"
} }

View File

@ -254,5 +254,6 @@
"title": "404", "title": "404",
"desc": "Side ikke fundet" "desc": "Side ikke fundet"
}, },
"selectItem": "Vælg {{item}}" "selectItem": "Vælg {{item}}",
"readTheDocumentation": "Læs dokumentationen"
} }

View File

@ -268,6 +268,7 @@
"documentTitle": "Nicht gefunden - Frigate" "documentTitle": "Nicht gefunden - Frigate"
}, },
"selectItem": "Wähle {{item}}", "selectItem": "Wähle {{item}}",
"readTheDocumentation": "Dokumentation lesen",
"accessDenied": { "accessDenied": {
"desc": "Du hast keine Berechtigung diese Seite anzuzeigen.", "desc": "Du hast keine Berechtigung diese Seite anzuzeigen.",
"documentTitle": "Zugang verweigert - Frigate", "documentTitle": "Zugang verweigert - Frigate",

View File

@ -4,5 +4,6 @@
"untilForRestart": "Μέχρι να γίνει επανεκίννηση του Frigate.", "untilForRestart": "Μέχρι να γίνει επανεκίννηση του Frigate.",
"untilRestart": "Μέχρι να γίνει επανεκκίνηση", "untilRestart": "Μέχρι να γίνει επανεκκίνηση",
"justNow": "Μόλις τώρα" "justNow": "Μόλις τώρα"
} },
"readTheDocumentation": "Διαβάστε την τεκμηρίωση"
} }

View File

@ -262,5 +262,6 @@
"title": "404", "title": "404",
"desc": "Page not found" "desc": "Page not found"
}, },
"selectItem": "Select {{item}}" "selectItem": "Select {{item}}",
"readTheDocumentation": "Read the documentation"
} }

View File

@ -35,8 +35,7 @@
"audioIsUnavailable": "Audio is unavailable for this stream", "audioIsUnavailable": "Audio is unavailable for this stream",
"audio": { "audio": {
"tips": { "tips": {
"title": "Audio must be output from your camera and configured in go2rtc for this stream.", "title": "Audio must be output from your camera and configured in go2rtc for this stream."
"document": "Read the documentation "
} }
}, },
"stream": "Stream", "stream": "Stream",

View File

@ -69,8 +69,7 @@
"restreaming": { "restreaming": {
"disabled": "Restreaming is not enabled for this camera.", "disabled": "Restreaming is not enabled for this camera.",
"desc": { "desc": {
"title": "Set up go2rtc for additional live view options and audio for this camera.", "title": "Set up go2rtc for additional live view options and audio for this camera."
"readTheDocumentation": "Read the documentation"
} }
}, },
"showStats": { "showStats": {

View File

@ -24,8 +24,7 @@
"textTokenizer": "Text tokenizer" "textTokenizer": "Text tokenizer"
}, },
"tips": { "tips": {
"context": "You may want to reindex the embeddings of your tracked objects once the models are downloaded.", "context": "You may want to reindex the embeddings of your tracked objects once the models are downloaded."
"documentation": "Read the documentation"
}, },
"error": "An error has occurred. Check Frigate logs." "error": "An error has occurred. Check Frigate logs."
} }
@ -73,7 +72,6 @@
"offset": { "offset": {
"label": "Annotation Offset", "label": "Annotation Offset",
"desc": "This data comes from your camera's detect feed but is overlayed on images from the the record feed. It is unlikely that the two streams are perfectly in sync. As a result, the bounding box and the footage will not line up perfectly. However, the <code>annotation_offset</code> field can be used to adjust this.", "desc": "This data comes from your camera's detect feed but is overlayed on images from the the record feed. It is unlikely that the two streams are perfectly in sync. As a result, the bounding box and the footage will not line up perfectly. However, the <code>annotation_offset</code> field can be used to adjust this.",
"documentation": "Read the documentation ",
"millisecondsToOffset": "Milliseconds to offset detect annotations by. <em>Default: 0</em>", "millisecondsToOffset": "Milliseconds to offset detect annotations by. <em>Default: 0</em>",
"tips": "TIP: Imagine there is an event clip with a person walking from left to right. If the event timeline bounding box is consistently to the left of the person then the value should be decreased. Similarly, if a person is walking from left to right and the bounding box is consistently ahead of the person then the value should be increased.", "tips": "TIP: Imagine there is an event clip with a person walking from left to right. If the event timeline bounding box is consistently to the left of the person then the value should be decreased. Similarly, if a person is walking from left to right and the bounding box is consistently ahead of the person then the value should be increased.",
"toast": { "toast": {

View File

@ -71,7 +71,6 @@
}, },
"nofaces": "No faces available", "nofaces": "No faces available",
"pixels": "{{area}}px", "pixels": "{{area}}px",
"readTheDocs": "Read the documentation",
"trainFaceAs": "Train Face as:", "trainFaceAs": "Train Face as:",
"trainFace": "Train Face", "trainFace": "Train Face",
"toast": { "toast": {

View File

@ -119,15 +119,13 @@
"title": "Stream", "title": "Stream",
"audio": { "audio": {
"tips": { "tips": {
"title": "Audio must be output from your camera and configured in go2rtc for this stream.", "title": "Audio must be output from your camera and configured in go2rtc for this stream."
"documentation": "Read the documentation "
}, },
"available": "Audio is available for this stream", "available": "Audio is available for this stream",
"unavailable": "Audio is not available for this stream" "unavailable": "Audio is not available for this stream"
}, },
"twoWayTalk": { "twoWayTalk": {
"tips": "Your device must support the feature and WebRTC must be configured for two-way talk.", "tips": "Your device must support the feature and WebRTC must be configured for two-way talk.",
"tips.documentation": "Read the documentation ",
"available": "Two-way talk is available for this stream", "available": "Two-way talk is available for this stream",
"unavailable": "Two-way talk is unavailable for this stream" "unavailable": "Two-way talk is unavailable for this stream"
}, },

View File

@ -92,7 +92,6 @@
"semanticSearch": { "semanticSearch": {
"title": "Semantic Search", "title": "Semantic Search",
"desc": "Semantic Search in Frigate allows you to find tracked objects within your review items using either the image itself, a user-defined text description, or an automatically generated one.", "desc": "Semantic Search in Frigate allows you to find tracked objects within your review items using either the image itself, a user-defined text description, or an automatically generated one.",
"readTheDocumentation": "Read the Documentation",
"reindexNow": { "reindexNow": {
"label": "Reindex Now", "label": "Reindex Now",
"desc": "Reindexing will regenerate embeddings for all tracked object. This process runs in the background and may max out your CPU and take a fair amount of time depending on the number of tracked objects you have.", "desc": "Reindexing will regenerate embeddings for all tracked object. This process runs in the background and may max out your CPU and take a fair amount of time depending on the number of tracked objects you have.",
@ -119,7 +118,6 @@
"faceRecognition": { "faceRecognition": {
"title": "Face Recognition", "title": "Face Recognition",
"desc": "Face recognition allows people to be assigned names and when their face is recognized Frigate will assign the person's name as a sub label. This information is included in the UI, filters, as well as in notifications.", "desc": "Face recognition allows people to be assigned names and when their face is recognized Frigate will assign the person's name as a sub label. This information is included in the UI, filters, as well as in notifications.",
"readTheDocumentation": "Read the Documentation",
"modelSize": { "modelSize": {
"label": "Model Size", "label": "Model Size",
"desc": "The size of the model used for face recognition.", "desc": "The size of the model used for face recognition.",
@ -135,8 +133,7 @@
}, },
"licensePlateRecognition": { "licensePlateRecognition": {
"title": "License Plate Recognition", "title": "License Plate Recognition",
"desc": "Frigate can recognize license plates on vehicles and automatically add the detected characters to the recognized_license_plate field or a known name as a sub_label to objects that are of type car. A common use case may be to read the license plates of cars pulling into a driveway or cars passing by on a street.", "desc": "Frigate can recognize license plates on vehicles and automatically add the detected characters to the recognized_license_plate field or a known name as a sub_label to objects that are of type car. A common use case may be to read the license plates of cars pulling into a driveway or cars passing by on a street."
"readTheDocumentation": "Read the Documentation"
}, },
"restart_required": "Restart required (Enrichments settings changed)", "restart_required": "Restart required (Enrichments settings changed)",
"toast": { "toast": {
@ -167,7 +164,7 @@
"reviewClassification": { "reviewClassification": {
"title": "Review Classification", "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.", "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.",
"readTheDocumentation": "Read the Documentation",
"noDefinedZones": "No zones are defined for this camera.", "noDefinedZones": "No zones are defined for this camera.",
"objectAlertsTips": "All {{alertsLabels}} objects on {{cameraName}} will be shown as Alerts.", "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.", "zoneObjectAlertsTips": "All {{alertsLabels}} objects detected in {{zone}} on {{cameraName}} will be shown as Alerts.",
@ -313,7 +310,6 @@
"speedEstimation": { "speedEstimation": {
"title": "Speed Estimation", "title": "Speed Estimation",
"desc": "Enable speed estimation for objects in this zone. The zone must have exactly 4 points.", "desc": "Enable speed estimation for objects in this zone. The zone must have exactly 4 points.",
"docs": "Read the documentation",
"lineADistance": "Line A distance ({{unit}})", "lineADistance": "Line A distance ({{unit}})",
"lineBDistance": "Line B distance ({{unit}})", "lineBDistance": "Line B distance ({{unit}})",
"lineCDistance": "Line C distance ({{unit}})", "lineCDistance": "Line C distance ({{unit}})",
@ -343,16 +339,14 @@
"add": "New Motion Mask", "add": "New Motion Mask",
"edit": "Edit Motion Mask", "edit": "Edit Motion Mask",
"context": { "context": {
"title": "Motion masks are used to prevent unwanted types of motion from triggering detection (example: tree branches, camera timestamps). Motion masks should be used <em>very sparingly</em>, over-masking will make it more difficult for objects to be tracked.", "title": "Motion masks are used to prevent unwanted types of motion from triggering detection (example: tree branches, camera timestamps). Motion masks should be used <em>very sparingly</em>, over-masking will make it more difficult for objects to be tracked."
"documentation": "Read the documentation"
}, },
"point_one": "{{count}} point", "point_one": "{{count}} point",
"point_other": "{{count}} points", "point_other": "{{count}} points",
"clickDrawPolygon": "Click to draw a polygon on the image.", "clickDrawPolygon": "Click to draw a polygon on the image.",
"polygonAreaTooLarge": { "polygonAreaTooLarge": {
"title": "The motion mask is covering {{polygonArea}}% of the camera frame. Large motion masks are not recommended.", "title": "The motion mask is covering {{polygonArea}}% of the camera frame. Large motion masks are not recommended.",
"tips": "Motion masks do not prevent objects from being detected. You should use a required zone instead.", "tips": "Motion masks do not prevent objects from being detected. You should use a required zone instead."
"documentation": "Read the documentation"
}, },
"toast": { "toast": {
"success": { "success": {
@ -456,7 +450,6 @@
"title": "Object Shape Filter Drawing", "title": "Object Shape Filter Drawing",
"desc": "Draw a rectangle on the image to view area and ratio details", "desc": "Draw a rectangle on the image to view area and ratio details",
"tips": "Enable this option to draw a rectangle on the camera image to show its area and ratio. These values can then be used to set object shape filter parameters in your config.", "tips": "Enable this option to draw a rectangle on the camera image to show its area and ratio. These values can then be used to set object shape filter parameters in your config.",
"document": "Read the documentation ",
"score": "Score", "score": "Score",
"ratio": "Ratio", "ratio": "Ratio",
"area": "Area" "area": "Area"
@ -563,13 +556,11 @@
"title": "Notifications", "title": "Notifications",
"notificationSettings": { "notificationSettings": {
"title": "Notification Settings", "title": "Notification Settings",
"desc": "Frigate can natively send push notifications to your device when it is running in the browser or installed as a PWA.", "desc": "Frigate can natively send push notifications to your device when it is running in the browser or installed as a PWA."
"documentation": "Read the Documentation"
}, },
"notificationUnavailable": { "notificationUnavailable": {
"title": "Notifications Unavailable", "title": "Notifications Unavailable",
"desc": "Web push notifications require a secure context (<code>https://…</code>). This is a browser limitation. Access Frigate securely to use notifications.", "desc": "Web push notifications require a secure context (<code>https://…</code>). This is a browser limitation. Access Frigate securely to use notifications."
"documentation": "Read the Documentation"
}, },
"globalSettings": { "globalSettings": {
"title": "Global Settings", "title": "Global Settings",
@ -626,7 +617,6 @@
"snapshotConfig": { "snapshotConfig": {
"title": "Snapshot Configuration", "title": "Snapshot Configuration",
"desc": "Submitting to Frigate+ requires both snapshots and <code>clean_copy</code> snapshots to be enabled in your config.", "desc": "Submitting to Frigate+ requires both snapshots and <code>clean_copy</code> snapshots to be enabled in your config.",
"documentation": "Read the documentation",
"cleanCopyWarning": "Some cameras have snapshots enabled but have the clean copy disabled. You need to enable <code>clean_copy</code> in your snapshot config to be able to submit images from these cameras to Frigate+.", "cleanCopyWarning": "Some cameras have snapshots enabled but have the clean copy disabled. You need to enable <code>clean_copy</code> in your snapshot config to be able to submit images from these cameras to Frigate+.",
"table": { "table": {
"camera": "Camera", "camera": "Camera",

View File

@ -93,8 +93,7 @@
}, },
"shm": { "shm": {
"title": "SHM (shared memory) allocation", "title": "SHM (shared memory) allocation",
"warning": "The current SHM size of {{total}}MB is too small. Increase it to at least {{min_shm}}MB.", "warning": "The current SHM size of {{total}}MB is too small. Increase it to at least {{min_shm}}MB."
"readTheDocumentation": "Read the documentation"
}, },
"cameraStorage": { "cameraStorage": {
"title": "Camera Storage", "title": "Camera Storage",

View File

@ -278,5 +278,6 @@
"title": "404", "title": "404",
"desc": "Página no encontrada" "desc": "Página no encontrada"
}, },
"selectItem": "Seleccionar {{item}}" "selectItem": "Seleccionar {{item}}",
"readTheDocumentation": "Leer la documentación"
} }

View File

@ -168,5 +168,6 @@
"length": { "length": {
"feet": "jalka" "feet": "jalka"
} }
} },
"readTheDocumentation": "Lue dokumentaatio"
} }

View File

@ -262,6 +262,7 @@
"desc": "Page non trouvée" "desc": "Page non trouvée"
}, },
"selectItem": "Sélectionner {{item}}", "selectItem": "Sélectionner {{item}}",
"readTheDocumentation": "Lire la documentation",
"accessDenied": { "accessDenied": {
"title": "Accès refusé", "title": "Accès refusé",
"documentTitle": "Accès refusé - Frigate", "documentTitle": "Accès refusé - Frigate",

View File

@ -9,5 +9,6 @@
"today": "Hoxe", "today": "Hoxe",
"untilRestart": "Ata o reinicio", "untilRestart": "Ata o reinicio",
"ago": "Fai {{timeAgo}}" "ago": "Fai {{timeAgo}}"
} },
"readTheDocumentation": "Ler a documentación"
} }

View File

@ -261,5 +261,6 @@
"title": "404", "title": "404",
"desc": "דף לא נמצא" "desc": "דף לא נמצא"
}, },
"selectItem": "בחירה:{{item}}" "selectItem": "בחירה:{{item}}",
"readTheDocumentation": "קרא את התיעוד"
} }

View File

@ -262,5 +262,6 @@
}, },
"label": { "label": {
"back": "Vissza" "back": "Vissza"
} },
"readTheDocumentation": "Olvassa el a dokumentációt"
} }

View File

@ -10,5 +10,6 @@
"last7": "7 hari terakhir", "last7": "7 hari terakhir",
"last14": "14 hari terakhir", "last14": "14 hari terakhir",
"last30": "30 hari terakhir" "last30": "30 hari terakhir"
} },
"readTheDocumentation": "Baca dokumentasi"
} }

View File

@ -279,5 +279,6 @@
"title": "Salva" "title": "Salva"
} }
}, },
"selectItem": "Seleziona {{item}}" "selectItem": "Seleziona {{item}}",
"readTheDocumentation": "Leggi la documentazione"
} }

View File

@ -3,5 +3,6 @@
"untilForRestart": "Frigateが再起動するまで.", "untilForRestart": "Frigateが再起動するまで.",
"untilRestart": "再起動まで", "untilRestart": "再起動まで",
"untilForTime": "{{time}} まで" "untilForTime": "{{time}} まで"
} },
"readTheDocumentation": "ドキュメントを読む"
} }

View File

@ -1 +1,3 @@
{} {
"readTheDocumentation": "문서 읽기"
}

View File

@ -269,5 +269,6 @@
"title": "404", "title": "404",
"desc": "Puslapis nerastas" "desc": "Puslapis nerastas"
}, },
"selectItem": "Pasirinkti {{item}}" "selectItem": "Pasirinkti {{item}}",
"readTheDocumentation": "Skaityti dokumentaciją"
} }

View File

@ -272,5 +272,6 @@
"title": "404", "title": "404",
"desc": "Siden ble ikke funnet" "desc": "Siden ble ikke funnet"
}, },
"selectItem": "Velg {{item}}" "selectItem": "Velg {{item}}",
"readTheDocumentation": "Se dokumentasjonen"
} }

View File

@ -272,5 +272,6 @@
"title": "404", "title": "404",
"documentTitle": "Niet gevonden - Frigate" "documentTitle": "Niet gevonden - Frigate"
}, },
"selectItem": "Selecteer {{item}}" "selectItem": "Selecteer {{item}}",
"readTheDocumentation": "Lees de documentatie"
} }

View File

@ -279,5 +279,6 @@
}, },
"title": "Zapisz" "title": "Zapisz"
} }
} },
"readTheDocumentation": "Przeczytaj dokumentację"
} }

View File

@ -269,5 +269,7 @@
"documentTitle": "Não Encontrado - Frigate", "documentTitle": "Não Encontrado - Frigate",
"title": "404", "title": "404",
"desc": "Página não encontrada" "desc": "Página não encontrada"
} },
"selectItem": "Selecionar {{item}}",
"readTheDocumentation": "Leia a documentação"
} }

View File

@ -279,5 +279,6 @@
"desc": "Página não encontrada", "desc": "Página não encontrada",
"title": "404" "title": "404"
}, },
"selectItem": "Selecionar {{item}}" "selectItem": "Selecionar {{item}}",
"readTheDocumentation": "Leia a documentação"
} }

View File

@ -269,5 +269,6 @@
"documentTitle": "Nu a fost găsit - Frigate", "documentTitle": "Nu a fost găsit - Frigate",
"title": "404", "title": "404",
"desc": "Pagină negăsită" "desc": "Pagină negăsită"
} },
"readTheDocumentation": "Citește documentația"
} }

View File

@ -279,5 +279,7 @@
"admin": "Администратор", "admin": "Администратор",
"viewer": "Наблюдатель", "viewer": "Наблюдатель",
"desc": "Администраторы имеют полный доступ ко всем функциям в интерфейсе Frigate. Наблюдатели ограничены просмотром камер, элементов просмотра и архивных записей." "desc": "Администраторы имеют полный доступ ко всем функциям в интерфейсе Frigate. Наблюдатели ограничены просмотром камер, элементов просмотра и архивных записей."
} },
"selectItem": "Выбрать {{item}}",
"readTheDocumentation": "Читать документацию"
} }

View File

@ -85,5 +85,6 @@
"speed": { "speed": {
"mph": "mph" "mph": "mph"
} }
} },
"readTheDocumentation": "Prečítajte si dokumentáciu"
} }

View File

@ -269,5 +269,6 @@
"documentTitle": "Ni Najdeno - Frigate", "documentTitle": "Ni Najdeno - Frigate",
"title": "404", "title": "404",
"desc": "Stran ni najdena" "desc": "Stran ni najdena"
} },
"readTheDocumentation": "Preberite dokumentacijo"
} }

View File

@ -27,5 +27,6 @@
"year_few": "2,3,4,22,23,24,32,33,34,42,...", "year_few": "2,3,4,22,23,24,32,33,34,42,...",
"year_other": "", "year_other": "",
"mo": "{{time}}mes" "mo": "{{time}}mes"
} },
"readTheDocumentation": "Прочитајте документацију"
} }

View File

@ -253,5 +253,6 @@
"meters": "meter" "meters": "meter"
} }
}, },
"selectItem": "Välj {{item}}" "selectItem": "Välj {{item}}",
"readTheDocumentation": "Läs dokumentationen"
} }

View File

@ -246,5 +246,6 @@
"feet": "ฟุต", "feet": "ฟุต",
"meters": "เมตร" "meters": "เมตร"
} }
} },
"readTheDocumentation": "อ่านเอกสาร"
} }

View File

@ -272,5 +272,6 @@
"viewer": "Görüntüleyici", "viewer": "Görüntüleyici",
"admin": "Yönetici", "admin": "Yönetici",
"desc": "Yöneticiler Frigate arayüzündeki bütün özelliklere tam erişim sahibidir. Görüntüleyiciler ise yalnızca kameraları, eski görüntüleri ve inceleme öğelerini görüntülemekle sınırlıdır." "desc": "Yöneticiler Frigate arayüzündeki bütün özelliklere tam erişim sahibidir. Görüntüleyiciler ise yalnızca kameraları, eski görüntüleri ve inceleme öğelerini görüntülemekle sınırlıdır."
} },
"readTheDocumentation": "Dökümantasyonu oku"
} }

View File

@ -270,5 +270,6 @@
"desc": "Сторінка не знайдена", "desc": "Сторінка не знайдена",
"title": "404" "title": "404"
}, },
"selectItem": "Вибрати {{item}}" "selectItem": "Вибрати {{item}}",
"readTheDocumentation": "Прочитати документацію"
} }

View File

@ -34,5 +34,6 @@
"month_other": "{{time}} مہینے", "month_other": "{{time}} مہینے",
"hour_one": "{{time}} گھنٹہ", "hour_one": "{{time}} گھنٹہ",
"hour_other": "{{time}} گھنٹے" "hour_other": "{{time}} گھنٹے"
} },
"readTheDocumentation": "دستاویز پڑھیں"
} }

View File

@ -257,5 +257,6 @@
"title": "Không tìm thấy", "title": "Không tìm thấy",
"desc": "Trang bạn đang tìm không tồn tại" "desc": "Trang bạn đang tìm không tồn tại"
}, },
"selectItem": "Chọn mục {{item}}" "selectItem": "Chọn mục {{item}}",
"readTheDocumentation": "Đọc tài liệu"
} }

View File

@ -248,5 +248,6 @@
"documentTitle": "找不到頁面 - Frigate", "documentTitle": "找不到頁面 - Frigate",
"desc": "找不到頁面", "desc": "找不到頁面",
"title": "404" "title": "404"
} },
"readTheDocumentation": "閱讀文件"
} }

View File

@ -265,5 +265,6 @@
"title": "404", "title": "404",
"desc": "页面未找到" "desc": "页面未找到"
}, },
"selectItem": "选择 {{item}}" "selectItem": "选择 {{item}}",
"readTheDocumentation": "阅读文档"
} }

View File

@ -247,5 +247,6 @@
"title": "404", "title": "404",
"desc": "找不到頁面" "desc": "找不到頁面"
}, },
"selectItem": "選擇 {{item}}" "selectItem": "選擇 {{item}}",
"readTheDocumentation": "閱讀文件"
} }

View File

@ -187,9 +187,7 @@ export function AnnotationSettingsPane({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t( {t("readTheDocumentation", { ns: "common" })}
"objectLifecycle.annotationSettings.offset.documentation",
)}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -161,7 +161,7 @@ export default function CreateFaceWizardDialog({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("readTheDocs")} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -228,9 +228,7 @@ export function CameraStreamingDialog({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("streaming.restreaming.desc.readTheDocumentation", { {t("readTheDocumentation", { ns: "common" })}
ns: "components/dialog",
})}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -289,7 +287,7 @@ export function CameraStreamingDialog({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("group.camera.setting.audio.tips.document")} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -257,7 +257,7 @@ export default function MotionMaskEditPane({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("masksAndZones.motionMasks.context.documentation")}{" "} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -303,7 +303,7 @@ export default function MotionMaskEditPane({
rel="noopener noreferrer" rel="noopener noreferrer"
className="my-3 block" className="my-3 block"
> >
{t("masksAndZones.motionMasks.polygonAreaTooLarge.documentation")}{" "} {t("readTheDocumentation", { ns: "common" })}{" "}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -687,7 +687,7 @@ export default function ZoneEditPane({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("masksAndZones.zones.speedEstimation.docs")} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -482,9 +482,7 @@ export default function Explore() {
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t( {t("readTheDocumentation", { ns: "common" })}
"exploreIsUnavailable.downloadingModels.tips.documentation",
)}{" "}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -1379,12 +1379,7 @@ function FrigateCameraFeatures({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t( {t("readTheDocumentation", { ns: "common" })}
"streaming.restreaming.desc.readTheDocumentation",
{
ns: "components/dialog",
},
)}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -1457,7 +1452,9 @@ function FrigateCameraFeatures({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("stream.audio.tips.documentation")} {t("readTheDocumentation", {
ns: "common",
})}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -1500,9 +1497,9 @@ function FrigateCameraFeatures({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t( {t("readTheDocumentation", {
"stream.twoWayTalk.tips.documentation", ns: "common",
)} })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -1717,9 +1714,7 @@ function FrigateCameraFeatures({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("streaming.restreaming.desc.readTheDocumentation", { {t("readTheDocumentation", { ns: "common" })}
ns: "components/dialog",
})}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -1788,7 +1783,7 @@ function FrigateCameraFeatures({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("stream.audio.tips.documentation")} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -1831,7 +1826,7 @@ function FrigateCameraFeatures({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("stream.twoWayTalk.tips.documentation")} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -508,9 +508,7 @@ export default function CameraSettingsView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
<Trans ns="views/settings"> {t("readTheDocumentation", { ns: "common" })}
camera.reviewClassification.readTheDocumentation
</Trans>{" "}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -263,7 +263,7 @@ export default function EnrichmentsSettingsView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("enrichments.semanticSearch.readTheDocumentation")} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -409,7 +409,7 @@ export default function EnrichmentsSettingsView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("enrichments.faceRecognition.readTheDocumentation")} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -512,9 +512,7 @@ export default function EnrichmentsSettingsView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t( {t("readTheDocumentation", { ns: "common" })}
"enrichments.licensePlateRecognition.readTheDocumentation",
)}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -558,7 +556,7 @@ export default function EnrichmentsSettingsView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("enrichments.semanticSearch.readTheDocumentation")} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -458,7 +458,7 @@ export default function FrigatePlusSettingsView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("frigatePlus.snapshotConfig.documentation")} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -506,7 +506,7 @@ export default function MasksAndZonesView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("masksAndZones.zones.desc.documentation")}{" "} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -574,9 +574,7 @@ export default function MasksAndZonesView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t( {t("readTheDocumentation", { ns: "common" })}
"masksAndZones.motionMasks.desc.documentation",
)}{" "}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -646,9 +644,7 @@ export default function MasksAndZonesView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t( {t("readTheDocumentation", { ns: "common" })}
"masksAndZones.objectMasks.desc.documentation",
)}{" "}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -205,7 +205,7 @@ export default function MotionTunerView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("motionDetectionTuner.desc.documentation")}{" "} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -341,7 +341,7 @@ export default function NotificationView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("notification.notificationSettings.documentation")}{" "} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -363,7 +363,7 @@ export default function NotificationView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("notification.notificationUnavailable.documentation")}{" "} {t("readTheDocumentation", { ns: "common" })}{" "}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>
@ -396,7 +396,7 @@ export default function NotificationView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("notification.notificationSettings.documentation")}{" "} {t("readTheDocumentation", { ns: "common" })}{" "}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -275,7 +275,7 @@ export default function ObjectSettingsView({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("debug.objectShapeFilterDrawing.document")} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>

View File

@ -178,7 +178,7 @@ export default function StorageMetrics({
rel="noopener noreferrer" rel="noopener noreferrer"
className="inline" className="inline"
> >
{t("storage.shm.readTheDocumentation")} {t("readTheDocumentation", { ns: "common" })}
<LuExternalLink className="ml-2 inline-flex size-3" /> <LuExternalLink className="ml-2 inline-flex size-3" />
</Link> </Link>
</div> </div>