Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check for proper usage of translation functions #50

Closed
westonruter opened this issue Jul 18, 2013 · 8 comments · Fixed by #136 or #545
Closed

Check for proper usage of translation functions #50

westonruter opened this issue Jul 18, 2013 · 8 comments · Fixed by #136 or #545

Comments

@westonruter
Copy link
Member

I had read that variables were discouraged from being used in the i18n functions. I assumed this was just to discourage them from being changed. Well, it's actually because some automated i18n tools will tokenize the PHP files to extract the textdomain from PHP without actually evaluating the file. See @markjaquith's blog post Translating WordPress Plugins and Themes: Don’t Get Clever.

So a sniff should be written which makes sure that translation functions have a text domain which is a literal string. The sniff should also ensure that variables are not being used for the text to be translated, or inside of the text to be translated.

@GaryJones
Copy link
Member

Another article covering the same topic: http://ottopress.com/2012/internationalization-youre-probably-doing-it-wrong/

@westonruter
Copy link
Member Author

I think this was accidentally closed.

@GaryJones
Copy link
Member

Strings that span multiple lines may get highlighted as false positive e.g.:

<?php esc_html_e( 'Long line
of text', 'foo' ); ?>

Both give "The $text arg must be a single string literal, not 'Long line of text'."

screenshot 2016-03-23 14 35 03

@GaryJones GaryJones reopened this Mar 23, 2016
@westonruter
Copy link
Member Author

@GaryJones interesting. PHP tokenizes that single string literal into two separate T_CONSTANT_ENCAPSED_STRING tokens with content 'Long line and of text'

@westonruter
Copy link
Member Author

It seems we need to merge two tokens of type T_CONSTANT_ENCAPSED_STRING that appear next to each other in $argument_tokens.

@GaryJones
Copy link
Member

I guess that merging would need to be done for context args and so on too, not just the string being internationalized.

<?php _x( 'Post', 'Holds the
fence up', 'text-domain' ); ?>

@westonruter
Copy link
Member Author

@GaryJones how's #545?

@GaryJones
Copy link
Member

@westonruter #545 tested on my real and made-up code, and the error no longer appears. 👍

jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue Apr 22, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue Apr 22, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue Apr 26, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue May 15, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue Jun 17, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue Jun 17, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue Jun 25, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue Jul 22, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue Aug 7, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue Aug 10, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue Aug 12, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue Aug 18, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue Sep 11, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
jrfnl added a commit to jrfnl/WordPress-Coding-Standards that referenced this issue Oct 13, 2022
Related:
* `Universal.Namespaces.OneDeclarationPerFile` - upstream Extra WordPress#6
* `Universal.Namespaces.DisallowCurlyBraceSyntax` - upstream Extra WordPress#4
* `Universal.Namespaces.DisallowDeclarationWithoutName` - upstream Extra WordPress#50

* `Universal.UseStatements.NoLeadingBackslash` - upstream Extra WordPress#46
* `Universal.UseStatements.LowercaseFunctionConst` - upstream Extra WordPress#58

* `Universal.Constants.LowercaseClassResolutionKeyword` - upstream Extra WordPress#72

* `Generic.WhiteSpace.IncrementDecrementSpacing` - issue WordPress#1511, upstream PHPCS WordPress#2172, WordPress#2174
* `Universal.Operators.DisallowStandalonePostIncrementDecrement` - upstream Extra WordPress#65

* `Universal.Constants.UppercaseMagicConstants` - upstream Extra WordPress#64
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment