2

我正在构建一个使用 LAMP 和 Smarty 模板框架的 Web 应用程序。该网站将有大量静态内容(关于我们的页面、错误警报、确认电子邮件等...)。

Web 应用程序必须支持多种语言。以下方法是否合适?

1) Smarty 模板页面(html 页面)上的所有静态副本都将替换为调用 smarty 插件,例如 {lang file='about.xml' getTerm='title'} 以适当的语言返回标题标签的字符串

2) about.xml 文件是网络服务器上的一个 xml 文档,充当多语言词典。所以它将有xml节点,例如

<term value="title">
   <en>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; is a great site</en>
   <fr>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; c'est website magnifique</fr>
   <ch>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; complex looking chinese characters I don't udnerstand</ch>
</term>
<term value="signupmessage">
   <en>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; great deals!</en>
   <fr>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; magnifique deals!</fr>
   <ch>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; complex looking chinese characters I don't udnerstand</ch>
</term>

3) 网站的 url 结构将是http://mywebsite.com/language/index.php. 为此,我的网络服务器将具有符号链接,例如 ln -s ./en ./ 指向http://mywebsite.com/en/index.php与 相同的 php 页面http://mywebsite.com/fr/index.php,但我将检查 url 的语言设置。我希望谷歌将索引该网站的两个版本。

这是一个好方法吗?xml 是否是存储不同语言内容的最佳格式,即使它具有 htmlentity 编码的 html 标签?我有没有忽略什么?

4

2 回答 2

3

不确定你的问题的细节,但你可能想看看Zend_Translate

于 2009-03-27T20:06:53.233 回答
1

XML 是一种容器格式,使用它并不算太糟糕。除了 HTML 实体外,它具有相对人类可读的优点。您可以尝试为此使用 CDATA 部分。为此使用 XML 的一个优点是您可以使用 DTD 来验证所有语言的所有键都存在翻译。确保使用 UTF-8 或 UTF-16 对文件进行编码,如果将编码放在文件顶部可能会有所帮助。我会推荐 UTF-8。

至于如何加载 XML 数据并将其合并到页面中,我不知道“聪明”,但总体方法听起来很合理。我能看到的唯一缺点是您必须同时发布所有翻译(很难避免这个问题)。

我注意到的一件事是您使用 ch 作为中文的语言代码。 你应该使用 zh。那是它的ISO代码。ch 是别的东西。

于 2009-03-27T20:06:12.423 回答