###############################################################################
# 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
#		Benjamin Muskalla - Contribution for bug 239066
###############################################################################
### JavaBatchCompiler messages.

### compiler
#Format: compiler.name = word1 word2 word3
compiler.name = Eclipse Compiler for Java(TM)
#Format: compiler.version = 0.XXX[, other words (don't forget the comma if adding other words)]
compiler.version = 0.A77_R36x, 3.6.3
compiler.copyright = Copyright IBM Corp 2000, 2010. All rights reserved.

### progress
progress.compiling = Compiling

### compile
compile.repetition = [repetition {0}/{1}]
compile.instantTime = [compiled {0} lines in {1} ms: {2} lines/s]
compile.detailedTime = [parse: {0} ms ({1}%), resolve: {2} ms ({3}%), analyze: {4} ms ({5}%), generate: {6} ms ({7}%) ]
compile.ioTime = [i/o: read: {0} ms ({1}%), write: {2} ms ({3}%)]
compile.averageTime = [average, excluding min-max {0} lines in {1} ms: {2} lines/s]
compile.totalTime = [total compilation time: {0}]
compile.oneProblem = 1 problem ({0})
compile.severalProblemsErrorsOrWarnings = {0} problems ({1})
compile.severalProblemsErrorsAndWarnings = {0} problems ({1}, {2})
compile.oneError = 1 error
compile.severalErrors = {0} errors
compile.oneWarning = 1 warning
compile.severalWarnings = {0} warnings
compile.oneClassFileGenerated = [1 .class file generated]
compile.severalClassFilesGenerated = [{0} .class files generated]

### configure
configure.requiresJDK1.2orAbove = Need to use a JVM >= 1.2
configure.duplicateLog = duplicate log specification: {0}
configure.duplicateRepeat = duplicate repeat specification: {0}
configure.duplicateMaxProblems = duplicate max problems specification: {0}
configure.duplicateCompliance = duplicate compliance setting specification: {0}
configure.duplicateSource = duplicate source compliance setting specification: {0}
configure.duplicateTarget = duplicate target compliance setting specification: {0}
configure.source = source level should be comprised in between ''1.3'' and ''1.6'' (or ''5'', ''5.0'', ..., ''7'' or ''7.0''): {0}
configure.duplicateOutputPath = duplicate output path specification: {0}
configure.duplicateBootClasspath = duplicate bootclasspath specification: {0}
configure.duplicateExtDirs = duplicate extdirs specification: {0}
configure.duplicateSourcepath = duplicate sourcepath specification: {0}
configure.invalidDebugOption = invalid debug option: {0}
configure.invalidWarningConfiguration = invalid warning configuration: ''{0}''
configure.invalidWarning = invalid warning token: ''{0}''. Ignoring warning and compiling
configure.invalidWarningOption = invalid warning option: ''{0}''. Must specify a warning token
configure.targetJDK = target level should be comprised in between ''1.1'' and ''1.7'' (or ''5'', ''5.0'', ..., ''7'' or ''7.0'') or cldc1.1: {0}
configure.incompatibleTargetForSource = Target level ''{0}'' is incompatible with source level ''{1}''. A target level ''{1}'' or better is required
configure.incompatibleTargetForGenericSource = Target level ''{0}'' is incompatible with source level ''{1}''. A source level ''1.5'' or better is required
configure.incompatibleComplianceForSource = Compliance level ''{0}'' is incompatible with source level ''{1}''. A compliance level ''{1}'' or better is required
configure.incompatibleComplianceForTarget = Compliance level ''{0}'' is incompatible with target level ''{1}''. A compliance level ''{1}'' or better is required
configure.repetition = repetition must be a positive integer: {0}
configure.maxProblems = max problems must be a positive integer: {0}

configure.invalidErrorConfiguration = invalid error configuration: ''{0}''
configure.invalidError = invalid error token: ''{0}''. Ignoring this error token and compiling
configure.invalidErrorOption = invalid error option: ''{0}''. Must specify an error token
configure.invalidUsageOfPlusOption=usage of ''+'' for ''{0}'' is illegal there
configure.invalidUsageOfMinusOption=usage of ''-'' for ''{0}'' is illegal there

