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

# UI Logging - http://wiki.netbeans.org/UsageLoggingSpecification
# when a browser is used
# {0} project type (identifier) [string]
# {1} browser identifier [string]
# {2} browser family [string]
USG_PROJECT_BROWSER=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30fb\u30d6\u30e9\u30a6\u30b6\u304c\u4f7f\u7528\u3055\u308c\u307e\u3057\u305f[\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30fb\u30bf\u30a4\u30d7: {0}\u3001\u30d6\u30e9\u30a6\u30b6ID: {1}\u3001\u30d6\u30e9\u30a6\u30b6\u30fb\u30d5\u30a1\u30df\u30ea: {2}]\u3002

# UI Logging - http://wiki.netbeans.org/UsageLoggingSpecification
# when JS tests are run
# {0} project type (identifier) [string]
# {1} JS testing provider identifier [string]
USG_TEST_RUN_JS=JS\u30c6\u30b9\u30c8\u304c\u5b9f\u884c\u3055\u308c\u307e\u3057\u305f[\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30fb\u30bf\u30a4\u30d7: {0}\u3001JS\u30c6\u30b9\u30c8\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0ID: {1}]\u3002

# UI Logging - http://wiki.netbeans.org/UsageLoggingSpecification
# when JS testing provider is selected
# {0} project type (class name) [string]
# {1} selected JS testing provider identifier [string]
USG_TEST_CONFIG_JS=JS\u30c6\u30b9\u30c8\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u304c\u9078\u629e\u3055\u308c\u307e\u3057\u305f[\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30fb\u30bf\u30a4\u30d7: {0}\u3001JS\u30c6\u30b9\u30c8\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0ID: {1}]\u3002

