Drupal 7 サイトを持っていて、PHP で書かれた小さなカレンダー コントロールを出力する必要があります。月名と日を含むテーブルを出力します。テーブルには、「Mon」、「Tue」という曜日名のヘッダーがあります。
Drupal で選択されている現在のサイト言語でこれを出力する必要があります。これを行う最善の方法は何ですか?
Drupal 7 サイトを持っていて、PHP で書かれた小さなカレンダー コントロールを出力する必要があります。月名と日を含むテーブルを出力します。テーブルには、「Mon」、「Tue」という曜日名のヘッダーがあります。
Drupal で選択されている現在のサイト言語でこれを出力する必要があります。これを行う最善の方法は何ですか?
Drupalでは、文字列の変換に使用される関数はt()です。
英語以外の言語を有効にすると、渡されたリテラル文字列はt()
、翻訳ファイルで使用可能な翻訳に置き換えられます。平日の短縮名の翻訳がない場合は、admin / config / regional / translate/translateで翻訳を追加できます。
翻訳システムはDrupalに実装されているため、渡される文字列がt()
リテラル文字列である場合にのみ機能します。モジュールが次の引数のいずれかを渡して関数を呼び出している場合、文字列は翻訳できません。
t('This is a' . 'string that is not translatable')
)t($text_to_translate)
)t(get_string(STRING_ID_ERROR_MESSAGE))
)モジュールがdrupal.orgでホストされている場合は、http://localize.drupal.orgから提供される翻訳サービスを使用できます。
Erlendoos、私はあなたの解決策を試しましたが、うまくいきませんでした。
次のように、最終的に t() の代わりに locale() の使用を終了しました。
function monthname_install() {
$months = array(
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December',
);
foreach($months as $m) {
locale( $m, 'Long month name' );
}
drupal_set_message(t('All long month names available for translation.'));
}
https://api.drupal.org/api/drupal/modules%21locale%21locale.module/function/locale/7
上記を実行した後、翻訳用の月名が既にあります。
「アーカイブ」サンプル ビューを有効にし、そのビューを使用してブロックまたはページを配置した場合、ビューで使用されるすべての名前は既に翻訳可能になっていることに注意してください。しかし、「新しくインストールされた」drupal では、文字列を翻訳できるようにするには、上記を .install ファイルで実行する必要があります。
これが、私のように同じ問題を抱えていて、上記の解決策を試しても成功しなかった人々に役立つことを願っています.