## configure.directoryNotExist = directory does not exist: {0}
configure.unrecognizedOption = Unrecognized option : {0}
configure.noClasspath = no classpath defined, using default directory instead
configure.incorrectClasspath = incorrect classpath: {0}
configure.invalidexpansionargumentname = expansion argument file {0} does not exist or cannot be read
configure.cannotOpenLog = cannot open .log file: {0}
configure.cannotOpenLogInvalidEncoding = cannot open .log file: {0}; because UTF-8 is not supported
configure.unexpectedCustomEncoding = unexpected custom encoding specification: {0}[{1}]
configure.unsupportedEncoding = unsupported encoding format: {0}
configure.duplicateDefaultEncoding = duplicate default encoding format specification: {0}
configure.invalidTaskTag ={0} is an invalid task tag
configure.incorrectExtDirsEntry = incorrect ext dir entry; {0} must be a directory
configure.incorrectEndorsedDirsEntry = incorrect endorsed dir entry; {0} must be a directory
configure.duplicateEndorsedDirs = duplicate endorseddirs specification: {0}
configure.incorrectDestinationPathEntry = incorrect destination path entry: {0}
configure.unexpectedBracket = unexpected bracket: {0}
configure.unexpectedDestinationPathEntry = unexpected destination path entry in {0} option
configure.unexpectedDestinationPathEntryFile = unexpected destination path entry for file: {0}
configure.accessRuleAfterDestinationPath = access rules cannot follow destination path entries: {0}
configure.duplicateDestinationPathEntry = duplicate destination path entry in {0} option
configure.invalidClassName = invalid class name: {0}
configure.incorrectVMVersionforAPT = Annotation processing got disabled, since it requires a 1.6 compliant JVM
configure.incompatibleSourceForCldcTarget=Target level ''{0}'' is incompatible with source level ''{1}''. A source level ''1.3'' or lower is required
configure.incompatibleComplianceForCldcTarget=Target level ''{0}'' is incompatible with compliance level ''{1}''. A compliance level ''1.4''or lower is required
configure.invalidClasspathSection = invalid Class-Path header in manifest of jar file: {0}
configure.multipleClasspathSections = multiple Class-Path headers in manifest of jar file: {0}
configure.missingwarningspropertiesfile=properties file {0} does not exist
configure.ioexceptionwarningspropertiesfile=An IOException occurred while reading the properties file {0}
configure.multipleencodings=Multiple encoding specified: {1}. The default encoding has been set to {0}
configure.differentencodings=Found encoding {0}. Different encodings were specified: {1}
configure.differentencoding=Found encoding {0}. A different encoding was specified: {1}

### requestor
requestor.error = {0}. ERROR in {1}
requestor.warning = {0}. WARNING in {1}
requestor.notRetrieveErrorMessage = Cannot retrieve the error message for {0}
requestor.noFileNameSpecified = (original file name is not available)

### EMACS STYLE
output.emacs.error=error
output.emacs.warning=warning

### unit
unit.more = File {0} is specified more than once
unit.missing = File {0} is missing

### output
output.noClassFileCreated = No .class file created for file {1} in {0} because of an IOException: {2}

