multi language website
Je moet het zien als volgt:
Een klant moet de site in zijn eigen taal kunnen vertalen, de site is dus standaard engels, maar 1 klant mag dus extra taal kunnen toevoegen, stel je dus voor dat voor elke variable die is genomen een vertaling gekozen mag worden en vervolgens worden ingevoerd in de database.
de site moet ook makkelijk veranderd kunnen worden naar een andere taal. uiteindelijk zal de database goed gevult worden met verschillende talen en kan een gebruiker hier gemakkelijk tussen switchen.
Mijn vraag is hoe ik dit op een gebruiksvriendelijke manier kan realiseren. Ik snap dat het kan overkomen dat ik het probleem zo bij een ander neerleg, maar dit is niet het geval Ik heb ook wel degelijk research gedaan, en het is dus iig de bedoeling dat het language systeem(zo zou ik het maar noemen) volledig in een MySQL database komt, overigens is de rest van de site dit ook al.
Even als toevoeging op de vraag.
Het betreft hier een Enquete systeem, een klant krijgt dus toegang tot de site en kan vervolgens een enquete aanmaken, en dus als 2de optie ook een vertaling aanmaken. Vervolgens als de enquete gereed is wordt hij online gezet met username en passwoord voor de overige gebruikers van de desbetreffende gebruikers die deze enquete moeten gaan invullen. de site zal dus de klant kan dus opgeven wat voor de gebruikers de default language is en de gebruiker moet ook nog eens kunnen switchen tussen de default language of engels.
Hoe het mij het beste lijkt is als volgt
een klant kan dus een taal toevoegen, dan krijgt de klant dus een gehele lijst met alle engelse woorden en vervolgens kan hier een vertaling opgegeven worden. mits alle velden zijn ingevult wordt de taal opgeslagen.
Het toevoegen van de enquetes wordt gedaan door de klant en zal geen vertalings optie hoeven te bevatten, de vertaling betreft dus alleen voor de site zelf.
Het ophalen van de taal dus naar mijn mening als volgt gaan:
er wordt gekeken in de database welke talen er beschikbaar zijn, vervolgens wordt er gekeken naar de selectie van de taal die is gedaan, als deze selectie niet bestaat zal de default taal worden geselecteerd(in dit geval engels).
As er nog onduidelijkheden zijn hoor ik dit graag en zal hier dan zo spoedig mogelijk meer toelichting bij geven.
Gewijzigd op 23/03/2006 11:44:00 door SteZZz
Heb je specifieke hulpvragen m.b.t. tot je code dan hoor ik het wel van je...
Ik kan je vanuit deze ervaring zeggen dat je problemen niet liggen in het vertalen van teksten De problemen zitten voornamelijk in de omgangsvormen. Het is dus niet zo simpel dat de derde regel vertaald moet worden. Deze kan bijvoorbeeld op een Chinese site pas aan het eind van de site komen.
Uiteraard praat je over opslag in UTF. Kan je een groot deel van de talen aan. Echter een UTF is ook weer opgedeeld. Chinees en Japans zal je dus in een andere UTF versie moeten opslaan. (Dus in een andere tabel.)
Als je de klant laart vertalen wie controleert dan de inhoud? Wij laten dit initieel ook doen. In mijn team werken diverse internationale mensen die regelmatig vertalingen tegen komen die jij niet op je site wil hebben. Sommige express en sommige per ongeluk omdat de (algemene)context niet begrepen is.
Kortom een uitdagend project voor je. Wel vast een tip Maak gebruik van een cascadeersysteem. Is een vertaling niet aanwezig dan wordt teruggevallen op een standaard (engels?) taal.
Ik heb toevallig een gedeelte van zo'n systeem een tijdje geleden geschreven. Ik zal bij thuiskomst wat simpele voorbeelden van hoe ik het zou aanpakken online zetten.
over dat laatste wat je zei, er moet dus een soort van check inkomen dat als de taal niet bestaat dat die dan terugvalt naar default engels.
het geen wat ik niet goed begrijp is dat chinese en japanse vertaling met utf, iets van dat utf een andere soort table is ofzo. als er dus met meerdere tables wordt gewerkt kan dit enige problemen met zich meebrengen in de moeilijkheid.
misschien dat er een dergelijke php code beschikbaar gemaakt kan worden in welke richtlijn ik moet gaan denken voor het selecteren van de taal.
dus:
uitlezen van de table languages welke talen er beschikbaar zijn
vervolgens de selecterende taal controllern of deze beschikbaar is en als deze niet beschikbaar is naar de default taal overgaan.
het ingeven van default taal door de klant zal een 2de zorg zijn.
met betrekking tot die utf om hier ook nog eens een check voor te verzinnen lijkt het mij het meest logische om met 3tables te werken:
1table met lijst van talen, 1 table met utf1 en 1table met utf2
op deze manier kan je alsnog makkelijk checken of een taal beschikbaar is, en in die table van talen zal dan ook een soort van table variable bevatten welke table die uiteindelijk moet uitlezen van de taal. het zal dan alleen nog lastig worden voor het aanmaken van een taal om automatisch de selectie te laten maken tussen de table utf1 en utf2
nog een probleem dus
Gewijzigd op 23/03/2006 12:19:00 door SteZZz
arjan alvast bedankt hiervoor
Het afvragen of een vertaling aanweizg zal ik per veld doen. Halve vertalingen worden dan ook meegenomen. Is een kwestie van smaak.
De default taal en variant hierop van de gebruiker kan je ophalen uit de browser instellingen.
Zo uit mijn hoofd, die kan je uit elkaar trekken. En daarna eventueel ook weer andere charsets inladen.
Arjan:
what je hier doet is simpel weg
$language = $_GET['language']
if (language == $language)
{select languages from language where language ='$language'} of iets in die trend, wat je me nu hebt gegeven is denk ik niet compleet. zou je meer in de trend wat ik je nu net hebt gegeven kunnen posten?
Wat jij doet is een taal uit de url plukken, dan moet de gebruiker dus zelf ergens op klikken. Leuker is als je de browser info uit gaat lezen.
Google even op language negociation en je vindt ongetwijfeld een script.
MarDek:
Wat Arjan hier doet is de easy-way. Houdt echter geen rekening met variant bijvoorbeeld en-uk.
Google even op language negociation en je vindt ongetwijfeld een script.
Google even op language negociation en je vindt ongetwijfeld een script.
zal ik doen, bedankt voor je reactie MarDek
Die $_SERVER[''] moet je daarna wel uit elkaar trekken, dus een echt 'easy way' is het ook niet ;).