Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions .opencode/command/update-traincategory.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ A shortcode looks like:

```
{{% train-category
id="train-id" (lowercase, hyphenated abbreviation of the train category)
title="title"
type="highspeed" (can be highspeed, regional, subway, bus, funicular, sleeper)
type="highspeed" (can be highspeed, regional, subway, bus, funicular, sleeper, ship)
fip_accepted=true (can be true, false, partially)
reservation_required=true (can be true, false, partially)
reservation_possible=true (can be true, false, partially; omit the attribute if false or if reservation_required is true)
Expand All @@ -36,8 +37,10 @@ If there is a risk of confusion (previously marked with ℹ️ in the text), add
{{% /highlight %}}
```

Tranform the "**Reservation cost:**" (or language equivalent) section to a heading "### Reservation".
Tranform the "**Reservation cost:**" (or language equivalent) section to a heading "#### Reservation" (de: Reservierung / fr: Réservation).

If there is additional information in the text that can't be represented in the shortcode, add the information to the text. For example "**Reservation required:** ⚠️ sometimes (marked with _R_)" becomes "A reservation is required for some trains (marked with _R_)."

If the expander mentions routes where FIP are valid, place them under a `#### Scheduled routes` (de: Strecken im Linienverkehr / fr: Lignes régulières). heading. Subheading for `##### Strecken mit FIP-Gültigkeit` and `##### Strecken ohne FIP-Gültigkeit` are possible if needed.

Make sure to remove the old expanders after adding the shortcode.
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
- Use "FIP Coupon" instead of "FIP free travel"
- Use "Motorail train" instead of "car train"
- Use "Break of journey" instead of "Journey Interruption"
- Use ’ (U+2019) instead of ' (U+0027) for apostrophes in French content

### Translations

Expand Down
4 changes: 2 additions & 2 deletions archetypes/country/index.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ params:
<!--
Un court résumé qui doit répondre aux questions suivantes, dans cet ordre :
- Quels Billets FIP (FIP 50 / Coupons FIP) sont reconnus dans le pays et par quels opérateurs ferroviaires ?
- Quelles sont les particularités de l'utilisation des Billets FIP avec ces opérateurs ? (Ajoutez un lien vers l’opérateur ferroviaire)
- Quelles sont les particularités de lutilisation des Billets FIP avec ces opérateurs ? (Ajoutez un lien vers l’opérateur ferroviaire)
- Quels opérateurs ne reconnaissent pas les Billets FIP et comment les identifier dans les informations de correspondance ?
-->

Expand All @@ -36,7 +36,7 @@ params:
## Arrivée et points frontières

<!--
Uniquement les points frontaliers situés à la frontière nationale avec d'autres pays. Ils doivent être listés sous la forme : pays (opérateur ferroviaire) et leurs points de frontière.
Uniquement les points frontaliers situés à la frontière nationale avec dautres pays. Ils doivent être listés sous la forme : pays (opérateur ferroviaire) et leurs points de frontière.
-->

{{% expander "Points frontières" border %}}
Expand Down
68 changes: 49 additions & 19 deletions archetypes/operator/index.de.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,37 +45,67 @@ FIP Globalpreis: <✅/⛔>
## Zugkategorien und Reservierungen

<!--
Sind Reservierungen möglich und wo besteht eine Reservierungspflicht?
-->
Für jede Zugkategorie kann ein eigene Abschnitt nach dem folgenden Prinzip eingefügt werden. Folgende Parameter können übergeben werden:
- `id`: Kleingeschriebene, mit Bindestrichen getrennte Abkürzung der Zugkategorie (z.B. "ice", "tgv-inoui")
- `title`: Titel der Zugkategorie
- `type`: `highspeed`, `regional`, `subway`, `bus`, `funicular`, `sleeper` oder `ship`
- `fip_accepted`: true, false, partially
- `reservation_required`: true, false, partially
- `reservation_possible`: true, false, partially (default false, kann weggelassen werden, wenn reservation_required true ist)
- `route_overview_url`: Link zu einer Seite mit einer Übersicht der Routen dieser Kategorie (kann weggelassen werden, wenn nicht vorhanden)
- `additional_information_url`: Link zu einer Seite mit zusätzlichen Informationen zu dieser Kategorie (kann weggelassen werden, wenn nicht vorhanden)
-->

