# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

#fields
field.title.employees.id=Employee ID
field.title.employees.salutation=Salutation
field.title.employees.firstName=Firstname
field.title.employees.lastName=Lastname
field.title.employees.fullname=Name (full)
field.title.employees.dateOfBirth=Date of Birth
field.title.employees.departmentId=Department
field.title.employees.gender=Gender
field.title.employees.phoneNumber=Phone
field.title.employees.email=E-Mail
field.title.employees.salary=Salary p.a.
field.title.employees.retired=Retired
field.title.employees.updateTimestamp=Last change

field.title.departments.id=Department ID
field.title.departments.name=Department
field.title.departments.head=Head of Dept.

#options
option.employee.gender.male=Male
option.employee.gender.female=Female

#options
option.employee.active=-
option.employee.retired=Yes

#application
application_title = Employee Management Application
application_todo = To do...
application_logout = Logout


global_list_result_empty=No employee(s) found


#pages
login_title = Login
login_login = login
login_field_name = User name
login_field_password = Password
login_hint=Hint: enter any non null username and password.

employeeSearch_title=Search employee
employeeSearch_search=Search
employeeSearch_field_employeeId=Employee ID
employeeSearch_field_firstName=First name
employeeSearch_field_lastName=Last name
employeeSearch_field_departmentId=Department

employeeList_title = Employee List
employeeList_create = Create employee
employeeList_field_employeeId = ID
employeeList_field_name = Name
employeeList_field_gender = Gender
employeeList_field_dateOfBirth = Date of Birth
employeeList_field_department = Department
employeeList_search = Search
employeeList_resetSearch=Search reset

employeeDetail_title = Employee Detail
employeeDetail_tab_basic = Basic data
employeeDetail_tab_extended = Other data
employeeDetail_msg_extended = Please display additional information here
employeeDetail_save = Save
employeeDetail_back = Back
employeeDetail_delete = Delete

# Old stuff

#labels
application.title=Employee Management Application
label.employees=List of employees
label.employees.beanList=Employees (Bean-List)
label.employees.reader=Employees (DBReader)
label.delete=Delete
label.edit=Edit
label.employee.edit=Employee details
label.employee.add=Add employee
label.department=Department
label.user.Name=Name
label.user.Pwd=Password

page.label.login=Login
page.label.loginHint=Hint: enter any non null username and password.
page.label.logininfo=You are logged in as:
page.label.search=Search employee
page.label.list=Select employee
page.label.update=Edit employee details
page.label.add=Add new employee

#button labels
button.label.login=Login
button.label.search=Search
button.label.save=Save
button.label.cancel=Cancel
button.label.delete=Delete

#link labels
link.label.addemployee=Add new employee
link.label.edit=Edit
link.label.delete=Delete
link.label.logout=Logout
link.label.search=Search

##-- errors
errors.prefix=<span style="color:red;font-weight:bold;">
errors.suffix=</span>

error.invalidpassword=The username is invalid (At least one character is required!)
error.web.recordsDontMatch=The form submitted is invalid for the current context.
error.web.columnNotFound=The column {0} has not been found!
error.web.fieldError=Field {0}: {1}
error.web.input.integerFormat=Invalid Integer format
error.web.input.numberFormat=Invalid number format
error.web.input.dateFormat=Invalid date format
error.web.input.date.notime=No time specified.
error.web.input.required=This field is required 
error.web.input.outOfRange=The value must be in the range of {0} and {1}.
error.web.input.textTooShort=The value must contain at least {0} characters. 
