Read Frog

İstem değişkenleri

Bir Read Frog isteminin kullanabileceği her değişken ve her birinin yerine geçen gerçek değer.

Bir değişken {{name}} biçiminde yazılır. Bir istek gönderilmeden hemen önce Read Frog bilinen her değişkeni bir metinle değiştirir. Başka hiçbir şeye dokunulmaz: {{url}} gibi bilinmeyen bir ad, istemde {{url}} karakterleri olarak kalır.

Aşağıdaki örneklerin hepsi tek bir sayfadan geliyor — https://devblog.example.com/posts/timestamps adresindeki, Basitleştirilmiş Çinceye çevrilen İngilizce bir yazıdan.

Hangi değişken nerede var

DeğişkenSayfa istemleriAltyazı istemleri
{{targetLanguage}}VarVar
{{input}}VarVar
{{webTitle}}VarVar
{{webDescription}}VarVar
{{webContent}}Var
{{webSummary}}Var
{{videoSummary}}Var

{{videoSummary}} kullanan bir sayfa istemi ya da {{webContent}} kullanan bir altyazı istemi, metni olduğu gibi tutar. Her düzenleyici alanının altındaki değişken düğmeleri yalnızca o listenin doldurabileceklerini sunar.

{{targetLanguage}}

Çevirdiğiniz dilin İngilizce adı — bir kod değil ve arayüz dilinize çevrilmiş hâli de değil.

Simplified Mandarin Chinese

Başka örnekler: English, Traditional Mandarin Chinese, Japanese, Spanish. Yani Translate to {{targetLanguage}}: diye yazılmış bir istem, Translate to Simplified Mandarin Chinese: olarak ulaşır.

{{input}}

Çevrilecek metin. Bir istemin vazgeçemeyeceği tek değişken budur.

Bir seferde bir paragraf — baştaki ve sondaki boşluklar kaldırılmış, görünmez karakterler ayıklanmış:

Every timestamp you store without a zone is a bug waiting for a plane ticket.

Bir seferde birkaç paragraf, ki bir LLM sağlayıcısında toplu çeviri açıkken olan budur. Paragraflar, iki yanında birer boş satır bulunan ve yalnızca %% içeren bir satırla birleştirilir:

Every timestamp you store without a zone is a bug waiting for a plane ticket.

%%

The fix is boring: store UTC, render local, and never let the two meet in a database column.

%%

Ordering by a naive timestamp works until the clocks change, and then it works wrongly.

Modelin aynı sayıda paragrafı aynı sırada, aynı biçimde ayrılmış olarak döndürmesi beklenir. Read Frog yanıtı bu %% satırlarından yeniden ayırır. İstemi ayırıcıyı değiştirecek biçimde yeniden yazarsanız ya da paragrafların numaralanmasını veya birleştirilmesini isterseniz, ayırma başarısız olur; tüm küme önce yeniden denenir, sonra paragraf paragraf yeniden gönderilir.

HTML ile, yani paragraf satır içi işaretleme içerdiğinde. Korunması gereken öznitelikler ayıklanır ve öğe data-rf-attr ile işaretlenir; böylece model bir URL yerine bir işaret görür:

The fix is <a data-rf-attr="0">boring</a>: store <code data-rf-attr="1">UTC</code>, render local.

Bir formül ya da satır içi simge ile, ki bunlar numaralı bir yer tutucuyla değiştirilir ve sonradan çevirinin içine geri klonlanır:

Converting is just {{0}}, which is why nobody gets it wrong twice.

Bir istem yazarken bu iki biçimi genellikle görmezsiniz, ama bir istekte belirip duran ek kural bloklarını açıklarlar: Read Frog data-rf-attr ile ve numaralı yer tutucularla ilgili yönergeleri yalnızca gönderilen metin gerçekten böyle bir şey içerdiğinde ekler.

{{webTitle}}

Sayfanın <title> etiketi, tam olarak tarayıcı sekmesinde göründüğü gibi.

Why your timestamps are eight hours off — devblog

Bir altyazı isteminde bunun yerine videonun başlığı gelir.

{{webDescription}}

Sayfanın kendi açıklaması; <meta name="description">, <meta property="og:description"> ve <meta name="twitter:description"> etiketlerinden içeriği olan ilki alınır.

A short tour of the three places a naive timestamp can go wrong, and the one rule that prevents all three.

