I18n

Z Freenetis Wiki
Přejít na: navigace, hledání

Internacionalizace ve Freenetisu se týká 2 oblastí:

  • řetězců, které jsou obsaženy ve zdrojových kódech - tato se provádí pomocí jazykových souborů v adresáři i18n
  • řetězců v databázi - řetězce v databázi není ve většině případů nutné překládat. Výjimkou jsou výčtové typy - např. typy členů, zařízení, kontaktů, které lze editovat i přes webové rozhraní. Protože instalace Freenetis-u obsahuje základní hodnoty pro tyto typy, bylo nutné pro ně vymyslet i internacionalizaci.

Výčtové typy jsou implementovány pomocí 2 tabulek:


enum_types:
id type_id value
1 1 (=např. typ člena) Applicant
2 1 Regular member
3 1 Honorary member
4 2 (=např. typ kontaktu) Phone
5 2 ICQ
6 2 Skype

Tabulka enum_types obsahuje výpis všech typů v defaultním jazyce (zde je zvolena angličtina)

Překlady k jednotlivým řádkům z enum_types budeme získávat z tabulky translations:

translations:
id original_term translated_term lang
1 Regulary member Řádný člen cs
2 Regulary member Regular member en
3 Regulary member Ordentlich Mitglied de
4 Phone Telefon cs
5 Phone Telefon de

Díky faktu, že obě tabulky nejsou provázané klíči, můžeme použít tabulky translations i na překlady termínů z jiných tabulek než enum_types.

Běžný dotaz pro získání id a jemu odpovídajícího řetězce určitého jazyka pro typy členů (type_id=1):

SELECT enum_types.id, IFNULL(translations.translated_term,enum_types.value) as value FROM enum_types
LEFT JOIN translations on enum_types.value = translations.original_term
WHERE enum_types.type_id=1 AND translations.lang="cs"