• LocaleProvider 国际化
    • 使用
      • 增加语言包
      • 其他国际化需求
    • 代码演示
      • 国际化
      • 所有组件
  • API

    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-