I18n: Porovnání verzí

Z Freenetis Wiki
Přejít na: navigace, hledání
Řádek 29: Řádek 29:
 
{| border="1" class="wikitable"
 
{| border="1" class="wikitable"
 
|+ enum_values:  
 
|+ enum_values:  
! id !! enum_types_id  !! lang  !! value
+
! id !! enum_types_id  !! value !! lang
 
|-
 
|-
| 1 || 1 || cz || Řádný
+
| 1 || 1 || Řádný || cs
 
|-
 
|-
| 2 || 1 || en || Regular
+
| 2 || 1 || Regular || en
 
|-
 
|-
| 3 || 1 || de || Ordentlich
+
| 3 || 1 || Ordentlich || de
 
|-
 
|-
| 4 || 2 || cz|| Jabber
+
| 4 || 2 || Jabber || cs
 
|-
 
|-
| 5 || 2 || en || ICQ
+
| 5 || 2 || ICQ || en
 
|-
 
|-
| 6 || 2 || de || Skype
+
| 6 || 2 || Skype || de
 
|}
 
|}
  

Verze z 11. 10. 2008, 23:55

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) Jabber
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:

enum_values:
id enum_types_id value lang
1 1 Řádný cs
2 1 Regular en
3 1 Ordentlich de
4 2 Jabber cs
5 2 ICQ en
6 2 Skype de


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...