# translation of Framework.po to Japanese
# Noriko Mizumoto <noriko@redhat.com>, 2007, 2008, 2009.
msgid ""
msgstr ""
"Project-Id-Version: Framework\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-05-25 20:06+0000\n"
"PO-Revision-Date: 2009-02-20 17:56+1000\n"
"Last-Translator: Noriko Mizumoto <noriko@redhat.com>\n"
"Language-Team: Japanese <fedora-trans-ja@redhat.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"

#. Tag: title
#: Framework.xml:6
#, no-c-format
msgid "The Seam Application Framework"
msgstr "Seamアプリケーションフレームワーク"

#. Tag: para
#: Framework.xml:8
#, no-c-format
msgid ""
"Seam makes it really easy to create applications by writing plain Java "
"classes with annotations, which don't need to extend any special interfaces "
"or superclasses. But we can simplify some common programming tasks even "
"further, by providing a set of pre-built components which can be re-used "
"either by configuration in <literal>components.xml</literal> (for very "
"simple cases) or extension."
msgstr ""
"Seam は特殊なインタフェースやスーパークラスを拡張することなく、 純粋な Java "
"クラスにアノテーションを付記することにより簡単にアプリケーションを作成するこ"
"とができます。 しかし、 <literal>components.xml</literal>の設定 (簡単な場合に"
"は) や機能の拡張により再利用する事ができる既成のコンポーネントを提供すること"
"で、 お決まりのプログラムについてさらに簡単に作成できるようにすることができま"
"す。"

#. Tag: para
#: Framework.xml:18
#, no-c-format
msgid ""
"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
"code you need to write when doing basic database access in a web "
"application, using either Hibernate or JPA."
msgstr ""
"<emphasis>Seamアプリケーションフレームワーク</emphasis>は、 JPA やHibernae を"
"使ったデータベースへのアクセスに関わる基本的なプログラムのコード量を削減する"
"ことができます。"

#. Tag: para
#: Framework.xml:24
#, fuzzy, no-c-format
msgid ""
"We should emphasize that the framework is extremely simple, just a handful "
"of simple classes that are easy to understand and extend. The \"magic\" is "
"in Seam itself &#8212; the same magic you use when creating any Seam "
"application even without using this framework."
msgstr ""
"このフレームワークは理解も容易で、拡張し易く簡単ないくつかのクラスから構成さ"
"れています。 Seam そのものが「マジック」なのです &#8212; このフレームワークを"
"使わなくても Seam アプリケーションを作成するときには同様のマジックを使用して"
"いるのです。"

#. Tag: title
#: Framework.xml:33
#, no-c-format
msgid "Introduction"
msgstr "はじめに"

#. Tag: para
#: Framework.xml:35
#, no-c-format
msgid ""
"The components provided by the Seam application framework may be used in one "
"of two different approaches. The first way is to install and configure an "
"instance of the component in <literal>components.xml</literal>, just like we "
"have done with other kinds of built-in Seam components. For example, the "
"following fragment from <literal>components.xml</literal> installs a "
"component which can perform basic CRUD operations for a <literal>Person</"
"literal> entity:"
msgstr ""
"Seam アプリケーションフレームワークの提供するコンポーネントは、 二つの使い方"
"のいずれかで利用することができます。 第一の方法は、 他の Seam の組み込みコン"
"ポーネントで行っているように、 <literal>components.xml</literal> でコンポーネ"
"ントのインスタンスをインストールし設定する方法です。 たとえば、 以下の "
"<literal>components.xml</literal> 設定の一部では <literal>Person</literal> エ"
"ンティティに対する基本的な CRUD 操作を実行できる 1 コンポーネントをインストー"
"ルしています。"

#. Tag: programlisting
#: Framework.xml:47
#, no-c-format
msgid ""
"<![CDATA[<framework:entity-home name=\"personHome\" \n"
"                       entity-class=\"eg.Person\" \n"
"                       entity-manager=\"#{personDatabase}\">\n"
"    <framework:id>#{param.personId}</framework:id>\n"
"</framework:entity-home>]]>"
msgstr ""
"<![CDATA[<framework:entity-home name=\"personHome\" \n"
"                       entity-class=\"eg.Person\" \n"
"                       entity-manager=\"#{personDatabase}\">\n"
"    <framework:id>#{param.personId}</framework:id>\n"
"</framework:entity-home>]]>"

#. Tag: para
#: Framework.xml:49
#, no-c-format
msgid ""
"If that looks a bit too much like \"programming in XML\" for your taste, you "
"can use extension instead:"
msgstr ""
"上記が「XML でのプログラミング」に偏重しているように思える場合は、 代りにコー"
"ドを拡張して使用することもできます。"

#. Tag: programlisting
#: Framework.xml:54
#, no-c-format
msgid ""
"<![CDATA[@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> {\n"
"    \n"
"   @In EntityManager personDatabase;\n"
"    \n"
"   public EntityManager getEntityManager() {\n"
"      return personDatabase; \n"
"   }\n"
"    \n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> {\n"
"    \n"
"   @In EntityManager personDatabase;\n"
"    \n"
"   public EntityManager getEntityManager() {\n"
"      return personDatabase; \n"
"   }\n"
"    \n"
"}]]>"

#. Tag: para
#: Framework.xml:56
#, no-c-format
msgid ""
"The second approach has one huge advantage: you can easily add extra "
"functionality, and override the built-in functionality (the framework "
"classes were carefully designed for extension and customization)."
msgstr ""
"第二の方法 (機能の拡張を使う) は大きなメリットとして、簡単に拡張したり、内蔵"
"された機能をオーバーライドすることができます。 (このフレームワークの提供する"
"クラスは、拡張や、カスタム化に対応できるよう、注意深く作成されています。)"

