#
# 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.
#


# Translation instructions.
# 1.  Each message line is of the form key=value.
#     Translate the value, DO NOT translate the key.
# 2.  The messages may contain arguments that will be filled in
#     by the runtime.  These are of the form: {0}, {1}, etc.
#     These must appear as is in the message, though the order
#     may be changed to support proper language syntax.
# 3.  If a single quote character is to appear in the resulting
#     message, it must appear in this file as two consecutive
#     single quote characters.
# 4.  Lines beginning with "#" (like this one) are comment lines
#     and may contain translation instructions.  They need not be
#     translated unless your translated file, rather than this file,
#     will serve as a base for other translators.
#
################## WSDL2Code ######################################
wsdl2code.arg=Usage: WSDL2Java [options] -uri <url or path> : A url or path to a WSDL
wsdl2code.arg1=\nwhere [options] include:
wsdl2code.arg2=  -o <path>                Specify a directory path for the generated code.
wsdl2code.arg3=  -a                       Generate async style code only (Default: off).
wsdl2code.arg4=  -s                       Generate sync style code only (Default: off). Takes precedence over -a.
wsdl2code.arg5=  -p <pkg1>                Specify a custom package name for the generated code.
wsdl2code.arg6=  -l <language>            Valid languages are java and c (Default: java).
wsdl2code.arg7=  -t                       Generate a test case for the generated code.
wsdl2code.arg8=  -ss                      Generate server side code (i.e. skeletons) (Default: off).
wsdl2code.arg9=  -sd                      Generate service descriptor (i.e. services.xml). (Default: off). Valid with -ss.
wsdl2code.arg10=  -d <databinding>         Valid databinding(s) are adb, xmlbeans, jibx and jaxbri (Default: adb).
wsdl2code.arg11=  -g                       Generates all the classes. Valid only with -ss.
wsdl2code.arg12=  -pn <port_name>          Choose a specific port when there are multiple ports in the wsdl.
wsdl2code.arg13=  -sn <service_name>       Choose a specific service when there are multiple services in the wsdl.
wsdl2code.arg14=  -u                       Unpacks the databinding classes
wsdl2code.arg15=  -r <path>                Specify a repository against which code is generated.
wsdl2code.arg16=  -ns2p ns1=pkg1,ns2=pkg2  Specify a custom package name for each namespace specified in the wsdl's schema.
wsdl2code.arg17=  -ssi                     Generate an interface for the service implementation (Default: off).
wsdl2code.arg18=  -wv <version>            WSDL Version. Valid Options : 2, 2.0, 1.1
wsdl2code.arg19=  -S <path>                Specify a directory path for generated source
wsdl2code.arg20=  -R <path>                Specify a directory path for generated resources
wsdl2code.arg21=  -em <file path>          Specify an external mapping file
wsdl2code.arg22=  -f                       Flattens the generated files
wsdl2code.arg23=  -uw                      Switch on un-wrapping.
wsdl2code.arg24=  -xsdconfig <file path>   Use XMLBeans .xsdconfig file. Valid only with -d xmlbeans.
wsdl2code.arg25=  -ap                      Generate code for all ports
wsdl2code.arg26=  -or                      Overwrite the existing classes
wsdl2code.arg27=  -b                       Generate Axis 1.x backward compatible code.
wsdl2code.arg28=  -sp                      Suppress namespace prefixes (Optimzation that reduces size of soap request/response)
wsdl2code.arg29=  -E<key> <value>          Extra configuration options specific to certain databindings. Examples:
wsdl2code.arg30=                           \t\t\t   -Ebindingfile <path>                   (for jibx) - specify the file path for the binding file
wsdl2code.arg31=                           \t\t\t   -Etypesystemname <my_type_system_name> (for xmlbeans) - override the randomly generated type system name
wsdl2code.arg32=                           \t\t\t   -Ejavaversion 1.5                      (for xmlbeans) - generates Java 1.5 code (typed lists instead of arrays) 
wsdl2code.arg33=                           \t\t\t   -Emp <package name> (for ADB) - extension mapper package name
wsdl2code.arg34=                           \t\t\t   -Eosv (for ADB) - turn off strict validation.
wsdl2code.arg35=                           \t\t\t   -Ewdc (for xmlbeans) - Generate code with a dummy schema. if someone use this option
wsdl2code.arg36=                           \t\t\t      they have to generate the xmlbeans code seperately with the scomp command comes with the
wsdl2code.arg37=                           \t\t\t      xmlbeans distribution and replace the Axis2 generated classes with correct classes
wsdl2code.arg38=  --noBuildXML             Don't generate the build.xml in the output directory
wsdl2code.arg39=  --noWSDL                 Don't generate WSDL's in the resources directory
wsdl2code.arg40=  --noMessageReceiver      Don't generate a MessageReceiver in the generated sources
wsdl2code.arg41=  --http-proxy-host <host> Proxy host address if you are behind a firewall
wsdl2code.arg42=  --http-proxy-port <port> Proxy port address if you are behind a firewall
wsdl2code.arg43=  -ep <package-name-list>  Exclude packages - these packages are deleted after code generation
wsdl2code.arg44=  -sin <interface-name>    Skeleton interface name - used to specify a name for skeleton interface other than the default one 
wsdl2code.arg45=  -scn <class-name>        Skeleton class name - used to specify a name for skeleton class other than the default one
wsdl2code.arg46=                           \t\t\t   -EbindingFileName <path>               (for jaxbri) - specify the file path for the episode file
wsdl2code.arg47=  -oaa <override-absolute-address>  -change the absolute http addresses to local file addresses generated by wsdl2java tool
wsdl2code.arg48=  -ebc <exception-base-class>  -generated Exceptions are inherited from this exception rather than the java.lang.Exception class
wsdl2code.arg49=  -uon <use-operation-name>  -by default the first letter of the generated method name changeed to lowercase. This option stops that and make it same as operation name

