未验证 提交 878e9809 编写于 作者: R Rafael França 提交者: GitHub

Merge pull request #35571 from KaanOzkan/ko-parameterize-locale

Add locale option to #parameterize
......@@ -162,6 +162,11 @@ def deconstantize
# Replaces special characters in a string so that it may be used as part of a 'pretty' URL.
#
# If the optional parameter +locale+ is specified,
# the word will be parameterized as a word of that language.
# By default, this parameter is set to <tt>nil</tt> and it will use
# configured I18n.locale
#
# class Person
# def to_param
# "#{id}-#{name.parameterize}"
......@@ -187,8 +192,8 @@ def deconstantize
#
# <%= link_to(@person.name, person_path) %>
# # => <a href="/person/1-Donald-E-Knuth">Donald E. Knuth</a>
def parameterize(separator: "-", preserve_case: false)
ActiveSupport::Inflector.parameterize(self, separator: separator, preserve_case: preserve_case)
def parameterize(separator: "-", preserve_case: false, locale: nil)
ActiveSupport::Inflector.parameterize(self, separator: separator, preserve_case: preserve_case, locale: locale)
end
# Creates the name of a table like Rails does for models to table names. This method
......
......@@ -51,19 +51,18 @@ module Inflector
#
# Now you can have different transliterations for each locale:
#
# I18n.locale = :en
# transliterate('Jürgen')
# transliterate('Jürgen', locale: :en)
# # => "Jurgen"
#
# I18n.locale = :de
# transliterate('Jürgen')
# transliterate('Jürgen', locale: :de)
# # => "Juergen"
def transliterate(string, replacement = "?")
def transliterate(string, replacement = "?", locale: nil)
raise ArgumentError, "Can only transliterate strings. Received #{string.class.name}" unless string.is_a?(String)
I18n.transliterate(
ActiveSupport::Multibyte::Unicode.tidy_bytes(string).unicode_normalize(:nfc),
replacement: replacement
replacement: replacement,
locale: locale
)
end
......@@ -89,9 +88,9 @@ def transliterate(string, replacement = "?")
# parameterize("^très|Jolie-- ", separator: "_") # => "tres_jolie--"
# parameterize("^très_Jolie-- ", separator: ".") # => "tres_jolie--"
#
def parameterize(string, separator: "-", preserve_case: false)
def parameterize(string, separator: "-", preserve_case: false, locale: nil)
# Replace accented chars with their ASCII equivalents.
parameterized_string = transliterate(string)
parameterized_string = transliterate(string, locale)
# Turn unwanted chars into the separator.
parameterized_string.gsub!(/[^a-z0-9\-_]+/i, separator)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册