#. Tag: para
#: Framework.xml:63
#, no-c-format
msgid ""
"A second advantage is that your classes may be EJB stateful session beans, "
"if you like. (They do not have to be, they can be plain JavaBean components "
"if you prefer.) If you are using JBoss AS, you'll need 4.2.2.GA or later:"
msgstr ""
"また、 必要に応じてクラスを EJB のステートフルセッション Bean にできるという"
"メリットもあります。 (必ずEJBにする必要はなく、好みで、プレーンなJavaBeanとす"
"ることもできます。) JBoss AS を使用される場合、4.2.2.GAあるいはそれ以降のバー"
"ジョンが必須です。"

#. Tag: programlisting
#: Framework.xml:70
#, no-c-format
msgid ""
"<![CDATA[@Stateful\n"
"@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> implements "
"LocalPersonHome {\n"
"    \n"
"}]]>"
msgstr ""
"<![CDATA[@Stateful\n"
"@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> implements "
"LocalPersonHome {\n"
"    \n"
"}]]>"

#. Tag: para
#: Framework.xml:72
#, no-c-format
msgid ""
"You can also make your classes stateless session beans. In this case you "
"<emphasis>must</emphasis> use injection to provide the persistence context, "
"even if it is called <literal>entityManager</literal>:"
msgstr ""
"クラスをステートレスセッション Bean にすることもできます。 この場合、 その名"
"前が <literal>entityManager</literal> であってもインジェクションを使って永続"
"コンテキストを<emphasis>提供しなければなりません</emphasis>。"

#. Tag: programlisting
#: Framework.xml:79
#, no-c-format
msgid ""
"<![CDATA[@Stateless\n"
"@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> implements "
"LocalPersonHome {\n"
"    \n"
"   @In EntityManager entityManager;\n"
"    \n"
"   public EntityManager getPersistenceContext() { \n"
"      entityManager; \n"
"   }\n"
"    \n"
"}]]>"
msgstr ""
"<![CDATA[@Stateless\n"
"@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> implements "
"LocalPersonHome {\n"
"    \n"
"   @In EntityManager entityManager;\n"
"    \n"
"   public EntityManager getPersistenceContext() { \n"
"      entityManager; \n"
"   }\n"
"    \n"
"}]]>"

#. Tag: para
#: Framework.xml:81
#, no-c-format
msgid ""
"At this time, the Seam Application Framework provides four main built-in "
"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
"literal> for CRUD, along with <literal>EntityQuery</literal> and "
"<literal>HibernateEntityQuery</literal> for queries."
msgstr ""
"現時点で、Seamアプリケーションフレームワークは、CRUD 用に"
"<literal>EntityHome</literal> と<literal>HibernateEntityHome</literal>、それ"
"にQueryのための<literal>EntityQuery</literal> と "
"<literal>HibernateEntityQuery</literal>の4つの組み込みメインコンポーネントを"
"提供しています。"

#. Tag: para
#: Framework.xml:89
#, no-c-format
msgid ""
"The Home and Query components are written so that they can function with a "
"scope of session, event or conversation. Which scope you use depends upon "
"the state model you wish to use in your application."
msgstr ""
"HomeとQueryはセッション、イベント、それに対話スコープで機能するように作成され"
"ています。 どのスコープを使用するかは、アプリケーションのステートモデルに依存"
"します。"

#. Tag: para
#: Framework.xml:95
#, no-c-format
msgid ""
"The Seam Application Framework only works with Seam-managed persistence "
"contexts. By default, the components will look for a persistence context "
"named <literal>entityManager</literal>."
msgstr ""
"SeamアプリケーションフレームワークはSeamが管理している永続性コンテキストでの"
"み動作します。 デフォルトで、<literal>entityManager</literal>という名前の永続"
"性コンテキストを探します。"

#. Tag: title
#: Framework.xml:104
#, no-c-format
msgid "Home objects"
msgstr "Homeオブジェクト"

#. Tag: para
#: Framework.xml:106
#, no-c-format
msgid ""
"A Home object provides persistence operations for a particular entity class. "
"Suppose we have our trusty <literal>Person</literal> class:"
msgstr ""
"Homeオブジェクトは、特定のエンティティクラスに対する永続性操作を提供します。"
"<literal>Person</literal>クラスについて考えてみましょう。"

#. Tag: programlisting
#: Framework.xml:111
#, no-c-format
msgid ""
"<![CDATA[@Entity\n"
"public class Person {\n"
"    @Id private Long id;\n"
"    private String firstName;\n"
"    private String lastName;\n"
"    private Country nationality;\n"
"    \n"
"    //getters and setters...\n"
"}]]>"
msgstr ""
"<![CDATA[@Entity\n"
"public class Person {\n"
"    @Id private Long id;\n"
"    private String firstName;\n"
"    private String lastName;\n"
"    private Country nationality;\n"
"    \n"
"    //getters and setters...\n"
"}]]>"

#. Tag: para
#: Framework.xml:113
#, no-c-format
msgid ""
"We can define a <literal>personHome</literal> component either via "
"configuration:"
msgstr ""
"構成ファイルで、下のように<literal>personHome</literal>コンポーネントを定義す"
"ることができます。"

#. Tag: programlisting
#: Framework.xml:118
#, no-c-format
msgid ""
"<![CDATA[<framework:entity-home name=\"personHome\" entity-class=\"eg.Person"
"\" />]]>"
msgstr ""
"<![CDATA[<framework:entity-home name=\"personHome\" entity-class=\"eg.Person"
"\" />]]>"

#. Tag: para
#: Framework.xml:120
#, no-c-format
msgid "Or via extension:"
msgstr "また、機能を拡張して下のように、同様のことができます。"

#. Tag: programlisting
#: Framework.xml:124
#, no-c-format
msgid ""
"<![CDATA[@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> {}]]>"
msgstr ""
"<![CDATA[@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> {}]]>"

