davispuh / fuelphp-lang
为FuelPHP扩展的Lang类
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类,需要做一些代码更改,但并不多。
- 所有应该为同一语言的链接都必须替换为
Lang::localized($uri)
,例如:<a href="<?php echo Lang::localized('/blog/article/')?>"/>文章</a>
(注意:目前localized
不支持schema或相对URL,并期望uri以/
开头,但如果有需要,可以实施,现在可以做到'https://domain'.Lang::localized('/blog/article/')
) - 制作更改语言的链接。可以使用
Lang::localized('/blog/article/','ru')
或直接写入<a href="/ru">RU</a>
- 在应用
config.php
中添加可用语言'languages' => Array('en', 'ru')
- 更改
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。