2012-05-03 19 views
5

Gettext kullanarak birkaç transplantasyon yaptığım bir web uygulamasına sahibim. Ama şimdi uygulamanın büyük bir yeniden yazımını yaptım ve dizelerin çoğu aynıyken, aynı zamanda önemli ölçüde değiştirilmiş ya da kaldırılmış bir kaç tane de var.Kullanılmayan gettext dizelerini otomatik olarak nasıl alırım?

.po dosyalarını oluşturmak için xgettext kullanıyorum ve kodda yeni dizeleri bulabilmek ve bunları .po dosyalarına ekleyebilmek harika. Ancak, dizeleri kaldırmak için bir seçenek göremiyorum. kodda bulundu.

Dizeleri artık kodda olmayan .po dosyalarından kaldırmanın otomatik bir yolu var mı?

+1

Bu otomatik değil, ancak etraftaki işim xgettext dosyasını iki kez çalıştırmak. İlk çalıştırma --no-location parametresini kullanıyorum. İkinci çalışma konumu tekrar dosyalara yerleştirir. Artık kullanılmayan metin dizileri bir yere sahip değildir ve silinmek üzere kolayca tanımlanabilir. – getSurreal

cevap

0

Сan yüzden

find . -name '*.po' -print0 | while read -d '' -r file; do msgattrib --output-file="$file" --no-obsolete "$file"; done 
3

var, seni messages.pot adlı bir dosyada nihai PO katalog olması ve message.po yılında PO katalog hedeflemesi gerektiğini sadece dizeleri içeren taze bir PO şablon dosyası var düşünürsek Bunu yapmak:

msgattrib --set-obsolete --ignore-file=messages.pot -o messages.po messages.po 

Bu, tüm eski dizeleri işaretler. --set-obsolete anahtarı, hedef dosyasındaki tüm dizelere eski bayrağını uygulamak için msgattrib'e bildirir ve --ignore-file, belirtilen dosyada (dizimizdeki PO şablonu) görünen dizeleri yok saymasını söyler.

msgattrib --no-obsolete -o messages.po messages.po 

Daha konusunda msgattrib komutu here okuyabilir:

da onları tamamen kaldırmak istiyorsanız

, bir adım daha var.

İlgili konular