diff --git a/frontend/src/components/account/ProfileForm.vue b/frontend/src/components/account/ProfileForm.vue
index 9c5833568..eac9cad56 100644
--- a/frontend/src/components/account/ProfileForm.vue
+++ b/frontend/src/components/account/ProfileForm.vue
@@ -84,7 +84,7 @@
-
diff --git a/frontend/src/components/admin/identities/AccountSummary.vue b/frontend/src/components/admin/identities/AccountSummary.vue
index b3dc9390f..d6ba8416d 100644
--- a/frontend/src/components/admin/identities/AccountSummary.vue
+++ b/frontend/src/components/admin/identities/AccountSummary.vue
@@ -23,6 +23,12 @@
{{ $gettext('Role') }}
{{ account.role }}
+
+ {{ $gettext('Language') }}
+ {{
+ languageStore.getLanguageLabel(account.language)
+ }}
+
{{ $gettext('Secondary email') }}
{{ account.secondary_email }}
@@ -95,6 +101,12 @@
-
diff --git a/frontend/src/components/admin/identities/form_steps/AccountProfileForm.vue b/frontend/src/components/admin/identities/form_steps/AccountProfileForm.vue
new file mode 100644
index 000000000..341d89760
--- /dev/null
+++ b/frontend/src/components/admin/identities/form_steps/AccountProfileForm.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/plugins/gettext.js b/frontend/src/plugins/gettext.js
index 77347584d..1de2b70a7 100644
--- a/frontend/src/plugins/gettext.js
+++ b/frontend/src/plugins/gettext.js
@@ -1,26 +1,28 @@
import { createGettext } from 'vue3-gettext'
import translations from '@/locale/translations.json'
+const availableLanguages = {
+ br: 'Breton',
+ cs: 'Czech',
+ de: 'German',
+ el: 'Greek',
+ en: 'English',
+ es: 'Spain',
+ fi: 'Finnish',
+ fr: 'French',
+ it: 'Italian',
+ ja: 'Japanese',
+ nl: 'Dutch',
+ pl: 'Polish',
+ pt_BR: 'Portuguese (BR)',
+ ru: 'Russian',
+ sv: 'Swedish',
+ tr: 'tr',
+ zh: 'Chinese',
+}
+
export default createGettext({
- availableLanguages: {
- en: 'English',
- cs: 'Czech',
- de: 'German',
- br: 'Breton',
- el: 'Greek',
- es: 'Spain',
- fi: 'Finnish',
- fr: 'French',
- it: 'Italian',
- ja: 'Japanese',
- nl: 'Dutch',
- pl: 'Polish',
- pt_BR: 'Portuguese (BR)',
- ru: 'Russian',
- sv: 'Swedish',
- tr: 'tr',
- zh: 'Chinese',
- },
+ availableLanguages,
defaultLanguage: 'en',
translations: translations,
silent: true, // stop warnings
diff --git a/frontend/src/stores/index.js b/frontend/src/stores/index.js
index c4a9f79fc..6bd7239ec 100644
--- a/frontend/src/stores/index.js
+++ b/frontend/src/stores/index.js
@@ -4,6 +4,7 @@ export * from './global.store'
export * from './auth.store'
export * from './bus.store'
export * from './layout.store'
+export * from './language.store'
export * from './domains.store'
export * from './parameters.store'
export * from './providers.store'
diff --git a/frontend/src/stores/language.store.js b/frontend/src/stores/language.store.js
new file mode 100644
index 000000000..dc6721c84
--- /dev/null
+++ b/frontend/src/stores/language.store.js
@@ -0,0 +1,34 @@
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
+import languagesApi from '@/api/languages'
+
+export const useLanguageStore = defineStore('language', () => {
+ const availableLanguages = ref([])
+ const loaded = ref(false)
+
+ const $reset = async () => {
+ availableLanguages.value = []
+ loaded.value = false
+ }
+
+ const getLanguages = async () => {
+ const resp = await languagesApi.getAll()
+ availableLanguages.value = resp.data
+ loaded.value = true
+ }
+
+ const getLanguageLabel = (languageCode) => {
+ const language = availableLanguages.value.find(
+ (item) => item.code === languageCode
+ )
+ return language ? language.label : languageCode
+ }
+
+ return {
+ availableLanguages,
+ getLanguages,
+ getLanguageLabel,
+ loaded,
+ $reset,
+ }
+})