Website in meerdere talen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patrick S

patrick S

03/04/2013 12:44:22
Quote Anchor link
Hallo,

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.
 
PHP hulp

PHP hulp

23/12/2024 08:46:45
 
Robert Wazzaa

Robert Wazzaa

03/04/2013 12:47:03
Quote Anchor link
beste patrick, ik zou het iets anders doen, ik zou het zo doen:

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!
 
- Ariën  -
Beheerder

- Ariën -

03/04/2013 12:47:54
Quote Anchor link
Je gaat toch geen tabellen per taal aanmaken, mag ik hopen? Dat gaat tegen de regels van normalisatie in.

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 -
 
Joakim Broden

Joakim Broden

03/04/2013 12:50:29
Quote Anchor link
En wat als er een nieuwe taal bij komt? Moet de database weer op de schop..

Ik zou dan meer zoiets doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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)


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
 
Robert Wazzaa

Robert Wazzaa

03/04/2013 12:52:49
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


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!
 
Erwin H

Erwin H

03/04/2013 12:54:43
Quote Anchor link
Het laatste voorbeeld van Hertog-Jan zou ik ook niet volgen. Zo kan je per product (of pagina, of andere entiteit) maar 1 taal gebruiken. Koppel dat altijd los. Dus een record met de algemene data van een product (of pagina) en een tabel met records per taal die je erbij joined op basis van het taal id. Zoals Robert dus al aangaf.
Gewijzigd op 03/04/2013 12:55:12 door Erwin H
 
Patrick S

patrick S

03/04/2013 13:08:03
Quote Anchor link
Bedankt voor de snelle reacties!

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.
 
Robert Wazzaa

Robert Wazzaa

03/04/2013 13:09:01
Quote Anchor link
succes verder! als ik je nog kan helpen moet je het maar laten weten.
 
Joakim Broden

Joakim Broden

03/04/2013 13:17:51
Quote Anchor link
@Robert en @Erwin, Hoezo kun je met mijn voorbeeld maar 1 product per taal gebruiken dan?

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
 
Robert Wazzaa

Robert Wazzaa

03/04/2013 13:20:44
Quote Anchor link
Beste Hertog Jah,

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
 
Erwin H

Erwin H

03/04/2013 13:28:45
Quote Anchor link
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...)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.