Tentei codificar, mas na verdade o URL pode ser visto bem no endereço do navegador de internet. No entanto, ao copiar ou enviar, o URL real é uma string de escape e não é mais amigável.
Verifiquei o lib/slug.rb e sugiro alterar a função encoded_generator assim:
def self.encoded_generator(string, downcase: true)
# Este gerador irá higienizar quase todos os caracteres especiais,
# incluindo caracteres reservados da RFC3986.
# Veja também URI::REGEXP::PATTERN.
string = I18n.transliterate(string, :locale => SiteSetting.default_locale)
string = string.strip.gsub(/\s+/, "-").gsub(CHAR_FILTER_REGEXP, "")
string = string.downcase if downcase
string
#CGI.escape(string)
end
Tentei com a localidade do Vietnã e obtive os resultados desejados. Espero que funcione com outro idioma.
Acho que esta é uma consideração de compatibilidade. Alguns aplicativos suportam apenas links de texto em latim e cortam diretamente links em texto não latino.
Não sou um escritor de código Ruby, mas li o documento e encontrei isto:
Definindo um Hash em <locale>.yml:
i18n:
transliterate:
rule:
ü: "ue"
ö: "oe"
Portanto, esta é a maneira de personalizar a transliteração nas configurações, no final da função, obtemos apenas texto latino (URL amigável). Tentei com minha língua nativa e não precisei definir a configuração de hash personalizada.