###############################################################################
# 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}
Pixel_data_initial 			= Pixel data:
Pixel_data_value 			= Pixel data:  Bytes per line: {0,number,integer}  \
							  Scanline pad: {1,number,integer} {2}
File 						= &File
OpenFile 					= &Open File...\tCtrl+O
OpenURL						= Open &URL...\tCtrl+U
Reopen 						= &Reopen
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, jpg, jpeg, png):
All_images 					= All Image Files
Loading_lc 					= loading
Saving_lc 					= saving
Unknown_extension 			= Unknown file extension: {0}\nPlease use bmp, gif, ico, \
							  jpg, jpeg, or png.
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
Pixels_per_byte 			= pixels per byte
Byte_per_pixel 				= byte per pixel
Bytes_per_pixel 			= bytes per pixel
Unsupported_lc 				= unsupported
None_lc 					= none
Background_lc 				= background
Previous_lc 				= previous
Unspecified_lc 				= unspecified
Unknown_ac 					= UNKNOWN
Forever_lc 					= forever
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}
Max_length_string 			= Transparent pixel: -1 (none)
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
