This class is a transparent base class for I18n and should not be accessed directly.
Internationalization (i18n) class. Provides language loading and translation methods without dependencies on gettext.
Typically this class would never be used directly, but used via the __() function, which loads the message and replaces parameters:
// Display a translated message
echo
__(
'Hello, world'
);
// With parameter replacement
echo
__(
'Hello, :user'
,
array
(
':user'
=>
$username
));
Class declared in SYSPATH/classes/Kohana/I18n.php on line 21.
string
$langlink to thistarget language: en-us, es-es, zh-cn, etc
string(5) "en-us"
string
$sourcelink to thissource language: en-us, es-es, zh-cn, etc
string(5) "en-us"
array
$_cachelink to thiscache of loaded languages
array(0)
Returns translation of a string. If no translation exists, the original string will be returned. No parameters are replaced.
$hello
= I18n::get(
'Hello friends, my name is :name'
);
string
$string
required - Text to translatestring
$lang
= NULL - Target languagestring
public
static
function
get(
$string
,
$lang
= NULL)
{
if
( !
$lang
)
{
// Use the global target language
$lang
= I18n::
$lang
;
}
// Load the translation table for this language
$table
= I18n::load(
$lang
);
// Return the translated string if it exists
return
isset(
$table
[
$string
]) ?
$table
[
$string
] :
$string
;
}
Get and set the target language.
// Get the current language
$lang
= I18n::lang();
// Change the current language to Spanish
I18n::lang(
'es-es'
);
string
$lang
= NULL - New language settingstring
public
static
function
lang(
$lang
= NULL)
{
if
(
$lang
)
{
// Normalize the language
I18n::
$lang
=
strtolower
(
str_replace
(
array
(
' '
,
'_'
),
'-'
,
$lang
));
}
return
I18n::
$lang
;
}
Returns the translation table for a given language.
// Get all defined Spanish messages
$messages
= I18n::load(
'es-es'
);
string
$lang
required - Language to loadarray
public
static
function
load(
$lang
)
{
if
(isset(I18n::
$_cache
[
$lang
]))
{
return
I18n::
$_cache
[
$lang
];
}
// New translation table
$table
=
array
();
// Split the language: language, region, locale, etc
$parts
=
explode
(
'-'
,
$lang
);
do
{
// Create a path for this set of parts
$path
= implode(DIRECTORY_SEPARATOR,
$parts
);
if
(
$files
= Kohana::find_file(
'i18n'
,
$path
, NULL, TRUE))
{
$t
=
array
();
foreach
(
$files
as
$file
)
{
// Merge the language strings into the sub table
$t
=
array_merge
(
$t
, Kohana::load(
$file
));
}
// Append the sub table, preventing less specific language
// files from overloading more specific files
$table
+=
$t
;
}
// Remove the last part
array_pop
(
$parts
);
}
while
(
$parts
);
// Cache the translation table locally
return
I18n::
$_cache
[
$lang
] =
$table
;
}