I18n
Kohana_I18n

Class Contents

Constants

  • None

Properties

Methods

Class declared in SYSPATH/classes/i18n.php on line 3.

Properties

public static $lang
string(5) "en-us"
public static $source
string(5) "en-us"

Methods

public static get( )
Kohana_I18n

Source Code
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;
}

public static lang( )
Kohana_I18n

Source Code
public static function lang($lang = NULL)
{
	if ($lang)
	{
		// Normalize the language
		I18n::$lang = strtolower(str_replace(array(' ', '_'), '-', $lang));
	}

	return I18n::$lang;
}

public static load( )
Kohana_I18n

Source Code
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;
}