#
# Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

# Not concatenated with any other string (written on a separate line).
ILLEGAL_ENTRY = \u4E0D\u6B63\u306A\u30A8\u30F3\u30C8\u30EA: "{0}"\u3002\u30A8\u30F3\u30C8\u30EA\u306F\u3001"ClassName.class"\u307E\u305F\u306F"fully.qualified.ClassName"\u3067\u306F\u306A\u304F\u3001"ClassName"\u307E\u305F\u306F"OuterClass.InnerClass"\u306E\u5F62\u5F0F\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059

# {0} - class name, {1} - resource location e.g. error loading class "Foo" listed in foo/bar/jaxb.index, make sure that entries are accessable on CLASSPATH and of the form "ClassName" or "OuterClass.InnerClass", not "ClassName.class" or "fully.qualified.ClassName"
ERROR_LOADING_CLASS = {1}\u306B\u30EA\u30B9\u30C8\u3055\u308C\u3066\u3044\u308B\u30AF\u30E9\u30B9"{0}"\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30A8\u30F3\u30C8\u30EA\u304CCLASSPATH\u4E0A\u3067\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u3067\u3042\u308A\u3001"ClassName.class"\u307E\u305F\u306F"fully.qualified.ClassName"\u3067\u306F\u306A\u304F\u3001"ClassName"\u307E\u305F\u306F"OuterClass.InnerClass"\u306E\u5F62\u5F0F\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059

INVALID_PROPERTY_VALUE = {1}\u306F\u30D7\u30ED\u30D1\u30C6\u30A3"{0}"\u306B\u5BFE\u3057\u3066\u7121\u52B9\u306A\u5024\u3067\u3059

# Not concatenated with any other string (written on a separate line).
UNSUPPORTED_PROPERTY = \u30D7\u30ED\u30D1\u30C6\u30A3"{0}"\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093

#{0} - package name. e.g.: "foo.bar" doesn't contain ObjectFactory.class or jaxb.index
BROKEN_CONTEXTPATH = "{0}"\u306B\u306FObjectFactory.class\u307E\u305F\u306Fjaxb.index\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093

NO_DEFAULT_CONSTRUCTOR_IN_INNER_CLASS = "{0}"\u306F\u5185\u90E8\u30AF\u30E9\u30B9\u3067\u3042\u308B\u305F\u3081\u3001\u5F15\u6570\u306A\u3057\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30B3\u30F3\u30C8\u30E9\u30AF\u30BF\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002''static''\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002

INVALID_TYPE_IN_MAP = \u30DE\u30C3\u30D7\u306B\u4E0D\u6B63\u306A\u30BF\u30A4\u30D7\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059
