Drupal 6, programmatically add string translation

I need to programmatically add a string translation (for example, to translate taxonomy terms). Is there any function like add_translation($my_term_name, $language, $translation) ?

+4
source share
1 answer

Unfortunately, the kernel does not have a good function. You can check how the language menu does this by writing directly to the database:

 function locale_translate_edit_form_submit($form, &$form_state) { $lid = $form_state['values']['lid']; foreach ($form_state['values']['translations'] as $key => $value) { $translation = db_result(db_query("SELECT translation FROM {locales_target} WHERE lid = %d AND language = '%s'", $lid, $key)); if (!empty($value)) { // Only update or insert if we have a value to use. if (!empty($translation)) { db_query("UPDATE {locales_target} SET translation = '%s' WHERE lid = %d AND language = '%s'", $value, $lid, $key); } else { db_query("INSERT INTO {locales_target} (lid, translation, language) VALUES (%d, '%s', '%s')", $lid, $value, $key); } } elseif (!empty($translation)) { // Empty translation entered: remove existing entry from database. db_query("DELETE FROM {locales_target} WHERE lid = %d AND language = '%s'", $lid, $key); } // Force JavaScript translation file recreation for this language. _locale_invalidate_js($key); } drupal_set_message(t('The string has been saved.')); // Clear locale cache. _locale_invalidate_js(); cache_clear_all('locale:', 'cache', TRUE); $form_state['redirect'] = 'admin/build/translate/search'; return; } 

Remember to check if your text comes from an untrusted source (e.g. user input).

+4
source

Source: https://habr.com/ru/post/1397595/


All Articles