谷歌翻译,输入类型='text'的占位符文本

Uda*_*mal 6 html javascript translation placeholder google-translate

转换占位符文本的问题 input type="text"

这是我的示例代码:

HTML:

<div id="google_translate_element" style="float:left; padding-left:15px"></div>


<!-- Need to translate this placeholder text -->

<form><input type="text" placeholder= "Enter your name" />
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

javascipt的:

<script type="text/javascript">
function googleTranslateElementInit() {
        new google.translate.TranslateElement({pageLanguage: 'en', includedLanguages: 'ca,da,de,el,en,es,fr,it,ja,ko,nl,pl,pt,ru,sv,tl', 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>
Run Code Online (Sandbox Code Playgroud)

CSS:

<style>
div#google_translate_element div.goog-te-gadget-simple{background-color:green;}
    div#google_translate_element div.goog-te-gadget-simple a.goog-te-menu-value span{color:yellow}

    div#google_translate_element div.goog-te-gadget-simple a.goog-te-menu-value span:hover{color:#ffffff}
</style>
Run Code Online (Sandbox Code Playgroud)

翻译的例子是在

的jsfiddle:

http://jsfiddle.net/ulak/zDUYL/

请提及使用谷歌翻译翻译占位符文本的任何其他方式

PJ3*_*PJ3 9

如前面的答案所述,Google翻译不会翻译占位符.

我找到了这个javascript解决方案,它确实有效.

http://gamon.org/blog/2015/03/12/translate-placeholders-with-google-translate-widget/

这里的 JSfiddle演示:

// Find all placeholders
var placeholders = document.querySelectorAll('input[placeholder]');

if (placeholders.length) {
     // convert to array
    placeholders = Array.prototype.slice.call(placeholders);

    // copy placeholder text to a hidden div
    var div = $('<div id="placeholders" style="display:none;"></div>');

    placeholders.forEach(function(input){
      var text = input.placeholder;
      div.append('<div>' + text + '</div>');    
    });

    $('body').append(div);

    // save the first placeholder in a closure
    var originalPH = placeholders[0].placeholder;

    // check for changes and update as needed
    setInterval(function(){
      if (isTranslated()) {
        updatePlaceholders();
        originalPH = placeholders[0].placeholder;
      }
    }, 500);

    // hoisted ---------------------------
    function isTranslated() { // true if the text has been translated
       var currentPH = $($('#placeholders > div')[0]).text();
       return !(originalPH == currentPH);
    }

    function updatePlaceholders() {
      $('#placeholders > div').each(function(i, div){
        placeholders[i].placeholder = $(div).text();
      });
    }
}
Run Code Online (Sandbox Code Playgroud)


Juk*_*ela 1

只要谷歌翻译不想翻译某个placeholder属性(并且他们建议没有办法要求它),答案就是 \xe2\x80\x9cyou can\xe2\x80\x99t\xe2\x80\x9d。

\n\n

作为解决方法,您可以将占位符文本放入普通元素(例如元素)中label,然后使用 JavaScript,在翻译后将其内容复制到属性中placeholder并删除普通元素。

\n\n

然而,最好避免产生问题,并在以下情况下简单地使用label元素而不是placeholder属性:在标签 \xe2\x80\x93 的 r\xc3\xb4le 中使用后者来对抗 HTML5 CR清楚地:\xe2\x80\x9c占位符属性不应用作标签的替代品。\xe2\x80\x9d。因此,只需使用普通标记并由 Google 通常(错误)翻译即可:

\n\n
<label for=name>Your name:</label> <input type="text" id=name>\n
Run Code Online (Sandbox Code Playgroud)\n