Skip to content

Commit

Permalink
i18n
Browse files Browse the repository at this point in the history
  • Loading branch information
meetqy committed Mar 31, 2024
1 parent ff851ef commit 8247fc2
Show file tree
Hide file tree
Showing 10 changed files with 176 additions and 22 deletions.
13 changes: 4 additions & 9 deletions src/app/[lang]/components/menu/content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ export function Content({
href: `/${lang}`,
},
{
title: dict.menu.auhtor,
title: dict.menu.author,
label: <span className="font-mono">{authorCount}</span>,
icon: UserRound,
variant: /^(\/author)/.test(pathname) ? "default" : "ghost",
Expand All @@ -93,13 +93,6 @@ export function Content({
variant: /^(\/tag)/.test(pathname) ? "default" : "ghost",
href: `/${lang}/tag`,
},
// {
// title: dict.menu.print,
// icon: Printer,
// label: <ArrowRight className="h-4 w-4 text-destructive" />,
// variant: /^(\/print)/.test(pathname) ? "default" : "ghost",
// href: `/tools/print`,
// },
]}
/>

Expand Down Expand Up @@ -138,7 +131,7 @@ export function Content({
<p className="px-4 text-f50 text-muted-foreground">
{dict.menu.language}
</p>
<div className="my-4 px-4">
<div className="my-4 px-4 text-f50">
<Select
value={lang}
onValueChange={(value) => {
Expand All @@ -153,6 +146,8 @@ export function Content({
<SelectItem value="zh-Hans">中文简体</SelectItem>
<SelectItem value="zh-Hant">中文繁体</SelectItem>
<SelectItem value="en">English</SelectItem>
<SelectItem value="ko">한국어</SelectItem>
<SelectItem value="ja">日本語</SelectItem>
</SelectContent>
</Select>
</div>
Expand Down
2 changes: 1 addition & 1 deletion src/components/ui/select.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ const SelectItem = React.forwardRef<
<SelectPrimitive.Item
ref={ref}
className={cn(
"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
className,
)}
{...props}
Expand Down
2 changes: 1 addition & 1 deletion src/dictionaries/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
],
"menu": {
"poem": "Poems",
"auhtor": "Poets",
"author": "Poets",
"ci_pai_ming": "Ci Pai Ming",
"tag": "Tags",
"contact": "Contact",
Expand Down
16 changes: 10 additions & 6 deletions src/dictionaries/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import "server-only";

export const defaultLocale = "zh-Hans";
export const locales = ["zh-Hans", "zh-Hant", "en"] as const;
export const locales = ["zh-Hans", "zh-Hant", "en", "ja", "ko"] as const;
const dictionaries = {
"zh-Hant": () => import("./zh-Hant.json").then((module) => module.default),
"zh-Hans": () => import("./zh-Hans.json").then((module) => module.default),
en: () => import("./en.json").then((module) => module.default),
ja: () => import("./ja.json").then((module) => module.default),
ko: () => import("./ko.json").then((module) => module.default),
};

export type Locale = (typeof locales)[number];
Expand All @@ -14,12 +16,14 @@ export type Locale = (typeof locales)[number];
* 生成多语言 meta hreflang 标签
*/
export const getMetaDataAlternates = (suffix: string, lang: Locale) => {
const languages: Record<string, string> = {};

for (const locale of locales) {
languages[locale] = `/${locale}${suffix}`;
}

return {
languages: {
"zh-Hans": `/zh-Hans${suffix}`,
"zh-Hant": `/zh-Hant${suffix}`,
en: `/en${suffix}`,
},
languages,
canonical: `/${lang}${suffix}`,
};
};
Expand Down
78 changes: 78 additions & 0 deletions src/dictionaries/ja.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{
"title": "近代詩学習ウェブサイト",
"description": "aspoem.comは、近代詩学習のためのモダンなウェブサイトであり、サイト全体の検索機能を提供しています。この機能を利用することで、律詩や絶句、詩人たちの作品をより迅速に検索することができます。また、私たちは拼音の表示方法、注釈や白話文の展示方法などを最適化し、詩をより読みやすくしています。さらに、古代詩学の学習をサポートする詩学印刷ツールも提供しています。ぜひ、私たちのウェブサイトの魅力を体験してください!",
"point_keywords": [
"詩学習",
"古詩学習",
"唐詩300首",
"宋詞300首",
"李白詩集",
"杜甫詩集"
],
"keywords": [
"詩学習",
"古詩学習",
"唐詩300首",
"宋詞300首",
"李白詩集",
"杜甫詩集",
"古詩",
"",
"詩人統計",
"詩検索",
"詩の拼音",
"詩の注釈",
"詩の翻訳",
"ピンイン"
],
"menu": {
"poem": "",
"author": "詩人",
"ci_pai_ming": "詞牌名",
"tag": "タグ",
"contact": "連絡先",
"theme": "テーマ",
"language": "言語",
"feedback": "フィードバック",
"print": "印刷"
},
"feedback_desc": "ここでは、ウェブサイトの更新履歴や将来の計画、新機能に関するディスカッションを確認することができます。また、提案や意見を残すこともできます。",
"home": {
"poem": "おすすめ",
"all_poems": "すべての詩"
},
"poem": {
"title": "",
"pinyin": "拼音",
"pinyin_show": "拼音を表示",
"pinyin_hide": "拼音を非表示",
"translation": "翻訳",
"tools": "ツール",
"more": "さらに探索",
"comment": "コメント",
"comment_desc1": "異なる年齢、成長環境、経験には、異なる視点があります。",
"comment_desc2": "従って、標準答えは存在せず、自分が好きなものを選ぶだけでいいです!ぜひ、思いを残してください!👏🏻👏🏻👏🏻",
"report_error": "エラー報告",
"report_error_desc": "もし間違いを見つけた場合は、下にコメントして指摘してください!"
},
"poem_list": {
"title": "詩のリスト",
"empty": "関連する詩が見つかりませんでした",
"tab_new": "最新",
"tab_improve": "改善待ち"
},
"author": {
"title": "詩人"
},
"author_detail": {
"title": "詩人詳細"
},
"search": {
"placeholder": "詩人、詩、名言を検索",
"empty": "関連する詩が見つかりませんでした"
},
"pagination": {
"prev": "前へ",
"next": "次へ"
}
}
78 changes: 78 additions & 0 deletions src/dictionaries/ko.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{
"title": "현대시 학습 웹사이트",
"description": "aspoem.com은 현대화된 시 학습 웹사이트로, 전체 사이트 검색 기능을 제공합니다. 리듀시, 절, 그리고 다양한 시인들의 작품을 더 빠르게 검색할 수 있도록 편리한 전체 사이트 검색 기능을 제공합니다. 또한 우리는 발음 표기, 주석, 평문 등의 표시 방식을 최적화하여 시를 더욱 쉽게 읽을 수 있도록 했습니다. 게다가 고대 시를 공부하기 위한 시인프린터 도구도 제공합니다. 지금 저희 웹사이트의 매력을 경험해보세요!",
"point_keywords": [
"시 학습",
"고대 시 학습",
"당시 삼백곡",
"송시 삼백곡",
"이백 시 전집",
"두풀 시 전집"
],
"keywords": [
"시 학습",
"고대 시 학습",
"당시 삼백곡",
"송시 삼백곡",
"이백 시 전집",
"두풀 시 전집",
"고대 시",
"",
"시인 통계",
"시 검색",
"시 발음",
"시 주석",
"시 번역",
"pinyin"
],
"menu": {
"poem": "",
"author": "시인",
"ci_pai_ming": "사파명",
"tag": "태그",
"contact": "연락처",
"theme": "주제",
"language": "언어",
"feedback": "의견",
"print": "인쇄"
},
"feedback_desc": "이곳에서 웹사이트의 업데이트 로그, 미래 계획 및 새로운 기능에 대한 토론을 확인할 수 있습니다. 동시에 여러분의 제안과 의견을 남길 수도 있습니다.",
"home": {
"poem": "추천",
"all_poems": "전체 시"
},
"poem": {
"title": "",
"pinyin": "발음",
"pinyin_show": "발음 표시",
"pinyin_hide": "발음 숨기기",
"translation": "번역",
"tools": "도구",
"more": "더 많은 탐색",
"comment": "자유롭게 의견을 표현하세요",
"comment_desc1": "다른 나이, 성장 환경, 경험에 따라 다른 시각이 있을 것입니다.",
"comment_desc2": "따라서 표준 답변은 없습니다. 자신이 좋아하는 대로 하세요! 여러분의 생각을 남겨주세요!👏🏻👏🏻👏🏻",
"report_error": "오류 신고",
"report_error_desc": "오류를 발견하신 경우 아래에 의견을 남겨주시면 감사하겠습니다!"
},
"poem_list": {
"title": "시 목록",
"empty": "관련 시를 찾을 수 없습니다",
"tab_new": "최신",
"tab_improve": "보완 필요"
},
"author": {
"title": "시인"
},
"author_detail": {
"title": "시인"
},
"search": {
"placeholder": "시인, 시, 명구 검색",
"empty": "관련 시를 찾을 수 없습니다"
},
"pagination": {
"prev": "이전",
"next": "다음"
}
}
2 changes: 1 addition & 1 deletion src/dictionaries/zh-Hans.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
],
"menu": {
"poem": "诗词",
"auhtor": "诗人",
"author": "诗人",
"ci_pai_ming": "词牌名",
"tag": "标签",
"contact": "联系方式",
Expand Down
2 changes: 1 addition & 1 deletion src/dictionaries/zh-Hant.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
],
"menu": {
"poem": "詩詞",
"auhtor": "詩人",
"author": "詩人",
"ci_pai_ming": "詞牌名",
"tag": "標籤",
"contact": "聯繫方式",
Expand Down
2 changes: 0 additions & 2 deletions src/server/api/routers/poem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -323,8 +323,6 @@ export const poemRouter = createTRPCRouter({
}
}

console.log(contentArr, connectTagId);

if (connectTagId !== -1) {
void ctx.db.poem
.update({
Expand Down
3 changes: 2 additions & 1 deletion src/server/api/utils.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { type Tag, type Poem } from "@prisma/client";
import { mapKeys, pick } from "lodash-es";
import { z } from "zod";
import { locales } from "~/dictionaries";

export const LangZod = z.enum(["zh-Hans", "zh-Hant", "en"]).default("zh-Hans");
export const LangZod = z.enum(locales).default("zh-Hans");

function transform<T extends Record<string, unknown>>(
res: T,
Expand Down

0 comments on commit 8247fc2

Please sign in to comment.