/** * Convert a dotted translation key to a human-readable label when no * explicit dictionary entry exists yet. Takes the last segment and converts * camelCase to Title Case, e.g. "pptx.slideSorter.zoomIn" -> "Zoom In". */ export declare function keyToLabel(key: string): string; /** * Built-in language choices offered by File > Options > Language when a host * doesn't supply its own `availableLocales`. Mirrors the locales shipped by * the optional `pptx-viewer-locales` package (English needs no dictionary, * it's the viewer's own baseline). */ export declare const LOCALE_CATALOG: readonly LocaleCatalogEntry[]; /** One selectable entry in the viewer chrome's built-in language picker (File > Options > Language). */ export declare interface LocaleCatalogEntry { /** BCP-47-ish locale code, e.g. `'en'`, `'fr'`. Matches `pptx-viewer-locales`' exports. */ code: string; /** English display name, used before a translation dictionary for the target locale is loaded. */ label: string; /** The locale's own name for itself, e.g. `'Français'` for `fr`. */ nativeLabel: string; } /** * vue-i18n's message compiler only supports single-brace `{var}` named * interpolation and throws a fatal "Not allowed nest placeholder" parse * error on `{{var}}` (the i18next/ngx-translate convention the shared * dictionary uses, since React and Angular both expect double braces). * Adapt the syntax once here so every Vue consumer gets a working * dictionary without needing to know about the mismatch. * * Exported so hosts registering their OWN non-English dictionaries (which * naturally follow the shared `{{var}}` convention, e.g. ported from the * other bindings' demos) can run them through the same conversion before * handing them to `createI18n`; passing a raw `{{var}}` message crashes * vue-i18n at first render of that message. * * A bare `@` is the other hazard: vue-i18n reads it as the start of a linked * message (`@:key`) and throws "Invalid linked format" at first render, so a * literal one (the comment mention hint, "Type @ to mention someone") is * emitted as the `{'@'}` literal-interpolation escape. */ export declare function toVueI18nSyntax(messages: Record): Record; /** * Every key in the English dictionary. A new locale dictionary typed as * `Record` gets a compile error for any key it's * missing or misspells, so translation contributions stay complete without a * separate parity test. */ export declare type TranslationKey = keyof typeof translationsEn_2; export declare const translationsEn: Record; /** * The canonical English UI-string dictionary for pptx-viewer. None of the * React/Vue/Angular binding packages ship translations themselves - each * only calls its framework's translation function (react-i18next's `t()`, * vue-i18n's `t()`, ngx-translate's `TranslateService`/`translate` pipe) * against dotted `pptx.*` keys. The host app supplies the dictionary; this * module is that dictionary for the demos, shared so all three stay in sync * instead of drifting into three separate copies. */ declare const translationsEn_2: Record; export { }