Skip to content
This repository was archived by the owner on Dec 31, 2024. It is now read-only.

Commit 8f75b1f

Browse files
exoegokazupon
authored andcommitted
⭐ new(index): add availableLocales (related issue #193, PR #528) by @exoego
* feat(index): Fix #193 add availableLocales * Update src/index.js Co-Authored-By: exoego <ytatsuno.jp@gmail.com> * feat(index): Fix #193 add type definition to availableLocales * fix(index): add missing type definition to numberFormats * fix(index): Fix #193 add docs to availableLocales * Update vuepress/api/README.md Co-Authored-By: exoego <ytatsuno.jp@gmail.com> * fix(index): Fix #193 ensure order of locales
1 parent 396c5ca commit 8f75b1f

5 files changed

Lines changed: 21 additions & 0 deletions

File tree

decls/i18n.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ declare interface I18n {
8585
set fallbackLocale (locale: Locale): void,
8686
get messages (): LocaleMessages,
8787
get dateTimeFormats (): DateTimeFormats,
88+
get availableLocales (): Locale[],
8889
get missing (): ?MissingHandler,
8990
set missing (handler: MissingHandler): void,
9091
get formatter (): Formatter,

src/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ export default class VueI18n {
169169
get messages (): LocaleMessages { return looseClone(this._getMessages()) }
170170
get dateTimeFormats (): DateTimeFormats { return looseClone(this._getDateTimeFormats()) }
171171
get numberFormats (): NumberFormats { return looseClone(this._getNumberFormats()) }
172+
get availableLocales (): Locale[] { return Object.keys(this.messages).sort() }
172173

173174
get locale (): Locale { return this._vm.locale }
174175
set locale (locale: Locale): void {

test/unit/basic.test.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,12 @@ describe('basic', () => {
629629
})
630630
})
631631

632+
describe('i18n#availableLocales', () => {
633+
it('should return locales defined in messages in lexical order', () => {
634+
assert.deepStrictEqual(i18n.availableLocales, ['en', 'ja'])
635+
})
636+
})
637+
632638
let desc = VueI18n.availabilities.dateTimeFormat ? describe : describe.skip
633639
desc('i18n#d', () => {
634640
let dt

types/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ declare class VueI18n {
141141
readonly messages: VueI18n.LocaleMessages;
142142
readonly dateTimeFormats: VueI18n.DateTimeFormats;
143143
readonly numberFormats: VueI18n.NumberFormats;
144+
readonly availableLocales: VueI18n.Locale[];
144145

145146
locale: VueI18n.Locale;
146147
fallbackLocale: VueI18n.Locale;

vuepress/api/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,18 @@ The number formats of localization.
209209

210210
* **See also:** `NumberFormats` type of [flowtype definitions](https://github.com/kazupon/vue-i18n/blob/dev/decls/i18n.js)
211211

212+
#### availableLocales
213+
214+
> :new: 8.9.0+
215+
216+
* **Type:** `Locale[]`
217+
218+
* **Default:** `[]`
219+
220+
* **Examples:** `["en", "ja"]`
221+
222+
The list of available locales in `messages` in lexical order.
223+
212224
#### formatter
213225

214226
* **Type:** `Formatter`

0 commit comments

Comments
 (0)