From 92ce1251cc8f8292705e7dd80c58b01405de7b33 Mon Sep 17 00:00:00 2001 From: tobiadefami Date: Tue, 25 Aug 2026 20:01:44 +0100 Subject: [PATCH 1/2] fix: use Excel names for localized stack functions --- CHANGELOG.md | 4 ++++ DEV_DOCS.md | 10 ++++++++++ src/i18n/languages/csCZ.ts | 4 ++-- src/i18n/languages/daDK.ts | 4 ++-- src/i18n/languages/deDE.ts | 4 ++-- src/i18n/languages/esES.ts | 4 ++-- src/i18n/languages/fiFI.ts | 4 ++-- src/i18n/languages/frFR.ts | 4 ++-- src/i18n/languages/huHU.ts | 4 ++-- src/i18n/languages/itIT.ts | 4 ++-- src/i18n/languages/nbNO.ts | 4 ++-- src/i18n/languages/nlNL.ts | 4 ++-- src/i18n/languages/plPL.ts | 4 ++-- src/i18n/languages/ptPT.ts | 4 ++-- src/i18n/languages/ruRU.ts | 4 ++-- src/i18n/languages/trTR.ts | 4 ++-- 16 files changed, 42 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24ecffc1c..36cadba95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +### Changed + +- **Breaking change**: Updated the localized names of `VSTACK` and `HSTACK` in 14 language packs to match Microsoft Excel. Formulas created with HyperFormula 3.4.0 that use the English names in those locales must switch to the localized names. The English names remain unchanged in English, Indonesian, and Swedish. + ## [3.4.0] - 2026-08-10 ### Added diff --git a/DEV_DOCS.md b/DEV_DOCS.md index 13630fd4c..d0bf604ec 100644 --- a/DEV_DOCS.md +++ b/DEV_DOCS.md @@ -159,11 +159,21 @@ Descriptions must describe **HyperFormula's** behaviour, not Excel's. Much of th HyperFormula supports internationalization and provides localized function names for all built-in languages. Translation files live in `src/i18n/languages/`. New functions must include translations for all built-in languages. +Only add a localized function name after confirming that Microsoft Excel ships that exact name. If an authoritative source does not provide a localized name, keep the English name instead of translating or inferring one. + When looking for the valid translations for new functions, try these sources: - https://support.microsoft.com/en-us/office/excel-functions-translator-f262d0c0-991c-485b-89b6-32cc8d326889 - http://dolf.trieschnigg.nl/excel/index.php +For recent Excel functions that are absent from those sources, use Microsoft's localized alphabetical function list: + +```text +https://support.microsoft.com//office/excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188 +``` + +Find the link whose URL contains `functions/-function` and use its localized link text. Check each locale independently because Excel keeps some function names in English. + For languages not officially supported by Microsoft Excel, the two sources above do not apply. For these languages, use Google Sheets as the reference. Switch the `hl` query parameter to the target locale, for example: - https://support.google.com/docs/table/25273?hl=id (Indonesian) diff --git a/src/i18n/languages/csCZ.ts b/src/i18n/languages/csCZ.ts index 830b1c196..fea286083 100644 --- a/src/i18n/languages/csCZ.ts +++ b/src/i18n/languages/csCZ.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'SROVNAT.SVISLE', + HSTACK: 'SROVNAT.VODOROVNĚ', ADDRESS: 'ODKAZ', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', diff --git a/src/i18n/languages/daDK.ts b/src/i18n/languages/daDK.ts index 90296fd42..7bdfeac52 100644 --- a/src/i18n/languages/daDK.ts +++ b/src/i18n/languages/daDK.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'LSTAK', + HSTACK: 'VSTAK', ADDRESS: 'ADRESSE', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', diff --git a/src/i18n/languages/deDE.ts b/src/i18n/languages/deDE.ts index daaaa0bf7..4d3d39319 100644 --- a/src/i18n/languages/deDE.ts +++ b/src/i18n/languages/deDE.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'VSTAPELN', + HSTACK: 'HSTAPELN', ADDRESS: 'ADRESSE', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', diff --git a/src/i18n/languages/esES.ts b/src/i18n/languages/esES.ts index 6fea52e4e..9c6b817b9 100644 --- a/src/i18n/languages/esES.ts +++ b/src/i18n/languages/esES.ts @@ -19,8 +19,8 @@ export const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'APILARV', + HSTACK: 'APILARH', ADDRESS: 'DIRECCION', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', diff --git a/src/i18n/languages/fiFI.ts b/src/i18n/languages/fiFI.ts index a3b319af2..99ff05708 100644 --- a/src/i18n/languages/fiFI.ts +++ b/src/i18n/languages/fiFI.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'VPINO', + HSTACK: 'HPINO', ADDRESS: 'OSOITE', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', diff --git a/src/i18n/languages/frFR.ts b/src/i18n/languages/frFR.ts index a29109053..f7b9be45f 100644 --- a/src/i18n/languages/frFR.ts +++ b/src/i18n/languages/frFR.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'ASSEMB.V', + HSTACK: 'ASSEMB.H', ADDRESS: 'ADRESSE', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', diff --git a/src/i18n/languages/huHU.ts b/src/i18n/languages/huHU.ts index fafc2c4b9..e40219553 100644 --- a/src/i18n/languages/huHU.ts +++ b/src/i18n/languages/huHU.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'FÜGG.HALMOZÁS', + HSTACK: 'VÍZSZ.HALMOZÁS', ADDRESS: 'CÍM', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', diff --git a/src/i18n/languages/itIT.ts b/src/i18n/languages/itIT.ts index 40ec9cf41..1a494628f 100644 --- a/src/i18n/languages/itIT.ts +++ b/src/i18n/languages/itIT.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'STACK.VERT', + HSTACK: 'STACK.ORIZ', ADDRESS: 'INDIRIZZO', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', diff --git a/src/i18n/languages/nbNO.ts b/src/i18n/languages/nbNO.ts index 89c0f85f7..ff15415a9 100644 --- a/src/i18n/languages/nbNO.ts +++ b/src/i18n/languages/nbNO.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'VSTAKK', + HSTACK: 'HSTAKK', ADDRESS: 'ADRESSE', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', diff --git a/src/i18n/languages/nlNL.ts b/src/i18n/languages/nlNL.ts index 73ef99687..c491e2f44 100644 --- a/src/i18n/languages/nlNL.ts +++ b/src/i18n/languages/nlNL.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'VERT.STAPELEN', + HSTACK: 'HOR.STAPELEN', ADDRESS: 'ADRES', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', diff --git a/src/i18n/languages/plPL.ts b/src/i18n/languages/plPL.ts index 003b0fd64..6fa4f016b 100644 --- a/src/i18n/languages/plPL.ts +++ b/src/i18n/languages/plPL.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'STOS.PION', + HSTACK: 'STOS.POZ', ADDRESS: 'ADRES', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', diff --git a/src/i18n/languages/ptPT.ts b/src/i18n/languages/ptPT.ts index 408d7f772..6c1e68c32 100644 --- a/src/i18n/languages/ptPT.ts +++ b/src/i18n/languages/ptPT.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'JUNTARV', + HSTACK: 'JUNTARH', ADDRESS: 'ENDEREÇO', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', diff --git a/src/i18n/languages/ruRU.ts b/src/i18n/languages/ruRU.ts index 657b0db37..6b35c1ce2 100644 --- a/src/i18n/languages/ruRU.ts +++ b/src/i18n/languages/ruRU.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'ВСТОЛБИК', + HSTACK: 'ГСТОЛБИК', ADDRESS: 'АДРЕС', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', diff --git a/src/i18n/languages/trTR.ts b/src/i18n/languages/trTR.ts index dc243600d..93c2176d3 100644 --- a/src/i18n/languages/trTR.ts +++ b/src/i18n/languages/trTR.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'VSTACK', - HSTACK: 'HSTACK', + VSTACK: 'DÜŞEYYIĞ', + HSTACK: 'YATAYYIĞ', ADDRESS: 'ADRES', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA', From 6719cb99b961ab186edba8ec05e3ab7a296797c1 Mon Sep 17 00:00:00 2001 From: tobiadefami Date: Tue, 25 Aug 2026 20:15:44 +0100 Subject: [PATCH 2/2] fix: correct Danish stack function names --- DEV_DOCS.md | 2 +- src/i18n/languages/daDK.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEV_DOCS.md b/DEV_DOCS.md index d0bf604ec..7df0d15eb 100644 --- a/DEV_DOCS.md +++ b/DEV_DOCS.md @@ -172,7 +172,7 @@ For recent Excel functions that are absent from those sources, use Microsoft's l https://support.microsoft.com//office/excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188 ``` -Find the link whose URL contains `functions/-function` and use its localized link text. Check each locale independently because Excel keeps some function names in English. +Find the link whose URL contains `functions/-function`, then follow it and confirm that the individual function page uses the same localized name in its title and formula syntax. Check each locale independently because Excel keeps some function names in English. If the alphabetical list and the individual page disagree, do not copy the list entry without additional product verification. For languages not officially supported by Microsoft Excel, the two sources above do not apply. For these languages, use Google Sheets as the reference. Switch the `hl` query parameter to the target locale, for example: diff --git a/src/i18n/languages/daDK.ts b/src/i18n/languages/daDK.ts index 7bdfeac52..926455124 100644 --- a/src/i18n/languages/daDK.ts +++ b/src/i18n/languages/daDK.ts @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = { }, functions: { FILTER: 'FILTER', - VSTACK: 'LSTAK', - HSTACK: 'VSTAK', + VSTACK: 'VSTAK', + HSTACK: 'HSTAK', ADDRESS: 'ADRESSE', 'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN', ARRAYFORMULA: 'ARRAYFORMULA',