Commit 903d659892b7fd5f396c39e9f482853fb525ec6f
Committed by
GitHub

Merge pull request #4585 from watkazuki/3.0_make-Time-possible-to-internationalize
Fix in #4317 Time component to internationalize
Showing
5 changed files
with
40 additions
and
11 deletions
Show diff stats
src/components/time/time.js
@@ -47,7 +47,7 @@ const getDate = (timeStamp, startType) => { | @@ -47,7 +47,7 @@ const getDate = (timeStamp, startType) => { | ||
47 | * @param {String|Number} timeStamp 时间戳 | 47 | * @param {String|Number} timeStamp 时间戳 |
48 | * @returns {String} 相对时间字符串 | 48 | * @returns {String} 相对时间字符串 |
49 | */ | 49 | */ |
50 | -export const getRelativeTime = timeStamp => { | 50 | +export const getRelativeTime = (timeStamp, locale) => { |
51 | // 判断当前传入的时间戳是秒格式还是毫秒 | 51 | // 判断当前传入的时间戳是秒格式还是毫秒 |
52 | // const IS_MILLISECOND = true; | 52 | // const IS_MILLISECOND = true; |
53 | // 如果是毫秒格式则转为秒格式 | 53 | // 如果是毫秒格式则转为秒格式 |
@@ -65,23 +65,23 @@ export const getRelativeTime = timeStamp => { | @@ -65,23 +65,23 @@ export const getRelativeTime = timeStamp => { | ||
65 | // 如果IS_EARLY为false则差值取反 | 65 | // 如果IS_EARLY为false则差值取反 |
66 | if (!IS_EARLY) diff = -diff; | 66 | if (!IS_EARLY) diff = -diff; |
67 | let resStr = ''; | 67 | let resStr = ''; |
68 | - const dirStr = IS_EARLY ? '前' : '后'; | 68 | + let dirStr = IS_EARLY ? (locale('i.time.before') || '前') : (locale('i.time.after') || '后'); |
69 | 69 | ||
70 | - if (diff < 1000) resStr = '刚刚'; | 70 | + if (diff < 1000) resStr = locale('i.time.just') || '刚刚'; |
71 | // 少于等于59秒 | 71 | // 少于等于59秒 |
72 | - else if (diff < 60000) resStr = parseInt(diff / 1000) + '秒' + dirStr; | 72 | + else if (diff < 60000) resStr = parseInt(diff / 1000) + (locale('i.time.seconds') || '秒') + dirStr; |
73 | // 多于59秒,少于等于59分钟59秒 | 73 | // 多于59秒,少于等于59分钟59秒 |
74 | - else if (diff >= 60000 && diff < 3600000) resStr = Math.floor(diff / 60000) + '分钟' + dirStr; | 74 | + else if (diff >= 60000 && diff < 3600000) resStr = Math.floor(diff / 60000) + (locale('i.time.minutes') || '分钟') + dirStr; |
75 | // 多于59分钟59秒,少于等于23小时59分钟59秒 | 75 | // 多于59分钟59秒,少于等于23小时59分钟59秒 |
76 | - else if (diff >= 3600000 && diff < 86400000) resStr = Math.floor(diff / 3600000) + '小时' + dirStr; | 76 | + else if (diff >= 3600000 && diff < 86400000) resStr = Math.floor(diff / 3600000) + (locale('i.time.hours') || '小时') + dirStr; |
77 | // 多于23小时59分钟59秒,少于等于29天59分钟59秒 | 77 | // 多于23小时59分钟59秒,少于等于29天59分钟59秒 |
78 | - else if (diff >= 86400000 && diff < 2623860000) resStr = Math.floor(diff / 86400000) + '天' + dirStr; | 78 | + else if (diff >= 86400000 && diff < 2623860000) resStr = Math.floor(diff / 86400000) + (locale('i.time.days') || '天') + dirStr; |
79 | // 多于29天59分钟59秒,少于364天23小时59分钟59秒,且传入的时间戳早于当前 | 79 | // 多于29天59分钟59秒,少于364天23小时59分钟59秒,且传入的时间戳早于当前 |
80 | else if (diff >= 2623860000 && diff <= 31567860000 && IS_EARLY) resStr = getDate(timeStamp); | 80 | else if (diff >= 2623860000 && diff <= 31567860000 && IS_EARLY) resStr = getDate(timeStamp); |
81 | else resStr = getDate(timeStamp, 'year'); | 81 | else resStr = getDate(timeStamp, 'year'); |
82 | return resStr; | 82 | return resStr; |
83 | }; | 83 | }; |
84 | 84 | ||
85 | -export default function (timestamp) { | ||
86 | - return getRelativeTime(timestamp); | ||
87 | -} | ||
88 | \ No newline at end of file | 85 | \ No newline at end of file |
86 | +export default function (timestamp, locale) { | ||
87 | + return getRelativeTime(timestamp, locale); | ||
88 | +} |
src/components/time/time.vue
@@ -5,12 +5,14 @@ | @@ -5,12 +5,14 @@ | ||
5 | import Vue from 'vue'; | 5 | import Vue from 'vue'; |
6 | const isServer = Vue.prototype.$isServer; | 6 | const isServer = Vue.prototype.$isServer; |
7 | import { oneOf } from '../../utils/assist'; | 7 | import { oneOf } from '../../utils/assist'; |
8 | + import Locale from '../../mixins/locale'; | ||
8 | import Time from './time'; | 9 | import Time from './time'; |
9 | 10 | ||
10 | const prefixCls = 'ivu-time'; | 11 | const prefixCls = 'ivu-time'; |
11 | 12 | ||
12 | export default { | 13 | export default { |
13 | name: 'Time', | 14 | name: 'Time', |
15 | + mixins: [Locale], | ||
14 | props: { | 16 | props: { |
15 | time: { | 17 | time: { |
16 | type: [Number, Date, String], | 18 | type: [Number, Date, String], |
@@ -65,7 +67,7 @@ | @@ -65,7 +67,7 @@ | ||
65 | } | 67 | } |
66 | 68 | ||
67 | if (this.type === 'relative') { | 69 | if (this.type === 'relative') { |
68 | - this.date = Time(time); | 70 | + this.date = Time(time, this.t); |
69 | } else { | 71 | } else { |
70 | const date = new Date(this.time); | 72 | const date = new Date(this.time); |
71 | const year = date.getFullYear(); | 73 | const year = date.getFullYear(); |
src/locale/lang/en-US.js
@@ -94,6 +94,15 @@ const lang = { | @@ -94,6 +94,15 @@ const lang = { | ||
94 | star: 'Star', | 94 | star: 'Star', |
95 | stars: 'Stars' | 95 | stars: 'Stars' |
96 | }, | 96 | }, |
97 | + time: { | ||
98 | + before: ' ago', | ||
99 | + after: ' after', | ||
100 | + just: 'just now', | ||
101 | + seconds: ' seconds', | ||
102 | + minutes: ' minutes', | ||
103 | + hours: ' hours', | ||
104 | + days: ' days' | ||
105 | + }, | ||
97 | tree: { | 106 | tree: { |
98 | emptyText: 'No Data' | 107 | emptyText: 'No Data' |
99 | } | 108 | } |
src/locale/lang/ja-JP.js
@@ -94,6 +94,15 @@ const lang = { | @@ -94,6 +94,15 @@ const lang = { | ||
94 | star: '点', | 94 | star: '点', |
95 | stars: '点' | 95 | stars: '点' |
96 | }, | 96 | }, |
97 | + time: { | ||
98 | + before: '前', | ||
99 | + after: '後', | ||
100 | + just: 'たった今', | ||
101 | + seconds: '秒', | ||
102 | + minutes: '分', | ||
103 | + hours: '時間', | ||
104 | + days: '日' | ||
105 | + }, | ||
97 | tree: { | 106 | tree: { |
98 | emptyText: 'データなし' | 107 | emptyText: 'データなし' |
99 | } | 108 | } |
src/locale/lang/zh-CN.js
@@ -94,6 +94,15 @@ const lang = { | @@ -94,6 +94,15 @@ const lang = { | ||
94 | star: '星', | 94 | star: '星', |
95 | stars: '星' | 95 | stars: '星' |
96 | }, | 96 | }, |
97 | + time: { | ||
98 | + before: '前', | ||
99 | + after: '后', | ||
100 | + just: '刚刚', | ||
101 | + seconds: '秒', | ||
102 | + minutes: '分钟', | ||
103 | + hours: '小时', | ||
104 | + days: '天' | ||
105 | + }, | ||
97 | tree: { | 106 | tree: { |
98 | emptyText: '暂无数据' | 107 | emptyText: '暂无数据' |
99 | } | 108 | } |