devex: dead locales cleanup + i18n inspect tool (#5313)
* chore: remove old locales + just enable all locales now * feat: debug panel for i18n + tooltips * feat: dedupe * fix: debugger for app * fix: crowdin code mismatches * fix: lint
This commit is contained in:
49
apps/app-frontend/src/plugins/i18n-debug.ts
Normal file
49
apps/app-frontend/src/plugins/i18n-debug.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import {
|
||||
annotateFullDocument,
|
||||
clearAllAnnotations,
|
||||
hideKeyTooltip,
|
||||
I18N_DEBUG_KEY,
|
||||
type I18nDebugContext,
|
||||
initI18nDebugRuntime,
|
||||
} from '@modrinth/ui'
|
||||
import type { App } from 'vue'
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
|
||||
import { useTheming } from '@/store/theme'
|
||||
|
||||
export default {
|
||||
install(app: App) {
|
||||
const theming = useTheming()
|
||||
|
||||
const enabled = ref(theming.featureFlags.i18n_debug ?? false)
|
||||
const keyReveal = ref(false)
|
||||
const registry = reactive(new Map()) as Map<
|
||||
string,
|
||||
{ key: string; value: string; defaultMessage?: string; timestamp: number }
|
||||
>
|
||||
const panelOpen = ref(false)
|
||||
|
||||
const context: I18nDebugContext = { enabled, keyReveal, registry, panelOpen }
|
||||
app.provide(I18N_DEBUG_KEY, context)
|
||||
|
||||
initI18nDebugRuntime(context)
|
||||
|
||||
watch(
|
||||
() => theming.featureFlags.i18n_debug,
|
||||
(active) => {
|
||||
enabled.value = active
|
||||
if (!active) {
|
||||
keyReveal.value = false
|
||||
panelOpen.value = false
|
||||
document.body.classList.remove('i18n-debug')
|
||||
clearAllAnnotations()
|
||||
hideKeyTooltip()
|
||||
registry.clear()
|
||||
} else {
|
||||
document.body.classList.add('i18n-debug')
|
||||
annotateFullDocument(registry)
|
||||
}
|
||||
},
|
||||
)
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user