Skip to content

Commit f890d62

Browse files
authored
feat: add base locale (#1748)
1 parent de47aaa commit f890d62

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+279
-91
lines changed

docs/guide/localization.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ If our built-in faker instances don't satisfy your needs, you can build your own
4444

4545
```ts
4646
import type { LocaleDefinition } from '@faker-js/faker';
47-
import { Faker, de_CH, de, en } from '@faker-js/faker';
47+
import { Faker, de_CH, de, en, base } from '@faker-js/faker';
4848

4949
const customLocale: LocaleDefinition = {
5050
title: 'My custom locale',
@@ -54,10 +54,18 @@ const customLocale: LocaleDefinition = {
5454
};
5555

5656
export const customFaker = new Faker({
57-
locale: [customLocale, de_CH, de, en, global],
57+
locale: [customLocale, de_CH, de, en, base],
5858
});
5959
```
6060

61+
In this example there are 5 locales. Each of these is checked in order, and the first locale which contains the requested data will be used:
62+
63+
- `customLocale` is your custom locale definition which will override all other fallback definitions.
64+
- `de_CH` is a specific locale definition that overrides some German definitions with `CH` (Switzerland) data.
65+
- `de` is a generic `de` (German) locale definition.
66+
- `en` is a generic `en` (English) locale definition. This is our most complete locale, so we add it to fill some gaps. Depending on your needs, you might want or not want to have it as a fallback.
67+
- `base` is the base locale definition which contains definitions that can be used in every language (e.g. emojis).
68+
6169
## Available locales
6270

6371
<!-- LOCALES-AUTO-GENERATED-START -->
@@ -69,6 +77,7 @@ export const customFaker = new Faker({
6977
| `af_ZA` | Afrikaans | `fakerAF_ZA` |
7078
| `ar` | Arabic | `fakerAR` |
7179
| `az` | Azerbaijani | `fakerAZ` |
80+
| `base` | Base | `fakerBASE` |
7281
| `cz` | Czech | `fakerCZ` |
7382
| `de` | German | `fakerDE` |
7483
| `de_AT` | German (Austria) | `fakerDE_AT` |

docs/guide/upgrading.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,12 @@ const b = customFaker.internet.emoji();
6060
**New**
6161

6262
```ts
63-
import { Faker, de_CH, de, en, global } from '@faker-js/faker';
63+
import { Faker, de_CH, de, en, base } from '@faker-js/faker';
6464

6565
// same as fakerDE_CH
6666
export const customFaker = new Faker({
6767
// Now multiple fallbacks are supported
68-
locale: [de_CH, de, en, global],
68+
locale: [de_CH, de, en, base],
6969
});
7070
const a = customFaker.internet.email();
7171
const b = customFaker.internet.emoji();

scripts/generateLocales.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,15 @@ function generateLocaleFile(locale: string): void {
125125
}
126126
}
127127

128-
if (locales[locales.length - 1] !== 'en') {
128+
// TODO christopher 2023-03-07: Remove 'en' fallback in a separate PR
129+
if (locales[locales.length - 1] !== 'en' && locale !== 'base') {
129130
locales.push('en');
130131
}
131132

133+
if (locales[locales.length - 1] !== 'base') {
134+
locales.push('base');
135+
}
136+
132137
let content = `
133138
${autoGeneratedCommentHeader}
134139
@@ -148,8 +153,10 @@ function generateLocaleFile(locale: string): void {
148153
writeFileSync(resolve(pathLocale, `${locale}.ts`), content);
149154
}
150155

151-
function tryLoadLocalesMainIndexFile(pathModules: string): LocaleDefinition {
152-
let localeDef: LocaleDefinition;
156+
function tryLoadLocalesMainIndexFile(
157+
pathModules: string
158+
): LocaleDefinition | undefined {
159+
let localeDef: LocaleDefinition | undefined;
153160
// This call might fail, if the module setup is broken.
154161
// Unfortunately, we try to fix it with this script
155162
// Thats why have a fallback logic here, we only need the title anyway
@@ -165,9 +172,10 @@ function tryLoadLocalesMainIndexFile(pathModules: string): LocaleDefinition {
165172
resolve(pathModules, 'index.ts'),
166173
'utf-8'
167174
);
168-
localeDef = {
169-
title: localeIndex.match(/title: '(.*)',/)[1],
170-
};
175+
const title = localeIndex.match(/title: '(.*)',/)?.[1];
176+
if (title) {
177+
localeDef = { title };
178+
}
171179
} catch {
172180
console.error(`Failed to load ${pathModules} or manually parse it.`, e);
173181
}

src/locale/af_ZA.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55

66
import { Faker } from '../faker';
77
import af_ZA from '../locales/af_ZA';
8+
import base from '../locales/base';
89
import en from '../locales/en';
910

1011
export const faker = new Faker({
11-
locale: [af_ZA, en],
12+
locale: [af_ZA, en, base],
1213
});

src/locale/ar.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55

66
import { Faker } from '../faker';
77
import ar from '../locales/ar';
8+
import base from '../locales/base';
89
import en from '../locales/en';
910

1011
export const faker = new Faker({
11-
locale: [ar, en],
12+
locale: [ar, en, base],
1213
});

src/locale/az.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55

66
import { Faker } from '../faker';
77
import az from '../locales/az';
8+
import base from '../locales/base';
89
import en from '../locales/en';
910

1011
export const faker = new Faker({
11-
locale: [az, en],
12+
locale: [az, en, base],
1213
});

src/locale/base.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/*
2+
* This file is automatically generated.
3+
* Run 'pnpm run generate:locales' to update.
4+
*/
5+
6+
import { Faker } from '../faker';
7+
import base from '../locales/base';
8+
9+
export const faker = new Faker({
10+
locale: base,
11+
});

src/locale/cz.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import cz from '../locales/cz';
89
import en from '../locales/en';
910

1011
export const faker = new Faker({
11-
locale: [cz, en],
12+
locale: [cz, en, base],
1213
});

src/locale/de.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import de from '../locales/de';
89
import en from '../locales/en';
910

1011
export const faker = new Faker({
11-
locale: [de, en],
12+
locale: [de, en, base],
1213
});

src/locale/de_AT.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import de from '../locales/de';
89
import de_AT from '../locales/de_AT';
910
import en from '../locales/en';
1011

1112
export const faker = new Faker({
12-
locale: [de_AT, de, en],
13+
locale: [de_AT, de, en, base],
1314
});

src/locale/de_CH.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import de from '../locales/de';
89
import de_CH from '../locales/de_CH';
910
import en from '../locales/en';
1011

1112
export const faker = new Faker({
12-
locale: [de_CH, de, en],
13+
locale: [de_CH, de, en, base],
1314
});

src/locale/dv.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import dv from '../locales/dv';
89
import en from '../locales/en';
910

1011
export const faker = new Faker({
11-
locale: [dv, en],
12+
locale: [dv, en, base],
1213
});

src/locale/el.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import el from '../locales/el';
89
import en from '../locales/en';
910

1011
export const faker = new Faker({
11-
locale: [el, en],
12+
locale: [el, en, base],
1213
});

src/locale/en.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89

910
export const faker = new Faker({
10-
locale: en,
11+
locale: [en, base],
1112
});

src/locale/en_AU.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import en_AU from '../locales/en_AU';
910

1011
export const faker = new Faker({
11-
locale: [en_AU, en],
12+
locale: [en_AU, en, base],
1213
});

src/locale/en_AU_ocker.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import en_AU from '../locales/en_AU';
910
import en_AU_ocker from '../locales/en_AU_ocker';
1011

1112
export const faker = new Faker({
12-
locale: [en_AU_ocker, en_AU, en],
13+
locale: [en_AU_ocker, en_AU, en, base],
1314
});

src/locale/en_BORK.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import en_BORK from '../locales/en_BORK';
910

1011
export const faker = new Faker({
11-
locale: [en_BORK, en],
12+
locale: [en_BORK, en, base],
1213
});

src/locale/en_CA.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import en_CA from '../locales/en_CA';
910

1011
export const faker = new Faker({
11-
locale: [en_CA, en],
12+
locale: [en_CA, en, base],
1213
});

src/locale/en_GB.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import en_GB from '../locales/en_GB';
910

1011
export const faker = new Faker({
11-
locale: [en_GB, en],
12+
locale: [en_GB, en, base],
1213
});

src/locale/en_GH.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import en_GH from '../locales/en_GH';
910

1011
export const faker = new Faker({
11-
locale: [en_GH, en],
12+
locale: [en_GH, en, base],
1213
});

src/locale/en_IE.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import en_IE from '../locales/en_IE';
910

1011
export const faker = new Faker({
11-
locale: [en_IE, en],
12+
locale: [en_IE, en, base],
1213
});

src/locale/en_IN.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import en_IN from '../locales/en_IN';
910

1011
export const faker = new Faker({
11-
locale: [en_IN, en],
12+
locale: [en_IN, en, base],
1213
});

src/locale/en_NG.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import en_NG from '../locales/en_NG';
910

1011
export const faker = new Faker({
11-
locale: [en_NG, en],
12+
locale: [en_NG, en, base],
1213
});

src/locale/en_US.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import en_US from '../locales/en_US';
910

1011
export const faker = new Faker({
11-
locale: [en_US, en],
12+
locale: [en_US, en, base],
1213
});

src/locale/en_ZA.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import en_ZA from '../locales/en_ZA';
910

1011
export const faker = new Faker({
11-
locale: [en_ZA, en],
12+
locale: [en_ZA, en, base],
1213
});

src/locale/es.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import es from '../locales/es';
910

1011
export const faker = new Faker({
11-
locale: [es, en],
12+
locale: [es, en, base],
1213
});

src/locale/es_MX.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import es from '../locales/es';
910
import es_MX from '../locales/es_MX';
1011

1112
export const faker = new Faker({
12-
locale: [es_MX, es, en],
13+
locale: [es_MX, es, en, base],
1314
});

src/locale/fa.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
*/
55

66
import { Faker } from '../faker';
7+
import base from '../locales/base';
78
import en from '../locales/en';
89
import fa from '../locales/fa';
910

1011
export const faker = new Faker({
11-
locale: [fa, en],
12+
locale: [fa, en, base],
1213
});

0 commit comments

Comments
 (0)