# Localization Pattern - Citrus Platform ## Genel Bakış Citrus Platform'da tüm modüller Laravel Localization sistemi kullanarak çoklu dil desteği sağlar. Bu dokümantasyon, localization pattern'ini ve Pages modülü örneğini detaylandırır. ## Pattern Yapısı ### 1. Dil Dosyası Organizasyonu ``` lang/ ├── tr/ # Türkçe çeviriler │ ├── pages.php # Pages modülü çevirileri │ ├── users.php # Users modülü çevirileri │ └── common.php # Ortak çeviriler ├── en/ # İngilizce çeviriler │ ├── pages.php # Pages modülü çevirileri │ ├── users.php # Users modülü çevirileri │ └── common.php # Ortak çeviriler └── validation.php # Validation mesajları ``` ### 2. Çeviri Anahtarı Yapısı ```php // Modül adı (kebab-case) + alt kategoriler 'module_name' => [ 'title' => 'Modül Başlığı', 'navigation_label' => 'Navigasyon Etiketi', 'model_label' => 'Tekil Model Etiketi', 'plural_model_label' => 'Çoğul Model Etiketi', // Actions 'create' => 'Oluştur', 'edit' => 'Düzenle', 'delete' => 'Sil', 'restore' => 'Geri Yükle', 'force_delete' => 'Kalıcı Olarak Sil', // Form fields 'field_name' => 'Alan Etiketi', // Status options 'status_option' => 'Durum Seçeneği', // Messages 'created_successfully' => 'Başarıyla oluşturuldu.', 'updated_successfully' => 'Başarıyla güncellendi.', 'deleted_successfully' => 'Başarıyla silindi.', // Table columns 'table_column_name' => 'Sütun Başlığı', // Validation messages 'field_required' => 'Bu alan zorunludur.', 'field_unique' => 'Bu değer zaten kullanılıyor.', ]; ``` ## Pages Modülü - Örnek Uygulama ### 1. Resource Sınıfı Localization ```php label(__('pages.create')), ]; } } ``` #### CreatePage.php ```php label(__('pages.delete')), ForceDeleteAction::make() ->label(__('pages.force_delete')), RestoreAction::make() ->label(__('pages.restore')), ]; } // Başarı mesajı protected function getSavedNotificationTitle(): ?string { return __('pages.updated_successfully'); } } ``` ### 3. Form ve Table Localization #### PageForm.php ```php schema([ TextInput::make('title') ->label(__('pages.title_field')) ->required() ->validationMessages([ 'required' => __('pages.title_required'), ]), TextInput::make('slug') ->label(__('pages.slug_field')) ->required() ->validationMessages([ 'required' => __('pages.slug_required'), 'unique' => __('pages.slug_unique'), ]), Textarea::make('content') ->label(__('pages.content_field')) ->required() ->validationMessages([ 'required' => __('pages.content_required'), ]), Select::make('status') ->label(__('pages.status_field')) ->options([ 'draft' => __('pages.status_draft'), 'published' => __('pages.status_published'), 'archived' => __('pages.status_archived'), ]), ]); } } ``` #### PagesTable.php ```php columns([ TextColumn::make('title') ->label(__('pages.table_title')) ->searchable() ->sortable(), TextColumn::make('slug') ->label(__('pages.table_slug')) ->searchable(), BadgeColumn::make('status') ->label(__('pages.table_status')) ->colors([ 'warning' => 'draft', 'success' => 'published', 'danger' => 'archived', ]), TextColumn::make('created_at') ->label(__('pages.table_created_at')) ->dateTime() ->sortable(), TextColumn::make('updated_at') ->label(__('pages.table_updated_at')) ->dateTime() ->sortable(), ]); } } ``` ## Dil Dosyası Örnekleri ### Türkçe (lang/tr/pages.php) ```php 'Sayfalar', 'navigation_label' => 'Sayfalar', 'model_label' => 'Sayfa', 'plural_model_label' => 'Sayfalar', // Actions 'create' => 'Yeni Sayfa Oluştur', 'edit' => 'Sayfayı Düzenle', 'delete' => 'Sayfayı Sil', 'restore' => 'Sayfayı Geri Yükle', 'force_delete' => 'Kalıcı Olarak Sil', // Form fields 'title_field' => 'Başlık', 'slug_field' => 'URL Yolu', 'content_field' => 'İçerik', 'meta_title_field' => 'Meta Başlık', 'meta_description_field' => 'Meta Açıklama', 'status_field' => 'Durum', 'published_at_field' => 'Yayın Tarihi', // Status options 'status_draft' => 'Taslak', 'status_published' => 'Yayınlandı', 'status_archived' => 'Arşivlendi', // Messages 'created_successfully' => 'Sayfa başarıyla oluşturuldu.', 'updated_successfully' => 'Sayfa başarıyla güncellendi.', 'deleted_successfully' => 'Sayfa başarıyla silindi.', 'restored_successfully' => 'Sayfa başarıyla geri yüklendi.', // Table columns 'table_title' => 'Başlık', 'table_slug' => 'URL Yolu', 'table_status' => 'Durum', 'table_created_at' => 'Oluşturulma Tarihi', 'table_updated_at' => 'Güncellenme Tarihi', // Validation messages 'title_required' => 'Başlık alanı zorunludur.', 'slug_required' => 'URL yolu alanı zorunludur.', 'slug_unique' => 'Bu URL yolu zaten kullanılıyor.', 'content_required' => 'İçerik alanı zorunludur.', ]; ``` ### İngilizce (lang/en/pages.php) ```php 'Pages', 'navigation_label' => 'Pages', 'model_label' => 'Page', 'plural_model_label' => 'Pages', // Actions 'create' => 'Create New Page', 'edit' => 'Edit Page', 'delete' => 'Delete Page', 'restore' => 'Restore Page', 'force_delete' => 'Force Delete', // Form fields 'title_field' => 'Title', 'slug_field' => 'URL Slug', 'content_field' => 'Content', 'meta_title_field' => 'Meta Title', 'meta_description_field' => 'Meta Description', 'status_field' => 'Status', 'published_at_field' => 'Published At', // Status options 'status_draft' => 'Draft', 'status_published' => 'Published', 'status_archived' => 'Archived', // Messages 'created_successfully' => 'Page created successfully.', 'updated_successfully' => 'Page updated successfully.', 'deleted_successfully' => 'Page deleted successfully.', 'restored_successfully' => 'Page restored successfully.', // Table columns 'table_title' => 'Title', 'table_slug' => 'URL Slug', 'table_status' => 'Status', 'table_created_at' => 'Created At', 'table_updated_at' => 'Updated At', // Validation messages 'title_required' => 'The title field is required.', 'slug_required' => 'The URL slug field is required.', 'slug_unique' => 'This URL slug is already taken.', 'content_required' => 'The content field is required.', ]; ``` ## Kullanım Örnekleri ### 1. Blade Template'lerde ```blade