我正在构建一个使用LAMP和Smarty模板框架的Web应用程序。该网站将有大量的静态内容(关于我们页面,错误提醒,确认电子邮件等...)。
Web应用程序必须支持多种语言。以下方法是否合适?
1)Smarty模板页面(html页面)上的所有静态副本将被调用smarty插件替换,例如{lang file ='about.xml'getTerm ='title'},它返回标题标签的字符串。适当的语言
2)about.xml文件是Web服务器上的xml文档,充当多语言字典。所以它将有xml节点,如
<term value="title">
<en><a href="http://stackoverflow.com"&rt;Stackoverflow</a&rt; is a great site</en>
<fr><a href="http://stackoverflow.com"&rt;Stackoverflow</a&rt; c'est website magnifique</fr>
<ch><a href="http://stackoverflow.com"&rt;Stackoverflow</a&rt; complex looking chinese characters I don't udnerstand</ch>
</term>
<term value="signupmessage">
<en><a href="http://stackoverflow.com"&rt;Stackoverflow</a&rt; great deals!</en>
<fr><a href="http://stackoverflow.com"&rt;Stackoverflow</a&rt; magnifique deals!</fr>
<ch><a href="http://stackoverflow.com"&rt;Stackoverflow</a&rt; complex looking chinese characters I don't udnerstand</ch>
</term>
3)网站的网址结构为http://mywebsite.com/language/index.php
。为此,我的网络服务器将具有符号链接,例如
ln -s ./en ./
以便http://mywebsite.com/en/index.php
指向与http://mywebsite.com/fr/index.php
相同的php页面,但我会检查语言设置的网址。我希望谷歌能为这两个版本的网站编制索引。
这是一个好方法吗? xml是存储不同语言内容的最佳格式,即使它具有htmlentity编码的html标签吗?我忽略了什么吗?
答案 0 :(得分:3)
不确定问题的详细信息,但您可能需要查看Zend_Translate
。
答案 1 :(得分:1)
XML是一种容器格式,使用它并不算太糟糕。除了HTML实体之外,它具有相对人类可读的优点。您可以尝试使用CDATA部分。使用XML的一个优点是,您可以使用DTD验证所有语言都具有所有键的翻译。确保使用UTF-8或UTF-16对文件进行编码,如果将编码放在文件顶部,则可能会有所帮助。我推荐UTF-8。
至于如何加载XML数据并将其合并到页面中,我不知道“聪明”,但整体方法听起来很合理。我能看到的唯一缺点是你必须同时发布所有翻译(很难避免这个问题)。
我注意到的一件事是你使用ch作为中文的语言代码。 You should use zh。这是它的ISO代码。 ch是something else.