# 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.
helloworld.title = Hola Mundo\!
requestinfo.title = Ejemplo de Informacion de Requerimiento\:
requestinfo.label.method = M\u00E9todo\:
requestinfo.label.requesturi = URI de Requerimiento\:
requestinfo.label.protocol = Protocolo\:
requestinfo.label.pathinfo = Info de Ruta\:
requestinfo.label.remoteaddr = Direccion Remota\:
requestheader.title = Ejemplo de Cabecera de Requerimiento\:
requestparams.title = Ejemplo de par\u00E1metros de Requerimiento\:
requestparams.params-in-req = Par\u00E1metros en este Request\:
requestparams.no-params = No hay p\u00E1rametro. Por favor, usa alguno
requestparams.firstname = Nombre\:
requestparams.lastname = Apellidos\:
cookies.title = Ejemplo de Cookies
cookies.cookies = Tu navegador est\u00E1 enviando los siguientes cookies\:
cookies.no-cookies = Tu navegador no est\u00E1 enviando cookies
cookies.make-cookie = Crea un cookie para enviarlo a tu navegador
cookies.name = Nombre\:
cookies.value = Valor\:
cookies.set = Acabas de enviar a tu navegador estos cookies\:
sessions.title = Ejemplo de Sesiones
sessions.id = ID de Sesi\u00F3n\:
sessions.created = Creado\:
sessions.lastaccessed = Ultimo Acceso\:
sessions.data = Lo siguientes datos est\u00E1n en tu sesi\u00F3n\:
sessions.adddata = A\u00F1ade datos a tu sesi\u00F3n\:
sessions.dataname = Nombre del atributo de sesi\u00F3n\:
sessions.datavalue = Valor del atributo de sesi\u00F3n\:
