Toon posts:

[PHP] Language files dmv {woord} placeholder

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met language files te implementeren in een kleine php site en kwam tot de conclusie dat geinclude bestanden met $lang['woord'] gewoon niet handig zijn.

Ik wil dus {woord} gebruiken.

Ik heb begrepen dat ik hier een functie voor nodig heb, je werkt namelijk met een array.

Ik ben een tut tegengekomen welke dit fijnloos uitlegde, echter kan ik deze niet meer vinden en ook niet gebookmarked :(

De vraag die ik mij stel is of ik de gehele pagina voor die functie heen moet halen of dat de functie op zichzelf staat en gewoon als functie in een functie bestand kan staan. Ik ben namelijk weer wat info tegengekomen waar de hele php file door die functie wordt heen gehaald.

Het voordeel van de manier waarop ik het wil doen is dat je met een array, welke je moet gebruiken ivm de functie, heel makkelijk over kunt stappen op database gebruik.

Vandaar mijn keuze.

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Het is imho gevaarlijk om je hele php-pagina te evalueren met een dergelijke functie; je gaat er geheid problemen mee krijgen.

Sowieso moet je vertalingen toepassen in je template bestanden en proberen dergelijke dingen niet in je controller te implementeren (als je daar over zat te denken). Maar het allerbelangrijkste: gebruik gettext! Het is _de_ manier om vertalingen te regelen. Het lijkt in het begin nogal lastig, maar uiteindelijk is het de ideale manier om i18n te regelen.

Met gettext kan je de functie _() gebruiken (underscore als functienaam dus). Vervolgens open je met (bijv) poedit het bestand en die scant alle _() functies. Dan kan je zelf je vertalingen invoeren en voila, klaar is RutgerM :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat klinkt toch heel anders dan dat alle template engines of hoe je het ook wil noemen doen.

Ik vind het absoluut een optie om hier naar te kijken, ik was alleen van mening dat mijn manier "makkelijker" was.

Acties:
  • 0 Henk 'm!

  • Eddy Dean
  • Registratie: November 2007
  • Laatst online: 22-09 13:24
Let wel goed op met Gettext. De PHP implementatie is niet zo goed als de implementatie voor andere talen, en onder PHP is het ook niet thread safe! Ook moet je webhost ondersteuning hebben voor de locale die jij wil gaan gebruiken, en uiteraard voor gettext.

Acties:
  • 0 Henk 'm!

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Ik zou zelf niet met een preg_replace() bezig gaan, maar zoiets als Zend_Translate hiervoor gebruiken.

Als dat niet mogelijk is zou je nog kunnen kijken naar een template engine zoals Smarty.

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Eddy Dean schreef op zaterdag 10 januari 2009 @ 10:58:
Let wel goed op met Gettext. De PHP implementatie is niet zo goed als de implementatie voor andere talen, en onder PHP is het ook niet thread safe! Ook moet je webhost ondersteuning hebben voor de locale die jij wil gaan gebruiken, en uiteraard voor gettext.
De implementatie van gettext in het Zend Framework is wel thread safe, misschien is het ook interessant om daar naar te kijken.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
RAJH schreef op zaterdag 10 januari 2009 @ 11:26:
Ik zou zelf niet met een preg_replace() bezig gaan, maar zoiets als Zend_Translate hiervoor gebruiken.

Als dat niet mogelijk is zou je nog kunnen kijken naar een template engine zoals Smarty.
Waarom zou je template-engines gebruiken als je het zelf op kunt lossen in PHP ?

Acties:
  • 0 Henk 'm!

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Verwijderd schreef op zaterdag 10 januari 2009 @ 18:20:
[...]


Waarom zou je template-engines gebruiken als je het zelf op kunt lossen in PHP ?
Omdat een template-engine deze en andere (caching, escaping, enz) functionaliteiten al bevat. Maar omdat je aangeeft dat het om een kleine site gaat kun je waarschijnlijk ook wel gebruik maken van preg_raplace(). Wel even goed testen met javascript code in je "template", want daar komen de {} tekens ook veel in voor ;).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
RAJH schreef op zaterdag 10 januari 2009 @ 23:21:
[...]


Omdat een template-engine deze en andere (caching, escaping, enz) functionaliteiten al bevat. Maar omdat je aangeeft dat het om een kleine site gaat kun je waarschijnlijk ook wel gebruik maken van preg_raplace(). Wel even goed testen met javascript code in je "template", want daar komen de {} tekens ook veel in voor ;).
Ja ik ben van mening dat het zonder die engines prima moet kunnen.

Mocht je nu wel van templates gebruik willen maken heb je natuurlijk een probleem met je code welke je in je pagina's hebt staan.

Roep je deze dan alleen via functions op ?

Ik vond dit een goed voorbeeld:

http://www.codewalkers.co...a-Template-System-in-PHP/
Pagina: 1