Tutorials

Meertalige website

Stap voor stap uitleg voor het opzetten van een meertalige website.

Pagina 1

Inleiding.

Soms is een meertalige website gewenst, Er zijn natuurlijk meerdere manieren om dit te bereiken. Persoonlijk vind ik het mooist om met $_SESSION's te werken voor de opslag van de gekozen taal. Deze kan dan weer gebruikt worden voor het weergeven van de content in de gewenste taal.
Pagina 2

Pagina opbouw.

Onderstaande code komt bovenaan elke pagina in je website te staan. Het is natuurlijk niet de bedoeling dat je elke keer de code bovenaan elke pagina plakt. Het ligt een beetje aan de opbouw van je website maar over het algemeen is de beste optie om het in een appart bestand te zetten en deze met een include() bovenaan elke pagina te zetten.

LET OP! Het kan zijn dat je session_start() al eerder ergens hebt gebruikt voor een ander script. De session_start regel moet dan in ondestaande code worden verwijderd.


<?php

    #| Start session.
    
        session_start();


    /*------------------------------------------------------------------------------------------------ www.coders-sanctum.com --    
    (1) Settings.                                                                                                        
    --------------------------------------------------------------------------------------------------------------------------*/

    #| Default language.
    
        $default = 'en';
        

    #| language options.
    
        $options = array('en' => 'English', 'nl' => 'Nederlands', 'de' => 'Deutch');


    /*------------------------------------------------------------------------------------------------ www.coders-sanctum.com --    
    (2) Set default website language.                                                                                                        
    --------------------------------------------------------------------------------------------------------------------------*/

        if(!isset($_SESSION['language']))
        {
			
		#| Obtain preferred language from browser.
		
			$preferred_language = (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) ? substr(strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']), 0,2) : $default; 
		
		
		#| Set default website language.
			
            $_SESSION['language'] = (array_key_exists($preferred_language, $options)) ? $preferred_language : $default;
			
        }
        

    /*------------------------------------------------------------------------------------------------ www.coders-sanctum.com --    
    (3) Change website language.                                                                                                        
    --------------------------------------------------------------------------------------------------------------------------*/
    
        if(isset($_GET['language']))
        {
        
        #| Validate selected language.
        
            if(ctype_lower($_GET['language']))
            {
                
            #| Check if selected language is a valid option.
            
                if(array_key_exists($_GET['language'], $options))
                {
                
                #| Set new language.
                
                    $_SESSION['language'] = $_GET['language'];
                    
                }
            }            
        }
        
?> 
Pagina 3

Settings.

Default language:

Dit is de taal die je website bij default krijgt. Zorg er altijd voor dat je hier ingevulde waarde overeen komt met een van de keys in je $options array.


Language options:

In deze array kun je de talen invoeren waarin je website in weergegeven kan worden. In onderstaand voorbeeld staan drie voorbeelden de key van de array is de verkorte code van het land. De waarde is de volledig uitgeschreven naam van de taal.


<?php

    /*------------------------------------------------------------------------------------------------ www.coders-sanctum.com --    
    (1) Settings.                                                                                                        
    --------------------------------------------------------------------------------------------------------------------------*/

    #| Default language.
    
        $default = 'en';
        

    #| language options.
    
        $options = array('en' => 'English', 'nl' => 'Nederlands', 'de' => 'Deutch');

?>
Pagina 4

Taal selecteren.

Voor het selecteren van een gewenste taal kun je onderstaande code gebruiken voor het weergeven van een dropdown menu.

De code:


<?php

    /*------------------------------------------------------------------------------------------------ www.coders-sanctum.com --	
    (?) Display Dropdown menu with all language options.                                                                                                        
    --------------------------------------------------------------------------------------------------------------------------*/

    #| Start FORM and SELECT elements.
    
        echo '<form method="get"><select name="language" id="language" onChange="this.form.submit();">';
     
	 
	#| Loop through all language options.
	
        foreach($options as $code => $location)
        {
			
		#| Check if option has to be selected.
		
            if($code == $_SESSION['language'])
            {

            #| Display current selected language.

                 echo '<option value="'.$code.'" selected="selected">'.$location.'</option>';

            }
            else
            {
            
            #| Display all other options.

                 echo '<option value="'.$code.'">'.$location.'</option>';

            }

        }


	#| End SELECT and FORM elements.
	
        echo '</select></form>';	

?>
Pagina 5

Weergeven van de content.

Er zijn vele manieren om de content van je website in de gewenste taal weer te geven. Ik zal enkele voorbeelden geven. Welke je beter vind is persoons gebonden en het ligt aan de opbouw van je website.

Voorbeeld 1.

INFO: Onderstaande code spreekt eigenlijk voor zichzelf neem ik aan.


<?php

	if($_SESSION['language'] == 'de')
	{
		// Duitse content.
	}
	elseif($_SESSION['language'] == 'nl')
	{
		// Nederlandse content.
	}
	else
	{
		// Engelse content.
	}

?> 


Voorbeeld 2.

INFO: Met onderstaande code kun je per taal een bestand inladen. hierin zet je dan de textuele content van je website. Bij grote websites is het beter om per pagina een taal pagina te laden in plaats van alles in 1 keer.


<?php

    /*------------------------------------------------------------------------------------------------ www.coders-sanctum.com --    
    (?) Load required language file.                                                                                                        
    --------------------------------------------------------------------------------------------------------------------------*/

	#| Set " $language_file " variable.
	
		$language_file = '/language/'.$_SESSION['language'].'.php';
		

	#| Check if language file exists.

		if(file_exists($language_file))
		{
		
		#| Include language file.
			
			include($language_file);
		
		}
		
?>



Language file voorbeeld.


<?php

	#| In het engelse taal bestand.
	
		$l_welcome = 'Welcome.';
	
	
	#| In het nederlandse taal bestand. 

		$l_welcome = 'Welkom.';
		
?>

Reacties

0
Nog geen reacties.