forked from Uniswap/interface
-
Notifications
You must be signed in to change notification settings - Fork 0
/
lingui.config.ts
96 lines (87 loc) · 3.5 KB
/
lingui.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// /* eslint-env node */
// import { default as babelExtractor } from '@lingui/cli/api/extractors/babel'
// import { createHash } from 'crypto'
// import { mkdirSync, readFileSync, writeFileSync } from 'fs'
// import { existsSync } from 'fs'
// import * as path from 'path'
// /** A custom caching extractor built on top of babelExtractor. */
// const cachingExtractor: typeof babelExtractor = {
// /** Delegates to babelExtractor.match. */
// match(filename: string) {
// return babelExtractor.match(filename)
// },
// /**
// * Checks a cache before extraction, only delegating to babelExtractor.extract if the file has changed.
// *
// * The lingui extractor works by extracting JSON (the catalog) from `filename` to `buildDir/filename.json`.
// * Caching works by man-in-the-middling this:
// * - File freshness is computed as a hash of `filename` contents.
// * - Before extracting, we check the cache to see if we already have a fresh catalog for the file.
// * If we do, we copy it to `localeDir/filename.json`. Copying is significantly faster than extracting.
// * - After extracting, we copy the catalog to the cache.
// */
// extract(filename: string, localeDir: string, ...options: unknown[]) {
// // This runs from node_modules/@lingui/conf, so we need to back out to the root.
// const root = __dirname.split('/node_modules')[0]
// // This logic mimics catalogFilename in @lingui/babel-plugin-extract-messages.
// const buildDir = path.join(localeDir, '_build')
// const localePath = path.join(buildDir, filename + '.json')
// const filePath = path.join(root, filename)
// const fileHash = createHash('sha256').update(readFileSync(filePath)).digest('hex')
// const cacheRoot = path.join(root, 'node_modules/.cache/lingui')
// const cachePath = path.join(cacheRoot, filename + '.json')
// // If we have a matching cached copy of the catalog, we can copy it to localePath and return early.
// if (existsSync(cachePath)) {
// const { hash, catalog } = JSON.parse(readFileSync(cachePath, 'utf8'))
// if (hash === fileHash) {
// if (catalog) {
// mkdirSync(path.dirname(localePath), { recursive: true })
// writeFileSync(localePath, JSON.stringify(catalog, null, 2))
// }
// return
// }
// }
// babelExtractor.extract(filename, localeDir, ...options)
// // Cache the extracted catalog.
// mkdirSync(path.dirname(cachePath), { recursive: true })
// if (existsSync(localePath)) {
// const catalog = JSON.parse(readFileSync(localePath, 'utf8'))
// writeFileSync(cachePath, JSON.stringify({ hash: fileHash, catalog }))
// } else {
// writeFileSync(cachePath, JSON.stringify({ hash: fileHash }))
// }
// },
// }
const linguiConfig = {
catalogs: [
{
path: '<rootDir>/src/locales/{locale}',
include: ['<rootDir>/src/**/*.ts', '<rootDir>/src/**/*.tsx'],
exclude: [
'<rootDir>/src/**/*.d.ts',
'<rootDir>/src/**/*.test.*',
'<rootDir>/src/types/v3/**',
'<rootDir>/src/abis/types/**',
'<rootDir>/src/graphql/**/__generated__/**',
],
},
],
compileNamespace: 'cjs',
fallbackLocales: {
default: 'en-US',
},
format: 'po',
formatOptions: {
lineNumbers: false,
},
locales: [
'en-US',
'es-ES',
],
orderBy: 'messageId',
rootDir: '.',
runtimeConfigModule: ['@lingui/core', 'i18n'],
sourceLocale: 'en-US',
// extractors: [cachingExtractor],
}
export default linguiConfig