使用 i18next(占位符,值)翻译自定义属性

Posted

技术标签:

【中文标题】使用 i18next(占位符,值)翻译自定义属性【英文标题】:Translate custom attributes with i18next (placeholder, value) 【发布时间】:2014-05-08 20:34:33 【问题描述】:

我正在研究i18next 本地化库的可能性。

现在我有以下代码 (full Fiddle is here):

HTML

<div data-i18n="title"></div>
<input placeholder="Hello" value="name">
<div class="holder"></div>
<button class="lang" data-lang="en">Eng</button>
<button class="lang" data-lang="ch">Chi</button>

JS

$(document).ready(function () 
    i18n.init(
        "lng": 'en',
        "resStore": resources,
        "fallbackLng" : 'en'
    , function (t) 
        $(document).i18n();
    );

    $('.lang').click(function () 
        var lang = $(this).attr('data-lang');
        i18n.init(
            lng: lang
        , function (t) 
            $(document).i18n();
        );
    );
);

它可以翻译所有text 元素,但问题是我无法翻译custom attributes。例如,div 内的文本已翻译,但我不明白如何翻译 placeholdervalue 等自定义属性。

另一个问题是我的翻译方式。每当单击按钮ChiEng 时,我正在初始化翻译(但我不确定这是正确的方法)。 编辑 我想我找到了解决这个问题的方法(我需要使用 setLng):i18n.setLng(lang, function(t) ... )

【问题讨论】:

【参考方案1】:

直接问i18next creator这个问题后,我收到了following reply:我只需要把我的自定义属性放在翻译元素的前面。这是一个例子:

<div data-i18n="[title]titleTransl"></div>
<input data-i18n="[placeholder]placeTransl" value="name">

如果需要多个属性,请用; 分隔它们。

我从中学到了两件事:

我必须阅读更好的文档。 118next 的创作者真的很有帮助(这是对他的感谢)。

【讨论】:

假设我们有这样的东西:&lt;div id="dropdown" class="user_reg"&gt; &lt;select id="country_list" class="selectpicker" data-width="100%" data-size="5" data-live-search="true" required="required"&gt; &lt;option value="" disabled class="country_list"&gt;Country&lt;/option&gt; &lt;/select&gt; &lt;/div&gt;,那么我们如何翻译Country @AjayKulkarni 在您的示例中,国家不是属性。 是的,所以我尝试了这段代码:&lt;option id="country" value="" disabled class="country_list"&gt;Country&lt;/option&gt;$('#country').text($.t('app.country'));。成功了 太棒了!我预计这会是冗长而繁琐的【参考方案2】:

对我来说,以下工作

<input data-i18n="[placeholder]placeTransl" value="name">

所以只需在 [] 和翻译之间输入属性名称。

【讨论】:

抱歉,我没有得到您的回答 工作。我必须使用 data-i18n 属性才能让它工作。 哦,抱歉,我没有注意到您的答案有所不同。对此真的很抱歉。 +1 没问题!您的回答为我指明了正确的方向,非常感谢! 我知道已经有一段时间了,但这似乎不再起作用了。有人还在使用成功吗?【参考方案3】:

考虑调用

$('body').i18n()

在 .done() 函数中。您应该告诉在哪里寻找定位器。 这无需在 data-i18n 属性中调用 [placeholders] 即可工作。

【讨论】:

以上是关于使用 i18next(占位符,值)翻译自定义属性的主要内容,如果未能解决你的问题,请参考以下文章

是否可以制作没有模糊的 Next.js Image 占位符?

在 Woocommerce 3+ 中自定义一些结帐字段属性

jquery:获取自定义属性的值

Ruby on Rails i18n - 想要在模型中翻译自定义消息

占位符文本的 Angular2 i18n

如何更改输入标签占位符的语言?