mirror of
https://github.com/elastic/logstash.git
synced 2025-04-24 06:37:19 -04:00
Add i18n filter with trasliterate support
This commit is contained in:
parent
fd3ab9166d
commit
6e4812d92b
2 changed files with 76 additions and 0 deletions
51
lib/logstash/filters/i18n.rb
Normal file
51
lib/logstash/filters/i18n.rb
Normal file
|
@ -0,0 +1,51 @@
|
|||
# encoding: utf-8
|
||||
require "i18n"
|
||||
require "logstash/filters/base"
|
||||
require "logstash/namespace"
|
||||
|
||||
# The i18n filter allows you to remove special characters from
|
||||
# from a field
|
||||
class LogStash::Filters::I18n < LogStash::Filters::Base
|
||||
config_name "i18n"
|
||||
milestone 0
|
||||
|
||||
# Replaces non-ASCII characters with an ASCII approximation, or
|
||||
# if none exists, a replacement character which defaults to “?”
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# filter {
|
||||
# i18n {
|
||||
# transliterate => ["field1", "field2"]
|
||||
# }
|
||||
# }
|
||||
config :transliterate, :validate => :array
|
||||
|
||||
public
|
||||
def register
|
||||
end # def register
|
||||
|
||||
public
|
||||
def filter(event)
|
||||
return unless filter?(event)
|
||||
|
||||
transliterate(event) if @transliterate
|
||||
|
||||
filter_matched(event)
|
||||
end # def filter
|
||||
|
||||
private
|
||||
def transliterate(event)
|
||||
@transliterate.each do |field|
|
||||
if event[field].is_a?(Array)
|
||||
event[field].map! { |v| I18n.transliterate(v).encode('UTF-8') }
|
||||
elsif event[field].is_a?(String)
|
||||
event[field] = I18n.transliterate(event[field].encode('UTF-8'))
|
||||
else
|
||||
@logger.debug("Can't transliterate something that isn't a string",
|
||||
:field => field, :value => event[field])
|
||||
end
|
||||
end
|
||||
end # def transliterate
|
||||
|
||||
end # class LogStash::Filters::I18n
|
25
spec/filters/i18n.rb
Normal file
25
spec/filters/i18n.rb
Normal file
|
@ -0,0 +1,25 @@
|
|||
# encoding: utf-8
|
||||
require "test_utils"
|
||||
require "logstash/filters/i18n"
|
||||
|
||||
describe LogStash::Filters::I18n do
|
||||
extend LogStash::RSpec
|
||||
|
||||
describe "transliterate" do
|
||||
config <<-CONFIG
|
||||
filter {
|
||||
i18n {
|
||||
transliterate => [ "transliterateme" ]
|
||||
}
|
||||
}
|
||||
CONFIG
|
||||
|
||||
event = {
|
||||
"transliterateme" => [ "Ærøskøbing" ]
|
||||
}
|
||||
|
||||
sample event do
|
||||
insist { subject["transliterateme"] } == [ "AEroskobing" ]
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue