Skip to content

Instantly share code, notes, and snippets.

@ro0gr
Last active December 17, 2016 08:39
Show Gist options
  • Select an option

  • Save ro0gr/30453afa577921515a24c41324f4dbab to your computer and use it in GitHub Desktop.

Select an option

Save ro0gr/30453afa577921515a24c41324f4dbab to your computer and use it in GitHub Desktop.
declarative translations
import Ember from 'ember';
const { computed } = Ember;
export default Ember.Component.extend({
content: computed('translation.content', function() {
if ('then' in translation) {
return translation.content;
} else {
return translation;
}
}),
}).reopenClass({
positionalParams: ['translation']
});
import Ember from 'ember';
import emulateTranslationLoad from '../utils/load-t';
const {
Controller,
computed,
ObjectProxy,
PromiseProxyMixin
} = Ember;
let ObjectPromiseProxy = ObjectProxy.extend(PromiseProxyMixin);
function translation(key) {
return computed(function() {
return ObjectPromiseProxy.create({
promise: emulateTranslationLoad(key)
});
});
}
export default Controller.extend({
appName: translation('appName'),
brokenTranslation: translation('blabla')
});
<h1>Welcome to {{my-translation appName}}</h1>
<br>
<br>
{{outlet}}
<br>
<br />
{{#if translation.isPending}}
Loading translation...
{{else}}
{{#if translation.isRejected}}
Failed to load translation...
{{else}}
{{translation.content}}
{{/if}}
{{/if}}
{
"version": "0.10.6",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.9.0",
"ember-data": "2.9.0",
"ember-template-compiler": "2.9.0",
"ember-testing": "2.9.0"
},
"addons": {}
}
import Ember from 'ember';
const {
RSVP,
run
} = Ember;
const Translations = {
appName: 'Ember Twiddle'
};
export default function emulateTranslationLoad(key) {
return new RSVP.Promise((resolve, reject) => {
run.later(this, () => {
if (key in Translations) {
resolve(Translations[key]);
} else {
reject()
}
}, 300);
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment