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.
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.
- You convert 8629 to hex => 21B5
- Take the first part and convert back to decimal value, add leading zeros until you have 5 characters => 21 = 00033
- Take the last part, and covert back to decimal, add leading zeros until you have 5 characters
=> B5 = 00181 - Join these together with a dash => 00033-00181
- Open fin.stx in your favorite text editor and search for the text.
- 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:
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
*This post is locked for comments