Languages

A new feature written by Bartek Kusmierczuk is a language component, this allows for different languages to be supported easily.

A language class exists inside the core folder, this class have 2 methods:

  • load - Loads the language file, can return the data and set the language to use
  • get - return an language string if it exists, else it will return the value passed

Inside the Core/Controller.php file the class is instantiated, resulting in $this->language being available to all controllers.

To use a language inside a controller use the following passing the file to be loaded located in the language/code/filename.php by default the language code will be en.

$this->language->load('file/to/load');

The load method can also be passed if the data is to be returned with a true or false and the language code, useful to set a new language on the call:

$this->language->load('file/to/load',false,'nl');

The default language can be set in the Config.php file:

//set a default language
define('LANGUAGE_CODE', 'en');

Inside the language file set the text, each language should contain the same text in their own language for instance:

//en
$lang['welcome_message'] = 'Hello, welcome from the welcome controller!';
//nl
$lang['welcome_message'] = 'Hallo, welkom van de welcome controller!';

To use the language strings inside a controller, set a data array and call the get method passing the desired string to return:

$data['welcome_message'] = $this->language->get('welcome_message');

Then in the view echo $data['welcome_message'] to print the chosen language.

Welcome example

<?php
namespace Controllers;
use Core\\View;
use Core\\Controller;
class Welcome extends Controller
{ /** * call the parent construct */ public function __construct() { parent::__construct(); $this->language->load('welcome'); } /** * define page title and load template files */ public function index() { $data['title'] = 'Welcome'; $data['welcome_message'] = $this->language->get('welcome_message'); View::rendertemplate('header', $data); View::render('welcome/welcome', $data); View::rendertemplate('footer', $data); }
}