PageRenderTime 59ms CodeModel.GetById 30ms RepoModel.GetById 0ms app.codeStats 0ms

/helpers/i18n.php

https://github.com/MilkZoft/zan
PHP | 276 lines | 243 code | 33 blank | 0 comment | 45 complexity | 82a5bfdb61987823e2ebb9538f974dd1 MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. if (!defined("ACCESS")) {
  3. die("Error: You don't have permission to access here...");
  4. }
  5. if (!function_exists("__")) {
  6. function __($text, $encode = true)
  7. {
  8. if (_get("translation") === "gettext") {
  9. global $Gettext_Reader;
  10. if (is_null($Gettext_Reader)) {
  11. return $text;
  12. }
  13. return $Gettext_Reader->translate($text);
  14. } else {
  15. global $Load, $phrase;
  16. $language = whichLanguage();
  17. $languageFile = strtolower($language);
  18. if (file_exists("www/lib/languages/". $languageFile .".php")) {
  19. include_once "www/lib/languages/". $languageFile .".php";
  20. }
  21. $position = strtolower($text);
  22. $position = str_replace(" ", "_", $position);
  23. $position = str_replace("?,", "", $position);
  24. $position = str_replace("?", "", $position);
  25. $position = str_replace("!", "", $position);
  26. $position = str_replace("ÂĄ", "", $position);
  27. $position = str_replace("Âż", "", $position);
  28. $position = str_replace(",", "", $position);
  29. $position = str_replace(":", "", $position);
  30. $position = str_replace("'", "", $position);
  31. $position = str_replace('"', "", $position);
  32. $position = str_replace(".", "", $position);
  33. $position = str_replace("&", "-", $position);
  34. if (isset($phrase[$position])) {
  35. return ($encode) ? encode($phrase[$position]) : $phrase[$position];
  36. } else {
  37. if ($language !== "English" and !_get("production")) {
  38. $content = "";
  39. $logfile = "www/lib/languages/". $languageFile .".txt";
  40. $today = date("d/m/Y");
  41. if (file_exists($logfile)) {
  42. $content = file_get_contents($logfile);
  43. }
  44. $file = @fopen($logfile, "a+");
  45. $pos = @strrpos($content, "$today");
  46. if ($pos !== false) {
  47. if (!@preg_match("/\\b" . addslashes($position) . "\\b/i", substr($content, $pos + 14))) {
  48. @fwrite($file, "$position\r\n");
  49. }
  50. } else {
  51. @fwrite($file, "--- $today ---\r\n");
  52. @fwrite($file, "$position\r\n");
  53. }
  54. }
  55. return $text;
  56. }
  57. }
  58. }
  59. }
  60. if (!function_exists("getLanguage")) {
  61. function getLanguage($lang, $flags = false)
  62. {
  63. $languages = getLanguagesFromDir();
  64. foreach ($languages as $language) {
  65. if ($flags) {
  66. if ($language["language"] === $lang) {
  67. return '<span title="'. __($lang) .'" class="flag '. strtolower($language["lang"]) .'-flag"></span>';
  68. }
  69. } else {
  70. if ($language["language"] === $lang) {
  71. return __($lang);
  72. }
  73. }
  74. }
  75. return false;
  76. }
  77. }
  78. if (!function_exists("isLang"))
  79. {
  80. function isLang($lang = false)
  81. {
  82. $lang = (!$lang) ? strtolower(segment(0)) : $lang;
  83. $langs = array(
  84. "ar", "bs", "be", "bu", "ca", "ch", "cr", "cz", "da", "du", "en", "et", "fi", "fr", "ga", "ge", "gr", "he",
  85. "hu", "in", "it", "jp", "ku", "li", "ma", "pe", "po", "pt", "ro", "ru", "se", "sk", "sn", "es", "sw", "th",
  86. "tk", "uk", "ur", "vi"
  87. );
  88. return in_array($lang, $langs) ? true : false;
  89. }
  90. }
  91. if (!function_exists("whichLanguage")) {
  92. function whichLanguage($invert = true, $lower = false)
  93. {
  94. global $Load;
  95. $Load->helper("router");
  96. if (isLang(segment(0))) {
  97. if (segment(0) and !$invert) {
  98. return segment(0);
  99. } elseif (segment(0) and getLang(segment(0), true)) {
  100. return ($lower) ? strtolower(getLang(segment(0), true)) : getLang(segment(0), true);
  101. } elseif (!$invert) {
  102. return getLang(_get("webLanguage"));
  103. } else {
  104. return ($lower) ? strtolower(_get("webLanguage")) : _get("webLanguage");
  105. }
  106. } else {
  107. if (!$invert) {
  108. return getLang(_get("webLanguage"));
  109. } else {
  110. return ($lower) ? strtolower(_get("webLanguage")) : _get("webLanguage");
  111. }
  112. }
  113. }
  114. }
  115. if (!function_exists("getLanguages")) {
  116. function getLanguages($flags = false)
  117. {
  118. $data = array();
  119. $languages = getLanguagesFromDir();
  120. foreach ($languages as $language) {
  121. $default = ($language["language"] === _get("webLanguage")) ? true : false;
  122. $data[] = array("default" => $default, "name" => $language["language"], "value" => getLanguage($language["language"], $flags));
  123. }
  124. return $data;
  125. }
  126. }
  127. if (!function_exists("getLanguagesInput")) {
  128. function getLanguagesInput($lang = null, $name = "language", $input = "radio")
  129. {
  130. $languages = getLanguages(true);
  131. $HTML = null;
  132. if ($input === "select") {
  133. $HTML = '<select id="language" name="'. $name .'" size="1">';
  134. }
  135. foreach ($languages as $language) {
  136. if (!isset($checked)) {
  137. if (!is_null($lang)) {
  138. if ($lang === $language["name"]) {
  139. $check = ($input === "radio") ? ' checked="checked"' : ' selected="selected"';
  140. $checked = true;
  141. } else {
  142. $check = null;
  143. }
  144. } else {
  145. if ($language["default"] === true) {
  146. $check = ($input === "radio") ? ' checked="checked"' : ' selected="selected"';
  147. $checked = true;
  148. }
  149. }
  150. }
  151. $show = isset($check) ? $check : null;
  152. if ($input === "radio") {
  153. $HTML .= ' <input id="language" name="'. $name .'" type="radio" value="'. $language["name"] .'" '. $show .' /> '. $language["value"] .' ';
  154. } elseif ($input === "select") {
  155. $HTML .= ' <option value="'. $language["name"] .'"'. $show .'>'. __($language["name"]) .'</option>';
  156. }
  157. unset($check);
  158. }
  159. if ($input === "select") {
  160. $HTML .= '</select>';
  161. }
  162. return $HTML;
  163. }
  164. }
  165. if (!function_exists("getLocal")) {
  166. function getLocal($lang = false)
  167. {
  168. if (!$lang) {
  169. $lang = whichLanguage();
  170. }
  171. $languages = array(
  172. "Arabic" => "ar_AR", "Basque" => "eu_ES", "Belarusian" => "be_BY", "Bulgarian" => "bg_BG", "Catalan" => "ca_ES",
  173. "Chinese" => "zh_CN", "Croatian" => "hr_HR", "Czech" => "cs_CZ", "Danish" => "da_DK", "Dutch" => "nl_NL",
  174. "English" => "en_US", "Estonian" => "et_EE", "Finnish" => "fi_FI", "French" => "fr_FR", "Galician" => "gl_ES",
  175. "German" => "de_DE", "Greek" => "el_GR", "Hebrew" => "he_IL", "Hungarian" => "hu_HU", "Indonesian" => "id_ID",
  176. "Italian" => "it_IT", "Japanese" => "ja_JP", "Kurdish" => "ku_TR", "Lithuanian" => "lt_LT", "Macedonian" => "mk_MK",
  177. "Persian" => "Persian", "Polish" => "pl_PL", "Portuguese" => "pt_BR", "Romanian" => "ro_RO", "Russian" => "ru_RU",
  178. "Serbian" => "sr_RS", "Slovak" => "sk_SK", "Slovenian" => "sl_SI", "Spanish" => "es_LA", "Swedish" => "sv_SE",
  179. "Thai" => "th_TH", "Turkish" => "tr_TR", "Ukrainian" => "uk_UA", "Vietnamese" => "vi_VN"
  180. );
  181. foreach ($languages as $language => $locale) {
  182. if ($language === $lang) {
  183. return $locale;
  184. }
  185. }
  186. }
  187. }
  188. if (!function_exists("getLang")) {
  189. function getLang($lg, $invert = false)
  190. {
  191. $languages = array(
  192. "Arabic" => "ar", "Basque" => "bs", "Belarusian" => "be", "Bulgarian" => "bu", "Catalan" => "ca", "Chinese" => "ch",
  193. "Croatian" => "cr", "Czech" => "cz", "Danish" => "da", "Dutch" => "du", "English" => "en", "Estonian" => "et",
  194. "Finnish" => "fi", "French" => "fr", "Galician" => "ga", "German" => "ge", "Greek" => "gr", "Hebrew" => "he",
  195. "Hungarian" => "hu", "Indonesian" => "in", "Italian" => "it", "Japanese" => "jp", "Kurdish" => "ku", "Lithuanian" => "li",
  196. "Macedonian" => "ma", "Persian" => "pe", "Polish" => "po", "Portuguese" => "pt", "Romanian" => "ro", "Russian" => "ru",
  197. "Serbian" => "se", "Slovak" => "sk", "Slovenian" => "sn", "Spanish" => "es", "Swedish" => "sw", "Thai" => "th",
  198. "Turkish" => "tk", "Ukrainian" => "uk", "Vietnamese" => "vi"
  199. );
  200. foreach ($languages as $language => $lang) {
  201. if ($invert) {
  202. if ($lg === $lang) {
  203. return $language;
  204. }
  205. } else {
  206. if ($language === $lg) {
  207. return $lang;
  208. }
  209. }
  210. }
  211. return ($invert) ? "English" : "en";
  212. }
  213. }
  214. if (!function_exists("getLanguagesFromDir")) {
  215. function getLanguagesFromDir()
  216. {
  217. $path = "www/lib/languages";
  218. $dir = dir($path);
  219. $i = 1;
  220. $languages = array();
  221. while ($element = $dir->read()) {
  222. if ($element !== ".." and $element !== "." and $element !== ".DS_Store" and $element !== "index.html") {
  223. $language = str_replace("language.", "", $element);
  224. $parts = explode(".", $language);
  225. if (count($parts) > 1) {
  226. if ($parts[1] === "php") {
  227. $languages[$i]["language"] = ucfirst($parts[0]);
  228. $languages[$i]["lang"] = getLang(ucfirst($parts[0]));
  229. $i++;
  230. }
  231. }
  232. }
  233. }
  234. $dir->close();
  235. return $languages;
  236. }
  237. }