i18n.js 909 B

12345678910111213141516171819202122232425262728293031323334353637
  1. const {defaultSettings} = require('./default.json');
  2. var i18n = require('../i18n/allLangs.json');
  3. Object.keys(i18n.allLangs.names).forEach( lang => i18n[lang] = require('../i18n/' + lang + '.json') );
  4. class Lang {
  5. constructor(lang = defaultSettings.lang, namespace = '') {
  6. this.lang = lang;
  7. this.namespace = namespace;
  8. }
  9. get(message = '') {
  10. if ( this.namespace.length ) message = this.namespace + '.' + message;
  11. let args = ( message.length ? message.split('.') : [] );
  12. let lang = this.lang;
  13. let text = i18n?.[lang];
  14. for (let n = 0; n < args.length; n++) {
  15. if ( text ) {
  16. text = text?.[args[n]];
  17. }
  18. else if ( lang !== defaultSettings.lang ) {
  19. lang = defaultSettings.lang;
  20. text = i18n?.[lang];
  21. n = 0;
  22. }
  23. else {
  24. n = args.length;
  25. }
  26. }
  27. return ( text || '⧼' + message + '⧽' );
  28. }
  29. static allLangs() {
  30. return i18n.allLangs;
  31. }
  32. }
  33. module.exports = Lang;