[Gelistirici] Çeviri için svn property kullanımı

Necmettin Begiter necmettin at pardus.org.tr
9 Tem 2009 Per 12:30:35 EEST


Merhaba,

Bildiğiniz üzere SVN depolarımızda çevirmenlerimizin hangi dosyaları
çevirmeleri gerektiğini anlamaları için depolara yapılan gönderileri
takip etmeleri gerekiyor. Fakat bu etkin bir çözüm değil ve
çevirmenlerimiz açısından işlerini zorlaştırıyor. Yabancı
çevirmenlerimiz de bu nedenle çoğunlukla çevirilerini çok iyi takip
edemeyebiliyorlar, güncelleyemedikleri, geciktikleri oluyor.
Uygulamalarımızdaki .py, .xml, .src ve .ui dosyalarında değişiklik
olup olmadığını takip etmemiz gerekiyor ve büyük çoğunluğu bizi
ilgilendirmeyen değişiklikleri incelemek, değişmemiş dosyaları tekrar
tekrar açmak zorunda kalabiliyoruz. Oysa elimizde dosyaların içeriğine
dokunmadan onları işaretlemekte kullanabileceğimiz çok güzel bir araç
var: svn properties.

svn prop* komutlarıyla dosyaların kendileri hakkında bilgi saklamakta
kullanılan bu yapı sayesinde çevirmenlerin ilgilenmesi gereken
dosyaları işaretlemek mümkün. Bu işlem uygulama geliştiricilerimize
günde birkaç saniyeden fazla zaman kaybettirmezken, çevirmenlerimiz
açısından önemli bir fark yaratabilecek bir işlem. Depomuzda belirli
dosya türlerinin otomatik etiketlenmesini de sağladığımız taktirde
uygulama yazarlarının işi de iyice azalmış olacak. "Çeviri portalı"nı
hayata geçirmek için önemli bir adım mümkün olabilecek.

Örnek bir senaryoyla açıklamaya çalışayım:
Depomuzdaki ilgili kancanın .pot uzantılı dosya gönderildiğinde bu
dosyalara otomatik olarak translate-tr, translate-es, translate-ptBR
gibi toplam 9 adet kancayı otomatik olarak eklediğini varsayalım. Bu,
herhangi bir yazılım geliştirici depoya birşey gönderirken herhangi
bir .pot dosyasında değişiklik yaptığı taktirde o .pot dosyasına bu
etiketlerin eklenmesini sağlıyor.

Çevirmenin (ya da çeviri portalının) (örneğin Türkçe için benim
diyelim) bu durumda kendisini ilgilendiren değişiklikleri görmek için
yapması çalıştırması gereken betik şu (pysvn bağımlılığı var, dizinler
ve dil kodları dinamik olacak normalde):

# -*- coding: utf-8 -*-
import pysvn

repo = pysvn.Client()
repo.update("/home/necmettin/repos/2009devel/")
y = repo.proplist("/home/necmettin/repos/2009devel/", recurse=True)
for item in y:
    fn = item[0]
    props = item[1]
    if item[1].has_key("translate-tr"):
        print item[0]

Bu betiği çalıştırdığında, "Türkçe çevirisinin güncellenmesi
gerekiyor" olarak işaretlenmiş tüm dosyaları görebilecek. Çevirisini
tamamladığı dosyalar için de şu betiği çevirisini tamamladığı
dosyaların adlarıyla çalıştırması yeterli olacak (pysvn bağımlılığı
var, dizinler ve dil kodları dinamik olacak normalde):

if len(sys.argv)<1:
    print "You must give me the names of the files you want the
property translate-tr removed from."
    sys.exit(1)
else:
    files = sys.argv[1:]
repo = pysvn.Client()
for item in files:
    pysvn.propdel("translate-tr", item)
repo.checkin("home/necmettin/repos/2009devel/", "update tr
translations", keep_locks=True)

Böyle bir sistemle çeviri gerektiren dosyaları süzmenin çok
kolaylaşacağını ve çeviri portalı konusunda önemli bir adım
atabileceğimizi düşünüyorum. Yorum, öneri ve eleştirileriniz, bu
sistemin uygulamaya geçirilmesine bakışınız?



Gelistirici mesaj listesiyle ilgili daha fazla bilgi