private Map<String, Component> initialiseAndGetLocaleSpecificComponents(FormDefinition<T> formDefinition, FormFieldFactory formFieldFactory, Locale locale) {
final Map<String, Component> localisedComponents = new HashMap<>();
formDefinition.getFieldDefinitions().forEach(fieldDefinition -> {
final String key = fieldDefinition.getName();
log.debug("Creating component for {} and locale {}", key, locale);
final HasValue<Object> component = formFieldFactory.createField((FieldDefinition<Object>) fieldDefinition, locale, i18NAuthoringSupport);
localisedBinders.get(locale).bind(component, resolvePropertyNameByLocale(key, locale, fieldDefinition.isI18n()));
localisedComponents.put(key, (Component) component);
});
formDefinition.getSubFormDefinitions().forEach(def -> {
final String key = def.getName();
log.debug("Creating form component for {} and locale {}", key, locale);
final ItemProviderStrategy<?> subFormProviderStrategy = this.create(((ComplexPropertyDefinition<?>) def).getItemProvider(), def);
final EditorView<?> subForm = getViewProvider().create(def, subFormProviderStrategy, locale);
final Component component = subForm.getLayout(locale);
component.setCaption(def.getLabel());
subForms.putIfAbsent(subForm, subFormProviderStrategy);
localisedComponents.put(key, component);
});
return localisedComponents;
}