Abrufen des Regionsnamens in der Standardsprache

7

Ich bin neu in dieser Magento-Community und habe mich an eine sehr grundlegende Sache gehalten. Ich erhalte den Namen der Region (des Bundesstaates) von einer Kundenadresse mit diesem Code

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

Jetzt werden einige Regionen in der Sprache des Gebietsschemas zurückgegeben. Ein Beispiel ist - Oberösterreich . Ich möchte, dass dies in die Standardsprache en_GB übersetzt wird.

Ich hatte auch ein ähnliches Problem mit dem Ländernamen, fand aber eine Lösung dafür als -

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

Damit wurde der zurückgegebene Name von Deutschland nach Deutschland konvertiert

Ich suche die gleiche Lösung auch für den Namen der Region. Jede Hilfe wäre dankbar.

Eine Ameise
quelle
1
Es gibt keine übersetzten Namen von Regionen in Magento. Haben Sie dies überprüft magento.stackexchange.com/questions/158250/…
BartZalas
@BartZalas Ich habe dies überprüft, indem ich den Regionsnamen erhalten habe, nachdem ich die Standardsprache der Site in Englisch geändert habe. Die Region Oberösterreich kam wieder mit dem gleichen Namen. Ich denke, es gibt keine andere Übersetzung für diesen Namen und es ist eine statische Zeichenfolge. Habe ich recht?
Anant
Sie befinden sich aber in der Datenbank. Der schnellste Weg ist das manuelle Ändern in der Datenbank. Lesen Sie auch Kommentar von meinem Link
BartZalas

Antworten:

3

Um die Region in Ihr Gebietsschema aufzunehmen, müssen Sie sie nur zur Tabelle " directory_country_region_name" hinzufügen. Basierend auf dem Gebietsschema des Geschäfts wird sie korrekt abgerufen. Wenn Sie also eine Region wie die folgende haben:

region_id, country_id, code,default_name

1001, IN, DE, Delhi

Dann sehen die Tabellendaten des Verzeichnisses_Land_Region_Name für das Gebietsschema en_US wie folgt aus:

locale, region_id,name

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

So erhalten Sie die lokalisierte Regions-ID basierend auf der aktuellen Region:

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

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

Basierend auf der aktuellen Speicherortung werden die Daten aus der Tabelle abgerufen. directory_country_region_name Wenn sie nicht in der Tabelle gefunden werden, wird die directory_country_region_nameStandardeinstellung geladen.

Arif Ahmad
quelle
Ich kann Ihre Antwort nicht bekommen. Meinen Sie damit, dass ich alle Regionsnamen selbst konvertieren und in einer Tabelle speichern muss? Wie ich haben $billingAddressId, können Sie einige Code - Schnipsel teilen , dass ich folgen muss Region Name in meiner gewünschten Sprache zu erhalten.
Anant
@Anant, Lassen Sie mich meine Antwort bearbeiten, um Ihre Anfrage zu beantworten
Arif Ahmad
Der Code, den Sie angegeben haben, gibt die Region immer noch im selben Gebietsschema und nicht im konvertierten Gebietsschema zurück :(
Anant