Drupal にあるものと似ています。
私の現在の関数定義は次のようなものです:
string t(string $singular, [string $plural, int $number, mixed $arg1, ...])
引数の順序は、このパターンに従う必要はありません。string $singular
明らかな理由から、最初にする必要があるだけです。
それがどのように機能するかを示すいくつかの例:
「こんにちは」を翻訳する:
t('Hello')
「こんにちは」を翻訳し、文字列をフォーマットします(私は with を使用
vsprintf
していますfunc_get_args()
)t('Hello %s', $user)
複数訳:
t('%d apple', '%d apples', 5, 5)
ここから問題が始まります。2 番目の引数が文字列で3 番目の引数が整数の場合、これは複数形の翻訳のリクエストであると想定しています。
問題は、誤って単一の翻訳リクエストを傍受する可能性があることです。
$user = 'Mary'; t('%s, you need at least %d apples for me to take you srsly', $user, 420)
このような機能をより適切に実装し、このような衝突を回避する方法について何か提案はありますか?