Update : Mit der neuesten Version des Variablenübersetzungsmoduls (dh 7.x-1.7) wird die Liste der übersetzten Variablen vom language
Variablenbereichscontroller in seiner list
Variablen gespeichert . Der folgende Code zeigt, wie Sie mit dem Realm-Controller übersetzte Variablen aus einer Modulimplementierung festlegen hook_enable()
.
function MODULE_enable() {
// Get the language variable controller.
$controller = variable_realm_controller('language');
// The list of translatable variables.
$translatable_variables = $controller->getEnabledVariables();
// The list of variables that could be translated.
$available_variables = $controller->getAvailableVariables();
// Add our variables to $translatable_variables.
foreach ($available_variables as $name) {
// Translate user mail messages.
if (preg_match('/^user_mail_[a-zA-Z_\[\]]*\[mail_part\]$/', $name)) {
$translatable_variables[] = $name;
}
}
$translatable_variables = array_merge($translatable_variables, array(
'user_registration_help',
'user_picture_guidelines',
'maintenance_mode_message',
'menu_main_links_source',
'menu_secondary_links_source',
));
// Save the updated list of translatable variables.
$controller->setRealmVariable('list', array_unique($translatable_variables));
}
Update : Dies ist nicht der richtige Weg, es sei denn, Sie verwenden eine alte Version des Variablenübersetzungsmoduls (<7.x-1.7).
Die Namen der übersetzten Variablen werden in der i18n_variable_conf
Variablen gespeichert . Diese Variable selbst kann nicht mit Strongarm (oder einer ähnlichen Lösung) exportiert werden. Ich habe einen alten Trick angewendet: die Variable in einer hook_init
Implementierung überprüfen und bei Bedarf festlegen. Das Array im foreach-Controller enthält die Namen der zu übersetzenden Variablen.
/**
* Implements hook_init();
*/
function MODULE_init() {
$i18n_variable_conf = variable_get('i18n_variable_conf', array());
$i18n_variable_conf_updated = FALSE;
foreach(array(...) as $name) {
if (!in_array($name, $i18n_variable_conf)) {
$i18n_variable_conf[] = $name;
$i18n_variable_conf_updated = TRUE;
}
}
if ($i18n_variable_conf_updated) {
variable_set('i18n_variable_conf', $i18n_variable_conf);
variable_set('i18n_variable_list', variable_children($i18n_variable_conf));
cache_clear_all('*', I18N_VARIABLE_CACHE, TRUE);
}
}
Im Vergleich zu einer funktionsbasierten Lösung werden dadurch die Einstellungen für die konfigurierten Variablen erzwungen und alle manuellen Bearbeitungen abgebrochen. Dies kann gewollt oder nicht gewollt sein. In meinem Fall war es.
Mein einziges Problem mit dieser Lösung ist, dass jede Anforderung einen gewissen Overhead hatte.