Skip to content

Instantly share code, notes, and snippets.

@nandilugio
Last active January 6, 2023 10:01
Show Gist options
  • Save nandilugio/a89cb213a27be735cb9a8c2e2bd02c59 to your computer and use it in GitHub Desktop.
Save nandilugio/a89cb213a27be735cb9a8c2e2bd02c59 to your computer and use it in GitHub Desktop.
I18n.t(:foo);
translations = I18n.backend.send(:translations);
def keys(translations, prefix = nil)
list = []
translations.each do |key, val|
full_key = !prefix.nil? ? "#{prefix}.#{key}" : key
if val.is_a?(Hash)
list.push(*keys(val, full_key))
else
list << full_key
end
end
list.map(&:to_s).compact.uniq.sort
end
existing_keys = keys(translations[:en]);
File.write('i18n_existing_keys.json', existing_keys.to_json)
existing_keys = JSON.parse(File.open("../i18n_keys/i18n_existing_keys.json", "rb").read).compact.uniq.sort;
gerbert_not_used_keys = File.readlines('../i18n_keys/gerbert_report_not_used_keys.txt').map(&:strip).map { |key| key[key.index('.')+1..-1] }.compact.uniq.sort;
gerbert_used_keys = existing_keys - gerbert_not_used_keys;
log_used_keys = JSON.parse(File.open("../i18n_keys/i18n_keylogger_post_cms_no_locale_keys.json", "rb").read).compact.uniq.sort;
log_not_used_keys = existing_keys - log_used_keys;
(gerbert_not_used_keys - log_used_keys).count
existing_keys.count
gerbert_not_used_keys.count
gerbert_used_keys.count
log_used_keys.count
c = Api::App::TranslationsController.new
frontend_keys = keys(c.send(:match, frontend_prefixes, "en"));
gerbert_regex_not_used_keys = File.open("../i18n_keys/regexp_report_to_remove.txt", "rb").read.split("\n").compact.uniq.sort;
not_used_keys_intersection = (log_not_used_keys & gerbert_not_used_keys & gerbert_regex_not_used_keys) - frontend_keys;
not_used_keys_intersection.count
keys_to_remove = not_used_keys_intersection.reject { |k| k.starts_with?("mails.") || k.include?("error") };
File.write('i18n_keys_to_remove.json', keys_to_remove.to_json)
keys_to_remove = JSON.parse(File.open("/home/deployer/i18n_keys_to_remove.json", "rb").read).compact.uniq.sort;
###############################
api_client = Phraseapp::ApiClient.new
keys_to_remove.map { |key| api_client.keys_delete(PhraseApp::RequestParams::KeysDeleteParams.new(q: key))[0].try(:records_affected) }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment