Added fallback to default language for phrases

. added fallback to default language in PhrasesLib.php
. fixed small issues concerning right translation in PhrasesLib.php
. all other files: adding translation for Infocenter overview + details page (client- and serverside)
This commit is contained in:
Cris
2018-06-06 10:00:17 +02:00
parent 7c5995c318
commit efebfddd58
14 changed files with 501 additions and 86 deletions
+75 -8
View File
@@ -182,6 +182,10 @@ class PhrasesLib
/**
* Retrives a phrases from the the property _phrases with the given parameters
* It also replace parameters inside the phrase if they are provided
* @param string $category Category name which is used to categorize the phrase.
* @param string $phrase Phrase name.
* @param array $parameters Array of String var(s) to be set into phrases' placeholder values (order matters).
* @return string Phrase text
*/
public function t($category, $phrase, $parameters = array(), $orgeinheit_kurzbz = null, $orgform_kurzbz = null)
{
@@ -217,18 +221,21 @@ class PhrasesLib
/**
* Extends the functionalities of the constructor of this class
* This is a workaround to use more parameters in the construct since PHP doesn't support many constructors
* The new accepted parameters are:
* - categories:
* @param (array) $params Array of categories and (optional) language.
* categories:
* - could be a string or an array of strings. These are the categories used to load phrases
* - could be an array of categories, and for each category there is an array of phrases
* - language: optional parameter must be a string. It's used to load phrases
* language: optional parameter must be a string. It's used to load phrases
* stores phrases-array in property $_phrases
*/
private function _extend_construct($params)
{
// Checks if the $params is an array with at least one element
if (is_array($params) && count($params) > 0)
{
$parameters = $params[0]; // temporary variable
$parameters = $params[0]; // temporary variable
$indexArray = false; //flag for indexed array
$assocArray = false; //flag for associative array
// If there are parameters
if (is_array($parameters) && count($parameters) > 0)
@@ -252,16 +259,75 @@ class PhrasesLib
$language = $this->_ci->PersonModel->getLanguage(getAuthUID());
}
// checks if categories is associative or indexed array
// Checks if categories is associative or indexed array
if (ctype_digit(implode('', array_keys($categories))))
{
// Loads phrases
// is indexed array -> Loads phrases
$indexArray = true;
$phrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndLanguage($categories, $language);
}
else
{
// Loads specific phrasentexte by category and phrases
$phrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndPhrasesAndLanguage($categories, $language);
// is assoc array -> Loads specific phrasentexte by category and phrases
$assocArray = true;
$phrases = $this->_ci->PhraseModel
->getPhrasesByCategoryAndPhrasesAndLanguage($categories, $language);
}
// If language is not default language and phrasentext is null -> fallback to default language
if ($language != DEFAULT_LANGUAGE)
{
// get array with phrasentexte in the default language
$defaultPhrases = array();
if ($indexArray)
{
$defaultPhrases = $this->_ci->PhraseModel
->getPhrasesByCategoryAndLanguage($categories, DEFAULT_LANGUAGE);
}
elseif ($assocArray)
{
$defaultPhrases = $this->_ci->PhraseModel
->getPhrasesByCategoryAndPhrasesAndLanguage($categories, DEFAULT_LANGUAGE);
}
// combine array with phrasentexte in users language and in default language
// (default used if phrasentext in users language is null or not set)
$phrasesArr = array();
if (!empty($phrases->retval))
{
// loop through phrases in default language
foreach ($defaultPhrases->retval as $defaultPhrase)
{
$phraseObj = new stdClass();
$found = false; // flag for found phrase
// loop through phrases in users language
foreach ($phrases->retval as $phrase)
{
// if same phrase and category found and text is not null
// use phrase in users language
if ($phrase->phrase === $defaultPhrase->phrase
&& $phrase->category === $defaultPhrase->category
&& !is_null($phrase->text))
{
$found = true;
array_push($phrasesArr, $phrase);
break;
}
}
// otherwise use phrase in default language
if (!$found)
{
array_push($phrasesArr, $defaultPhrase);
}
}
$phrases->retval = $phrasesArr;
}
else
{
$phrases->retval = $defaultPhrases->retval;
}
}
// If there are phrases loaded then store them in the property _phrases
@@ -275,6 +341,7 @@ class PhrasesLib
/**
* Returns the property _phrases JSON encoded
* @return json encoded property _phrases
*/
public function getJSON()
{
@@ -12,10 +12,10 @@
'tablesorter' => true,
'ajaxlib' => true,
'filterwidget' => true,
'phrases'=> array(
'phrases' => array(
'person' => array('vorname', 'nachname'),
'ui' => array('speichern'),
'global' => array('mailAnXversandt')
'global' => array('mailAnXversandt'),
'ui' => array('bitteEintragWaehlen')
),
'navigationwidget' => true,
'customCSSs' => 'public/css/sbadmin2/tablesort_bootstrap.css',
@@ -33,12 +33,17 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">Infocenter <?php echo ucfirst($this->p->t('global', 'uebersicht')); ?></h3>
<h3 class="page-header">Infocenter
<?php echo ucfirst($this->p->t('global', 'uebersicht')); ?>
</h3>
</div>
</div>
<div>
<?php
$this->load->view('system/infocenter/infocenterData.php', array('fhc_controller_id' => $fhc_controller_id));
$this->load->view(
'system/infocenter/infocenterData.php',
array('fhc_controller_id' => $fhc_controller_id)
);
?>
</div>
</div>
@@ -24,8 +24,33 @@
array(
'public/js/bootstrapper.js',
'public/js/tablesort/tablesort.js',
'public/js/infocenter/infocenterDetails.js')
'public/js/infocenter/infocenterDetails.js'
),
'phrases' =>
array(
'infocenter' =>
array(
'notizHinzufuegen',
'notizAendern',
'bewerberParken',
'bewerberAusparken',
'nichtsZumAusparken',
'fehlerBeimAusparken',
'fehlerBeimParken',
'bewerberGeparktBis'
),
'ui' =>
array(
'gespeichert',
'fehlerBeimSpeichern'
),
'global' =>
array(
'bis',
'zeilen'
)
)
)
);
?>
<body>
@@ -44,14 +69,17 @@
</div>
<div class="col-lg-4">
<div class="headerright text-right">
<?php echo $this->p->t('global', 'wirdBearbeitetVon') . ':' ?>
<?php echo $this->p->t('global', 'wirdBearbeitetVon').':' ?>
<?php
if (isset($lockedby)):
echo $lockedby;
?>
&nbsp;&nbsp;
<a href="../unlockPerson/<?php echo $stammdaten->person_id; ?>?fhc_controller_id=<?php echo $fhc_controller_id; ?>"><i
class="fa fa-sign-out"></i>&nbsp;<?php echo ucfirst($this->p->t('ui', 'freigeben')) ?></a>
<a href="../unlockPerson/<?php echo $stammdaten->person_id; ?>
?fhc_controller_id=<?php echo $fhc_controller_id; ?>">
<i class="fa fa-sign-out"></i>&nbsp;
<?php echo ucfirst($this->p->t('ui', 'freigeben')) ?>
</a>
<?php endif; ?>
</div>
</div>
@@ -61,7 +89,9 @@
<div class="row">
<div class="col-lg-12">
<div class="panel panel-primary">
<div class="panel-heading text-center"><h4><?php echo ucfirst($this->p->t('global','stammdaten')) ?></h4></div>
<div class="panel-heading text-center">
<h4><?php echo ucfirst($this->p->t('global', 'stammdaten')) ?></h4>
</div>
<div class="panel-body">
<?php $this->load->view('system/infocenter/stammdaten.php'); ?>
<?php $this->load->view('system/infocenter/anmerkungenZurBewerbung.php'); ?>
@@ -75,7 +105,9 @@
<div class="col-lg-12">
<div class="panel panel-primary">
<a name="DokPruef"></a><!-- anchor for jumping to the section -->
<div class="panel-heading text-center"><h4><?php echo ucfirst($this->p->t('infocenter','dokumentenpruefung')) ?></h4></div>
<div class="panel-heading text-center">
<h4><?php echo ucfirst($this->p->t('infocenter', 'dokumentenpruefung')) ?></h4>
</div>
<div class="panel-body">
<?php $this->load->view('system/infocenter/dokpruefung.php'); ?>
</div> <!-- ./panel-body -->
@@ -89,7 +121,8 @@
<div class="panel panel-primary">
<div class="panel-heading text-center">
<a name="ZgvPruef"></a>
<h4><?php echo $this->p->t('infocenter', 'zgv') . ' - ' . ucfirst($this->p->t('lehre','pruefung'))?></h4>
<h4><?php echo $this->p->t('infocenter', 'zgv'). ' - '.
ucfirst($this->p->t('lehre', 'pruefung'))?></h4>
</div>
<div class="panel-body">
<?php $this->load->view('system/infocenter/zgvpruefungen.php'); ?><!-- /.panel-group -->
@@ -104,7 +137,7 @@
<div class="panel panel-primary">
<div class="panel-heading text-center">
<a name="Nachrichten"></a>
<h4 class="text-center"><?php echo ucfirst($this->p->t('global','nachrichten')) ?></h4>
<h4 class="text-center"><?php echo ucfirst($this->p->t('global', 'nachrichten')) ?></h4>
</div>
<div class="panel-body">
<div class="row">
@@ -123,7 +156,8 @@
<div class="panel panel-primary">
<div class="panel-heading text-center">
<a name="NotizAkt"></a>
<h4 class="text-center"><?php echo ucfirst($this->p->t('global','notizen')) . ' & ' . ucfirst($this->p->t('global','aktivitaeten')) ?></h4>
<h4 class="text-center"><?php echo ucfirst($this->p->t('global', 'notizen')). ' & '.
ucfirst($this->p->t('global', 'aktivitaeten')) ?></h4>
</div>
<div class="panel-body">
<div class="row">
@@ -17,13 +17,13 @@ $this->load->view(
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">Zugangsvoraussetzungen <?php echo $studiengang_kurzbz; ?> - <?php echo $studiengang_bezeichnung; ?></h3>
<h3 class="page-header"><?php echo $this->p->t('infocenter', 'zugangsvoraussetzungen'); ?> <?php echo $studiengang_kurzbz; ?> - <?php echo $studiengang_bezeichnung; ?></h3>
</div>
</div>
<div id="data">
<?php if (empty($data)): ?>
Keine Zugangsvoraussetzungen für den Studiengang definiert
<?php
<?php echo $this->p->t('infocenter', 'keineZugangsvoraussetzungenTxt'); ?>
<?php
else:
echo json_decode($data);
endif;
@@ -201,7 +201,7 @@
</div>
</div>
<div class="col-lg-<?php echo $columns[3] ?>">
<div class="form-group"><label><?php echo $this->p->t('infocenter', 'zgv') . ' ' . $this->p->t('lehre','master') . ' ' . $this->p->t('person','nation') . ':'?></label>
<div class="form-group"><label><?php echo $this->p->t('infocenter', 'zgv') . ' ' . $this->p->t('lehre','master') . ' ' . $this->p->t('person', 'nation') . ':'?></label>
<?php
if ($infoonly)
echo $zgvpruefung->zgvmanation_bez;
@@ -220,7 +220,7 @@
<div class="row">
<div class="col-xs-6 text-left">
<button type="button" class="btn btn-default zgvUebernehmen" id="zgvUebernehmen_<?php echo $zgvpruefung->prestudent_id ?>">
<?php echo $this->p->t('infocenter', 'letzteZgvUebernehmen') ?>
<?php echo $this->p->t('infocenter', 'letzteZgvUebernehmen') ?>
</button>
</div>
<div class="col-xs-6 text-right">
@@ -248,7 +248,7 @@
class="d-inline float-right"
required>
<option value="null"
selected="selected"><?php echo $this->p->t('infocenter', 'absagegrund', array($this->p->t('global', 'waehlen'))) . '...' ?>
selected="selected"><?php echo ucfirst($this->p->t('infocenter', 'absagegrund')) . '...' ?>
</option>
<?php foreach ($statusgruende as $statusgrund): ?>
<option value="<?php echo $statusgrund->statusgrund_id ?>"><?php echo $statusgrund->bezeichnung_mehrsprachig[0] ?></option>
@@ -322,7 +322,7 @@
data-toggle="modal"
data-target="#freigabeModal_<?php echo $zgvpruefung->prestudent_id ?>"
data-toggle="tooltip" title="<?php echo $disabledTxt ?>">
<?php echo $this->p->t('ui', 'freigabeAnStudiengang') ?>
<?php echo $this->p->t('ui', 'freigabeAnStudiengang') ?>
</button>
</div>
</div>
@@ -339,10 +339,10 @@
</button>
<h4 class="modal-title"
id="freigabeModalLabel">
<?php echo $this->p->t('global', 'freigabeBestaetigen') ?></h4>
<?php echo $this->p->t('infocenter', 'freigabeBestaetigen') ?></h4>
</div>
<div class="modal-body">
<?php echo $this->p->t('infocenter', 'interessentFreigebenTxt') ?>
<?php echo $this->p->t('infocenter', 'interessentFreigebenTxt') ?>
</div>
<div class="modal-footer">
<button type="button"
@@ -352,7 +352,7 @@
<a href="../saveFreigabe/<?php echo $zgvpruefung->prestudent_id ?>">
<button type="button"
class="btn btn-primary">
<?php echo $this->p->t('infocenter', 'interessentFreigeben') ?>
<?php echo $this->p->t('infocenter', 'interessentFreigeben') ?>
</button>
</a>
</div>
+1 -1
View File
@@ -95,7 +95,7 @@ function _generateJSPhrasesStorageObject($phrases)
$toPrint = "\n";
$toPrint .= '<script type="text/javascript">';
$toPrint = "\n";
$toPrint .= "\n";
$toPrint .= 'var FHC_JS_PHRASES_STORAGE_OBJECT = '.$ci->pj->getJSON();
$toPrint .= "\n";
$toPrint .= '</script>';
@@ -2,14 +2,14 @@
<div>
<span class="filter-options-span">
Filter description:
<?php echo ucfirst($this->p->t('global', 'beschreibung')); ?>:
</span>
<span>
<input type="text" id="customFilterDescription" value="">
</span>
<span>
<input type="button" id="saveCustomFilterButton" value="Save filter">
<input type="button" id="saveCustomFilterButton" value="<?php echo ucfirst($this->p->t('ui', 'speichern')); ?>">
</span>
</div>
@@ -2,7 +2,7 @@
<div>
<span class="filter-options-span">
Add field:
<?php echo ucfirst($this->p->t('filter', 'feldHinzufuegen')); ?>:
</span>
<span>
@@ -4,7 +4,7 @@
<div>
<span class="filter-options-span">
Add filter:
<?php echo ucfirst($this->p->t('filter', 'filterHinzufuegen')); ?>:
</span>
<span>
@@ -12,6 +12,6 @@
</span>
<span>
<input id="applyFilter" type="button" value="Apply filter">
<input id="applyFilter" type="button" value="<?php echo ucfirst($this->p->t('global', 'hinzufuegen')); ?>">
</span>
</div>