#/*******************************************************************************
# * Copyright (c) 2008 IBM Corporation and others.
# * All rights reserved. This program and the accompanying materials
# * are made available under the terms of the Eclipse Public License v1.0
# * which accompanies this distribution, and is available at
# * http://www.eclipse.org/legal/epl-v10.html
# *
# * Contributors:
# *     IBM Corporation - initial API and implementation
# *******************************************************************************/

# ====================================================================
# To code developer:
#   Do NOT change the properties between this line and the
#   "%%% END OF TRANSLATED PROPERTIES %%%" line.
#   Make a new property name, append to the end of the file and change
#   the code to use the new property.
# ====================================================================

# ====================================================================
# %%% END OF TRANSLATED PROPERTIES %%%
# ====================================================================

pluginName=STEM \uc9c8\ubcd1 \ubaa8\ub378 UI
providerName=Eclipse.org

# Common Keys
_UI_STEM=STEM
_UI_Builtin=\ud3ec\ud568\ub41c

_UI_Disease=\uc9c8\ubcd1
_UI_Infector=\uc624\uc5fc\uc6d0

# New Disease Wizard
_UI_DiseaseModelWizard_label=\uc9c8\ubcd1
_UI_ModelModelWizard_description=\uc0c8\ub85c\uc6b4 \uc9c8\ubcd1 \uc815\uc758

# New Infector Wizard
_UI_InfectorWizard_label=\uc624\uc5fc\uc6d0 / \uc811\uc885\uc790
_UI_InfectorWizard_description=\uc0c8\ub85c\uc6b4 \uc624\uc5fc\uc6d0 \uc815\uc758

# Disease Model View
_UI_DView_Name=\uc9c8\ubcd1

# Project Explorer Content
_UI_Disease_Models=\uc9c8\ubcd1 \ubaa8\ub378
_UI_DM_Instances=\uc9c8\ubcd1 \ubaa8\ub378 \uc0ac\ub840
_UI_Recorded_CSV=\uae30\ub85d\ub41c CSV \uc2dc\ubbac\ub808\uc774\uc158

_UI_StandardEditor_menu=&Standard Editor

_UI_CreateChild_menu_item=&New Child
_UI_CreateSibling_menu_item=N&  \ud615\uc81c \uc790\ub9e4

_UI_ShowPropertiesView_menu_item=\ud45c\uc2dc \ubc0f \uc18d\uc131\ubcf4\uae30
_UI_RefreshViewer_menu_item=&Refresh

_UI_SelectionPage_label=\uc120\ud0dd
_UI_ParentPage_label=\ubd80\ubaa8
_UI_ListPage_label=\ubaa9\ub85d
_UI_TreePage_label=\ub098\ubb34
_UI_TablePage_label=\ud14c\uc774\ube14
_UI_TreeWithColumnsPage_label=\ub098\ubb34\uc640 \uc5f4
_UI_ObjectColumn_label=\uac1c\uccb4
_UI_SelfColumn_label=\uc140\ud504

_UI_NoObjectSelected=\uc544\ubb34\uac83\ub3c4 \uc548 \uc120\ud0dd\ud568
_UI_SingleObjectSelected=\uc120\ud0dd\ud55c \uac1d\uccb4 : {0}
_UI_MultiObjectSelected=\uc120\ud0dd\ub41c {0} \uac1d\uccb4

_UI_OpenEditorError_label=\uc624\ud508 \uc5d0\ub514\ud130

_UI_Wizard_category=\uc608\uc81c EMF \ubaa8\ub378 \uc0dd\uc131 \ub9c8\ubc95\uc0ac

_UI_CreateModelError_message=\ud30c\uc77c '{0} "\uc5d0\uc11c \ubb38\uc81c \ubc1c\uc0dd

_UI_StandardModelWizard_label=\ud45c\uc900 \ubaa8\ub378
_UI_StandardModelWizard_description=\uc0c8\ub85c\uc6b4 \ud45c\uc900 \ubaa8\ub378\uc744 \ub9cc\ub4e4\uae30

_UI_StandardEditor_label=\ud45c\uc900 \ubaa8\ub378 \ud3b8\uc9d1\uae30

_UI_StandardEditorFilenameDefaultBase=\ub098\uc758
_UI_StandardEditorFilenameExtension=\ud45c\uc900

