# Problems with language translations

**URL:** <https://forum.inductiveautomation.com/t/problems-with-language-translations/111618>\
**Category:** Ignition\
**Tags:** perspective, ignition83\
**Created:** [October 21, 2025, 2:52pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618 "2025-10-21T14:52:58Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![Francesco\_Vezzoli](https://avatars.discourse-cdn.com/v4/letter/f/8c91f0/32.png) [@Francesco\_Vezzoli](https://forum.inductiveautomation.com/u/Francesco_Vezzoli)\
**Post date:** [October 21, 2025, 2:52pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/1 "2025-10-21T14:52:58Z")

</div>

Good morning everyone.

I've been having trouble with translations for a while now (since 8.3 beta3). I have a series of labels containing the expression "translate("key")" that I use to translate from English to Italian and vice versa. I don't understand why it translates some terms while not others despite the correctness of the common keys. However, if I try to delete them and recreate them with a small difference (e.g. key --\> Key), it works...

I noticed this problem when I switched from Ignition 8.1 to 8.3 beta3. I was hoping that now, with 8.3 Stable being released, this problem would be solved, but unfortunately it wasn't...

I also tried exporting the translation lists, deleting them all within Ignition, and reimporting them, but it didn't work.

Could anyone help me? The last solution would be to delete all the tags and recreate them, although I'd prefer not to do that :).

Thanks!

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [October 21, 2025, 3:36pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/2 "2025-10-21T15:36:49Z")

</div>

This isn't something we're aware of and we tested localization/translation pretty thoroughly in the migration from 8.1 to 8.3.

Are the settings in your translation manager the same? Check the 'Gear' icon on the right hand side of the translation manager interface in the designer:

> **[Localization and Languages | Ignition User Manual](https://www.docs.inductiveautomation.com/docs/8.3/platform/localization-and-languages)**
>
> Translating Ignition

There's settings in there to ignore capitalization/whitespace/etc - they _should_ be preserved from 8.1 to 8.3 faithfully and lead to the same behavior, but maybe something's gone wrong there?

---

<div class="post-metadata">

**Author:** ![Francesco\_Vezzoli](https://avatars.discourse-cdn.com/v4/letter/f/8c91f0/32.png) [@Francesco\_Vezzoli](https://forum.inductiveautomation.com/u/Francesco_Vezzoli)\
**Post date:** [October 22, 2025, 6:53am UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/3 "2025-10-22T06:53:13Z")

</div>

I checked, but the settings are the same.  
They're all disabled, so I'm not missing anything.  
The thing is, I can't figure out why some work and others don't...

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [October 23, 2025, 4:00pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/4 "2025-10-23T16:00:22Z")

</div>

Are you already working with our support department? I would really encourage you to do so, so that we can formally track this and have folks with some time investigate it further.

It's entirely possibly something broke in the 8.1 -\> 8.3 upgrade and we're just not aware of it, so the more information we can get from you the better.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [October 23, 2025, 4:17pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/5 "2025-10-23T16:17:20Z")

</div>

Perhaps the underscores versus dashes issue, as noted here:

> [@Concatenation in string translation](https://forum.inductiveautomation.com/t/concatenation-in-string-translation/111669/11):
>
> This works but now another problem arises: if I use the function "translate('somekey', {session.props.locale})", the "session.props.locale" property must be, for example, "en\_US" while if I use the function "translate('somekey') the "session.props.locale" property must be "en-US" (this format, the other function, gives me an error saying: "Invalid locale format: en-US"). Depending on which one I use, I see the translations of certain texts working or not. Why is this? This is all quite funny …

---

<div class="post-metadata">

**Author:** ![Logan\_Nguyen](https://avatars.discourse-cdn.com/v4/letter/l/8e7dd6/32.png) [@Logan\_Nguyen](https://forum.inductiveautomation.com/u/Logan_Nguyen)\
**Post date:** [October 23, 2025, 4:34pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/6 "2025-10-23T16:34:14Z")

</div>

I’m having the same issues. I upgraded to 8.3 from 8.1. All my translations from English → Chinese (Simplified) still work except for instances where I have to use expression bindings. For instance on the X label on bar charts, I had to use expression binding on the data to translate. Since upgrading, I am getting errors.

---

<div class="post-metadata">

**Author:** ![Logan\_Nguyen](https://avatars.discourse-cdn.com/v4/letter/l/8e7dd6/32.png) [@Logan\_Nguyen](https://forum.inductiveautomation.com/u/Logan_Nguyen)\
**Post date:** [October 23, 2025, 4:39pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/7 "2025-10-23T16:39:42Z")

</div>

After some troubleshooting, it looks like the issue was that translate() no longer recognizes ‘zh-CN’ as a locale. It does however recognize ‘zh’.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [October 23, 2025, 5:26pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/8 "2025-10-23T17:26:25Z")

</div>

Yeah, it's a bug and we'll get it fixed, hopefully as soon as 8.3.2.

For now, if you pass `zh_CN` instead of `zh-CN` it should work as it did before.

---

<div class="post-metadata">

**Author:** ![Francesco\_Vezzoli](https://avatars.discourse-cdn.com/v4/letter/f/8c91f0/32.png) [@Francesco\_Vezzoli](https://forum.inductiveautomation.com/u/Francesco_Vezzoli)\
**Post date:** [October 24, 2025, 6:46am UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/9 "2025-10-24T06:46:10Z")

</div>

No, I've only opened a ticket regarding the issue mentioned above by @pturmel (the one with the - and \_). The response was this: "Our system is showing that there isn't a valid support plan and that you're not currently part of our integrator program. We have contacted your distributor, EFA, and relayed your ticket information."  
Should I open a ticket for this issue as well?

---

<div class="post-metadata">

**Author:** ![Francesco\_Vezzoli](https://avatars.discourse-cdn.com/v4/letter/f/8c91f0/32.png) [@Francesco\_Vezzoli](https://forum.inductiveautomation.com/u/Francesco_Vezzoli)\
**Post date:** [October 24, 2025, 6:49am UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/10 "2025-10-24T06:49:55Z")

</div>

A question, just to avoid doing the work twice, in the {session.props.locale} is it better to use "-" or "\_"?

And as a function in the expression? Is it better "translate('somekey', {session.props.locale})" or "translate('somekey') ?  
Thank you!

---

<div class="post-metadata">

**Author:** ![Logan\_Nguyen](https://avatars.discourse-cdn.com/v4/letter/l/8e7dd6/32.png) [@Logan\_Nguyen](https://forum.inductiveautomation.com/u/Logan_Nguyen)\
**Post date:** [October 24, 2025, 3:45pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/11 "2025-10-24T15:45:21Z")

</div>

Another bug appeared with translation yesterday as well. Some words will only translate after you add them and then delete from the translation manager.

ex. I used the word “Dispersing Machine” and created a Chinese translation to “分散机” in translation manager. The binding however would not see the translation until I deleted it from the translation manager. So to get it to work, I had to add the translation, then remove it. Currently it’s working fine without the key even in the manager.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [October 24, 2025, 4:00pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/12 "2025-10-24T16:00:13Z")

</div>

`session.props.locale` should be set with a BCP-47 language tag (in short, `-` separated).  
The translate function _should_ accept a BCP-47 language tag, but (one of) the bugs here is that it doesn't - that's a regression from 8.1 behavior we're treating as high priority and should be able to fix by 8.3.2. So you have to pass a "Java formatted" language tag (in short, `_` separated) in to the **translate expression function** - but nothing else in Perspective will expect this format, so try to keep your changes isolated to uses of the translation function.

The fix in \[1\]8.3.2 will deliberately support _both_ formats for the sake of backwards compatibility, so you won't have to immediately go back and rip out any changes you make to get things working until that next release..

> [@Francesco\_Vezzoli](#):
>
> And as a function in the expression? Is it better "translate('somekey', {session.props.locale})" or "translate('somekey') ?

As a temporary workaround I would recommend:  
`translate('somekey', replace({session.props.locale}, '-', '_'))`  
That will ensure the translation updates as the locale changes, but pass the (in)correct language tag format to the `translate` function that it's expecting.

> [@Logan\_Nguyen](#):
>
> Some words will only translate after you add them and then delete from the translation manager.

This isn't something we're aware of, so I'd definitely request that you contact our support department with whatever information you can provide to help us replicate this as well.

* * *

1. hopefully

---

<div class="post-metadata">

**Author:** ![Eric\_Leisebein](https://avatars.discourse-cdn.com/v4/letter/e/e5b9ba/32.png) [@Eric\_Leisebein](https://forum.inductiveautomation.com/u/Eric_Leisebein)\
**Post date:** [March 25, 2026, 4:13pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/13 "2026-03-25T16:13:57Z")

</div>

Has this been fixed yet? I upgraded from 8.1 to 8.3 and I am on 8.3.4 now and I am still seeing weir behaviour with translations. Changing the locale (in my case its de-DE) from having an underscore and back changes the translations in the designer. Some work immediately and some only after changing it back and forth.

This (of course) doesn’t do anything in the final client tho.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 25, 2026, 4:21pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/14 "2026-03-25T16:21:28Z")

</div>

8.3.2 and 8.3.4 have some fixes for issues with translations. If you're still having issues you should contact our support department so we can figure out what's going on.

---

<div class="post-metadata">

**Author:** ![Eric\_Leisebein](https://avatars.discourse-cdn.com/v4/letter/e/e5b9ba/32.png) [@Eric\_Leisebein](https://forum.inductiveautomation.com/u/Eric_Leisebein)\
**Post date:** [April 10, 2026, 3:57pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/15 "2026-04-10T15:57:53Z")

</div>

I found the culprit for some of the translations not working anymore at all.  
When moving from 8.1 to 8.3 (this is reproducable with an 8.1 Backup restored on a 8.3 Gateway) all translation keys are changed to all lowercase with all spaces deleted. I am unsure whether this happens when you “properly” upgrade from 8.1 to 8.3 but I guess its the same issue there, since I was getting reports of translations not working anymore after my 8.3 upgrade in production.  
I double checked the upgrade guide and found nothing about translations in there.  
Is this something you guys are already aware off?

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [April 13, 2026, 3:28pm UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/16 "2026-04-13T15:28:58Z")

</div>

No, that's news to me. I'll get a ticket going internally and do some investigation. Thanks for the report.

---

<div class="post-metadata">

**Author:** ![Eric\_Leisebein](https://avatars.discourse-cdn.com/v4/letter/e/e5b9ba/32.png) [@Eric\_Leisebein](https://forum.inductiveautomation.com/u/Eric_Leisebein)\
**Post date:** [April 14, 2026, 8:41am UTC](https://forum.inductiveautomation.com/t/problems-with-language-translations/111618/17 "2026-04-14T08:41:10Z")

</div>

Hi Paul,  
I’ve already opened a ticket with the support (#183460). Your colleague investigated and found out that apparently the settings for “Ignore Capitalization” and “Ignore Whitespace” cause this issue.  
A bug report has already been issued with the development team.  
Whoever has this issue too:  
Set “Ignore Capitalization” and “Ignore Whitespace” both to false before exporting from 8.1. This fixes the issue with the imported keys being changed.