#. Tag: para
#: Framework.xml:126
#, no-c-format
msgid ""
"A Home object provides the following operations: <literal>persist()</"
"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
"literal>, or <literal>update()</literal> operations, you must first set the "
"identifier of the object you are interested in, using the <literal>setId()</"
"literal> method."
msgstr ""
"Home オブジェクトは <literal>persist()</literal>、 <literal>remove()</"
"literal>、 <literal>update()</literal>、 <literal>getInstance()</literal> の "
"オペレーションを提供します。 <literal>remove()</literal>、あるいは "
"<literal>update()</literal> を呼び出す前にまず <literal>setId()</literal> メ"
"ソッドを用いて対象のオブジェクトの識別子をセットする必要があります。"

#. Tag: para
#: Framework.xml:135
#, no-c-format
msgid "We can use a Home directly from a JSF page, for example:"
msgstr "Home は JSF ページから、下のように直接利用することができます。"

#. Tag: programlisting
#: Framework.xml:139
#, no-c-format
msgid ""
"<![CDATA[<h1>Create Person</h1>\n"
"<h:form>\n"
"    <div>First name: <h:inputText value=\"#{personHome.instance.firstName}\"/"
"></div>\n"
"    <div>Last name: <h:inputText value=\"#{personHome.instance.lastName}\"/"
"></div>\n"
"    <div>\n"
"        <h:commandButton value=\"Create Person\" action=\"#{personHome."
"persist}\"/>\n"
"    </div>\n"
"</h:form>]]>"
msgstr ""
"<![CDATA[<h1>Create Person</h1>\n"
"<h:form>\n"
"    <div>First name: <h:inputText value=\"#{personHome.instance.firstName}\"/"
"></div>\n"
"    <div>Last name: <h:inputText value=\"#{personHome.instance.lastName}\"/"
"></div>\n"
"    <div>\n"
"        <h:commandButton value=\"Create Person\" action=\"#{personHome."
"persist}\"/>\n"
"    </div>\n"
"</h:form>]]>"

#. Tag: para
#: Framework.xml:141
#, no-c-format
msgid ""
"Usually, it is much nicer to be able to refer to the <literal>Person</"
"literal> merely as <literal>person</literal>, so let's make that possible by "
"adding a line to <literal>components.xml</literal>:"
msgstr ""
"通常、<literal>Person</literal>は<literal>person</literal>で参照できた方が便"
"利ですので、<literal>components.xml</literal>に下のように一行加えて、そのよう"
"にしましょう。"

#. Tag: programlisting
#: Framework.xml:147
#, no-c-format
msgid ""
"<![CDATA[<factory name=\"person\" \n"
"         value=\"#{personHome.instance}\"/>\n"
"\n"
"<framework:entity-home name=\"personHome\" \n"
"                       entity-class=\"eg.Person\" />]]>"
msgstr ""
"<![CDATA[<factory name=\"person\" \n"
"         value=\"#{personHome.instance}\"/>\n"
"\n"
"<framework:entity-home name=\"personHome\" \n"
"                       entity-class=\"eg.Person\" />]]>"

#. Tag: para
#: Framework.xml:149
#, no-c-format
msgid ""
"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
"method to <literal>PersonHome</literal>:"
msgstr ""
"(構成ファイルを使用している場合、) <literal>PersonHome</literal> に "
"<literal>@Factory</literal> を追加します。"

#. Tag: programlisting
#: Framework.xml:154
#, no-c-format
msgid ""
"<![CDATA[@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> {\n"
"    \n"
"    @Factory(\"person\")\n"
"    public Person initPerson() { return getInstance(); }\n"
"    \n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> {\n"
"    \n"
"    @Factory(\"person\")\n"
"    public Person initPerson() { return getInstance(); }\n"
"    \n"
"}]]>"

#. Tag: para
#: Framework.xml:156
#, no-c-format
msgid ""
"(If we are using extension.) This change simplifies our JSF page to the "
"following:"
msgstr ""
"(機能を拡張している場合) これで、下のように JSF ページの記述が簡単になりま"
"す。"

#. Tag: programlisting
#: Framework.xml:161
#, no-c-format
msgid ""
"<![CDATA[<h1>Create Person</h1>\n"
"<h:form>\n"
"    <div>First name: <h:inputText value=\"#{person.firstName}\"/></div>\n"
"    <div>Last name: <h:inputText value=\"#{person.lastName}\"/></div>\n"
"    <div>\n"
"        <h:commandButton value=\"Create Person\" action=\"#{personHome."
"persist}\"/>\n"
"    </div>\n"
"</h:form>]]>"
msgstr ""
"<![CDATA[<h1>Create Person</h1>\n"
"<h:form>\n"
"    <div>First name: <h:inputText value=\"#{person.firstName}\"/></div>\n"
"    <div>Last name: <h:inputText value=\"#{person.lastName}\"/></div>\n"
"    <div>\n"
"        <h:commandButton value=\"Create Person\" action=\"#{personHome."
"persist}\"/>\n"
"    </div>\n"
"</h:form>]]>"

#. Tag: para
#: Framework.xml:163
#, no-c-format
msgid ""
"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
"is all the code that is required! Now, if we want to be able to display, "
"update and delete pre-existing <literal>Person</literal> entries in the "
"database, we need to be able to pass the entry identifier to the "
"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
msgstr ""
"これで、<literal>Person</literal>の新しいエントリを作成することができるように"
"なります。 はい、これですべてです。 次に、表示、更新、それに削除機能を既存の"
"データベースの <literal>Person</literal>エントリ操作に追加するためには、"
"<literal>PersonHome</literal>に対象のエントリを特定する識別子を伝える必要があ"
"ります。 下のように、ページパラメータを使って、これを行います。"

#. Tag: programlisting
#: Framework.xml:172
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/editPerson.jsp\">\n"
"        <param name=\"personId\" value=\"#{personHome.id}\"/>\n"
"    </page>\n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/editPerson.jsp\">\n"
"        <param name=\"personId\" value=\"#{personHome.id}\"/>\n"
"    </page>\n"
"</pages>]]>"

