02-24-2017 06:49 AM
Hi,
I have an operation that returns some data of a document. I call this operation through Rest API to use it in another application. I want the operation to return the document type, but translated to the language of the user (File -> Fitxategia (in Basque) -> Archivo (in Spanish), etc.). I've tried many different ways to translate the messages but I'm not able to make it work, and I don't see any example of translations in operations (except AddMessage, that doesn't do what i want, and I guess it won't work if you don't use it from the web interface).
Can anyone guide me to the correct answer, please?
Thank you so much,
02-27-2017 01:14 PM
Hi,
You could try the following inside your custom operations (extracted from some Nuxeo operations):
import org.apache.commons.lang.LocaleUtils;
import org.nuxeo.common.utils.i18n.I18NUtils;
protected Locale getLocale() {
if (lang == null) {
lang = (String) ctx.get("lang");
}
if (lang == null) {
lang = "en";
}
return LocaleUtils.toLocale(lang);
}
protected String translate(String key) {
if (key == null) {
return "";
}
return I18NUtils.getMessageString("messages", key, new Object[0], getLocale());
}
03-03-2017 06:36 AM
Hi Anahide,
thank you for your reply.
I couldn't obtain the locale using ctx.get("lang")
as you proposed, but I got what I wanted with this:
protected Locale getLocale() {
String lang = null;
NuxeoPrincipal principal = (NuxeoPrincipal) session.getPrincipal();
UserProfileService userProfileService = Framework.getLocalService(
UserProfileService.class);
DocumentModel userProfileDoc = userProfileService.getUserProfileDocument(
principal.getName(), session);
if (userProfileDoc.getPropertyValue(
UserProfileConstants.USER_PROFILE_LOCALE) != null) {
lang = (String) userProfileDoc.getPropertyValue(
UserProfileConstants.USER_PROFILE_LOCALE);
}
if (lang == null) {
lang = "en";
}
return LocaleUtils.toLocale(lang);
}
I guess this won't be the best way to do it, but I will stick to this until I get another way. Please anyone tell me if you see anything very very wrong 😉
Thank you very much for showing me the way!
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.