2014-07-24 3 views
4

Magento가 전체 카운티 이름을 어디에 저장하는지 찾기 위해 시간을 들였습니다. 우리는이 코드를 사용하여 국가의 전체 목록을 얻을 수 있습니다 : 이것은 국가 번호와 이름의 배열을 반환합니다magento는 국가 이름을 저장합니다

$_countries = Mage::getResourceModel('directory/country_collection') 
    ->loadData() 
    ->toOptionArray(false); 

을, 나는 디렉토리 모듈을 조사하고,이 호출이 테이블에서 데이터를 가져 발견

directory_county

그러나이 표는 전체 카운티 이름이없는! 어디에서 저장됩니까? 및 해당 호출을 사용하여 검색하는 방법은 무엇입니까?

미리 감사드립니다.

+0

왜 테이블 이름이 필요한가요? 목적은 무엇입니까? – TBI

답변

6

내 오답을 보상하기 위해. 다음은이 작동하는 방법이다 :

  1. /lib/Zend/Locale/Data/en.xml은 - 당신의 가게는 영어로, 같은 directoery의 다른 또 다른 XML을 읽을 경우. 모든 국가는 xml 태그 아래에 코드가 있습니다. <territory>

  2. xml은 Zend_Cache_Core 클래스를 사용하여 캐시됩니다.

  3. /lib/Zend/Locale.php - function getTranslation은 lib/Zend/Cache/Core.php 클래스 을 호출하여 캐시에서로드합니다.

예 : en.xml에서 일부 국가의 이름을 변경하고 magento 캐시를 지우는 경우. u가 코드를 다시 호출하면 변경 사항이 표시됩니다.

+0

en.xml도 사용 중이며 변경도했는데 나타나지 않았습니다. 잘못된 파일을 수정하고 있는지 확인하려면 – rramiii

+0

ye clear magento cache. – letsanov

+0

그 언어 이름이 아닌가요? – freerunner

1

Zend_Local 번역을 사용하십시오.

<?php 
$code = 'EN'; 
echo Mage::app()->getLocale()->getTranslation($code, 'Territory', null, 2); 
?> 

$ code에 'directory_country'테이블의 'iso2_code'열을 사용하십시오.

1

전체 국가 이름은 데이터베이스에 저장되지 않습니다. Magento는 내장 된 Zend 기능을 사용합니다.

전체 목록은 파일 번호 : lib/Zend/Locale/Data/Translation.php을 확인하십시오.

+0

예이 파일에는 전체 목록이 포함되어 있습니다. 그러나 한 국가 이름을 수정하고 모든 국가를 인쇄했습니다. 변경 사항이 표시되지 않았습니다. ( 이유를 모르겠 음 !!!!! 브라우저에서 캐싱) – rramiii

0

Magneto는 국가 코드 만 DB에 저장하고 Zend의 Locale 모듈에서 이름을 사용하여 다른 지역에 대한 번역 된 이름을 제공합니다.

toOptionArray 메서드는 Zend_Locale 클래스를 호출하여 변환 된 값을 가져옵니다.

Mage_Core_Model_Locale 다음에 Zend_Locale이되는 $name = Mage::app()->getLocale()->getCountryTranslation($data['value']);을 참조하십시오. 당신이 XML 파일에 변경을해야합니다 그래서 만약

는 그것은 Zend_Locale_Data::getContent() 라인 # 962의 스위치 케이스 문에서 읽을 데이터에서 노드의 어떤 결정

, 963

젠토는 이름을 캐시 캐시 폴더를 정리하여 원하는 것을 얻으십시오.

관련 문제