1

この機能を使用すると、iOSアプリケーションで特定のCookieが設定されている場合に、言語の翻訳を切り替えることができます。現在使用されているコードはすべてのブラウザで機能し、フッターの2つのボタンを使用してアプリケーション内を移動したりCookieを切り替えたりすることができます。

iOSシミュレータで機能をテストすると、次の問題が発生しました。たとえば英語を選択したページにいる場合、次のページに移動して日本語を選択すると、ページは日本語の翻訳でリロードされ、戻るボタンを押して前のページに移動すると、英語に戻ります。そして、クッキーはもう設定されていません。

戻るボタン:

<div onclick="javascript:createCookie('previousPagePath',location.pathname,(1/24/60)); history.go(-1);">
    <img src="<!--{$rewriteBase}-->images/common/previous.png" alt="" />
    <div>
        <span class="langTranslate">Back//戻る</span>
    </div>
</div>

以下は、Cookieの作成に使用されるJavaScriptです。デフォルトでは、英語( '0')で始まります。日本語は( '1')になります。

Javascript:

// language selection

$(function() {
    if(readCookie('langSelect') == null) {
    // create cookie and set it to english by default
    createCookie('langSelect', '0', 1);
}
// set selected language
$('.langBtn').click(function() {
    var selectedLangCode = $(this).attr('data-lang-code');
    createCookie('langSelect', selectedLangCode, 1);
    location.reload();
});
});

次のJavascriptがすべてのフッターに含まれています。最初の数行は、次のようにDBに表示されるように、英語と日本語を区別するために使用されます。(英語翻訳//日本語翻訳)

<script type="text/javascript">
// set current language
$('.langTranslate').each(function() {
    var label = $(this).text(),
    currentLang = parseInt(readCookie('langSelect'), 10),
    delimiter = '//';
    if(label.length >= 4 && label.indexOf(delimiter) != -1) {
        label = label.split(delimiter);
            if(typeof label[currentLang] !== 'undefined') {
                $(this).text(label[currentLang]);
            }
        }
});
</script>

Cookieはどのような状況でもブラウザに保存されますが、iOSの戻るボタンを押すと削除されます。

4

1 に答える 1