アイヌ語追加 (#428) (#433)

Reviewed-on: #433
Co-authored-by: miteruzo <miteruzo@naver.com>
このコミットはプルリクエスト #433 でマージされました。
このコミットが含まれているのは:
2026-10-20 20:44:14 +09:00
committed by みてるぞ
コミット 084a090cab
294個のファイルの変更、13978行の追加、3461行の削除
+44 -3
ファイルの表示
@@ -1,5 +1,10 @@
import { localeLanguage } from '@/lib/locales'
import { helpKeys } from '@/lib/queryKeys'
import type { ComponentType } from 'react'
import type { PagePreparation } from '@/lib/routeLocales'
type ArticleLanguage = { currentEdition: string; publishedEditions: string[] }
export type ArticleMeta = {
@@ -13,12 +18,14 @@ export type HelpEditionText = {
export type HelpSearchEntry = HelpEditionText & {
identifier: string
language?: string
edition: string }
export type HelpEditionContent = HelpEditionText & { content: ComponentType }
export type HelpEditionSource = HelpEditionText & { source: string }
export type HelpChange = Pick<HelpSearchEntry, 'identifier' | 'edition' | 'title'> & {
language?: string
pred: string | null
change: 'new' | 'update'
date: string }
@@ -72,7 +79,7 @@ export const compareHelpEditions = (a: string, b: string): number => {
export const helpEditionDate = (edition: string): Date | null => {
const parsed = parseHelpEdition (edition)
return parsed == null ? null : new Date (`${ parsed.date }T00:00:00`)
return parsed == null ? null : new Date (`${ parsed.date }T00:00:00+09:00`)
}
@@ -82,6 +89,40 @@ export const getHelpArticle = async (identifier: string): Promise<ArticleMeta |
}
export const resolveHelpLanguage = (
article: ArticleMeta | null | undefined,
requestedLanguage: string,
): string | null =>
article?.languages[requestedLanguage] != null
? requestedLanguage
: null
// MDX functions stay in memory; both entries load them before rendering.
export const prepareHelpPage = async (
{ client, params, locale, searchParams }: PagePreparation,
): Promise<number> => {
const identifier = params.identifier
if (identifier == null)
return 404
const article = await client.fetchQuery ({
queryKey: helpKeys.article (identifier),
queryFn: () => getHelpArticle (identifier), staleTime: Infinity })
const language = resolveHelpLanguage (article, localeLanguage (locale))
if (language == null)
return 404
const meta = article!.languages[language]
const edition = searchParams.get ('edition') ?? meta.currentEdition
if (!(meta.publishedEditions.includes (edition)) || parseHelpEdition (edition) == null)
return 404
const content = await client.fetchQuery ({
queryKey: helpKeys.edition (identifier, language, edition),
queryFn: () => getHelpEditionContent (identifier, language, edition),
staleTime: Infinity })
return content == null ? 404 : 200
}
export const getHelpEditions = async (
identifier: string,
language: string,
@@ -144,7 +185,7 @@ export const getHelpSearchEntries = async (
language: string,
): Promise<HelpSearchEntry[]> => {
const { default: search } = await import ('virtual:help/search')
return search[language] ?? []
return (search[language] ?? []).map (entry => ({ ...entry, language }))
}
@@ -163,7 +204,7 @@ export const getHelpEditionContent = async (
export const getHelpChanges = async (language: string): Promise<HelpChange[]> => {
const { default: changes } = await import ('virtual:help/changes')
return changes[language] ?? []
return (changes[language] ?? []).map (entry => ({ ...entry, language }))
}