diff --git a/content/docs/analyzers/LinterCop/LC0091.md b/content/docs/analyzers/LinterCop/LC0091.md index eeee57c..cb87571 100644 --- a/content/docs/analyzers/LinterCop/LC0091.md +++ b/content/docs/analyzers/LinterCop/LC0091.md @@ -7,7 +7,7 @@ linkTitle = 'LC0091' severity = 'Warning' category = 'Design' codeAction = false - ignoreObsolete = true + ignoreObsolete = false +++ Properties like Caption and ToolTip, as well as Label variables, are translatable by default — the compiler generates a unique translation ID for each one. For users in other locales to see translated text, each ID must have a matching `` entry in the project's XLIFF files. When the entry is missing, empty, or still marked `needs-translation`, those users see raw source-language text instead: a caption that should read *Programnavn* in Danish displays as *Program Name*. @@ -67,9 +67,13 @@ For extension objects, translation IDs are generated relative to the translation The rule does not trigger when: - The label or property has `Locked = true`. This is the intended mechanism for text that should remain in the source language — API field names, technical identifiers, or format strings. +- The caption belongs to a table or field with `ObsoleteState = Removed`, or to a field inside such a table. The compiler locks these trans-units and drops them from the generated XLIFF, so no translation is expected. +- The element sits inside an object with `ObsoleteState = Moved`. The compiler does not visit a moved object at all. - No XLIFF files exist in the `Translations/` directory. - The project manifest does not include `"TranslationFile"` in the `features` array. +Elements with `ObsoleteState = Pending` are still reported. The compiler only locks trans-units for `Removed` tables and fields, so a pending caption keeps its `translate="yes"` entry in the XLIFF and needs a translation until it is removed. Label variables and report labels inside an obsolete object are reported as well, whatever the object's state: the compiler never locks a label because of its containing object, only because of the label's own `Locked = true`. A label left behind in a removed table keeps appearing in the translation file until it is locked or deleted. + When a translatable property cannot use `Locked` but should remain untranslated, suppress with a pragma: {{< highlight al >}}