diff --git a/ccm-core/pdl/com/arsdigita/messaging/Message.pdl b/ccm-core/pdl/com/arsdigita/messaging/Message.pdl
index ef38780b4..4da9c23df 100755
--- a/ccm-core/pdl/com/arsdigita/messaging/Message.pdl
+++ b/ccm-core/pdl/com/arsdigita/messaging/Message.pdl
@@ -21,15 +21,19 @@ model com.arsdigita.messaging;
import com.arsdigita.kernel.*;
+// The column body is created as CLOB (Oracle) rsp. TEXT (Postgres)
+// by SQL scripts and is capable to store more than 4000 characters
+// [varchar(4000) below]
+
object type Message extends ACSObject {
String[0..1] replyTo = messages.reply_to VARCHAR(250);
String[1..1] subject = messages.subject VARCHAR(250);
- String[1..1] body = messages.body CLOB;
+ String[1..1] body = messages.body VARCHAR(4000);
String[1..1] type = messages.type VARCHAR(50);
Date[1..1] sent = messages.sent_date TIMESTAMP;
BigDecimal[0..1] inReplyTo = messages.in_reply_to INTEGER;
- BigDecimal objectID = messages.object_id INTEGER;
+ BigDecimal objectID = messages.object_id INTEGER;
String[0..1] messageID = messages.rfc_message_id VARCHAR(1000);
Party[1..1] sender = join messages.sender to parties.party_id;
diff --git a/ccm-core/sql/ccm-core/default/upgrade/6.5.4-6.5.5/delete-object_1_granted_context-entries.sql b/ccm-core/sql/ccm-core/default/upgrade/6.5.4-6.5.5/delete-object_1_granted_context-entries.sql
index 11bd155de..bd1f78a83 100755
--- a/ccm-core/sql/ccm-core/default/upgrade/6.5.4-6.5.5/delete-object_1_granted_context-entries.sql
+++ b/ccm-core/sql/ccm-core/default/upgrade/6.5.4-6.5.5/delete-object_1_granted_context-entries.sql
@@ -20,4 +20,5 @@ where exists (select 1 from object_context
and not exists (select 1 from acs_permissions
where object_id = pd_object_id);
-commit;
\ No newline at end of file
+commit;
+
diff --git a/ccm-core/sql/ccm-core/oracle-se-create.sql b/ccm-core/sql/ccm-core/oracle-se-create.sql
index a9b2163f9..39f9130fa 100755
--- a/ccm-core/sql/ccm-core/oracle-se-create.sql
+++ b/ccm-core/sql/ccm-core/oracle-se-create.sql
@@ -22,6 +22,8 @@
@@ ddl/oracle-se/create.sql
+
+
@@ default/globalization/table-g11n_charsets.sql
@@ default/globalization/index-g11n_charsets.sql
@@ default/globalization/table-g11n_locales.sql
diff --git a/ccm-core/sql/ccm-core/oracle-se/messaging/table-messages.sql b/ccm-core/sql/ccm-core/oracle-se/messaging/table-messages.sql
index c809f06af..93aade6e2 100755
--- a/ccm-core/sql/ccm-core/oracle-se/messaging/table-messages.sql
+++ b/ccm-core/sql/ccm-core/oracle-se/messaging/table-messages.sql
@@ -33,7 +33,7 @@ create table messages (
references parties (party_id),
subject varchar(250)
constraint messages_subject_nn not null,
- body varchar(4000)
+ body clob
constraint messages_body_nn not null,
type varchar(50)
constraint messages_type_nn not null,
diff --git a/ccm-core/sql/ccm-core/oracle-se/upgrade/6.5.5-6.5.6/create-category_localizations-table.sql b/ccm-core/sql/ccm-core/oracle-se/upgrade/6.5.5-6.5.6/create-category_localizations-table.sql
new file mode 100755
index 000000000..1521cecb3
--- /dev/null
+++ b/ccm-core/sql/ccm-core/oracle-se/upgrade/6.5.5-6.5.6/create-category_localizations-table.sql
@@ -0,0 +1,38 @@
+--
+-- Copyright (C) 2008 pb@zes.uni-bremen.de All Rights Reserved.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public License
+-- as published by the Free Software Foundation; either version 2.1 of
+-- the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+--
+
+CREATE TABLE cat_category_localizations (
+ id integer NOT NULL,
+ locale character(2) NOT NULL,
+ description character varying(4000),
+ name character varying(200) NOT NULL,
+ url character varying(200),
+ enabled_p character(1) NOT NULL,
+ category_id integer NOT NULL
+);
+
+ALTER TABLE ONLY cat_category_localizations
+ ADD CONSTRAINT cat_cate_localizati_id_p_ancqs PRIMARY KEY (id);
+
+ALTER TABLE ONLY cat_category_localizations
+ ADD CONSTRAINT cat_cat_localiz_cat_id_f_ykbad FOREIGN KEY (category_id) REFERENCES cat_categories(category_id);
+
+ALTER TABLE ONLY cat_category_localizations
+ ADD CONSTRAINT cat_cate_localizati_id_f__leq0 FOREIGN KEY (id) REFERENCES acs_objects(object_id);
+
+
diff --git a/ccm-core/sql/ccm-core/postgres-create.sql b/ccm-core/sql/ccm-core/postgres-create.sql
index 644c0d9c0..2ec765bd4 100755
--- a/ccm-core/sql/ccm-core/postgres-create.sql
+++ b/ccm-core/sql/ccm-core/postgres-create.sql
@@ -25,6 +25,9 @@ begin;
\i default/function-currentDate.sql
\i ddl/postgres/create.sql
+
+
+
\i default/globalization/table-g11n_charsets.sql
\i default/globalization/index-g11n_charsets.sql
\i default/globalization/table-g11n_locales.sql
@@ -142,7 +145,7 @@ begin;
\i default/auditing/table-acs_auditing.sql
\i default/auditing/index-acs_auditing.sql
-\i default/messaging/table-messages.sql
+\i postgres/messaging/table-messages.sql
\i default/messaging/index-messages.sql
\i default/messaging/comment-messages.sql
\i postgres/messaging/table-message_parts.sql
diff --git a/ccm-core/sql/ccm-core/default/messaging/table-messages.sql b/ccm-core/sql/ccm-core/postgres/messaging/table-messages.sql
old mode 100755
new mode 100644
similarity index 94%
rename from ccm-core/sql/ccm-core/default/messaging/table-messages.sql
rename to ccm-core/sql/ccm-core/postgres/messaging/table-messages.sql
index 241ee1325..df254243b
--- a/ccm-core/sql/ccm-core/default/messaging/table-messages.sql
+++ b/ccm-core/sql/ccm-core/postgres/messaging/table-messages.sql
@@ -15,8 +15,8 @@
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
--- $Id: table-messages.sql 287 2005-02-22 00:29:02Z sskracic $
--- $DateTime: 2004/08/16 18:10:38 $
+-- $Id: table-messages.sql 287 2008-06-07 00:29:02Z pboy $
+-- $DateTime: 2008/06/07 18:10:38 $
create table messages (
message_id integer
@@ -33,7 +33,7 @@ create table messages (
references parties (party_id),
subject varchar(250)
constraint messages_subject_nn not null,
- body varchar(4000)
+ body text
constraint messages_body_nn not null,
type varchar(50)
constraint messages_type_nn not null,
diff --git a/ccm-core/sql/ccm-core/postgres/upgrade/6.5.2-6.5.3/clob_message.sql b/ccm-core/sql/ccm-core/postgres/upgrade/6.5.2-6.5.3/clob_message.sql
index e14ebdf8b..872ee77a1 100755
--- a/ccm-core/sql/ccm-core/postgres/upgrade/6.5.2-6.5.3/clob_message.sql
+++ b/ccm-core/sql/ccm-core/postgres/upgrade/6.5.2-6.5.3/clob_message.sql
@@ -19,7 +19,7 @@
-alter table messages add large_body text;
+alter table messages add large_body text NOT NULL;
update messages set large_body = body;
@@ -27,13 +27,22 @@ alter table messages drop column body;
alter table messages rename column large_body to body;
+
+COMMENT ON COLUMN messages.body IS '
+ Body of the message.
+';
+
commit;
+
-- reclaim disk space from old column
UPDATE messages SET body = body;
-VACUUM FULL messages;
+-- VACUUM can not be executed inside a transaction block. (Doesn't matter
+-- whether before or after the commit; is a transaction block anyway!)
+-- Should be performed after update has finished.
+-- VACUUM FULL messages;
commit;
diff --git a/ccm-core/sql/ccm-core/postgres/upgrade/6.5.5-6.5.6/create-category_localizations-table.sql b/ccm-core/sql/ccm-core/postgres/upgrade/6.5.5-6.5.6/create-category_localizations-table.sql
new file mode 100644
index 000000000..1521cecb3
--- /dev/null
+++ b/ccm-core/sql/ccm-core/postgres/upgrade/6.5.5-6.5.6/create-category_localizations-table.sql
@@ -0,0 +1,38 @@
+--
+-- Copyright (C) 2008 pb@zes.uni-bremen.de All Rights Reserved.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public License
+-- as published by the Free Software Foundation; either version 2.1 of
+-- the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+--
+
+CREATE TABLE cat_category_localizations (
+ id integer NOT NULL,
+ locale character(2) NOT NULL,
+ description character varying(4000),
+ name character varying(200) NOT NULL,
+ url character varying(200),
+ enabled_p character(1) NOT NULL,
+ category_id integer NOT NULL
+);
+
+ALTER TABLE ONLY cat_category_localizations
+ ADD CONSTRAINT cat_cate_localizati_id_p_ancqs PRIMARY KEY (id);
+
+ALTER TABLE ONLY cat_category_localizations
+ ADD CONSTRAINT cat_cat_localiz_cat_id_f_ykbad FOREIGN KEY (category_id) REFERENCES cat_categories(category_id);
+
+ALTER TABLE ONLY cat_category_localizations
+ ADD CONSTRAINT cat_cate_localizati_id_f__leq0 FOREIGN KEY (id) REFERENCES acs_objects(object_id);
+
+
diff --git a/ccm-core/sql/ccm-core/upgrade/oracle-se-6.5.5-6.5.6.sql b/ccm-core/sql/ccm-core/upgrade/oracle-se-6.5.5-6.5.6.sql
new file mode 100755
index 000000000..0a2ada935
--- /dev/null
+++ b/ccm-core/sql/ccm-core/upgrade/oracle-se-6.5.5-6.5.6.sql
@@ -0,0 +1,22 @@
+--
+-- Copyright (C) 2008 pb@zes.uni-bremen.de All Rights Reserved.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public License
+-- as published by the Free Software Foundation; either version 2.1 of
+-- the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+--
+
+PROMPT ccm-core 6.5.5 -> 6.5.6 Upgrade Script (Oracle)
+
+@@ ../oracle-se/upgrade/6.5.5-6.5.6/create-category_localizations-table.sql
+
diff --git a/ccm-core/sql/ccm-core/upgrade/postgres-6.5.3-6.5.4.sql b/ccm-core/sql/ccm-core/upgrade/postgres-6.5.3-6.5.4.sql
index 43d2e0c95..589089098 100755
--- a/ccm-core/sql/ccm-core/upgrade/postgres-6.5.3-6.5.4.sql
+++ b/ccm-core/sql/ccm-core/upgrade/postgres-6.5.3-6.5.4.sql
@@ -16,7 +16,7 @@
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
-\echo Red Hat WAF 6.5.3 -> 6.5.4 Upgrade Script (PostgreSQL)
+\echo ccm-core 6.5.3 -> 6.5.4 Upgrade Script (PostgreSQL)
begin;
diff --git a/ccm-core/sql/ccm-core/upgrade/postgres-6.5.4-6.5.5.sql b/ccm-core/sql/ccm-core/upgrade/postgres-6.5.4-6.5.5.sql
index c4d68241e..0fd10e652 100755
--- a/ccm-core/sql/ccm-core/upgrade/postgres-6.5.4-6.5.5.sql
+++ b/ccm-core/sql/ccm-core/upgrade/postgres-6.5.4-6.5.5.sql
@@ -16,6 +16,7 @@
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
-\echo Red Hat WAF 6.5.4 -> 6.5.5 Upgrade Script (PostgreSQL)
+\echo ccm-core 6.5.4 -> 6.5.5 Upgrade Script (PostgreSQL)
--- nothing doing, unless someone updates ctx triggers for postgres
\ No newline at end of file
+-- nothing doing, unless someone updates ctx triggers for postgres
+;
diff --git a/ccm-core/sql/ccm-core/upgrade/postgres-6.5.5-6.5.6.sql b/ccm-core/sql/ccm-core/upgrade/postgres-6.5.5-6.5.6.sql
new file mode 100644
index 000000000..353ae240c
--- /dev/null
+++ b/ccm-core/sql/ccm-core/upgrade/postgres-6.5.5-6.5.6.sql
@@ -0,0 +1,26 @@
+--
+-- Copyright (C) 2008 pb@zes.uni-bremen.de All Rights Reserved.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public License
+-- as published by the Free Software Foundation; either version 2.1 of
+-- the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+--
+\echo ccm-core 6.5.5 -> 6.5.6 Upgrade Script (PostgreSQL)
+
+begin;
+
+
+\i ../postgres/upgrade/6.5.5-6.5.6/create-category_localizations-table.sql
+
+
+commit;
diff --git a/ccm-core/src/ccm-core.upgrade b/ccm-core/src/ccm-core.upgrade
index 6dec2dd2e..1e2ef05e0 100755
--- a/ccm-core/src/ccm-core.upgrade
+++ b/ccm-core/src/ccm-core.upgrade
@@ -31,4 +31,7 @@
+
+
+
diff --git a/ccm-core/src/com/arsdigita/bebop/parameters/ParameterResources.properties b/ccm-core/src/com/arsdigita/bebop/parameters/ParameterResources.properties
new file mode 100644
index 000000000..4928f796a
--- /dev/null
+++ b/ccm-core/src/com/arsdigita/bebop/parameters/ParameterResources.properties
@@ -0,0 +1,6 @@
+parameter_is_required=This parameter is required
+string_in_range=This parameter is not between {0} and {1} characters long
+type_check={0} must be of type {1} but got {2} of type {3}
+parameter.only.letters.digits=This parameter can only contain letters and/or digits
+file_empty_or_not_found=is empty or was not found.
+file_too_large=is too large
diff --git a/ccm-core/src/com/arsdigita/bebop/parameters/ParameterResources_de.properties b/ccm-core/src/com/arsdigita/bebop/parameters/ParameterResources_de.properties
new file mode 100644
index 000000000..cf3091c4d
--- /dev/null
+++ b/ccm-core/src/com/arsdigita/bebop/parameters/ParameterResources_de.properties
@@ -0,0 +1,6 @@
+parameter_is_required=Dieser Parameter ist erforderlich
+string_in_range=Dieser Parameter ist nicht zwischen {0} und {1} Zeichen lang
+type_check={0} muss vom Typ {1} sein, ist aber {2} vom Typ {3}
+parameter.only.letters.digits=Dieser Parameter darf nur Buchstaben und/oder Zahlen enthalten
+file_empty_or_not_found=ist leer oder wurde nicht gefunden.
+file_too_large=ist zu gro\u00DF
diff --git a/ccm-core/src/com/arsdigita/bebop/ui/BebopResources_de.properties b/ccm-core/src/com/arsdigita/bebop/ui/BebopResources_de.properties
new file mode 100644
index 000000000..0363c5d66
--- /dev/null
+++ b/ccm-core/src/com/arsdigita/bebop/ui/BebopResources_de.properties
@@ -0,0 +1,93 @@
+bebop.demo.demobebop_has_been_merged_with_bebopdemo=Demo-bebop has been merged with bebop-demo.
+bebop.demo.go_there=Go there
+bebop.demo.this_is_the_main_content_area=this is the main content area.
+bebop.demo.four_score_and_seven_years_ago_blah_blah=four score and seven years ago... blah blah...
+bebop.demo.tab_a=Tab A
+bebop.demo.tab_b=Tab B
+bebop.demo.this_outer_panel_runs_across=This outer panel runs across
+bebop.demo.this_is_in_the_outer_panel_again=This is in the outer panel again
+bebop.demo.this_inner_panel_runs_downwards=This inner panel runs downwards.
+bebop.demo.its_axis_defaults_to_vertical=Its axis defaults to VERTICAL,
+bebop.demo.centering_to_false=centering to false,
+bebop.demo.border_to_0_false=border to 0 (false),
+bebop.demo.and_its_width_is_unconstrained=and its width is unconstrained.
+bebop.demo.hello_world_=Hello, World !
+bebop.demo.link_text=Link Text
+bebop.demo.you_are_connecting_from=You are connecting from
+bebop.demo.dont_care=don't care
+bebop.demo.your_request_header_specifies=Your request header specifies
+bebop.demo.this_should_be_full_width_aligned_right=This should be full width, aligned right
+bebop.demo.this_should_be_full_width_and_centered=This should be full width and centered
+bebop.demo.this_should_not_be_full_width=This should not be full width
+bebop.demo.yet_another_single_column=yet another single column
+bebop.demo.third_1_column_cell=Third 1 column cell
+bebop.demo.lone_cell_makes_table_look_bad=lone cell makes table look bad
+bebop.demo.centered_across_the_full_width=Centered across the full width
+bebop.demo.only_one_column=only one column
+bebop.demo.rightaligned_single_column=right-aligned single column
+bebop.demo.full_width_and_aligned_right=full width and aligned right
+bebop.demo.lonely_cell_on_last_row=lonely cell on last row
+bebop.demo.this_is_the_blurb=this is the Blurb
+bebop.demo.a_static_label=A static label
+bebop.demo.this_should_be_full_width_too=This should be full width too
+bebop.demo.header=Header
+bebop.demo.left_component=Left Component
+bebop.demo.right_component=Right Component
+bebop.demo.ignored=Ignored
+bebop.demo.this_pane_talks_about_monocotyledons=This pane talks about monocotyledons
+bebop.demo.this_pane_talks_about_dicotyledons=This pane talks about dicotyledons
+bebop.demo.street=Street
+bebop.demo.country=Country
+bebop.demo.subscribe_to_our_mailing_list=Subscribe to our mailing list
+bebop.demo.name=Name:
+bebop.demo.age=Age:
+bebop.demo.email_required=Email (required):
+bebop.demo.why_would_you_ever_want_to_subscribe_to_spam_=Why would you ever want to subscribe to spam ?
+bebop.demo.customize_your_sandwich=Customize Your Sandwich
+bebop.demo.protein=Protein:
+bebop.demo.vitamins=Vitamins:
+bebop.demo.sauce=Sauce:
+bebop.demo.payment_method=Payment Method:
+bebop.demo.now_with_100_more_tofu_=Now with 100% more tofu !
+bebop.demo.delivery=Delivery
+bebop.demo.shipment_method=Shipment Method:
+bebop.demo.purchase=Purchase
+bebop.demo.animal_kingdom_little_lamb=Animal Kingdom: Little Lamb
+bebop.demo.workflow.process_name=Process Name
+bebop.demo.workflow.short_description=Short Description
+bebop.demo.workflow.name=Name
+bebop.demo.workflow.task=Task
+bebop.demo.workflow.description=Description
+bebop.demo.workflow.depends_on=Depends on
+bebop.demo.workflow.h4emselect_process_to_view_detailsemh4=
Select Process to View Details
+bebop.demo.workflow.task_details=Task details
+bebop.demo.workflow.default_assignee_group=Default assignee group
+bebop.demo.workflow.dependencies=Dependencies
+bebop.demo.workflow.add_dependency=Add dependency
+bebop.demo.workflow.none=None
+bebop.demo.workflow.h4workflow_templatesh4=Workflow Templates
+bebop.demo.workflow.add_template=add template
+bebop.page=Page:
+bebop.previous=Previous
+bebop.next=Next
+bebop.please_select_choice_from_the_list_on_the_left=Please select choice from the list on the left
+bebop.send_email_to_everybody=Send email to everybody
+bebop.basic_item_metadata=Basic Item Metadata
+bebop.title=Title:
+bebop.click_here=click here
+bebop.demo.foo_is_null=foo is null.
+bebop.demo.this_link_showshides_the_blurb=This link shows/hides the Blurb
+bebop.demo.no_action=no action
+bebop.event.default_text=Default text
+bebop.event.call_no=Call no.
+bebop.first_name=First Name:
+bebop.last_name=Last Name:
+bebop.hello_world=Hello World
+bebop.edit_the_foo_property=Edit the Foo property
+bebop.table.=
+bebop.the_table_is_empty=The table is empty
+bebop.util.some_text=Some Text
+bebop.subject=Subject
+bebop.body=Body
+bebop.are_you_sure=Are you sure?
+bebop.the_model_is_empty=The Model is Empty
diff --git a/ccm-core/src/com/arsdigita/formbuilder/ui/FormbuilderResources_de.properties b/ccm-core/src/com/arsdigita/formbuilder/ui/FormbuilderResources_de.properties
new file mode 100644
index 000000000..66ef26c5a
--- /dev/null
+++ b/ccm-core/src/com/arsdigita/formbuilder/ui/FormbuilderResources_de.properties
@@ -0,0 +1,56 @@
+formbuilder.ui.hidden_field=Verstecktes Feld\:
+formbuilder.ui.editors.from=Von\:
+formbuilder.ui.editors.subject=Subject:
+formbuilder.ui.editors.body=Inhalt\:
+formbuilder.ui.editors.control_names=Controls:
+formbuilder.ui.editors.url=URL:
+formbuilder.ui.editors.query=Query:
+formbuilder.ui.editors.multiselect=Mehrfachauswahl
+formbuilder.ui.editors.default_value=Default Wert\:
+formbuilder.ui.editors.start_year=Beginn (Jahr)
+formbuilder.ui.editors.end_year=Ende (Jahr)
+formbuilder.ui.editors.value=Wert\:
+formbuilder.ui.editors.add_option=Option hinzuf\u00FCgen
+formbuilder.ui.editors.option_label=Option Label:
+formbuilder.ui.editors.max_length=Max. L\u00E4nge\:
+formbuilder.ui.editors.width=Breite\:
+formbuilder.ui.editors.name=Widget Variablen Name\:
+formbuilder.ui.editors.description=Beschreibung\:
+formbuilder.ui.editors.to=An\:
+formbuilder.ui.editors.label=Widget Variable Label:
+formbuilder.ui.editors.UserEmailLabel=Widget Label:
+formbuilder.ui.editors.height=H\u00F6he\:
+formbuilder.ui.editors.data_type=Datentyp\:
+formbuilder.ui.editors.answer_required=Antwort erforderlich\:
+formbuilder.ui.editors.textfieldmsg=Dieses Feld bleibt leer, au\u00DFer es soll eine H\u00F6chzahl an Zeichen festgelegt werden, die eingetragen werden k\u00F6nnen. Wenn mehr als 3 Zeilen f\u00FCr eine Antwort ben\u00F6tigt werden, wird die Zahl in der Box "Breite" eingetragen.
+formbuilder.ui.editors.textareamsg=Diese Felder bleiben leer, au\u00DFer es soll eine H\u00F6chzahl an Zeichen festgelegt werden, die eingetragen werden k\u00F6nnen.\t
+formbuilder.ui.manage_questions_of_a_form=Manage Questions of a Form
+formbuilder.ui.label_to_be_ignored=label to be ignored
+formbuilder.ui.select_widget=Select Widget
+formbuilder.ui.move_question_to_position=Move question to position
+formbuilder.ui.editors.text_form_title=Text Body:
+formbuilder.ui.help=Hilfe
+formbuilder.ui.editors.heading_form_title=Heading:
+formbuilder.ui.you_are_about_to_delete_a_question=Sie sind im Begriff, eine Frage zu l\u00F6schen
+formbuilder.ui.form_properties=Formulareigenschaften
+formbuilder.ui.view_persisted_form=View Persisted Form
+formbuilder.ui.move_it_here=[hierhere verschieben]
+formbuilder.ui.add_new=Neu Hinzuf\u00FCgen
+formbuilder.ui.action= action
+formbuilder.ui.form_widget= form widget
+formbuilder.ui.form_section= form section
+formbuilder.ui.form_section_null_error= No form sections currently available
+formbuilder.ui.specify_options=Specify Options
+formbuilder.ui.default_selection=Default Auswahl
+formbuilder.ui.value=Value
+formbuilder.ui.is_answer_required=Ist Anwort notwendig
+formbuilder.ui.what_is_the_datatype_of_the_answer=Was ist der Datentyp der Antwort
+formbuilder.ui.number_of_options_150_required=Anzahl Optionen (1-50, erforderlich)
+formbuilder.util.return_to_index_page=Zur\u00FCck zur Index Seite
+formbuilder.ui.editors.edit=editieren
+formbuilder.ui.editors.delete=l\u00F6schen
+formbuilder.ui.add_a_question_at_position=Add a Question at Position
+formbuilder.ui.add_a_question_for_parameter=Add a Question for Parameter
+formbuilder.ui.move_question_to_position_1=Move question to position (1-
+formbuilder.ui.edit=edit
+formbuilder.ui.delete=l\u00F6schen
diff --git a/ccm-core/src/com/arsdigita/kernel/ui/KernelResources_de.properties b/ccm-core/src/com/arsdigita/kernel/ui/KernelResources_de.properties
new file mode 100644
index 000000000..a187a8df5
--- /dev/null
+++ b/ccm-core/src/com/arsdigita/kernel/ui/KernelResources_de.properties
@@ -0,0 +1,3 @@
+kernel.title=Titel
+kernel.description=Beschreibung
+kernel.ui.no_users_or_groups_found=Keine Benutzer oder Gruppen gefunden
diff --git a/ccm-core/src/com/arsdigita/toolbox/ui/ToolboxResources_de.properties b/ccm-core/src/com/arsdigita/toolbox/ui/ToolboxResources_de.properties
new file mode 100644
index 000000000..c8689ae7b
--- /dev/null
+++ b/ccm-core/src/com/arsdigita/toolbox/ui/ToolboxResources_de.properties
@@ -0,0 +1,2 @@
+toolbox.ui.na=N/A
+toolbox.ui.no_results=Keine Ergebnisse.
diff --git a/ccm-core/src/com/arsdigita/ui/UIResources_de.properties b/ccm-core/src/com/arsdigita/ui/UIResources_de.properties
new file mode 100644
index 000000000..dc2d53275
--- /dev/null
+++ b/ccm-core/src/com/arsdigita/ui/UIResources_de.properties
@@ -0,0 +1,21 @@
+ui.admin.access_denied=Zugang abgelehnt
+ui.admin.nusers=nUsers
+ui.admin.help=Hilfe
+ui.admin.signout=Abmelden
+ui.admin.portal=Meine Startseite
+ui.admin.greeting=Willkommen
+ui.sitemap.site_node=Site Node:
+ui.sitemap.mounted_instance=Verf\u00FCgbare Instanz\:
+ui.sitemap.enter_new_node_name_in_text_field=Tragen Sie einen neuen Namen im Textfeld ein.
+ui.sitemap.are_you_sure_you_want_to_remove_this_node=Sind Sie sicher, diesen Knoten zu entfernen?
+ui.sitemap.are_you_sure_you_want_to_umount_this_instance=Sind Sie sicher, diese Instanz auszuh\u00E4ngen?
+ui.sitemap.enter_name_for_new_package_instance_in_text_field_then_select_a_package_to_mount_from_list=Enter name for new package instance in text field, then select a package to mount from list.
+ui.sitemap.h4sitemap_treeh4=SiteMap Tree
+ui.sitemap.configure_sitemap_admin_page=Configure SiteMap Admin Page
+ui.sitemap.h4emselect_sitenode_to_view_detailsemh4=Knoten f\u00FCr die Detailansicht w\u00E4hlen
+ui.sitemap.configuration_menu_placeholder=Configuration Menu Placeholder
+ui.sitemap.access_denied_to_sitemap=Zugang zur SiteMap abgelehnt.
+ui.debug.transform.on=Transformation anzeigen
+ui.debug.transform.off=Transformation verbergen
+ui.debug.xml=XML Dokument ansehen
+ui.debug.xsl=Download XSL Dateien
diff --git a/ccm-core/src/com/arsdigita/ui/admin/AdminResources.properties b/ccm-core/src/com/arsdigita/ui/admin/AdminResources.properties
new file mode 100644
index 000000000..8ef1a8e31
--- /dev/null
+++ b/ccm-core/src/com/arsdigita/ui/admin/AdminResources.properties
@@ -0,0 +1,92 @@
+ui.admin.dispatcher.accessDenied=Access Denied
+ui.admin.dispatcher.contextTitle=Index
+ui.admin.dispatcher.groupsLabel=Groups
+ui.admin.dispatcher.title=Administration
+ui.admin.dispatcher.usersLabel=Users
+ui.admin.groups.actioncontinue=Continue
+ui.admin.groups.groupdeletefailed=Unable to delete group
+ui.admin.groups.add=Create new subgroup
+ui.admin.groups.addeditform.namelabel=Name:
+ui.admin.groups.addeditform.primaryemaillabel=Primary email:
+ui.admin.groups.addeditform.submit=Save
+ui.admin.groups.addgrouplabel=Add new group
+ui.admin.groups.addsubmemberlabel=Add member
+ui.admin.groups.delete=Delete group
+ui.admin.groups.deletefailed=Error message
+ui.admin.groups.edit=Edit
+ui.admin.groups.groupedit=Edit Group
+ui.admin.groups.extremeaction=Extreme Action
+ui.admin.groups.groupinformation=Basic Information
+ui.admin.groups.removesubmemberlabel=Remove
+ui.admin.groups.subgroupcountlabel=Sub groups:
+ui.admin.groups.subgroups=Subgroup Information
+ui.admin.groups.submembers=Member Information
+# new labels added - cg 15/6/04
+ui.admin.groups.addExisting=Add existing group as subgroup
+ui.admin.groups.removeExisting=Remove as subgroup
+ui.admin.groups.search=Search for groups to add as subgroups
+ui.admin.groups.button.search=Search
+ui.admin.groups.searchForm.noResults=Your search matches no valid groups (groups that cause circular references are excluded). Search again
+ui.admin.groups.found.title=Select groups
+ui.admin.groups.select.explanation=Select the groups:
+ui.admin.save=Save
+ui.admin.nav.logout=Log out
+ui.admin.nav.workspace=Workspace
+ui.admin.searchAndList.submit=Search
+ui.admin.searchAndList.submitAgain=Search Again
+ui.admin.tab.group.title=Groups
+ui.admin.tab.user.browse=Browse
+ui.admin.tab.user.createuser=Create new user
+ui.admin.tab.user.navbartitle=User Administration
+ui.admin.tab.user.search=Search
+ui.admin.tab.user.summary=Summary
+ui.admin.tab.user.title=Users
+ui.admin.user.action.continue=Continue
+ui.admin.user.action.delete.failed.header=Unable to delete user
+ui.admin.user.action.header=Actions
+ui.admin.user.addeditform.additionalemail=Additional Email Address:
+ui.admin.user.addeditform.additionalemaillist=Additional Email
+ui.admin.user.addeditform.answer=Answer:
+ui.admin.user.addeditform.confirmation=Password Confirmation:
+ui.admin.user.addeditform.deleteemail=Delete
+ui.admin.user.addeditform.error.answer.null=This parameter is required.
+ui.admin.user.addeditform.error.answer.whitespace=Answer must be empty or contain non-whitespace characters
+ui.admin.user.addeditform.error.password.notmatch=Passwords do not match
+ui.admin.user.addeditform.error.primaryemail.notunique=Primary email is not unique
+ui.admin.user.addeditform.error.screenname.notunique=Screen name is not unique
+ui.admin.user.addeditform.firstname=First Name:
+ui.admin.user.addeditform.lastname=Last Name:
+ui.admin.user.addeditform.password=Password:
+ui.admin.user.addeditform.primaryemail=Primary Email Address:
+ui.admin.user.addeditform.question=Question:
+ui.admin.user.addeditform.screenname=Screen Name:
+ui.admin.user.addeditform.ssologinname=External Login:
+ui.admin.user.addeditform.submit=Save
+ui.admin.user.addeditform.url=URL:
+ui.admin.user.browselink=Show All
+ui.admin.user.browsepanel.becomeUser=Become this user
+ui.admin.user.browsepanel.extremeaction=Extreme Actions
+ui.admin.user.browsepanel.header=All Registered Users
+ui.admin.user.browsepanel.updatePassword=Update Password
+ui.admin.user.createpanel.header=Create new user
+ui.admin.user.delete.confirm=Are you sure you want to delete this user?
+ui.admin.user.ban.confirm=Are you sure you want to ban this user?
+ui.admin.user.unban.confirm=Are you sure you want to unban this user?
+ui.admin.user.ban.label=Ban user
+ui.admin.user.unban.label=Unban user
+ui.admin.user.delete.failed.label=User Delete Failed
+ui.admin.user.delete.label=Delete user
+ui.admin.user.editlink=Edit
+ui.admin.user.groupmembership.header=Group Membership
+ui.admin.user.password.header=Update Security Information
+ui.admin.user.search.header=Search
+ui.admin.user.summarypanel.createUser=Create new user
+ui.admin.user.summarypanel.header=Summary
+ui.admin.user.summarypanel.totalusers=Total users:
+ui.admin.user.useredit.header=Edit User Information
+ui.admin.user.userinfo.header=User Information
+ui.admin.user.userpasswordform.answer=Answer:
(Leave blank to retain current answer)
+ui.admin.user.userpasswordform.confirmpasswordlabel=Confirm password:
+ui.admin.user.userpasswordform.passwordlabel=Password:
+ui.admin.user.userpasswordform.question=Question:
+ui.admin.user.userpasswordform.submit=Change
diff --git a/ccm-core/src/com/arsdigita/ui/admin/AdminResources_de.properties b/ccm-core/src/com/arsdigita/ui/admin/AdminResources_de.properties
new file mode 100644
index 000000000..ffce9dcce
--- /dev/null
+++ b/ccm-core/src/com/arsdigita/ui/admin/AdminResources_de.properties
@@ -0,0 +1,92 @@
+ui.admin.dispatcher.accessDenied=Zugang abgelehnt
+ui.admin.dispatcher.contextTitle=Index
+ui.admin.dispatcher.groupsLabel=Gruppen
+ui.admin.dispatcher.title=Administration
+ui.admin.dispatcher.usersLabel=Benutzer
+ui.admin.groups.actioncontinue=Fortsetzen
+ui.admin.groups.groupdeletefailed=Gruppe nicht zu l\u00F6schbar
+ui.admin.groups.add=Neue Untergruppe erstellen
+ui.admin.groups.addeditform.namelabel=Name:
+ui.admin.groups.addeditform.primaryemaillabel=Prim\u00E4re E-Mail\:
+ui.admin.groups.addeditform.submit=Sichern
+ui.admin.groups.addgrouplabel=Neue Gruppe hinzuf\u00FCgen
+ui.admin.groups.addsubmemberlabel=Mitglied hinzuf\u00FCgen
+ui.admin.groups.delete=Gruppe l\u00F6schen
+ui.admin.groups.deletefailed=Fehlermeldung
+ui.admin.groups.edit=Edit
+ui.admin.groups.groupedit=Edit Group
+ui.admin.groups.extremeaction=Extreme Action
+ui.admin.groups.groupinformation=Basic Information
+ui.admin.groups.removesubmemberlabel=Entfernen
+ui.admin.groups.subgroupcountlabel=Untergruppen\:
+ui.admin.groups.subgroups=Untergruppen Information
+ui.admin.groups.submembers=Mitgliedsinformation
+# new labels added - cg 15/6/04
+ui.admin.groups.addExisting=Add existing group as subgroup
+ui.admin.groups.removeExisting=Als Subgruppe entfernen
+ui.admin.groups.search=Search for groups to add as subgroups
+ui.admin.groups.button.search=Suche
+ui.admin.groups.searchForm.noResults=Your search matches no valid groups (groups that cause circular references are excluded). Search again
+ui.admin.groups.found.title=Gruppen ausw\u00E4hlen
+ui.admin.groups.select.explanation=Gruppen ausw\u00E4hlen\:
+ui.admin.save=Sichern
+ui.admin.nav.logout=Abmelden
+ui.admin.nav.workspace=Workspace
+ui.admin.searchAndList.submit=Suchen
+ui.admin.searchAndList.submitAgain=Erneut suchen
+ui.admin.tab.group.title=Gruppen
+ui.admin.tab.user.browse=Bl\u00E4ttern
+ui.admin.tab.user.createuser=Neuen Benutzer erstellen
+ui.admin.tab.user.navbartitle=Benutzerverwaltung
+ui.admin.tab.user.search=Suche
+ui.admin.tab.user.summary=Zusammenfassung
+ui.admin.tab.user.title=Benutzer
+ui.admin.user.action.continue=Fortfahren
+ui.admin.user.action.delete.failed.header=Benutzer kann nicht gel\u00F6scht werden
+ui.admin.user.action.header=Aktionen
+ui.admin.user.addeditform.additionalemail=Weitere E-Mail Adresse\:
+ui.admin.user.addeditform.additionalemaillist=Weitere E-Mail
+ui.admin.user.addeditform.answer=Antwort\:
+ui.admin.user.addeditform.confirmation=Password Confirmation:
+ui.admin.user.addeditform.deleteemail=Entfernen
+ui.admin.user.addeditform.error.answer.null=This parameter is required.
+ui.admin.user.addeditform.error.answer.whitespace=Answer must be empty or contain non-whitespace characters
+ui.admin.user.addeditform.error.password.notmatch=Passworte stimmen nicht \u00FCberein
+ui.admin.user.addeditform.error.primaryemail.notunique=Primary email is not unique
+ui.admin.user.addeditform.error.screenname.notunique=Benutzername ist nicht eindeutig
+ui.admin.user.addeditform.firstname=Vorname\:
+ui.admin.user.addeditform.lastname=Nachname\:
+ui.admin.user.addeditform.password=Password:
+ui.admin.user.addeditform.primaryemail=Primary Email Address:
+ui.admin.user.addeditform.question=Frage\:
+ui.admin.user.addeditform.screenname=Benutzername\:
+ui.admin.user.addeditform.ssologinname=External Login:
+ui.admin.user.addeditform.submit=Sichern
+ui.admin.user.addeditform.url=URL:
+ui.admin.user.browselink=Show All
+ui.admin.user.browsepanel.becomeUser=Become this user
+ui.admin.user.browsepanel.extremeaction=Extreme Actions
+ui.admin.user.browsepanel.header=Alle registrierten Benutzer
+ui.admin.user.browsepanel.updatePassword=Update Password
+ui.admin.user.createpanel.header=Neuen Benutzer erstellen
+ui.admin.user.delete.confirm=Are you sure you want to delete this user?
+ui.admin.user.ban.confirm=Are you sure you want to ban this user?
+ui.admin.user.unban.confirm=Are you sure you want to unban this user?
+ui.admin.user.ban.label=Ban user
+ui.admin.user.unban.label=Unban user
+ui.admin.user.delete.failed.label=L\u00F6schen des Benutzers fehlgeschlagen
+ui.admin.user.delete.label=Benutzer l\u00F6schen
+ui.admin.user.editlink=Editieren
+ui.admin.user.groupmembership.header=Group Membership
+ui.admin.user.password.header=Update Security Information
+ui.admin.user.search.header=Search
+ui.admin.user.summarypanel.createUser=Create new user
+ui.admin.user.summarypanel.header=Summary
+ui.admin.user.summarypanel.totalusers=Total users:
+ui.admin.user.useredit.header=Edit User Information
+ui.admin.user.userinfo.header=Benutzerinformation
+ui.admin.user.userpasswordform.answer=Antwort\:
(Leerlassen um aktuelle Antwort beizubehalten)
+ui.admin.user.userpasswordform.confirmpasswordlabel=Passwort best\u00E4tigen\:
+ui.admin.user.userpasswordform.passwordlabel=Passwort\:
+ui.admin.user.userpasswordform.question=Frage\:
+ui.admin.user.userpasswordform.submit=\u00C4ndern
diff --git a/ccm-core/src/com/arsdigita/ui/login/LoginHelper.java b/ccm-core/src/com/arsdigita/ui/login/LoginHelper.java
index 15bb91407..b7c3d1e05 100755
--- a/ccm-core/src/com/arsdigita/ui/login/LoginHelper.java
+++ b/ccm-core/src/com/arsdigita/ui/login/LoginHelper.java
@@ -49,7 +49,7 @@ public class LoginHelper {
* @return the name of the login UI resource bundle
**/
static String getBundleBaseName() {
- return "com.arsdigita.ui.login.SubsiteResources";
+ return "com.arsdigita.ui.login.LoginResources";
}
/**
diff --git a/ccm-core/src/com/arsdigita/ui/login/LoginResources.properties b/ccm-core/src/com/arsdigita/ui/login/LoginResources.properties
new file mode 100644
index 000000000..d20483565
--- /dev/null
+++ b/ccm-core/src/com/arsdigita/ui/login/LoginResources.properties
@@ -0,0 +1,62 @@
+login.userEditPage.title=Edit Profile
+login.userEditPage.changePasswordLink=Change password
+login.workspacePage.title=Your workspace
+login.explainCookiesPage.title=Saving email address and password
+login.userInfo.logoutLink=Log out
+login.userInfo.editProfileLink=Edit profile
+login.userInfo.changePasswordLink=Change password
+login.userRegistrationForm.title=Log in
+login.userRegistrationForm.email=Your email address:
+login.userRegistrationForm.screenName=Your screen name (BLaBla)\:
+login.userRegistrationForm.password=Your password (BlaBla)\:
+login.userRegistrationForm.cookieOption=Remember this login?
+login.userRegistrationForm.explainCookieLink=(help)
+login.userRegistrationForm.forgotPasswordLink=Forgot your password?
+login.userRegistrationForm.newUserRegister=New users register here
+login.userNewForm.title=Register
+login.userNewForm.aboutYouSectionHeader=About You
+login.userNewForm.securitySectionHeader=Security
+login.userNewForm.securityBlurb=We need a password from you to protect your identity as you contribute to the Q&A, discussion forums, and other community activities on this site.
+login.userNewForm.passwordBlurb=Choose a password that contains a mix of uppercase letters, lowercase letters, digits, and other symbols. If you forget your password, our server will help you change it to a new one.
+login.userNewForm.questionBlurb=We need a customized question and answer so we can make sure only you can change your password.
+login.changePasswordForm.oldPasswordLabel=Old Password:
+login.changePasswordForm.newPasswordLabel=New Password (at least {0} characters, no whitespace):
+login.changePasswordForm.confirmPasswordLabel=Confirm Password:
+login.changePasswordForm.submit=Submit
+login.changePasswordForm.noUserError=User is not logged in
+login.changePasswordForm.badPasswordError=Incorrect Password
+login.changePasswordForm.mustDifferError=New password must differ from old
+login.changePasswordForm.mustMatchError=New passwords must match
+login.changePasswordForm.mailSubject=Your password has been changed
+login.changePasswordForm.mailBody=Dear {0},\n\nYour password has been changed successfully.\nIf you did not intend to change your password,\nplease reply to this mail and report this problem.
+login.changePasswordPage.title=Change Password
+login.recoverPassword.mailSubject=Change your password
+login.recoverPassword.mailBody=Dear {0},\n\nClick on this URL or paste it into your browser to change your password:\n{1}
+login.recoverPasswordPage.title=Recover Password
+login.loginExpiredPage.title=Login Expired
+login.loginExpiredPage.before=The login page has expired. Please\u0020
+login.loginExpiredPage.link=login
+login.loginExpiredPage.after=\u0020again.
+login.passwordValidation.minLengthError=Password must be at least {0} characters long
+login.passwordValidation.whitespaceError=Password must not contain whitespace
+login.passwordValidation.minTypesError=Password must contain {0} of these 4 character types: uppercase letters, lowercase letters, digits, and other symbols
+login.submit=Submit
+login.primaryEmail=Email Address:
+login.additionalEmail=Additional Email:
+login.firstName=First (Given) Name:
+login.lastName=Last (Family) Name:
+login.password=Password (at least {0} characters, no whitespace):
+login.passwordConfirm=Confirm Password:
+login.passwordQuestion=Question:
+login.passwordAnswer=Answer:
+login.url=Personal Home Page URL:
+login.screenName=Screen Name:
+login.bio=Biography:
+login.error.duplicateScreenName=Some other user has this screen name
+login.error.duplicateEmail=Some other user has this email address
+login.error.mismatchPassword=New passwords must match
+login.error.badPassword=Incorrect password
+login.error.badAnswer=Incorrect answer
+login.error.badEmail=Unrecognized email address
+login.error.bannedEmail=User cannot currently access system
+login.error.loginFail=Login failed
diff --git a/ccm-core/src/com/arsdigita/ui/login/LoginResources_de.properties b/ccm-core/src/com/arsdigita/ui/login/LoginResources_de.properties
new file mode 100644
index 000000000..90b614e57
--- /dev/null
+++ b/ccm-core/src/com/arsdigita/ui/login/LoginResources_de.properties
@@ -0,0 +1,62 @@
+login.userEditPage.title=Profil bearbeiten
+login.userEditPage.changePasswordLink=Passwort \u00E4ndern
+login.workspacePage.title=Ihr pers\u00F6nlicher Bereich
+login.explainCookiesPage.title=E-Mail Adresse und Passwort werden gesichert
+login.userInfo.logoutLink=Abmelden
+login.userInfo.editProfileLink=Profil bearbeiten
+login.userInfo.changePasswordLink=Passwort \u00E4ndern
+login.userRegistrationForm.title=Anmelden
+login.userRegistrationForm.email=Ihre E-Mail Adresse\:
+login.userRegistrationForm.screenName=Ihr Benutzername\:
+login.userRegistrationForm.password=Ihr Passwort\:
+login.userRegistrationForm.cookieOption=An dieses Login erinnern?
+login.userRegistrationForm.explainCookieLink=(Hilfe)
+login.userRegistrationForm.forgotPasswordLink=Passwort vergessen?
+login.userRegistrationForm.newUserRegister=Neue Benutzer registrieren sich hier
+login.userNewForm.title=Registrieren
+login.userNewForm.aboutYouSectionHeader=\u00DCber mich
+login.userNewForm.securitySectionHeader=Sicherheit
+login.userNewForm.securityBlurb=Wie ben\u00F6tigen ein Passwort, um Ihre Identit\u00E4t und Beitr\u00E4ge zu Foren und anderen Aktivit\u00E4ten zu sch\u00FCtzen.
+login.userNewForm.passwordBlurb=W\u00E4hlen Sie ein Passwort aus Gru\u00DFbuchstaben, Kleinbuchstaben, Zahlen und anderen Zeichen. Wenn sie es vergessen, unterst\u00FCtzt Sie der Server bei der Festlegung eines neuen.
+login.userNewForm.questionBlurb=Wir ben\u00F6tigen eine individuelle Frage und Antwort um sicher zu gehen, dass nur Sie das Passwort \u00E4ndern k\u00F6nnen.
+login.changePasswordForm.oldPasswordLabel=Altes Passwort\:
+login.changePasswordForm.newPasswordLabel=Neues Passwort (mindestens {0} Zeichen, keine Leertaste)\:
+login.changePasswordForm.confirmPasswordLabel=Passwort best\u00E4tigen\:
+login.changePasswordForm.submit=Ausf\u00FChren
+login.changePasswordForm.noUserError=Benutzer ist nicht angemeldet
+login.changePasswordForm.badPasswordError=Falsches Passwort
+login.changePasswordForm.mustDifferError=Das neue Passwort muss sich vom bisherigen unterscheiden
+login.changePasswordForm.mustMatchError=Die neuen Passw\u00F6rter m\u00FCssen gleich sein
+login.changePasswordForm.mailSubject=Ihr Passwort wurde ge\u00E4ndert.
+login.changePasswordForm.mailBody=Hallo {0},\n\nIhr Passwort wurde erfolgreich ge\u00E4ndert.\nWenn Sie Ihr Passwort nicht \u00E4ndern wollten,\nmelden Sie bitte diese Mail an uns.
+login.changePasswordPage.title=Passwort \u00C4nderung
+login.recoverPassword.mailSubject=\u00C4ndern Sie das Passwort
+login.recoverPassword.mailBody=Hallo {0},\n\nKlicken Sie auf diese URL oder kopieren Sie sie in Ihren Browser, um Ihr Passwort zu \u00E4ndern\:\n{1}
+login.recoverPasswordPage.title=Passwort holen
+login.loginExpiredPage.title=Anmeldung abgelaufen
+login.loginExpiredPage.before=Der Anmeldebildschirm ist nicht mehr g\u00FCltig
+login.loginExpiredPage.link=Anmeldung
+login.loginExpiredPage.after= erneut.
+login.passwordValidation.minLengthError=Passwort muss aus mindestens {0} Zeichen bestehen
+login.passwordValidation.whitespaceError=Das Passwort darf kein Leerzeichen enthalten
+login.passwordValidation.minTypesError=Das Passwort muss aus {0} dieser 4 Typen gestehen\: Gro\u00DFbuchstaben, Kleinbuchstaben, Ziffern, andere Zeichen
+login.submit=Ausf\u00FChren
+login.primaryEmail=E-Mail Adresse\:
+login.additionalEmail=Weitere E-Mail\:
+login.firstName=Vorname\:
+login.lastName=Nachname\:
+login.password=Passwort (mindestens {0} Zeichen, kein Leerzeichen)\:
+login.passwordConfirm=Passwort best\u00E4tigen\:
+login.passwordQuestion=Frage\:
+login.passwordAnswer=Antwort\:
+login.url=URL der pers\u00F6nlichen Homepage\:
+login.screenName=Benutzername\:
+login.bio=Biographie\:
+login.error.duplicateScreenName=Ein anderer Benutzer verwendet diesen Namen
+login.error.duplicateEmail=Ein anderer Nutzer verwendet diese E-Mail Adresse
+login.error.mismatchPassword=Die neuen Passw\u00F6rter m\u00FCssen gleich sein
+login.error.badPassword=Falsches Passwort
+login.error.badAnswer=Falsche Antwort
+login.error.badEmail=Ung\u00FCltige E-Mail Adresse
+login.error.bannedEmail=Benutzer kann zur Zeit das System nicht nutzen
+login.error.loginFail=Anmeldung nicht erfolgreich
diff --git a/ccm-core/src/com/arsdigita/ui/login/LoginResources_en.properties b/ccm-core/src/com/arsdigita/ui/login/LoginResources_en.properties
new file mode 100644
index 000000000..fcaf26bb1
--- /dev/null
+++ b/ccm-core/src/com/arsdigita/ui/login/LoginResources_en.properties
@@ -0,0 +1,62 @@
+login.userEditPage.title=Edit Profile
+login.userEditPage.changePasswordLink=Change password
+login.workspacePage.title=Your workspace
+login.explainCookiesPage.title=Saving email address and password
+login.userInfo.logoutLink=Log out
+login.userInfo.editProfileLink=Edit profile
+login.userInfo.changePasswordLink=Change password
+login.userRegistrationForm.title=Log in
+login.userRegistrationForm.email=Your email address:
+login.userRegistrationForm.screenName=Your screen name (BluBlu)\:
+login.userRegistrationForm.password=Your password (BluBlu)\:
+login.userRegistrationForm.cookieOption=Remember this login?
+login.userRegistrationForm.explainCookieLink=(help)
+login.userRegistrationForm.forgotPasswordLink=Forgot your password?
+login.userRegistrationForm.newUserRegister=New users register here
+login.userNewForm.title=Register
+login.userNewForm.aboutYouSectionHeader=About You
+login.userNewForm.securitySectionHeader=Security
+login.userNewForm.securityBlurb=We need a password from you to protect your identity as you contribute to the Q&A, discussion forums, and other community activities on this site.
+login.userNewForm.passwordBlurb=Choose a password that contains a mix of uppercase letters, lowercase letters, digits, and other symbols. If you forget your password, our server will help you change it to a new one.
+login.userNewForm.questionBlurb=We need a customized question and answer so we can make sure only you can change your password.
+login.changePasswordForm.oldPasswordLabel=Old Password:
+login.changePasswordForm.newPasswordLabel=New Password (at least {0} characters, no whitespace):
+login.changePasswordForm.confirmPasswordLabel=Confirm Password:
+login.changePasswordForm.submit=Submit
+login.changePasswordForm.noUserError=User is not logged in
+login.changePasswordForm.badPasswordError=Incorrect Password
+login.changePasswordForm.mustDifferError=New password must differ from old
+login.changePasswordForm.mustMatchError=New passwords must match
+login.changePasswordForm.mailSubject=Your password has been changed
+login.changePasswordForm.mailBody=Dear {0},\n\nYour password has been changed successfully.\nIf you did not intend to change your password,\nplease reply to this mail and report this problem.
+login.changePasswordPage.title=Change Password
+login.recoverPassword.mailSubject=Change your password
+login.recoverPassword.mailBody=Dear {0},\n\nClick on this URL or paste it into your browser to change your password:\n{1}
+login.recoverPasswordPage.title=Recover Password
+login.loginExpiredPage.title=Login Expired
+login.loginExpiredPage.before=The login page has expired. Please\u0020
+login.loginExpiredPage.link=login
+login.loginExpiredPage.after=\u0020again.
+login.passwordValidation.minLengthError=Password must be at least {0} characters long
+login.passwordValidation.whitespaceError=Password must not contain whitespace
+login.passwordValidation.minTypesError=Password must contain {0} of these 4 character types: uppercase letters, lowercase letters, digits, and other symbols
+login.submit=Submit
+login.primaryEmail=Email Address:
+login.additionalEmail=Additional Email:
+login.firstName=First (Given) Name:
+login.lastName=Last (Family) Name:
+login.password=Password (at least {0} characters, no whitespace):
+login.passwordConfirm=Confirm Password:
+login.passwordQuestion=Question:
+login.passwordAnswer=Answer:
+login.url=Personal Home Page URL:
+login.screenName=Screen Name:
+login.bio=Biography:
+login.error.duplicateScreenName=Some other user has this screen name
+login.error.duplicateEmail=Some other user has this email address
+login.error.mismatchPassword=New passwords must match
+login.error.badPassword=Incorrect password
+login.error.badAnswer=Incorrect answer
+login.error.badEmail=Unrecognized email address
+login.error.bannedEmail=User cannot currently access system
+login.error.loginFail=Login failed
diff --git a/ccm-core/src/com/arsdigita/ui/login/LoginResources_fr.properties b/ccm-core/src/com/arsdigita/ui/login/LoginResources_fr.properties
index 8ff92be85..f88cbb92a 100755
--- a/ccm-core/src/com/arsdigita/ui/login/LoginResources_fr.properties
+++ b/ccm-core/src/com/arsdigita/ui/login/LoginResources_fr.properties
@@ -1,68 +1,59 @@
-login.userEditPage.title=Modification de compte
-login.userEditPage.changePasswordLink=Changer le mot de passe
-login.workspacePage.title=Votre espace
-login.explainCookiesPage.title=Enregistrement de l'adresse e-mail et du mot de passe
+login.userEditPage.title=Modifier ce profil
+login.userEditPage.changePasswordLink=Modifier le mot de passe
+login.workspacePage.title=Votre espace de travail
+login.explainCookiesPage.title=Enregistrement de l'adresse de messagerie et du mot de passe
login.userInfo.logoutLink=Déconnexion
-login.userInfo.editProfileLink=Modification de compte
-login.userInfo.changePasswordLink=Changer le mot de passe
-login.userRegistrationForm.title=Connexion
-login.userRegistrationForm.email=Votre adresse e-mail
-login.userRegistrationForm.screenName=Votre screen name
+login.userInfo.editProfileLink=Modifier ce profil
+login.userInfo.changePasswordLink=Modifier le mot de passe
+login.userRegistrationForm.title=Se connecter
+login.userRegistrationForm.email=Votre adresse de messagerie
+login.userRegistrationForm.screenName=Votre pseudonyme
login.userRegistrationForm.password=Votre mot de passe
-login.userRegistrationForm.cookieOption=Enregistrer ce compte?
+login.userRegistrationForm.cookieOption=Retenir ce mot de passe?
login.userRegistrationForm.explainCookieLink=(aide)
-login.userRegistrationForm.forgotPasswordLink=Mot de passe oublié?
-login.userNewForm.title=Enregistrement
+login.userRegistrationForm.forgotPasswordLink=Vous avez oublié votre mot de passe?
+login.userNewForm.title=Créer votre compte
login.userNewForm.aboutYouSectionHeader=A propos de vous
login.userNewForm.securitySectionHeader=Securité
-login.userNewForm.securityBlurb=Merci de nous donner un mot de passe pour protéger votre identité en tant que contributeur actif des forums, et des autres activités de ce site.
-login.userNewForm.passwordBlurb=Choisissez un mot de passe qui contienne un mélange de majuscules, minuscules, nombres et autres caractères. Si vous oubliez ce mot de passe, notre serveur vous aidera a le remplacer par un nouveau
-login.userNewForm.questionBlurb=Merci de nous donner une question dont vous seul connaissez la réponse pour que nous puissions nous assurer de votre identité avant de changer votre mot de passe.
-login.changePasswordForm.oldPasswordLabel=Ancien mot de passe:
-login.changePasswordForm.newPasswordLabel=Nouveau mot de passe (au moins {0} caractères sans espaces)
-login.changePasswordForm.confirmPasswordLabel=Vérifiez le mot de passe
+login.userNewForm.securityBlurb=Merci de nous fournir un mot de passe afin que nous puissions protéger votre indentité lorsque vous participez aux Quiz, aux forum de discussions et aux autres activités communes sur notre site.
+login.userNewForm.passwordBlurb=Choisissez un mot de passe qui contienne un mélange de majuscules, de minuscules, de chiffres et d'autres caractères. Si vous oubliez votre mot de passe, notre serveur vous aidera à le remplacer par un nouveau
+login.userNewForm.questionBlurb=Merci de nous indiquer une question (et sa réponse) à laquelle vous seul pouvez répondre pour que nous puission nous assurer que vous serez le seul à pouvoir changer votre mot de passe
+login.changePasswordForm.oldPasswordLabel=Ancien mot de passe :
+login.changePasswordForm.newPasswordLabel=Nouveau mot de passe (au moins {0} caractère et pas d'espace):
+login.changePasswordForm.confirmPasswordLabel=Confirmation du nouveau mot de passe
login.changePasswordForm.submit=Soumettre
-login.changePasswordForm.noUserError=L'utilisateur n'est pas enregistré
+login.changePasswordForm.noUserError=L'utilisateur n'est pas connecté
login.changePasswordForm.badPasswordError=Mot de passe erroné
login.changePasswordForm.mustDifferError=Le nouveau mot de passe doit être différent de l'ancien
-login.changePasswordForm.mustMatchError=Les nouveaux mot de passe doivent être identiques
+login.changePasswordForm.mustMatchError=Le nouveau mot de passe doit être identique dans la zone de confirmation
login.changePasswordForm.mailSubject=Votre mot de passe a été modifié
-login.changePasswordForm.mailBody={0},\n\nVotre mot de passe a été modifié avec succès.\nSi vous ne souhaitiez pas changer votre mot de passe,\nmerci de répondre à ce message en indiquant ce problème.
+login.changePasswordForm.mailBody=Cher {0}, \n\n Votre mot de passe a été modifié avec succès.\nSi vous n'avez pas souhaité changer votre mot de passe,\nmerci de répondre à ce message en faisant part de ce problème.
login.changePasswordPage.title=Modifier le mot de passe
login.recoverPassword.mailSubject=Modifier votre mot de passe
-login.recoverPassword.mailBody={0},\n\nCliquer sur ce lien ou coller le dans votre navigateur pour changer votre mot de passe:\n{1}
+login.recoverPassword.mailBody=Cher {0},\n\nCliquer sur cet URL ou recopiez le dans la barre d'adresse de votre navigateur pour modifier votre mot de passe:\n{1}
login.recoverPasswordPage.title=Récupérer le mot de passe
-login.loginExpiredPage.title=Connexion clôturée
-login.loginExpiredPage.before=Votre connexion a été clôturée. Merci de\u0020
-login.loginExpiredPage.link=Connexion
-login.loginExpiredPage.after=\u0020à nouveau.
-login.passwordValidation.minLengthError=Le mot de passe doit faire au moins {0} caractères de long
+login.loginExpiredPage.title=Votre connexion a expiré
+login.loginExpiredPage.before=La page de connexion a expiré. Merci\u0020
+login.loginExpiredPage.link=de vous connecter
+login.loginExpiredPage.after=\u0020à nouveau
+login.passwordValidation.minLengthError=Le mot de passe doit faire au minimum {0} caractères de long
login.passwordValidation.whitespaceError=Le mot de passe ne doit pas contenir d'espace
-login.passwordValidation.minTypesError=Le mot de passe doit faire au moins {0} caractères de long qui peuvent être majuscules, minuscules, chiffres ou autres
+login.passwordValidation.minTypesError=Le mot de passe doit contenir {0} de ces 4 types de caractères : majuscule, minuscule, chiffre ou autre symbole
login.submit=Soumettre
-login.primaryEmail=Adresse e-mail
-login.additionalEmail=Adresse e-mail secondaire
-login.firstName=Prénom
-login.lastName=Nom
-login.password=Mot de passe (au moins {0} caractères sans espaces)
-login.passwordConfirm=Vérifiez le mot de passe
+login.primaryEmail=Adresse de messagerie:
+login.additionalEmail=Adresse de messagerie supplémentaire
+login.firstName=Prénom:
+login.lastName=Nom:
+login.password=Mot de passe (au moins {0} caractère et pas d'espace):
+login.passwordConfirm=Confirmation du mot de passe
login.passwordQuestion=Question:
login.passwordAnswer=Réponse:
-login.newsletterPref=Envoyer moi la Newsletter en:
-login.newsletters=Votre Newsletter:
-login.url=URL de votre site perso:
-login.screenName=Screen Name:
-login.yesPrompt=Oui
-login.noPrompt=Non
-login.postalCode=Votre code postal:
-login.possessPassCard=Vous possédez une carte PASS?
-login.desireCardInfo=Vous souhaitez recevoir de informations sur la carte PASS?
-login.bio=Parler nous de vous:
-login.error.duplicateScreenName=Ce screen name est déjà utilisé
-login.error.duplicateEmail=Cette adresse e-mail est déjà utilisé.
-login.error.mismatchPassword=Les nouveaux mot de passe doivent être identiques
+login.url=URL de votre site web personnel
+login.screenName=Votre pseudonyme:
+login.bio=Biographie:
+login.error.duplicateScreenName=Un autre utilisateur utilise déjà ce pseudonyme
+login.error.duplicateEmail=Un autre utilisateur nous a déjà donner cette adresse de messagerie
+login.error.mismatchPassword=Le nouveau mot de passe doit être identique dans la zone de confirmation
login.error.badPassword=Mot de passe erroné
login.error.badAnswer=Réponse erronée
-login.error.badEmail=Adresse e-mail inconnue
-login.prefix=Titre
-login.sendLink=envoyer a un ami
+login.error.badEmail=Cette adresse de messagerie est inconnue
diff --git a/ccm-core/src/com/arsdigita/ui/permissions/PermissionsResources.properties b/ccm-core/src/com/arsdigita/ui/permissions/PermissionsResources.properties
new file mode 100644
index 000000000..6fbee20ac
--- /dev/null
+++ b/ccm-core/src/com/arsdigita/ui/permissions/PermissionsResources.properties
@@ -0,0 +1,28 @@
+permissions.button.cancel=Cancel
+permissions.button.save=Save
+permissions.button.search=Search
+permissions.denied.title=Access Denied
+permissions.directPermissions.explanation=These are permissions that have been granted on this object directly.
+permissions.directPermissions.heading=Permissions you can change
+permissions.index.adminObjects=You have administrative privileges on the following objects:
+permissions.index.noAdminObjects=none
+permissions.index.title=Permissions
+permissions.index.panelTitle=Permissions Administration
+permissions.index.navbarItem=Permissions
+permissions.indirectPermissions.explanation=These are permissions inherited from other objects.
+permissions.indirectPermissions.context=The inheriting parent of this object is
+permissions.indirectPermissions.heading=Permissions you cannot change
+permissions.main.site=Main Site
+permissions.one.grant.explanation.left=Select the users/groups:
+permissions.one.grant.explanation.right=Select the privileges you want to grant:
+permissions.one.grant.title=Grant Permissions
+permissions.one.title=Permissions on
+permissions.personal.site=My Workspace
+permissions.searchForm.label=Select an Object by Id:
+permissions.table.grantee=Who
+permissions.table.actions=Action
+permissions.table.actions.removeAll=Are you sure you want to remove all privileges of this party?
+permissions.table.inherited=Inherited from
+permissions.table.parent.context.null=This object has no parent context.
+permissions.userSearchForm.label=Search for persons or groups to grant direct permissions to
+permissions.userSearchForm.noResults=Your search matches no users or groups, search again.
diff --git a/ccm-core/src/com/arsdigita/ui/permissions/PermissionsResources_de.properties b/ccm-core/src/com/arsdigita/ui/permissions/PermissionsResources_de.properties
index 0753e1866..f60937f38 100755
--- a/ccm-core/src/com/arsdigita/ui/permissions/PermissionsResources_de.properties
+++ b/ccm-core/src/com/arsdigita/ui/permissions/PermissionsResources_de.properties
@@ -25,4 +25,5 @@ permissions.table.actions.removeAll='Wollen Sie wirklich alle Zugriffsberechtigu
permissions.table.inherited=Geerbt von
permissions.table.parent.context.null=Diese Objekt hat keinen Kontext.
permissions.userSearchForm.label=Suche Personen oder Gruppen fuer Zuweisung direkter Berechtigungen.
-permissions.userSearchForm.noResult=Keine Zielgruppe gefunden.
+
+permissions.userSearchForm.noResults=Keine Zielgruppe gefunden.