###############################################################################
# Copyright (c) 2000, 2004 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
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}
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)
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
Palette_direct 				= Palette: Direct
Palette_size 				= Palette size: {0,number,integer}
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
