[php disc] taalonafhankelijkheid

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Ik maak de laatste tijd veel webapplicaties die zowel door nederlandstaligen als door anderstaligen wordt gebruikt. Ik moet dus regelmatig rekening houden met het feit dat m'n applicatie taalonafhankelijk is. Tot nu toe deed ik dat door een aparte include-file te maken die er ongeveer zo uitzag:

PHP:
1
2
3
4
5
<?php
$_lang['ACTIONS'] = "Acties";
// nog meer van deze regeltjes

?>


Voor iedere taal dus een aparte include-file. Maar ik vind het zo niet echt lekker werken eigenlijk... Als voorbeeld neem ik mijn CMS: voor de frontend gebruik ik eigenlijk alleen maar templates, maar de backend is nog gewoon 'hardcoded'. Ik vind het maken van zo'n hardcoded pagina niet echt handig (je moet steeds bij ieder stukje tekst een var aanmaken in je languagefile, en als het er meerdere zijn dan nog een paar keer) en het lijkt me ook niet netjes.

Nu dan de (discussie?)vraag: hoe lossen jullie taalonafhankelijkheid op (en dan met name in PHP) ?

Acties:
  • 0 Henk 'm!

Verwijderd

Op dit moment heb ik ook nog niet echt iets wat me goed bevalt. Maar ik heb wel aardige dingen gehoord over gettext, dus daar moet ik me in ieder geval eens in verdiepen.

Acties:
  • 0 Henk 'm!

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 16-09 10:29

Apache

amateur software devver

Ja, kheb tot nu toe ook al in elke php language thread reclame gemaakt voor gettext, het is er voor gemaakt en doet zijn werk prachtig, chem wandelt ook meestal even binnen met de tip van sprintf() en _(), de korte gettext functie benaming. Er is iig heel wat over te vinden.

If it ain't broken it doesn't have enough features


  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 08-09 13:47
Let er aub wel op dat gettext een ramp is als je een applicatie bouwt die zo ongeveer overal moet draaien. Erg veel PHP servers hebben geen gettext geinstalleerd :\ Dat is dan ook meteen de reden dat ik nooit echt goed naar gettext heb gekeken ;) Heb overigens het idee dat gettext een beetje een mosterd na de maaltijd ding is ;) Is handig als je al iets helemaal af hebt en er dan achterkomt dat meertaligheid ook wel handig is. Da's iig mijn indruk :)

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Mij lijkt gettext ook niet zo handig, ik develop namelijk op een Windows-testserver, en ik wil mijn klanten niet verplichten om gettext geinstalleerd te hebben. Weet er iemand anders misschien een nette oplossing? Is er niet een script ofzo dat alle taalafhankelijke dingen uit een PHP script sloopt en taalonafhankelijk maakt?

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12:56
Ik zou echt gaan voor een database waarin je dit alles zet. Dan kun je gewoon een functie maken die de juiste tekst teruggeeft afhankelijk van bijvoorbeeld de taalinstelling in de session. Tekstbestanden en dergelijke zijn voor dit soort situaties imo gewoon niet handig. Maak dan natuurlijk wel een goed ontwerp, bijvoorbeeld een tabel talen, tabel textitems en een tabel vertalingen. Dan kun je ook leuke dingen doen als overzichtjes van wat je nog moet vertalen.

[ Voor 27% gewijzigd door djluc op 27-09-2003 17:15 ]


  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
djluc schreef op 27 September 2003 @ 17:13:
Ik zou echt gaan voor een database waarin je dit alles zet. Dan kun je gewoon een functie maken die de juiste tekst teruggeeft afhankelijk van bijvoorbeeld de taalinstelling in de session. Tekstbestanden en dergelijke zijn voor dit soort situaties imo gewoon niet handig. Maak dan natuurlijk wel een goed ontwerp, bijvoorbeeld een tabel talen, tabel textitems en een tabel vertalingen. Dan kun je ook leuke dingen doen als overzichtjes van wat je nog moet vertalen.
Geeft dat niet ontzettend veel database-load als je het zo aanpakt? Lijkt me dat een tekstbestand of een PHP-bestand dat je include dan een stukje lichter is....

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

MisterData:
Mij lijkt gettext ook niet zo handig, ik develop namelijk op een Windows-testserver, en ik wil mijn klanten niet verplichten om gettext geinstalleerd te hebben. Weet er iemand anders misschien een nette oplossing? Is er niet een script ofzo dat alle taalafhankelijke dingen uit een PHP script sloopt en taalonafhankelijk maakt?
Nee, je moet gewoon van begin af aan je code zo schrijven dat het uitbreidbaar is voor meerdere talen ;) Of gewoon een avondje kloppen :)
djluc:
Ik zou echt gaan voor een database waarin je dit alles zet. Dan kun je gewoon een functie maken die de juiste tekst teruggeeft afhankelijk van bijvoorbeeld de taalinstelling in de session. Tekstbestanden en dergelijke zijn voor dit soort situaties imo gewoon niet handig. Maak dan natuurlijk wel een goed ontwerp, bijvoorbeeld een tabel talen, tabel textitems en een tabel vertalingen. Dan kun je ook leuke dingen doen als overzichtjes van wat je nog moet vertalen.
Een database is imo behoorlijk overtrokken voor zoiets eenvoudigs. En het "missen" van evt. teksten/messages is met een database net zo eenvoudig na te gaan als wanneer je het in een tekstbestand zet. Geef mij maar gewoon een flat text bestandje hoor, voor dit soort dingen.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
drm schreef op 27 September 2003 @ 17:19:
[...]
Nee, je moet gewoon van begin af aan je code zo schrijven dat het uitbreidbaar is voor meerdere talen ;) Of gewoon een avondje kloppen :)
Dan wordt het gewoon een avondje kloppen dus...

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12:56
MisterData schreef op 27 September 2003 @ 17:18:
[...]
Geeft dat niet ontzettend veel database-load als je het zo aanpakt? Lijkt me dat een tekstbestand of een PHP-bestand dat je include dan een stukje lichter is....
Het gaat er maar net om hoe je die functie maakt, als je iedere keer alle teksten van 1 taal nodig hebt kun je gewoon er voor zorgen dat je die allemaal ophaalt en in een array zet. Als je een beetje een leuke query maakt zou je zelfs als het woord in de gevraagde taal niet bestaat automatisch het Engelse woord kunnen gebruiken.

Acties:
  • 0 Henk 'm!

  • Yoeri
  • Registratie: Maart 2003
  • Niet online

Yoeri

O+ Joyce O+

(overleden)
is dit niet iets waar xml perfect voor zou zijn?

<text id="welcome">
<english>welcome</english>
<french>bonjour</french>
<dutch>welkom</dutch>
</text>

...
zoiets dus

Kijkje in de redactiekeuken van Tweakers.net
22 dec: Onze reputatie hooghouden
20 dec: Acht fouten


Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 16-09 19:01

Tux

Robbedoeske schreef op 28 september 2003 @ 13:11:
is dit niet iets waar xml perfect voor zou zijn?

<text id="welcome">
<english>welcome</english>
<french>bonjour</french>
<dutch>welkom</dutch>
</text>

...
zoiets dus
Dan zou je dat helemaal moeten gaan parsen en heb je een enorm performanceverlies. Dus het lijkt me geen goed methode.

Zelf gebruik ik voor mijn applicaties een include file met een array. Dus voor elke taal een bestand.

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Als je dan toch met xml aan de slag gaat kun je beter gewoon het xml:lang attribuut gebruiken.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1