| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 
							- import { ReactiveCache } from '/imports/reactiveCache';
 
- import { TAPi18n } from '/imports/i18n';
 
- // We save the user language preference in the user profile, and use that to set
 
- // the language reactively. If the user is not connected we use the language
 
- // information provided by the browser, and default to english.
 
- Meteor.startup(async () => {
 
-   let currentUser = ReactiveCache.getCurrentUser();
 
-   // If we're still logging in, wait (#4967)
 
-   if (!currentUser && Meteor.loggingIn()) {
 
-     await new Promise((resolve) => {
 
-       Tracker.autorun(() => {
 
-         if (!Meteor.loggingIn()) {
 
-           resolve();
 
-         }
 
-       });
 
-     });
 
-     currentUser = ReactiveCache.getCurrentUser();
 
-   }
 
-   // Select first available language
 
-   const [language] = [
 
-     // User profile
 
-     currentUser?.profile?.language,
 
-     // Browser locale
 
-     navigator.languages?.at(0),
 
-     navigator.language,
 
-     navigator.userLanguage,
 
-   ].filter(Boolean);
 
-   if (language) {
 
-     // Try with potentially complex language tag
 
-     if (TAPi18n.isLanguageSupported(language)) {
 
-       TAPi18n.setLanguage(language);
 
-     } else if (language.includes('-')) {
 
-       // Fallback to a general language
 
-       const [general] = language.split('-');
 
-       if (TAPi18n.isLanguageSupported(general)) {
 
-         TAPi18n.setLanguage(general);
 
-       }
 
-     }
 
-   }
 
- });
 
 
  |