占位符i18下一个翻译不起作用

时间:2015-09-28 19:04:35

标签: json node.js internationalization ejs i18next

我已经创建了一个注册表单。我正在使用i18next服务器端。

这是我的服务器端配置:

var i18n = require('i18next');
i18n.init({
saveMissing: true,
debug: true
});

app.use(i18n.handle);

以下是我的语言环境json“

{
"app": {
  "lblalreadyhaveanaccount": "¿Ya tienes una cuenta?",
  "lblsignin": "Ingresar",
  "lblhelp": "Ayuda",
  "lblletscreateyouraccount": "Vamos a crear su cuenta",
  "lblname": "Nombre",
  "phfirstname": "Nombre de pila",
  ....
 }

我使用ejs作为我的模板引擎。这个代码如下:

...
<form ng-submit="validateForm()">
                <div class="form-group">
                    <!-- Name -->
                    <label><%= t('app.lblname') %></label>

                    <div class="row">
                        <div class="col-md-6">
                            <input id="fname" type="text" class="form-control"
                                   placeholder=<%= t('app.phfirstname') %>>
                        </div>
                        <div class="col-md-6">
                            <input id="lname" type="text" class="form-control"
                                   placeholder=<%= t('app.phlastname') %>>
                        </div>
                    </div>
  ....

我的问题是具有多字符串的标签是正确呈现的,但占位符仅显示区域设置json中字符串中的第一个单词。

以下是检查元素显示的内容:

<input id="fname" type="text" class="form-control" placeholder="Nombre" de="" pila="">

我无法找到解决此问题的方法。请帮助我。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

It looks like the browser is trying to make sense of the words in the input tags. To help it along, try adding double quotes around your placeholder text, like so:

<div class="row">
    <div class="col-md-6">
        <input id="fname" type="text" class="form-control"
               placeholder="<%= t('app.phfirstname') %>"
    </div>
    <div class="col-md-6">
        <input id="lname" type="text" class="form-control"
               placeholder="<%= t('app.phlastname') %>"
    </div>
</div>