From 7f11c24fecf460d6469fb844f7b0e8bb05df35b9 Mon Sep 17 00:00:00 2001 From: Mayel de Borniol Date: Wed, 22 Dec 2021 20:08:08 +1300 Subject: [PATCH] WIP language selector --- README.md | 2 +- .../cooperation/config/bonfire_common.exs | 19 +++++++++++++++++++ flavours/cooperation/config/hooks.js | 3 ++- lib/web/router.ex | 11 ++++++++--- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 39e6f43a74..a38607633f 100755 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Self-host your online community and shape your experience at the most granular l Empower your community with tools to perform social, economic and political activities. Create safe and private spaces, and connect with the fediverse on your own terms. ### ⚠️ Warning -This project is in the alpha stage. All APIs may change without warning and no guarantees are given about stability. Do not use it in production. You can keep track of progress [in our milestones](https://github.com/bonfire-networks/bonfire-app/milestones) +This project is in the alpha stage. All APIs may change without warning and no guarantees are given about stability. Do not use it in production. You can keep track of progress [in our milestones](https://github.com/bonfire-networks/bonfire-app/milestones?direction=asc&sort=due_date&state=open) ### 🔥 Flavours This repo includes configurations to run two main [flavours of Bonfire](https://bonfirenetworks.org/use-bonfire/) you can choose from: diff --git a/flavours/cooperation/config/bonfire_common.exs b/flavours/cooperation/config/bonfire_common.exs index 63e9ada81f..5987e08e14 100644 --- a/flavours/cooperation/config/bonfire_common.exs +++ b/flavours/cooperation/config/bonfire_common.exs @@ -1,4 +1,23 @@ import Config +default_locale = "en" + config :bonfire_common, otp_app: :bonfire + +# localisation +config :bonfire, + default_locale: default_locale + +# internationalisation +config :bonfire_common, Bonfire.Web.Cldr, + default_locale: default_locale, + locales: ["fr", "en", "es"], # locales that will be made available on top of those for which gettext localisation files are available + providers: [Cldr.Language], + gettext: Bonfire.Web.Gettext, + data_dir: "./priv/cldr", + add_fallback_locales: true, + # precompile_number_formats: ["¤¤#,##0.##"], + # precompile_transliterations: [{:latn, :arab}, {:thai, :latn}] + # force_locale_download: false, + generate_docs: true diff --git a/flavours/cooperation/config/hooks.js b/flavours/cooperation/config/hooks.js index be5ed59dee..bc76bc9548 100644 --- a/flavours/cooperation/config/hooks.js +++ b/flavours/cooperation/config/hooks.js @@ -3,12 +3,13 @@ let ExtensionHooks = {}; // TODO: make this more configurable? ie. don't import disabled extensions import { ThemeHooks } from "./../../../assets/js/theme" +import { CommonHooks } from "./../../../forks/bonfire_common/assets/js/extension" import { InputSelectHooks } from "./../../../assets/js/input_select" import { GeolocateHooks } from "./../../../deps/bonfire_geolocate/assets/js/extension" import { KanbanHooks } from "./../../../deps/bonfire_ui_kanban/assets/js/extension" import { EditorCkHooks } from "./../../../deps/bonfire_editor_ck/assets/js/extension" import { NotificationsHooks } from "./../../../assets/js/notifications" -Object.assign(ExtensionHooks, ThemeHooks, InputSelectHooks, GeolocateHooks, KanbanHooks, EditorCkHooks, NotificationsHooks) +Object.assign(ExtensionHooks, ThemeHooks, InputSelectHooks, CommonHooks, GeolocateHooks, KanbanHooks, EditorCkHooks, NotificationsHooks) export { ExtensionHooks } diff --git a/lib/web/router.ex b/lib/web/router.ex index 70e3b70f80..c568a82255 100755 --- a/lib/web/router.ex +++ b/lib/web/router.ex @@ -12,17 +12,22 @@ defmodule Bonfire.Web.Router do pipeline :browser do plug :accepts, ["html", "activity+json"] plug :fetch_session - plug :fetch_live_flash plug :put_root_layout, {Bonfire.UI.Social.Web.LayoutView, :root} + plug Cldr.Plug.SetLocale, + default: Bonfire.Web.Localise.default_locale, + apps: [:cldr, :gettext], + from: [:session, :cookie, :accept_language], + gettext: Bonfire.Web.Gettext, + cldr: Bonfire.Web.Cldr + plug :fetch_live_flash plug :protect_from_forgery plug :put_secure_browser_headers plug Bonfire.Web.Plugs.ActivityPub plug Bonfire.Web.Plugs.LoadCurrentAccount plug Bonfire.Web.Plugs.LoadCurrentUser - plug Bonfire.Web.Plugs.Locale # TODO: skip guessing a locale if the user has one in preferences + # plug Bonfire.Web.Plugs.Locale # TODO: skip guessing a locale if the user has one in preferences end - pipeline :guest_only do plug Bonfire.Web.Plugs.GuestOnly end