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