# 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=\u0130\u00e7 VM hatas\u0131\: Bellek yetersiz
EXEL052=\u0130\u00e7 VM hatas\u0131\: java/lang/String s\u0131n\u0131f\u0131 bulunamad\u0131
EXEL053=\u0130\u00e7 VM hatas\u0131\: %s s\u0131n\u0131f ad\u0131 i\u00e7in byte dizisi yarat\u0131lamad\u0131
EXEL054=\u0130\u00e7 VM hatas\u0131\: %s s\u0131n\u0131f ad\u0131 i\u00e7in java/lang/String yarat\u0131lamad\u0131
EXEL055=\u0130\u00e7 VM hatas\u0131\: %s s\u0131n\u0131f ad\u0131 i\u00e7in dizgi UTF karakterlerine d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcrken bellek bitti
EXEL056=%s s\u0131n\u0131f\u0131 main() y\u00f6ntemini ger\u00e7ekle\u015ftirmiyor
EXEL057=\u0130\u00e7 VM hatas\u0131\: Ba\u011f\u0131ms\u0131z de\u011fi\u015fken dizisi yarat\u0131lamad\u0131
EXEL058=\u0130\u00e7 VM hatas\u0131\: %s i\u00e7in ba\u011f\u0131ms\u0131z de\u011fi\u015fken dizisi yarat\u0131lamad\u0131
EXEL059=\u0130\u00e7 VM hatas\u0131\: %s ba\u011f\u0131ms\u0131z de\u011fi\u015fkeni i\u00e7in java/lang/String yarat\u0131lamad\u0131
EXEL060=\u0130\u00e7 VM hatas\u0131\: %s i\u00e7in dizi \u00f6\u011fesi tan\u0131mlanamad\u0131
EXEL061=VM ba\u015flatma hatas\u0131\: Bellek yetersiz
EXEL062=\u0130\u00e7 VM hatas\u0131\: Java VM yarat\u0131lamad\u0131

# Port
PORT001=Bellek ayr\u0131lamad\u0131.
PORT002=Payla\u015f\u0131lan kitapl\u0131k y\u00fcklenirken bilinmeyen hata
PORT015=DLL ba\u015fvurular\u0131 \u00e7\u00f6z\u00fclemiyor - \u00f6nko\u015ful olan bir DLL eksik olabilir
PORT016=\u0130\u00e7 Hata %i
PORT017=\u0130\u015flem ba\u015far\u0131s\u0131z oldu\: %d

# Zip
ZIPS000=%1$s a\u00e7\u0131lam\u0131yor (%2$s)
ZIPS001=%s a\u00e7\u0131lam\u0131yor (d\u0131\u015fa aktarma eksik)

