diff core/modules/locale/src/TranslationString.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/locale/src/TranslationString.php	Wed Nov 29 16:09:58 2017 +0000
@@ -0,0 +1,123 @@
+<?php
+
+namespace Drupal\locale;
+
+/**
+ * Defines the locale translation string object.
+ *
+ * This class represents a translation of a source string to a given language,
+ * thus it must have at least a 'language' which is the language code and a
+ * 'translation' property which is the translated text of the source string
+ * in the specified language.
+ */
+class TranslationString extends StringBase {
+  /**
+   * The language code.
+   *
+   * @var string
+   */
+  public $language;
+
+  /**
+   * The string translation.
+   *
+   * @var string
+   */
+  public $translation;
+
+  /**
+   * Integer indicating whether this string is customized.
+   *
+   * @var int
+   */
+  public $customized;
+
+  /**
+   * Boolean indicating whether the string object is new.
+   *
+   * @var bool
+   */
+  protected $isNew;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function __construct($values = []) {
+    parent::__construct($values);
+    if (!isset($this->isNew)) {
+      // We mark the string as not new if it is a complete translation.
+      // This will work when loading from database, otherwise the storage
+      // controller that creates the string object must handle it.
+      $this->isNew = !$this->isTranslation();
+    }
+  }
+
+  /**
+   * Sets the string as customized / not customized.
+   *
+   * @param bool $customized
+   *   (optional) Whether the string is customized or not. Defaults to TRUE.
+   *
+   * @return \Drupal\locale\TranslationString
+   *   The called object.
+   */
+  public function setCustomized($customized = TRUE) {
+    $this->customized = $customized ? LOCALE_CUSTOMIZED : LOCALE_NOT_CUSTOMIZED;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function isSource() {
+    return FALSE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function isTranslation() {
+    return !empty($this->lid) && !empty($this->language) && isset($this->translation);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getString() {
+    return isset($this->translation) ? $this->translation : '';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setString($string) {
+    $this->translation = $string;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function isNew() {
+    return $this->isNew;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function save() {
+    parent::save();
+    $this->isNew = FALSE;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function delete() {
+    parent::delete();
+    $this->isNew = TRUE;
+    return $this;
+  }
+
+}