2013-05-31 59 views
5

當我在韓國語中添加文章標題爲例如爲:신품FriendlyID韓國蛞蝓

FriendlyID寶石創建空白蛞蝓和網址就像是/8 ...所以這是ID。看看這個鏈接:http://www.srecipe.kr.com/articles/8

其他語言的工作。

我怎樣才能得到映射到拉丁字母像/這是從신품網址?

+0

有人回答了?我不這麼認爲!這被標記爲脫離主題,並強制關閉。請! –

回答

7

像所有這些永久鏈接解決方案一樣,友好ID使用parameterize方法將字符串轉換爲URL安全字符串。像這樣:

require 'active_support/all' 
puts "Oh Hai There".parameterize 
=> oh-hai-there 

的問題出現在當您使用非ASCII字符串,其參數爲空字符串替換,造成您的問題:

# encoding: UTF-8 
require 'active_support/all' 
puts "신품".parameterize 
=> 

的ActiveSupport提供了一種方法來改變非ASCII字符串通過transliterate方法近似近似。

# encoding: UTF-8 
require 'active_support/all' 
include ActiveSupport::Inflector 

puts transliterate("Ærøskøbing") 
=> AEroskobing 

但是,如果它不知道一個字符,它會默認爲??

# encoding: UTF-8 
require 'active_support/all' 
include ActiveSupport::Inflector 

puts transliterate "신품" 
=> ?? 

但是,你可以告訴音譯如何處理字符。所以在Rails模型

# Store the transliterations in locales/en.yml 
en: 
    i18n: 
    transliterate: 
     rule: 
     신: "abc" 
     품: "def" 

puts transliterate "신품" 
=> "abcdef" 

所以,你可以使用transliterate(title).parameterize而不只是參數。如果你將韓文字母翻譯成音譯部分,那麼你接近金。

+0

您可以使用http://www.rubydoc.info/gems/unidecode/1.0.0/frames –

+0

我忘了將結果規則包含在引號中: I18n :: InvalidLocaleData:無法從config/locales/en.yml:#