[technisch ontwerp] meertalige versie website

Pagina: 1
Acties:
  • 396 views sinds 30-01-2008
  • Reageer

  • oh,when?
  • Registratie: April 2000
  • Niet online
Disclaimer: Ik weet eigenlijk niet zo goed in welk forum die moet ( /13 of /14 ) dus verplaats indien nodig.

Ik zit met de volgende vraag, hoe zou je het aanpakken als je een meertalige site maakt?
Stel ik heb de volgende randvoorwaarden:


• Een PHP / PostgreSQL Combinatie
• 2 talen versies van de site, later meer
• login / profile / plaat bestelling - functionaliteit
• Een webbased admin die ook meertalig moet zijn
• Presentatie word gedaan via php template-parser (XSL is geen optie hier helaas)

Zou je gewoon meerdere html-templates maken van een site. Of maak je alles dynamisch en haal je de verschillende vertalingen uit de database?

Iemand links / suggesties / op- of aanmerkingen?

"You're only as good, as what you did last week."


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 01 december 2001 19:23 schreef oh,when? het volgende:
Zou je gewoon meerdere html-templates maken van een site. Of maak je alles dynamisch en haal je de verschillende vertalingen uit de database?
Ik denk dat ik meerdere templates zou aanmaken, omdat in sommige talen paragrafen heel anders in elkaar steken dan in andere talen.
Waardoor ook de plaatsing van je tekst/content anders moet.

Anderzijds, als je maar weinig tekst (onafhankelijk van de content) hebt, zou je overal natuurlijk iets als:
$string = "$element[$language][$elemnt_i_need] etc etc";
kunnen doen, maar dan lijkt me de meerdere-template idee me nog steeds mooier.

Wat wel een voorbeeld van alles dynamisch is, is dat als er toevallig es geen taal element/stuk page/etc voorhanden is in de gewenste taal (je hebt bijv in eerste instantie alleen maar je index en je menu in meerdere talen, de rest alleen in nederlands en engels) kan je makkelijker terugvallen op je defaults.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
oh,when?: XSL is geen optie hier helaas
Inderdaad jammer, kijk maar eens hier:

http://www-106.ibm.com/developerworks/web/library/wa-xslt/?dwzone=web

Dit is een erg leuk stuk over XSLT + XML toegepast voor i18n. Misschien dat het toch nog informatief is :) .

Verder ben ik het wel met ACM eens. Je moet in feite een keuze maken tussen een dictionary aanpak of een template aanpak. De dictionary aanpak is in feite het handigst, maar functioneert denk ik alleen goed als er maar weinig tekst is en de tekst die nodig is vooral uit labels en kleine zinnen bestaan.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Dit leek mij wel een leuk topic worden, maar hij zakt helemaal weg ;( . Heeft iemand hier nog goede ideeen/ervaringen over?

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Op zondag 02 december 2001 14:53 schreef mbravenboer het volgende:
Dit leek mij wel een leuk topic worden, maar hij zakt helemaal weg ;( . Heeft iemand hier nog goede ideeen/ervaringen over?
Jazeker: bij phpheaven.net kun je een opensource project vinden, waar ze ongeveer proberen te bereiken wat de topicstarter bedoelt.

Ik heb er nooit echt heel goed naar gekeken, maar wellicht brengt dit je op goede ideeën :)

Verwijderd

ik zou denk ik gebruik maken van kan en klare libraries... waarin de complete strings, met eventueel $user ed. nog niet ingevult staan... t is maar een id...

  • oh,when?
  • Registratie: April 2000
  • Niet online
Op zondag 02 december 2001 14:59 schreef Cheatah het volgende:

[..]

Jazeker: bij phpheaven.net kun je een opensource project vinden, waar ze ongeveer proberen te bereiken wat de topicstarter bedoelt.
Bedankt..ik zal er eens naar kijken.

:)

en zoals mbravenboer zegt, ik had eigenlijk op meer reacties gehoopt, maar goed het is nog weekend, misschien komen er op maandag nog reacties. Of zijn er gewoon weinig mensen met ervaring met dit soort problemen?

"You're only as good, as what you did last week."


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Nou MBravenboer's reactie zegt het eigenlijk al. Zo doe ik het ook.

Grote stukken tekst staan meestal al in templates en je zal dus nieuwe templates moeten maken. Als je zinnen gaat opbouwen uit vertaalde woorden krijg je heeeele kromme zinnen.

Korte zinnen als error-messages (fout-berichten) heb ik in een apart include bestand staan. Hieronder vallen ook zinnetjes als 'incorrect password'-'onjuist wachtwoord', maar ook woorden als 'search'-'zoeken'. In mijn scripts verwijs ik dan naar deze variabelen. Ik zou eigenlijk geen andere goede methode kunnen bedenken..

