Remove the IL10n interface

Given that we either use the `L10n` class directly or extend it via `GenericL10n`, it should no longer be necessary to keep the interface-definition.
This should help reduce the maintenance burden of the code, since you no longer need to remember to update separate code when touching the `L10n` class.
This commit is contained in:
Jonas Jenwald 2026-01-30 15:51:04 +01:00
parent b517b5c597
commit 50a12e3e67
11 changed files with 9 additions and 69 deletions

View File

@ -18,7 +18,6 @@
/** @typedef {import("../display_utils.js").PageViewport} PageViewport */ /** @typedef {import("../display_utils.js").PageViewport} PageViewport */
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
/** @typedef {import("../../../web/text_accessibility.js").TextAccessibilityManager} TextAccessibilityManager */ /** @typedef {import("../../../web/text_accessibility.js").TextAccessibilityManager} TextAccessibilityManager */
/** @typedef {import("../../../web/interfaces").IL10n} IL10n */
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
/** @typedef {import("../annotation_layer.js").AnnotationLayer} AnnotationLayer */ /** @typedef {import("../annotation_layer.js").AnnotationLayer} AnnotationLayer */
/** @typedef {import("../draw_layer.js").DrawLayer} DrawLayer */ /** @typedef {import("../draw_layer.js").DrawLayer} DrawLayer */
@ -47,7 +46,7 @@ import { StampEditor } from "./stamp.js";
* @property {boolean} enabled * @property {boolean} enabled
* @property {TextAccessibilityManager} [accessibilityManager] * @property {TextAccessibilityManager} [accessibilityManager]
* @property {number} pageIndex * @property {number} pageIndex
* @property {IL10n} l10n * @property {L10n} l10n
* @property {AnnotationLayer} [annotationLayer] * @property {AnnotationLayer} [annotationLayer]
* @property {HTMLDivElement} [textLayer] * @property {HTMLDivElement} [textLayer]
* @property {DrawLayer} drawLayer * @property {DrawLayer} drawLayer

View File

@ -20,7 +20,6 @@
/** @typedef {import("../src/display/editor/tools.js").AnnotationEditorUIManager} AnnotationEditorUIManager */ /** @typedef {import("../src/display/editor/tools.js").AnnotationEditorUIManager} AnnotationEditorUIManager */
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
/** @typedef {import("./text_accessibility.js").TextAccessibilityManager} TextAccessibilityManager */ /** @typedef {import("./text_accessibility.js").TextAccessibilityManager} TextAccessibilityManager */
/** @typedef {import("./interfaces").IL10n} IL10n */
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
/** @typedef {import("../src/display/annotation_layer.js").AnnotationLayer} AnnotationLayer */ /** @typedef {import("../src/display/annotation_layer.js").AnnotationLayer} AnnotationLayer */
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
@ -33,7 +32,7 @@ import { GenericL10n } from "web-null_l10n";
* @typedef {Object} AnnotationEditorLayerBuilderOptions * @typedef {Object} AnnotationEditorLayerBuilderOptions
* @property {AnnotationEditorUIManager} [uiManager] * @property {AnnotationEditorUIManager} [uiManager]
* @property {PDFPageProxy} pdfPage * @property {PDFPageProxy} pdfPage
* @property {IL10n} [l10n] * @property {L10n} [l10n]
* @property {StructTreeLayerBuilder} [structTreeLayer] * @property {StructTreeLayerBuilder} [structTreeLayer]
* @property {TextAccessibilityManager} [accessibilityManager] * @property {TextAccessibilityManager} [accessibilityManager]
* @property {AnnotationLayer} [annotationLayer] * @property {AnnotationLayer} [annotationLayer]

View File

