• Inloggen
  • Registreer
  • Zoeken
Dit topic
  • Overal
  • Dit topic
  • Dit forum
  • Artikelen
  • Pagina's
  • Forum
  • Downloads
  • Meer opties

ICTscripters

Dé plek voor IT

Dé plek voor IT

Aanmelden

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • nieuwe game

    frio 1 november 2026 om 14:08
  • Criminolz

    qevanto 31 oktober 2026 om 20:52
  • [Beta] Ottomaan: gratis browserspel met een echte, levende stad. Feedback gezocht!

    frio 27 oktober 2026 om 12:22
  • Port Father: beta van een browsergame in Antwerpen 1931, feedback welkom

    Jeroen.G 26 oktober 2026 om 10:33
  • Maffia Hotel: een browsergame waarin je van lobbygast naar spil van het hotel groeit

    eeyk 22 oktober 2026 om 18:43
  • Crime Club volledig herschreven vanaf nul

    frio 19 oktober 2026 om 23:57
  • Malavita (nieuwe maffia game, van 0)

    jos 19 oktober 2026 om 23:18
  • Herkent deze Notion-structuurscan echte problemen?

    Jeroen.G 19 oktober 2026 om 15:09

Marktplaats

  • [Aanbod] Stadskaart voor je browsergame: van menu naar klikbare stad, vanaf €200

    frio 29 oktober 2026 om 18:17
  • [Verkoop] G4G (Gangsters 4 Gangsters): volledige broncode, nieuw gebouwd in PHP 8.3 | € 30 per domein

    frio 27 oktober 2026 om 18:54
  • [TE KOOP] Malavita.be [Maffiaspel, gebaseerd op omicidio.nl, unieke code]

    Dpm_x 26 oktober 2026 om 00:22

