toString()方法的国际化

时间:2015-05-20 06:29:40

标签: java internationalization

在我的模型类中,我重写了toString()方法,下面给出了toString方法的内容。

getQueryName() + " -" + (getCriticalities().isEmpty() ? "" : " <b>Criticalities:</b> " + getCriticalities())
                        + (getCompletions().isEmpty() ? "" : " <b>Completions:</b> " + getCompletions()) + (getPriorities().isEmpty() ? "" : " <b>Priorities:</b> " + getPriorities())
                        + (getUrgencies().isEmpty() ? "" : " <b>Urgencies:</b> " + getUrgencies())
                        + (getHistorical().isEmpty() || getHistorical().equals("None") ? "" : " <b>Historical:</b> " + getHistorical())
                        + (getPlannerGroups().isEmpty() ? "" : " <b>Planner Groups:</b> " + getPlannerGroups())
                        + (getWorkOrderNumbers().isEmpty() ? "" : " <b>Work Order Number:</b> " + getWorkOrderNumbers())
                        + (getWorkCenters().isEmpty() ? "" : " <b>Work Centers:</b> " + getWorkCenters());

我必须改变用户选择的语言中的关键词,完成词等词。我已经有了语言的属性文件。但由于它是一个实体类,我不确定如何改变它。

2 个答案:

答案 0 :(得分:0)

我认为你有两个选择:  在toString方法中返回语言键而不是文字,然后使用bundle.getString(object.toString())

或者将键设置为变量,然后在toString方法中使用bundle.getString(variable)。

答案 1 :(得分:0)

我担心你会遇到“关注点分离”的问题 在理想世界中,它是负责I18n的视图,即解析翻译。您的模型应该是语言识别的具体原因吗? 就个人而言,我不这么认为。您应该尽可能保持模型与语言无关,并格式化所有数字,并翻译视图中的所有消息。

这里需要注意的一件事:如果像db.transaction(function(tx) { fn2(tx).then(function(tx) { // new tranaction as the old one is closed db.transaction(function(tx) { $q.all(fn(tx)).then(function(a) { console.log("Result:", a); }); }); }); }); 这样的东西需要翻译并且项目没有太多,那么使用枚举而不是字符串通常是有意义的(在编程逻辑中使用字符串被认为是不好的做法,方式)。
如果必须使用特定对象,则添加特定标识符可能是有意义的,以后可以使用该标识符来解析翻译(在Criticalities查找中)。有时您可以使用对象值,但这会降低翻译质量,因为翻译人员需要上下文(提供上下文的最简单方法是将其带入翻译密钥)。