Umi: 如何动态加载国际化信息

Created on 16 Oct 2019  ·  17Comments  ·  Source: umijs/umi

What happens?

希望国际化的翻译信息即local中的js文件信息是通过后端api获取然后动态加载的。在之前的版本中可以动态的修改IntlProvider组件中的message,但是在最新的pro工程中,IntlProvider组件存在于临时文件夹.umi中,请问改如何实现需求?

Mini Showcase Repository(REQUIRED)

Provide a mini GitHub repository which can reproduce the issue.
Use yarn create umi then upload to your GitHub

How To Reproduce

Steps to reproduce the behavior:

Expected behavior
通过api获取国际化数据动态修改local信息

Context

  • Umi Version:2.10.1
  • Node Version:
  • Platform:
wontfix

Most helpful comment

为什么不解决就关闭?

All 17 comments

@sorrycc 大神能提供下解决思路吗?非常感谢

感觉可以通过 runtime 配置那边去实现。

感觉可以通过 runtime 配置那边去实现。

我想要通过runtime中的rootContainer包裹国际化组件。但是担心和系统自带的冲突,最新版本的remove国际化脚本是报错的

@sorrycc @xiaohuoni
我在rootContainer中用一个组件AAA去包裹root根组件,但是在这个AAA中组件中无法使用connect,会报错,下图。感觉这个dva是在root根组件中封装的。这种如何处理呢?或者有其他动态获取国际化的解决方案吗?不要石沉大海啊,求助!!

Could not find "store" in either the context or props of "Connect(LocalContainer)". Either wrap the root component in a , or explicitly pass "store" as a prop to "Connect(LocalContainer)".

我重写了umi-local的插件实现的,但是只是编译时一次性获取了

我重写了umi-local的插件实现的,但是只是编译时一次性获取了

那样感觉也不是很符合,期望的效果是刷新页面就可以重新通过接口获取国际化信息。不需要重新编译的。之前的版本在global里添加了这个接口方法。

global能不能发出来看看,我们项目还是老版本的,也想动态获取

global能不能发出来看看,我们项目还是老版本的,也想动态获取

global里就是一个effects方法啊,我们有个语言维护管理页面,每种语言具体维护国际化信息(即locales文件夹的zh-CN.js的信息)然后通过api去获取国际化zh-CN信息,在路由的地方包裹,locale属性值通过global的state动态传递进去。

global能不能发出来看看,我们项目还是老版本的,也想动态获取

路由的地方Route包裹LocaleProvider和IntlProvider

谢谢,坐等大佬解决方案

同求官方解决方案

目前项目中通过修改插件在LocaleWrapper中请求一次后端接口解决了,重写了umi-plugin-locale插件

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

官方还么提供统一的解决方案就给close掉了吗

为什么不解决就关闭?

我重写了umi-local的插件实现的,但是只是编译时一次性获取了

那样感觉也不是很符合,期望的效果是刷新页面就可以重新通过接口获取国际化信息。不需要重新编译的。之前的版本在global里添加了这个接口方法。

之前我也是在global里面加载接口返回的语言,新版本不知道怎么搞了。

亲,最后这个怎么解决的?

Was this page helpful?
0 / 5 - 0 ratings