#. Tag: para
#: Framework.xml:174
#, no-c-format
msgid "Now we can add the extra operations to our JSF page:"
msgstr "これで、JSFページにこれらの機能を追加することができます。"

#. Tag: programlisting
#: Framework.xml:178
#, no-c-format
msgid ""
"<![CDATA[<h1>\n"
"    <h:outputText rendered=\"#{!personHome.managed}\" value=\"Create Person"
"\"/>\n"
"    <h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person\"/"
">\n"
"</h1>\n"
"<h:form>\n"
"    <div>First name: <h:inputText value=\"#{person.firstName}\"/></div>\n"
"    <div>Last name: <h:inputText value=\"#{person.lastName}\"/></div>\n"
"    <div>\n"
"        <h:commandButton value=\"Create Person\" action=\"#{personHome."
"persist}\" rendered=\"#{!personHome.managed}\"/>\n"
"        <h:commandButton value=\"Update Person\" action=\"#{personHome."
"update}\" rendered=\"#{personHome.managed}\"/>\n"
"        <h:commandButton value=\"Delete Person\" action=\"#{personHome."
"remove}\" rendered=\"#{personHome.managed}\"/>\n"
"    </div>\n"
"</h:form>]]>"
msgstr ""
"<![CDATA[<h1>\n"
"    <h:outputText rendered=\"#{!personHome.managed}\" value=\"Create Person"
"\"/>\n"
"    <h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person\"/"
">\n"
"</h1>\n"
"<h:form>\n"
"    <div>First name: <h:inputText value=\"#{person.firstName}\"/></div>\n"
"    <div>Last name: <h:inputText value=\"#{person.lastName}\"/></div>\n"
"    <div>\n"
"        <h:commandButton value=\"Create Person\" action=\"#{personHome."
"persist}\" rendered=\"#{!personHome.managed}\"/>\n"
"        <h:commandButton value=\"Update Person\" action=\"#{personHome."
"update}\" rendered=\"#{personHome.managed}\"/>\n"
"        <h:commandButton value=\"Delete Person\" action=\"#{personHome."
"remove}\" rendered=\"#{personHome.managed}\"/>\n"
"    </div>\n"
"</h:form>]]>"

#. Tag: para
#: Framework.xml:180
#, no-c-format
msgid ""
"When we link to the page with no request parameters, the page will be "
"displayed as a \"Create Person\" page. When we provide a value for the "
"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
"page."
msgstr ""
"要求パラメータ無しでページにリンクした場合、「Person作成」としてページが表示"
"され、<literal>personId</literal> を要求パラメータとして渡した場合には、"
"「Person編集」としてページが表示されます。"

#. Tag: para
#: Framework.xml:187
#, no-c-format
msgid ""
"Suppose we need to create <literal>Person</literal> entries with their "
"nationality initialized. We can do that easily, via configuration:"
msgstr ""
"<literal>Person</literal> エントリの nationality を初期化して作成しなければな"
"らない場合を考えてみましょう。これも簡単にできます。 構成ファイルを使う場合"
"は；"

#. Tag: programlisting
#: Framework.xml:192
#, no-c-format
msgid ""
"<![CDATA[<factory name=\"person\" \n"
"         value=\"#{personHome.instance}\"/>\n"
"\n"
"<framework:entity-home name=\"personHome\" \n"
"                       entity-class=\"eg.Person\" \n"
"                       new-instance=\"#{newPerson}\"/>\n"
"\n"
"<component name=\"newPerson\" \n"
"           class=\"eg.Person\">\n"
"    <property name=\"nationality\">#{country}</property>\n"
"</component>]]>"
msgstr ""
"<![CDATA[<factory name=\"person\" \n"
"         value=\"#{personHome.instance}\"/>\n"
"\n"
"<framework:entity-home name=\"personHome\" \n"
"                       entity-class=\"eg.Person\" \n"
"                       new-instance=\"#{newPerson}\"/>\n"
"\n"
"<component name=\"newPerson\" \n"
"           class=\"eg.Person\">\n"
"    <property name=\"nationality\">#{country}</property>\n"
"</component>]]>"

#. Tag: para
#: Framework.xml:194
#, no-c-format
msgid "Or by extension:"
msgstr "また、機能を拡張して行う場合は下の様になります。"

#. Tag: programlisting
#: Framework.xml:198
#, no-c-format
msgid ""
"<![CDATA[@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> {\n"
"    \n"
"    @In Country country;\n"
"    \n"
"    @Factory(\"person\")\n"
"    public Person initPerson() { return getInstance(); }\n"
"    \n"
"    protected Person createInstance() {\n"
"        return new Person(country);\n"
"    }\n"
"    \n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> {\n"
"    \n"
"    @In Country country;\n"
"    \n"
"    @Factory(\"person\")\n"
"    public Person initPerson() { return getInstance(); }\n"
"    \n"
"    protected Person createInstance() {\n"
"        return new Person(country);\n"
"    }\n"
"    \n"
"}]]>"

#. Tag: para
#: Framework.xml:200
#, no-c-format
msgid ""
"Of course, the <literal>Country</literal> could be an object managed by "
"another Home object, for example, <literal>CountryHome</literal>."
msgstr ""
"もちろん、<literal>Country</literal>オブジェクトは、例えば"
"<literal>CountryHome</literal>という別の Home オブジェクトの管理下のオブジェ"
"クトとすることもできます。"

#. Tag: para
#: Framework.xml:205
#, no-c-format
msgid ""
"To add more sophisticated operations (association management, etc), we can "
"just add methods to <literal>PersonHome</literal>."
msgstr ""
"アソシエーションの管理など、 より洗練された操作を実現するのも "
"<literal>PersonHome</literal> にメソッドを追加するだけでできるようになりま"
"す。"

