@mogelbrod コードは常に機能するとは限らないので、少しハックしました。
ユーザーが Google アカウントにログインしている場合、Google はその言語を検出し、言語テキストを自動的に翻訳するため、data-lang 属性が正しくないため、目的の要素でイベントを発生させることができません!
Google アカウントにログインしていないユーザーと、アメリカ/イギリスのユーザーにはこれがあります。
たとえば、クロアチアのユーザーにはこれがあります。
この場合、言語の順序をマッピングすることをお勧めします。たとえば、上から、それは
0 - 英語
1 - フランス語
2 - ドイツ語
3 - イタリア語
HTML:
data-placement プロパティに注意してください (要素の順序は変更できますが、上記のように配置を保持できます)。
<div class="translation-icons" style="visibility:hidden">
<a href="#" class="eng" data-placement="0">eng icon</a>
<a href="#" class="fra" data-placement="1">fra icon</a>
<a href="#" class="ger" data-placement="2">ger icon</a>
<a href="#" class="ita" data-placement="3">ita icon</a>
</div>
JS: 検索セレクターを変更する必要がありました。ユーザーが言語を選択すると、#google_translate_element div に「Choose Language」要素がなくなるため、それも処理する必要があることに注意してください。
また、すべてのスクリプト (Google 翻訳) が読み込まれるまでアイコンを表示しないことをお勧めします。
$(window).load(function () {
$('.translation-icons').css('visibility', 'visible');
$('.translation-icons a').click(function(e) {
e.preventDefault();
var placement = $(this).data('placement');
var lang_num = $('.translation-icons a').length;
var $frame = $('.goog-te-menu-frame:first');
if (!$frame.size()) {
alert("Error: Could not find Google translate frame.");
return false;
}
var langs = $('.goog-te-menu-frame:first').contents().find('a span.text');
if(langs.length != lang_num) placement = placement+1;
langs.eq(placement).click();
return false;
});
});