Class I18n

I18n

extends Kohana_I18n

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));

package
Kohana
category
Base
author
Kohana Team
copyright
(c) Kohana Team
license
https://koseven.ga/LICENSE.md


Information

This class is a transparent base class for Kohana_I18n

Constants

  • None

Properties

Methods

Properties

public static string $lang

target language: en-us, es-es, zh-cn, etc

string(5) "en-us"

public static string $source

source language: en-us, es-es, zh-cn, etc

string(5) "en-us"

protected static array $_cache

cache of loaded languages

array(0) 

Methods

public static get(string $string [, string $lang = NULL ] ) (defined in Kohana_I18n)

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');

Parameters

  • string $string required - Text to translate
  • string $lang = NULL - Target language

Return Values

  • string

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([ string $lang = NULL ] ) (defined in Kohana_I18n)

Get and set the target language.

// Get the current language
$lang = I18n::lang();

// Change the current language to Spanish
I18n::lang('es-es');

Parameters

  • string $lang = NULL - New language setting

Tags

  • Since - 3.0.2

Return Values

  • string

Source Code

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

	return I18n::$lang;
}

public static load(string $lang ) (defined in Kohana_I18n)

Returns the translation table for a given language.

// Get all defined Spanish messages
$messages = I18n::load('es-es');

Parameters

  • string $lang required - Language to load

Return Values

  • array

Source Code

public static function load($lang)
{
	if (isset(I18n::$_cache[$lang]))
	{
		return I18n::$_cache[$lang];
	}

	// New translation table
	$table = [];

	// 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 = [];
			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;
}

Do you want to contribute to Koseven?

We need YOUR help!

This project is open source. What does this mean? YOU can help:
  • Found a bug? Report it on Github
  • Need a feature? Add it Here
  • Want to help? Join the Forum
Go to Github