PageSourceSearch

https://ecma-international.org/wp-includes/js/dist/i18n.js?ver=1dfe7db3940c23ea9216

js ecma-international.org collected 2026-09-24 07:15:37 UTC 15,725 bytes, 560 lines download raw bytes

vendor: 1,853 bytes, lines 1-43
1(function() {
2"use strict";
3var wp;
4(wp ||= {}).i18n = (() => {
5  var __create = Object.create;
6  var __defProp = Object.defineProperty;
7  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8  var __getOwnPropNames = Object.getOwnPropertyNames;
9  var __getProtoOf = Object.getPrototypeOf;
10  var __hasOwnProp = Object.prototype.hasOwnProperty;
11  var __commonJS = (cb, mod) => function __require() {
12    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
13  };
14  var __export = (target, all) => {
15    for (var name in all)
16      __defProp(target, name, { get: all[name], enumerable: true });
17  };
18  var __copyProps = (to, from, except, desc) => {
19    if (from && typeof from === "object" || typeof from === "function") {
20      for (let key of __getOwnPropNames(from))
21        if (!__hasOwnProp.call(to, key) && key !== except)
22          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23    }
24    return to;
25  };
26  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
27    // If the importer is in node compatibility mode or this is not an ESM
28    // file that has been converted to a CommonJS file using a Babel-
29    // compatible transform (i.e. "__esModule" has not been set), then set
30    // "default" to the CommonJS "module.exports" for node compatibility.
31    isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
32    mod
33  ));
34  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
35
36  // package-external:@wordpress/hooks
37  var require_hooks = __commonJS({
38    "package-external:@wordpress/hooks"(exports, module) {
39      module.exports = window.wp.hooks;
40    }
41  });
42
43  
43// packages/i18n/build-module/index.mjs
44  var index_exports = {};
45  __export(index_exports, {
46    __: () => __,
47    _n: () => _n,
48    _nx: () => _nx,
49    _x: () => _x,
50    createI18n: () => createI18n,
51    defaultI18n: () => default_i18n_default,
52    getLocaleData: () => getLocaleData,
53    hasTranslation: () => hasTranslation,
54    isRTL: () => isRTL,
55    resetLocaleData: () => resetLocaleData,
56    setLocaleData: () => setLocaleData,
57    sprintf: () => sprintf2,
58    subscribe: () => subscribe
59  });
60
61  
vendor: 1,407 bytes, lines 61-108
61// node_modules/@tannin/sprintf/src/index.js
62  var PATTERN = /%(((\d+)\$)|(\(([$_a-zA-Z][$_a-zA-Z0-9]*)\)))?[ +0#-]*\d*(\.(\d+|\*))?(ll|[lhqL])?([cduxXefgsp%])/g;
63  function sprintf(string, ...args) {
64    var i = 0;
65    if (Array.isArray(args[0])) {
66      args = /** @type {import('../types').SprintfArgs<T>[]} */
67      /** @type {unknown} */
68      args[0];
69    }
70    return string.replace(PATTERN, function() {
71      var index, name, precision, type, value;
72      index = arguments[3];
73      name = arguments[5];
74      precision = arguments[7];
75      type = arguments[9];
76      if (type === "%") {
77        return "%";
78      }
79      if (precision === "*") {
80        precision = args[i];
81        i++;
82      }
83      if (name === void 0) {
84        if (index === void 0) {
85          index = i + 1;
86        }
87        i++;
88        value = args[index - 1];
89      } else if (args[0] && typeof args[0] === "object" && args[0].hasOwnProperty(name)) {
90        value = args[0][name];
91      }
92      if (type === "f") {
93        value = parseFloat(value) || 0;
94      } else if (type === "d") {
95        value = parseInt(value) || 0;
96      }
97      if (precision !== void 0) {
98        if (type === "f") {
99          value = value.toFixed(precision);
100        } else if (type === "s") {
101          value = value.substr(0, precision);
102        }
103      }
104      return value !== void 0 && value !== null ? value : "";
105    });
106  }
107
108  
108// packages/i18n/build-module/sprintf.mjs
109  function sprintf2(format, ...args) {
110    return sprintf(format, ...args);
111  }
112
113  
vendor: 1,481 bytes, lines 113-175
113// node_modules/@tannin/postfix/index.js
114  var PRECEDENCE;
115  var OPENERS;
116  var TERMINATORS;
117  var PATTERN2;
118  PRECEDENCE = {
119    "(": 9,
120    "!": 8,
121    "*": 7,
122    "/": 7,
123    "%": 7,
124    "+": 6,
125    "-": 6,
126    "<": 5,
127    "<=": 5,
128    ">": 5,
129    ">=": 5,
130    "==": 4,
131    "!=": 4,
132    "&&": 3,
133    "||": 2,
134    "?": 1,
135    "?:": 1
136  };
137  OPENERS = ["(", "?"];
138  TERMINATORS = {
139    ")": ["("],
140    ":": ["?", "?:"]
141  };
142  PATTERN2 = /<=|>=|==|!=|&&|\|\||\?:|\(|!|\*|\/|%|\+|-|<|>|\?|\)|:/;
143  function postfix(expression) {
144    var terms = [], stack = [], match, operator, term, element;
145    while (match = expression.match(PATTERN2)) {
146      operator = match[0];
147      term = expression.substr(0, match.index).trim();
148      if (term) {
149        terms.push(term);
150      }
151      while (element = stack.pop()) {
152        if (TERMINATORS[operator]) {
153          if (TERMINATORS[operator][0] === element) {
154            operator = TERMINATORS[operator][1] || operator;
155            break;
156          }
157        } else if (OPENERS.indexOf(element) >= 0 || PRECEDENCE[element] < PRECEDENCE[operator]) {
158          stack.push(element);
159          break;
160        }
161        terms.push(element);
162      }
163      if (!TERMINATORS[operator]) {
164        stack.push(operator);
165      }
166      expression = expression.substr(match.index + operator.length);
167    }
168    expression = expression.trim();
169    if (expression) {
170      terms.push(expression);
171    }
172    return terms.concat(stack.reverse());
173  }
174
175  
vendor: 1,618 bytes, lines 175-252
175// node_modules/@tannin/evaluate/index.js
176  var OPERATORS = {
177    "!": function(a) {
178      return !a;
179    },
180    "*": function(a, b) {
181      return a * b;
182    },
183    "/": function(a, b) {
184      return a / b;
185    },
186    "%": function(a, b) {
187      return a % b;
188    },
189    "+": function(a, b) {
190      return a + b;
191    },
192    "-": function(a, b) {
193      return a - b;
194    },
195    "<": function(a, b) {
196      return a < b;
197    },
198    "<=": function(a, b) {
199      return a <= b;
200    },
201    ">": function(a, b) {
202      return a > b;
203    },
204    ">=": function(a, b) {
205      return a >= b;
206    },
207    "==": function(a, b) {
208      return a === b;
209    },
210    "!=": function(a, b) {
211      return a !== b;
212    },
213    "&&": function(a, b) {
214      return a && b;
215    },
216    "||": function(a, b) {
217      return a || b;
218    },
219    "?:": function(a, b, c) {
220      if (a) {
221        throw b;
222      }
223      return c;
224    }
225  };
226  function evaluate(postfix2, variables) {
227    var stack = [], i, j, args, getOperatorResult, term, value;
228    for (i = 0; i < postfix2.length; i++) {
229      term = postfix2[i];
230      getOperatorResult = OPERATORS[term];
231      if (getOperatorResult) {
232        j = getOperatorResult.length;
233        args = Array(j);
234        while (j--) {
235          args[j] = stack.pop();
236        }
237        try {
238          value = getOperatorResult.apply(null, args);
239        } catch (earlyReturn) {
240          return earlyReturn;
241        }
242      } else if (variables.hasOwnProperty(term)) {
243        value = variables[term];
244      } else {
245        value = +term;
246      }
247      stack.push(value);
248    }
249    return stack[0];
250  }
251
252  
vendor: 199 bytes, lines 252-260
252// node_modules/@tannin/compile/index.js
253  function compile(expression) {
254    var terms = postfix(expression);
255    return function(variables) {
256      return evaluate(terms, variables);
257    };
258  }
259
260  
vendor: 195 bytes, lines 260-268
260// node_modules/@tannin/plural-forms/index.js
261  function pluralForms(expression) {
262    var evaluate2 = compile(expression);
263    return function(n) {
264      return +evaluate2({ n });
265    };
266  }
267
268  
vendor: 2,105 bytes, lines 268-334
268// node_modules/tannin/index.js
269  var DEFAULT_OPTIONS = {
270    contextDelimiter: "�",
271    onMissingKey: null
272  };
273  function getPluralExpression(pf) {
274    var parts, i, part;
275    parts = pf.split(";");
276    for (i = 0; i < parts.length; i++) {
277      part = parts[i].trim();
278      if (part.indexOf("plural=") === 0) {
279        return part.substr(7);
280      }
281    }
282  }
283  function Tannin(data, options) {
284    var key;
285    this.data = data;
286    this.pluralForms = {};
287    this.options = {};
288    for (key in DEFAULT_OPTIONS) {
289      this.options[key] = options !== void 0 && key in options ? options[key] : DEFAULT_OPTIONS[key];
290    }
291  }
292  Tannin.prototype.getPluralForm = function(domain, n) {
293    var getPluralForm = this.pluralForms[domain], config, plural, pf;
294    if (!getPluralForm) {
295      config = this.data[domain][""];
296      pf = config["Plural-Forms"] || config["plural-forms"] || // Ignore reason: As known, there's no way to document the empty
297      // string property on a key to guarantee this as metadata.
298      // @ts-ignore
299      config.plural_forms;
300      if (typeof pf !== "function") {
301        plural = getPluralExpression(
302          config["Plural-Forms"] || config["plural-forms"] || // Ignore reason: As known, there's no way to document the empty
303          // string property on a key to guarantee this as metadata.
304          // @ts-ignore
305          config.plural_forms
306        );
307        pf = pluralForms(plural);
308      }
309      getPluralForm = this.pluralForms[domain] = pf;
310    }
311    return getPluralForm(n);
312  };
313  Tannin.prototype.dcnpgettext = function(domain, context, singular, plural, n) {
314    var index, key, entry;
315    if (n === void 0) {
316      index = 0;
317    } else {
318      index = this.getPluralForm(domain, n);
319    }
320    key = singular;
321    if (context) {
322      key = context + this.options.contextDelimiter + singular;
323    }
324    entry = this.data[domain][key];
325    if (entry && entry[index]) {
326      return entry[index];
327    }
328    if (this.options.onMissingKey) {
329      this.options.onMissingKey(singular, domain);
330    }
331    return index === 0 ? singular : plural;
332  };
333
334  
334// packages/i18n/build-module/create-i18n.mjs
335  var DEFAULT_LOCALE_DATA = {
336    "": {
337      plural_forms(n) {
338        return n === 1 ? 0 : 1;
339      }
340    }
341  };
342  var I18N_HOOK_REGEXP = /^i18n\.(n?gettext|has_translation)(_|$)/;
343  var createI18n = (initialData, initialDomain, hooks) => {
344    const tannin = new Tannin({});
345    const listeners = /* @__PURE__ */ new Set();
346    const notifyListeners = () => {
347      listeners.forEach((listener) => listener());
348    };
349    const subscribe2 = (callback) => {
350      listeners.add(callback);
351      return () => listeners.delete(callback);
352    };
353    const getLocaleData2 = (domain = "default") => tannin.data[domain];
354    const doSetLocaleData = (data, domain = "default") => {
355      tannin.data[domain] = {
356        ...tannin.data[domain],
357        ...data
358      };
359      tannin.data[domain][""] = {
360        ...DEFAULT_LOCALE_DATA[""],
361        ...tannin.data[domain]?.[""]
362      };
363      delete tannin.pluralForms[domain];
364    };
365    const setLocaleData2 = (data, domain) => {
366      doSetLocaleData(data, domain);
367      notifyListeners();
368    };
369    const addLocaleData = (data, domain = "default") => {
370      tannin.data[domain] = {
371        ...tannin.data[domain],
372        ...data,
373        // Populate default domain configuration (supported locale date which omits
374        // a plural forms expression).
375        "": {
376          ...DEFAULT_LOCALE_DATA[""],
377          ...tannin.data[domain]?.[""],
378          ...data?.[""]
379        }
380      };
381      delete tannin.pluralForms[domain];
382      notifyListeners();
383    };
384    const resetLocaleData2 = (data, domain) => {
385      tannin.data = {};
386      tannin.pluralForms = {};
387      setLocaleData2(data, domain);
388    };
389    const dcnpgettext = (domain = "default", context, single, plural, number) => {
390      if (!tannin.data[domain]) {
391        doSetLocaleData(void 0, domain);
392      }
393      return tannin.dcnpgettext(domain, context, single, plural, number);
394    };
395    const getFilterDomain = (domain) => domain || "default";
396    const __2 = (text, domain) => {
397      let translation = dcnpgettext(domain, void 0, text);
398      if (!hooks) {
399        return translation;
400      }
401      translation = hooks.applyFilters(
402        "i18n.gettext",
403        translation,
404        text,
405        domain
406      );
407      return hooks.applyFilters(
408        "i18n.gettext_" + getFilterDomain(domain),
409        translation,
410        text,
411        domain
412      );
413    };
414    const _x2 = (text, context, domain) => {
415      let translation = dcnpgettext(domain, context, text);
416      if (!hooks) {
417        return translation;
418      }
419      translation = hooks.applyFilters(
420        "i18n.gettext_with_context",
421        translation,
422        text,
423        context,
424        domain
425      );
426      return hooks.applyFilters(
427        "i18n.gettext_with_context_" + getFilterDomain(domain),
428        translation,
429        text,
430        context,
431        domain
432      );
433    };
434    const _n2 = (single, plural, number, domain) => {
435      let translation = dcnpgettext(
436        domain,
437        void 0,
438        single,
439        plural,
440        number
441      );
442      if (!hooks) {
443        return translation;
444      }
445      translation = hooks.applyFilters(
446        "i18n.ngettext",
447        translation,
448        single,
449        plural,
450        number,
451        domain
452      );
453      return hooks.applyFilters(
454        "i18n.ngettext_" + getFilterDomain(domain),
455        translation,
456        single,
457        plural,
458        number,
459        domain
460      );
461    };
462    const _nx2 = (single, plural, number, context, domain) => {
463      let translation = dcnpgettext(
464        domain,
465        context,
466        single,
467        plural,
468        number
469      );
470      if (!hooks) {
471        return translation;
472      }
473      translation = hooks.applyFilters(
474        "i18n.ngettext_with_context",
475        translation,
476        single,
477        plural,
478        number,
479        context,
480        domain
481      );
482      return hooks.applyFilters(
483        "i18n.ngettext_with_context_" + getFilterDomain(domain),
484        translation,
485        single,
486        plural,
487        number,
488        context,
489        domain
490      );
491    };
492    const isRTL2 = () => {
493      return "rtl" === _x2("ltr", "text direction");
494    };
495    const hasTranslation2 = (single, context, domain) => {
496      const key = context ? context + "�" + single : single;
497      let result = !!tannin.data?.[domain ?? "default"]?.[key];
498      if (hooks) {
499        result = hooks.applyFilters(
500          "i18n.has_translation",
501          result,
502          single,
503          context,
504          domain
505        );
506        result = hooks.applyFilters(
507          "i18n.has_translation_" + getFilterDomain(domain),
508          result,
509          single,
510          context,
511          domain
512        );
513      }
514      return result;
515    };
516    if (initialData) {
517      setLocaleData2(initialData, initialDomain);
518    }
519    if (hooks) {
520      const onHookAddedOrRemoved = (hookName) => {
521        if (I18N_HOOK_REGEXP.test(hookName)) {
522          notifyListeners();
523        }
524      };
525      hooks.addAction("hookAdded", "core/i18n", onHookAddedOrRemoved);
526      hooks.addAction("hookRemoved", "core/i18n", onHookAddedOrRemoved);
527    }
528    return {
529      getLocaleData: getLocaleData2,
530      setLocaleData: setLocaleData2,
531      addLocaleData,
532      resetLocaleData: resetLocaleData2,
533      subscribe: subscribe2,
534      __: __2,
535      _x: _x2,
536      _n: _n2,
537      _nx: _nx2,
538      isRTL: isRTL2,
539      hasTranslation: hasTranslation2
540    };
541  };
542
543  
543// packages/i18n/build-module/default-i18n.mjs
544  var import_hooks = __toESM(require_hooks(), 1);
545  var i18n = createI18n(void 0, void 0, import_hooks.defaultHooks);
546  var default_i18n_default = i18n;
547  var getLocaleData = i18n.getLocaleData.bind(i18n);
548  var setLocaleData = i18n.setLocaleData.bind(i18n);
549  var resetLocaleData = i18n.resetLocaleData.bind(i18n);
550  var subscribe = i18n.subscribe.bind(i18n);
551  var __ = i18n.__.bind(i18n);
552  var _x = i18n._x.bind(i18n);
553  var _n = i18n._n.bind(i18n);
554  var _nx = i18n._nx.bind(i18n);
555  var isRTL = i18n.isRTL.bind(i18n);
556  var hasTranslation = i18n.hasTranslation.bind(i18n);
557  return __toCommonJS(index_exports);
558})();
559(window.wp ||= {}).i18n = wp.i18n;
560})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.