#. Tag: programlisting
#: Framework.xml:210
#, no-c-format
msgid ""
"<![CDATA[@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> {\n"
"    \n"
"    @In Country country;\n"
"    \n"
"    @Factory(\"person\")\n"
"    public Person initPerson() { return getInstance(); }\n"
"    \n"
"    protected Person createInstance() {\n"
"        return new Person(country);\n"
"    }\n"
"    \n"
"    public void migrate()\n"
"    {\n"
"        getInstance().setCountry(country);\n"
"        update();\n"
"    }\n"
"    \n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> {\n"
"    \n"
"    @In Country country;\n"
"    \n"
"    @Factory(\"person\")\n"
"    public Person initPerson() { return getInstance(); }\n"
"    \n"
"    protected Person createInstance() {\n"
"        return new Person(country);\n"
"    }\n"
"    \n"
"    public void migrate()\n"
"    {\n"
"        getInstance().setCountry(country);\n"
"        update();\n"
"    }\n"
"    \n"
"}]]>"

#. Tag: para
#: Framework.xml:212
#, fuzzy, no-c-format
msgid ""
"The Home object raises an <literal>org.jboss.seam.afterTransactionSuccess</"
"literal> event when a transaction succeeds (a call to <literal>persist()</"
"literal>, <literal>update()</literal> or <literal>remove()</literal> "
"succeeds). By observing this event we can refresh our queries when the "
"underlying entities are changed. If we only want to refresh certain queries "
"when a particular entity is persisted, updated or removed we can observe the "
"<literal>org.jboss.seam.afterTransactionSuccess.&lt;name&gt;</literal> event "
"(where <literal>&lt;name&gt;</literal> is the simple name of the entity, e."
"g. an entity called \"org.foo.myEntity\" has \"myEntity\" as simple name)."
msgstr ""
"Home オブジェクトはトランザクションが成功すると (<literal>persist()</"
"literal>、 <literal>update()</literal> または <literal>remove()</literal> へ"
"の呼び出しが成功する) <literal>org.jboss.seam.afterTransactionSuccess</"
"literal> イベントを引き起こします。 このイベントを監視することで基礎となるエ"
"ンティティが変更される場合にクエリーをリフレッシュすることができます。 特定の"
"エンティティが永続化された、 更新された、または削除されたときに特定のクエリー"
"だけをリフレッシュしたい場合、 <literal>org.jboss.seam."
"afterTransactionSuccess.&lt;name&gt;</literal> イベントを監視することができま"
"す (<literal>&lt;name&gt;</literal> はエンティティ名になります)。"

#. Tag: para
#: Framework.xml:223
#, no-c-format
msgid ""
"The Home object automatically displays faces messages when an operation is "
"successful. To customize these messages we can, again, use configuration:"
msgstr ""
"Homeオブジェクトは操作が成功したときに自動的にフェースメッセージを表示しま"
"す。 これを、カスタマイズするには、下のように構成を設定します。"

#. Tag: programlisting
#: Framework.xml:228
#, no-c-format
msgid ""
"<![CDATA[<factory name=\"person\" \n"
"         value=\"#{personHome.instance}\"/>\n"
"\n"
"<framework:entity-home name=\"personHome\"\n"
"                       entity-class=\"eg.Person\"\n"
"                       new-instance=\"#{newPerson}\">\n"
"    <framework:created-message>New person #{person.firstName} #{person."
"lastName} created</framework:created-message>\n"
"    <framework:deleted-message>Person #{person.firstName} #{person.lastName} "
"deleted</framework:deleted-message>\n"
"    <framework:updated-message>Person #{person.firstName} #{person.lastName} "
"updated</framework:updated-message>\n"
"</framework:entity-home>\n"
"\n"
"<component name=\"newPerson\" \n"
"           class=\"eg.Person\">\n"
"    <property name=\"nationality\">#{country}</property>\n"
"</component>]]>"
msgstr ""
"<![CDATA[<factory name=\"person\" \n"
"         value=\"#{personHome.instance}\"/>\n"
"\n"
"<framework:entity-home name=\"personHome\"\n"
"                       entity-class=\"eg.Person\"\n"
"                       new-instance=\"#{newPerson}\">\n"
"    <framework:created-message>New person #{person.firstName} #{person."
"lastName} created</framework:created-message>\n"
"    <framework:deleted-message>Person #{person.firstName} #{person.lastName} "
"deleted</framework:deleted-message>\n"
"    <framework:updated-message>Person #{person.firstName} #{person.lastName} "
"updated</framework:updated-message>\n"
"</framework:entity-home>\n"
"\n"
"<component name=\"newPerson\" \n"
"           class=\"eg.Person\">\n"
"    <property name=\"nationality\">#{country}</property>\n"
"</component>]]>"

#. Tag: para
#: Framework.xml:230
#, no-c-format
msgid "Or extension:"
msgstr "あるいは、機能を拡張して下のようにすることもできます。"

#. Tag: programlisting
#: Framework.xml:234
#, no-c-format
msgid ""
"<![CDATA[@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> {\n"
"    \n"
"    @In Country country;\n"
"    \n"
"    @Factory(\"person\")\n"
"    public Person initPerson() { return getInstance(); }\n"
"    \n"
"    protected Person createInstance() {\n"
"        return new Person(country);\n"
"    }\n"
"    \n"
"    protected String getCreatedMessage() { return createValueExpression"
"(\"New person #{person.firstName} #{person.lastName} created\"); }\n"
"    protected String getUpdatedMessage() { return createValueExpression"
"(\"Person #{person.firstName} #{person.lastName} updated\"); }\n"
"    protected String getDeletedMessage() { return createValueExpression"
"(\"Person #{person.firstName} #{person.lastName} deleted\"); }\n"
"    \n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"personHome\")\n"
"public class PersonHome extends EntityHome<Person> {\n"
"    \n"
"    @In Country country;\n"
"    \n"
"    @Factory(\"person\")\n"
"    public Person initPerson() { return getInstance(); }\n"
"    \n"
"    protected Person createInstance() {\n"
"        return new Person(country);\n"
"    }\n"
"    \n"
"    protected String getCreatedMessage() { return createValueExpression"
"(\"New person #{person.firstName} #{person.lastName} created\"); }\n"
"    protected String getUpdatedMessage() { return createValueExpression"
"(\"Person #{person.firstName} #{person.lastName} updated\"); }\n"
"    protected String getDeletedMessage() { return createValueExpression"
"(\"Person #{person.firstName} #{person.lastName} deleted\"); }\n"
"    \n"
"}]]>"

