Skip to content
Snippets Groups Projects
Commit a13355e8 authored by srosse's avatar srosse
Browse files

OO-4782: multi-lines translation for correction workflow's templates

parent 3ef41adf
No related branches found
No related tags found
No related merge requests found
......@@ -62,14 +62,34 @@ public class SingleKeyTranslatorController extends FormBasicController {
private static final String LBL_NAME_PREFIX = "lbl.";
private Map<String, TextElement> textElements;
private Object uobject;
private boolean textArea;
@Autowired
private I18nManager i18nMng;
@Autowired
private I18nModule i18nModule;
/**
*
* @param ureq The user request
* @param wControl The window control
* @param keyToTranslate The key to translate
* @param translatorBaseClass The package to translate
*/
public SingleKeyTranslatorController(UserRequest ureq, WindowControl wControl, String keyToTranslate, Class<?> translatorBaseClass) {
this(ureq,wControl,new String[]{keyToTranslate},translatorBaseClass);
this(ureq, wControl, new String[]{keyToTranslate}, translatorBaseClass, false);
}
/**
*
* @param ureq The user request
* @param wControl The window control
* @param keyToTranslate The key to translate
* @param translatorBaseClass The package to translate
* @param textArea true if the edit field is a text area, false for a simple text field
*/
public SingleKeyTranslatorController(UserRequest ureq, WindowControl wControl, String keyToTranslate, Class<?> translatorBaseClass, boolean textArea) {
this(ureq, wControl, new String[]{keyToTranslate}, translatorBaseClass, textArea);
}
/**
......@@ -84,14 +104,17 @@ public class SingleKeyTranslatorController extends FormBasicController {
/**
*
* @param ureq
* @param wControl
* @param ureq The user request
* @param wControl The window control
* @param keysToTranslate array of keys to translate (each key will have the
* same value, translation is only done once (for each language) !)
* @param translatorBaseClass
* @param translatorBaseClass The package to translate
* @param textArea true if the edit field is a text area, false for a simple text field
*/
public SingleKeyTranslatorController(UserRequest ureq, WindowControl wControl, String[] keysToTranslate, Class<?> translatorBaseClass) {
public SingleKeyTranslatorController(UserRequest ureq, WindowControl wControl, String[] keysToTranslate,
Class<?> translatorBaseClass, boolean textArea) {
super(ureq, wControl, FormBasicController.LAYOUT_VERTICAL);
this.textArea = textArea;
i18nItemKeys = keysToTranslate;
this.translatorBaseClass = translatorBaseClass;
initForm(ureq);
......@@ -119,18 +142,24 @@ public class SingleKeyTranslatorController extends FormBasicController {
// build the form
textElements = new HashMap<>();
for (I18nRowBundle i18nRowBundle : bundles) {
uifactory.addStaticTextElement(LBL_NAME_PREFIX + i18nRowBundle.getLanguageKey(), null, i18nRowBundle.getKeyTranslator().getLocale()
.getDisplayLanguage(getLocale()), formLayout);
String labelId = LBL_NAME_PREFIX + i18nRowBundle.getLanguageKey();
String label = i18nRowBundle.getKeyTranslator().getLocale().getDisplayLanguage(getLocale());
uifactory.addStaticTextElement(labelId, null, label, formLayout);
String value = "";
if (i18nRowBundle.hasTranslationForValue(i18nItemKeys[0])) {
value = i18nRowBundle.getKeyTranslator().translate(i18nItemKeys[0]);
}
TextElement te = uifactory.addTextElement(TXT_NAME_PREFIX + i18nRowBundle.getLanguageKey(), null, 255, value, formLayout);
String textId = TXT_NAME_PREFIX + i18nRowBundle.getLanguageKey();
TextElement te;
if(textArea) {
te = uifactory.addTextAreaElement(textId, null, -1, 8, 60, false, false, value, formLayout);
} else {
te = uifactory.addTextElement(textId, null, null, 255, value, formLayout);
te.setDisplaySize(60);
}
te.setMandatory(true);
te.setDisplaySize(60);
textElements.put(i18nRowBundle.getLanguageKey(), te);
}
FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("ok_cancel", getTranslator());
......@@ -190,11 +219,11 @@ public class SingleKeyTranslatorController extends FormBasicController {
*
* @author strentini
*/
class I18nRowBundle {
private Locale overlayLocale;
private Locale locale;
private String languageKey;
private Translator keyTranslator;
private class I18nRowBundle {
private final Locale overlayLocale;
private final Locale locale;
private final String languageKey;
private final Translator keyTranslator;
/**
*
......@@ -217,10 +246,6 @@ public class SingleKeyTranslatorController extends FormBasicController {
return overlayLocale;
}
public Locale getLocale() {
return locale;
}
public String getLanguageKey() {
return languageKey;
}
......@@ -228,7 +253,5 @@ public class SingleKeyTranslatorController extends FormBasicController {
public Translator getKeyTranslator() {
return keyTranslator;
}
}
}
......@@ -31,6 +31,7 @@ import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
import org.olat.core.util.Formatter;
import org.olat.core.util.i18n.ui.SingleKeyTranslatorController;
/**
......@@ -55,30 +56,34 @@ public class GradingAdminTemplatesController extends FormBasicController {
@Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
// new grader
initForm("mail.to.grader.subject", "mail.grader.to.entry.subject", formLayout);
initForm("mail.to.grader.body", "mail.grader.to.entry.body", formLayout);
initForm("mail.to.grader.subject", "mail.grader.to.entry.subject", false, formLayout);
initForm("mail.to.grader.body", "mail.grader.to.entry.body", true, formLayout);
uifactory.addSpacerElement("spacer-new-grader", formLayout, false);
// notifications
initForm("notification.subject", "mail.notification.subject", formLayout);
initForm("notification.body", "mail.notification.body", formLayout);
initForm("notification.subject", "mail.notification.subject", false, formLayout);
initForm("notification.body", "mail.notification.body", true, formLayout);
uifactory.addSpacerElement("spacer-notification", formLayout, false);
// reminder 1
initForm("reminder.1.subject", "mail.reminder1.subject", formLayout);
initForm("reminder.1.body", "mail.reminder1.body", formLayout);
initForm("reminder.1.subject", "mail.reminder1.subject", false, formLayout);
initForm("reminder.1.body", "mail.reminder1.body", true, formLayout);
uifactory.addSpacerElement("spacer-1-reminder", formLayout, false);
// reminder 2
initForm("reminder.2.subject", "mail.reminder2.subject", formLayout);
initForm("reminder.2.body", "mail.reminder2.body", formLayout);
initForm("reminder.2.subject", "mail.reminder2.subject", false, formLayout);
initForm("reminder.2.body", "mail.reminder2.body", true, formLayout);
}
private void initForm(String labelI18nKey, String textI18nKey, FormItemContainer formLayout) {
private void initForm(String labelI18nKey, String textI18nKey, boolean multiLines, FormItemContainer formLayout) {
String text = translate(textI18nKey);
if(multiLines) {
text = Formatter.escWithBR(text).toString();
}
StaticTextElement viewEl = uifactory.addStaticTextElement("view." + counter++, labelI18nKey, text, formLayout);
FormLink translationLink = uifactory.addFormLink("translate." + counter++, "translate", null, formLayout, Link.LINK);
translationLink.setUserObject(new TranslationBundle(textI18nKey, labelI18nKey, viewEl));
translationLink.setUserObject(new TranslationBundle(textI18nKey, labelI18nKey, multiLines, viewEl));
}
@Override
......@@ -124,7 +129,7 @@ public class GradingAdminTemplatesController extends FormBasicController {
if(guardModalController(translatorCtrl)) return;
translatorCtrl = new SingleKeyTranslatorController(ureq, getWindowControl(), bundle.getI18nKey(),
GradingAdminTemplatesController.class);
GradingAdminTemplatesController.class, bundle.isMultiLines());
translatorCtrl.setUserObject(bundle);
listenTo(translatorCtrl);
......@@ -135,18 +140,24 @@ public class GradingAdminTemplatesController extends FormBasicController {
}
private void doUpdate(TranslationBundle bundle) {
bundle.getViewEl().setValue(translate(bundle.getI18nKey()));
String text = translate(bundle.getI18nKey());
if(bundle.isMultiLines()) {
text = Formatter.escWithBR(text).toString();
}
bundle.getViewEl().setValue(text);
}
private static class TranslationBundle {
private final String i18nKey;
private final boolean multiLines;
private final String labelI18nKey;
private final StaticTextElement viewEl;
public TranslationBundle(String i18nKey, String labelI18nKey, StaticTextElement viewEl) {
public TranslationBundle(String i18nKey, String labelI18nKey, boolean multiLines, StaticTextElement viewEl) {
this.i18nKey = i18nKey;
this.viewEl = viewEl;
this.multiLines = multiLines;
this.labelI18nKey = labelI18nKey;
}
......@@ -161,5 +172,9 @@ public class GradingAdminTemplatesController extends FormBasicController {
public String getLabelI18nKey() {
return labelI18nKey;
}
public boolean isMultiLines() {
return multiLines;
}
}
}
......@@ -216,7 +216,7 @@ public class UsrPropCfgTableController extends FormBasicController {
String key2Translate2 = handler.i18nColumnDescriptorLabelKey();
String[] keys2Translate = { key2Translate1, key2Translate2 };
singleKeyTrnsCtrl = new SingleKeyTranslatorController(ureq, getWindowControl(), keys2Translate, UserPropertyHandler.class);
singleKeyTrnsCtrl = new SingleKeyTranslatorController(ureq, getWindowControl(), keys2Translate, UserPropertyHandler.class, false);
listenTo(singleKeyTrnsCtrl);
removeAsListenerAndDispose(translatorCallout);
translatorCallout = new CloseableCalloutWindowController(ureq, getWindowControl(), singleKeyTrnsCtrl.getInitialComponent(),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment