mirror of
https://gitee.com/myxzgzs/boyue_jnpf.git
synced 2025-08-13 01:32:42 +08:00
100 lines
4.1 KiB
JavaScript
100 lines
4.1 KiB
JavaScript
![]() |
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.LangConfigurator = void 0;
|
||
|
exports.createAddLangsMacro = createAddLangsMacro;
|
||
|
exports.addCustomMessageFileInclude = addCustomMessageFileInclude;
|
||
|
const builder_util_1 = require("builder-util");
|
||
|
const debug_1 = require("debug");
|
||
|
const fs_extra_1 = require("fs-extra");
|
||
|
const js_yaml_1 = require("js-yaml");
|
||
|
const path = require("path");
|
||
|
const langs_1 = require("../../util/langs");
|
||
|
const nsisUtil_1 = require("./nsisUtil");
|
||
|
const debug = (0, debug_1.default)("electron-builder:nsis");
|
||
|
class LangConfigurator {
|
||
|
constructor(options) {
|
||
|
const rawList = options.installerLanguages;
|
||
|
if (options.unicode === false || rawList === null || (Array.isArray(rawList) && rawList.length === 0)) {
|
||
|
this.isMultiLang = false;
|
||
|
}
|
||
|
else {
|
||
|
this.isMultiLang = options.multiLanguageInstaller !== false;
|
||
|
}
|
||
|
if (this.isMultiLang) {
|
||
|
this.langs = rawList == null ? langs_1.bundledLanguages.slice() : (0, builder_util_1.asArray)(rawList).map(it => (0, langs_1.toLangWithRegion)(it.replace("-", "_")));
|
||
|
}
|
||
|
else {
|
||
|
this.langs = ["en_US"];
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
exports.LangConfigurator = LangConfigurator;
|
||
|
function createAddLangsMacro(scriptGenerator, langConfigurator) {
|
||
|
const result = [];
|
||
|
for (const langWithRegion of langConfigurator.langs) {
|
||
|
let name;
|
||
|
if (langWithRegion === "zh_CN") {
|
||
|
name = "SimpChinese";
|
||
|
}
|
||
|
else if (langWithRegion === "zh_TW") {
|
||
|
name = "TradChinese";
|
||
|
}
|
||
|
else if (langWithRegion === "nb_NO") {
|
||
|
name = "Norwegian";
|
||
|
}
|
||
|
else if (langWithRegion === "pt_BR") {
|
||
|
name = "PortugueseBR";
|
||
|
}
|
||
|
else {
|
||
|
const lang = langWithRegion.substring(0, langWithRegion.indexOf("_"));
|
||
|
name = langs_1.langIdToName[lang];
|
||
|
if (name == null) {
|
||
|
throw new Error(`Language name is unknown for ${lang}`);
|
||
|
}
|
||
|
if (name === "Spanish") {
|
||
|
name = "SpanishInternational";
|
||
|
}
|
||
|
}
|
||
|
result.push(`!insertmacro MUI_LANGUAGE "${name}"`);
|
||
|
}
|
||
|
scriptGenerator.macro("addLangs", result);
|
||
|
}
|
||
|
async function writeCustomLangFile(data, packager) {
|
||
|
const file = await packager.getTempFile("messages.nsh");
|
||
|
await (0, fs_extra_1.outputFile)(file, data);
|
||
|
return file;
|
||
|
}
|
||
|
async function addCustomMessageFileInclude(input, packager, scriptGenerator, langConfigurator) {
|
||
|
const data = (0, js_yaml_1.load)(await (0, fs_extra_1.readFile)(path.join(nsisUtil_1.nsisTemplatesDir, input), "utf-8"));
|
||
|
const instructions = computeCustomMessageTranslations(data, langConfigurator).join("\n");
|
||
|
debug(instructions);
|
||
|
scriptGenerator.include(await writeCustomLangFile(instructions, packager));
|
||
|
}
|
||
|
function computeCustomMessageTranslations(messages, langConfigurator) {
|
||
|
const result = [];
|
||
|
const includedLangs = new Set(langConfigurator.langs);
|
||
|
for (const messageId of Object.keys(messages)) {
|
||
|
const langToTranslations = messages[messageId];
|
||
|
const unspecifiedLangs = new Set(langConfigurator.langs);
|
||
|
for (const lang of Object.keys(langToTranslations)) {
|
||
|
const langWithRegion = (0, langs_1.toLangWithRegion)(lang);
|
||
|
if (!includedLangs.has(langWithRegion)) {
|
||
|
continue;
|
||
|
}
|
||
|
const value = langToTranslations[lang];
|
||
|
if (value == null) {
|
||
|
throw new Error(`${messageId} not specified for ${lang}`);
|
||
|
}
|
||
|
result.push(`LangString ${messageId} ${langs_1.lcid[langWithRegion]} "${value.replace(/\n/g, "$\\r$\\n")}"`);
|
||
|
unspecifiedLangs.delete(langWithRegion);
|
||
|
}
|
||
|
if (langConfigurator.isMultiLang) {
|
||
|
const defaultTranslation = langToTranslations.en.replace(/\n/g, "$\\r$\\n");
|
||
|
for (const langWithRegion of unspecifiedLangs) {
|
||
|
result.push(`LangString ${messageId} ${langs_1.lcid[langWithRegion]} "${defaultTranslation}"`);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
//# sourceMappingURL=nsisLang.js.map
|