Skip to content

Instantly share code, notes, and snippets.

@jmimi
Created March 2, 2017 15:47
Show Gist options
  • Save jmimi/342a251605a39ebb6bce6e110ec41343 to your computer and use it in GitHub Desktop.
Save jmimi/342a251605a39ebb6bce6e110ec41343 to your computer and use it in GitHub Desktop.
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
i18n: Ember.inject.service(),
locale: Ember.computed.readOnly('i18n.locale'),
path: Ember.computed('locale', function() {
return {
path: this.get('i18n').t(this.get('router').get('currentRouteName'))
};
}),
actions: {
changeLang(lang){
this.set('i18n.locale', lang);
const router = Ember.getOwner(this).lookup('router:main');
let currRoute = router.get('currentRouteName');
if(/^lang./.test(currRoute)){
this.replaceRoute(currRoute, lang, this.get('path'));
}
}
}
});
import Ember from 'ember';
export function routeParam(params/*, hash*/) {
let ret = {};
ret[params[0] + '_path'] = params[1].path;
return ret;
}
export default Ember.Helper.helper(routeParam);
export function initialize(application) {
application.inject('route', 'i18n', 'service:i18n');
}
export default {
name: 'i18n',
initialize
};
export function initialize(application) {
application.inject('controller', 'router', 'router:main');
}
export default {
name: 'router-injector',
initialize: initialize
};
export default {};
export default {
"routes": {
"home": "home",
"about": "about",
"contact": "contact"
}
};
export default {};
export default {
"routes": {
"home": "pagina-de-inicio",
"about": "about",
"contact": "contacto"
}
};
export default {};
export default {
"routes": {
"home": "pagina-inicial",
"about": "sobre",
"contact": "contato"
}
};
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: config.locationType,
rootURL: config.rootURL
});
Router.map(function() {
this.route("lang", {path: '/:lang'}, function() {
this.route('home', {path: ':home_path', template: 'home'});
this.route('about', {path: ':about_path', template: 'about'});
this.route('contact', {path: ':contact_path', template: 'contact'});
});
});
export default Router;
import Ember from 'ember';
export default Ember.Route.extend({
beforeModel: function () {
this.set(
'i18n.locale',
'en'
);
//this.transitionTo('lang', { lang: 'es' });
}
});
import Ember from 'ember';
export default Ember.Route.extend({
});
import Ember from 'ember';
export default Ember.Route.extend({
});
import Ember from 'ember';
export default Ember.Route.extend({
});
import Ember from 'ember';
export default Ember.Route.extend({
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
<button {{action "changeLang" "en"}}>EN</button>
<button {{action "changeLang" "es"}}>ES</button>
<button {{action "changeLang" "pt-br"}}>PT-BR</button>
<br>
<br>
<br>
{{outlet}}
<br>
<p>Current locale: <b>{{locale}}</b></p>
{{#link-to "lang.home" locale (route-param "home" path)}}{{t "routes.home"}}{{/link-to}}
{{#link-to "lang.about" locale (route-param "about" path)}}{{t "routes.about"}}{{/link-to}}
{{#link-to "lang.contact" locale (route-param "contact" path)}}{{t "routes.contact"}}{{/link-to}}
<br>
{
"version": "0.11.0",
"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.10.2",
"ember-data": "2.11.0",
"ember-template-compiler": "2.10.2",
"ember-testing": "2.10.2"
},
"addons": {
"ember-i18n": "5.0.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment