不同的URL取决于语言 - Angular 2

时间:2018-01-17 12:16:18

标签: javascript angular object

我有translation.service.ts以不同语言显示我的网站。这样可行。现在,我想根据显示的语言添加类似/es//en/的网址。

我的service是:

import { Injectable } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';

@Injectable()
export class TranslationService {
    constructor(
        //Used for the internationalization
        private translate: TranslateService,
    ) { }

        switchLanguage(language: string) {
            //If spanish
            if (
             language == "es" || language == "es-ar" || language == "es-bo" || language == "es-cl" ||
             language == "es-co" || language == "es-cr" || language == "es-do" || language == "es-ec" ||
             language == "es-sv" || language == "es-gt" || language == "es-hn" || language == "es-mx" ||
             language == "es-ni" || language == "es-pa" || language == "es-py" || language == "es-pe" ||
             language == "es-er" || language == "es-es" || language == "es-uy" || language == "es-ve") this.translate.use("es");
            //If german
            else if (language == "de" || language == "de-at" || language == "de-de" || language == "de-li" || language == "de-lu" || language == "de-ch" ) this.translate.use("de");
            //if not, english 
            else this.translate.use("en");
        }
    }

更新:13/02/2018

我试过了:

APP-routing.module.ts

var language = navigator.language;
const routes: Routes = [
  { path: '', redirectTo: '/dashboard/'+language, pathMatch: 'full'},
  { path: 'dashboard/'+language, component: DashboardComponent },
}

但是我收到了错误:

  

错误错误:未捕获(在承诺中):错误:无法重定向到   ' /仪表板/:语言&#39 ;.找不到':语言'。错误:不能   重定向到' / dashboard /:语言'。找不到':语言'。

当我尝试时:

const routes: Routes = [
  { path: '', redirectTo: '/dasboard/:language', pathMatch: 'full'},
  { path: 'dashboard:language', redirectTo: '/dasboard/:language', component: DashboardComponent }
]

我明白了:

  

错误:路线'仪表板的配置无效:语言':redirectTo和组件不能一起使用

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

设置路线参数并导航到网址

this.router.navigate(['../', { language: language}]

您应该让路由配置包含language参数,如下所示

 { path: '.../:language', redirectTo: '/..../:language' },
相关问题