私は自分のサイトの1つで次のグーグル提供のコードでグーグル翻訳ウィジェットを使用しています:
<div id="google_translate_element"></div><script type="text/javascript">
function googleTranslateElementInit() {
new google.translate.TranslateElement({pageLanguage: 'en', layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, 'google_translate_element');
}
</script><script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
<script>
私の問題:翻訳はページが読み込まれた後に実行されますが、主なナビゲーション要素の幅に基づいて自動サイズ設定するスクリプトもあります。
これは翻訳が完了する前に実行されるため、翻訳されていない英語のラベルに基づいてサイズが変更されます。翻訳によってナビゲーションの文言が変更されたら、ナビゲーション要素のサイズを変更して、新しく翻訳された単語に合わせる必要があります。これは、英語とはサイズ(幅)が異なる可能性があるためです。
コードを実行してプライマリナビゲーションのサイズを変更する前にGoogle翻訳コードを呼び出そうとしましたが、翻訳が非同期で実行されるため、翻訳が完了する前にコードが実行されます。
翻訳が完了したときに発生するコールバックイベント(または翻訳が完了したことを検出する何らかの方法)があるので、ナビゲーションのサイズを変更する前に待つことができますか?
また、ページの翻訳が完了した後でスクリプトを実行する必要があります。