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ó