Kesintisiz yerelleştirme

Çevirinizin gelişimi yakından izleyen hazır bir altyapı vardır. Böylece çevirmenler, yayın öncesinde büyük miktarda yeni metinler üzerinde çalışmak yerine, tüm zaman boyunca çeviriler üzerinde çalışabilirler.

Ayrıca bakınız

Weblate ile bütünleştirmek describes basic ways to integrate your development with Weblate. Code hosting integrations lists provider-specific setup steps for common code hosting sites.

Süreç şu şekildedir:

  1. Geliştiriciler değişiklikler yapar ve bunları sürüm denetimi sistemi deposuna iter.

  2. İsteğe bağlı olarak çeviri dosyaları güncellenir. Ayrıntılı bilgi almak için: Yeni dizgeler sunmak.

  3. Weblate, sürüm denetimi sistemi deposundan değişiklikleri çeker, çeviri dosyalarını işler ve veri tabanını günceller. Ayrıntılı bilgi almak için: Depoları güncellemek.

  4. Çevirmenler Weblate arayüzünü kullanarak çevirleri yapar ya da çevrim dışı yaptıkları değişiklikleri yükler.

  5. Çevirmenlerin çalışması tamamlandıktan sonra, Weblate değişiklikleri yerel depoya işler (ayrıntılı bilgi almak için: Lazy commit işlemeleri).

  6. Changes are pushed back to the upstream repository (see Weblate üzerindeki değişiklikleri itmek).

digraph translations { graph [fontname = "sans-serif", fontsize=10, ranksep=0.6, newrank=true]; node [fontname = "sans-serif", fontsize=10, margin=0.15]; edge [fontname = "sans-serif", fontsize=10]; subgraph cluster_codehosting { rank=same; graph [color=lightgrey, label="Upstream code hosting", style=filled ]; "VCS repository" [shape=cylinder]; } subgraph cluster_weblate { rank=same; graph [color=lightgrey, label="Weblate", style=filled ]; repo [label="Weblate repository", shape=cylinder]; database [label=Database, shape=cylinder]; } "Developers" [shape=box, fillcolor="#144d3f", fontcolor=white, style=filled]; "Translators" [shape=box, fillcolor="#144d3f", fontcolor=white, style=filled]; "Developers" -> "VCS repository" [label=" 1. Push "]; "VCS repository" -> "VCS repository" [label=" 2. Updating translations ", style=dotted]; "VCS repository" -> repo [label=" 3. Pull "]; repo -> database [label=" 3. Parse translations "]; "database" -> repo [label=" 5. Commit changes "]; "Translators" -> "database" [label=" 4. Translate "]; "repo" -> "VCS repository" [label=" 6. Push repository "]; }

İpucu

Yukarı akış kodunun barındırılması gerekli değildir, Weblate Yerel dosyalar ile kullanılabilir. Burada depo yalnızca Weblate içinde bulunur.

Depoları güncellemek

Arka uç depolarını kaynaklarından güncellemek için bir yöntem ayarlamalısınız.

Weblate depoyu her güncellediğinde, güncelleme sonrası eklentileri tetiklenir. Ayrıntılı bilgi almak için: Eklentiler.

Birleştirme çelişkilerinden kaçınmak

Weblate üzerindeki birleştirme çelişkileri, aynı dosya hem Weblate üzerinde hem de Weblate dışında değiştirildiğinde ortaya çıkar. Duruma bağlı olarak, burada yardımcı olabilecek birkaç yaklaşım vardır:

Çeviri dosyaları yalnızca Weblate içinde değiştirildiğinde birleştirme çelişkilerinden kaçınmak

