Php 如何制作多语言网站
有谁能告诉我如何用PHP和MySQL创建一个动态的多语言网站吗?我对此一无所知。我在谷歌上搜索,没有找到任何好的解决方案Php 如何制作多语言网站,php,mysql,internationalization,multilingual,Php,Mysql,Internationalization,Multilingual,有谁能告诉我如何用PHP和MySQL创建一个动态的多语言网站吗?我对此一无所知。我在谷歌上搜索,没有找到任何好的解决方案 有谁能为我提供一个循序渐进的指南吗?如果可能,制作一个多语言网站的演示。或者请让我参考任何解释其详细信息的链接。我经常使用的解决方案是创建一个包含所有可能消息的数据库表。对于每条消息,我都使用一个代码(缩写)来查找它。例如: lang id message en login Login en lostpass Lost your pass
有谁能为我提供一个循序渐进的指南吗?如果可能,制作一个多语言网站的演示。或者请让我参考任何解释其详细信息的链接。我经常使用的解决方案是创建一个包含所有可能消息的数据库表。对于每条消息,我都使用一个代码(缩写)来查找它。例如:
lang id message
en login Login
en lostpass Lost your password?
de login Anmelden
de lostpass Paswort vergessen?
nl login Aanmelden
nl lostpass Wachtwoord vergeten?
使用MySQL查询查找翻译通常足够快,但您也可以将所有消息放在一个数组中,并在加载脚本时将其加载到内存中。用户应该总是能够设置他们喜欢的语言,不要盲目依赖Web浏览器所设置的语言标题。
<强>简短回答:没有简短的答案,因为有很多的变量要考虑,还有大量的工作要做。所以
长答案:我会尽可能地把它细分,但对于像你这样广泛的问题,没有一个“适合所有人”的答案 首先,手头任务的变量:- 对于DB内容,我最好的建议是提出一些实字段命名模式并坚持下去。例如,我将
、\u en
或\u es
附加到数据库的所有语言相关字段中。这样,我就可以使用诸如\u ca
之类的表达式访问正确的内容$row[“title\u$lang”]
- 对于include文件,文件命名约定也是最合理的方法。在我的例子中,我的文件名以
,.en.php
等结尾。我的include调用看起来像.ca.htm
include(“some filename.$lang.php)
- 有时,您会直接从PHP代码中吐出小块文本(例如,在标记表的标题时)。您可以使用每种语言的包含文件来定义“块”“使用相同键的数组,或者像Geert建议的那样使用DB表。前一种方法需要更少的工作来开发,后一种方法需要更少的工作来维护(特别是如果你不是一个人工作的话)
function translatedURI($new_lang) {
return str_replace("lang=$lang", "lang=$new_lang", "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
}