次の問題がより良い/異なる/共通の解決策を持っているかどうか、意見を求めています:
英語 (このアプリケーションのデフォルト言語) の製品名を含む製品データベースがあり、可能であれば名前の翻訳が必要です。
現在、私はこのセットアップを持っています:
製品表
CREATE TABLE products
(
id serial NOT NULL,
"name" character varying(255) NOT NULL,
CONSTRAINT products_pkey PRIMARY KEY (id)
)
および製品ローカリゼーション テーブル
CREATE TABLE products_l10n
(
product_id serial NOT NULL,
"language" character(2) NOT NULL,
"name" character varying(255) NOT NULL,
CONSTRAINT products_l10n_pkey PRIMARY KEY (product_id, language),
CONSTRAINT products_l10n_product_id_fkey FOREIGN KEY (product_id)
REFERENCES products (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
次のクエリを使用して、ローカライズされた製品 (この場合はドイツ語) のリストを取得し、デフォルトの英語名にフォールバックします。
SELECT p.id, COALESCE(pl.name, p.name)
from products p LEFT
JOIN products_l10n pl ON p.id = pl.product_id AND language = 'de';
SQL コードは postgres の方言です。データは UTF-8 として保存されます。