Set Kullanma CakePHP :: lokalizasyonu ile birleştirmek

1 Cevap php

Ben CakePHP'de yerelleştirme özelliklerini kullanmaya çalışıyorum. App_model.php konumunda yer alır ben farklı ödeme yöntemleri alır bir yöntem var.

function getDistinctFields($model, $field)
{
    $list = ClassRegistry::init($model)->find('all', array(
        'fields'=>array("DISTINCT $model.$field"), 
        'conditions' => array('not' => array("$model.$field" => null))
    ));
    debug($list);
    $translated = "{n}.$model.$field";
    $return = Set::combine($list, "{n}.$model.$field", __($translated, true));
    return $return;
}

Ayıklama ($ liste) sonucu, bu gibi görünüyor:

[0] => Array
    (
        [InstantPaymentNotification] => Array
            (
                [payment_status] => Pending
            )
    )

[1] => Array
    (
        [InstantPaymentNotification] => Array
            (
                [payment_status] => Completed
            )
    )

[2] => Array
    (
        [InstantPaymentNotification] => Array
            (
                [payment_status] => Denied
            )
    )

[3] => Array
    (
        [InstantPaymentNotification] => Array
            (
                [payment_status] => Refunded
            )
    )

Yöntemin çıktı şuna benzer:

> Array (
>     [Pending] => Pending
>     [Completed] => Completed
>     [Denied] => Denied
>     [Refunded] => Refunded
>     [Reversed] => Reversed
>     [Canceled_Reversal] => Canceled_Reversal )

Güzel, ama olması gerektiği gibi değer tercüme değildir. Ben doğru yerde default.po dosyası oluşturulur ve bu diğer sayfalarda çalıştığını görmek için test edilmiştir. Ancak, bu Set sınıfı ile çalışmıyor gibi görünüyor.

1 Cevap

Elle çağırdıktan sonra bir foreach içinde lokalize gerekir Set::combine. Ne şu anda yapıyoruz ardından Set::combine işlevi bu değeri göndererek, dize "{} n. InstantPaymentNotification.payment_status" yerelleştirilmesi edilir.

Daha böyle bir şey yapmanız gerekir:

function getDistinctFields($model, $field) {
    $list = ClassRegistry::init($model)->find('all', array(
        'fields'=>array("DISTINCT $model.$field"), 
        'conditions' => array('not' => array("$model.$field" => null))
    ));
    $list = Set::combine($list, "{n}.$model.$field", "{n}.$model.$field");
    foreach ($list as &$item) {
        $item = __($item, true);
    }
    return $list;
}