{{% train-category
id="zug-id"
title="title"
type="highspeed"
fip_accepted=true
reservation_required=true
reservation_possible=true
route_overview_url="https://example.com"
additional_information_url="https://example.com"
%}}

<!--
Für jede Zugkategorie kann ein eigene Abschnitt nach dem folgenden Prinzip eingefügt werden.
Im Titel können folgende Emojis verwendet werden:
- ⚠️ für eine generelle Reservierungspflicht oder Zuschläge
- 1️⃣ für eine Reservierungspflicht in der 1. Klasse
- ⛔ für eine Nichtanerkennung von FIP
- ℹ️ für Verwechslungsgefahr mit anderen Bahngesellschaften/Zugkategorien
Hier kann eine Beschreibung der Zugkategorie ergänzt werden.
-->

{{% expander "Zugkategorie" traincategory "category" %}}
{{% highlight confusion %}}
Dieses Highlight kann ergänzt werden, wenn es das Risiko gibt, dass die Zugkategorie mit einer anderen verwechselt wird.
{{% /highlight %}}

{{% highlight important %}}
Hier können weitere wichtige Informationen ergänzt werden.
{{% /highlight %}}

<!-- Ersetze Zugkategorie mit dem Name der Zugkategorie, z. B. ICE. -->
#### Reservierung

**Beschreibung:**
<!--
Beschreibung der Reservierungsbedingung für diese Zugkategorie.
-->

<!-- Füge hier eine Beschreibung der Zugkategorie ein -->
#### Strecken im Linienverkehr

**Reservierung möglich:** Ja/Nein \
**Reservierungspflicht:** Ja/Nein \
<!--
Auflistung aller Strecken dieser Zugkategorie im Linienverkehr.

<!-- Wenn FIP nicht gültig ist, ergänze folgendes:
**FIP:** ⛔ FIP wird nicht anerkannt
Bei teilweiser FIP-Gültigkeit können die folgenden Unterüberschriften verwendet werden:
-->
<!-- Wenn es FIP Globalpreise gibt, ergänze folgendes:
**FIP Globalpreis:**

<!--
##### Strecken mit FIP-Gültigkeit

- Route 1
- Route 2

##### Strecken ohne FIP-Gültigkeit

- Route 3
- Route 4
-->

{{% /expander %}}
{{% /train-category %}}

## Klassenkategorien

Expand Down
68 changes: 49 additions & 19 deletions archetypes/operator/index.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,37 +45,67 @@ FIP Global Fare: <✅/⛔>
## Train Categories and Reservations

<!--
Are reservations possible and where is there a reservation requirement?
-->
For each train category, a separate section can be added according to the following principle. The following parameters can be passed:
- `id`: Lowercase, hyphenated abbreviation of the train category (e.g., "ice", "tgv-inoui")
- `title`: Title of the train category
- `type`: `highspeed`, `regional`, `subway`, `bus`, `funicular`, `sleeper` or `ship`
- `fip_accepted`: true, false, partially
- `reservation_required`: true, false, partially
- `reservation_possible`: true, false, partially (default false, can be omitted if reservation_required is true)
- `route_overview_url`: Link to a page with an overview of the routes of this category (can be omitted if not available)
- `additional_information_url`: Link to a page with additional information about this category (can be omitted if not available)
-->

{{% train-category
id="train-id"
title="title"
type="highspeed"
fip_accepted=true
reservation_required=true
reservation_possible=true
route_overview_url="https://example.com"
additional_information_url="https://example.com"
%}}

<!--
For each train category, a separate section can be added according to the following principle:
In the title, the following emojis can be used:
- ⚠️ for a general reservation requirement or supplements
- 1️⃣ for a reservation requirement in 1st class
- ⛔ for a non-acceptance of FIP
- ℹ️ for confusion with other railway companies/train categories
A description of the train category can be added here.
-->

