Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

I18n (Internationalization) of the Maybe App #1225

Open
zachgoll opened this issue Oct 1, 2024 · 5 comments
Open

I18n (Internationalization) of the Maybe App #1225

zachgoll opened this issue Oct 1, 2024 · 5 comments
Labels
📆 Planned Not ready to be worked on yet, but planned for future

Comments

@zachgoll
Copy link
Collaborator

zachgoll commented Oct 1, 2024

The purpose of this issue is twofold:

  1. Act as a placeholder for a feature we intend to support in the future
  2. Provide documentation around how we're thinking about I18n (localization) of the app

What is I18n?

I18n (Internationalization) is a crucial aspect of our global personal finance app. It involves adapting the software to support various languages and regional differences without changing the codebase. This process is essential for creating a "native" feel for users worldwide.

Key Components of I18n:

  1. Text Localization: Translating all user-facing text in the app to the user's preferred language.
  2. Currency Formatting: Displaying monetary values in the appropriate format for each locale.
  3. Date and Time Formatting: Presenting dates and times according to local conventions.
  4. Number Formatting: Adapting number representations (e.g., decimal separators, thousands separators) to match local standards.

Challenges and Considerations:

  • Comprehensive Coverage: Identifying and localizing all text strings throughout the app, including error messages, tooltips, and dynamic content.
  • Context Preservation: Ensuring translations maintain the original meaning and context.
  • UI Adaptability: Designing flexible layouts to accommodate varying text lengths in different languages.
  • Pluralization Rules: Handling complex pluralization rules that differ across languages.
  • Maintenance: Keeping translations up-to-date as the app evolves and new features are added.
  • Testing: Implementing thorough testing processes to verify the correctness and consistency of localized content.

There's a lot more to it than meets the eye, so we thought it would be helpful to the community to walk through our near-term and long-term plans for full I18n support.

What is Maybe's plan for I18n?

We are a small, English-speaking COSS startup. Because of our team size and limited runway, we have to be conscious that we are spending our time on the high value personal finance features that help you manage your finances more effectively.

Below outlines our plan to support a variety of user locales.

Near-term I18n support

In the near term, we intend to support multi-currency and date/time formatting for the following locales, which aligns with the I18n.available_locales from the i18n gem:

[:en, :ru, :ar, :bg, :"ca-CAT", :ca, :"da-DK", :"de-AT", :"de-CH", :de, :ee, :"en-AU", :"en-BORK", :"en-CA", :"en-GB", :"en-IND", :"en-KE", :"en-MS", :"en-NEP", :"en-NG", :"en-NZ", :"en-PAK", :"en-SG", :"en-TH", :"en-UG", :"en-US", :"en-ZA", :"en-au-ocker", :"es-AR", :"es-MX", :es, :fa, :"fi-FI", :fr, :"fr-CA", :"fr-CH", :he, :hy, :id, :it, :ja, :ko, :lt, :lv, :"mi-NZ", :"nb-NO", :nl, :"no-NO", :pl, :"pt-BR", :pt, :sk, :sv, :th, :tr, :uk, :vi, :"zh-CN", :"zh-TW", :af, :az, :be, :bn, :bs, :cs, :cy, :da, :"de-DE", :dz, :"el-CY", :el, :"en-CY", :"en-IE", :"en-IN", :"en-TT", :eo, :"es-419", :"es-CL", :"es-CO", :"es-CR", :"es-EC", :"es-ES", :"es-NI", :"es-PA", :"es-PE", :"es-US", :"es-VE", :et, :eu, :fi, :"fr-FR", :fy, :gd, :gl, :"hi-IN", :hi, :hr, :hu, :is, :"it-CH", :ka, :kk, :km, :kn, :lb, :lo, :mg, :mk, :ml, :mn, :"mr-IN", :ms, :nb, :ne, :nn, :oc, :or, :pa, :"pap-AW", :"pap-CW", :rm, :ro, :sc, :sl, :sq, :sr, :st, :"sv-FI", :"sv-SE", :sw, :ta, :te, :tl, :tt, :ug, :ur, :uz, :wo, :"zh-HK", :"zh-YUE"]

In your preferences, you can select your desired locale and currency, which we will use to format currencies, dates, and times in the UI:

CleanShot 2024-10-01 at 17 59 02@2x

Long-term I18n support

When the product reaches some stability (i.e. where we're not making huge changes on a weekly basis), we will begin working on translating the UI to the various locales mentioned above.

While AI will make this easier, we will still have to rely heavily on the community to help us with this.

Can I contribute translations now?

Important

Unfortunately, we are not accepting translations PRs at this time.

While it may seem harmless on the surface, adding translations in various languages adds significant overhead to the development process and requires our very small team to spend time and resources ensuring that the translations are accurate and more importantly, that they stay up-to-date as the app evolves.

We will post an update to this issue when we are ready to start working on these.

If you have any questions or suggestions, feel free to leave them below :)

@arsenstorm
Copy link
Contributor

I think it would be helpful to keep date formatting separate from the locale and use the locale-associated date formatting as a fallback.

For instance, I'd prefer British English but want dates displayed in the US format.

@zachgoll
Copy link
Collaborator Author

@arsenstorm separation of date and locale has been implemented in the latest version of the app.

Keeping this issue open since translations are NOT complete/ready yet.

@xcraftr
Copy link

xcraftr commented Nov 2, 2024

I'll be here for the french translation ! Can't wait 🚀

@gariasf
Copy link
Contributor

gariasf commented Nov 2, 2024

I'm happy to take on Spanish and Catalan once Maybe is accepting translations.

@wlib
Copy link

wlib commented Nov 3, 2024

FYI JS's Intl has very extensive support for number (including currency) and date/time localization

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📆 Planned Not ready to be worked on yet, but planned for future
Projects
None yet
Development

No branches or pull requests

5 participants