#. Tag: para
#: Framework.xml:236
#, no-c-format
msgid ""
"But the best way to specify the messages is to put them in a resource bundle "
"known to Seam (the bundle named <literal>messages</literal>, by default)."
msgstr ""
"しかし、メッセージ定義における最良の方法は (デフォルトで <literal>messages</"
"literal> という名前の) Seam に対して既知のリソースバンドルに定義することで"
"しょう。"

#. Tag: programlisting
#: Framework.xml:242
#, no-c-format
msgid ""
"<![CDATA[Person_created=New person #{person.firstName} #{person.lastName} "
"created\n"
"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
"Person_updated=Person #{person.firstName} #{person.lastName} updated]]>"
msgstr ""
"<![CDATA[Person_created=New person #{person.firstName} #{person.lastName} "
"created\n"
"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
"Person_updated=Person #{person.firstName} #{person.lastName} updated]]>"

#. Tag: para
#: Framework.xml:244
#, no-c-format
msgid ""
"This enables internationalization, and keeps your code and configuration "
"clean of presentation concerns."
msgstr ""
"この方法を使えば、国際化に対応することができますし、コードや構成ファイルとプ"
"レゼンテーション層とを切り離すことができます。"

#. Tag: para
#: Framework.xml:249
#, no-c-format
msgid ""
"The final step is to add validation functionality to the page, using "
"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
"literal>, but I'll leave that for you to figure out."
msgstr ""
"最後のステップは<literal>&lt;s:validateAll&gt;</literal> と<literal>&lt;s:"
"decorate&gt;</literal>を使って、ページにバリデーション機能を追加することです"
"が、これは皆さんへの宿題としておきましょう。"

#. Tag: title
#: Framework.xml:258
#, no-c-format
msgid "Query objects"
msgstr "Queryオブジェクト"

#. Tag: para
#: Framework.xml:260
#, no-c-format
msgid ""
"If we need a list of all <literal>Person</literal> instance in the database, "
"we can use a Query object. For example:"
msgstr ""
"データベース中の<literal>Person</literal>のすべてのインスタンスのリストが必要"
"な場合、Queryオブジェクトを使って、下のようにすることができます。"

#. Tag: programlisting
#: Framework.xml:265
#, no-c-format
msgid ""
"<![CDATA[<framework:entity-query name=\"people\" \n"
"                        ejbql=\"select p from Person p\"/>]]>"
msgstr ""
"<![CDATA[<framework:entity-query name=\"people\" \n"
"                        ejbql=\"select p from Person p\"/>]]>"

#. Tag: para
#: Framework.xml:267
#, no-c-format
msgid "We can use it from a JSF page:"
msgstr "また、これ（この結果）をJSFページから使うことができます。"

#. Tag: programlisting
#: Framework.xml:271
#, no-c-format
msgid ""
"<![CDATA[<h1>List of people</h1>\n"
"<h:dataTable value=\"#{people.resultList}\" var=\"person\">\n"
"    <h:column>\n"
"        <s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
"{person.lastName}\">\n"
"            <f:param name=\"personId\" value=\"#{person.id}\"/>\n"
"        </s:link>\n"
"    </h:column>\n"
"</h:dataTable>]]>"
msgstr ""
"<![CDATA[<h1>List of people</h1>\n"
"<h:dataTable value=\"#{people.resultList}\" var=\"person\">\n"
"    <h:column>\n"
"        <s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
"{person.lastName}\">\n"
"            <f:param name=\"personId\" value=\"#{person.id}\"/>\n"
"        </s:link>\n"
"    </h:column>\n"
"</h:dataTable>]]>"

#. Tag: para
#: Framework.xml:273
#, no-c-format
msgid "We probably need to support pagination:"
msgstr "量の多いページを処理するためにページングも必要でしょう。"

#. Tag: programlisting
#: Framework.xml:277
#, no-c-format
msgid ""
"<![CDATA[<framework:entity-query name=\"people\" \n"
"                        ejbql=\"select p from Person p\" \n"
"                        order=\"lastName\" \n"
"                        max-results=\"20\"/>]]>"
msgstr ""
"<![CDATA[<framework:entity-query name=\"people\" \n"
"                        ejbql=\"select p from Person p\" \n"
"                        order=\"lastName\" \n"
"                        max-results=\"20\"/>]]>"

#. Tag: para
#: Framework.xml:279
#, no-c-format
msgid "We'll use a page parameter to determine the page to display:"
msgstr "表示するページを決めるためにページパラメータを使います。"

#. Tag: programlisting
#: Framework.xml:284
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/searchPerson.jsp\">\n"
"        <param name=\"firstResult\" value=\"#{people.firstResult}\"/>\n"
"    </page>\n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/searchPerson.jsp\">\n"
"        <param name=\"firstResult\" value=\"#{people.firstResult}\"/>\n"
"    </page>\n"
"</pages>]]>"

#. Tag: para
#: Framework.xml:286
#, no-c-format
msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
msgstr "ページングを管理するJSFのコードは若干繁雑ですが、許容範囲内です。"

