私は正確に同じ問題を抱えていたように私が最初にこの質問に到着したので、それは何年もされています。問題は小さくならず、私はこれまで以上に挫折しています。
は、ここでは翻訳のルックアップにフックやRedisので翻訳キーカウンタをインクリメントし、実験的なプロジェクトです:
https://github.com/paladinsoftware/i18n-counter
アイデアは、あなたが統計を引っ張ると比較することができるということです。 (現時点ではWIP、私はhelp ofcを愛するでしょう)
あなたは質問するかもしれません: "ルックアップを遅くしませんか?"
あなたは当然ですが、オーバーヘッドはほとんど目立たないので、このベンチマークをチェックしてください。
require 'benchmark'
n = 100000
Benchmark.bm do |x|
x.report { ENV['ENABLE_I18N_COUNTER'] = 'true'; n.times do ; I18n.translate('application.contract_not_available.header'); end }
x.report { ENV['ENABLE_I18N_COUNTER'] = 'false'; n.times do ; I18n.translate('application.contract_not_available.header'); end }
end
---------------------------------------------
| Benchmark | Seconds | Sec pr translation |
|------------| --------- | ------------------ |
| with redis | 48.280000 | 0.0004828 |
| without | 9.010000 | 0.0000901 |
---------------------------------------------
約3 msの参照がオーバーヘッドです。それはあなたがページ/リクエストごとに行うルックアップの数になります。
出典
2017-09-28 14:50:18
oma
あなたは何を意味するのか分かりません。私はファイル内の行について話しています。あなたはデータベースの行について話していますか? –
レールに関する経験はありませんが、私が知っているほとんどのi18nソリューションでは、すべての翻訳可能な文字列をエクスポートする方法があります。すべての翻訳可能な文字列をエクスポートしてから、すべての文字列をループし、使用されていない文字列をチェックします(エクスポートを参照)。 –
2つのローカリゼーションファイルを比較する方法は問いません。私はどのローカリゼーションキーがアプリケーションのコードで使用されているかを確認する方法を尋ねています。 –