Мне нужно проверить в моем портлете язык, который пользователь выбрал в качестве своего "основного" языка, чтобы сделать это, я должен сначала получить идентификатор пользователя (имя).Я искал его в течение двух дней (форумы Liferay, форумы vaadin, stackoverflow и т. д.), но ничего не нашло, что будет работать до сих пор.
Я нашел хороший пример, но он, кажется, не работает (он всегда возвращает «ноль»).
package com.example.translation_portlet;
import javax.portlet.PortletRequest;
import javax.portlet.PortletResponse;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.model.User;
import com.liferay.portal.util.PortalUtil;
import com.vaadin.Application;
import com.vaadin.terminal.gwt.server.PortletRequestListener;
import com.vaadin.ui.Label;
import com.vaadin.ui.Window;
public class Translation_portletApplication extends Application implements
PortletRequestListener {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void init() {
Window mainWindow = new Window("LoginApplication");
Label label = new Label("Hello anonymous Vaadin user");
if (getUser() != null) {
// user has logged in
label = new Label("Hello " + ((User) getUser()).getFullName());
}
mainWindow.addComponent(label);
setMainWindow(mainWindow);
}
@Override
public void onRequestStart(PortletRequest request, PortletResponse response) {
if (getUser() == null) {
try {
User user = PortalUtil.getUser(request);
setUser(user);
} catch (PortalException e) {
e.printStackTrace();
} catch (SystemException e) {
e.printStackTrace();
}
}
}
@Override
public void onRequestEnd(PortletRequest request, PortletResponse response) {
// Nothing to do here currently, exists only to implement the
// PortletRequestListener interface.
}
}
РЕДАКТИРОВАТЬ:
это то, что я пробовалдо сих пор:
locale = user.getLocale();
button.setCaption(LanguageUtil.get(locale, "first_name"));
и в моем Language.properties у меня перевод "first_name" установлен на 1st Name:
first_name=1st Name
файл Language.properties находится в моем содержимомПапка, которую я добавил, и ресурс-пакет для моего portlet.xml тоже:
<resource-bundle>content/Language</resource-bundle>
Для заголовка кнопки задано «first_name», а не 1st name, если я изменяю ключ на first-name, то получаюперевод по умолчанию нет моего перевода из файла language.properties, я что-то упустил?