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


## HelpStringCustomEditor.java (and inner classes)
LBL_Arguments=Ar&guments:
#$InitCodeEditor
LBL_InitCodeFormat=&Init Code Format:
#$RegExpEditor
# negation gives all keys and bundle names
LBL_NonI18nRegExpFormat=&Non-Internationalization Regular Expression Format:
#$I18nRegExpEditor
# key
LBL_I18nRegExpFormat=&Internationalization Regular Expression Format:
ACS_HelpStringCustomEditor=N/A
ACS_HelpStringCombo=N/A
ACS_HelpStringList=N/A

#I18nAction
CTL_I18nAction=Inte&rnationalize...

#I18nGroupAction
LBL_I18nGroupActionName=Internationali&zation

#I18nManager
CTL_I18nDialogTitle=Internationalize
CTL_InfoPanelTitle=Information About Found String
EXC_BadKey=The key for your property is not valid. Please choose another key.
MSG_NoInternationalizableString=No hard-coded, non-internationalized strings were found in this file.
MSG_CouldNotOpen=The document could not be opened. Cannot internationalize.

## I18nPanel.java
CTL_CancelButton=Cancel
ACS_CTL_CancelButton=N/A
CTL_HelpButton=&Help
ACS_CTL_HelpButton=N/A
CTL_InfoButton=&Info
ACS_CTL_InfoButton=N/A
CTL_ReplaceButton=R&eplace
ACS_CTL_ReplaceButton=N/A
CTL_SkipButton=&Skip
ACS_CTL_SkipButton=N/A
CTL_IgnoreButton=Ig&nore
ACS_CTL_IgnoreButton=N/A
TT_IgnoreButton=Append the //NOI18N comment
LBL_Replace=Replace:
ACS_I18nPanel=This panel allows you to choose or create a bundle, set the replace string format, and set property keys and values.
CTL_CloseButton=&Close

#I18nUtil
TXT_Arguments={arguments} - message format arguments.
TXT_FieldIdentifier={identifier} - field identifier initialized with bundle.
TXT_KeyHelp={key} - key from resource.
TXT_PackageNameDots={bundleNameDots} - package name of bundle separated by dots.
TXT_PackageNameSlashes={bundleNameSlashes} - package name of bundle separated with slashes.
TXT_SourceDataObjectName={sourceFileName} - name of target data object. (The name of the file that is searched for the hard-coded string.)

#InfoPanel
CTL_ComponentLabel=&Component:
CTL_FoundInLabel=&Found in:
CTL_PropertyLabel=&Property:
CTL_StringLabel=&String:
ACS_InfoPanel=N/A
ACS_stringText=N/A
ACS_propertyText=N/A
ACS_componentText=N/A
ACS_foundInText=N/A

#InsertI18NStringAction
CTL_InsertI18nDialogTitle=Insert Internationalized String
CTL_InsertI18nString=Insert Internationalized &String...
CTL_OKButton=OK
ACS_CTL_OKButton=N/A
MSG_CantInsertInGuarded=Cannot insert internationalized string in guarded block.


# manifest.mf
OpenIDE-Module-Name=Internationalization
OpenIDE-Module-Display-Category=Tools
OpenIDE-Module-Short-Description=Simplifies internationalization of applications.
OpenIDE-Module-Long-Description=The Internationalization module, combined with the Properties module, simplifies internationalization of Java applications. It includes a wizard, which \
enables you to internationalize all of your Java at once, a test tool, which reports any missing key-value pairs, and an execution service, which enables you to \
set the locale in which the application is to run.


## PropertyPanel.java
CTL_Format=Fo&rmat...
ACS_CTL_Format=N/A
LBL_Key=&Key:
LBL_ReplaceFormat=C&ode:
LBL_ReplaceStringFormatEditor=Replace Code Format Editor
LBL_Value=&Value:
ACS_PropertyPanel=This panel allows you to set  the code format of internationalized strings and set property keys and values.
ACS_valueText=N/A
ACS_commentText=N/A
ACS_replaceFormatTextField=N/A
LBL_Comment=Commen&t:
LBL_ReplaceCodeFormat=&Replace Code Format:
CTL_Arguments=Ar&guments...
LBL_InvalidBundle=Invalid path: 


## ResourcePanel.java
CTL_BrowseButton=Se&lect...
ACS_CTL_BrowseButton=N/A
CTL_NewButton=New...
ACS_CTL_NewButton=N/A
ACS_ResourceText=N/A
CTL_SelectPropDO_Dialog_RootTitle=&Select:
CTL_SelectPropDO_Dialog_Title=Select Resource Bundle
CTL_Template_Dialog_Title=New Bundle
CTL_Template_Dialog_RootTitle=&Filesystem:
LBL_BundleName=&Bundle Name:
LBL_ResourceTitleBorder=Choose Bundle
LBL_TemplateName=Object &Name
ACS_TEXT_ObjectNameInputPanel=N/A
ACS_ResourcePanel=This panel allows you to create new bundle or open and existing one.
LBL_Sources=Sources

## FileSelector.java
LBL_ExistingBundles=&Existing Resource Bundles:
CTL_CreateNewButton=Create &New
ACSN_CreateNewBundle=Create New Resource Bundle
ACSD_CreateNewBundle=Creates a new resource bundle file of the specified name
ACSN_CancelSelection=Cancel Selection
ACSD_CancelSelection=Cancels the current selection and closes the dialog
LBL_FileName=&File Name:
ACSN_FileName=Name of a New File
ACSD_FileName=Determines name of a new resource bundle file
ACSN_FileSelectorTreeView=Tree View
ACSD_FileSelectorTreeView=Tree view in file selector
ACSD_FileSelectorPanel=File selector dialog

#filenames
Services/org-netbeans-modules-i18n-I18nOptions.settings=Internationalization

#---

TXT_NoMoreStrings=No more hard-coded strings found.
TXT_SearchingForStrings=Searching for hard-coded strings...
TXT_NoHardcodedString=No hard-coded strings were found in this file.
