【问题标题】:Translations for non dynamic data非动态数据的翻译
【发布时间】:2011-08-21 08:32:07
【问题描述】:

我目前正在制作一个网页,其中包含来自数据库(餐厅菜单)的动态内容,其中存储项目名称、价格、yada yada。餐厅通常迎合英语和日语。我在数据库中将项目的标题存储为英文和日文,但是当涉及到项目的类型时,例如,类型:饮料,饮料类型:咖啡我显然可以将项目类型存储在项目旁边在数据库中,但在数据库中将它作为两种不同的语言存储两次似乎不值得,这也会使添加新项目的表单变得很痛苦。

翻译“Coffee”、“Wine”、“Click Here”、“Menus”等这些小信息并在页面上使用它们的最佳方式是什么?

【问题讨论】:

    标签: php mysql language-translation


    【解决方案1】:

    您可以使用 gettext 扩展来翻译网页上的静态或预定义信息。

    见手册http://php.net/manual/en/book.gettext.php

    例如http://mel.melaxis.com/devblog/2005/08/06/localizing-php-web-sites-using-gettext/

    【讨论】:

    • 这看起来很简单,但并不简单。我喜欢它,所以我会试一试。我正要开始制作一个包含我需要翻译的所有文本的 XML 文件!噩梦。
    【解决方案2】:

    我会以两种语言存储它,这对我来说最有意义。我不明白为什么每次您想在菜单中显示任何页面时都会去向您的翻译系统发出请求。

    如果您使用的是您真正信任的自动翻译系统,您可以做的一件事是在添加新项目以提出建议时使用它。因此,当用户在表单上输入英文单词后,会自动尝试将其翻译成日文并将其放在日文字段中。如果用户对翻译感到满意,那么该任务就完成了,否则他/她会输入更好的翻译。

    【讨论】:

    • 以两种语言存储将是极其多余的。我知道冗余在编程时很有用,但同时存储两者都是荒谬的。此外,数据库中还有其他几列是英文的,比如可用的项目。对于同一件事,我不会有一个以“是”作为答案的可用英文专栏和一个以“はい”作为答案的あります 专栏。
    • 在我看来,您担心的冗余在于您的数据库架构,而不是维护翻译。我从不建议您多次存储翻译。这取决于您如何存储它,无论是在存储它的英文数据旁边,还是您制作一个单独的“翻译”表。为什么要存储不止一次?无论如何,您要么必须进行自动翻译(并冒着出错的风险并每次都执行额外的请求),要么将翻译后的单词存储在某个地方。我不确定您希望的哪个选项不是其中之一。
    【解决方案3】:

    如果您使用任何基于 phph5 的框架,主要框架都具有本地化支持,例如 zend 具有 Zend_Locale 如果您想要自己的翻译字典,请将键值对数据保存在数据库表中并在应用程序和数据库之间进行内存缓存,这样静态数据将被缓存到特定的到期时间,从而减少数据库负载并快速检索数据

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      相关资源
      最近更新 更多