diff --git a/aleksis/core/assets/messages.js b/aleksis/core/assets/messages.js
index cc3ab1b19bc6601e31502b8a319d198aaa108725..16708c5ec7a1ed1e3d07aabc3d1ccbd18fd9127f 100644
--- a/aleksis/core/assets/messages.js
+++ b/aleksis/core/assets/messages.js
@@ -1,9 +1,5 @@
-import appDetails from "aleksisAppDetails";
+import { appMessages } from "aleksisAppImporter";
 
-for (const details of Object.values(appDetails)) {
-  if (details.hasMessages) {
-    import(details.assetDir + "/messages.json").then(function (appMessages) {
-      window.i18n.registerLocale(appMessages);
-    });
-  }
+for (const messages of Object.values(appMessages)) {
+  window.i18n.registerLocale(messages);
 }
diff --git a/aleksis/core/vite.config.js b/aleksis/core/vite.config.js
index 6a65cd5108d39a3c95fd6cabbe1e859c89228e98..f6699ac91d7dd36e06360b93a5f568cf9156c738 100644
--- a/aleksis/core/vite.config.js
+++ b/aleksis/core/vite.config.js
@@ -13,6 +13,7 @@ const django_values = JSON.parse(fs.readFileSync("./django-vite-values.json"));
 
 function generateAppImporter(appDetails) {
   let code = "let appObjects = {};\n";
+  code += "let appMessages = {};\n";
   for (const [appPackage, appMeta] of Object.entries(appDetails)) {
     let indexPath = appMeta.assetDir + "/index.js";
     let importAppName =
@@ -21,20 +22,14 @@ function generateAppImporter(appDetails) {
     code += `console.debug("Importing AlekSIS app entrypoint for ${appPackage}");\n`;
     code += `import ${importAppName} from '${indexPath}';\n`;
     code += `appObjects["${appMeta.name}"] = ${importAppName};\n`;
+    if (appMeta.hasMessages) {
+      let messagesPath = appMeta.assetDir + "/messages.json";
+      code += `import ${importAppName}Messages from '${messagesPath}';\n`;
+      code += `appMessages["${appMeta.name}"] = ${importAppName}Messages;\n`;
+    }
   }
   code += "export default appObjects;\n";
-  return code;
-}
-
-function generateAppDetails(appDetails) {
-  let code = "let messages = {};\n";
-
-  for (const [appPackage, appMeta] of Object.entries(appDetails)) {
-    code += `messages["${appMeta.name}"] = JSON.parse('${JSON.stringify(
-      appMeta
-    )}');\n`;
-  }
-  code += "export default messages;\n";
+  code += "export { appObjects, appMessages };\n";
   return code;
 }
 
@@ -93,7 +88,6 @@ export default defineConfig({
   plugins: [
     virtual({
       aleksisAppImporter: generateAppImporter(django_values.appDetails),
-      aleksisAppDetails: generateAppDetails(django_values.appDetails),
     }),
     vue(),
     nodeResolve({ modulePaths: [path.resolve("./node_modules")] }),