From 6a0174448c793cb071e1e6d12f3da3a65eeb4e15 Mon Sep 17 00:00:00 2001 From: kabayan <> Date: Wed, 31 Oct 2007 20:41:11 +0000 Subject: Indonesian: Huge typos corrections and more formal language. --- .../pages/ActiveControls/id/ActiveButton.page | 11 +++--- .../pages/ActiveControls/id/ActiveCheckBox.page | 4 +- .../ActiveControls/id/ActiveCustomValidator.page | 2 +- .../pages/ActiveControls/id/ActiveHyperLink.page | 2 +- .../protected/pages/ActiveControls/id/Home.page | 18 ++++----- .../pages/Advanced/Samples/I18N/id/Home.page | 4 +- .../protected/pages/Advanced/id/Assets.page | 16 ++++---- .../protected/pages/Advanced/id/Auth.page | 8 ++-- .../protected/pages/Advanced/id/Collections.page | 4 +- .../protected/pages/Advanced/id/Error.page | 2 +- .../protected/pages/Advanced/id/I18N.page | 34 ++++++++--------- .../protected/pages/Advanced/id/Logging.page | 2 +- .../protected/pages/Advanced/id/MasterContent.page | 2 +- .../protected/pages/Advanced/id/Performance.page | 6 +-- .../protected/pages/Advanced/id/Scripts.page | 32 ++++++++-------- .../protected/pages/Advanced/id/Scripts1.page | 10 ++--- .../protected/pages/Advanced/id/Scripts2.page | 16 ++++---- .../protected/pages/Advanced/id/Scripts3.page | 6 +-- .../protected/pages/Advanced/id/Security.page | 2 +- .../protected/pages/Advanced/id/Themes.page | 10 ++--- .../pages/Configurations/id/AppConfig.page | 8 ++-- .../pages/Configurations/id/Templates1.page | 6 +-- .../pages/Configurations/id/Templates2.page | 4 +- .../pages/Configurations/id/Templates3.page | 14 +++---- .../pages/Configurations/id/UrlMapping.page | 2 +- .../protected/pages/Database/id/ActiveRecord.page | 44 +++++++++++----------- .../protected/pages/Database/id/DAO.page | 6 +-- .../protected/pages/Database/id/SqlMap.page | 22 +++++------ .../pages/Fundamentals/id/Components.page | 2 +- .../protected/pages/Fundamentals/id/Controls.page | 6 +-- .../pages/GettingStarted/id/AboutPrado.page | 2 +- .../pages/GettingStarted/id/CommandLine.page | 14 +++---- .../pages/GettingStarted/id/HelloWorld.page | 8 ++-- .../pages/GettingStarted/id/Installation.page | 6 +-- .../pages/GettingStarted/id/Introduction.page | 14 +++---- .../pages/GettingStarted/id/Upgrading.page | 2 +- .../protected/pages/Services/id/SoapService.page | 4 +- .../protected/pages/Tutorial/id/AjaxChat.page | 24 ++++++------ .../pages/Tutorial/id/CurrencyConverter.page | 28 +++++++------- 39 files changed, 203 insertions(+), 204 deletions(-) (limited to 'demos/quickstart/protected/pages') diff --git a/demos/quickstart/protected/pages/ActiveControls/id/ActiveButton.page b/demos/quickstart/protected/pages/ActiveControls/id/ActiveButton.page index 98ccffd3..b108e56e 100644 --- a/demos/quickstart/protected/pages/ActiveControls/id/ActiveButton.page +++ b/demos/quickstart/protected/pages/ActiveControls/id/ActiveButton.page @@ -5,14 +5,14 @@
TActiveButton adalah kontrol aktif selain TButton. -Ketika TActiveButton diklik daripada permintaan postback normal, permintaan callback yang diinisiasi. Event OnCallback dimunculkan selama permintaan callback dan dimunculkan setelah event OnClick. +Ketika TActiveButton diklik pada permintaan postback normal, permintaan callback yang diinisiasi. Event OnCallback dimunculkan selama permintaan callback dan dimunculkan setelah event OnClick.
Ketika properti ActiveControl.EnableUpdate adalah true, mengubah properti Text selama permintaan callback akan memutakhirkan judul tombol pada sisi-klien.
-Karena event OnCallback hanya dimunculkan selama permintaan callback, pengendali event OnCallback bisas dipakai untuk menangani logika terutama yang terkait dengan permintaan callback. Pengendali event OnClick dimunculkan kapan saja tombol diklik, meskipun javascript dimatikan.
+Karena event OnCallback hanya dimunculkan selama permintaan callback, pengendali event OnCallback bisa dipakai untuk menangani logika terutama yang terkait dengan permintaan callback. Pengendali event OnClick dimunculkan kapan saja tombol diklik, meskipun javascript dimatikan.
Contoh berikut menggunakan kedua event OnClick dan OnCallback dari TActiveButton.
@@ -39,8 +39,7 @@ permintaan callback ditampung. OnCallback="button_callback" ActiveControl.CallbackParameter="value" /> -In the OnCallback event handler method, the CallbackParameter -is available in the $param object.
+Dalam metode pengendali event OnCallback, CallbackParameter tersedua di dalam obyek $param.
Di dalam properti ActiveControl adalah turunan dari -TCallbackClientSide yang tersedia sebagi ClientSide dari TActiveButton. -Properti ClientSide berisi sub-properti, serperti RequestTimeOut, dan pengendali event javascript sisi-klien, seperti OnLoading, yang dipakai oleh sisi-klien saat membuat permitaan callback. +TCallbackClientSide yang tersedia sebagai ClientSide dari TActiveButton. +Properti ClientSide berisi sub-properti, serperti RequestTimeOut, dan pengendali event javascript sisi-klien, seperti OnLoading, dipakai oleh sisi-klien saat membuat permitaan callback. Contoh berikut mendemonstrasikan menghidup matikan indikator "loading" saat sisi-klien membuat permintaan callback.
diff --git a/demos/quickstart/protected/pages/ActiveControls/id/ActiveCheckBox.page b/demos/quickstart/protected/pages/ActiveControls/id/ActiveCheckBox.page index b68f4123..e75e559a 100644 --- a/demos/quickstart/protected/pages/ActiveControls/id/ActiveCheckBox.page +++ b/demos/quickstart/protected/pages/ActiveControls/id/ActiveCheckBox.page @@ -6,14 +6,14 @@TActiveCheckBox adalah kontrol aktif selain TCheckbox. Properti AutoPostBack - dari TActiveCheckBox standarnya disetel menjadi true. + dari TActiveCheckBox standarnya disetel true. Selanjutnya, saat kotak centang diklik, event OnCallback muncul setelah event OnCheckedChanged.
Properti Text dan Checked dari TActiveCheckBox bisa diubah selama permintaan callback. Properti TextAlign dari - TActiveCheckBox tidak bisa diubah selama permintaan + TActiveCheckBox tidak bisa diubah saat permintaan callback.
diff --git a/demos/quickstart/protected/pages/ActiveControls/id/ActiveCustomValidator.page b/demos/quickstart/protected/pages/ActiveControls/id/ActiveCustomValidator.page index 485fee80..ebec56ce 100644 --- a/demos/quickstart/protected/pages/ActiveControls/id/ActiveCustomValidator.page +++ b/demos/quickstart/protected/pages/ActiveControls/id/ActiveCustomValidator.page @@ -6,7 +6,7 @@Melakukan validasi kustom hanya menggunakan event validasi OnServerValidate sisi-server. Sisi-klien menggunakan callback untuk memunculkan event onServerValidate. Properti ClientValidationFunction dimatikan - dan akan mengeluarkan kekecualian jika mencoba untuk menyetel properti ini. + dan akan mengeluarkan eksepsi jika mencoba untuk menyetel properti ini.
Harap berhati-hati onServerValidate dapat diff --git a/demos/quickstart/protected/pages/ActiveControls/id/ActiveHyperLink.page b/demos/quickstart/protected/pages/ActiveControls/id/ActiveHyperLink.page index faa9f068..d41c5766 100644 --- a/demos/quickstart/protected/pages/ActiveControls/id/ActiveHyperLink.page +++ b/demos/quickstart/protected/pages/ActiveControls/id/ActiveHyperLink.page @@ -5,7 +5,7 @@
Kontrol aktif selain komponen THyperLink. -Selama permintaan callback, perubahan terhadap properti Text, ImageUrl, +Saat permintaan callback, perubahan terhadap properti Text, ImageUrl, NavigateUrl dan Target pada sisi server juga akan mengubah atribut serta konten terkait di sisi-klien.
diff --git a/demos/quickstart/protected/pages/ActiveControls/id/Home.page b/demos/quickstart/protected/pages/ActiveControls/id/Home.page index 458a28eb..60ca140e 100644 --- a/demos/quickstart/protected/pages/ActiveControls/id/Home.page +++ b/demos/quickstart/protected/pages/ActiveControls/id/Home.page @@ -9,12 +9,12 @@ sub-properti ClientSide yang menyediakan banyak properti untuk mengkustomisasi kontrol. Properti CallbackClient dari kelas TPage menyediakan metode untuk memutakhirkan dan mengubah konten sisi-klien -selama permintaan callback. Kontrol aktif bergantung pada koleksi +saat permintaan callback. Kontrol aktif bergantung pada koleksi kelas javascript.Untuk demo cepat atas kontrol aktif, coba kontrol -TActiveButton. Lihat juga bagian akhir dari tutorial Pengubah Kurs untuk conton lebih mendalam. +TActiveButton. Lihat juga bagian akhir dari tutorial Pengubah Kurs untuk contoh lebih mendalam.
* tutorial untuk kontrol ini belum lengkap.
@@ -29,7 +29,7 @@ TActiveButton. Lihat juga bagian akhir dari tutorial TActiveCheckBox mewakili kotak centang pada halaman Web. Ia dapat dipakai untuk mengoleksi input dua-kondisi pengguna - dan memicu permintaan callback. + serta memicu permintaan callback.Demo ini memperlihatkan komponen dasar yang tersedia dalam PRADO untuk memproses Internasionalisasi dan Lokalisasi aplikasi web. Halam ini memanfaatkan template siap multipel lokal (atau kultur) untuk memperlihatkan halaman terlokalisasi yang tersedia. Untuk melihat versi dilokalisasi yang berbeda, silahkan ganti setelan bahasa dalam browser anda.
+Demo ini memperlihatkan komponen dasar yang tersedia dalam PRADO untuk memproses Internasionalisasi dan Lokalisasi aplikasi web. Halam ini memanfaatkan template siap multipel lokal (atau kultur) untuk memperlihatkan halaman terlokalisasi yang tersedia. Untuk melihat versi dilokalisasi yang berbeda, silahkan ganti setelan bahasa dalam browser Anda.
-Saat ini kultur anda adalah <%= $this->Page->CurrentCulture %>. +Saat ini kultur Anda adalah <%= $this->Page->CurrentCulture %>.
-Asset adalah file sumber daya (seperti gambar, suara, video, CSS stylesheet, javascript, dll.) yang dimiliki oleh kelas komponen tertentu. Assets disediakan bagi para pengguna Web. Untuk usabilitas dan kemudahan penyebaran kelas komponen terkait, asset harus berada bersama dengan file kelas komponen. Sebagai contoh, tombol toggle dapat memakai dua gambar, disimpan dalam file down.gif dan up.gif, untuk menampilkan kondisi toggle berbeda. Jika kita ingin file gambar disimpan di bawah direktori images di bawah akar dokumen server Web, tidak akan menjadi nyaman bagi para pengguna komponen tombol toggle, karena setiap kali mereka mengembangkan atau menyebarkan aplikasi baru, mereka harus meng-copy file gambar ke direktori tertentu itu secara manual. Untuk mengeliminir persyaratan ini, direktori relatif ke file kelas komponen harus digunakan untuk menyimpan file gambar. Strategi umum adalah menggunakan direktori yang berisi file kelas komponen untuk menyimpan file asset. +Asset adalah file sumber daya (seperti gambar, suara, video, CSS stylesheet, javascript, dll.) yang dimiliki oleh kelas komponen tertentu. Assets disediakan bagi para pengguna Web. Untuk kegunaan dan kemudahan penyebaran kelas komponen terkait, asset harus berada bersama dengan file kelas komponen. Sebagai contoh, tombol toggle dapat memakai dua gambar, disimpan dalam file down.gif dan up.gif, untuk menampilkan kondisi toggle berbeda. Jika kita ingin file gambar disimpan di bawah direktori images di bawah akar dokumen server Web, tidak akan memembuat nyaman bagi para pengguna komponen tombol toggle, karena setiap kali mereka mengembangkan atau menyebarkan aplikasi baru, mereka harus meng-copy file gambar ke direktori tertentu itu secara manual. Untuk mengeliminir persyaratan ini, direktori relatif ke file kelas komponen harus digunakan untuk menyimpan file gambar. Strategi umum adalah menggunakan direktori yang berisi file kelas komponen untuk menyimpan file asset.
Karena direktori yang berisi file kelas komponen biasanya tidak bisa diakses oleh pengguna Web, PRADO menerapkan skema penerbitan asset untuk menjadikan assets tersedia bagi para pengguna Web. Sebuah asset, setelah diterbitkan, akan mempunyai URL di mana para pengguna bisa mengambil file asset. @@ -10,15 +10,15 @@ Karena direktori yang berisi file kelas komponen biasanya tidak bisa diakses ole
-PRADO menyediakan beberapa metode untuk penerbitan asset atu direktori yang berisi asset: +PRADO menyediakan beberapa metode untuk penerbitan asset atau direktori yang berisi asset:
-HATI-HATI: Sangat berhati-hatilah dengan penerbitan asset, karena ia memberikan para pengguna Web akses ke file yang sebelumnya tidak dapat diakses. Pastikan bahwa anda tidak menerbitkan file yang tidak ingin pengguna lain melihatnya. +HATI-HATI: Berhati-hatilah dengan penerbitan asset, karena ia memberikan para pengguna Web mengakses ke file yang sebelumnya tidak dapat diakses. Pastikan bahwa Anda tidak menerbitkan file yang tidak ingin dilihat pengguna lain.
-PRADO menggunakan teknik cache guna memastikan efisiensi penerbitan asset. Menerbitkan asset intinya memerlukan operasi copy file, yang mahal. Untuk menyimpan operasi copy file yang tidak diperlukan, System.Web.TAssetManager hanya menerbitkan asset saat ia memiliki waktu modifikasi file lebih baru daripada file yang pernah diterbitkan. Ketika aplikasi dijalankan di bawah mode Performance, pemeriksaan cap waktu tersebut juga diabaikan. +PRADO menggunakan teknik cache guna memastikan efisiensi penerbitan asset. Menerbitkan asset intinya memerlukan operasi copy file, yang mahal. Untuk menyimpan operasi copy file yang tidak diperlukan, System.Web.TAssetManager hanya menerbitkan asset saat ia memiliki waktu modifikasi file lebih baru daripada file yang pernah diterbitkan. Ketika aplikasi dijalankan dengan mode Performance, pemeriksaan cap waktu tersebut juga diabaikan.
-SARAN: Jangan menggunakan penerbitan asset secara berlebihan. Konsep asset dipakai terutama untuk membantu pemakaian ulang dan redistribusi kelas komponen lebih baik. Normalnya, anda tidak akan menggunakan penerbitan asset untuk sumberdaya yang tidak terikat ke komponen manapun dalam aplikasi. Sebagai contoh, anda jangan menggunakan penerbitan asset untuk gambar yang digunakan terutama sebagai elemen desain (misalnya logo, gambar latar belakang, dll). Biarkan server Web melayani gambar ini secara langsung yang akan membantu meningkatkan performansi aplikasi anda. +SARAN: Jangan menggunakan penerbitan asset secara berlebihan. Konsep asset dipakai terutama untuk membantu pemakaian ulang dan redistribusi kelas komponen agar lebih baik. Normalnya, Anda tidak akan menggunakan penerbitan asset untuk sumberdaya yang tidak terikat ke komponen mana pun dalam aplikasi. Sebagai contoh, Anda jangan menggunakan penerbitan asset untuk gambar yang digunakan terutama sebagai elemen desain (misalnya logo, gambar latar belakang, dll). Biarkan server Web melayani gambar ini secara langsung yang akan membantu meningkatkan performansi aplikasi Anda.
-Kita telah melihat contoh di atas yang menggunakan duapengguna ditetapkan dalam konfigurasi aplikasi. Sintaks lengkap atas penetapan pengguna dan informasi aturan adalah sebagi berikut, +Kita telah melihat contoh di atas yang menggunakan dua pengguna ditetapkan dalam konfigurasi aplikasi. Sintaks lengkap atas penetapan pengguna dan informasi aturan adalah sebagai berikut,
-TDbUserManager diperkenalkan dalam v3.1.0. Tujuan utamanya adalah untuk menyederhanakan tugas pengaturan akun pengguna yang disimpan dalam sebuah database. Ini membutuhkan para pengembang untuk menulis kelaspengguna yang mewakili informasi yang diperlukan untuk akun pengguna. Kelas pengguna harus diperluas dari TDbUser. +TDbUserManager diperkenalkan dalam v3.1.0. Tujuan utamanya adalah untuk menyederhanakan tugas pengaturan akun pengguna yang disimpan dalam sebuah database. Ini membutuhkan para pengembang untuk menulis kelas pengguna yang mewakili informasi yang diperlukan untuk akun pengguna. Kelas pengguna harus diperluas dari TDbUser.
Untuk menggunakan TDbUserManager, konfigurasi itu dalam konfigurasi aplikasi seperti berikut: diff --git a/demos/quickstart/protected/pages/Advanced/id/Collections.page b/demos/quickstart/protected/pages/Advanced/id/Collections.page index acd821f7..70defa8c 100644 --- a/demos/quickstart/protected/pages/Advanced/id/Collections.page +++ b/demos/quickstart/protected/pages/Advanced/id/Collections.page @@ -5,7 +5,7 @@ Koleksi adalah struktur data dasar dalam pemrograman. Sebagai tambahan pada pemrograman PHP, array dipakai secara luas untuk mewakili koleksi struktur data. Array PHP adalah campuran dari array berindeks-kardinal dan tabel campuran.
-Untuk menghidupkan manipulasi obyek-terorientasi atas koleksi, PRADO menyediakan kelas koleksi bertenaga. Diantaranya, TList dan TMap adalah yang paling mendasar dan biasanya melayani sebagai basis kelas untuk kelas koleksi lainnya. Karena banyak komponen PRADO memiliki properti yang bertipe koleksi, penting bagi para pengembang untuk menguasai pemakaian kelas koleksi PRADO. +Untuk menghidupkan manipulasi obyek-terorientasi atas koleksi, PRADO menyediakan kelas koleksi yang bertenaga. Diantaranya, TList dan TMap adalah yang paling mendasar dan biasanya melayani sebagai basis kelas untuk kelas koleksi lainnya. Karena banyak komponen PRADO memiliki properti yang bertipe koleksi, penting bagi para pengembang untuk menguasai pemakaian kelas koleksi PRADO.
-Seringkali kita ingin memperluas TList untuk melakukan operasi tambahan untuk setiap penambahan atau penghapusan sebuah item. Satu-satunya metode yang diperlukan kelas anak untuk mengganti adalah insertAt() dan removeAt(). Sebagai contoh, untuk memastikan daftar hanya berisi item yang bertipe TControl, kita dapat mengganti insertAt() sebagai berikut, +Seringkali kita ingin memperluas TList untuk melakukan operasi tambahan untuk setiap penambahan atau penghapusan sebuah item. Satu-satunya metode yang diperlukan kelas anak untuk mengganti adalah insertAt() dan removeAt(). Sebagai contoh, guna memastikan daftar hanya berisi item yang bertipe TControl, kita dapat mengganti insertAt() sebagai berikut,
Banyak aplikasi web dibangun dengan PHP tidak memikirkan internasionlisasi saat ia pertama kali ditulis. Itu mungkin dikarenakan tidak dimaksudkan untuk digunakan dalam bahasa dan kultur. Internasionalisasi adalah aspek penting karena meningkatkan adopsi Internet dalam banyak negara yang berbicara non-Ingris. Proses internasionalisasi dan lokalisasi akan mengandung kesulitan. Di bawah adalah beberapa petunjuk umum untuk menginternasionalisasi aplikasi yang sudah ada.
+Banyak aplikasi web dibangun dengan PHP tidak memikirkan internasionlisasi saat ia pertama kali ditulis. Itu mungkin dikarenakan tidak dimaksudkan untuk digunakan dalam bahasa dan kultur. Internasionalisasi adalah aspek penting karena meningkatkan adopsi Internet dalam banyak negara yang berbicara non-Ingris. Proses internasionalisasi dan lokalisasi akan menghadapi kesulitan. Di bawah adalah beberapa petunjuk umum untuk menginternasionalisasi aplikasi yang sudah ada.
Bila memungkinkan semua ragam teks harus diisolasi dan disimpan dalam format persisten. Teks ini termasuk, pesan kesalahan aplikasi, string ditulis tangan dalam file PHP, email, teks statis HTML, dan teks pada elemen formulir (misalnya tombol).
Untuk menghidupkan fitur lokalisasi dalam PRADO, anda perlu menambahkan beberapa opsi konfigurasi dalam konfigurasi aplikasi anda. -Pertama anda perlu menyertakan namespace System.I18N.* ke path anda. +
Untuk menghidupkan fitur lokalisasi dalam PRADO, Anda perlu menambahkan beberapa opsi konfigurasi dalam konfigurasi aplikasi Anda. +Pertama Anda perlu menyertakan namespace System.I18N.* ke path Anda.
Kemudian, jika anda ingin menterjemahkan beberapa teks dalam aplikasi anda, anda perlu menambahkan sumber data pesan terjemahan.
+Kemudian, jika Anda ingin menerjemahkan beberapa teks dalam aplikasi Anda, perlu ditambahkan sumber data pesan terjemahan.
Di mana source dalam translation adalah path titik ke direktori di mana anda akan menyimpan katalog pesan terjemahan. Atribut autosave jika dihidupkan, menyimpan pesan tidak diterjemahkan kembali ke dalam katalog pesasn. +
Di mana source dalam translation adalah path titik ke direktori di mana Anda akan menyimpan katalog pesan terjemahan. Atribut autosave jika dihidupkan, menyimpan pesan tidak diterjemahkan kembali ke dalam katalog pesasn. Dengan menghidupkan cache, pesan yang diterjemahkan disimpan dalam direktori aplikasi runtime/i18n. Nilai marker dipakai untuk mengelilingi teks yang tidak diterjemahkan.
-Dengan konfigurasi lengkap, sekarang kita dapat mulai melokalisasi aplikasi anda. Jika anda menghidupkan autosave, setelah menjalankan aplikasi anda dengan beberapa aktivitas lokalisasi (misalnya menterjemahkan beberapa teks), anda akan melihat sebuah direktori dan messages.xml dibuat di dalam direktori source.
+Dengan konfigurasi lengkap, sekarang kita dapat mulai melokalisasi aplikasi Anda. Jika Anda menghidupkan autosave, setelah menjalankan aplikasi Anda dengan beberapa aktivitas lokalisasi (misalnya menterjemahkan beberapa teks), Anda akan melihat sebuah direktori dan messages.xml dibuat di dalam direktori source.
File katalog pesan terjemahan, jika menggunakan type="XLIFF", adalah format intechange XML pesan terjemahan distandarisasi. Anda bisa mengedit file XML menggunakan editor yang mampu menangani UTF-8. Format dari XML adalah sesuatu mirip seperti berikut ini.
@@ -78,14 +78,14 @@ Setiap pesan terjemahan dilapisi dengan tag trans-unit, di mana souSekali globalisasi dihidupkan, anda dapat mengakses setelan globalisasi, seperti Culture, Charset, dll, menggunakan
+Sekali globalisasi dihidupkan, Anda dapat mengakses setelan globalisasi, seperti Culture, Charset, dll, menggunakan
Anda juga mengubah cara kultur ditentukan dengan mengubah atribut class dalam konfigurasi modul. Sebagai contoh, untuk menyetel kultur yang tergantung pada setelan browser, anda bisa menggunakan kelas TGlobalizationAutoDetect. +
Anda juga mengubah cara kultur ditentukan dengan mengubah atribut class dalam konfigurasi modul. Sebagai contoh, untuk menyetel kultur yang tergantung pada setelan browser, Anda bisa menggunakan kelas TGlobalizationAutoDetect.
Anda juga bisa menyediakan kelas globalisasi sendiri untuk mengubah bagaimana kultur aplikasi ditetapkan. -Terakhir, anda dapat mengubah setelan globalisasi dengan basis halaman demi halaman menggunakan tag kontrol template. Sebagai contoh, mengubah Culture ke "zh".
+Terakhir, Anda dapat mengubah setelan globalisasi dengan basis halaman demi halaman menggunakan tag kontrol template. Sebagai contoh, mengubah Culture ke "zh".Fungsi localize mencari string yang diterjemahkan yang sama dengan aslinya dari sumber terjemahan anda. Pertama, anda perlu mencari semua teks dikode langsung dalam PHP yang ditampilkan atau dikirimkan ke pengguna akhir. Contoh berikut melokalisasi teks $sender (menganggap, katakanlah, sender adalah sebuah tombol). Kode asli sebelum lokalisasi adalah sebagai berikut. +
Fungsi localize mencari string yang diterjemahkan yang sama dengan aslinya dari sumber terjemahan Anda. Pertama, Anda perlu mencari semua teks dikode langsung dalam PHP yang ditampilkan atau dikirimkan ke pengguna akhir. Contoh berikut melokalisasi teks $sender (menganggap, katakanlah, sender adalah sebuah tombol). Kode asli sebelum lokalisasi adalah sebagai berikut.
Pesan gabungan dapat berisi data variabel. Sebagai contoh, dalam pesan "There are 12 users online.", integer 12 dapat berubah tergantung pada beberapa data dalam aplikasi anda. Ini sulit diterjemahkan karena posisi dari data variabel mungkin berbeda untuk bahasa yang berbeda. Seabgai tambahan, bahasa yang berbeda memiliki aturannya sendiri untuk bentuk jamak (jika ada) dan/atau pembilang. Contoh berikut tidak mudah untuk diterjemahkan, karena struktur kalimat sudah tetap dengan dikodekan langsung data variabel dengan pesan. Pesan gabungan dapat berisi data variabel. Sebagai contoh, dalam pesan "There are 12 users online.", integer 12 dapat berubah tergantung pada beberapa data dalam aplikasi Anda. Ini sulit diterjemahkan karena posisi dari data variabel mungkin berbeda untuk bahasa yang berbeda. Seabgai tambahan, bahasa yang berbeda memiliki aturannya sendiri untuk bentuk jamak (jika ada) dan/atau pembilang. Contoh berikut tidak mudah untuk diterjemahkan, karena struktur kalimat sudah tetap dengan dikodekan langsung data variabel dengan pesan. Pesan dan string bisa dilokalisasi dalam PHP atau dalam template.
-Untuk menterjemahkan pesan atau string dalam template, gunakan TTranslate.Pesan Gabungan
-TTranslate
Properti Culture dan Currency dapat ditetapkan untuk membentuk angka spesifik lokal.
-Jika seseorang dari US ingin melihat gambar penjualan dari sebuah toko dalam bahasa Jerman (katakanlah menggunakan kurs EURO), diformat menggunakan kurs jerman, anda perlu untuk menggunakan atribut Culture="de_DE" guna memperoleh kurs yang benar, misalnya 100,00$. Pemisah desimal dan pengelompokan kemudian juga dari lokal de_DE. Ini dapat menimbulkan beberapa kebingungan karena orang dari US memakai "," (koma) sebagai pemisah ribuan. Oleh karena itu, atribut Currency tersedia agar output dari hasil contoh berikut menghasilkan $100.00 +
Jika seseorang dari US ingin melihat gambar penjualan dari sebuah toko dalam bahasa Jerman (katakanlah menggunakan kurs EURO), diformat menggunakan kurs jerman, Anda perlu untuk menggunakan atribut Culture="de_DE" guna memperoleh kurs yang benar, misalnya 100,00$. Pemisah desimal dan pengelompokan kemudian juga dari lokal de_DE. Ini dapat menimbulkan beberapa kebingungan karena orang dari US memakai "," (koma) sebagai pemisah ribuan. Oleh karena itu, atribut Currency tersedia agar output dari hasil contoh berikut menghasilkan $100.00
Menggunakan fungsi localize atau komponen TTranslate untuk menterjemahkan pesan tidak memberitahu penterjemah kardinalitas dari data yang diminta untuk menentukan struktur jamak yang benar yang dipakai. Ia hanya memberitahunya bahwa ada data tersedia, data dapat berupa apa saja. Selanjutnya, penterjemah tidak akan bisa menentukan dengan memperhatikan penempatan data plural yang benar, struktur bahasa atau prasa yang dipakai. Misalnya dalam bahasa Inggris, untuk menterjemahkan kalimat, "There are {number} of apples.", hasil terjemahan akan berbeda tergantung pada jumlah apel. Menggunakan fungsi localize atau komponen TTranslate untuk menerjemahkan pesan tidak memberitahu penerjemah kardinalitas dari data yang diminta untuk menentukan struktur jamak yang benar yang dipakai. Ia hanya memberitahunya bahwa ada data tersedia, data dapat berupa apa saja. Selanjutnya, penerjemah tidak akan bisa menentukan dengan memperhatikan penempatan data plural yang benar, struktur bahasa atau prasa yang dipakai. Misalnya dalam bahasa Inggris, untuk menerjemahkan kalimat, "There are {number} of apples.", hasil terjemahan akan berbeda tergantung pada jumlah apel. Komponen TChoiceFormat melakukan pilihan terjemahan pesan/string. Contoh berikut mendemonstrasikan terjemahan pesan 2 pilihan sederhana.TChoiceFormat
-
-Kategori pesan adalah hirarkis. Kategori yang namanya awalan dari yang lain disebut menjadi leluhur kategori atas kategori lainnya. Sebagai contoh, kategori System.Web adalah leluhur dari kategori System.Web.UI dan System.Web.UI.WebControls. Pesan bisa diambil secara selektif menggunakan filter kategori hirarkis tersebut. Sebagai contoh, jika filter kategori adalah System.Web, maka semua pesan dalam System.Web dikembalikan. Sebagai tambahan, pesan dalam kategori anak seperti System.Web.UI.WebControls, juga dikembalikan. +Kategori pesan adalah hirarkis. Kategori yang namanya awalan dari yang lain disebut leluhur kategori atas kategori lainnya. Sebagai contoh, kategori System.Web adalah leluhur dari kategori System.Web.UI dan System.Web.UI.WebControls. Pesan bisa diambil secara selektif menggunakan filter kategori hirarkis tersebut. Sebagai contoh, jika filter kategori adalah System.Web, maka semua pesan dalam System.Web dikembalikan. Sebagai tambahan, pesan dalam kategori anak seperti System.Web.UI.WebControls, juga dikembalikan.
Dengan ketentuan, pesan yang dicatat dalam kode inti PRADO dikategorikan berdasarkan namespace dari kelas terkait. Sebagai contoh, pesan yang dicatat dalam TPage akan menjadi kategori System.Web.UI.TPage. diff --git a/demos/quickstart/protected/pages/Advanced/id/MasterContent.page b/demos/quickstart/protected/pages/Advanced/id/MasterContent.page index 45a3ab08..5a2cb6b6 100644 --- a/demos/quickstart/protected/pages/Advanced/id/MasterContent.page +++ b/demos/quickstart/protected/pages/Advanced/id/MasterContent.page @@ -48,7 +48,7 @@ Master sangat mirip dengan template eksternal yang diperkenalkan sejak versi 3.0 Baik template master maupun eksternal bisa dipakai untuk berbagi konten yang sama diantara halaman. Master adalah kontrol template yang berisi konten umum dan file kelasnya berisi logika terkait dengan master. Dilain pihak, template eksternal adalah file template murni tanpa file kelas apapun.
-Oleh karena itu, gunakan kontrol master jika konten umum harus dikaitkan dengan beberapa logika, seperti header halaman dengan kotak pencarian atau kotak login. Kontrol master membolehkan anda untuk menetapkan bagaimana konten umum harus berinteraksi dengan pengguna akhir. Jika anda menggunakan template eksternal, anda harus menyimpan logika yang diperlukan dalam halaman atau kelas kontrol yang memiliki basis template. +Oleh karena itu, gunakan kontrol master jika konten umum harus dikaitkan dengan beberapa logika, seperti header halaman dengan kotak pencarian atau kotak login. Kontrol master membolehkan Anda untuk menetapkan bagaimana konten umum harus berinteraksi dengan pengguna akhir. Jika Anda menggunakan template eksternal, Anda harus menyimpan logika yang diperlukan dalam halaman atau kelas kontrol yang memiliki basis template.
Performansinya, template eksternal lebih ringan daripada master seperti berisi kontrol sendiri yang berparisipasi dalam masa hidup halaman, karena pembentuk hanya dipakai saat template sedang diuraikan. diff --git a/demos/quickstart/protected/pages/Advanced/id/Performance.page b/demos/quickstart/protected/pages/Advanced/id/Performance.page index e655ee62..98e89644 100644 --- a/demos/quickstart/protected/pages/Advanced/id/Performance.page +++ b/demos/quickstart/protected/pages/Advanced/id/Performance.page @@ -66,10 +66,10 @@ Untuk berganti mode aplikasi, konfigurasi itu dalam konfigurasi aplikasi: Standarnya PRADO menyimpan kondisi halaman dalam field tersembunyi dari output HTML. Kondisi halaman bisa berukuran sangat besar jika menggunakan kontrol yang kompleks, seperti TDataGrid. Guna mengurangi ukuran besarnya halaman yang dikirimkan melalui jaringan, dua strategi dapat dipakai.
-Pertama, anda dapat mematikan kondisi tampilan dengan menyetel EnableViewState menjadi false untuk halaman atau beberapa kontrol pada halaman jika pengguna tidak perlu berinteraksi dengan halaman/kontrol. +Pertama, Anda dapat mematikan kondisi tampilan dengan menyetel EnableViewState menjadi false untuk halaman atau beberapa kontrol pada halaman jika pengguna tidak perlu berinteraksi dengan halaman/kontrol.
-Kedua, anda bisa menggunakan penyimpanan kondisi halaman berbeda. Sebagai contoh, kondisi halaman bisa disimpan dalam sesi, yang menyimpan kondisi halamaa terutama pada sisi server dan menghemat waktu transmisi jaringan. Properti StatePersisterClass dari halaman menentukan kelas persisten kondisi yang dipakai. Standarnya menggunakan System.Web.UI.TPageStatePersister untuk menyimpan kondisi persisten dalam field tersembunyi. Anda bisa mengubah properti ini ke kelas persisten anda sendiri, selama kelas persister menerapkan antarmuka IPageStatePersister. Anda dapat mengkonfigurasi properti ini dalam beberapa tempat, seperti konfigurasi aplikasi atau konfigurasi halaman menggunakan tag <pages> or <page>, +Kedua, Anda bisa menggunakan penyimpanan kondisi halaman berbeda. Sebagai contoh, kondisi halaman bisa disimpan dalam sesi, yang menyimpan kondisi halamaa terutama pada sisi server dan menghemat waktu transmisi jaringan. Properti StatePersisterClass dari halaman menentukan kelas persisten kondisi yang dipakai. Standarnya menggunakan System.Web.UI.TPageStatePersister untuk menyimpan kondisi persisten dalam field tersembunyi. Anda bisa mengubah properti ini ke kelas persisten Anda sendiri, selama kelas persister menerapkan antarmuka IPageStatePersister. Anda dapat mengkonfigurasi properti ini dalam beberapa tempat, seperti konfigurasi aplikasi atau konfigurasi halaman menggunakan tag <pages> or <page>,
-Catatan, dalam SpecialPage di atas akan menggunakan MyPersister2 sebagai kelas persisternya, sementara halaman lainnya akan menggunakan MyPersister1. Oleh karena itu, anda dapat memiliki strategi perister kondisi untuk halaman yang berbeda. +Catatan, dalam SpecialPage di atas akan menggunakan MyPersister2 sebagai kelas persisternya, sementara halaman lainnya akan menggunakan MyPersister1. Oleh karena itu, Anda dapat memiliki strategi perister kondisi untuk halaman yang berbeda.
- Jika anda adalah seorang pengembang web developer dan datang dari tempat yang sama seperti saya, anda mungkin telah mengenal sedikit Javascript dalam halaman web anda, terutama sebagai perekat UI. + Jika Anda adalah seorang pengembang web developer dan datang dari tempat yang sama seperti saya, Anda mungkin telah mengenal sedikit Javascript dalam halaman web Anda, terutama sebagai perekat UI.
@@ -17,13 +17,13 @@ Bimbingan cepat bagi tur JavaScript tingkat lanjut dengan beberapa fitur OO
Dalam banyak cata kita dapat mengatakan bahwa dengan tiba-tiba palang ditaruh lebih tinggi dari sebelumnya. Ia mengambil palang pintu lebih ahli menulis aplikasi untuk Web baru dan kita perlu mengingkatkan keahlian Javascript kita agar bisa sampai ke sana. - Jika anda mencoba untuk menggunakan banyak librari javascript yang ada di luar sana, seperti + Jika Anda mencoba untuk menggunakan banyak librari javascript yang ada di luar sana, seperti Prototipe.js, Scriptaculous, moo.fx, Perilaku, YUI, - dan lain-lain, anda secara kebetulan akan menemukan diri anda sendiri sedang membaca kode JS. Mungkin dikarenakan anda ingin mempelajari bagaimana mereka melakukannya, atau karena anda penasaran, atau lebih sering karena itulah satu-satunya cara untuk memahami bagaimana untuk memakainya, karena dokumentasi nampaknya tidak banyak ditujukan terutama terhadap librari ini. Apapun kasusnya, anda akan menghadapi teknik kung-fu yang akan menjadi asing dan menakutkan jika anda belum melihat itu sebelumnya. + dan lain-lain, Anda secara kebetulan akan menemukan diri Anda sendiri sedang membaca kode JS. Mungkin dikarenakan Anda ingin mempelajari bagaimana mereka melakukannya, atau karena Anda penasaran, atau lebih sering karena itulah satu-satunya cara untuk memahami bagaimana untuk memakainya, karena dokumentasi nampaknya tidak banyak ditujukan terutama terhadap librari ini. Apapun kasusnya, Anda akan menghadapi teknik kung-fu yang akan menjadi asing dan menakutkan jika Anda belum melihat itu sebelumnya.
@@ -65,16 +65,16 @@ var myPet =
Anda akan melihat JSON banyak dipakai di mana saja dalam JS baru-baru ini, sebagai argumen bagi fungsi, sebagai nilai hasil, sebagai respon server (dalam string,) dll.
-- Ini mungkin tidak biasa bagi para pengembang yang tidak pernah memikirkan tentang itu, tapi dalam fungsi JS adalah sebuah obyek. Anda bisa mengirimkan sebuah fungsi sebagai argumen terhadap fungsi lain sama seperti anda mengirimkan sebuah string, misalnya. Ini sering dipakai dan siap digunakan. + Ini mungkin tidak biasa bagi para pengembang yang tidak pernah memikirkan tentang itu, tapi dalam fungsi JS adalah sebuah obyek. Anda bisa mengirimkan sebuah fungsi sebagai argumen terhadap fungsi lain sama seperti Anda mengirimkan sebuah string, misalnya. Ini sering dipakai dan siap digunakan.
@@ -113,7 +113,7 @@ annoyThePet(myCat.meow);
- Jika anda ingin membuat kucing malas mulai mengeong, anda dapat dengan mudah melakukan ini: + Jika Anda ingin membuat kucing malas mulai mengeong, Anda dapat dengan mudah melakukan ini:
- Karena saya yakin anda sudah mengetahuinya, anda dapat mengakses item individual dalam sebuah array menggunakan tanda kurung kotak: + Karena saya yakin Anda sudah mengetahuinya, anda dapat mengakses item individual dalam sebuah array menggunakan tanda kurung kotak:
- Tetapi anda tidak dibatasi pada indeks numerik. Anda bisa mengakses banyak obyek JS dengan menggunakan namanya, dalam sebuah string. Contoh berikut membuat obyek kosong, dan menambah beberapa anggotanya dengan nama. + Tetapi Anda tidak dibatasi pada indeks numerik. Anda bisa mengakses banyak obyek JS dengan menggunakan namanya, dalam sebuah string. Contoh berikut membuat obyek kosong, dan menambah beberapa anggotanya dengan nama.
- Kekuatan besar dari bahasa pemrograman obyek berasal dari pemakaian kelas. Saya tidak berpikir telah menebak bagaimana kelas didefinisikan dalam JS hanya menggunakan pengalaman saya sebelumnya dengan bahasa lainnya. Nilailah bagi diri anda sendiri. + Kekuatan besar dari bahasa pemrograman obyek berasal dari pemakaian kelas. Saya tidak berpikir telah menebak bagaimana kelas didefinisikan dalam JS hanya menggunakan pengalaman saya sebelumnya dengan bahasa lainnya. Nilailah bagi diri Anda sendiri.
- Jika anda tidak pernah bekerja dengan bahasa yang mendukung klosur anda akan mendapatkan idion berikut terlalu busuk. + Jika Anda tidak pernah bekerja dengan bahasa yang mendukung klosur Anda akan mendapatkan idion berikut terlalu busuk.
- Wah! Mari kita jelaskan apa yang terjadi di sini sebelum anda memutuskan saya telah pergi terlalu jauh dan beralih ke artikel yang lebih baik dari yang ini. + Wah! Mari kita jelaskan apa yang terjadi di sini sebelum Anda memutuskan saya telah pergi terlalu jauh dan beralih ke artikel yang lebih baik dari yang ini.
Pertama, dalam contoh di atas kita menggunakan librari prototype.js, yang menambahkan setiap fungsi ke kelas array. Setiap fungsi menerima satu argumen yang adalah obyek fungsi. Fungsi ini, silah berganti akan dipanggil sekali untuk setiap item dalam array, mengirimkan dua argumen saat dipanggil, item dan indeks untuk item saat ini. Mari kita panggil fungsi ini sebagai fungsi pengulang kita. @@ -276,7 +276,7 @@ myButton2.onclick = buttonClicked;
Karena fungsi buttonClicked didefinisikan di luar obyek manapun kita cenderung berpikir kata kunci this akan berisi referensi ke - obyek window atau document (menganggap kode ini ada ditengah halaman HTML yang dilihat dalam browser.) + obyek window atau document (menganggap kode ini ada di tengah halaman HTML yang dilihat dalam browser.)
@@ -287,7 +287,7 @@ myButton.onclick();
- Itu tidak membingungkan sama sekali bukan? Tapi lihat apa yang terjadi, anda mulai memiliki obyek lain yang berhadapan dengannya dan anda ingi betindak pada obyek ini terhadap event seperti klik tombol. + Itu tidak membingungkan sama sekali bukan? Tapi lihat apa yang terjadi, Anda mulai memiliki obyek lain yang berhadapan dengannya dan Anda ingin betindak pada obyek ini terhadap event seperti klik tombol.
- Anda pikir bagus, sekarang saya dapat mengklik tombol Clear pada halaman saya dan tiga kotak teks itu akan dikosongkan. Kemudian anda mencoba mengklik tombol hanya untuk mendapatkan kesalahan runtime. Kesalahan akan terkait dengan + Anda pikir bagus, sekarang saya dapat mengklik tombol Clear pada halaman saya dan tiga kotak teks itu akan dikosongkan. Kemudian Anda mencoba mengklik tombol hanya untuk mendapatkan kesalahan runtime. Kesalahan akan terkait dengan (tebak apa?) kata kunci this. Masalahnya adalah bahwa this.formFields tidak didefinisikan jika this berisi sebuah referensi ke tombol, tepatnya itulah apa yang terjadi. Satu solusi cepat adalah menulis ulang baris kode terakhir. diff --git a/demos/quickstart/protected/pages/Advanced/id/Scripts1.page b/demos/quickstart/protected/pages/Advanced/id/Scripts1.page index d36c96f1..8fc2eb0c 100644 --- a/demos/quickstart/protected/pages/Advanced/id/Scripts1.page +++ b/demos/quickstart/protected/pages/Advanced/id/Scripts1.page @@ -6,16 +6,16 @@ Catatan Pengembang untuk prototype.js oleh Sergio Pereira.
-Dalam hal anda tidak pernah menggunakannya, prototype.js adalah librari +Dalam hal Anda tidak pernah menggunakannya, prototype.js adalah librari JavaScript yang ditulis oleh Sam Stephenson. - Pemikiran yang hebat ini dan kode sesuai-standar yang ditulis dengan baik mengambil banyak beban terkait dengan pembuatan halaman web sangat interaktif dan kaya yang mengkarakterkan Web 2.0 di belakang anda. + Pemikiran yang hebat ini dan kode sesuai-standar yang ditulis dengan baik mengambil banyak beban terkait dengan pembuatan halaman web sangat interaktif dan kaya yang mengkarakterkan Web 2.0 di belakang Anda.
- Jika anda baru saja mencoba menggunakan librari ini, anda mungkin mencatat bahwa dokumentasi bukanlah salah satu titik yang terkuat. Seperti banyak pengembang lain sebelum saya, saya mempelajari prototype.js dengan membaca kode sumber dan melakukan percobaan denganya. Saya pikir akan baik jika mengambil catatan selama saya mempelajari dan berbagi dengan orang lain. + Jika Anda baru saja mencoba menggunakan librari ini, Anda mungkin mencatat bahwa dokumentasi bukanlah salah satu titik yang terkuat. Seperti banyak pengembang lain sebelum saya, saya mempelajari prototype.js dengan membaca kode sumber dan melakukan percobaan denganya. Saya pikir akan baik jika mengambil catatan selama saya mempelajari dan berbagi dengan orang lain.
- Setelah anda membaca contoh dan referensi, para pengembang yang terbiasa dengan bahasa pemrograman Ruby akan mencatat kesamaan maksud antara kelas built-in Ruby dan banyak ekstensi diimplementasikan oleh librari ini. + Setelah Anda membaca contoh dan referensi, para pengembang yang terbiasa dengan bahasa pemrograman Ruby akan mencatat kesamaan maksud antara kelas built-in Ruby dan banyak ekstensi diimplementasikan oleh librari ini.
@@ -61,7 +61,7 @@ function test2()- Hal baik lainnya dari fungsi ini adalah bahwa anda bisa mengirimkan baik string id ataupun elemen obyek itu sendiri, yang menjadikan fungsi ini sangat berguna ketika membuat fungsi lain yang juga mengambil bentuk argumen. + Hal baik lainnya dari fungsi ini adalah bahwa Anda bisa mengirimkan baik string id ataupun elemen obyek itu sendiri, yang menjadikan fungsi ini sangat berguna ketika membuat fungsi lain yang juga mengambil bentuk argumen.
Prototipe mendefinisikan properti di dalam obyek event untuk beberapa dari tombol yang lebih umum, maka jangan ragu-ragu untuk mencari di sekitar Prototype guna melihat yang mana saja itu.
-Catatan terakhir pada event tekanan tombol; Jika anda ingin mendeteksi klik kiri anda bisa menggunakan Event.isLeftClick(event).
+Catatan terakhir pada event tekanan tombol; Jika Anda ingin mendeteksi klik kiri, Anda bisa menggunakan Event.isLeftClick(event).
Sejauh ini semuanya sudah jelas, tapi sesuatu mulai menjadi sedikit lebih rumit ketika anda perlu bekerja dengan event dalam lingkungan obyek-terorientasi. Anda harus berhadapan dengan penyatuan dan sintaks yang terlihat aneh yang memerlukan beberapa waktu bagi anda untuk mengetahuinya.
+Sejauh ini semuanya sudah jelas, tapi sesuatu mulai menjadi sedikit lebih rumit ketika Anda perlu bekerja dengan event dalam lingkungan obyek-terorientasi. Anda harus berhadapan dengan penyatuan dan sintaks yang terlihat aneh yang memerlukan beberapa waktu bagi Anda untuk mengetahuinya.
-Mari kita lihat pada beberapa kode agar anda bisa mendapatkan pengertian yang lebih baik atas apa yang sedang saya bicarakan.
+Mari kita lihat pada beberapa kode agar Anda bisa mendapatkan pengertian yang lebih baik atas apa yang sedang saya bicarakan.
Sekarang, melihat kode di atas, anda akan mencatat fungsi bindEvent. Ini mengambil metode sebelumnya showTagName dan memperlakukannya sebagai metode yang akan dipicu ketika seseorang mengklik salah satu dari item daftar kita.
+Sekarang, melihat kode di atas, Anda akan mencatat fungsi bindEvent. Ini mengambil metode sebelumnya showTagName dan memperlakukannya sebagai metode yang akan dipicu ketika seseorang mengklik salah satu dari item daftar kita.
Anda juga akan mencatat bahwa kita mengirimkan ini sebagai argumen ke fungsi bindEvent. Ini membolehkan kita untuk mereferensi obyek dalam konteks EventDispenser -di dalam fungsi showTagName(event) kita. Jika fungsi showTagName memerlukan parameter tambahan, anda melampirkannya ke parameter terakhir dari bindEvent. Sebagai contoh
+di dalam fungsi showTagName(event) kita. Jika fungsi showTagName memerlukan parameter tambahan, Anda melampirkannya ke parameter terakhir dari bindEvent. Sebagai contohSelanjutnya, anda akan melihat bind(this) yang dilampirkan ke fungsi iterator. +
Selanjutnya, Anda akan melihat bind(this) yang dilampirkan ke fungsi iterator. Ini sama sekali tidak berkaitan dengan event, ia berada di sini untuk membolehkan saya menggunakan this di dalam iterator. Jika kita tidak menggunakan bind(this), saya tidak bisa mereferensi metode showTagName di dalam iterator.
Ok, kita berlanjut untuk melihat metode kita yang sebenarnya dipanggil saat terjadi event. Karena kita sudah berhadapan dengan showTagName, mari kita lihat itu.
@@ -172,10 +172,10 @@ showTagName: function(event) } -Seperti yang anda lihat, fungsi ini menerima satu argumen--event. +
Seperti yang Anda lihat, fungsi ini menerima satu argumen--event. Agar kita mendapatkan elemen yang memicu event kita perlu mengirimkan argumen ke Event.element. Sekarang kita dapat memanipulasinya kapan saja.
-Ini mencakup bagian yang paling membingungkan dari kode kita. Teks di atas juga relevan untuk bagian sisa dari kode kita. Jika ada sesuatu mengenai ini yang tidak anda mengerti, jangan ragu-ragu untuk mengajukan pertanyaan dalam forum.
+Ini mencakup bagian yang paling membingungkan dari kode kita. Teks di atas juga relevan untuk bagian sisa dari kode kita. Jika ada sesuatu mengenai ini yang tidak Anda mengerti, jangan ragu-ragu untuk mengajukan pertanyaan dalam forum.
Ketergantungan masing-masing librari secara otomatis dipecahkan. Komponen yang memerlukan libari tertentu juga akan secara otomatis mengambil librari yang diperlukan. -Sebagai contoh, jika anda menambah komponen TDatePicker pada halaman, datepicker dan dependensinya akan secara otomatis disertakan pada halaman.
+Sebagai contoh, jika Anda menambah komponen TDatePicker pada halaman, datepicker dan dependensinya akan secara otomatis disertakan pada halaman. -Lihat TClientScript untuk opsi penambahan kode Javascript kustom anda ke halaman.
+Lihat TClientScript untuk opsi penambahan kode Javascript kustom Anda ke halaman.
-Untuk menggunakan skema validasi cookie yang disediakan oleh PRADO, anda juga perlu mengambil cookie melalui koleksi Cookies dari THttpRequest dengan menggunakan pernyataan PHP berikut, +Untuk menggunakan skema validasi cookie yang disediakan oleh PRADO, Anda juga perlu mengambil cookie melalui koleksi Cookies dari THttpRequest dengan menggunakan pernyataan PHP berikut,
-Untuk menggunakan sebuah tema, anda perlu menyetel properti Theme dari halaman dengan nama tema, yaitu nama direktori tema. Anda dapat menyetelnya dalam konfigurasi halaman atau dalam konstruktor atau metode onPreInit() dari halaman. Anda tidak bisa menyetel properti setelah onPreInit() karena saat itu, kontrol anak dari halaman sudah dibuat (skin harus diterapkan ke kontrol setelah kontrol tersebut dibuat.) +Untuk menggunakan sebuah tema, Anda perlu menyetel properti Theme dari halaman dengan nama tema, yaitu nama direktori tema. Anda dapat menyetelnya dalam konfigurasi halaman atau dalam konstruktor atau metode onPreInit() dari halaman. Anda tidak bisa menyetel properti setelah onPreInit() karena saat itu, kontrol anak dari halaman sudah dibuat (skin harus diterapkan ke kontrol setelah kontrol tersebut dibuat.)
Untuk menggunakan skin tertentu dalam tema untuk sebuah kontrol, setel properti SkinID dari kontrol dalam template seperti berikut, @@ -23,7 +23,7 @@ Untuk menggunakan skin tertentu dalam tema untuk sebuah kontrol, setel properti <com:TButton SkinID="Blue" ... />
-Ini akan menerapkan skin 'Blue' ke tombol. Catatan, nilai properti awal yang ditetapkan oleh skin 'Blue' akan mengganti setiap nilai properti tombol. Gunakan tema stylesheet jika anda tidak ingi diganti. Untuk menggunakan tema stylesheet, setel properti StyleSheetTheme dari halaman daripada Theme (anda bisa memiliki keduanya StyleSheetTheme dan Theme). +Ini akan menerapkan skin 'Blue' ke tombol. Catatan, nilai properti awal yang ditetapkan oleh skin 'Blue' akan mengganti setiap nilai properti tombol. Gunakan tema stylesheet jika Anda tidak ingi diganti. Untuk menggunakan tema stylesheet, setel properti StyleSheetTheme dari halaman daripada Theme (Anda bisa memiliki keduanya StyleSheetTheme dan Theme).
Untuk menggunakan file Javascript dan file CSS yang berada dalam sebuah tema, kontrol THead harus ditempatkan pada template halaman. Ini dikarenakan tema akan meregistrasi file itu dengan halaman dan THead adalah tempat yang tepat untuk menempatkan mengambil file tersebut. @@ -34,7 +34,7 @@ Dimungkinkan untuk menetapkan tipe media dari file CSS yang berisikan sebuah tem
-Semua tema standarnya harus ditempatkan di bawah direktori [AppEntryPath]/themes, di mana AppEntryPath merujuk ke direktori yang berisi naskah entri aplikasi. Jika anda ingin menggunakan direktori berbeda, konfigurasi properti BasePath dan BaseUrl dari modul System.Web.UI.TThemeManager dalam konfigurasi aplikasi, +Semua tema standarnya harus ditempatkan di bawah direktori [AppEntryPath]/themes, di mana AppEntryPath merujuk ke direktori yang berisi naskah entri aplikasi. Jika Anda ingin menggunakan direktori berbeda, konfigurasi properti BasePath dan BaseUrl dari modul System.Web.UI.TThemeManager dalam konfigurasi aplikasi,
-Membuat sebuah tema melibatkan pembuatan direktori tema dan penulisan file skin (dan kemungkinan file Javascript serta CSS). Nama file skin harus diakhiri dengan .skin. Format file skin adalah sama seperti file template kontrol. Karena file skin tidak mendefinisikan penyajian hubungan leluhur-aak diantara kontrolnya, anda tidak bisa menempatkan tag komponen di dalam yang lainnya. Dan setiap teks statis antara tag komponen diabaikan. Untuk mendefinisikan skin 'Blue' seperti telah disebutkan di atas untuk TButton, tulis yang berikut dalam file skin, +Membuat sebuah tema melibatkan pembuatan direktori tema dan penulisan file skin (dan kemungkinan file Javascript serta CSS). Nama file skin harus diakhiri dengan .skin. Format file skin adalah sama seperti file template kontrol. Karena file skin tidak mendefinisikan penyajian hubungan leluhur-aak diantara kontrolnya, Anda tidak bisa menempatkan tag komponen di dalam yang lainnya. Dan setiap teks statis antara tag komponen diabaikan. Untuk mendefinisikan skin 'Blue' seperti telah disebutkan di atas untuk TButton, tulis yang berikut dalam file skin,
-Seperti sudah disebutan di atas, anda dapat menyimpan beberapa skin dalam satu file skin, atau memisahkannya ke dalam beberapa file. Strategi yang umum digunakan adalah bahwa setiap file skin hanya berisi skin untuk satu tipe kontrol. Sebagai contoh, Button.skin akan berisi skin hanya untuk tipe kontrol TButton. +Seperti sudah disebutan di atas, Anda dapat menyimpan beberapa skin dalam satu file skin, atau memisahkannya ke dalam beberapa file. Strategi yang umum digunakan adalah bahwa setiap file skin hanya berisi skin untuk satu tipe kontrol. Sebagai contoh, Button.skin akan berisi skin hanya untuk tipe kontrol TButton.
-Konfigurasi aplikasi digunakan untuk menetapkan pperilaku global atas aplikasi. Ini terrmasuk spesifikasi alias path, pemakaian namespace, konfigurasi modul dan dan layanan, serta parameter. +Konfigurasi aplikasi digunakan untuk menetapkan perilaku global atas aplikasi. Ini terrmasuk spesifikasi alias path, pemakaian namespace, konfigurasi modul dan dan layanan, serta parameter.
Konfigurasi untuk aplikasi disimpan dalam sebuah file XML bernama application.xml, yang harus ditempatkan di bawah path basis aplikasi. Formatnya ditampilkan berikut ini. Spesifikasi lengkap dari konfigurasi aplikasi dapat ditemukan dalam file DTD dan XSD.
@@ -34,14 +34,14 @@ Konfigurasi untuk aplikasi disimpan dalam sebuah file XML bernama applicatio
-Standarnya tanpa konfigurasi eksplisit, aplikasi PRADO akan mengambil beberapa modul inti, seperti THttpRequest, THttpResponse, dll. Ia juga akan menyediakan TPageService sebagai layanan standar. Konfigurasi dan penggunaan modul serta layanan ini tercakup dalam seksi individual pada tutorial ini. Catatan, jika aplikasi anda mengambil setelan standar untuk modul dan layanan ini, anda tidak perlu menyediakan konfigurasi aplikasi. Akan tetapi, jika modul atau layanan ini tidak mencukupi, atau anda ingin menghubah perilakunya dengan mengkonfigurasi nilai propertinya, anda memerlukan konfigurasi aplikasi. +Standarnya tanpa konfigurasi eksplisit, aplikasi PRADO akan mengambil beberapa modul inti, seperti THttpRequest, THttpResponse, dll. Ia juga akan menyediakan TPageService sebagai layanan standar. Konfigurasi dan penggunaan modul serta layanan ini tercakup dalam seksi individual pada tutorial ini. Catatan, jika aplikasi Anda mengambil setelan standar untuk modul dan layanan ini, Anda tidak perlu menyediakan konfigurasi aplikasi. Akan tetapi, jika modul atau layanan ini tidak mencukupi, atau Anda ingin menghubah perilakunya dengan mengkonfigurasi nilai propertinya, Anda memerlukan konfigurasi aplikasi.
-Nilai awal yang ditetapkan melalui tag kontrol template ditempatkan ke properti terkait saat kontrol template dibentuk. Oleh karena itu, anda dapat mengganti nilai properti ini dalam langkah berikutnya, seperti tahap Init dari kontrol. +Nilai awal yang ditetapkan melalui tag kontrol template ditempatkan ke properti terkait saat kontrol template dibentuk. Oleh karena itu, Anda dapat mengganti nilai properti ini dalam langkah berikutnya, seperti tahap Init dari kontrol.
-Tag kontrol template adalah opsional dalam sebuah template. Setiap template dapat berisi paling banyak satu tag kontrol template. Anda dapat menempatkan tag kontrol template di mana saja di dalam template. Direkomendasikan bahwa anda menempatkannya di awal template untuk visibilitas lebih baik. +Tag kontrol template adalah opsional dalam sebuah template. Setiap template dapat berisi paling banyak satu tag kontrol template. Anda dapat menempatkan tag kontrol template di mana saja di dalam template. Direkomendasikan bahwa Anda menempatkannya di awal template untuk visibilitas lebih baik.
@@ -97,7 +97,7 @@ Sejak versi 3.0.5, PRADO mulai mendukung penyertaan template eksternal. Ini dila Template eksternal akan disisipkan di tempat di mana tag include terjadi dalam basis template.-Catatan, pengulangan penyertaan template tidak didukung, misalnya anda tidak dapat mempunyai tag include di dalam template eksternal. +Catatan, pengulangan penyertaan template tidak didukung, misalnya Anda tidak dapat mempunyai tag include di dalam template eksternal.
-Tag asset dipakai untuk mempublikasikan file pribadi dan menampilkan URL terkait. Sebagai contoh, jika anda mempunyai file gambar yang tidak bisa diakses Web dan anda ingin menjadikannya terlihat bagi pengguna-akhir, anda dapat menggunakan tag asset untuk mempublikasikan file ini dan menampilkan URL ke pengguna-akhir agar mereka dapat mengambil gambar yang dipublikasikan. +Tag asset dipakai untuk mempublikasikan file pribadi dan menampilkan URL terkait. Sebagai contoh, jika Anda mempunyai file gambar yang tidak bisa diakses Web dan Anda ingin menjadikannya terlihat bagi pengguna-akhir, Anda dapat menggunakan tag asset untuk mempublikasikan file ini dan menampilkan URL ke pengguna-akhir agar mereka dapat mengambil gambar yang dipublikasikan.
Format tag asset adalah sebagai berikut, @@ -81,7 +81,7 @@ Format tag asset adalah sebagai berikut, di mana LocalFileName merujuk ke path file yang relatif ke direktori yang berisi file template saat ini. Path file bisa berupa file tunggal atau sebuah direktori. Jika direktori, konten dalam seluruh direktori akan dibuat dapat diakses oleh pengguna-akhir.
-HARAP SANGAT BERHATI-HATI ketika anda menggunakan tag asset karena ia dapat memperlihatkan ke pengguna-akhir file yang tidak ingin anda perlihatkan kepada mereka. +HARAP SANGAT BERHATI-HATI ketika Anda menggunakan tag asset karena ia dapat memperlihatkan ke pengguna-akhir file yang tidak ingin Anda perlihatkan kepada mereka.
diff --git a/demos/quickstart/protected/pages/Configurations/id/Templates3.page b/demos/quickstart/protected/pages/Configurations/id/Templates3.page index f900f72c..eb67f962 100644 --- a/demos/quickstart/protected/pages/Configurations/id/Templates3.page +++ b/demos/quickstart/protected/pages/Configurations/id/Templates3.page @@ -4,7 +4,7 @@-Tag properti dinamis sangat mirip dengan tag konten dinamis, kecuali bahwa ia berlaku untuk properti komponen. Kegunaan tag properti dinamis adalah untuk membolehkan konfigurasi properti komponen lebih serba guna. Catatan, anda tidak perlu memakai tag properti dinamis karena apa yang bisa dikerjakan oleh tag properti dinamis juga bisa dilakukan dalam kode PHP. Akan tetapi, menggunakan tag properti dinamis membawa anda jauh lebih nyaman saat menyempurnakan tugas yang sama. Pemakaian dasar dari tag properti dinamis adalah sebagai berikut, +Tag properti dinamis sangat mirip dengan tag konten dinamis, kecuali bahwa ia berlaku untuk properti komponen. Kegunaan tag properti dinamis adalah untuk membolehkan konfigurasi properti komponen lebih serba guna. Catatan, Anda tidak perlu memakai tag properti dinamis karena apa yang bisa dikerjakan oleh tag properti dinamis juga bisa dilakukan dalam kode PHP. Akan tetapi, menggunakan tag properti dinamis membawa Anda jauh lebih nyaman saat menyempurnakan tugas yang sama. Pemakaian dasar dari tag properti dinamis adalah sebagai berikut,
-di mana anda dapat mengurung DynamicPropertyTag di dalam tanda kutip tunggal atau dua agar pembacaannya lebih baik. +di mana Anda dapat mengurung DynamicPropertyTag di dalam tanda kutip tunggal atau dua agar pembacaannya lebih baik.
Seperti tag konten dinamis, kami mempunyai tag ekspresi, tag databind, tag parameter, tag asset dan tag lokalisasi. (Catatan, tidak ada tag pernyataan di sini.) @@ -45,7 +45,7 @@ Format tag databind adalah sebagai berikut, <%# PhpExpression %>
-Sejak v3.0.2, tag ekspresi dan tag databind dapat direkatkan di dalam string statis. Sebagai contoh, anda bisa menulis yang berikut dalam template, +Sejak v3.0.2, tag ekspresi dan tag databind dapat direkatkan di dalam string statis. Sebagai contoh, Anda bisa menulis yang berikut dalam template,
-Sebelumnya, anda harus menggunakan ekspresi tunggal dengan penggabungan string untuk mendapatkan efek yang sama. +Sebelumnya, Anda harus menggunakan ekspresi tunggal dengan penggabungan string untuk mendapatkan efek yang sama.
@@ -74,7 +74,7 @@ Catatan, parameter aplikasi biasanya didefinisikan konfigurasi aplikasi atau kon-Tag asset dipakai untuk mempublikasikan file pribadi dan menampilkan URL terkait. Sebagai contoh, jika anda mempunyai file gambar yang tidak bisa diakses Web dan anda ingin menjadikannya terlihat bagi pengguna-akhir, anda dapat menggunakan tag asset untuk mempublikasikan file ini dan menampilkan URL ke pengguna-akhir agar mereka dapat mengambil gambar yang dipublikasikan. Tag asset dievaluasi ketika template diberi contoh. +Tag asset dipakai untuk mempublikasikan file pribadi dan menampilkan URL terkait. Sebagai contoh, jika Anda mempunyai file gambar yang tidak bisa diakses Web dan Anda ingin menjadikannya terlihat bagi pengguna-akhir, Anda dapat menggunakan tag asset untuk mempublikasikan file ini dan menampilkan URL ke pengguna-akhir agar mereka dapat mengambil gambar yang dipublikasikan. Tag asset dievaluasi ketika template diberi contoh.
Format tag asset adalah sebagai berikut, @@ -86,13 +86,13 @@ Format tag asset adalah sebagai berikut, di mana LocalFileName merujuk ke path file yang relatif ke direktori yang berisi file template saat ini. Path file bisa berupa file tunggal atau sebuah direktori. Jika direktori, konten dalam seluruh direktori akan dibuat dapat diakses oleh pengguna-akhir.
-HARAP SANGAT BERHATI-HATI ketika anda menggunakan tag asset karena ia dapat memperlihatkan ke pengguna-akhir file yang tidak ingin anda perlihatkan kepada mereka. +HARAP SANGAT BERHATI-HATI ketika Anda menggunakan tag asset karena ia dapat memperlihatkan ke pengguna-akhir file yang tidak ingin Anda perlihatkan kepada mereka.
-Tag lokalisasi mewakili teks yang dilokalisasi. Formatnya adalah sebagai berikut, +Tag lokalisasi mewakili teks yang dilokalisir. Formatnya adalah sebagai berikut,
Berikut dari contoh pola di atas, diff --git a/demos/quickstart/protected/pages/Database/id/ActiveRecord.page b/demos/quickstart/protected/pages/Database/id/ActiveRecord.page index a779a1da..a171ed7d 100644 --- a/demos/quickstart/protected/pages/Database/id/ActiveRecord.page +++ b/demos/quickstart/protected/pages/Database/id/ActiveRecord.page @@ -19,20 +19,20 @@ seperti membuat, membaca, memutakhirkan, dan menghapus. Derivasi dan validasi didasarkan pada satu rekaman yang bekerja denga baik dalam struktur ini. Rekaman Aktif mempunyai kuntungan utama dalam hal kesederhanaan. Mudah untuk membangun Rekaman Aktif, dan mudah untuk dimengerti.
-Akan tetapi, seiring dengan perkembangan logika bisnis anda dalm hal kompleksitas, anda akan segera ingin menggunakan hubungan langsung obyek anda, koleksi, turunan, dan seterusnya. Ini tidak mudah diterapkan ke dalam Rekaman Aktif, dan menambahkannya sedikit demi sedikit menjadi sangat kacau. +
Akan tetapi, seiring dengan perkembangan logika bisnis Anda dalm hal kompleksitas, Anda akan segera ingin menggunakan hubungan langsung obyek Anda, koleksi, turunan, dan seterusnya. Ini tidak mudah diterapkan ke dalam Rekaman Aktif, dan menambahkannya sedikit demi sedikit menjadi sangat kacau. Argumen lain terhadap Rekaman Aktif adalah kenyataan bahwa ia menyandingkan desin obyek ke desain database. Ini menjadikannya lebih sulit untuk merefraktorisasi karena proyek terus berjalan.
Alternatifnya adalah menggunakan Pemeta Data yang yang memisahkan aturan dari obyek bisnis dan bagaimana obyek ini disimpan.
Prado menyediakan pilihan tambahan antara Rekaman Aktif dan
Pemeta Data SqlMap.
Pemeta Data SqlMap bisa dipakai untuk mengambil obyek Rekaman Aktif, hasilnya; obyek Rekaman Aktif ini bisa dipakai untuk memutakhirkan database.
- "Hubungan" andara Rekaman Aktif dan SqlMap digambarkan dalam diagram berikut. Lebih rinci mengenai Pemeta Data SqlMap dapat ditemukan dalam
+ "Hubungan" antara Rekaman Aktif dan SqlMap digambarkan dalam diagram berikut. Lebih rinci mengenai Pemeta Data SqlMap dapat ditemukan dalam
Manual SqlMap.
alt="Rekaman Aktif dan SqlMap DataMapper" id="fig:diagram.png" class="figure"/>
- Kelas Rekaman Aktif mempunyai fungsionalitas untuk melakukan tugas-tugas berikut. + Kelas Rekaman Aktif berfungsi untuk melakukan tugas-tugas berikut.
-Implementasi Prado terhadap Rekaman Aktif tidak memelihara identitas referensial. Setiap obyek diperoleh menggunakan Rekaman Aktif pada data dalam database. Sebagai contoh, jika anda meminta kustomer tertentu dan mendapatkan kembali obyek Customer, kali berikutnya anda meminta kustomer itu, anda akan kembali mendapatkan turunan lain dari obyek Customer. Ini berarti bahwa perbandingan tepat (misalnya menggunakan ===) akan mengembalikan false, sementara perbandingan bebas (misalnya menggunakan ==) akan mengembalikan true jika nilai obyek sama menurut perbandingan bebas. +Implementasi Prado terhadap Rekaman Aktif tidak memelihara identitas referensial. Setiap obyek diperoleh menggunakan Rekaman Aktif pada data dalam database. Sebagai contoh, jika Anda meminta kustomer tertentu dan mendapatkan kembali obyek Customer, kali berikutnya Anda meminta kustomer itu, Anda akan kembali mendapatkan turunan lain dari obyek Customer. Ini berarti bahwa perbandingan tepat (misalnya menggunakan ===) akan mengembalikan false, sementara perbandingan bebas (misalnya menggunakan ==) akan mengembalikan true jika nilai obyek sama menurut perbandingan bebas.
Implikasi desain ini terkait dengan pertanyaan berikut. "Anda pikir kustomer sebagai obyek, di mana hanya satu, -atau anda pikir obyek yang anda operasikan sebagai duplikat dari database?" +atau Anda pikir obyek yang Anda operasikan sebagai duplikat dari database?" Pemetaan O/R lain akan mengartikan bahwa hanya ada satu obyek Kustomer dengan custID 100, dan secara literal ia adalah kustomer. -Jika anda mendapatkan kustomer dan mengubah field-nya, maka anda sekarang telah mengubah kustomer itu. -"Itu berbatasan dengan: anda telah mengubah duplikat kustomer ini, tapi bukan pada duplikat itu. +Jika Anda mendapatkan kustomer dan mengubah field-nya, maka Anda sekarang telah mengubah kustomer itu. +"Itu berbatasan dengan: Anda telah mengubah duplikat kustomer ini, tapi bukan pada duplikat itu. Dan jika dua orang memutakhirkan kustomer pada dua duplikat obyek, siapapun yang memutakhirkan pertama kali, atau mungkin yang terakhir yang menang." [A. Hejlsberg 2003]
@@ -101,10 +101,10 @@ class UserRecord extends TActiveRecordSetiap kolom dari tabel "users" harus mempunyai properti terkait atas nama yang sama seperti nama kolom dalam kelas UserRecord. - Tentunya, anda juga mendefinisikan variabel atau properti tambahan yang tidak ada dalam struktur tabel. + Tentunya, Anda juga mendefinisikan variabel atau properti tambahan yang tidak ada dalam struktur tabel. Konstan kelas TABLE adalah opsional saat nama kelas adalah sama seperti nama tabel dalam database, sebaliknya TABLE harus - menetapkan nama tabel yang terkait dengan kelas Rekaman Aktif anda. + menetapkan nama tabel yang terkait dengan kelas Rekaman Aktif Anda.
- Karena TActiveRecord memperluas TComponent, metode penentu dan pengambil dapat didefinisikan guna membolehkan kontrol melalui bagaimana variabel disetel dan dikembalikan. Sebagai contoh, menambah properti $level untuk menggunakan kelas UserRecord: + Karena TActiveRecord memperluas TComponent, metode penyetel dan pengambil dapat didefinisikan guna membolehkan kontrol melalui bagaimana variabel disetel dan dikembalikan. Sebagai contoh, menambah properti $level untuk menggunakan kelas UserRecord:
Alternatifnya, anda dapat membuat basis kelas dan mengganti metode getDbConnection() untuk mengembalikan +
Alternatifnya, Anda dapat membuat basis kelas dan mengganti metode getDbConnection() untuk mengembalikan koneksi database. Ini adalah cara sederhana untuk mengijinkan koneksi database multipel. Kode berikut mendemonstrasikan penetapan koneksi database dalam sebuah basis kelas (tidak perlu menyetel koneksi DB di manapun juga).
Untuk memutakhirkan rekaman dalam database, cukup ubah satu atau lebih properti obyek Rekaman Aktif yang sudah diambil dari database dan kemudian panggil metode save().
@@ -387,7 +387,7 @@ Obyek Rekaman Aktif mempunyai masa-hidup sederhana seperti digambarkan dalam dia
alt="Active Records Life Cycle" id="fig:cycle.png" class="figure"/>
Kita melihat bahwa obyek TActiveRecord baru dibuat dengan menggunakan salah satu metode find*() ataupun membuat turunan baru dengan menggunakan kata kunci PHP new. Obyek yang dibuat dengan metode find*() dimulai dengan kondisi clean. Turunan baru TActiveRecord membuat selain metode find*() yang dimulai dengan kondisi new. -Kapan saja anda memanggil metode save() pada obyek TActiveRecord, obyek memasuki keadaan clean. Obyek dalam clean menjadi dirty ketika satu atau lebih keadaan internalnya diubah. Pemanggilan metode delete() pada obyek mengakhiri masa-hidup obyek, tidak ada aksi lanjutan yang dilakukan pada obyek. +Kapan saja Anda memanggil metode save() pada obyek TActiveRecord, obyek memasuki keadaan clean. Obyek dalam clean menjadi dirty ketika satu atau lebih keadaan internalnya diubah. Pemanggilan metode delete() pada obyek mengakhiri masa-hidup obyek, tidak ada aksi lanjutan yang dilakukan pada obyek.
Hubungan "has many" tidak diambil secara otomatis ketika anda menggunakan salah satu metode finder Rekaman Aktif. +
Hubungan "has many" tidak diambil secara otomatis ketika Anda menggunakan salah satu metode finder Rekaman Aktif. Anda perlu untuk mengambil secara eksplisit obyek terkait seperti berikut. Dalam kode di bawah ini, kedua baris adalah sama dan nama metode tidak sensitif huruf.
-Obyek dapat dengan mudah menangani field multi nilai dengan menggunakan koleksi sebagai nilai field. Database relasional tidak memiliki fitur ini dan dibatasi hanya ke field nilai-tunggal. Ketika anda memetakan asosiasi satu-ke-banyak, anda bisa menangani ini menggunakan hubungan has many, intinya menggunakan kunci asing untuk nilai-tunggal akhir dari asosiasi. Tapi asosiasi banyak-ke-banyak tidak bisa melakukan ini karena tidak ada nilai-tunggal akhir ke kunci asing yang dipegangnya. +Obyek dapat dengan mudah menangani field multi nilai dengan menggunakan koleksi sebagai nilai field. Database relasional tidak memiliki fitur ini dan dibatasi hanya ke field nilai-tunggal. Ketika Anda memetakan asosiasi satu-ke-banyak, Anda bisa menangani ini menggunakan hubungan has many, intinya menggunakan kunci asing untuk nilai-tunggal akhir dari asosiasi. Tapi asosiasi banyak-ke-banyak tidak bisa melakukan ini karena tidak ada nilai-tunggal akhir ke kunci asing yang dipegangnya.
Jawabannya adalah resolusi klasik yang telah dipakai oleh orang selama dekade ini yakni: buat tabel ekstra (tabel asosiasi) untuk merekam asosiasi. @@ -747,9 +747,9 @@ Ide dasarnya adalah menggunakan tabel asosiasi untuk menyimpan asosiasi. Tabel i
Tabel asosiasi tidak mempunyai kaitan obyek dalam-memori dan kunci primernya adalah gabungan dari dua kunci primer dari tabel yang diasosiasikan. -Dalam batasan yang sederhana, tuntuk mengambil data dari tabel asosiasi, anda melakukan dua query (secara umum, ini juga bisa dicapai menggunakan satu query yang terdiri dari join). +Dalam batasan yang sederhana, tuntuk mengambil data dari tabel asosiasi, Anda melakukan dua query (secara umum, ini juga bisa dicapai menggunakan satu query yang terdiri dari join). Anggap pengambilan koleksi SkillRecord untuk daftar obyek PlayerRecord. -Dalam hal ini, anda melakukan query dalam dua tahap. Tahap pertama meng-query tabel Players untuk mencari seluruh baris dari pemain yang anda inginkan. Tahap kedua mencari obyek SkillRecord ID pemain terkait untuk setiap barisnya dalam tabel asosiasi Player_Skills menggunakan sebuah inner join. +Dalam hal ini, Anda melakukan query dalam dua tahap. Tahap pertama meng-query tabel Players untuk mencari seluruh baris dari pemain yang Anda inginkan. Tahap kedua mencari obyek SkillRecord ID pemain terkait untuk setiap barisnya dalam tabel asosiasi Player_Skills menggunakan sebuah inner join.
Desain Rekaman Aktif Prado mengimplementasikan dua tahap pendekatan. Untuk hubungan entitas Players-Skills M-N (many-to-many), kita perlu mendefinisikan sebuah hubungan has many dalam kelas PlayerRecord dan sebagai tambahan mendefinisikan hubungan has many dalam kelas SkillRecord juga. @@ -883,10 +883,10 @@ PlayerSkillAssocation::finder()->deleteByPk(array('fk1','fk2'));
Menggunakan metode with_xxx() akan mengambil hubungan rekaman sesuai permintaan. Mengambil rekaman terkait dengan lazy loading (yaitu, hanya obyek terkait itu saja yang diakses) bisa dicapai dengan menggunakan sebuah fitur TComponent yang menyediakan metode pengakses. Dalam keadaan tertentu, kita mendefinisikan pasangan metode pengambil dan penentu di mana metode pengambil akan mengambil hubungan secara kondisional. Contoh berikut menggambarkan bahwa PlayerRecord dapat mengambil obyek asing $skills secara kondisional. +
Menggunakan metode with_xxx() akan mengambil hubungan rekaman sesuai permintaan. Mengambil rekaman terkait dengan lazy loading (yaitu, hanya obyek terkait itu saja yang diakses) bisa dicapai dengan menggunakan sebuah fitur TComponent yang menyediakan metode pengakses. Dalam keadaan tertentu, kita mendefinisikan pasangan metode pengambil dan penyetel di mana metode pengambil akan mengambil hubungan secara kondisional. Contoh berikut menggambarkan bahwa PlayerRecord dapat mengambil obyek asing $skills secara kondisional.
Dengan pemetaan kolom di atas, kita mengalamatkan first_name menggunakan $userRecord->firstName -daripada $userRecord->first_name. Ini membantu pemisahan dari logika dan model. +daripada $userRecord->first_name. Ini membantu pemisahan dari logika dengan model.
PRADO DAO sebagian besar terdiri dari empat kelas (kebalikan dari PDO yang hanya dua kelas, PDO dan PDOStatement): @@ -108,7 +108,7 @@ try //.... eksekusi SQL lain $transaction->commit(); } -catch(Exception $e) // kekecualian dimunculkan jika query gagal +catch(Exception $e) // eksepsi dimunculkan jika query gagal { $transaction->rollBack(); } @@ -120,7 +120,7 @@ catch(Exception $e) // kekecualian dimunculkan jika query gagal Guna menghindari serangan injeksi SQL dan untuk meningkatkan performansi dari eksekusi pernyataan SQL yang dipakai secara berulang-ulang, seseorang dapat "menyiapkan" pernyataan SQL dengan tempat parameter opsional yang akan diganti dengan parameter sebenarnya selama proses pengikatan parameter.
-Tempat parameter dapat bernama (diwakili dengan token unik) ataupun tidak bernama (diwakili dengan tanda tanya). Panggil TDbCommand.bindParameter() atau TDbCommand.bindValue() untuk mengganti tempat ini dengan parameter aktual. Parameter tidak perlu diberi tanda kutip: driver database melakukan ini bagi anda. Pengikatan parameter harus dikerjakan sebelum pernyataan SQL dijalankan. +Tempat parameter dapat bernama (diwakili dengan token unik) ataupun tidak bernama (diwakili dengan tanda tanya). Panggil TDbCommand.bindParameter() atau TDbCommand.bindValue() untuk mengganti tempat ini dengan parameter aktual. Parameter tidak perlu diberi tanda kutip: driver database melakukan ini bagi Anda. Pengikatan parameter harus dikerjakan sebelum pernyataan SQL dijalankan.
Pemeta Data memindahkan data antara obyek dan database sementara memeliharanya berdiri sendiri satu sama lain dan pemetanya sendiri. Jika anda mulai dengan - Active Records, mungkin nantinya anda dihadapkan dengan obyek bisnis lebih kompleks seiring denga kemajuan proyek anda. Ketika anda membangun model obyek dengan banyak logika bisnis, sangat berharga untuk memakai mekanisme ini untuk mengatur data lebih baik dan perilaku bersamanya. Melakukan itu menyebabkan skema varian; yakni skema obyek dan skema relasional tidak sama. +
Pemeta Data memindahkan data antara obyek dan database sementara memeliharanya berdiri sendiri satu sama lain dan pemetanya sendiri. Jika Anda mulai dengan + Active Records, mungkin nantinya Anda dihadapkan dengan obyek bisnis lebih kompleks seiring denga kemajuan proyek Anda. Ketika Anda membangun model obyek dengan banyak logika bisnis, sangat berharga untuk memakai mekanisme ini untuk mengatur data lebih baik dan perilaku bersamanya. Melakukan itu menyebabkan skema varian; yakni skema obyek dan skema relasional tidak sama.
Pemeta Data memisahkan obyek dalam-memori dari database. Tanggung jawabnya adalah mentransfer data diantara keduanya dan juga saling mengisolasinya. @@ -12,21 +12,21 @@
Tujuan utama menggunakan Pemeta Data ialah ketika anda menginginkan skema database dan model obyek tumbuh secara independen. Keuntungan utama dari Pemeta Data adalah bahwa saat bekerja pada obyek bisnis (atau domain) anda bisa mengabaikan database, baik dalam desain maupun pembangunan propes pengujian. Obyek domain tidak mengetahui struktur databasenya karena semua ini dikerjakan oleh pemeta. +
Tujuan utama menggunakan Pemeta Data ialah ketika Anda menginginkan skema database dan model obyek tumbuh secara independen. Keuntungan utama dari Pemeta Data adalah bahwa saat bekerja pada obyek bisnis (atau domain) Anda bisa mengabaikan database, baik dalam desain maupun pembangunan propes pengujian. Obyek domain tidak mengetahui struktur databasenya karena semua ini dikerjakan oleh pemeta.
-Ini membantu anda dalam kode karena anda bisa mengerti serta bekerja dengan obyek domain tanpa harus mengerti bagaimana ia disimpan dalam . Anda bisa memodifikasi model bisnis atau database tanpa harus mengubahnya. Dengan pemetaan rumit, terutama yang menyangkut database yang sudah ada, ini sangat berharga. +
Ini membantu Anda dalam kode karena Anda bisa mengerti serta bekerja dengan obyek domain tanpa harus mengerti bagaimana ia disimpan dalam. Anda bisa memodifikasi model bisnis atau database tanpa harus mengubahnya. Dengan pemetaan rumit, terutama yang menyangkut database yang sudah ada, ini sangat berharga.
-Harga tentunya merupakan lapisan ekstra yang tidak anda peroleh dengan Rekaman Aktif, maka pengujian menggunakan pola ini adalah kompleksitas dari logika bisnis. Jika anda memiliki logika bisa cukup sederhana, Rekaman Aktif mungkin akan mencukupi. +
Harga tentunya merupakan lapisan ekstra yang tidak Anda peroleh dengan Rekaman Aktif, maka pengujian menggunakan pola ini adalah kompleksitas dari logika bisnis. Jika Anda memiliki logika bisa cukup sederhana, Rekaman Aktif mungkin akan mencukupi. Untuk logika yang lebih rumit, Pemeta Data mungkin lebih cocok.
Kerangka kerja Pemeta Data SqlMap memudahkan untuk menggunakan database dengan aplikasi PHP. - PemetaData SqlMap memasangkan obyek dengan prosedur tersimpan atau pernyataan SQL menggunakan deskriptor XML. Kesederhanaan adalah keuntungan terbesar dari PemetaData SqlMap di atas piranti pemetaan relasional obyek. Untuk menggunakan PemetaData SqlMap anda bergantung pada obyek anda sendiri, - XML, dan SQL. Anda sedikit yang harus dipelajari yang belum anda ketahui. - Dengan Pemeta Data SqlMap anda mempunyai tenaga penuh pada SQL dan prosedur tersimpan di tangan anda. + PemetaData SqlMap memasangkan obyek dengan prosedur tersimpan atau pernyataan SQL menggunakan deskriptor XML. Kesederhanaan adalah keuntungan terbesar dari PemetaData SqlMap di atas piranti pemetaan relasional obyek. Untuk menggunakan PemetaData SqlMap Anda bergantung pada obyek Anda sendiri, + XML, dan SQL. Anda sedikit yang harus mempelajari yang belum Anda ketahui. + Dengan Pemeta Data SqlMap Anda mempunyai tenaga penuh pada SQL dan prosedur tersimpan di tangan Anda.
@@ -35,7 +35,7 @@ Untuk logika yang lebih rumit, Pemeta Data mungkin lebih cocok. Ini adalah penjelasan tingkat tinggi atas alur kerja yang dilukiskan pada gambar di atas. Menyediakan parameter, baik sebagai obyek ataupun tipe primitif. Parameter bisa dipakai untuk menyetel nilai runtime dalam pernyataan SQL atau prosedur. Jika nilai runtime tidak diperlukan, parameter dapat diabaikan.
-Menjalankan pemetaan dengan mengirimkan parameter dan nama yang anda berikan pada deskriptor XML anda. Langkah ini adalah saat di mana keajaiban terjadi. Kerangka kerja akan menyiapkan pernyataan SQL atau prosedur tersimpan, menyetel setiap nilai runtime menggunakan parameter anda, menjalankan prosedur atau pernyataan, dan mengembalikan hasil. +
Menjalankan pemetaan dengan mengirimkan parameter dan nama yang Anda berikan pada deskriptor XML Anda. Langkah ini adalah saat di mana keajaiban terjadi. Kerangka kerja akan menyiapkan pernyataan SQL atau prosedur tersimpan, menyetel setiap nilai runtime menggunakan parameter Anda, menjalankan prosedur atau pernyataan, dan mengembalikan hasil.
Dalam hal pemutakhiran, jumlah baris yang dipengaruhi dikembalikan. Dalam hal query, obyek tunggal, atau koleksi obyek dikembalikan. Seperti parameter, obyek hasil, atau koleksi obyek, bisa berupa obyek biasa ataupun tipe PHP primitif. @@ -78,7 +78,7 @@ $sqlmap = $manager->getSqlMapGateway();
-Namespace merujuk ke pengelompokan logis dari beberapa nama kelas agar dapat dibedakan dari nama kelas lain meskipun jika namanya sama. Karena PHP pada hakekatnya tidak mendukung namespace, anda tidak bisa membuat turunan dari dua kelas yang mempunyai nama sama tapi dengan definisi berbeda. Untuk membedakan dari kelas didefinisikan pengguna, semua kelas PRADO diawali dengan huruf 'T' (berarti 'Type'). Para pengguna disarankan untuk tidak menamai kelasnya seperti ini. Sebaiknya mengawali nama kelasnya dengan huruf yang lainnya. +Namespace merujuk ke pengelompokan logis dari beberapa nama kelas agar dapat dibedakan dari nama kelas lain meskipun jika namanya sama. Karena PHP pada hakekatnya tidak mendukung namespace, Anda tidak bisa membuat turunan dari dua kelas yang mempunyai nama sama tapi dengan definisi berbeda. Untuk membedakan dari kelas didefinisikan pengguna, semua kelas PRADO diawali dengan huruf 'T' (berarti 'Type'). Para pengguna disarankan untuk tidak menamai kelasnya seperti ini. Sebaiknya mengawali nama kelasnya dengan huruf yang lainnya.
Namespace dalam PRADO dianggap sebagai direktori yang berisi satu atau beberapa file kelas. Sebuah kelas dapat ditetapkan tanpa dwimakna menggunakan namespace demikian diikuti oleh nama kelas. Setiap namespace dalam PRADO ditetapkan dalam format berikut, diff --git a/demos/quickstart/protected/pages/Fundamentals/id/Controls.page b/demos/quickstart/protected/pages/Fundamentals/id/Controls.page index dba49936..75a76551 100644 --- a/demos/quickstart/protected/pages/Fundamentals/id/Controls.page +++ b/demos/quickstart/protected/pages/Fundamentals/id/Controls.page @@ -9,7 +9,7 @@ Kontrol adalah turunan dari kelas TControl atau asal sub kelasnya. Kont Kontrol dikaitkan satu sama lain melalui hubungan leluhur-anak. Setiap kontrol leluhur dapat memiliki beberapa kontrol anak. Kontrol leluhur bertugas terhadap transisi keadaan dari kontrol anaknya. Hasil dari kontrol anak biasanya dipakai untuk mengatur penampilan kontrol leluhur. Hubungan leluhur-anak membawa kontrol bersama ke dalam susunan kontrol. Halaman ada di akar dari susunan yang penampilannya di berikan kepada pengguna-akhir.
-Hubungan leluhur-anak biasanya dilakukan oleh kerangka kerja melalui template. Dalam kode, anda dapat menetapkan kontrol secara eksplisit sebagai anak dari yang lainnya menggunakan salah satu metode berikut,
+Hubungan leluhur-anak biasanya dilakukan oleh kerangka kerja melalui template. Dalam kode, Anda dapat menetapkan kontrol secara eksplisit sebagai anak dari yang lainnya menggunakan salah satu metode berikut,
-Setiap kontrol mempunyai properti ID yang dapat secara unik dapat mengidentifikasi dirinya sendiri diantara kontrol keluarganya. Sebagai tambahan, setiap kontrol mempunyai UniqueID dan ClientID yang dapat dipakai untuk mengidentifikasi kontrol secara global dalam susunan di mana kontrol berada. UniqueID dan ClientID sangat mirip. Pembentuk dipakai oleh kerangka kerja guna menentukan lokasi dari kontrol terkait dalam susunan, sementara yang kedua sebagian besar dipakai pada sisi klien sebagai ID tag HTML. Secara umum, anda tidak boleh bergantung pada bentuk eksplisit UniqueID atau ClientID.
+Setiap kontrol mempunyai properti ID yang dapat secara unik dapat mengidentifikasi dirinya sendiri diantara kontrol keluarganya. Sebagai tambahan, setiap kontrol mempunyai UniqueID dan ClientID yang dapat dipakai untuk mengidentifikasi kontrol secara global dalam susunan di mana kontrol berada. UniqueID dan ClientID sangat mirip. Pembentuk dipakai oleh kerangka kerja guna menentukan lokasi dari kontrol terkait dalam susunan, sementara yang kedua sebagian besar dipakai pada sisi klien sebagai ID tag HTML. Secara umum, Anda tidak boleh bergantung pada bentuk eksplisit UniqueID atau ClientID.
-Setiap kontrol mempunyai wadah penamaan yang mana kontrol membuat ruang nama (namespace) unik untuk membedakan antara kontrol dengan ID yang sama. Sebagai contoh, kontrol TRepeater membuat multipel item masing-masing mempunyai kontrol anak dengan ID yang sama. Untuk membedakan kontrol anak ini, setiap item bertindak sebagai wadah penamaan. Oleh karena itu, kontrol anak dapat diidentifikasi secara unik menggunakan wadah penamaan ID bersama dengan ID-nya sendiri. Seperti yang mungkin sudah anda mengerti, UniqueID dan ClientID bergantung pada wadah penamaan.
+Setiap kontrol mempunyai wadah penamaan yang mana kontrol membuat ruang nama (namespace) unik untuk membedakan antara kontrol dengan ID yang sama. Sebagai contoh, kontrol TRepeater membuat multipel item masing-masing mempunyai kontrol anak dengan ID yang sama. Untuk membedakan kontrol anak ini, setiap item bertindak sebagai wadah penamaan. Oleh karena itu, kontrol anak dapat diidentifikasi secara unik menggunakan wadah penamaan ID bersama dengan ID-nya sendiri. Seperti yang mungkin sudah Anda mengerti, UniqueID dan ClientID bergantung pada wadah penamaan.
Kontrol dapat bertindak sebagai wadah penamaan jika ia menerapkan antarmuka INamingContainer.
diff --git a/demos/quickstart/protected/pages/GettingStarted/id/AboutPrado.page b/demos/quickstart/protected/pages/GettingStarted/id/AboutPrado.page
index a3b98d1f..9d53a6bd 100644
--- a/demos/quickstart/protected/pages/GettingStarted/id/AboutPrado.page
+++ b/demos/quickstart/protected/pages/GettingStarted/id/AboutPrado.page
@@ -26,7 +26,7 @@ PRADO banyak dikutip sebagai kerangka kerja yang unik. Kenyataannya, ia begitu u
Identifikasi Kontrol
Wadah Penamaan
-Untuk menggunakan piranti baris perintah, anda perlu memakai prompt perintah anda, konsol perintah atau terminal. Sebagai tambahan, PHP harus dapat menjalankan naskah PHP dari baris perintah. +Untuk menggunakan piranti baris perintah, Anda perlu memakai prompt perintah Anda, konsol perintah atau terminal. Sebagai tambahan, PHP harus dapat menjalankan naskah PHP dari baris perintah.
-Jika anda ketik php path/ke/framework/prado-cli.php, anda seharusnya melihat informasi berikut. Alternatifnya, jika anda tidak pada Windows, anda dapat mencoba untuk mengubah prado-cli.php ke dalam eksecutabel dan menjalankannya seperti sebuah naskah
+Jika Anda ketik php path/ke/framework/prado-cli.php, Anda seharusnya melihat informasi berikut. Alternatifnya, jika Anda tidak pada Windows, Anda dapat mencoba untuk mengubah prado-cli.php ke dalam eksecutabel dan menjalankannya seperti sebuah naskahUntuk membuat kerangka proyek Prado, lakukan yang berikut:
-Shell interaktif membolehkan anda untuk mengevaluasi pernyataan PHP dari baris perintah. -Naskah prado-cli.php dapat dipakai untuk memulai shell dan mengambil proyek Prado yang sudah ada. Sebagai contoh, mari kita ambil proyek demo blog. Anggap bahwa baris perintah anda ada dalam direktori distribusi prado dan anda mengetikan. +Shell interaktif membolehkan Anda untuk mengevaluasi pernyataan PHP dari baris perintah. +Naskah prado-cli.php dapat dipakai untuk memulai shell dan mengambil proyek Prado yang sudah ada. Sebagai contoh, mari kita ambil proyek demo blog. Anggap bahwa baris perintah Anda ada dalam direktori distribusi prado dan Anda mengetikkannya.
-Dalam seksi ini, kami membimbing anda melalui pembuatan aplikasi PRADO pertama anda, aplikasi terkenal "Hello World".
+Dalam seksi ini, kami membimbing Anda melalui pembuatan aplikasi PRADO pertama Anda, aplikasi terkenal "Hello World".
-"Hello World" barangkali adalah aplikasi PRADO interaktif paling sederhana yang bisa anda buat. Ia menampilkan kepada pengguna-akhir sebuah halaman dengan tombol kirim yang judulnya adalah Click Me. Setelah pengguna mengklik tombol, judulnya diubah ke Hello World.
+"Hello World" barangkali adalah aplikasi PRADO interaktif paling sederhana yang bisa Anda buat. Ia menampilkan kepada pengguna-akhir sebuah halaman dengan tombol kirim yang judulnya adalah Click Me. Setelah pengguna mengklik tombol, judulnya diubah ke Hello World.
Ada banyak pendekatan yang dapat mencapai tujuan di atas. Seseorang dapat mengirim halaman ke server, menentukan variabel POST, dan membuat halaman baru dengan judul tombol yang dimutakhirkan. Atau seseorang cukup menggunakan JavaScript untuk memutakhirkan judul tombol setelah event klien onclick.
@@ -19,7 +19,7 @@ PRADO mempromosikan pemrograman Web berbasis-komponen dan kendali-event. Tombol
Aplikasi PRADO kita terdiri dari tiga file, index.php, Home.page dan Home.php, yang diatur sebagai berikut,
diff --git a/demos/quickstart/protected/pages/GettingStarted/id/Installation.page b/demos/quickstart/protected/pages/GettingStarted/id/Installation.page
index eee27171..d165e4d5 100644
--- a/demos/quickstart/protected/pages/GettingStarted/id/Installation.page
+++ b/demos/quickstart/protected/pages/GettingStarted/id/Installation.page
@@ -2,7 +2,7 @@
-Jika anda sedang melihat halaman ini dari server Web anda, anda sudah selesai dengan instalasi.
+Jika Anda sedang melihat halaman ini dari server Web Anda, maka Anda sudah selesai dengan instalasi.
Persyaratan minimum PRADO adalah server Web yang mendukung PHP 5. PRADO sudah diuji dengan server Web Apache pada Windows dan Linux. Sangat dimungkinkan ia juga berjalan pada platform lain dengan server Web lain, selama PHP 5 didukung.
@@ -20,10 +20,10 @@ Instalasi PRADO sebagian besar menyangkut download dan penguraian.
-Instalasi PRADO anda selesai dan anda dapat mulai bermain dengan demo aplikasi yang disertakan dalam rilis PRADO via URL http://web-server-address/prado/demos/. Di sini kami menganggap PRADO diurai ke subdirektori prado di bawah DocumentRoot pada server Web.
+Instalasi PRADO Anda selesai dan dapat mulai bermain dengan demo aplikasi yang disertakan dalam rilis PRADO via URL http://web-server-address/prado/demos/. Di sini kami menganggap PRADO diurai ke subdirektori prado di bawah DocumentRoot pada server Web.
-Jika anda menemukan masalah dengan demo aplikasi, silahkan gunakan naskah pemeriksa persyaratan, yang dapapt diakses melalui http://web-server-address/prado/requirements/index.php, untuk terlebih dahulu memeriksa apakah konfigurasi server anda memenuhi kondisi yang dibutuhkan oleh PRADO.
+Jika Anda menemukan masalah dengan demo aplikasi, silahkan gunakan naskah pemeriksa persyaratan, yang dapapt diakses melalui http://web-server-address/prado/requirements/index.php, untuk terlebih dahulu memeriksa apakah konfigurasi server Anda memenuhi kondisi yang dibutuhkan oleh PRADO.
-Tutorial Cepat ini disediakan untuk membantu anda secara cepat membangun aplikasi Web anda sendiri berbasis PRADO versi 3.x.
+Tutorial Cepat ini disediakan untuk membantu Anda secara cepat membangun aplikasi Web Anda sendiri berbasis PRADO versi 3.x.
-Jika anda adalah pengguna yang sudah mengenal PRADO 3.x dan ingin mempelajari peningkatan apa yang tersedia pada versi baru, silahkan periksa halaman fitur baru. Sebaliknya, seksi berikut sangat membantu bagi para pemula.
+Jika Anda adalah pengguna yang sudah mengenal PRADO 3.x dan ingin mempelajari peningkatan apa yang tersedia pada versi baru, silahkan periksa halaman fitur baru. Sebaliknya, seksi berikut sangat membantu bagi para pemula.
-Anda dapat merujuk ke sumber daya berikut jika anda mendapatkan tutorial ini tidak memenuhi semua kebutuhan anda.
+Anda dapat merujuk ke sumber daya berikut jika Anda mendapatkan tutorial ini tidak memenuhi semua kebutuhan Anda.
-di mana TPropertyValue::ensureBoolean() dipakai untuk memastikan bahwa nilai input adalah boolean. Ini adalah karena ketika properti dikonfigurasi dalam template, nilai string dikirimkan ke penyetel. Dalam versi sebelumnya, PRADO mengetahui tipe properti berdasarkan file spesifikasi komponen dan melakukan konversi tipe bagi anda.
+di mana TPropertyValue::ensureBoolean() dipakai untuk memastikan bahwa nilai input adalah boolean. Ini adalah karena ketika properti dikonfigurasi dalam template, nilai string dikirimkan ke penyetel. Dalam versi sebelumnya, PRADO mengetahui tipe properti berdasarkan file spesifikasi komponen dan melakukan konversi tipe bagi Anda.
Aplikasi PRADO Pertama Saya
-di mana setiap direktori dijelaskan sebagai berikut. Catatan, struktur direktori di atas bisa dikustomisasi. Sebagai contoh, seseorang dapat memindahkan direktori protected ke luar direktori Web. Anda akan mengetahui bagaimana melakukan ini setelah anda melewati tutorial ini.
+di mana setiap direktori dijelaskan sebagai berikut. Catatan, struktur direktori di atas bisa dikustomisasi. Sebagai contoh, seseorang dapat memindahkan direktori protected ke luar direktori Web. Anda akan mengetahui bagaimana melakukan ini setelah Anda melewati tutorial ini.
Menginstalasi PRADO
Selamat datang di Tutorial Cepat PRADO
diff --git a/demos/quickstart/protected/pages/GettingStarted/id/Upgrading.page b/demos/quickstart/protected/pages/GettingStarted/id/Upgrading.page
index e6f3d4dd..13ed77c5 100644
--- a/demos/quickstart/protected/pages/GettingStarted/id/Upgrading.page
+++ b/demos/quickstart/protected/pages/GettingStarted/id/Upgrading.page
@@ -26,7 +26,7 @@ public function setEnabled($value)
}
Pengontrol Aplikasi
diff --git a/demos/quickstart/protected/pages/Services/id/SoapService.page b/demos/quickstart/protected/pages/Services/id/SoapService.page
index 8663376e..aeabdac0 100644
--- a/demos/quickstart/protected/pages/Services/id/SoapService.page
+++ b/demos/quickstart/protected/pages/Services/id/SoapService.page
@@ -121,14 +121,14 @@ class ContactManager {
}
}
Untuk obyek soap kompleks, properti obyek ditetapkan dengan kata kunci @soapproperty dalam phpdocs. Selanjutnya, nama tipe properti harus ditetapkan sebagai @var type $name di mana type adalah tipe apapun yang benar seperti telah disebutkan sebelumnya dan $name akan mendefinisikan properti name (catatan bahwa jika kelas anda adalah TComponent, anda bisa menyediakan properti pengambil/penentu). +
Untuk obyek soap kompleks, properti obyek ditetapkan dengan kata kunci @soapproperty dalam phpdocs. Selanjutnya, nama tipe properti harus ditetapkan sebagai @var type $name di mana type adalah tipe apapun yang benar seperti telah disebutkan sebelumnya dan $name akan mendefinisikan properti name (catatan bahwa jika kelas Anda adalah TComponent, Anda bisa menyediakan properti pengambil/penentu).
Sebuah array dari obyek yang kompleks juga bisa dihasilkan dengan menambahkan pasangan yang dilindungi kurung kotak setelah nama tipe. Sebagai contoh, untuk menghasilkan array dari tipe Contact, kita mendefinisikan @return Contact[] ....
Tutorial ini memperkenalkan kerangka kerja aplikasi web Prado ActiveRecord - dan Kontrol Aktif untuk membangun aplikasi web Chat. Diasumsikan bahwa anda sudah terbiasa dengan PHP dan akan telah mengakses server web yang dapat melayani naskah PHP5. + dan Kontrol Aktif untuk membangun aplikasi web Chat. Diasumsikan bahwa Anda sudah terbiasa dengan PHP dan akan telah mengakses server web yang dapat melayani naskah PHP5. Aplikasi chat dasar ini akan memanfaatkan ide/komponen berikut dalam Prado.
Dalam tutorial ini anda akan membangun sebuah aplikasi web Chat AJAX yang membolehkan +
Dalam tutorial ini Anda akan membangun sebuah aplikasi web Chat AJAX yang membolehkan multipel pengguna untuk berkomunikasi melalui web browser mereka. Aplikasi terdiri dari dua halaman: halaman masuk yang menanyakan pada pengguna untuk memasukkan nama panggilannya dan halaman aplikasi chat utama. @@ -36,7 +36,7 @@ php prado/framework/prado-cli.php -c chat
Perintah di atas membuat struktur direktori yang diperlukan dan file minimal (termasuk "index.php" dan "Home.page") untuk menjalankan aplikasi web Prado. - Sekarang anda dapat mengarahkan URL browser anda ke server web untuk melayani + Sekarang Anda dapat mengarahkan URL browser Anda ke server web untuk melayani naskah index.php dalam direktori chat. Anda seharusnya melihat pesan "Welcome to Prado!"
@@ -90,7 +90,7 @@ class Login extends TPage aJika anda mencoba untuk mengakses halaman Home dengan mengarahkan browser anda ke -index.php anda akan dialihkan ke halaman Login. +
Jika Anda mencoba untuk mengakses halaman Home dengan mengarahkan browser Anda ke +index.php Anda akan dialihkan ke halaman Login.
Jika anda mencoba untuk melakukan login sekarang, anda akan menerima pesan kesalahan seperti +
Jika Anda mencoba untuk melakukan login sekarang, Anda akan menerima pesan kesalahan seperti "Property 'ChatUserRecord::$last_activity' must not be null as defined by column 'last_activity' in table 'chat_users'.". Ini berarti bahwa nilai properti $last_activity adalah null dalam kolom terkait pada tabel dan memboleh nilai null atau menetapkan nilai standar dalam kelas ChatUserRecord. Kita akan mendemonstrasikannya nanti dengan mengubah ChatUserRecord dengan tambahan dari metode setelan pengambil/pengetap untuk properti last_activity. @@ -417,7 +417,7 @@ class Home extends TPage } }
Untuk menambah atau menambahkan beberapa konten ke panel daftar pesan, kita perlu memakai beberapa metode dalam kelas @@ -569,7 +569,7 @@ Kita cukup menyimpan pesan ke bufer chat dan kemudian meminta semua pesan untuk (gaya AJAX).
-Pada titik ini aplikasi sebenarnya sudah berfungsi, cuma tidak bersahabat. Jika anda membuka dua browser berbeda, anda seharusnya bisa berkomunikasi diantara dua pengguna kapan saja tombol Send diklik. +
Pada titik ini aplikasi sebenarnya sudah berfungsi, cuma tidak bersahabat. Jika Anda membuka dua browser berbeda, Anda seharusnya bisa berkomunikasi diantara dua pengguna kapan saja tombol Send diklik.
Bagian berikutnya barangkali lebih rumit dan mengakali daripada tugas lainnya. Kita perlu untuk meningkatkan pengalaman pengguna. Pertama, kita menginginkan daftar pengguna saat ini juga. Maka kita menambahkan metode berikut ke Home.php, kita dapat memanggil metode ini kapan saja beberapa event callback dimunculkan, misalnya saat tombol Send diklik. @@ -680,7 +680,7 @@ Rincian sehubungan dengan javascript bisa dilihat dalam seksi Pengenalan Javascript pada tutorial cepat.
-Ini melengkapi tutorial untuk membuat aplikasi chat web menggunakan kerangka kerja Prado. Diharapkan anda menikmatinya. +
Ini melengkapi tutorial untuk membuat aplikasi chat web menggunakan kerangka kerja Prado. Diharapkan Anda menikmatinya.
Tutorial ini memperkenalkan kerangka kerja aplikasi web Prado dan mengajarkan anda bagaimana untuk +
Tutorial ini memperkenalkan kerangka kerja aplikasi web Prado dan mengajarkan Anda bagaimana untuk membangun aplikasi web sederhana dalam beberapa langkah sederhana. Tutorial - ini menganggap bahwa anda terbiasa dengan PHP dan anda telah mengakses + ini menganggap bahwa Anda terbiasa dengan PHP dan Anda telah mengakses server web yang dapat melayani naskah PHP5.
-Dalam tutorial ini anda akan membangun aplikasi web sederhana yang mengubah +
Dalam tutorial ini Anda akan membangun aplikasi web sederhana yang mengubah
nilai dolar ke kurs lain, nilai kurs yang disediakan untuk kurs tersebut relatif terhadap dolar. Aplikasi lengkap ditampilkan di bawah ini.
class="figure" />
Anda dapat mencoba aplikasi secara lokal atau di
@@ -17,13 +17,13 @@
Untuk menginstalasi Prado, cukup download versi terbaru Prado dari http://www.pradosoft.com - dan uraikan file ke sebuah direktori yang tidak dapat diakses oleh server web anda (anda dapat menguraikannya ke sebuah direktori yang dapat diakses oleh server web jika anda ingin melihat demo dan pengujian). Untuk instalasi lebih rinci, lihat bimbingan + dan uraikan file ke sebuah direktori yang tidak dapat diakses oleh server web Anda (Anda dapat menguraikannya ke sebuah direktori yang dapat diakses oleh server web jika Anda ingin melihat demo dan pengujian). Untuk instalasi lebih rinci, lihat bimbingan Instalasi Cepat.
Cara tercepat dan termudah untuk membuat aplikasi web Prado baru adalah menggunakan piranti perintah prado-cli.php yang ditemukan dalam direktori framework - pada distribusi Prado. Kita membuat aplikasi baru dengan menjalankan perintah berikut dalam prompt perintah atau konsol anda. Perintah membuat direktori baru bernama currency-converter dalam direktori kerja anda saat ini. + pada distribusi Prado. Kita membuat aplikasi baru dengan menjalankan perintah berikut dalam prompt perintah atau konsol Anda. Perintah membuat direktori baru bernama currency-converter dalam direktori kerja Anda saat ini. Anda perlu mengubahnya ke direktori yang benar terlebih dahulu. Lihat Piranti Baris Perintah untuk lebih jelasnya. @@ -33,8 +33,8 @@ php prado/framework/prado-cli.php -c currency-converter
Perintah di atas membuat struktur direktori yang diperlukan dan file minimal (termasuk "index.php" dan "Home.page") untuk menjalankan aplikasi Prado. - Sekarang anda dapat mengarahkan url browser anda ke server web untuk melayani naskah index.php dalam direktori currency-converter. - Seharusnya anda melihat pesan "Welcome to Prado!" + Sekarang Anda dapat mengarahkan url browser Anda ke server web untuk melayani naskah index.php dalam direktori currency-converter. + Seharusnya Anda melihat pesan "Welcome to Prado!"
- Jika anda menyegarkan halaman, anda akan melihat sesuatu mirip dengan gambar berikut.
+ Jika Anda menyegarkan halaman, Anda akan melihat sesuatu mirip dengan gambar berikut.
Ia mungkin terlihat tidak cukup bagus atau berurut, tapi kita akan mengubahnya nanti dengan menggunakan CSS.
class="figure" />
Jika anda mencoba mengklik pada tombol "Convert" kemudian halaman akan menyegarkan +
Jika Anda mencoba mengklik pada tombol "Convert" kemudian halaman akan menyegarkan
dan tidak melakukan apapun. Agar tombol melakukan beberapa pekerjaan, kita perlu
menambahkan "Home.php" ke di mana "Home.page" berada. Kelas Home harus
memperluas
- Jika anda menjalankan aplikasi dalam web browser anda, masukkan beberapa nilai - dan klik tombol "Convert" kemudian anda akan melihat nilai yang dihitung ditampilkan + Jika Anda menjalankan aplikasi dalam web browser Anda, masukkan beberapa nilai + dan klik tombol "Convert" kemudian Anda akan melihat nilai yang dihitung ditampilkan di dekat label "Amount in Other Currency".
@@ -249,7 +249,7 @@ $this->total->Text = $rate * $dollars; -Sekarang jika anda mencoba memasukan beberapa data tidak benar dalam aplikasi atau membiarkan field kosong +
Sekarang jika Anda mencoba memasukan beberapa data tidak benar dalam aplikasi atau membiarkan field kosong validators akan diaktifkan dan menyajikan pesan kesalahan kepada pengguna. Catatan bahwa pesan kesalahan disajikan tanpa mengambil ulang halaman. Validator Prado standarnya memvalidasi javascript dan di dalam server. Validasi di dalam server selalu dilakukan. Untuk sisi server, kita harus melewati perhitungan jika validator tidak memuaskan. Ini dapat dilakukan seperti berikut.
Jika anda mencoba aplikasi sekarang, anda akan melihat bahwa halaman tidak perlu lagi mengambil ulang untuk menghitung dan menampilkan jumlah total yang dikonversi. +
Jika Anda mencoba aplikasi sekarang, Anda akan melihat bahwa halaman tidak perlu lagi mengambil ulang untuk menghitung dan menampilkan jumlah total yang dikonversi. Akan tetapi, karena di sana tidak ada pengambilan halaman ulang, tidak ada petunjuk atau tidak jelas bahwa dengan mengklik pada tombol "Convert" telah terjadi. Selanjutnya kita bisa memperbaiki pengalaman pengguna dengan mengunah label teks "total" menjadi "calculating..." saat pengguna mengklik tombol "Convert". Label teks "total" masih dimutakhirkan dengan jumlah perhitungan baru seperti sebelumnya.
-- cgit v1.2.3