Internasionalisasi Phalcon

Internasionalisasi yaitu kemampuan untuk memanajemen pengaturan regional user. Misalkan seperti bahasa, mata uang, format waktu-tanggal, titik-koma dalam numerik dan sebagainya.

Phalcon ditulis dalam bahasa C sebagai ekstensi untuk PHP. Saat ini telah ada ekstensi PECL  yang menawarkan fungsi internasionalisasi untuk aplikasi PHP yang disebut intl . Mulai dari PHP 5.4/5.5 ekstensi ini dipaketkan bersama PHP. Dokumentasinya dapat ditemukan di halaman resmi manual PHP .

Phalcon tidak menawarkan fungsi ini, karena membuat komponen tersebut akan mereplikasi kode yang ada.

Dalam contoh di bawah ini, kami akan menunjukkan cara untuk menerapkan fungsi dr ekstensi intl ke dalam aplikasi Phalcon.

Panduan ini tidak dimaksudkan untuk menjadi sebuah dokumentasi lengkap dari ekstensi intl . Silakan kunjungi dokumentasi dari ekstensi sebagai referensi.

Menentukan Regional Terbaik 

Ada beberapa cara untuk mengetahui seting regional yg digunakan user dengan menggunakan intlSalah satunya adalah untuk memeriksa HTTP header “Accept-Language” :

<?php

$locale = Locale::acceptFromHttp($_SERVER["HTTP_ACCEPT_LANGUAGE"]);

// Locale could be something like "en_GB" or "en"
echo $locale;

Method di bawah ini memberi return locale yg teridentifikasi. Hal ini digunakan untuk mendapatkan bahasa, budaya, atau pengaturan regional tertentu dari Locale API.  Contoh dari identifier locale misalnya:

  • en-US (Inggris, Amerika Serikat)
  • zh-Hant-TW (Cina, Script Tradisional, Taiwan)
  • fr-CA, fr-FR (Bahasa Perancis untuk Negara Kanada dan Negara Prancis)

Memformat pesan berdasarkan Locale 

Bagian dari menciptakan aplikasi lokal adalah untuk menghasilkan pesan sesuai pengaturan bahasa user. Perintah MessageFormatter memungkinkan untuk membuat pesan-pesan tersebut.

Mencetak angka diformat didasarkan pada beberapa lokal:

<?php

// Prints € 4 560
$formatter = new MessageFormatter("fr_FR", "€ {0, number, integer}");
echo $formatter->format(array(4560));

// Prints USD$ 4,560.5
$formatter = new MessageFormatter("en_US", "USD$ {0, number}");
echo $formatter->format(array(4560.50));

// Prints ARS$ 1.250,25
$formatter = new MessageFormatter("es_AR", "ARS$ {0, number}");
echo $formatter->format(array(1250.25));

Format Pesan menggunakan pola waktu dan tanggal:

<?php

//Setting parameters
$time   = time();
$values = array(7, $time, $time);

// Prints "At 3:50:31 PM on Apr 19, 2012, there was a disturbance on planet 7."
$pattern   = "At {1, time} on {1, date}, there was a disturbance on planet {0, number}.";
$formatter = new MessageFormatter("en_US", $pattern);
echo $formatter->format($values);

// Prints "À 15:53:01 le 19 avr. 2012, il y avait une perturbation sur la planète 7."
$pattern   = "À {1, time} le {1, date}, il y avait une perturbation sur la planète {0, number}.";
$formatter = new MessageFormatter("fr_FR", $pattern);
echo $formatter->format($values);

Perbandingan Local-Sensitive 

Class collator menyediakan kemampuan perbandingan string dengan dukungan lokal-sensitif semisal pengurutan yang tepat. Lihat contoh di bawah pada penggunaan kelas ini:

<?php

// Create a collator using Spanish locale
$collator = new Collator("es");

// Returns that the strings are equal, in spite of the emphasis on the "o"
$collator->setStrength(Collator::PRIMARY);
var_dump($collator->compare("una canción", "una cancion"));

// Returns that the strings are not equal
$collator->setStrength(Collator::DEFAULT_VALUE);
var_dump($collator->compare("una canción", "una cancion"));

Penerjemahan 

Transliterator menyediakan penerjemahan string:

<?php

$id = "Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();";
$transliterator = Transliterator::create($id);

$string = "garçon-étudiant-où-L'école";
echo $transliterator->transliterate($string); // garconetudiantoulecole
Terjemahan dr Internasionalisasi Phalcon
http://docs.phalconphp.com/en/latest/reference/intl.html