-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlanguage.php
More file actions
92 lines (84 loc) · 2.02 KB
/
language.php
File metadata and controls
92 lines (84 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
if(session_status() == PHP_SESSION_NONE) {
session_start();
}
if(!isset($_SESSION['language'])) {
$myLang = null;
$lang = isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])? $_SERVER["HTTP_ACCEPT_LANGUAGE"] : [];
$langs = array();
foreach(explode(',', $lang) as $entry) {
$string = explode(';', $entry);
switch(count($string)) {
case 1:
$langs[] = array($string[0], 1.0);
break;
case 2:
$stringTwo = explode('=', $string[1]);
$langs[] = array($string[0], floatval($stringTwo[1]));
break;
}
}
usort($langs, function($a, $b) {
if($a[1]==$b[1]) {
return 0;
} elseif($a[1]>$b[1]) {
return -1;
}
return 1;
});
foreach($langs as $lang) {
if(isset($dictionary[$lang[0]])) {
$myLang = $lang[0];
break;
}
}
$myLang = $myLang? $myLang : DEFAULT_LANGUAGE;
$_SESSION['language'] = $myLang;
}
$language = $_SESSION['language'];
$file = __DIR__."/dictionary/{$language}/global.php";
if(!file_exists($file)) {
$language = DEFAULT_LANGUAGE;
$_SESSION['language'] = $language;
$file = __DIR__."/dictionary/{$language}/global.php";
}
define('LANGUAGE', $language);
define('LANGUAGE_FILE', $file);
/**
* Printa a string localizada
*
* @param string $string
* @return string
*/
function __(string $string)
{
if(!defined('LANGUAGE_DATA')) {
$data = require_once LANGUAGE_FILE;
define('LANGUAGE_DATA', $data);
}
if(!isset(LANGUAGE_DATA[$string])) {
return $string;
}
if(!preg_match_all('/\:([a-zA-Z-_]+)/', $string, $matches)) {
return LANGUAGE_DATA[$string];
}
$value = LANGUAGE_DATA[$string];
foreach($matches[0] as $index => $match) {
$replacement = isset(func_get_args()[$index+1])? func_get_args()[$index+1]: null;
$value = str_replace($match, $replacement, $value);
}
return $value;
}
/**
* Busca linguages disponíveis
*
* @return array
*/
function languages()
{
$files = glob('dictionary/*/');
foreach($files as &$data) {
$data = include "{$data}/data.php";
}
return $files;
}