WP CLI ile WordPress Dil Paketi Kurulum ve Yönetimi
WordPress sitelerini yönetirken en çok zaman kaybettiren konulardan biri dil paketleridir. Özellikle çok dilli kurumsal projelerde ya da müşteri sitelerini toplu yönetirken dil paketi kurulumu, güncellenmesi ve temizlenmesi ciddi bir iş yüküne dönüşebilir. İşte bu noktada WP-CLI’ın wp language komutu hayat kurtarıcı oluyor. Sunucuya SSH ile bağlanıp tek satır komutla onlarca sitenin dil paketini güncelleyebilmek, WordPress yöneticisi için vazgeçilmez bir beceri haline geliyor.
wp language Komutuna Genel Bakış
wp language komutu, WordPress çekirdeğinin, tema ve eklentilerin dil paketlerini komut satırından yönetmenizi sağlar. Bu komut üç ana alt komut grubuna ayrılır:
- wp language core: WordPress çekirdeğinin dil paketleri
- wp language plugin: Eklentilerin dil paketleri
- wp language theme: Temaların dil paketleri
Her bir grup kendi içinde install, uninstall, list, update gibi alt komutlara sahiptir. Yapı oldukça tutarlı olduğu için birini öğrenince diğerlerine de hemen adapte olabiliyorsunuz.
WP-CLI kurulu değilse önce onu kurmanız gerekiyor. Çoğu hosting paneli artık WP-CLI’ı yerleşik olarak sunuyor ama kendi sunucunuzda yoksa şu şekilde kurabilirsiniz:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
wp --info
Mevcut Dil Paketlerini Listeleme
Bir siteye hangi dil paketlerinin kurulu olduğunu görmek için list alt komutunu kullanırsınız. Bu komut hem kurulu paketleri hem de kurulabilecek paketleri listeleyebilir.
WordPress çekirdeğine ait kurulu dil paketlerini görmek için:
wp language core list --status=installed
Kurulabilecek tüm dil paketlerini görmek için:
wp language core list
Belirli bir eklentinin dil paketlerini listelemek için:
wp language plugin list woocommerce
Çıktıda language, english_name, native_name, status, update gibi kolonlar görürsünüz. status kolonu installed ya da boş olabilir; update kolonu ise mevcut güncellemeleri gösterir.
Bir temanın dil paketlerini listelemek de aynı şekilde çalışır:
wp language theme list astra --status=installed
Bu komutlar özellikle bir siteyi teslim almadan önce ya da denetim yaparken çok işe yarıyor. Hangi dil paketlerinin kurulu olduğunu, hangilerinin güncel olmadığını hızlıca görebiliyorsunuz.
WordPress Çekirdeği İçin Dil Paketi Kurulumu
Yeni bir WordPress sitesi kurduğunuzda ya da mevcut bir siteye yeni bir dil desteği eklemeniz gerektiğinde wp language core install komutunu kullanırsınız.
Türkçe dil paketini kurmak için:
wp language core install tr_TR
Kurulumun ardından dili aktif etmek için wp site switch-language ya da wp option update komutunu kullanabilirsiniz:
wp option update WPLANG tr_TR
Birden fazla dil paketi aynı anda kurulabilir:
wp language core install tr_TR de_DE fr_FR
Bu özellikle çok dilli bir WooCommerce mağazası kurarken ya da WPML, Polylang gibi çoklu dil eklentileri kullanılan projelerde çok işe yarıyor. Tek komutla tüm gerekli dilleri yükleyip işe devam edebiliyorsunuz.
Gerçek Dünya Senaryosu: Diyelim ki bir ajans olarak 20 farklı müşterinin WordPress sitesini yönetiyorsunuz ve bu sitelerin bir kısmı Türkçe, bir kısmı Almanca arayüzle çalışıyor. Her güncelleme döneminde dil paketlerini manuel kontrol etmek yerine basit bir bash script yazabilirsiniz.
Eklenti Dil Paketlerinin Kurulumu
Eklentiler için dil paketi kurulumu da benzer şekilde çalışır. Özellikle WooCommerce gibi büyük eklentilerde dil paketi kurulumu önemlidir.
wp language plugin install woocommerce tr_TR
Yüklü tüm eklentiler için belirli bir dili kurmak isterseniz --all bayrağını kullanabilirsiniz:
wp language plugin install --all tr_TR
Bu komut çalıştırıldığında, yüklü olan tüm eklentiler için tr_TR dil paketi mevcut ve WordPress.org’da bulunabiliyorsa kurulur. Bulunamayanlar için hata mesajı alırsınız ama komut diğer eklentiler için çalışmaya devam eder.
Temaların dil paketleri için de aynı yaklaşım geçerlidir:
wp language theme install twentytwentyfour tr_TR
Ya da tüm yüklü temalar için:
wp language theme install --all tr_TR
Dil Paketlerini Güncelleme
Dil paketlerinin güncel tutulması, özellikle WooCommerce gibi sık güncellenen eklentilerde önemlidir. Eski dil paketi yeni eklenti sürümüyle uyumsuz olabilir ya da eksik çeviriler ortaya çıkabilir.
WordPress çekirdeğinin dil paketlerini güncellemek için:
wp language core update
Tüm eklenti dil paketlerini güncellemek için:
wp language plugin update --all
Tüm tema dil paketlerini güncellemek için:
wp language theme update --all
Tek bir komutla her şeyi güncellemek isterseniz bunları birleştirebilirsiniz:
wp language core update && wp language plugin update --all && wp language theme update --all
Bu komutu cron job olarak tanımlayıp haftalık ya da aylık otomatik çalıştırabilirsiniz. Sisteminizin her zaman güncel çevirilere sahip olmasını sağlamak için ideal bir yaklaşımdır.
Cron job örneği (her Pazar sabahı 03:00’te):
0 3 * * 0 cd /var/www/html/sitem.com && wp language core update && wp language plugin update --all && wp language theme update --all --allow-root >> /var/log/wp-lang-updates.log 2>&1
Buradaki --allow-root bayrağına dikkat edin. Eğer cron job’ı root kullanıcısı çalıştırıyorsa bu bayrak gerekli olur çünkü WP-CLI normalde root olarak çalışmayı engeller.
Dil Paketlerini Kaldırma
Kullanılmayan dil paketlerini kaldırmak, hem disk alanı açar hem de sitenin dil seçeneklerini temiz tutar. Özellikle test dönemlerinde deneme amaçlı kurduğunuz dil paketlerini kaldırmak için kullanışlıdır.
wp language core uninstall de_DE
Bir eklentinin dil paketini kaldırmak için:
wp language plugin uninstall woocommerce de_DE
Bir temanın dil paketini kaldırmak için:
wp language theme uninstall astra de_DE
Çok Siteli WordPress (Multisite) Ortamında Dil Yönetimi
WordPress Multisite ortamlarında dil yönetimi biraz farklı çalışır. Her site kendi dil ayarını tutabilir ve her biri için ayrı dil paketi kurulumu gerekebilir. WP-CLI’ın --url parametresi bu durumda kritik rol oynar.
wp language core install tr_TR --url=site1.example.com
wp language core install de_DE --url=site2.example.com
wp language core install fr_FR --url=site3.example.com
Multisite’da tüm sitelere aynı dil paketini kurmak için ağdaki tüm site URL’lerini döngüyle işleyebilirsiniz:
wp site list --field=url | while read url; do
wp language core install tr_TR --url="$url"
wp language plugin install --all tr_TR --url="$url"
done
Bu yaklaşım, ağınızdaki her siteye aynı dil paketini otomatik olarak yükler. Yüzlerce siteyi yönetiyorsanız bu tür scriptler aylarca zaman kazandırır.
Pratik Script: Toplu Site Yönetimi İçin Dil Güncelleme Scripti
Birden fazla bağımsız WordPress sitesini yönetiyorsanız (multisite değil, farklı klasörlerde kurulu siteler) aşağıdaki gibi bir script hazırlayabilirsiniz:
#!/bin/bash
# WordPress site dizinlerini tanımla
SITES=(
"/var/www/html/site1.com"
"/var/www/html/site2.com"
"/var/www/html/site3.com"
"/var/www/html/woocommerce-magaza.com"
)
LOG_FILE="/var/log/wp-language-update.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$DATE] Dil paketi güncelleme başlıyor..." >> "$LOG_FILE"
for SITE_PATH in "${SITES[@]}"; do
if [ -f "$SITE_PATH/wp-config.php" ]; then
echo "[$DATE] İşleniyor: $SITE_PATH" >> "$LOG_FILE"
# Çekirdek dil paketlerini güncelle
wp --path="$SITE_PATH" language core update >> "$LOG_FILE" 2>&1
# Eklenti dil paketlerini güncelle
wp --path="$SITE_PATH" language plugin update --all >> "$LOG_FILE" 2>&1
# Tema dil paketlerini güncelle
wp --path="$SITE_PATH" language theme update --all >> "$LOG_FILE" 2>&1
echo "[$DATE] Tamamlandı: $SITE_PATH" >> "$LOG_FILE"
else
echo "[$DATE] UYARI: WordPress bulunamadı: $SITE_PATH" >> "$LOG_FILE"
fi
done
echo "[$DATE] Tüm siteler işlendi." >> "$LOG_FILE"
Bu script’i /usr/local/bin/wp-lang-update.sh olarak kaydedin, çalıştırılabilir yapın ve cron’a ekleyin:
chmod +x /usr/local/bin/wp-lang-update.sh
crontab -e
# Şu satırı ekleyin:
# 0 2 * * 1 /usr/local/bin/wp-lang-update.sh
Dil Paketi Dosyalarının Nerede Tutulduğu
WP-CLI ile yaptığınız değişikliklerin arkasında ne olduğunu anlamak, sorunları daha hızlı çözmenizi sağlar. Dil paketi dosyaları WordPress kurulumunuzun wp-content/languages/ dizininde tutulur.
- WordPress çekirdeği dil dosyaları:
wp-content/languages/(örneğintr_TR.mo,tr_TR.po) - Eklenti dil dosyaları:
wp-content/languages/plugins/(örneğinwoocommerce-tr_TR.mo) - Tema dil dosyaları:
wp-content/languages/themes/(örneğinastra-tr_TR.mo)
.mo dosyası derlenmiş binary formattır, WordPress tarafından doğrudan kullanılır. .po dosyası ise okunabilir formatta ham çeviri dosyasıdır. WP-CLI ile kurduğunuzda her ikisi de indirilir.
Eğer bir dil paketinin doğru kurulup kurulmadığını kontrol etmek istiyorsanız:
ls -la /var/www/html/sitem.com/wp-content/languages/plugins/ | grep woocommerce
Ya da WP-CLI üzerinden:
wp language plugin list woocommerce --status=installed --path=/var/www/html/sitem.com
Güncelleme Kontrolü ve Raporlama
Güncellenebilir dil paketlerini güncellemeden önce kontrol etmek ve raporlamak için şu yaklaşımı kullanabilirsiniz:
# Güncellenebilir çekirdek dil paketlerini listele
wp language core list --update=available --format=table
# Güncellenebilir eklenti dil paketlerini listele
wp language plugin list --all --update=available --format=table
# Güncellenebilir tema dil paketlerini listele
wp language theme list --all --update=available --format=table
Bu komutlar özellikle güncelleme yapmadan önce durum tespiti yaparken kullanışlıdır. Müşteriye “bu hafta şu kadar dil paketi güncellendi” gibi bir rapor hazırlamak istiyorsanız çıktıyı bir dosyaya yönlendirebilirsiniz:
echo "=== Dil Paketi Güncelleme Raporu - $(date) ===" > /tmp/lang-report.txt
echo "" >> /tmp/lang-report.txt
echo "--- Çekirdek ---" >> /tmp/lang-report.txt
wp language core list --update=available --format=csv >> /tmp/lang-report.txt
echo "" >> /tmp/lang-report.txt
echo "--- Eklentiler ---" >> /tmp/lang-report.txt
wp language plugin list --all --update=available --format=csv >> /tmp/lang-report.txt
Sık Karşılaşılan Sorunlar ve Çözümleri
Dil paketi bulunamıyor hatası: WordPress.org üzerinde bazı eklentiler için Türkçe çeviri bulunmayabilir. Bu durumda wp language plugin install eklenti-adi tr_TR komutu hata verir. Bu normal bir durumdur; eklentinin geliştiricisi çeviri katkısı bekliyor olabilir.
Dosya izin hataları: WP-CLI’ı çalıştırdığınız kullanıcının wp-content/languages/ dizinine yazma yetkisi olması gerekir. Shared hosting ortamlarında bu sorunla sıkça karşılaşılır.
# İzin sorununu gidermek için
ls -la /var/www/html/sitem.com/wp-content/languages/
chown -R www-data:www-data /var/www/html/sitem.com/wp-content/languages/
chmod -R 755 /var/www/html/sitem.com/wp-content/languages/
Çakışan dil paketi versiyonları: Bazen bir eklentinin yeni versiyonu eski dil paketi formatıyla uyumsuz olabilir. Bu durumda önce eski paketi kaldırıp yeniden kurabilirsiniz:
wp language plugin uninstall woocommerce tr_TR
wp language plugin install woocommerce tr_TR
Network timeout sorunları: Sunucunuzun WordPress.org API’sine erişimi kısıtlıysa dil paketleri indirilemez. Bunu test etmek için:
curl -I https://api.wordpress.org/translations/core/1.0/
Eğer erişim yoksa güvenlik duvarı kurallarınızı ya da proxy ayarlarınızı kontrol etmeniz gerekir.
WooCommerce Projelerinde Dil Yönetimi
WooCommerce projeleri söz konusu olduğunda dil yönetimi biraz daha kapsamlı bir hal alır. WooCommerce’in kendisinin yanı sıra eklentilerinin de (WooCommerce Subscriptions, WooCommerce Bookings gibi) dil paketlerini yönetmeniz gerekebilir.
# WooCommerce ve temel uzantılarını Türkçe yap
wp language plugin install woocommerce tr_TR
wp language plugin install woocommerce-gateway-stripe tr_TR
wp language plugin install woo-gutenberg-products-block tr_TR
# Aktif WooCommerce temasının dil paketini kur
ACTIVE_THEME=$(wp theme status --field=name | grep active | awk '{print $1}')
wp language theme install "$ACTIVE_THEME" tr_TR
WooCommerce mağazalarında Türkçe dil desteğinin düzgün çalışması için sadece dil paketini kurmak yetmez; saat dilimi, para birimi ve tarih formatı gibi yerelleştirme ayarlarının da doğru yapılandırılmış olması gerekir. WP-CLI ile bunları da hızlıca kontrol edebilirsiniz:
wp option get WPLANG
wp option get timezone_string
wp option get date_format
Sonuç
wp language komutu, WordPress dil yönetimini manuel süreçlerden kurtarıp otomasyona taşımanın en doğrudan yoludur. Birkaç siteyi idare etseniz bile bu komutları öğrenmek size değerli zaman kazandırır; onlarca siteyi yönetiyorsanız adeta zorunluluk haline gelir.
Özetlemek gerekirse temel akışınız şu şekilde olmalı: önce list komutlarıyla mevcut durumu anlayın, sonra install ile gerekli dil paketlerini kurun, ardından update komutlarını cron job’a bağlayarak güncel kalmayı otomatize edin. Kullanılmayan dil paketlerini uninstall ile temizleyerek sisteminizi düzenli tutun.
Multisite ortamlarda site döngüsü, birden fazla bağımsız siteyi yönetirken ise --path parametresiyle merkezi bir script yaklaşımı benimsemek en verimli yol olarak öne çıkıyor. Bu scriptleri log dosyasıyla birleştirdiğinizde hem otomasyona hem de hesap verebilirliğe kavuşmuş olursunuz.
WP-CLI’ın bu komutu hakkında sık sık yeni şeyler keşfedebilirsiniz; wp help language core install gibi yardım komutlarını çalıştırarak tüm parametreleri incelemenizi tavsiye ederim. Komut satırına yatırım yaptığınız her dakika, ilerleyen zamanlarda size katbekat geri döner.