Werken met getText

  • MOnkNL
  • 15 augustus 2016 om 11:50
  • MOnkNL
    Leerling
    Berichten
    69
    • 15 augustus 2016 om 11:50
    • #1

    Beste scripters,

    ik wil mijn manier van support voor meerdere talen aangaan passen.
    Voorheen deed ik dat met een php file met een lang array erin, wat ik voor het aanpassen van de tekst niet ideaal vind, gezien soms een klant zelf een taal toe wil voegen.

    Nu zie ik dat best practice word verwezen naar gettext, wat me een prima oplossing lijkt. Nu vind ik alleen de structuur van de opbouw in mappen niet handig en zou lieven de structuur van wordpress gebruiken (gewoon 1 map, met daarin de verschillende talen gebasseerd op filename dus NL_nl.po of dergelijke).

    Dus mijn vraag is gebruiken jullie gettext? zo ja hoe pas ik het makkelijkste de datastructuur aan? of is er een andere handige manier? en zo ja welke?

    Met vriendelijke groet,

    MOnkNL

    The law is what I write down on paper

  • Gast, wil je besparen op je domeinnamen? (ad)
  • Dees
    Elite members
    Artikelen
    1
    Berichten
    358
    • 15 augustus 2016 om 13:36
    • #2

    Ik gebruik eigenlijk nooit verschillende talen op een website. Maar als ik het doe, doe ik het zoals je beschreven hebt. Met de array's in PHP files. Heb er ooit een package voor gemaakt, weet alleen niet of die nog goed werkt.

    Misschien kan je de klant zo'n translate file maken door middel van een interface en dat converten naar een array?

    Met vriendelijke groet,

    Dees

  • MOnkNL
    Leerling
    Berichten
    69
    • 15 augustus 2016 om 16:23
    • #3

    Mijn voorkeur gaat uit naar niet meer gebruiken van een array, gezien de structuur met variabele er tussen.
    Lijkt me dit makkelijker:

    PHP
    _('Are you sure you want to block %s?'),'Alice')
    #Output: Are you sure you want to block Alice? 
    
    
    _('Hi %1$s.\n The owner of this page is: %1$s. Today is %s','Agustinus', date('d-m-Y'));
    #output Hi Agustinus, The owner of this page is : Agustinus. Today is 15-08-2016

    The law is what I write down on paper

  • Dees
    Elite members
    Artikelen
    1
    Berichten
    358
    • 15 augustus 2016 om 16:52
    • #4

    Dit zou ook met een array kunnen, klein voorbeeld:

    PHP
    function _($id, $options = []) {
        // Pak de app.block string uit de array.
        $string = 'Are you sure you want to block :name';
    
    
        foreach ($options as $key => $value) {
            $string = str_replace(":{$key}", $value, $string);
        }
    
    
        return $string;
    }
    
    
    _('app.block', ['name' => 'Alice']);
    #Output: Are you sure you want to block Alice?
    Meer tonen

    Kijk hier is naar. Dat is allemaal gedaan met array's.

    Met vriendelijke groet,

    Dees

  • MOnkNL
    Leerling
    Berichten
    69
    • 18 augustus 2016 om 12:38
    • #5

    Is natuurlijk iets meer werk dan ingebouwde functie van php gebruiken, maar gezien de structuur van plaatsen van de data en het uitblijven van iemand die weet hoe je de map structuur aanpast. Gezien de enige oplossing die ik op dit moment kan verzinnen voor het aanpassen van de structuur het totaal verkeerd gebruik maken van de functie zou betekenen.
    Ga ik, hoe jammer ik dat ook vind, het doen zoals de manier die jij hierboven beschrijft.

    Misschien schrijf ik zelf een class die mo of po files uitleest en omzet. In ieder geval bedankt voor het mee denken.,

    The law is what I write down on paper

  • FangorN
    Professional
    Artikelen
    2
    Berichten
    737
    • 18 augustus 2016 om 14:30
    • #6

    Hangt er ook een beetje vanaf wat je precies wilt vertalen:
    - losse woorden (die afhankelijk van context verschillende betekenissen kunnen hebben en daarmee mogelijk ook verschillende vertalingen hebben)
    - zinnen
    - complete verhalen
    - een combinatie van dit alles?

    En wat je vervolgens interactief wilt kunnen (laten) aanpassen door een gebruiker/beheerder.

  • MOnkNL
    Leerling
    Berichten
    69
    • 18 augustus 2016 om 20:20
    • #7

    Het draait in specifieke geval om zinnen en woorden.
    Maar het draai eigenlijk vooral om het mezelf goed aan leren (best practice). Ik heb vaker mensen waarbij de site meerdere talen moet kunnen draaien. Daarbij maak ik op dit moment gebruik database waarbij de pagina's meerdere vertaling bevatten. Maar gezien een paar transport bedrijven bevat die vrij wel nooit hun tekst aanpassen kan dit eventueel in een array of mo/po file.

    The law is what I write down on paper

  • MOnkNL
    Leerling
    Berichten
    69
    • 27 september 2016 om 22:59
    • #8

    Oke had vanavond wat tijd over heb het volgende gemaakt.

    PHP
    <?php
    $lan = 'en';
    $t['en'] = array(
    	'test'=>'testing string',
    	'test with 1 var'=>'testing string with %d var',
    	'test with 2 var'=>'testing string with %d %s ',
    	);
    
    
    function __(){
    	global $t,$lan;
    	if(func_num_args() == 0){
    		$debug = debug_backtrace();
    		$error = 'Warning: Invalid call to __()  no args given in '.$debug[0]['file'].' on line '.$debug[0]['line'].'.';
    		echo $error;
    		error_log($error);	
    	}elseif(func_num_args() == 1){
    		$key = func_get_arg(0);
    		return $t[$lan][$key];
    	}else{
    		$args = func_get_args();
    		$key = array_shift($args);
    		$vars = $args;
    		return call_user_func_array('sprintf', array_merge(array($t[$lan][$key]),$args));
    	}	
    }
    
    
    echo __('test')."<br/>";
    echo __('test with 1 var',1)."<br/>";
    echo __('test with 2 var',2,'variables')."<br/>";
    echo __()."<br/>";
    ?>
    Meer tonen

    Wat denken jullie ervan? Wat zou ik nog kunnen verbeteren?

    The law is what I write down on paper

  • MOnkNL
    Leerling
    Berichten
    69
    • 2 oktober 2016 om 18:47
    • #9

    Verder verbeteringen toegevoegd evenals commentaar:

    PHP
    <?php
    $lan = 'en';
    $t['en'] = array(
    	'test'=>'testing string',
    	'test with 1 var'=>'testing string with %d var',
    	'test with 2 var'=>'testing string with %d %s ',
    	);
    
    
    function __(){
    	global $t,$lan;
    	switch(func_num_args()){
    	case 0: // Functie heeft op zijn minst argument nodig
    		$debug = debug_backtrace();//Haal terug waar foute aanroep is gedaan.
    		$error = 'Warning: Invalid call to '. __FUNCTION__.'  no arguments given in '.$debug[0]['file'].' on line '.$debug[0]['line'].'.';
    		if(error_reporting()!=0){echo $error;} //Laat error zien als error level niet op 0 staat
    		error_log($error);	//Log de error
    		return false; 
    	break;
    	case 1: //Functie heeft 1 argument; 
    		$key = func_get_arg(0); //Haal argument op.
    		if(!isset($t[$lan][$key])){  // controleer array of key bestaat.
    		$debug = debug_backtrace();
    			$error = 'Warning: Invalid call to '. __FUNCTION__.' key doesn&acute;t exists in given in '.$debug[0]['file'].' on line '.$debug[0]['line'].'.';
    			if(error_reporting()!=0){echo $error;} //Laat error zien als error level niet op 0 staat
    			error_log($error);	//Log de error
    			return false;
    		}else{
    			return $t[$lan][$key]; // Haal vertaling op. 
    		}
    	break;
    	default: //Functie heeft meer dan 1 argument.
    		$args = func_get_args(); //Haal argumenten op. 
    		$key = array_shift($args);//Haal key uit funtie argumenten 
    		array_unshift($args,$t[$lan][$key]); // Haal string op uit array en plaats dit terug aan begin van array. 
    		return call_user_func_array('sprintf',$args); //Roep sprintf aan om variable in string te plaatsen. 
    	}
    	
    }
    
    
    echo __('test')."<br/>";
    echo __('test with 1 var',1)."<br/>";
    echo __('test with 2 var',2,'variables')."<br/>";
    echo __()."<br/>";
    echo __('this key is not there')."<br/>";
    
    
    ?>
    Meer tonen

    The law is what I write down on paper

Registratie

Nog geen account? Registreer je nu en word deel van onze community!

Nu registreren Aanmelden

ICT Nieuws

  • PHP waarschuwt voor twee ernstige bugs die makkelijk uit te buiten lijken

    Aaron 22 oktober 2026 om 22:19

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacyverklaring
  10. Contact
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design