Büyük bir yazılım şirketinin yerelleştirme çalışmalarını yönetmek başlı başına zorlu bir iştir. Peki, bu şirket Agile uygulamalarına geçtiğinde ne olur? Zorluklar daha da artar ve hızlı bir şekilde köklü değişiklikler yapmanız gerekir. Bu vaka çalışmasında, Ekaterina Galitskaya ve Darya Egorushkina Kaspersky'nin dokümantasyon ve yerelleştirme ekibi, Smartcat ile süreçlerinin kapasitesini ve verimliliğini artırma yolculuğuna çıkıyor.
Ekaterina ve Darya tarafından yazılan ek metin
Ekibimiz, şirketin mobil güvenlik uygulamaları için hem kullanıcı arayüzü metinlerini hem de yardım merkezi makalelerini yazmak ve yerelleştirmekten sorumludur. Aşağıda, Mobil Güvenlik uygulamalarını daha güvenilir, çevik ve otomatik bir şekilde yerelleştirmeye nasıl başladığımızı anlatacağız. Öncelikle, herhangi bir değişiklik yapma ihtiyacını doğuran sorunlardan başlayarak, karşılaştığımız zorlukları ve bulduğumuz çözümleri anlatacağız. Bu makalenin, yalnızca geliştirme sürecinde değil, ilgili tüm alanlarda Agile'ı uygulamaya koyma zorluğuyla karşı karşıya olan orta ve büyük ölçekli yazılım şirketleri için ilginç olacağını umuyoruz.
Ekmekler
Diğer birçok şirket gibi, Kaspersky de bir noktada Agile geliştirme uygulamalarına geçmişti. Bu, doğal olarak çok daha kısa sürüm döngülerine yol açtı. Daha önce birkaç ayda bir yeni uygulama sürümleri yayınlarken, artık iki haftada bir yayınlanmaya başladık. Elbette, her yeni sürümde daha az dize vardı, ancak bu pek yardımcı olmadı: Hala bu az sayıdaki dizeleri tüm yerelleştirme ve dilbilim test sürecimizden geçirmek zorundaydık, ancak çok daha sıkı teslim tarihleriyle karşı karşıyaydık.
Mobil uygulamaların sadece az miktarda metin içerdiği yönünde yaygın bir yanılgı da vardır. Keşke öyle olsaydı! Örneğin bizim durumumuzda, ortalama olarak her uygulama için sadece kullanıcı arayüzü metinlerinde yaklaşık 25.000 kelime vardı, buna yaklaşık 10 uygulama ve her uygulama için yaklaşık 20 hedef dil eklendi. Üstelik her hafta yeni kullanıcı arayüzü ve dokümantasyon metinleri geliyordu.
Sonuç olarak, yerelleştirme tüm sürüm yayınlama sürecinde esasen bir darboğaz haline geldi. Ve daha önce ürün yöneticileri yerelleştirme ekibinin üyelerini isimleriyle bile tanımıyorlardı — tüm çeviriler "sihirli bir şekilde kendiliğinden" ortaya çıkıyorsa, neden tanısınlar ki? — ama artık tüm sorunların farkındaydılar ve bu farkındalık, hiç istemedikleri kadar derin bir seviyedeydi.
Kaspersky'de yerelleştirme süreci genellikle iki aşamadan oluşur: çeviri ve dilbilimsel test.
Çeviri aşamasında genel sorun, kullanılan süreç ve CAT aracının sınırlamaları nedeniyle çok fazla manuel iş olmasıydı. Özellikle:
Çok dallı boru hatları desteklenmediğinden, çeviri için farkları manuel olarak oluşturmak ve daha sonra bunları dallara geri göndermek zorunda kaldık.
Kaynak metinler süreç içinde değiştirildiğinde, ek çeviri taleplerini paralel olarak gerçekleştiremiyorduk. Bunun yerine, temel çeviri paketinin hazır olmasını beklemek ve ancak o zaman ek çevirilere geçmek zorundaydık.
"Çevrilemez" öğelerdeki hatalar, kaçamayan kesme işaretleri ve diğer insan hataları nedeniyle derleme hataları giderek daha büyük bir sorun haline geliyordu.
Dil testi aşaması ise, çevirinin kendisi için gereken üç ila beş gün süren süreye kıyasla, iki haftaya kadar sürebilir. "Dil testi de ne demek?" diye sorduğunuzu duyuyoruz.
Dil testinin temel amacı, çevirinin tamamını bağlam içinde kontrol etmektir. Terminolojimizi iyi bilen sağlam bir çevirmen ekibimiz var. Ancak, çeviri yaparken metnin çevresini görmeden veya sadece bir düğme mi yoksa başlık mı olduğunu bilmeden çeviri yaparsanız, işler çabucak ters gidebilir.
Bu nedenle, dil testi genellikle ekran görüntüleri aracılığıyla tüm uygulama ekranlarının manuel olarak kontrol edilmesini içerir. Bu, aşağıdaki gibi sorunların tespit edilmesine yardımcı olur:
Metin, ekran öğesinin boyutu için çok uzun. Bazen, çıkarılan metin feragatname veya finansal bilgiler içeriyorsa, bu durum yasal sonuçlar doğurabilir.
Çevirmen hatası veya metnin string olarak dışsallaştırılmamış olması nedeniyle çevrilmemiş metinler,
Yanlış bağlamda çevrilmiş metinler, örneğin bir düğme üzerindeki metin — örneğin "İndir" — gramer açısından mastar yerine emir kipinde olması.
Sadece ekran görüntüsü alma işlemi bile çok fazla zaman alıyordu. Örneğin, yeni bir özellik 40 UI ekranını içeriyor ve 20 hedef dil varsa, bu işlem 70 saate kadar süren manuel ve mekanik bir emek gerektiriyordu.
Sonuç olarak, üç ayda bir yeni sürüm çıktığında bu durum kabul edilebilirdi. Ancak iki haftada bir sürüm çıkmaya başlayınca, bu durum yerelleştirme ekibini zorlamaya başladı. Bu durumun düzeltilmesi gerekiyordu ve hızlı bir şekilde düzeltilmeliydi.
İki seçeneğimiz vardı:
1. Deneyimi az olan çalışanları işe almak ve yerelleştirme işlerinin miktarını azaltmak — her ikisi de doğal olarak kalitenin düşmesine yol açar, VEYA
2. Otomatikleştirmek.
Biz ikincisini tercih ettik.
Neden Smartcat?
CAT/TMS çözümünü seçerken önceliklerimiz şunlardı:
Daha az iç onay — bütçeleri onaylamak, seri anahtarlar oluşturmak ve benzeri işlemler,
Kullanıma hazır temel özellikler — böylece daha fazla özelliğin geliştirilmesini beklemeden hemen kullanmaya başlayabilirdik,
Hafif sunucu gereksinimleri — yine, uzun onay süreçlerinden kaçınmak için,
Uygun fiyatlı, tercihen ücretsiz hizmet erişimi.
Yeterli destek hizmet tarafında, şirket içinde bir geliştirici işe almak zorunda kalmamak için,
Güvenlik gereksinimleri — biz ona bağlanıyoruz, tersi değil,
Çoklu dal desteği — birkaç özelliği paralel olarak çevirmek için,
Ek çeviriler orijinal parti ile paralel olarak mümkündür.
Seçeneklerin kısa listesini derlediğimizde, sadece iki isim kaldı: Smartcat ve Evernote'un yaratıcılarının geliştirdiği sürekli yerelleştirme sunucusu Zing.
Zing'i özelleştirilebilirliği, ücretsiz kurulum paketi ve özel erişimi nedeniyle beğendik — kendi kuruluşumuz içinde barındırabilirdik. Olumsuz tarafı ise, kurulum süreci hiç de kolay değildi, bu nedenle tüm çevirmenlerimizi ve personelimizi sisteme dahil etmek, hizmeti çalıştırmanın zaman maliyetini çok yüksek hale getirecekti.
Böylece Smartcat seçildi. CAT araçlarını doğrudan iç VCS'imize bağlayamadığımız için, Smartcat–Serge paketini kullanmaya karar verdik. (Serge, sürüm kontrolü ve çeviri yönetim sistemleri arasında dizeleri senkronize eden açık kaynaklı bir yazılımdır. Çeşitli formatlardaki dosyalardaki dizeleri tanımlar ve bunları endüstri standardı PO formatına dönüştürür, ardından Smartcat'e aktarır. Bu yazılımı sunucularımıza doğrudan yükleyebiliyoruz, böylece gizli bilgilerimizin hiçbiri dışarıya sızmıyor.)
Sonuçta ortaya çıkan çözümün en çok beğendiğimiz özellikleri şunlardır:
Tüm gereksinimlerimizi destekler: çok dallı boru hatları, ek çeviriler, güvenlik vb.
Herhangi bir şey indirmeye veya yüklemeye gerek kalmadan anında güncellemeler alıyoruz,
Smartcat–Serge paketi sayesinde dizeler için kendi ayrıştırma şemalarımızı oluşturabiliriz,
Platformdan ayrılmadan belgelerimiz üzerinde çalışan çevirmenlerle konuşabiliriz,
Üretimi artırmamız gerektiğinde, platformun pazar yerinde doğrudan serbest çalışanlar bulabiliriz,
Tüm diller ve projeler için tek bir fatura ile ödeme yapabiliriz,
Aldığımız desteği çok seviyoruz — Smartcat ekibi, iş akışımızı kurmamıza ve çalıştırmamıza yardımcı oldu ve bizim için kritik öneme sahip bazı özelliklere öncelik verdi. — Proje genelinde metin arama özelliği nedeniyle sonunda abonelik seçeneğini tercih ettik, ancak bu adım isteğe bağlıydı.
Karşılaştığımız bazı zorluklar şunlardı:
Başlangıçta, bir projenin tüm belgelerinde metin arayamıyorduk — ancak Smartcat bu özelliği daha sonra uygulamaya koyduğu için artık bu bir sorun değil.
Proje yöneticisi, çevirmenlere davetleri manuel olarak başlatmak zorundaydı — ancak bu adımın yakında otomatikleştirileceğini duyduk.
Smartcat ile şimdiye kadarki deneyimlerimizi göz önünde bulundurarak, ekibinin bu sorunları çözmek için şimdiden çalışmaya başladığını umuyoruz.
Öncesi ve Sonrası
Durumu daha iyi anlayabilmek için, hem süreç hem de rakamlar açısından geçmişte sahip olduklarımızla şu anda sahip olduklarımızı karşılaştıralım.
Süreç
Önce
Değişikliklerden önce, çeviri ve dil testi aşamalarında yaklaşık 30 adım atmak zorundaydık:
Çeviri:
Rep'teki farklı dallardan metinleri manuel olarak alın,
Çeviri için bir delta oluşturun — manuel olarak,
Çeviri için paketler oluşturun,
FTP sunucusuna yükleyin,
Ajanslara, serbest çalışanlara veya yerel ofislere bir sürü e-posta yazın,
Hazır olduğunda FTP sunucusundan çeviriyi alın,
CAT aracına yükleyin ve her şeyin yolunda olduğundan emin olun,
Çevrilmiş dizeleri dalları karıştırmamaya dikkat ederek manuel olarak depoya yüklemek,
Bir derleme çalıştırmak, hataları düzeltmek, derlemeyi tamamlamak,
Ek çeviriler talep etmek — esasen aynı süreci tekrarlamak.
Dil testi:
Derlemeyi başlatın ve tamamlanmasını bekleyin,
Yerelleştirme hataları nedeniyle başarısız olursa derlemeyi yeniden başlatın,
Hata ayıklama menüsü yoksa özel bir test ortamı yapılandırın,
20'den fazla dil için tüm ilgili ekran görüntülerini alın,
QA ekibi ile birlikte, eksik ekran görüntülerini nasıl elde edebileceğinizi öğrenin,
Ekran görüntüsü paketleri oluşturun ve adlandırın,
Bunları FTP sunucusuna yükleyin,
Çevirileri kontrol etmek için çeviri ajanslarına görevler atayın,
Ajansların sorularını yanıtlayın,
Görevleri kabul edin ve değişiklikleri yapın,
Bazen uzun süren derlemeyi yapın,
Hatalar varsa derlemeyi yeniden yapın,
Geriye dönük testler için ekran görüntüleri alın,
Yeniden ekran görüntülerini yükleyin ve çeviri ajanslarına görevler atayın,
Yeniden ajanslarla her şeyi görüşün,
Yeniden, çeviride değişiklikler varsa bir başka regresif test turu yapın.
Sonra
Artık tüm aşamalarda sadece dokuz adımımız var:
Metin yazarı yeni dizeleri Git'e kaydeder. Serge dizeleri otomatik olarak Smartcat'e aktarır,
Yerelleştirme proje yöneticisi çevirmenleri atar,
Çevirmenler, ekran görüntüleri ve yorumları parmaklarının ucunda, bağlam içinde çeviri yapar,
Yerelleştirme proje yöneticisi çeviriyi inceler ve onaylar, ardından çeviri otomatik olarak Git'e geri gönderilir,
Yerelleştirme ekibi, yerelleştirilmiş metinler için ekran görüntüsü alma botunu çalıştırır,
Yerelleştirme ekibi, yerelleştirilmiş ekran görüntülerini FTP sunucusuna koyar ve dil uzmanlarına gönderir.
Dil uzmanları, yerelleştirilmiş ekran görüntülerine bakarak çevirileri kontrol eder ve gerekirse düzeltir.
Değişiklikler otomatik olarak Git'e aktarılır.
Yerelleştirme ekibi çekme isteğini kapatır.
Hepsi bu kadar — karmaşıklığın üç kat azalmasıyla, eskisine kıyasla gerçekten farkı hissediyoruz!
Sayılar
Tüm rakamlar, iki haftada bir yapılan bir sürüm ve bir uygulama için geçerlidir.
Adım | Önceki saatler | Sonraki saatler |
Tüm dallardan dizeleri topla | 1 | - |
Yalnızca yeni veya güncellenmiş dizeleri içeren bir delta oluşturun ve bunları 20'den fazla dil için CAT aracına yükleyin | 4 | 0,25 |
20'den fazla dil için çeviri paketleri oluşturun | 0,5 | - |
20'den fazla dil için çeviri paketlerini FTP sunucusuna yükleyin | 0.5 | - |
20'den fazla dil için ajanslar/çevirmenlerle iletişime geçerek işi alabileceklerini teyit etmek | 2–3 | |
İşleri doğrudan platform üzerinden ajanslara/çevirmenlere atayın | - | 0,25 |
Çevirmenlerin sorularını yanıtlayın | 2–4 | 0,5 |
Çevirileri inceleyin ve onaylayın | 1 | 0,25 |
Derlemeyi çalıştırın | En fazla 8 | 0,25 |
Ek çeviriler | 8 | 0,25 |
Ekran görüntülerini elde etme | 16–32 | Otomatik ekran görüntüsü alma aracıyla 8 |
Ekran görüntülerini FTP sunucusuna yükleme | 8 | 1 |
Ajanslar/çevirmenlerle iletişim kurun ve sabit çevirileri alın | 8 | 1 |
Kaynak dosyalarını güncelleyin | 8 | 2 |
Değişiklikleri Git'e yazın | 8 | 0,25 |
Uygulama başına sürüm başına toplam süre | 84 saat | 14 saat |
Bonuslar
Beklemediğimiz bazı ek avantajlar şunlardır:
Daha güvenilir yapılar: yer tutucular sayesinde, artık çevrilemeyen metinlerin çevrilmesi veya kesme işaretlerinin kaçırılması gibi sorunlar hakkında endişelenmemize gerek kalmadı.
Smartcat, kritik hata ayarları sayesinde bazı eski hataları tespit etti.
Başkalarının zamanını ve kaynaklarını boşa harcamamak: QA ekibinden test cihazlarını almamız veya geliştirme ekibinin zamanını ekran görüntüsü almakla harcamamız gerekmiyor.
Buna devam edebiliriz ve zamanla yerelleştirme süreçlerimizin verimliliğini ve kalitesini artırmanın başka yollarını da bulacağımızdan eminiz. En önemlisi, yerelleştirme artık sürüm döngüsünde bir engel teşkil etmiyor. Bu sonuçları bu kadar kısa sürede elde etmenin hem ekibimiz hem de Smartcat platformu için büyük bir başarı olduğuna inanıyoruz.
Ek. İpuçları ve fikirler
Smartcat'i uygulamaya koyduktan sonra attığımız bazı somut adımları burada paylaşıyoruz. Bu adımları, bizim izimizden gitmek isteyen diğer şirketler ve ekipler için bir "hile sayfası" olarak buraya koyuyoruz. Bunların hepsi kolay değil, ancak çoğu yerelleştirme sürecini daha sorunsuz ve hataya daha az açık hale getirmeye yardımcı olacaktır.
Entegrasyon:
Git–Serge–Smartcat entegrasyonunu test edin ve tüm dizelerin Smartcat projelerine aktarıldığından ve geri döndüğünden emin olun. Üretim aşamasında sürprizlerle karşılaşmak istemezsiniz.
Yazılım mühendisleriyle dal adlandırma konusunda anlaşın. Bu şekilde, yerelleştirilmesi gereken belirli dalları arayacak bir bot kurabilirsiniz — bu da hem size hem de geliştiricilere saatlerce süren iletişim zamanından tasarruf sağlar.
Gerekirse Serge'nin varsayılan ayrıştırıcılarını özelleştirin. Örneğin, çevirmenlerin görebileceği dize kimlikleri, yorumlar ve ekran görüntülerine bağlantılar oluşturduk.
Yukarıda kararlaştırılan ad maskesine göre yerelleştirme dallarını bulmak için bir cron işi oluşturun.
Kaspresso çerçevesini kullanarak UI testi ve özellik ekran görüntüsü almayı düşünün. Örneğin, geliştiricilerimiz kullandıkları her dize için bir ekran görüntüsü bağlantısı ekler. Dosya Smartcat'e ulaştığında, ekran görüntüsü bağlantısı otomatik olarak Yorumlar sekmesine eklenir. Kaspresso hakkında ve neden kullanmak isteyebileceğiniz hakkında daha fazla bilgiyi burada okuyabilirsiniz.
Yerelleştirme ve dil testi:
Eğer sözlükleriniz varsa, yükleyin Smartcat'e yerelleştirmelerinizde tutarlılık sağlamak için.
Şirket içi dil uzmanlarınızı ekleyin böylece platformu keşfedip işlerinizi almadan önce işin inceliklerini öğrenebilirler.
Freelancer'ları bulun, seçin ve şirketinizin süreçlerine dahil edin, ekran görüntülerini, yorumları, sözlükleri vb. nasıl kullanacaklarını öğrendiklerinden emin olun.
Gerekirse, ek yerelleştirme veya test ihtiyaçları için çeviri ajansları bulun.
Umarım bunlar yardımcı olmuştur — kendi önerileriniz varsa bize bildirin!
Haber bültenimize abone ol