{{% expander "Train category" traincategory "category" %}}
{{% highlight confusion %}}
This highlight can be added if there is a risk that the train category could be confused with another one.
{{% /highlight %}}

{{% highlight important %}}
Further important information can be added here.
{{% /highlight %}}

<!-- Replace "Train category" with the name of the category, e.g. ICE. -->
#### Reservation

**Description:**
<!--
Description of the reservation conditions for this train category.
-->

<!-- Description of the category -->
#### Scheduled routes

**Reservation possible:** <yes/no> \
**Reservation required:** <⚠️ yes/no/⚠️1️⃣ only first class> \
<!--
List of all routes of this train category in scheduled services.

<!-- If FIP is not valid, add the following:
**FIP:** ⛔ FIP is not accepted
For partial FIP validity, the following subheadings can be used:
-->
<!-- If there are FIP Global Fares, add the following:
**FIP Global Fare:**

<!--
##### Routes with FIP validity

- Route 1
- Route 2

##### Routes without FIP validity

- Route 3
- Route 4
-->

{{% /expander %}}
{{% /train-category %}}

## Class Categories

Expand Down
86 changes: 58 additions & 28 deletions archetypes/operator/index.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ operator: "{{ .File.ContentBaseName }}"
{{< wip >}}

<!--
Brève description de la compagnie ferroviaire. Par exemple, le nom complet dans la langue locale, les noms alternatifs, et si c'est une compagnie privée ou publique.
Brève description de la compagnie ferroviaire. Par exemple, le nom complet dans la langue locale, les noms alternatifs, et si cest une compagnie privée ou publique.
-->

## Résumé
Expand All @@ -24,13 +24,13 @@ operator: "{{ .File.ContentBaseName }}"
Par exemple :
- Les Billets FIP 50 et les Coupons FIP sont-ils acceptés ?
- Y a-t-il une obligation de réservation ?
- Existe-t-il d'autres conditions tarifaires particulières ou des dérogations par rapport aux autres compagnies FIP ?
- Existe-t-il dautres conditions tarifaires particulières ou des dérogations par rapport aux autres compagnies FIP ?
-->

## Validité des Billets FIP

<!--
Les catégories de billets peuvent varier selon l'opérateur.
Les catégories de billets peuvent varier selon lopérateur.
-->

Coupon FIP : <✅/⛔> \
Expand All @@ -45,37 +45,67 @@ Tarif Global FIP : <✅/⛔>
## Catégories de trains et réservations

<!--
Les réservations sont-elles possibles et où sont-elles obligatoires ?
-->
Pour chaque catégorie de train, une section distincte peut être ajoutée selon le modèle suivant. Les paramètres suivants peuvent être utilisés :
- `id` : Abréviation en minuscules avec traits d'union de la catégorie de train (par ex. "ice", "tgv-inoui")
- `title` : Titre de la catégorie de train
- `type` : `highspeed`, `regional`, `subway`, `bus`, `funicular`, `sleeper` ou `ship`
- `fip_accepted` : true, false, partially
- `reservation_required` : true, false, partially
- `reservation_possible` : true, false, partially (défaut false, peut être omis si reservation_required est true)
- `route_overview_url` : Lien vers une page avec un aperçu des lignes de cette catégorie (peut être omis si non disponible)
- `additional_information_url` : Lien vers une page avec des informations supplémentaires sur cette catégorie (peut être omis si non disponible)
-->

{{% train-category
id="train-id"
title="titre"
type="highspeed"
fip_accepted=true
reservation_required=true
reservation_possible=true
route_overview_url="https://example.com"
additional_information_url="https://example.com"
%}}

<!--
Pour chaque catégorie de train, une section distincte peut être ajoutée selon le modèle suivant :
Dans le titre, les emojis suivants peuvent être utilisés :
- ⚠️ pour une obligation générale de réservation ou des suppléments
- 1️⃣ pour une obligation de réservation en 1ère classe uniquement
- ⛔ pour une non-validité FIP
- ℹ️ pour des confusions possibles avec d'autres compagnies ferroviaires / catégories de train
Une description de la catégorie de train peut être ajoutée ici.
-->