#. Tag: programlisting
#: Framework.xml:290
#, no-c-format
msgid ""
"<![CDATA[<h1>Search for people</h1>\n"
"<h:dataTable value=\"#{people.resultList}\" var=\"person\">\n"
"    <h:column>\n"
"        <s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
"{person.lastName}\">\n"
"            <f:param name=\"personId\" value=\"#{person.id}\"/>\n"
"        </s:link>\n"
"    </h:column>\n"
"</h:dataTable>\n"
"\n"
"<s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" value="
"\"First Page\">\n"
"    <f:param name=\"firstResult\" value=\"0\"/>\n"
"</s:link>\n"
"\n"
"<s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" value="
"\"Previous Page\">\n"
"    <f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/>\n"
"</s:link>\n"
"\n"
"<s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
"\"Next Page\">\n"
"    <f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/>\n"
"</s:link>\n"
"\n"
"<s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
"\"Last Page\">\n"
"    <f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/>\n"
"</s:link>]]>"
msgstr ""
"<![CDATA[<h1>Search for people</h1>\n"
"<h:dataTable value=\"#{people.resultList}\" var=\"person\">\n"
"    <h:column>\n"
"        <s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
"{person.lastName}\">\n"
"            <f:param name=\"personId\" value=\"#{person.id}\"/>\n"
"        </s:link>\n"
"    </h:column>\n"
"</h:dataTable>\n"
"\n"
"<s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" value="
"\"First Page\">\n"
"    <f:param name=\"firstResult\" value=\"0\"/>\n"
"</s:link>\n"
"\n"
"<s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" value="
"\"Previous Page\">\n"
"    <f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/>\n"
"</s:link>\n"
"\n"
"<s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
"\"Next Page\">\n"
"    <f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/>\n"
"</s:link>\n"
"\n"
"<s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
"\"Last Page\">\n"
"    <f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/>\n"
"</s:link>]]>"

#. Tag: para
#: Framework.xml:292
#, no-c-format
msgid ""
"Real search screens let the user enter a bunch of optional search criteria "
"to narrow the list of results returned. The Query object lets you specify "
"optional \"restrictions\" to support this important usecase:"
msgstr ""
"実用的な検索スクリーンでは、絞りこんだ検索結果を得るために、多くの検索のクラ"
"イテリアをユーザーに入力してもらう必要があります。 この重要なユースケースをサ"
"ポートするために、Queryオブジェクトはオプションとして制約を設定することができ"
"ます。"

#. Tag: programlisting
#: Framework.xml:298
#, no-c-format
msgid ""
"<![CDATA[<component name=\"examplePerson\" class=\"Person\"/>\n"
"        \n"
"<framework:entity-query name=\"people\" \n"
"                        ejbql=\"select p from Person p\" \n"
"                        order=\"lastName\" \n"
"                        max-results=\"20\">\n"
"    <framework:restrictions>\n"
"        <value>lower(firstName) like lower( concat(#{examplePerson."
"firstName},'%') )</value>\n"
"        <value>lower(lastName) like lower( concat(#{examplePerson."
"lastName},'%') )</value>\n"
"    </framework:restrictions>\n"
"</framework:entity-query>]]>"
msgstr ""
"<![CDATA[<component name=\"examplePerson\" class=\"Person\"/>\n"
"        \n"
"<framework:entity-query name=\"people\" \n"
"                        ejbql=\"select p from Person p\" \n"
"                        order=\"lastName\" \n"
"                        max-results=\"20\">\n"
"    <framework:restrictions>\n"
"        <value>lower(firstName) like lower( concat(#{examplePerson."
"firstName},'%') )</value>\n"
"        <value>lower(lastName) like lower( concat(#{examplePerson."
"lastName},'%') )</value>\n"
"    </framework:restrictions>\n"
"</framework:entity-query>]]>"

#. Tag: para
#: Framework.xml:300
#, no-c-format
msgid "Notice the use of an \"example\" object."
msgstr "上記の例ではexampleオブジェクトの使用について留意してください。"

#. Tag: programlisting
#: Framework.xml:304
#, no-c-format
msgid ""
"<![CDATA[<h1>Search for people</h1>\n"
"<h:form>\n"
"    <div>First name: <h:inputText value=\"#{examplePerson.firstName}\"/></"
"div>\n"
"    <div>Last name: <h:inputText value=\"#{examplePerson.lastName}\"/></"
"div>\n"
"    <div><h:commandButton value=\"Search\" action=\"/search.jsp\"/></div>\n"
"</h:form>\n"
"\n"
"<h:dataTable value=\"#{people.resultList}\" var=\"person\">\n"
"    <h:column>\n"
"        <s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
"{person.lastName}\">\n"
"            <f:param name=\"personId\" value=\"#{person.id}\"/>\n"
"        </s:link>\n"
"    </h:column>\n"
"</h:dataTable>]]>"
msgstr ""
"<![CDATA[<h1>Search for people</h1>\n"
"<h:form>\n"
"    <div>First name: <h:inputText value=\"#{examplePerson.firstName}\"/></"
"div>\n"
"    <div>Last name: <h:inputText value=\"#{examplePerson.lastName}\"/></"
"div>\n"
"    <div><h:commandButton value=\"Search\" action=\"/search.jsp\"/></div>\n"
"</h:form>\n"
"\n"
"<h:dataTable value=\"#{people.resultList}\" var=\"person\">\n"
"    <h:column>\n"
"        <s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
"{person.lastName}\">\n"
"            <f:param name=\"personId\" value=\"#{person.id}\"/>\n"
"        </s:link>\n"
"    </h:column>\n"
"</h:dataTable>]]>"

#. Tag: para
#: Framework.xml:306
#, no-c-format
msgid ""
"To refresh the query when the underlying entities change we observe the "
"<literal>org.jboss.seam.afterTransactionSuccess</literal> event:"
msgstr ""
"基礎となるエンティティが変化する場合にリフレッシュするには <literal>org."
"jboss.seam.afterTransactionSuccess</literal> イベントを監視します。"