Tek dilli dosyalarda Weblate dışında düzenleme yapmaktan kaçınmak kolaydır. Weblate içinden yeni dizgeler ekleyebilir ve dosyaların tüm düzenlemesini orada bırakabilirsiniz. İki dilli dosyalarda, genellikle kaynak koddan çevrilebilir dosyalar oluşturmak için bir tür ileti ayıklama işlemi vardır. Bazı durumlarda bu işlem iki bölüme ayrılabilir:

  1. Ayıklama işlemi kalıp oluşturur (örneğin gettext POT, xgettext kullanılarak oluşturulur).

  2. Daha sonraki süreç bunu gerçek çevirilerle birleştirir (gettext PO dosyaları msgmerge kullanılarak güncellenir).

İkinci adımı Weblate içinde gerçekleştirebilirsiniz ve bu işlemden önce bekleyen tüm değişikliklerin katılması sağlanır.

Weblate dışından yapılan değişikliklerde kilitleme ile birleştirme çelişkilerinden kaçınmak

Weblate ile güncelleme sürecinizi bütünleştirmek ve Weblate dışından yapılan dosya güncellemelerini yok saymak, Weblate REST API uygulaması ile Weblate uygulamasını bekleyen tüm değişiklikleri itmek ve kendi tarafınızda değişiklikler yaparken çeviriyi kilitlemek yoluyla uygulanabilir.

Güncelleme betiği şunun gibi görünebilir:

# Lock Weblate translation
wlc lock
# Push changes from Weblate to upstream repository
wlc push
# Pull changes from upstream repository to your local copy
git pull
# Update translation files, this example is for Django
./manage.py makemessages --keep-pot -a
git commit -m 'Locale updates' -- locale
# Push changes to upstream repository
git push
# Tell Weblate to pull changes (not needed if Weblate follows your repo
# automatically)
wlc pull
# Unlock translations
wlc unlock

Aynı depoyu paylaşan birden fazla bileşeniniz varsa, tümünü ayrı ayrı kilitlemeniz gerekir:

wlc lock foo/bar
wlc lock foo/baz
wlc lock foo/baj

Not

Örnekte, uzaktan Weblate yönetimi için yapılandırmaya (API anahtarları) gerek duyan Weblate istemcisi kullanılır. Bunu Weblate istemcisi yerine curl gibi herhangi bir HTTP istemcisini kullanarak da yapabilirsiniz. Ayrıntılı bilgi almak için: Weblate REST API uygulaması.

Depo bakımı

Depo bakımı görünümü bir proje, bileşen veya çeviri için deponun durumunu gösterir ve yetkili kullanıcıların kullanıcı arayüzünden bakım işlemleri yapmasını sağlar.

Aynı işlemler Weblate REST API uygulaması veya desteklenen alt küme için Weblate istemcisi kullanılarak da tetiklenebilir.

Bireysel işlemlerin kullanılabilirliği izinlere, yapılandırılmış sürüm denetimi sistemine, itmenin yapılandırılıp yapılandırılmadığına ve seçilmiş nesnenin kilitlenip kilitlenemeyeceğine bağlıdır.

İşlem

Ne yapar

Tipik kullanım

İşle

Weblate içinde kayıtlı bekleyen değişiklikleri yerel depoya işler.

Başka bir yerde depo çalışması yapmadan önce bekleyen Weblate değişikliklerini boşaltın.

İt

İşlenmiş yerel depo değişikliklerini yapılandırılmış yukarı akışa iter.

Otomatik itme kapatıldığında veya ertelendiğinde işlenen çevirileri yukarı akışa gönderin.

Güncelle

Yukarı akış değişikliklerini alır ve bileşende yapılandırılmış Birleştirme biçemi kullanarak bunları bütünleştirir.

Varsayılan bütünleştirme stratejisini kullanarak Weblate içeriğini yukarı akışla eşitleyin.

Birleştirme ile güncelle

Yukarı akış değişikliklerini alır ve bunları açık bir birleştirme ile bütünleştirir.

Tek bir güncelleme için varsayılan birleştirme tarzını geçersiz kılın.

Yeniden yerleştirme ile güncelle

Yukarı akış değişikliklerini alır ve yerel Weblate işlemelerini yukarı akışın üstüne yeniden yerleştirir.

İş akışınızla eşleştiğinde geçmişi doğrusal tutun.

Hızlı ilerleme olmadan güncelleme

Yukarı akış değişikliklerini alır ve hızlı ilerleme yapılabilse bile açık bir birleştirme işlemesi oluşturur.

Denetim veya dal yönetimi nedenleriyle birleştirme işlemelerini koruyun.

Kilitle / Kilidi aç

Çevirmenlerin Weblate üzerinde değişiklik yapmasına izin verir ya da engeller.

Weblate dışında depo bakımı yaparken çeviri değişikliklerini dondurun.

Sıfırla ve yok say

Weblate yerel deposunu yukarı akışa sıfırlar ve bekleyen Weblate değişikliklerini yok sayar.

Yukarı akışın yerel Weblate depo durumunun üzerine yazması gerektiğinde kullanın.

Sıfırla ve yeniden uygula

Bekleyen çevirileri korurken Weblate yerel deposunu yukarı akışa sıfırlar. Ayrıntılı bilgi almak için: Sıfırlayın ve yeniden uygula kurtarma davranışı.

Bekleyen Weblate çevirilerini farklı geçmişlerden kurtarın.

Temizle

İzlemeyen dosyaları ve eski dalları yerel depo çıkışından kaldırır.

Weblate çıkışında kalan dosyaları veya eski depo durumunu temizleyin.

Eşitle

Weblate uygulamasını bilinen tüm çevirileri depo dosyalarına geri yazmaya zorlar.

Depo dosyalarının veri tabanı durumuyla eşitlenmediği durumları onarın.

Yeniden tara

Çeviri dosyalarını yerel depodan Weblate üzerine yeniden okur.

El ile depo çalışması veya dosya oluşturması sonrasında dosya değişikliklerini içe aktarın.

Sıfırlayın ve yeniden uygula kurtarma davranışı

Sıfırla ve yeniden uygula işlemi, yerel depo durumunu yukarı akışla eşleşecek şekilde sıfırlarken Weblate üzerindeki çevirileri beklemede tutar.

İşlem, bekleyen çevirileri yalnızca hedef dil dosyaları sıfırlamadan sonra hala var olduğunda veya Weblate bunları bileşen için oluşturabildiğinde, örneğin geçerli bir Yeni çeviriler kalıbı kullanarak geri yükleyebilir.

Bu koşulların hiçbiri karşılanmazsa, Weblate bekleyen değişiklikleri veri tabanında tutar ve daha sonra genel bir ayrıştırma hatasıyla başarısız olmak yerine bir kurtarma hatası bildirir.

Git işlemlerine odaklanarak birleştirme çelişkilerinden kaçınmak

Çeviri dosyalarındaki değişikliklerin tek kaynağı Weblate olsa bile, Git işlemelerini bir araya toplar eklentisi kullanıldığında, Birleştirme biçemi Yeniden yerleştir olarak yapılandırıldığında çelişkiler ortaya çıkabilir ya da Weblate dışından yapılmış işlemeleri ezersiniz (örneğin bir çekme isteği birleştirilirken).

Bu durumda birleştirme çelişkilerinin nedeni farklıdır; Weblate işlemlerini birleştirdikten sonra Weblate üzerinde değişiklikler bulunur. Bu durum genellikle birleştirme işlemi kendiliğinden yapılamadığında ve bir kişinin bunları incelemesi için günlerce veya haftalarca beklendiğinde ortaya çıkar. Git bu durumda bazen yukarı akış değişikliklerini Weblate ile eşleştiremez ve yeniden yerleştirme işlemini reddeder.

Buna yaklaşmak için, bir çekme isteğini birleştirdiğinizde Weblate üzerinde bekleyen değişikliklerin sayısını en aza indirmeniz ya da değişiklikleri engellemeyerek çelişkileri tümüyle önlemeniz gerekir.

Bunu önleyecek bazı seçenekler:

  • Birleştirme sırasında Git işlemelerini bir araya toplar veya sıkıştırma kullanmayın. Birleştirme sonrasındaki değişikliklerin Git tarafından tanınmamasının temel nedeni budur.

  • Birleştirmeden önce bekleyen değişikliklerin Weblate ile işlenmesine izin verin. Böylece, çekme isteği tüm değişiklikleriyle güncellenir ve iki depo da eşit olur.

  • Weblate üzerindeki onaylama özelliklerini kullanın (ayrıntılı bilgi almak için: Çeviri iş akışları). Böylece kesintisiz bütünleştirmeden geçtikten sonra GitHub çekme isteklerini kendiliğinden birleştirebilirsiniz.

  • GitHub çekme isteği incelenirken değişiklikler yapılmasını önlemek için Weblate kilitleme özelliğini kullanın.

Ayrıca bakınız

Weblate istemcisi

Code hosting notifications

Provider-specific app and webhook instructions for GitHub, GitLab, Bitbucket, Pagure, Azure Repos, Gitea, Forgejo, and Gitee are covered in Code hosting integrations.

Provider-specific notifications

These legacy anchors are kept for compatibility. Current provider-specific app and webhook setup is documented in Code hosting integrations.

Depoları her gece kendiliğinden güncellemek

Weblate, daha sonra değişiklik birleştirme başarımını artırmak için her gece uzak depoları kendiliğinden alır. İsteğe bağlı olarak, AUTO_UPDATE seçeneğini kullanıma alarak bunu gecelik birleştirmeler yapmaya da dönüştürebilirsiniz.

Weblate üzerindeki değişiklikleri itmek

Each translation component can have a push URL set up (see Depo itme adresi), and in that case Weblate will be able to push changes to the remote repository. Weblate can also be configured to automatically push changes on every commit, see İşleme ile itme.

For the push options table and provider-specific pull, merge, and review request workflows, see Weblate üzerindeki değişiklikleri itmek.

Ayrıca bakınız

SSH anahtarlarını ayarlamak için Depolara erişmek ve değişikliklerin Weblate tarafından ne zaman işleneceğine karar verildiği ile ilgili ayrıntılı bilgi almak için Lazy commit işlemeleri bölümlerine bakabilirsiniz.

Korunmuş dallar

Weblate ile korumalı dal kullanıyorsanız, çekme isteklerini kullanacak ve çeviriler üzerinde gerçek gözden geçirme yapacak bir yapılandırma ayarlayabilirsiniz (bilmediğiniz diller için sorunlu olabilecek şeyler). Alternatif olarak, Weblate itme kullanıcısı için bu sınırlamayı kaldırabilirsiniz.

Örneğin bu işlem GitHub üzerinde, depo yapılandırmasında ayarlanabilir:

../_images/github-protected.png

Diğerleri ile etkileşim

Weblate, API uygulaması -başkalarıyla etkileşim kurmayı kolaylaştırır.

Ayrıca bakınız

Weblate REST API uygulaması

Lazy commit işlemeleri

Weblate, olabiliyorsa aynı yazardan gelen işlemeleri tek bir işleme olarak gruplandıracak biçimde davranır. Böylece, işleme sayısı büyük ölçüde azaltılır. Bununla birlikte, sürüm denetimi sistemi deposunu eşitlemek isterseniz bunu açıkça belirtmeniz gerekir. Örneğin birleştirme için (varsayılan olarak Yöneticiler’ grubu için izin verilir, ayrıntılı bilgi almak için: İzinlerin listesi).