{{% expander "Catégorie de train" traincategory "category" %}}
{{% highlight confusion %}}
Ce bloc peut être ajouté s’il y a un risque que la catégorie de train soit confondue avec une autre.
{{% /highlight %}}

{{% highlight important %}}
D’autres informations importantes peuvent être ajoutées ici.
{{% /highlight %}}

<!-- Remplacez "Catégorie de train" par le nom de la catégorie, par ex. TGV, ICE -->
#### Réservation

**Description :** \
<!--
Description des conditions de réservation pour cette catégorie de train.
-->

<!-- Description de la catégorie -->
#### Lignes régulières

**Réservation possible :** <oui/non> \
**Réservation obligatoire :** <⚠️ oui / non / ⚠️1️⃣ seulement en 1ère classe> \
<!--
Liste de toutes les lignes de cette catégorie de train en service régulier.

<!-- Si FIP n’est pas accepté, ajoutez ceci :
**FIP :** ⛔ FIP non accepté
Pour une validité FIP partielle, les sous-titres suivants peuvent être utilisés :
-->
<!-- Si les Tarifs Globaux FIP sont disponibles, ajoutez ceci :
**Tarif Global FIP :**

<!--
##### Lignes avec validité FIP

- Ligne 1
- Ligne 2

##### Lignes sans validité FIP

- Ligne 3
- Ligne 4
-->

{{% /expander %}}
{{% /train-category %}}

## Catégories de classes

Expand All @@ -94,24 +124,24 @@ Tarif Global FIP : <✅/⛔>
### En ligne

<!--
Intégrez ici les informations d'une plateforme de réservation définie.
Intégrez ici les informations dune plateforme de réservation définie.

Vous pouvez remplacer individuellement les paramètres de réservation listés ci-dessous, mais ce n'est pas obligatoire.
Vous pouvez remplacer individuellement les paramètres de réservation listés ci-dessous, mais ce nest pas obligatoire.
Si vous omettez certains paramètres, les valeurs par défaut de la plateforme de réservation seront utilisées.

Pour plus d'informations sur la définition d'une plateforme de réservation, consultez l'archetype de réservation.
Pour plus dinformations sur la définition dune plateforme de réservation, consultez larchetype de réservation.
-->

{{% booking id="booking_id"
subtitle="Ce sous-titre s'affiche dans le résumé de l'expander et doit rester concis."
subtitle="Ce sous-titre saffiche dans le résumé de lexpander et doit rester concis."
reservations=nil
fip_50=false
fip_global_fare=true
classes.first="20€"
classes.second="10€"
%}}

<!-- Ceci est un texte informatif qui peut contenir des informations spécifiques au pays et qui s'affiche dans la partie développée. -->
<!-- Ceci est un texte informatif qui peut contenir des informations spécifiques au pays et qui saffiche dans la partie développée. -->

{{% /booking %}}

Expand Down Expand Up @@ -145,7 +175,7 @@ Tarif Global FIP : <✅/⛔>
### <Trajet ou nom>

<!--
Description de la condition spéciale, s'il existe des réglementations particulières sur certains trajets.
Description de la condition spéciale, sil existe des réglementations particulières sur certains trajets.
-->

## Recommandations
Expand Down
5 changes: 0 additions & 5 deletions assets/content-not-available-yet.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,6 @@
"EN": "Kosovo",
"FR": "Kosovo"
},
{
"DE": "Litauen (bald verfügbar)",
"EN": "Lithuania (coming soon)",
"FR": "Lituanie (à venir)"
},
{
"DE": "Montenegro",
"EN": "Montenegro",
Expand Down
Binary file added assets/images/flags/latvia.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions assets/js/expander.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
function expandTargetedExpander() {
const hash = window.location.hash;
if (!hash) return;

const targetElement = document.getElementById(hash.substring(1));

if (targetElement && targetElement.tagName === "DETAILS") {
targetElement.open = true;
}
}

document.addEventListener("DOMContentLoaded", expandTargetedExpander);
window.addEventListener("hashchange", expandTargetedExpander);
Loading
Loading