login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Multilanguage met HTML opmaak

Offline Joost - 08/07/2010 22:53 (laatste wijziging 08/07/2010 22:54)
Avatar van JoostPHP expert Beste Sima's,

De situatieschets is als volgt: ik heb de teksten in aparte arrays, vanwege een multilanguage applicatie. Nu wil ik in een van die stukken tekst een link maken. Bijvoorbeeld:
  1. $_lang['sure'] = 'Klik hier als je zeker bent dat je het bericht wilt verwijderen.';
Als ik van 'hier' nu een link wil maken, hoe kan ik dat het beste doen? Dit geldt ook voor andere HTML tags.. Het lijkt me niet correct om dat in deze array te zetten, omdat daar alleen pure tekst thuishoort.

Wat een oplossing zou kunnen zijn is het volgende:
  1. $_lang['sure'] = 'Klik %s als je zeker bent dat je het bericht wilt verwijderen.';
  2. $_lang['clickword'] = 'hier';
  3. ///////////////////////////////////
  4. echo sprintf($_lang['sure'], '<a href="index.php?sure=1">' . $_lang['clickword'] . '</a>');
Maar dit is ook niet ideal...

Heeft iemand een (beter) idee voor deze situatie?

Joost

5 antwoorden

Gesponsorde links
Offline ProjectWebdesign - 09/07/2010 00:23 (laatste wijziging 09/07/2010 00:24)
Avatar van ProjectWebdesign Lid Nog een extra array erbij maken waar je links gaat defineren.
Dus je hebt een link array:
  1. $_link = array (
  2. 'linkie1' => 'http://www.sitemasters.be'
  3. );


Voordat je dan de vertalingen gaat gebruiken ga je die even allemaal langs.
  1. foreach ($_lang as $langId => $langValue)
  2. {
  3. foreach ($_link as $linkId => $linkValue)
  4. {
  5. $_lang['langId '] = str_replace('%' . $linkId . '%', '<a href="' . $linkValue . '">' . $linkId. '</a>', $langValue);
  6. }
  7. }


In je vertalingen zet je gewoon ergens %linkie1% in je tekst en deze wordt automatisch vervangen door de link die in de link array staat.
Offline TotempaaltJ - 09/07/2010 00:28
Avatar van TotempaaltJ PHP interesse Zoals ProjectWebdesign zegt, maar dan korter: Ga voor een wiki-achtige syntax!
Offline Joost - 09/07/2010 13:48 (laatste wijziging 09/07/2010 13:49)
Avatar van Joost PHP expert @TotempaaltJ: Ik wil het zo lightweight mogelijk maken, dus iets interpreteren valt dan af, ik heb nu de views gewoon in PHP.

@PW: Zo kan het inderdaad ook, maar dat is in essentie hetzelfde als wat ik doe alleen dan centraal. Dat is wel goed, maar het wordt lastiger wanneer je bijvoorbeeld variabele parameters hebt die in de loop van de applicatie worden bepaald. Daar kan je ook wel een work-around voor verzinnen, maargoed.. En daarnaast heb je dan alleen iets voor specifieke links, geen andere HTML tags.

Offline ProjectWebdesign - 09/07/2010 18:39
Avatar van ProjectWebdesign Lid Wat je dan zou kunnen doen is gewoon met ubb codes gaan werken.
Dat je één functie hebt die voor alle ubb codes checkt en vervangt door html.
En dat je daar de vertaalde array door gooit.
Offline TotempaaltJ - 09/07/2010 19:11
Avatar van TotempaaltJ PHP interesse Joost: Dat bedoel ik, gewoon een preg_replace'je erop gooien ofzo. [[http://www.google.com|Google]] vervangen door <a href="\1">\2</a> (random regex ftw!)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.2s