Translating NAV: Translation Tokens

Some of you might already have needed to translate NAV objects before.
When you did this, odds are big that you have run into “unreadable” translation tokens?

Well, I have, after searching around a bit, ran into a blog post that seems to explain the different properties. So I thought I’d share them with you.

Original post here.

A typical translation token would be T3-F1-P8629-A1033-L999:Code

The first part always points to the object. This is the list below:

  • T: Table
  • F: Form
  • R: Report
  • D: Dataport
  • C: Codeunit
  • X: XMLPort
  • M: MenuSuite
  • N: Page
  • Q: Query

the part starting with A gives you the language code (1033 being ENU).

Then it becomes more difficult.

If it is a table, most likely the next part will start with F<xxx>. Meaning Field Number.
Every token also contains an L value. This means the max length of the string

Another always occurring element is the P tag. This translates to a property. If you search around, you find some descriptions of the properties. But there is some sort of logic in it.

Let’s review the above sample. P8629.

  1. You convert 8629 to hex => 21B5
  2. Take the first part and convert back to decimal value, add leading zeros until you have 5 characters => 21 = 00033
  3. Take the last part, and covert back to decimal, add leading zeros until you have 5 characters
    => B5 = 00181
  4. Join these together with a dash => 00033-00181
  5. Open fin.stx in your favorite text editor and search for the text.
  6. In this case, the stx file states: 00033-00181-030-0: CaptionML

Meaning that T3-F1-P8629-A1033-L999:Code would say:

Table 3 – Field 1 – Multilanguage for ENU is Code

There are more blocks with descriptors. But most of the time, with the property, it should explain itself.

Take a look at this sample:

T18-Q1001-P26171-A1033-L999:Do you wish to create a contact for %1 %2?

This would point to table 18, an ENU caption of some sort.
Q1001, no idea what it would be. But most likely the 1001 will point to a FieldID or controlID.

If we translate 26171 we get 00102-00059-030-0: ConstValueML

Most likely a ConstValueML will be a text variable.

Indeed for Text002 we find this:
ConstValueML

ID 1001, and the ENU caption we saw in the token.

Let’s take another.

I added a local text constant on a field in the customer table. This is what the key is:

T18-F50000-P4962-Q50000-P2818-L30:MyCaption
T18-F50000-P4962-Q50000-P26171-A1033-L999:MyCaptionValue

Table 18 on field 50000. Property 4962 translates to 00019-00098-030-0: OnValidate.

Q will point to a text constant as we already discovered. P2818 equals to B02 in hex and to 00011-00002 converted back. According to fin.stx this is Name. So even the name is exported. You notice there is no A tag in there.

The second is almost the same. It has an A record: it’s the ENU caption. 26171 is the same as before, being ConstValueML.

By the way, also this was in the translation export:

T18-F50000-P2818-L30:MyField
2818 being name and again no A tag.

So, hopefully if you ever need to find the exact location of the translation, this will help you. If you have another list of tokens (such as Q being Global Text Constant) please share 🙂

One thought on “Translating NAV: Translation Tokens

  1. Pingback: Translating NAV: Translation Tokens | Pardaan.com

Leave a Reply