/**
  * @since 2.4
  *
  * @param string $userValue
  *
  * @return array
  */
 public function parse($userValue)
 {
     $text = $userValue;
     $languageCode = mb_substr(strrchr($userValue, "@"), 1);
     // Remove the language code and marker from the text
     if ($languageCode !== '') {
         $text = substr_replace($userValue, '', (mb_strlen($languageCode) + 1) * -1);
     }
     return array($text, Localizer::asBCP47FormattedLanguageCode($languageCode));
 }
 /**
  * @see DataValue::parseUserValue
  *
  * @param string $value
  */
 protected function parseUserValue($userValue)
 {
     $languageCode = Localizer::asBCP47FormattedLanguageCode($userValue);
     if ($languageCode === '') {
         $this->addErrorMsg(array('smw-datavalue-languagecode-missing', $this->m_property !== null ? $this->m_property->getLabel() : 'UNKNOWN'));
         return;
     }
     // Checks whether any localisation is available for that language tag in
     // MediaWiki
     if (!Localizer::isSupportedLanguage($languageCode)) {
         $this->addErrorMsg(array('smw-datavalue-languagecode-invalid', $languageCode));
         return;
     }
     $this->m_dataitem = new DIBlob($languageCode);
 }
 public function testAsBCP47FormattedLanguageCode()
 {
     $this->assertEquals('zh-Hans', Localizer::asBCP47FormattedLanguageCode('zh-hans'));
 }
 /**
  * @since 2.4
  *
  * @param string $languageCode
  */
 public function setLanguageCode($languageCode)
 {
     $this->languageCode = Localizer::asBCP47FormattedLanguageCode($languageCode);
 }
 /**
  * @since 2.4
  *
  * @param string $languageCode
  *
  * @return DataValue|null
  */
 public function getTextValueByLanguage($languageCode)
 {
     if (($list = $this->toArray()) === array()) {
         return null;
     }
     if ($list['_LCODE'] !== Localizer::asBCP47FormattedLanguageCode($languageCode)) {
         return null;
     }
     if ($list['_TEXT'] === '') {
         return null;
     }
     $dataValue = DataValueFactory::getInstance()->newDataValueByItem(new DIBlob($list['_TEXT']), new DIProperty('_TEXT'));
     return $dataValue;
 }