mirror of
https://github.com/discourse/discourse.git
synced 2024-11-26 02:40:53 -06:00
Remove unused rake task
This commit is contained in:
parent
0d8c72d8c4
commit
6658a6601c
@ -1,134 +0,0 @@
|
|||||||
require 'yaml'
|
|
||||||
|
|
||||||
desc "show the current translation status"
|
|
||||||
task "i18n:stats" => :environment do
|
|
||||||
|
|
||||||
def to_dotted_hash(source, target = {}, namespace = nil)
|
|
||||||
prefix = "#{namespace}." if namespace
|
|
||||||
if source.kind_of?(Hash)
|
|
||||||
|
|
||||||
# detect pluralizable string
|
|
||||||
if (source["other"] != nil)
|
|
||||||
target[namespace] = { pluralizable: true, content: source }
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
source.each do |key, value|
|
|
||||||
to_dotted_hash(value, target, "#{prefix}#{key}")
|
|
||||||
end
|
|
||||||
else
|
|
||||||
target[namespace] = source
|
|
||||||
end
|
|
||||||
target
|
|
||||||
end
|
|
||||||
|
|
||||||
def compare(a, b, plural_keys)
|
|
||||||
locale1 = /.*\.([^.]{2,})\.yml$/.match(a)[1]
|
|
||||||
locale2 = /.*\.([^.]{2,})\.yml$/.match(b)[1]
|
|
||||||
|
|
||||||
a = YAML.load_file("#{Rails.root}/config/locales/#{a}")[locale1]
|
|
||||||
b = YAML.load_file("#{Rails.root}/config/locales/#{b}")[locale2]
|
|
||||||
a = to_dotted_hash(a)
|
|
||||||
b = to_dotted_hash(b)
|
|
||||||
|
|
||||||
plus = []
|
|
||||||
minus = []
|
|
||||||
same = []
|
|
||||||
total = a.count
|
|
||||||
|
|
||||||
a.each do |key, value|
|
|
||||||
if b[key] == nil
|
|
||||||
minus << key
|
|
||||||
end
|
|
||||||
if a[key] == b[key]
|
|
||||||
same << key
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
b.each do |key, value|
|
|
||||||
if a[key] == nil
|
|
||||||
plus << key
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
a.each do |key, value|
|
|
||||||
if value.kind_of?(Hash)
|
|
||||||
if value[:pluralizable]
|
|
||||||
plural_keys.each do |pl|
|
|
||||||
if b[key] == nil || !b[key].kind_of?(Hash) || b[key][:content][pl] == nil
|
|
||||||
minus << "#{key}.#{pl}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if b[key] != nil && b[key].kind_of?(Hash)
|
|
||||||
b[key][:content].each do |pl, val|
|
|
||||||
if ! plural_keys.include?(pl)
|
|
||||||
if a[key][:content]["zero"] == nil
|
|
||||||
plus << "#{key}.#{pl}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# special handling for zero
|
|
||||||
if a[key][:content]["zero"] != nil
|
|
||||||
if b[key] == nil || !b[key].kind_of?(Hash) || b[key][:content]["zero"] == nil
|
|
||||||
minus << "#{key}.zero"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return plus, minus, same, total
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_plurals(locale)
|
|
||||||
I18n.t("i18n.plural.keys", locale: locale).map { |x| x.to_s }
|
|
||||||
end
|
|
||||||
|
|
||||||
puts "Discourse Translation Status Script"
|
|
||||||
puts "To show details about a specific locale (e.g. 'de'), run as:"
|
|
||||||
puts " rake i18n:stats locale=de"
|
|
||||||
puts ""
|
|
||||||
|
|
||||||
filemask = "client.*.yml"
|
|
||||||
details = false
|
|
||||||
if ENV['locale'] != nil
|
|
||||||
filemask = "client.#{ENV['locale']}.yml"
|
|
||||||
details = true
|
|
||||||
end
|
|
||||||
|
|
||||||
puts " locale | cli+ | cli- | cli= | cli tot| srv+ | srv- | srv= | srv tot"
|
|
||||||
puts "----------------------------------------------------------------------------------"
|
|
||||||
|
|
||||||
Dir["#{Rails.root}/config/locales/#{filemask}"].each do |f|
|
|
||||||
locale = /.*\.([^.]{2,})\.yml$/.match(f)[1]
|
|
||||||
next if locale == "en"
|
|
||||||
next if !File.exists?("#{Rails.root}/config/locales/client.#{locale}.yml")
|
|
||||||
next if !File.exists?("#{Rails.root}/config/locales/server.#{locale}.yml")
|
|
||||||
|
|
||||||
pluralization_keys = get_plurals(locale)
|
|
||||||
|
|
||||||
plus1, minus1, same1, total1 = compare("client.en.yml", "client.#{locale}.yml", pluralization_keys)
|
|
||||||
plus2, minus2, same2, total2 = compare("server.en.yml", "server.#{locale}.yml", pluralization_keys)
|
|
||||||
puts "%10s %8s %8s %8s %8s %8s %8s %8s %8s" % [locale, plus1.count, minus1.count, same1.count, total1,
|
|
||||||
plus2.count, minus2.count, same2.count, total2]
|
|
||||||
|
|
||||||
if details
|
|
||||||
puts ""
|
|
||||||
puts "Equal keys:"
|
|
||||||
same1.each { |k| puts "client: #{locale}.#{k}" }
|
|
||||||
same2.each { |k| puts "server: #{locale}.#{k}" }
|
|
||||||
puts ""
|
|
||||||
puts "Missing keys:"
|
|
||||||
minus1.each { |k| puts "client: #{locale}.#{k}" }
|
|
||||||
minus2.each { |k| puts "server: #{locale}.#{k}" }
|
|
||||||
puts ""
|
|
||||||
puts "Surplus keys:"
|
|
||||||
plus1.each { |k| puts "client: #{locale}.#{k}" }
|
|
||||||
plus2.each { |k| puts "server: #{locale}.#{k}" }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
Loading…
Reference in New Issue
Block a user