• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  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
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  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
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  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
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Jeffrey.Hoekman 29 december 2025 om 17:20
  • Developer Gezocht

    tcbhome 21 december 2025 om 15:07
  • Op zoek naar de legends

    Jeffrey.Hoekman 9 december 2025 om 09:41
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04
  • Partner Gezocht om meerdere NFT Collecties op Open Sea te Plaatsen

    NFT Art Designer 1 maart 2025 om 14:08

Marktplaats

  • Meerdere mafia game template te koop

    Syntax 28 december 2025 om 21:20
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05
  • 302 Nieuwe Domeinnamen November 2025

    shiga 1 december 2025 om 13:07

Werken met getText

  • MOnkNL
  • 15 augustus 2016 om 11:50
  • MOnkNL
    Student
    Ontvangen Reacties
    8
    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

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Dees
    Elite members
    Ontvangen Reacties
    64
    Articles
    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
    Student
    Ontvangen Reacties
    8
    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
    Ontvangen Reacties
    64
    Articles
    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?
    Toon Meer

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

    Met vriendelijke groet,

    Dees

  • MOnkNL
    Student
    Ontvangen Reacties
    8
    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
    Ontvangen Reacties
    196
    Articles
    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
    Student
    Ontvangen Reacties
    8
    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
    Student
    Ontvangen Reacties
    8
    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/>";
    ?>
    Toon Meer

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

    The law is what I write down on paper

  • MOnkNL
    Student
    Ontvangen Reacties
    8
    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/>";
    
    
    ?>
    Toon Meer

    The law is what I write down on paper

Participate now!

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

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

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

Gebruikers die dit topic bekijken

  • 1 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design