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
やっぱりちらりと英語が見えることがない方が気持ちがいいですね。