Verwijderd

Ik zou een class schrijven:

class language($lang) {
}

en dan aan het begin van je script 1 keer zeggen

dat je bv dutch wil en dat je daarna alle variabele uit object kan plukken.

$woorden = new language("dutch");

dan in script

print("woorden->$aanhef");

Verwijderd

Is het niet gewoon makkelijker om de tekst in aparte files op je server te zetten (bv in verschillende dirs) en afhankelijk van de taal een bepaalde tekstfile uit te lezen, het bewerken wordt dan ook makkelijk, want het enige wat je hoeft te doen is de bepaalde tekstfile aan te passen. Ook kun je dan snel een nieuwe taal ondersteunen, door gewoon een nieuwe dir aan te maken, met daarin de benodigde files met de nieuwe taal. Een extra variabele om deze taal te kunnen selecteren en je bent klaar.
Ik denk dat het wel handig is als je kleine stukjes gewoon in een aparte file of database ofzo zet, met de vertaling erbij zoals al werd gezegd (zoeken --> search enzo) da's wel makkelijk om te includen voor knoppen e.d. (hoef je voor 1 woord niet een hele file uit te lezen, maar hoef je maar 1 standaard file te includen)
Weet niet of dit de beste oplossing is, maar heb er zelf ook wel eens over zitten denken en toen kwam ik hierop

  • oh,when?
  • Registratie: April 2000
  • Niet online
Ok, en het technisch ontwerp is eruit. Schijnbaar is het niet nodig om meer dan 2 verschillende talen-versies van de site te hebben, dus het word nu gewoon een template-based aanpak.

Echter ik houd me nog altijd aanbevolen voor theorieen / links naar andere websites met uitleg over deze interesante aanpak. Want ik vermoed dat ik er vast nog wel vaker tegenaan zal lopen.

:)

"You're only as good, as what you did last week."


  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
Voor het project waar ik nu mee bezig ben gebruiken we voor alle text strings template variabelen. De inhoud van die variabelen komt uit een file met een formaat als:

$lang['username'] = 'Gebruikersnaam';

in de code worden dan de template vars (L_USERNAME) gevuld met de strings uit de $lang array.

Per taal hebben we 1 dir met wat files:
- hoofd file met $lang array
- ongeveer zelfde maar dan voor het admin gedeelte
- faq
- wat specifieke zooi voor de fulltext search (stopwords e.d.).

Op zich werkt dit allemaal best relaxed. Zorg er wel voor dat je heel goed rekening houdt met de verschillende talen. Iets als Fins zit compleeeeet anders in elkaar dan Nederlands of Engels (mannelijk/vrouwlijk, woordvolgorde, etc). Op zich is dit voor een groot deel op te lossen met het gebruiken van VEEL language strings en sprintf. Dus nooit verschillende language vars achter elkaar plakken:

geen:
{L_NEW} {L_USERS}

maar:

{L_NEWUSERS}

  • ParaNoiMia
  • Registratie: Mei 2000
  • Laatst online: 02-05 23:29
Ik heb voor een site die in 15 talen gaat komen met VB een offline tool geschreven dat werkt op basis van templates.
In die templates geef je op specifieke plekken aan waar users tekst mogen onderhouden. Teksten worden in een lokale database opgeslagen. In het pakket zit een genereer website optie die de html pagina's genereerd. Daarna zit er een optie overzetten naar internet die met FTP de gegevens upload op de site.

Gekozen is voor templates, omdat (zoals eerder al iemand schreef) je met verschillende talen soms problemen kan krijgen met paragrafen, dit houdt het maximaal flexibel.

Verwijderd

Ik zou de volgende tabellen maken:

Table LANGUAGE
--------------
LanguageID (PK)
LanguageName
LanguageMnemonic (Eng, Fra, etc)
DefaultLanguage (Boolean)

Table TEXT
-------------------
TextID (PK)
TextName (Descriptive name)

Table LANGUAGE_TEXT
-------------------
LanguageTextID (PK)
LanguageID (FK)
TextID (FK)
LanguageTextValue (Text in appropriate language)

Table USER
----------
UserID (PK)
UserName
UserPassword
UserLanguage (FK)

In de tabel LANGUAGE_TEXT staan de teksten die je nodig hebt in de pagina's. De rest wijst zich vanzelf vanaf hier.

HTH :)

edit:

Toch maar even wat beter uitgenormaliseerd ... tssss, dat ik dat nu pas zag.

Verwijderd

Ik zit met hetzelf probleem als de topic starter, alleen moet het in drie talen waaronder in het Russisch :+ (andere tekens dus), iemand daar nog suggesties voor.

Tnx
Pagina: 1