lynx-intlayer
Version:
A Lynx plugin for seamless internationalization (i18n) and localization (l10n) of your mobile app.
59 lines • 1.99 kB
JavaScript
import {
checkDictionaryChanges,
prepareIntlayer,
watch
} from "@intlayer/chokidar";
import { ESMxCJSRequire, getConfiguration, logger } from "@intlayer/config";
import { join, relative } from "path";
const pluginIntlayerLynx = () => {
return {
name: "plugin-intlayer-lynx",
async setup(api) {
const intlayerConfig = getConfiguration();
await prepareIntlayer(intlayerConfig);
const { mainDir, configDir, baseDir } = intlayerConfig.content;
const dictionariesPath = join(mainDir, "dictionaries.mjs");
const relativeDictionariesPath = relative(baseDir, dictionariesPath);
const unmergedDictionariesPath = join(
mainDir,
"unmerged_dictionaries.mjs"
);
const relativeUnmergedDictionariesPath = relative(
baseDir,
unmergedDictionariesPath
);
const configurationPath = join(configDir, "configuration.json");
const relativeConfigurationPath = relative(baseDir, configurationPath);
if (intlayerConfig.content.watch) {
watch(intlayerConfig);
}
api.modifyRsbuildConfig(async (config, { mergeRsbuildConfig }) => {
return mergeRsbuildConfig(config, {
source: {
alias: {
"@intlayer/dictionaries-entry": relativeDictionariesPath,
"@intlayer/unmerged-dictionaries-entry": relativeUnmergedDictionariesPath,
"@intlayer/config/built": relativeConfigurationPath,
react: ESMxCJSRequire.resolve("@lynx-js/react")
}
}
});
});
if (intlayerConfig.editor.hotReload) {
api.onBeforeEnvironmentCompile(async () => {
try {
await checkDictionaryChanges();
} catch (error) {
logger(`Error checking dictionary changes: ${error}`, {
level: "error"
});
}
});
}
}
};
};
export {
pluginIntlayerLynx
};
//# sourceMappingURL=pluginIntlayerLynx.mjs.map