4
0

Translate.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. /**
  3. * MINZ - Copyright 2011 Marien Fressinaud
  4. * Sous licence AGPL3 <http://www.gnu.org/licenses/>
  5. */
  6. /**
  7. * La classe Translate se charge de la traduction
  8. * Utilise les fichiers du répertoire /app/i18n/
  9. */
  10. class Minz_Translate {
  11. /**
  12. * $language est la langue à afficher
  13. */
  14. private static $language;
  15. /**
  16. * $translates est le tableau de correspondance
  17. * $key => $traduction
  18. */
  19. private static $translates = array();
  20. /**
  21. * Inclus le fichier de langue qui va bien
  22. * l'enregistre dans $translates
  23. */
  24. public static function init() {
  25. $l = Minz_Configuration::language();
  26. self::$language = Minz_Session::param('language', $l);
  27. $l_path = APP_PATH . '/i18n/' . self::$language . '.php';
  28. if (file_exists($l_path)) {
  29. self::$translates = include($l_path);
  30. }
  31. }
  32. /**
  33. * Alias de init
  34. */
  35. public static function reset() {
  36. self::init();
  37. }
  38. /**
  39. * Traduit une clé en sa valeur du tableau $translates
  40. * @param $key la clé à traduire
  41. * @return la valeur correspondante à la clé
  42. * > si non présente dans le tableau, on retourne la clé elle-même
  43. */
  44. public static function t($key) {
  45. $translate = $key;
  46. if (isset(self::$translates[$key])) {
  47. $translate = self::$translates[$key];
  48. }
  49. $args = func_get_args();
  50. unset($args[0]);
  51. return vsprintf($translate, $args);
  52. }
  53. /**
  54. * Retourne la langue utilisée actuellement
  55. * @return la langue
  56. */
  57. public static function language() {
  58. return self::$language;
  59. }
  60. }
  61. function _t($key) {
  62. $args = func_get_args();
  63. unset($args[0]);
  64. array_unshift($args, $key);
  65. return call_user_func_array("Minz_Translate::t", $args);
  66. }