Framework Structure - Internationalization (i18n)
Internationalization
Internationalization (i18n) refers to the process of designing a software application in a way
that allows adaptation of to the various languages and regions without engineering changes. This
proccess especially important for web applications, because the potential users or site visitors
may be worldwide.
1. Locale and Language
Locale is a set of parameters that defines the user's language, country and any special variant preferences
that the user wants to see in their user interface. It is usually identified by an ID consisting of a
language ID and a region ID. For example, the ID en_US stands for the locale of English and United States.
This feature released in a basic frame for some languages in framework/i18n/
directory. Users
always may customize this feature to suit their needs.
2. Translation
This is the most needed feature of I18N and it including message translations. The former translates a text
message to the desired language. A translation request consists of the object to be translated, the source
language that the object is in, and the target language that the object needs to be translated to. In
ApPHP Framework, the source language defaults to the application source language while the target language
defaults to the application language.
ApPHP Framework provides support for i18n in several aspects:
- Provides the locale data for each possible language and variant
- Provides message translation service
- Provides locale-dependent date and time formatting
To release this feature the framework stores i18n files for each language in a special directory, called
i18n
. These files are the part of framework and they contain the array of localizable messages
and constants. You may modify them by translating the specific messages.
Currently they are:
-
framework/ framework directory
-
i18n/ directory where placed all internationalization files
- de.php i18n translation in German
- en.php i18n translation in English
- es.php i18n translation in Spanish
...
Below the example of such message file:
return array (
'monthNames' => array (
'wide' => array (
1 => 'January', 2 => 'February', 3 => 'March', 4 => 'April',
5 => 'May', 6 => 'June', 7 => 'July', 8 => 'August',
9 => 'September', 10 => 'October', 11 => 'November', 12 => 'December',
),
'abbreviated' => array(
1=>'Jan', 2=>'Feb', 3=>'Mar', 4=>'Apr', 5=>'May', 6=>'Jun',
7=>'Jul', 8=>'Aug', 9=>'Sep', 10=>'Oct', 11=>'Nov', 12=>'Dec'
),
),
'weekDayNames' => array (
'wide' => array(
1=>'Sunday', 2=>'Monday', 3=>'Tuesday', 4=>'Wednesday', 5=>'Thursday', 6=>'Friday', 7=>'Saturday'
),
),
...
);
Usage example:
echo A::t('i18n', 'monthNames.wide.1'); // will print "January"
echo A::t('i18n', 'monthNames.abbreviated.1'); // will print "Jan"
echo A::t('i18n', 'weekDayNames.wide.5'); // will print "Thursday"
Click to find more information about i18n (internationalization) and
l10n (localization) messages for applications.