- 论坛徽章:
- 0
|
在构建一个智能营运‘底盘’(主要特征:1. 方便的多语言扩张支持
2. 用户角色权限系统
3. 移动端/PC端/Pad等自适应
4. 基本/多层次数据模块通过配置自动生成
5. 少量特殊UI/Logic形成模块自动引入。。。
)的过程中,采用了简洁高效的perl MVC框架Dancer,在涉及到浏览器语言自动识别时遇到问题:
对于简体中文,浏览器自动识别出来为zh-cn,可是如果po文件写成zh-cn.po,Dancer居然无法识别到??
又结合繁体情况下,有zh-hk/zh-tw,对于初期两区域用户不是特别为主的情况下是否只提供一种繁体版本?
基于此,想到一个alias(in Dancer: lugi::Lexicon)方法,解决了此问题(若觉得不够格调,欢迎拍砖 ):
sub custom_alias {
my @languages = @_;
my %alias=('zh-cn'=>'cn','zh'=>'cn','zh-tw'=>'hk','zh-hk'=>'hk');
my %ul;
my(@output_languages);
foreach(@languages) {
my $lang = $alias{$_}||$_;
push @output_languages, $lang unless($ul{$lang});
$ul{$lang}++;
}
return ( @output_languages );
}
其中还遇到一个小问题,本想用big5表示繁体,可是居然也不识别(难道仅允许两字母?),不再细究,改成hk搞定!
再次感叹下Dancer的大道至简,基于智能和完全DIY之间,想动个地方,开销不是那么大,喜欢!
|
|