i18n.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. // Functions for internationalization
  3. // I18N support information here
  4. putenv("LANGUAGE=" . detect_user_language());
  5. setlocale(LC_ALL, "C.UTF-8");
  6. $domain = "hestiacp";
  7. $localedir = "/usr/local/hestia/web/locale";
  8. bindtextdomain($domain, $localedir);
  9. textdomain($domain);
  10. /**
  11. * Detects user language from Accept-Language HTTP header.
  12. * @param string Fallback language (default: 'en')
  13. * @return string Language code (such as 'en' and 'ja')
  14. */
  15. function detect_user_language() {
  16. if (!empty($_SESSION["language"])) {
  17. return $_SESSION["language"];
  18. } elseif (!empty($_SESSION["LANGUAGE"])) {
  19. return $_SESSION["LANGUAGE"];
  20. } else {
  21. return "en";
  22. }
  23. }
  24. /**
  25. * Translate ISO2 to "Language"
  26. * nl = Dutch, de = German
  27. * @param string iso2 code
  28. * @return string Language
  29. */
  30. function translate_json($string) {
  31. $json = file_get_contents($_SERVER["DOCUMENT_ROOT"] . "/locale/languages.json");
  32. $json_a = json_decode($json, true);
  33. return $json_a[$string][0] . " (" . $json_a[$string . "_locale"][0] . ")";
  34. }
  35. /**
  36. * Support translation strings that contains html
  37. */
  38. function htmlify_trans($string, $closingTag) {
  39. $arguments = func_get_args();
  40. return preg_replace_callback(
  41. "/{(.*?)}/", // Ungreedy (*?)
  42. function ($matches) use ($arguments, $closingTag) {
  43. static $i = 1;
  44. $i++;
  45. return $arguments[$i] . $matches[1] . $closingTag;
  46. },
  47. $string,
  48. );
  49. }
  50. function get_email_template($file, $language) {
  51. if (
  52. file_exists(
  53. $_SERVER["HESTIA"] . "/data/templates/email/" . $language . "/" . $file . ".html",
  54. )
  55. ) {
  56. return file_get_contents(
  57. $_SERVER["HESTIA"] . "/data/templates/email/" . $language . "/" . $file . ".html",
  58. );
  59. }
  60. if (file_exists($_SERVER["HESTIA"] . "/data/templates/email/" . $file . ".html")) {
  61. return file_get_contents($_SERVER["HESTIA"] . "/data/templates/email/" . $file . ".html");
  62. }
  63. return false;
  64. }
  65. function translate_email($string, $replace) {
  66. $array1 = $array2 = [];
  67. foreach ($replace as $key => $value) {
  68. $array1[] = "{{" . $key . "}}";
  69. $array2[] = $value;
  70. }
  71. return str_replace($array1, $array2, $string);
  72. }
  73. /**
  74. * Detects user language .
  75. * @param string Fallback language (default: 'en')
  76. * @return string Language code (such as 'en' and 'ja')
  77. */
  78. function detect_login_language() {
  79. }