In T204439 the suggestion constraint level was introduced. This really improved the constraint system. We now have 3 constraint levels: Mandatory, normal and suggestion. The distinction between the normal and the suggestion level isn't clear enough at the moment leading to confusion. The wording is (almost) the same and just the header is different. This distinction in levels should be made clearer.
The MoSCoW method is a well known practice to assign priorities.
- Mandatory level is must have
- Normal level is should have
- Suggestion level is could have
( The system used for priorities in rfc's is quite similar, see https://tools.ietf.org/html/bcp14 )
This is a well known system so should be easy to translate into other languages.
So for target required claim the normal message is:
"wbqc-violation-message-target-required-claim": "$1 should have {{PLURAL:$3|0=a statement $2.|1=a statement $2 $5.|a statement for $2 with one of the following values:$4}}",
For the mandatory level you would get:
"wbqc-violation-message-target-required-claim-mandatory": "$1 must have {{PLURAL:$3|0=a statement $2.|1=a statement $2 $5.|a statement for $2 with one of the following values:$4}}",
For the suggestion level you would get:
"wbqc-violation-message-target-required-claim-suggestion": "$1 could have {{PLURAL:$3|0=a statement $2.|1=a statement $2 $5.|a statement for $2 with one of the following values:$4}}",
(based on the messages in https://github.com/wikimedia/mediawiki-extensions-WikibaseQualityConstraints/blob/master/i18n/en.json)
I broke it up in several messages because Lego i18n is discouraged. In the software we could check if the level is mandatory/suggestion and if that's the case, check if a message of that level exists. If that's the case, use the level message otherwise the default.