###############################################################################
# Copyright (c) 2000, 2007 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
###############################################################################
Image_analyzer 				= Image Analyzer
None 						= None
White 						= White
Black 						= Black
Red 						= Red
Green 						= Green
Blue 						= Blue
X_scale 					= X Scale
Y_scale 					= Y Scale
Alpha_K 					= Alpha-K
Display 					= Display
Incremental 				= Incremental
Transparent 				= Transparent
Transparent_lc 				= transparent
Mask 						= Mask
Background 					= Background
Save_group                  = Save
Animation 					= Animation
Previous 					= < &Previous
Next 						= &Next >
Animate 					= &Animate
Type_initial 				= Type:
Type_string 				= Type: {0}
Type_index 					= Type: {0} [{1,number,integer} of {2,number,integer}]
Size_initial 				= Size:
Size_value 					= Size: {0,number,integer} x {1,number,integer}
Depth_initial 				= Depth:
Depth_value 				= Depth: {0} (Display: {1})
Transparent_pixel_initial 	= Transparent pixel:
Transparent_pixel_value		= Transparent pixel: {0}
Time_to_load_initial 		= Time to load:
Time_to_load_value			= Time to load: {0} ms
Animation_size_initial 		= Animation size:
Animation_size_value 		= Animation size: {0,number,integer} x {1,number,integer}
Background_pixel_initial 	= Background pixel:
Background_pixel_value 		= Background pixel: {0}
Image_location_initial 		= Image location:
Image_location_value 		= Image location: ({0,number,integer}, {1,number,integer})
Disposal_initial 			= Disposal:
Disposal_value 				= Disposal: {0,number,integer} ({1})
Delay_initial 				= Delay:
Delay_value 				= Delay: {0,number,integer} ms (using {1,number,integer} ms)
Delay_used 					= Delay: {0,number,integer} ms
Repeats_initial 			= Repeats:
Repeats_value 				= Repeats: {0,number,integer}
Repeats_forever 			= Repeats: {0,number,integer} (forever)
Compression    				= Compression:
Palette_initial 			= Palette:
Palette_direct 				= Palette: Direct
Palette_value 				= Palette size: {0,number,integer}
Max_length_string 			= Transparent pixel: -1 (none)
Pixel_data_initial 			= Pixel data:
Pixel_data_value 			= Pixel data:  Bytes per line: {0,number,integer}  \
							  Scanline pad: {1,number,integer} {2}  {3}
Depth_info 					= Depth: {0,number,integer} -- {1}
One_byte 					= 1 byte per pixel
Multi_bytes 				= {0,number,integer} bytes per pixel
Multi_pixels 				= {0,number,integer} pixels per byte {1}
Scroll_for_alpha			= (Scroll down to see alpha data)
File 						= &File
OpenFile 					= &Open File...\tCtrl+O
OpenURL						= Open &URL...\tCtrl+U
Reopen 						= &Reopen
LoadFile 					= &Load File...\tCtrl+L
Save 						= &Save\tCtrl+S
Save_as 					= Save &As...
Save_mask_as 				= Save &Mask As...
Print 						= &Print\tCtrl+P
Exit 						= E&xit
Alpha 						= Alpha
OpenURLDialog				= Open URL
EnterURL					= Enter the URL for an image (bmp, gif, ico, jfif, jpeg, jpg, png, tif, tiff):
All_images 					= All Image Files
Loading_lc 					= loading
Saving_lc 					= saving
Unknown_extension 			= Unknown file extension: {0}\nPlease use bmp, gif, ico, jfif, jpeg, jpg, png, tif, or tiff.
Overwrite 					= Overwrite {0}?
Save_all					= Save all {0} images into a multi-image file?
Analyzer_on 				= Image Analyzer on: {0}
Reloading_lc 				= reloading
Color_at 					= Image color at ({0,number,integer}, {1,number,integer}) \
							  - pixel {2,number,integer} [0x{3}] - is {4} [0x{5}] {6}
RGB							= RGB '{'{0}, {1}, {2}'}'
RGBA						= RGBA '{'{0}, {1}, {2}, {3}'}'
Color_at_transparent		= (transparent)
Creating_image 				= Creating image # {0,number,integer} from 
OK							= OK
Cancel						= Cancel
Stop 						= &Stop
Creating_from 				= Creating image read from
Bytes_per_line 				= Bytes per line:
Scanline_pad 				= Scanline pad:
Printing_error				= Printing error: 
Error 						= Error {0} file\n{1}\n\n
Unsupported_lc 				= unsupported
None_lc 					= none
Background_lc 				= background
Previous_lc 				= previous
Unspecified_lc 				= unspecified
Unknown_ac 					= UNKNOWN
Forever_lc 					= forever
Save_as_type				= Save As BMP Type...
Save_as_type_label			= Select the type of BMP to save as:
Save_as_type_no_compress	= No Compression
Save_as_type_rle_compress	= RLE Compression
Save_as_type_os2			= OS/2 BMP
