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: "عن هذا المستجد",
|
|||
|
|
},
|
|||
|
|
};
|