mirror of https://github.com/mifi/lossless-cut
parent
2511117808
commit
2511114302
@ -1,3 +1,4 @@
|
||||
/dist
|
||||
/out
|
||||
/ts-dist
|
||||
/main-ts-dist
|
||||
/common-ts-dist
|
||||
|
||||
@ -1,22 +0,0 @@
|
||||
// eslint-disable-line unicorn/filename-case
|
||||
export default {
|
||||
input: ['src/renderer/**/*.{js,jsx,ts,tsx}', 'src/main/*.{js,ts}'],
|
||||
|
||||
output: 'locales/$LOCALE/$NAMESPACE.json',
|
||||
indentation: 4,
|
||||
|
||||
sort: true,
|
||||
|
||||
locales: ['en'],
|
||||
|
||||
lexers: {
|
||||
js: ['JavascriptLexer'],
|
||||
jsx: ['JsxLexer'],
|
||||
},
|
||||
|
||||
defaultValue: (lng, ns, key) => key,
|
||||
|
||||
// Keep in sync between i18next-parser.config.js and i18nCommon.js:
|
||||
keySeparator: false,
|
||||
namespaceSeparator: false,
|
||||
};
|
||||
@ -0,0 +1,37 @@
|
||||
// eslint-disable-next-line import/no-extraneous-dependencies
|
||||
import { defineConfig } from 'i18next-cli';
|
||||
|
||||
import { langNames, mapLang, SupportedLanguage } from './src/common/i18n.js';
|
||||
|
||||
|
||||
export default defineConfig({
|
||||
locales: Object.keys(langNames).map((lng) => mapLang(lng as SupportedLanguage)),
|
||||
extract: {
|
||||
input: [
|
||||
'src/renderer/**/*.{ts,tsx}',
|
||||
'src/main/**/*.ts',
|
||||
'src/common/**/*.ts',
|
||||
'src/preload/**/*.ts',
|
||||
],
|
||||
output: 'locales/{{language}}/{{namespace}}.json',
|
||||
defaultNS: 'translation',
|
||||
functions: [
|
||||
't',
|
||||
'*.t',
|
||||
],
|
||||
transComponents: [
|
||||
'Trans',
|
||||
],
|
||||
ignoredAttributes: ['data-testid', 'aria-label', 'role'],
|
||||
|
||||
// Keep in sync between i18next-parser.config.js and i18nCommon.js:
|
||||
keySeparator: false,
|
||||
nsSeparator: false,
|
||||
},
|
||||
types: {
|
||||
input: [
|
||||
'locales/{{language}}/{{namespace}}.json',
|
||||
],
|
||||
output: 'src/types/i18next.d.ts',
|
||||
},
|
||||
});
|
||||
@ -0,0 +1,268 @@
|
||||
// returned from app.getLocale()
|
||||
// https://www.electronjs.org/docs/api/app#appgetlocale
|
||||
// https://source.chromium.org/chromium/chromium/src/+/master:ui/base/l10n/l10n_util.cc
|
||||
export type ElectronLanguageKey =
|
||||
'af' // Afrikaans
|
||||
| 'ak' // Twi
|
||||
| 'am' // Amharic
|
||||
| 'an' // Aragonese
|
||||
| 'ar' // Arabic
|
||||
| 'as' // Assamese
|
||||
| 'ast' // Asturian
|
||||
| 'ay' // Aymara
|
||||
| 'az' // Azerbaijani
|
||||
| 'be' // Belarusian
|
||||
| 'bg' // Bulgarian
|
||||
| 'bho' // Bhojpuri
|
||||
| 'bm' // Bambara
|
||||
| 'bn' // Bengali
|
||||
| 'br' // Breton
|
||||
| 'bs' // Bosnian
|
||||
| 'ca' // Catalan
|
||||
| 'ceb' // Cebuano
|
||||
| 'chr' // Cherokee
|
||||
| 'ckb' // Kurdish (Arabic), Sorani
|
||||
| 'co' // Corsican
|
||||
| 'cs' // Czech
|
||||
| 'cy' // Welsh
|
||||
| 'da' // Danish
|
||||
| 'de' // German
|
||||
| 'de-AT' // German (Austria)
|
||||
| 'de-CH' // German (Switzerland)
|
||||
| 'de-DE' // German (Germany)
|
||||
| 'de-LI' // German (Liechtenstein)
|
||||
| 'doi' // Dogri
|
||||
| 'dv' // Dhivehi
|
||||
| 'ee' // Ewe
|
||||
| 'el' // Greek
|
||||
| 'en' // English
|
||||
| 'en-AU' // English (Australia)
|
||||
| 'en-CA' // English (Canada)
|
||||
| 'en-GB' // English (UK)
|
||||
| 'en-GB-oxendict' // English (UK, OED spelling)
|
||||
| 'en-IE' // English (Ireland)
|
||||
| 'en-IN' // English (India)
|
||||
| 'en-NZ' // English (New Zealand)
|
||||
| 'en-US' // English (US)
|
||||
| 'en-ZA' // English (South Africa)
|
||||
| 'eo' // Esperanto
|
||||
| 'es' // Spanish
|
||||
| 'es-419' // Spanish (Latin America)
|
||||
| 'es-AR' // Spanish (Argentina)
|
||||
| 'es-CL' // Spanish (Chile)
|
||||
| 'es-CO' // Spanish (Colombia)
|
||||
| 'es-CR' // Spanish (Costa Rica)
|
||||
| 'es-ES' // Spanish (Spain)
|
||||
| 'es-HN' // Spanish (Honduras)
|
||||
| 'es-MX' // Spanish (Mexico)
|
||||
| 'es-PE' // Spanish (Peru)
|
||||
| 'es-US' // Spanish (US)
|
||||
| 'es-UY' // Spanish (Uruguay)
|
||||
| 'es-VE' // Spanish (Venezuela)
|
||||
| 'et' // Estonian
|
||||
| 'eu' // Basque
|
||||
| 'fa' // Persian
|
||||
| 'fi' // Finnish
|
||||
| 'fil' // Filipino
|
||||
| 'fo' // Faroese
|
||||
| 'fr' // French
|
||||
| 'fr-CA' // French (Canada)
|
||||
| 'fr-CH' // French (Switzerland)
|
||||
| 'fr-FR' // French (France)
|
||||
| 'fy' // Frisian
|
||||
| 'ga' // Irish
|
||||
| 'gd' // Scots Gaelic
|
||||
| 'gl' // Galician
|
||||
| 'gn' // Guarani
|
||||
| 'gu' // Gujarati
|
||||
| 'ha' // Hausa
|
||||
| 'haw' // Hawaiian
|
||||
| 'he' // Hebrew
|
||||
| 'hi' // Hindi
|
||||
| 'hmn' // Hmong
|
||||
| 'hr' // Croatian
|
||||
| 'ht' // Haitian Creole
|
||||
| 'hu' // Hungarian
|
||||
| 'hy' // Armenian
|
||||
| 'ia' // Interlingua
|
||||
| 'id' // Indonesian
|
||||
| 'ig' // Igbo
|
||||
| 'ilo' // Ilocano
|
||||
| 'is' // Icelandic
|
||||
| 'it' // Italian
|
||||
| 'it-CH' // Italian (Switzerland)
|
||||
| 'it-IT' // Italian (Italy)
|
||||
| 'ja' // Japanese
|
||||
| 'jv' // Javanese
|
||||
| 'ka' // Georgian
|
||||
| 'kk' // Kazakh
|
||||
| 'km' // Cambodian
|
||||
| 'kn' // Kannada
|
||||
| 'ko' // Korean
|
||||
| 'kok' // Konkani
|
||||
| 'kri' // Krio
|
||||
| 'ku' // Kurdish
|
||||
| 'ky' // Kyrgyz
|
||||
| 'la' // Latin
|
||||
| 'lb' // Luxembourgish
|
||||
| 'lg' // Luganda
|
||||
| 'ln' // Lingala
|
||||
| 'lo' // Laothian
|
||||
| 'lt' // Lithuanian
|
||||
| 'lus' // Mizo
|
||||
| 'lv' // Latvian
|
||||
| 'mai' // Maithili
|
||||
| 'mg' // Malagasy
|
||||
| 'mi' // Maori
|
||||
| 'mk' // Macedonian
|
||||
| 'ml' // Malayalam
|
||||
| 'mn' // Mongolian
|
||||
| 'mni-Mtei' // Manipuri (Meitei Mayek)
|
||||
| 'mo' // Moldavian
|
||||
| 'mr' // Marathi
|
||||
| 'ms' // Malay
|
||||
| 'mt' // Maltese
|
||||
| 'my' // Burmese
|
||||
| 'nb' // Norwegian (Bokmal)
|
||||
| 'ne' // Nepali
|
||||
| 'nl' // Dutch
|
||||
| 'nn' // Norwegian (Nynorsk)
|
||||
| 'no' // Norwegian
|
||||
| 'nso' // Sepedi
|
||||
| 'ny' // Nyanja
|
||||
| 'oc' // Occitan
|
||||
| 'om' // Oromo
|
||||
| 'or' // Odia (Oriya)
|
||||
| 'pa' // Punjabi
|
||||
| 'pl' // Polish
|
||||
| 'ps' // Pashto
|
||||
| 'pt' // Portuguese
|
||||
| 'pt-BR' // Portuguese (Brazil)
|
||||
| 'pt-PT' // Portuguese (Portugal)
|
||||
| 'qu' // Quechua
|
||||
| 'rm' // Romansh
|
||||
| 'ro' // Romanian
|
||||
| 'ru' // Russian
|
||||
| 'rw' // Kinyarwanda
|
||||
| 'sa' // Sanskrit
|
||||
| 'sd' // Sindhi
|
||||
| 'sh' // Serbo-Croatian
|
||||
| 'si' // Sinhalese
|
||||
| 'sk' // Slovak
|
||||
| 'sl' // Slovenian
|
||||
| 'sm' // Samoan
|
||||
| 'sn' // Shona
|
||||
| 'so' // Somali
|
||||
| 'sq' // Albanian
|
||||
| 'sr' // Serbian
|
||||
| 'st' // Sesotho
|
||||
| 'su' // Sundanese
|
||||
| 'sv' // Swedish
|
||||
| 'sw' // Swahili
|
||||
| 'ta' // Tamil
|
||||
| 'te' // Telugu
|
||||
| 'tg' // Tajik
|
||||
| 'th' // Thai
|
||||
| 'ti' // Tigrinya
|
||||
| 'tk' // Turkmen
|
||||
| 'tn' // Tswana
|
||||
| 'to' // Tonga
|
||||
| 'tr' // Turkish
|
||||
| 'ts' // Tsonga
|
||||
| 'tt' // Tatar
|
||||
| 'tw' // Twi
|
||||
| 'ug' // Uyghur
|
||||
| 'uk' // Ukrainian
|
||||
| 'ur' // Urdu
|
||||
| 'uz' // Uzbek
|
||||
| 'vi' // Vietnamese
|
||||
| 'wa' // Walloon
|
||||
| 'wo' // Wolof
|
||||
| 'xh' // Xhosa
|
||||
| 'yi' // Yiddish
|
||||
| 'yo' // Yoruba
|
||||
| 'zh' // Chinese
|
||||
| 'zh-CN' // Chinese (China)
|
||||
| 'zh-HK' // Chinese (Hong Kong)
|
||||
| 'zh-TW' // Chinese (Taiwan)
|
||||
| 'zu' // Zulu
|
||||
|
||||
// https://www.electronjs.org/docs/api/app#appgetlocale
|
||||
// https://source.chromium.org/chromium/chromium/src/+/master:ui/base/l10n/l10n_util.cc
|
||||
// See i18n.js
|
||||
export const langNames = {
|
||||
en: 'English',
|
||||
cs: 'Čeština',
|
||||
de: 'Deutsch',
|
||||
es: 'Español',
|
||||
fr: 'Français',
|
||||
it: 'Italiano',
|
||||
nl: 'Nederlands',
|
||||
// nb: 'Norsk (bokmål)',
|
||||
nn: 'Norsk (nynorsk)',
|
||||
// sv: 'Svenska',
|
||||
pl: 'Polski',
|
||||
pt: 'Português',
|
||||
'pt-BR': 'Português do Brasil',
|
||||
sl: 'Slovenščina',
|
||||
sk: 'Slovenčina',
|
||||
fi: 'Suomi',
|
||||
ru: 'Русский',
|
||||
uk: 'Українська',
|
||||
tr: 'Türkçe',
|
||||
vi: 'Tiếng Việt',
|
||||
ja: '日本語',
|
||||
'zh-TW': '繁體中文',
|
||||
'zh-CN': '简体中文',
|
||||
ko: '한국어',
|
||||
ta: 'தமிழ்',
|
||||
lt: 'Lietuvių',
|
||||
hu: 'Magyar',
|
||||
} satisfies Partial<Record<ElectronLanguageKey, string>>;
|
||||
|
||||
export type SupportedLanguage = (keyof typeof langNames);
|
||||
|
||||
// Weblate hardcodes different lang codes than electron
|
||||
// https://www.electronjs.org/docs/api/app#appgetlocale
|
||||
// https://source.chromium.org/chromium/chromium/src/+/master:ui/base/l10n/l10n_util.cc
|
||||
export function mapLang(lng: ElectronLanguageKey) {
|
||||
const map: Partial<Record<ElectronLanguageKey, string>> = {
|
||||
'de-AT': 'de',
|
||||
'de-CH': 'de',
|
||||
'de-DE': 'de',
|
||||
'de-LI': 'de',
|
||||
|
||||
'es-419': 'es',
|
||||
'es-AR': 'es',
|
||||
'es-CL': 'es',
|
||||
'es-CO': 'es',
|
||||
'es-CR': 'es',
|
||||
'es-ES': 'es',
|
||||
'es-HN': 'es',
|
||||
'es-MX': 'es',
|
||||
'es-PE': 'es',
|
||||
'es-US': 'es',
|
||||
'es-UY': 'es',
|
||||
'es-VE': 'es',
|
||||
|
||||
'fr-CA': 'fr',
|
||||
'fr-CH': 'fr',
|
||||
'fr-FR': 'fr',
|
||||
|
||||
nb: 'nb_NO',
|
||||
no: 'nb_NO',
|
||||
|
||||
zh: 'zh_Hans',
|
||||
'zh-CN': 'zh_Hans',
|
||||
'zh-TW': 'zh_Hant',
|
||||
'zh-HK': 'zh_Hant',
|
||||
|
||||
'pt-BR': 'pt_BR',
|
||||
'pt-PT': 'pt',
|
||||
|
||||
'it-CH': 'it',
|
||||
'it-IT': 'it',
|
||||
};
|
||||
|
||||
return map[lng] ?? lng;
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
{
|
||||
"extends": ["@tsconfig/strictest", "@tsconfig/node22/tsconfig.json"],
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
"noEmit": false,
|
||||
|
||||
"outDir": "common-ts-dist",
|
||||
"tsBuildInfoFile": "common-ts-dist/tsconfig.tsbuildinfo",
|
||||
},
|
||||
"include": [
|
||||
"src/common/**/*",
|
||||
],
|
||||
}
|
||||
Loading…
Reference in New Issue