Initial translation

This commit is contained in:
Matteo Gheza 2020-07-02 21:45:45 +02:00
parent 790685e7c4
commit 20688e43b8
6 changed files with 87 additions and 9 deletions

View File

@ -481,12 +481,68 @@ class user{
}
}
class translations{
public $loaded_languages = ["en"];
public $default_language = "en";
public $language = "en";
public $client_languages = ["en"];
public $loaded_translations = [];
public $filename = "";
public function client_languages() {
$client_languages = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
if(strpos($client_languages, ';') == false){
if(strpos($client_languages, '-') !== false){
return [substr($client_languages, 0, 5)];
} else {
return [substr($client_languages, 0, 2)];
}
} else {
$client_languages = explode(",", $client_languages);
$tmp_languages = [];
foreach($client_languages as $key=>$language){
if(strpos($language, ';') == false){
$tmp_languages[$language] = 1;
} else {
$tmp_languages[explode(";q=",$language)[0]] = (float) explode(";q=",$language)[1];
}
}
arsort($tmp_languages);
return array_keys($tmp_languages);
}
}
public function __construct(){
$this->client_languages = $this->client_languages();
foreach($this->client_languages as $language){
if(in_array($language, $this->loaded_languages)){
$this->language = $language;
}
}
}
public function translate($string){
try {
$this->filename = "translations/".$this->language."/".pathinfo(array_reverse(debug_backtrace())[0]['file'])['basename'];
if (!file_exists($this->filename))
throw new Exception ('file does not exist');
$this->loaded_translations = require($this->filename);
if (!in_array($string, $this->loaded_translations))
throw new Exception ('string does not exist');
return $this->loaded_translations[$string];
} catch (\Exception $e) {
return $string;
}
}
}
function init_class(){
global $user, $tools, $database;
if(!isset($user) && !isset($tools) && !isset($database)){
global $tools, $database, $user, $translations;
if(!isset($tools) && !isset($database) && !isset($translations)){
$database = new database();
$tools = new tools($database->getOption("check_cf_ip"));
$user = new user($database, $tools);
$translations = new translations();
}
//if($user->requireRole(Role::DEVELOPER)){
Debugger::enable(Debugger::DEVELOPMENT, __DIR__ . '/error-log');

View File

@ -24,10 +24,10 @@ $("#err").delay(5000).fadeOut(300);
<div class="container text-center" id="modulogin">
<form method="post">
<img alt="VVF" src="{{ urlsoftware }}/risorse/images/logo.png" class="img-resposive"><br><br><br>
<input type="text" name="name" placeholder="name" required autocomplete="username" autofocus><br><br>
<input type="password" name="password" placeholder="Password" required autocomplete="current-password"><br><br>
<input type="checkbox" name="connesso" value='1' id="connesso" hidden checked><label hidden for='connesso'>Rimani Connesso</label><br>
<input type="submit" name="login" class="btn btn-lg btn-success" value="Accedi">
<input type="text" name="name" placeholder="{{ 'username'|t }}" required autocomplete="username" autofocus><br><br>
<input type="password" name="password" placeholder="{{ 'password'|t }}" required autocomplete="current-password"><br><br>
<input type="checkbox" name="connesso" value='1' id="connesso" hidden checked><label hidden for='connesso'>{{ 'Stay connected'|t }}</label><br>
<input type="submit" name="login" class="btn btn-lg btn-success" value="{{ 'Login'|t }}">
</form>
</div>
<br><br>

View File

@ -3,10 +3,10 @@
{% block content %}
<br>
<div class="text-center">
<p>Sei avaible in caso di allerta?</p>
<button class="btn btn-lg btn-success " onclick="Attivo('{{ user.id }}')">Attivo</button>
<p>{{ 'Are you avaible in case of alert?'|t }}</p>
<button class="btn btn-lg btn-success " onclick="Attivo('{{ user.id }}')">{{ 'Active'|t }}</button>
<button class="btn btn-lg btn-danger" style="background-color: red" onclick="NonAttivo('{{ user.id }}')">Non Attivo</button>
<button class="btn btn-lg btn-danger" style="background-color: red" onclick="NonAttivo('{{ user.id }}')">{{ 'Not Active'|t }}</button>
</div>
<script defer>
function Attivo(id){

View File

@ -0,0 +1,9 @@
<?php
// Translated by: Name Surname (github, email or another social profile url/username)
return [
"username" => "username",
"password" => "password",
"Stay connected" => "Stay connected",
"Login" => "Login"
];

View File

@ -0,0 +1,8 @@
<?php
// Translated by: Name Surname (github, email or another social profile url/username)
return [
"Are you avaible in case of alert?" => "Are you avaible in case of alert?",
"Active" => "Active",
"Not Active" => "Not Active"
];

View File

@ -7,9 +7,14 @@ try {
} catch (Exception $e) {
$loader = new \Twig\Loader\FilesystemLoader('../templates');
}
$filter = new \Twig\TwigFilter('t', function ($string) {
global $translations;
return $translations->translate($string);
});
$twig = new \Twig\Environment($loader, [
//'cache' => 'compilation'
]);
$twig->addFilter($filter);
$template = NULL;
function loadtemplate($templatename, $data, $requirelogin=true){
global $database, $user, $twig, $template;