2017-01-25 39 views
1

私はYAMLを初めて使いました。私は言語翻訳のためのいくつかのテストを試しています。私は同じテキストの英語版とウェールズ語版を持つYAMLファイルを持っているという考えです。私はどのようにYAMLの文字列内で正規表現を使うべきか、私は疑問に思っていましたか?YamlのRuby正規表現

例:

#Gherkin 
And I expect to see payment confirmation for "Dave" 

#Step Def 
    And /^I expect to see payment confirmation for "(.*?)"$/ do |user| 
     expect(page).to have_text "Payment successful for #{user} - Reference: 000000" 
end 

YAMLエントリ::

"Payment successful for Dave reference: 000000" 
- welsh: "Taliad llwyddiannus ar gyfer Dave Cyfeirnod: 000000" 

テストスイートは、数百人のユーザーを対象として、私はそのYAMLエントリにデイブをパラメータでし

私は、この基本的なテストを持っています。

おかげ

+0

少し良くしたいことを説明できますか? 可能なすべてのYAMLエントリに対応するようにテストを変更するか、補間されたテキストを持つことができるYAMLを作成するかどうかはわかりません。 また、コード例は有効なRSpec構文のようではありませんが、それも更新できますか? –

+0

可能であれば、私はYAMLの補間されたテキストを望みます。 Capybara内のRSpec-Expectationsを使用すると、ページ上の簡単なテキストアサーションの構文になります。 – Tom

答えて

5

あなたはYAMLにテキストを補間したい場合、あなたはキーワードが補間するデータを示すために使用されるキーである%{keyword}で補間したい単語を交換する必要があります。

Railsを使用する場合は、this section of the I18n guideに概略を示した0​​ヘルパーメソッドを使用します。

# The YAML file 
en: 
    payment_succeeded: "Payment successful for %{first_name} reference: %{reference_number}" 
wh: 
    payment_succeeded: "Taliad llwyddiannus ar gyfer %{first_name} Cyfeirnod: %{reference_number}" 

# Rails Controller/View/Model 
t(:payment_succeeded, first_name: 'Dave', reference_number: '000000') 

純粋なルビーの実装を希望する場合はKernel::formatメソッドを使用できます。

# The YAML file 
# NOTE: This can be in any format, as long as you use %{keyword} in places where you want the data to be interpolated 
translations: 
    english: "Payment successful for %{first_name} reference: %{reference_number}" 
    welsh: "Taliad llwyddiannus ar gyfer %{first_name} Cyfeirnod: %{reference_number}" 

# Ruby 
translations = YAML.load(File.read('translations.yaml')) 
string = format(translations[:translations][:welsh], first_name: 'Dave', reference_number: '000000') 

希望します。

+0

私はこれを試してくれます、ありがとう – Tom