230 lines
10 KiB
TypeScript
230 lines
10 KiB
TypeScript
/* ============================================================================
|
||
PAGE COPY - Knowledge and Impact + News
|
||
----------------------------------------------------------------------------
|
||
Section headings, intros and empty-state messages for the three sections
|
||
this file set owns. The EN and AR strings are taken verbatim from
|
||
docs/SHARPER_Website_Draft_Section_EN_AR.docx (§5 News and Updates,
|
||
§6 Resources and Publications, §7 Knowledge Hub); the empty-state wording is
|
||
the only addition, because the draft has no copy for "the CMS is empty".
|
||
|
||
This is page prose, not UI chrome, which is why it lives beside the routes
|
||
instead of in ~/i18n/messages - the catalogue holds labels the whole site
|
||
shares. Everything a reader could otherwise mistake for content - counts,
|
||
figures, author names, dates - comes from Strapi, never from here: the draft
|
||
marks its own numbers "TBD" and says they must not be published unconfirmed.
|
||
========================================================================= */
|
||
|
||
import type { Locale } from "~/i18n";
|
||
|
||
export interface SectionCopy {
|
||
/** H1 of the section. */
|
||
readonly heading: string;
|
||
/** The standfirst under the H1. */
|
||
readonly intro: string;
|
||
/** Shown when the section has no entries at all yet. */
|
||
readonly emptyTitle: string;
|
||
readonly emptyBody: string;
|
||
/** `<meta name="description">` for the listing. */
|
||
readonly metaDescription: string;
|
||
}
|
||
|
||
type Localised<T> = Readonly<Record<Locale, T>>;
|
||
|
||
/* ---------------------------------------------------------------------------
|
||
§6 RESOURCES AND PUBLICATIONS
|
||
------------------------------------------------------------------------ */
|
||
|
||
export const RESOURCES_COPY: Localised<SectionCopy> = {
|
||
en: {
|
||
heading: "Reports, Research, and Publications",
|
||
intro:
|
||
"Findings, articles, and official documents produced through SHARP-ER’s research and dialogue work.",
|
||
emptyTitle: "No publications have been added yet.",
|
||
emptyBody:
|
||
"Reports, research and official documents will appear here as they are published.",
|
||
metaDescription:
|
||
"Findings, articles and official documents produced through SHARP-ER’s research and dialogue work. Filter by topic, date, author and partner organisation.",
|
||
},
|
||
ar: {
|
||
heading: "تقارير وأبحاث ومنشورات",
|
||
intro:
|
||
"نتائج ومقالات ووثائق رسمية صادرة عن أعمال البحث والحوار في مشروع SHARP-ER.",
|
||
emptyTitle: "لم تُضف أي منشورات بعد.",
|
||
emptyBody: "ستظهر هنا التقارير والأبحاث والوثائق الرسمية فور نشرها.",
|
||
metaDescription:
|
||
"نتائج ومقالات ووثائق رسمية صادرة عن أعمال البحث والحوار في مشروع SHARP-ER، مع إمكانية التصفية حسب الموضوع والتاريخ والكاتب والمنظمة الشريكة.",
|
||
},
|
||
};
|
||
|
||
/* ---------------------------------------------------------------------------
|
||
§7 KNOWLEDGE HUB
|
||
------------------------------------------------------------------------ */
|
||
|
||
export const KNOWLEDGE_COPY: Localised<SectionCopy> = {
|
||
en: {
|
||
heading: "Learn From the SHARP Network",
|
||
intro:
|
||
"Training materials, dialogue guides, and lessons from civil society organisations putting SHARP-ER’s approach into practice.",
|
||
emptyTitle: "The knowledge hub is being prepared.",
|
||
emptyBody:
|
||
"Training modules, dialogue guides, case studies and FAQs will appear here as they are published.",
|
||
metaDescription:
|
||
"Training modules and toolkits, Civil Society Law Session guides, case studies and plain-language FAQs from across the SHARP network.",
|
||
},
|
||
ar: {
|
||
heading: "تعلّم من شبكة SHARP",
|
||
intro:
|
||
"مواد تدريبية، وأدلة حوار، ودروس مستفادة من منظمات المجتمع المدني التي تطبّق نهج SHARP-ER على أرض الواقع.",
|
||
emptyTitle: "يجري تجهيز مركز المعرفة.",
|
||
emptyBody:
|
||
"ستظهر هنا الوحدات التدريبية وأدلة الحوار ودراسات الحالة والأسئلة الشائعة فور نشرها.",
|
||
metaDescription:
|
||
"وحدات تدريبية وأدلة عملية، وأدلة جلسات قانون المجتمع المدني، ودراسات حالة، وأسئلة شائعة بلغة مبسّطة من شبكة SHARP.",
|
||
},
|
||
};
|
||
|
||
/**
|
||
* The five kinds of material the hub carries - the values are the
|
||
* `knowledge-item.itemType` enumeration in the CMS, verbatim.
|
||
*
|
||
* The LABELS live here rather than in ~/i18n because the CMS enumeration is
|
||
* the source of truth and it keeps training modules and toolkits apart, so
|
||
* each of the five needs its own distinct label - a filter cannot offer two
|
||
* options reading the same. The wording is the draft's own.
|
||
*/
|
||
export const KNOWLEDGE_TYPE_LABELS: Localised<Readonly<Record<string, string>>> = {
|
||
en: {
|
||
"training-module": "Training modules",
|
||
toolkit: "Toolkits",
|
||
"law-session-guide": "Civil Society Law Session guides",
|
||
"case-study": "Case studies",
|
||
faq: "FAQs",
|
||
},
|
||
ar: {
|
||
"training-module": "وحدات تدريبية",
|
||
toolkit: "أدلة عملية",
|
||
"law-session-guide": "أدلة جلسات قانون المجتمع المدني",
|
||
"case-study": "دراسات حالة",
|
||
faq: "الأسئلة الشائعة",
|
||
},
|
||
};
|
||
|
||
/** The one-line description that sits under each type. */
|
||
export const KNOWLEDGE_TYPE_BLURBS: Localised<Readonly<Record<string, string>>> = {
|
||
en: {
|
||
"training-module": "From peer-to-peer learning and dialogue-facilitation training.",
|
||
toolkit: "Practical materials civil society organisations can put to work directly.",
|
||
"law-session-guide": "From joint sessions with the Commission on Civil Society (CCS).",
|
||
"case-study": "From CSO sub-projects across the network.",
|
||
faq: "Plain-language answers on rule of law, governance, and civic participation basics.",
|
||
},
|
||
ar: {
|
||
"training-module": "من التعلّم بين الأقران وتدريب تيسير الحوار.",
|
||
toolkit: "مواد عملية يمكن لمنظمات المجتمع المدني استخدامها مباشرة.",
|
||
"law-session-guide": "من الجلسات المشتركة مع لجنة المجتمع المدني (CCS).",
|
||
"case-study": "من المشاريع الفرعية لمنظمات المجتمع المدني عبر الشبكة.",
|
||
faq: "إجابات بلغة مبسّطة حول أساسيات سيادة القانون والحوكمة والمشاركة المدنية.",
|
||
},
|
||
};
|
||
|
||
/* ---------------------------------------------------------------------------
|
||
§5 NEWS AND UPDATES
|
||
------------------------------------------------------------------------ */
|
||
|
||
export interface NewsCopy extends SectionCopy {
|
||
/** Description of the "SHARP-ER News" tab. */
|
||
readonly projectBlurb: string;
|
||
/** Description of the "From the Network" tab. */
|
||
readonly networkBlurb: string;
|
||
}
|
||
|
||
export const NEWS_COPY: Localised<NewsCopy> = {
|
||
en: {
|
||
heading: "News from SHARP-ER and the Network",
|
||
intro:
|
||
"Milestones from the project team, and updates from the civil society organisations we work with.",
|
||
projectBlurb:
|
||
"Official updates on milestones, campaign launches, publications, and events.",
|
||
networkBlurb:
|
||
"Updates submitted by CSOs granted as part of the consortium, each card crediting the organisation.",
|
||
emptyTitle: "There are no updates to show yet.",
|
||
emptyBody:
|
||
"News from the project team and from the SHARP network will appear here.",
|
||
metaDescription:
|
||
"Milestones from the SHARP-ER project team, and updates from the civil society organisations we work with across Libya.",
|
||
},
|
||
ar: {
|
||
heading: "أخبار من SHARP-ER ومن الشبكة",
|
||
intro:
|
||
"محطات رئيسية من فريق المشروع، ومستجدات من منظمات المجتمع المدني التي نعمل معها.",
|
||
projectBlurb:
|
||
"تحديثات رسمية حول المحطات الرئيسية، وإطلاق الحملات، والمنشورات، والفعاليات.",
|
||
networkBlurb:
|
||
"مستجدات تنشرها منظمات المجتمع المدني الشريكة ضمن الائتلاف، وتُنسب كل بطاقة إلى المنظمة الناشرة.",
|
||
emptyTitle: "لا توجد مستجدات لعرضها بعد.",
|
||
emptyBody: "ستظهر هنا أخبار فريق المشروع ومستجدات شبكة SHARP.",
|
||
metaDescription:
|
||
"محطات رئيسية من فريق مشروع SHARP-ER، ومستجدات من منظمات المجتمع المدني التي نعمل معها في مختلف أنحاء ليبيا.",
|
||
},
|
||
};
|
||
|
||
/* ---------------------------------------------------------------------------
|
||
DETAIL PAGES
|
||
------------------------------------------------------------------------ */
|
||
|
||
export interface DetailCopy {
|
||
/** "Back to all publications" - the link out of a detail page. */
|
||
readonly backToListing: string;
|
||
/** Heading of the metadata block. */
|
||
readonly aboutThis: string;
|
||
readonly published: string;
|
||
readonly author: string;
|
||
readonly partner: string;
|
||
readonly topics: string;
|
||
readonly openExternal: string;
|
||
}
|
||
|
||
export const DETAIL_COPY: Localised<DetailCopy> = {
|
||
en: {
|
||
backToListing: "Back to all publications",
|
||
aboutThis: "About this publication",
|
||
published: "Published",
|
||
author: "Author",
|
||
partner: "Partner organisation",
|
||
topics: "Topics",
|
||
openExternal: "Open the document",
|
||
},
|
||
ar: {
|
||
backToListing: "العودة إلى جميع المنشورات",
|
||
aboutThis: "عن هذا المنشور",
|
||
published: "تاريخ النشر",
|
||
author: "الكاتب",
|
||
partner: "المنظمة الشريكة",
|
||
topics: "المواضيع",
|
||
openExternal: "فتح الوثيقة",
|
||
},
|
||
};
|
||
|
||
export const KNOWLEDGE_DETAIL_COPY: Localised<Pick<DetailCopy, "backToListing" | "aboutThis">> =
|
||
{
|
||
en: {
|
||
backToListing: "Back to the knowledge hub",
|
||
aboutThis: "About this material",
|
||
},
|
||
ar: {
|
||
backToListing: "العودة إلى مركز المعرفة",
|
||
aboutThis: "عن هذه المادة",
|
||
},
|
||
};
|
||
|
||
export const NEWS_DETAIL_COPY: Localised<Pick<DetailCopy, "backToListing" | "aboutThis">> = {
|
||
en: {
|
||
backToListing: "Back to all news",
|
||
aboutThis: "About this update",
|
||
},
|
||
ar: {
|
||
backToListing: "العودة إلى جميع الأخبار",
|
||
aboutThis: "عن هذا المستجد",
|
||
},
|
||
};
|