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

DatePicker日期国际化错误 中英文都存在 #23891

Closed
1 task
DreamPWJ opened this issue May 6, 2020 · 40 comments · Fixed by #23895
Closed
1 task

DatePicker日期国际化错误 中英文都存在 #23891

DreamPWJ opened this issue May 6, 2020 · 40 comments · Fixed by #23895

Comments

@DreamPWJ
Copy link

DreamPWJ commented May 6, 2020

  • I have searched the issues of this repository and believe that this is not a duplicate.

Reproduction link

Edit on CodeSandbox

Steps to reproduce

添加全局本地化

What is expected?

显示应该是全部中文

What is actually happening?

日期有中文有英文

Environment Info
antd 4.2.0
React react 16.13
System window10
Browser chrome80
@DreamPWJ
Copy link
Author

DreamPWJ commented May 6, 2020

@afc163 afc163 closed this as completed May 6, 2020
@DreamPWJ
Copy link
Author

DreamPWJ commented May 6, 2020

设置了依然不行 复现地址https://codesandbox.io/s/antd-reproduction-template-zcqjf @afc163

@afc163
Copy link
Member

afc163 commented May 6, 2020

还需要引用 moment 的语言包:https://codesandbox.io/s/antd-reproduction-template-64gfh?file=/index.js:273-303

我补充一下文档。

@afc163 afc163 reopened this May 6, 2020
afc163 added a commit that referenced this issue May 6, 2020
@afc163 afc163 mentioned this issue May 6, 2020
14 tasks
afc163 added a commit that referenced this issue May 6, 2020
@songyanzhen
Copy link

还需要引用 moment 的语言包:https://codesandbox.io/s/antd-reproduction-template-64gfh?file=/index.js:273-303

我补充一下文档。

这个demo里面的选择框也不全是中文呀,,,按照这个设置了并不好使。。

@songyanzhen
Copy link

image

@Delphier
Copy link

Delphier commented May 25, 2020

Same issue when version >= 4.2.1, week is english.
4.2.0 OK.
src: https://codesandbox.io/s/antd-reproduction-template-64gfh?file=/index.js

@afc163

@JarVZhao
Copy link

JarVZhao commented Aug 4, 2020

奇怪,全配对了moment也不生效,仍然是一半英文,moment": "2.27.0","antd": "4.5.2",
import moment from "moment";
import "moment/locale/zh-cn";
moment.locale("zh-cn");

@xrkffgg
Copy link
Member

xrkffgg commented Aug 4, 2020

@JarVZhao
Copy link

JarVZhao commented Aug 4, 2020 via email

@JarVZhao
Copy link

JarVZhao commented Aug 4, 2020

image

@afc163
Copy link
Member

afc163 commented Aug 4, 2020

@JarVZhao 移除 yarn.lock 或者 package-lock.json 后重新安装。

@JarVZhao
Copy link

JarVZhao commented Aug 4, 2020

works,thanks @afc163

@wzw-beichen
Copy link

把antd版本降为4.2.0, 在哪里看到了>=4.2.1周为英文,本人已试, 可用

@wzw-beichen
Copy link

image

@wzw-beichen
Copy link

@DreamPWJ
image

@FredZeng
Copy link

Bundlers might create multiple copies of moment when using moment@2.27.0, hence moment.locale might not work.
See moment issue 5623

@wumiangithub
Copy link

同样的问题, antd4.6.5 moment 2.29.0 moment恢复老版本2.24.0可展示中文,但是ts报错。。 moment升级最新的,ts是不报错了,但是中英文就都有了。一个时间组件而已这么依赖moment干嘛。。。

@pearone
Copy link

pearone commented Sep 29, 2020

我的办法是删除yarn.lock,重新安装一下,应该是之前安装的moment版本和antd不匹配,如果只重新安装moment和antd并不能解决其他的依赖问题,让他全量更新一下就好了。

@into-piece
Copy link

into-piece commented Nov 2, 2020

我发现当设置umi的config=》ignoreMomentLocale为true后,
image
会自动把中文在内的国际化去除,所以即使像上文配置后还是无法生效。当我关闭这个配置就修复了日期控件的中文问题显示了。
当然希望这个ignoreMomentLocale配置可以更加人性化,不是直接默认留下英文。
大家想继续删除对应其他moment国际化的文件可以配置config的chainWebpack:

chainWebpack(config) {
 // 过滤掉momnet的那些不使用的国际化文件
    config
      .plugin('replace')
      .use(require('webpack').ContextReplacementPlugin)
      .tap(() => {
        return [/moment[/\\]locale$/, /zh-cn/];
      });
}

大家可以做一下借鉴~

@andycao
Copy link

andycao commented Dec 18, 2020

同样的问题, antd4.6.5 moment 2.29.0 moment恢复老版本2.24.0可展示中文,但是ts报错。。 moment升级最新的,ts是不报错了,但是中英文就都有了。一个时间组件而已这么依赖moment干嘛。。。

�我也遇到同样问题,降级到2.24.0解决的,老项目没有ts
看了下依赖,应该是antd的moment更新了,但是里面的rc-search依赖的moment没有更新

@lou0820
Copy link

lou0820 commented Dec 29, 2020

首先按照antd官网配置

import locale from 'antd/es/locale/zh_CN';
import 'moment/locale/zh-cn';
<ConfigProvider locale={locale}>
<App />
</ConfigProvider>

