1

내 맞춤 모듈 (예 : 샘플 모듈 이름)에 설치하는 경우이 치명적인 오류 아래에 시간이 발생합니다. 이 오류를 해결하는 방법 누구나 나를 도울 수 있습니다.Prestashop : 정의되지 않은 메소드 호출 Language : updateModulesTranslations()

Fatal error: Call to undefined method Language::updateModulesTranslations() in /var/www/html/sf_prestashop/shop/classes/module/Module.php on line 292

+0

부적절한 오류 형식에 getLanguagePackListContent() –

답변

2

라는 함수가 있어야합니다, /classes/Language.php의 언어 클래스를 확인하시기 바랍니다 'updateModulesTranslations', 다음이 있지 않은 경우 언어 클래스 내에서 다음 함수를 추가하십시오

public static function updateModulesTranslations(Array $modules_list) 
    { 
     require_once(_PS_TOOL_DIR_.'tar/Archive_Tar.php'); 

     $languages = Language::getLanguages(false); 
     foreach ($languages as $lang) { 
      $gz = false; 
      $files_listing = array(); 
      foreach ($modules_list as $module_name) { 
       $filegz = _PS_TRANSLATIONS_DIR_.$lang['iso_code'].'.gzip'; 

       clearstatcache(); 
       if (@filemtime($filegz) < (time() - (24 * 3600))) { 
        if (Language::downloadAndInstallLanguagePack($lang['iso_code'], null, null, false) !== true) { 
         break; 
        } 
       } 

       $gz = new Archive_Tar($filegz, true); 
       $files_list = Language::getLanguagePackListContent($lang['iso_code'], $gz); 
       foreach ($files_list as $i => $file) { 
        if (strpos($file['filename'], 'modules/'.$module_name.'/') !== 0) { 
         unset($files_list[$i]); 
        } 
       } 

       foreach ($files_list as $file) { 
        if (isset($file['filename']) && is_string($file['filename'])) { 
         $files_listing[] = $file['filename']; 
        } 
       } 
      } 
      if ($gz) { 
       $gz->extractList($files_listing, _PS_TRANSLATIONS_DIR_.'../', ''); 
      } 
     } 
    } 
+0

$ files_list = Language :: getLanguagePackListContent ($ lang [ 'iso_code'], $ gz); – kirubanidhi

+0

이 메서드는 호출하지만 그것을 defiend 않는 것 같아요. getLanguagePackListContent() 코드를 제공 할 수 있습니까? – kirubanidhi

0

나는 당신의 코드를 시도했다. 맞춤 모듈을 설치할 때 다른 오류가 발생합니다.

치명적인 오류 : 전화 정의되지 않은 메서드 언어 : /var/www/html/sf_prestashop/shop/classes/Language.php라인 894

+0

public static function getLanguagePackListContent ($ iso, $ tar) { $ key = 'Language :: getLanguagePackListContent _'. $ iso; if (! Cache :: isStored ($ key)) { if (! $ tar instanceof \ Archive_Tar) { false를 반환합니다. } $ result = $ tar-> listContent(); Cache :: store ($ key, $ result); return $ result; } 반환 캐시 :: 검색 ($ 키); } – kirubanidhi

+0

language.php 파일에 getLanguagePackListContent()를 추가하십시오. 이제 내 모듈에 설치하려고합니다. 그것은 나를 위해 일했다. – kirubanidhi