2016-05-13 35 views
1

這是呈現的HTML是什麼樣子:在我HAML文件,我想包括從具有多個鏈接(在相同的字符串)一個YML文件中的字符串

<p>The <a href="http://example.com/one.html">first link</a> and the <a href="http://example.com/two.html">second link</a> are both in this string.</p> 

...怎樣使YML和HAML看起來像?

注:我已經想出瞭如何讓一個字符串與單個鏈接,但我很困惑如何設置多個鏈接。

我認爲YAML可能是這樣的:

example_text_html: "The <a href='%{link1}' target='_blank'>first link</a> and the <a href='%{link2}' target='_blank'>second link</a> are both in this string." 

這是我認爲的HAML可能看起來像:

%p 
    = t(:example_text_html, link1:"https://www.example.com/one.html", link2:"http://example.com/two.html") 

我得到了一個語法錯誤,當我試過了。

回答

1

我建議在YAML語言環境文件中僅保留翻譯本身的內容(即「第一鏈接」等),並將鏈接信息保留在視圖中。另外,由於「第一鏈接」和「第二鏈接」的內容可能會在語言環境中發生變化,因此您可能需要單獨的語言環境條目。

把所有這些組合起來,你可以這樣做:

配置/區域設置/ en.yml

en: 
    first_link: first link 
    second_link: second link 
    example_text_html: The %{first_link} and the %{second_link} are both in this string that could get translated to have very different grammar. 

應用程序/視圖/ your_view.html.haml

%p 
    = t('example_text_html', 
     first_link: link_to(t('first_link'), 'http://example.com/one.html', target: :blank), 
     second_link: link_to(t('second_link'), 'http://example.com/two.html', target: :blank)) 

如果看起來有點長,可以創建一些助手來清理它。也許是這樣的:

應用程序/傭工/ your_helper.rb

def first_link 
    link_to(t('first_link'), 'http://example.com/one.html', target: :blank) 
end 

def second_link 
    link_to(t('second_link'), 'http://example.com/two.html', target: :blank) 
end 

,那麼你可以重構視圖看起來是這樣的:

應用程序/視圖/ your_view.html.haml

%p 
    = t('example_text_html', first_link: first_link, second_link: second_link) 
+0

我會試試這個!謝謝!! – pixelfairy

+0

我必須將_html部分添加到變量嗎? – pixelfairy

+0

我假設你的意思是添加'_html'到YAML鍵?由於這些解決方案中不包含HTML,因此您不需要這些解決方案。有關在Rails中使用安全HTML翻譯的更多信息,請參見[here](http://guides.rubyonrails.org/i18n.html#using-safe-html-translations)。 –

相關問題