Skip to content

Commit

Permalink
fix lang mapper
Browse files Browse the repository at this point in the history
Signed-off-by: Hoang Pham <hoangmaths96@gmail.com>
  • Loading branch information
hweihwang committed Oct 7, 2024
1 parent df8f441 commit 5cf3b9c
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 15 deletions.
2 changes: 0 additions & 2 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,6 @@ export default function App({

const lang = useExcalidrawLang()

console.log('lang', lang)

useEffect(() => {
const themeChangeListener = () =>
setTheme(isDarkMode() ? 'dark' : 'light')
Expand Down
29 changes: 16 additions & 13 deletions src/hooks/useExcalidrawLang.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,32 @@ import { useState, useEffect } from 'react'
import { getLanguage } from '@nextcloud/l10n'
import { languages } from '@excalidraw/excalidraw'

const languageMap = new Map(languages.map(lang => [lang.code.toLowerCase(), lang.code]))

function mapNextcloudToExcalidrawLang(nextcloudLang: string): string {
const lowerNextcloudLang = nextcloudLang.toLowerCase()

const exactMatch = languages.find(
(lang) =>
lang.code.toLowerCase() === lowerNextcloudLang
|| lang.code.toLowerCase().replace('-', '_') === lowerNextcloudLang,
)
if (exactMatch) return exactMatch.code
if (languageMap.has(lowerNextcloudLang)) {
return languageMap.get(lowerNextcloudLang)!
}

const partialMatch = languages.find((lang) =>
lang.code.toLowerCase().startsWith(lowerNextcloudLang.slice(0, 1)),
)
const hyphenatedLang = lowerNextcloudLang.replace('_', '-')
if (languageMap.has(hyphenatedLang)) {
return languageMap.get(hyphenatedLang)!
}

if (partialMatch) return partialMatch.code
for (const [excalidrawLang, originalCode] of languageMap) {
if (excalidrawLang.startsWith(lowerNextcloudLang)
|| lowerNextcloudLang.startsWith(excalidrawLang.split('-')[0])) {
return originalCode
}
}

return 'en'
}

export function useExcalidrawLang() {
const [lang, setLang] = useState(
mapNextcloudToExcalidrawLang(getLanguage()),
)
const [lang, setLang] = useState(() => mapNextcloudToExcalidrawLang(getLanguage()))

useEffect(() => {
const nextcloudLang = getLanguage()
Expand Down

0 comments on commit 5cf3b9c

Please sign in to comment.