【问题标题】:Meteor errors internationalization流星错误国际化
【发布时间】:2014-08-03 05:08:42
【问题描述】:

我正在尝试通过just-i18n 实现国际化,到目前为止效果很好。

问题是我也在使用帐户密码,尤其是Meteor.loginWithPassword(user, password, [callback])

在登录错误时,回调有一个基本上如下所示的错误对象:

{
    details: undefined,
    error: 403,
    errorType: "Meteor.Error",
    message: "User not found [403]",
    reason: "User not found"
}

我认为错误代码是唯一的,并且使用了这样的 i18n 配置文件:

i18n.map 'fr_FR',
  login:
    signin: 'S\'authentifier'
  errors:
    403: 'L\'utilisateur n\'existe pas'

所以我可以这样称呼它:

Session.set "error", i18n("errors." + err.error)

但实际上,无论是什么错误,找不到用户或密码错误,错误代码都不是唯一的:

{
    details: undefined,
    error: 403,
    errorType: "Meteor.Error",
    message: "Incorrect password [403]",
    reason: "Incorrect password"
}

由于我不考虑检查字符串值是否真正一致,我如何区分两者?

我将如何使用流星内置登录实现国际化?

【问题讨论】:

    标签: internationalization coffeescript meteor


    【解决方案1】:

    403 这里不是特定错误的 Meteor 编号,而是HTTP status code。不同的错误可能导致相同的代码。

    由于您得到的错误对象之间的唯一区别是reasonmessage,因此您需要使用其中一个来设置国际化代码。它们不应该在 Meteor 版本之间改变太多,所以你应该可以接受这个解决方案。

    i18n.map 'fr_FR',
      login:
        signin: 'S\'authentifier'
      errors:
        403:
          'Incorrect password': 'Le password est incorrectu'
          'User not found': 'L\'utilisateur n\'existe pas'
    

    啊,别担心,loginsigninerrors403 在内部也表示为字符串,因此在这种解决方案中没有什么不一致的地方。

    【讨论】:

    • 我觉得使用纯字符串句子作为键很奇怪,但它可以按预期工作,而且你关于一致性的论点似乎足够合理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    相关资源
    最近更新 更多