这篇博文是关于语言类的,主要是关于语言类的用法。语文课本身的内容不多。比较简单,看一会代码就明白了它的用途,语言类提供了一些获取不同语言的语言文件和文本的方法,用于国际化。下面我们介绍多种语言的用法。在您的CodeIgniter系统目录中,有一个语言子目录,其中包含一系列英文语言文件。system/language/english/目录中的这些文件定义了一些通用消息、错误消息以及CodeIgniter框架的各个部分使用的其他常用词或短语。如果需要,您可以创建自己的语言文件以提供应用程序错误和其他消息,或将来自内核的消息翻译成其他语言。您添加的翻译消息或附加消息应放在application/language/目录中,每个不同的语言都有一个子目录(例如,“法语”或“德语”)。CodeIgniter框架自带一套“英文”语言文件,其他不同语言可以在CodeIgniter框架官网的翻译库中找到。每种语言都有一个独立的目录。当CodeIgniter加载语言文件时,它首先加载system/language/目录中的文件,然后通过加载application/language/目录中的文件来覆盖它。如何处理多种语言?见下图:如果你想让你的应用支持多种语言,你需要在application/language/目录下提供不同语言的文件,然后在application/config/config.php配置文件中指定默认语言。application/language/english/目录可以包含您的应用程序需要的额外语言文件,例如错误消息。每种语言对应的目录应该包含从翻译库中获取的核心文件,或者自己翻译,也可以添加你的程序需要的其他文件。您应该将正在使用的语言保存到会话变量中。语言文件示例:system/language/english/...email_lang.phpform_validation_lang.php...application/language/english/error_messages_lang.phpfrench/...email_lang.phperror_messages_lang.phpform_validation_lang.php...切换语言$idiom=$this->session->get_userdata('language');$this->lang->load('error_messages',$idiom);$oops=$this->lang->line('message_key');CodeIgniter的语言类为您的应用程序提供了一种简单轻量级的多语言实现方式,它并不是我们通常所说的国际化和本地化的完整实现。我们可以给每种语言一个别名,一个更通用的名称,而不是使用国际标准的缩写名称,如“en”、“en-US”、“en-CA-x-ca”。我们如何使用语言课程?1.创建语言文件语言文件的名称必须以lang.php结尾。例如,如果你想创建一个包含错误信息的文件,你可以将它命名为:error_lang.php。(最好在每个文件中使用一个公共前缀,以避免与其他文件中的相似名称发生冲突。例如,如果您正在创建错误消息,则可以使用错误前缀。)在这个文件中,可以在每一行中给一个名为$lang的数组赋一个字符串,例如://Example:$lang['language_key']='Thisistheinformationtobedisplayed';//Specific:$lang['error_email_missing']='邮箱地址错误';$lang['error_url_missing']='URL地址错误';$lang['error_username_missing']='用户名不能为空';2.加载语言文件在使用语言文件之前,您必须先加载它。您可以使用以下代码:$this->lang->load('filename','language');其中filename是你要加载的语言文件名(不带扩展名),language是你要加载的语言(如,English)。如果没有第二个参数,将使用application/config/config.php中设置的默认语言。您还可以通过将语言文件数组传递给第一个参数来同时加载多个语言文件。$this->lang->load(array('filename1','filename2'));3.读取语言文本当你的语言文件被加载后,你可以通过以下方法访问任何一行语言文本:$this->lang->line('language_key');注意:其中language_key参数是你要显示的文本行对应的数组的键名。如果您不确定要读取的文本行是否存在,您也可以将第二个参数设置为FALSE以禁用错误记录://此方法只是返回文本行而不是显示它。$this->lang->line('misc_key',FALSE);如果你发现你需要在整个应用程序中使用一个语言文件,你可以让CodeIgniter在系统初始化时自动加载该语言文件。您可以打开application/config/autoload.php文件并将语言放入autoload数组中。语言类的解释那么多,多语言程序的开发在国际化的今天也是必不可少的。CI框架的语言类目前非常实用。最后贴上整个语言Lang.php文件的源码(注释版):load($value,$idiom,$return,$add_suffix,$alt_path);}返回;}$langfile=str_replace('.php','',$langfile);如果($add_suffix===TRUE){$langfile=preg_replace('/_lang$/','',$langfile).'_lang';}$langfile.='.PHP';if(empty($idiom)OR!preg_match('/^[a-z_-]+$/i',$idiom)){$config=&get_config();$成语=emp泰($配置['语言'])?'英语':$config['语言'];}if($return===FALSE&&isset($this->is_loaded[$langfile])&&$this->is_loaded[$langfile]===$idiom){return;}//加载基础文件,任何其他语言文件都可以覆盖它$basepath=BASEPATH.'语言/'。$成语。'/'。$语言文件;如果(($found=file_exists($basepath))===TRUE){include($basepath);}if($alt_path!==''){$alt_path.='language/'.$成语。'/'。$语言文件;如果(file_exists($alt_path)){包含($alt_path);$发现=真;}}else{foreach(get_instance()->load->get_package_paths(TRUE)as$package_path){$package_path.='language/'.$成语。'/'。$语言文件;如果($basepath!==$package_path&&file_exists($package_path)){包括($package_path);$发现=真;休息;}}}if($found!==TRUE){show_error('无法加载请求的语言文件:language/'.$idiom.'/'.$langfile);}if(!isset($lang)OR!is_array($lang)){log_message('error','语言文件不包含数据:language/'.$idiom.'/'.$langfile);如果($return===TRUE){返回数组();}返回;}if($return===TRUE){return$lang;$this->is_loaded[$langfile]=$idiom;$this->language=array_merge($this->language,$lang);log_message('info','加载的语言文件:language/'.$idiom.'/'.$langfile);返回真;}/***从一个已经加载的语言文件中,通过行名获取该语言的一行文本*/publicfunctionline($line,$log_errors=TRUE){$value=isset($this->language[$line])?$this->语言[$line]:FALSE;if($value===FALSE&&$log_errors===TRUE){log_message('error','找不到语言行"'.$line.'"');}返回值;}}
