我想在PHP中开发一个多语言页面,例如英语/德语/日语..所以当我点击德语时,页面语言将更改为德语,然后单击英语它会更改成英文。请指导我这样做。在此先感谢......在PHP中使用多语言创建网页
回答
您可以使用会话来存储用户设置的语言。
$_SESSION["lang"] = "en";
$_SESSION["lang"] = $_GET["lang"];
// or this way, then you can do example.com/?lang=en
然后用翻译数组创建一个文件。
$lang["en"]["welcome"] = "Welcome to the site";
然后另一个文件可以有德语翻译
$lang["de"]["welcome"] = "Willkommen auf der Webseite";
然后你只是调用$ LANG阵列与会话
echo $lang[$_SESSION["lang"]]["welcome"];
这就是一个简化版本,你也可以使用对象来存储翻译。 但我不建议使用数据库来存储翻译,因为这涉及到一个非常大的SELECT或非常非常多。
在最后的回声你不是指:$ lang [$ _ SESSION ['lang'] ] ['welcome']; – 2009-04-22 11:47:52
其实我需要改变该页面的所有内容,就像 http://www.google.co.in/ – Sakthivel 2009-04-22 11:48:36
@sakthiopr网站通常以这种方式翻译(或者某种方式类似这只是一个字符串的集合,需要在某个位置输出 – 2009-04-22 11:50:17
我个人翻译我的全部意见。因此,你必须像一个文件结构:
application/
someScript.php
views/
de/
someView.php
en/
someView.php
models/
someModel.php
然后由奥拉维尔的建议存储在一个会话变量的语言,做这样的事情。
session_start(); //dont forget to call this somewhere
$_SESSION['lang'] = 'en';
//and then in somewehere else:
include 'views/'.$_SESSION['lang'].'/someView.php'; //or whatever method is used to include views.
编辑
你应该从你的脚本单独的输出结果。因此,你将有一个脚本,做一些脚本的东西,就像得到确认当期的UNIX时间戳,这将是someScript.php在上面的例子:
//someScript.php
$timestamp = time();
现在,我们可以添加所有的直接输出低于此,但会很难维护,所以我们在不同的文件中输出,这里是someView.php文件。所以someView.php在“恩”文件夹是:
<html>
<head>
<title>Currect UNIX timestamp!</title>
</head>
<body>
<p>The current UNIX timestamp is: <?php echo $timestamp; ?> seconds</p>
</body></html>
,并在“德”文件夹这将是practicly相同的文件,但在德国的所有文本。
现在我们需要做的是包括在我们someScript.php这些输出文件因此,我们将下面的行添加到脚本的底部:
include '../views/'.$_SESSION['lang'].'/someView.php';
你应该阅读更多关于MVC在这里:http://www.onlamp.com/pub/a/php/2005/09/15/mvc_intro.html
注意:这个例子并不严格的MVC,但这应该给你的想法。
我不明白你请详细解释一下 – Sakthivel 2009-04-22 11:55:15
但是,当你需要编辑一个视图时,你必须编辑每个视图语言?这听起来不太实际 – 2009-04-22 12:15:30
大多数框架都有帮助你的帮手。对于初学者,这里是Codeigniter's和cakePHP's。
我们使用http://php.net/manual/en/intro.gettext.php的方式。工作正常,我们都在其他项目(非PHP项目)中使用http://www.gnu.org/software/gettext/manual/gettext.html。所以很容易开始。
我认为正确的方法取决于谁翻译文本!如果是开发人员,您可以为每种语言提供自己的视图。但是如果你有其他人翻译文本,像gettext(翻译是在一个专门的文件,并有工具与这类文件)正确的选择!
通常你需要一个支持UTF-8的网站。这是通过文件的头文件设置的。 (并可以通过header()函数进行设置)。
然后我猜你想拥有英文和中文网站。然后我建议有一个语言文件。也许是一个数组或对象,用于存储要在网站上显示的段落。然后你只是打印出这一段。
然后要知道用户要求什么语言,我会使用$ _SESSION存储用户选择的语言。
那么你的语言文件看起来是这样的
$lang["en"]["Welcome"] = "Welcome to the site";
然后是中国欢迎文件会在你想打印出来的位置,这样的事情
$lang["ch"]["Welcome"] = "歡迎";
然后。你会这样做
echo $lang[$_SESSION["lang"]]["Welcome"];
你可以在任何你想要的字符集中键入HTML的内容部分。请确保set the charset and content encoding properly。例如,将其设置为UTF-8以获取简单的unicode。
导轨处理它well。您可能想要查看有关如何执行此操作的想法。
奇怪的是,许多PHP开发人员似乎认为所有自然语言都具有相同的语法。制作一个没有参数的翻译框架是不可能的。虽然字符串$lang['welcomeTo'] $sitename
可能会正确翻译大多数语言(欢迎使用stackoverflow),但土耳其语无法正常翻译,例如它应该是$sitename $lang['welcomeTo']
(stackoverflow'a hos geldiniz)或德语,任何一种方式都是可能的(请注意, Sie willkommen)。当你尝试用多个变量翻译句子时,情况会变得更糟。
唯一的一个选择是使用参数化的翻译(比如:函数)
Language::getCurrentLanguage()->translate('welcomeTo', array('sitename' => $sitename));
# Translation file for english (configfile-style):
welcomeTo=Welcome to $sitename
# Translation file for turkish:
welcomeTo=$sitename'a hos geldiniz
# Translation file for german:
welcomeTo=Willkommen auf $sitename
# Or
welcomeTo=$sitename heißt sie willkommen
简而言之:如果你想真正的国际化,使用功能来检索您的翻译,而不是变量。你可能也想看看php的intl扩展。
构建多语言网站的一种有效方法是不使用硬编码标签,而是从适当的语言文件中检索它们,因为基本上你需要做的是在网站上定位不同的用户。如果显示的数据存储在数据库中,则可能应考虑添加一些存储不同语言翻译的数据库表。例如,要使用C#中的一些工作,可以使用资源文件存储标签值。
正如格里高尔所说; gettext是我的专业方式...
这里是一个很好的文章link
但我想补充一些重要的点
I-用这种方法你也会有,如果你创建Windows下一个PO文件中使用的.po和.MO文件,你不能在linux下使用它。或者在Linux下创建的.po文件不能在Windows下使用。
II-Linux可以创建.po文件本身,而是在窗口我建议你使用一个程序,如poEdit的(其中U可以从它的网站上找到它:http://www.poedit.net/)
III-某些地区有性格问题。但是我不记得他们是哪一个?:(
- 1. 创建PHP语言网页
- 2. 创建多语言翻译网页
- 3. 在PHP中构建多语言(多语言)网站的自定义404页面
- 4. 在Umbraco中创建多语言网站
- 5. 创建多语言主页
- 6. 创建多语言网站在magento
- 7. 使用PHP的多语言网站
- 8. 创建一个多语言网站
- 9. 关于创建多语言网站
- 10. 多语言网站主页
- 11. 单页多语言网站只使用CSS和PHP
- 12. PHP多语言网站
- 13. Php多语言网站
- 14. 如何在cakephp 3.2中创建多语言静态网站?
- 15. 如何在Umbraco中创建多语言网站?
- 16. 如何在TWiki中创建多语言主题/页面?
- 17. 多语言网站在php $ _GET错误
- 18. 完整的多语言网站在php
- 19. 在哪里学习创建网站的php语言
- 20. PHP多语言
- 21. 多语言Sitecore 6网页可以为每种语言使用别名吗?
- 22. 我想在多语言的rails网站上创建ruby
- 23. 如何在Android中使用多种语言,如多种语言
- 24. 多语言标识的主页网址
- 25. drupal多语言网站,语言无关的首页
- 26. 多语言网站在codeigniter
- 27. 多语言网站(php和javascript)
- 28. PHP多语言网站xml或数组
- 29. 通过php制作多语言网站
- 30. 多语言网站
要清楚,你自己提供翻译? – Rob 2009-04-22 11:59:36