Çoklu Dil ve Çeviri İzolasyonu
CopyPatch, diller arasında tam veri izolasyonu sağlar. Her dil kodu (örn. tr, en, de, es) veritabanında kendi bağımsız yayın anlık görüntüsünü, taslak revizyonunu ve düzenleme geçmişini barındırır.
Dil İzolasyonu Nasıl Çalışır?
- Sıfır Çapraz Etkileşim:
trdilinde yapılan ve yayınlanan bir düzenleme,en,deveya başka herhangi bir dildeki metinleri asla etkilemez. - Bağımsız Revizyon Sayaçları: Revizyon sayaçları her dil için ayrı tutulur. Türkçe ve İngilizce dillerinde çalışan iki ayrı editör birbirlerinin çalışmalarında asla revizyon çakışması (conflict) yaşamaz.
- Yedek (Fallback) Metin Desteği: Bir dil için veritabanında henüz yayınlanmış bir metin kaydı yoksa, CopyPatch bileşenin JSX içinde sağladığı varsayılan yedek metni güvenle render eder.
Next.js App Router Yönlendirme Entegrasyonu
Rota parametrenizden gelen aktif dil değerini readPublishedSnapshot() ve NextCopyPatchProvider bileşenine aktarın:
app/[locale]/layout.tsx
// app/[locale]/layout.tsx
import { NextCopyPatchProvider } from '@copypatch/next';
import { readPublishedSnapshot } from '@copypatch/next/server';
import { copypatch } from '@/lib/copypatch';
export default async function LocaleLayout({
children,
params,
}: {
children: React.ReactNode;
params: Promise<{ locale: string }>;
}) {
const { locale } = await params;
const snapshot = await readPublishedSnapshot(copypatch, locale);
return (
<html lang={locale}>
<body>
<NextCopyPatchProvider locale={locale} initialSnapshot={snapshot}>
{children}
</NextCopyPatchProvider>
</body>
</html>
);
} Bileşen Seviyesinde Çoklu Dil Desteği
JSX gövdesinde veya kanca yedek parametrelerinde dile uygun varsayılan metinleri sağlayabilirsiniz:
FiyatlandirmaBasligi.tsx
import { EditableText, useCopyPatch } from '@copypatch/react';
export function FiyatlandirmaBasligi({ locale }: { locale: string }) {
// Türkçe varsayılan: "Şeffaf Fiyatlandırma" / İngilizce varsayılan: "Transparent Pricing"
const defaultTitle = locale === 'tr' ? 'Şeffaf Fiyatlandırma' : 'Transparent Pricing';
const ctaLabel = useCopyPatch('pricing.cta', locale === 'tr' ? 'Hemen Başla' : 'Start Now');
return (
<div className="pricing-header">
<EditableText contentKey="pricing.title" as="h2">
{defaultTitle}
</EditableText>
<button type="button">{ctaLabel}</button>
</div>
);
} Dil Formatı ve Doğrulama Kuralları
CopyPatch, depolama işlemlerinden önce dil kodlarını standart BCP 47 ve alfa-sayısal kurallara göre sıkı bir doğrulamadan geçirir:
| Geçerli Format Örnekleri | Açıklama |
|---|---|
tr, en, de, ja | İki harfli standart ISO 639-1 dil kodları. |
tr-TR, en-US, pt-BR | Dil ve bölgesel ülke alt etiketleri. |
tr_TR, en_US | POSIX ve sistem formatındaki alt çizgili etiketler. |
Kapsam Notu: CopyPatch bir metin kalıcılık ve sayfa içi düzenleme aracıdır; otomatik makine çevirisi veya URL yönlendirme motoru değildir. Uygulamanızın URL yapısı ve i18n rotalama mimarisi tamamen sizin kontrolünüzdedir.