web-dev-qa-db-ja.com

Symfony2-FOSUserBundleからの「Badcredentials」ログインエラーメッセージを翻訳する方法は?

ログインエラーが発生した場合、エラーメッセージ(「資格情報が不正です」)をカスタマイズしたいと思います。私はそれをしますが、動作しません。これはテンプレートログインです:

{% if error %}
<div>{{ error.message|trans }}</div>
{% endif %}<form action="{{ path('login_check') }}" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />

<label for="password">Password:</label>
<input type="password" id="password" name="_password" />
<input type="hidden" name="_target_path" value="/account" />
<input type="submit" name="login" />

ファイルconfig.yml私はこれを持っています:

framework:
#esi:             ~
translator:      { fallback: "%locale%" }

parametre.ymlに私はこれを持っています:

locale: en

MyBundle/Resources/translations /messages.en.ymyディレクトリにファイルを追加しました。

security:
login:
    username: "Username:"
    password: "Password:"
    submit: Login
    forgot_username: "Forgot username"
    forgot_password: "Forgot password"
    registration: register
    # Security
    "Bad credentials": "Your user name or password are incorrect."

しかし、常に悪い資格情報のエラーメッセージがあります

8
mehdiraddadi

問題は、エラーメッセージの文字列の最後にdot(。)があることです。

twigトリムフィルターを使用してこれを修正できます:

{{ error|trim('.')|trans({}, 'FOSUserBundle') }}
5
Rafał Rudnicki

私のログインフォームには:

{# Error login form #}
{% if error %}
    <div class="alert alert-danger">
        <strong>{% trans %}login.error{% endtrans %}!</strong> {{ error.messageKey|trans({}, 'messages') }}
        </div>
{% endif %}

ここで、「メッセージ」は翻訳のドメインを参照するため、または翻訳ファイルの名前を使用する場合に重要です。私の場合 : messages.en.yml

Fosuserbundle 1.3.5では、これをmessage.ymlに入れる必要があります。

"Invalid credentials." : Bad email/password combination

これがお役に立てば幸いです

4
0x1gene

Bad Credentialsエラーは、どの親グループ(security.loginまたはドメイン)の一部でもありません。

それを翻訳するには、キーと値のペアを通常のmessages.<locale>.<format>ファイルに追加する必要があります...

Acme/DemoBundle/Resources/translations/messages.en.yml

"Bad Credentials": Incorrect username and/or password

// Other stuff
acme_demo:
    form:
        cats: Cats

参考までに...

この答えは(ほとんど)次のいずれかにあります:

認証のカスタマイズ-ログインSymfony2メッセージ

symfony2の認証エラーを変換するための推奨される方法

ログインフォームのエラーメッセージを翻訳

2
qooplmao

間違った翻訳ドメインを使用しています。

FOSUserBundleは、FOSUserBundleの代わりにmessagesを使用します。デフォルトテンプレートを見てください。

バンドル内の翻訳ファイルは次の場所に保存されます。

<bundle>/Resources/translations/<translationDomain>.<locale>.<format>

解決策:

翻訳ファイルの名前をFOSUserBundle.<locale>.<format>に変更します。その後、この問題を解決するためにキャッシュをクリアします。

1

MyBundle/Resources/translations /messages.en.ymlに記述されているコードを次のように変更します。

Bad credentials.: "Invalid user/password"

しない:login:の下で使用しないでください直接書く

1
Mert Öksüz

あなたが好きにする必要があります:

<div>{{ error|trans }}</div>

の代わりに:

<div>{{ error.message|trans }}</div>

それは私のために働いた。

0
user3872735

fosUserBundleを使用せず、すべての手順を実行しますが、同じメッセージエラーが表示されます。資格情報が正しくありません。

0
mehdiraddadi

「BadCredentials」というメッセージにドットがありません。 「不正な資格情報」である可能性があります。

バンドルの下でのみ、この行の翻訳で翻訳ファイルを上書きできます

翻訳ドメインを追加することを忘れないでください

{{ error|trans({}, 'FOSUserBundle') }}

またはグローバルに

{% trans_default_domain 'FOSUserBundle' %}

注:このソリューションは、FOSuserBundleでテストされています。質問された人は、FOSuserBundleを使用していないと言っています。

0
khaled_webdev