Difference between revisions of "Internationalization/class structure"

m
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[[Category:Internationalization]]
 
[[Category:Internationalization]]
  
== Class structure ==
+
''TODO: upload semesterproject UML diagam''
 
+
That's a possible structure of the whole thing:
+
 
+
 
+
SHARED_I18N_LOCALIZATOR => I18N_LOCALIZATOR => I18N_DATASTRUCTURE => I18N_MO_PARSER, I18N_PLURAL_FORMS
+
::^
+
::|
+
CLASS_TO_LOCALIZE
+
 
+
 
+
The CLASS_TO_LOCALIZE simply inherits from our SHARED_I18N_LOCALIZATOR, which only purpose is to return always the same "localizator: I18N_LOCALIZATOR".
+
 
+
This class will in turn ask the archive for the translated strings, and at the end the mo_parser will be used if the string is not already in memory (actually for the initial filling of the datastructure); the plural forms resolver will be used to find out which plural form should be used.
+
 
+
 
+
SHARED_I18N_LOCALIZATOR (already in place)
+
 
+
* translator: I18N_LOCALIZATOR
+
* i18n(string): STRING
+
* i18n_comp(string, args): STRING (or what you want)
+
i18n (i18n_pl) and i18n_comp (i18n_comp_pl) are interfaces to the translator
+
 
+
 
+
I18N_LOCALIZATOR (skeleton already in place)
+
* archive: I18N_DATASTRUCTURE
+
* ask(string): STRING (simple interface to ask the archive)
+
* solve_template(string, args): STRING (function that compose a string from template+arguments)
+
 
+
 
+
I18N_DATASCTRUCTURE (already in place)
+
* mo_parser: I18N_MO_PARSER
+
* load(n) (interface to the parser)
+
* translate(STRING): STRING (interface to the I18N_LOCALIZATOR)
+
* data_structure: HASH|ARRAY (where the strings are effectively stored)
+
 
+
 
+
I18N_MO_PARSER (already in place)
+
* open(file)
+
* load(n): STRING
+
* load_translated(n): STRING
+
* load_hash_entry(n): STRING
+
 
+
 
+
I18N_PLURAL_FORMS (already in place)
+
* get_plural_form(n): INTEGER
+

Latest revision as of 16:24, 15 August 2006


TODO: upload semesterproject UML diagam