【发布时间】:2013-03-13 08:25:18
【问题描述】:
在我开始之前,我想提一下,我知道有很多关于多语言功能的答案,但我只是没有找到我希望从我的小搜索中找到的答案。
我有一个页面(例如 about.php),其中所有内容都是 html,有许多标题标签、p 标签、列表项等。内容是“静态的”,这意味着它不是来自数据库,我想通过单击链接(英文或法文)对其进行翻译。
我遵循了一些教程和示例并提出了与this 示例非常相似的内容,但我关心的是页面的内容。我想说的是: 假设我的页面结构如下所示:
<html>
<body>
<ul>
<li><a href="index.php"><?php echo $lang['HOME']; ?></a></li>
<li><a href="about.php"><?php echo $lang['ABOUT']; ?></a></li>
<li><a href="?lang=fre">french</a></li>
</ul>
<h1><?php echo $lang['HEADING']; ?></h1>
<p><?php echo $lang['PARAGR']; ?></p>
<p><?php echo $lang['ANOTHER_PAR']; ?></p>
</body>
</html>
导航菜单的值可以很容易地存储在 $lang 数组中并每次回显特定的值,但这也是最好(或更有效)的方法和页面内容吗?我是否必须在 $lang 中放入我所有的标题、段落和列表等,或者这可以通过更好的方式轻松完成?如果某些段落里面的文字太多怎么办?等等
希望这有意义。
P.S 我也在考虑制作两个不同的文件,比如 about_eng.php 和 about_fre.php,我分别拥有英语和法语的所有 html 内容,并使用一个简单的 if 语句来检查每次选择哪种语言和包含正确的文件
【问题讨论】:
-
我相信第一种方法更好。在第二种方法中,您需要保持对这两个文件的更改,这需要额外的工作。你不应该担心文本,因为 php 可以很好地处理它。希望这会有所帮助:)
-
我认为在这两种情况下所做的任何更改都将花费多余的精力,因为在第一种情况下,必须在英语版本和法语版本中进行更改。但是,第一种方法也是最佳实践吗???
-
我使用 Array 方法翻译了我的页面。它工作正常。但还有其他方法。你听说过Gettext吗? en.wikipedia.org/wiki/Gettext
-
在第一种方法中,您将要做的不是冗余。文本,您必须根据语言进行更新。我的意思是,如果您决定将来更改 html,则必须在所有页面上进行冗余。此外,使用任何语言翻译器都无济于事,因为人类语言是上下文相关的,并且准确地映射它仍在开发中。
-
好的,所以我想我将不得不继续第一个。还有其他一些更好/更受欢迎的方法吗?因为这看起来还是有点“痛苦”。 @Adam Brown:我从未使用过它,但我觉得它与 google-translate 的作用相同,我对得到的结果并不满意。
标签: php internationalization translation multilingual