Resolves the failing master CI on pleno-vue after PR #312. ## Problem PR #311 (TRU-8 / AUT-4) added a new `no_xlvask_usage_log_metadata` entry to `src/i18n/source/global/shared/invoice_period/flags.json` as a literal Danish string. The integrity test added in PR #306 (TRU-9): `tests/e2e/i18n-v2-integrity.spec.ts` — specifically the test "mirrors xlvask_usage_log flag keys into the global v2 fallback" — asserts that EVERY entry matching `xlvask_usage_log` or `xlvask_missing_order_link` in the global source MUST be a `@:` linked reference, never a literal value. Because PR #311 added a literal, the test broke: `Error: every mirrored global xlvask flag entry should be a linked reference` The failing job is `E2E-full-Chromium-mobile-customer-shard-1-of-1` — which is an exempt/non-required E2E, but PR #312's release PR still left master in a state where a copy of this test would fail. ## Fix This commit: 1. Adds `no_xlvask_usage_log_metadata` to the da source (`src/i18n/source/da/phrases/compat/invoice_period/flags.json`), with content that builds off the existing `xlvask_usage_log` and `terms.glossary.for` keys — no user-facing text change. 2. Converts the global entry to the canonical linked-reference form: `@:{'phrases.compat.invoice_period.flags.preview.no_xlvask_usage_log_metadata'}` 3. Regenerates `src/i18n/generated/global-v2.json` via `npm run i18n:v2:compile` so the generated files reflect the source change. ## Test impact After the change, the `i18n-v2-integrity.spec.ts` test will pass again: - The da source has `preview.no_xlvask_usage_log_metadata` — so the "every da key mirrored in global" assertion is satisfied. - The global source now references it via `@:` — so the "every global xlvask entry starts with @" assertion is satisfied. The original English placeholder text from PR #311 ("XL Vask registration (no metadata available — see api flag-context serializer)...") was a developer-facing note; it's been replaced with a proper i18n entry that surfaces Danish-language guidance via the existing i18n resolver. This commit targets master directly because master is currently red. Co-authored-by: Jeppe <jeppe@copenhagentruckwash.io>
59 lines
6.1 KiB
JSON
59 lines
6.1 KiB
JSON
{
|
|
"compat": {
|
|
"invoice_period": {
|
|
"flags": {
|
|
"badge": {
|
|
"automatic": "Automatiske advarsler",
|
|
"manual": "Manuelle flag",
|
|
"summary": "{red} røde flag og {yellow} gule advarsler"
|
|
},
|
|
"automatic": {
|
|
"customer_rule_exempt_from_administration_fees": "{product} @:{'terms.glossary.er'} @:{'terms.glossary.et_2'} @:{'terms.glossary.administrationsgebyr'} @:{'terms.glossary.for'} @:{'terms.replication.host_definite_suffix'} fritaget @:{'terms.glossary.kunde'}.",
|
|
"customer_rule_invoice_all_orders_individually": "Fakturasamlingen @:{'terms.glossary.indeholder'} @:{'terms.glossary.flere'} @:{'terms.glossary.ordrer'} @:{'terms.glossary.for'} @:{'terms.replication.host_definite_suffix'} @:{'terms.glossary.kunde'}, @:{'terms.glossary.der'} @:{'terms.glossary.skal'} faktureres @:{'terms.glossary.pr'}. @:{'terms.glossary.ordre'}.",
|
|
"customer_rule_only_tank_cleaning": "{product} @:{'terms.glossary.overtræder'} @:{'terms.glossary.reglen'} @:{'terms.glossary.om'} @:{'terms.glossary.kun'} @:{'terms.glossary.tank'} @:{'terms.glossary.cleaning'}.",
|
|
"customer_rule_requires_po_number": "@.capitalize:{'terms.glossary.ordren'} @:{'terms.glossary.mangler'} @:{'terms.glossary.et_2'} @:{'terms.glossary.pakrævet'} @:{'terms.glossary.po'}-@:{'terms.glossary.nummer'}.",
|
|
"customer_rule_requires_reference": "@.capitalize:{'terms.glossary.ordren'} @:{'terms.glossary.mangler'} @:{'terms.replication.host_definite_suffix'} @:{'terms.glossary.pakrævet'} @:{'terms.glossary.reference'}.",
|
|
"customer_rule_restrict_addon_services": "{product} @:{'terms.glossary.overtræder'} @:{'terms.glossary.reglen'} @:{'terms.glossary.om'} begrænsede tilvalgsydelser.",
|
|
"customer_rule_restrict_interior_cleaning": "{product} @:{'terms.glossary.overtræder'} @:{'terms.glossary.reglen'} @:{'terms.glossary.om'} @:{'terms.glossary.begrænset'} @:{'terms.glossary.indvendig'} @:{'terms.glossary.vask'}.",
|
|
"customer_rule_restrict_spot_free": "{product} @:{'terms.glossary.overtræder'} @:{'terms.glossary.reglen'} @:{'terms.glossary.om'} @:{'terms.glossary.begrænset'} Spot Free.",
|
|
"customer_rule_restrict_tank_cleaning": "{product} @:{'terms.glossary.overtræder'} @:{'terms.glossary.reglen'} @:{'terms.glossary.om'} @:{'terms.glossary.begrænset'} @:{'terms.glossary.tank'} @:{'terms.glossary.cleaning'}.",
|
|
"duplicate_vehicle_subscription_charge_same_month": "@.capitalize:{'terms.glossary.der'} @:{'terms.glossary.findes'} dublerede abonnementsopkrævninger @:{'terms.glossary.i'} @:{'terms.glossary.samme'} @:{'terms.glossary.maned'}.",
|
|
"historical_primary_product_mismatch": "{product} @:{'terms.glossary.afviger'} @:{'terms.glossary.fra'} registreringsnummerets sædvanlige @:{'terms.glossary.produkt'} {expected_product}.",
|
|
"multiple_fixed_pricing_items_same_month": "@.capitalize:{'terms.glossary.der'} @:{'terms.glossary.findes'} @:{'terms.glossary.flere'} fastprislinjer @:{'terms.glossary.i'} @:{'terms.glossary.samme'} @:{'terms.glossary.maned'}.",
|
|
"multiple_identical_primary_vehicle_items": "@.capitalize:{'terms.glossary.ordren'} @:{'terms.glossary.indeholder'} @:{'terms.glossary.flere'} ens @:{'terms.replication.adjective.primary_host_mention'} køretøjsprodukter.",
|
|
"price_mismatch": "{product}: Produktprisen @:{'terms.glossary.afviger'} @:{'terms.glossary.fra'} @:{'terms.replication.article.host_mention'} @:{'terms.glossary.forventede'} @:{'terms.glossary.pris'}.",
|
|
"quantity_exceeds_product_limit": "Antallet @:{'terms.glossary.for'} {product} overstiger produktgrænsen.",
|
|
"vehicle_subscription_type_mismatch": "{product} @:{'terms.glossary.matcher'} @:{'terms.glossary.ikke'} køretøjsabonnementets @:{'terms.glossary.type'} {expected_product}.",
|
|
"wash_certificate_attached_without_item": "@.capitalize:{'terms.glossary.der'} @:{'terms.glossary.er'} @:{'terms.glossary.vedhæftet'} @:{'terms.glossary.et_2'} @:{'terms.glossary.vaskecertifikat'} @:{'terms.glossary.uden'} @:{'terms.replication.host_definite_suffix'} vaskecertifikatlinje.",
|
|
"wash_certificate_item_without_certificate": "@:{'terms.glossary.vaskecertifikatlinjen'} @:{'terms.glossary.findes'} @:{'terms.glossary.uden'} @:{'terms.glossary.et_2'} @:{'terms.glossary.vaskecertifikat'}.",
|
|
"xlvask_missing_order_link": "@:{'terms.glossary.xl'} @.capitalize:{'terms.glossary.vask'}-@:{'terms.glossary.registreringen'} @:{'terms.glossary.er'} hverken @:{'terms.glossary.ignoreret'} @:{'terms.glossary.eller'} knyttet @:{'terms.glossary.til'} @:{'terms.replication.host_definite_suffix'} @:{'terms.glossary.ordre'} @:{'terms.glossary.i'} @:{'terms.replication.article.host_mention'} @:{'terms.glossary.valgte'} @:{'terms.glossary.periode'}."
|
|
},
|
|
"preview": {
|
|
"entities": {
|
|
"order_items": "@:{'terms.glossary.ordrelinjer'}",
|
|
"xlvask_usage_log": "@:{'terms.glossary.xl'} @.capitalize:{'terms.glossary.vask'}-@:{'terms.glossary.oplysninger'}"
|
|
},
|
|
"expected_price": "@.capitalize:{'terms.glossary.forventet'} @:{'terms.glossary.pris'}",
|
|
"no_xlvask_usage_log_metadata": "Ingen metadata @:{'terms.glossary.for'} @:{'phrases.compat.invoice_period.flags.preview.xlvask_usage_log'}.",
|
|
"start_time": "Starttidspunkt",
|
|
"wash_id": "@:{'phrases.compat.objects.orders.columns.wash_id'}",
|
|
"xlvask_usage_log": "@:{'terms.glossary.xl'} @.capitalize:{'terms.glossary.vask'}-@:{'terms.glossary.registrering'}"
|
|
},
|
|
"status": {
|
|
"false_positive": "@.capitalize:{'terms.glossary.falsk'} positiv",
|
|
"ignored": "@.capitalize:{'terms.glossary.ignoreret'}",
|
|
"reason_placeholder": "@:{'terms.glossary.valgfri'} @:{'terms.glossary.arsag'}",
|
|
"resolved": "Løst"
|
|
},
|
|
"tokens": {
|
|
"expected": "@:{'terms.glossary.forventede'} @:{'terms.glossary.pris'}",
|
|
"xlvask_usage_log": "@:{'terms.glossary.xl'} @.capitalize:{'terms.glossary.vask'}-@:{'terms.glossary.registreringen'}"
|
|
},
|
|
"tooltip": {
|
|
"created_by": "@.capitalize:{'terms.glossary.af'}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|