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

# Sample ResourceBundle properties file

# Required bundle strings form j2eeeditor
CTL_Add=\u8ffd\u52a0(&A)...
CTL_Edit=\u7de8\u96c6(&E)...
CTL_Remove=\u524a\u9664(&R)



#ACS_add_mnc=A

#ACS_edit_mnc=E

#ACS_remove_mnc=R


TTL_ADD=\u8ffd\u52a0
TTL_EDIT=\u7de8\u96c6

TTL_ERROR=\u30a8\u30e9\u30fc
TTL_WARNING=\u8b66\u544a

MSG_TableErrors=\u8868{0}\u3067\u6b21\u306e\u30a8\u30e9\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f:
MSG_RemoveWarning=\u9078\u629e\u3055\u308c\u3066\u3044\u308b\u884c\u3092\u524a\u9664\u3059\u308b\u3068\u3001\u6b21\u306e\u30a8\u30e9\u30fc\u306b\u306a\u308a\u307e\u3059:

LBL_Cancel=\u53d6\u6d88