Bir altyazı isteminde bu, videonun açıklamasıdır.

{{webContent}}

Sayfanın gövdesi, Markdown olarak çıkarılıp ilk 2000 karaktere kırpılmış hâli. Gezinti, kenar çubukları ve sayfa altları atılır. Hiçbir yerleşik istem onu kullanmaz — bir başlıktan fazlasına ihtiyaç duyan istemler için oradadır.

# Why your timestamps are eight hours off

Every timestamp you store without a zone is a bug waiting for a plane ticket.
It works on your laptop, it works in CI, and it fails the first time somebody
in another country opens the report.

## Three places it goes wrong

1. **At the boundary.** A form posts `2026-03-14 09:00` and the server decides
   what that means.
2. **In the column.** `timestamp without time zone` is not a moment in time; it
   is a picture of a wall clock.
3. **On the way out.** Formatting in UTC and labelling it local is the same bug
   wearing a hat.

The fix is boring: store UTC, render local, and never let the tw

Kırpma, cümle ya da paragraf sınırına değil düpedüz karakter sayısına göre yapılır; bu yüzden değer genellikle bir sözcüğün ortasında biter — yukarıdaki gibi. Modele bu içeriğin tam olduğunu söyleyen bir istem, birkaç ekranı aşan her sayfada yanlış olur.

{{webSummary}}

LLM sağlayıcınızın yazdığı bir sayfa özeti — ayrı bir model çağrısı, sayfa başına önbelleğe alınır, bir kez yapılır ve her paragraf için yeniden kullanılır.

A technical blog post arguing that timestamps should be stored in UTC and rendered in the reader's local zone. It identifies three failure points — form input, database column type, and output formatting — and recommends a single rule for all three. Written for backend developers; uses PostgreSQL column types as examples.

Bunun için AI Akıllı Bağlam gerekir (Seçenekler → Çeviri). Kapalıyken eklenecek bir özet olmaz ve değişken aşağıdaki yedek metne dönüşür. Varsayılan istem {{webSummary}} kullandığı için Akıllı Bağlam'ı kapalı bırakmak, varsayılan sistem isteminde her zaman Webpage summary: No summary available yazması anlamına gelir.

{{videoSummary}}

Altyazı tarafındaki karşılığı: videonun özeti; o da AI Akıllı Bağlam'a bağlıdır ve kapalıyken yine yedek metne dönüşür.

A conference talk on time zone handling in web applications. The speaker walks through a production incident caused by naive timestamps, then demonstrates a UTC-in, local-out pattern. Names mentioned: PostgreSQL, Temporal, Luxon.

Bir değer eksik olduğunda

Bir değişken asla boş bırakılmaz ve asla ortadan kaybolmaz. Değer eksikse, boşsa ya da yalnızca boşluk karakterlerinden oluşuyorsa Read Frog sabit bir İngilizce cümleyi yerine koyar:

DeğişkenYerine konan
{{webTitle}}No title available
{{webDescription}}No description available
{{webContent}}No content available
{{webSummary}}, {{videoSummary}}No summary available

Yani varsayılan sistem istemi, hiç meta verisi olmayan bir sayfada ve Akıllı Bağlam kapalıyken şöyle ulaşır:

## Document Metadata for Context Awareness
Webpage title: No title available
Webpage summary: No summary available

Bu, en çok az örnekli (few-shot) örnekler yazdığınızda önemlidir. Sayfa başlığından örnek kuran bir istem, başlığı olmayan bir sayfada modele "No title available" adlı bir sayfayla ilgili bir örnek gösterir — modeller de bu cümleyi çevirir ya da üzerine yorum yapar. İsteminiz bir meta veri değişkenine yaslanıyorsa, değerin "No ... available" olduğu durumda ne yapılacağını istemin içinde yazın.

{{input}} ve {{targetLanguage}} için yedek değer yoktur. {{targetLanguage}} her zaman bir değer taşır, {{input}} ise paragraftır — boş metin için asla istek gönderilmez.

Sonra ne olur

Değişkenleri yerine konmuş metin isteğin tamamı değildir: ardından ek kural blokları ve terim sözlüğünüzdeki terimler eklenir, tamamlanmış sonuç da çeviri önbelleğinin anahtarı olur. Bkz. Bir istek nasıl kurulur.

On this page