feat: language in header
This commit is contained in:
@@ -14,6 +14,7 @@ export interface PublicNote {
|
|||||||
theme?: string
|
theme?: string
|
||||||
fontFamily?: string
|
fontFamily?: string
|
||||||
fontSize?: string
|
fontSize?: string
|
||||||
|
language?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface PublicNoteImage {
|
export interface PublicNoteImage {
|
||||||
|
|||||||
18
src/utils/displayLanguage.ts
Normal file
18
src/utils/displayLanguage.ts
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
export const displayLanguage = (langCode?: string): string | null => {
|
||||||
|
if (!langCode) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const locale = navigator.language ?? langCode
|
||||||
|
const display = new Intl.DisplayNames([locale], {
|
||||||
|
type: "language",
|
||||||
|
})
|
||||||
|
|
||||||
|
return display.of(langCode) ?? null
|
||||||
|
} catch (err) {
|
||||||
|
console.warn("error", err)
|
||||||
|
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,6 +17,7 @@ import { errorMessage } from "@/utils/notif"
|
|||||||
import { useResizeContainer } from "@/hooks/useResizeContainer.hook"
|
import { useResizeContainer } from "@/hooks/useResizeContainer.hook"
|
||||||
import ThemeSwap from "@/components/ThemeSwap.vue"
|
import ThemeSwap from "@/components/ThemeSwap.vue"
|
||||||
import { useTitle } from "@vueuse/core"
|
import { useTitle } from "@vueuse/core"
|
||||||
|
import { displayLanguage } from "@/utils/displayLanguage"
|
||||||
|
|
||||||
const props = defineProps<{ did: string; rkey: string; slug?: string }>()
|
const props = defineProps<{ did: string; rkey: string; slug?: string }>()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@@ -99,6 +100,11 @@ const publishedAt = computed(() =>
|
|||||||
? new Date(noteRecord.value?.value.publishedAt).toLocaleDateString()
|
? new Date(noteRecord.value?.value.publishedAt).toLocaleDateString()
|
||||||
: null,
|
: null,
|
||||||
)
|
)
|
||||||
|
const language = computed(() =>
|
||||||
|
noteRecord.value?.value.language
|
||||||
|
? displayLanguage(noteRecord.value.value.language)
|
||||||
|
: null,
|
||||||
|
)
|
||||||
|
|
||||||
const { stackedNotes, scrollToFocusedNote } = useRouteQueryStackedNotes()
|
const { stackedNotes, scrollToFocusedNote } = useRouteQueryStackedNotes()
|
||||||
const { listenToClick } = useATProtoLinks("note-display")
|
const { listenToClick } = useATProtoLinks("note-display")
|
||||||
@@ -134,6 +140,10 @@ watch(
|
|||||||
>
|
>
|
||||||
{{ author.handle }}
|
{{ author.handle }}
|
||||||
</router-link>
|
</router-link>
|
||||||
|
<template v-if="language">
|
||||||
|
<span> • </span>
|
||||||
|
<span>{{ language }}</span>
|
||||||
|
</template>
|
||||||
<template v-if="publishedAt">
|
<template v-if="publishedAt">
|
||||||
<span> • </span>
|
<span> • </span>
|
||||||
<span>{{ publishedAt }}</span>
|
<span>{{ publishedAt }}</span>
|
||||||
|
|||||||
Reference in New Issue
Block a user