我正在使用REST服务器端。
我会在响应客户端时更新HTTP标头中的 error_code
和error_message
。
这一点很好,直到error_message是静态的。
e.g. error_code : PC_USER_007
error_message : You are logged out!
客户端将查看error_code(PC_USER_007)
;在相应的属性中,他们将进行本地化。
因此,如果用户属于中国,GUI现在将以中文显示相同的error_message。
如果是动态错误字符串,如下所示,
e.g. error_code : PC_USER_008
error_message : You have tried 2 attempts; only 1 attempts is remaining.
Here 2, 1 are dynamic values..
现在GUI方面我们如何将此错误消息转换为其他语言。
任何框架(struts,spring ......)已经支持这种本地化了吗?
这与How to replace a set of tokens in a Java String?
的问题完全相反服务器端我按照上面的链接;现在我想在客户端遇到相反的情况。
答案 0 :(得分:6)
让服务器传递完整的error_message是不合适的。
通常服务器传递error_code和一组错误值。 e.g。
error_code: PC_USER_008
error_values: "42", "a value"
客户端以多种语言保存该error_code的模板,如
"This is argument {1} and arg {2}"
"Ceci est argument {1} et arg {2}"
等。
然后客户端使用接收到的值
执行占位符{1} ... {n}的简单字符串替换答案 1 :(得分:1)
如果我是你,我首先将错误代码从HTTP标头移动到响应内容中的结构(比如json)。标题不是分层的,没有结构。最好将它们包含在具有适当状态代码的响应中。
对于本地化消息及其模板,我没有遇到任何REST服务,它返回错误响应而没有错误消息。例如,查看zoho,django(REST API),S3。它们都返回代码和消息。
实现模板,但在服务器端执行。要求客户端向您发送一个标识其区域设置的ID。根据区域设置,可以更改错误消息。由于服务器端更改,您的客户永远不必更新其代码,并且您将始终向客户端显示正确的本地化消息。
答案 2 :(得分:0)
通常,如果您正在处理多语言应用程序,则应使用ID在服务器和GUI中标识文本,并且应在error_message字段中使用文本ID。有一些框架用作英文文本ID。
答案 3 :(得分:0)
在响应标头中发送整个错误消息不是一个好习惯。您可以发送错误代码并为这些代码实现特定于语言环境的消息。
在成功请求后的javascript中,使用回调方法来跟踪失败响应代码。创建一个包以读取特定区域设置用户的不同属性文件,并读取键值并显示正确的错误消息。
例如:
Properties file/ JS file
1. EnglishLabels.properties
2. MexicanLabels.properties
3. JapaneseLabels.properties
var bundle = read the specific property file and save the map (key : 0001 , value : Invalid Login)
在成功请求之后,使用回调方法显示特定于语言环境的错误消息。
此致 Punith