5

昨日、地元のJUGで Play 2.0 のプレゼンテーションを行いましたが、(SEO 目的で) ローカライズされた URL を使用できるかどうかを判断できませんでした。

たとえば、/help、/hilfe などは同じコントローラーを指す必要がありますが、テンプレートは異なる言語コンテンツでレンダリングする必要があります。

Play 2.0 でこれを行う方法はありますか?

4

4 に答える 4

3

少なくとも私にとっては創造的だったので、私はあなたの質問が好きです:)このアプローチをチェックしてください。

conf/routes:

GET     /help     controllers.Application.helpIndex(lang = "en")
GET     /hilfe    controllers.Application.helpIndex(lang = "de")

GET     /help/:id     controllers.Application.helpTopic(lang = "en", id: Long)
GET     /hilfe/:id    controllers.Application.helpTopic(lang = "de", id: Long)

controllers/Application.java:

public static Result helpIndex(String lang) {
    return ok("Display help's index in " + lang.toUpperCase());
}

public static Result helpTopic(String lang, Long id) {
    return ok("Display details of help topic no " + id + " in " + lang.toUpperCase());
}

views/someView.scala.html:

<a href="@routes.Application.helpIndex("en")">Help index</a><br/>
<a href="@routes.Application.helpIndex("de")">Hilfe index</a><br/>

<a href="@routes.Application.helpTopic("en", 12)">Help topic no 12</a><br/>
<a href="@routes.Application.helpTopic("de", 12)">Hilfe topic no 12</a>
于 2012-05-04T13:14:47.443 に答える
1

(これは前の回答とは異なるアプローチであるため、別のアプローチとして追加されます)

mapping tableさまざまなパラメータを持つレコードへのフルパスを保存できる、ある種のDBを作成することもできます。

urlpath              record_id    lang
/help/some-topic     12           en
/hilfe/ein-topic     12           de

ファイル内よりも、conf/routes使用を許可するルールを使用する必要がありますDynamic parts spanning several /ルーティングドキュメントを参照)。

GET    /:topic    controller.Application.customDbRouter(topic:String)

'静的'ルールが使用できない場合は、ファイルの最後に上記のルールを配置することで、標準ルーティングメカニズムとカスタムルーティングメカニズムの両方を混在させることもconf/routesできます。その後、マッピングテーブルでそれを見つけようとするか、notFound()結果を返します。

于 2012-05-04T14:52:08.123 に答える
0

私の知る限り、Play 1.2.x では可能でしたが、2.x では不可能でした。つまり、ファイル内のマッピングを複製せずに、EN 用に 1 つ、DE 用に 1 つ追加するなど、不可能です。

SEO のより簡単な代替手段は、サイトマップ ファイル内の URL を「偽造」することです。

したがって、Routes ファイルには

GET  /action/:param/:seo-string   Controller.methodAction(param)

処理では無視されるためseo-string、サイトマップ ファイルにいくつかのリンクを生成します。

/action/1/english-text
/action/1/german-text

これにより、検索エンジンが設定されます。ユーザーには、適切な言語で URL が表示されるように、HTML 5 の履歴を使用して URL を変更できます。

余計な手間ですが、どうしても欲しいなら…

于 2012-05-04T13:21:57.847 に答える