您基本上有 3 种选择,每种选择各有利弊:
1:正如 Dainis Abols 建议的那样,将其放入数据库中-取决于您的服务器的设置方式,这可能是最慢、最繁重的系统路线(尽管这都是相对的,除非您获得数百万查看一个小时)。
2:使用PHP库文件;我倾向于将库文件用于字段标签(名字、姓氏等)等小型单个项目,并将 CMS 管理的 HTML 等较大的内容存储在数据库中……这减少了数据库调用,但为您加载的每个字典增加了一点开销变成脚本<?php $this->page->dictionary->product = Dictionary::load("product"); ?>
之类的东西。
3:最后,我个人认为值得看看 PHP 的gettext实现,尽管您需要像poedit这样的东西来维护 PO(压缩翻译文件)。这使您能够非常快速地维护翻译,因为您只需将文本包装在一个简单的下划线函数中即可在 PHP 文档中输入文本:
例如<?= _("Hello World"); ?>
然后,您可以在压缩的 PO 文件中维护翻译 - 它非常高效(可能比使用原生 PHP 文件更快)但是在自然语言的细微差别方面确实存在一些缺点。
例如,如果您有一个字段标签“标题” <?= _("Title"); ?>
,那么所有的实例都_("Title")
将以相同的方式翻译。
这意味着您不能将“Title”既用作人名的表单标签又用作书名;例如,在德语中,您可能希望将Anrede用于一个“标题”,将Titel用于另一个。
虽然,要真正使用gettext
您可能需要运行自己的服务器 - 当您更改 PO 文件时可能需要重新启动 Apache:\
至于搜索引擎,它们会从您的代码中读取输出,因此您使用哪种方法执行翻译并没有太大区别,但理想情况下,您可能希望保持 URL RESTful,因此无论您是否包含 PHP 字典,调用数据库或使用 gettext (或稍后将您的想法从一种更改为另一种),您将能够使用类似的方式将语言映射到 URL,http://www.mysite.com/en_gb/widgets
这样您就可以在不更改 URL 的情况下更改程序的工作方式。