Translator.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. export default class Translator{
  2. constructor(Dcat, lang) {
  3. this.dcat = Dcat;
  4. this.lang = lang;
  5. for (let i in lang) {
  6. if (! Dcat.helpers.isset(this, i)) {
  7. this[i] = lang[i];
  8. }
  9. }
  10. }
  11. /**
  12. * 翻译
  13. *
  14. * @example
  15. * this.trans('name')
  16. * this.trans('selected_options', {':num': 18}) // :num options selected
  17. *
  18. * @param {string} label
  19. * @param {object} replace
  20. * @returns {*}
  21. */
  22. trans(label, replace) {
  23. let _this = this,
  24. helpers = _this.dcat.helpers;
  25. if (typeof _this.lang !== 'object') {
  26. return label;
  27. }
  28. var text = helpers.get(_this.lang, label), i;
  29. if (! helpers.isset(text)) {
  30. return label;
  31. }
  32. if (! replace) {
  33. return text;
  34. }
  35. for (i in replace) {
  36. text = helpers.replace(text, ':'+i, replace[i]);
  37. }
  38. return text;
  39. }
  40. }