-1

我在一些几乎相同的 php web 应用程序中工作,除了内容数据库、文本和主题。让我们考虑一些类似的可能是 stackexchange 网站。

目标是在同一个存储库中只维护一个项目,所以如果我引入一个新特性,我只需要实现一次,而不是针对每个站点。

对于主题和数据库来说不是问题,但对于我不知道如何继续的文本(现在文本被硬编码在 php 文件中)。

我在 SO 中进行了谷歌搜索和搜索,我发现了一些类似的问题,其中答案是使用 gettext for i18n。但就我而言,它并不完全是 i18n,因为有些网站使用相同的语言,但文本不同。

如何存储这些字符串?

4

2 回答 2

1

例如,您可以在每个数据库中创建一个名为“texts”的表,其中包含该应用程序的特定文本。由于您已经必须为每个应用程序连接不同的数据库,因此您可以轻松实现始终获取SELECT value FROM {current_database}.texts WHERE key = "headertext"左右。

这样,您的代码可以保持不变,只有数据库彼此不同。

更新:当然 i18n 本地化也很容易以这种方式实现,通过在texts包含本地化值的表中添加另一列(如endenl等)

于 2012-10-19T14:57:20.993 回答
1

有很多方法可以完成这项工作。我有一个合适的项目场景,我以不同的方式归档不同的东西:

  • 一个项目的所有实例都来自同一个 SVN 文件夹。
  • 每个实例都有自己的配置文件,它不包含在 SVN 中。

除此之外,每个项目都有自己的:

  • 文本库(标签等)
  • 模板集
  • 内容

我使用自己的翻译系统在我的实例上分发文本库。您可以使用一些 php 的内置函数:http: //verens.com/2008/04/03/translation-in-php/

模板集只是由一个为模板引擎设置根目录的配置变量完成的:./templates/instance-x/...

内容也可以由配置变量引用。就我而言,我有一个商店系统,它使用一个产品库,所有实例都使用相同的产品库。要使产品对公众可用/可见,您必须将其分配给一个类别。类别和实例相关。

类别有一个特定于实例的 ID(在我的例子中是shop_id)。

于 2012-10-24T11:22:09.317 回答