代码之家  ›  专栏  ›  技术社区  ›  C. Ovidiu

MySQL多语言表结构

  •  0
  • C. Ovidiu  · 技术社区  · 12 年前

    我有一个网站,有两个项目需要翻译成不同的语言:文章和产品。

    对于这些文章,我创建了两个表:

    [articles]
      id PK
      posted_on
    
    [articles_local]
      id PK
      article_id FK(articles.id)
      title
      body
      lang_code
    

    我本可以创建三个表来存储语言代码和id,但我认为这太过分了,因为我的应用程序相对较小。

    问题出在产品上。产品有两个需要翻译的信息,即产品名称和产品类别;所有其他语言都是中性的,对所有语言都是平等的。

    这是我的产品表格结构,我需要帮助:

    [products]
      id PK
      name // always the same in all languages
      product_code
      weight
      image_url
      category_id FK (category.id)
    
    [category]
      id PK
      cat_name_IT
      cat_name_EN
      cat_nameRU
    
    [products_local]
      id PK
      product_id FK(products.id)
      prod_description
      lang_code
    

    所以基本上 category 表中保存了这三种语言的翻译类别名称。类别共有6个,不会很快改变。

    这个 products_local 只有产品的翻译说明和 product 表中列出了每种语言相同的信息。

    我认为我的产品结构有点混乱,但我不知道为什么,也不知道如何改进。我认为这是基于文章的结构,在我看来更“正确”和干净。

    有什么办法可以改进这个表格结构吗?

    我不知道这是否重要,但在我的 php 我根据文件夹名称提取文章和产品, it , en , ru :

    $lang = // get folder name from URI
    $sql = "SELECT * FROM articles_local WHERE lang_code = :lang";
    // bind $lang to :lang
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Remy    12 年前

    我想没关系。

    如果你只需要两种或三种固定语言的翻译,我只需要将翻译文件添加到普通产品表中。