【问题标题】:Internationalization of error codes with tap-i18n使用 tap-i18n 国际化错误代码
【发布时间】:2014-12-10 14:51:56
【问题描述】:

我目前正在使用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;
        }
    }
});

【问题讨论】:

    标签: meteor internationalization


    【解决方案1】:

    我的回答可能有点离题,但您的意思是应用程序错误吗?如果是这样,您不应该真正将其返回给用户,因为这可能构成安全漏洞,给他们提供太多信息。

    来自 OWASP:https://www.owasp.org/index.php/Error_Handling

    因此,您可能想要处理错误,并准确地向用户提供您希望他们知道的内容。

    只需在翻译中包含错误消息,然后像使用普通字符串一样进行翻译。

    我希望这会有所帮助:)。

    编辑: 我现在明白你的意思了。据我所知,没有这样的选择,就像 just-i18n 一样。作为使代码膨胀一点的建议,您可以使用辅助函数,例如:

    function t(keyToTranslate){
      return TAPi18n.__(keyToTranslate)
    }
    

    在代码中:

    displayError(t('danger'), t('new_user_already_exist'), t('ok'), "btn-danger btn-lg", "danger-popup");
    

    有点幼稚的建议,但据我所知,没有映射此包中的错误的功能。你处理它的方式对我来说似乎是正确的。

    【讨论】:

    • 嗯...我的帖子可能有点含糊。我尝试 Account.createUser 并得到一个错误,例如当用户名已经被使用时。必须警告用户此错误,我在另一篇文章中看到您可以使用 just-i18n 定义错误代码翻译。
    • 没问题,很高兴为您提供帮助:)
    最近更新 更多