@ -13,7 +13,6 @@
* limitations under the License. * limitations under the License.
*/ */
/** @typedef {import("./interfaces.js").IL10n} IL10n */
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
/** @typedef {import("../src/display/api.js").PDFDocumentProxy} PDFDocumentProxy */ /** @typedef {import("../src/display/api.js").PDFDocumentProxy} PDFDocumentProxy */
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
@ -160,7 +159,7 @@ const PDFViewerApplication = {
secondaryToolbar: null, secondaryToolbar: null,
/** @type {EventBus} */ /** @type {EventBus} */
eventBus: null, eventBus: null,
/** @type {IL10n} */ /** @type {L10n} */
l10n: null, l10n: null,
/** @type {AnnotationEditorParams} */ /** @type {AnnotationEditorParams} */
annotationEditorParams: null, annotationEditorParams: null,

View File

@ -13,8 +13,6 @@
* limitations under the License. * limitations under the License.
*/ */
/** @typedef {import("./interfaces.js").IL10n} IL10n */
class BaseExternalServices { class BaseExternalServices {
constructor() { constructor() {
if ( if (
@ -36,7 +34,7 @@ class BaseExternalServices {
reportText(data) {} reportText(data) {}
/** /**
* @returns {Promise<IL10n>} * @returns {Promise<L10n>}
*/ */
async createL10n() { async createL10n() {
throw new Error("Not implemented: createL10n"); throw new Error("Not implemented: createL10n");

View File

@ -13,8 +13,6 @@
* limitations under the License. * limitations under the License.
*/ */
/** @typedef {import("./interfaces").IL10n} IL10n */
import { FeatureTest, fetchData } from "pdfjs-lib"; import { FeatureTest, fetchData } from "pdfjs-lib";
import { FluentBundle, FluentResource } from "fluent-bundle"; import { FluentBundle, FluentResource } from "fluent-bundle";
import { DOMLocalization } from "fluent-dom"; import { DOMLocalization } from "fluent-dom";
@ -49,9 +47,6 @@ function createBundle(lang, text) {
return bundle; return bundle;
} }
/**
* @implements {IL10n}
*/
class GenericL10n extends L10n { class GenericL10n extends L10n {
constructor(lang) { constructor(lang) {
super({ lang }); super({ lang });

View File

@ -71,49 +71,6 @@ class IDownloadManager {
download(data, url, filename) {} download(data, url, filename) {}
} }
/**
* @interface
*/
class IL10n {
/**
* @returns {string} - The current locale.
*/
getLanguage() {}
/**
* @returns {string} - 'rtl' or 'ltr'.
*/
getDirection() {}
/**
* Translates text identified by the key and adds/formats data using the args
* property bag. If the key was not found, translation falls back to the
* fallback text.
* @param {Array | string} ids
* @param {Object | null} [args]
* @param {string} [fallback]
* @returns {Promise<string>}
*/
async get(ids, args = null, fallback) {}
/**
* Translates HTML element.
* @param {HTMLElement} element
* @returns {Promise<void>}
*/
async translate(element) {}
/**
* Pause the localization.
*/
pause() {}
/**
* Resume the localization.
*/
resume() {}
}
/** /**
* @interface * @interface
*/ */
@ -129,4 +86,4 @@ class IPDFPrintServiceFactory {
} }
} }
export { IDownloadManager, IL10n, IPDFPrintServiceFactory, IRenderableView }; export { IDownloadManager, IPDFPrintServiceFactory, IRenderableView };

View File

@ -13,12 +13,9 @@
* limitations under the License. * limitations under the License.
*/ */
/** @typedef {import("./interfaces").IL10n} IL10n */
/** /**
* NOTE: The L10n-implementations should use lowercase language-codes * NOTE: The L10n-implementations should use lowercase language-codes
* internally. * internally.
* @implements {IL10n}
*/ */
class L10n { class L10n {
#dir; #dir;

View File

@ -14,7 +14,6 @@
*/ */
/** @typedef {import("./event_utils.js").EventBus} EventBus */ /** @typedef {import("./event_utils.js").EventBus} EventBus */
/** @typedef {import("./interfaces.js").IL10n} IL10n */
/** @typedef {import("./overlay_manager.js").OverlayManager} OverlayManager */ /** @typedef {import("./overlay_manager.js").OverlayManager} OverlayManager */
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
/** @typedef {import("../src/display/api.js").PDFDocumentProxy} PDFDocumentProxy */ /** @typedef {import("../src/display/api.js").PDFDocumentProxy} PDFDocumentProxy */
@ -58,7 +57,7 @@ class PDFDocumentProperties {
* @param {PDFDocumentPropertiesOptions} options * @param {PDFDocumentPropertiesOptions} options
* @param {OverlayManager} overlayManager - Manager for the viewer overlays. * @param {OverlayManager} overlayManager - Manager for the viewer overlays.
* @param {EventBus} eventBus - The application event bus. * @param {EventBus} eventBus - The application event bus.
* @param {IL10n} l10n - Localization service. * @param {L10n} l10n - Localization service.
* @param {function} fileNameLookup - The function that is used to lookup * @param {function} fileNameLookup - The function that is used to lookup
* the document fileName. * the document fileName.
*/ */

View File

@ -18,7 +18,6 @@
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
/** @typedef {import("../src/display/optional_content_config").OptionalContentConfig} OptionalContentConfig */ /** @typedef {import("../src/display/optional_content_config").OptionalContentConfig} OptionalContentConfig */
/** @typedef {import("./event_utils").EventBus} EventBus */ /** @typedef {import("./event_utils").EventBus} EventBus */
/** @typedef {import("./interfaces").IL10n} IL10n */
/** @typedef {import("./interfaces").IRenderableView} IRenderableView */ /** @typedef {import("./interfaces").IRenderableView} IRenderableView */
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
/** @typedef {import("./pdf_rendering_queue").PDFRenderingQueue} PDFRenderingQueue */ /** @typedef {import("./pdf_rendering_queue").PDFRenderingQueue} PDFRenderingQueue */
@ -98,7 +97,7 @@ import { XfaLayerBuilder } from "./xfa_layer_builder.js";
* @property {Object} [pageColors] - Overwrites background and foreground colors * @property {Object} [pageColors] - Overwrites background and foreground colors
* with user defined ones in order to improve readability in high contrast * with user defined ones in order to improve readability in high contrast
* mode. * mode.
* @property {IL10n} [l10n] - Localization service. * @property {L10n} [l10n] - Localization service.
* @property {Object} [layerProperties] - The object that is used to lookup * @property {Object} [layerProperties] - The object that is used to lookup
* the necessary layer-properties. * the necessary layer-properties.
* @property {boolean} [enableAutoLinking] - Enable creation of hyperlinks from * @property {boolean} [enableAutoLinking] - Enable creation of hyperlinks from

View File

@ -21,7 +21,6 @@
/** @typedef {import("../src/display/optional_content_config").OptionalContentConfig} OptionalContentConfig */ /** @typedef {import("../src/display/optional_content_config").OptionalContentConfig} OptionalContentConfig */
/** @typedef {import("./event_utils").EventBus} EventBus */ /** @typedef {import("./event_utils").EventBus} EventBus */
/** @typedef {import("./interfaces").IDownloadManager} IDownloadManager */ /** @typedef {import("./interfaces").IDownloadManager} IDownloadManager */
/** @typedef {import("./interfaces").IL10n} IL10n */
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
/** @typedef {import("./pdf_find_controller").PDFFindController} PDFFindController */ /** @typedef {import("./pdf_find_controller").PDFFindController} PDFFindController */
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
@ -134,7 +133,7 @@ function isValidAnnotationEditorMode(mode) {
* rendering will keep track of which areas of the page each PDF operation * rendering will keep track of which areas of the page each PDF operation
* affects. Then, when rendering a partial page (if `enableDetailCanvas` is * affects. Then, when rendering a partial page (if `enableDetailCanvas` is
* enabled), it will only run through the operations that affect that portion. * enabled), it will only run through the operations that affect that portion.
* @property {IL10n} [l10n] - Localization service. * @property {L10n} [l10n] - Localization service.
* @property {boolean} [enablePermissions] - Enables PDF document permissions, * @property {boolean} [enablePermissions] - Enables PDF document permissions,
* when they exist. The default value is `false`. * when they exist. The default value is `false`.
* @property {Object} [pageColors] - Overwrites background and foreground colors * @property {Object} [pageColors] - Overwrites background and foreground colors

View File

@ -14,7 +14,6 @@
*/ */
/** @typedef {import("./event_utils.js").EventBus} EventBus */ /** @typedef {import("./event_utils.js").EventBus} EventBus */
/** @typedef {import("./interfaces.js").IL10n} IL10n */
import { import {
docStyle, docStyle,
@ -34,7 +33,7 @@ const UI_NOTIFICATION_CLASS = "pdfSidebarNotification";
* @typedef {Object} PDFSidebarOptions * @typedef {Object} PDFSidebarOptions
* @property {PDFSidebarElements} elements - The DOM elements. * @property {PDFSidebarElements} elements - The DOM elements.
* @property {EventBus} eventBus - The application event bus. * @property {EventBus} eventBus - The application event bus.
* @property {IL10n} l10n - The localization service. * @property {L10n} l10n - The localization service.
*/ */
/** /**