Browse Source

feat(locale): support spanish (#436)

走鹃 3 years ago
parent
commit
792565cc6b

+ 27 - 23
content/other/locale/index-en-US.md

@@ -20,6 +20,7 @@ brief: Internationalized components to provide multilingual support for Semi com
 | v1.11.0     | Vietnamese: vi_VN、Russian: ru_RU、Indonesian: id_ID、Malay: ms_MY、Thai: th_TH、Turkish: tr_TR |
 | v1.17.0     | Portuguese: pt_BR       |
 | v1.28.0     | Traditional Chinese: zh_TW       |
+| v2.2.0     | Spanish: es       |
 
 ## Components supported
 
@@ -46,16 +47,18 @@ import tr_TR from '@douyinfe/semi-ui/lib/es/locale/source/tr_TR';
 import pt_BR from '@douyinfe/semi-ui/lib/es/locale/source/pt_BR';
 import zh_TW from '@douyinfe/semi-ui/lib/es/locale/source/zh_TW';
 import ar from '@douyinfe/semi-ui/lib/es/locale/source/ar';
+import es from '@douyinfe/semi-ui/lib/es/locale/source/es';
 
 import { LocaleProvider } from '@douyinfe/semi-ui';
 
-
-return (
-    <LocaleProvider locale={en_GB}>
-        {/* eslint-disable-next-line react/jsx-no-undef */}
-        <App />
-    </LocaleProvider>
-);
+() => {
+    return (
+        <LocaleProvider locale={en_GB}>
+            {/* eslint-disable-next-line react/jsx-no-undef */}
+            <App />
+        </LocaleProvider>
+    );
+};
 ```
 
 ## Code example
@@ -107,10 +110,9 @@ import tr_TR from '@douyinfe/semi-ui/lib/es/locale/source/tr_TR';
 import pt_BR from '@douyinfe/semi-ui/lib/es/locale/source/pt_BR';
 import zh_TW from '@douyinfe/semi-ui/lib/es/locale/source/zh_TW';
 import ar from '@douyinfe/semi-ui/lib/es/locale/source/ar';
+import es from '@douyinfe/semi-ui/lib/es/locale/source/es';
 import { LocaleProvider, ConfigProvider, Pagination, Modal, Button, Select, Cascader, DatePicker, TreeSelect, Table, TimePicker, List, Calendar, Typography } from '@douyinfe/semi-ui';
 
-const { Option } = Select;
-
 class I18nDemo extends React.Component {
     constructor(props) {
         super(props);
@@ -134,6 +136,7 @@ class I18nDemo extends React.Component {
             'ms_MY': ms_MY,
             'th_TH': th_TH,
             'tr_TR': tr_TR,
+            es,
         };
         this.setState({ locale: language[code], localeCode: code });
     }
@@ -218,9 +221,9 @@ class I18nDemo extends React.Component {
                     <h5>Select & Cascader</h5>
                     <div style={style}>
                         <Select filter style={{ width: '180px' }}>
-                            <Option value='abc'>abc</Option>
-                            <Option value='vigo' disabled>vigo</Option>
-                            <Option value='hotsoon'>hotsoon</Option>
+                            <Select.Option value='abc'>abc</Select.Option>
+                            <Select.Option value='vigo' disabled>vigo</Select.Option>
+                            <Select.Option value='hotsoon'>hotsoon</Select.Option>
                         </Select>
                         <Cascader
                             style={{ width: 300, margin: 10 }}
@@ -255,17 +258,18 @@ class I18nDemo extends React.Component {
             <>
                 <div style={{ borderBottom: '1px solid var(--semi-color-border)', paddingBottom: 20 }}>
                     <Select onChange={this.onLanguageChange} insetLabel='Switch Language' style={{width: 250}} defaultValue='en_GB'>
-                        <Option value='zh_CN'>Chinese</Option>
-                        <Option value='en_GB'>English</Option>
-                        <Option value='ja_JP'>Japanese</Option>
-                        <Option value='ko_KR'>Korean</Option>
-                        <Option value='ar'>Arabic</Option>
-                        <Option value='vi_VN'>Vietnamese</Option>
-                        <Option value='ru_RU'>Russian</Option>
-                        <Option value='id_ID'>Indonesian</Option>
-                        <Option value='ms_MY'>Malay</Option>
-                        <Option value='th_TH'>Thai</Option>
-                        <Option value='tr_TR'>Turkish</Option>
+                        <Select.Option value='zh_CN'>Chinese</Select.Option>
+                        <Select.Option value='en_GB'>English</Select.Option>
+                        <Select.Option value='ja_JP'>Japanese</Select.Option>
+                        <Select.Option value='ko_KR'>Korean</Select.Option>
+                        <Select.Option value='ar'>Arabic</Select.Option>
+                        <Select.Option value='vi_VN'>Vietnamese</Select.Option>
+                        <Select.Option value='ru_RU'>Russian</Select.Option>
+                        <Select.Option value='id_ID'>Indonesian</Select.Option>
+                        <Select.Option value='ms_MY'>Malay</Select.Option>
+                        <Select.Option value='th_TH'>Thai</Select.Option>
+                        <Select.Option value='tr_TR'>Turkish</Select.Option>
+                        <Select.Option value='es'>Spanish</Select.Option>
                     </Select>
                 </div>
                 <LocaleProvider locale={locale}>

+ 13 - 6
content/other/locale/index.md

@@ -19,6 +19,7 @@ brief: 国际化组件,为 Semi 组件提供多语言支持
 | v1.11.0     | 越南语: vi_VN、俄罗斯语: ru_RU、印尼语: id_ID、马来语: ms_MY、泰语: th_TH、土耳其语: tr_TR |
 | v1.17.0     | 葡萄牙语(巴西): pt_BR       |
 | v1.28.0     | 繁体中文: zh_TW       |
+| v2.2.0     | 西班牙语: es       |
 ## 已支持组件
 
 > DatePicker、TimePicker、Modal、Pagination、Select、Table、Cascader、Calendar、TreeSelect、List、Typography、Transfer、Nav、Upload
@@ -44,16 +45,19 @@ import tr_TR from '@douyinfe/semi-ui/lib/es/locale/source/tr_TR';
 import pt_BR from '@douyinfe/semi-ui/lib/es/locale/source/pt_BR';
 import zh_TW from '@douyinfe/semi-ui/lib/es/locale/source/zh_TW';
 import ar from '@douyinfe/semi-ui/lib/es/locale/source/ar';
+import es from '@douyinfe/semi-ui/lib/es/locale/source/es';
 
 import { LocaleProvider } from '@douyinfe/semi-ui';
 
 // 在locale中传入相应的语言包即可
-return (
-    <LocaleProvider locale={en_GB}>
-        {/* eslint-disable-next-line react/jsx-no-undef */}
-        <App />
-    </LocaleProvider>
-);
+() => {
+    return (
+        <LocaleProvider locale={en_GB}>
+            {/* eslint-disable-next-line react/jsx-no-undef */}
+            <App />
+        </LocaleProvider>
+    );
+};
 ```
 
 ## 代码示例
@@ -108,6 +112,7 @@ import th_TH from '@douyinfe/semi-ui/lib/es/locale/source/th_TH';
 import tr_TR from '@douyinfe/semi-ui/lib/es/locale/source/tr_TR';
 import pt_BR from '@douyinfe/semi-ui/lib/es/locale/source/pt_BR';
 import zh_TW from '@douyinfe/semi-ui/lib/es/locale/source/zh_TW';
+import es from '@douyinfe/semi-ui/lib/es/locale/source/es';
 import { LocaleProvider, ConfigProvider, Pagination, Modal, Button, Select, Cascader, DatePicker, TreeSelect, Table, TimePicker, List, Calendar, Typography } from '@douyinfe/semi-ui';
 
 class I18nDemo extends React.Component {
@@ -135,6 +140,7 @@ class I18nDemo extends React.Component {
             'tr_TR': tr_TR,
             'pt_BR': pt_BR,
             'zh_TW': zh_TW,
+            'es': es,
         };
         this.setState({ locale: language[code], localeCode: code });
     }
@@ -275,6 +281,7 @@ class I18nDemo extends React.Component {
                         <Select.Option value='tr_TR'>土耳其语</Select.Option>
                         <Select.Option value='pt_BR'>葡萄牙语(巴西)</Select.Option>
                         <Select.Option value='zh_TW'>繁体中文</Select.Option>
+                        <Select.Option value='es'>西班牙语</Select.Option>
                     </Select>
                 </div>
                 <LocaleProvider locale={locale}>

+ 160 - 0
packages/semi-ui/locale/source/es.ts

@@ -0,0 +1,160 @@
+import { es } from 'date-fns/locale';
+import { Locale } from '../interface';
+
+/**
+ * [i18n-Spanish(es)]
+ *
+ */
+
+const locale: Locale = {
+    code: 'es',
+    dateFnsLocale: es,
+    Pagination: {
+        item: 'objeto',
+        pageSize: ' objetos / página',
+        page: ' páginas',
+        total: '',
+        jumpTo: 'Ir a',
+    },
+    Modal: {
+        confirm: 'Aceptar',
+        cancel: 'Cancelar',
+    },
+    TimePicker: {
+        placeholder: {
+            time: 'Seleccionar hora',
+            timeRange: 'Seleccionar rango de tiempo',
+        },
+        begin: 'Hora inicial',
+        end: 'Hora final',
+        hour: '',
+        minute: '',
+        second: '',
+        AM: 'AM',
+        PM: 'PM',
+    },
+    DatePicker: {
+        placeholder: {
+            date: 'Seleccionar fecha',
+            dateTime: 'Seleccionar hora y fecha',
+            dateRange: ['Fecha inicial', 'Fecha final'],
+            dateTimeRange: ['Fecha inicial', 'Fecha final'],
+        },
+        footer: {
+            confirm: 'Aceptar',
+            cancel: 'Cancelar',
+        },
+        selectDate: 'Seleccionar fecha',
+        selectTime: 'Seleccionar hora',
+        year: 'año',
+        month: 'mes',
+        day: 'día',
+        monthText: '${month} ${year}',
+        months: {
+            1: 'Ene',
+            2: 'Feb',
+            3: 'Mar',
+            4: 'Abr',
+            5: 'May',
+            6: 'Jun',
+            7: 'Jul',
+            8: 'Ago',
+            9: 'Sep',
+            10: 'Oct',
+            11: 'Nov',
+            12: 'Dic',
+        },
+        fullMonths: {
+            1: 'Enero',
+            2: 'Febrero',
+            3: 'Marzo',
+            4: 'Abril',
+            5: 'Mayo',
+            6: 'Junio',
+            7: 'Julio',
+            8: 'Agosto',
+            9: 'Septiembre',
+            10: 'Octubre',
+            11: 'Noviembre',
+            12: 'Diciembre',
+        },
+        weeks: {
+            Mon: 'Lun',
+            Tue: 'Mar',
+            Wed: 'Mie',
+            Thu: 'Jue',
+            Fri: 'Vie',
+            Sat: 'Sab',
+            Sun: 'Dom',
+        },
+        localeFormatToken: {
+            FORMAT_SWITCH_DATE: 'yyyy-MM-dd',
+        },
+    },
+    Popconfirm: {
+        confirm: 'Aceptar',
+        cancel: 'Cancelar',
+    },
+    Navigation: {
+        collapseText: 'Contraer barra lateral',
+        expandText: 'Expandir barra lateral',
+    },
+    Table: {
+        emptyText: 'Sin resultados',
+        pageText: 'Mostrando del ${currentStart} al ${currentEnd} de ${total}',
+    },
+    Select: {
+        emptyText: 'Sin resultados',
+        createText: 'Crear',
+    },
+    Tree: {
+        emptyText: 'Sin resultados',
+        searchPlaceholder: 'Búsqueda',
+    },
+    Cascader: {
+        emptyText: 'Sin resultados',
+    },
+    List: {
+        emptyText: 'Sin resultados',
+    },
+    Calendar: {
+        allDay: 'Todo el día',
+        AM: '${time} AM',
+        PM: '${time} PM',
+        datestring: '',
+        remaining: '${remained} mas',
+    },
+    Upload: {
+        mainText: 'Clic aquí para cargar archivo o arrastre aquí el archivo',
+        illegalTips: 'Este tipo de archivo no es compatible',
+        legalTips: 'Suelte y comience a cargar',
+        retry: 'Reintentar',
+        replace: 'Reemplazar archivo',
+        clear: 'Limpiar',
+        selectedFiles: 'Archivos seleccionados',
+        illegalSize: 'Tamaño de archivo inválido',
+        fail: 'Error al cargar',
+    },
+    TreeSelect: {
+        searchPlaceholder: 'Búsqueda',
+    },
+    Typography: {
+        copy: 'Copiar',
+        copied: 'Copiado',
+        expand: 'Expandir',
+        collapse: 'Contraer',
+    },
+    Transfer: {
+        emptyLeft: 'Sin datos',
+        emptySearch: 'Sin resultados de búsqueda',
+        emptyRight: 'Sin contenido, verifique desde la izquierda',
+        placeholder: 'Búsqueda',
+        clear: 'Limpiar',
+        selectAll: 'Seleccionar todo',
+        clearSelectAll: 'Deseleccionar todo',
+        total: 'Total ${total} objetos',
+        selected: '${total} objetos seleccionados',
+    },
+};
+
+export default locale;

+ 2 - 1
src/templates/scope.js

@@ -26,6 +26,7 @@ import th_TH from '@douyinfe/semi-ui/locale/source/th_TH';
 import tr_TR from '@douyinfe/semi-ui/locale/source/tr_TR';
 import pt_BR from '@douyinfe/semi-ui/locale/source/pt_BR';
 import zh_TW from '@douyinfe/semi-ui/locale/source/zh_TW';
+import es from '@douyinfe/semi-ui/locale/source/es';
 import { SortableContainer, SortableElement, sortableHandle } from 'react-sortable-hoc';
 import GraphemeSplitter from 'grapheme-splitter';
 
@@ -117,4 +118,4 @@ export {
 
 export { debounce, throttle, range, get, filter, map, some };
 
-export { zh_CN, en_GB, en_US, ko_KR, ja_JP, ar, vi_VN, ru_RU, id_ID, ms_MY, th_TH, tr_TR, pt_BR, zh_TW };
+export { zh_CN, en_GB, en_US, ko_KR, ja_JP, ar, vi_VN, ru_RU, id_ID, ms_MY, th_TH, tr_TR, pt_BR, zh_TW, es };