###############################################################################
# Copyright (c) 2000, 2011 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
###############################################################################
# NLS_ENCODING=UTF-8
# NLS_MESSAGEFORMAT_VAR

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 using for .. in
#Templates.while=while statement
#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 function
Templates.public_method=function
Templates.anonymous_public_method=anonymous function
#Templates.protected_method=protected function
#Templates.private_method=private function
#Templates.private_static_method=private static function
#Templates.instanceof=dynamic type test and cast
#Templates.cast=dynamic cast
#Templates.toarray=convert collection to array
#Templates.test=test function
#Templates.test_junit4=function method (JUnit 4)
#Templates.systrace=print current function 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

# JavaScript Only stuff
CompilationUnitContextType.variable.description.file=Filename of JavaScript
CompilationUnitContextType.variable.description.primary.type.name=Filename without extension
CompilationUnitContextType.variable.description.enclosing.method=Enclosing function name
CompilationUnitContextType.variable.description.enclosing.type=Enclosing type name
CompilationUnitContextType.variable.description.enclosing.package=Enclosing namespace
CompilationUnitContextType.variable.description.enclosing.project=Enclosing project name
CompilationUnitContextType.variable.description.enclosing.method.arguments=Argument names of enclosing function
CompilationUnitContextType.variable.description.return.type=Enclosing function 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 
#JavaContextType.variable.description.iterator=A proposal for an 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 (JavaScript>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 var to set or get
CodeTemplateContextType.variable.description.getterfieldtype=The type of the var to set or get
CodeTemplateContextType.variable.description.fieldname=The name of var
CodeTemplateContextType.variable.description.fieldtype=The type of the var
CodeTemplateContextType.variable.description.barefieldname=The name of var to set or get without prefix or suffix
CodeTemplateContextType.variable.description.param=The parameter passed into the setter function
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 function
CodeTemplateContextType.variable.description.typename=Name of the current type
CodeTemplateContextType.variable.description.enclosingmethod=The enclosing function
CodeTemplateContextType.variable.description.bodystatement=Return statement or super call
CodeTemplateContextType.variable.description.returntype=Return type of the enclosing function
CodeTemplateContextType.variable.description.tags=Generated JSDoc tags (@param, @return...)
CodeTemplateContextType.variable.description.seetag=See tag pointing to the overridden function (@see T#m())

CodeTemplateContextType.variable.description.filename=Name of the enclosing JavaScript
#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 JavaScript comment.


# strings in default templates
CodeTemplates.constructorcomment=Comment for created constructors
CodeTemplates.filecomment=Comment for created JavaScript files
CodeTemplates.typecomment=Comment for created types
CodeTemplates.fieldcomment=Comment for vars
CodeTemplates.nonoverridingcomment=Comment for non-overriding function
CodeTemplates.overridecomment=Comment for overriding functions
CodeTemplates.delegatecomment=Comment for delegate functions
CodeTemplates.gettercomment=Comment for getter function
# ! Do not translate ${bare_field_name} !
CodeTemplates.gettercomment.returntagcontent=the ${bare_field_name}
CodeTemplates.settercomment=Comment for setter function
# ! 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 function stubs
CodeTemplates.constructorstub=Code in created constructor stubs
CodeTemplates.getterstub=Code in created getters
CodeTemplates.setterstub=Code in created setters

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

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

