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

API

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