Browse Source

Fixed showing translations always, regardsless of is ROOT_URL set correctly or not.

Thanks to xet7 !
Lauri Ojansivu 1 week ago
parent
commit
1a7bd65e59
3 changed files with 25 additions and 4 deletions
  1. 16 1
      imports/i18n/blaze.js
  2. 3 2
      imports/i18n/index.js
  3. 6 1
      server/publications/activities.js

+ 16 - 1
imports/i18n/blaze.js

@@ -4,5 +4,20 @@ import { TAPi18n } from './tap';
 Blaze.registerHelper('_', (...args) => {
   const { hash } = args.pop();
   const [key] = args.splice(0, 1);
-  return TAPi18n.__(key, { ...hash, sprintf: args });
+
+  // If TAPi18n is not initialized yet, return the key as fallback
+  if (!TAPi18n.i18n) {
+    return key;
+  }
+
+  const translation = TAPi18n.__(key, { ...hash, sprintf: args });
+
+  // If translation is the same as key (meaning not found), return a formatted version
+  if (translation === key) {
+    return key.split('-').map(word =>
+      word.charAt(0).toUpperCase() + word.slice(1)
+    ).join(' ');
+  }
+
+  return translation;
 });

+ 3 - 2
imports/i18n/index.js

@@ -8,7 +8,8 @@ if (Meteor.isClient) {
 
 export { TAPi18n };
 
-(async () => {
+// Initialize translations immediately and synchronously
+Meteor.startup(async () => {
   await TAPi18n.init();
-})();
+});
 

+ 6 - 1
server/publications/activities.js

@@ -12,10 +12,15 @@ Meteor.publish('activities', (kind, id, limit, showActivities) => {
       return ['board', 'card'].indexOf(x) !== -1;
     }),
   );
-  check(id, String);
+  check(id, Match.Maybe(String));
   check(limit, Number);
   check(showActivities, Boolean);
 
+  // Return empty cursor if id is null or undefined
+  if (!id) {
+    return this.ready();
+  }
+
   // Get linkedBoard
   let linkedElmtId = [id];
   if (kind == 'board') {