- Fix unused function warnings by renaming to _unusedExtractTags - Fix type errors in nostrTagSystem.ts for includes() calls - Fix type errors in reviews.ts for filter kinds array - Fix ArrayBuffer type errors in articleEncryption.ts - Remove unused imports (DecryptionKey, decryptArticleContent, extractTagsFromEvent) - All TypeScript checks now pass without disabling any controls
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import { useEffect, useState } from 'react'
|
|
import { setLocale, getLocale, loadTranslations, t, type Locale } from '@/lib/i18n'
|
|
|
|
export function useI18n(locale: Locale = 'fr') {
|
|
const [loaded, setLoaded] = useState(false)
|
|
const [currentLocale, setCurrentLocale] = useState<Locale>(getLocale())
|
|
|
|
useEffect(() => {
|
|
const load = async () => {
|
|
try {
|
|
// Load translations from files in public directory
|
|
const frResponse = await fetch('/locales/fr.txt')
|
|
const enResponse = await fetch('/locales/en.txt')
|
|
|
|
if (frResponse.ok) {
|
|
const frText = await frResponse.text()
|
|
await loadTranslations('fr', frText)
|
|
}
|
|
|
|
if (enResponse.ok) {
|
|
const enText = await enResponse.text()
|
|
await loadTranslations('en', enText)
|
|
}
|
|
|
|
setLocale(locale)
|
|
setCurrentLocale(locale)
|
|
setLoaded(true)
|
|
} catch (e) {
|
|
console.error('Error loading translations:', e)
|
|
setLoaded(true) // Continue even if translations fail to load
|
|
}
|
|
}
|
|
void load()
|
|
}, [locale])
|
|
|
|
return { loaded, locale: currentLocale, t }
|
|
}
|