### miscellaneous
misc.version = {0} {1}, {2}
misc.usage = {1} {2}\n\
{3}\n\
\ \n\
\ Usage: <options> <source files | directories>\n\
\ If directories are specified, then their source contents are compiled.\n\
\ Possible options are listed below. Options enabled by default are prefixed\n\
\ with ''+''.\n\
\ \n\
\ Classpath options:\n\
\    -cp -classpath <directories and ZIP archives separated by {0}>\n\
\                       specify location for application classes and sources.\n\
\                       Each directory or file can specify access rules for\n\
\                       types between ''['' and '']'' (e.g. [-X] to forbid\n\
\                       access to type X, [~X] to discourage access to type X,\n\
\                       [+p/X{0}-p/*] to forbid access to all types in package p\n\
\                       but allow access to p/X)\n\
\    -bootclasspath <directories and ZIP archives separated by {0}>\n\
\                       specify location for system classes. Each directory or\n\
\                       file can specify access rules for types between ''[''\n\
\                       and '']''\n\
\    -sourcepath <directories and ZIP archives separated by {0}>\n\
\                       specify location for application sources. Each directory\n\
\                       or file can specify access rules for types between ''[''\n\
\                       and '']''. Each directory can further specify a specific\n\
\                       destination directory using a ''-d'' option between ''[''\n\
\                       and '']''; this overrides the general ''-d'' option.\n\
\                       .class files created from source files contained in a\n\
\                       jar file are put in the user.dir folder in case no\n\
\                       general ''-d'' option is specified. ZIP archives cannot\n\
\                       override the general ''-d'' option\n\
\    -extdirs <directories separated by {0}>\n\
\                       specify location for extension ZIP archives\n\
\    -endorseddirs <directories separated by {0}>\n\
\                       specify location for endorsed ZIP archives\n\
\    -d <dir>           destination directory (if omitted, no directory is\n\
\                       created); this option can be overridden per source\n\
\                       directory\n\
\    -d none            generate no .class files\n\
\    -encoding <enc>    specify default encoding for all source files. Each\n\
\                       file/directory can override it when suffixed with\n\
\                       ''[''<enc>'']'' (e.g. X.java[utf8]).\n\
\                       If multiple default encodings are specified, the last\n\
\                       one will be used.\n\
\ \n\
\ Compliance options:\n\
\    -1.3               use 1.3 compliance (-source 1.3 -target 1.1)\n\
\    -1.4             + use 1.4 compliance (-source 1.3 -target 1.2)\n\
\    -1.5 -5 -5.0       use 1.5 compliance (-source 1.5 -target 1.5)\n\
\    -1.6 -6 -6.0       use 1.6 compliance (-source 1.6 -target 1.6)\n\
\    -1.7 -7 -7.0       use 1.7 compliance (-source 1.7 -target 1.7)\n\
\    -source <version>  set source level: 1.3 to 1.7 (or 5, 5.0, etc)\n\
\    -target <version>  set classfile target: 1.1 to 1.7 (or 5, 5.0, etc)\n\
\                       cldc1.1 can also be used to generate the StackMap\n\
\                       attribute\n\
\ \n\
\ Warning options:\n\
\    -deprecation     + deprecation outside deprecated code (equivalent to\n\
\                       -warn:+deprecation)\n\
\    -nowarn -warn:none disable all warnings\n\
\    -?:warn -help:warn display advanced warning options\n\
\ \n\
\ Error options:\n\
\    -err:<warnings separated by ,>    convert exactly the listed warnings\n\
\                                      to be reported as errors\n\
\    -err:+<warnings separated by ,>   enable additional warnings to be\n\
\                                      reported as errors\n\
\    -err:-<warnings separated by ,>   disable specific warnings to be\n\
\                                      reported as errors\n\
\ \n\
\ Setting warning or error options using properties file:\n\
\    -properties: <file>   set warnings/errors option based on the properties\n\
\                          file contents. This option can be used with -nowarn,\n\
\                          -err:.. or -warn:.. options, but the last one on the\n\
\                          command line sets the options to be used.\n\
\ \n\
\ Debug options:\n\
\    -g[:lines,vars,source] custom debug info\n\
\    -g:lines,source  + both lines table and source debug info\n\
\    -g                 all debug info\n\
\    -g:none            no debug info\n\
\    -preserveAllLocals preserve unused local vars for debug purpose\n\
\ \n\
\ Annotation processing options:\n\
\   These options are meaningful only in a 1.6 environment.\n\
\    -Akey[=value]        options that are passed to annotation processors\n\
\    -processorpath <directories and ZIP archives separated by {0}>\n\
\                         specify locations where to find annotation processors.\n\
\                         If this option is not used, the classpath will be\n\
\                         searched for processors\n\
\    -processor <class1[,class2,...]>\n\
\                         qualified names of the annotation processors to run.\n\
\                         This bypasses the default annotation discovery process\n\
\    -proc:only           run annotation processors, but do not compile\n\
\    -proc:none           perform compilation but do not run annotation\n\
\                         processors\n\
\    -s <dir>             destination directory for generated source files\n\
\    -XprintProcessorInfo print information about which annotations and elements\n\
\                         a processor is asked to process\n\
\    -XprintRounds        print information about annotation processing rounds\n\
\    -classNames <className1[,className2,...]>\n\
\                         qualified names of binary classes to process\n\
\ \n\
\ Advanced options:\n\
\    @<file>            read command line arguments from file\n\
\    -maxProblems <n>   max number of problems per compilation unit (100 by\n\
\                       default)\n\
\    -log <file>        log to a file. If the file extension is ''.xml'', then\n\
\                       the log will be a xml file.\n\
\    -proceedOnError[:Fatal]\n\
\                       do not stop at first error, dumping class files with\n\
\                       problem methods\n\
\                       With ":Fatal", all optional errors are treated as fatal\n\
\    -verbose           enable verbose output\n\
\    -referenceInfo     compute reference info\n\
\    -progress          show progress (only in -log mode)\n\
\    -time              display speed information \n\
\    -noExit            do not call System.exit(n) at end of compilation (n==0\n\
\                       if no error)\n\
\    -repeat <n>        repeat compilation process <n> times for perf analysis\n\
\    -inlineJSR         inline JSR bytecode (implicit if target >= 1.5)\n\
\    -enableJavadoc     consider references in javadoc\n\
\    -Xemacs            used to enable emacs-style output in the console.\n\
\                       It does not affect the xml log output\n\
\ \n\
\    -? -help           print this help message\n\
\    -v -version        print compiler version\n\
\    -showversion       print compiler version and continue\n\
\ \n\
\ Ignored options:\n\
\    -J<option>         pass option to virtual machine (ignored)\n\
\    -X<option>         specify non-standard option (ignored\n\
\                       except for listed -X options)\n\
\    -X                 print non-standard options and exit (ignored)\n\
\    -O                 optimize for execution time (ignored)\n
misc.usage.warn = {1} {2}\n\
{3}\n\
\ \n\
\ Warning options:\n\
\    -deprecation         + deprecation outside deprecated code\n\
\    -nowarn -warn:none disable all warnings\n\
\    -warn:<warnings separated by ,>    enable exactly the listed warnings\n\
\    -warn:+<warnings separated by ,>   enable additional warnings\n\
\    -warn:-<warnings separated by ,>   disable specific warnings\n\
\      allDeadCode          dead code including trivial if(DEBUG) check\n\
\      allDeprecation       deprecation including inside deprecated code\n\
\      allJavadoc           invalid or missing javadoc\n\
\      allOver-ann          all missing @Override annotations\n\
\      assertIdentifier   + ''assert'' used as identifier\n\
\      boxing               autoboxing conversion\n\
\      charConcat         + char[] in String concat\n\
\      compareIdentical   + comparing identical expressions\n\
\      conditionAssign      possible accidental boolean assignment\n\
\      constructorName    + method with constructor name\n\
\      deadCode           + dead code excluding trivial if (DEBUG) check\n\
\      dep-ann              missing @Deprecated annotation\n\
\      deprecation        + deprecation outside deprecated code\n\
\      discouraged        + use of types matching a discouraged access rule\n\
\      emptyBlock           undocumented empty block\n\
\      enumIdentifier       ''enum'' used as identifier\n\
\      enumSwitch           incomplete enum switch\n\
\      fallthrough          possible fall-through case\n\
\      fieldHiding          field hiding another variable\n\
\      finalBound           type parameter with final bound\n\
\      finally            + finally block not completing normally\n\
\      forbidden          + use of types matching a forbidden access rule\n\
\      hashCode              missing hashCode() method when overriding equals()\n\
\      hiding               macro for fieldHiding, localHiding, typeHiding and\n\
\                           maskedCatchBlock\n\
\      incomplete-switch    same as enumSwitch\n\
\      indirectStatic       indirect reference to static member\n\
\      intfAnnotation     + annotation type used as super interface\n\
\      intfNonInherited   + interface non-inherited method compatibility\n\
\      intfRedundant        find redundant superinterfaces\n\
\      javadoc              invalid javadoc\n\
\      localHiding          local variable hiding another variable\n\
\      maskedCatchBlock   + hidden catch block\n\
\      nls                  string literal lacking non-nls tag //$NON-NLS-<n>$\n\
\      noEffectAssign     + assignment without effect\n\
\      null                 potential missing or redundant null check\n\
\      nullDereference    + missing null check\n\
\      over-ann             missing @Override annotation (superclass)\n\
\      paramAssign          assignment to a parameter\n\
\      pkgDefaultMethod   + attempt to override package-default method\n\
\      raw                + usage of raw type\n\
\      semicolon            unnecessary semicolon, empty statement\n\
\      serial             + missing serialVersionUID\n\
\      specialParamHiding   constructor or setter parameter hiding a field\n\
\      static-access        macro for indirectStatic and staticReceiver\n\
\      staticReceiver     + non-static reference to static member\n\
\      super                overriding a method without making a super invocation\n\
\      suppress           + enable @SuppressWarnings\n\
\                           When used with -err:, it can also silent optional\n\
\                           errors and warnings\n\
\      syncOverride         missing synchronized in synchr. method override\n\
\      syntheticAccess      synthetic access for innerclass\n\
\      tasks(<tags separated by |>) tasks identified by tags inside comments\n\
\      typeHiding         + type parameter hiding another type\n\
\      unchecked          + unchecked type operation\n\
\      unnecessaryElse      unnecessary else clause\n\
\      unqualifiedField     unqualified reference to field\n\
\      unused               macro for unusedAllocation, unusedArgument,\n\
\                               unusedImport, unusedLabel, unusedLocal,\n\
\                               unusedPrivate, unusedThrown, and unusedTypeArgs\n\
\      unusedAllocation     allocating an object that is not used\n\
\      unusedArgument       unread method parameter\n\
\      unusedImport       + unused import declaration\n\
\      unusedLabel        + unused label\n\
\      unusedLocal        + unread local variable\n\
\      unusedPrivate      + unused private member declaration\n\
\      unusedThrown         unused declared thrown exception\n\
\      unusedTypeArgs     + unused type arguments for method\n\
\      uselessTypeCheck     unnecessary cast/instanceof operation\n\
\      varargsCast        + varargs argument need explicit cast\n\
\      warningToken       + unsupported or unnecessary @SuppressWarnings\n
