{"id":1078,"date":"2026-10-31T16:31:05","date_gmt":"2026-10-31T16:31:05","guid":{"rendered":"https:\/\/www.vps.tc\/blog\/?p=1078"},"modified":"2026-10-31T15:40:49","modified_gmt":"2026-10-31T15:40:49","slug":"wordpress-cok-dilli-site","status":"publish","type":"post","link":"https:\/\/www.vps.tc\/blog\/tr\/wordpress-cok-dilli-site\/","title":{"rendered":"WordPress \u00c7ok Dilli Site Nas\u0131l Yap\u0131l\u0131r?"},"content":{"rendered":"<div class=\"aiw-summary\" id=\"aiw-ozet\">\n<p class=\"aiw-summary-title\">H\u0131zl\u0131 \u00d6zet &#8211; WordPress \u00c7ok Dilli Site<\/p>\n<p>Mevcut T\u00fcrk\u00e7e URL&#039;leri de\u011fi\u015ftirmeden \u0130ngilizce sayfalar\u0131 \/en\/ alt\u0131nda yay\u0131mlayabilirsiniz. Varsay\u0131msal staging senaryosu, tek WordPress kurulumu ve Polylang \u00fczerinden ilerler; \u00e7eviri i\u00e7eri\u011fi ayr\u0131ca haz\u0131rlan\u0131r.<\/p>\n<ul>\n<li><strong>\u00d6nce geri d\u00f6n\u00fc\u015f<\/strong> \u2014 Veritaban\u0131 ve dosyalar\u0131 birlikte yedekleyin, geri y\u00fcklemeyi ayr\u0131 ortamda do\u011frulay\u0131n ve staging eri\u015fimini koruyun.<\/li>\n<li><strong>\u0130\u015f ak\u0131\u015f\u0131na uygunluk<\/strong> \u2014 Polylang, WPML ve TranslatePress se\u00e7eneklerini edit\u00f6r ihtiya\u00e7lar\u0131, uyumluluk, lisans ve veri ta\u015f\u0131nabilirli\u011fi \u00fczerinden kar\u015f\u0131la\u015ft\u0131r\u0131n.<\/li>\n<li><strong>Sabit dil adresleri<\/strong> \u2014 T\u00fcrk\u00e7eyi k\u00f6kte tutun, varsay\u0131lan dil kodunu gizleyin ve \u0130ngilizce i\u00e7erikleri \/en\/ alt\u0131nda yay\u0131mlay\u0131n.<\/li>\n<li><strong>Ba\u011fl\u0131 \u00e7eviri \u00e7iftleri<\/strong> \u2014 Sayfalar\u0131 \u00e7eviri e\u015fi olarak ba\u011flay\u0131n; men\u00fcleri, formlar\u0131 ve tema metinlerini ayr\u0131ca kontrol edin.<\/li>\n<li><strong>Ayr\u0131 SEO g\u00f6revleri<\/strong> \u2014 hreflang ile dil alternatiflerini belirtin, her dil sayfas\u0131n\u0131n canonical adresini ise kendisine y\u00f6neltin.<\/li>\n<li><strong>Kontroll\u00fc yay\u0131n kap\u0131s\u0131<\/strong> \u2014 \u0130ki dilde URL, y\u00f6nlendirme, dil se\u00e7ici ve indeksleme kontrolleri tamamlanmadan i\u00e7eri\u011fi yay\u0131mlamay\u0131n.<\/li>\n<\/ul>\n<\/div>\n<p class=\"aiw-lead\">Mevcut T\u00fcrk\u00e7e sayfalar\u0131n\u0131z\u0131n adreslerini de\u011fi\u015ftirmeden \u0130ngilizce i\u00e7erik yay\u0131mlayabilirsiniz. WordPress \u00e7ok dilli site kurulumu i\u00e7in \u00f6nce yedekli bir staging kopyas\u0131 haz\u0131rlay\u0131n, uygun bir dil eklentisi se\u00e7in ve \u00e7eviri e\u015flerini ba\u011flay\u0131n. T\u00fcrk\u00e7e k\u00f6kte, \u0130ngilizce \/en\/ alt\u0131nda kalabilir; yay\u0131na ge\u00e7meden men\u00fcleri, dil se\u00e7iciyi, kar\u015f\u0131l\u0131kl\u0131 hreflang i\u015faretlerini ve her sayfan\u0131n kendi canonical adresini do\u011frulay\u0131n.<\/p>\n<div class=\"aiw-toc\" style=\"border:1px solid #dbe3ea;border-radius:8px;padding:16px 20px;margin:0 0 28px\">\n<p class=\"aiw-toc-head\"><strong>\u0130\u00e7indekiler<\/strong><span class=\"aiw-toc-meta\"> \u00b7 16 dk okuma<\/span><\/p>\n<ol style=\"margin:10px 0 0;padding-left:22px\">\n<li><a href=\"#ikinci-dili-acmadan-once-mevcut-siteyi-koruyun\">\u0130kinci dili a\u00e7madan \u00f6nce mevcut siteyi koruyun<\/a><\/li>\n<li><a href=\"#polylang-wpml-veya-translatepress-secim-neye-bagli\">Polylang, WPML veya TranslatePress: se\u00e7im neye ba\u011fl\u0131?<\/a><\/li>\n<li><a href=\"#turkce-kokte-ingilizce-en-altinda\">T\u00fcrk\u00e7e k\u00f6kte, \u0130ngilizce \/en\/ alt\u0131nda<\/a><\/li>\n<li><a href=\"#ceviri-yalnizca-yazi-govdesinden-ibaret-degil\">\u00c7eviri yaln\u0131zca yaz\u0131 g\u00f6vdesinden ibaret de\u011fil<\/a><\/li>\n<li><a href=\"#hreflang-ve-canonical-ayni-isi-yapmaz\">hreflang ve canonical ayn\u0131 i\u015fi yapmaz<\/a><\/li>\n<li><a href=\"#yayimlamadan-once-iki-dili-de-sinayin\">Yay\u0131mlamadan \u00f6nce iki dili de s\u0131nay\u0131n<\/a><\/li>\n<li><a href=\"#yeni-icerik-geldiginde-dil-eslesmeleri-nasil-korunur\">Yeni i\u00e7erik geldi\u011finde dil e\u015fle\u015fmeleri nas\u0131l korunur?<\/a><\/li>\n<li><a href=\"#yayimlamadan-once-iki-dili-de-sinayin-2\">Yay\u0131mlamadan \u00f6nce iki dili de s\u0131nay\u0131n<\/a><\/li>\n<li><a href=\"#sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/a><\/li>\n<li><a href=\"#kaynaklar\">Kaynaklar<\/a><\/li>\n<\/ol>\n<\/div>\n<h2 id=\"ikinci-dili-acmadan-once-mevcut-siteyi-koruyun\">\u0130kinci dili a\u00e7madan \u00f6nce mevcut siteyi koruyun<\/h2>\n<p>\u0130ngilizce i\u00e7erik yay\u0131mlarken \u00e7al\u0131\u015fan T\u00fcrk\u00e7e adresleri de\u011fi\u015ftirmeniz gerekmez. WordPress \u00e7ok dilli site haz\u0131rl\u0131\u011f\u0131nda hedefiniz, <code>https:\/\/example.com\/hakkimizda\/<\/code> adresini koruyup \u0130ngilizce kar\u015f\u0131l\u0131\u011f\u0131n\u0131 <code>https:\/\/example.com\/en\/about\/<\/code> alt\u0131nda sunmak olsun. T\u00fcrk\u00e7e varsay\u0131lan kalacak; URL&#8217;lerde T\u00fcrk\u00e7e dil kodu g\u00f6r\u00fcnmeyecek. \u00d6nce envanter.<\/p>\n<p>Varsay\u0131msal staging ortam\u0131 Ubuntu Server 24.04 LTS, Nginx 1.24, PHP 8.3-FPM, MariaDB 10.11, WordPress 6.8.3, WP-CLI 2.12 ve Polylang 3.7 serisini temel al\u0131r. Bunlar g\u00fcncellik iddias\u0131 de\u011fildir; g\u00fcvenlik g\u00fcncellemelerini ve uyumlulu\u011fu resmi kaynaklardan do\u011frulay\u0131n, do\u011frulad\u0131\u011f\u0131n\u0131z yama s\u00fcr\u00fcmlerini b\u00fct\u00fcn \u00f6rneklerde ayn\u0131 tutun. Ayr\u0131lan 2 vCPU, 4 GB RAM ve 40 GB disk performans garantisi sa\u011flamaz.<\/p>\n<p>Klasik temal\u0131, tek siteli kurulumda sayfa ve yaz\u0131 URL&#8217;lerini, men\u00fc konumlar\u0131n\u0131, form alanlar\u0131n\u0131, do\u011frulama mesajlar\u0131n\u0131, e-posta bildirimlerini ve tema metinlerini kaydedin. Her kayda i\u00e7erik sorumlusu ve \u00e7eviri durumu ekleyin. Yaln\u0131zca sayfa g\u00f6vdesini \u00e7evirmek yeterli de\u011fildir &#8211; \u0130ngilizce formun T\u00fcrk\u00e7e hata vermesi kolayca g\u00f6zden ka\u00e7ar.<\/p>\n<p>Staging kopyas\u0131n\u0131 ge\u00e7erli HTTPS \u00fczerinden, Nginx katman\u0131nda HTTP Basic Authentication veya VPN ile eri\u015fime kapat\u0131n. WordPress&#8217;teki arama motorlar\u0131n\u0131n indekslemesini engelleme se\u00e7ene\u011fini de i\u015faretleyin; bu ayar eri\u015fim kontrol\u00fcn\u00fcn yerine ge\u00e7mez. Kimlik do\u011frulamas\u0131 olmadan sayfalar\u0131n a\u00e7\u0131lmad\u0131\u011f\u0131n\u0131 kontrol edin. Kopyan\u0131n ger\u00e7ek al\u0131c\u0131lara e-posta g\u00f6ndermesini durdurun.<\/p>\n<p>WordPress&#8217;in yedekleme dok\u00fcmantasyonu, tam geri d\u00f6n\u00fc\u015f i\u00e7in veritaban\u0131 ve dosyalar\u0131n birlikte saklanmas\u0131n\u0131 \u00f6nerir. A\u015fa\u011f\u0131daki \u00f6rnekte sudo yetkili <code>deploy<\/code> hesab\u0131n\u0131n dosya sahipli\u011fi WP-CLI \u00e7al\u0131\u015ft\u0131rmaya uygundur; <code>wp<\/code> root olarak \u00e7al\u0131\u015ft\u0131r\u0131lmaz. Ba\u015flamadan bo\u015f alan\u0131 kontrol edin; d\u00fczenlemeleri, y\u00fcklemeleri ve zamanlanm\u0131\u015f yazma i\u015flemlerini durdurun. <code>--single-transaction<\/code>, dosyalarla veritaban\u0131n\u0131 tek ba\u015f\u0131na ayn\u0131 ana sabitlemez.<\/p>\n<pre><code>(\nset -eu\numask 077\nsudo install -d -m 700 -o deploy -g \"$(id -gn)\" \/srv\/backups\/example.com\nbackup=$(mktemp -d \/srv\/backups\/example.com\/pre-language.XXXXXXXX)\ncd \/var\/www\/example.com\/public\nwp db export \"$backup\/database.sql\" --single-transaction\ntar -czf \"$backup\/files.tar.gz\" -C \/var\/www\/example.com public\ncd \"$backup\"\nsha256sum database.sql files.tar.gz &gt; SHA256SUMS\nsha256sum -c SHA256SUMS\ntar -tzf files.tar.gz &gt; \/dev\/null\nprintf 'Yedek dizini: %s\\n' \"$backup\"\n)<\/code><\/pre>\n<p>Komutlar web k\u00f6k\u00fc d\u0131\u015f\u0131nda, eri\u015fimi s\u0131n\u0131rland\u0131r\u0131lm\u0131\u015f benzersiz bir dizine SQL d\u00f6k\u00fcm\u00fc ve dosya ar\u015fivi yazar. Ba\u015far\u0131l\u0131 \u00e7al\u0131\u015fmada sa\u011flama kontrol\u00fcnden iki dosya i\u00e7in <code>OK<\/code> beklenir; ar\u015fiv listelemesi sessiz tamamlan\u0131r. Bu kontroller geri y\u00fckleme kan\u0131t\u0131 de\u011fildir. <code>\/etc\/nginx\/sites-available\/example.com<\/code> yap\u0131land\u0131rmas\u0131n\u0131 ve gerekli servis ayarlar\u0131n\u0131 ayr\u0131ca saklay\u0131n.<\/p>\n<p><a href=\"https:\/\/www.vps.tc\/blog\/tr\/vps-snapshot-nedir-anlik-yedekleme-rehberi\/\">VPS snapshot<\/a> h\u0131zl\u0131 geri d\u00f6n\u00fc\u015f noktas\u0131 sa\u011flayabilir; ayn\u0131 altyap\u0131daki kopya ba\u011f\u0131ms\u0131z yedek say\u0131lmaz. Yede\u011fi ayr\u0131 depoya aktar\u0131n. Dosyalar\u0131 izole bir ortama a\u00e7\u0131p SQL&#8217;i ayr\u0131 veritaban\u0131na y\u00fckleyin; y\u00f6netici giri\u015fini, medyay\u0131 ve mevcut T\u00fcrk\u00e7e adresleri do\u011frulamadan ikinci dili etkinle\u015ftirmeyin.<\/p>\n<div class=\"aiw-callout aiw-callout-warn\">\n<p class=\"aiw-callout-label\">Dikkat<\/p>\n<p>WordPress&#039;in arama motorlar\u0131ndan siteyi indekslememelerini isteme ayar\u0131, staging ortam\u0131na eri\u015fimi engellemez. Kopyay\u0131 kimlik do\u011frulama veya a\u011f eri\u015fim k\u0131s\u0131tlamas\u0131yla koruyun; yay\u0131n ortam\u0131nda bu korumalar\u0131n ve noindex ayarlar\u0131n\u0131n durumunu ayr\u0131ca do\u011frulay\u0131n.<\/p>\n<\/div>\n<h2 id=\"polylang-wpml-veya-translatepress-secim-neye-bagli\">Polylang, WPML veya TranslatePress: se\u00e7im neye ba\u011fl\u0131?<\/h2>\n<p>\u0130ngilizce metni kimin g\u00fcncelleyece\u011fi belli de\u011filse eklenti se\u00e7imi tek ba\u015f\u0131na sorunu \u00e7\u00f6zmez. Edit\u00f6rlerin iki dili ayr\u0131 ayr\u0131 haz\u0131rlad\u0131\u011f\u0131 bir WordPress \u00e7ok dilli site ile otomatik \u00e7eviriye dayanan katalog farkl\u0131 i\u015f ak\u0131\u015flar\u0131 gerektirir. \u00d6nce s\u00fcreci belirleyin. Eklentiyi de \u00e7eviriyi haz\u0131rlayan, onaylayan ve g\u00fcncel tutan ki\u015filerin \u00e7al\u0131\u015fma bi\u00e7imine g\u00f6re de\u011ferlendirin.<\/p>\n<p><strong>Polylang<\/strong>, dil s\u00fcr\u00fcmlerini ayr\u0131 WordPress i\u00e7erikleri olarak d\u00fczenleyip birbirine ba\u011flayan editoryal ak\u0131\u015fa uygundur. WordPress.org \u00fczerindeki resmi Polylang a\u00e7\u0131klamas\u0131, \u00fccretsiz s\u00fcr\u00fcmde yaz\u0131lar\u0131n, sayfalar\u0131n, kategorilerin, etiketlerin ve men\u00fclerin \u00e7ok dilli y\u00f6netilebildi\u011fini belirtir; i\u00e7erik \u00e7o\u011faltma ve URL tabanlar\u0131n\u0131 \u00e7evirme gibi \u00f6zellikleri Pro kapsam\u0131nda listeler. \u0130ngilizce sayfaya <code>about<\/code> k\u0131sa ad\u0131n\u0131 vermek, kategori gibi ortak URL tabanlar\u0131n\u0131 \u00e7evirmek de\u011fildir. Yaln\u0131zca farkl\u0131 sayfa k\u0131sa adlar\u0131 kullanmak i\u00e7in Pro gerekti\u011fini varsaymay\u0131n.<\/p>\n<p><strong>WPML<\/strong>, \u00e7eviri g\u00f6revlerini ve \u00e7evirmen rollerini merkezi y\u00f6netmek isteyen ekiplerin de\u011ferlendirebilece\u011fi bir se\u00e7enektir. <strong>TranslatePress<\/strong> ise ziyaret\u00e7inin g\u00f6rd\u00fc\u011f\u00fc sayfa \u00fczerinden g\u00f6rsel \u00e7eviri d\u00fczenlemeye odaklan\u0131r. Ayr\u0131m aray\u00fczden ibaret de\u011fildir: ayr\u0131 i\u00e7erik kay\u0131tlar\u0131yla \u00e7al\u0131\u015fmak ile g\u00f6r\u00fcnt\u00fclenen metinleri \u00e7evirmek, g\u00fcncelleme ve ta\u015f\u0131ma s\u00fcre\u00e7lerini farkl\u0131la\u015ft\u0131r\u0131r. Tema de\u011fi\u015fti\u011finde veya bir eklenti dinamik metin \u00fcretti\u011finde \u00e7evirilerin nas\u0131l y\u00f6netilece\u011fini kontrol edin.<\/p>\n<p>Sa\u011flanan kaynaklar WPML ve TranslatePress&#8217;in resmi belgelerini i\u00e7ermedi\u011finden bu iki \u00fcr\u00fcn\u00fcn g\u00fcncel paket s\u0131n\u0131rlar\u0131 burada do\u011frulanm\u0131\u015f de\u011fildir. Se\u00e7imden \u00f6nce \u00fcretici belgelerinde \u00fccretsiz ve \u00fccretli \u00f6zellikleri, site lisans\u0131 say\u0131s\u0131n\u0131, yenileme ko\u015fullar\u0131n\u0131 ve otomatik \u00e7eviri kotalar\u0131n\u0131 do\u011frulay\u0131n. Otomatik \u00e7eviride sa\u011flay\u0131c\u0131 hesab\u0131, API anahtar\u0131 veya kredi gereksinimi kullan\u0131lan entegrasyona ba\u011fl\u0131d\u0131r; metinlerin hangi \u00fc\u00e7\u00fcnc\u00fc tarafa g\u00f6nderildi\u011fini de inceleyin. Lisans bedeli ile \u00e7eviri hizmetinin kullan\u0131m bedelini ayn\u0131 kalem saymay\u0131n.<\/p>\n<p>Ortak varsay\u0131msal staging ortam\u0131nda WordPress 6.8.3, klasik tema ve Polylang 3.7 serisiyle ilerleme gerek\u00e7esi sadedir: T\u00fcrk\u00e7e kaynak i\u00e7erikle \u0130ngilizce kar\u015f\u0131l\u0131\u011f\u0131n\u0131 ayr\u0131 d\u00fczenlemek yeterlidir. WooCommerce ve Multisite kapsam d\u0131\u015f\u0131ndad\u0131r. Manuel \u00e7eviri harici \u00e7eviri API&#8217;si gerektirmez; se\u00e7im h\u0131z \u00fcst\u00fcnl\u00fc\u011f\u00fcne dayanmaz. Bu s\u00fcr\u00fcmler g\u00fcncellik iddias\u0131 ta\u015f\u0131maz. Kurulumdan \u00f6nce g\u00fcvenlik yamalar\u0131n\u0131 ve uyumlulu\u011fu resmi kaynaklardan do\u011frulay\u0131n; do\u011frulanan yama s\u00fcr\u00fcmlerini b\u00fct\u00fcn \u00f6rneklerde sabit tutun.<\/p>\n<p>Ta\u015f\u0131nabilirlikte metin kadar dil e\u015fle\u015fmelerini, men\u00fcleri ve eklentiye \u00f6zg\u00fc kay\u0131tlar\u0131 da de\u011ferlendirin. Standart WordPress d\u0131\u015fa aktar\u0131m\u0131n\u0131n hepsini ta\u015f\u0131d\u0131\u011f\u0131n\u0131 varsaymay\u0131n; hedef sistemde aktar\u0131m provas\u0131 yap\u0131n. Eklentileri ayr\u0131 staging kopyalar\u0131nda kar\u015f\u0131la\u015ft\u0131r\u0131n, ayn\u0131 sitede birden fazla \u00e7ok dillilik eklentisini birlikte etkinle\u015ftirmeyin.<\/p>\n<h2 id=\"turkce-kokte-ingilizce-en-altinda\">T\u00fcrk\u00e7e k\u00f6kte, \u0130ngilizce \/en\/ alt\u0131nda<\/h2>\n<p>\u0130kinci dili eklemek, mevcut T\u00fcrk\u00e7e adresleri ta\u015f\u0131may\u0131 gerektirmez. Adresler kals\u0131n. Bu varsay\u0131msal staging ortam\u0131nda <code>https:\/\/example.com\/hakkimizda\/<\/code> korunur; \u0130ngilizce kar\u015f\u0131l\u0131\u011f\u0131 <code>https:\/\/example.com\/en\/about\/<\/code> olur. WordPress \u00e7ok dilli site d\u00fczeninde alt dizin se\u00e7imi, iki dili ayn\u0131 alan ad\u0131, sertifika ve WordPress kurulumu alt\u0131nda y\u00f6netmenizi sa\u011flar. <code>\/en\/<\/code> yaln\u0131zca URL \u00f6nekidir; diskte b\u00f6yle bir klas\u00f6r olu\u015fturmay\u0131n.<\/p>\n<p>Polylang&#8217;\u0131n WordPress.org a\u00e7\u0131klamas\u0131na g\u00f6re diller alt dizin, alt alan ad\u0131 veya ayr\u0131 alan adlar\u0131yla yay\u0131mlanabilir. Alt alan ad\u0131nda DNS kay\u0131tlar\u0131, sertifika kapsam\u0131 ve Nginx sunucu ad\u0131 e\u015flemesi ayr\u0131ca d\u00fczenlenir. Ayr\u0131 alan adlar\u0131nda kay\u0131t ve yenileme takibi de eklenir; bu model ayr\u0131 WordPress kurulumlar\u0131n\u0131 zorunlu k\u0131lmaz. Alt dizin karar\u0131, ba\u015flang\u0131\u00e7ta bu i\u015fletim y\u00fck\u00fcn\u00fc azalt\u0131r.<\/p>\n<h3>Dil atamas\u0131 URL ayar\u0131ndan \u00f6nce gelir<\/h3>\n<p>WordPress 6.8.3 ve Polylang 3.7 serisi referans\u0131nda, Diller men\u00fcs\u00fcnden T\u00fcrk\u00e7e ve \u0130ngilizceyi ekleyin; kodlar\u0131 <code>tr<\/code> ve <code>en<\/code> olarak b\u0131rak\u0131n. T\u00fcrk\u00e7eyi varsay\u0131lan se\u00e7in. Mevcut i\u00e7eriklere dil atama ad\u0131m\u0131nda T\u00fcrk\u00e7eyi uygulay\u0131n; yaz\u0131lar\u0131n, sayfalar\u0131n ve kategorilerin dilsiz kalmad\u0131\u011f\u0131n\u0131 kontrol edin. \u0130ngilizce sayfay\u0131 T\u00fcrk\u00e7e sayfan\u0131n \u00e7evirisiyle ili\u015fkilendirip k\u0131sa ad\u0131n\u0131 <code>about<\/code> yap\u0131n.<\/p>\n<p>Polylang URL ayarlar\u0131nda dilin dizinden belirlenmesini se\u00e7in, varsay\u0131lan dil kodunu gizleyin ve <code>\/language\/<\/code> \u00f6nekini kald\u0131ran se\u00e7ene\u011fi etkinle\u015ftirin. Ayarlar \u2192 Kal\u0131c\u0131 Ba\u011flant\u0131lar ekran\u0131nda mevcut T\u00fcrk\u00e7e ba\u011flant\u0131 yap\u0131s\u0131n\u0131 de\u011fi\u015ftirmeden kaydedin. \u00d6rnekte okunabilir kal\u0131c\u0131 ba\u011flant\u0131lar kullan\u0131l\u0131r; mevcut adresleri s\u0131rf \u00f6rne\u011fe benzetmek i\u00e7in de\u011fi\u015ftirmeyin.<\/p>\n<h3>Nginx iste\u011fi WordPress&#8217;e ula\u015ft\u0131rmal\u0131<\/h3>\n<p><code>\/etc\/nginx\/sites-available\/example.com<\/code> dosyas\u0131n\u0131n mevcut HTTPS sunucu blo\u011fundaki <code>location \/<\/code> kural\u0131n\u0131 a\u015fa\u011f\u0131daki gibi d\u00fczenleyin; ikinci kopyas\u0131n\u0131 eklemeyin. Web k\u00f6k\u00fc <code>\/var\/www\/example.com\/public<\/code>, PHP i\u015fleyicisinin soketi <code>\/run\/php\/php8.3-fpm.sock<\/code> olarak kal\u0131r. Bu par\u00e7a mevcut sunucu yap\u0131land\u0131rmas\u0131n\u0131n tamam\u0131n\u0131n yerine ge\u00e7mez.<\/p>\n<pre><code>location \/ {\n    try_files $uri $uri\/ \/index.php?$args;\n}<\/code><\/pre>\n<p>Kural, dosya veya dizin bulunmad\u0131\u011f\u0131nda iste\u011fi sorgu parametreleriyle WordPress&#8217;e aktar\u0131r; dili Nginx de\u011fil, Polylang \u00e7\u00f6z\u00fcmler. Ard\u0131ndan <code>deploy<\/code> hesab\u0131yla yap\u0131land\u0131rmay\u0131 s\u0131nay\u0131n:<\/p>\n<pre><code>sudo nginx -t &amp;&amp; sudo systemctl reload nginx<\/code><\/pre>\n<p>Ba\u015far\u0131l\u0131 testte <code>syntax is ok<\/code> ve <code>test is successful<\/code> mesajlar\u0131 beklenir. <code>&amp;&amp;<\/code> sayesinde yeniden y\u00fckleme yaln\u0131zca test ba\u015far\u0131l\u0131ysa \u00e7al\u0131\u015f\u0131r; ba\u015far\u0131s\u0131zl\u0131kta \u00f6nce bildirilen hatay\u0131 d\u00fczeltin. Bu mesajlar sayfa e\u015fle\u015fmesini do\u011frulamaz.<\/p>\n<p>Google Search Central, dil s\u00fcr\u00fcmlerinin ayr\u0131 URL&#8217;lerle belirtilmesini a\u00e7\u0131klar. Bu d\u00fczende taray\u0131c\u0131 dili alg\u0131lamas\u0131n\u0131 kapal\u0131 b\u0131rak\u0131n: T\u00fcrk\u00e7e adresi a\u00e7an ziyaret\u00e7iyi zorunlu olarak \u0130ngilizceye y\u00f6nlendirmeyin; dil de\u011fi\u015ftirmeyi ziyaret\u00e7inin se\u00e7imine b\u0131rak\u0131n.<\/p>\n<div class=\"aiw-callout aiw-callout-example\">\n<p class=\"aiw-callout-label\">\u00d6rnek<\/p>\n<p>Varsay\u0131msal \u00f6rnekte https:\/\/example.com\/hakkimizda\/ ile https:\/\/example.com\/en\/about\/ ayn\u0131 i\u00e7eri\u011fin iki dildeki kar\u015f\u0131l\u0131\u011f\u0131d\u0131r. \/en\/ fiziksel bir klas\u00f6r de\u011fildir; adresin WordPress&#039;e ula\u015fmas\u0131n\u0131 Nginx y\u00f6nlendirmesi, dil e\u015fle\u015fmesini ise eklenti y\u00f6netir. example.com dok\u00fcmantasyon alan ad\u0131d\u0131r, \u00e7al\u0131\u015fan bir kurulum adresi de\u011fildir.<\/p>\n<\/div>\n<h2 id=\"ceviri-yalnizca-yazi-govdesinden-ibaret-degil\">\u00c7eviri yaln\u0131zca yaz\u0131 g\u00f6vdesinden ibaret de\u011fil<\/h2>\n<p>\u0130ngilizce metnin \u00fczerinde &#8220;Hakk\u0131m\u0131zda&#8221; ba\u015fl\u0131\u011f\u0131, alt\u0131nda T\u00fcrk\u00e7e d\u00fc\u011fmeler varsa \u00e7eviri hen\u00fcz bitmemi\u015ftir. G\u00f6vde yetmez. WordPress.org&#8217;daki Polylang a\u00e7\u0131klamas\u0131; sayfalar, kategoriler, men\u00fcler ve medya bilgilerinin farkl\u0131 dillerde y\u00f6netilebildi\u011fini belirtir. Bu destek, eklentinin b\u00fct\u00fcn metinleri kendili\u011finden \u00e7evirdi\u011fi anlam\u0131na gelmez.<\/p>\n<p>Varsay\u0131msal staging ortam\u0131ndaki WordPress 6.8.3 ve Polylang 3.7 serisinde <strong>Sayfalar<\/strong> ekran\u0131ndan Hakk\u0131m\u0131zda sayfas\u0131n\u0131 a\u00e7\u0131n. Dilini T\u00fcrk\u00e7e olarak do\u011frulay\u0131n; \u00e7eviriler alan\u0131ndaki \u0130ngilizce ekleme simgesiyle kar\u015f\u0131l\u0131\u011f\u0131n\u0131 olu\u015fturun. Ba\u015fl\u0131\u011f\u0131 &#8220;About&#8221;, URL k\u0131saltmas\u0131n\u0131 <code>about<\/code> yap\u0131p \u0130ngilizce i\u00e7eri\u011fi girin. About sayfas\u0131 zaten varsa kopyas\u0131n\u0131 \u00fcretmeyin; dilinin \u0130ngilizce oldu\u011funu kontrol ederek \u00e7eviriler alan\u0131ndan mevcut sayfay\u0131 se\u00e7in. Benzer ba\u015fl\u0131klar, iki sayfay\u0131 \u00e7eviri e\u015fi yapmaz.<\/p>\n<p>\u0130ngilizce sayfa yay\u0131mland\u0131\u011f\u0131nda beklenen e\u015fle\u015fme <code>https:\/\/example.com\/hakkimizda\/<\/code> ile <code>https:\/\/example.com\/en\/about\/<\/code> adresleridir. T\u00fcrk\u00e7e varsay\u0131lan dil kodu gizli kal\u0131r. Bunlar dok\u00fcmantasyon adresleridir; ger\u00e7ek eri\u015fim beklenmez ve burada denenmi\u015f bir sonu\u00e7 aktar\u0131lmaz. D\u00fczenleme ekranlar\u0131nda kar\u015f\u0131l\u0131kl\u0131 \u00e7eviri ba\u011flant\u0131lar\u0131n\u0131n g\u00f6r\u00fcnd\u00fc\u011f\u00fcn\u00fc do\u011frulay\u0131n.<\/p>\n<h3>G\u00f6vdenin d\u0131\u015f\u0131nda kalan kontrol noktalar\u0131<\/h3>\n<ul>\n<li><strong>Ba\u015fl\u0131k ve URL k\u0131saltmas\u0131:<\/strong> Her ikisini ayr\u0131 inceleyin. \u0130ngilizce sayfada T\u00fcrk\u00e7e ba\u015fl\u0131k ya da kopya olu\u015fturulmas\u0131ndan kaynaklanan say\u0131sal ek kalmamal\u0131d\u0131r.<\/li>\n<li><strong>Kategoriler:<\/strong> Kullan\u0131lan kategorilerin \u0130ngilizce kar\u015f\u0131l\u0131klar\u0131n\u0131 olu\u015fturup e\u015fle\u015ftirin. Kategori ad\u0131 ve k\u0131saltmas\u0131 da \u00e7evrilecek alanlard\u0131r; yaz\u0131n\u0131n \u0130ngilizce kategoriyi kulland\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n.<\/li>\n<li><strong>Men\u00fcler:<\/strong> Klasik temada her dil i\u00e7in men\u00fc haz\u0131rlay\u0131p ilgili dilin tema konumuna atay\u0131n. \u00d6zel ba\u011flant\u0131lar\u0131n etiketlerini ve hedeflerini ayr\u0131ca d\u00fczenleyin.<\/li>\n<li><strong>Ana sayfa:<\/strong> Statik ana sayfan\u0131n \u0130ngilizce kar\u015f\u0131l\u0131\u011f\u0131n\u0131 olu\u015fturup ba\u011flay\u0131n. K\u00f6k adresin T\u00fcrk\u00e7e, <code>\/en\/<\/code> yolunun \u0130ngilizce ana sayfay\u0131 g\u00f6stermesini kontrol edin.<\/li>\n<li><strong>G\u00f6rsel alternatif metinleri:<\/strong> Medya \u00e7evirisi etkinse ilgili dilde d\u00fczenleyin. \u0130\u00e7eri\u011fe \u00f6nceden eklenmi\u015f g\u00f6rsel bloklar\u0131n\u0131n alternatif metinlerini de inceleyin; medya kayd\u0131ndaki de\u011fi\u015fikli\u011fin blo\u011fa yans\u0131d\u0131\u011f\u0131n\u0131 varsaymay\u0131n.<\/li>\n<li><strong>Desteklenen tema dizgileri:<\/strong> Polylang&#8217;\u0131n dizgi \u00e7evirisi ekran\u0131na kaydedilmi\u015f ifadeleri \u00e7evirin. Temaya sabit yaz\u0131lm\u0131\u015f metinler otomatik g\u00f6r\u00fcnmez; tema \u00e7eviri dosyalar\u0131 veya geli\u015ftirici m\u00fcdahalesi gerekebilir.<\/li>\n<\/ul>\n<p>Men\u00fcdeki dil se\u00e7icinin ana sayfaya y\u00f6nlendirme se\u00e7ene\u011fini kapat\u0131n. Beklenen davran\u0131\u015f, Hakk\u0131m\u0131zda \u00fczerindeki \u0130ngilizce se\u00e7iminin About sayfas\u0131na gitmesidir. Bu \u00f6rnekte \u00e7evirisi olmayan i\u00e7erikler i\u00e7in ilgili dili gizleme se\u00e7ene\u011fini etkinle\u015ftirin; ziyaret\u00e7iye mevcut olmayan bir kar\u015f\u0131l\u0131k sunulmas\u0131n. Bu ayar yaln\u0131zca se\u00e7icinin davran\u0131\u015f\u0131n\u0131 belirler, eksik \u00e7eviriyi olu\u015fturmaz.<\/p>\n<p>Makine \u00e7evirisi kullan\u0131rsan\u0131z yay\u0131mlamadan \u00f6nce insan kontrol\u00fcnden ge\u00e7irin. \u00d6zellikle hizmet ko\u015fullar\u0131n\u0131, fiyatland\u0131rma ifadelerini ve d\u00fc\u011fme metinlerini hedef sayfayla birlikte okuyun; &#8220;Ba\u015fvur&#8221; d\u00fc\u011fmesinin yanl\u0131\u015f dildeki forma a\u00e7\u0131lmas\u0131 da d\u00fczeltilmesi gereken bir \u00e7eviri eksikli\u011fidir.<\/p>\n<h2 id=\"hreflang-ve-canonical-ayni-isi-yapmaz\">hreflang ve canonical ayn\u0131 i\u015fi yapmaz<\/h2>\n<p>\u0130ngilizce sayfan\u0131n canonical adresini T\u00fcrk\u00e7eye \u00e7evirmek, dil e\u015fle\u015ftirmesi de\u011fildir. Ama\u00e7 farkl\u0131d\u0131r. <code>hreflang<\/code> dil alternatiflerini, <code>canonical<\/code> ise ayn\u0131 veya \u00e7ok benzer i\u00e7erikler aras\u0131nda tercih edilen URL&#8217;yi bildirir. Google Search Central&#8217;\u0131n canonical belgesine g\u00f6re bu tercih kesin bir talimat de\u011fil, sinyaldir. \u0130ki etiketi birbirinin yerine kullanmak, arama motoruna sayfalar aras\u0131ndaki ili\u015fkiyi yanl\u0131\u015f anlatabilir.<\/p>\n<p>Varsay\u0131msal staging ortam\u0131ndaki <code>https:\/\/example.com\/hakkimizda\/<\/code> ve <code>https:\/\/example.com\/en\/about\/<\/code> \u00e7ifti i\u00e7in her sayfa kendi adresini canonical g\u00f6stermelidir. \u0130ngilizce sayfa T\u00fcrk\u00e7eye canonical vermemelidir; ana i\u00e7eri\u011fin \u00e7evirisi, yaln\u0131zca farkl\u0131 adreste yay\u0131mlanm\u0131\u015f bir kopya de\u011fildir. WordPress \u00e7ok dilli site yap\u0131land\u0131rmas\u0131nda bu iki adres, birbirinin dil alternatifi olarak kal\u0131r.<\/p>\n<p>Google&#8217;\u0131n yerelle\u015ftirilmi\u015f sayfalar belgesi, her s\u00fcr\u00fcm\u00fcn hem kendisini hem di\u011fer dil s\u00fcr\u00fcmlerini belirtmesini ister. T\u00fcrk\u00e7e sayfadaki <code>tr<\/code> kendine referans verir, <code>en<\/code> \u0130ngilizceye ba\u011flan\u0131r; \u0130ngilizce sayfada da ayn\u0131 alternatifler bulunur. Ba\u011flant\u0131lar kar\u015f\u0131l\u0131kl\u0131 de\u011filse i\u015faretlemeler yok say\u0131labilir. Hedefleri protokol ve alan ad\u0131 i\u00e7eren tam URL olarak belirtin.<\/p>\n<p>A\u015fa\u011f\u0131daki HTML, iki sayfan\u0131n <code>head<\/code> alan\u0131nda beklenen etiketleri g\u00f6steren varsay\u0131msal \u00f6rnektir; test edilmi\u015f \u00e7\u0131kt\u0131 veya temaya elle eklenecek kod de\u011fildir. Her sayfada canonical de\u011fi\u015fir, dil alternatifleri ayn\u0131 kal\u0131r:<\/p>\n<pre><code>&lt;!-- https:\/\/example.com\/hakkimizda\/ sayfas\u0131n\u0131n head alan\u0131 --&gt;\n&lt;link rel=\"canonical\" href=\"https:\/\/example.com\/hakkimizda\/\"&gt;\n&lt;link rel=\"alternate\" hreflang=\"tr\" href=\"https:\/\/example.com\/hakkimizda\/\"&gt;\n&lt;link rel=\"alternate\" hreflang=\"en\" href=\"https:\/\/example.com\/en\/about\/\"&gt;\n\n&lt;!-- https:\/\/example.com\/en\/about\/ sayfas\u0131n\u0131n head alan\u0131 --&gt;\n&lt;link rel=\"canonical\" href=\"https:\/\/example.com\/en\/about\/\"&gt;\n&lt;link rel=\"alternate\" hreflang=\"tr\" href=\"https:\/\/example.com\/hakkimizda\/\"&gt;\n&lt;link rel=\"alternate\" hreflang=\"en\" href=\"https:\/\/example.com\/en\/about\/\"&gt;<\/code><\/pre>\n<p>WordPress yerel ayarlar\u0131n\u0131 hreflang kodlar\u0131yla kar\u0131\u015ft\u0131rmay\u0131n: <code>tr_TR<\/code> ve <code>en_US<\/code> de\u011ferlerini do\u011frudan buraya ta\u015f\u0131may\u0131n. Google, ISO 639-1 dil kodlar\u0131n\u0131 ve gerekti\u011finde tireyle eklenen ISO 3166-1 Alpha-2 b\u00f6lge kodlar\u0131n\u0131 kullan\u0131r. \u00dclke hedeflemesi olmayan bu ortamda <code>tr<\/code> ve <code>en<\/code> yeterlidir. T\u00fcrk\u00e7enin URL kodunun gizlenmesi bu kural\u0131 de\u011fi\u015ftirmez.<\/p>\n<p>Polylang&#8217;\u0131n WordPress.org a\u00e7\u0131klamas\u0131 hreflang \u00fcretimini destekledi\u011fini belirtir. SEO eklentisi de kullan\u0131yorsan\u0131z her iki sayfan\u0131n kayna\u011f\u0131nda yinelenen hreflang etiketlerini ve birden fazla canonical bildirimini kontrol edin. \u00d6zellikle \u0130ngilizce kaynaktaki canonical hedefini okuyun; otomatik \u00fcretim, do\u011fru yap\u0131land\u0131rma garantisi de\u011fildir. \u00c7ak\u0131\u015fma varsa temaya yeni etiket eklemek yerine \u00fcretim sorumlulu\u011funu ilgili bile\u015fenlerin ayarlar\u0131ndan d\u00fczenleyin.<\/p>\n<p><code>x-default<\/code> iste\u011fe ba\u011fl\u0131d\u0131r; Google bunu listelenen dillerle e\u015fle\u015fmeyen kullan\u0131c\u0131lar i\u00e7in yedek URL belirtmekte kullan\u0131r. Bu \u00f6rnekte gerekli de\u011fildir. Google, HTML ve XML site haritas\u0131n\u0131 alternatif hreflang y\u00f6ntemleri olarak kabul eder. Site haritas\u0131nda dil alternatiflerinin bulunaca\u011f\u0131n\u0131 varsaymay\u0131n; kullan\u0131lan entegrasyona g\u00f6re do\u011frulay\u0131n. \u0130ki y\u00f6ntem birlikte kullan\u0131l\u0131yorsa ayn\u0131 sayfa e\u015fle\u015fmelerini bildirdiklerini kontrol edin.<\/p>\n<div class=\"aiw-callout aiw-callout-warn\">\n<p class=\"aiw-callout-label\">Dikkat<\/p>\n<p>\u0130ngilizce sayfan\u0131n canonical adresini T\u00fcrk\u00e7e sayfaya y\u00f6neltmek, dil alternatifini tan\u0131mlamakla ayn\u0131 \u015fey de\u011fildir. Bu senaryoda iki sayfa da kendi canonical adresini kullanmal\u0131 ve hreflang k\u00fcmesinde hem kendisini hem kar\u015f\u0131 dildeki e\u015fini g\u00f6stermelidir. x-default iste\u011fe ba\u011fl\u0131d\u0131r.<\/p>\n<\/div>\n<h2 id=\"yayimlamadan-once-iki-dili-de-sinayin\">Yay\u0131mlamadan \u00f6nce iki dili de s\u0131nay\u0131n<\/h2>\n<p>T\u00fcrk\u00e7e sayfa a\u00e7\u0131l\u0131rken \u0130ngilizce kar\u015f\u0131l\u0131\u011f\u0131 yanl\u0131\u015f adrese y\u00f6nlenebilir. G\u00f6r\u00fcn\u00fc\u015f yetmez. WordPress \u00e7ok dilli site kontrol\u00fcnde HTTP yan\u0131t\u0131n\u0131, HTML kayna\u011f\u0131n\u0131 ve taray\u0131c\u0131daki davran\u0131\u015f\u0131 birlikte de\u011ferlendirin; denetimi y\u00f6netici oturumu kapal\u0131yken de tekrarlay\u0131n. \u00d6zellikle dil de\u011fi\u015ftirirken adres \u00e7ubu\u011funu izleyin: do\u011fru g\u00f6r\u00fcnen ba\u015fl\u0131k, do\u011fru \u00e7eviri e\u015fle\u015fmesini tek ba\u015f\u0131na kan\u0131tlamaz.<\/p>\n<p>A\u015fa\u011f\u0131daki \u00f6rnek, varsay\u0131msal staging ortam\u0131nda <code>deploy<\/code> hesab\u0131 i\u00e7indir; \u00e7al\u0131\u015ft\u0131r\u0131lm\u0131\u015f bir test de\u011fildir. <code>192.0.2.10<\/code> dok\u00fcmantasyon adresine ger\u00e7ek eri\u015fim beklenmez. Ger\u00e7ek kurulumda test ba\u011flant\u0131s\u0131na staging korumas\u0131ndan izin verilmelidir. <code>--resolve<\/code>, DNS&#8217;i de\u011fi\u015ftirmeden belirtilen IP&#8217;ye do\u011fru HTTPS sunucu ad\u0131yla ba\u011flan\u0131r; sertifika do\u011frulamas\u0131n\u0131 kapatmaz.<\/p>\n<pre><code>(\n  kontrol_dizini=$(mktemp -d) || exit 1\n  trap 'rm -rf -- \"$kontrol_dizini\"' EXIT\n\n  for yol in \/hakkimizda\/ \/en\/about\/; do\n    printf '\\nAdres: https:\/\/example.com%s\\n' \"$yol\"\n    curl --silent --show-error --location --max-redirs 5 \\\n      --connect-timeout 10 --max-time 30 \\\n      --resolve example.com:443:192.0.2.10 \\\n      --dump-header \"$kontrol_dizini\/headers\" \\\n      --output \"$kontrol_dizini\/page.html\" \\\n      --write-out 'HTTP=%{http_code} yonlendirme=%{num_redirects} hedef=%{url_effective}\\n' \\\n      \"https:\/\/example.com$yol\" || continue\n\n    grep -Ei '^(HTTP\/|Location:|X-Robots-Tag:)' \"$kontrol_dizini\/headers\"\n    tr '\\n' ' ' &lt; \"$kontrol_dizini\/page.html\" \\\n      | grep -oEi '&lt;(link|meta)[^&gt;]*&gt;' \\\n      | grep -Ei 'canonical|alternate|robots'\n  done\n)\n\nwp --path=\/var\/www\/example.com\/public option get blog_public<\/code><\/pre>\n<p><strong>Varsay\u0131msal beklenti:<\/strong> \u0130ki HTTPS adresinde <code>HTTP=200<\/code>, <code>yonlendirme=0<\/code> ve istenen URL ile ayn\u0131 <code>hedef<\/code> g\u00f6r\u00fclmesidir. <code>--location<\/code> y\u00f6nlendirmeleri izler; ba\u015fl\u0131k d\u00f6k\u00fcm\u00fc ara durumlar\u0131 ve <code>Location<\/code> de\u011ferlerini g\u00f6sterir. Beklenmeyen <a href=\"https:\/\/www.vps.tc\/blog\/tr\/301-yonlendirme-nedir-seo-kullanim-rehberi\/\">301 y\u00f6nlendirme<\/a> zincirlerini inceleyin. <code>401<\/code> veya <code>403<\/code> al\u0131rsan\u0131z \u00f6nce eri\u015fim korumas\u0131n\u0131 de\u011ferlendirin; bunlar tek ba\u015f\u0131na \u00e7eviri hatas\u0131 de\u011fildir.<\/p>\n<p>Google Search Central&#8217;\u0131n canonical belgesine g\u00f6re ana i\u00e7eri\u011fi \u00e7evrilmi\u015f sayfalar s\u0131rf \u00e7eviri olduklar\u0131 i\u00e7in kopya say\u0131lmaz. Bu e\u015fle\u015fmede her canonical kendi sayfas\u0131n\u0131 g\u00f6stermelidir. Google&#8217;\u0131n yerelle\u015ftirilmi\u015f sayfalar belgesi, her dil s\u00fcr\u00fcm\u00fcn\u00fcn kendisini ve di\u011fer s\u00fcr\u00fcmleri kar\u015f\u0131l\u0131kl\u0131 listelemesini ister: iki sayfada da <code>tr<\/code> i\u00e7in <code>https:\/\/example.com\/hakkimizda\/<\/code>, <code>en<\/code> i\u00e7in <code>https:\/\/example.com\/en\/about\/<\/code> beklenir. Etiket s\u00fczmesi yaln\u0131zca \u00f6n kontrold\u00fcr; eksik g\u00f6r\u00fcnen \u00e7\u0131kt\u0131y\u0131 sayfa kayna\u011f\u0131ndan do\u011frulay\u0131n.<\/p>\n<p>Taray\u0131c\u0131da dil se\u00e7icinin ana sayfaya de\u011fil e\u015fle\u015fen \u00e7eviriye g\u00f6t\u00fcrd\u00fc\u011f\u00fcn\u00fc s\u0131nay\u0131n. Mobil men\u00fcy\u00fc iki dilde a\u00e7\u0131n; aramada ilgili dilde bilinen bir i\u00e7eri\u011fi bulun. Bo\u015f ve hatal\u0131 form g\u00f6nderimlerinin uyar\u0131lar\u0131n\u0131, ba\u015far\u0131l\u0131 g\u00f6nderimin onay\u0131n\u0131 okuyun. Var olmayan k\u00f6k ve <code>\/en\/<\/code> adreslerinde uygun dilde hata metniyle ger\u00e7ek <code>404<\/code> yan\u0131t\u0131 bekleyin.<\/p>\n<p>Ayr\u0131 staging ortam\u0131n\u0131n korumas\u0131n\u0131 b\u0131rak\u0131n; yay\u0131na al\u0131nan sitedeki eri\u015fim k\u0131s\u0131t\u0131n\u0131 ve <code>noindex<\/code> ayarlar\u0131n\u0131 kald\u0131r\u0131n. Oturumsuz iste\u011fi tekrarlay\u0131n. Yay\u0131nda <code>blog_public<\/code> i\u00e7in <code>1<\/code> beklenir; ayr\u0131ca HTML robots etiketinde ve <code>X-Robots-Tag<\/code> ba\u015fl\u0131\u011f\u0131nda <code>noindex<\/code> bulunmad\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n. Ayar\u0131n do\u011fru g\u00f6r\u00fcnmesi, d\u0131\u015far\u0131dan eri\u015fimin de a\u00e7\u0131k oldu\u011funu g\u00f6stermez.<\/p>\n<p>Ba\u015flang\u0131\u00e7ta tam sayfa \u00f6nbelle\u011fi yoktur. Sonradan eklerseniz iki URL&#8217;yi d\u00f6n\u00fc\u015f\u00fcml\u00fc ve tekrarl\u0131 a\u00e7\u0131n; \u00f6nbellek \u0131s\u0131nd\u0131\u011f\u0131nda i\u00e7erik dilinin, canonical adresinin ve dil se\u00e7ici hedeflerinin birbirine kar\u0131\u015fmad\u0131\u011f\u0131n\u0131 yeniden s\u0131nay\u0131n.<\/p>\n<div class=\"aiw-callout aiw-callout-tip\">\n<p class=\"aiw-callout-label\">\u0130pucu<\/p>\n<p>HTTP 200 yan\u0131t\u0131 tek ba\u015f\u0131na do\u011fru dilin sunuldu\u011funu kan\u0131tlamaz. Dil se\u00e7iciyi, mobil men\u00fcy\u00fc ve form do\u011frulama mesajlar\u0131n\u0131 taray\u0131c\u0131da s\u0131nay\u0131n. Daha sonra tam sayfa \u00f6nbelle\u011fi eklerseniz T\u00fcrk\u00e7e ve \u0130ngilizce URL&#039;lerin birbirinin i\u00e7eri\u011fini sunmad\u0131\u011f\u0131n\u0131 yeniden kontrol edin.<\/p>\n<\/div>\n<h2 id=\"yeni-icerik-geldiginde-dil-eslesmeleri-nasil-korunur\">Yeni i\u00e7erik geldi\u011finde dil e\u015fle\u015fmeleri nas\u0131l korunur?<\/h2>\n<p>T\u00fcrk\u00e7e sayfadaki tek bir fiyat, tarih veya hizmet ko\u015fulu de\u011fi\u015fikli\u011fi, \u0130ngilizce kar\u015f\u0131l\u0131\u011f\u0131 h\u00e2l\u00e2 yay\u0131ndayken onu eski bilgiye d\u00f6n\u00fc\u015ft\u00fcrebilir. Ba\u011flant\u0131 yetmez. Varsay\u0131msal staging ortam\u0131nda her i\u00e7erik \u00e7ifti i\u00e7in kaynak de\u011fi\u015fiklik tarihini, \u00e7eviri sorumlusunu ve son dil onay\u0131n\u0131 kaydedin. T\u00fcrk\u00e7e metin de\u011fi\u015fti\u011finde \u0130ngilizce kar\u015f\u0131l\u0131\u011f\u0131n\u0131 editoryal takip listenizde yeniden incelemeye al\u0131n; Polylang&#8217;\u0131n bu onay s\u00fcrecini kendili\u011finden y\u00f6netti\u011fini varsaymay\u0131n.<\/p>\n<p>Polylang&#8217;\u0131n WordPress.org a\u00e7\u0131klamas\u0131, i\u00e7eriklere dil atanmas\u0131n\u0131 ve \u00e7evirilerin birbirine ba\u011flanmas\u0131n\u0131 destekledi\u011fini belirtir. Bu ba\u011flant\u0131y\u0131 editoryal takiple tamamlay\u0131n: \u00e7evirisi bulunmayan, kaynak de\u011fi\u015fikli\u011fi nedeniyle inceleme bekleyen ve yay\u0131na haz\u0131r i\u00e7erikleri ayr\u0131 durumlarda izleyin. Haftal\u0131k kontrolde yeni yaz\u0131lar\u0131, sayfalar\u0131 ve \u00e7evrilmesi gereken taksonomi terimlerini listeyle kar\u015f\u0131la\u015ft\u0131r\u0131n. Her kay\u0131tta iki i\u00e7erik kimli\u011fi ile hedef URL&#8217;leri tutun; benzer ba\u015fl\u0131klar yanl\u0131\u015f e\u015fle\u015fmeleri gizleyebilir. Ortak bir takip tablosu yeterlidir, ayr\u0131ca i\u015f ak\u0131\u015f\u0131 eklentisi kurman\u0131z \u015fart de\u011fildir.<\/p>\n<p>Her dil i\u00e7in ayr\u0131 onay isteyin. T\u00fcrk\u00e7e metnin onaylanmas\u0131 \u0130ngilizce metnin haz\u0131r oldu\u011fu anlam\u0131na gelmez; ba\u015fl\u0131k, g\u00f6vde, men\u00fc ba\u011flant\u0131lar\u0131 ve ilgili dilde g\u00f6r\u00fcnen di\u011fer metinler ayr\u0131ca incelenmelidir. Kaynak de\u011fi\u015fikli\u011fi anlam\u0131 etkiliyorsa \u00e7eviri sorumlusu fark\u0131 de\u011ferlendirmeden kayd\u0131 kapatmay\u0131n. Eksik \u0130ngilizce kar\u015f\u0131l\u0131\u011f\u0131 T\u00fcrk\u00e7e sayfayla doldurup tamamlanm\u0131\u015f \u00e7eviri gibi g\u00f6stermeyin. Onay kayd\u0131na incelenen kaynak revizyonunu ekleyin; \u00f6nceki onay\u0131 de\u011fi\u015fmi\u015f metne otomatik ta\u015f\u0131may\u0131n.<\/p>\n<p>WordPress, klasik tema ve Polylang g\u00fcncellemelerini ayn\u0131 staging ortam\u0131nda, ayr\u0131 ad\u0131mlarla de\u011ferlendirin. Referans taban WordPress 6.8.3 ve Polylang 3.7 serisidir; bunlar en g\u00fcncel s\u00fcr\u00fcm iddias\u0131 ta\u015f\u0131maz. Uygulama \u00f6ncesinde g\u00fcvenlik g\u00fcncellemelerini ve uyumlulu\u011fu resmi kaynaklardan do\u011frulay\u0131n, se\u00e7ilen yama s\u00fcr\u00fcmlerini b\u00fct\u00fcn \u00f6rneklerde ayn\u0131 tutun. Her g\u00fcncellemeden sonra d\u00fczenleme, \u00e7eviri ba\u011flant\u0131s\u0131 ve dil de\u011fi\u015ftirici ak\u0131\u015flar\u0131n\u0131 yeniden kontrol edin.<\/p>\n<p>WordPress&#8217;in yedekleme dok\u00fcman\u0131, tam geri d\u00f6n\u00fc\u015f i\u00e7in veritaban\u0131yla dosyalar\u0131n birlikte gerekli oldu\u011funu a\u00e7\u0131klar. De\u011fi\u015fiklik \u00f6ncesinde tutarl\u0131 bir yedek k\u00fcmesi olu\u015fturup <code>\/srv\/backups\/example.com<\/code> alt\u0131nda saklay\u0131n. \u0130kisini ayn\u0131 yedekleme noktas\u0131na d\u00f6nd\u00fcrerek i\u00e7eriklerin ve dil e\u015fle\u015fmelerinin korundu\u011funu do\u011frulamadan g\u00fcncellemeyi onaylamay\u0131n.<\/p>\n<p>Yay\u0131n kap\u0131s\u0131n\u0131 somutla\u015ft\u0131r\u0131n: <code>https:\/\/example.com\/hakkimizda\/<\/code> ile <code>https:\/\/example.com\/en\/about\/<\/code> e\u015fle\u015fmeli, dil de\u011fi\u015ftirici do\u011fru kar\u015f\u0131l\u0131\u011fa gitmeli ve hedefler beklenen i\u00e7eri\u011fi sunmal\u0131d\u0131r. Google Search Central&#8217;\u0131n yerelle\u015ftirilmi\u015f sayfa y\u00f6nergesi, <code>hreflang<\/code> ba\u011flant\u0131lar\u0131n\u0131n sayfan\u0131n kendisini ve di\u011fer dil s\u00fcr\u00fcmlerini kapsamas\u0131n\u0131, kar\u015f\u0131l\u0131kl\u0131 olmas\u0131n\u0131 ister. Yeni i\u00e7eri\u011fi, ilgili dilin onay\u0131 al\u0131nmadan ve dil e\u015fle\u015fmesi ile URL kontrolleri tamamlanmadan yay\u0131mlamay\u0131n.<\/p>\n<h2 id=\"yayimlamadan-once-iki-dili-de-sinayin-2\">Yay\u0131mlamadan \u00f6nce iki dili de s\u0131nay\u0131n<\/h2>\n<ul class=\"aiw-checklist\">\n<li>Veritaban\u0131 ve dosya yede\u011fini ayn\u0131 geri d\u00f6n\u00fc\u015f noktas\u0131ndan al\u0131n; ayr\u0131 ortamda birlikte geri y\u00fckleyin.<\/li>\n<li>WordPress, PHP, tema ve dil eklentisinin g\u00fcvenlik g\u00fcncellemelerini ve s\u00fcr\u00fcm uyumlulu\u011funu resmi kaynaklardan do\u011frulay\u0131n.<\/li>\n<li>Mevcut i\u00e7eriklere T\u00fcrk\u00e7e atay\u0131n; T\u00fcrk\u00e7e URL&#039;lerin korundu\u011funu ve \u0130ngilizce sayfalar\u0131n \/en\/ alt\u0131nda a\u00e7\u0131ld\u0131\u011f\u0131n\u0131 denetleyin.<\/li>\n<li>\u00c7eviri \u00e7iftlerini ba\u011flay\u0131n; men\u00fcleri, ana sayfay\u0131, g\u00f6rsel alternatif metinlerini ve form mesajlar\u0131n\u0131 iki dilde kontrol edin.<\/li>\n<li>Her dil sayfas\u0131n\u0131n kendine canonical verdi\u011fini, hreflang ba\u011flant\u0131lar\u0131n\u0131n kar\u015f\u0131l\u0131kl\u0131 oldu\u011funu ve \u00e7eli\u015fen etiket bulunmad\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n.<\/li>\n<li>HTTP durumlar\u0131n\u0131, y\u00f6nlendirme zincirlerini, dil se\u00e7iciyi, mobil men\u00fcy\u00fc, aramay\u0131 ve bulunamayan sayfalar\u0131 s\u0131nay\u0131n.<\/li>\n<li>Yay\u0131n ortam\u0131ndaki eri\u015fim k\u0131s\u0131tlar\u0131n\u0131 ve noindex ayarlar\u0131n\u0131 kontrol edin; sonraki i\u00e7eriklerde dil e\u015fle\u015fmesi ve URL denetimini yay\u0131n onay\u0131na ba\u011flay\u0131n.<\/li>\n<\/ul>\n<div class=\"aiw-cta\">\n<p>\u00d6nce staging ortam\u0131nda tek bir T\u00fcrk\u00e7e-\u0130ngilizce sayfa \u00e7iftini haz\u0131rlay\u0131n. Dil se\u00e7ici, URL, hreflang ve canonical kontrolleri ge\u00e7meden ayn\u0131 d\u00fczeni di\u011fer i\u00e7eriklere ta\u015f\u0131may\u0131n.<\/p>\n<p class=\"aiw-cta-action\"><a href=\"https:\/\/www.vps.tc\/tr\/vps\">VPS paketlerini inceleyin<\/a><\/p>\n<\/div>\n<h2 id=\"sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/h2>\n<div class=\"aiw-faq\">\n<details class=\"aiw-faq-item\" open>\n<summary>WordPress \u00e7ok dilli site i\u00e7in hangi eklenti se\u00e7ilmeli?<\/summary>\n<p>Se\u00e7im, \u00e7eviriyi kimin haz\u0131rlayaca\u011f\u0131na ve edit\u00f6rlerin nas\u0131l \u00e7al\u0131\u015faca\u011f\u0131na ba\u011fl\u0131d\u0131r. Polylang, iki dilde ayr\u0131 i\u00e7erikler haz\u0131rlay\u0131p bunlar\u0131 e\u015fle\u015ftirmek isteyen ekipler i\u00e7in de\u011ferlendirilebilir. WPML ve TranslatePress&#039;i de \u00e7eviri i\u015f ak\u0131\u015f\u0131, tema uyumlulu\u011fu, lisans ve d\u0131\u015f hizmet ba\u011f\u0131ml\u0131l\u0131klar\u0131 a\u00e7\u0131s\u0131ndan kar\u015f\u0131la\u015ft\u0131r\u0131n. \u00dccretsiz ve \u00fccretli \u00f6zellik s\u0131n\u0131rlar\u0131n\u0131 kurulumdan \u00f6nce do\u011frulay\u0131n; birden fazla \u00e7ok dillilik eklentisini ayn\u0131 anda etkinle\u015ftirmeyin.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>\u0130ngilizce sayfalar i\u00e7in \/en\/ mi, alt alan ad\u0131 m\u0131 kullan\u0131lmal\u0131?<\/summary>\n<p>Tek WordPress kurulumuyla y\u00f6netilen T\u00fcrk\u00e7e ve \u0130ngilizce i\u00e7erikler i\u00e7in \/en\/ alt dizini, ayr\u0131 DNS ve sertifika y\u00f6netimi gerektirmeden ilerlemeyi sa\u011flar. Alt alan ad\u0131 veya ayr\u0131 alan ad\u0131, farkl\u0131 i\u015fletim ihtiya\u00e7lar\u0131nda tercih edilebilir; tek ba\u015f\u0131na daha iyi s\u0131ralama sa\u011flamaz. Bu varsay\u0131msal senaryoda T\u00fcrk\u00e7e k\u00f6kte kal\u0131r ve mevcut T\u00fcrk\u00e7e adresler korunur.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>Polylang b\u00fct\u00fcn siteyi otomatik olarak \u00e7evirir mi?<\/summary>\n<p>Dil eklentisini etkinle\u015ftirmek, b\u00fct\u00fcn i\u00e7eriklerin ve aray\u00fcz metinlerinin kendili\u011finden \u00e7evrildi\u011fi anlam\u0131na gelmez. Bu senaryoda T\u00fcrk\u00e7e ve \u0130ngilizce i\u00e7erikler ayr\u0131 haz\u0131rlan\u0131p \u00e7eviri e\u015fi olarak ba\u011flan\u0131r. Men\u00fc, form mesaj\u0131, g\u00f6rsel alternatif metni ve tema dizgileri ayr\u0131ca incelenir. Otomatik \u00e7eviri kullan\u0131lacaksa ilgili s\u00fcr\u00fcm\u00fcn, lisans\u0131n ve hizmet ba\u011flant\u0131s\u0131n\u0131n bunu destekledi\u011fi do\u011frulanmal\u0131; metinler insan kontrol\u00fcnden ge\u00e7irilmelidir.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>\u00c7ok dilli WordPress sitesinde hreflang ve canonical nas\u0131l olmal\u0131?<\/summary>\n<p>T\u00fcrk\u00e7e ve \u0130ngilizce \u00e7eviri \u00e7iftinde her sayfa kendi URL&#039;sini canonical olarak g\u00f6stermelidir. hreflang k\u00fcmesi ise tr ve en de\u011ferleriyle iki s\u00fcr\u00fcm\u00fc de i\u00e7ermeli; ba\u011flant\u0131lar kar\u015f\u0131l\u0131kl\u0131 ve kendine referansl\u0131 olmal\u0131d\u0131r. WordPress yerel ayar adlar\u0131n\u0131 do\u011frudan hreflang de\u011ferine kopyalamay\u0131n. Dil eklentisi ile SEO eklentisinin \u00fcretti\u011fi HTML&#039;yi birlikte inceleyin; x-default kullan\u0131m\u0131 zorunlu de\u011fildir.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>\u00c7evirisi olmayan bir sayfada dil se\u00e7ici nereye gitmeli?<\/summary>\n<p>Dil se\u00e7icinin davran\u0131\u015f\u0131 a\u00e7\u0131k\u00e7a belirlenmeli ve kullan\u0131lan eklentiyle s\u0131nanmal\u0131d\u0131r. \u00c7evirisi bulunmayan bir sayfay\u0131 varm\u0131\u015f gibi e\u015fle\u015ftirmeyin. Eksik dil se\u00e7ene\u011fini gizlemek veya kullan\u0131c\u0131ya durumu a\u00e7\u0131klayan bir gezinme yolu sunmak tercih edilebilir. Kar\u015f\u0131 dilin ana sayfas\u0131na ge\u00e7i\u015f sa\u011flan\u0131yorsa bunun mevcut sayfan\u0131n \u00e7evirisi olmad\u0131\u011f\u0131 anla\u015f\u0131lmal\u0131d\u0131r. Yay\u0131mlanan \u00e7eviri \u00e7iftlerinde se\u00e7ici do\u011frudan ilgili e\u015f sayfaya gitmelidir.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>\u0130kinci dil eklemek mevcut T\u00fcrk\u00e7e URL&#039;leri de\u011fi\u015ftirir mi?<\/summary>\n<p>Do\u011fru dil ve kal\u0131c\u0131 ba\u011flant\u0131 ayarlar\u0131yla mevcut T\u00fcrk\u00e7e URL&#039;ler korunabilir. \u00d6nce i\u00e7eriklere T\u00fcrk\u00e7e atay\u0131n, T\u00fcrk\u00e7eyi varsay\u0131lan dil yap\u0131n ve varsay\u0131lan dil kodunu URL&#039;den gizleyin. Bu i\u015flemleri staging ortam\u0131nda deneyip eski adreslerin ayn\u0131 i\u00e7eri\u011fi a\u00e7t\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n. Bilin\u00e7li olarak de\u011fi\u015ftirilen adresler varsa ilgili yeni sayfaya kal\u0131c\u0131 y\u00f6nlendirme planlay\u0131n; b\u00fct\u00fcn eski adresleri ana sayfaya g\u00f6ndermeyin.<\/p>\n<\/details>\n<\/div>\n<h2 id=\"kaynaklar\">Kaynaklar<\/h2>\n<ul class=\"aiw-sources\">\n<li><a href=\"https:\/\/wordpress.org\/plugins\/polylang\/\" target=\"_blank\" rel=\"noopener\">WordPress.org &#8211; Polylang \u00f6zellikleri ve kurulum a\u00e7\u0131klamalar\u0131<\/a> \u2014 wordpress.org<\/li>\n<li><a href=\"https:\/\/wordpress.org\/documentation\/article\/wordpress-backups\/\" target=\"_blank\" rel=\"noopener\">WordPress Dok\u00fcmantasyonu &#8211; Veritaban\u0131 ve dosya yedekleme<\/a> \u2014 wordpress.org<\/li>\n<li><a href=\"https:\/\/developers.google.com\/search\/docs\/specialty\/international\/localized-versions\" target=\"_blank\" rel=\"noopener\">Google Search Central &#8211; Yerelle\u015ftirilmi\u015f sayfalar ve hreflang<\/a> \u2014 developers.google.com<\/li>\n<li><a href=\"https:\/\/developers.google.com\/search\/docs\/crawling-indexing\/consolidate-duplicate-urls\" target=\"_blank\" rel=\"noopener\">Google Search Central &#8211; Canonical URL belirleme<\/a> \u2014 developers.google.com<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>T\u00fcrk\u00e7e adresleri koruyarak \u0130ngilizce i\u00e7eri\u011fi \/en\/ alt\u0131nda yay\u0131mlay\u0131n. Eklenti se\u00e7imini, \u00e7eviri e\u015fle\u015fmelerini ve arama motorlar\u0131n\u0131n g\u00f6rece\u011fi dil i\u015faretlerini ayn\u0131 yay\u0131n kontrol\u00fcne ba\u011flay\u0131n.<\/p>\n","protected":false},"author":2,"featured_media":1076,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[666],"tags":[],"class_list":["post-1078","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cms"],"lang":"tr","translations":{"tr":1078,"en":1079},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/1078","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/comments?post=1078"}],"version-history":[{"count":1,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/1078\/revisions"}],"predecessor-version":[{"id":1080,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/1078\/revisions\/1080"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media\/1076"}],"wp:attachment":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media?parent=1078"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/categories?post=1078"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/tags?post=1078"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}