モジュールの設定フォームを使用していて、一部のフィールドを多言語にしようとしています。
多言語変数をhook_variable_variable_infoで宣言しました(およびカスタムグループのhook_variable_group_infoで)。
function MYMODULE_variable_info() {
$variable['my_variable_name'] = array(
'type' => 'string',
'title' => t('My title'),
'default' => MY_DEFAULT_VALUE,
'description' => t('My description.'),
'localize' => TRUE,
'group' => 'my_group'
);
return $variable;
}
設定フォームを追加しました(たとえば1つのフィールド)
function MYMODULE_settings_form() {
$form = array();
$form['my_variable_name'] = array(
'#type' => 'textfield',
'#title' => t('My title'),
'#title_display' => 'before',
'#default_value' => variable_get_value('my_variable_name'),
);
return system_settings_form($form);
}
ご覧のとおり、system_settings_form($ form)を使用してフォームフィールドを変数として保存しています。
「admin/config/regional/i18n/variable」で新しい変数を確認しましたが、フォームは多言語フォームと多言語フィールドであることを示していますが、別の言語に切り替えると、値が異なります '保存しました。 (英語版のみがすべての言語の値を保存および変更します)
ありがとう。
それがまったく最良の解決策かどうかはわかりませんが、1つの方法は、urlパラメータからlangcodeを取得することです。
$langcode = !empty($_GET['variable_realm_key_language']) ? $_GET['variable_realm_key_language'] : $GLOBALS['language']->language;
次に、2番目のパラメーターとして$ langcodeを使用してi18n_variable_get()を使用できます。
ページタイトルモジュールを使用して入力されたテキストの翻訳可能な文字列を作成する必要があり、次のコードを使用して変数を作成しました
function module_variable_info($options) {
$variables['page_title_type_news_and_event'] = array(
'type' => 'text',
'title' => t('Page title CT New Events', array(), $options),
'default' => '',
'description' => t('Module : Page title', array(), $options),
);
return $variables;
}
admin/config/regional/i18n/variableにある他のタブでそれらを見ることができ、そこでチェックボックスを有効にしました
次に、文字列をadmin/config/system/variableおよびothers tabで翻訳します。