tp5多语言切换

一.配置点击打开链接
1.开启语言包功能
‘lang_switch_on’ => true,
2.支持的语言列表
‘lang_list’ => [‘zh-cn’,‘en-us’],
二.语言定义(默认语言无需定义,下面会提到原因及使用)方法
1.文件定义
框架或模块目录\lang\en-us.php
return [
‘按钮1’=>‘button1’,//表示模板内使用{:lang(‘按钮1’)}获得的字符在英文状态下显示为button1
‘按钮2’=>‘button2’,
‘其它语言变量’=>‘Other language variables’,
];
ps:如果还需要加载其他的语言包,可以在自动检测语言之后,用load方法进行加载:
\think\Lang::load(路径\lang\语言.php’);
2.动态定义在控制器方法中
a.单个设置
\think\Lang::set($name, v a l u e , ′ z h − c n ′ ) ; / / value,'zh-cn');// value,zhcn);//name KaTeX parse error: Expected 'EOF', got '\think' at position 11: value是键值对 \̲t̲h̲i̲n̲k̲\Lang::set(name, $value,‘en-us’);
如\think\Lang::set(‘按钮’, ‘button’,‘en-us’);//表示模板内使用{:lang(‘按钮’)}获得的字符在英文状态下显示为button
b.批量设置
\think\Lang::set([‘按钮1’=>‘button1’,‘按钮2’=>‘button2’],’’,‘en-us’);
ps:
1.动态定义优先
2.默认语言无需语言包或动态设置,控制器方法,模板内在需要的地方可以直接使用默认语言变量,再编写其它语言包或动态设置其它语言(需保证默认语言变量是其它语言变量的键值)即可切换,
如使用语言为中(默认)英文,那么只要编写英文语言包
return [
‘中文’=>‘Chinese’,
//…
];
模板使用{:lang(‘中文’)},那么在中文状态下会显示’中文’,英文状态下会显示’Chinese’,
模板使用{:lang(‘中文中文’)},那么在中英文状态下都会显示’中文中文’,英文状态下无效,因为中文语言变量’中文中文’与英文语言变量的键值’中文’不一致
三.在项目(貌似模块无效)公共文件(common.php)中选择自动侦测当前语言
\think\Lang::detect();
ps:convention.php里有个’default_lang’ => ‘zh-cn’,貌似设置无效.为使之有效,可以修改detect方法如下
public static function detect() {
// 自动侦测设置获取语言选择
l a n g S e t = C o n f i g : : g e t ( ′ d e f a u l t l a n g ′ ) ; i f ( i s s e t ( langSet = Config::get('default_lang'); if (isset( langSet=Config::get(defaultlang);if(isset(_GET[self::$langDetectVar])) {
// url中设置了语言变量
l a n g S e t = s t r t o l o w e r ( langSet = strtolower( langSet=strtolower(_GET[self:: l a n g D e t e c t V a r ] ) ; C o o k i e : : s e t ( s e l f : : langDetectVar]); Cookie::set(self:: langDetectVar]);Cookie::set(self::langCookieVar, KaTeX parse error: Expected 'EOF', got '}' at position 21: …et, 3600); }̲ elseif (Cookie…langCookieVar)) {
// 获取上次用户的选择
l a n g S e t = s t r t o l o w e r ( C o o k i e : : g e t ( s e l f : : langSet = strtolower(Cookie::get(self:: langSet=strtolower(Cookie::get(self::langCookieVar));
} elseif (KaTeX parse error: Expected '}', got 'EOF' at end of input: …kie::set(self::langCookieVar, KaTeX parse error: Expected 'EOF', got '}' at position 21: …et, 3600); }̲ elseif (isset(_SERVER[‘HTTP_ACCEPT_LANGUAGE’])) {
// 自动侦测浏览器语言
preg_match(’/^([a-z\d-]+)/i’, $_SERVER[‘HTTP_ACCEPT_LANGUAGE’], $matches);
l a n g S e t = s t r t o l o w e r ( langSet = strtolower( langSet=strtolower(matches[1]);
Cookie::set(self::$langCookieVar, KaTeX parse error: Expected 'EOF', got '}' at position 21: …et, 3600); }̲ if (empty(…allowLangList) || in_array( l a n g S e t , s e l f : : langSet, self:: langSet,self::allowLangList)) {
// 合法的语言
self::$range = $langSet;
}
}
4.自动侦测浏览器语言
四.控制器方法编写(模块/Index.php)
//转英文
public function enlang() {
l a n g = i n p u t ( ′ l a n g ′ ) ; s w i t c h ( lang=input('lang'); switch ( lang=input(lang);switch(lang) {
case ‘en’:
cookie(‘think_var’, ‘en-us’);
break;
case ‘zn’:
cookie(‘think_var’, ‘zh-cn’);
break;
default:
cookie(‘think_var’,‘zh-cn’);
break;
}
}
五.模板使用(index.html)
{:lang(‘英文’)}
{:lang(‘中文’)}
{:lang(‘按钮3’)}
{:lang(‘其它语言变量’)}
语言的使用是通过设置cookie来实现的,由于cookie的特性,所以设置后需要刷新才能成功
模板发送ajax请求成功后刷新页面

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
源码简介与安装说明: 软件介绍 博客系统是一款开源的THinkphp5.0 的 Blog系统,其衍生于优秀的内容管理系统 易优cms。 优优 Blog系统秉承了易优CMS的先进设计理念,并且专注于个人博客系统。 易优 Blog系统使用十分便捷,便捷到您只需直接开始博客写作就可以了。 博客系统特点: 简单方便 博客系统 安装十分方便,只需输入域名,然后再点两次鼠标,期间填入一些必要的安装信息就可以轻松完成整个安装过程。 使用十分便捷,安装后进后台,直接写博客内容就可以了,无需事先进行任何设置操作。 要进行网站设置也十分简单,几分钟就可以完成。 博客系统功能介绍: 1、会员系统 2、支付功能 3、标签功能 4、熊掌号提交功能 5、文章发布功能 6、SEO设置功能 7、多语言版(后台一键开启) 8、插件功能 博客系统安装环境要求: 操作系统:Linux/Unix/Windows 软件环境:Apache/Nginx/IIS + PHP 5.5~7.1 + MySQL 5.0 及以上 本地电脑推荐使用PHPstudy安装,及安装在合适的网站空间、虚拟主机上。 默认后台 域名/login.php 源码更新日志: 博客系统更新:bulid0220 1、[安全]进一步加固整站源码的安全性; 2、[新增]腾讯云短信; 3、[新增]文档属性支持自定义配置; 4、[新增]批量取消审核文档的功能; 5、[新增]下载模型的文件服务器名可以快捷设置点选; 6、[新增]权限组增多一项管理员发布文档默认是审核或待审核; 7、[新增]友情链接分组; 8、[新增]支持第二套会员中心模板; 9、[新增]后台皮肤主题色配置; 10、[新增]后台站内通知; 11、[新增]积分管理,提前布局积分逻辑,以便后续扩展; 12、[优化]发布/编辑文档的Tag常用标签选择; 13、[优化]移除后台功能开关入口,更换位左侧菜单的更多功能入口; 14、[优化]文档页的点击数标签可以在内页重复调用显示; 15、[优化]整体后台用户体验与布局; 16、[优化]附件设置新增默认浏览数与下载数的设置; 17、[优化]自定义变量的名称为空时,就不保存入数据库;
### 回答1: TP5.0.24 是一个开源框架,其中提供了多语言支持功能。然而,有时候在使用TP5.0.24进行开发时,我们可能会遇到多语言不生效的问题。 造成多语言不生效的原因可能有以下几种: 1. 配置错误:首先,我们需要确保在应用配置文件(config/app.php)中设置了正确的语言包路径。一般情况下,我们会将语言包文件存放在resource/lang目录下,并在配置文件中指定相应的路径。 ``` 'lang_switch_on' => true, 'lang_detect_var' => 'lang', 'lang_list' => ['zh-cn', 'en-us'], 'default_lang' => 'zh-cn', 'pathinfo_depr' => '/', 'allow_lang_list' => ['zh-cn', 'en-us'], ``` 2. 语言包文件错误:其次,我们需要确保语言包文件存在,并且文件名符合TP5语言包命名规范。通常情况下,一个语言包文件包含一个数组,数组的键值对表示相应的语言项和对应的翻译内容。 ``` <?php return [ 'hello' => '你好', 'welcome' => '欢迎', ... ]; ``` 3. 语言切换错误:最后,我们需要确保在应用中正确地切换语言。可以通过URL传递参数、Cookie、Session等方式进行语言切换,具体的实现方式与项目需求相关。 通过检查以上问题并逐一解决,我们就可以解决TP5.0.24多语言不生效的问题。如果以上步骤都已检查无误而仍然无法解决问题,可能是其他代码或配置问题导致的,可以进一步检查和排除。如果实在无法解决,我们可以参考官方文档或者在TP5的开源社区中寻求帮助。 ### 回答2: 在TP5.0.24中,多语言不生效可能有以下几个原因: 1. 未正确配置语言文件路径:TP5.0.24采用了新的语言文件路径配置方式,需要在应用的`config`目录下的`app.php`文件中配置正确的语言文件路径,确保语言文件存在。 2. 语言文件编码不一致:如果语言文件的编码格式与应用的编码格式不一致,会导致多语言不生效。请确保语言文件的编码格式和应用的编码格式匹配。 3. 语言包名称设置问题:在应用的`config`目录下的`app.php`文件中,需要设置`lang_switch_on`为`true`来启用语言包功能,同时需要设置`default_lang`为默认语言包的名称。检查是否正确设置了这两个参数。 4. 缓存问题:多语言不生效可能是由于缓存问题导致的,解决方法是清除应用的缓存,在应用的根目录下执行`php think clear`命令清除缓存。 5. 使用语言变量时的写法问题:在应用代码中使用多语言时,要使用`lang()`函数,同时确保语言包文件中存在要使用的语言变量。 通过检查以上几个方面,可以解决TP5.0.24多语言不生效的问题。如果仍然无法解决,可以考虑更新应用到最新版本,或在官方文档、论坛等渠道寻求进一步帮助。 ### 回答3: 在使用TP5.0.24开发多语言功能时,如果发现多语言不生效,可能有以下几个可能的原因: 1. 配置错误:首先,确保在应用的`config`文件夹下的`app.php`文件中,`default_lang`配置项的值正确设置为你所需要的默认语言。其次,在同一个文件中,确保`lang_switch_on`配置项值为`true`,以启用语言切换功能。另外,检查`lang_list`配置项的值,确保包含了你需要支持的语言列表。 2. 语言包文件问题:多语言功能需要将不同语言的翻译内容存储在语言包文件中。确保你的应用的`lang`文件夹下,已经创建了对应语言语言包文件夹,并在其中创建了用于存放不同语言翻译的PHP文件(如以语言代码为文件名的文件)。 3. 错误的语言切换参数:在切换语言时,确保参数的值正确。在URL中传递`lang`参数或使用`Cookie`进行语言切换时,参数的值需要与你应用中提供的语言代码一致。 以上是一些常见的导致TP5.0.24多语言不生效的原因,希望能对你有所帮助。如果问题仍然存在,建议检查代码中的相关部分,如控制器、视图和配置等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值