MySQL Database vormgeving voor website in meerdere talen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

G Jansma

G Jansma

09/12/2019 13:28:31
Quote Anchor link
Hallo,

Ik wil mijn website graag in meerdere talen gaan aanbieden. Het zal waarschijnlijk om een vijftal talen ongeveer gaan. Het betreft dan hoofdzakelijk titels en korte zinnetjes die vertaald moeten worden, geen hele artikelen. Ik vraag me alleen af wat de gangbare manier is om dit vorm te geven in MySQL.

Tijdens mijn zoektocht kwam ik oa onderstaande pagina tegen met vier voorbeelden, met wat screenshots (rechts in het hoekje) van de tabelindeling.

https://www.apphp.com/tutorials/index.php?page=multilanguage-database-design-in-mysql

Mijn vraag is hoe jullie me zouden adviseren zoiets vorm te geven. Alles in één tabel, met een kolom voor elke taal? Of toch werken meerdere tabellen en joins? Wat is gangbaar voor websites in meerdere talen, ook met het oog op snelheid om alle woorden in de taal op te halen in elke pagina?
 
PHP hulp

PHP hulp

29/03/2024 07:42:01
 
- Ariën  -
Beheerder

- Ariën -

09/12/2019 15:09:59
Quote Anchor link
Zulke data moet je 'verticaal' opslaan, zodat je later ook andere talen kan toevoegen.

Ik zit te denken aan een tabel met vertalingen. Waarbij er een koppeling is met de juiste taal. Eventueel een tabel met de talen, zodat je eventueel nog een characterset eraan kan koppelen.
 
G Jansma

G Jansma

09/12/2019 15:20:59
Quote Anchor link
Je zou dus zoiets doen als in het vierde voorbeeld in de link die ik gaf?

Afbeelding
 
- Ariën  -
Beheerder

- Ariën -

09/12/2019 15:36:27
Quote Anchor link
Jep.. :-)
 
Rob Doemaarwat

Rob Doemaarwat

09/12/2019 16:23:07
Quote Anchor link
Stel dat er in de toekomst nog een "te vertalen" veld aan de product_translations wordt toegevoegd, dan zou je die tabel eigenlijk ook nog "verticaal" moeten maken.

Zelf heb ik altijd:

tabel "str"
- id //auto-inc
- code //string met een unieke code, bijvoorbeeld "product:1:title" of "blog:321:slug"
- type //soort string; optioneel, bijvoorbeeld voor rechten = wie mag wat inzien/vertalen

table "lang_str"
- str_id //zie hierboven
- lang_id //taal
- text //de vertaling

Voordeel hiervan is dat altijd al je teksten door dezelfde "vertaal tool" heen te halen zijn. Dat *hoeft* dan weer niet altijd (je kunt natuurlijk nog gewoon een dedicated vertaal tool maken voor je productomschrijvingen), maar het *kan* wel (het voorkomt in ieder geval dat je voor elke "variant" een eigen vertaal tool moet maken).
 
G Jansma

G Jansma

09/12/2019 22:51:51
Quote Anchor link
Bedankt voor jullie reacties.

Ik zie het voor me dat je dan in PHP met die string van 'code' (uit bovenstaand voorbeeld) een associative array uitdraait. En dat je dan door de pagina heen de benodigde titeltjes en zinnetjes uit die array ophaalt? Bijvoorbeeld uit $languageArray['product_title'], $languageArray['product_description'] om maar even bij het productvoorbeeld te blijven?

En hoe kan je dat het beste aanpassen voor de meta descriptions en de title? Mijn meta descriptions worden namelijk dynamisch samengesteld met meerdere variabelen per description. Zou ik die voor elke variant ook in zijn geheel in de MySQL database moeten zetten, en dan bijvoorbeeld strings als "{XPRODUCTNAAMX}" en "{XPRODUCTOMSCHRIJVINGX}" erin zetten en vervangen in PHP? Of zou ik die gewoon voor elke taal in de PHP code moeten zetten en daar samenstellen.
 
Ward van der Put
Moderator

Ward van der Put

10/12/2019 09:03:13
Quote Anchor link
Kijk ook eens hoe dit wordt opgelost met een translation memory (TM).

Of je het beste een array kunt gebruiken — of iets anders — is vooral afhankelijk van hoe je een view opbouwt. Dat maakt het een ontwerpbeslissing voor je softwarearchitectuur (maar die kennen we niet).
 



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.