The "project update available" popup in a Vision client stays in English because the Translation Manager never receives the individual lines you entered. The client builds the message as one HTML string and looks up that entire string as a single translation key. Enter the whole HTML string, tags included, as one term and the popup translates. The Screen Locked popup is a different case. On older builds its text is hardcoded and bypasses translation entirely, so no Translation Manager entry can change it until you upgrade to a build that contains the fix.
Why does the yellow-bar popup ignore the lines I already translated?
Here is what the operator sees. A yellow bar appears at the top of the client. Clicking it opens a dialog with a bold headline, a body sentence and an instruction to click Update. You added three English/Slovenian pairs, one for each visible line. The dialog renders in English anyway.
The cause is a key mismatch, not a missing tag or a broken binding. The Translation Manager does an exact, literal lookup: the string the code submits must match a stored key character for character. The update dialog does not submit three short sentences. It submits one HTML-formatted block in which <P>, <B> and <BR> tags produce the line breaks and bold text you see. The rendered dialog hides those tags, so the visible text never matches the actual key.
Keep two fault classes apart when text refuses to translate:
| Fault class | What the operator sees | Cause | Fix path |
|---|---|---|---|
| Key mismatch | Text stays English even though similar entries exist in the manager | The stored key differs from the string the code submits (HTML tags, punctuation, placeholders, line splitting) | Rebuild the key to match the exact submitted string |
| Hardcoded text | Text stays English no matter which key you add | The dialog never calls the translation lookup | Upgrade to a build where the dialog was changed to use lookups, then add keys |
The update popup is a key mismatch. The Screen Locked popup, including its buttons, was hardcoded text.
Which key works: split lines or the full HTML string?
| Approach | Key entered in Translation Manager | Result on the update popup | Maintenance |
|---|---|---|---|
| Line-by-line | Each visible sentence as its own term | No match. The popup stays English. | Looks tidy, but none of the entries is ever used |
| Full HTML block | The complete string with its HTML tags, as one term | Matches. The popup translates. | One long term. Tags must be reproduced exactly. |
Use the full HTML block. It is the only approach that matches what the client submits. The line-by-line entries do no harm, but they add clutter. Delete them unless another screen uses the same short sentences as standalone text.
How do I enter the full HTML key in the Translation Manager?
- Open the global Translation Manager in the Designer.
- Add a new term and paste this exact English key as a single entry, with no line breaks:
<HTML><P><B>There is a more recent version of this application available.</B><P><BR>This application has been updated on the Gateway.<P>Click 'Update' to update this application. - In the Slovenian column, build the translation on the same skeleton. Keep every tag, in the same order and the same case, and replace only the text between the tags:
<HTML><P><B>[headline in Slovenian]</B><P><BR>[body sentence in Slovenian]<P>[instruction in Slovenian] - Check the punctuation in the English key: the trailing periods, the straight single quotes around
'Update', and no leading or trailing spaces. If you paste from a word processor, it can convert straight quotes to curly quotes, and the key will then fail to match. - Save the project so the Gateway pushes the updated translations to clients.
| Element | Where it lives | Effect if wrong |
|---|---|---|
| HTML tags in the key | English column of the term | The key never matches and the popup stays English |
| HTML tags in the translation | Slovenian column | The popup translates, but loses its bold text and line breaks, or renders the tags as literal text |
| Quote style and trailing periods | English column | Silent mismatch and no translation |
| Line breaks inside the term | Either column | Key mismatch, because the source string is a single line |
Why won't the Screen Locked popup and its buttons translate?
The lock dialog and its buttons had their labels hardcoded. The code never passed them through the translation lookup, so no entry in the manager could affect them. Inductive Automation changed this in the first beta of 7.7.7. The fix was scheduled to carry into the 7.8.x line, but the exact 7.8 release that picked it up was never confirmed. One report from a 7.9 installation described the lock dialog as still untranslated. Treat any version above 7.7.7 as something to test, not as a guaranteed fix.
On a build that contains the fix, add each of these as a separate term in the global Translation Manager. Keep the punctuation exactly as shown:
| English key | Notes |
|---|---|
This screen has been locked by %s |
%s is replaced at runtime with the username. Keep %s in the Slovenian text, positioned where the name belongs grammatically. |
This screen has been locked by user |
Separate variant. Add it as well. |
Screen Locked |
Dialog title |
Password: |
Includes the colon |
Unlock |
Button |
Logout |
Button |
Login failed. |
Includes the period |
Follow this decision path on your installation:
- Add all seven terms and save.
- Trigger a screen lock on a client running in the Slovenian locale.
- If the title and buttons translate, you are done.
- If some elements translate and others do not, re-check those specific keys for punctuation, spacing and the
%stoken. - If nothing on the dialog changes, your build still has the hardcoded dialog. Upgrade, or open a case with Inductive Automation support that names the dialog and your exact Ignition version.
How do I find other hidden strings the Translation Manager misses?
System dialogs, meaning popups generated by the client rather than by windows you designed, are where these literal-match problems cluster. The visible text is almost never the full key. When a system message refuses to translate, check for these differences in order:
-
HTML wrapping. Bold text, forced line breaks or multi-paragraph layout usually mean the key starts with
<HTML>and carries formatting tags. -
Runtime substitution. Any user name, window name, count or timestamp in the message points to a format placeholder such as
%sin the key. The rendered value will never match. - Trailing punctuation. Colons on field labels and periods on status messages are part of the key.
- Hardcoded labels. If every plausible variant fails, including the exact full-string form, the text is not being looked up at all. Upgrade or raise it with Inductive Automation support. Adding more keys will not help.
Before you conclude that a dialog is hardcoded, test one short, unambiguous label from it, such as a button caption. If even that label does not translate, the lookup is not happening. If it does translate, the longer message is a key mismatch.
How do I confirm the translations reach the running client?
- Save the project in the Designer so the Gateway publishes the updated translation terms.
- Launch or refresh a Vision client and switch it to the Slovenian locale using your project's normal language-switch method.
- Make a trivial change to the project and save it again. This generates a pending update, and the yellow bar appears on the client.
- Click the yellow bar. The headline, body and instruction should appear in Slovenian, with the bold headline and the paragraph breaks intact.
- If the text is Slovenian but the formatting is flat, or tags appear as literal text, fix the tag skeleton in the Slovenian column only.
- For the lock dialog, lock the client screen and confirm that the title, the
Password:label, the Unlock and Logout buttons and the substituted username all render correctly. Then enter a wrong password and confirm thatLogin failed.appears translated.
FAQ
How do I translate the Ignition "project update available" popup?
Add one term to the global Translation Manager whose English key is the complete HTML string, starting with <HTML><P><B>There is a more recent version of this application available. and ending with Click 'Update' to update this application.. Keep all tags in the Slovenian translation. Entries for the individual lines never match.
How do I translate the Screen Locked popup buttons in Ignition?
On 7.7.7 or later builds that include the fix, add Screen Locked, Password:, Unlock, Logout, Login failed., This screen has been locked by user and This screen has been locked by %s as separate terms. On earlier builds these labels are hardcoded and cannot be translated.
How do I tell if an Ignition popup string is hardcoded or just mistyped in the Translation Manager?
Add a key for one short label from the dialog, such as a button caption, save, and reopen the dialog in the target locale. If even that label stays in English, the dialog bypasses translation. If it translates, the longer text is a key mismatch, and you need to check its HTML tags, punctuation and %s placeholders against what the code submits.