#. Tag: programlisting
#: Framework.xml:311
#, no-c-format
msgid ""
"<![CDATA[<event type=\"org.jboss.seam.afterTransactionSuccess\">\n"
"    <action execute=\"#{people.refresh}\" />\n"
"</event>]]>"
msgstr ""
"<![CDATA[<event type=\"org.jboss.seam.afterTransactionSuccess\">\n"
"    <action execute=\"#{people.refresh}\" />\n"
"</event>]]>"

#. Tag: para
#: Framework.xml:313
#, no-c-format
msgid ""
"Or, to just refresh the query when the person entity is persisted, updated "
"or removed through <literal>PersonHome</literal>:"
msgstr ""
"または、 <literal>PersonHome</literal> で person エンティティの永続化、 更"
"新、 あるいは削除が行われた場合にクエリーをリフレッシュするだけなら次のように"
"します。"

#. Tag: programlisting
#: Framework.xml:318
#, no-c-format
msgid ""
"<![CDATA[<event type=\"org.jboss.seam.afterTransactionSuccess.Person\">\n"
"    <action execute=\"#{people.refresh}\" />\n"
"    </event>]]>"
msgstr ""
"<![CDATA[<event type=\"org.jboss.seam.afterTransactionSuccess.Person\">\n"
"    <action execute=\"#{people.refresh}\" />\n"
"    </event>]]>"

#. Tag: para
#: Framework.xml:320
#, fuzzy, no-c-format
msgid ""
"Unfortunately Query objects don't work well with <emphasis>join fetch</"
"emphasis> queries - the use of pagination with these queries is not "
"recommended, and you'll have to implement your own method of calculating the "
"total number of results (by overriding <literal>getCountEjbql()</literal>."
msgstr ""
"残念ながらクエリーのオブジェクトは <emphasis>join fetch</emphasis> クエリーで"
"は正常に動作しません。 こうしたクエリーでのページネーションの使用は推奨しませ"
"ん。 <literal>getCountEjbql()</literal> を上書きして結果の合計数の計算に独自"
"のメソッドを実装しなければならなくなります。"

#. Tag: para
#: Framework.xml:328
#, no-c-format
msgid ""
"The examples in this section have all shown reuse by configuration. However, "
"reuse by extension is equally possible for Query objects."
msgstr ""
"このセクションの例では構成による再利用を示していますが、Queryオブジェクトの再"
"利用は機能を拡張して行う事も同様に可能です。"

#. Tag: title
#: Framework.xml:336
#, no-c-format
msgid "Controller objects"
msgstr "Controllerオブジェクト"

#. Tag: para
#: Framework.xml:337
#, no-c-format
msgid ""
"A totally optional part of the Seam Application Framework is the class "
"<literal>Controller</literal> and its subclasses <literal>EntityController</"
"literal> <literal>HibernateEntityController</literal> and "
"<literal>BusinessProcessController</literal>. These classes provide nothing "
"more than some convenience methods for access to commonly used built-in "
"components and methods of built-in components. They help save a few "
"keystrokes (characters can add up!) and provide a great launchpad for new "
"users to explore the rich functionality built in to Seam."
msgstr ""
"Seamアプリケーションフレームワークのオプショナルなクラスとして、"
"<literal>Controller</literal>と、そのサブクラスとして、 "
"<literal>EntityController</literal>、 <literal>HibernateEntityController</"
"literal> と<literal>BusinessProcessController</literal>があります。 よく使用"
"される組み込みのコンポーネントへのアクセスに便利なメソッドや組み込みコンポー"
"ネントのメソッドを提供しています。これらは、新しいユーザーがSeamに組み込まれ"
"た豊富な機能を探検するための出発点を提供し、また若干のコード量の削減に貢献し"
"ます。"

#. Tag: para
#: Framework.xml:349
#, no-c-format
msgid ""
"For example, here is what <literal>RegisterAction</literal> from the Seam "
"registration example would look like:"
msgstr ""
"例として、SeamのRegistrationの例の<literal>RegisterAction</literal>をSeamアプ"
"リケーションフレームワークで書き直すと以下のようになります。"

#. Tag: programlisting
#: Framework.xml:354
#, no-c-format
msgid ""
"<![CDATA[@Stateless\n"
"@Name(\"register\")\n"
"public class RegisterAction extends EntityController implements Register\n"
"{\n"
"\n"
"   @In private User user;\n"
"   \n"
"   public String register()\n"
"   {\n"
"      List existing = createQuery(\"select u.username from User u where u."
"username=:username\")\n"
"         .setParameter(\"username\", user.getUsername())\n"
"         .getResultList();\n"
"      \n"
"      if ( existing.size()==0 )\n"
"      {\n"
"         persist(user);\n"
"         info(\"Registered new user #{user.username}\");\n"
"         return \"/registered.jspx\";\n"
"      }\n"
"      else\n"
"      {\n"
"         addFacesMessage(\"User #{user.username} already exists\");\n"
"         return null;\n"
"      }\n"
"   }\n"
"\n"
"}]]>"
msgstr ""
"<![CDATA[@Stateless\n"
"@Name(\"register\")\n"
"public class RegisterAction extends EntityController implements Register\n"
"{\n"
"\n"
"   @In private User user;\n"
"   \n"
"   public String register()\n"
"   {\n"
"      List existing = createQuery(\"select u.username from User u where u."
"username=:username\")\n"
"         .setParameter(\"username\", user.getUsername())\n"
"         .getResultList();\n"
"      \n"
"      if ( existing.size()==0 )\n"
"      {\n"
"         persist(user);\n"
"         info(\"Registered new user #{user.username}\");\n"
"         return \"/registered.jspx\";\n"
"      }\n"
"      else\n"
"      {\n"
"         addFacesMessage(\"User #{user.username} already exists\");\n"
"         return null;\n"
"      }\n"
"   }\n"
"\n"
"}]]>"

#. Tag: para
#: Framework.xml:356
#, no-c-format
msgid "As you can see, its not an earthshattering improvement..."
msgstr "ご覧のように、びっくりするような改善にはなりません。"
