replace the CMS definitions page with the terminology page
- serve the per-language terminology editions at /about/definitions with the About sidebar; /terms redirects there - title every edition "Definitions" to match the sidebar label - drop the self-referencing link to the Definitions page - add an Arabic edition built from the Arabic glossary - point the add-language and sync-language skills at the new route
This commit is contained in:
parent
1128823172
commit
80cbfadb85
17 changed files with 307 additions and 108 deletions
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
name: add-language
|
||||
description: Bring a new language onto the marketing site — the config/languages.ts entry from its glossary record, the site strings, the map widget locales and bundles, the /terms edition, and the CMS pages. Use after the language has a glossary with reviewed terms. Invoke with /add-language <code>.
|
||||
description: Bring a new language onto the marketing site — the config/languages.ts entry from its glossary record, the site strings, the map widget locales and bundles, the /about/definitions terminology edition, and the CMS pages. Use after the language has a glossary with reviewed terms. Invoke with /add-language <code>.
|
||||
user-invocable: true
|
||||
---
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ file is not obviously broken. Check the count, not the appearance.
|
|||
per-language strings for the languages it supports, add this one by patching
|
||||
its literals in place; otherwise leave it and say so.
|
||||
|
||||
## 5. The `/terms` edition
|
||||
## 5. The terminology edition (`/about/definitions`)
|
||||
|
||||
Create `app/utils/terms/{code}.ts` from `en.ts` and register it in
|
||||
`app/utils/terms/index.ts`. A locale with no edition falls back to English.
|
||||
|
|
@ -81,7 +81,7 @@ PeopleGroups.org use, and a rationale that cites this language's reference Bible
|
|||
wherever the choice is Scripture-driven. An entry that needed no real decision
|
||||
in this language still appears, with its definition and a one-line rationale.
|
||||
|
||||
Two rendering rules already encoded in `app/pages/terms.vue` that a new edition
|
||||
Two rendering rules already encoded in `app/pages/about/definitions.vue` that a new edition
|
||||
must not break: entries stay flat children of `.page-body`, because the site's
|
||||
typography uses direct-child selectors and a global rule gives every `<section>`
|
||||
landing-page padding; and a space at the edge of a `<template>` fragment has to
|
||||
|
|
@ -109,7 +109,7 @@ Pages live in this site's database. Create the translations through the
|
|||
|
||||
Set `enabled: true` once the site strings and the map locales are done. Then run
|
||||
`npx nuxi typecheck`, start the dev server, and read the home page, a people
|
||||
group page, the adopt flow and `/{code}/terms` end to end. For a right-to-left
|
||||
group page, the adopt flow and `/{code}/about/definitions` end to end. For a right-to-left
|
||||
language, confirm the layout mirrors.
|
||||
|
||||
The typecheck baseline is 122 pre-existing errors in the external layers and
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
name: sync-language
|
||||
description: Bring the marketing site's existing text for one language into line with the current DOXA glossary — site strings, the map widget locales and their bundles, the /terms edition, and the published CMS pages. Use after a reviewer confirms or changes terminology. Invoke with /sync-language <code>.
|
||||
description: Bring the marketing site's existing text for one language into line with the current DOXA glossary — site strings, the map widget locales and their bundles, the /about/definitions terminology edition, and the published CMS pages. Use after a reviewer confirms or changes terminology. Invoke with /sync-language <code>.
|
||||
user-invocable: true
|
||||
---
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ vocabularies on one page.
|
|||
can differ from the current source. Anchor on a nearby unique literal,
|
||||
because several locales' blocks sit within a few kilobytes of each other.
|
||||
|
||||
## 5. The `/terms` edition
|
||||
## 5. The terminology edition (`/about/definitions`)
|
||||
|
||||
`app/utils/terms/{code}.ts`, registered in `app/utils/terms/index.ts`. It
|
||||
documents this language's terminology decisions: the chosen term, the
|
||||
|
|
|
|||
97
app/pages/about/definitions.vue
Normal file
97
app/pages/about/definitions.vue
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
<script setup lang="ts">
|
||||
// Terminology page (/about/definitions). Hardcoded rather than CMS:
|
||||
// each locale ships its own edition in app/utils/terms/ documenting that
|
||||
// language's terminology decisions; locales without an edition fall back
|
||||
// to the English one. The CMS keeps a "definitions" page under About only
|
||||
// so the sidebar lists it; this route takes priority over the catch-all.
|
||||
|
||||
import { getTermsContent } from '~/utils/terms'
|
||||
|
||||
interface PageResponse {
|
||||
title: string
|
||||
menu_parent: { slug: string; title: string }
|
||||
children: Array<{ slug: string; url: string; title: string }>
|
||||
}
|
||||
|
||||
const { locale } = useI18n()
|
||||
const localePath = useLocalePath()
|
||||
|
||||
const content = computed(() => getTermsContent(locale.value))
|
||||
|
||||
const { data: about } = await useAsyncData<PageResponse | null>(
|
||||
() => `about-sidebar-${locale.value}`,
|
||||
async () => {
|
||||
try {
|
||||
return await $fetch<PageResponse>('/api/pages/about', {
|
||||
query: { locale: locale.value }
|
||||
})
|
||||
} catch {
|
||||
return null
|
||||
}
|
||||
},
|
||||
{ watch: [() => locale.value] }
|
||||
)
|
||||
|
||||
useHead(() => ({ title: content.value.title }))
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="container page-content">
|
||||
<div class="with-sidebar">
|
||||
<aside class="sidebar">
|
||||
<nav class="stack" aria-label="Child pages navigation">
|
||||
<div>
|
||||
<ul class="stack | max-width-xs" role="list">
|
||||
<li v-if="about">
|
||||
<span class="font-size-lg category-heading">
|
||||
{{ about.menu_parent.title }}
|
||||
</span>
|
||||
</li>
|
||||
<li v-for="child in about?.children ?? []" :key="child.url">
|
||||
<NuxtLink
|
||||
:class="{ 'current-link': child.url === 'about/definitions' }"
|
||||
:to="localePath(`/${child.url}`)"
|
||||
>{{ child.title }}</NuxtLink>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</aside>
|
||||
|
||||
<article class="page">
|
||||
<h1 class="page-title">{{ content.title }}</h1>
|
||||
<div class="page-body">
|
||||
<p v-for="(paragraph, i) in content.intro" :key="i">{{ paragraph }}</p>
|
||||
|
||||
<!-- Entries render as flat children of .page-body — the same shape the
|
||||
CMS catch-all produces — so the site's direct-child typography
|
||||
rules (heading and paragraph rhythm) apply as on CMS pages.
|
||||
Wrapping each entry in an element would defeat those selectors
|
||||
(and <section> carries landing-page band padding globally). -->
|
||||
<template v-for="entry in content.entries" :key="entry.term">
|
||||
<h2>{{ entry.term }}</h2>
|
||||
<p v-if="entry.english">
|
||||
<em>{{ content.labels.english }} {{ entry.english }}</em>
|
||||
</p>
|
||||
<p v-if="entry.definition">
|
||||
<!-- Spaces are interpolated: literal whitespace at template-fragment
|
||||
edges is stripped by Vue's whitespace condensing. -->
|
||||
<template v-if="entry.english"><strong>{{ content.labels.definition }}</strong>{{ ' ' }}</template>{{ entry.definition }}
|
||||
</p>
|
||||
<p v-if="entry.alternatives">
|
||||
<strong>{{ content.labels.alternatives }}</strong> {{ entry.alternatives }}
|
||||
</p>
|
||||
<p v-if="entry.jp || entry.pg">
|
||||
<template v-if="entry.jp"><strong>{{ content.labels.jp }}</strong>{{ ' ' + entry.jp }}</template>
|
||||
<template v-if="entry.jp && entry.pg">{{ ' ' }}</template>
|
||||
<template v-if="entry.pg"><strong>{{ content.labels.pg }}</strong>{{ ' ' + entry.pg }}</template>
|
||||
</p>
|
||||
<p v-if="entry.rationale">
|
||||
<strong>{{ content.labels.rationale }}</strong> {{ entry.rationale }}
|
||||
</p>
|
||||
</template>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
<script setup lang="ts">
|
||||
// Terminology page (/terms, /{locale}/terms). Hardcoded rather than CMS:
|
||||
// each locale ships its own edition in app/utils/terms/ documenting that
|
||||
// language's terminology decisions; locales without an edition fall back
|
||||
// to the English one. Mounted ahead of the CMS catch-all by route priority.
|
||||
|
||||
import { getTermsContent } from '~/utils/terms'
|
||||
|
||||
const { locale } = useI18n()
|
||||
const localePath = useLocalePath()
|
||||
|
||||
const content = computed(() => getTermsContent(locale.value))
|
||||
|
||||
useHead(() => ({ title: content.value.title }))
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="container page-content">
|
||||
<h1 class="page-title">{{ content.title }}</h1>
|
||||
<div class="page-body">
|
||||
<p v-for="(paragraph, i) in content.intro" :key="i">{{ paragraph }}</p>
|
||||
<p>
|
||||
{{ content.seeDefinitionsBefore }}
|
||||
<NuxtLink :to="localePath('/about/definitions')">{{ content.definitionsLinkLabel }}</NuxtLink>{{ content.seeDefinitionsAfter }}
|
||||
</p>
|
||||
|
||||
<!-- Entries render as flat children of .page-body — the same shape the
|
||||
CMS catch-all produces — so the site's direct-child typography
|
||||
rules (heading and paragraph rhythm) apply as on CMS pages.
|
||||
Wrapping each entry in an element would defeat those selectors
|
||||
(and <section> carries landing-page band padding globally). -->
|
||||
<template v-for="entry in content.entries" :key="entry.term">
|
||||
<h2>{{ entry.term }}</h2>
|
||||
<p v-if="entry.english">
|
||||
<em>{{ content.labels.english }} {{ entry.english }}</em>
|
||||
</p>
|
||||
<p v-if="entry.definition">
|
||||
<!-- Spaces are interpolated: literal whitespace at template-fragment
|
||||
edges is stripped by Vue's whitespace condensing. -->
|
||||
<template v-if="entry.english"><strong>{{ content.labels.definition }}</strong>{{ ' ' }}</template>{{ entry.definition }}
|
||||
</p>
|
||||
<p v-if="entry.alternatives">
|
||||
<strong>{{ content.labels.alternatives }}</strong> {{ entry.alternatives }}
|
||||
</p>
|
||||
<p v-if="entry.jp || entry.pg">
|
||||
<template v-if="entry.jp"><strong>{{ content.labels.jp }}</strong>{{ ' ' + entry.jp }}</template>
|
||||
<template v-if="entry.jp && entry.pg">{{ ' ' }}</template>
|
||||
<template v-if="entry.pg"><strong>{{ content.labels.pg }}</strong>{{ ' ' + entry.pg }}</template>
|
||||
</p>
|
||||
<p v-if="entry.rationale">
|
||||
<strong>{{ content.labels.rationale }}</strong> {{ entry.rationale }}
|
||||
</p>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
182
app/utils/terms/ar.ts
Normal file
182
app/utils/terms/ar.ts
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
import type { TermsContent } from './index'
|
||||
|
||||
export const ar: TermsContent = {
|
||||
title: 'تعريف المصطلحات',
|
||||
intro: [
|
||||
'توثّق هذه الصفحة الخيارات الاصطلاحية العربية لشراكة DOXA. لكل مصطلح: تعريفه، والبدائل التي دُرست، وسبب اختياره.',
|
||||
'مصادرنا: مسرد DOXA العربي الذي راجعه متحدثون أصليون، وقد أُكِّد فيه حتى الآن 22 مصطلحًا من أصل 39، ونشير في كل مدخل إلى المصطلحات التي ما زالت مسودة. ولأن الفروق بين اللهجات العربية واسعة، نختار الصياغة التي تُقرأ بطبيعية لدى أوسع شريحة من القرّاء العرب، ونتجنّب الكلمات التي تحمل في بعض البلدان إيحاءً عسكريًا أو سياسيًا. ونتبع ترجمة فاندايك (SVD) في كل تعبير كتابي. أما Joshua Project وPeopleGroups.org (IMB) فلا ينشران بالعربية، لذا لا تستشهد بهما هذه النسخة.'
|
||||
],
|
||||
labels: {
|
||||
english: 'بالإنجليزية:',
|
||||
definition: 'التعريف:',
|
||||
alternatives: 'بدائل دُرست:',
|
||||
jp: 'Joshua Project:',
|
||||
pg: 'PeopleGroups.org:',
|
||||
rationale: 'سبب الاختيار:'
|
||||
},
|
||||
entries: [
|
||||
{
|
||||
term: 'مجموعة شعبية',
|
||||
english: 'people group',
|
||||
definition:
|
||||
'مجموعة إثنولغوية (عِرقية-لغوية) يرى أفرادها أن بينهم انتماءً مشتركًا قائمًا على اللغة والثقافة والدين ونظرة العالم؛ وهي أكبر مجموعة يمكن أن ينتشر فيها الإنجيل دون أن يصطدم بحواجز في الفهم أو القبول. إنها الوحدة الأساسية لكل ما تحصيه DOXA.',
|
||||
rationale:
|
||||
'اتفق عليه ثلاثة مراجعين. المفهوم عِرقي ولغوي لا سياسي، فلا يصحّ أن يُترجَم بـ«دولة» أو «أمة» بمعناها السياسي، ولا بـ«قبيلة» لما تحمله من إيحاء بالبدائية، ولا بـ«فئة اجتماعية». وأي ترجمة غير دقيقة هنا تُفقد كل الإحصاءات معناها.'
|
||||
},
|
||||
{
|
||||
term: 'مجموعة شعبية غير مبلَّغة (UPG)',
|
||||
english: 'unreached people group (UPG)',
|
||||
definition:
|
||||
'حوالي تلميذين أو أقل من كل 100 شخص (≤ 2%)، مع افتقارها إلى القدرة على إنشاء كنائس محلية أصيلة دون مساعدة عبر الثقافات. تتبع DOXA تعريف IMB.',
|
||||
alternatives: 'غير مبلَّغة بالإنجيل',
|
||||
rationale:
|
||||
'اتفق عليه ثلاثة مراجعين، وحذفوا «بالإنجيل» من المصطلح لاختصاره؛ فالمعنى واضح من السياق. والصياغة لا توحي بأن المجموعة «غير مختارة» روحيًا أو مهمَّشة اجتماعيًا.'
|
||||
},
|
||||
{
|
||||
term: 'غير مَخْدُومَة',
|
||||
english: 'unengaged',
|
||||
definition:
|
||||
'لا يُعرَف فيها مؤمنون أو يوجد عدد ضئيل جدًا منهم، ولا يوجد جهد معروف لإنشاء كنائس قادرة على الاستمرار ذاتيًا — أي تغيب عنها المستويات الأربعة للانخراط الفعّال: جهد رسولي (ريادي تأسيسي) مُقيم بين الشعب، والتزام بالعمل داخل الثقافة المحلية وبلغة القلب، والتزام بخدمة طويلة الأمد، وزرع الإنجيل بهدف ظهور حركة لغرس الكنائس.',
|
||||
rationale:
|
||||
'مصطلح تقني يعني أنه لا أحد يخدم بينهم، لا أن الشعب نفسه غير مبالٍ. وتربط «مَخْدُومَة» المصطلح بالخدمة الروحية، فتصف غياب العاملين لا موقف الناس. أشار المراجع إلى أن هناك طرقًا كثيرة لقول ذلك بالعربية، واستقر على هذه لحالة المجموعة.'
|
||||
},
|
||||
{
|
||||
term: 'مجموعة شعبية غير مبلَّغة وغير مَخْدُومَة (UUPG)',
|
||||
english: 'unengaged unreached people group (UUPG)',
|
||||
definition:
|
||||
'الفئة المركّبة: غير مبلَّغة وغير مَخْدُومَة معًا. وهي المجموعات الشعبية الـ2,085 التي تحشد DOXA الصلاة من أجلها.',
|
||||
rationale:
|
||||
'نحتفظ بالاختصار الدولي UUPG ولا نصوغ اختصارًا عربيًا، تماشيًا مع أدوات الصلاة العالمية. أُكِّد المصطلح في المسرد، لكنه لم يحظَ بإجماع عام بين المراجعين.'
|
||||
},
|
||||
{
|
||||
term: 'مجموعة شعبية بها عمل روحي ضعيف',
|
||||
english: 'under-engaged',
|
||||
definition:
|
||||
'حوالي تلميذ واحد أو أقل من كل 100 شخص (≤ 1%): بدأ العمل، لكن الحاجة ما زالت قائمة إلى مزيد من فرق غرس الكنائس لكي يصبح الانخراط مثمرًا.',
|
||||
rationale:
|
||||
'لا تملك العربية مقابلًا موجزًا للبادئة الإنجليزية under-، فالعبارة الوصفية تنقل أن العمل قد بدأ لكنه غير كافٍ في حجمه، وتضع القصور على العمل لا على الشعب. أُكِّد المصطلح، لكنه لم يحظَ بإجماع عام بين المراجعين.'
|
||||
},
|
||||
{
|
||||
term: 'شعوب المناطق البعيدة',
|
||||
english: 'frontier people group',
|
||||
definition:
|
||||
'حوالي تلميذ واحد أو أقل من كل 1,000 شخص (≤ 0.1%)، ولا توجد فيها حركة توجُّه إلى يسوع مؤكَّدة ومستمرة — الأقل تبليغًا بين غير المبلَّغين. المصطلح مأخوذ من Joshua Project.',
|
||||
rationale:
|
||||
'اتفق عليه ثلاثة مراجعين. يتجنّب الإيحاء العسكري أو السياسي الذي قد تحمله الترجمة الحرفية لكلمة frontier، ويحفظ معنى أن العمل بينهم قد يكون أول اتصال لهم بالإنجيل على الإطلاق.'
|
||||
},
|
||||
{
|
||||
term: 'الانخراط · مجموعة مَخْدُومَة',
|
||||
english: 'engagement · engaged',
|
||||
definition:
|
||||
'نشاط مستمر ومُقيم وعبر الثقافات لمشاركة المسيح وتلمذة الناس، يهدف إلى كنائس قادرة على الاستمرار ذاتيًا، ويجري بطرق ملائمة ثقافيًا وذات صلة محلية.',
|
||||
alternatives: 'منخرطة إرساليًا · انخراط إرسالي',
|
||||
rationale:
|
||||
'مصطلح دقيق: مجرد «المشاركة» أو «التواصل» ليس انخراطًا. نستعمل «الانخراط» للاسم، و«مَخْدُومَة» لوصف المجموعة، فتقابل «غير مَخْدُومَة» مباشرة. لاحظ المراجع أن السياق قد يحتمل صيغًا أخرى، وهي المذكورة بين البدائل.'
|
||||
},
|
||||
{
|
||||
term: 'حركة غرس الكنائس (CPM)',
|
||||
english: 'church-planting movement (CPM)',
|
||||
definition:
|
||||
'تكاثر كنائس محلية أصيلة تغرس كنائس أخرى: أربعة مسارات على الأقل، في كل منها أربعة أجيال روحية، يبلغ مجموعها أكثر من 1,000 شخص.',
|
||||
rationale:
|
||||
'«الغرس» يحفظ صورة الزرع والنمو، و«حركة» تعني زخمًا يتكاثر ذاتيًا لا كنيسة واحدة ولا برنامجًا، على ألّا تُفهم حركةً اجتماعية أو سياسية. نحتفظ بالاختصار الإنجليزي CPM. المصطلح ما زال مسودة في المسرد ولم يؤكده مراجع بعد.'
|
||||
},
|
||||
{
|
||||
term: 'كنيسة محلية أصيلة',
|
||||
english: 'indigenous church',
|
||||
definition:
|
||||
'كنيسة تنشأ من داخل المجموعة الشعبية نفسها، وتنضج في «الذاتيات» الخمس: ذاتية الانتشار، وذاتية الحكم، وذاتية الإعالة، وذاتية التأصيل اللاهوتي، وذاتية الإرسال.',
|
||||
rationale:
|
||||
'«محلية» وحدها قد تعني مجرد كنيسة في الحيّ، فتضيف «أصيلة» معنى التجذّر في الشعب والاستقلال، دون أي إيحاء بـ«الديانة الأصلية» أو الوثنية. المصطلح ما زال مسودة في المسرد ولم يؤكده مراجع بعد.'
|
||||
},
|
||||
{
|
||||
term: 'عاملون عبر الثقافات',
|
||||
english: 'cross-cultural workers',
|
||||
definition:
|
||||
'عاملون في الإرسالية من ثقافة مختلفة يخدمون بين المجموعة الشعبية.',
|
||||
rationale:
|
||||
'صفة «عبر الثقافات» مقصودة: فهم ليسوا من داخل المجموعة. وهي تعبّر عن الاختلاف الثقافي دون أن تقتصر على معنى «الأجنبي».'
|
||||
},
|
||||
{
|
||||
term: 'رب الحصاد',
|
||||
english: 'Lord of the harvest',
|
||||
definition:
|
||||
'لقب كتابي ليسوع (متى 9: 38)، نستعمله في الدعوة إلى الصلاة لكي يرسل عاملين إلى الشعوب غير المَخْدُومَة.',
|
||||
rationale:
|
||||
'متى 9: 38 في ترجمة فاندايك: «فَاطْلُبُوا مِنْ رَبِّ الْحَصَادِ أَنْ يُرْسِلَ فَعَلَةً إِلَى حَصَادِهِ». المصطلح يطابق الترجمة الكتابية، لكنه ما زال مسودة في المسرد ولم يؤكده مراجع بعد.'
|
||||
},
|
||||
{
|
||||
term: 'الصلاة تمهّد الطريق',
|
||||
english: 'prayer prepares the way',
|
||||
definition:
|
||||
'القناعة بأن الشفاعة تهيّئ الظروف الروحية لاختراقات الإنجيل قبل وصول العاملين.',
|
||||
rationale:
|
||||
'صدى لإشعياء 40: 3، وهو في ترجمة فاندايك «أَعِدُّوا طَرِيقَ الرَّبِّ». يحفظ المسرد كلمة «الطريق» من الآية لكنه يختار الفعل «تمهّد» بدل «أعِدّوا»، لأنه أوضح في معنى تهيئة الطريق أمام العمل.'
|
||||
},
|
||||
{
|
||||
term: 'لغة القلب',
|
||||
english: 'heart language',
|
||||
definition:
|
||||
'اللغة الأولى للإنسان، التي يفكّر ويشعر بها. عمل الإنجيل والتلمذة لا يكتمل تأثيره إلا بها، وهي تختلف عن اللغة الرسمية أو لغة التعامل التجاري.',
|
||||
rationale:
|
||||
'تعبير إرسالي راسخ يُترجَم حرفيًا ويُفهم بوضوح، ويميّز المفهوم عن «اللغة الرسمية»، وهو أدقّ من «اللغة الأم» التي لا تحمل البعد الوجداني.'
|
||||
},
|
||||
{
|
||||
term: 'نقاط الصلاة اليومية',
|
||||
english: 'prayer points',
|
||||
definition:
|
||||
'طلبات الصلاة اليومية الخاصة بكل مجموعة شعبية التي ترسلها DOXA إلى الشفعاء: متمحورة حول الكتاب المقدس ومرتبطة بالميدان، وتختلف عن المحتوى التعبّدي العام.',
|
||||
rationale:
|
||||
'مؤكَّد في المسرد، ومعه «دليل الصلاة اليومي» للمورد كاملًا، فيستعمل الموقع والرسائل الصيغة نفسها. «اليومية» جزء من المصطلح لأن الالتزام يومي.'
|
||||
},
|
||||
{
|
||||
term: 'تبنّي مجموعة شعبية',
|
||||
english: 'adopt (a people group)',
|
||||
definition:
|
||||
'التزام طويل الأمد تقوده الكنيسة بالصلاة والعطاء والإرسال لكي يبدأ وصول الإنجيل إلى مجموعة شعبية غير مَخْدُومَة بعينها — رعاية إرسالية لا تبنٍّ بالمعنى القانوني الأسري.',
|
||||
alternatives: 'انتماء',
|
||||
rationale:
|
||||
'رأى المراجع أن «انتماء» سلبية أكثر من اللازم، وأن «التبنّي» هو المصطلح الإرسالي المعتاد بالعربية، إذ ينقل تحمّل المسؤولية و«امتلاك» القضية. نستعمل فعل الأمر «تَبنَّ» للدعوة إلى الفعل، والمصدر «تبنّي» للمفهوم.'
|
||||
},
|
||||
{
|
||||
term: 'هديّتنا ليسوع',
|
||||
english: 'our gift to Jesus',
|
||||
definition:
|
||||
'الإطار الذي يجمع الجهد كله: الانخراط بين كل الشعوب بحلول عام 2033 تقدمةَ عبادة جماعية من الكنيسة.',
|
||||
rationale:
|
||||
'مؤكَّد في المسرد. ينبغي أن تُقرأ العبارة تقدمةً وبذلًا في العبادة، لا صفقة أو مقابلًا.'
|
||||
},
|
||||
{
|
||||
term: 'الرابطة العالمية لجماعات الله (WAGF)',
|
||||
english: 'World Assemblies of God Fellowship (WAGF)',
|
||||
definition:
|
||||
'الرابطة العالمية التي أسّست DOXA وترعاها.',
|
||||
rationale:
|
||||
'الاسم المستعمل في النسخة العربية من الموقع، و«جماعة الله» هو الاسم الذي تُعرف به كنائس جماعات الله في العالم العربي. نحتفظ بالاختصار WAGF في كل الموقع. هذا الاسم غير موجود في المسرد بعد.'
|
||||
},
|
||||
{
|
||||
term: 'هيئات إرسال',
|
||||
english: 'sending agencies',
|
||||
definition:
|
||||
'منظمات تجنّد المرسَلين وتدرّبهم وتدعمهم وترسلهم. تعمل DOXA مع هيئات الإرسال (129 هيئة تابعة للرابطة العالمية لجماعات الله حتى عام 2026) لكنها لا تحلّ محلّها.',
|
||||
rationale:
|
||||
'«الإرسال» يُبقي وظيفة الإرسال ظاهرة، وهي ضلع من ثلاثية الصلاة والعطاء والإرسال. المصطلح ما زال مسودة في المسرد ولم يؤكده مراجع بعد.'
|
||||
},
|
||||
{
|
||||
term: 'الصلاة اليومية (من أجل مجموعة شعبية)',
|
||||
english: 'daily prayer (for a people group)',
|
||||
definition:
|
||||
'الالتزام بالصلاة كل يوم من أجل مجموعة شعبية غير مَخْدُومَة بعينها، باستعمال دليل الصلاة اليومي. الهدف: أكثر من 100 شفيع يومي لكل مجموعة شعبية.',
|
||||
rationale:
|
||||
'مؤكَّد في المسرد. كلمة «اليومية» مقصودة: التزام كل يوم، لا صلاة منتظمة أو عرضية. ونسمّي المصلّين «شفعاء» (مفردها «شفيع»)، وهو المصطلح الكنسي المعروف.'
|
||||
},
|
||||
{
|
||||
term: 'كل قبيلة ولسان وشعب وأمة',
|
||||
english: 'every tribe, tongue, people, and nation',
|
||||
definition:
|
||||
'رؤية سفر الرؤيا 5: 9 و7: 9 التي تحرّك الإرسالية. كل واحد من الأسماء الأربعة يحمل بُعدًا مختلفًا من التنوّع البشري.',
|
||||
rationale:
|
||||
'رؤيا 5: 9 في ترجمة فاندايك: «مِنْ كُلِّ قَبِيلَةٍ وَلِسَانٍ وَشَعْبٍ وَأُمَّةٍ»، والمصطلح يطابقها حرفيًا. أما رؤيا 7: 9 فترتّب الأسماء ترتيبًا آخر: «مِنْ كُلِّ الأُمَمِ وَالْقَبَائِلِ وَالشُّعُوبِ وَالأَلْسِنَةِ».'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,14 +1,11 @@
|
|||
import type { TermsContent } from './index'
|
||||
|
||||
export const de: TermsContent = {
|
||||
title: 'Terminologie',
|
||||
title: 'Begriffsbestimmungen',
|
||||
intro: [
|
||||
'Diese Seite dokumentiert die deutschen Begriffsentscheidungen der DOXA-Partnerschaft. Zu jedem Begriff: die Definition, die erwogenen Alternativen, was Joshua Project und PeopleGroups.org (IMB) verwenden, und der Grund für unsere Wahl.',
|
||||
'Unsere Quellen: das von einem deutschsprachigen Prüfer durchgesehene DOXA-Glossar, der Sprachgebrauch deutschsprachiger Missionswerke und Gebetsnetzwerke (etwa Unerreichte-Volksgruppen.de) sowie Schlachter 2000 als Referenzübersetzung – zum Abgleich auch Luther 2017 – für jede Wendung biblischen Ursprungs.'
|
||||
],
|
||||
seeDefinitionsBefore: 'Die vollständigen Definitionen stehen auf der Seite',
|
||||
definitionsLinkLabel: 'Begriffsbestimmungen',
|
||||
seeDefinitionsAfter: '.',
|
||||
labels: {
|
||||
english: 'Englisch:',
|
||||
definition: 'Definition:',
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
import type { TermsContent } from './index'
|
||||
|
||||
export const en: TermsContent = {
|
||||
title: 'Terminology',
|
||||
title: 'Definitions',
|
||||
intro: [
|
||||
'This page documents the terminology DOXA uses and why. Precise terms matter: our statistics, goals, and prayer tools all depend on definitions that must survive translation.',
|
||||
"Each language edition of this page documents that language's terminology decisions — the term we chose, the alternatives we considered, what Joshua Project and PeopleGroups.org (IMB) use, and the reasoning."
|
||||
],
|
||||
seeDefinitionsBefore: 'Full definitions live on the',
|
||||
definitionsLinkLabel: 'Definitions',
|
||||
seeDefinitionsAfter: ' page.',
|
||||
labels: {
|
||||
english: 'English:',
|
||||
definition: 'Definition:',
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
import type { TermsContent } from './index'
|
||||
|
||||
export const es: TermsContent = {
|
||||
title: 'Terminología',
|
||||
title: 'Definiciones',
|
||||
intro: [
|
||||
'Esta página documenta las decisiones terminológicas en español de la asociación DOXA. Para cada término: la definición, las alternativas consideradas, lo que usan Joshua Project y PeopleGroups.org (IMB) y la razón de nuestra elección.',
|
||||
'Nuestras fuentes: el glosario de DOXA revisado por un traductor hispanohablante, sus comentarios sobre el sitio web y, para toda expresión de origen bíblico, la Nueva Versión Internacional (NVI) y la Reina-Valera 1960 (RVR1960).'
|
||||
],
|
||||
seeDefinitionsBefore: 'Las definiciones completas están en la página',
|
||||
definitionsLinkLabel: 'Definiciones',
|
||||
seeDefinitionsAfter: '.',
|
||||
labels: {
|
||||
english: 'Inglés:',
|
||||
definition: 'Definición:',
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
import type { TermsContent } from './index'
|
||||
|
||||
export const fr: TermsContent = {
|
||||
title: 'Terminologie',
|
||||
title: 'Définitions',
|
||||
intro: [
|
||||
'Cette page documente les choix de terminologie française du partenariat DOXA. Pour chaque terme : sa définition, les autres options envisagées, ce qu’utilisent Joshua Project et PeopleGroups.org (IMB), et la raison de notre choix.',
|
||||
'Nos sources : les données officielles en français de PeopleGroups.org (IMB), les ressources françaises de Joshua Project, l’usage des ministères évangéliques francophones, et la Bible Louis Segond pour toute expression d’origine biblique.'
|
||||
],
|
||||
seeDefinitionsBefore: 'Les définitions complètes se trouvent sur la page',
|
||||
definitionsLinkLabel: 'Définitions',
|
||||
seeDefinitionsAfter: '.',
|
||||
labels: {
|
||||
english: 'Anglais :',
|
||||
definition: 'Définition :',
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
import type { TermsContent } from './index'
|
||||
|
||||
export const hi: TermsContent = {
|
||||
title: 'शब्दावली',
|
||||
title: 'परिभाषाएँ',
|
||||
intro: [
|
||||
'यह पृष्ठ DOXA साझेदारी के हिंदी शब्दों का लेखा-जोखा है। हर शब्द के लिए: उसकी परिभाषा, जिन विकल्पों पर विचार हुआ, और वह शब्द क्यों चुना गया।',
|
||||
'हमारे स्रोत: DOXA शब्दावली, DOXA Access and Alignment प्लेबुक का हिंदी अनुवाद, गोद लेने के प्रमाणपत्र की छपी हुई हिंदी, हिंदी सुसमाचारी और मिशन-विज्ञान का प्रचलित शब्द-भंडार, और बाइबिलीय वाक्यांशों के लिए पवित्र बाइबिल का पुराना संस्करण (OV)। Joshua Project और PeopleGroups.org (IMB) हिंदी में कुछ प्रकाशित नहीं करते, इसलिए इस संस्करण में उनका उल्लेख नहीं है।'
|
||||
],
|
||||
seeDefinitionsBefore: 'पूरी परिभाषाएँ',
|
||||
definitionsLinkLabel: 'परिभाषाएँ',
|
||||
seeDefinitionsAfter: ' पृष्ठ पर हैं।',
|
||||
labels: {
|
||||
english: 'अंग्रेज़ी:',
|
||||
definition: 'परिभाषा:',
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Terminology page content (/terms). Each locale has its own edition
|
||||
// Terminology page content (/about/definitions). Each locale has its own edition
|
||||
// documenting that language's terminology decisions — the chosen term,
|
||||
// alternatives considered, what Joshua Project and PeopleGroups.org use,
|
||||
// and the rationale. Locales without an edition fall back to English.
|
||||
|
|
@ -17,6 +17,7 @@ import { zh } from './zh'
|
|||
import { ru } from './ru'
|
||||
import { hi } from './hi'
|
||||
import { ro } from './ro'
|
||||
import { ar } from './ar'
|
||||
|
||||
export interface TermEntry {
|
||||
/** Canonical term in this edition's language. */
|
||||
|
|
@ -36,10 +37,6 @@ export interface TermEntry {
|
|||
export interface TermsContent {
|
||||
title: string
|
||||
intro: string[]
|
||||
/** "Full definitions live on the" / link label / " page." */
|
||||
seeDefinitionsBefore: string
|
||||
definitionsLinkLabel: string
|
||||
seeDefinitionsAfter: string
|
||||
labels: {
|
||||
english: string
|
||||
definition: string
|
||||
|
|
@ -51,7 +48,7 @@ export interface TermsContent {
|
|||
entries: TermEntry[]
|
||||
}
|
||||
|
||||
const editions: Record<string, TermsContent> = { en, fr, de, es, pt, it, zh, ru, hi, ro }
|
||||
const editions: Record<string, TermsContent> = { en, fr, de, es, pt, it, zh, ru, hi, ro, ar }
|
||||
|
||||
export function getTermsContent(locale: string): TermsContent {
|
||||
return editions[locale] ?? en
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
import type { TermsContent } from './index'
|
||||
|
||||
export const it: TermsContent = {
|
||||
title: 'Terminologia',
|
||||
title: 'Definizioni',
|
||||
intro: [
|
||||
'Questa pagina documenta le scelte terminologiche italiane della partnership DOXA. Per ogni termine: la definizione, le alternative considerate e il motivo della scelta.',
|
||||
'Le nostre fonti: il glossario DOXA, l’uso già consolidato sull’app di preghiera e nei contenuti di preghiera quotidiani in italiano, il vocabolario missionario evangelico italiano e la Nuova Riveduta 2006 per ogni espressione di origine biblica. Joshua Project e PeopleGroups.org (IMB) non pubblicano dati in italiano, quindi questa edizione non li cita.'
|
||||
],
|
||||
seeDefinitionsBefore: 'Le definizioni complete si trovano nella pagina',
|
||||
definitionsLinkLabel: 'Definizioni',
|
||||
seeDefinitionsAfter: '.',
|
||||
labels: {
|
||||
english: 'Inglese:',
|
||||
definition: 'Definizione:',
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
import type { TermsContent } from './index'
|
||||
|
||||
export const pt: TermsContent = {
|
||||
title: 'Terminologia',
|
||||
title: 'Definições',
|
||||
intro: [
|
||||
'Esta página documenta as decisões terminológicas da parceria DOXA em português. Para cada termo: a definição, as alternativas consideradas, o que o Joshua Project e o PeopleGroups.org (IMB) usam, e o motivo da nossa escolha.',
|
||||
'Nossas fontes: o glossário DOXA revisado por tradutores de língua portuguesa, o uso já estabelecido em doxa.life/pt e no aplicativo, o vocabulário das missões brasileiras e as traduções de Almeida para as expressões de origem bíblica.'
|
||||
],
|
||||
seeDefinitionsBefore: 'As definições completas estão na página',
|
||||
definitionsLinkLabel: 'Definições',
|
||||
seeDefinitionsAfter: '.',
|
||||
labels: {
|
||||
english: 'Inglês:',
|
||||
definition: 'Definição:',
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
import type { TermsContent } from './index'
|
||||
|
||||
export const ro: TermsContent = {
|
||||
title: 'Terminologie',
|
||||
title: 'Definiții',
|
||||
intro: [
|
||||
'Această pagină documentează deciziile terminologice românești ale parteneriatului DOXA. Pentru fiecare termen: definiția, alternativele luate în calcul și motivul alegerii.',
|
||||
'Sursele noastre: glosarul DOXA, completat de un recenzent român în septembrie 2026 — niciunul dintre cei 39 de termeni nu este încă confirmat, iar cinci sunt marcați pentru discuție —, vocabularul misionar evanghelic românesc și traducerile românești ale Bibliei pentru fiecare expresie de origine biblică. Recenzentul a indicat Biblia Cornilescu 1924 (VDC) ca ediție a comunității sale, în timp ce site-ul citează deocamdată Noua Traducere Românească (NTR); acolo unde cele două diferă, sunt arătate amândouă. Joshua Project și PeopleGroups.org (IMB) publică doar în engleză, așa că această ediție nu le citează.'
|
||||
],
|
||||
seeDefinitionsBefore: 'Definițiile complete se află pe pagina',
|
||||
definitionsLinkLabel: 'Definiții',
|
||||
seeDefinitionsAfter: '.',
|
||||
labels: {
|
||||
english: 'În engleză:',
|
||||
definition: 'Definiție:',
|
||||
|
|
|
|||
|
|
@ -1,15 +1,12 @@
|
|||
import type { TermsContent } from './index'
|
||||
|
||||
export const ru: TermsContent = {
|
||||
title: 'Терминология',
|
||||
title: 'Определения',
|
||||
intro: [
|
||||
'Эта страница описывает русские терминологические решения партнёрства DOXA. Для каждого термина приводятся определение, рассмотренные варианты и причина выбора.',
|
||||
'Наши источники: глоссарий DOXA, русский перевод документа «DOXA — Доступ и согласованность», словоупотребление, уже принятое в молитвенном приложении и в ежедневных молитвенных материалах, русская евангельская миссиологическая лексика и Синодальный перевод — для всех выражений библейского происхождения. Joshua Project и PeopleGroups.org (IMB) не имеют подтверждённого русского издания, поэтому здесь они не цитируются.',
|
||||
'Русская терминология пока не подтверждена носителем-рецензентом: из 39 терминов глоссария не подтверждён ни один, а три помечены как спорные — латинская аббревиатура UUPG, глагол «взять ответственность» вместе с существительным к нему и триада «молиться, жертвовать и отправлять». Приведённые решения отражают то, что сейчас стоит в продуктах, и будут пересмотрены и обновлены рецензентом.'
|
||||
],
|
||||
seeDefinitionsBefore: 'Полные определения — на странице',
|
||||
definitionsLinkLabel: 'Определения',
|
||||
seeDefinitionsAfter: '.',
|
||||
labels: {
|
||||
english: 'Английский:',
|
||||
definition: 'Определение:',
|
||||
|
|
|
|||
|
|
@ -1,15 +1,12 @@
|
|||
import type { TermsContent } from './index'
|
||||
|
||||
export const zh: TermsContent = {
|
||||
title: '术语',
|
||||
title: '定义',
|
||||
intro: [
|
||||
'本页记录 DOXA 伙伴关系的中文术语选择。每个术语都列出定义、曾考虑过的其他译法,以及选用的理由。',
|
||||
'我们的依据:DOXA 词汇表、祷告应用和中文每日祷告内容中已经在用的措辞、中文福音派与宣教学的既有词汇,以及和合本(简体,CUNPS)——凡出于圣经的表达都以它为准。Joshua Project 和 PeopleGroups.org(IMB)没有确认的中文版本,因此本版不引用它们。',
|
||||
'中文术语尚未经过母语审核者确认。以下选择反映各产品目前的实际用法,将来会由审核者复核并更新。'
|
||||
],
|
||||
seeDefinitionsBefore: '完整定义见',
|
||||
definitionsLinkLabel: '定义',
|
||||
seeDefinitionsAfter: '页面。',
|
||||
labels: {
|
||||
english: '英语:',
|
||||
definition: '定义:',
|
||||
|
|
|
|||
|
|
@ -53,6 +53,14 @@ const regionRouteRules = Object.fromEntries(
|
|||
])
|
||||
)
|
||||
|
||||
// The terminology page lives at /about/definitions; /terms stays as an alias.
|
||||
const termsRouteRules = Object.fromEntries(
|
||||
MARKETING_LOCALE_PREFIXES.map(prefix => [
|
||||
`${prefix}/terms`,
|
||||
{ redirect: { to: `${prefix}/about/definitions`, statusCode: 301 } }
|
||||
])
|
||||
)
|
||||
|
||||
export default defineNuxtConfig({
|
||||
// Embeddables (micro-frontends + web-components) have their own Vite builds —
|
||||
// Nuxt must not watch or scan their source trees.
|
||||
|
|
@ -163,6 +171,7 @@ export default defineNuxtConfig({
|
|||
...marketingRouteRules,
|
||||
// Region + country pages — same cache policy; routes enumerated at build time.
|
||||
...regionRouteRules,
|
||||
...termsRouteRules,
|
||||
'/login': { ssr: false, prerender: false },
|
||||
'/register': { ssr: false, prerender: false },
|
||||
'/reset-password': { ssr: false, prerender: false },
|
||||
|
|
|
|||
Loading…
Reference in a new issue