Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

框架本身以及官方插件国际化问题 #589

Closed
changchengqin opened this issue Mar 16, 2017 · 17 comments
Closed

框架本身以及官方插件国际化问题 #589

changchengqin opened this issue Mar 16, 2017 · 17 comments

Comments

@changchengqin
Copy link

changchengqin commented Mar 16, 2017

  • Node Version: v7.7.1
  • Egg Version: 1.0.0-rc.2
  • Plugin Name: egg-multipart
  • Plugin Version: 1.1.0
  • Platform: windows 7 64位

egg框架本身以及官方插件(比如这里的egg-multipart)代码中,抛出的一些异常信息,默认是英文,比如:
image
类似于这种异常提示信息,若不在框架或插件层面国际化,在应用代码中就不大好国际化

@jtyjty99999
Copy link
Member

是有这个问题,目前可以在中间件里拦截error再处理。

我们是否可以抽一个标准的 throw error 模块,支持国际化,可覆盖,自定义信息,然后让插件抛错的地方都使用这个模块来处理呢 @fengmk2 @popomore

@popomore
Copy link
Member

popomore commented Mar 16, 2017

框架可以默认支持国际化,框架使用配置的文案,然后可以被应用覆盖和添加其他语言的文案。

@atian25
Copy link
Member

atian25 commented Mar 16, 2017

内置 egg-i18n

另一种思路是提供 app.throw()app.Error(),然后如果挂载了 egg-i18n,它那边会做替换?

@jtyjty99999
Copy link
Member

@atian25 我感觉也是提供一个类似app.throw的方法可以定制,比如

app.throw('type error', {"zh_cn":"类型异常", "en_us":"type error"}) 这样,然后egg-i18n自动处理

@atian25
Copy link
Member

atian25 commented Mar 16, 2017

app.throw 的第二个参数不应该在这里传吧,应该在 i18n 配置文件里面

@popomore
Copy link
Member

现在是内置的吧

@popomore
Copy link
Member

popomore commented Mar 16, 2017

所有的文案都改成 ctx.gettext('英文'),然后配置 locales 文件就好了,英文是可以不配的。

@atian25
Copy link
Member

atian25 commented Mar 16, 2017

@atian25
Copy link
Member

atian25 commented Mar 19, 2017

这个问题的结论是不是修改下 egg-multipart 就 OK 了?

@jtyjty99999
Copy link
Member

好像比较麻烦,要

  • 出一份插件内文案处理标准
  • 修改已有的插件内文案提示,支持国际化
  • 修改应用内文案提示

@atian25
Copy link
Member

atian25 commented Mar 19, 2017

还好吧,规定一个前缀规则,然后每个插件遇到改改就好了。

@changchengqin
Copy link
Author

对的,框架本身、任意插件、中间件都按照egg制定的国际化规范(也就是egg-i18n插件的用法)改改就好了。

@runfan
Copy link

runfan commented Nov 13, 2017

我提交了一个 PR ,在初始化 parameter 的时候使用 egg 自己的 i18n 功能来配置 parameter 实现国际化。

@atian25
Copy link
Member

atian25 commented Nov 13, 2017

@runfan url 贴上来

@runfan
Copy link

runfan commented Nov 13, 2017

eggjs/egg-validate#7

@runfan
Copy link

runfan commented Nov 13, 2017

https://github.com/runfan/egg-validate 这是我的 fork 版本

@dead-horse
Copy link
Member

先关掉了,一般来说底层抛出的异常,绝大部分是 500,不应该让客户感知到,绝少数的 40x 异常(例如 body 太长)单独处理吧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants