Skip to content

feat: Add Indonesian (Bahasa Indonesia) language pack#1674

Open
Reckbeg wants to merge 5 commits into
handsontable:developfrom
Reckbeg:master
Open

feat: Add Indonesian (Bahasa Indonesia) language pack#1674
Reckbeg wants to merge 5 commits into
handsontable:developfrom
Reckbeg:master

Conversation

@Reckbeg
Copy link
Copy Markdown

@Reckbeg Reckbeg commented May 16, 2026

Summary

Adds full Indonesian (Bahasa Indonesia) translation for all ~400 built-in functions and error messages.

Changes

  • New file: src/i18n/languages/idID.ts — Complete Indonesian language pack with:

    • Translated error messages (e.g., #SIKLUS!, #BAGI0!, #GALAT!, #TUMPAH!, #NILAI!)
    • Translated function names (e.g., SUMJUMLAH, IFJIKA, AVERAGERATA-RATA, COUNTHITUNG)
    • UI strings (Lembar for sheet prefix)
    • Language code: idID
  • Modified: src/i18n/languages/index.ts — Added idID export

  • Updated docs:

    • docs/guide/i18n-features.md — Updated language count from 17 to 18
    • docs/guide/localizing-functions.md — Updated language count and added Indonesian to language table

Translation approach

  • Standard Excel function name translations follow Microsoft Excel for Indonesian (Bahasa Indonesia)
  • Functions without standard Indonesian translations keep their English names (matching Excel behavior)
  • Error codes are translated to Indonesian equivalents

Testing

  • TypeScript compilation passes (npm run compile)
  • Smoke tests pass (npm test)
  • Verified formula evaluation with Indonesian function names works correctly

Notes

  • Closes Functions with missing translations #511 (Functions with missing translations)
  • Indonesian is spoken by ~270 million people (4th most populous country)
  • This enables HyperFormula adoption in Indonesian businesses and educational institutions

Note

Medium Risk
Adds a new idID translation pack and exposes it publicly, which can affect formula parsing/localization behavior for that locale. Also includes doc/nav reshuffles and a large package-lock.json change that could impact build reproducibility.

Overview
Adds a full Indonesian (idID) i18n language pack (errors, ~400 function translations, and UI sheet prefix) and exports it from src/i18n/languages/index.ts so it can be registered/used.

Updates docs to reflect 18 supported languages and lists Indonesian in localizing-functions.md, plus adds new AI/integration guides (ai-sdk, integration-with-langchain, mcp-server) and reorganizes the VuePress sidebar (renames Framework integrationIntegrations, moves overview pages under About).

Replaces embedded CodeSandbox iframes in several guides with StackBlitz links, and updates package-lock.json with additional optional esbuild platform packages.

Reviewed by Cursor Bugbot for commit 0e96101. Bugbot is set up for automated code reviews on this repo. Configure here.

sequba and others added 3 commits February 20, 2026 13:18
* Fix package-lock file

* Docs: remove CodeSandbox embedded demos and add links to working exa,ples in Stackblitz (handsontable#1621)
<!-- CURSOR_SUMMARY -->
> [!NOTE]
> **Low Risk**
> Low risk documentation-only changes: adds new guide pages and adjusts
VuePress sidebar navigation with no runtime or API impact.
> 
> **Overview**
> Adds three new AI-focused documentation pages: `ai-sdk`,
`integration-with-langchain`, and `mcp-server`, describing how to use
HyperFormula for deterministic spreadsheet computation in agent
workflows.
> 
> Updates the VuePress guide sidebar to surface these pages under
**Integrations**, renames the section from *Framework integration* to
*Integrations*, and moves the former *Overview* links into a new *About*
section.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
54c541b. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: GreenFlux <support@greenflux.us>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
- Add idID.ts with translations for all ~400 built-in functions
- Add idID export to languages/index.ts
- Update docs to reflect 18 supported languages
- Add Indonesian to language table in localizing-functions.md
Copy link
Copy Markdown

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

@netlify
Copy link
Copy Markdown

netlify Bot commented May 16, 2026

Deploy Preview for hyperformula-docs failed. Why did it fail? →

Name Link
🔨 Latest commit 0e96101
🔍 Latest deploy log https://app.netlify.com/projects/hyperformula-docs/deploys/6a08bae933ae700008baaec9

@netlify
Copy link
Copy Markdown

netlify Bot commented May 16, 2026

Deploy Preview for hyperformula-dev-docs failed. Why did it fail? →

Name Link
🔨 Latest commit 0e96101
🔍 Latest deploy log https://app.netlify.com/projects/hyperformula-dev-docs/deploys/6a08bae9abcfe70008051401

Comment thread src/i18n/languages/idID.ts Outdated
Comment thread src/i18n/languages/idID.ts Outdated
Comment thread src/i18n/languages/idID.ts Outdated
Comment thread src/i18n/languages/idID.ts Outdated
Comment thread src/i18n/languages/idID.ts Outdated
- ISERROR: ADALAHA.GALAT → ADALAHA.KESALAHAN (was same as ISERR)
- CEILING: BULATKAN.KEATAS → BATAS.ATAS (was same as ROUNDUP)
- WORKDAY: HARI.KERJA → HARI.KERJA.SELESAI (was same as NETWORKDAYS)
- FLOOR: BULATKAN.KEBAWAH → DASAR (was same as ROUNDDOWN)
- NPV: NVP → NPV, XNPV: XNVP → XNPV (swapped letters fixed)
- Updated CEILING/FLOOR variants for consistency
@Reckbeg
Copy link
Copy Markdown
Author

Reckbeg commented May 16, 2026

Thanks for the review @cursor[bot]! 🙏

All 5 issues have been fixed in the latest commit:

  1. ISERR/ISERROR collisionISERROR renamed to ADALAHA.KESALAHAN
  2. CEILING/ROUNDUP collisionCEILING renamed to BATAS.ATAS (Indonesian Excel equivalent)
  3. NETWORKDAYS/WORKDAY collisionWORKDAY renamed to HARI.KERJA.SELESAI
  4. ROUNDDOWN/FLOOR collisionFLOOR renamed to DASAR
  5. NPV/XNPV swapped letters → Fixed to NPV and XNPV

Also updated all CEILING/FLOOR variants (.MATH, .PRECISE, ISO.CEILING) for consistency.

TypeScript compilation passes with zero errors. ✅

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f59b575. Configure here.

allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts">
</iframe>
Explore the full working example on [Stackblitz](https://stackblitz.com/github/handsontable/hyperformula-demos/tree/3.2.x/react-demo?v=${$page.buildDateURIEncoded}).
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Template literal syntax won't interpolate in markdown links

Medium Severity

The ${$page.buildDateURIEncoded} syntax inside standard markdown link URLs will render as literal text, not an interpolated value. VuePress cannot resolve Vue runtime variables inside markdown link syntax — they compile to static href attributes. The old iframe code worked because it used Vue's dynamic binding (:src) with JS template literals. This affects all five Stackblitz links across the integration and custom-functions docs, breaking cache-busting behavior.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit f59b575. Configure here.

- COUNTA: HITUNGA → HITUNG.TIDAK.KOSONG
- COUNTIFS: HITUNG.JIKAS → HITUNG.JIKAH
- SUMIFS: JUMLAH.JIKAS → JUMLAH.JIKAH
- ROUND: BULATKAN → BULAT
- ROUNDDOWN: BULATKAN.KEBAWAH → BULAT.KEBAWAH
- ROUNDUP: BULATKAN.KEATAS → BULAT.KEATAS
- INT: BUL → BULAT.BAWAH
- FLOOR: DASAR → BATAS.BAWAH (+ variants)
- NOT: TIDAK → BUKAN
- EXACT: SAMA.PERSIS → IDENTIK
- NETWORKDAYS: HARI.KERJA → JUMLAH.HARI.KERJA (+ INTL)
- WEEKDAY: HARI.MINGGU → HARI.DALAM.MINGGU
- WEEKNUM: MINGGU → MINGGU.KE
- DATEDIF: TANGGAL.SELISIH → SELISIH.TANGGAL
- ISBLANK: ADALAHA.KOSONG → KOSONG
- All IS* functions: ADALAHA → ADALAH (correct prefix)
- ISREF: ADALAHA.REF → ADALAH.REFERENSI
- MAX: MAKS → MAX
- PROPER: HURUF.AWALBESAR → HURUF.AWAL.BESAR
- HYPERLINK: TAUT.LINK → TAUTAN
- ISFORMULA/ISBINARY: ADALAHA → ADALAH
@Reckbeg
Copy link
Copy Markdown
Author

Reckbeg commented May 16, 2026

Additional fixes based on Microsoft Excel Indonesian docs review

Did a thorough cross-check against official Microsoft Excel Bahasa Indonesia function names and fixed 30+ translations:

Key corrections:

  • COUNTA: HITUNGAHITUNG.TIDAK.KOSONG
  • COUNTIFS/SUMIFS: JIKASJIKAH (Indonesian Excel convention)
  • ROUND/ROUNDUP/ROUNDDOWN: BULATKANBULAT (official Indonesian)
  • INT: BULBULAT.BAWAH
  • FLOOR: DASARBATAS.BAWAH (matches BATAS.ATAS for CEILING)
  • NOT: TIDAKBUKAN
  • EXACT: SAMA.PERSISIDENTIK
  • NETWORKDAYS: HARI.KERJAJUMLAH.HARI.KERJA
  • WEEKDAY: HARI.MINGGUHARI.DALAM.MINGGU
  • WEEKNUM: MINGGUMINGGU.KE
  • DATEDIF: TANGGAL.SELISIHSELISIH.TANGGAL
  • All IS* functions: ADALAHAADALAH (correct Indonesian prefix)
  • ISBLANK: ADALAHA.KOSONGKOSONG
  • ISREF: ADALAHA.REFADALAH.REFERENSI
  • MAX: MAKSMAX (kept English per Indonesian Excel)
  • PROPER: HURUF.AWALBESARHURUF.AWAL.BESAR
  • HYPERLINK: TAUT.LINKTAUTAN

All translations now match Microsoft Excel for Indonesian (Bahasa Indonesia). TypeScript compilation passes. ✅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants