Read Frog

Özel DOM Kuralları

Belirli web sitelerinde çeviri davranışını kontrol etmek için özel DOM kurallarını yapılandırın

Genel Bakış

Read Frog, öğelerin belirli web sitelerinde nasıl çevrildiğini kontrol etmek için özel DOM kuralları tanımlamanıza olanak tanır. Bu kurallar dom-rules.ts'da tanımlanmıştır ve iki ana davranışı destekler:

  1. Öğelerin çevrilmemesini zorla - Belirli öğeler için çeviriyi atla
  2. Blok çevirisini zorla - Satır içi öğelerin blok öğeleri olarak çevrilmesini sağlayın (satır sonlarıyla)

Yapılandırma Dosyası Konumu

Özel kurallar extension repository'da tanımlanmıştır:

src/utils/constants/dom-rules.ts

Kullanılabilir Kural Türleri

1. Özel Öğe Seçicilere Girmeyin

Belirli etki alanlarındaki belirli öğelerin çevrilmesini önlemek için CUSTOM_DONT_WALK_INTO_ELEMENT_SELECTOR_MAP kullanın.

Söz dizimi:

export const CUSTOM_DONT_WALK_INTO_ELEMENT_SELECTOR_MAP: Record<string, string[]> = {
  'example.com': [
    '.selector-1',
    '#element-id',
    'custom-element > *',
  ],
}

Örnek:

export const CUSTOM_DONT_WALK_INTO_ELEMENT_SELECTOR_MAP: Record<string, string[]> = {
  'chatgpt.com': [
    '.ProseMirror',
  ],
  'arxiv.org': [
    '.ltx_listing',
  ],
  'www.reddit.com': [
    'faceplate-screen-reader-content > *',
    'reddit-header-large *',
    'shreddit-comment-action-row > *',
  ],
  'www.youtube.com': [
    '#masthead-container *',
    '#guide-inner-content *',
    '#metadata *',
    '#channel-name',
    '.translate-button',
    '.yt-lockup-metadata-view-model__metadata',
    '.yt-spec-avatar-shape__badge-text',
    '.shortsLockupViewModelHostOutsideMetadataSubhead',
    'ytd-comments-header-renderer',
    '#top-row',
    '#header-author',
    '#reply-button-end',
    '#more-replies',
    '#info',
    '#badges *',
  ],
}

Kullanım Durumları:

  • Gezinme menülerini ve başlıklarını atla
  • Etkileşimli kullanıcı arayüzü öğelerini hariç tutun
  • Kod editörlerinin veya teknik içeriğin çevirisini önleyin
  • Meta veri bölümlerini çevirmekten kaçının

2. Özel Kuvvet Bloğu Çeviri Seçicileri

Satır içi öğelerin blok öğeler (satır sonlarıyla birlikte) olarak çevrilmesini zorlamak için CUSTOM_FORCE_BLOCK_TRANSLATION_SELECTOR_MAP kullanın.

Söz dizimi:

export const CUSTOM_FORCE_BLOCK_TRANSLATION_SELECTOR_MAP: Record<string, string[]> = {
  'example.com': [
    '.force-block-selector',
  ],
}

Örnek:

export const CUSTOM_FORCE_BLOCK_TRANSLATION_SELECTOR_MAP: Record<string, string[]> = {
  'github.com': [
    '.react-directory-row-commit-cell *',
  ],
}

Kullanım Durumları:

  • Taahhüt mesajlarının ayrı satırlarda görünmesini zorla
  • Liste öğelerinin ayrı ayrı çevrildiğinden emin olun
  • Yoğun satır içi içeriği bölerek okunabilirliği artırın

Özel Kurallar Nasıl Eklenir?

1. Adım: Web Sitesi Alan Adını Tanımlayın

Alan adının tamamını tarayıcının adres çubuğunda göründüğü şekliyle kullanın:

  • https://example.com için 'example.com' kullanın
  • https://www.example.com için 'www.example.com' kullanın

Adım 2: Öğe Seçicileri Bulun

CSS seçicilerini bulmak için tarayıcı DevTools'u kullanın:

  1. Web sitesini aç
  2. Hedeflemek istediğiniz öğeyi sağ tıklayın
  3. "İncele" veya "Elemanı Denetle"yi seçin
  4. DevTools'ta HTML öğesine sağ tıklayın
  5. Seçiciyi kopyalayın (CSS Seçici veya kendinizinkini oluşturun)

3. Adım: Yapılandırmaya Kural Ekleme

dom-rules.ts dosyasını açın ve kurallarınızı ekleyin:

export const CUSTOM_DONT_WALK_INTO_ELEMENT_SELECTOR_MAP: Record<string, string[]> = {
  // ... existing rules ...
  'your-website.com': [
    '.header-navigation',
    '#sidebar-menu',
    '.code-block',
  ],
}

4. Adım: Kurallarınızı Test Edin

  1. Geliştirme sunucusunu çalıştırın:

    pnpm dev
  2. Web sitesine gidin

  3. Öğelerin doğru şekilde işlendiğini doğrulayın

  4. Seçicileri gerektiği gibi ayarlayın

En İyi Uygulamalar

Seçici Özgüllüğü

  • Yalnızca amaçlanan öğeleri hedefleyecek kadar spesifik olun
  • Sadece * veya div gibi aşırı geniş seçicilerden kaçının
  • Sınıf adlarını, kimliklerini veya öğe kombinasyonlarını kullanın

Performansla İlgili Hususlar

  • Seçici sayısını makul tutun
  • Performansın kabul edilebilir olduğundan emin olmak için gerçek sayfalarda test yapın
  • Daha basit olanlar işe yaradığında karmaşık alt seçicilerden kaçının

Sürdürülebilirlik

  • İlgili seçicileri bir arada gruplayın
  • Kurallara neden ihtiyaç duyulduğunu açıklayan yorumlar ekleyin
  • Mümkün olduğunda anlamlı seçici adları kullanın

Ortak Desenler

Gezinme Öğelerini Hariç Tutma

'example.com': [
  'nav *',
  'header *',
  '.navigation',
]

Etkileşimli Kullanıcı Arayüzü Hariç

'example.com': [
  'button',
  'input',
  'select',
  '.modal',
  '.dropdown',
]

Teknik İçerik Hariç

'example.com': [
  'pre',
  'code',
  '.code-block',
  '.terminal',
]

Genel DOM Kuralları

Read Frog, özel kurallara ek olarak tüm web siteleri için geçerli olan çeşitli genel kurallara sahiptir:

Engelleme Etiketlerini Zorla

Her zaman blok düzeyinde ele alınan öğeler:

export const FORCE_BLOCK_TAGS = new Set([
  'BODY',
  'H1',
  'H2',
  'H3',
  'H4',
  'H5',
  'H6',
  'BR',
  'FORM',
  'SELECT',
  'BUTTON',
  'LABEL',
  'UL',
  'OL',
  'LI',
  'BLOCKQUOTE',
  'PRE',
  'ARTICLE',
  'SECTION',
  'FIGURE',
  'FIGCAPTION',
  'HEADER',
  'FOOTER',
  'MAIN',
  'NAV',
])

Yürümeyin ve Çevirmeyin Etiketler

Çeviri için hiçbir zaman geçilmeyen öğeler:

export const DONT_WALK_AND_TRANSLATE_TAGS = new Set([
  'HEAD',
  'TITLE',
  'HR',
  'INPUT',
  'TEXTAREA',
  'IMG',
  'VIDEO',
  'AUDIO',
  'CANVAS',
  'SOURCE',
  'TRACK',
  'META',
  'SCRIPT',
  'NOSCRIPT',
  'STYLE',
  'LINK',
  'PRE',
  'svg',
  ...MATH_TAGS,
])

Sorun giderme

Kurallar Çalışmıyor

  1. Alan adının yazılışını kontrol edin - Alanın tam olarak eşleştiğinden emin olun
  2. Seçici sözdizimini doğrulayın - Seçicileri tarayıcı DevTools konsolunda test edin
  3. Önbelleği temizle - Uzantıyı yeniden yükleyin ve sayfayı yenileyin
  4. Seçicinin özgüllüğünü kontrol edin - Öğe daha spesifik bir kuralla eşleştirilebilir

Hala Çevrilen Öğeler

  1. Öğenin, hariç tutulan bir öğenin çocuğu olup olmadığını kontrol edin
  2. Seçicinin doğru öğeleri hedeflediğini doğrulayın
  3. Sayfa yüklendikten sonra yüklenen dinamik öğeleri arayın

Çeviri Son Dakika Sayfa Düzeni

  1. Zorla engelleme kurallarını dikkatli kullanın
  2. Aynı web sitesinin birden fazla sayfasında test yapın
  3. Zorunlu blok yerine !translate kurallarını kullanmayı düşünün

Özel Kurallara Katkıda Bulunma

Başkalarına fayda sağlayacak kurallar oluşturduysanız bunlara katkıda bulunmayı düşünün:

  1. Birden fazla sayfada kapsamlı bir şekilde test edin
  2. Kurallara neden ihtiyaç duyulduğunu belgeleyin
  3. Değişikliklerinizi içeren bir Çekme İsteği gönderin
  4. Contribution Guidelines'ı takip edin

Değişikliklerin gönderilmesiyle ilgili daha fazla ayrıntı için Code Contribution Guide'a bakın.

On this page