版本:
react: ^16.13.1
antd: ^4.6.5
moment:^2.29.1
antd RangePicker中英文混合显示解决方法:

package.json中手动改成 moment: latest
rm -rf node_modules
rm -rf package-lock.json
npm install

@georgehpj
Copy link

moment的package.json里有个jsnext:main属性指向的是./dist/moment.js。也就是说如果外部打包工具设置了能够识别jsnext:main这个属性的话,import moment from 'moment' 对应的应该是 import 'moment/dist/locale/zh-cn'。
这点最好在官网上明说。

@zhangchao828
Copy link

zhangchao828 commented Jan 5, 2021

+1 升级的时候容易出现这种情况,建议官方尽早移除对moment的依赖

@ltbyce
Copy link

ltbyce commented Jan 12, 2021

@wumiangithub 我也遇到了这个问题(rc-picker 依赖moment:v2.24.0)和我本地的版本v:2.27.0不一致,请问你是如何解决的呢?

@ltbyce
Copy link

ltbyce commented Jan 12, 2021

@wumiangithub 我也遇到了这个问题(rc-picker 依赖moment:v2.24.0)和我本地的版本v:2.27.0不一致,请问你是如何解决的呢?

我知道了,rc-picker 的package中引用的是^2.24.0,^实际取得是最近的大版本,所以实际版本应该看node_modules->moment>momentjs的version实际为2.29.1,那么本地版本修改为^2.24.0就可以了

@rainmanhhh
Copy link

rainmanhhh commented Mar 5, 2021

还是没看懂要怎么解决,antd版本4.11.2,moment版本2.29.1,依然是中英文混合

moment.locales()输出结果:
(6) ["en", "zh-cn", "zh", "zh_CN", "en_US", "en-us"]
然而新建的moment()对象内部依然是英文的

在zh-cn.js打断点,明明执行进去了

// 这里设置断点能看到执行了
  var zhCn = moment.defineLocale('zh-cn', {
        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
            '_'
        ),

但是一点用没有

@qhx0807
Copy link

qhx0807 commented Apr 15, 2021

import 'moment/locale/zh-cn';

修改为:

import 'moment/dist/locale/zh-cn';

版本:

"antd": "^4.15.1",
"moment":  "^2.29.1"

测试可行。

@g770728y
Copy link

import 'moment/locale/zh-cn';

修改为:

import 'moment/dist/locale/zh-cn';

版本:

"antd": "^4.15.1",
"moment":  "^2.29.1"

测试可行。

感谢, 确实, dist下面的文件是ejs格式的

@yueqjGithub
Copy link

import 'moment/locale/zh-cn';
修改为:
import 'moment/dist/locale/zh-cn';
版本:

"antd": "^4.15.1",
"moment":  "^2.29.1"

测试可行。

感谢, 确实, dist下面的文件是ejs格式的

"antd": "^4.16.13"可行
"moment": "^2.29.1",

@Jack-Lo
Copy link
Contributor

Jack-Lo commented Dec 7, 2021

moment版本不一致导致的,rc-calender指定moment为2.x,把自己项目的package.json里moment版本号对齐就可以解决了,先yarn remove moment,再手动添加"moment": "2.x"到package.json,然后yarn一下重新安装依赖

@ningtiao
Copy link

本地运行是正常的,可是发布到测试环境就变中英混合,这是啥原因呢

@story-song
Copy link

我用的pro;
全局加上
import "moment/locale/zh-cn"
有效

@MICAHFANG
Copy link

antd@4.23.2
moment@2.29.4
手写moment语言包,已解决

└─┬ antd@4.23.2
  ├── moment@2.29.4
  └─┬ rc-picker@2.6.10
    └── moment@2.29.4 deduped

https://codesandbox.io/s/suspicious-banzai-iwpso4?file=/src/App.js

image

@lijie602
Copy link

import 'moment/locale/zh-cn';

修改为:

import 'moment/dist/locale/zh-cn';

版本:

"antd": "^4.15.1",
"moment":  "^2.29.1"

测试可行。

解决了 感谢
"antd": "^4.24.6"
"moment": "^2.29.2",

@Flcwl
Copy link

Flcwl commented Feb 27, 2023

@zombieJ 请教下,现在 4.24.8 版本国际化中文的需求,是不是不需要在项目内 moment.locale('zh_cn') 了?

@taoxiaofeng
Copy link

antd@4.23.2 moment@2.29.4 手写moment语言包,已解决

└─┬ antd@4.23.2
  ├── moment@2.29.4
  └─┬ rc-picker@2.6.10
    └── moment@2.29.4 deduped

https://codesandbox.io/s/suspicious-banzai-iwpso4?file=/src/App.js

图像

此方法管用,谢谢

@simplast
Copy link

yarn add moment@2.29.4 装了这个版本可以了

@visionChengc
Copy link

如果使用的是yarn 可以加上resolutions 字段固定moment版本 其他工具同理

@katoto
Copy link

katoto commented Mar 5, 2024

@wumiangithub 我也遇到了这个问题(rc-picker 依赖moment:v2.24.0)和我本地的版本v:2.27.0不一致,请问你是如何解决的呢?

我知道了,rc-picker 的package中引用的是^2.24.0,^实际取得是最近的大版本,所以实际版本应该看node_modules->moment>momentjs的version实际为2.29.1,那么本地版本修改为^2.24.0就可以了

有用

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

Successfully merging a pull request may close this issue.