我在一个基于 Web 的教育网站工作,我们使用 Perl、MySQL 5、Apache 和 Template Toolkit。我们计划在我们的网站中引入对多语言的支持。
我们做了什么
如果我们的模板文件中有一个类似于 Courses Main Page<\h1> 的选项卡名称,我们已将其转换为
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<h1>[% glossary.$language.courses_main_page %]<\h1>
$language 获取用户登录时选择的值。
我们有一个表来维护我们的 Mysql DB 中的这些数据:
CREATE TABLE
translation
(english
varchar(255) NOT NULL,
language
varchar(255) NOT NULL,translation
varchar(2000) NOT NULL, ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='将元素文本翻译成外语'
在 MySQL 的连接函数中,我提供了 'SET character_set_results=NULL'。我尝试使用 utf8,但仅限于某些选项卡的问题已增加到许多部分。
因此,一旦用户登录系统,我们就获取所有翻译并将其存储在 PERL 哈希中并缓存它。我们将此哈希传递给将替换该值的模板文件。
问题: á 和 é 等重音符号被一些不同的字符集符号取代。
例如:在前端,我们看到 Cursos Página Principal 的“Cursos Página Principal”。
它与htmlentities 和 é(e 急性)中给出的解决方案非常相似
谁能告诉我如何在 Perl 中实现相同的目标。