Ben çalıştım birçok projeyi başarıyla GNU gettext kullanmış, ama benim en son iş de aniden kendimi gerçekten çok garip yerelleştirme sistemi ile çalışmak zorunda bulduk.
Mevcut sistem veritabanında çeviriler saklar ve yeni bir çeviri eklemek böyle bir şey gider:
- kaynak koduna çeviri tuşu ile, örneğin işlev çağrısı eklemek
print translate('foo');
translations.sql
dosyasına birkaç SQL INSERT ifadeleri ekleyin.- adı ile dosya oluşturmak
(current revision nr + 1).sql
- yürütmek. veritabanında sql dosyası.
- (başkası işlemek ve güncel revizyon numarasını değiştirmek için yönetir önce) değişiklikleri işlemek.
Bütün bu süreç tamamen manuel ve size küçük bir yazım hatası düzeltilmesi gereken zaman bile neredeyse her şeyi tekrar etmek zorunda. Çoğul formlar için destek yoktur. Sadece eklendi ve güncellendi - çeviriler ondan silinmiş olsun neredeyse hiç olarak bütün çeviriler veritabanı oldukça bir karmaşa.
Diğer geliştiricileri (özellikle belli bir dev) ikna için çeşitli argümanlar denedim:
- Ben Gettext kurulmuş standart olmak ve PO dosyaları ile çalışmak için pek çok araç olduğunu konuştuk.
- Ben veritabanında çeviriler saklamak metin dosyasına saklayarak üzerinde hiçbir faydası olduğunu anlatmaya çalıştık - biz sadece anahtar ile veritabanından çeviriler, başka bir şey alınıyor.
- Diğer geliştirici bizim app PHP parçası üzerinde çalışıyor ve PHP ben Gettext desteği yok JavaScript tarafında, üzerinde çalışıyorum, ama ben geçmişte bunun için kendi araçları inşa etmişlerdir içeri Gettext inşa etti.
- Bizim app elle yapılması bile GetText eski sistemden dönüştürme çok zaman alacağını, çok büyük değil ve ben kolayca otomatik olabilir eminim.
- Hatta şirketimizin başarıyla bir küçük app için GetText kullandık.
Ama insanlar hala ikna olmuş değiller. Ne yanlış yapıyor olabilir?
Edit:
Bir kaç ay bu soruyu yazdıktan sonra şimdi nihayet GetText geçiş vardır. Biz fazla iki dilleri desteklemek için gerektiğinde mevcut sistemin dezavantajları şimdiye kadar direnerek bu daha belirgin bacame.