diff --git a/includes/salsa_entity.language_mapper.inc b/includes/salsa_entity.language_mapper.inc index 17b489e..9a53987 100644 --- a/includes/salsa_entity.language_mapper.inc +++ b/includes/salsa_entity.language_mapper.inc @@ -17,7 +17,7 @@ class SalsaEntityLanguageMapper { * * @var array */ - protected static $code = array( + protected static $code_mapping = array( 'de' => 'deu', 'en' => 'eng', 'fr' => 'fre', @@ -46,9 +46,11 @@ class SalsaEntityLanguageMapper { if (!isset($langcode)) { $langcode = $language->language; } + // Provide possibility to override code mapping. + $codes = variable_get('salsa_entity_supporter_language_code_mapping', self::$code_mapping); - if (isset(self::$code[$langcode])) { - return self::$code[$langcode]; + if (isset($codes[$langcode])) { + return $codes[$langcode]; } return NULL; } @@ -63,8 +65,10 @@ class SalsaEntityLanguageMapper { * The ISO-639-1 or NULL if the language is not defined yet. */ public static function fromIso639_2($langcode) { - if ($key = array_search($langcode, self::$code)) { - return self::$code[$key]; + // Provide possibility to override code mapping. + $codes = variable_get('salsa_entity_supporter_language_code_mapping', self::$code_mapping); + if ($key = array_search($langcode, $codes)) { + return $codes[$key]; } return NULL; } diff --git a/salsa_entity.module b/salsa_entity.module index 97d0202..f807222 100644 --- a/salsa_entity.module +++ b/salsa_entity.module @@ -239,10 +239,14 @@ function salsa_entity_salsa_object_type_info() { */ function salsa_entity_entity_presave($entity, $type) { if ($type == 'salsa_supporter' && variable_get('salsa_entity_set_supporter_language', TRUE)) { - global $language; - $lang_code = SalsaEntityLanguageMapper::toIso639_2(); - $default_language = variable_get('language_default'); - $entity->Language_Code = $lang_code ? $lang_code : SalsaEntityLanguageMapper::toIso639_2($default_language->language); + // Set the code only for new supporters and such that don't have any + // language code yet. + if (empty($entity->supporter_KEY) && empty($entity->Language_Code)) { + global $language; + $lang_code = SalsaEntityLanguageMapper::toIso639_2(); + $default_language = variable_get('language_default'); + $entity->Language_Code = $lang_code ? $lang_code : SalsaEntityLanguageMapper::toIso639_2($default_language->language); + } } }