Bu kipteki değişiklikler, aşağıdaki koşullardan herhangi biri yerine getirildiğinde işlenir:

  • Başka biri zaten değiştirilmiş bir dizgeyi değiştirdiğinde.

  • Yukarı akıştan bir birleştirme gerçekleştirildiğinde.

  • Açık bir işleme isteği yapıldığında.

  • Bir dosyanın indirilmesi istendiğinde.

  • Değişiklik, Bileşen yapılandırması üzerinde İşlenecek değişikliklerin yaşı olarak tanımlanmış dönemden daha eski olduğunda.

İpucu

İşlemeler her bileşen için ayrı oluşturulur. Bu nedenle, birçok bileşeniniz varsa, gene çok sayıda işleme görürsünüz. Bu durumda Git işlemelerini bir araya toplar eklentisini kullanabilirsiniz.

Değişikliklerin daha sık ve yaşları denetlemeden yapılmasını istiyorsanız, işlemeyi yapacak bir zamanlanmış görev ayarlayabilirsiniz. Bu işlemi Django yönetim arayüzü içinde Zamanlanmış görevler bölümünden yapabilirsiniz. Önce istediğiniz Sıklık ögesini oluşturun (120 saniye gibi). Ardından yeni bir zamanlanmış görev ekleyin ve Görev olarak weblate.trans.tasks.commit_pending, Anahtar sözcük parametreleri ve istenilen sıklık olarak {"hours": 0} yazın.

Betikleri kullanarak depo işlemleri yapmak

Weblate ile depo arasındaki etkileşim Eklentiler ile özelleştirilebilir. Eklentiler ile dış betiklerin nasıl yürütüleceği ile ilgili ayrıntılı bilgi almak için Eklentiden betikleri çalıştırma bölümüne bakabilirsiniz.

Bileşenler arasında çevirilerin tutarlığını sağlamak

Birden çok çeviri bileşeniniz olduğunda, aynı dizgelerin çevirilerinin de aynı olduğundan emin olmak isteyebilirsiniz. Bu tutarlılık birkaç düzeyde sağlanabilir.

Çevirilerin yayılmasını sağlamak

Çeviriler yayılabilsin seçeneği açıkken (varsayılan değer nedir, ayrıntılı bilgi almak için: Bileşen yapılandırması), tüm yeni çeviriler dizgeleri eşleşen tüm bileşenlerde kendiliğinden yapılır. Bu tür çeviriler, tüm bileşenlerde doğru şekilde çeviriyi yapan geçerli kullanıcının hesabına yazılır.

Yayılma ön koşulları:

  • Tüm bileşenler tek bir projede bulunmalıdır (bileşeni ilişkilendirmek yeterli değildir).

  • Eşleşen dizgelerin çevirilerinin kendiliğinden yeniden kullanılması için Çeviriler yayılabilsin özelliğini açın.

  • Çevirilerin yayılması için, anahtarın tek dilli çeviri biçimleriyle eşleşmesi gerekir. Çeviri anahtarlarını oluştururken bunu aklınızda bulundurun.

  • Dizgeler çeviri sırasında yayılır, depodan yüklenen dizgeler yayılmaz.

Tüyo

Bu özelliğin şu anda sınırlamaları var ve onu daha evrensel yapmak istiyoruz. Lütfen görüşlerinizi https://github.com/WeblateOrg/weblate/issues/3166 adresinde paylaşın.

Tutarlılık denetimi

Dizgeler farklı olduğunda Tutarsız kalite denetimi tetiklenir. Bu tür farklılıkları el ile incelemek ve doğru çeviriyi seçmek için bunu kullanabilirsiniz.

Kendiliğinden çeviri

Farklı bileşenleri temel alan kendiliğinden çeviri, çevirileri bileşenler arasında eşitlemenin bir yöntemi olabilir. El ile tetikleyebilir (ayrıntılı bilgi almak için: Kendiliğinden çeviri) veya eklentiyi kullanarak depo güncellemelerinde kendiliğinden çalışmasını sağlayabilirsiniz (ayrıntılı bilgi almak için: Kendiliğinden çeviri).