Amadis

lang.ini /LANG_CFG format

The lang.ini is an ASCII file contains for all supported languages, the message definition, this ACE_CLIENT side.

The LANG_CFG is a binary file, updated on the level 3 side by Kizis/OpenAce from a lang.ini message sent by ACE_Client

 

lang.ini Format

Language field defines the number of languages supported, with index and ISO 639-1 code (excepted for Canadian French! = ca

[Language]
1=en
2=fr
3=ca

in this file for example we have 3 languages

This is followed by each language defined by the ISO 639-1 code, mandatory label and message definitions with ID

[en]
Label=ENGLISH
01=AMOUNT
02=AMOUNT OK?
03=APPROVED
04=CALL YOUR BANK
05=CANCEL OR ENTER
06=CARD ERROR
07=DECLINED
08=ENTER AMOUNT

..

9A=TAP UNAIVALABLE\\SEE ATTENDANT
check=0D6B251759DF633A

Here the message ID or Index for CARD ERROR is 0x06

At the end of each language a SHA on 20 bytes is calculated on all messages + indexes

Such as check=0D6B251759DF633A

And the same pattern for other languages

[fr]
Label=FRANCAIS
01=MONTANT
02=MONTANT OK?
03=APPROUVE

99=CARTE ABSENTE
9A=TAP INDISPONIBLE\\VOIR MARCHAND
check=A4696D0FDF594A75

 

[ca]
Label=Canadien
01=MONTANT-$$
02=AMOUNT OK?
03=APPROVED\\APPROVE

..

99=NO CARD\\CARTE ABSENTE
9A=TAP UNAIVALABLE\\SEE ATTENDANT
check=6B2AE6A5B74F366C

 

 

LANG_CFG FORMAT:

VERSION
{
[1 byte] Version Prefix
[1 byte] VersionNumber
}

such as:


LANGUAGE ENTRY x [Number Languages]
{
LANGUAGE HEADER
{
[2 bytes] ISO 639-1 Code (1st entry is Default Language, Code = 3030 is allowed for undefined Language example: Canada Bilingual) as for example:


[2 bytes] Length of LANGUAGE DATA (i.e. including SHA-1)

as for example here 0x04AC bytes


[20 bytes] SHA-1 of LANGUAGE DATA
}

as for example:


LANGUAGE DATA (max 2048 bytes)
{
MESSAGE ENTRY x [Number Messages]
{
[1 byte] Message Index
[1 byte] Message Length

such as for example, index is 0m length is 8, including the 0 value byte (NULL) after the text:


[variable] Message String (max 64 bytes)

as for example:


}
}
}
NOTE: Message Index = 0 is used for Language Label (ex: 00='ENGLISH')