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

在Web应用程序必须支持多种语言。是如下方法适当?

1)上的Smarty模板页(HTML页)所有的静态副本将通过调用smarty的插件,如{郎文件=“about.xml” getTerm =“标题”}返回字符串为在标题标签来代替适当的语言

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。要做到这一点,我的web服务器将有符号链接,如 ln -s ./en ./使http://mywebsite.com/en/index.php指向同一个PHP页面http://mywebsite.com/fr/index.php,但我会检查语言设置的URL。我的希望是,谷歌将索引网站的两个版本。

这是一个好办法?是一个XML存储,即使它已经htmlentity编码的HTML标签不同语言的内容的最佳格式?我有没有忽略任何细节?

有帮助吗?

解决方案

不知道你的问题的细节,但你可能想看看的 Zend_Translate

其他提示

XML是一种容器格式和该用途它是不是太糟糕。它拥有的是除了HTML实体相对人类可读的优势。你可以尝试使用CDATA节了点。使用XML这个的一个好处是,你可以使用DTD来验证所有语言都用于所有键翻译。请确保您使用编码的文件UTF-8或UTF-16,如果你把编码在文件的顶部,它可能会有所帮助。我建议UTF-8。

至于你如何加载XML数据,并将其整合到网页中,我不知道“智者”,但总体方法听起来很合理。我能看到的唯一的缺点是,你必须同时释放所有被翻译(难以避免这个问题)。

有一件事我注意的是,使用CH作为中国的语言代码。 你应该使用zh 。这是它的ISO代码。 Ch是别的东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top