如果我浏览http:\\localhost:4300\fr
,我的主页会加载法语翻译。
我的导航中有2个链接(主页,联系我们)。
主页指向http:\\localhost:4300\fr\home
联系我们指向http:\\localhost:4300\fr\contact
我还有一个下拉列表,用户可以在其中选择一种语言,它将返回翻译的页面。
例如,当我选择西班牙语时,链接会更新为:
http:\\localhost:4300\es\home
和http:\\localhost:4300\es\contact
,但浏览器网址仍为http:\\localhost:4300\fr
。
如何更新浏览器网址?
以下是用户从下拉列表中选择语言时使用的代码:
translate(langCode, language) {
const hostName = document.location.hostname.replace('www.', '');
this.currentTrans = language;
this.currentTransCode = langCode;
this._caseService.GetCaseData(caseUrl, langCode);
}
this.currentTransCode
包含当前语言代码
网址就像http:\\localhost:4300\
+ this.currentTransCode
答案 0 :(得分:1)
您可以使用位置对象
//component or service.ts
import {Location} from '@angular/common'
constructor(private location: Location)
{
}
changeCurrentUrl()
{
let parts = window.location.pathname.split('/');
parts[1] = this.currentTransCode; //replaces 'fr' with 'en'
this.changeUrl(parts.join('/'));
}
changeUrl(url: string)
{
this.location.replaceState(url);
}
答案 1 :(得分:0)
要更改网址,您需要使用正确的语言加载网页。 例如,您可以获取当前路径名,并使用新路径替换该语言,并使用新URL重新加载页面。
document.location.href = "/" + this.currentTransCode + location.pathname.substring(location.pathname.indexOf("/",1)) + location.hash + location.search
抱歉,我想念你使用Angular。在这种情况下,您可以使用$ location。
$location.path(newUrl);