@gftdcojp/gftd-orm
Version:
Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture
123 lines • 3.88 kB
TypeScript
/**
* 翻訳機能用Reactフック
*/
import { TranslatorClient, TranslationItem, TranslationStats, TranslationProject, TranslationComponent, TranslationLanguage } from '../translator-client';
import { UserPayload } from '../types';
/**
* 翻訳フック設定
*/
interface UseTranslatorOptions {
/** 言語を指定 */
language?: string;
/** 名前空間を指定 */
namespace?: string;
/** テナント固有の翻訳を使用 */
tenantSpecific?: boolean;
/** 自動更新を有効化 */
autoRefresh?: boolean;
/** 自動更新間隔(ミリ秒) */
refreshInterval?: number;
/** フォールバック言語 */
fallbackLanguage?: string;
/** 現在のユーザー情報 */
user?: UserPayload;
/** ORM設定 */
ormConfig?: any;
}
/**
* 翻訳機能フック
*/
export declare function useTranslator(options?: UseTranslatorOptions): {
t: (key: string, params?: Record<string, any>, options?: {
namespace?: string;
fallback?: string;
interpolation?: boolean;
}) => string;
updateTranslation: (key: string, value: string, options?: {
language?: string;
state?: string;
}) => Promise<TranslationItem>;
searchTranslations: (query: string, options?: {
language?: string;
limit?: number;
}) => Promise<{
results: TranslationItem[];
count: number;
}>;
currentLanguage: string;
changeLanguage: (lang: string) => Promise<void>;
supportedLanguages: string[];
translations: TranslationItem[];
pendingTranslations: TranslationItem[];
stats: TranslationStats | null;
progress: number;
untranslatedCount: number;
loading: boolean;
error: string | null;
initialized: boolean;
canEdit: boolean;
canManage: boolean;
refresh: (lang?: string) => Promise<void>;
refreshStats: (lang?: string) => Promise<void>;
client: TranslatorClient | null;
debugInfo: {
initialized: boolean;
translatorClient: boolean;
currentLanguage: string;
translationsCount: number;
stats: TranslationStats | null;
supportedLanguages: string[];
canEdit: boolean;
canManage: boolean;
loading: boolean;
error: string | null;
};
};
/**
* 翻訳管理用フック(管理者向け)
*/
export declare function useTranslatorAdmin(): {
projects: TranslationProject[];
components: TranslationComponent[];
languages: TranslationLanguage[];
loading: boolean;
error: string | null;
canManage: boolean;
fetchProjects: () => Promise<void>;
fetchComponents: (projectSlug?: string) => Promise<void>;
fetchLanguages: (projectSlug?: string) => Promise<void>;
createProject: (project: any) => Promise<TranslationProject>;
createComponent: (projectSlug: string, component: any) => Promise<TranslationComponent>;
initializeTenantProject: (tenantId: string) => Promise<TranslationProject>;
client: TranslatorClient | null;
};
/**
* 翻訳統計用フック
*/
export declare function useTranslationStats(language?: string): {
stats: TranslationStats | null;
progressInfo: {
total: number;
translated: number;
approved: number;
fuzzy: number;
pending: number;
translatedPercent: number;
approvedPercent: number;
fuzzyPercent: number;
pendingPercent: number;
wordsTotal: number;
wordsTranslated: number;
wordsApproved: number;
wordsTranslatedPercent: number;
wordsApprovedPercent: number;
lastChange: string | undefined;
lastAuthor: string | undefined;
} | null;
loading: boolean;
error: string | null;
refresh: () => Promise<void>;
language: string;
};
export {};
//# sourceMappingURL=useTranslator.d.ts.map