Türkçe Eklentimizi Yazıyoruz
Konuya anlatmak için basit bir Türkçe eklenti yazalım. Eklentimiz, yan menüde kullanıcının belirlediği bir resmi, alt yazısıyla beraber gösteren bir bileşen olsun. Daha önceden WordPress 2.8 için bileşen nasıl yazılır anlatmıştım. Aşağıdaki bileşen kodlarını anlayabilmeniz için lütfen o yazımı dikkatlice okuyunuz. Fazla uzatmadan, bileşenin Türkçe olarak oluşturulmuş kodlarını aşağıya ekliyorum.
-
- /*
- Plugin Name: Resim Göster
- Plugin URI: http://www.yakupgovler.com/?p=1039
- Description: Yan menünüzde resim gösterir.
- Version: 1.0
- Author: Yakup GÖVLER
- Author URI: http://www.yakupgovler.com
- */
-
- class yg_show_image extends WP_Widget {
- function yg_show_image() {
- //Load Language
- //load_plugin_textdomain( 'yg-show-img', false, dirname(plugin_basename(__FILE__)) . '/lang' );
-
- $widget_ops = array('description' => 'Yan menünüzde resim gösterir.');
-
- //Create widget
- $this->WP_Widget('ygshowimage', 'Resim Göster', $widget_ops);
- }
-
- function widget($args, $instance) {
- extract($args, EXTR_SKIP);
- echo $before_widget;
- $title = empty($instance['title']) ? 'Bir Resim' : apply_filters('widget_title', $instance['title']);
- //Set a default title if not
- $imgurl = esc_url($instance['imgurl']);
- $imgtext = esc_attr($instance['imgtext']);
-
- if ( !empty( $title ) ) {
- echo $before_title . $title . $after_title;
- };
-
- echo '';echo '
. $imgurl . '" title="'.$imgtext.'" alt="'.$imgtext.'" />
';echo ''.$imgtext.'' -
- echo $after_widget;
- } //end of widget
-
- //Update widget options
- function update($new_instance, $old_instance) {
-
- $instance = $old_instance;
- //get old variables
- $instance['title'] = esc_attr($new_instance['title']);
- $instance['imgurl'] = esc_url($new_instance['imgurl']);
- $instance['imgtext'] = esc_attr($new_instance['imgtext']);
- return $instance;
- } //end of update
-
- //Widget options form
- function form($instance) {
- $instance = wp_parse_args( (array) $instance, array( 'title' => 'Bir Resim', 'imgurl'=>'', 'imgtext'=>'' ) );
-
- $title = esc_attr($instance['title']);
- $imgurl = esc_url($instance['imgurl']);
- $imgtext = esc_attr($instance['imgtext']);
- ?>
-
-
- class="widefat" id="get_field_id('title'); ?>" name="get_field_name('title'); ?>" type="text" value="" />
-
-
-
-
- class="widefat" id="get_field_id('imgurl'); ?>" name="get_field_name('imgurl'); ?>" type="text" value="" />
-
-
-
-
- class="widefat" id="get_field_id('imgtext'); ?>" name="get_field_name('imgtext'); ?>" type="text" value="" />
-
-
-
- } //end of form
- }
-
- add_action( 'widgets_init', create_function('', 'return register_widget("yg_show_image");') );
- //Register Widget
-
- ?>
Bileşenin Türkçe olarak yazılmış halini indirmek için tıklayınız.
Bileşeni sitenize kurup, etkinleştirdiğinizde, bileşen Yönetim Paneli/Görünüm/Bileşenler bölümünde aşağıdaki gibi görünecektir.
Gördüğünüz gibi bileşene dair her şey Türkçe olarak çıktı. Şimdi Türkçe olan kısımları öyle bir değiştireceğiz ki kolaylıkla dil dosyası eklenebilir hale gelecek.
Load_plugin_textdomain(), _e() ve __() Fonksiyonları
Eklentilere çoklu dil eklemek için bu üç fonksiyon kullanılır. Fonksiyonları kullanımları ve amaçları şöyle: Load_plugin_textdomain() Fonksiyonu: Bu fonksiyon eklentinize ait dil dosyalarından sitede yüklü olan WordPress diline uygun dil dosyasını yükler. Bunu yaparken, wp-config.php dosyasında bulunan define ('WPLANG', 'tr_TR'); satırında yazılı olan dil kodunu (tr_TR bölümü) kullanır. Kullanımı: load_plugin_textdomain( 'yg-show-img', false, dirname( plugin_basename(__FILE__) ) . '/lang' ); 'yg-show-img' : Dil dosyamızın kök adı, buna WordPress domain diyor.. Oluşturacağımız .po uzantılı dosyanın adı yg-show-img.po olacak. Bunu Türkçeye çevirdiğimizde ise yg-show-img-tr_TR.po olarak farklı kaydedeceğiz. false: Kesin dosya adresi vereceğimizi bildirir. dirname( plugin_basename(__FILE__) ): Eklenti dosyamızın bulunduğu klasör adresini verir. Biz bu adresin sonuna dil dosyalarımızı içerisine koyacağımız 'lang' klasörünün adını da ekleyerek, fonksiyona dil dosyasını nerede bulacağını söylüyoruz. Bu fonksiyonu eklentimizin işe başladığı ilk yere ekleyeceğiz yani her zaman ilk çağırılan fonksiyona ya da eklenti dosyamızın en başına ekliyoruz. _e() Fonksiyonu: Bu fonksiyon kendisine verilen domain'e ait dil dosyasından bir satırı yazdırmanızı sağlar. Kullanımı: _e('Image URL', 'yg-show-img'); 'Image URL': Dil dosyasındaki Image URL satırını almasını söyler. load_plugin_textdomain fonksiyonun yüklediği dil dosyasına göre ekranda görünen ifade değişir. Örneğin bu kod Türkçe dil dosyasını lang klasörüne koyduğumuzda 'Resmin Adresi' ifadesini ekrana yazacaktır. Dikkat etmeniz gereken bu ifadenin başına 'echo' komutunu koymadık. 'yg-show-img': Dil dosyasının domain adı yani kök adı. Bu load_plugin_textdomain fonksiyonuna girdiğim ad ile aynı olmalıdır. Aksi halde dil değişimi görülmez. Aynı durum __() fonksiyonu için de geçerlidir. __() Fonksiyonu: Dil dosyasından ilgili satırı alıp, değer olarak döndürür. Yani _e() fonksiyonu gibi ekrana yazdırmaz. Bu daha çok bir değişkene dile bağlı bir ifadeyi aktarmak için kullanılır. Örneğin bileşenimize bir başlık ya da açıklama belirlerken bu fonksiyonu kullanırız. Kullanımı: 'title' => __('An Image', 'yg-show-img'); İfadesi dil dosyasından 'An Image' satırını değer olarak döndürür ve 'title' dizi değişken elemanına aktarır. Türkçe dil dosyası olduğunda bu değer 'Bir Resim' olarak aktarılacaktır. 'yg-show-img' ise dil dosyamızın domain'i.
Eklentimizi Çoklu Dil Desteğine Hazırlıyoruz
Bu kadar ön bilgiden sonra artık eklentimizi çoklu dil desteği ekleyebileceğimiz hale getireceğiz. Bunun için yapmamız gereken, eklentimizin her zaman çalışan fonksiyonuna load_plugin_textdomain fonksiyonunu eklemek, Türkçe ifadeleri, ekrana yazdırılması gerekenleri _e() fonksiyonu ile değişken olarak dönmesi gerekenleri __() fonksiyonu ile İngilizce olarak değiştirmek. Aşağıdaki kodlar bu değişimin ve ekleme işleminin yapılmış halidir. Yukarıdaki kod ile aşağıdakini karşılaştırarak, aradaki farkları görebilirsiniz.
-
- /*
- Plugin Name: Show Image
- Plugin URI: http://www.yakupgovler.com/?p=981
- Description: Widget displays an image.
- Version: 1.0
- Author: Yakup GÖVLER
- Author URI: http://www.yakupgovler.com
- */
-
- class yg_show_image extends WP_Widget {
- function yg_show_image() {
- //Load Language
- load_plugin_textdomain( 'yg-show-img', false, dirname(plugin_basename(__FILE__)) . '/lang' );
-
- $widget_ops = array('description' => __('Show an image on your sidebar.', 'yg-show-img') );
-
- //Create widget
- $this->WP_Widget('ygshowimage', __('Show Image', 'yg-show-img'), $widget_ops);
- }
-
- function widget($args, $instance) {
- extract($args, EXTR_SKIP);
- echo $before_widget;
- $title = empty($instance['title']) ? __('An Image', 'yg-show-img') : apply_filters('widget_title', $instance['title']);
- //Set a default title if not
- $imgurl = esc_url($instance['imgurl']);
- $imgtext = esc_attr($instance['imgtext']);
-
- if ( !empty( $title ) ) {
- echo $before_title . $title . $after_title;
- };
-
- echo '';echo '
. $imgurl . '" title="'.$imgtext.'" alt="'.$imgtext.'" />
';echo ''.$imgtext.'' -
- echo $after_widget;
- } //end of widget
-
- //Update widget options
- function update($new_instance, $old_instance) {
-
- $instance = $old_instance;
- //get old variables
- $instance['title'] = esc_attr($new_instance['title']);
- $instance['imgurl'] = esc_url($new_instance['imgurl']);
- $instance['imgtext'] = esc_attr($new_instance['imgtext']);
- return $instance;
- } //end of update
-
- //Widget options form
- function form($instance) {
- $instance = wp_parse_args( (array) $instance, array( 'title' => __('An Image','yg-show-img'), 'imgurl'=>'', 'imgtext'=>'' ) );
-
- $title = esc_attr($instance['title']);
- $imgurl = esc_url($instance['imgurl']);
- $imgtext = esc_attr($instance['imgtext']);
- ?>
-
-
- class="widefat" id="get_field_id('title'); ?>" name="get_field_name('title'); ?>" type="text" value="" />
-
-
-
-
- class="widefat" id="get_field_id('imgurl'); ?>" name="get_field_name('imgurl'); ?>" type="text" value="" />
-
-
-
-
- class="widefat" id="get_field_id('imgtext'); ?>" name="get_field_name('imgtext'); ?>" type="text" value="" />
-
-
-
- } //end of form
- }
-
- add_action( 'widgets_init', create_function('', 'return register_widget("yg_show_image");') );
- //Register Widget
-
- ?>
Bileşenimizi bu haliyle indirmek için tıklayınız.
Bileşenimiz Türkçe WordPress kurulu sitemizde aşağıdaki gibi görülecek.
Eklentimiz için bir dil dosyası oluşturmadığımız için _e() ve __() fonksiyonları içerisine yazdığımız cümleler aynen kullanılırlar. Eklentimiz artık dil dosyası oluşturmaya hazır. Eklentimiz için dil dosyası oluşturmayı öğrenmek için Eklentilere Çoklu Dil Desteği Ekleme - 2 yazımdan devam ediniz.
Hiç yorum yok:
Yorum Gönder