From eadc020acb5352b98b7391bd89465ec5036e7721 Mon Sep 17 00:00:00 2001 From: Amit Vanjani Date: Mon, 18 May 2026 14:20:44 +0100 Subject: [PATCH 1/7] Announce French Canadian (fr-CA) localization release Adds a blog post announcing the rollout of Quebec French (fr-CA) across Link, the Codat Portal, Spend Reports, and payment method inference. Generic phrasing (no specific client names) so it serves as a public announcement for any Codat client operating in Canada. Co-Authored-By: Claude Opus 4.7 (1M context) --- blog/260522-french-canadian-localization.md | 68 +++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 blog/260522-french-canadian-localization.md diff --git a/blog/260522-french-canadian-localization.md b/blog/260522-french-canadian-localization.md new file mode 100644 index 000000000..48db633d3 --- /dev/null +++ b/blog/260522-french-canadian-localization.md @@ -0,0 +1,68 @@ +--- +title: "Codat now speaks Québécois: French Canadian (fr-CA) localization" +date: "2026-05-22" +tags: ["Product", "Update", "Link", "Portal"] +authors: codat-bot +--- + +We're rolling out Quebec French (fr-CA) localization across the client-facing surfaces that financial institutions and their SMB clients use every day. + + + +## What's new? + +On **May 22, 2026**, we are shipping a first-class fr-CA experience across Link, the Codat Portal, customer-facing reports, and payment method inference. This enables our clients operating in Canada to serve French-speaking Quebec SMBs in line with the Charter of the French Language (Bill 96), and lays the groundwork for any future language we ship. + +All fr-CA copy has been reviewed by French-speaking reviewers, so the language reflects real Quebec banking terminology rather than generic machine translation. + +## What's included + +This release covers four client-facing surfaces. fr-CA is gated by a language toggle and the client's Link configuration — existing English-only deployments see no change. + +### Link journey + +Full fr-CA translation of the SMB-facing connect flow, including: + +- Platform selection +- OAuth handoff copy +- Error states +- In-modal language toggle (top-right, globe icon and locale code) + +Supported integrations in this release: + +- QuickBooks Online +- QuickBooks Desktop +- NetSuite +- Sage Intacct +- Dynamics 365 Business Central +- Dynamics 365 Finance & Operations +- Workday +- FreshBooks +- Xero +- All intelligent upload flows + +### Portal UI + +The Spend Insights, Companies, and Create Company surfaces are translated end-to-end, with locale-aware date and number formatting. The most-used advisor pages are now available in French. + +### Spend Reports + +Customer-facing Spend Reports are localized — field names, labels, section headers, and static copy all render in fr-CA when the report is generated for a French locale client. The underlying data remains language-independent, and CSV exports stay locale-neutral for downstream pipelines. + +### Payment method inference + +Payment method mapping inference now handles fr-CA source data, so ERP exports with French account names, categories, and descriptions map correctly into Codat's canonical schema without manual cleanup. + +## Why it matters + +- **Compliance, not just translation.** Bill 96 requires that French experiences be available with comparable quality to English across customer-facing digital products. This release meets the customer-facing bar. +- **Ready for Canadian FIs.** Any client with Quebec operations now has a fr-CA-ready stack to launch against — no per-client translation effort. +- **Foundation for multilingual.** The localization infrastructure built here — string catalogs, locale toggle, and the client review workflow — is the platform for any future language we ship. + +## Who is this relevant for? + +This update is relevant for any client operating in Canada, and especially for financial institutions onboarding SMBs in Quebec who need to meet Bill 96 requirements. + +## How to get started? + +fr-CA is opt-in per client at the configuration level. To enable it for your deployment, [contact Codat support](mailto:support@codat.io). We'll work with you to align on the pages and integrations in scope before enabling. From b52d7a377516ece5b8443b3a650fb22a4444f32d Mon Sep 17 00:00:00 2001 From: pmckinney-codat Date: Mon, 18 May 2026 14:31:00 +0100 Subject: [PATCH 2/7] add amit as author --- blog/260522-french-canadian-localization.md | 2 +- blog/authors.yml | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/blog/260522-french-canadian-localization.md b/blog/260522-french-canadian-localization.md index 48db633d3..417517207 100644 --- a/blog/260522-french-canadian-localization.md +++ b/blog/260522-french-canadian-localization.md @@ -2,7 +2,7 @@ title: "Codat now speaks Québécois: French Canadian (fr-CA) localization" date: "2026-05-22" tags: ["Product", "Update", "Link", "Portal"] -authors: codat-bot +authors: avanjani --- We're rolling out Quebec French (fr-CA) localization across the client-facing surfaces that financial institutions and their SMB clients use every day. diff --git a/blog/authors.yml b/blog/authors.yml index 9569a41db..9c6cb1ddd 100644 --- a/blog/authors.yml +++ b/blog/authors.yml @@ -165,3 +165,9 @@ annasavinovacodat: title: Technical Lead url: https://github.com/annasavinovacodat image_url: https://github.com/annasavinovacodat.png + +avanjani: + name: Amit Vanjani + title: Principal Product Manager + url: https://github.com/avanjani-codat + image_url: https://github.com/avanjani-codat.png From 0d9add0ec1cba58b37bdf7d3d1966cf639daa558 Mon Sep 17 00:00:00 2001 From: Amit Vanjani Date: Tue, 19 May 2026 12:05:50 +0100 Subject: [PATCH 3/7] Add Link and Portal screenshots to fr-CA localization post Includes platform selection and OAuth consent shots for the Link journey, and a Spend Insights shot for the Portal UI section, so the announcement shows the translated experience rather than only describing it. Co-Authored-By: Claude Opus 4.7 (1M context) --- blog/260522-french-canadian-localization.md | 6 ++++++ static/img/updates/260522-fr-ca-link-consent.png | 3 +++ static/img/updates/260522-fr-ca-link-select.png | 3 +++ static/img/updates/260522-fr-ca-portal.png | 3 +++ 4 files changed, 15 insertions(+) create mode 100644 static/img/updates/260522-fr-ca-link-consent.png create mode 100644 static/img/updates/260522-fr-ca-link-select.png create mode 100644 static/img/updates/260522-fr-ca-portal.png diff --git a/blog/260522-french-canadian-localization.md b/blog/260522-french-canadian-localization.md index 417517207..f54dc87d4 100644 --- a/blog/260522-french-canadian-localization.md +++ b/blog/260522-french-canadian-localization.md @@ -28,6 +28,10 @@ Full fr-CA translation of the SMB-facing connect flow, including: - Error states - In-modal language toggle (top-right, globe icon and locale code) +![Link platform selection in fr-CA, with the locale toggle visible](/img/updates/260522-fr-ca-link-select.png) + +![Link OAuth consent screen in fr-CA](/img/updates/260522-fr-ca-link-consent.png) + Supported integrations in this release: - QuickBooks Online @@ -45,6 +49,8 @@ Supported integrations in this release: The Spend Insights, Companies, and Create Company surfaces are translated end-to-end, with locale-aware date and number formatting. The most-used advisor pages are now available in French. +![Spend Insights in the Codat Portal rendered in fr-CA](/img/updates/260522-fr-ca-portal.png) + ### Spend Reports Customer-facing Spend Reports are localized — field names, labels, section headers, and static copy all render in fr-CA when the report is generated for a French locale client. The underlying data remains language-independent, and CSV exports stay locale-neutral for downstream pipelines. diff --git a/static/img/updates/260522-fr-ca-link-consent.png b/static/img/updates/260522-fr-ca-link-consent.png new file mode 100644 index 000000000..074bf4b41 --- /dev/null +++ b/static/img/updates/260522-fr-ca-link-consent.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db1a87242adfd37369bc8c854f8580299c2cc965a69f3049ac373e6c3eb5ecb2 +size 99695 diff --git a/static/img/updates/260522-fr-ca-link-select.png b/static/img/updates/260522-fr-ca-link-select.png new file mode 100644 index 000000000..cd907d756 --- /dev/null +++ b/static/img/updates/260522-fr-ca-link-select.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c463c91f381a4ca6be23877b10d063712815bb4b4fbfff0b1a14102bc918cbe +size 76009 diff --git a/static/img/updates/260522-fr-ca-portal.png b/static/img/updates/260522-fr-ca-portal.png new file mode 100644 index 000000000..9b584a466 --- /dev/null +++ b/static/img/updates/260522-fr-ca-portal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:485461816264ed1f2def52ec78d96158ca76330e2a8972489053b35c65390bde +size 137811 From 241e8e4550e7ba0de8cd764236f4a756495f0889 Mon Sep 17 00:00:00 2001 From: Amit Vanjani Date: Tue, 19 May 2026 12:10:32 +0100 Subject: [PATCH 4/7] Update fr-CA post title to "Codat now speaks French" Co-Authored-By: Claude Opus 4.7 (1M context) --- blog/260522-french-canadian-localization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/260522-french-canadian-localization.md b/blog/260522-french-canadian-localization.md index f54dc87d4..a9ee386ce 100644 --- a/blog/260522-french-canadian-localization.md +++ b/blog/260522-french-canadian-localization.md @@ -1,5 +1,5 @@ --- -title: "Codat now speaks Québécois: French Canadian (fr-CA) localization" +title: "Codat now speaks French 🇨🇦" date: "2026-05-22" tags: ["Product", "Update", "Link", "Portal"] authors: avanjani From 0d36663bd9aad73c9e2daaf1cb8fd0aa64d3ab1c Mon Sep 17 00:00:00 2001 From: Amit Vanjani Date: Tue, 19 May 2026 12:23:24 +0100 Subject: [PATCH 5/7] Add emoji font fallback to blog title headings Lexend (the heading font) doesn't include flag emoji glyphs, so the canadian flag in the fr-CA post title was falling through to a font that renders the regional indicator codepoints as plain "CA" letters. Scoped the fallback stack to the blog single-post h1 and blog list-page h2 link only, so the rest of the brand typography is unaffected. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/styles/components/_blog.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/styles/components/_blog.scss b/src/styles/components/_blog.scss index 98c1bf5b6..f04e85ed6 100644 --- a/src/styles/components/_blog.scss +++ b/src/styles/components/_blog.scss @@ -8,6 +8,7 @@ h2 { a { text-decoration: none; + font-family: var(--heading-font), "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Twemoji Mozilla", emoji; } } } @@ -31,6 +32,7 @@ h1 { font-size: var(--ifm-h1-font-size) !important; + font-family: var(--heading-font), "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Twemoji Mozilla", emoji; } h2 { From e458500e2e863ea6b28e4a220fec6cc3f56c217b Mon Sep 17 00:00:00 2001 From: Amit Vanjani Date: Tue, 19 May 2026 12:33:01 +0100 Subject: [PATCH 6/7] Trigger Vercel preview rebuild Co-Authored-By: Claude Opus 4.7 (1M context) From 99240811ac571c8604bf450be15727bd1de554a4 Mon Sep 17 00:00:00 2001 From: Amit Vanjani Date: Tue, 19 May 2026 12:40:49 +0100 Subject: [PATCH 7/7] Drop flag emoji from fr-CA post title Title is now "Codat now speaks Canadian French". Reverts the blog-title emoji-font fallback since the flag is no longer in any blog title and Windows wouldn't render it anyway without a webfont. Co-Authored-By: Claude Opus 4.7 (1M context) --- blog/260522-french-canadian-localization.md | 2 +- src/styles/components/_blog.scss | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/blog/260522-french-canadian-localization.md b/blog/260522-french-canadian-localization.md index a9ee386ce..51ed3fb86 100644 --- a/blog/260522-french-canadian-localization.md +++ b/blog/260522-french-canadian-localization.md @@ -1,5 +1,5 @@ --- -title: "Codat now speaks French 🇨🇦" +title: "Codat now speaks Canadian French" date: "2026-05-22" tags: ["Product", "Update", "Link", "Portal"] authors: avanjani diff --git a/src/styles/components/_blog.scss b/src/styles/components/_blog.scss index f04e85ed6..98c1bf5b6 100644 --- a/src/styles/components/_blog.scss +++ b/src/styles/components/_blog.scss @@ -8,7 +8,6 @@ h2 { a { text-decoration: none; - font-family: var(--heading-font), "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Twemoji Mozilla", emoji; } } } @@ -32,7 +31,6 @@ h1 { font-size: var(--ifm-h1-font-size) !important; - font-family: var(--heading-font), "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Twemoji Mozilla", emoji; } h2 {