$lang = 'ru'; // this language will be used if there is no any lang information from useragent (for example, from command line, wget, etc...
if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
$tmp_value = $_COOKIE['language'];
if (!empty($tmp_value)) $lang = $tmp_value;
switch ($lang)
{
case 'ru':
$config['language'] = 'russian';
setlocale(LC_ALL,'ru_RU.UTF-8');
break;
case 'uk':
$config['language'] = 'ukrainian';
setlocale(LC_ALL,'uk_UA.UTF-8');
break;
case 'foo':
$config['language'] = 'foo';
setlocale(LC_ALL,'foo_FOO.UTF-8');
break;
default:
$config['language'] = 'english';
setlocale(LC_ALL,'en_US.UTF-8');
break;
}
11 回答
朋友,不用担心,如果您在codeigniter中安装了任何应用程序,并且您想要添加一些语言包,请按照以下步骤操作:
1. 在文件夹application / language / arabic中添加语言文件(我在ci中使用sma2添加arabic lang)
2. 转到application / modules / settings / views / setting.php中名为
setting.php
的文件 . 在这里你可以找到阵列现在保存并运行应用程序 . 它工作得很好 .
你见过CodeIgniter's Language library吗?
在你的情况下......
你需要在
application/language/polish
内创建一个polish_lang.php
和english_lang.php
然后在该文件中创建您的密钥(例如
$lang['hello'] = "Witaj";
然后将其加载到您的控制器中,如
$this->lang->load('polish_lang', 'polish');
然后获取类似_1863537的行 - 只需将此函数的返回值存储在变量中,以便在视图中使用它 .
重复英语和您需要的所有其他语言的步骤 .
另外,为了将语言添加到会话中,我将为每种语言定义一些常量,然后确保在config / autoload.php中自动加载会话库,或者在需要时加载它 . 将用户所需的语言添加到会话中:
然后你可以随时 grab 它:
在控制器中,在创建构造函数时添加以下行
即,之后
父::控制器();
添加以下行
使用以下函数创建帮助文件lang_translate_helper.php并将其放在目录system \ application \ helpers中
对于每种语言,在system \ application \ languages下创建一个语言缩写的目录,如en,nl,fr等
在上面(各自)目录中创建语言文件,该目录将包含$ lang数组保持对label => language_value,如下所示
nl_site_lang.php
en_site_lang.php
您可以根据需要以不同的方式存储同一语言的多个文件,例如,如果您需要单独的语言文件来管理后端(管理员部分),您可以在控制器中使用它作为$ this-> lang-> load('nl_admin',' NL');
nl_admin_lang.php
最后以所需语言打印标签,访问下面的标签
label('welcome',$ this);
要么
label('hello word',$ this);
请注意hello&word中的空格,你可以像这样使用它:)
如果语言文件中没有定义标签,它只会将它传递给您传递给功能标签的内容 .
我是Randell的第二个回答 .
但是,可以始终集成GeoIP,例如http://www.maxmind.com/app/php或http://www.ipinfodb.com/ . 然后,您可以使用codeigniter会话类保存结果 .
如果要使用ipinfodb.com api您可以将ip2locationlite.class.php文件添加到codeigniter应用程序库文件夹,然后创建模型函数以执行应用程序所需的任何geoip逻辑,例如:
为了更容易使用CI更新了这个,所以你可以使用
并翻译文本
如果你想在标签内扭曲它,那么使用可选参数
这将输出
好好阅读http://ellislab.com/codeigniter/user-guide/helpers/language_helper.html
在管理实际文件时,事情可能会非常容易地失去同步,除非您启动了一个名为String的免费测试服务,它允许您轻松跟踪您的语言文件,并与翻译人员协作 .
您可以导入现有的语言文件(PHP数组,PHP定义,ini,po或.strings格式),也可以从头开始创建自己的部分,并直接通过系统添加内容 .
字符串是完全免费的,所以请检查出来告诉我们什么您认为 .
它实际上也 Build 在Codeigniter上!查看测试版http://mygengo.com/string
我使用过Wiredesignz的MY_Language课程取得了巨大的成功 .
我刚刚在github上发布它,因为我似乎无法在任何地方找到它的痕迹 .
https://github.com/meigwilym/CI_Language
我唯一的更改是根据新的v2更改将类重命名为CI_Lang .
关注这个https://github.com/EllisLab/CodeIgniter/wiki/CodeIgniter-2.1-internationalization-i18n
它简单明了,还查看了文件@ http://ellislab.com/codeigniter/user-guide/libraries/language.html
它的方式比简单
我在config.php中使用这样的代码:
....然后我正在使用CI的内部机制
哦,差点忘了!在视图中我使用按钮,用语言设置cookie'语言',由用户优先 .
因此,首先此代码尝试检测用户的useragent(浏览器)中设置的“preffered language” . 然后代码尝试读取cookie'语言' . 最终 - 切换为CI应用程序设置语言
你可以做这样的功能