mirror of
https://github.com/nextcloud/server.git
synced 2026-04-22 06:37:56 -04:00
Delay loading of translations until they are used
This commit is contained in:
parent
a1364c9726
commit
d4044d0283
2 changed files with 48 additions and 7 deletions
30
lib/l10n.php
30
lib/l10n.php
|
|
@ -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
|
||||
|
|
|
|||
25
lib/l10n/string.php
Normal file
25
lib/l10n/string.php
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<?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);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue