davispuh/fuelphp-lang

为FuelPHP扩展的Lang类

1.1.1 2013-01-26 00:38 UTC

This package is not auto-updated.

Last update: 2024-09-28 14:07:33 UTC


README

此扩展Lang类支持本地化语言URL

http://domain/lang1/controller/method
http://domain/lang2/controller/method

仅修改Lang类,没有引入任何副作用,因此具有完全的向后兼容性,同时保持FuelPHP API不变,但增加了额外功能。

目录

安装

您可以使用composer安装它,或者只需将lang.php复制到您的app/classes/

然后在您的app/bootstrap.php中添加

Autoloader::add_class('Lang', VENDORPATH . 'davispuh/fuelphp-lang/classes/lang.php');

或者如果您已复制它

Autoloader::add_class('Lang', APPPATH . 'classes/lang.php');

使用方法

要使用此扩展Lang类,需要做一些代码更改,但并不多。

  1. 所有应该为同一语言的链接都必须替换为Lang::localized($uri),例如:<a href="<?php echo Lang::localized('/blog/article/')?>"/>文章</a>(注意:目前localized不支持schema或相对URL,并期望uri以/开头,但如果有需要,可以实施,现在可以做到'https://domain'.Lang::localized('/blog/article/')
  2. 制作更改语言的链接。可以使用Lang::localized('/blog/article/','ru')或直接写入<a href="/ru">RU</a>
  3. 在应用config.php中添加可用语言'languages' => Array('en', 'ru')
  4. 更改routes.php配置以包括本地化路由。

routes.php配置更改说明

需要为包含在URI中的语言和不包含在URI中的语言两种情况添加路由。因此需要添加另一个_root_,即$routes[$langs],以及所有其他以$routes[(({$langs})/)?route]为前缀的路由。

有4种可能的配置。

1.

SEO友好。默认语言没有前缀。例如:http://domain/controller和所有其他语言http://domain/lang/controller。但是http://domain/default_lang/controller返回404

config.php: 'language' => 'en' // 指定将作为默认语言提供哪种语言。不包含在URL中

routes.php

<?php

$languages = Config::get('languages');
unset($languages[0]);
$langs = implode('|', $languages);

return array(
'_root_' => 'welcome/index', // The default route
"({$langs})" => 'welcome/index', // The default route in other language
"(({$langs})/)?hello(/:name)?" => array('welcome/hello', 'name' => 'hello'),
);
2.

默认语言没有前缀。例如:http://domain/controller,但是http://domain/default_lang/controller仍然有效。

与之前相同,只是没有unset($languages[0]);

3.

所有语言http://domain/lang/controller。但是http://domain/controller将返回404。对于_root_有一个例外,它将提供默认语言(language_fallback)。

config.php: 'language' => '' // 无默认语言,必须在URL中'language_fallback' => 'en' // 如果URL中没有语言,将回退到的语言

routes.php

<?php

$langs = implode('|', Config::get('languages'));

return array(
'_root_' => 'welcome/index', // The default route
"({$langs})" => 'welcome/index', // The default route in other language
"(({$langs})/)?hello(/:name)?" => array('welcome/hello', 'name' => 'hello'),
);
4.

创建自己的路由,无限可能。也许您没有某种语言的某些文章?没问题,只需在默认语言中提供或提供说明页面,说明它不可用。

作者

此扩展Lang类由我 @davispuh 实现

原始FuelPHP Lang类由Fuel开发团队根据MIT许可证创建

无许可

此存储库中的所有文本、文档、代码和文件均为公有领域(包括此文本、README)。这意味着您可以复制、修改、分发并将其包含在自己的工作/代码中,甚至用于商业目的,而无需请求许可。

贡献

请随意改进您认为可改进的任何内容。

警告:通过向此存储库发送pull request,您将放弃所有版权利益(代码文件以及所有其他)至公有领域。(即使pull request未合并,文件也将处于公有领域)

在发送pull request之前,您承认您拥有所有版权或拥有将它们奉献给公有领域的授权。

如果您不想将代码奉献给公有领域或如果这不允许您这样做(例如,您不拥有所需的版权),请不要发送pull request。