web-dev-qa-db-ja.com

__($ message)関数を使用してデータベースの内容を翻訳する

私はユーザーがデータベースに情報を追加できるようにするプラグインを書きました。それはうまくいっていますが、WPMLを使って情報を翻訳することはできません。これは問題の簡単な例です。

$ message = 'test'; //ここでDBの情報を取得します
__($ message、 'my-plugin');

この問題を回避する方法はありますか?翻訳に文字列ではなく変数を使用できるかどうかわかりません。管理パネルでウィジェットを解析すると、翻訳する文字列が表示されません。

これは文字列なので、この例はWPMLで機能します。__( 'test'、 'my-plugin');

前もって感謝します。

1
Albert

テキスト内の変数を翻訳対象にしたい場合、通常の方法は、次のような文字列フォーマットを使用することです。

<?php
printf(__("text %s text2."), $message);
?>

整数の場合:

<?php
printf(__("text %d text2."), $count);
?>

複数のプレースホルダーがある場合

<?php
printf(__("text %1$s text2 %2$S."), $message, $message2);
?>

しかし、変数それ自身は決して翻訳されません。

WPMLは__();_e();関数の前にコードを実行せずにファイルを検索するだけなので、このようなものを書くときはそのためです。

$message = 'test'; // here I get the information of the DB
__($message, 'my-plugin');

WPMLは、$ messageが空の__($message, 'my-plugin');のみを見ます。

2
Bainternet