-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIntl.php
93 lines (85 loc) · 1.94 KB
/
Intl.php
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
93
<?php
/**
* @file Intl.php
*
* description
*
* copyright (c) 2019 Frank Hellenkamp [[email protected]]
*
* @author Frank Hellenkamp [[email protected]]
*/
namespace Depage\Intl {
/**
* @brief Intl
* Class Intl
*/
class Intl
{
// {{{ setLocale()
/**
* @brief setLocale
*
* @param mixed $lang
* @return void
**/
public static function setLocale($lang)
{
$langToLocale = [
"en" => "en_US.UTF-8",
"de" => "de_DE.UTF-8",
];
$locale = $lang;
if (isset($langToLocale[$lang])) {
$locale = $langToLocale[$lang];
}
$locale = setlocale(LC_ALL, $locale);
if (is_callable("putenv")) {
putenv('LANG=' . $locale);
putenv('LC_ALL=' . $locale);
putenv('LC_MESSAGES=' . $locale);
putenv('LANGUAGE=' . $locale);
}
$_ENV['LANG'] = $locale;
$_ENV['LC_ALL'] = $locale;
$_ENV['LC_MESSAGES'] = $locale;
$_ENV['LANGUAGE'] = $locale;
}
// }}}
// {{{ getLocale()
/**
* @brief setLocale
*
* @param mixed $lang
* @return void
**/
public static function getLocale()
{
return setlocale(LC_ALL, 0);
}
// }}}
// {{{ getLanguageByBrowser()
/**
* @brief getLanguageByBrowser
*
* @param mixed $param
* @return void
**/
public static function getLanguageByBrowser($acceptString, $availableLanguages)
{
$language = $availableLanguages[0];
$browserLanguages = explode(',', $acceptString);
foreach ($browserLanguages as $l) {
$l = explode(';', $l);
$l = explode('-', $l[0]);
$l = trim($l[0]);
if (in_array($l, $availableLanguages)) {
$language = $l;
break;
}
}
return $language;
}
// }}}
}
}
// vim:set ft=php sw=4 sts=4 fdm=marker et :