• 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()">
    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-