Skip to content

Commit 776cd4c

Browse files
authored
Merge pull request #50 from Health-RI/49-create-english-translation-of-document
49 create english translation of document
2 parents 397761a + 55ef020 commit 776cd4c

78 files changed

Lines changed: 4374 additions & 174 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

TRANSLATION.md

Lines changed: 228 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,228 @@
1+
# Translation Log: Dutch → English
2+
3+
This document records all actions taken to translate the MkDocs documentation project from Dutch into English for the [data-station-specification](https://github.com/health-ri/data-station-specification) repository.
4+
5+
## Goal
6+
7+
Translate the entire MkDocs project from Dutch into English. The project is a technical specification document for "Data stations for secondary use of health data" (EHDS/health data infrastructure). The i18n infrastructure uses `mkdocs-static-i18n` v1.3.0 with `docs_structure: suffix`, meaning `filename.md` is Dutch and `filename.en.md` is English.
8+
9+
---
10+
11+
## Translation approach
12+
13+
- Direct AI-assisted translation, preserving technical terminology, markdown formatting and internal links.
14+
- BibTeX citation keys (`[@key]`), admonitions, footnotes and mermaid/tab content blocks are preserved exactly as-is.
15+
- SVG diagrams: English `.en.svg` variants were generated for all diagrams containing Dutch text; image references in `.en.md` files point to these translated variants.
16+
- For the glossary: a separate `includes/woordenlijst.en.md` was created with English definitions (not an in-place replacement).
17+
- The DataSHIELD section (commented out of nav) was translated but kept commented out.
18+
- `docs/applicatie/data-pooling.en.md` is empty — the Dutch original is also 0 bytes.
19+
20+
---
21+
22+
## Infrastructure changes
23+
24+
| File | Action | Description |
25+
|------|--------|-------------|
26+
| `mkdocs.yml` | Modified | Added comprehensive `nav_translations` for all numbered sections and subsections (~45 entries); added `hooks: - hooks.py` |
27+
| `overrides/main.html` | Modified | Made announce banner language-aware using Jinja2 `{% if config.theme.language == 'en' %}` conditional |
28+
| `hooks.py` | Created | New file — swaps `auto_append` in `pymdownx.snippets` config at build time to use `woordenlijst.en.md` for English builds |
29+
| `includes/woordenlijst.en.md` | Created | Full English translation of all 47 glossary entries |
30+
31+
### Technical notes
32+
33+
- `pymdownx.snippets` `auto_append` is static and cannot switch per locale natively; `hooks.py` reads `config.plugins['i18n'].current_language` to swap the appended file at build time.
34+
- LSP errors in `mkdocs.yml` (unresolved Python name tags) are false positives — the YAML is valid for MkDocs.
35+
- The `toc` title `"Op deze pagina"` in `mkdocs.yml` applies only to the Dutch build; the English build uses the Material theme's built-in English label automatically.
36+
37+
---
38+
39+
## Content translations
40+
41+
### Pre-existing English files (not translated in this project)
42+
43+
These files already existed in English before work began and have not been replaced:
44+
45+
| File |
46+
|------|
47+
| `docs/appendix/tehdas2-requirements.en.md` |
48+
| `docs/scratch.en.md` |
49+
50+
### Session 1 — Infrastructure setup + sections 1–4
51+
52+
| Created file | Dutch source |
53+
|-------------|--------------|
54+
| `docs/waarom.en.md` | `docs/waarom.md` |
55+
| `docs/proces/vinden.en.md` | `docs/proces/vinden.md` |
56+
| `docs/proces/aanvragen.en.md` | `docs/proces/aanvragen.md` |
57+
| `docs/proces/klaarzetten.en.md` | `docs/proces/klaarzetten.md` |
58+
| `docs/proces/analyseren.en.md` | `docs/proces/analyseren.md` |
59+
| `docs/proces/publiceren.en.md` | `docs/proces/publiceren.md` |
60+
| `docs/informatie/index.en.md` | `docs/informatie/index.md` |
61+
| `docs/informatie/syntactisch.en.md` | `docs/informatie/syntactisch.md` |
62+
| `docs/informatie/semantisch.en.md` | `docs/informatie/semantisch.md` |
63+
| `docs/informatie/metadata.en.md` | `docs/informatie/metadata.md` |
64+
| `docs/applicatie/index.en.md` | `docs/applicatie/index.md` |
65+
| `docs/applicatie/data-station.en.md` | `docs/applicatie/data-station.md` |
66+
| `docs/applicatie/catalogus.en.md` | `docs/applicatie/catalogus.md` |
67+
| `docs/applicatie/daams.en.md` | `docs/applicatie/daams.md` |
68+
| `docs/applicatie/processing-hub.en.md` | `docs/applicatie/processing-hub.md` |
69+
| `docs/applicatie/federatieve-analyse.en.md` | `docs/applicatie/federatieve-analyse.md` |
70+
| `docs/applicatie/federatief-leren.en.md` | `docs/applicatie/federatief-leren.md` |
71+
| `docs/applicatie/data-pooling.en.md` | `docs/applicatie/data-pooling.md` (both empty) |
72+
73+
### Session 2 — Sections 5–7 + appendix + DataSHIELD
74+
75+
| Created file | Dutch source | Notes |
76+
|-------------|--------------|-------|
77+
| `docs/infrastructuur/index.en.md` | `docs/infrastructuur/index.md` | |
78+
| `docs/infrastructuur/evolutie.en.md` | `docs/infrastructuur/evolutie.md` | |
79+
| `docs/infrastructuur/composable-data-stack.en.md` | `docs/infrastructuur/composable-data-stack.md` | |
80+
| `docs/implementaties/KIK-V/index.en.md` | `docs/implementaties/KIK-V/index.md` | |
81+
| `docs/implementaties/KIK-V/proces.en.md` | `docs/implementaties/KIK-V/proces.md` | |
82+
| `docs/implementaties/KIK-V/informatie.en.md` | `docs/implementaties/KIK-V/informatie.md` | |
83+
| `docs/implementaties/KIK-V/applicatie.en.md` | `docs/implementaties/KIK-V/applicatie.md` | |
84+
| `docs/implementaties/KIK-V/infrastructuur.en.md` | `docs/implementaties/KIK-V/infrastructuur.md` | |
85+
| `docs/implementaties/PLUGIN/index.en.md` | `docs/implementaties/PLUGIN/index.md` | |
86+
| `docs/implementaties/PLUGIN/proces.en.md` | `docs/implementaties/PLUGIN/proces.md` | Mermaid diagram labels translated |
87+
| `docs/implementaties/PLUGIN/informatie.en.md` | `docs/implementaties/PLUGIN/informatie.md` | |
88+
| `docs/implementaties/PLUGIN/applicatie.en.md` | `docs/implementaties/PLUGIN/applicatie.md` | |
89+
| `docs/implementaties/PLUGIN/infrastructuur.en.md` | `docs/implementaties/PLUGIN/infrastructuur.md` | HTML comment block preserved |
90+
| `docs/implementaties/DataSHIELD/index.en.md` | `docs/implementaties/DataSHIELD/index.md` | Empty (nav commented out) |
91+
| `docs/implementaties/DataSHIELD/informatie.en.md` | `docs/implementaties/DataSHIELD/informatie.md` | Empty (nav commented out) |
92+
| `docs/implementaties/DataSHIELD/applicatie.en.md` | `docs/implementaties/DataSHIELD/applicatie.md` | Captions already in English; minor typo fix |
93+
| `docs/discussie/index.en.md` | `docs/discussie/index.md` | |
94+
| `docs/discussie/centraal-vs-decentraal.en.md` | `docs/discussie/centraal-vs-decentraal.md` | |
95+
| `docs/discussie/primair-vs-secundair.en.md` | `docs/discussie/primair-vs-secundair.md` | |
96+
| `docs/discussie/permit-vs-request.en.md` | `docs/discussie/permit-vs-request.md` | |
97+
| `docs/discussie/dataspace-initiatieven.en.md` | `docs/discussie/dataspace-initiatieven.md` | |
98+
| `docs/discussie/ontwikkelagenda.en.md` | `docs/discussie/ontwikkelagenda.md` | |
99+
| `docs/appendix/index.en.md` | `docs/appendix/index.md` | Empty |
100+
| `docs/appendix/tehdas2-hdab.en.md` | `docs/appendix/tehdas2-hdab.md` | PDF embed, no text to translate |
101+
| `docs/appendix/tehdas2-spe.en.md` | `docs/appendix/tehdas2-spe.md` | PDF embed, no text to translate |
102+
103+
### Session 3 — Re-translation of pre-existing stub files
104+
105+
The following files existed before session 1 but contained incorrect, incomplete or empty content. They have been replaced with full translations of their Dutch source files.
106+
107+
| Updated file | Dutch source | Notes |
108+
|-------------|--------------|-------|
109+
| `docs/index.en.md` | `docs/index.md` | Previous content was a generic Health-RI intro stub; replaced with full Section 1 translation including LDN description, key concepts admonition (6 tabs), scope, EHDS timeline info box, and attribution |
110+
| `docs/leeswijzer.en.md` | `docs/leeswijzer.md` | File was empty (0 bytes); filled with translation of research questions and reading guide |
111+
| `docs/proces/index.en.md` | `docs/proces/index.md` | Previous content was an unrelated academic abstract; replaced with full process perspective translation including EHDS process steps, use-case methodology, and communication patterns info box |
112+
113+
`docs/waarom.en.md` (also listed as a stub) was reviewed against `docs/waarom.md` and found to be a faithful existing translation — left unchanged.
114+
115+
### Session 4 — Re-translation of remaining pre-existing stub files
116+
117+
The following files existed before session 1 but contained incorrect or empty content. They have been replaced with full translations of their Dutch source files.
118+
119+
| Updated file | Dutch source | Notes |
120+
|-------------|--------------|-------|
121+
| `docs/data-stations-als-hoeksteen.en.md` | `docs/data-stations-als-hoeksteen.md` | Previous content was an unrelated generic FAIR hourglass description with `[cite:]` tags; replaced with full Section 1.2 translation including hourglass model, FAIR principles admonition, five-layer description, data product admonition, and footnote |
122+
| `docs/implementaties/index.en.md` | `docs/implementaties/index.md` | File was empty (0 bytes); filled with grid cards layout for KIK-V and PLUGIN implementations (DataSHIELD card kept commented out) |
123+
| `docs/infrastructuur/standaarden.en.md` | `docs/infrastructuur/standaarden.md` | Previous content was outdated (missing `DuckLake` and `CSVW` entries, had `Kuzu` instead of `LadybugDB`, different intro text and section structure); replaced with full translation of the current Dutch source |
124+
125+
---
126+
127+
## Bug fixes
128+
129+
### Broken links in `implementaties/PLUGIN/proces.md` and `proces.en.md`
130+
131+
Three anchor links in the Dutch file pointed to non-existent section numbers (the use-case headings in `applicatie/data-station.md` had shifted from 4.1.3/4/5 to 4.1.5/6/7 at some point). The English translation initially inherited these stale links plus two additional path errors introduced during translation. All six links were corrected:
132+
133+
| File | Old anchor | Fixed anchor |
134+
|------|-----------|--------------|
135+
| `implementaties/PLUGIN/proces.md` | `#414-verwerk-algoritme-en-geef-resultaat-terug` | `#416-verwerk-algoritme-en-geef-resultaat-terug` |
136+
| `implementaties/PLUGIN/proces.md` | `#415-geef-antwoord-op-dataverzoek` | `#417-geef-antwoord-op-dataverzoek` |
137+
| `implementaties/PLUGIN/proces.md` | `#413-maak-data-beschikbaar-voor-secundair-gebruik` | `#415-maak-data-beschikbaar-voor-secundair-gebruik` |
138+
| `implementaties/PLUGIN/proces.en.md` | `../applicatie/data-station.en.md#416-…` (wrong relative path) | `../../applicatie/data-station.md#416-process-algorithm-and-return-result` |
139+
| `implementaties/PLUGIN/proces.en.md` | `../../applicatie/laag-3/data-station.md#415-…` (phantom path) | `../../applicatie/data-station.md#417-answer-data-request` |
140+
| `implementaties/PLUGIN/proces.en.md` | `../../applicatie/laag-3/data-station.md#413-…` (phantom path) | `../../applicatie/data-station.md#415-make-data-available-for-secondary-use` |
141+
142+
---
143+
144+
## SVG diagram translations
145+
146+
### Approach
147+
148+
Draw.io-exported SVGs store each label in up to three redundant locations within the file:
149+
1. As `value="..."` attributes inside a HTML-entity-encoded `<mxfile>` / `<mxGraphModel>` blob in the `content=` attribute on the `<svg>` root.
150+
2. As literal text inside `<foreignObject><div>` elements in the SVG body (the visual rendering).
151+
3. As `<text>` fallback elements inside `<switch>` blocks (older draw.io web exports only).
152+
153+
Some labels contain inline HTML with `&nbsp;` entities that split words across markup boundaries. The translation script normalises these before matching.
154+
155+
Plain Inkscape SVGs (`ehds-simpel.svg`) store text directly as `<text>` / `<tspan>` content nodes.
156+
157+
A one-shot Python script (`translate_svgs.py`, not committed) applied a ~100-entry Dutch→English dictionary across all three locations for each file.
158+
159+
### SVGs translated (18 `.en.svg` files created)
160+
161+
| Original SVG | English variant | Dutch labels |
162+
|---|---|---|
163+
| `docs/proces/uc-vinden.drawio.svg` | `uc-vinden.drawio.en.svg` | 8 |
164+
| `docs/proces/uc-aanvragen.drawio.svg` | `uc-aanvragen.drawio.en.svg` | 13 |
165+
| `docs/proces/uc-aanvragen-state.drawio.svg` | `uc-aanvragen-state.drawio.en.svg` | 19 |
166+
| `docs/proces/uc-klaarzetten.drawio.svg` | `uc-klaarzetten.drawio.en.svg` | 2 |
167+
| `docs/proces/uc-analyseren.drawio.svg` | `uc-analyseren.drawio.en.svg` | 9 |
168+
| `docs/proces/uc-publiceren.drawio.svg` | `uc-publiceren.drawio.en.svg` | 5 |
169+
| `docs/applicatie/datastation-4corner.drawio.svg` | `datastation-4corner.drawio.en.svg` | 9 |
170+
| `docs/applicatie/datastation-netwerk.drawio.svg` | `datastation-netwerk.drawio.en.svg` | 5 |
171+
| `docs/applicatie/uc-datastation.drawio.svg` | `uc-datastation.drawio.en.svg` | 10 |
172+
| `docs/applicatie/datastation-beheren.drawio.svg` | `datastation-beheren.drawio.en.svg` | 5 |
173+
| `docs/applicatie/datastation-ophalen.drawio.svg` | `datastation-ophalen.drawio.en.svg` | 4 |
174+
| `docs/applicatie/datastation-organiseren.drawio.svg` | `datastation-organiseren.drawio.en.svg` | 12 |
175+
| `docs/applicatie/datastation-klaarzetten.drawio.svg` | `datastation-klaarzetten.drawio.en.svg` | 8 |
176+
| `docs/applicatie/datastation-analyseren.drawio.svg` | `datastation-analyseren.drawio.en.svg` | 7 |
177+
| `docs/applicatie/datastation-leveren.drawio.svg` | `datastation-leveren.drawio.en.svg` | 7 |
178+
| `docs/applicatie/datastation-dataverzoek.drawio.svg` | `datastation-dataverzoek.drawio.en.svg` | 7 |
179+
| `docs/implementaties/PLUGIN/plugin-overzicht.drawio.svg` | `plugin-overzicht.drawio.en.svg` | 7 |
180+
| `docs/ehds-simpel.svg` | `ehds-simpel.en.svg` | 4 |
181+
182+
### SVGs without `.en.svg` (no translation needed)
183+
184+
| SVG | Reason |
185+
|-----|--------|
186+
| `docs/proces/fair-hourglass.svg` | Text rendered as path geometry — no text nodes |
187+
| `docs/implementaties/PLUGIN/vantage6-rollen.svg` | Already fully English |
188+
| `docs/implementaties/kik-v.svg` | Logo, no text content |
189+
| `docs/assets/noun-hourglass-7893158.svg` | Attribution text only |
190+
191+
### `.en.md` files updated (19 image references)
192+
193+
| File | References updated |
194+
|------|--------------------|
195+
| `docs/proces/publiceren.en.md` | 1 |
196+
| `docs/proces/vinden.en.md` | 1 |
197+
| `docs/proces/klaarzetten.en.md` | 1 |
198+
| `docs/proces/aanvragen.en.md` | 2 |
199+
| `docs/proces/analyseren.en.md` | 1 |
200+
| `docs/applicatie/data-station.en.md` | 10 |
201+
| `docs/implementaties/PLUGIN/applicatie.en.md` | 1 |
202+
| `docs/implementaties/PLUGIN/index.en.md` | 1 |
203+
204+
Note: `docs/implementaties/PLUGIN/proces.en.md` references `vantage6-rollen.svg` which is already English — no change needed.
205+
206+
`docs/ehds-simpel.en.svg` was created for completeness but is not currently referenced by any `.en.md` file.
207+
208+
---
209+
210+
## Known limitations
211+
212+
- **Bibtex citation warnings**: `informatie/metadata.md` and `informatie/metadata.en.md` contain Turtle (RDF) code blocks with `@prefix`, `@nl` and `@en` language tags. The `mkdocs-bibtex` plugin mistakenly scans these as citation keys, producing four `WARNING - Inline reference to unknown key` messages per build. This is a known plugin limitation and the warnings are harmless.
213+
214+
---
215+
216+
## Total files
217+
218+
| Category | Count |
219+
|----------|-------|
220+
| Infrastructure files modified/created | 4 |
221+
| Pre-existing English files (untouched) | 2 |
222+
| English translations created — session 1 | 18 |
223+
| English translations created — session 2 | 25 |
224+
| Pre-existing stub files re-translated — session 3 | 3 |
225+
| Pre-existing stub files re-translated — session 4 | 3 |
226+
| **Total `.en.md` files in project** | **51** |
227+
| English SVG diagrams created | 18 |
228+
| **Total `.en.svg` files in project** | **18** |

docs/appendix/index.en.md

Whitespace-only changes.

docs/appendix/tehdas2-hdab.en.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
![Alt text](<TEHDAS2/draft-guideline-for-health-data-access-bodies-on-the-procedures-and-formats-for-data-access.pdf>){ type=application/pdf style="min-height:100vh;width:100%" }

docs/appendix/tehdas2-spe.en.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
![Alt text](<TEHDAS2/draft-technical-functional-and-security-specifications-of-secure-processing-environments.pdf>){ type=application/pdf style="min-height:100vh;width:100%" }

docs/applicatie/catalogus.en.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
## Technical specifications of the health data catalogue
2+
3+
For detailed technical specifications of the health data catalogue, we refer to TEHDAS2. A future version will discuss in more detail the dependencies and any discrepancies between the catalogue and the data station.
4+
5+
![Alt text](<../appendix/TEHDAS2/d5.3-technical-specification-for-health-data-access-bodies-on-the-national-metadata-catalogue.pdf>){ type=application/pdf style="min-height:100vh;width:100%" }

docs/applicatie/daams.en.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
## Technical specifications of DAAMS
2+
3+
For detailed technical specifications of the DAAMS, we refer for now to TEHDAS2. A future version will discuss in more detail the dependencies and any discrepancies between the DAAMS and the data station.
4+
5+
![Alt text](<../appendix/TEHDAS2/technical-specifications-for-data-access-application-management-system-daams-for-health-data-access-bodies-hdabs.pdf>){ type=application/pdf style="min-height:100vh;width:100%" }

docs/applicatie/data-pooling.en.md

Whitespace-only changes.

0 commit comments

Comments
 (0)