LocaleProvider 国际化

为组件内建文案提供统一的国际化支持。

使用

LocaleProvider 使用 Vue 的 provide/inject 特性,只需在应用外围包裹一次即可全局生效。

  1. <template>
  2. <a-locale-provider :locale="zh_CN">
  3. <App />
  4. </a-locale-provider>
  5. </template>
  6. <script>
  7. import zh_CN from 'ant-design-vue/lib/locale-provider/zh_CN';
  8. import moment from 'moment';
  9. import 'moment/locale/zh-cn';
  10. moment.locale('zh-cn');
  11. export default {
  12. data() {
  13. return {
  14. zh_CN,
  15. };
  16. },
  17. };
  18. </script>

我们提供了英语,中文,俄语,法语,德语等多种语言支持,所有语言包可以在 这里 找到。

注意:如果你需要使用 UMD 版的 dist 文件,应该引入 antd/dist/antd-with-locales.js,同时引入 moment 对应的 locale,然后按以下方式使用:

  1. <template>
  2. <a-locale-provider :locale="locales.en_US">
  3. <App />
  4. </a-locale-provider>
  5. </template>
  6. <script>
  7. const { LocaleProvider, locales } = window.antd;
  8. </script>

增加语言包

如果你找不到你需要的语言包,欢迎你在 英文语言包 的基础上创建一个新的语言包,并给我们 Pull Request。

其他国际化需求

本模块仅用于组件的内建文案,若有业务文案的国际化需求,建议使用 vue-i18n

代码演示

LocaleProvider 国际化 - 图1

国际化

LocaleProvider 包裹你的应用,并引用对应的语言包。

  1. <template>
  2. <a-locale-provider :locale="zhCN">
  3. <a-pagination :defaultCurrent="1" :total="50" showSizeChanger />
  4. </a-locale-provider>
  5. </template>
  6. <script>
  7. // you should use import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN';
  8. import zhCN from 'ant-design-vue/locale-provider/zh_CN';
  9. export default {
  10. data() {
  11. return {
  12. zhCN,
  13. };
  14. },
  15. };
  16. </script>

LocaleProvider 国际化 - 图2

所有组件

此处列出 Ant Design 中需要国际化支持的组件,你可以在演示里切换语言。

  1. <template>
  2. <div>
  3. <div class="change-locale">
  4. <span :style="{ marginRight: '16px' }">Change locale of components: </span>
  5. <a-radio-group :defaultValue="null" @change="changeLocale">
  6. <a-radio-button key="en" :value="null">English</a-radio-button>
  7. <a-radio-button key="cn" :value="zhCN">中文</a-radio-button>
  8. </a-radio-group>
  9. </div>
  10. <a-locale-provider :locale="locale">
  11. <div class="locale-components" :key="(!!locale).toString()">
  12. <!-- HACK: just refresh in production environment-->
  13. <div class="example">
  14. <a-pagination :defaultCurrent="1" :total="50" showSizeChanger />
  15. </div>
  16. <div class="example">
  17. <a-select showSearch style="width: 200px">
  18. <a-select-option value="jack">jack</a-select-option>
  19. <a-select-option value="lucy">lucy</a-select-option>
  20. </a-select>
  21. <a-date-picker />
  22. <a-time-picker />
  23. <a-range-picker style=" width: 200px " />
  24. </div>
  25. <div class="example">
  26. <a-button type="primary" @click="showModal">Show Modal</a-button>
  27. <a-button @click="info">Show info</a-button>
  28. <a-button @click="confirm">Show confirm</a-button>
  29. <a-popconfirm title="Question?">
  30. <a href="#">Click to confirm</a>
  31. </a-popconfirm>
  32. </div>
  33. <div className="example">
  34. <a-transfer :dataSource="[]" showSearch :targetKeys="[]" :render="item => item.title" />
  35. </div>
  36. <div :style="{ width: '319px', border: '1px solid #d9d9d9', borderRadius: '4px' }">
  37. <a-calendar :fullscreen="false" :value="moment()" />
  38. </div>
  39. <a-modal title="Locale Modal" v-model="visible">
  40. <p>Locale Modal</p>
  41. </a-modal>
  42. </div>
  43. </a-locale-provider>
  44. </div>
  45. </template>
  46. <script>
  47. // you should use import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
  48. import zhCN from 'ant-design-vue/locale-provider/zh_CN';
  49. import { Modal } from 'ant-design-vue';
  50. import moment from 'moment';
  51. import 'moment/locale/zh-cn';
  52. moment.locale('en');
  53. const columns = [
  54. {
  55. title: 'Name',
  56. dataIndex: 'name',
  57. filters: [
  58. {
  59. text: 'filter1',
  60. value: 'filter1',
  61. },
  62. ],
  63. },
  64. {
  65. title: 'Age',
  66. dataIndex: 'age',
  67. },
  68. ];
  69. export default {
  70. data() {
  71. return {
  72. visible: false,
  73. locale: null,
  74. zhCN,
  75. };
  76. },
  77. methods: {
  78. moment,
  79. showModal() {
  80. this.visible = true;
  81. },
  82. hideModal() {
  83. this.visible = false;
  84. },
  85. info() {
  86. Modal.info({
  87. title: 'some info',
  88. content: 'some info',
  89. });
  90. },
  91. confirm() {
  92. Modal.confirm({
  93. title: 'some info',
  94. content: 'some info',
  95. });
  96. },
  97. changeLocale(e) {
  98. const localeValue = e.target.value;
  99. this.locale = localeValue;
  100. if (!localeValue) {
  101. moment.locale('en');
  102. } else {
  103. moment.locale('zh-cn');
  104. }
  105. },
  106. },
  107. };
  108. </script>
  109. <style scoped>
  110. .locale-components {
  111. border-top: 1px solid #d9d9d9;
  112. padding-top: 16px;
  113. }
  114. .example {
  115. margin: 16px 0;
  116. }
  117. .example > * {
  118. margin-right: 8px;
  119. }
  120. .change-locale {
  121. margin-bottom: 16px;
  122. }
  123. </style>

API

参数说明类型默认值
locale语言包配置,语言包可到 antd/lib/locale-provider/ 目录下寻找object-