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


#error checks
unknown_property=\u4e0d\u660e\u306a\u30d7\u30ed\u30d1\u30c6\u30a3{0}
invalid_property_value=\u4e88\u671f\u3057\u306a\u3044\u6587\u5b57"{0}"\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f

MSG_Choose_Color=\u8272\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
MSG_OpenColorChooser=\u30ab\u30e9\u30fc\u30fb\u30c1\u30e5\u30fc\u30b6

MSG_Disable_Ignore_Property=\u7121\u8996\u30ea\u30b9\u30c8\u304b\u3089\u30d7\u30ed\u30d1\u30c6\u30a3{0}\u3092\u524a\u9664
MSG_Enable_Ignore_Property=\u7121\u8996\u30ea\u30b9\u30c8\u306b\u30d7\u30ed\u30d1\u30c6\u30a3{0}\u3092\u8ffd\u52a0

MSG_Disable_Check=\u3053\u306e\u30a8\u30e9\u30fc\u30fb\u30c1\u30a7\u30c3\u30af\u3092\u7121\u52b9\u5316
MSG_Enable_Check=\u30a8\u30e9\u30fc\u30fb\u30c1\u30a7\u30c3\u30af{0}\u3092\u518d\u5ea6\u6709\u52b9\u5316

LBL_CSSEditorTab=\u30bd\u30fc\u30b9(&S)

