# 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=\u5185\u90e8 VM \u9519\u8bef\uff1a\u5185\u5b58\u4e0d\u8db3
EXEL052=\u5185\u90e8 VM \u9519\u8bef\uff1a\u672a\u80fd\u627e\u5230\u7c7b java/lang/String
EXEL053=\u5185\u90e8 VM \u9519\u8bef\uff1a\u672a\u80fd\u4e3a\u7c7b\u540d %s \u521b\u5efa\u5b57\u8282\u6570\u7ec4
EXEL054=\u5185\u90e8 VM \u9519\u8bef\uff1a\u672a\u80fd\u4e3a\u7c7b\u540d %s \u521b\u5efa java/lang/String
EXEL055=\u5185\u90e8 VM \u9519\u8bef\uff1a\u4e3a\u7c7b\u540d %s \u5c06\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a UTF \u5b57\u7b26\u4e32\u65f6\u5185\u5b58\u4e0d\u8db3
EXEL056=\u7c7b %s \u672a\u5b9e\u73b0 main()
EXEL057=\u5185\u90e8 VM \u9519\u8bef\uff1a\u672a\u80fd\u521b\u5efa\u53c2\u6570\u6570\u7ec4
EXEL058=\u5185\u90e8 VM \u9519\u8bef\uff1a\u672a\u80fd\u4e3a\u53c2\u6570 %s \u521b\u5efa\u5b57\u8282\u6570\u7ec4
EXEL059=\u5185\u90e8 VM \u9519\u8bef\uff1a\u672a\u80fd\u4e3a\u53c2\u6570 %s \u521b\u5efa java/lang/String
EXEL060=\u5185\u90e8 VM \u9519\u8bef\uff1a\u672a\u80fd\u4e3a %s \u8bbe\u7f6e\u6570\u7ec4\u5143\u7d20
EXEL061=VM \u542f\u52a8\u9519\u8bef\uff1a\u5185\u5b58\u4e0d\u8db3
EXEL062=\u5185\u90e8 VM \u9519\u8bef\uff1a\u672a\u80fd\u521b\u5efa Java VM

# Port
PORT001=\u672a\u80fd\u5206\u914d\u5185\u5b58\u3002
PORT002=\u88c5\u5165\u5171\u4eab\u5e93\u65f6\u53d1\u751f\u4e86\u672a\u77e5\u9519\u8bef
PORT015=\u65e0\u6cd5\u89e3\u6790 DLL \u5f15\u7528 \uff0d \u53ef\u80fd\u7f3a\u5c11\u5fc5\u9700\u7684 DLL
PORT016=\u5185\u90e8\u9519\u8bef %i
PORT017=\u64cd\u4f5c\u5931\u8d25\uff1a%d

# Zip
ZIPS000=\u65e0\u6cd5\u6253\u5f00 %1$s\uff08%2$s\uff09
ZIPS001=\u65e0\u6cd5\u6253\u5f00 %s\uff08\u7f3a\u5c11\u5bfc\u51fa\uff09

