@@ -485,11 +485,13 @@ private function parsePotFile(string $potFile): array
485485 if (str_starts_with ($ line , '#: ' )) {
486486 $ currentLocations [] = trim (substr ($ line , 2 ));
487487 } elseif (str_starts_with ($ line , 'msgid ' )) {
488- $ currentMsgid = [json_decode (substr (trim ($ line ), 6 ))];
488+ $ decoded = json_decode (substr (trim ($ line ), 6 ));
489+ $ currentMsgid = [is_string ($ decoded ) ? $ decoded : '' ];
489490 // Check for multi-line msgid
490491 $ j = $ i + 1 ;
491492 while ($ j < count ($ lines ) && str_starts_with (trim ($ lines [$ j ]), '" ' )) {
492- $ currentMsgid [] = json_decode (trim ($ lines [$ j ]));
493+ $ part = json_decode (trim ($ lines [$ j ]));
494+ $ currentMsgid [] = is_string ($ part ) ? $ part : '' ;
493495 $ j ++;
494496 }
495497 $ i = $ j - 1 ;
@@ -603,16 +605,20 @@ private function compileTranslations(string $domain): void
603605 $ msgstr = [];
604606 while (($ line = fgets ($ read )) !== false ) {
605607 if (substr ($ line , 0 , 5 ) == 'msgid ' ) {
606- $ msgid = [json_decode (substr (rtrim ($ line , "\n" ), 6 ))];
608+ $ decoded = json_decode (substr (rtrim ($ line , "\n" ), 6 ));
609+ $ msgid = [is_string ($ decoded ) ? $ decoded : '' ];
607610 $ scanid = true ;
608611 } elseif (substr ($ line , 0 , 6 ) == 'msgstr ' ) {
609- $ msgstr = [json_decode (substr (rtrim ($ line , "\n" ), 7 ))];
612+ $ decoded = json_decode (substr (rtrim ($ line , "\n" ), 7 ));
613+ $ msgstr = [is_string ($ decoded ) ? $ decoded : '' ];
610614 $ scanid = false ;
611615 } elseif (substr ($ line , 0 , 1 ) == '" ' ) {
612616 if ($ scanid ) {
613- $ msgid [] = json_decode (rtrim ($ line , "\n" ));
617+ $ part = json_decode (rtrim ($ line , "\n" ));
618+ $ msgid [] = is_string ($ part ) ? $ part : '' ;
614619 } else {
615- $ msgstr [] = json_decode (rtrim ($ line , "\n" ));
620+ $ part = json_decode (rtrim ($ line , "\n" ));
621+ $ msgstr [] = is_string ($ part ) ? $ part : '' ;
616622 }
617623 } else {
618624 $ strings [implode ('' , $ msgid )] = implode ('' , $ msgstr );
0 commit comments