読者です 読者をやめる 読者になる 読者になる

読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

TAPi18nのページロード時の振る舞いの改善

Meteor

Meteor + Iron Routerの国際化にiron-router-i18nとTAPi18nを使っています。
TAPi18nはなぜかデフォルト言語として英語を読み込み表示、その後setLangaugeで言語が設定されるとその言語に切り替えると仕組みになっています。
なので、ネットワーク遅延の目立つ環境では、最初英語版のページが表示され、その後所望の言語に切り替わります。ユーザーの立場から見ると国際化とはわかっても途中でページをすり替えているように気分はあまり良くないですね。

そこで、英語の状態のページの表示を抑制するコードを書きました。
まずbodyをデフォルトで非表示にします。

<body style="visibility: hidden;">
{{> Router}}
</body>

クライアント側の言語設定とbodyを表示にするコードを追加します。

# client

I18NConf.onLanguageChange (oldLang, newLang) ->
    TAPi18n.setLanguage(newLang).done ->
        document.body.style.visibility = 'visible'
        return
    return

やっぱりちらりと英語が見えることがない方が気持ちがいいですね。