Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 10 additions & 0 deletions DEV_DOCS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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/<locale>/office/excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188
```

Find the link whose URL contains `functions/<english-name>-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:

- https://support.google.com/docs/table/25273?hl=id (Indonesian)
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/csCZ.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/daDK.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = {
},
functions: {
FILTER: 'FILTER',
VSTACK: 'VSTACK',
HSTACK: 'HSTACK',
VSTACK: 'VSTAK',
HSTACK: 'HSTAK',
ADDRESS: 'ADRESSE',
'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN',
ARRAYFORMULA: 'ARRAYFORMULA',
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/deDE.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/esES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/fiFI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/frFR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/huHU.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/itIT.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/nbNO.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/nlNL.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/plPL.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/ptPT.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/ruRU.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ const dictionary: RawTranslationPackage = {
},
functions: {
FILTER: 'FILTER',
VSTACK: 'VSTACK',
HSTACK: 'HSTACK',
VSTACK: 'ВСТОЛБИК',
HSTACK: 'ГСТОЛБИК',
ADDRESS: 'АДРЕС',
'ARRAY_CONSTRAIN': 'ARRAY_CONSTRAIN',
ARRAYFORMULA: 'ARRAYFORMULA',
Expand Down
4 changes: 2 additions & 2 deletions src/i18n/languages/trTR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
Loading