Skip to content

Commit 3add2d4

Browse files
authored
Merge pull request #78 from object-t/release/0.0.3
Release/0.0.3
2 parents 41d4d7f + c911c8c commit 3add2d4

File tree

9 files changed

+1205
-2148
lines changed

9 files changed

+1205
-2148
lines changed

app/components/Drawer/Drawer.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
33
import { useEffect, useState } from 'react';
44
import { LanguageButton } from '../LanguageButton/LanguageButton';
55
import styles from './drawer.module.css';
6+
import { useTranslation } from 'react-i18next';
67

78
export interface DrawerProps {
89
links: Record<'label' | 'to', string>[];
@@ -11,10 +12,10 @@ export interface DrawerProps {
1112
}
1213

1314
const sitemap: Record<string, string> = {
14-
"ホームページ": "/",
15-
"技術ブログ": "/blog",
15+
"header.homepage": "/",
16+
"header.tech-blog": "/blog",
1617
"": "",
17-
"お問い合わせ": "/",
18+
"header.contact": "/",
1819
}
1920

2021
export const Drawer = ({
@@ -24,6 +25,7 @@ export const Drawer = ({
2425
...props
2526
}: DrawerProps) => {
2627
const [open, setOpen] = useState(false);
28+
const { t } = useTranslation();
2729

2830
useEffect(() => {
2931
document.documentElement.style.overflow = open ? 'hidden' : '';
@@ -40,7 +42,7 @@ export const Drawer = ({
4042
<LanguageButton className={styles.lang}/>
4143
</div>
4244
<div className={styles['link-container']}>
43-
<h2>リンク</h2>
45+
<h2>{t("header.links")}</h2>
4446
<ul>
4547
{
4648
links.map(link => (
@@ -66,14 +68,14 @@ export const Drawer = ({
6668
))
6769
}
6870
</ul>
69-
<h2>サイトマップ</h2>
71+
<h2>{t("header.sitemap")}</h2>
7072
<ul>
7173
{
7274
Object.entries(sitemap).map(([label, url]) => label ? (
7375
<a href={url} key={label}>
7476
<li>
7577
<p>
76-
{label}
78+
{t(label)}
7779
</p>
7880
</li>
7981
</a>

app/components/Footer/Footer.tsx

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,71 @@
11
import { useIsMobile } from '~/hooks/useIsMobile';
22
import styles from './Footer.module.css';
3+
import { useTranslation } from 'react-i18next';
34

45
const sitemap: Record<string, string> = {
5-
"ホームページ": "/",
6-
"お知らせ": "/",
7-
"活動報告": "/",
8-
"技術ブログ": "/",
6+
"header.homepage": "/",
7+
"header.notice": "/",
8+
"header.activity": "/",
9+
"header.tech-blog": "/",
910
"": "",
10-
"お問い合わせ": "/",
11+
"header.contact": "/",
1112
}
1213

1314
const aboutSite: Record<string, string> = {
14-
"Webデザイン(Figma)": "https://www.figma.com/design/YWBtX9qhd0QKOTY4a2SEWx/Object%3CT%3E",
15-
"ソースコード(Github)": "https://github.com/object-t/object-t-website",
15+
"header.web-design": "https://www.figma.com/design/YWBtX9qhd0QKOTY4a2SEWx/Object%3CT%3E",
16+
"header.source": "https://github.com/object-t/object-t-website",
1617
}
1718

1819
const school: Record<string, string> = {
19-
"学校ホームページ": "https://www.fca.ac.jp/",
20-
}
21-
22-
const getList = (list: Record<string, string>) => {
23-
return (
24-
<ul>
25-
{
26-
Object.entries(list).map(([label, url]) => label ? (
27-
<li key={label}>
28-
<a href={url}>
29-
<p>
30-
{label}
31-
</p>
32-
</a>
33-
</li>
34-
): <br key={''}/>)
35-
}
36-
</ul>
37-
)
20+
"header.school-website": "https://www.fca.ac.jp/",
3821
}
3922

4023
export const Footer = ({...props}) => {
41-
const isMobile = useIsMobile()
24+
const isMobile = useIsMobile();
25+
const { t } = useTranslation();
4226

27+
const getList = (list: Record<string, string>) => {
28+
return (
29+
<ul>
30+
{
31+
Object.entries(list).map(([label, url]) => label ? (
32+
<li key={label}>
33+
<a href={url}>
34+
<p>
35+
{t(label)}
36+
</p>
37+
</a>
38+
</li>
39+
): <br key={''}/>)
40+
}
41+
</ul>
42+
)
43+
}
44+
4345
return (
4446
<footer {...props}>
4547
{
4648
!isMobile && <>
4749
<div className={`${styles.container} ${styles.title}`}>
48-
<p>学生団体:Object&lt;T&gt;</p>
49-
<p>所属: 福岡デザイン&テクノロジー専門学校</p>
50+
<p>{t("header.student-organization")}: Object&lt;T&gt;</p>
51+
<p>{t("header.affiliation")}: {t("common.school-name")}</p>
5052
</div><div className={styles.container}>
5153
<div className={styles.block}>
52-
<p>サイトマップ</p>
54+
<p>{ t("header.sitemap") }</p>
5355
{getList(sitemap)}
5456
</div>
5557
<div className={styles.block}>
56-
<p>本サイトについて</p>
58+
<p>{t("header.about")}</p>
5759
{getList(aboutSite)}
5860
</div>
5961
<div className={styles.block}>
60-
<p>学校関連</p>
62+
<p>{t("header.school")}</p>
6163
{getList(school)}
6264
</div>
6365
</div>
6466
</>
6567
}
66-
<p className={[styles.copy, isMobile && styles.mobile].join(" ")}>&copy; 学生団体 Object&lt;T&gt;. All rights reserved.</p>
68+
<p className={[styles.copy, isMobile && styles.mobile].join(" ")}>&copy; {t("header.student-organization")} Object&lt;T&gt;. All rights reserved.</p>
6769
</footer>
6870
);
6971
};

app/components/MemberCard/MemberCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export const MemberCard = ({
5050
<div className='profile-container'>
5151
<h1 className='name'>{ name }</h1>
5252
<h2 className='role'>{ t(templateRole[role]) }</h2>
53-
<p className='description'>{ description }</p>
53+
<p className='description'>{ t(description) }</p>
5454
<p className='stack-title'>{ t("card.memberCard.stack") }</p>
5555
<div className='stack-container'>
5656
{

app/components/ProductCard/ProductCard.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { LinkedButton } from "../LinkedButton/LinkedButton";
66
import type { LinkedButtonProps } from "../LinkedButton/LinkedButton";
77

88
import "./product-card.css"
9+
import { useTranslation } from "react-i18next";
910

1011

1112

@@ -31,6 +32,8 @@ export const ProductCard = ({
3132
linkedButtons,
3233
...props
3334
}: ProductCardProps) => {
35+
const { t } = useTranslation();
36+
3437
return (
3538
<div
3639
className="product-card-container"
@@ -42,7 +45,7 @@ export const ProductCard = ({
4245

4346
<div className="product-title-container">
4447
<h1>
45-
{title}
48+
{t(title)}
4649
</h1>
4750
</div>
4851
<div className="product-stack-container">
@@ -55,7 +58,7 @@ export const ProductCard = ({
5558
))}
5659
</div>
5760
<div className="product-description-container">
58-
<p>{description}</p>
61+
<p>{t(description)}</p>
5962
</div>
6063
<div className="repo-info-container">
6164
<div className="repo-info-item">

app/i18n/en.json

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,22 @@
11
{
2+
"header": {
3+
"links": "Links",
4+
"sitemap": "Sitemap",
5+
"homepage": "Homepage",
6+
"notice": "Notice",
7+
"activity": "Activity Report",
8+
"tech-blog": "TechBlog",
9+
"contact": "Contact us",
10+
"about": "About website",
11+
"web-design": "Web design(Figma)",
12+
"source": "Source code(Github)",
13+
"school": "Our school",
14+
"school-website": "School website",
15+
"student-organization": "Student Organization",
16+
"affiliation": "Affiliation"
17+
},
218
"common": {
19+
"school-name": "The FUKUOKA College of Design and Technology",
320
"button": "Button",
421
"subtitle": "Brighter Futures for Students",
522
"detail": "Detail",
@@ -18,7 +35,23 @@
1835
},
1936
"card": {
2037
"memberCard": {
21-
"stack": "Stacks"
38+
"stack": "Stacks",
39+
"descriptions": {
40+
"naoido": "I'm probably a programmer.",
41+
"thirdlf03": "hoge hoge programmer.",
42+
"annkoatama": "UMA programmer",
43+
"kenta-afk": "Men's coach"
44+
}
45+
},
46+
"products": {
47+
"neko-bot": {
48+
"title": "Neko-Bot",
49+
"description": "NekoBot is a Discord bot for our organization, supporting info sharing, AI-powered Q&A, and group management."
50+
},
51+
"website": {
52+
"title": "Our-Homepage",
53+
"description": "Official site built with React, using Cloudflare Workers for updates and deployed via Cloudflare Pages."
54+
}
2255
}
2356
}
2457
}

app/i18n/ja.json

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,22 @@
11
{
2+
"header": {
3+
"links": "リンク",
4+
"sitemap": "サイトマップ",
5+
"homepage": "ホームページ",
6+
"notice": "お知らせ",
7+
"activity": "活動報告",
8+
"tech-blog": "技術ブログ",
9+
"contact": "お問い合わせ",
10+
"about": "本サイトについて",
11+
"web-design": "Webデザイン(Figma)",
12+
"source": "ソースコード(Github)",
13+
"school": "学校関連",
14+
"school-website": "学校ホームページ",
15+
"student-organization": "学生団体",
16+
"affiliation": "所属"
17+
},
218
"common": {
19+
"school-name": "福岡デザイン&テクノロジー専門学校",
320
"button": "ボタン",
421
"detail": "詳細",
522
"list": "一覧",
@@ -18,7 +35,23 @@
1835
},
1936
"card": {
2037
"memberCard": {
38+
"descriptions": {
39+
"naoido": "よわよわプログラマ",
40+
"thirdlf03": "ねこねこプログラマー",
41+
"annkoatama": "うまうまプログラマー",
42+
"kenta-afk": "メンズコーチ"
43+
},
2144
"stack": "得意技術"
45+
},
46+
"products": {
47+
"neko-bot": {
48+
"title": "ねこBot",
49+
"description": "ねこbotは団体discordで運用しているbotです。団体内での情報共有や、AIによる質問返答、グループ管理の役割を担っています。"
50+
},
51+
"website": {
52+
"title": "団体サイト",
53+
"description": "団体公式のウェブサイトです。Reactで構成されており、Cloudfalre Workers使用し記事の更新などを行い、Cloudflare Pagesにデプロイしています。"
54+
}
2255
}
2356
}
2457
}

app/routes/home.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ export function meta({ }: Route.MetaArgs) {
1616
}
1717

1818
const members: MemberCardProps[] = [
19-
{ name: "Naoto Kido", role: "owner", description: "よわよわプログラマー", stacks: ['Kubernetes', 'AWS', 'Java', 'Go-wordmark', 'Flutter'], headerImage: "/assets/images/headers/naoido.webp", iconImage: "https://avatars.githubusercontent.com/u/54303857", githubName: "naoido" },
20-
{ name: "Miura Naoki", role: "coowner", description: "ねこねこプログラマー", stacks: ['Go-wordmark', 'Javascript', 'Rust', 'Python', 'Neovim'], headerImage: "/assets/images/headers/thirdlf03.webp", iconImage: "https://avatars.githubusercontent.com/u/114989748", githubName: "thirdlf03" },
21-
{ name: "Takumi Matsubara", role: "frontend", description: "うまうまプログラマー", stacks: ['Typescript', 'Swift', 'React'], headerImage: "/assets/images/headers/annkoatama.webp", iconImage: "https://avatars.githubusercontent.com/u/152017354", githubName: "AnnkoATAMA" },
22-
{ name: "Kentaro Doi", role: "backend", description: "メンズコーチ", stacks: ['Javascript', 'Python', 'Php', 'Laravel', 'Typescript'], headerImage: "/assets/images/headers/kenta_afk.webp", iconImage: "https://avatars.githubusercontent.com/u/148222450", githubName: "kenta-afk" },
19+
{ name: "Naoto Kido", role: "owner", description: "card.memberCard.descriptions.naoido", stacks: ['Kubernetes', 'AWS', 'Java', 'Go-wordmark', 'Flutter'], headerImage: "/assets/images/headers/naoido.webp", iconImage: "https://avatars.githubusercontent.com/u/54303857", githubName: "naoido" },
20+
{ name: "Naoki Miura", role: "coowner", description: "card.memberCard.descriptions.thirdlf03", stacks: ['Go-wordmark', 'Javascript', 'Rust', 'Python', 'Neovim'], headerImage: "/assets/images/headers/thirdlf03.webp", iconImage: "https://avatars.githubusercontent.com/u/114989748", githubName: "thirdlf03" },
21+
{ name: "Takumi Matsubara", role: "frontend", description: "card.memberCard.descriptions.annkoatama", stacks: ['Typescript', 'Swift', 'React'], headerImage: "/assets/images/headers/annkoatama.webp", iconImage: "https://avatars.githubusercontent.com/u/152017354", githubName: "AnnkoATAMA" },
22+
{ name: "Kentaro Doi", role: "backend", description: "card.memberCard.descriptions.kenta-afk", stacks: ['Javascript', 'Python', 'php', 'Laravel', 'Typescript'], headerImage: "/assets/images/headers/kenta_afk.webp", iconImage: "https://avatars.githubusercontent.com/u/148222450", githubName: "kenta-afk" },
2323
]
2424

2525
const notices: NoticeCardProps[] = [
@@ -28,8 +28,8 @@ const notices: NoticeCardProps[] = [
2828
]
2929

3030
const products: ProductCardProps[] = [
31-
{ headerImage: "/assets/images/products/neko-bot.webp", title: "ねこbot", stacks: ["Go-wordmark", "ArgoCD"], description: "ねこbotは団体discordで運用しているbotです。団体内での情報共有や、AIによる質問返答、グループ管理の役割を担っています。", stars: 1, commits: 142, pullRequests: 75, linkedButtons: [{ label: "Github", url: "https://github.com/naoido/neko-bot" }] },
32-
{ headerImage: "/assets/images/products/website.webp", title: "団体公式サイト", stacks: ["Cloudflare", "React", "Cloudflareworkers", "Storybook"], description: "団体公式のウェブサイトです。Reactで構成されており、Cloudfalre Workers使用し記事の更新などを行い、Cloudflare Pagesにデプロイしています。", stars: 2, commits: 86, pullRequests: 54, linkedButtons: [{ label: "Github", url: "https://github.com/object-t/object-t-website" }, { label: "Figma", url: "https://www.figma.com/design/YWBtX9qhd0QKOTY4a2SEWx" }] }
31+
{ headerImage: "/assets/images/products/neko-bot.webp", title: "card.products.neko-bot.title", stacks: ["Go-wordmark", "ArgoCD"], description: "card.products.neko-bot.description", stars: 1, commits: 142, pullRequests: 75, linkedButtons: [{ label: "Github", url: "https://github.com/naoido/neko-bot" }] },
32+
{ headerImage: "/assets/images/products/website.webp", title: "card.products.website.title", stacks: ["Cloudflare", "React", "Cloudflareworkers", "Storybook"], description: "card.products.website.description", stars: 2, commits: 86, pullRequests: 54, linkedButtons: [{ label: "Github", url: "https://github.com/object-t/object-t-website" }, { label: "Figma", url: "https://www.figma.com/design/YWBtX9qhd0QKOTY4a2SEWx" }] }
3333
]
3434

3535
const activities: ActivityCardProps[] = [

0 commit comments

Comments
 (0)