当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

Lang - 类別

优质
小牛编辑
117浏览
2023-12-01

Lang 类别能让你在你的应用程序中,使用语言档案设定语言变数。

预设语言是 en,设定在 app/config/config.php。 使用 Config set 方法去变更值。

Config::set('language', 'cy');

你也可以在你的配置定义一个备用语言,它是语言代码,或一个语言代码的阵列。 备用用于只要你载入语言档案, 且该指定语言的档案不存在时。

多语言支援

Lang 类别支援多个语言,可同时使用。预设情况下, 目前设定的语言是用来载入档案和取回语言字串,但你可以使用上述的方法动态切换, 或藉由在 Lang 类别其中之一的方法呼叫时,指定所需的语言代码。

Lang 档案类型

你可以使用不同的档案布局来储存你的语言档案,布局类型是由副档名决定:
  • PHP。预设类型,一个 PHP 档案应该回传一个阵列结构。
     return array('key' => 'value');
  • INI。ini 档案的布局定义,请参阅 此页
     [group]
    key=value
  • YAML。yaml 档案的布局定义,请参阅 此页
     group:
       key: value
  • JSON。json 档案的布局定义,请参阅 此页
     {
    "group" :
        {
    		"key": "value"
    	}
    }
  • DB。使用以下资料表结构:
      CREATE TABLE IF NOT EXISTS `lang` (
      `identifier` char(100) NOT NULL,
      `language` char(10) NOT NULL,
      `lang` longtext NOT NULL,
      `hash` char(13) NOT NULL,
      PRIMARY KEY (`identifier`, `language`)
    )
    预设情况下,它会使用名为 'lang' 的资料表。你可以透过在 app/config/config.php 中定义资料表名称来覆写, 使用 lang.table_name 键。

如果你没有指定档案类型,Lang::load() 将预设为 'php' 类型。

load($file, $group = null, $language = null, $overwrite = false, $reload = false)

load 方法能让你载入一个语言档案。

静态
参数
参数预设描述
$file必要所需的文件路径。你可以加上一个命名空间的前缀以载入一个已载入的套件或模组的配置档案。
$group
null
设定要使用的语言群组。
$language
null
设定要载入的特定语言。
$overwritefalse(选择性)如果设定为 true,被载入的语言项目将与已被载入的项目以非递迴方式合併。一个多维阵列将被覆写阵列值,而非合併。
$reloadfalse(选择性)如果设定为 true,请求语言档案的重载是强制的,抹去快取的与被载入语言档案相关的语言项目。
回传
範例
// 语言档案的例子:
return array(
	'hello' => 'Hello :name',
	'something'=> 'something :name!',
	'test'=> array('hello' => 'Hello', 'something' => 'Plop') // 群组
);

// 载入 example.php。
// 请注意:如果在配置里没有语言被设定,将会退回至 English。
Lang::load('example');

// 将载入所给的档案进 'test' 群组。
Lang::load('example', 'test');

// 输出 Plop
$this->output = Lang::get('test.test.something');

// 将从模组 'foo' 载入 example 语言档案进 'bar' 群组。
Lang::load('foo::example', 'bar');

// 将载入 example 语言档案的义大利语。
// 如果不存在,它会载入已配置的语言
Lang::load('foo::example', 'bar', 'it');

get($line, $params = array(), $default = null, $language = null)

get 方法能让你从语言档案取得特定行。

静态
参数
参数预设描述
$line必要所需行的识别符。
$parameters
array()
设定一个能被传递至行的参数阵列。
$default
null
如果找不到 $line 要回传的值。
$language
null
应该被取回行的语言代码。如果没给,目前活跃的语言将被使用。
回传混合。如果找到是字串,否则是 false
範例
// 给这个 lang 档案
return array('hello' => 'Hello :name');
// 输出 Hello world
$this->output = Lang::get('hello', array('name' => 'world'));

// 输出 Plop
$this->output = Lang::get('test.something');

set($line, $value, $group = null, $language = null)

set 方法能让你设定一个特定行至语言档案。

静态
参数
参数预设描述
$line必要所需行的识别符。
$value
array()
设定行的值。
$group
null
设定要使用的语言组。
$language
null
应该被设定行的语言代码。如果没给,目前活跃的语言将被使用。
回传
範例
// 回传 true
Lang::set('hello', 'Ahoy!');

// 使用群组
Lang:set('hello', 'Ahoy!', 'test');

// 也可如上运作
Lang::load('test', 'test');
Lang::set('hello', 'Ahoy!');

save($file, $lang, $language = null)

save 方法储存一个语言档案到系统,它从语言目录中搜寻请求档案里的请求语言。 如果没有存在的档案被找到,语言档案会被建立在 APPPATH 语言目录。

静态
参数
参数预设描述
$file必要指向相对于配置目录的配置档案路径,不包括副档名(假设是".php")。你可以用命名空间前缀它,来从已载入的套件或模组载入一个配置档案。
$lang必要如果这是一个字串,它指定一个群组名称来储存。如果它是一个阵列,它被认为包含要储存的语言字串。
$languagenull要储存档案的语言代码,如果没给,无论目前设定的语言代码是什幺,它将被储存。
回传如果档案被储存为 true,如果错误发生为 false
範例
// 载入 "custom" 语言档案中名为 "foo" 的群组。
Lang::load('custom', 'foo');

// 更新一些语言项目
Lang::set('foo.key', $value);

// 储存已更新的语言群组 'foo'(注意:它将储存在群组内的所有东西!)
Lang::save('custom', 'foo');

// 储存已更新的语言群组 'bar' 到模组 'foo' 里的语言档案 'custom'。
Lang::save('foo::custom', 'bar');

delete($item, $group = null, $language = null)

delete 方法能让你从 已载入 的语言档案删除特定行。

静态
参数
参数预设描述
$item必要所需行的识别符。
$group
null
设定要使用的语言组。
$language
null
应该被删除行的语言代码。如果没给,目前活跃的语言将被使用。
回传
範例
// 删除 'hello' 语言键
Lang::delete('hello');

请注意,这样会删除储存在语言类别中的语言项目,不会 从磁碟上的语言档案删除!

get_lang()

get_lang 方法能让你取回目前活跃的语言。通常会跟 Config::get('language') 一样。

静态
参数
回传字串,目前活跃的语言。
範例
// 将回传目前活跃的语言,最可能是 'en'
Lang::get_lang();

程序助手

__($string, $params = array())

__ 函式是 Lang::get 的别名。

参数
参数预设描述
$string必要所需行的识别符。
$parameters
array()
设定一个能被传递至行的参数阵列。
回传字串,来自 Lang::get 的结果
範例
// 输出 Hello world
$this->output = __('hello', array('name' => 'world');

// 输出 Plop
$this->output = __('test.something');