您基本上有 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") 的所有实例都将以相同的方式翻译。
这意味着您不能将“书名”既用作人名的表单标签又用作书名;例如,在德语中,您可能希望将 Anrede 用于一个“标题”,而将 Titel 用于另一个。
虽然,要真正使用 gettext,您可能需要运行自己的服务器 - 更改 PO 文件时可能需要重新启动 Apache:\
至于 搜索引擎 他们从您的代码中读取输出,因此您使用哪种方法执行翻译并没有太大的区别,但理想情况下您可能希望保持 URL RESTful因此,无论您是包含 PHP 字典、调用数据库还是使用 gettext(或者稍后将您的想法从一种更改为另一种),您都可以使用 http://www.mysite.com/en_gb/widgets 之类的方式将语言映射到 URL,这样您就可以更改 如何程序在不更改 URL 的情况下工作。