【问题标题】:codeigniter lang->load (ERROR)codeigniter lang->load(错误)
【发布时间】:2017-01-25 09:46:46
【问题描述】:

我正在使用最新的 codeigniter 3.1.3

有如何使用语言的说明 https://www.codeigniter.com/userguide3/libraries/language.html#handling-multiple-languages

$idiom = $this->session->get_userdata('language');
$this->lang->load('error_messages', $idiom);  --> gives ERROR (home_view line 14)
$oops = $this->lang->line('message_key'); 
echo $oops;

但是如果我写那几行代码我会得到以下错误:

遇到了 PHP 错误

严重性:警告

消息:preg_match() 期望参数 2 是字符串,给定数组

文件名:core/Lang.php

行号:109

回溯:

文件:.../application/views/home_view.php 线路:14 功能:加载

文件:.../controllers/Home.php 线路:14 功能:查看

文件:.../project/index.php 线路:315 函数:require_once

如果我删除

$idiom = $this->session->get_userdata('language');
$this->lang->load('error_messages', $idiom);  --> ERROR (home_view 

并放入autoload.php

$autoload['language'] = array('error_messages');

一切都很好。

但我不想自动加载所有语言文件,因为我不知道用户是否需要它们。

有人可以帮忙吗?

谢谢

【问题讨论】:

  • 你设置会话了吗..
  • 检查您的会话数据是否为数组,因此请转换为字符串或从会话中获取特定数据
  • 好吧,谢谢这是会话问题

标签: php codeigniter localization


【解决方案1】:

你可以这样实现。使用$this->session->userdata('item_name')访问会话变量。

$idiom = $this->session->userdata('language');
$this->lang->load('error_messages', $idiom);
$oops = $this->lang->line('message_key'); 
echo $oops;

$this->config->set_item('language', $idiom );//dynamically set language
$this->lang->load('error_messages');//load lang file

$oops = $this->lang->line('message_key'); 
echo $oops;

希望对你有帮助。

更多信息请看这里https://codeigniter.com/userguide3/libraries/sessions.html

【讨论】:

  • 这是会话的问题。会话数据未正确设置
  • 使用userdata()而不是get_userdata()获取会话变量。
  • 请参阅答案。希望您能正确获取变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
  • 2016-10-24
  • 1970-01-01
  • 2020-03-28
  • 2011-08-11
  • 1970-01-01
相关资源
最近更新 更多