###############################################################################
# Copyright (c) 2000, 2006 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################

Templates.for_array=iterate over array
Templates.for_temp=iterate over array with temporary variable
Templates.for_collection=iterate over collection
Templates.for_iterable=iterate over an array or Iterable
Templates.while_enumeration=iterate with enumeration
Templates.while_iterator=iterate with iterator
Templates.do=do while statement
Templates.switch=switch case statement
Templates.if=if statement
Templates.ifelse=if else statement
Templates.elseif=else if block
Templates.else=else block
Templates.try=try catch block
Templates.catch=catch block
Templates.main=main method
Templates.public_method=public method
Templates.protected_method=protected method
Templates.private_method=private method
Templates.private_static_method=private static method
Templates.instanceof=dynamic type test and cast
Templates.cast=dynamic cast
Templates.toarray=convert collection to array
Templates.test=test method
Templates.systrace=print current method to standard out
Templates.sysout=print to standard out
Templates.syserr=print to standard error
Templates.code_tag=<code></code>
Templates.code_tag_null=<code>null</code>
Templates.code_tag_true=<code>true</code>
Templates.code_tag_false=<code>false</code>
Templates.pre_tag=<pre></pre>
Templates.b_tag=<b></b>
Templates.i_tag=<i></i>
Templates.author=author name
Templates.new=create new object
Templates.lazy=lazy creation
Templates.while_condition=while loop with condition
Templates.non-nls= non-externalized string marker
Templates.synchronized= synchronized block
Templates.runnable= runnable

# Java Only stuff
CompilationUnitContextType.variable.description.file=Filename of compilation unit
CompilationUnitContextType.variable.description.primary.type.name=Filename without extension
CompilationUnitContextType.variable.description.enclosing.method=Enclosing method name
CompilationUnitContextType.variable.description.enclosing.type=Enclosing type name
CompilationUnitContextType.variable.description.enclosing.package=Enclosing package name
CompilationUnitContextType.variable.description.enclosing.project=Enclosing project name
CompilationUnitContextType.variable.description.enclosing.method.arguments=Argument names of enclosing method
CompilationUnitContextType.variable.description.return.type=Enclosing method return type

JavaContextType.variable.description.array=A proposal for an array
JavaContextType.variable.description.array.type=A proposal for the element type of an array
JavaContextType.variable.description.array.element=A proposal for the element name of an array
JavaContextType.variable.description.index=A proposal for an index (int)
JavaContextType.variable.description.collection=A proposal for a collection (java.util.Collection)
JavaContextType.variable.description.iterator=A proposal for an iterator (java.util.Iterator)
JavaContextType.variable.description.todo=Todo task tag

JavaContext.error.title=Template Error
JavaContext.error.message=Template file incomplete or has errors.  You can load the default templates from the template preference page (Java>Templates).

CodeTemplateContextType.variable.description.todo=Todo task tag
CodeTemplateContextType.variable.description.packdeclaration=Package declaration of the new type
CodeTemplateContextType.variable.description.typedeclaration=Generated type declaration
CodeTemplateContextType.variable.description.getterfieldname=The name of field to set or get
CodeTemplateContextType.variable.description.getterfieldtype=The type of the field to set or get
CodeTemplateContextType.variable.description.fieldname=The name of field
CodeTemplateContextType.variable.description.fieldtype=The type of the field
CodeTemplateContextType.variable.description.barefieldname=The name of field to set or get without prefix or suffix
CodeTemplateContextType.variable.description.param=The parameter passed into the setter method
CodeTemplateContextType.variable.description.typecomment=Content of code template 'typecomment'
CodeTemplateContextType.variable.description.exceptiontype=The type of the caught exception
CodeTemplateContextType.variable.description.exceptionvar=The variable name of the caught exception
CodeTemplateContextType.variable.description.enclosingtype=The type enclosing this method
CodeTemplateContextType.variable.description.typename=Name of the current type
CodeTemplateContextType.variable.description.enclosingmethod=The enclosing method
CodeTemplateContextType.variable.description.bodystatement=Return statement or super call
CodeTemplateContextType.variable.description.returntype=Return type of the enclosing method
CodeTemplateContextType.variable.description.tags=Generated Javadoc tags (@param, @return...)
CodeTemplateContextType.variable.description.seetag=See tag pointing to the overridden method (@see T#m())

CodeTemplateContextType.variable.description.filename=Name of the enclosing compilation unit
CodeTemplateContextType.variable.description.packagename=Name of the enclosing package
CodeTemplateContextType.variable.description.projectname=Name of the enclosing project

CodeTemplateContextType.validate.unknownvariable=Variable ''{0}'' is unknown.
CodeTemplateContextType.validate.missingvariable=Variable ''{0}'' is required.
CodeTemplateContextType.validate.invalidcomment=Pattern is not a valid Java comment.


# strings in default templates
CodeTemplates.constructorcomment=Comment for created constructors
CodeTemplates.filecomment=Comment for created Java files
CodeTemplates.typecomment=Comment for created types
CodeTemplates.fieldcomment=Comment for fields
CodeTemplates.nonoverridingcomment=Comment for non-overriding methods
CodeTemplates.overridecomment=Comment for overriding methods
CodeTemplates.delegatecomment=Comment for delegate methods
CodeTemplates.gettercomment=Comment for getter method
# ! Do not translate ${bare_field_name} !
CodeTemplates.gettercomment.returntagcontent=the ${bare_field_name}
CodeTemplates.settercomment=Comment for setter method
# ! Do not translate ${bare_field_name} !
CodeTemplates.settercomment.paramtagcontent=the ${bare_field_name} to set

CodeTemplates.newfile=Newly created files
CodeTemplates.classbody=Code in new class type bodies
CodeTemplates.interfacebody=Code in new interface type bodies
CodeTemplates.enumbody=Code in new enum type bodies
CodeTemplates.annotationbody=Code in new annotation type bodies
CodeTemplates.catchblock=Code in new catch blocks
CodeTemplates.methodstub=Code in created method stubs
CodeTemplates.constructorstub=Code in created constructor stubs
CodeTemplates.getterstub=Code in created getters
CodeTemplates.setterstub=Code in created setters

CodeTemplates.overridecomment.nonjd=(non-Javadoc)
CodeTemplates.delegatecomment.nonjd=(non-Javadoc)

CodeTemplates.catchblock.tododesc=Auto-generated catch block
CodeTemplates.methodstub.tododesc=Auto-generated method stub
CodeTemplates.constructorstub.tododesc=Auto-generated constructor stub

