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?

3
  • @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 :)
    – user145078
    Commented Nov 17, 2018 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
    – user145078
    Commented Nov 17, 2018 at 18:37
  • @Nicolai may be bacause asper codex.wordpress.org/Function_Reference/_n , Important: Never do a calculation inside the sprintf() function
    – user145078
    Commented Nov 17, 2018 at 19:29

1 Answer 1

1

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 );
2
  • 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 :/
    – user145078
    Commented Nov 19, 2018 at 10:51
  • The Theme Check is only intended to flag possible problems for you to investigate.
    – Tim
    Commented Nov 19, 2018 at 11:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.