I18n: Porovnání verzí
Z Freenetis Wiki
Řádek 9: | Řádek 9: | ||
{| border="1" class="wikitable" | {| border="1" class="wikitable" | ||
|+ enum_types: | |+ enum_types: | ||
− | ! id !! type_id | + | ! id !! type_id !! value |
|- | |- | ||
− | | 1 || 1 (=např. typ člena) | + | | 1 || 1 (=např. typ člena) || Applicant |
|- | |- | ||
− | |2 || 1 | + | |2 || 1 || |
|- | |- | ||
− | |3 || 1 | + | |3 || 1 || |
|- | |- | ||
− | |4 || 2 (=např. typ kontaktu) | + | |4 || 2 (=např. typ kontaktu) || |
|- | |- | ||
− | |5 || 2 | + | |5 || 2 || |
|- | |- | ||
− | |6 || 2 | + | |6 || 2 || |
|} | |} | ||
Tabulka enum_types pouze "kategorizuje" jednotlivé hodnoty, uložené v sloupci id, do šuplíčků "typ člena", "typ kontaktu", ... atd. | Tabulka enum_types pouze "kategorizuje" jednotlivé hodnoty, uložené v sloupci id, do šuplíčků "typ člena", "typ kontaktu", ... atd. |
Verze z 11. 10. 2008, 23:48
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:
id | type_id | value |
---|---|---|
1 | 1 (=např. typ člena) | Applicant |
2 | 1 | |
3 | 1 | |
4 | 2 (=např. typ kontaktu) | |
5 | 2 | |
6 | 2 |
Tabulka enum_types pouze "kategorizuje" jednotlivé hodnoty, uložené v sloupci id, do šuplíčků "typ člena", "typ kontaktu", ... atd.
Ke každé hodnotě id z této tabulky ještě musíme přiřadit řetězec a všechny jeho překlady, k čemuž potřebujeme další tabulku enum_values:
id | enum_types_id | lang | value |
---|---|---|---|
1 | 1 | cz | Řádný |
2 | 1 | en | Regular |
3 | 1 | de | Ordentlich |
4 | 2 | cz | Jabber |
5 | 2 | en | ICQ |
6 | 2 | de | Skype |
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, enum_values.value FROM enum_types JOIN enum_values on enum_types.id=enum_values.enum_types_id WHERE type_id=1 AND enum_values.lang="cz"
Tento dotaz to chce dovymyslet tak, aby - když překlad do požadovaného jazyka chybí, tak to vrátilo třeba první nalezený jazyk...