diff --git a/src/components/Content/ThumbnailHeader.tsx b/src/components/Content/ThumbnailHeader.tsx
index 13f1c3a..2b8ec2a 100644
--- a/src/components/Content/ThumbnailHeader.tsx
+++ b/src/components/Content/ThumbnailHeader.tsx
@@ -55,7 +55,7 @@ export default function ThumbnailHeader(
{content.type ? (
-
{langui.global_type}
+
{langui.type}
{content.type.data.attributes.titles.length > 0
? content.type.data.attributes.titles[0].title
@@ -68,7 +68,7 @@ export default function ThumbnailHeader(
{content.categories.data.length > 0 ? (
-
{langui.global_categories}
+
{langui.categories}
{content.categories.data.map((category) => (
{category.attributes.name}
))}
diff --git a/src/components/PanelComponents/ReturnButton.tsx b/src/components/PanelComponents/ReturnButton.tsx
index 6f2517c..c208c2b 100644
--- a/src/components/PanelComponents/ReturnButton.tsx
+++ b/src/components/PanelComponents/ReturnButton.tsx
@@ -13,7 +13,7 @@ export default function ReturnButton(props: ReturnButtonProps): JSX.Element {
return (
appLayout.setSubPanelOpen(false)} href={props.href}>
- ❮ {props.langui.global_return_label} {props.title}
+ ❮ {props.langui.return_to} {props.title}
);
}
diff --git a/src/components/Panels/MainPanel.tsx b/src/components/Panels/MainPanel.tsx
index 1ac3b2f..cc819aa 100644
--- a/src/components/Panels/MainPanel.tsx
+++ b/src/components/Panels/MainPanel.tsx
@@ -1,6 +1,5 @@
import Link from "next/link";
import NavOption from "components/PanelComponents/NavOption";
-import SVG from "components/SVG";
import { useRouter } from "next/router";
import Button from "components/Button";
import HorizontalLine from "components/HorizontalLine";
@@ -84,8 +83,8 @@ export default function MainPanel(props: MainPanelProps): JSX.Element {
appLayout.setMainPanelOpen(false)}
@@ -94,8 +93,8 @@ export default function MainPanel(props: MainPanelProps): JSX.Element {
appLayout.setMainPanelOpen(false)}
@@ -104,8 +103,8 @@ export default function MainPanel(props: MainPanelProps): JSX.Element {
appLayout.setMainPanelOpen(false)}
@@ -114,8 +113,8 @@ export default function MainPanel(props: MainPanelProps): JSX.Element {
appLayout.setMainPanelOpen(false)}
@@ -126,7 +125,7 @@ export default function MainPanel(props: MainPanelProps): JSX.Element {
appLayout.setMainPanelOpen(false)}
@@ -135,7 +134,7 @@ export default function MainPanel(props: MainPanelProps): JSX.Element {
appLayout.setMainPanelOpen(false)}
@@ -144,7 +143,7 @@ export default function MainPanel(props: MainPanelProps): JSX.Element {
appLayout.setMainPanelOpen(false)}
@@ -153,7 +152,7 @@ export default function MainPanel(props: MainPanelProps): JSX.Element {
appLayout.setMainPanelOpen(false)}
@@ -162,7 +161,7 @@ export default function MainPanel(props: MainPanelProps): JSX.Element {
appLayout.setMainPanelOpen(false)}
@@ -176,8 +175,8 @@ export default function MainPanel(props: MainPanelProps): JSX.Element {
}`}
>
- {langui.main_licensing ? (
- {langui.main_licensing}
+ {langui.licensing_notice ? (
+ {langui.licensing_notice}
) : (
""
)}
@@ -194,8 +193,8 @@ export default function MainPanel(props: MainPanelProps): JSX.Element {
- {langui.main_copyright ? (
- {langui.main_copyright}
+ {langui.copyright_notice ? (
+ {langui.copyright_notice}
) : (
""
)}
diff --git a/src/components/Select.tsx b/src/components/Select.tsx
index c89bbbf..06c6e2a 100644
--- a/src/components/Select.tsx
+++ b/src/components/Select.tsx
@@ -3,18 +3,13 @@ import { Dispatch, SetStateAction, useState } from "react";
export type SelectProps = {
setState: Dispatch>;
state: number;
- options: SelectOption[];
+ options: string[];
selected?: number;
allowEmpty?: boolean;
className?: string;
onChange?: Function;
};
-export type SelectOption = {
- name: string;
- label: string;
-};
-
export default function Select(props: SelectProps): JSX.Element {
const [opened, setOpened] = useState(false);
@@ -30,7 +25,7 @@ export default function Select(props: SelectProps): JSX.Element {
}`}
>
setOpened(!opened)} className="w-full">
- {props.state === -1 ? "—" : props.options[props.state].label}
+ {props.state === -1 ? "—" : props.options[props.state]}
{props.state >= 0 && props.allowEmpty && (
{
setOpened(false);
props.setState(index);
}}
>
- {option.label}
+ {option}
)}
>
diff --git a/src/graphql/operation.graphql b/src/graphql/operation.graphql
index f83644f..2aaea2e 100644
--- a/src/graphql/operation.graphql
+++ b/src/graphql/operation.graphql
@@ -1,72 +1,86 @@
query getWebsiteInterface($language_code: String) {
- websiteInterfaces(filters: { language: { code: { eq: $language_code } } }) {
+ websiteInterfaces(
+ filters: { ui_language: { code: { eq: $language_code } } }
+ ) {
data {
attributes {
- main_library
- main_library_description
- main_news
- main_merch
- main_gallery
- main_archives
- main_about_us
- main_licensing
- main_copyright
+ library
+ contents
+ wiki
+ chronicles
+ library_short_description
+ contents_short_description
+ wiki_short_description
+ chronicles_short_description
+ news
+ merch
+ gallery
+ archives
+ about_us
+ licensing_notice
+ copyright_notice
+ contents_description
+ type
+ category
+ categories
+ size
+ release_date
+ release_year
+ details
+ price
+ width
+ height
+ thickness
+ subitem
+ subitems
+ subitem_of
+ variant
+ variants
+ variant_of
+ summary
+ audio
+ video
+ textual
+ game
+ other
+ return_to
+ left_to_right
+ right_to_left
+ page
+ pages
+ page_order
+ binding
+ type_information
+ front_matter
+ back_matter
+ open_content
+ read_content
+ watch_content
+ listen_content
+ view_scans
+ paperback
+ hardcover
+ languages
+ select_language
+ language
library_description
- library_item_summary
- library_item_gallery
- library_item_details
- library_item_subitems
- library_item_variants
- library_item_content
- global_return_label
- global_subitem_of
- global_type
- global_width
- global_height
- global_thickness
- global_binding
- global_language
- global_languages
- global_page
- global_pages
- global_page_order
- global_release_date
- global_price
- library_item_physical_size
- library_item_type_information
- library_item_front_matter
- library_item_back_matter
- library_item_type_textual
- library_item_type_audio
- library_item_type_game
- library_item_type_video
- library_item_type_other
- library_item_open_content
- library_item_view_scans
- content_read_content
- content_watch_content
- content_listen_content
- global_category
- global_categories
- global_paperback
- global_hardcover
- global_left_to_right
- global_right_to_left
- main_wiki
- main_wiki_description
- main_chronicles
- main_chronicles_description
- library_items
- library_items_description
- library_content
- library_content_description
wiki_description
- news_description
chronicles_description
+ news_description
+ merch_description
gallery_description
archives_description
about_us_description
- merch_description
+ page_not_found
+ default_description
+ name
+ show_subitems
+ show_primary_items
+ show_secondary_items
+ no_type
+ no_year
+ order_by
+ group_by
}
}
}
@@ -125,9 +139,7 @@ query getChronologyItems($language_code: String) {
}
query getLibraryItemsPreview($language_code: String) {
- libraryItems(
- pagination: { limit: -1 }
- ) {
+ libraryItems(pagination: { limit: -1 }) {
data {
id
attributes {
diff --git a/src/graphql/operations-types.ts b/src/graphql/operations-types.ts
index 45392cf..2f56aec 100644
--- a/src/graphql/operations-types.ts
+++ b/src/graphql/operations-types.ts
@@ -86,71 +86,83 @@ export type GetWebsiteInterfaceQuery = {
__typename: "WebsiteInterfaceEntity";
attributes: {
__typename: "WebsiteInterface";
- main_library: string;
- main_library_description: string;
- main_news: string;
- main_merch: string;
- main_gallery: string;
- main_archives: string;
- main_about_us: string;
- main_licensing: string;
- main_copyright: string;
+ library: string;
+ contents: string;
+ wiki: string;
+ chronicles: string;
+ library_short_description: string;
+ contents_short_description: string;
+ wiki_short_description: string;
+ chronicles_short_description: string;
+ news: string;
+ merch: string;
+ gallery: string;
+ archives: string;
+ about_us: string;
+ licensing_notice: string;
+ copyright_notice: string;
+ contents_description: string;
+ type: string;
+ category: string;
+ categories: string;
+ size: string;
+ release_date: string;
+ release_year: string;
+ details: string;
+ price: string;
+ width: string;
+ height: string;
+ thickness: string;
+ subitem: string;
+ subitems: string;
+ subitem_of: string;
+ variant: string;
+ variants: string;
+ variant_of: string;
+ summary: string;
+ audio: string;
+ video: string;
+ textual: string;
+ game: string;
+ other: string;
+ return_to: string;
+ left_to_right: string;
+ right_to_left: string;
+ page: string;
+ pages: string;
+ page_order: string;
+ binding: string;
+ type_information: string;
+ front_matter: string;
+ back_matter: string;
+ open_content: string;
+ read_content: string;
+ watch_content: string;
+ listen_content: string;
+ view_scans: string;
+ paperback: string;
+ hardcover: string;
+ languages: string;
+ select_language: string;
+ language: string;
library_description: string;
- library_item_summary: string;
- library_item_gallery: string;
- library_item_details: string;
- library_item_subitems: string;
- library_item_variants: string;
- library_item_content: string;
- global_return_label: string;
- global_subitem_of: string;
- global_type: string;
- global_width: string;
- global_height: string;
- global_thickness: string;
- global_binding: string;
- global_language: string;
- global_languages: string;
- global_page: string;
- global_pages: string;
- global_page_order: string;
- global_release_date: string;
- global_price: string;
- library_item_physical_size: string;
- library_item_type_information: string;
- library_item_front_matter: string;
- library_item_back_matter: string;
- library_item_type_textual: string;
- library_item_type_audio: string;
- library_item_type_game: string;
- library_item_type_video: string;
- library_item_type_other: string;
- library_item_open_content: string;
- library_item_view_scans: string;
- content_read_content: string;
- content_watch_content: string;
- content_listen_content: string;
- global_category: string;
- global_categories: string;
- global_paperback: string;
- global_hardcover: string;
- global_left_to_right: string;
- global_right_to_left: string;
- main_wiki: string;
- main_wiki_description: string;
- main_chronicles: string;
- main_chronicles_description: string;
- library_items: string;
- library_items_description: string;
- library_content: string;
- library_content_description: string;
wiki_description: string;
- news_description: string;
chronicles_description: string;
+ news_description: string;
+ merch_description: string;
gallery_description: string;
archives_description: string;
about_us_description: string;
- merch_description: string;
+ page_not_found: string;
+ default_description: string;
+ name: string;
+ show_subitems: string;
+ show_primary_items: string;
+ show_secondary_items: string;
+ no_type: string;
+ no_year: string;
+ order_by: string;
+ group_by: string;
};
}>;
};
diff --git a/src/pages/404.tsx b/src/pages/404.tsx
index fd9217f..e24d3c5 100644
--- a/src/pages/404.tsx
+++ b/src/pages/404.tsx
@@ -13,13 +13,15 @@ export default function FourOhFour(props: FourOhFourProps): JSX.Element {
const langui = props.langui.websiteInterfaces.data[0].attributes;
const contentPanel = (
- 404 - Page Not Found
+ 404 - {langui.page_not_found}
Go back home
);
- return
;
+ return (
+
+ );
}
export const getStaticProps: GetStaticProps = async (context) => {
diff --git a/src/pages/about-us/index.tsx b/src/pages/about-us/index.tsx
index 2e4b3ff..8e69680 100644
--- a/src/pages/about-us/index.tsx
+++ b/src/pages/about-us/index.tsx
@@ -15,14 +15,14 @@ export default function AboutUs(props: AboutUsProps): JSX.Element {
);
return (
diff --git a/src/pages/archives/index.tsx b/src/pages/archives/index.tsx
index eb258b9..88fc0a2 100644
--- a/src/pages/archives/index.tsx
+++ b/src/pages/archives/index.tsx
@@ -15,14 +15,14 @@ export default function Archives(props: ArchivesProps): JSX.Element {
);
return (
diff --git a/src/pages/chronicles/index.tsx b/src/pages/chronicles/index.tsx
index 8f9db43..2ef7522 100644
--- a/src/pages/chronicles/index.tsx
+++ b/src/pages/chronicles/index.tsx
@@ -15,14 +15,14 @@ export default function Chronicles(props: ChroniclesProps): JSX.Element {
);
return (
diff --git a/src/pages/contents/[slug]/index.tsx b/src/pages/contents/[slug]/index.tsx
index 0abd7e0..144ecda 100644
--- a/src/pages/contents/[slug]/index.tsx
+++ b/src/pages/contents/[slug]/index.tsx
@@ -40,7 +40,7 @@ export default function ContentIndex(props: ContentIndexProps): JSX.Element {
{content.text_set.length > 0 ? (
- {langui.content_read_content}
+ {langui.read_content}
) : (
""
@@ -48,7 +48,7 @@ export default function ContentIndex(props: ContentIndexProps): JSX.Element {
{content.audio_set.length > 0 ? (
- {langui.content_listen_content}
+ {langui.listen_content}
) : (
""
@@ -56,7 +56,7 @@ export default function ContentIndex(props: ContentIndexProps): JSX.Element {
{content.video_set.length > 0 ? (
- {langui.content_watch_content}
+ {langui.watch_content}
) : (
""
diff --git a/src/pages/gallery/index.tsx b/src/pages/gallery/index.tsx
index 865078b..f9608f9 100644
--- a/src/pages/gallery/index.tsx
+++ b/src/pages/gallery/index.tsx
@@ -18,7 +18,7 @@ export default function Gallery(props: GalleryProps): JSX.Element {
return (
diff --git a/src/pages/library/[slug].tsx b/src/pages/library/[slug].tsx
index cd44876..235eb31 100644
--- a/src/pages/library/[slug].tsx
+++ b/src/pages/library/[slug].tsx
@@ -58,16 +58,12 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
const subPanel = (
-
+
appLayout.setSubPanelOpen(false)}
@@ -75,7 +71,7 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
{item.gallery.data.length > 0 ? (
appLayout.setSubPanelOpen(false)}
@@ -85,7 +81,7 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
)}
appLayout.setSubPanelOpen(false)}
@@ -93,11 +89,7 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
{item.subitems.data.length > 0 ? (
appLayout.setSubPanelOpen(false)}
@@ -107,11 +99,7 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
)}
{item.contents.data.length > 0 ? (
-
+
) : (
""
)}
@@ -140,7 +128,7 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
{item.subitem_of.data.length > 0 ? (
-
{langui.global_subitem_of}
+
{langui.subitem_of}
@@ -172,7 +160,7 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
{item.gallery.data.length > 0 ? (
-
{langui.library_item_gallery}
+
{langui.gallery}
{item.gallery.data.map((galleryItem) => (
- {langui.library_item_details}
+ {langui.details}
{item.metadata.length > 0 ? (
-
{langui.global_type}
+
{langui.type}
{prettyItemType(item.metadata[0], langui)}
{"›"}
@@ -215,7 +203,7 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
{item.release_date ? (
-
{langui.global_release_date}
+
{langui.release_date}
{prettyDate(item.release_date)}
) : (
@@ -224,7 +212,7 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
{item.price ? (
-
{langui.global_price}
+
{langui.price}
{prettyPrice(item.price)}
) : (
@@ -233,17 +221,17 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
{item.size ? (
<>
-
{langui.library_item_physical_size}
+
{langui.size}
-
{langui.global_width}:
+
{langui.width}:
{item.size.width} mm
{convertMmToInch(item.size.width)} in
-
{langui.global_height}:
+
{langui.height}:
{item.size.height} mm
{convertMmToInch(item.size.height)} in
@@ -251,7 +239,7 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
{item.size.thickness ? (
-
{langui.global_thickness}:
+
{langui.thickness}:
{item.size.thickness} mm
{convertMmToInch(item.size.thickness)} in
@@ -269,44 +257,44 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
{item.metadata.length > 0 ? (
<>
- {langui.library_item_type_information}
+ {langui.type_information}
{item.metadata[0].__typename === "ComponentMetadataBooks" ? (
<>
-
{langui.global_pages}:
+
{langui.pages}:
{item.metadata[0].page_count}
-
{langui.global_binding}:
+
{langui.binding}:
{item.metadata[0].binding_type ===
Enum_Componentmetadatabooks_Binding_Type.Paperback
- ? langui.global_paperback
+ ? langui.paperback
: item.metadata[0].binding_type ===
Enum_Componentmetadatabooks_Binding_Type.Hardcover
- ? langui.global_hardcover
+ ? langui.hardcover
: ""}
-
{langui.global_page_order}:
+
{langui.page_order}:
{item.metadata[0].page_order ===
Enum_Componentmetadatabooks_Page_Order.LeftToRight
- ? langui.global_left_to_right
+ ? langui.left_to_right
: item.metadata[0].page_order ===
Enum_Componentmetadatabooks_Page_Order.RightToLeft
- ? langui.global_right_to_left
+ ? langui.right_to_left
: ""}
-
{langui.global_languages}:
+
{langui.languages}:
{item.metadata[0].languages.data.map((lang) => (
{lang.attributes.name}
@@ -327,7 +315,7 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
"ComponentMetadataOther" ? (
<>
-
{langui.global_type}:
+
{langui.type}:
{item.metadata[0].subtype.data.attributes.titles
.length > 0
@@ -357,8 +345,8 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
>
{isVariantSet
- ? langui.library_item_variants
- : langui.library_item_subitems}
+ ? langui.variants
+ : langui.subitems}
{item.subitems.data.map((subitem) => (
@@ -374,8 +362,8 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
)}
{item.contents.data.length > 0 ? (
-
-
{langui.library_item_content}
+
+
{langui.contents}
{item.contents.data.map((content) => (
- {langui.library_item_view_scans}
+ {langui.view_scans}
) : (
""
@@ -450,7 +438,7 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
- {langui.library_item_open_content}
+ {langui.open_content}
) : (
""
@@ -474,7 +462,7 @@ export default function LibrarySlug(props: LibrarySlugProps): JSX.Element {
return (
(sortBy(groupingMethod, filteredItems));
const [groups, setGroups] = useState(
- getGroups(groupingMethod, sortedItems)
+ getGroups(langui, groupingMethod, sortedItems)
);
useEffect(() => {
@@ -59,26 +59,22 @@ export default function Library(props: LibraryProps): JSX.Element {
}, [filteredItems, sortingMethod]);
useEffect(() => {
- setGroups(getGroups(groupingMethod, sortedItems));
- }, [groupingMethod, sortedItems]);
+ setGroups(getGroups(langui, groupingMethod, sortedItems));
+ }, [langui, groupingMethod, sortedItems]);
const subPanel = (
-
Group by:
+
{langui.group_by}:
-
Order by:
+
{langui.order_by}:
-
Show subitems:
+
{langui.show_subitems}:
@@ -128,7 +120,7 @@ export default function Library(props: LibraryProps): JSX.Element {
);
return (
{
};
function getGroups(
+ langui: GetWebsiteInterfaceQuery["websiteInterfaces"]["data"][number]["attributes"],
groupByType: number,
items: LibraryProps["libraryItems"]["libraryItems"]["data"]
): GroupLibraryItems {
@@ -164,52 +157,52 @@ function getGroups(
case 1:
const groupType: GroupLibraryItems = new Map();
- groupType.set("Audio", []);
- groupType.set("Game", []);
- groupType.set("Textual", []);
- groupType.set("Video", []);
- groupType.set("Other", []);
- groupType.set("No type", []);
+ groupType.set(langui.audio, []);
+ groupType.set(langui.game, []);
+ groupType.set(langui.textual, []);
+ groupType.set(langui.video, []);
+ groupType.set(langui.other, []);
+ groupType.set(langui.no_type, []);
items.map((item) => {
if (item.attributes.metadata.length > 0) {
switch (item.attributes.metadata[0].__typename) {
case "ComponentMetadataAudio":
- groupType.get("Audio")?.push(item);
+ groupType.get(langui.audio)?.push(item);
break;
case "ComponentMetadataGame":
- groupType.get("Game")?.push(item);
+ groupType.get(langui.game)?.push(item);
break;
case "ComponentMetadataBooks":
- groupType.get("Textual")?.push(item);
+ groupType.get(langui.textual)?.push(item);
break;
case "ComponentMetadataVideo":
- groupType.get("Video")?.push(item);
+ groupType.get(langui.video)?.push(item);
break;
case "ComponentMetadataOther":
switch (
item.attributes.metadata[0].subtype.data.attributes.slug
) {
case "audio-case":
- groupType.get("Audio")?.push(item);
+ groupType.get(langui.audio)?.push(item);
break;
case "video-case":
- groupType.get("Video")?.push(item);
+ groupType.get(langui.video)?.push(item);
break;
case "game-case":
- groupType.get("Game")?.push(item);
+ groupType.get(langui.game)?.push(item);
break;
default:
- groupType.get("Other")?.push(item);
+ groupType.get(langui.other)?.push(item);
break;
}
break;
}
} else {
- groupType.get("No type")?.push(item);
+ groupType.get(langui.no_type)?.push(item);
}
});
return groupType;
@@ -227,14 +220,14 @@ function getGroups(
years.map((year) => {
groupYear.set(year.toString(), []);
});
- groupYear.set("No year", []);
+ groupYear.set(langui.no_year, []);
items.map((item) => {
if (item.attributes.release_date) {
groupYear
.get(item.attributes.release_date.year.toString())
?.push(item);
} else {
- groupYear.get("No year")?.push(item);
+ groupYear.get(langui.no_year)?.push(item);
}
});
diff --git a/src/pages/merch/index.tsx b/src/pages/merch/index.tsx
index eaf0f80..393688a 100644
--- a/src/pages/merch/index.tsx
+++ b/src/pages/merch/index.tsx
@@ -15,7 +15,7 @@ export default function Merch(props: MerchProps): JSX.Element {
@@ -23,7 +23,7 @@ export default function Merch(props: MerchProps): JSX.Element {
return (
diff --git a/src/pages/news/index.tsx b/src/pages/news/index.tsx
index 3521fba..4777519 100644
--- a/src/pages/news/index.tsx
+++ b/src/pages/news/index.tsx
@@ -15,7 +15,7 @@ export default function News(props: NewsProps): JSX.Element {
@@ -23,7 +23,7 @@ export default function News(props: NewsProps): JSX.Element {
return (
diff --git a/src/pages/wiki/index.tsx b/src/pages/wiki/index.tsx
index 3ad13df..102448a 100644
--- a/src/pages/wiki/index.tsx
+++ b/src/pages/wiki/index.tsx
@@ -16,7 +16,7 @@ export default function Hubs(props: WikiProps): JSX.Element {
@@ -25,7 +25,7 @@ export default function Hubs(props: WikiProps): JSX.Element {
return (