Cập nhật : Với phiên bản gần đây của mô-đun dịch Biến (tức là 7.x-1.7), danh sách các biến được dịch được lưu trữ bởi bộ điều khiển language
lĩnh vực biến trong list
biến của nó . Đoạn mã sau trình bày cách sử dụng bộ điều khiển cảnh giới để đặt các biến được dịch từ hook_enable()
triển khai mô-đun .
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));
}
Cập nhật : Đây không phải là cách để làm điều đó, trừ khi bạn đang sử dụng một phiên bản cũ của mô-đun dịch Biến (<7.x-1.7)
Tên của các biến được dịch được lưu trữ trong i18n_variable_conf
biến. Biến này tự nó không thể được xuất bằng Strongarm (hoặc giải pháp tương tự). Tôi đã kết thúc bằng một thủ thuật cũ: kiểm tra biến trong hook_init
triển khai và thiết lập nó nếu cần. Mảng trong bộ điều khiển foreach chứa tên của các biến được dịch.
/**
* 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);
}
}
So với một giải pháp dựa trên tính năng, điều này thực thi các cài đặt cho các biến được định cấu hình và sẽ hủy mọi chỉnh sửa thủ công. Điều này có thể muốn hoặc không muốn. Trong trường hợp của tôi, nó đã được.
Vấn đề duy nhất của tôi với giải pháp này là nó có một số chi phí cho mỗi yêu cầu.