Nhận tên khu vực bằng ngôn ngữ mặc định


7

Tôi mới tham gia vào cộng đồng Magento này và bị mắc kẹt ở một điều rất cơ bản. Tôi nhận được tên khu vực (tiểu bang) từ một địa chỉ khách hàng với mã này

$billingAddress = Mage::getModel('customer/address')->load($billingAddressId);
$RegionName = $billingAddress->getRegion();

Bây giờ một số khu vực đang được trả lại bằng ngôn ngữ địa phương. Một ví dụ là - Oberösterreich . Tôi muốn điều này được dịch theo ngôn ngữ en_GB mặc định.

Tôi cũng đang đối mặt với một vấn đề tương tự với tên quốc gia, mặc dù đã tìm ra một giải pháp cho điều đó như -

$locale = new Zend_Locale('en_GB');
$countries = $locale->getTranslationList('Territory', $locale->getLanguage(), 2);
$countryName = $countries[$billingAddress->getCountryId()];

Điều này đã được chuyển đổi tên được trả lại từ Đức sang Đức

Tôi đang tìm kiếm giải pháp tương tự cho tên khu vực là tốt. Bất kỳ trợ giúp sẽ được đánh giá cao.


1
Không có tên dịch của các khu vực trong Magento. Bạn đã kiểm tra magento.stackexchange.com/questions/158250/ mẹo
BartZalas

@BartZalas Tôi đã kiểm tra bằng cách lấy tên khu vực sau khi thay đổi ngôn ngữ mặc định của trang web sang tiếng Anh. Vùng Oberösterreich lại xuất hiện cùng tên. Tôi nghĩ rằng không có bản dịch nào khác cho tên này và nó là một chuỗi tĩnh ở đó. Tôi có đúng không
Anant

Họ được nhưng họ nằm trong cơ sở dữ liệu. Cách nhanh nhất là thay đổi thủ công trong cơ sở dữ liệu. Cũng đọc bình luận từ liên kết của tôi
BartZalas

Câu trả lời:


3

Để có được khu vực trong miền địa phương của bạn, bạn chỉ cần thêm nó vào bảng thư mục_country_region_name và dựa trên địa điểm cửa hàng, nó sẽ được tìm nạp chính xác. Vì vậy, nếu bạn có một khu vực như dưới đây:

region_id, country_id, code,default_name

1001, IN, DE, Delhi

sau đó dữ liệu bảng thư mục_country_region_name sẽ trông như dưới đây cho en_US locale:

locale, region_id,name

'en_US', '1001', 'New Delhi'

Cách lấy id khu vực địa phương dựa trên khu vực hiện tại:

$billingAddress = Mage::getModel('customer/address')->load($billingAddressId);
$regionId = $billingAddress->getRegionId();

$regionModel = Mage::getModel('directory/region')->load($regionId);
$regionName = $regionModel->getName();

Dựa trên cửa hàng hiện tại, nó sẽ tìm nạp dữ liệu từ bảng directory_country_region_name Nếu không tìm thấy trong bảng directory_country_region_namethì mặc định sẽ được tải.


Tôi không thể nhận được câu trả lời của bạn. Ý bạn là tôi cần phải tự chuyển đổi và lưu tất cả tên vùng trong một bảng? Như tôi có $billingAddressId, bạn có thể chia sẻ một số đoạn mã mà tôi cần theo dõi để có được tên khu vực trong ngôn ngữ mong muốn của tôi.
Anant

@ Anant, Hãy để tôi chỉnh sửa câu trả lời của mình để giải quyết câu hỏi của bạn
Arif Ahmad

Mã bạn đã cung cấp vẫn trả lại vùng trong cùng một miền và không ở miền được chuyển đổi :(
Anant
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.