Website in meerdere talen
Ik wil graag mijn website in meerdere talen weergeven. Hiervoor ben ik opzoek naar een database structuur.
Ik heb zelf het volgende bedacht (dit is even een kort voorbeeld). Volgens mij vergt dit het minste onderhoud?
Of heeft iemand een ander idee?
producten
- id
- productnr
En dan met een LEFT JOIN de juiste tabel erbij pakken
products_nl
- url
- name
- short_description
- description
products_en
- url
- name
- short_description
- description
products_de
- url
- name
- short_description
- description
Alvast bedankt.
producten
id
productnr
producten_talen
taal
url
name
short_description
description
talen
id
name
zo heb je maar 3 tabellen en kun je ook nog talen toevoegen!
Ikzelf dacht eerder aan een tabel waarin je de soorten vertalingen in opslaat (name, short_description, description), en een translationstabel waarin je de vertalingen koppelt aan de productID, en de juiste entiteit.
Je datastructuur aanpassen als je een uitbreiding aan je vertalingen doet, is gewoon not-done, en gaat tegen normalisering in.
Gewijzigd op 03/04/2013 12:49:50 door - Ariën -
Ik zou dan meer zoiets doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Producten:
- id int(11) primary key auto_increment
- product_nr int(11)
- language_id int(11)
- url varchar(255)
- name varchar(255)
- short_description varchar(255)
- description text
Talen:
- id int(11) primary key auto_increment
- name varchar(25)
- id int(11) primary key auto_increment
- product_nr int(11)
- language_id int(11)
- url varchar(255)
- name varchar(255)
- short_description varchar(255)
- description text
Talen:
- id int(11) primary key auto_increment
- name varchar(25)
En dan elke product per taal er in zetten en aan de hand van language_id kun je de juiste producten van de taal uit de database halen.
Gewijzigd op 03/04/2013 12:53:33 door Joakim Broden
Hertog Jan op 03/04/2013 12:50:29:
En wat als er een nieuwe taal bij komt? Moet de database weer op de schop..
Ik zou dan meer zoiets doen:
En dan elke product per taal er in zetten en aan de hand van language_id kun je de juiste producten van de taal uit de database halen.
Ik zou dan meer zoiets doen:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Producten:
- id int(11) primary key auto_increment
- product_nr int(11)
- language_id int(11)
- url varchar(255)
- name varchar(255)
- short_description varchar(255)
- description text
- id int(11) primary key auto_increment
- product_nr int(11)
- language_id int(11)
- url varchar(255)
- name varchar(255)
- short_description varchar(255)
- description text
En dan elke product per taal er in zetten en aan de hand van language_id kun je de juiste producten van de taal uit de database halen.
Ik denk dat per taal een appart product record niet helemaal handig is.
Zo krijg je dubbele data met verschillende ID's hier zul je later dan weer tegen hele andere dingen aan lopen!
Gewijzigd op 03/04/2013 12:55:12 door Erwin H
Ik denk dat ik het voorbeeld van Robert en Erwin H moet volgen.
products
- id
- productnr
product_talen
- product_id
- taal_id
- url
- name
- short_description
- description
Super bedankt.
succes verder! als ik je nog kan helpen moet je het maar laten weten.
Stel ik heb de volgende producten met taal Nederlands (language_id = 1)
Product 1: id = 1, product_nr = 12345, language_id = 1, url = 'product-1', name = 'Product 1' etc
Product 2: id = 2, product_nr = 23456, language_id = 1, url = 'product-2', name = 'Product 2' etc
Product 3: id = 3, product_nr = 34567, language_id = 1, url = 'product-3', name = 'Product 1' etc
Dan heb ik de volgende producten met taal Engels(language_id = 2)
Product 1: id = 4, product_nr = 12345, language_id = 2, url = 'product-1', name = 'Product 1' etc
Product 2: id = 5, product_nr = 23456, language_id = 2, url = 'product-2', name = 'Product 2' etc
Product 3: id = 6, product_nr = 34567, language_id = 2, url = 'product-3', name = 'Product 1' etc
Dit zou toch gewoon kunnen?
Gewijzigd op 03/04/2013 13:18:22 door Joakim Broden
wat jij doet kan ook wel, alleen in je eigen voorbeeld zie je gelijk dat je van product nr 12345 nu 2 records hebt met de zelfde data (id en nummer) alleen voor 2 talen, dat is niet 'logisch'.
En als er evenuteel nog meer aan gekoppeld zit, moet je ook relaties voor elke taal gaan maken, dan word het allemaal een groot wirwar van relaties wat denk ik nouwelijks haalbaar is.
als je 1 product hebt, wil je het liefst ook maar 1 ID hebben ook al heb je vertalingen in 100 talen.
Gr. Robert
Hertog Jan op 03/04/2013 13:17:51:
@Robert en @Erwin, Hoezo kun je met mijn voorbeeld maar 1 product per taal gebruiken dan?
Nee, 1 taal per product, dat is iets anders. Elk product id in je database is nu vast gekoppeld aan een taal. De rest heeft Robert al uitgelegd.
Geloof me als ik zeg dat dit je later veel problemen gaat geven (ervaring...)