################## prop file loader #################################
propfileload.frameworkMismatch=Number of frameworks and extension names do not match!
propfileload.unknownFramework=Unknown framework specified for default!
propfileload.emitterMissing=No emitters found!
propfileload.unknownDefaultLang=Unknown Language specified for default!
propfileload.generalException=Exception while loading the property file

#################  template resolver #################################
resolver.templateNotFound={0} template not found!

################### Codegen engine ###################################
engine.wsdlParsingException=Error parsing WSDL
engine.invalidWsdlLocation=Invalid WSDL Location
engine.noProperDatabindingException=Unable to use specified databinding!
engine.emitterMissing=Emitter class not found!
engine.wrongEmitter=Non emitter class found!
engine.extensionLoadProblem=Extension class loading problem
engine.extensionInstantiationProblem=Extension class instantiation problem
engine.illegalExtension=Illegal extension!

################### Options ###################################
options.notADirectoryException=The specified output location is not a directory!
options.nomappingFile=Unable to load mapping file!
options.noFile=The specified output location is not a directory!

writer.noLangPropertiesExtension=No language specific properties!!!
writer.templateMissing=template for this writer is not found!

extension.bindingMissing=bindings are not present in the original document
extension.noProperDatabinding=No proper databinding has taken place
extension.invalidWSDL=Invalid WSDL: The WSDL Types Schema does not define a targetNamespace in {0}
extension.additionalSchemaFailure=Additional schema loading failed!!
extension.encodedNotSupported=The use 'encoded' is not supported!
extension.databindingMismatch=The specified databinding frameworks do not match!
extension.unhandledSchemaConstruct=Unhandled schema construct!
extension.unsupportedforunwrapping=Unsupported framework for unwrapping!
extension.unsupportedSchemaFormat=Unsupported Schema format for unwrapping! found {0} but expected {1}

emitter.unknownStyle=Unknown code generation style {0}
emitter.cannotFindBinding=Cannot find a binding!!
emitter.logEntryInterface1=Interface mode is selected.The following items will not be generated
emitter.logEntryInterface2=1. Message Receiver
emitter.logEntryInterface3=2. Stub
emitter.logEntryInterface4=3. CallbackHandler
emitter.logEntryInterface5=4. Test Classes
emitter.logEntryInterface6=5. Databinding Supporters
emitter.coreclassNameError=Cannot form the core class name
emitter.serviceNotFoundError=specified service {0} not found
emitter.endpointNotFoundError=specified end point {0} not found
emitter.noEndpointsFoundError=endpoints not found
emitter.warningMultipleServices=Warning - Multiple services found - picking the first service!
emitter.warningMultipleEndpoints=Warning - Multiple endpoints found - picking the first endpoint!
emitter.switchingMessages=Warning -No services found - switched to the interface mode!
emitter.warningMultiplePorttypes=Warning - Found multiple porttypes - picking the first

# Type mappers
databinding.typemapper.typeunmatched=No type was mapped to the name {0} with namespace {1}
databinding.typemapper.typeunmatched.null=No type can be matched to a null QName!

##################### java2WSDL
java2wsdl.arg1=Usage java2wsdl -cn <fully qualified class name> : class file name
java2wsdl.arg2=-o <output Location> : output file location
java2wsdl.arg3=-cp <class path uri> : list of classpath entries - (urls)
java2wsdl.arg4=-tn <target namespace> : target namespace
java2wsdl.arg5=-tp <target namespace prefix> : target namespace prefix
java2wsdl.arg6=-stn <schema target namespace> : target namespace for schema
java2wsdl.arg7=-stp <schema target namespace prefix> : target namespace prefix for schema
java2wsdl.arg8=-sn <service name> : service name
java2wsdl.arg9=-of <output file name> : output file name for the WSDL

java2wsdl.generalError=An error occured while generating code
java2wsdl.notAFolder=The specivied location {0} is not a folder
java2wsdl.classIsMust=class name must be present!


