Error message
You are browsing documentation for drupal 7.x, which is not supported anymore. Read the updated version of this page for drupal 11.x (the latest version).function LocaleTranslationFunctionalTest::testJavaScriptTranslation
File
-
modules/
locale/ locale.test, line 480
Class
- LocaleTranslationFunctionalTest
- Functional test for string translation and validation.
Code
function testJavaScriptTranslation() {
$user = $this->drupalCreateUser (array(
'translate interface',
'administer languages',
'access administration pages',
));
$this->drupalLogin ($user);
$langcode = 'xx';
// The English name for the language. This will be translated.
$name = $this->randomName (16);
// The native name for the language.
$native = $this->randomName (16);
// The domain prefix.
$prefix = $langcode;
// Add custom language.
$edit = array(
'langcode' => $langcode,
'name' => $name,
'native' => $native,
'prefix' => $prefix,
'direction' => '0',
);
$this->drupalPost ('admin/config/regional/language/add', $edit, t ('Add custom language'));
drupal_static_reset ('language_list');
// Build the JavaScript translation file.
$this->drupalGet ('admin/config/regional/translate/translate');
// Retrieve the id of the first string available in the {locales_source}
// table and translate it.
$query = db_select ('locales_source', 'l');
$query->addExpression ('min(l.lid)', 'lid');
$result = $query->condition ('l.location', '%.js%', 'LIKE')
->condition ('l.textgroup', 'default')
->execute ();
$url = 'admin/config/regional/translate/edit/' . $result->fetchObject ()->lid;
$edit = array(
'translations[' . $langcode . ']' => $this->randomName (),
);
$this->drupalPost ($url, $edit, t ('Save translations'));
// Trigger JavaScript translation parsing and building.
require_once DRUPAL_ROOT . '/includes/locale.inc';
_locale_rebuild_js ($langcode);
// Retrieve the JavaScript translation hash code for the custom language to
// check that the translation file has been properly built.
$file = db_select ('languages', 'l')->fields ('l', array(
'javascript',
))
->condition ('language', $langcode)
->execute ()
->fetchObject ();
$js_file = 'public://' . variable_get ('locale_js_directory', 'languages') . '/' . $langcode . '_' . $file->javascript . '.js';
$this->assertTrue ($result = file_exists ($js_file), format_string ('JavaScript file created: %file', array(
'%file' => $result ? $js_file : 'not found',
)));
// Test JavaScript translation rebuilding.
file_unmanaged_delete ($js_file);
$this->assertTrue ($result = !file_exists ($js_file), format_string ('JavaScript file deleted: %file', array(
'%file' => $result ? $js_file : 'found',
)));
cache_clear_all ();
_locale_rebuild_js ($langcode);
$this->assertTrue ($result = file_exists ($js_file), format_string ('JavaScript file rebuilt: %file', array(
'%file' => $result ? $js_file : 'not found',
)));
// Test if JavaScript translation contains a custom string override.
$string_override = $this->randomName ();
variable_set ('locale_custom_strings_' . $langcode, array(
'' => array(
$string_override => $string_override,
),
));
_locale_rebuild_js ($langcode);
$file = db_select ('languages', 'l')->fields ('l', array(
'javascript',
))
->condition ('language', $langcode)
->execute ()
->fetchObject ();
$js_file = 'public://' . variable_get ('locale_js_directory', 'languages') . '/' . $langcode . '_' . $file->javascript . '.js';
$content = file_get_contents ($js_file);
$this->assertTrue (strpos ($content, '"' . $string_override . '":"' . $string_override . '"') > 0);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.