Skip to content

Add to each custom message in rules parameter for set processing type #745

Open

Description

@vjik

Default is Error::MESSAGE_TRANSLATE.

For example, Count rule:

public function __construct(
  // ...
  
  string $greaterThanMaxMessage = '{Property} must contain at most {max, number} {max, plural, one{item} other{items}}.',
  int $greaterThanMaxMessageProcessing = Error::MESSAGE_TRANSLATE,
  
  // ...

Activity

  1. samdark commented on Aug 28, 2024

    @samdark
    Member

    Isn't that too much granularity to set that per each message? I think, usually it is turned on/off on whole validator level, not per rule.

  2. vjik commented on Aug 29, 2024

    @vjik
    MemberAuthor

    By default, built-in messages that require translation are used. If my app is single language, then I can set one concrete message on my language and set proccessing for this message only. Other message should continue using translation.

  3. BoShurik commented on Aug 29, 2024

    @BoShurik

    If you set message in your language but not change message processing nothing changes, isn't it? Translator can't handle it and leaves it as is

  4. vjik commented on Aug 29, 2024

    @vjik
    MemberAuthor

    If you set message in your language but not change message processing nothing changes, isn't it? Translator can't handle it and leaves it as is

    No. Translator also uses formatter and format message in original language when not found translation.

    Real example.

    Russian is application language.

    Translator configuration is default. Validator configuration:

    ValidatorInterface::class => [
        'class' => Validator::class,
        '__construct()' => [
            'ruleHandlerResolver' => Reference::to(RuleHandlerContainer::class),
            'messageFormatter' => Reference::to(IntlMessageFormatter::class),
            'messageFormatterLocale' => 'ru-RU',
        ],
    ],

    Rule:

     #[Count(
    	max: self::LIMIT,
    	greaterThanMaxMessage: 'Превышен лимит в {max, number} {max, plural, one{элемент} few{элемента} other{элементов}}.'
    )]

    When limit is "21", message will be "Превышен лимит в 21 элементов." (Original language for translator is english).
    Expected message "Превышен лимит в 21 элемент." (Original language for app is russian). I need to set Error::MESSAGE_FORMAT processing to this message only.

  5. BoShurik commented on Aug 29, 2024

    @BoShurik

    If it's a single language app then you must set this language for translator in the configuration so you get expected message

  6. vjik commented on Aug 29, 2024

    @vjik
    MemberAuthor

    If it's a single language app then you must set this language for translator in the configuration so you get expected message

    Yes. But for translator language of original messages is English, but custom original messages in app on Russian.

  7. BoShurik commented on Aug 29, 2024

    @BoShurik

    Yes. But for translator language of original messages is English, but custom original messages in app on Russian.

    Custom messages you write in Russian, validator build-in messages are translated to Russian from English because you set Russian locale

  8. vjik commented on Aug 29, 2024

    @vjik
    MemberAuthor

    Custom messages you write in Russian, validator build-in messages are translated to Russian from English because you set Russian locale

    No. Translator tried translate to russian, but it not found translation and format original message (on russian) with translator original language (english).

  9. BoShurik commented on Aug 29, 2024

    @BoShurik

    with translator original language (english)

    Why it's english if app's locale is russian?

  10. vjik commented on Aug 29, 2024

    @vjik
    MemberAuthor

    Why it's english if app's locale is russian?

    Default messages in English (example), so for translator original language is english.

  11. BoShurik commented on Aug 29, 2024

    @BoShurik

    But there is translation for this message. It wouldn't be translated?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions