UNPKG

phaser4-rex-plugins

Version:
70 lines (53 loc) 1.86 kB
import EventEmitterMethods from './utils/eventemitter/EventEmitterMethods.js'; import Awaitloader from './awaitloader.js'; import i18next from 'i18next'; import Backend from 'i18next-http-backend'; import TextTranslation from './texttranslation.js'; class TextTranslationPlugin extends Phaser.Plugins.BasePlugin { constructor(pluginManager) { super(pluginManager); // Event emitter this.setEventEmitter(); this.i18next = i18next; TextTranslation.setI18Next(i18next); // Route 'languageChanged' event this.onLanguageChanged = (function (lng) { this.emit('languageChanged', lng); }).bind(this); i18next.on('languageChanged', this.onLanguageChanged); } start() { var eventEmitter = this.game.events; eventEmitter.on('destroy', this.destroy, this); } destroy() { i18next.off('languageChanged', this.onLanguageChanged); super.destroy(); this.destroyEventEmitter(); } initI18Next(scene, config) { Awaitloader.call(scene.load, function (successCallback, failureCallback) { i18next.use(Backend).init(config, successCallback); }) return this; } add(gameObject, config) { return new TextTranslation(gameObject, config); } changeLanguage(lng, onComplete) { i18next.changeLanguage(lng, onComplete); return this; } setDefaultNamespace(namespace) { i18next.setDefaultNamespace(namespace); return this; } t(translationKey, interpolation) { return i18next.t(translationKey, interpolation); } } Object.assign( TextTranslationPlugin.prototype, EventEmitterMethods ); export default TextTranslationPlugin;