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

# Launcher
EXEL050=java version %s
EXEL051=VM \u5167\u90e8\u932f\u8aa4\uff1a\u8a18\u61b6\u9ad4\u4e0d\u8db3
EXEL052=VM \u5167\u90e8\u932f\u8aa4\uff1a\u627e\u4e0d\u5230\u985e\u5225 java/lang/String
EXEL053=VM \u5167\u90e8\u932f\u8aa4\uff1a\u7121\u6cd5\u5efa\u7acb\u985e\u5225\u540d\u7a31 %s \u7684\u4f4d\u5143\u7d44\u9663\u5217
EXEL054=VM \u5167\u90e8\u932f\u8aa4\uff1a\u7121\u6cd5\u5efa\u7acb\u985e\u5225\u540d\u7a31 %s \u7684 java/lang/String
EXEL055=VM \u5167\u90e8\u932f\u8aa4\uff1a\u5c07\u985e\u5225\u540d\u7a31 %s \u7684\u5b57\u4e32\u8f49\u63db\u6210 UTF \u5b57\u5143\u6642\u8a18\u61b6\u9ad4\u4e0d\u8db3
EXEL056=\u985e\u5225 %s \u672a\u5be6\u4f5c main()
EXEL057=VM \u5167\u90e8\u932f\u8aa4\uff1a\u7121\u6cd5\u5efa\u7acb\u5f15\u6578\u9663\u5217
EXEL058=VM \u5167\u90e8\u932f\u8aa4\uff1a\u7121\u6cd5\u5efa\u7acb\u5f15\u6578 %s \u7684\u4f4d\u5143\u7d44\u9663\u5217
EXEL059=VM \u5167\u90e8\u932f\u8aa4\uff1a\u7121\u6cd5\u5efa\u7acb\u5f15\u6578 %s \u7684 java/lang/String
EXEL060=VM \u5167\u90e8\u932f\u8aa4\uff1a\u7121\u6cd5\u8a2d\u5b9a %s \u7684\u9663\u5217\u5143\u7d20
EXEL061=VM \u555f\u52d5\u932f\u8aa4\uff1a\u8a18\u61b6\u9ad4\u4e0d\u8db3
EXEL062=VM \u5167\u90e8\u932f\u8aa4\uff1a\u7121\u6cd5\u5efa\u7acb Java VM

# Port
PORT001=\u7121\u6cd5\u914d\u7f6e\u8a18\u61b6\u9ad4\u3002
PORT002=\u8f09\u5165\u5171\u7528\u7a0b\u5f0f\u5eab\u6642\u767c\u751f\u4e0d\u660e\u932f\u8aa4
PORT015=\u7121\u6cd5\u89e3\u6790 DLL \u53c3\u8003 - \u53ef\u80fd\u907a\u6f0f\u5fc5\u8981\u7684 DLL
PORT016=\u5167\u90e8\u932f\u8aa4 %i
PORT017=\u4f5c\u696d\u5931\u6557\uff1a%d

# Zip
ZIPS000=\u7121\u6cd5\u958b\u555f %1$s (%2$s)
ZIPS001=\u7121\u6cd5\u958b\u555f %s\uff08\u907a\u6f0f\u532f\u51fa\uff09

