0

I am getting this error?

Found a translation function that is missing a text-domain. Function _n

can this be fixed? how can the translation be done in this case?

if( count($value) < $field['min'] ) {

        $valid = _n( '%s requires at least %s selection', '%s requires at least %s selections', $field['min'], 'acf' );
        $valid = sprintf( $valid, $field['label'], $field['min'] );

    }

UPDATE

The error is gone when $field['min'] was assigned to a variable. I am i doing it correct?

  • @Nicolai thanks!! error was exactly on this line $valid = _n( '%s requires at least %s selection', '%s requires at least %s selections', $field['min'], 'acf' ); sorry but i am not able to understand your answer, may be a little explanation if possible :) – Latheesh V M Villa Nov 17 '18 at 18:00
  • @Nicolai if i replace $field['min'] with $out , then it shows no error.. $out = $field['min'] ..but not sure why it worked – Latheesh V M Villa Nov 17 '18 at 18:37
  • @Nicolai may be bacause asper codex.wordpress.org/Function_Reference/_n , Important: Never do a calculation inside the sprintf() function – Latheesh V M Villa Nov 17 '18 at 19:29
2

Your error (actually a warning) seems to come from the Theme Check plugin.

There's nothing wrong with the code you're showing above. 'acf' is your text domain. and the _n function takes four arguments as you've given it.

It strikes me that the Theme Check plugin is not very good at static analysis of function calls. I actually get a different warning with your code (possibly a later version) It seems it can't cope with array expressions like $field['min']. But of course WordPress/PHP will execute this just fine.

As you discovered yourself, assigning a variable gets rid of the warning. So doing something like the following is absolutely fine and seems to satisfy Theme Check's code scanner.

$n = $field['min'];
$valid = _n( '....', '....', $n, 'acf' );
$valid = sprintf( $valid, $field['label'], $n );
  • thanks, there seems to many other issues in detecting textdomains and understanding context where $echo to be escaped. and forcing to use to if class exist , there are cases where it is not possible to use that :/ – Latheesh V M Villa Nov 19 '18 at 10:51
  • The Theme Check is only intended to flag possible problems for you to investigate. – Tim Nov 19 '18 at 11:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.