mirror of
https://github.com/codex-team/editor.js
synced 2024-05-27 02:52:35 +02:00
56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
|
import Module from '../../__module';
|
||
|
import { I18n } from '../../../../types/api';
|
||
|
import I18nInternal from '../../i18n';
|
||
|
import { ToolType } from '../tools';
|
||
|
import { logLabeled } from '../../utils';
|
||
|
|
||
|
/**
|
||
|
* Provides methods for working with i18n
|
||
|
*/
|
||
|
export default class I18nAPI extends Module {
|
||
|
/**
|
||
|
* Return namespace section for tool or block tune
|
||
|
*
|
||
|
* @param toolName - name of tool. Used to provide dictionary only for this tool
|
||
|
* @param toolType - 'block' for Block Tool, 'inline' for Inline Tool, 'tune' for Block Tunes
|
||
|
*/
|
||
|
private static getNamespace(toolName: string, toolType: ToolType): string {
|
||
|
switch (toolType) {
|
||
|
case ToolType.Block:
|
||
|
case ToolType.Inline:
|
||
|
return `tools.${toolName}`;
|
||
|
case ToolType.Tune:
|
||
|
return `blockTunes.${toolName}`;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return I18n API methods with global dictionary access
|
||
|
*/
|
||
|
public get methods(): I18n {
|
||
|
return {
|
||
|
t: (): string | undefined => {
|
||
|
logLabeled('I18n.t() method can be accessed only from Tools', 'warn');
|
||
|
|
||
|
return undefined;
|
||
|
},
|
||
|
};
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return I18n API methods with tool namespaced dictionary
|
||
|
*
|
||
|
* @param toolName - name of tool. Used to provide dictionary only for this tool
|
||
|
* @param toolType - 'block' for Block Tool, 'inline' for Inline Tool, 'tune' for Block Tunes
|
||
|
*/
|
||
|
public getMethodsForTool(toolName: string, toolType: ToolType): I18n {
|
||
|
return Object.assign(
|
||
|
this.methods,
|
||
|
{
|
||
|
t: (dictKey: string): string => {
|
||
|
return I18nInternal.t(I18nAPI.getNamespace(toolName, toolType), dictKey);
|
||
|
},
|
||
|
});
|
||
|
}
|
||
|
}
|