2013-05-31 9 views
5

kiedy dodać artykuł w języku koreańskim z tytułu np .: 신품FriendlyID koreańskich ślimaki

FriendlyID klejnot tworzy pusty ślimak i adres URL jest jak /8 ... więc jest to ID. Spójrz na ten link: http://www.srecipe.kr.com/articles/8

Inne języki działają.

Jak uzyskać adres URL, który jest mapowany na łacińskie litery takie jak/this-is-url z 신품?

+0

Odebrano odpowiedź? Nie sądzę! Zostało to oznaczone jako wyłączone i zamknięte. PROSZĘ! –

Odpowiedz

7

Podobnie jak wszystkie te rozwiązania dotyczące permalink, przyjazny identyfikator wykorzystuje metodę parameterize do konwersji ciągu znaków na bezpieczny ciąg znaków URL. tak:

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

Problem pojawia się w przypadku korzystania z innych niż ciągi ASCII, który parametryzacji zastępuje z pustym ciągiem, przyczyną problemu:

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

ActiveSupport zapewnia sposób zmienić niż ciągi ASCII przybliżone przybliżenie za pomocą metody transliterate.

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

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

Ale jeśli nie zna się na postaci, to domyślnie jest?

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

puts transliterate "신품" 
=> ?? 

Można jednak powiedzieć transliteratorowi, jak postępować z bohaterami. Więc w modelu Rails

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

puts transliterate "신품" 
=> "abcdef" 

tak, można użyć transliterate(title).parameterize zamiast tylko parametryzacji. A jeśli dostaniesz alfabet koreański do sekcji transliteratu, będziesz blisko złota.

+0

dla której można użyć http://www.rubydoc.info/gems/unidecode/1.0.0/frames –

+0

Zapomniałem opakować wynikową regułę w cudzysłów: I18n :: InvalidLocaleData: nie można załadować tłumaczeń z config/locales/en.yml: #

2

Nie próbowałem ich jeszcze, ale mam zamiar:

będę wróć kiedy próbowałem im.

+0

Gdzie jest raport? –

+0

Komentarz targowy. Ponad dwa lata później nie mogę sobie przypomnieć, jakie były moje wnioski. Czy uważasz, że powinienem skasować odpowiedź lub zostawić listę repozytoriów na wypadek, gdyby były dla kogoś pomocne? –

+0

Rpoji repo było mi pomocne! Dziękuję za link! –