Volledige versie bekijken : multilanguage db opmaak
septunas
%Europe/Berlin %687 %2006, 16:30
Hello,
Het is de eerste keer dat ik een multilanguage site opmaak. In mysql dacht ik voor de contactpagina in Flash het volgende te doen:
CREATE TABLE contactpage
(
NLname varchar(30) NOT NULL ,
NLfname varchar(30) NOT NULL ,
NLaddress varchar(30) NOT NULL ,
NLpostcode varchar(30) NOT NULL ,
NLcity varchar(30) NOT NULL ,
NLcountry varchar(30) NOT NULL ,
NLphone varchar(30) NOT NULL ,
NLmail varchar(30) NOT NULL ,
NLmssg varchar(30) NOT NULL ,
FRname varchar(30) NOT NULL ,
FRfname varchar(30) NOT NULL ,
FRaddress varchar(30) NOT NULL ,
FRpostcode varchar(30) NOT NULL ,
FRcity varchar(30) NOT NULL ,
FRcountry varchar(30) NOT NULL ,
FRphone varchar(30) NOT NULL ,
FRmail varchar(30) NOT NULL ,
FRmssg varchar(30) NOT NULL ,
ENname varchar(30) NOT NULL ,
ENfname varchar(30) NOT NULL ,
ENaddress varchar(30) NOT NULL ,
ENpostcode varchar(30) NOT NULL ,
ENcity varchar(30) NOT NULL ,
ENcountry varchar(30) NOT NULL ,
ENphone varchar(30) NOT NULL ,
ENmail varchar(30) NOT NULL ,
ENmssg varchar(30) NOT NULL ,
)om zo de tekstjes die moeten verschijnen voor de input fields op te halen.
Als dan Engels als taal is gekozen zeg ik:
if (siteLang == EN){
// haal de EN vars uit mysql
}Dit doe ik met behulp van amfphp en zie hier niet onmiddellijk problemen bij.
Alleen had ik eens willen checken of er geen veel efficiëntere manier is. Dit zou best wel een kunnen, gezien mijn ervaring met datbasen nog in de beginfase zit.
Alvast bedankt!
Mvg,
Sept.
josko
%Europe/Berlin %696 %2006, 16:43
Je zou bijv dit kunnen doen:
table
contact
- Id
- Name
- FName
- Language
contactDescription
- country
- city
- ...etc
en dat dan gaan bij selecteren.
Dit scheelt data --> er hoeven niet allemaal lege velden bij te komen.
alleen de gebruikte velden zijn er.
septunas
%Europe/Berlin %707 %2006, 16:58
Je bedoelt ipv de data 1 voor 1 er uit halen, alles in één array en dat in Flash dan opsplitsen. En zo 3 kolommen: EN, NL, FR.
Het leek me ook wat raar om het feit dat er anders dan slechts 1 rij per kolom zou zijn.
Dankjewel. Ik zal je raad opvolgen.
Dit scheelt data --> er hoeven niet allemaal lege velden bij te komen.
alleen de gebruikte velden zijn er.weet alleen niet goed hoe ik deze quote moet interpreteren, gezien er geen sprake is van lege velden..
Mvg
BernardV
%Europe/Berlin %710 %2006, 17:02
Ik zou een tabel met vertalingen maken gekoppeld aan een woord en languageId
bv:
languages:
-languageId
-languageName
wordDeclarations:
-wordId
-wordName (optioneel zelfs, maar wel handig voor jezelf :P)
translations:
-wordId (samen met languageId unique)
-languageId
-translation
Dan kun je bv in languages hebben staan:
1 NL
2 EN
in wordDeclarations:
1 formName
2 formAddress
en dan in translations:
1 1 Uw naam:
1 2 Uw adres:
2 1 Your name:
2 2 Your address:
en dan dus in je php de goede vertaling ophalen aan de hand van je declaratie en de huidige taal.
//EDIT: Of in XML met een soort languagePacks.
Maak een singleton class die de XML ophaalt aan de hand van de gewenste taal.
Dan noem je de items in xml steeds hetzelfde, alleen zet je er een andere waarde in:
<formname>Uw naam:</formname>
Dan roep je iets aan als:
myLabel.text = MyLanguageClass.getTranslation("formname");
Dus je haalt die formname op, maar welke taal het is maakt geen zak uit, want dan hoeft flash verder niet te weten. Switch je van taal, broadcast je een event en alles gaat zich updaten :)
//EDIT2:
Je eerste opzet zou ik niet direct voor gaan, omdat je dan lastige dingen krijgt als je bv duits zou willen toevoegen.
Als je dat allemaal dynamisch hebt veranderd er voor flash niets, alleen een ander language id
septunas
%Europe/Berlin %723 %2006, 17:21
Thnx BernardV
Dat lijkt ook wel interessant. Zo lijkt het me iig makkelijker om de juiste content bij het juiste veld te plaatsen. Met die andere array ligt dat niet zo voor de hand, als ik er bvb zaken zou bij plaatsen.
Ik denk dat ik Josko nu ook beter begrijp, dat hij eigenlijk bedoelde dat ik tegelijkertijd de vertalingen zou opvragen, wat nogal stom zou zijn uiteraard.
Alvast vriendelijk bedankt voor de hulp :)
septunas
%Europe/Berlin %724 %2006, 17:23
//EDIT: Of in XML met een soort languagePacks.
Maak een singleton class die de XML ophaalt aan de hand van de gewenste taal.
Dan noem je de items in xml steeds hetzelfde, alleen zet je er een andere waarde in:
<formname>Uw naam:</formname>
Dan roep je iets aan als:
myLabel.text = MyLanguageClass.getTranslation("formname");
Dus je haalt die formname op, maar welke taal het is maakt geen zak uit, want dan hoeft flash verder niet te weten. Switch je van taal, broadcast je een event en alles gaat zich updaten :)
Nu ik eindelijk amfphp een beetje begin door te hebben, laat ik xml liever weg :)
Alleszins bedankt voor de tip.
BernardV
%Europe/Berlin %732 %2006, 17:34
Maar ook met AMFPHP zou je die laatste aanpak van een class met een event kunnen toepassen.
Als je een nieuwe taal wilt, dan doe je een service call en krijg je de nieuwe gegevens, zodra deze geladen zijn doe je een broadcast naar alle listneners (bv onLanguageChange) en die updaten dan alle tekstvelden met de nieuwe taal.
Als je je Language class een beetje netjes opzet kun je er zelfs voor zorgen dat je het ook in andere projecten kunt hergebruiken of de input nu XML of AMF is.
Ik werk zelf met een data class die de brug is tussen classes en de data source.
Wil ik dus xml als input, dan hoef ik alleen de data class aan te passen. Die zorgt er namelijk weer voor dat de classes verder de goede input krijgen.
Zo werkt het heel makkelijk :)
Folkert
%Europe/Berlin %805 %2006, 19:20
wellicht kan je wat met de Locale in de ARP versie van mijnheer Herreman ?
snv: http://svn1.cvsdude.com/osflash/arp/labs/cherreman/actionscript/org/osflash/arp/util/
meer info:
http://www.herrodius.com/blog/?cat=9
vragen over arp (http://osflash.org/arp) kan je uiteraard in de http://osflash.org/arp#join_the_arp_mailing_list daar kwijt (engels) of gewoon hier op FF
septunas
%Europe/Berlin %825 %2006, 19:49
Dat ziet er ontzettend interessant uit. Heb jammer genoeg voor de opdracht waar ik nu aan werk geen tijd om met nieuwe technieken te oefenen.
Heb het alvast gebookmarked.
Thx for the info :)
mech7
%Europe/Berlin %845 %2006, 20:17
Volgens mij kan je ook het beste UTF8 gebruiken omdat er wazige characters in sommige talen zitten. Maar ik heb me daaar nog niet zo heel erg in verdiept :p
TheDutch
%Europe/Berlin %862 %2006, 20:41
Voor "wazige characters" gebruik je nvarchar ipv. varchar :).
septunas
%Europe/Berlin %870 %2006, 20:53
Voor "wazige characters" gebruik je nvarchar ipv. varchar :).
uh, spreek je nu over mysql?
Ik dacht dat de arp over xml ging..?
Of kan je verduidelijken?
TheDutch
%Europe/Berlin %902 %2006, 21:39
Ik heb het over MySQL :).
septunas
%Europe/Berlin %973 %2006, 23:21
Sorry als m'n vragen nogal naïef overkomen... maar:
Volgens mij kan je ook het beste UTF8 gebruiken omdat er wazige characters in sommige talen zitten. Maar ik heb me daaar nog niet zo heel erg in verdiept :p
Waar kan je dat instellen van mysql. Zie nergens de optie om iets naar UTF8 om te zetten. Ik weet dat dat met xml kan, maar kan het ook met mysql.
Voor "wazige characters" gebruik je nvarchar ipv. varchar :).
Ik zie nergens de optie in de lijst met soorten velden de optie nvarchar. Is dat pas vanaf een bepaalde versie?
TheDutch
%Europe/Berlin %237 %2006, 05:41
Ik zie nergens de optie in de lijst met soorten velden de optie nvarchar. Is dat pas vanaf een bepaalde versie?
Ik weet dat het in MSSQL zit en had verwacht ook in MySQL maar dat weet ik niet zeker.
Blijkbaar niet in MySQL. In MySQL heet het gewoon varchar met unicode character set :).
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.