0

私は、次の言語を翻訳したウェブサイトを持っています。

英語、ドイツ語、スペイン語、フランス語、イタリア語。

選択すると、場所が翻訳された言語に変更される選択ボックスがあります。

私が抱えている主な問題は、URLに翻訳されたディレクトリ名なしでURLを取得する方法を考え出すことです。

これまでのところ、

var curURL = $('#flagsectionurl').attr('value');
var n=curURL.split("/");        
console.log(n[1]);

input#flasgectionurl は、現在のページの URL を取得します。だから私が見ているなら

domain.com/de/index

console.log には「de」と表示されます

選択ボックスが選択されると、現在、次のことが行われます

var chosenCountry = data.selectedData.value;
window.location = "/"+chosenCountry+$('#flagsectionurl').attr('value');

現在のページを保持したままディレクトリを変更するには、どのような方法が最適でしょうか? この方法は domain.com/de/de/index に移動するため機能しません。

4

1 に答える 1

0

URLに新しい国を追加していますが、現在の国を削除していません。

変数から始めて、国がすでに含まれているchosenCountry現在のURLを追加します。$('#flagsectionurl').attr('value')

URLの残りの国を保持しながら、URLの国の部分を置き換えたいと考えています。これを行うには、次のことを行うことができます(コンソールにログを記録するコードに示されているURLの構造に基づいて)。

var new_url = $('#flagsectionurl').attr('value');
new_url = url.split("/"); 
new_url[1] = data.selectedData.value;
window.location = new_url.join("/");

編集:

あなたが提起した問題のため、英語では上記のURL規則が使用されていないため、現在の言語(英語であるかどうかを含む)をまだ追跡していない場合は追跡する必要があります。次に、現在の選択が英語で、別の言語に変更する場合は、配列を分割した後、新しいアイテムを配列に追加する必要があります。別の言語から英語に移行する場合は、配列内の位置1の項目を削除する必要があります。

var new_lang = data.selectedData.value;
var new_url = $('#flagsectionurl').attr('value');
new_url = url.split("/");
if (cur_lang == 'en') {
    new_url.splice(1,0,new_lang);
}
else if (new_lang == 'en') {
    new_url.splice(1,1);
}
else {
    new_url[1] = new_lang;
}
window.location = new_url.join("/");

上記のコードは、現在の言語と新しい言語を同じにすることはできないという前提で機能します。まだ行っていない場合は、これを確認する必要があります。

于 2012-11-06T09:53:10.983 に答える