Skip to content

Locale Profiles

Excel behavior is not fully locale-neutral. Function names, separators, date parsing, width handling, currency, and text behavior can vary by platform and locale. Formulon therefore exposes named profiles instead of a single global compatibility mode.

Glossary: compatibility profile

A named binding between an Excel build and a locale, plus the captured oracle data that proves Formulon matches it. The profile drives locale-sensitive function behavior; applications and tests pin to a profile explicitly rather than relying on host-OS defaults.

Profiles today

ProfileStatusPurpose
win-365-ja_JPdefault runtime target; product-verified Windows Microsoft 365 ja-JP workbook-oracle primaryPrimary runtime target and primary profile for the workbook-level (pivot/print) oracle track
mac-365-ja_JPformula and conditional-formatting oracle primaryPrimary formula- and conditional-formatting-oracle dataset

The formula and conditional-formatting tracks regenerate from Mac Excel 365 ja-JP. The workbook track regenerates from a product-verified Windows Microsoft 365 ja-JP installation and uses win-365-ja_JP as its primary profile.

English-locale profiles are exposed only once their own oracle coverage exists. The repository tracks captured data per profile; profiles without sufficient data stay private to avoid implying compatibility that has not been verified.

How a profile affects evaluation

Locale-sensitive areas include, but are not limited to:

  • list and argument separators in some legacy paths,
  • TEXT() / VALUE() formatting rules,
  • DATEVALUE() and TIMEVALUE() parsing,
  • currency / accounting number formats,
  • function-name aliasing (e.g. fully translated names in non-English Excel locales),
  • string width and LEN behavior in workbooks that mix half-/full-width characters.

Do not silently switch profiles

A workbook recalculated under a different profile can produce different results even when formulas look the same. Applications and CI pipelines should persist the profile they target and assert it at startup.

Persisting the profile

Through bindings:

ts
wb.setExcelProfileId('win-365-ja_JP')
const id = wb.excelProfileId()
python
wb.set_excel_profile_id('win-365-ja_JP')

The profile is stored as part of the workbook lifetime, not as a global runtime flag. Different workbooks in the same process can target different profiles.