_WARN_FilenameExtension=\ud30c\uc77c \uc774\ub984\uc740 ".{0}"\ub85c \ub05d\ub098\uc57c\ud568. 

_UI_ModelObject=\ubaa8\ub378 \uac1d\uccb4
_UI_XMLEncoding=XML \uc778\ucf54\ub529
_UI_XMLEncodingChoices=UTF - 8 ASCII UTF - 16 UTF - 16BE UTF - 16LE ISO - 8859 - 1
_UI_Wizard_initial_object_description=\uc0dd\uc131\ud560 \ubaa8\ub378 \uac1c\uccb4 \uc120\ud0dd

_UI_FileConflict_label=\ud30c\uc77c \ucda9\ub3cc
_WARN_FileConflict=\uc800\uc7a5\ub418\uc9c0 \uc54a\uc740 \uc0ac\ud56d\ub4e4\uc774 \ud3b8\uc9d1\uae30 \uc678\ubd80\uc758 \ubcc0\uacbd \uc0ac\ud56d\ub4e4\uacfc \ucda9\ub3cc\ud568. \uc774 \ud3b8\uc9d1\uae30\uc758 \ubcc0\uacbd \uc0ac\ud56d\ub4e4\uc744 \ucde8\uc18c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?

_UI_DiseasemodelsEditorAdvisor_ActionSet_label=\uc9c8\ubcd1\ubaa8\ub378 \uc561\uc158 \uc138\ud2b8
_UI_Perspective_label=\uc9c8\ubcd1\ubaa8\ub378

_UI_Browse_label=&Browse...
_UI_File_label=&File
_UI_Question_title=\uc9c8\ubb38
_UI_Error_title=\uc624\ub958
_WARN_No_Editor=\ud30c\uc77c "{0}"\uc5d0 \ub300\ud55c \ub4f1\ub85d\ub41c \ud3b8\uc9d1\uae30\uac00 \uc5c6\uc74c.

_UI_Application_title=\uc9c8\ubcd1\ubaa8\ub378 \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8
_UI_Menu_File_label=&File
_UI_Menu_New_label=&New
_UI_Menu_Open_label=&Open...
_UI_Menu_Open_description=\ubaa8\ub378 \uac1c\uccb4 \ud30c\uc77c \uc5f4\uae30
_UI_Menu_OpenURI_label=&Open URI...
_UI_Menu_OpenURI_description=URI\uc5d0\uc11c \ub85c\ub529\ud558\ub294 \ubaa8\ub378 \uac1c\uccb4 \uc5f4\uae30
_UI_Menu_Edit_label=&Edit
_UI_Menu_Window_label=&Window
_UI_Menu_Help_label=&Help
_UI_Menu_About_label=\uc9c8\ubcd1\ubaa8\ub378 &\uad00\ud558\uc5ec ... 
_UI_About_title=\uc9c8\ubcd1\ubaa8\ub378 \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8
_UI_About_text=\uc9c8\ubcd1\ubaa8\ub378 \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8\uc774 \uc5ec\uae30\uc5d0 \ud45c\uc2dc\ub429\ub2c8\ub2e4.

_UI_StandardModelWizard_ActionSet_label=\ud45c\uc900 \ubaa8\ub378 \uc791\uc5c5 \uc138\ud2b8

_UI_StandardEditorFilenameExtensions=\ud45c\uc900

_WARN_FilenameExtensions=\ud30c\uc77c \uc774\ub984\uc740 \ub2e4\uc74c \ud655\uc7a5\uc790 \uc911 \ud558\ub098\ub97c \uac00\uc838\uc57c\ud568 : {0}

_UI_Wizard_label=\uc0c8\ub85c\uc6b4
_UI_DiseasepredicatesEditor_menu=&Diseasepredicates Editor
_UI_DiseasepredicatesModelWizard_label=Diseasepredicates Model
_UI_DiseasepredicatesModelWizard_description=Create a new Diseasepredicates model
_UI_DiseasepredicatesEditor_label=Diseasepredicates Model Editor
_UI_DiseasepredicatesEditorFilenameDefaultBase=\ub098\uc758
_UI_DiseasepredicatesEditorFilenameExtensions=diseasepredicates
_UI_DiseasepredicatesModelWizard_ActionSet_label=Diseasepredicates Model Action Set
