gpt4 book ai didi

java - 来自数据库的多语言支持数据

转载 作者:行者123 更新时间:2023-12-01 15:16:49 25 4
gpt4 key购买 nike

我的应用程序具有英语和德语的 nameEn 和 nameDe 实体。但现在只使用英文。由于可用的实体如此之多,我希望有一个可以返回所选语言条目的通用类,但对于多个条目,我的方法不起作用。

 @Entity
@Table(name="employee")
public class Employee implements java.io.Serializable {
// Fields
private Integer id;
private String nameEn;
private String nameDe;

//Getter, Setter Methods
}

@Entity
@Table(name="address")
public class Address implements
java.io.Serializable {

private String descriptionEn;
private String descriptionDe;
}

public interface ILabelText {
String getNameEn();
String getNameDe();
String getDescriptionEn();
String getDescriptionDe();
}

public abstract class LabelText implements ILabelText, Serializable {

private static final long serialVersionUID = 1L;

protected String descriptionEn;
protected String descriptionDe;


private Logger log = Logger.getLogger(LabelText.class);
String language = FacesContext.getCurrentInstance().getViewRoot().getLocale().getLanguage();


public String getDescription() {
log.info("Language Selected is " + language);
if (language.equals("De")) {
return getDescriptionDe();
} else {
return getDescriptionEn();
}
}

public String getName() {
log.info("Language Selected is " + language);
if (language.equals("De")) {
return getNameDe();
} else {
return getNameEn();
}
}
}


//In Xhtml, based on selected locale, display value accordingly
<h:outputText value="#{emp.getName()}" />
<h:outputText value="#{add.getDescription()}" />

最佳答案

您可以像这样创建一个实体Lang

@Entity
public class Lang implements Serializable
{
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;

@NotNull
private String key;

@NotNull
private String translation;
}

并在您的地址中使用它,如下所示

@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
@MapKey(name = "key")
protected Map<String, Lang> name;

然后您就可以在 JSF 中访问正确的语言:

<h:outputText value="#{emp.name[userLocale].translation}" />

表达式 userLocale 应解析为您的语言键(ende...)或者可以进行硬编码,例如#{emp.name['en'].translation}

关于java - 来自数据库的多语言支持数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11494377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com