private PoDatabaseWriter::importString(PoItem $item)
Imports one string into the database.
Parameters
\Drupal\Component\Gettext\PoItem $item: The item being imported.
Return value
int The string ID of the existing string modified or the new string added.
File
- core/modules/locale/src/PoDatabaseWriter.php, line 206
Class
- PoDatabaseWriter
- Gettext PO writer working with the locale module database.
Namespace
Drupal\locale
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | private function importString(PoItem $item ) { // Initialize overwrite options if not set. $this ->options[ 'overwrite_options' ] += array ( 'not_customized' => FALSE, 'customized' => FALSE, ); $overwrite_options = $this ->options[ 'overwrite_options' ]; $customized = $this ->options[ 'customized' ]; $context = $item ->getContext(); $source = $item ->getSource(); $translation = $item ->getTranslation(); // Look up the source string and any existing translation. $strings = \Drupal::service( 'locale.storage' )->getTranslations( array ( 'language' => $this ->langcode, 'source' => $source , 'context' => $context , )); $string = reset( $strings ); if (! empty ( $translation )) { // Skip this string unless it passes a check for dangerous code. if (!locale_string_is_safe( $translation )) { \Drupal::logger( 'locale' )->error( 'Import of string "%string" was skipped because of disallowed or malformed HTML.' , array ( '%string' => $translation )); $this ->report[ 'skips' ]++; return 0; } elseif ( $string ) { $string ->setString( $translation ); if ( $string ->isNew()) { // No translation in this language. $string ->setValues( array ( 'language' => $this ->langcode, 'customized' => $customized , )); $string ->save(); $this ->report[ 'additions' ]++; } elseif ( $overwrite_options [ $string ->customized ? 'customized' : 'not_customized' ]) { // Translation exists, only overwrite if instructed. $string ->customized = $customized ; $string ->save(); $this ->report[ 'updates' ]++; } $this ->report[ 'strings' ][] = $string ->getId(); return $string ->lid; } else { // No such source string in the database yet. $string = \Drupal::service( 'locale.storage' )->createString( array ( 'source' => $source , 'context' => $context )) ->save(); \Drupal::service( 'locale.storage' )->createTranslation( array ( 'lid' => $string ->getId(), 'language' => $this ->langcode, 'translation' => $translation , 'customized' => $customized , ))->save(); $this ->report[ 'additions' ]++; $this ->report[ 'strings' ][] = $string ->getId(); return $string ->lid; } } elseif ( $string && ! $string ->isNew() && $overwrite_options [ $string ->customized ? 'customized' : 'not_customized' ]) { // Empty translation, remove existing if instructed. $string -> delete (); $this ->report[ 'deletes' ]++; $this ->report[ 'strings' ][] = $string ->lid; return $string ->lid; } } |
Please login to continue.