UNPKG

i18n-ai-translate

Version:

AI-powered localization CLI, Node library, and GitHub Action. Translate i18next JSON, Gettext PO, Java .properties, and iOS .strings with ChatGPT, Claude, Gemini, or local Ollama models.

60 lines 2.3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAdapterByName = getAdapterByName; exports.getAdapterByExtension = getAdapterByExtension; exports.getAdapterForFile = getAdapterForFile; exports.listFormatNames = listFormatNames; const json_adapter_1 = __importDefault(require("./json_adapter")); const po_adapter_1 = __importDefault(require("./po_adapter")); const properties_adapter_1 = __importDefault(require("./properties_adapter")); const strings_adapter_1 = __importDefault(require("./strings_adapter")); const path_1 = __importDefault(require("path")); // Sidecar types are adapter-private; the registry holds adapters with // the sidecar type erased so we can dispatch on extension or name // without leaking each format's internal shape. const ADAPTERS = [ json_adapter_1.default, po_adapter_1.default, properties_adapter_1.default, strings_adapter_1.default, ]; /** * Look up an adapter by its `--format <name>` identifier. * @param name - adapter name (e.g. `"json"`) * @returns the matching adapter, or undefined */ function getAdapterByName(name) { return ADAPTERS.find((a) => a.name === name); } /** * Look up an adapter by file extension (leading dot included or not). * @param ext - the file extension, case-insensitive * @returns the matching adapter, or undefined */ function getAdapterByExtension(ext) { const normalized = ext.startsWith(".") ? ext.toLowerCase() : `.${ext.toLowerCase()}`; return ADAPTERS.find((a) => a.extensions.includes(normalized)); } /** * Resolve an adapter from a filename, or fall back to the default * JSON adapter. Used by the file wrappers when the caller hasn't * passed `--format` explicitly. * @param filename - the filename to inspect * @returns the matching adapter, or the JSON default */ function getAdapterForFile(filename) { const ext = path_1.default.extname(filename); return getAdapterByExtension(ext) ?? json_adapter_1.default; } /** * @returns the names of every registered adapter */ function listFormatNames() { return ADAPTERS.map((a) => a.name); } //# sourceMappingURL=registry.js.map