この機能を使用すると、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の戻るボタンを押すと削除されます。