mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-04-16 03:52:09 +03:00
Consolidate documentation i18n keys
This commit is contained in:
parent
a88760efa1
commit
e480349a1c
@ -262,5 +262,6 @@
|
||||
"title": "404",
|
||||
"desc": "Page not found"
|
||||
},
|
||||
"selectItem": "Select {{item}}"
|
||||
"selectItem": "Select {{item}}",
|
||||
"readTheDocumentation": "Read the documentation"
|
||||
}
|
||||
|
||||
@ -35,8 +35,7 @@
|
||||
"audioIsUnavailable": "Audio is unavailable for this stream",
|
||||
"audio": {
|
||||
"tips": {
|
||||
"title": "Audio must be output from your camera and configured in go2rtc for this stream.",
|
||||
"document": "Read the documentation "
|
||||
"title": "Audio must be output from your camera and configured in go2rtc for this stream."
|
||||
}
|
||||
},
|
||||
"stream": "Stream",
|
||||
|
||||
@ -69,8 +69,7 @@
|
||||
"restreaming": {
|
||||
"disabled": "Restreaming is not enabled for this camera.",
|
||||
"desc": {
|
||||
"title": "Set up go2rtc for additional live view options and audio for this camera.",
|
||||
"readTheDocumentation": "Read the documentation"
|
||||
"title": "Set up go2rtc for additional live view options and audio for this camera."
|
||||
}
|
||||
},
|
||||
"showStats": {
|
||||
|
||||
@ -24,8 +24,7 @@
|
||||
"textTokenizer": "Text tokenizer"
|
||||
},
|
||||
"tips": {
|
||||
"context": "You may want to reindex the embeddings of your tracked objects once the models are downloaded.",
|
||||
"documentation": "Read the documentation"
|
||||
"context": "You may want to reindex the embeddings of your tracked objects once the models are downloaded."
|
||||
},
|
||||
"error": "An error has occurred. Check Frigate logs."
|
||||
}
|
||||
@ -73,7 +72,6 @@
|
||||
"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.",
|
||||
"documentation": "Read the documentation ",
|
||||
"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.",
|
||||
"toast": {
|
||||
|
||||
@ -71,7 +71,6 @@
|
||||
},
|
||||
"nofaces": "No faces available",
|
||||
"pixels": "{{area}}px",
|
||||
"readTheDocs": "Read the documentation",
|
||||
"trainFaceAs": "Train Face as:",
|
||||
"trainFace": "Train Face",
|
||||
"toast": {
|
||||
|
||||
@ -119,15 +119,13 @@
|
||||
"title": "Stream",
|
||||
"audio": {
|
||||
"tips": {
|
||||
"title": "Audio must be output from your camera and configured in go2rtc for this stream.",
|
||||
"documentation": "Read the documentation "
|
||||
"title": "Audio must be output from your camera and configured in go2rtc for this stream."
|
||||
},
|
||||
"available": "Audio is available for this stream",
|
||||
"unavailable": "Audio is not available for this stream"
|
||||
},
|
||||
"twoWayTalk": {
|
||||
"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",
|
||||
"unavailable": "Two-way talk is unavailable for this stream"
|
||||
},
|
||||
|
||||
@ -92,7 +92,6 @@
|
||||
"semanticSearch": {
|
||||
"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.",
|
||||
"readTheDocumentation": "Read the Documentation",
|
||||
"reindexNow": {
|
||||
"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.",
|
||||
@ -119,7 +118,6 @@
|
||||
"faceRecognition": {
|
||||
"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.",
|
||||
"readTheDocumentation": "Read the Documentation",
|
||||
"modelSize": {
|
||||
"label": "Model Size",
|
||||
"desc": "The size of the model used for face recognition.",
|
||||
@ -135,8 +133,7 @@
|
||||
},
|
||||
"licensePlateRecognition": {
|
||||
"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.",
|
||||
"readTheDocumentation": "Read the Documentation"
|
||||
"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."
|
||||
},
|
||||
"restart_required": "Restart required (Enrichments settings changed)",
|
||||
"toast": {
|
||||
@ -167,7 +164,7 @@
|
||||
"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.",
|
||||
"readTheDocumentation": "Read the Documentation",
|
||||
|
||||
"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.",
|
||||
@ -313,7 +310,6 @@
|
||||
"speedEstimation": {
|
||||
"title": "Speed Estimation",
|
||||
"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}})",
|
||||
"lineBDistance": "Line B distance ({{unit}})",
|
||||
"lineCDistance": "Line C distance ({{unit}})",
|
||||
@ -343,16 +339,14 @@
|
||||
"add": "New Motion Mask",
|
||||
"edit": "Edit Motion Mask",
|
||||
"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.",
|
||||
"documentation": "Read the documentation"
|
||||
"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."
|
||||
},
|
||||
"point_one": "{{count}} point",
|
||||
"point_other": "{{count}} points",
|
||||
"clickDrawPolygon": "Click to draw a polygon on the image.",
|
||||
"polygonAreaTooLarge": {
|
||||
"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.",
|
||||
"documentation": "Read the documentation"
|
||||
"tips": "Motion masks do not prevent objects from being detected. You should use a required zone instead."
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
@ -456,7 +450,6 @@
|
||||
"title": "Object Shape Filter Drawing",
|
||||
"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.",
|
||||
"document": "Read the documentation ",
|
||||
"score": "Score",
|
||||
"ratio": "Ratio",
|
||||
"area": "Area"
|
||||
@ -563,13 +556,11 @@
|
||||
"title": "Notifications",
|
||||
"notificationSettings": {
|
||||
"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.",
|
||||
"documentation": "Read the Documentation"
|
||||
"desc": "Frigate can natively send push notifications to your device when it is running in the browser or installed as a PWA."
|
||||
},
|
||||
"notificationUnavailable": {
|
||||
"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.",
|
||||
"documentation": "Read the Documentation"
|
||||
"desc": "Web push notifications require a secure context (<code>https://…</code>). This is a browser limitation. Access Frigate securely to use notifications."
|
||||
},
|
||||
"globalSettings": {
|
||||
"title": "Global Settings",
|
||||
@ -626,7 +617,6 @@
|
||||
"snapshotConfig": {
|
||||
"title": "Snapshot Configuration",
|
||||
"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+.",
|
||||
"table": {
|
||||
"camera": "Camera",
|
||||
|
||||
@ -93,8 +93,7 @@
|
||||
},
|
||||
"shm": {
|
||||
"title": "SHM (shared memory) allocation",
|
||||
"warning": "The current SHM size of {{total}}MB is too small. Increase it to at least {{min_shm}}MB.",
|
||||
"readTheDocumentation": "Read the documentation"
|
||||
"warning": "The current SHM size of {{total}}MB is too small. Increase it to at least {{min_shm}}MB."
|
||||
},
|
||||
"cameraStorage": {
|
||||
"title": "Camera Storage",
|
||||
|
||||
@ -187,9 +187,7 @@ export function AnnotationSettingsPane({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t(
|
||||
"objectLifecycle.annotationSettings.offset.documentation",
|
||||
)}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -161,7 +161,7 @@ export default function CreateFaceWizardDialog({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("readTheDocs")}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -228,9 +228,7 @@ export function CameraStreamingDialog({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("streaming.restreaming.desc.readTheDocumentation", {
|
||||
ns: "components/dialog",
|
||||
})}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -289,7 +287,7 @@ export function CameraStreamingDialog({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("group.camera.setting.audio.tips.document")}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -257,7 +257,7 @@ export default function MotionMaskEditPane({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("masksAndZones.motionMasks.context.documentation")}{" "}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -303,7 +303,7 @@ export default function MotionMaskEditPane({
|
||||
rel="noopener noreferrer"
|
||||
className="my-3 block"
|
||||
>
|
||||
{t("masksAndZones.motionMasks.polygonAreaTooLarge.documentation")}{" "}
|
||||
{t("readTheDocumentation", { ns: "common" })}{" "}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -687,7 +687,7 @@ export default function ZoneEditPane({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("masksAndZones.zones.speedEstimation.docs")}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -482,9 +482,7 @@ export default function Explore() {
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t(
|
||||
"exploreIsUnavailable.downloadingModels.tips.documentation",
|
||||
)}{" "}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -1379,12 +1379,7 @@ function FrigateCameraFeatures({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t(
|
||||
"streaming.restreaming.desc.readTheDocumentation",
|
||||
{
|
||||
ns: "components/dialog",
|
||||
},
|
||||
)}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -1457,7 +1452,9 @@ function FrigateCameraFeatures({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("stream.audio.tips.documentation")}
|
||||
{t("readTheDocumentation", {
|
||||
ns: "common",
|
||||
})}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -1500,9 +1497,9 @@ function FrigateCameraFeatures({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t(
|
||||
"stream.twoWayTalk.tips.documentation",
|
||||
)}
|
||||
{t("readTheDocumentation", {
|
||||
ns: "common",
|
||||
})}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -1717,9 +1714,7 @@ function FrigateCameraFeatures({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("streaming.restreaming.desc.readTheDocumentation", {
|
||||
ns: "components/dialog",
|
||||
})}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -1788,7 +1783,7 @@ function FrigateCameraFeatures({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("stream.audio.tips.documentation")}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -1831,7 +1826,7 @@ function FrigateCameraFeatures({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("stream.twoWayTalk.tips.documentation")}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -508,9 +508,7 @@ export default function CameraSettingsView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
<Trans ns="views/settings">
|
||||
camera.reviewClassification.readTheDocumentation
|
||||
</Trans>{" "}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -263,7 +263,7 @@ export default function EnrichmentsSettingsView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("enrichments.semanticSearch.readTheDocumentation")}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -409,7 +409,7 @@ export default function EnrichmentsSettingsView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("enrichments.faceRecognition.readTheDocumentation")}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -512,9 +512,7 @@ export default function EnrichmentsSettingsView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t(
|
||||
"enrichments.licensePlateRecognition.readTheDocumentation",
|
||||
)}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -558,7 +556,7 @@ export default function EnrichmentsSettingsView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("enrichments.semanticSearch.readTheDocumentation")}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -458,7 +458,7 @@ export default function FrigatePlusSettingsView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("frigatePlus.snapshotConfig.documentation")}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -506,7 +506,7 @@ export default function MasksAndZonesView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("masksAndZones.zones.desc.documentation")}{" "}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -574,9 +574,7 @@ export default function MasksAndZonesView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t(
|
||||
"masksAndZones.motionMasks.desc.documentation",
|
||||
)}{" "}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -646,9 +644,7 @@ export default function MasksAndZonesView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t(
|
||||
"masksAndZones.objectMasks.desc.documentation",
|
||||
)}{" "}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -205,7 +205,7 @@ export default function MotionTunerView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("motionDetectionTuner.desc.documentation")}{" "}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -341,7 +341,7 @@ export default function NotificationView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("notification.notificationSettings.documentation")}{" "}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -363,7 +363,7 @@ export default function NotificationView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("notification.notificationUnavailable.documentation")}{" "}
|
||||
{t("readTheDocumentation", { ns: "common" })}{" "}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
@ -396,7 +396,7 @@ export default function NotificationView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("notification.notificationSettings.documentation")}{" "}
|
||||
{t("readTheDocumentation", { ns: "common" })}{" "}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -275,7 +275,7 @@ export default function ObjectSettingsView({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("debug.objectShapeFilterDrawing.document")}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -178,7 +178,7 @@ export default function StorageMetrics({
|
||||
rel="noopener noreferrer"
|
||||
className="inline"
|
||||
>
|
||||
{t("storage.shm.readTheDocumentation")}
|
||||
{t("readTheDocumentation", { ns: "common" })}
|
||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user