Skip to content
Snippets Groups Projects
Commit d4044d02 authored by Bart Visscher's avatar Bart Visscher
Browse files

Delay loading of translations until they are used

parent a1364c97
No related branches found
No related tags found
No related merge requests found
......@@ -39,6 +39,16 @@ class OC_L10N{
*/
protected static $language = '';
/**
* App of this object
*/
protected $app;
/**
* Language of this object
*/
protected $lang;
/**
* Translations
*/
......@@ -77,10 +87,17 @@ class OC_L10N{
* language.
*/
public function __construct($app, $lang = null){
$this->init($app, $lang);
$this->app = $app;
$this->lang = $lang;
}
protected function init($app, $lang = null){
protected function init(){
if ($this->app === true) {
return;
}
$app = $this->app;
$lang = $this->lang;
$this->app = true;
// Find the right language
if(is_null($lang)){
$lang = self::findLanguage($app);
......@@ -127,10 +144,7 @@ class OC_L10N{
* returned.
*/
public function t($text, $parameters = array()){
if(array_key_exists($text, $this->translations)){
return vsprintf($this->translations[$text], $parameters);
}
return vsprintf($text, $parameters);
return new OC_L10N_String($this, $text, $parameters);
}
/**
......@@ -144,7 +158,7 @@ class OC_L10N{
public function tA($textArray){
$result = array();
foreach($textArray as $key => $text){
$result[$key] = $this->t($text);
$result[$key] = (string)$this->t($text);
}
return $result;
}
......@@ -156,6 +170,7 @@ class OC_L10N{
* Returns an associative array with all translations
*/
public function getTranslations(){
$this->init();
return $this->translations;
}
......@@ -182,6 +197,7 @@ class OC_L10N{
* - params: timestamp (int/string)
*/
public function l($type, $data){
$this->init();
switch($type){
// If you add something don't forget to add it to $localizations
// at the top of the page
......
<?php
/**
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
class OC_L10N_String{
protected $l10n;
public function __construct($l10n, $text, $parameters){
$this->l10n = $l10n;
$this->text = $text;
$this->parameters = $parameters;
}
public function __toString(){
$translations = $this->l10n->getTranslations();
if(array_key_exists($this->text, $translations)){
return vsprintf($translations[$this->text], $this->parameters);
}
return vsprintf($this->text, $this->parameters);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment