我目前正在使用tap-i18n包开发多语言应用程序。我想知道如何翻译错误。
我可以抓取代码,然后显示我之前写入翻译文件的自定义消息。
但是我在this post看到了另一种i18n包更好的方法。
有没有人知道是否有办法像tap-i18n那样做什么?
编辑:目前我正在做这样的事情:
Meteor.call('createNewUser', newUser, function (error, ret)
{
if (!error)
displayError(TAPi18n.__('success'), TAPi18n.__('new_user_success'), TAPi18n.__('ok'), "btn-success btn-lg", "success-popup");
else
{
switch (error.error)
{
case 403:
displayError(TAPi18n.__('danger'), TAPi18n.__('new_user_already_exist'), TAPi18n.__('ok'), "btn-danger btn-lg", "danger-popup");
break;
default:
displayError(TAPi18n.__('danger'), TAPi18n.__('new_user_error'), TAPi18n.__('ok'), "btn-danger btn-lg", "danger-popup");
break;
}
}
});
答案 0 :(得分:3)
我的回答可能有点偏离主题,但您的意思是应用程序错误吗?如果是这样,你就不应该把它归还给用户,因为这可能构成一个安全漏洞,给他们太多的信息。
来自OWASP:https://www.owasp.org/index.php/Error_Handling
因此,您可能希望处理错误,并向用户提供您希望他们知道的内容。
只需在翻译中包含错误消息,然后按正常字符串进行翻译即可。
我希望这有一些帮助:)。
修改强> 我现在明白你的意思了。据我所知,没有这样的选择,就像只有-i18n一样。作为稍微解开代码的建议,您可以使用辅助函数,例如:
function t(keyToTranslate){
return TAPi18n.__(keyToTranslate)
}
在代码中:
displayError(t('danger'), t('new_user_already_exist'), t('ok'), "btn-danger btn-lg", "danger-popup");
有点天真的建议,但据我所知,没有功能可以映射此包中的错误。你处理它的方式对我来说似乎是正确的。