如果我将语言设置为 rootURL,这有效,我可以转到任何路线/子路线,并且当前语言将出现在 url 中,但在页面刷新时,浏览器正在尝试从该语言文件夹获取应用程序,有什么想法吗? :/我正在使用 Ember 1.11。
// router.coffee
`import Ember from 'ember';`
`import config from './config/environment';`
Router = Ember.Router.extend
location: config.locationType
rootURL: '/' + localStorage.getItem('locale') + '/'
// config/environment.js
module.exports = function(environment) {
var ENV = {
locationType: 'history',
baseURL: '/'
...
最佳答案
您不应将rootURL
用于此目的。相反,创建一个将成为所有其他路由的父路由的路由:
//../app/router.js
import Ember from 'ember';
import config from './config/environment';
var Router = Ember.Router.extend(
{
location: config.locationType
}
);
Router.map(
function ()
{
this.route(
'lang', { path: '/:lang' }, function ()
{
this.route('index', { path: '/' });
this.route('404', { path: '/*wildcard' });
this.route('your-route-name');
}
);
}
);
export default Router;
您可以使用 lang
路由的 afterModel
方法来确定所需的语言环境:
//../app/routes/lang.js
import config from '../config/environment';
export default Ember.Route.extend(
{
afterModel: function (params)
{
var allowedLocales = config.i18n.allowedLocales;
var defaultLocale = config.i18n.defaultLocale;
this.set(
'i18n.locale',
params && params.lang && allowedLocales.indexOf(params.lang) > -1 ? params.lang : defaultLocale
);
}
}
);
在 index
路由中,您需要从浏览器设置中检测用户的区域设置或使用默认区域设置:
//../app/routes/index.js
import config from '../config/environment';
export default Ember.Route.extend(
{
beforeModel: function ()
{
var allowedLanguages = config.i18n.allowedLocales;
var language = config.i18n.defaultLocale;
if (navigator.languages) {
for (let lang of navigator.languages) {
if (allowedLanguages.indexOf(lang) > -1) {
language = lang;
break;
}
}
} else {
if (navigator.language) {
language = navigator.language;
} else {
if (navigator.userLanguage) {
language = navigator.userLanguage;
}
}
}
this.transitionTo('lang.index', { lang: language });
}
}
);
顺便说一句,你的 Ember 版本已经很旧了。您可能需要将其升级到 1.13(1.13.x 不应该破坏您的应用程序,2.x 可能)。
关于javascript - 设置 rootURL 导致页面刷新时出现 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44902454/