Format
Els fitxers d'idiomes sempre es diuen LDST_{lang_code}.xml. On {lang_code} és el codi de 2 lletres del idioma (Ex: LDST_CA.xml Català, LDST_ES.xml Espanyol, LDST_ZH.xml Xinès ....)
Les dades estan guardades en format XML i la codificació és UTF-8.
<?xml version="1.0" encoding="utf-8"?>
<lang id={lang_code}>
<messages>
<message name={msg_name} value={msg_text}>*
</messages>
<forms>
<form name={form_name}>
<field name={control_path} value={control_text}/>*
</form>*
</forms>
<verification code={auth_code}>
</lang>
Per garantir l'integritat dels fitxers s'ha afegit un codi de verificació. El codi es calcula fent la XOR dels codis de verificació individuals de totes les linies. Es fa d'aquesta manera ja que si ens permuten l'ordre de les linies dins de cada apartat el fitxer continua sent vàlid.
La funció per calcular el codi d'una linia funciona de la següent manera:
calc_codi_linia(string lloc_linia,string clau,string valor)
int32 resultat=0
per cada caracter c en UTF16(lloc_linia)
resultat=resultat xor c
rotar_un_bit_esquerra(resultat)
fi per
resultat=resultat xor 0x55555555;
per cada caracter c en UTF16(clau)
resultat=resultat xor c
rotar_un_bit_esquerra(resultat)
fi per
resultat=resultat xor 0xaaaaaaaa;
per cada caracter c en UTF16(valor)
resultat=resultat xor c
rotar_un_bit_esquerra(resultat)
fi per
retornar resultat
fi funció
Per calcular el fitxer es procedeix de la següent manera:
calc_codi(lang_code,missatges,forms)
codi=0xbad9a61c
codi=codi xor calc_codi_linia("lang","id",lang_code)
per cada missatge m en missatges
codi=codi xor calc_codi_linia("msg",m.name,m.value)
fi per
per cada form f en forms
per cada camp c en f.fields
codi=codi xor calc_codi_linia("frm."+f.name,c.name,c.value)
fi per
fi per
retorna codi
fi funció