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