import { ReactNode } from 'react'; export type Language = 'zh' | 'en' | 'ru' | 'ar'; export interface Translations { 'toolbar.hand': string; 'toolbar.selection': string; 'toolbar.mind': string; 'toolbar.text': string; 'toolbar.arrow': string; 'toolbar.shape': string; 'toolbar.image': string; 'toolbar.extraTools': string; 'toolbar.pen': string; 'toolbar.eraser': string; 'toolbar.arrow.straight': string; 'toolbar.arrow.elbow': string; 'toolbar.arrow.curve': string; 'toolbar.shape.rectangle': string; 'toolbar.shape.ellipse': string; 'toolbar.shape.triangle': string; 'toolbar.shape.terminal': string; 'toolbar.shape.diamond': string; 'toolbar.shape.parallelogram': string; 'toolbar.shape.roundRectangle': string; 'zoom.in': string; 'zoom.out': string; 'zoom.fit': string; 'zoom.100': string; 'theme.default': string; 'theme.colorful': string; 'theme.soft': string; 'theme.retro': string; 'theme.dark': string; 'theme.starry': string; 'color.none': string; 'color.unknown': string; 'color.default': string; 'color.white': string; 'color.gray': string; 'color.deepBlue': string; 'color.red': string; 'color.green': string; 'color.yellow': string; 'color.purple': string; 'color.orange': string; 'color.pastelPink': string; 'color.cyan': string; 'color.brown': string; 'color.forestGreen': string; 'color.lightGray': string; 'general.undo': string; 'general.redo': string; 'general.menu': string; 'general.duplicate': string; 'general.delete': string; 'language.switcher': string; 'language.chinese': string; 'language.english': string; 'language.russian': string; 'language.arabic': string; 'menu.open': string; 'menu.saveFile': string; 'menu.exportImage': string; 'menu.exportImage.png': string; 'menu.exportImage.jpg': string; 'menu.cleanBoard': string; 'menu.github': string; 'dialog.mermaid.title': string; 'dialog.mermaid.description': string; 'dialog.mermaid.flowchart': string; 'dialog.mermaid.sequence': string; 'dialog.mermaid.class': string; 'dialog.mermaid.otherTypes': string; 'dialog.mermaid.syntax': string; 'dialog.mermaid.placeholder': string; 'dialog.mermaid.preview': string; 'dialog.mermaid.insert': string; 'dialog.markdown.description': string; 'dialog.markdown.syntax': string; 'dialog.markdown.placeholder': string; 'dialog.markdown.preview': string; 'dialog.markdown.insert': string; 'dialog.error.loadMermaid': string; 'extraTools.mermaidToDrawnix': string; 'extraTools.markdownToDrawnix': string; 'cleanConfirm.title': string; 'cleanConfirm.description': string; 'cleanConfirm.cancel': string; 'cleanConfirm.ok': string; 'popupLink.delLink': string; 'popupToolbar.fillColor': string; 'popupToolbar.fontColor': string; 'popupToolbar.link': string; 'popupToolbar.stroke': string; 'textPlaceholders.link': string; 'textPlaceholders.text': string; 'line.source': string; 'line.target': string; 'line.arrow': string; 'line.none': string; 'stroke.solid': string; 'stroke.dashed': string; 'stroke.dotted': string; 'markdown.example': string; 'draw.lineText': string; 'draw.geometryText': string; 'mind.centralText': string; 'mind.abstractNodeText': string; 'tutorial.title': string; 'tutorial.description': string; 'tutorial.dataDescription': string; 'tutorial.appToolbar': string; 'tutorial.creationToolbar': string; 'tutorial.themeDescription': string; } export interface I18nContextType { language: Language; setLanguage: (language: Language) => void; t: (key: keyof Translations) => string; } export interface I18nProviderProps { children: ReactNode; defaultLanguage?: Language; }