diff --git a/package.json b/package.json index 289d8cf1..50169c07 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "gql:codegen-base": "graphql-codegen --config gql_codegen.ts", "gql:codegen-formatter": "ts-node -T tools/scripts/codegenFormatter.ts", "gql:codegen": "yarn gql:codegen-base & yarn gql:codegen-formatter", + "i18n:gen-resources": "ts-node -T tools/scripts/generatei18nResources.ts", "prepare": "husky" }, "engines": { diff --git a/tools/scripts/generatei18nResources.ts b/tools/scripts/generatei18nResources.ts new file mode 100644 index 00000000..5e197f79 --- /dev/null +++ b/tools/scripts/generatei18nResources.ts @@ -0,0 +1,28 @@ +/* + * Copyright (C) Contributors to the Suwayomi project + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +import path from 'path'; +import fs from 'fs'; + +const outputFilePath = path.join(__dirname, '../../src/i18n/index.ts'); +const resourcesDirPath = path.join(__dirname, '../../public/locales'); + +const resourceFileNames = fs.readdirSync(resourcesDirPath); + +const resourceNames = resourceFileNames.map((resourceFileName) => + path.basename(resourceFileName, path.extname(resourceFileName)), +); + +const outputFileContent = fs.readFileSync(outputFilePath, 'utf-8'); + +const updatedFileContent = outputFileContent.replace( + /(export const i18nResources = \[)[\s\S]*?(])/g, + `$1'${resourceNames.join("', '")}'$2`, +); + +fs.writeFileSync(outputFilePath, updatedFileContent);