}
$toSet = array_intersect_key($this->fields[$value['id']], $value);
$value = array_merge($value, $toSet);
- $value['actual_language'] = $this->translatedLanguage;
+ $value['actual_language'] = $this->translatedLanguage[$value['id']];
}
return $result;
}
//n }
foreach ($translated['fields'] ?? [] as $field) {
\Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage]['fields'][$field['entity_id']][$field['entity_field']] = $field['string'];
- \Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage]['language'] = $translated['language'];
+ if (!isset(\Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage]['language'][$field['entity_id']])) {
+ \Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage]['language'][$field['entity_id']] = $field['language'];
+ }
}
}
if (!empty(\Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage])) {
}
$fields = $translations->execute();
$languages = [];
- foreach ($fields as $index => $field) {
- $languages[$field['language']][$index] = $field;
+ foreach ($fields as $field) {
+ $languages[$field['language']][$field['entity_id'] . $field['entity_field']] = $field;
}
$bizLocale = $userLocale->renegotiate(array_keys($languages));
- return $bizLocale
- ? ['fields' => $languages[$bizLocale->nominal], 'language' => $bizLocale->nominal]
- : [];
+ if ($bizLocale) {
+ $fields = $languages[$bizLocale->nominal];
+
+ foreach ($languages as $language => $languageFields) {
+ if ($language !== $bizLocale->nominal) {
+ // Merge in any missing entities. Ie we might have a translation for one template in es_MX but
+ // need to fall back to es_ES for another.
+ $fields = array_merge($languageFields, $fields);
+ }
+ }
+ return ['fields' => $fields, 'language' => $bizLocale->nominal];
+ }
+ return [];
}
}
->execute()->indexBy('workflow_name');
$firstTemplate = array_key_first($messageTemplates);
$secondTemplate = array_key_last($messageTemplates);
- foreach ($messageTemplates as $workflowName => $messageTemplate) {
+ foreach ($messageTemplates as $workflowName => $messageTemplate) {
$records = [
['entity_field' => 'msg_subject', 'string' => 'subject - Spanish', 'language' => 'es_ES'],
['entity_field' => 'msg_html', 'string' => 'html -Spanish', 'language' => 'es_ES'],