diff --git a/pages/docs/_meta.json b/pages/docs/_meta.json index 67f4c831..7d87ceef 100644 --- a/pages/docs/_meta.json +++ b/pages/docs/_meta.json @@ -20,6 +20,7 @@ "label": "Label", "metadata": "Metadata", "partOf": "PartOf", + "rendering": "Rendering", "requiredStatement": "RequiredStatement", "seeAlso": "SeeAlso", "summary": "Summary", diff --git a/pages/docs/i18n.mdx b/pages/docs/i18n.mdx index ac38d361..be85f0f1 100644 --- a/pages/docs/i18n.mdx +++ b/pages/docs/i18n.mdx @@ -4,16 +4,72 @@ title: i18n # i18n -We welcome contributions to Clover in any language. If you would like to contribute to Clover in a language other than English, please follow the instructions below. +We welcome contributions to Clover IIIF in any language. If you would like to contribute to a language, please follow the instructions below. + +```json filename="src/i18n/locales/en.json" +{ + "commonClose": "Close", + "commonNext": "Next", + "commonPrevious": "Previous", + "commonSearch": "Search", + "commonSearchPlaceholder": "Search...", + "commonShare": "Share", + "commonViewAll": "View All", + ... +} +``` ## How to contribute -1. Fork the Clover repository. -2. Create a new directory in the `i18n` directory with the name of the language you would like to contribute to. -3. Copy the `en` directory to the new directory. -4. Translate the files in the new directory. +1. Fork the [Clover IIIF](https://github.com/samvera-labs/clover-iiif) repository. +2. Create a new file in the `src/i18n/locales` directory for the relative BCP 47 language code you would like to contribute towards, example `fr.json` for French. +3. Copy the `en.json` file as a template and translate the string values for each key. +4. Import the new language JSON file within the `src/i18n/locales/index.ts` file and include it in the default export. 5. Submit a pull request. -## Translation guidelines +### Adding a new locale + +Add a new file in the `src/i18n/locales` directory with the relative BCP 47 language code, example `fr.json` for French. + +```json filename="src/i18n/locales/fr.json" +{ + "commonClose": "Fermer", + "commonNext": "Suivant", + "commonPrevious": "Précédent", + "commonSearch": "Rechercher", + "commonSearchPlaceholder": "Rechercher...", + "commonShare": "Partager", + "commonViewAll": "Voir Tout", + ... +} +``` + +```ts filename="src/i18n/locales/index.ts" +import en from "./en.json"; +import fr from "./fr.json"; + +export default { + en, + fr, +}; +``` + +### Language and Region subtags + +If you would like to contribute a locale for a lanugage with a region subtag, +please use the `-` dash character to separate the language and region in the filename, +example `fr-CA.json` for Canadian French. + +You will need to adjust the import statement in the `src/i18n/locales/index.ts` file to include the new locale. + +```ts filename="src/i18n/locales/index.ts" +import en from "./en.json"; +import fr from "./fr.json"; +import frCA from "./fr-CA.json"; -## Translation status +export default { + en, + fr, + "fr-CA": frCA, +}; +``` diff --git a/src/components/Slider/Header/ViewAll.tsx b/src/components/Slider/Header/ViewAll.tsx index 60b6f233..16efee0b 100644 --- a/src/components/Slider/Header/ViewAll.tsx +++ b/src/components/Slider/Header/ViewAll.tsx @@ -1,6 +1,7 @@ import { Homepage } from "src/components/Primitives"; import React from "react"; import { styled } from "src/styles/stitches.config"; +import { useTranslation } from "react-i18next"; const ViewAllStyled = styled(Homepage, { display: "flex", @@ -31,7 +32,9 @@ const ViewAllStyled = styled(Homepage, { }); const ViewAll = (props) => { - return View All; + const { t } = useTranslation(); + + return {t("commonViewAll")}; }; export default ViewAll; diff --git a/src/components/Viewer/InformationPanel/Annotation/VTT/VTT.tsx b/src/components/Viewer/InformationPanel/Annotation/VTT/VTT.tsx index 4f75463d..4aea1e0d 100644 --- a/src/components/Viewer/InformationPanel/Annotation/VTT/VTT.tsx +++ b/src/components/Viewer/InformationPanel/Annotation/VTT/VTT.tsx @@ -9,7 +9,6 @@ import { InternationalString } from "@iiif/presentation-3"; import Menu from "src/components/Viewer/InformationPanel/Menu"; import { getLabel } from "src/hooks/use-iiif"; import { parse } from "node-webvtt"; -import { useTranslation } from "react-i18next"; type AnnotationItemVTTProps = { label: InternationalString | undefined; diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index e471a14d..ffd0cb8e 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -5,6 +5,7 @@ "commonSearch": "Search", "commonSearchPlaceholder": "Search...", "commonShare": "Share", + "commonViewAll": "View All", "copyFailure": "Failed", "copySuccess": "Copied", "informationPanelTabs": "Select",