From 48b3677d1da9afa28011873c3f36cf233c18d7be Mon Sep 17 00:00:00 2001
From: Thomas Citharel <tcit@tcit.fr>
Date: Tue, 2 Mar 2021 16:10:05 +0100
Subject: [PATCH 1/2] Fix string which shouldn't be pluralizable

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
---
 js/src/i18n/en_US.json | 2 +-
 js/src/i18n/fr_FR.json | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/js/src/i18n/en_US.json b/js/src/i18n/en_US.json
index 6b7e5323a..5746d4a0a 100644
--- a/js/src/i18n/en_US.json
+++ b/js/src/i18n/en_US.json
@@ -19,7 +19,7 @@
   "Admin settings successfully saved.": "Admin settings successfully saved.",
   "Admin": "Admin",
   "Administration": "Administration",
-  "All the places have already been taken": "All the places have been taken|One place is still available|{places} places are still available",
+  "All the places have already been taken": "All the places have already been taken",
   "Allow registrations": "Allow registrations",
   "Anonymous participant": "Anonymous participant",
   "Anonymous participants will be asked to confirm their participation through e-mail.": "Anonymous participants will be asked to confirm their participation through e-mail.",
diff --git a/js/src/i18n/fr_FR.json b/js/src/i18n/fr_FR.json
index ca59e76f1..a4fa938e7 100644
--- a/js/src/i18n/fr_FR.json
+++ b/js/src/i18n/fr_FR.json
@@ -60,7 +60,7 @@
   "Administrator": "Administrateur·rice",
   "All good, let's continue!": "C'est tout bon, continuons !",
   "All group members and other eventual server admins will still be able to view this information.": "Tous les membres du groupes et les administrateur·rice·s d'éventuels autres serveurs seront toujours en capacité de voir cette information.",
-  "All the places have already been taken": "Toutes les places ont été prises|Une place est encore disponible|{places} places sont encore disponibles",
+  "All the places have already been taken": "Toutes les places ont déjà été prises",
   "Allow all comments": "Autoriser tous les commentaires",
   "Allow all comments from users with accounts": "Autoriser tous les commentaires d'utilisateur·rice·s avec des comptes",
   "Allow registrations": "Autoriser les inscriptions",

From d61f1f7689f2081f79ed11f9495f7c2baf8fb1d2 Mon Sep 17 00:00:00 2001
From: Thomas Citharel <tcit@tcit.fr>
Date: Tue, 2 Mar 2021 16:11:00 +0100
Subject: [PATCH 2/2] Introduce custom plural rules

And enable gd locale

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
---
 js/src/i18n/langs.json           |  6 +++---
 js/src/i18n/pluralRules/gd.ts    | 11 +++++++++++
 js/src/i18n/pluralRules/index.ts |  5 +++++
 js/src/utils/i18n.ts             |  2 ++
 4 files changed, 21 insertions(+), 3 deletions(-)
 create mode 100644 js/src/i18n/pluralRules/gd.ts
 create mode 100644 js/src/i18n/pluralRules/index.ts

diff --git a/js/src/i18n/langs.json b/js/src/i18n/langs.json
index 072a8e82e..d38d4bc6e 100644
--- a/js/src/i18n/langs.json
+++ b/js/src/i18n/langs.json
@@ -3,7 +3,6 @@
   "be": "Беларуская мова",
   "bn": "বাংলা",
   "ca": "Català",
-  "cs": "čeština",
   "de": "Deutsch",
   "en": "English",
   "eo": "Esperanto",
@@ -11,6 +10,7 @@
   "eu": "Euskara",
   "fi": "suomi",
   "fr": "Français",
+  "gd": "Gàidhlig",
   "gl": "Galego",
   "hu": "Magyar",
   "it": "Italiano",
@@ -22,7 +22,7 @@
   "pl": "Polski",
   "pt": "Português",
   "pt_BR": "Português brasileiro",
-  "ru": "Русский",
   "sl": "Slovenščina",
-  "sv": "Svenska"
+  "sv": "Svenska",
+  "zh_Hant": "繁體字"
 }
diff --git a/js/src/i18n/pluralRules/gd.ts b/js/src/i18n/pluralRules/gd.ts
new file mode 100644
index 000000000..5f5730073
--- /dev/null
+++ b/js/src/i18n/pluralRules/gd.ts
@@ -0,0 +1,11 @@
+export default function (choice: number): number {
+  if (choice === 1 || choice === 11) {
+    return 0;
+  }
+
+  if (choice === 2 || choice === 12) {
+    return 1;
+  }
+
+  return choice > 0 && choice < 20 ? 2 : 3;
+}
diff --git a/js/src/i18n/pluralRules/index.ts b/js/src/i18n/pluralRules/index.ts
new file mode 100644
index 000000000..d5536b9b4
--- /dev/null
+++ b/js/src/i18n/pluralRules/index.ts
@@ -0,0 +1,5 @@
+import gd from "./gd";
+
+export default {
+  gd,
+};
diff --git a/js/src/utils/i18n.ts b/js/src/utils/i18n.ts
index b4aaaf9e9..5e2231c0f 100644
--- a/js/src/utils/i18n.ts
+++ b/js/src/utils/i18n.ts
@@ -4,6 +4,7 @@ import { DateFnsPlugin } from "@/plugins/dateFns";
 import en from "../i18n/en_US.json";
 import langs from "../i18n/langs.json";
 import { getLocaleData } from "./auth";
+import pluralizationRules from "../i18n/pluralRules";
 
 const DEFAULT_LOCALE = "en_US";
 
@@ -31,6 +32,7 @@ export const i18n = new VueI18n({
   messages: en, // set locale messages
   fallbackLocale: DEFAULT_LOCALE,
   formatFallbackMessages: true,
+  pluralizationRules,
 });
 
 const loadedLanguages = [DEFAULT_LOCALE];