私は、Perl、MySQL 5、Apache、およびTemplateToolkitを使用しているWebベースの教育Webサイトで働いています。複数の言語のサポートを当社のWebサイトに導入する予定です。
私たちがしたこと
テンプレートファイルにCoursesMainPage <\ h1>のようなタブ名がある場合、それを次のように変換しました。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<h1>[% glossary.$language.courses_main_page %]<\h1>
ここで、$ languageは、ユーザーがログインするときに選択する値を取得しています。
このデータをMysqlDBに保持するためのテーブルがあります。
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の接続機能では、「SETcharacter_set_results=NULL」を提供しています。utf8で試しましたが、一部のタブに限定される問題が多くのセクションで増加しました。
そのため、ユーザーがシステムにログインするとすぐに、すべての翻訳を取得してPERLハッシュに保存し、キャッシュします。このハッシュをテンプレートファイルに渡し、値を置き換えます。
問題:áやéなどの鋭いアクセント付き文字が、いくつかの異なる文字セット記号に置き換えられています。
例:フロントエンドでは、CursosPáginaPrincipalの「CursosPáginaPrincipal」が表示されています。
これは、 htmlentitiesおよびé(e急性)で与えられた解決策と非常によく似ています。
Perlで同じことを実現する方法を教えてもらえますか?