4

Rails 3 を使用して Gitorious を起動して実行しようとしていますが、問題が発生しました。

ビューにこの行があります。

<p><%= t("views.commits.message").call(self, tree_path(@commit.id)) %></p>

対応するロケール行は次のようになります [ config/locales/en.rb]

 :message => lambda { |this, path| "This is the initial commit in this repository, " +
      this.link_to( "browse the initial tree state", path ) + "." }

ここでの問題は、ラムダ メソッドが#callビューで使用して呼び出されていないことです。他の誰かによって呼び出されています。つまり、それが渡されているthisわけではありません。self

thisを含むviews.commits.messageおよびpath含む{:rescue_format=>:html}。Gitorious チームは、アプリケーション全体でこのアプローチを使用しています。つまり、フォーム作業に 1 日もかからずにロジックをヘルパー メソッドに移動することはできません。

私はいくつかの調査を行い、正確な行に関するこのスレッドを見つけました。

これが問題の答えでした。

これは、システムに i18n gem がインストールされていることを示しているようです。この gem は Gitorious と互換性がありません。Rubygems でアンインストールすると、問題が解決するはずです。

をアンインストールしようとしましi18nたが、実行bundle installすると再度インストールされます。

700 行のロケール ファイルをリファクタリングせずに、この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

これはよくある問題で、複雑にネストされたテキストを分割する方法です。

マークダウンを使用して単純化する

This is the initial commit in this repository
[browse the initial tree state](http://example.com/some/path)
.

おそらく中国語では、代わりに次のように言うでしょう。

这是第一个提交在这个知识库
[看初始状态](http://example.com/some/path)
。

3 つのことを考慮する必要があります。

  1. 外側のテキスト
  2. リンクテキスト
  3. この二人の順番と位置

テキストに対するリンクの位置を変更する必要がない場合、@WattsInABox は正しいです。

views.commits.message: "This is the initial commit in this repository"
views.commits.browse:  "browse the initial tree state"

あとは作曲するだけ

<p>
  <%= t "views.commits.message" %>
  <%= link_to t("views.commits.browse"), tree_path(@commit.id) %>
  .
</p>

ただし、順序と位置が重要な場合もあります。その場合は、より賢くしようとすることができます。

views.commits.message: "This is the initial commit in this repository %{link}"
views.commits.browse:  "browse the initial tree state"

次に、適切な場所でリンクを補間できます

<p>
  <%= t "views.commits.message", link: link_to(t("views.commits.browse"), tree_path(@commit.id)) %>
</p>
于 2013-01-28T00:56:58.567 に答える