模块

I18n

Internationalization (i18n) class. Provides language loading && translation methods without dependencies on gettext.

Typically this class would never be used directly, but used via the __() function, which loads the message && replaces parameters:

// Display a translated message
echo __('Hello, world');

// With parameter replacement
echo __('Hello, :user', array(':user' => $username));
package
BootPHP
category
Base
author
Tinsh
copyright
© 2005-2016 Kilofox Studio

该类在 SYSPATH/classes/i18n.php 第 23 行声明。

常量

属性

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) 

方法

public static get( string $string [, string $lang = NULL ] ) (在 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');

参数

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

返回值

  • string

源代码

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 ] ) (在 I18n 中定义)

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 setting

返回值

  • string

源代码

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

public static load( string $lang ) (在 I18n 中定义)

Returns the translation table for a given language.

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

参数

  • string $lang required - Language to load

返回值

  • array

源代码

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 = BootPHP::find_file('i18n', $path, NULL, true))
		{
			$t = array();
			foreach ($files as $file)
			{
				// Merge the language strings into the sub table
				$t = array_merge($t, BootPHP::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;
}