MediaWikiI18N.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. /**
  3. * This program is free software; you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation; either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License along
  14. * with this program; if not, write to the Free Software Foundation, Inc.,
  15. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  16. * http://www.gnu.org/copyleft/gpl.html
  17. *
  18. * @file
  19. */
  20. /**
  21. * Wrapper object for MediaWiki's localization functions,
  22. * to be passed to the template engine.
  23. *
  24. * @private
  25. * @ingroup Skins
  26. */
  27. class MediaWikiI18N {
  28. private $context = [];
  29. /**
  30. * @deprecate since 1.31 Use BaseTemplate::msg() or Skin::msg() instead for setting
  31. * message parameters.
  32. */
  33. function set( $varName, $value ) {
  34. wfDeprecated( __METHOD__, '1.31' );
  35. $this->context[$varName] = $value;
  36. }
  37. /**
  38. * @deprecate since 1.31 Use BaseTemplate::msg(), Skin::msg(), or wfMessage() instead.
  39. */
  40. function translate( $value ) {
  41. wfDeprecated( __METHOD__, '1.31' );
  42. // Hack for i18n:attributes in PHPTAL 1.0.0 dev version as of 2004-10-23
  43. $value = preg_replace( '/^string:/', '', $value );
  44. $value = wfMessage( $value )->text();
  45. // interpolate variables
  46. $m = [];
  47. while ( preg_match( '/\$([0-9]*?)/sm', $value, $m ) ) {
  48. list( $src, $var ) = $m;
  49. Wikimedia\suppressWarnings();
  50. $varValue = $this->context[$var];
  51. Wikimedia\restoreWarnings();
  52. $value = str_replace( $src, $varValue, $value );
  53. }
  54. return $value;
  55. }
  56. }