update: use Localization
This commit is contained in:
parent
4d0b0a457d
commit
a254ff8bc3
@ -11,7 +11,6 @@ class Addon {
|
|||||||
ztoolkit: ZoteroToolkit;
|
ztoolkit: ZoteroToolkit;
|
||||||
locale?: {
|
locale?: {
|
||||||
current: any;
|
current: any;
|
||||||
default: any;
|
|
||||||
};
|
};
|
||||||
prefs?: {
|
prefs?: {
|
||||||
window: Window;
|
window: Window;
|
||||||
|
@ -4,18 +4,12 @@ import { config } from "../../package.json";
|
|||||||
* Initialize locale data
|
* Initialize locale data
|
||||||
*/
|
*/
|
||||||
export function initLocale() {
|
export function initLocale() {
|
||||||
const l10n = ztoolkit.getGlobal("L10nRegistry").getInstance();
|
const l10n = new (ztoolkit.getGlobal("Localization"))(
|
||||||
const bundleGenerator = l10n.generateBundlesSync(
|
[`${config.addonRef}-addon.ftl`],
|
||||||
[Zotero.locale, "en-US"],
|
true
|
||||||
[`${config.addonRef}-addon.ftl`]
|
|
||||||
);
|
);
|
||||||
const currentBundle = bundleGenerator.next().value;
|
|
||||||
// No default when in en-US
|
|
||||||
const defaultBundle =
|
|
||||||
Zotero.locale !== "en-US" ? bundleGenerator.next().value : null;
|
|
||||||
addon.data.locale = {
|
addon.data.locale = {
|
||||||
current: currentBundle,
|
current: l10n,
|
||||||
default: defaultBundle,
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,24 +29,15 @@ export function initLocale() {
|
|||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
export function getString(localString: string, branch = ""): string {
|
export function getString(localString: string, branch = ""): string {
|
||||||
return (
|
const pattern = addon.data.locale?.current.formatMessagesSync([
|
||||||
getStringFromBundle(addon.data.locale?.current, localString, branch) ||
|
{ id: localString },
|
||||||
getStringFromBundle(addon.data.locale?.default, localString, branch) ||
|
])[0];
|
||||||
localString
|
if (!pattern) {
|
||||||
);
|
return localString;
|
||||||
}
|
}
|
||||||
|
if (branch && pattern.attributes) {
|
||||||
function getStringFromBundle(bundle: any, localString: string, branch = "") {
|
return pattern.attributes[branch] || localString;
|
||||||
if (!bundle) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
const patterns = bundle.getMessage(localString);
|
|
||||||
if (!patterns) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
if (branch) {
|
|
||||||
return bundle.formatPattern(patterns.attributes[branch]);
|
|
||||||
} else {
|
} else {
|
||||||
return bundle.formatPattern(patterns.value);
|
return pattern.value || localString;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user