diff --git a/INSTALL b/INSTALL index 4a3e2ce..cec0dba 100644 --- a/INSTALL +++ b/INSTALL @@ -14,8 +14,24 @@ in the "doc" directory. 3. Copy 'config.php.example' to 'config.php' and edit to taste. 4. Then, point your browser to the phpldapadmin directory. -* For help +* For additional help See the files in the "doc" directory. Join our mailing list: https://lists.sourceforge.net/lists/listinfo/phpldapadmin-devel + +* Platform specific notes + + * OpenBSD with chroot'ed Apache: + + For jpeg photos to work properly, you must do this: + # mkdir /var/www/tmp, and then + # chown root:daemon /var/www/tmp + # chmod 1755 /var/www/tmp + Where tmp is the $jpeg_temp_dir configured in config.php + + * Windows + + For jpeg photos to work properly, be sure to change $jpeg_temp_dir + from "/tmp" to "c:\\temp" or similar. + diff --git a/VERSION b/VERSION index 965065d..b0bb878 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.9.3 +0.9.5 diff --git a/add_attr.php b/add_attr.php new file mode 100644 index 0000000..dadd99b --- /dev/null +++ b/add_attr.php @@ -0,0 +1,141 @@ +createSambaPasswords( $val ); + $val = $mkntPassword->valueOf($attr); +} + +$ds = pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] ); +$new_entry = array( $attr => $val ); +$result = @ldap_mod_add( $ds, $dn, $new_entry ); + +if( $result ) + header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn&modified_attrs[]=$encoded_attr" ); +else + pla_error( $lang['failed_to_add_attr'], ldap_error( $ds ) , ldap_errno( $ds ) ); + +// check if we need to append the ;binary option to the name +// of some binary attribute + +function is_binary_option_required( $server_id, $attr ){ + + // list of the binary attributes which need the ";binary" option + $binary_attributes_with_options = array( + // Superior: Ldapv3 Syntaxes (1.3.6.1.4.1.1466.115.121.1) + '1.3.6.1.4.1.1466.115.121.1.8' => "userCertificate", + '1.3.6.1.4.1.1466.115.121.1.8' => "caCertificate", + '1.3.6.1.4.1.1466.115.121.1.10' => "crossCertificatePair", + '1.3.6.1.4.1.1466.115.121.1.9' => "certificateRevocationList", + '1.3.6.1.4.1.1466.115.121.1.9' => "authorityRevocationList", + // Superior: Netscape Ldap attributes types (2.16.840.1.113730.3.1) + '2.16.840.1.113730.3.1.40' => "userSMIMECertificate" + ); + + // quick check by attr name (short circuits the schema check if possible) + //foreach( $binary_attributes_with_options as $oid => $name ) + //if( 0 == strcasecmp( $attr, $name ) ) + //return true; + + $schema_attr = get_schema_attribute( $server_id, $attr ); + if( ! $schema_attr ) + return false; + + $syntax = $schema_attr->getSyntaxOID(); + if( isset( $binary_attributes_with_options[ $syntax ] ) ) + return true; + + return false; +} + +?> diff --git a/add_attr_form.php b/add_attr_form.php new file mode 100644 index 0000000..ed0eef8 --- /dev/null +++ b/add_attr_form.php @@ -0,0 +1,174 @@ + + + + +

+

:     :

+ +getMustAttrNames( $schema_oclasses ), + $schema_oclass->getMayAttrNames( $schema_oclasses ), + $avail_attrs ); +} + +$avail_attrs = array_unique( $avail_attrs ); +$avail_attrs = array_filter( $avail_attrs, "not_an_attr" ); +sort( $avail_attrs ); + +$avail_binary_attrs = array(); +foreach( $avail_attrs as $i => $attr ) { + if( is_attr_binary( $server_id, $attr ) ) { + $avail_binary_attrs[] = $attr; + unset( $avail_attrs[ $i ] ); + } +} + +?> + +
+
+ + + + + 0 ) { ?> + +
+
+
+ + + + + + +
+ + +
+
+ () +
+
+ + + + + 0 ) { ?> + +
+ + + +
+ + + + " . $lang['warning_file_uploads_disabled'] . "
"; + else + echo "
" . sprintf( $lang['max_file_size'], ini_get( 'upload_max_filesize' ) ) . "
"; + ?> +
+ + +
+
+ () + + + +
+ + + + $values ) + if( 0 == strcasecmp( $attr, $x ) ) + return false; + return true; +} + + +?> diff --git a/add_oclass.php b/add_oclass.php index 13e4e65..502a691 100644 --- a/add_oclass.php +++ b/add_oclass.php @@ -1,4 +1,6 @@ $new_oclass ); if( is_array( $new_attrs ) && count( $new_attrs ) > 0 ) - foreach( $new_attrs as $attr => $val ) + foreach( $new_attrs as $attr => $val ) { + + // Check to see if this is a unique Attribute + if( $badattr = checkUniqueAttr( $server_id, $dn, $attr, array($val) ) ) { + $search_href='search.php?search=true&form=advanced&server_id=' . $server_id . '&filter=' . $attr . '=' . $badattr; + pla_error(sprintf( $lang['unique_attr_failed'] , $attr,$badattr,$dn,$search_href ) ); + } + $new_entry[ $attr ] = $val; + } //echo "
"; 
 //print_r( $new_entry );
 //exit;
 
-$ds = pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] );
+$ds = pla_ldap_connect( $server_id );
+pla_ldap_connection_is_error( $ds );
 $add_res = @ldap_mod_add( $ds, $dn, $new_entry );
 
 if( ! $add_res )
@@ -51,7 +64,7 @@ if( ! $add_res )
 }
 else
 {
-	header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn" );
+	header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn&modified_attrs[]=objectclass" );
 }
 
 ?>
diff --git a/add_oclass_form.php b/add_oclass_form.php
index 00ba27a..cbe624f 100644
--- a/add_oclass_form.php
+++ b/add_oclass_form.php
@@ -1,4 +1,6 @@
- $attr )
-	$must_attrs[$i] = $attr->getName();
+//foreach( $must_attrs as $i => $attr )
+	//$must_attrs[$i] = $attr->getName();
 
 // build a list of the attributes that this new objectClass requires,
 // but that the object does not currently contain
 $needed_attrs = array();
-foreach( $must_attrs as $attr )
-	if( ! in_array( strtolower($attr), $current_attrs ) )
-		$needed_attrs[] = $attr;
+foreach( $must_attrs as $attr ) {
+    $attr = get_schema_attribute( $server_id, $attr->getName() );
+    //echo "
"; var_dump( $attr ); echo "
"; + // First, check if one of this attr's aliases is already an attribute of this entry + foreach( $attr->getAliases() as $alias_attr_name ) + if( in_array( strtolower( $alias_attr_name ), $current_attrs ) ) + // Skip this attribute since it's already in the entry + continue; + if( in_array( strtolower($attr->getName()), $current_attrs ) ) + continue; + + // We made it this far, so the attribute needs to be added to this entry in order + // to add this objectClass + $needed_attrs[] = $attr; +} if( count( $needed_attrs ) > 0 ) { - include 'header.php'; ?> + include './header.php'; ?>

@@ -83,14 +97,8 @@ if( count( $needed_attrs ) > 0 ) $attr ) { ?> - - - - - - - - + getName()); ?> + @@ -106,12 +114,13 @@ if( count( $needed_attrs ) > 0 ) } else { - $ds = pla_ldap_connect( $server_id ) or pla_error( "Could not connect to LDAP server." ); + $ds = pla_ldap_connect( $server_id ); + pla_ldap_connection_is_error( $ds ); $add_res = @ldap_mod_add( $ds, $dn, array( 'objectClass' => $new_oclass ) ); if( ! $add_res ) pla_error( "Could not perform ldap_mod_add operation.", ldap_error( $ds ), ldap_errno( $ds ) ); else - header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn" ); + header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn&modified_attrs[]=objectClass" ); } diff --git a/add_value.php b/add_value.php index 98a55b9..681cece 100644 --- a/add_value.php +++ b/add_value.php @@ -1,4 +1,6 @@ - $new_value ); +$new_entry = array( $attr => $new_value ); + +// Check to see if this is a unique Attribute +if( $badattr = checkUniqueAttr( $server_id, $dn, $attr, $new_entry ) ) { + $search_href='search.php?search=true&form=advanced&server_id=' . $server_id . '&filter=' . $attr . '=' . $badattr; + pla_error(sprintf( $lang['unique_attr_failed'] , $attr,$badattr,$dn,$search_href ) ); +} + +// Call the custom callback for each attribute modification +// and verify that it should be modified. +if( preAttrAdd( $server_id, $dn, $attr, $new_entry ) ) { $add_result = @ldap_mod_add( $ds, $dn, $new_entry ); if( ! $add_result ) pla_error( $lang['could_not_perform_ldap_mod_add'], ldap_error( $ds ), ldap_errno( $ds ) ); +} header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn&modified_attrs[]=$encoded_attr" ); diff --git a/add_value_form.php b/add_value_form.php index 90e8e02..6c9d429 100644 --- a/add_value_form.php +++ b/add_value_form.php @@ -1,4 +1,6 @@ - +include './header.php'; ?> @@ -49,7 +54,7 @@ include 'header.php'; ?> - +

:     @@ -61,7 +66,7 @@ include 'header.php'; ?>
- +
@@ -115,25 +120,29 @@ include 'header.php'; ?> +

- +
-
> @@ -143,17 +152,23 @@ include 'header.php'; ?> + + + getMaxLength() ) echo "maxlength=\"" . $schema_attr->getMaxLength() . "\" "; - ?>name="new_value" size="40" value="" /> + ?>name="new_value" size="40" value="" /> + - +
getDescription() ) { ?> - Description: getDescription(); ?>
+ : getDescription(); ?>
getType() ) { ?> @@ -161,7 +176,7 @@ include 'header.php'; ?> getMaxLength() ) { ?> - Max length: getMaxLength() ); ?> characters
+ : getMaxLength() ); ?>
diff --git a/blowfish.php b/blowfish.php new file mode 100644 index 0000000..4848c57 --- /dev/null +++ b/blowfish.php @@ -0,0 +1,471 @@ + + * + * See the enclosed file COPYING for license information (LGPL). If you + * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. + * + * @author Mike Cochrane + * @version $Revision: 1.1 $ + * @since Horde 2.2 + * @package horde.cipher + */ + +// Change for phpMyAdmin by lem9: +//class Horde_Cipher_blowfish extends Horde_Cipher { +class Horde_Cipher_blowfish { + + /* Pi Array */ + var $p = array( + 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, + 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89, + 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C, + 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917, + 0x9216D5D9, 0x8979FB1B); + + /* S Boxes */ + var $s1 = array( + 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7, + 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99, + 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16, + 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E, + 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE, + 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013, + 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF, + 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E, + 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60, + 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440, + 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE, + 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A, + 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E, + 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677, + 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193, + 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032, + 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88, + 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239, + 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E, + 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0, + 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3, + 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98, + 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88, + 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE, + 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6, + 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D, + 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B, + 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7, + 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA, + 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463, + 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F, + 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09, + 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3, + 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB, + 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279, + 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8, + 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB, + 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82, + 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB, + 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573, + 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0, + 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B, + 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790, + 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8, + 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4, + 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0, + 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7, + 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C, + 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD, + 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1, + 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299, + 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9, + 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477, + 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF, + 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49, + 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF, + 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA, + 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5, + 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41, + 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915, + 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400, + 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915, + 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664, + 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A); + var $s2 = array( + 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623, + 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266, + 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1, + 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E, + 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6, + 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1, + 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E, + 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1, + 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737, + 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8, + 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF, + 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD, + 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701, + 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7, + 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41, + 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331, + 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF, + 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF, + 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E, + 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87, + 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C, + 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2, + 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16, + 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD, + 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B, + 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509, + 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E, + 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3, + 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F, + 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A, + 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4, + 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960, + 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66, + 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28, + 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802, + 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84, + 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510, + 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF, + 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14, + 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E, + 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50, + 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7, + 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8, + 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281, + 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99, + 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696, + 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128, + 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73, + 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0, + 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0, + 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105, + 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250, + 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3, + 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285, + 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00, + 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061, + 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB, + 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E, + 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735, + 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC, + 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9, + 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340, + 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20, + 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7); + var $s3 = array( + 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934, + 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068, + 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF, + 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840, + 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45, + 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504, + 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A, + 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB, + 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE, + 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6, + 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42, + 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B, + 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2, + 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB, + 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527, + 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B, + 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33, + 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C, + 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3, + 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC, + 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17, + 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564, + 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B, + 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115, + 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922, + 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728, + 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0, + 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E, + 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37, + 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D, + 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804, + 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B, + 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3, + 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB, + 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D, + 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C, + 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350, + 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9, + 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A, + 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE, + 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D, + 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC, + 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F, + 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61, + 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2, + 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9, + 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2, + 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C, + 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E, + 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633, + 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10, + 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169, + 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52, + 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027, + 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5, + 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62, + 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634, + 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76, + 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24, + 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC, + 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4, + 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C, + 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837, + 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0); + var $s4 = array( + 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B, + 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE, + 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B, + 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4, + 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8, + 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6, + 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304, + 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22, + 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4, + 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6, + 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9, + 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59, + 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593, + 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51, + 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28, + 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C, + 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B, + 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28, + 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C, + 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD, + 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A, + 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319, + 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB, + 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F, + 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991, + 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32, + 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680, + 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166, + 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE, + 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB, + 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5, + 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47, + 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370, + 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D, + 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84, + 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048, + 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8, + 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD, + 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9, + 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7, + 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38, + 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F, + 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C, + 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525, + 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1, + 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442, + 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964, + 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E, + 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8, + 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D, + 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F, + 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299, + 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02, + 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC, + 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614, + 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A, + 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6, + 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B, + 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0, + 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060, + 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E, + 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9, + 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F, + 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6); + + /* The number of rounds to do */ + var $_rounds = 16; + + /* Constructor */ + function Cipher_blowfish($params = null) + { + } + + /** + * Set the key to be used for en/decryption + * + * @param String $key The key to use + */ + function setKey($key) + { + $key = $this->_formatKey($key); + $keyPos = $keyXor = 0; + + $iMax = count($this->p); + $keyLen = count($key); + for ($i = 0; $i < $iMax; $i++) { + for ($t = 0; $t < 4; $t++) { + $keyXor = ($keyXor << 8) | (($key[$keyPos]) & 0x0ff); + if (++$keyPos == $keyLen) { + $keyPos = 0; + } + } + $this->p[$i] = $this->p[$i] ^ $keyXor; + } + + $encZero = array('L' => 0, 'R' => 0); + for ($i = 0; $i + 1 < $iMax; $i += 2) { + $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); + $this->p[$i] = $encZero['L']; + $this->p[$i + 1] = $encZero['R']; + } + + $iMax = count($this->s1); + for ($i = 0; $i < $iMax; $i += 2) { + $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); + $this->s1[$i] = $encZero['L']; + $this->s1[$i + 1] = $encZero['R']; + } + + $iMax = count($this->s2); + for ($i = 0; $i < $iMax; $i += 2) { + $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); + $this->s2[$i] = $encZero['L']; + $this->s2[$i + 1] = $encZero['R']; + } + + $iMax = count($this->s3); + for ($i = 0; $i < $iMax; $i += 2) { + $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); + $this->s3[$i] = $encZero['L']; + $this->s3[$i + 1] = $encZero['R']; + } + + $iMax = count($this->s4); + for ($i = 0; $i < $iMax; $i += 2) { + $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); + $this->s4[$i] = $encZero['L']; + $this->s4[$i + 1] = $encZero['R']; + } + + } + + /** + * Return the size of the blocks that this cipher needs + * + * @return Integer The number of characters per block + */ + function getBlockSize() + { + return 8; + } + + /** + * Encrypt a block on data. + * + * @param String $block The data to encrypt + * @param optional String $key The key to use + * + * @return String the encrypted output + */ + function encryptBlock($block, $key = null) + { + if (!is_null($key)) { + $this->setKey($key); + } + + list($L, $R) = array_values(unpack('N*', $block)); + $parts = $this->_encryptBlock($L, $R); + return pack("NN", $parts['L'], $parts['R']); + } + + /** + * Encrypt a block on data. + * + * @param String $L The data to encrypt. + * @param String $R The data to encrypt. + * + * @return String The encrypted output. + */ + function _encryptBlock($L, $R) + { + $L ^= $this->p[0]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[1]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[2]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[3]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[4]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[5]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[6]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[7]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[8]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[9]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[10]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[11]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[12]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[13]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[14]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[15]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[16]; + $R ^= $this->p[17]; + + return array('L' => $R, 'R' => $L); + } + + /** + * Decrypt a block on data. + * + * @param String $block The data to decrypt + * @param optional String $key The key to use + * + * @return String the decrypted output + */ + function decryptBlock($block, $key = null) + { + if (!is_null($key)) { + $this->setKey($key); + } + + list($L, $R) = array_values(unpack('N*', $block)); + + $L ^= $this->p[17]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[16]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[15]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[14]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[13]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[12]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[11]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[10]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[9]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[8]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[7]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[6]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[5]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[4]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[3]; + $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[2]; + $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[1]; + + $decrypted = pack("NN", $R ^ $this->p[0], $L); + return $decrypted; + } + + /** + * Converts a text key into an array. + * + * @return array The key. + */ + function _formatKey($key) + { + return array_values(unpack('C*', $key)); + } + +} +?> diff --git a/check_lang_files.php b/check_lang_files.php index 28aab12..9422a40 100644 --- a/check_lang_files.php +++ b/check_lang_files.php @@ -1,42 +1,75 @@ - +phpldapadmin - check of translation"; -echo "

Incomplete or Erroneous Language Files

\n\n"; -include realpath( 'lang/en.php' ); +include realpath( './lang/en.php' ); $english_lang = $lang; unset( $lang ); -$lang_dir = realpath( 'lang' ); +$lang_dir = realpath( './lang/recoded' ); $dir = opendir( $lang_dir ); +// First, detect any unused strings from the english language: +echo "

Checking English language file for unused strings

\n"; +echo "
    \n"; +$unused_keys = false; + +// special case keys that do not occur hard-coded but are dynamically generated +$ignore_keys['equals'] = 1; +$ignore_keys['starts with'] = 1; +$ignore_keys['ends with'] = 1; +$ignore_keys['sounds like'] = 1; +$ignore_keys['contains'] = 1; +foreach( $english_lang as $key => $string ) { + if( isset( $ignore_keys[$key] ) ) + continue; + $grep_cmd = "grep -r \"lang\[['\\\"]$key\" *.php templates/"; + $used = `$grep_cmd`; + if( ! $used ) { + $unused_keys = true; + echo "
  1. Unused English key: $key
        (" . htmlspecialchars( $grep_cmd ) . ")
  2. \n"; + flush(); + } +} +if( false === $unused_keys ) + echo "No unused English strings."; +echo "
\n"; + +echo "

Incomplete or Erroneous Language Files

\n\n"; +echo "

check all languages

\n"; +flush(); while( ( $file = readdir( $dir ) ) !== false ) { + // skip the devel languages, english, and auto + if( $file == "zz.php" || $file == "zzz.php" || $file == "auto.php" || $file == "en.php" ) + continue; + // Sanity check. Is this really a PHP file? if( ! preg_match( "/\.php$/", $file ) ) continue; - if( $file == 'en.php' // is the mother of all language-files - || $file == 'auto.php' // and ignore auto.php - ) - continue; - echo "

$file

"; - echo "
    "; + echo "

    $file

    \n"; + echo "
      \n"; unset( $lang ); $lang = array(); include realpath( $lang_dir.'/'.$file ); $has_errors = false; + if ($CHECKLANG=="" || $file===$CHECKLANG ){ foreach( $english_lang as $key => $string ) if( ! isset( $lang[ $key ] ) ) { $has_errors = true; - echo "
    1. missing entry: $key
    2. "; + echo "
    3. missing entry: $key
    4. \n"; } foreach( $lang as $key => $string ) if( ! isset( $english_lang[ $key ] ) ){ $has_errors = true; - echo "
    5. extra entry: $key
    6. "; + echo "
    7. extra entry: $key
    8. \n"; } if( ! $has_errors ) - echo "(No errors)"; - echo "
    "; + echo "(No errors)\n"; + } + echo "
\n"; + } diff --git a/collapse.php b/collapse.php index 57b1f64..498bde5 100644 --- a/collapse.php +++ b/collapse.php @@ -1,4 +1,6 @@ -= "5" ) + ini_set( "zend.ze1_compatibility_mode", 1 ); + // Turn on all notices and warnings. This helps us write cleaner code (we hope at least) -error_reporting( E_ALL ); +if( phpversion() >= "5" ) + // E_DEBUG is PHP5 specific and prevents warnings about using 'var' to declar class members + error_reporting( 'E_DEBUG' ); +else + // For PHP4 + error_reporting( E_ALL ); -// We require this version or newer (use @ to surpress errors if we are included twice) -@define( 'REQUIRED_PHP_VERSION', '4.1.0' ); -@define( 'HTTPS_PORT', 443 ); -// config.php might not exist (if the user hasn't configured PLA yet) -// Only include it if it does exist. -if( file_exists( realpath( 'config.php' ) ) ) { - ob_start(); - is_readable( realpath( 'config.php' ) ) or pla_error( "Could not read config.php, its permissions are too strict." ); - require realpath( 'config.php' ); - ob_end_clean(); +// For PHP5 backward/forward compatibility +if( ! defined( 'E_STRICT' ) ) { + define( 'E_STRICT', 2048 ); } -// General functions (pla_ldap_search(), pla_error(), get_object_attrs(), etc.) -is_readable( realpath( 'functions.php' ) ) - or pla_error( "Cannot read the file 'functions.php' its permissions are too strict." ); -ob_start(); -require_once realpath( 'functions.php' ); -ob_end_clean(); +/** The minimum version of PHP required to run phpLDAPadmin. */ +@define( 'REQUIRED_PHP_VERSION', '4.1.0' ); +/** The default setting for $search_deref if unspecified or misconfigured by user. */ +@define( 'DEFAULT_SEARCH_DEREF_SETTING', LDAP_DEREF_ALWAYS ); +/** The default setting for $tree_deref if unspecified or misconfigured by user. */ +@define( 'DEFAULT_TREE_DEREF_SETTING', LDAP_DEREF_NEVER ); +/** The default setting for $export_deref if unspecified or misconfigured by user. */ +@define( 'DEFAULT_EXPORT_DEREF_SETTING', LDAP_DEREF_NEVER ); +/** The default setting for $view_deref if unspecified or misconfigured by user. */ +@define( 'DEFAULT_VIEW_DEREF_SETTING', LDAP_DEREF_NEVER ); -// Functions for reading the server schema (get_schema_object_classes(), etc.) -is_readable( realpath( 'schema_functions.php' ) ) - or pla_error( "Cannot read the file 'schema_functions.php' its permissions are too strict." ); +// General functions needed to proceed (pla_ldap_search(), pla_error(), get_object_attrs(), etc.) ob_start(); -require_once realpath( 'schema_functions.php' ); -ob_end_clean(); - -// Functions that can be defined by the user (preEntryDelete(), postEntryDelete(), etc.) -is_readable( realpath( 'custom_functions.php' ) ) - or pla_error( "Cannot read the file 'custom_functions.php' its permissions are too strict." ); -ob_start(); -require_once realpath( 'custom_functions.php' ); +if( ! file_exists( realpath( './functions.php' ) ) ) { + ob_end_clean(); + die( "Fatal error: Required file 'functions.php' does not exist." ); +} +if( ! is_readable( realpath( './functions.php' ) ) ) { + ob_end_clean(); + die( "Cannot read the file 'functions.php' its permissions are too strict." ); +} +require_once realpath( './functions.php' ); ob_end_clean(); // Our custom error handler receives all error notices that pass the error_reporting() @@ -51,16 +57,41 @@ set_error_handler( 'pla_error_handler' ); // based on the user-configured language. $lang = array(); -// Little bit of sanity checking -if( ! file_exists( realpath( 'lang/recoded' ) ) ) { - pla_error( "Your install of phpLDAPadmin is missing the 'lang/recoded' directory. This should not happen. You can try running 'make' in the lang directory" ); +// config.php might not exist (if the user hasn't configured PLA yet) +// Only include it if it does exist. +if( file_exists( realpath( './config.php' ) ) ) { + ob_start(); + is_readable( realpath( './config.php' ) ) or pla_error( "Could not read config.php, its permissions are too strict." ); + include realpath( './config.php' ); + ob_end_clean(); } -// use English as a base-line (in case the selected language is missing strings) -if( file_exists( realpath( 'lang/recoded/en.php' ) ) ) - include realpath( 'lang/recoded/en.php' ); -else - pla_error( "Error! Missing recoded English language file. Run 'make' in the lang/ directory." ); +$required_files = array( + // The base English language strings + './lang/recoded/en.php', + // Functions for managing the session (pla_session_start(), etc.) + './session_functions.php', + // Functions for reading the server schema (get_schema_object_classes(), etc.) + './schema_functions.php', + // Functions that can be defined by the user (preEntryDelete(), postEntryDelete(), etc.) + './custom_functions.php', + // Functions for hashing passwords with OpenSSL binary (only if mhash not present) + './emuhash_functions.php' ); + + +// Include each required file and check for sanity. +foreach( $required_files as $file_name ) { + file_exists( realpath( $file_name ) ) + or pla_error( "Fatal error: Required file '$file_name' does not exist." ); + is_readable( realpath( $file_name ) ) + or pla_error( "Fatal error: Cannot read the file '$file_name', its permissions are too strict." ); + ob_start(); + require_once realpath( $file_name ); + ob_end_clean(); +} + +if( pla_session_start() ) + postSessionInit(); // Language configuration. Auto or specified? // Shall we attempt to auto-determine the language? @@ -83,7 +114,9 @@ if( isset( $language ) ) { // try to grab one after the other the language file if( file_exists( realpath( "lang/recoded/$HTTP_LANG.php" ) ) && is_readable( realpath( "lang/recoded/$HTTP_LANG.php" ) ) ) { + ob_start(); include realpath( "lang/recoded/$HTTP_LANG.php" ); + ob_end_clean(); break; } } @@ -95,10 +128,12 @@ if( isset( $language ) ) { $language = 'en'; if( file_exists( realpath( "lang/recoded/$language.php" ) ) && is_readable( realpath( "lang/recoded/$language.php" ) ) ) { + ob_start(); include realpath( "lang/recoded/$language.php" ); + ob_end_clean(); } else { pla_error( "Could not read language file 'lang/recoded/$language.php'. Either the file - does not exist, or permissions do not allow phpLDAPadmin to read it." ); + does not exist, or its permissions do not allow phpLDAPadmin to read it." ); } } } @@ -117,20 +152,10 @@ $templates['custom'] = // Strip slashes from GET, POST, and COOKIE variables if this // PHP install is configured to automatically addslashes() if ( get_magic_quotes_gpc() && ( ! isset( $slashes_stripped ) || ! $slashes_stripped ) ) { - if( ! function_exists( "array_stripslashes" ) ) { - function array_stripslashes(&$array) { - if( is_array( $array ) ) - while ( list( $key ) = each( $array ) ) - if ( is_array( $array[$key] ) && $key != $array ) - array_stripslashes( $array[$key] ); - else - $array[$key] = stripslashes( $array[$key] ); - } - } - array_stripslashes($_GET); array_stripslashes($_POST); array_stripslashes($_COOKIE); + array_stripslashes($_FILES); $slashes_stripped = true; } diff --git a/config.php.example b/config.php.example index d1e2f5d..6a63f3c 100644 --- a/config.php.example +++ b/config.php.example @@ -11,65 +11,134 @@ * */ +/** + * phpLDAPadmin can encrypt the content of sensitive cookies if you set this + * to a big random string. + */ +$blowfish_secret = ''; + // Your LDAP servers $i=0; $servers = array(); $servers[$i]['name'] = 'My LDAP Server'; /* A convenient name that will appear in - the tree viewer */ -$servers[$i]['host'] = 'ldap.example.com'; /* Examples: 'ldap.example.com', - 'ldaps://ldap.example.com/' - Note: Leave blank to remove it from the list - of servers in the tree viewer*/ + the tree viewer and throughout phpLDAPadmin to + identify this LDAP server to users. */ +$servers[$i]['host'] = 'ldap.example.com'; /* Examples: + 'ldap.example.com', + 'ldaps://ldap.example.com/', + 'ldapi://%2fusr%local%2fvar%2frun%2fldapi' + (Unix socket at /usr/local/var/run/ldap) + Note: Leave 'host' blank to make phpLDAPadmin + ignore this server. */ $servers[$i]['base'] = 'dc=example,dc=com'; /* The base DN of your LDAP server. Leave this - blank to have phpLDAPadmin - auto-detect it for you. */ + blank to have phpLDAPadmin auto-detect it for you. */ $servers[$i]['port'] = 389; /* The port your LDAP server listens on - (no quotes) */ -$servers[$i]['auth_type'] = 'config'; /* 2 options: 'form': you will be prompted, and - a cookie stored with your login dn and - password. 'config': specify your login dn - and password here. In both cases, use caution! */ + (no quotes). 389 is standard. */ +$servers[$i]['auth_type'] = 'config'; /* Three options for auth_type: + 1. 'cookie': you will login via a web form, + and a client-side cookie will store your + login dn and password. + 2. 'session': same as cookie but your login dn + and password are stored on the web server in + a persistent session variable. + 3. 'config': specify your login dn and password + here in this config file. No login will be + required to use phpLDAPadmin for this server. + Choose wisely to protect your authentication + information appropriately for your situation. If + you choose 'cookie', your cookie contents will be + encrypted using blowfish and the secret your specify + above as $blowfish_secret. */ $servers[$i]['login_dn'] = 'cn=Manager,dc=example,dc=com'; - /* For anonymous binds, leave the - login_dn and login_pass blank */ -$servers[$i]['login_pass'] = 'secret'; /* Your password (only if you specified 'config' - for 'auth_type' */ -$servers[$i]['tls'] = false; /* Use TLS to connect. Requires PHP 4.2 or newer */ -$servers[$i]['default_hash'] = 'crypt'; /* Default password hashing algorith; - One of md5, ssha, sha, md5crpyt, smd5, blowfish or + /* The DN of the user for phpLDAPadmin to bind with. + For anonymous binds or 'cookie' or 'session' auth_types, + leave the login_dn and login_pass blank. If you specify a + login_attr in conjunction with a cookie or session auth_type, + then you can also specify the login_dn/login_pass here for + searching the directory for users (ie, if your LDAP server + does not allow anonymous binds. */ +$servers[$i]['login_pass'] = 'secret'; /* Your LDAP password. If you specified an empty login_dn above, this + MUST also be blank. */ +$servers[$i]['tls'] = false; /* Use TLS (Transport Layer Security) to connect to the LDAP + server. */ +$servers[$i]['low_bandwidth'] = false; /* If the link between your web server and this LDAP server is + slow, it is recommended that you set 'low_bandwidth' to true. + This will cause phpLDAPadmin to forego some "fancy" features + to conserve bandwidth. */ +$servers[$i]['default_hash'] = 'crypt'; /* Default password hashing algorithm. + One of md5, ssha, sha, md5crpyt, smd5, blowfish, crypt or leave blank for now default algorithm. */ -$servers[$i]['login_attr'] = 'dn'; /* If you specified 'form' as the auth_type above, +$servers[$i]['login_attr'] = 'dn'; /* If you specified 'cookie' or 'session' as the auth_type above, you can optionally specify here an attribute - to use when logging in. If you enter 'uid', - then login as 'dsmith', phpLDAPadmin will - search for uid=dsmith and log in as such. Leave + to use when logging in. If you enter 'uid' + and login as 'dsmith', phpLDAPadmin will + search for (uid=dsmith) and log in as that user. Leave blank or specify 'dn' to use full DN for - logging in .*/ + logging in. Note also that if your LDAP server requires + you to login to perform searches, you can enter + the DN to use when searching in 'login_dn' and + 'login_pass' above. You may also specify 'string', in which case + you can provide a string to use for logging users + in. See 'login_string' directly below. */ +$servers[$i]['login_string'] = 'uid=,ou=People,dc=example,dc=com'; + /* If you specified 'cookie' or 'session' as the auth_type above, + and you specified 'string' for 'login_attr' above, you must provide + a string here for logging users in. If, for example, I + I have a lot of user entries with DNs like + "uid=dsmith,ou=People,dc=example,dc=com", then I can specify a string + "uid=,ou=People,dc=example,dc=com" and my users can login with + their user names alone, i.e., "dsmith" in this case. */ +$servers[$i]['login_class'] = ''; /* If 'login_attr' is used above such that phpLDAPadmin will + search for your DN at login, you may restrict the search to + a specific objectClass. E.g., set this to 'posixAccount' or + 'inetOrgPerson', depending upon your setup. */ $servers[$i]['read_only'] = false; /* Specify true If you want phpLDAPadmin to not display or permit any modification to the LDAP server. */ +$servers[$i]['show_create'] = true; /* Specify false if you do not want phpLDAPadmin to + draw the 'Create new' links in the tree viewer. */ $servers[$i]['enable_auto_uid_numbers'] = false; /* This feature allows phpLDAPadmin to automatically determine the next available uidNumber for a new entry. */ $servers[$i]['auto_uid_number_mechanism'] = 'search'; - /* The mechanism to use when finding the next available uidNumber. - Two possible values: 'uidpool' or 'search'. The 'uidpool' - mechanism uses an existing uidPool entry in your LDAP server - to blindly lookup the next available uidNumber. The 'search' - mechanism searches for entries with a uidNumber value and finds - the first available uidNumber (slower). */ + /* The mechanism to use when finding the next available uidNumber. + Two possible values: 'uidpool' or 'search'. The 'uidpool' + mechanism uses an existing uidPool entry in your LDAP server + to blindly lookup the next available uidNumber. The 'search' + mechanism searches for entries with a uidNumber value and finds + the first available uidNumber (slower). */ $servers[$i]['auto_uid_number_search_base'] = 'ou=People,dc=example,dc=com'; - /* The DN of the search base when the 'search' - mechanism is used above. */ + /* The DN of the search base when the 'search' + mechanism is used above. */ $servers[$i]['auto_uid_number_min'] = 1000; - /* The minimum number to use when searching for the next - available UID number (only when 'search' is used for - auto_uid_number_mechanism' */ + /* The minimum number to use when searching for the next + available UID number (only when 'search' is used for + auto_uid_number_mechanism' */ $servers[$i]['auto_uid_number_uid_pool_dn'] = 'cn=uidPool,dc=example,dc=com'; - /* The DN of the uidPool entry when 'uidpool' - mechanism is used above. */ + /* The DN of the uidPool entry when 'uidpool' + mechanism is used above. */ +$servers[$i]['auto_uid_number_search_dn'] = ''; + /* If you set this, then phpldapadmin will bind to LDAP with this user + ID when searching for the uidnumber. The idea is, this user id would + have full (readonly) access to uidnumber in your ldap directory (the + logged in user may not), so that you can be guaranteed to get a unique + uidnumber for your directory. */ +$servers[$i]['auto_uid_number_search_dn_pass'] = ''; + /* The password for the dn above. */ +$servers[$i]['disable_anon_bind'] = false; + /* Disable the anonymous login. */ +$servers[$i]['custom_pages_prefix'] = 'custom_'; + /* Use customized page with prefix when available. */ +$servers[$i]['unique_attrs_dn'] = ''; + /* If you set this, then phpldapadmin will bind to LDAP with this user + when testing for unique attributes (as set in unique_attrs array). If you + want to enforce unique attributes, than this id should have full (readonly) + access to the attributes in question (the logged in user may not have + enough access) */ +$servers[$i]['unique_attrs_dn_pass'] = ''; + /* The password for the dn above */ // If you want to configure additional LDAP servers, do so below. $i++; @@ -81,9 +150,12 @@ $servers[$i]['auth_type'] = 'config'; $servers[$i]['login_dn'] = ''; $servers[$i]['login_pass'] = ''; $servers[$i]['tls'] = false; +$servers[$i]['low_bandwidth'] = false; $servers[$i]['default_hash'] = 'crypt'; -$servers[$i]['login_attr'] = ''; +$servers[$i]['login_attr'] = 'dn'; +$servers[$i]['login_class'] = ''; $servers[$i]['read_only'] = false; +$servers[$i]['show_create'] = true; $servers[$i]['enable_auto_uid_numbers'] = false; $servers[$i]['auto_uid_number_mechanism'] = 'search'; $servers[$i]['auto_uid_number_search_base'] = 'ou=People,dc=example,dc=com'; @@ -101,6 +173,60 @@ $jpeg_temp_dir = "/tmp"; // Example for Unix systems /** Appearance and Behavior **/ /** **/ +// Set this to true if you want to hide the Request New Feature and Report bugs. +$hide_configuration_management = false; + + +// A format string used to display enties in the tree viewer (left-hand side) +// You can use special tokens to draw the entries as you wish. You can even mix in HTML to format the string +// Here are all the tokens you can use: +// %rdn - draw the RDN of the entry (ie, "cn=Dave") +// %dn - draw the DN of the entry (ie, "cn=Dave,ou=People,dc=example,dc=com" +// %rdnValue - draw the value of the RDN (ie, instead of "cn=Dave", just draw "Dave") +// %[attrname]- draw the value (or values) of the specified attribute. +// examle: %gidNumber +$tree_display_format = '%rdn'; +// +// Examples: +// +// To draw the gidNumber and uidNumber to the right of the RDN in a small, gray font: +//$tree_display_format = '%rdn ( %gidNumber / %uidNumber )'; +// To draw the full DN of each entry: +//$tree_display_format = '%dn'; +// To draw the objectClasses to the right in parenthesis: +//$tree_display_format = '%rdn ( %objectClass )'; +// To draw the user-friendly RDN value (ie, instead of "cn=Dave", just draw "Dave"): +//$tree_display_format = '%rdnValue'; + + +// Aliases and Referrrals +// +// Similar to ldapsearh's -a option, the following options allow you to configure +// how phpLDAPadmin will treat aliases and referrals in the LDAP tree. +// For the following four settings, avaialable options include: +// +// LDAP_DEREF_NEVER - aliases are never dereferenced (eg, the contents of +// the alias itself are shown and not the referenced entry). +// LDAP_DEREF_SEARCHING - aliases should be dereferenced during the search but +// not when locating the base object of the search. +// LDAP_DEREF_FINDING - aliases should be dereferenced when locating the base +// object but not during the search. +// LDAP_DEREF_ALWAYS - aliases should be dereferenced always (eg, the contents +// of the referenced entry is shown and not the aliasing entry) + +// How to handle references and aliases in the search form. See above for options. +$search_deref = LDAP_DEREF_ALWAYS; + +// How to handle references and aliases in the tree viewer. See above for options. +$tree_deref = LDAP_DEREF_NEVER; + +// How to handle references and aliases for exports. See above for options. +$export_deref = LDAP_DEREF_NEVER; + +// How to handle references and aliases when viewing entries. See above for options. +$view_deref = LDAP_DEREF_NEVER; + + // The language setting. If you set this to 'auto', phpLDAPadmin will // attempt to determine your language automatically. Otherwise, available // lanaguages are: 'ct', 'de', 'en', 'es', 'fr', 'it', 'nl', and 'ru' @@ -116,6 +242,11 @@ $enable_mass_delete = false; // when a user logs in to a server anonymously $anonymous_bind_implies_read_only = true; +// Set to true if you want phpLDAPadmin to redirect anonymous +// users to a search form with no tree viewer on the left after +// logging in. +$anonymous_bind_redirect_no_tree = false; + // If you used auth_type 'form' in the servers list, you can adjust how long the cookie will last // (default is 0 seconds, which expires when you close the browser) $cookie_time = 0; // seconds @@ -132,21 +263,46 @@ $show_hints = true; // set to false to disable hints // When using the search page, limit result size to this many entries $search_result_size_limit = 50; +// By default, when searching you may display a list or a table of results. +// Set this to 'table' to see table formatted results. +// Set this to 'list' to see "Google" style formatted search results. +$default_search_display = 'list'; + +// If true, display all password hash values as "******". Note that clear-text +// passwords will always be displayed as "******", regardless of this setting. +$obfuscate_password_display = false; + /** **/ /** Simple Search Form Config **/ /** **/ // Which attributes to include in the drop-down menu of the simple search form (comma-separated) -// Change this to suit your needs for convenient searching. Be sure to change the correlating +// Change this to suit your needs for convenient searching. Be sure to change the corresponding // list below ($search_attributes_display) $search_attributes = "uid, cn, gidNumber, objectClass, telephoneNumber, mail, street"; -// This list correlates to the list directly above. If you want to present more readable names +// This list corresponds to the list directly above. If you want to present more readable names // for your search attributes, do so here. Both lists must have the same number of entries. $search_attributes_display = "User Name, Common Name, Group ID, Object Class, Phone Number, Email, Address"; -// The list of attributes to display in each search result entry summary -$search_result_attributes = "dn, cn"; +// The list of attributes to display in each search result entry. +// Note that you can add * to the list to display all attributes +$search_result_attributes = "cn, sn, uid, postalAddress, telephoneNumber"; + +// You can re-arrange the order of the search criteria on the simple search form by modifying this array +// You cannot however change the names of the criteria. Criteria names will be translated at run-time. +$search_criteria_options = array( "equals", "starts with", "contains", "ends with", "sounds like" ); + +// If you want certain attributes to be editable as multi-line, include them in this list +// A multi-line textarea will be drawn instead of a single-line text field +$multi_line_attributes = array( "postalAddress", "homePostalAddress", "personalSignature" ); + +// A list of syntax OIDs which support multi-line attribute values: +$multi_line_syntax_oids = array( + // octet string syntax OID: + "1.3.6.1.4.1.1466.115.121.1.40", + // postal address syntax OID: + "1.3.6.1.4.1.1466.115.121.1.41" ); /** **/ /** User-friendly attribute translation **/ @@ -168,7 +324,66 @@ $friendly_attrs[ 'telephoneNumber' ] = 'Phone'; // Do this by adding the desired attributes to this list (and uncomment it). This // only affects the editor screen. Attributes will still be visible in the schema // browser and elsewhere. An example is provided below: +// NOTE: The user must be able to read the hidden_except_dn entry to be excluded. //$hidden_attrs = array( 'jpegPhoto', 'objectClass' ); +//$hidden_except_dn = "cn=PLA UnHide,ou=Groups,c=AU"; + +// Hidden attributes in read-only mode. If undefined, it will be equal to $hidden_attrs. +//$hidden_attrs_ro = array( 'objectClass','shadowWarning', 'shadowLastChange', 'shadowMax', +// 'shadowFlag', 'shadowInactive', 'shadowMin', 'shadowExpire' ); + +/** **/ +/** Read-only attributes **/ +/** **/ + +// You may want to phpLDAPadmin to display certain attributes as read only, meaning +// that users will not be presented a form for modifying those attributes, and they +// will not be allowed to be modified on the "back-end" either. You may configure +// this list here: +// NOTE: The user must be able to read the read_only_except_dn entry to be excluded. + +//$read_only_attrs = array( 'objectClass' ); +//$read_only_except_dn = "cn=PLA ReadWrite,ou=Groups,c=AU"; + +// An example of how to specify multiple read-only attributes: +// $read_only_attrs = array( 'jpegPhoto', 'objectClass', 'someAttribute' ); + +/** **/ +/** Unique attributes **/ +/** **/ +// You may want phpLDAPadmin to enforce some attributes to have unique values (ie: +// not belong to other entries in your tree. This (together with "unique_attrs_dn" +// and "unique_attrs_dn_pass" option will not let updates to occur with other attributes +// have the same value. +// NOTE: Currently the unique_attrs is NOT enforced when copying a dn. (Need to present a user with +// the option of changing the unique attributes. +//$unique_attrs = array('uid','uidNumber','mail'); + +/** **/ +/** Predefined Queries (canned views) **/ +/** **/ + +// To make searching easier, you may setup predefined queries below (activate the lines by removing "//") +$q=0; +$queries = array(); +$queries[$q]['name'] = 'Samba Users'; /* The name that will appear in the simple search form */ +$queries[$q]['server'] = '0'; /* The ldap server to query, must be defined in the $servers list above */ +$queries[$q]['base'] = 'dc=example,dc=com'; /* The base to search on */ +$queries[$q]['scope'] = 'sub'; /* The search scope (sub, base, one) */ +$queries[$q]['filter'] = '(&(|(objectClass=sambaAccount)(objectClass=sambaSamAccount))(objectClass=posixAccount)(!(uid=*$)))'; + /* The LDAP filter to use */ +$queries[$q]['attributes'] = 'uid, smbHome, uidNumber'; + /* The attributes to return */ + +// Add more pre-defined queries by copying the text below +$q++; +$queries[$q]['name'] = 'Samba Computers'; +$queries[$q]['server'] = '0'; +$queries[$q]['base'] = 'dc=example,dc=com'; +$queries[$q]['scope'] = 'sub'; +$queries[$q]['filter'] = '(&(objectClass=sambaAccount)(uid=*$))'; +$queries[$q]['attributes'] = 'uid, homeDirectory'; + ?> diff --git a/copy.php b/copy.php index 9ce8834..a5db1b5 100644 --- a/copy.php +++ b/copy.php @@ -1,4 +1,6 @@ \n"; @@ -51,7 +52,7 @@ if( $do_recursive ) { echo "\n"; echo $lang['copy_building_snapshot']; flush(); - build_tree( $source_server_id, $source_dn, $snapshot_tree ); + build_tree( $source_server_id, $source_dn, $snapshot_tree, $filter ); echo " " . $lang['success'] . "
\n"; flush(); @@ -69,8 +70,11 @@ if( $copy_result ) $edit_url="edit.php?server_id=$dest_server_id&dn=" . rawurlencode( $dest_dn ); $new_rdn = get_rdn( $dest_dn ); $container = get_container( $dest_dn ); - if( session_is_registered( 'tree' ) ) + + if( array_key_exists( 'tree', $_SESSION ) ) { + // do we not have a tree and tree icons yet? Build a new ones. + initialize_session_tree(); $tree = $_SESSION['tree']; $tree_icons = $_SESSION['tree_icons']; if( isset( $tree[$dest_server_id][$container] ) ) @@ -92,7 +96,7 @@ if( $copy_result )
- " . $lang['copy_view_new_entry'] ."?"?> + " . $lang['copy_view_new_entry'] .""?>


@@ -141,7 +145,10 @@ function r_copy_dn( $source_server_id, $dest_server_id, $tree, $root_dn, $dest_d function copy_dn( $source_server_id, $source_dn, $dest_server_id, $dest_dn ) { global $ds, $lang; - $ds = pla_ldap_connect( $dest_server_id ) or pla_error( $lang['could_not_connect'] ); + + $ds = pla_ldap_connect( $dest_server_id ); + pla_ldap_connection_is_error( $ds ); + $attrs = get_object_attrs( $source_server_id, $source_dn ); $new_entry = $attrs; // modify the prefix-value (ie "bob" in cn=bob) to match the destination DN's value. @@ -167,14 +174,13 @@ function copy_dn( $source_server_id, $source_dn, $dest_server_id, $dest_dn ) } } -function build_tree( $source_server_id, $root_dn, &$tree ) +function build_tree( $source_server_id, $root_dn, &$tree, $filter='(objectClass=*)' ) { - $children = get_container_contents( $source_server_id, $root_dn ); + $children = get_container_contents( $source_server_id, $root_dn, 0, $filter ); if( is_array( $children ) && count( $children ) > 0 ) { $tree[ $root_dn ] = $children; foreach( $children as $child_dn ) - build_tree( $source_server_id, $child_dn, $tree ); + build_tree( $source_server_id, $child_dn, $tree, $filter ); } - } diff --git a/copy_form.php b/copy_form.php index 2ebe9b8..555537e 100644 --- a/copy_form.php +++ b/copy_form.php @@ -1,4 +1,6 @@ $server ) -{ +if (count($servers)>1){ + $select_server_html .= ''; +} else { + $server = reset($servers); if( $server['host'] ) - { - $select_server_html .= "\n"; - } + $select_server_html .= '' . + '' . $server['name'] . ''; } $children = get_container_contents( $server_id, $dn ); -include 'header.php'; ?> +include './header.php'; + +// Draw some javaScrpt to enable/disable the filter field if this may be a recursive copy +if( is_array( $children ) && count( $children ) > 0 ) { ?> + +

-

Server:     :

+

:     :

:
@@ -50,7 +70,7 @@ include 'header.php'; ?> - +
- + - - - - - 0 ) { ?> - + + + + + + - +
: @@ -61,27 +81,39 @@ include 'header.php'; ?>
:
- : + ()
:
+ + + + + +
diff --git a/create.php b/create.php index b46fa79..36aee34 100644 --- a/create.php +++ b/create.php @@ -1,4 +1,6 @@ $val ) { if( $val == '' ) pla_error( sprintf( $lang['create_required_attribute'], htmlspecialchars( $attr ) ) ); - $new_entry[ $attr ][] = utf8_encode( $val ); + $new_entry[ $attr ][] = $val; } } -if( isset( $vals ) && is_array( $vals ) ) { - foreach( $vals as $i => $val ) { - $attr = $attrs[$i]; +if( isset( $attrs ) && is_array( $attrs ) ) { + foreach( $attrs as $i => $attr ) { if( is_attr_binary( $server_id, $attr ) ) { - if( $_FILES['vals']['name'][$i] != '' ) { + if( isset( $_FILES['vals']['name'][$i] ) && $_FILES['vals']['name'][$i] != '' ) { // read in the data from the file $file = $_FILES['vals']['tmp_name'][$i]; $f = fopen( $file, 'r' ); @@ -55,8 +57,9 @@ if( isset( $vals ) && is_array( $vals ) ) { $new_entry[ $attr ][] = $val; } } else { + $val = isset( $vals[$i] ) ? $vals[$i] : ''; if( '' !== trim($val) ) - $new_entry[ $attr ][] = utf8_encode( $val ); + $new_entry[ $attr ][] = $val; } } } @@ -65,18 +68,26 @@ $new_entry['objectClass'] = $object_classes; if( ! in_array( 'top', $new_entry['objectClass'] ) ) $new_entry['objectClass'][] = 'top'; -// UTF-8 magic. Must decode the values that have been passed to us -foreach( $new_entry as $attr => $vals ) +foreach( $new_entry as $attr => $vals ) { + + // Check to see if this is a unique Attribute + if( $badattr = checkUniqueAttr( $server_id, $new_dn, $attr, $vals ) ) { + $search_href='search.php?search=true&form=advanced&server_id=' . $server_id . '&filter=' . $attr . '=' . $badattr; + pla_error(sprintf( $lang['unique_attr_failed'] , $attr,$badattr,$new_dn,$search_href ) ); + } + if( ! is_attr_binary( $server_id, $attr ) ) if( is_array( $vals ) ) foreach( $vals as $i => $v ) - $new_entry[ $attr ][ $i ] = utf8_decode( $v ); + $new_entry[ $attr ][ $i ] = $v; else - $new_entry[ $attr ] = utf8_decode( $vals ); + $new_entry[ $attr ] = $vals; +} //echo "
"; var_dump( $new_dn );print_r( $new_entry ); echo "
"; $ds = pla_ldap_connect( $server_id ); +pla_ldap_connection_is_error( $ds ); // Check the user-defined custom call back first if( true === preEntryCreate( $server_id, $new_dn, $new_entry ) ) @@ -86,11 +97,12 @@ else if( $add_result ) { postEntryCreate( $server_id, $new_dn, $new_entry ); - $edit_url="edit.php?server_id=$server_id&dn=" . rawurlencode( $new_dn ); + if( $redirect ) + $redirect_url = $redirect; + else + $redirect_url = "edit.php?server_id=$server_id&dn=" . rawurlencode( $new_dn ); - // update the session tree to reflect the change - session_start(); - if( session_is_registered( 'tree' ) ) + if( array_key_exists( 'tree', $_SESSION ) ) { $tree = $_SESSION['tree']; $tree_icons = $_SESSION['tree_icons']; @@ -109,20 +121,21 @@ if( $add_result ) ?> - + - + - ... . + . '; -$js_dn_list = ''; -foreach( $servers as $id => $server ) { - if( $server['host'] ) { - $server_menu_html .= ''; +$server_menu_html = ''; +if (count($servers)>1){ + $server_menu_html .= ''; +} else { + $server = reset($servers); + if( $server['host'] ) + $server_menu_html .= '' . + '' . $server['name'] . ''; } -$server_menu_html .= ''; -include 'header.php'; ?> +include './header.php'; ?> @@ -46,54 +56,66 @@ include 'header.php'; ?> - + - - "> + + + - + - - +
Server::
Template: - - - $template ) { - - // Check and see if this template should be shown in the list - $isValid = false; - if (isset($template['regexp'])) { - if (@preg_match("/".$template['regexp']."/i", $container)) { - $isValid = true; - } - } else { - $isValid = true; - } - - if ($isValid) { - ?> - - - - - - + + - +
- checked - - />
+ : + + + + + +
+ + $template ) { + $i++; + // Balance the columns properly + if( ( count( $templates ) % 2 == 0 && $i == intval( $count / 2 ) ) || + ( count( $templates ) % 2 == 1 && $i == intval( $count / 2 ) + 1 ) ) + echo "
"; + // Check and see if this template should be shown in the list + $isValid = false; + if( isset($template['regexp'] ) ) { + if( @preg_match( "/".$template['regexp']."/i", $container ) ) { + $isValid = true; + } + } else { + $isValid = true; + } + + ?> + + + + + +
/> + +
+
diff --git a/creation_template.php b/creation_template.php index 6a161f9..6bda774 100644 --- a/creation_template.php +++ b/creation_template.php @@ -1,5 +1,5 @@ $template ) { + if( $template['handler'] == 'custom.php' ) { + $template = $id; + break; + } + } +} + +isset( $templates[$template] ) or pla_error( sprintf( $lang['invalid_template'], htmlspecialchars( $template ) ) ); +$template_id = $template; +$template = isset( $templates[$template] ) ? $templates[$template_id] : null; +$server_id = http_get_value( 'server_id' ); +check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] ); have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] ); -pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] ); +$ds = pla_ldap_connect( $server_id ); +pla_ldap_connection_is_error( $ds ); $server_name = $servers[ $server_id ][ 'name' ]; if( is_server_read_only( $server_id ) ) pla_error( $lang['no_updates_in_read_only_mode'] ); -include 'header.php'; +include './header.php'; ?>

-

'', - using template ''

+

'', ''

" . htmlspecialchars( $template['handler'] ) . - " " . $lang['ctemplate_handler_does_not_exist']); +if( ! file_exists( $handler ) ) + pla_error( sprintf( $lang['template_does_not_exist'], htmlspecialchars( $template['handler'] ) ) ); +if( ! is_readable( $handler ) ) + pla_error( sprintf( $lang['template_not_readable'], htmlspecialchars( $template['handler'] ) ) ); +include $handler; +echo "\n"; + +?> diff --git a/custom_functions.php b/custom_functions.php index b33d4d3..4df7f34 100644 --- a/custom_functions.php +++ b/custom_functions.php @@ -1,4 +1,6 @@ ' . pretty_print_dn( $dn ) . '' ) ); -$ds = pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] ); +$ds = pla_ldap_connect( $server_id ); +pla_ldap_connection_is_error( $ds ); // Check the user-defined custom callback first. if( true === preEntryDelete( $server_id, $dn ) ) { @@ -41,8 +45,7 @@ if( $del_result ) // kill the DN from the tree browser session variable and // refresh the tree viewer frame (left_frame) - session_start(); - if( session_is_registered( 'tree' ) ) + if( array_key_exists( 'tree', $_SESSION ) ) { $tree = $_SESSION['tree']; if( isset( $tree[$server_id] ) && is_array( $tree[$server_id] ) ) { @@ -61,7 +64,7 @@ if( $del_result ) session_write_close(); } - include 'header.php'; + include './header.php'; ?> @@ -71,13 +74,13 @@ if( $del_result )

-
+
' .pretty_print_dn($dn) . '' ); ?>
' . pretty_print_dn( $dn ) . '' ), ldap_error( $ds ), ldap_errno( $ds ) ); } diff --git a/delete_attr.php b/delete_attr.php index c9b5773..787a137 100644 --- a/delete_attr.php +++ b/delete_attr.php @@ -1,4 +1,6 @@ - diff --git a/delete_form.php b/delete_form.php index 9fc0d28..37fc373 100644 --- a/delete_form.php +++ b/delete_form.php @@ -1,4 +1,6 @@ -0 ? true : false; -include 'header.php'; ?> +include './header.php'; ?> -

Delete

-

Server:     Distinguished Name:

- - - -
You cannot delete the base DN entry of the LDAP server.
- - - - - - +

+

:     :

-
Permanently delete all children also?

+


-

This object is the root of a sub-tree containing objects - -phpLDAPadmin can recursively delete this object and all of its children. See below for a list of DNs -that this will delete. Do you want to do this?
+

+ +()
-Note: This is potentially very dangerous and you do this at your own risk. This operation cannot be undone. -Take into consideration aliases and other such things that may cause problems. +
+ +
+
+ +

@@ -76,16 +71,16 @@ Take into consideration aliases and other such things that may cause problems. - + @@ -96,7 +91,7 @@ Take into consideration aliases and other such things that may cause problems.

-A list of all the DNs that this action will delete:
+
- + - +
-Are you sure you want to permanently delete this object?
+

-DN:
-
Server:
+:
+
:

@@ -137,7 +132,7 @@ Are you sure you want to permanently delete this object?
- + @@ -154,5 +149,3 @@ Are you sure you want to permanently delete this object?
- - diff --git a/doc/CREDITS b/doc/CREDITS index 08f3c9c..252a48f 100644 --- a/doc/CREDITS +++ b/doc/CREDITS @@ -1,35 +1,50 @@ - * Project Developers: - David Smith Maintainer - - Xavier Renard LDIF master - - Marius Rieder Schema master - - Nate Rotschafer Release manager + - Xavier Renard Import/Export and Samba + - Uwe Ebel I18n * Patch writers: - Bayu Irawan userPassword hash, html fixes, ldap_modify fixes - Uwe Ebel short_open_tags fix - Andrew Tipton SUP support in schema parser - - Eigil Bjørgum UTF-8 support + - Eigil Bjørgum UTF-8 support - Brandon Lederer DNS entry template Nathan Rotschafer - Steve Rigler Password hash patch - Chris Jackson Blowfish and md5crypt passwords - - Marius Rieder Enhanced schema parser - - Nick Burch Many realpath() fixes + - Marius Rieder Perfected schema parser + - Nick Burch realpath() fixes for *BSD + - Matt Perlman Fix for IBM LDAP schema support + - K Yoder Predefined searches + - Piotr Tarnowski i18n fixes + - Deon George Auto-uidNumber enhancements and many fixes + - Pierre Belanger Speed-ups to auto-uidNumber * Translators: - - Uwe Ebel & Marius Reider German - - Xavier Renard French - - Dave Smith English ;) - - Richard Lucassen Dutch - - Andreu Sanchez Spanish and Català - - Dmitry Gorpinenko Russian - - Unknown Italian - + - Marius Reider, German + Uwe Ebel, + Dieter Kluenter + - Xavier Renard French + - Dave Smith English ;) + - Richard Lucassen Dutch + - Andreu Sanchez Spanish and Català + - Dmitry Gorpinenko, Russian + Aleksey Soldatov + Sergey Saukh + - Unknown Italian + - Alexandre Maciel Portuguese (Brasilian) + Elton Schroeder Fenner (CLeGi) + - Piotr Tarnowski (DrFugazi) Polish + - Gunnar Nystrom Swedish + - VOROSBARANYI Zoltan, Hungarian + SIPOS Agnes + - Tadashi Jokagi (elf2000) Japanese If you can help translate, please join the phpldapadmin-devel mailing list: https://lists.sourceforge.net/mailman/listinfo/phpldapadmin-devel + + diff --git a/doc/ChangeLog b/doc/ChangeLog index db68b62..e15d6f2 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,212 @@ + +* Version 0.9.5, 2004-12-17 + + * Notes: + + This version adds substantial new features and several minor bug fixes as well as PHP5 support! + + * Changes: + + - Added PHP5 support using Zend1 compatibility options. + - Users can now specify a format string for custom display of DNs in the tree viewer + (see $tree_display_format in config.php.example) + - If using http auth_type, DNs and passwords are now encrypted int he cookie using blowfish. + - If base entry is missing, phpLDAPadmin will prompt you to create it and give you some + sane default values to get started. + - Added index file for viewing of all PLA icons (see phpldapadmin/images/index.php) + - Added custom country flag icons for DNs in the form "c=us" + - Added more custom icons (ipNetwork, Device, Room) + - Made it easier to create the base entry of an empty tree. + - Fixed bug related to predefined search queries with patch from Olivier Mounier + - Added a template for mozillaOrgPerson + - Improved error handling for non-existent or unreadable template files. + - "Create new" now displays at the top *and* bottom of the tree viewer list if there are + more than 10 entries in the container (make it easier for users by reducing scrolling) + - Optimized several pages by closing the session early if not needed. + - By request, reversed the order of first name / last name in the inetOrgPerson template. + - Added a login_string feature for admins who have all their users in a single container, + so they can specify a string like "uid=,ou=People,dc=example,dc=com" instead + of setting up the painful login_attr stuff. + - Changed the delete button to be red (like phpMyAdmin) to make it more obvious. + - Consolidated the links at the top of the tree viewer to make better use of real estate. + - New logo! + - Patch from Dimitre to fix unique attrs enforcement. + - Templates can now redirect wherever they want using a hidden form input. + - Added a "Home" button in the tree viewer to get back to the main PLA page if desired. + - PLA now looks up the gidNumber to display group description and name in user accounst. + - Improved the hint about structural objectClasses in the custom creation template + - Added ability to purge caches (mostly just schema objects) and caches are auto-purged + when the schema is viewed in the schema browser. + - Changed the arrow icon next to objectClass values to be an information button. + - Search results can be displayed in table format now. + - Fixes to LDIF import. + - Added support for exporting to VCard 2.1 format. + - Lots of little session fixes. + - Structural objectClasses are now shown in bold in the custom creation template. + - Fixed lots of bugs, some big some minor: + 1025353 1037715 1029103 1026427 1025353 1020606 + 1020376 1010576 1009410 1007281 1007132 1004042 + 1002794 1001941 1000185 999605 999170 996842 + 995362 995297 995296 994343 993875 992419 + 991891 989219 984587 983375 981283 979395 + 977598 974369 973520 973323 965165 964410 + 962074 959950 958372 957284 954453 + +* Version 0.9.4b, 2004-05-11 + + * Notes: + + This follow-on release fixes one critical bug contained in 0.9.4 + relating to session.auto_start and schema caching. + + * Changes + + - Fixed bugs (all duplicates of single bug): + 947981 + 951003 + 951140 + - Fixed binary attribute creation (create.php) + +* Version 0.9.4a, 2004-05-08 + + * Notes: + + This follow-on release fixes several critical bugs contained in 0.9.4. + + * Changes: + + - Fixed bugs: + 949500 Error while adding New User Account + 949500 Creating a new uid under ou=People + 948695 is_executable() error using phpldapadmin - windows + 948741 Level: E_WARNING + 948413 Undefined variable: lang (E_NOTICE) after install + +* Version 0.9.4, 2004-05-04 + + * Notes: + + This release adds many new features and fixes many minor bugs. + General performance has improved, especially for handling large data + sets. Of particular note is that users can page through search results, + flag individual attributes as read-only, view in-line jpegPhotos in + search results, export DSML, all from the comfort of their own language. + phpLDAPadmin is now availble in 11 languages. + + * Changes: + - Fixed bug 936223 by adding more robust error-handling to the binary + attr viewing code. + - Improved support for Microsoft Active Direcotry + Added many new icons and logic to detect "special" Active Directory + objects. + Fixed a bug which prevented phpLDAPadmin's tree viewer from + properly browsing an Active Directory. + - Improved support for Novell eDirectory + Added many new icons and logic to detect Novell eDirectory (NDS) + entries. + - Enhanced export form + Users can specify the type of export, line ends, search scope, and more + from one handy form similar in appearance to phpMyAdmin export forms (though + more simple). As a result, I cleaned up the links at the top of the default + mod template (removed mac | win | unix links, for example). + - Cleaned up the entry browser link + It now better aligns itself with neighboring form elements. + - Fixed several E_NOTICE bugs + - Added paging to search results Search results are now paged into groups + of 50 entries and users can step through the pages like Google. This is not + only a nicety, but with large searches users may have waited for hours for + their browser to render all the entries. That problem is fixed by paging. + - DNs are pretty-printed + DNs in the tree viewer and else-where are now "syntax-highlighted". + - Faster schema surfing + You can "jump to" schema elements without rendering all other elements in + the schema browser. This is a major speed enhancement. + - Configurable: hide "Create new" + Thanks to a patch from Deon George, users can hide the "create new" link in the + tree viewer if desired. + - DSML exports + - Various XHTML fixes supplied by Uwe Ebel. + - More binary safety: + get_object_attrs() is now completely binary safe. Developers can use it to + fetch jpegPhotos and any other binary data. + - Re-order the search criteria menu + Users can re-order the search criteria drop-down box (for simple search + form) as desired from the config. + - Obfuscated passwords with **** + Users can configure PLA to display userPasswords as ****** if desired. + - Tree browser displays child counts + We found a fast solution to display child counts below each node without + having to expand the node in the tree viewer. Works great. + - "Used by" hyperlinks + The "used by" list in matching rules are now hyper-linked to attributes in + the schema viewer. + - jpegPhotos in the search results. + When a search result includes jpegPhotos, they will be displayed inline + with other attributes. Very handy for address books! + - We can draw any jpeg now + Modified the infrastrucutre to draw any jpegPhoto attribute, regardless of + its name. + - Added a groupOfNames template + For editing groupOfNames and groupOfUniqueNames + - Fixes to the entry browser + The entry browser can be clicked and closed before it's finished loading + - Read-only attributes + Users can now mark certain attributes as read-only, and PLA will refuse to + modify them (ie, objectClasses) and display them without form input fields. + - Configurable handling of aliases and referrals + Admins can configure how phpLDAPadmin should handle aliases and + referrals with fine-grained control. + - Schema caching + Network traffic between the web server and LDAP server has been reduced + drastically and user page loads should run much faster thanks to a + two-level session-based and memory-based schema cache. + - Low bandwidth mode + Users who have a slow link between their LDAP server and web server can + run phpLDAPadmin in low-bandwidth mode to discourage excessive network + traffic. + - Fixed DN explosion + A bug in PHP's LDAP API caused common segmentation faults in + ldap_explode_dn(). We have re-implemented this function in PHP and have + eliminated all segmentation faults. + - Almost complete localization + phpLDAPadmin is 100% internationalized with the exception of creation + templates, available in 11 languages. + - Added support for IBM LDAP and ISODE M-Vault LDAP servers. + - Linkable displayed DNs + When a user views an attribute that contains a DN, an arrow will appear + to the left side. When clicked, the user is taken to the referenced DN. + - Recursive copy fliters + When users copy a sub-tree, they may apply a filter to the copy such + that only entries that match the filter will be copied. + - Auto uidNumber enhancements + Admins can now specify a DN to bind with when auto-searching for the next + available uidNumber. + - Schema code cleanups + Applied object-oriented inheritance to schema items and cleaned up + access functions. No affect on end user, just a developers' itch. + - Custom creation template usability enhancements + - Fixed session bugs + If PHP is auto-starting sessions, we will not throw errors anymore. + - Added new auth_type: http + Users can now use http auth_types for form-based logins. Their + DN/password will be stored on the server in memory rather than in + a cookie on the client. + - TLS fixes + More robust coverage. If users have configured 'tls' = true in + config.php, we use TLS for all transactions with the LDAP + server. + - Error handling fixes + pla_verbose_error() is more tolerant of crappy input (ie, bad LDAP + error codes). + - Cleaned up default mod template + Editing entries is now much cleaner-looking. Buttons at the top are + in two columns. The browser doesn't have to be full-screen anymore + to edit an entry. + - Minor cosmetic fixes to custom creation template + - Added phpDoc commentary to all functions in functions.php and + schema_functions.php, and export_functions.php. This allows us to + auto-doc the code using phpDocumentor. + * Version 0.9.3, 2003-12-19 * Notes: @@ -13,18 +222,18 @@ fixes: 862225 an E_NOTICE on delete fixed 861730 (and many duplicates of it) an E_NOTICE on determining the - language in 'auto' lanuage mode for browsers who don't - set HTTP_ACCEPT_LANGUAGE (like Opera). - 861491 (and many duplicates of it) Anonymous form-based logins - often failed due to several E_NOTICE problems. - 856832 IBM LDAP servers refernece SUP attributes by OID, not name. - A patch was provided to accomodate this circumstance. - 860179 Another anonymous form-based login bug. - 858611 (lots of dups of this one) Fixed the error handler so that - it will not cause a "cannot send header information" message. - 844547 A coulpe E_NOTICE bugs in the posix group creation template. - 841816 An E_NOTICE bug during creation of an entry. - 844340 A sprintf error during login + language in 'auto' lanuage mode for browsers who don't + set HTTP_ACCEPT_LANGUAGE (like Opera). + 861491 (and many duplicates of it) Anonymous form-based logins + often failed due to several E_NOTICE problems. + 856832 IBM LDAP servers refernece SUP attributes by OID, not name. + A patch was provided to accomodate this circumstance. + 860179 Another anonymous form-based login bug. + 858611 (lots of dups of this one) Fixed the error handler so that + it will not cause a "cannot send header information" message. + 844547 A coulpe E_NOTICE bugs in the posix group creation template. + 841816 An E_NOTICE bug during creation of an entry. + 844340 A sprintf error during login - Many many more bug fixes. - The schema viewer was also streamlined. - Support work-around for IBM LDAP Server was added. diff --git a/doc/INSTALL-de.txt b/doc/INSTALL-de.txt index f7a27a2..1de071e 100644 --- a/doc/INSTALL-de.txt +++ b/doc/INSTALL-de.txt @@ -1,13 +1,18 @@ +Installationsanleitung von phpldapadmin auf Deutsch +=================================================== + +$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/INSTALL-de.txt,v 1.3 2004/03/01 19:48:58 i18phpldapadmin Exp $ + Die Installationsanweisung geht davon aus das: a) Ein Webserver (Apache, IIS, etc.) b) PHP 4.1.0 oder neuer (mit LDAP-Support) -installiert und funktioniert +installiert sind und auch funktionieren * Installation von phpLDAPadmin in vier einfachen Schritten: 1. Entpacken des Archives (wenn man diesen Text lesen kann, - dann ist das schon geschechen) + dann ist das schon geschehen) 2. Das entpackte Verzeichnis phpldapadmin sollte vom webroot aus erreicht werden 3. Kopieren der 'config.php.example' nach 'config.php' @@ -43,19 +48,21 @@ installiert und funktioniert Bitte in der Datei INSTALL unter 'Translators:' nachsehen Wer in der Uebersetzung helfen moechte sollte an der Mailingliste - phpldapadmin-devel teilnehmen. + phpldapadmin-devel teilnehmen: + https://lists.sourceforge.net/mailman/listinfo/phpldapadmin-devel * Hinweise zur Konfiguration von config.php - Wer eine Benuetzerfuehrung auf deutsch haben moechte sollte in der + Wer eine Benuetzerfuehrung auf Deutsch haben moechte sollte in der config.php die Zeile $language = 'en'; mit + $language = 'de'; - abaendern. Andere Sprachen sieht man im Unterverzeichnis 'lang' + abaendern. Weitere Sprachen sieht man im Unterverzeichnis 'lang' diff --git a/doc/INSTALL-es.txt b/doc/INSTALL-es.txt index 16e004c..6f75276 100644 --- a/doc/INSTALL-es.txt +++ b/doc/INSTALL-es.txt @@ -1,3 +1,4 @@ +$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/INSTALL-es.txt,v 1.3 2004/03/19 20:22:54 i18phpldapadmin Exp $ Estas instrucciones dejan por sentado que tienes una instalación funcionando de: a. Servidor Web (Apache, IIS, etc). diff --git a/doc/INSTALL-fr.txt b/doc/INSTALL-fr.txt index 403128d..e29b1a8 100644 --- a/doc/INSTALL-fr.txt +++ b/doc/INSTALL-fr.txt @@ -1,3 +1,4 @@ +$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/INSTALL-fr.txt,v 1.3 2004/03/19 20:22:54 i18phpldapadmin Exp $ Les instructions suivantes supposent une installation en état de marche de: a. Un serveur web (Apache, IIS, etc). b. PHP 4.1.0 ou une version plus récente (avec le support LDAP). diff --git a/doc/README-translation.txt b/doc/README-translation.txt new file mode 100644 index 0000000..8c1d8f7 --- /dev/null +++ b/doc/README-translation.txt @@ -0,0 +1,101 @@ +README-translation +================== +$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/README-translation.txt,v 1.3 2004/06/03 12:45:21 uugdave Exp $ + +This readme is for translators. +phpLDAPadmin currently supports the following languages: + + - en, of course + - de, german + - es, spanish + - fr, french + - it, italien + - nl, netherland + - pl, polish + - pt-br, portuguese (brazilian) + - ru, russian + - sv, swedish + +* Where are the files located? + +All files are in the directory: + + phpldapadmin/lang/ + +* How are the files named? + +Every language is named by its local representation. For example English is "en" and +British English is "en_GB" (though phpLDAPadmin does not have an "en_GB" translation). + +* Is the location phpldapadmin/lang/ used in the application? + +No, there is a Makefile in phpldapadmin/lang/ that converts the +native encoding of the language file to utf8 into the directory +phpldapadmin/lang/recoded. For example the file +phpldapadmin/lang/de.php is converted via the programm iconv to the +the encoding utf8 to the file phpldapadmin/lang/recoded/de.php. + +* Is there a rule for the form of the translation? + +Yes, all translation is stored in an array called lang[]. +The "mother" of all translation is english (en.php). +Use your native encoding like iso8859-1 for european +or iso8859-2 for polish. +Every translated string is in single quotes "'" +Don't use html-code in the translation. +If you need to enclose text in quotes, use a double quote '"' (no escaping required). + +* Why shouldn't I use html-code? + +To avoid problemens wich htmlspecialchars (which coverts "<" to "<", for example). +To avoid JavaScript problems. +To keep the way open for other targets like xml. +To keep the output well formed. + +* How could I start? + +First, the base for translation is the CVS version. +Checkout the CVS version and start your translation. +Create a file that contains your translation. +For me the easiest way was to copy the file phpldapadmin/lang/en.php +to the phpldapadmin/lang/[new-langage].php +That gives the way to put the original translation at the end +as a comment. Look at the de.php and you can see what I mean. +Add a target to Makefile so that your langugage is also converted. + +* How could I verify that my translation is complete? + +phpLDAPadmin contains the file phpldapadmin/check_lang_files.php +Open it in your browser and it will tell you if your lang file has any +omissions or extraneous strings. + + - extra entries: if entry is not in the en.php, maybe the value was + changed in en.php or you type in a wrong key. + - missing entries: the entry is present in en.php but is missing in + the translated langugage. + +* What is zz.php and the zzz.php in the phpldapadmin/lang/ directory? + +Well that is not really a language. That is only for developers +and translators to make sure that all strings are translated in the +application. + +The zz.php replace all characters in the lang[] to Z. That helps +in finding hardcoding translation in the the source. + +The ZZZ.php helps you to find the used "key". + +* How could I enable the zz and zzz language? + +Well, one is to set $language to 'zz' or 'zzz' in the config.php file. That is not the +best way - but the way that always works. + +Mozilla users do this: + * Click Edit->Preferences + * Option Navigator->Lanugages + Klick the button "add" and type into "Other" the + language "zz" + * With Move up / Move down you can change your priority. + * With the Button "OK" you can activate your choice. + +Do the same if you want to activate/test your translation. diff --git a/doc/ROADMAP b/doc/ROADMAP index 51dc23b..aae71e1 100644 --- a/doc/ROADMAP +++ b/doc/ROADMAP @@ -1,3 +1,4 @@ +$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/ROADMAP,v 1.19 2004/03/25 12:50:39 uugdave Exp $ phpLDAPadmin roadmap 0.9.3 planned features: @@ -7,31 +8,49 @@ phpLDAPadmin roadmap Move template config to a new config file: template_config.php (or something) 0.9.4 planned features: - Complete i18n. All strings localized. - Add mass-update feature (user provides filter and set of attrs/vals to modify) - No-schema mode of operation (some servers simply won't give us schema. This becomes a problem for normal operation) - Search filter builder for simple search form (just select AND or OR for a group of criteria) + * Complete i18n. All strings localized. + Modification templates: + * gropOfNames (view full DNs and browse buttons) + * groupOfUniqueNames (view full DNs and browse buttons) + * http auth_type (a la phpMyAdmin) + * read-only attributes (similar to hidden attributes) in config + * Default mod template: Add a "browse" button for attributes that store DNs. + caveat: We don't have a way to reference form elements with "[]" in the name, causing a proble + with our default mod template. The "browser" button is present, but cannot populate the form + element. + * Add output buffering when including lang files so no output is sent to the browser (which could cause problems for sessions and cookies) + * Paging search results. + * Anonymous binds redirect to search page with no tree viewer (as an option in config) + * pretty-printed DNs + * DSML exports + * obfuscated password display + * more linkage in the schema browser (used by links) + * jpegs drawn in-line in searches + * configurable read-only attributes + * paging in search results (ie, viewing entries 1-50 of 436) + * Configuration for templates. + +0.9.5 planned features: + Maybe create a class called Config with static functions for fetching configuration data (ie, Config::isServerReadOnly()). + or: Object-oriented server and general configuration (ie, add a class Server) + Support and test ActiveDirectory and iMail LDAP schema. + Add link to objectClass values in default mod template to jump to that objectClass in the schema viewer. + Make deref param modifiable in the advanced search form (LDAP_DEREF_ALWAYS, LDAP_DEREF_NEVER, etc.) + Better handling of aliases and referals (display the actual alias with aliasedObjectName or ref attrs, and don't follow or perhaps make it configurable like ldapsearch) + Remove all HTML from language files. + Add a random hint on the welcome page + Add blowfish encryption to encrypt cookie-stored passwords and DNs. + Support for modifying replica entries (using ldap_set_rebind_proc()) Modification templates user oragnizationalUnit - posixGroup (view full DNs and browse buttons) sambaUser (v 2 and 3) sambaMachine - http auth_type (a la phpMyAdmin) - read-only attributes (similar to hidden attributes) in config - Support and test ActiveDirectory and iMail LDAP schema. - Support for modifying replica entries (using ldap_set_rebind_proc()) - Add blowfish encryption to encrypt cookie-stored passwords and DNs. - Default mod template: Add a "browse" button for attributes that store DNs. - Add output buffering when including lang files so no output is sent to the browser (which could cause problems for sessions and cookies) - Add a random hint on the welcome page - Paging search results. - Anonymous binds redirect to search page with no tree viewer (as an option in config) - Remove all HTML from language files. - -0.9.5 planned features: + Search filter builder for simple search form (just select AND or OR for a group of criteria) + Add mass-update feature (user provides filter and set of attrs/vals to modify) + No-schema mode of operation (some servers simply won't give us schema. This becomes a problem for normal operation) + i18n localization of all creation templates Hidden/read-only attrs on a filter-basis (ie, different users have different viewable, writable attributes) - Seious compatibility testing for additional LDAP servers. - Configuration for templates. - Template instances with unique config. - Object Oriented migration for server and general configuration (ie, add a class Server) + Serious compatibility testing for additional LDAP servers. + +(* means an item is complete and checed into CVS) diff --git a/doc/pla-test-i18n.ldif b/doc/pla-test-i18n.ldif new file mode 100644 index 0000000..b094593 --- /dev/null +++ b/doc/pla-test-i18n.ldif @@ -0,0 +1,67 @@ +# $Header: /cvsroot/phpldapadmin/phpldapadmin/doc/pla-test-i18n.ldif,v 1.4 2004/03/19 20:22:54 i18phpldapadmin Exp $ +# This is a Test-File for characters / encoding +# 1. Change the +# ,dc=example,dc=com +# to avalue for your organisation +# 2. Import it with phpldapadmin +# +# pla-i18n, example.com +# +dn: ou=pla-i18n,dc=example,dc=com +ou: pla-i18n +objectClass: top +objectClass: organizationalUnit + +# pl, pla-i18n, example.com +dn: ou=pl,ou=pla-i18n,dc=example,dc=com +description:: IGRvcMOza2k= +description:: xITFu8WaxbnEhsWDxYHDk8SYIMSFxbzFm8W6xIfFhMWCw7PEmQ== +description:: V3NrYXrDs3drYQ== +objectClass: top +objectClass: organizationalUnit +ou: pl + +# ru, pla-i18n, example.com +dn: ou=ru,ou=pla-i18n,dc=example,dc=com +description:: 0LfQstGD0YfQuNGCINC/0L7QtNC+0LHQvdC+ +description:: 0J/RgNC+0YHRgtCw0Y8g0YTQvtGA0LzQsCDQv9C+0LjRgdC6 +objectClass: top +objectClass: organizationalUnit +ou: ru + +# jp, pla-i18n, example.com +dn: ou=jp,ou=pla-i18n,dc=example,dc=com +ou: jp +objectClass: top +objectClass: organizationalUnit +description:: SVNPLTIwMjItSlDjga7lpJrlm73nsY3oqIDoqp7jgbjjga7mi6HlvLXmgKc= + +# pt-br, pla-i18n, example.com +dn: ou=pt-br,ou=pla-i18n,dc=example,dc=com +ou: pt-br +objectClass: top +objectClass: organizationalUnit +description:: VmVyIGFzIHJlcXVpc2nDp8O1ZXMgZW0gYWJlcnRv + +# de, pla-i18n, example.com +dn: ou=de,ou=pla-i18n,dc=example,dc=com +ou: de +objectClass: top +objectClass: organizationalUnit +description:: U29uZGVyemVpY2hlbiDDtsOkw7zDnyDDlsOEw5w= +description:: w5bDliDDnMOcIMOEw4Q= + +# sv, pla-i18n, example.com +dn: ou=sv,ou=pla-i18n,dc=example,dc=com +ou: sv +objectClass: top +objectClass: organizationalUnit +description:: U8O2a29tZsOlbmc= +description:: bMOldGVyIHNvbQ== + +# ca, pla-i18n, example.com +dn: ou=ca,ou=pla-i18n,dc=example,dc=com +ou: ca +objectClass: top +objectClass: organizationalUnit +description:: RXMgdGluZHLDoSBxdWUgY29uZmlybWFyIGFxdWVzdGEgZGVjaXNpw7M= diff --git a/documentation.php b/documentation.php index e6f5624..71d6e12 100644 --- a/documentation.php +++ b/documentation.php @@ -1,7 +1,11 @@ -"; $view = isset( $_GET['view'] ) ? $_GET['view'] : false; switch( $view ) { diff --git a/donate.php b/donate.php new file mode 100644 index 0000000..6f0ea74 --- /dev/null +++ b/donate.php @@ -0,0 +1,58 @@ + + + + +

Donate

+
+
+
+

+
+ +
- + - +
+ + + + + + + + + + + + + + + + +
+ [<?php echo sprintf( $lang['donate_amount'], '$US ' . $amount ); ?>] +
+ +
+
+
+ +
+
+ +
+ + + + + diff --git a/download_binary_attr.php b/download_binary_attr.php index 4e88a4a..1fe9cec 100644 --- a/download_binary_attr.php +++ b/download_binary_attr.php @@ -1,6 +1,8 @@ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ******************************************************************************/ + +/******************************************************************************/ +/* Do we have builtin mhash support in this PHP version ? */ +/******************************************************************************/ + +if( ! function_exists( 'mhash' ) && ! function_exists( 'mhash_keygen_s2k' ) ) { + if( ! isset( $emuhash_openssl ) ) + $emuhash_openssl = '/usr/bin/openssl'; + + // don't create mhash functions if we don't have a working openssl + if( ! file_exists( $emuhash_openssl ) ) + unset( $emuhash_openssl ); + elseif ( function_exists( 'is_executable' ) && ! is_executable( $emuhash_openssl ) ) { + unset( $emuhash_openssl ); + } else { + + if( ! isset( $emuhash_temp_dir ) ) + $emuhash_temp_dir = '/tmp'; + +/******************************************************************************/ +/* Define constants used in the mhash emulation code. */ +/******************************************************************************/ + +define('MHASH_MD5', 'md5'); +define('MHASH_SHA1', 'sha1'); +define('MHASH_RIPEMD160', 'rmd160'); + +/******************************************************************************/ +/* Functions to emulate parts of php-mash. */ +/******************************************************************************/ + +function openssl_hash( $openssl_hash_id, $password_clear ) { + global $emuhash_openssl, $emuhash_temp_dir; + + $current_magic_quotes = get_magic_quotes_runtime(); + set_magic_quotes_runtime( 0 ); + $tmpfile = tempnam( $emuhash_temp_dir, "emuhash" ); + $pwhandle = fopen( $tmpfile, "w" ); + if( ! $pwhandle ) + pla_error( "Unable to create a temporary file '$tmpfile' to create hashed password" ); + fwrite( $pwhandle, $password_clear ); + fclose( $pwhandle ); + $cmd = $emuhash_openssl . ' ' . $openssl_hash_id . ' -binary < ' . $tmpfile; + $prog = popen( $cmd, "r" ); + $pass = fread( $prog, 1024 ); + pclose( $prog ); + unlink( $tmpfile ); + set_magic_quotes_runtime( $current_magic_quotes ); + + return $pass; +} + +function mhash( $hash_id, $password_clear ) { + switch( $hash_id ) { + case MHASH_MD5: + $emuhash = openssl_hash( MHASH_MD5, $password_clear ); + break; + case MHASH_SHA1: + $emuhash = openssl_hash( MHASH_SHA1, $password_clear ); + break; + case MHASH_RIPEMD160: + $emuhash = openssl_hash( MHASH_RIPEMD160, $password_clear ); + break; + default: + $emuhash = FALSE; + } + + return $emuhash; +} + +function mhash_keygen_s2k( $hash_id, $password_clear, $salt, $bytes ) { + return substr(pack("H*", bin2hex(mhash($hash_id, ($salt . $password_clear)))), 0, $bytes); +} + +/******************************************************************************/ + + } + +} + +?> diff --git a/entry_chooser.js b/entry_chooser.js index 4f0aeca..b9529bf 100644 --- a/entry_chooser.js +++ b/entry_chooser.js @@ -1,3 +1,4 @@ +// $Header: /cvsroot/phpldapadmin/phpldapadmin/entry_chooser.js,v 1.2 2004/03/19 20:18:41 i18phpldapadmin Exp $ function dnChooserPopup( form_element ) { mywindow=open('entry_chooser.php','myname','resizable=no,width=600,height=370,scrollbars=1'); diff --git a/entry_chooser.php b/entry_chooser.php index 8ad6851..2a6978a 100644 --- a/entry_chooser.php +++ b/entry_chooser.php @@ -1,6 +1,8 @@ Automagic Entry Chooser\n"; +echo "

" . $lang['entry_chooser_title'] . "

\n"; +flush(); +?> + + + +" . htmlspecialchars( $servers[ $server_id ][ 'name' ] ) . "
\n"; @@ -20,15 +34,18 @@ if( $server_id !== false && $container !== false ) { check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] ); have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] ); - pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] ); - $dn_list = get_container_contents( $server_id, $container ); + + $ds = pla_ldap_connect( $server_id ); + pla_ldap_connection_is_error( $ds ); + + $dn_list = get_container_contents( $server_id, $container, 0, '(objectClass=*)', get_tree_deref_setting() ); sort( $dn_list ); $base_dn = $servers[ $server_id ][ 'base' ]; if( ! $base_dn ) $base_dn = try_to_get_root_dn( $server_id ); - if( $container == $base_dn ) { + if( 0 == pla_compare_dns( $container, $base_dn ) ) { $parent_container = false; $up_href = "entry_chooser.php?form_element=$return_form_element"; } else { @@ -87,11 +104,3 @@ $elmpart =substr($return_form_element,strpos($return_form_element,".")+1); $return_form_element = $formpart . ".elements[\"" . $elmpart . "\"]"; ?> - - diff --git a/expand.php b/expand.php index 19c41a5..6073185 100644 --- a/expand.php +++ b/expand.php @@ -1,4 +1,6 @@ "; //var_dump( $contents ); //exit; -usort( $contents, 'pla_compare_dns' ); -$tree[$server_id][$dn] = $contents; - foreach( $contents as $dn ) $tree_icons[$server_id][$dn] = get_icon( $server_id, $dn ); @@ -62,8 +64,8 @@ $random_junk = md5( strtotime( 'now' ) . $time['usec'] ); // If cookies were disabled, build the url parameter for the session id. // It will be append to the url to be redirect $id_session_param=""; -if(SID != ""){ - $id_session_param = "&".session_name()."=".session_id(); +if( SID != "" ){ + $id_session_param = "&".session_name()."=".session_id(); } session_write_close(); diff --git a/export.php b/export.php new file mode 100755 index 0000000..9b684f9 --- /dev/null +++ b/export.php @@ -0,0 +1,93 @@ +pla_close(); + pla_error( $lang['no_exporter_found'] ); +} + +// set the CLRN +$exporter->setOutputFormat($br); + +// prevent script from bailing early for long search +@set_time_limit( 0 ); + +// send the header +if( $save_as_file ) + header( "Content-type: application/download" ); +else + header( "Content-type: text/plain" ); +header( "Content-Disposition: filename=$friendly_rdn.".$exporters[$exporter_id]['extension'] ); +header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); +header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" ); +header( "Cache-Control: post-check=0, pre-check=0", false ); + +// and export +$exporter->export(); +?> diff --git a/export_form.php b/export_form.php new file mode 100755 index 0000000..e5e7a11 --- /dev/null +++ b/export_form.php @@ -0,0 +1,161 @@ + 'UNIX (Linux, BSD)', + 'mac' => 'Macintosh', + 'win' => 'Windows' +); + +$available_scopes = array( + 'base' => $lang['scope_base'], + 'one' => $lang['scope_one'], + 'sub' => $lang['scope_sub'] +); + + +include './header.php'; ?> + + +

+
+
+
+ + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 ){ + echo ''; + } else { + $server = reset($servers); + if( $server['host'] ) + echo '' . + '' . $server['name'] . ''; + } + ?> +
+ $desc ) { + $id = htmlspecialchars( $id ); + $desc = htmlspecialchars( $desc ); ?> + + />
+ + +
 />
 
+
+
+ + + +
+
+ + + $exporter){?> + + /> +
+ + + +
+
+
+ + $desc ) { + $id = htmlspecialchars( $id ); + $desc = htmlspecialchars( $desc ); + ?> + + />
+ + +
+
+
+
+ +
+
+
+
+ + + +'ldif', + 'desc' => 'LDIF', + 'extension' => 'ldif' + ); + +$exporters[] = array('output_type'=>'dsml', + 'desc' => 'DSML V.1', + 'extension' => 'xml' + ); + +$exporters[] = array('output_type'=>'vcard', + 'desc' => 'VCARD 2.1', + 'extension' => 'vcf' + ); +$exporters[] = array('output_type'=>'csv', + 'desc' => $lang['csv_spreadsheet'], + 'extension' => 'csv' + ); + +/** + * This class encapsulate informations about the ldap server + * from which the export is done. + * The following info are provided within this class: + * + * $server_id: the id of the server. + * $base_dn: if the source of the export is the ldap server, + * it indicates the base dn of the search. + * $query_filter: if the source of the export is the ldap server, + * it indicates the query filter for the search. + * $scope: if the source of the export is the ldap server, + * it indicates the scope of the search. + * $server_host: the host name of the server. + * $server_name: the name of the server. + */ + +class LdapInfo{ + + var $base_dn; + var $query_filter; + var $scope; + var $server_host = NULL; + var $server_name = NULL; + var $server_id = NULL; + + /** + * Create a new LdapInfo object + * + * @param int $server_id the server id + * @param String $base_dn the base_dn for the search in a ldap server + * @param String $query_filter the query filter for the search + * @param String scope the scope of the search in a ldap server + */ + + function LdapInfo($server_id,$base_dn = NULL,$query_filter = NULL,$scope = NULL){ + global $servers; + $this->base_dn = $base_dn; + $this->query_filter = $query_filter; + $this->scope = $scope; + $this->server_name = $servers[ $server_id ][ 'name' ]; + $this->server_host = $servers[ $server_id ][ 'host' ]; + $this->server_id = $server_id; + } +} + + +/** + * This class represents the base class of all exporters + * It can be subclassed directly if your intend is to write + * a source exporter(ie. it will act only as a decoree + * which will be wrapped by an another exporter.) + * If you consider writting an exporter for filtering data + * or directly display entries, please consider subclass + * the PlaExporter + * + * @see PlaExporter + */ + +class PlaAbstractExporter{ + + /** + * Return the number of entries + * @return int the number of entries to be exported + */ + function pla_num_entries(){} + + /** + * Return true if there is some more entries to be processed + * @return bool if there is some more entries to be processed + */ + function pla_has_entry(){} + + /** + * Return the entry as an array + * @return array an entry as an array + */ + function pla_fetch_entry_array(){} + + /** + * Return the entry as an Entry object + * @return Entry an entry as an Entry Object + */ + function pla_fetch_entry_object(){} + + /** + * Return a PlaLdapInfo Object + * @return LdapInfo Object with info from the ldap serveur + */ + function pla_get_ldap_info(){} + + /** + * May be call when the processing is finished + * and to free some ressources. + * @return bool true or false if any errors is encountered + */ + function pla_close(){} + +}// end PlaAbstractExporter + + + +/** + * PlaExporter acts a wrapper around another exporter. + * In other words, it will act as a decorator for another decorator + */ + +class PlaExporter extends PlaAbstractExporter{ + // the default CRLN + var $br="\n"; + // the wrapped $exporter + var $exporter; + + /** + * Constructor + * @param source $source the decoree for this exporter + */ + function PlaExporter( $source ){ + $this->exporter = $source; + } + + /** + * Return the number of entries + * @return int the number of entries to be exported + */ + function pla_num_entries(){ + return $this->exporter->pla_num_entries(); + } + + /** + * Return true if there is some more entries to be processed + * @return bool if there is some more entries to be processed + */ + function pla_has_entry(){ + return $this->exporter->pla_has_entry(); + } + + /** + * Return the entry as an array + * @return array an entry as an array + */ + function pla_fetch_entry_array(){ + return $this->exporter->pla_fetch_entry_array(); + } + + /** + * Return the entry as an Entry object + * @return Entry an entry as an Entry Object + */ + function pla_fetch_entry_object(){ + return $this->exporter->pla_fetch_entry_object(); + } + + /** + * Return a PlaLdapInfo Object + * @return LdapInfo Object with info from the ldap serveur + */ + function pla_get_ldap_info(){ + return $this->exporter->pla_get_ldap_info(); + } + + /** + * May be call when the processing is finished + * and to free some ressources. + * @return bool false if any errors are encountered,false otherwise + */ + function pla_close(){ + return $this->exporter->pla_close(); + } + + /** + * Helper method to check if the attribute value should be base 64 encoded. + * @param String $str the string to check. + * @return bool true if the string is safe ascii, false otherwise. + */ + function is_safe_ascii( $str ){ + for( $i=0; $i 127 ) + return false; + return true; + } + + /** + * Abstract method use to export data. + * Must be implemented in a sub-class if you write an exporter + * which export data. + * Leave it empty if you write a sub-class which do only some filtering. + */ + function export(){} + + /** + * Set the carriage return /linefeed for the export + * @param String $br the CRLF to be set + */ + function setOutputFormat( $br ){ + $this->br = $br; + } + +}// end PlaExporter + + +/** + * Export data from a ldap server + * @extends PlaAbstractExporter + */ + +class PlaLdapExporter extends PlaAbstractExporter{ + var $entry_id; + var $results; + var $server_id; + var $scope; + var $entry_array; + var $num_entries; + var $ldap_info; + var $queryFilter; + var $hasNext; + var $connection_open_state; + var $attributes; + /** + * Create a PlaLdapExporter object. + * @param int $server_id the server id + * @param String $queryFilter the queryFilter for the export + * @param String $base_dn the base_dn for the data to export + * @param String $scope the scope for export + */ + function PlaLdapExporter( $server_id , $queryFilter , $base_dn , $scope, $attributes){ + global $lang; + $this->scope = $scope; + $this->base_dn = $base_dn; + $this->server_id = $server_id; + $this->queryFilter = $queryFilter; + // infos for the server + $this->ldap_info = new LdapInfo($server_id,$base_dn,$queryFilter,$scope); + // boolean to check if there is more entries + $this->hasNext = 0; + // boolean to check the state of the connection + $this->connection_open_state = 0; + + $this->attributes = $attributes; + // connect to the server + $this->ds = @pla_ldap_connect( $this->server_id ); + pla_ldap_connection_is_error( $this->ds ); + $this->connection_open_state = 1; + + // get the data to be exported + if( $this->scope == 'base' ) + $this->results = @ldap_read( $this->ds, $this->base_dn, $this->queryFilter,$this->attributes, + 0, 0, 0, get_export_deref_setting() ); + elseif( $this->scope == 'one' ) + $this->results = @ldap_list( $this->ds, $this->base_dn, $this->queryFilter, $this->attributes, + 0, 0, 0, get_export_deref_setting() ); + else // scope == 'sub' + $this->results = @ldap_search( $this->ds, $this->base_dn, $this->queryFilter, $this->attributes, + 0, 0, 0, get_export_deref_setting() ); + + // if no result, there is a something wrong + if( ! $this->results ) + pla_error( $lang['error_performing_search'], ldap_error( $this->ds ), ldap_errno( $this->ds ) ); + + // get the number of entries to be exported + $this->num_entries = @ldap_count_entries( $this->ds,$this->results ); + + if( $this->entry_id = @ldap_first_entry( $this->ds,$this->results ) ){ + $this->hasNext = 1; + } + }//end constructor + + /** + * Return the entry as an array + * @return array an entry as an array + */ + function pla_fetch_entry_array(){ + return $this->entry_array; + } + + /** + * Return the entry as an Entry object + * @return Entry an entry as an Entry Object + */ + function pla_fetch_entry_object(){ + // to do + } + + /** + * Return a PlaLdapInfo Object + * @return LdapInfo Object with info from the ldap serveur + */ + function pla_get_ldap_info(){ + return $this->ldap_info; + } + + /** + * Return the number of entries + * @return int the number of entries to be exported + */ + function pla_num_entries(){ + return $this->num_entries; + } + + /** + * Return true if there is some more entries to be processed + * @return bool if there is some more entries to be processed + */ + function pla_has_entry(){ + if( $this->hasNext ){ + unset( $this->entry_array ); + $dn = @ldap_get_dn( $this->ds,$this->entry_id ); + $this->entry_array['dn'] = $dn; + + //get the attributes of the entry + $attrs = @ldap_get_attributes($this->ds,$this->entry_id); + if( $attr = @ldap_first_attribute( $this->ds,$this->entry_id,$attrs ) ){ + + //iterate over the attributes + while( $attr ){ + if( is_attr_binary( $this->server_id,$attr ) ){ + $this->entry_array[$attr] = @ldap_get_values_len( $this->ds,$this->entry_id,$attr ); + } + else{ + $this->entry_array[$attr] = @ldap_get_values( $this->ds,$this->entry_id,$attr ); + } + unset( $this->entry_array[$attr]['count'] ); + $attr = @ldap_next_attribute( $this->ds,$this->entry_id,$attrs ); + }// end while attr + + if(!$this->entry_id = @ldap_next_entry( $this->ds,$this->entry_id ) ){ + $this->hasNext = 0; + } + }// end if attr + return true; + } + else{ + $this->pla_close(); + return false; + } + } + + /** + * May be call when the processing is finished + * and to free some ressources. + * @return bool true or false if any errors is encountered + */ + function pla_close(){ + if($this->connection_open_state){ + return @ldap_close( $this->ds ); + } + else{ + return true; + } + } +} // end PlaLdapExporter + +/** + * Export entries to ldif format + * @extends PlaExporter + */ + +class PlaLdifExporter extends PlaExporter{ + + // variable to keep the count of the entries + var $counter = 0; + + // the maximum length of the ldif line + var $MAX_LDIF_LINE_LENGTH = 76; + + /** + * Create a PlaLdifExporter object + * @param PlaAbstractExporter $exporter the source exporter + */ + function PlaLdifExporter( $exporter ){ + $this->exporter = $exporter; + } + + /** + * Export entries to ldif format + */ + function export(){ + $pla_ldap_info = $this->pla_get_ldap_info(); + $this->displayExportInfo($pla_ldap_info); + + //While there is an entry, fecth the entry as an array + while($this->pla_has_entry()){ + $entry = $this->pla_fetch_entry_array(); + $this->counter++; + + // display comment before each entry + global $lang; + $title_string = "# " . $lang['entry'] . " " . $this->counter . ": " . $entry['dn'] ; + if( strlen( $title_string ) > $this->MAX_LDIF_LINE_LENGTH-3 ) + $title_string = substr( $title_string, 0, $this->MAX_LDIF_LINE_LENGTH-3 ) . "..."; + echo "$title_string$this->br"; + + // display dn + if( $this->is_safe_ascii( $entry['dn'] )) + $this->multi_lines_display("dn:". $entry['dn']); + else + $this->multi_lines_display("dn:: " . base64_encode( $entry['dn'] )); + array_shift($entry); + + // display the attributes + foreach( $entry as $key => $attr ){ + foreach( $attr as $value ){ + if( !$this->is_safe_ascii($value) || is_attr_binary($pla_ldap_info->server_id,$key ) ){ + $this->multi_lines_display( $key.":: " . base64_encode( $value ) ); + } + else{ + $this->multi_lines_display( $key.": ".$value ); + } + } + }// end foreach $entry + + echo $this->br; + // flush every 5th entry (sppeds things up a bit) + if( 0 == $this->counter % 5 ) + flush(); + } + } + + // display info related to this export + function displayExportInfo($pla_ldap_info){ + global $lang; + echo "version: 1$this->br$this->br"; + echo "# " . sprintf( $lang['ldif_export_for_dn'], $pla_ldap_info->base_dn ) . $this->br; + echo "# " . sprintf( $lang['generated_on_date'], date("F j, Y g:i a") ) . $this->br; + echo "# " . $lang['server'] . ": " .$pla_ldap_info->server_name . " (" . $pla_ldap_info->server_host . ")" . $this->br; + echo "# " . $lang['search_scope'] . ": " . $pla_ldap_info->scope . $this->br; + echo "# " . $lang['total_entries'] . ": " . $this->pla_num_entries() . $this->br; + echo $this->br; + } + + /** + * Helper method to wrap ldif lines + * @param String $str the line to be wrapped if needed. + */ + function multi_lines_display( $str ){ + + $length_string = strlen($str); + $max_length = $this->MAX_LDIF_LINE_LENGTH; + + while ($length_string > $max_length){ + echo substr($str,0,$max_length).$this->br." "; + $str= substr($str,$max_length,$length_string); + $length_string = strlen($str); + + // need to do minus one to align on the right + // the first line with the possible following lines + // as these will have an extra space + $max_length = $this->MAX_LDIF_LINE_LENGTH-1; + } + echo $str."".$this->br; + } + +} + +/** + * Export entries to DSML v.1 + * @extends PlaExporter + */ + +class PlaDsmlExporter extends PlaExporter{ + + //not in use + var $indent_step = 2; + var $counter = 0; + + /** + * Create a PlaDsmlExporter object + * @param PlaAbstractExporter $exporter the decoree exporter + */ + function PlaDsmlExporter( $exporter ){ + $this->exporter = $exporter; + } + + /** + * Export the entries to DSML + */ + function export(){ + global $lang; + $pla_ldap_info = $this->pla_get_ldap_info(); + // not very elegant, but do the job for the moment as we have just 4 level + $directory_entries_indent = " "; + $entry_indent= " "; + $attr_indent = " "; + $attr_value_indent = " "; + + // print declaration + echo "$this->br"; + + // print root element + echo "$this->br"; + + // print info related to this export + echo "" . $this->br; + + + echo $directory_entries_indent."$this->br"; + //While there is an entry, fetch the entry as an array + while($this->pla_has_entry()){ + $entry = $this->pla_fetch_entry_array(); + $this->counter++; + // display dn + echo $entry_indent."".$this->br; + array_shift($entry); + + // echo the objectclass attributes first + if(isset($entry['objectClass'])){ + echo $attr_indent."".$this->br; + foreach($entry['objectClass'] as $ocValue){ + echo $attr_value_indent."$ocValue".$this->br; + } + echo $attr_indent."".$this->br; + unset($entry['objectClass']); + } + + $binary_mode = 0; + // display the attributes + foreach($entry as $key=>$attr){ + echo $attr_indent."".$this->br; + + // if the attribute is binary, set the flag $binary_mode to true + $binary_mode = is_attr_binary($pla_ldap_info->server_id,$key)?1:0; + + foreach($attr as $value){ + echo $attr_value_indent."".($binary_mode?base64_encode( $value): htmlspecialchars( $value ) )."".$this->br; + } + echo $attr_indent."".$this->br; + }// end foreach $entry + echo $entry_indent."".$this->br; + + // flush every 5th entry (speeds things up a bit) + if( 0 == $this->counter % 5 ) + flush(); + } + echo $directory_entries_indent."$this->br"; + echo "".$this->br; + } +} + + +class PlaVcardExporter extends PlaExporter{ + + // mappping one to one attribute + var $vcardMapping = array('cn' => 'FN', + 'title' => 'TITLE', + 'homePhone' => 'TEL;HOME', + 'mobile' => 'TEL;CELL', + 'mail' => 'EMAIL;Internet', + 'labeledURI' =>'URL', + 'o' => 'ORG', + 'audio' => 'SOUND', + 'facsmileTelephoneNumber' =>'TEL;WORK;HOME;VOICE;FAX', + 'jpegPhoto' => 'PHOTO;ENCODING=BASE64', + 'businessCategory' => 'ROLE', + 'description' => 'NOTE' + ); + + var $deliveryAddress = array("postOfficeBox", + "street", + "l", + "st", + "postalCode", + "c"); + + function PlaVcardExporter($exporter){ + $this->exporter = $exporter; + } + + /** + * When doing an exporter, the method export need to be overriden. + * A basic implementation is provided here. Customize to your need + **/ + + function export(){ + + // With the method pla->get_ldap_info, + // you have access to some values related + // to you ldap server + $ldap_info = $this->pla_get_ldap_info(); + $base_dn = $ldap_info->base_dn; + $server_id = $ldap_info->server_id; + $scope = $ldap_info->scope; + $server_name = $ldap_info->server_name; + $server_host = $ldap_info->server_host; + + while( $this->pla_has_entry() ){ + $entry = $this->pla_fetch_entry_array(); + + //fetch the dn + $dn = $entry['dn']; + unset( $entry['dn'] ); + + // check the attributes needed for the delivery address + // field + $addr = "ADR:"; + foreach( $this->deliveryAddress as $attr_name ){ + if( isset( $entry[$attr_name] ) ){ + $addr .= $entry[$attr_name][0]; + unset($entry[$attr_name]); + } + $addr .= ';'; + } + echo "BEGIN:VCARD$this->br"; + + // loop for the attributes + foreach( $entry as $attr_name=>$attr_values ){ + + // if an attribute of the ldap entry exist + // in the mapping array for vcard + if( isset( $this->vcardMapping[$attr_name] ) ){ + + // case of organisation. Need to append the + // possible ou attribute + if( 0 == strcasecmp( $attr_name , 'o' )){ + echo $this->vcardMapping[$attr_name].":$attr_values[0]"; + if( isset($entry['ou'] ) ) + foreach( $entry['ou'] as $ou_value ){ + echo ";$ou_value"; + } + } + // the attribute is binary. (to do : need to fold the line) + else if( 0 == strcasecmp( $attr_name,'audio') || 0 == strcasecmp( $attr_name,'jpegPhoto') ){ + echo $this->vcardMapping[$attr_name].":$this->br"; + echo " ".base64_encode( $attr_values[0]); + } + /* else if( $attr_name == "sn"){ + echo $this->vcardMapping[$attr_name].":$attr_values[0]"; + } + elseif( $attr_name == "homePostalAddress"){ + }*/ + // else just print the value with the relevant attribute name + else{ + echo $this->vcardMapping[$attr_name].":$attr_values[0]"; + } + echo $this->br; + } + } + // need to check + echo "UID:$dn"; + echo $this->br; + echo "VERSION:2.1"; + echo $this->br; + echo $addr; + echo $this->br; + echo "END:VCARD"; + echo $this->br; + }// end while + } +} + + + + +/** + * Export to cvs format + * + * @author Glen Ogilvie + */ + +class PlaCSVExporter extends PlaExporter{ + + function PlaCSVExporter($exporter){ + $this->exporter = $exporter; + } + + /** + * When doing an exporter, the method export need to be overriden. + * A basic implementation is provided here. Customize to your need + **/ + + var $separator = ","; + var $qualifier = '"'; + var $multivalue_separator = " | "; + var $escapeCode = '"'; + + function export(){ + + // With the method pla->get_ldap_info, + // you have access to some values related + // to you ldap server + $ldap_info = $this->pla_get_ldap_info(); + $base_dn = $ldap_info->base_dn; + $server_id = $ldap_info->server_id; + $scope = $ldap_info->scope; + $server_name = $ldap_info->server_name; + $server_host = $ldap_info->server_host; + + $entries = array(); + $headers = array(); + + // go thru and find all the attribute names first. This is needed, because, otherwise we have + // no idea as to which search attributes were actually populated with data + while( $this->pla_has_entry() ) { + $entry = $this->pla_fetch_entry_array(); + foreach (array_keys($entry) as $key) { + if (!in_array($key, $headers)) + array_push($headers,$key); + } + array_push($entries, $entry); + } + + $num_headers = count($headers); + + // print out the headers + for ($i = 0; $i < $num_headers; $i++) { + echo $this->qualifier. $headers[$i].$this->qualifier; + if ($i < $num_headers-1) + echo $this->separator; + } + + array_shift($headers); + $num_headers--; + + echo $this->br; + + // loop on every entry + foreach ($entries as $entry) { + + //print the dn + $dn = $entry['dn']; + unset( $entry['dn'] ); + echo $this->qualifier. $this->LdapEscape($dn).$this->qualifier.$this->separator; + + // print the attributes + for($j=0;$j<$num_headers;$j++){ + + $attr_name = $headers[$j]; + + echo $this->qualifier; + if (key_exists($attr_name, $entry)) { + $binary_attribute = is_attr_binary( $server_id, $attr_name )?1:0; + + $attr_values = $entry[$attr_name]; + + $num_attr_values = count( $attr_values ); + for( $i=0 ; $i<$num_attr_values; $i++){ + if($binary_attribute) + echo base64_encode($attr_values[$i]); + else + echo $this->LdapEscape($attr_values[$i]); + + if($i < $num_attr_values - 1) + echo $this->multivalue_separator; + + } + }// end if key + echo $this->qualifier; + if( $j < $num_headers - 1 ) + echo $this->separator; + } + echo $this->br; + } + }//end export + + // function to escape data, where the qualifier happens to also + // be in the data. + function LdapEscape ($var) { + return str_replace($this->qualifier, $this->escapeCode.$this->qualifier, $var); + } +} + + + + + +class MyCustomExporter extends PlaExporter{ + + function MyCutsomExporter($exporter){ + $this->exporter = $exporter; + } + + /** + * When doing an exporter, the method export need to be overriden. + * A basic implementation is provided here. Customize to your need + **/ + + + function export(){ + + // With the method pla->get_ldap_info, + // you have access to some values related + // to you ldap server + $ldap_info = $this->pla_get_ldap_info(); + $base_dn = $ldap_info->base_dn; + $server_id = $ldap_info->server_id; + $scope = $ldap_info->scope; + $server_name = $ldap_info->server_name; + $server_host = $ldap_info->server_host; + + + // Just a simple loop. For each entry + // do your custom export + // see PlaLdifExporter or PlaDsmlExporter as an example + while( $this->pla_has_entry() ){ + $entry = $this->pla_fetch_entry_array(); + + //fetch the dn + $dn = $entry['dn']; + unset( $entry['dn'] ); + + // loop for the attributes + foreach( $entry as $attr_name=>$attr_values ){ + foreach( $attr_values as $value ){ + + // simple example + // echo "Attribute Name:".$attr_name; + // echo " - value:".$value; + // echo $this->br; + } + } + + }// end while + } + +} +?> diff --git a/functions.php b/functions.php index 51ead3a..1321faa 100644 --- a/functions.php +++ b/functions.php @@ -1,31 +1,327 @@ + * if( is_muli_line_attr( "postalAddress" ) ) + * echo ""; + * else + * echo ""; + * + * + * @param string $attr_name The name of the attribute of interestd (case insensivite) + * @param string $val (optional) The current value of the attribute (speeds up the + * process by searching for carriage returns already in the attribute value) + * @param int $server_id (optional) The ID of the server of interest. If specified, + * is_multi_line_attr() will read the schema from the server to determine if + * the attr is multi-line capable. (note that schema reads can be expensive, + * but that impact is lessened due to PLA's new caching mechanism) + * @return bool + */ +function is_multi_line_attr( $attr_name, $val=null, $server_id=null ) +{ + // First, check the optional val param for a \n or a \r + if( null != $val && + ( false !== strpos( $val, "\n" ) || + false !== strpos( $val, "\r" ) ) ) + return true; -function login_attr_enabled( $server_id ) + // Next, compare strictly by name first + global $multi_line_attributes; + if( isset( $multi_line_attributes ) && is_array( $multi_line_attributes ) ) + foreach( $multi_line_attributes as $multi_line_attr_name ) + if( 0 == strcasecmp( $multi_line_attr_name, $attr_name ) ) + return true; + + // If unfound, compare by syntax OID + if( null !== $server_id ) { + global $multi_line_syntax_oids; + if( isset( $multi_line_syntax_oids ) && is_array( $multi_line_syntax_oids ) ) { + $schema_attr = get_schema_attribute( $server_id, $attr_name ); + if( ! $schema_attr ) + return false; + $syntax_oid = $schema_attr->getSyntaxOID(); + if( ! $syntax_oid ) + return false; + foreach( $multi_line_syntax_oids as $multi_line_syntax_oid ) + if( $multi_line_syntax_oid == $syntax_oid ) + return true; + } + } + + return false; + +} + +/** + * Fetches the user setting for $search_deref from config.php. The returned value + * will be one of the four LDAP_DEREF_* constancts defined by the PHP LDAP API. If + * the user has failed to configure this setting or configured an inappropriate + * value, the constant DEFAULT_SEARCH_DEREF_SETTING is returned. + * + * @see DEFAULT_SEARCH_DEREF_SETTING + * @see is_valid_deref_setting() + * @return int + */ +function get_search_deref_setting() +{ + global $search_deref; + if( ! isset( $search_deref ) || ! is_valid_deref_setting( $search_deref ) ) + return DEFAULT_SEARCH_DEREF_SETTING; + else + return $search_deref; +} + +/** + * Fetches the user setting for $tree_deref from config.php. The returned value + * will be one of the four LDAP_DEREF_* constancts defined by the PHP LDAP API. If + * the user has failed to configure this setting or configured an inappropriate + * value, the constant DEFAULT_TREE_DEREF_SETTING is returned. + * + * @see DEFAULT_TREE_DEREF_SETTING + * @see is_valid_deref_setting() + * @return int + */ +function get_tree_deref_setting() +{ + global $tree_deref; + if( ! isset( $tree_deref ) || ! is_valid_deref_setting( $tree_deref ) ) + return DEFAULT_TREE_DEREF_SETTING; + else + return $tree_deref; +} + +/** + * Fetches the user setting for $export_deref from config.php. The returned value + * will be one of the four LDAP_DEREF_* constancts defined by the PHP LDAP API. If + * the user has failed to configure this setting or configured an inappropriate + * value, the constant DEFAULT_EXPORT_DEREF_SETTING is returned. + * + * @see DEFAULT_EXPORT_DEREF_SETTING + * @see is_valid_deref_setting() + * @return int + */ +function get_export_deref_setting() +{ + global $export_deref; + if( ! isset( $export_deref ) || ! is_valid_deref_setting( $export_deref ) ) + return DEFAULT_EXPORT_DEREF_SETTING; + else + return $export_deref; +} + +/** + * Fetches the user setting for $view_deref from config.php. The returned value + * will be one of the four LDAP_DEREF_* constancts defined by the PHP LDAP API. If + * the user has failed to configure this setting or configured an inappropriate + * value, the constant DEFAULT_VIEW_DEREF_SETTING is returned. + * + * @see DEFAULT_VIEW_DEREF_SETTING + * @see is_valid_deref_setting() + * @return int + */ +function get_view_deref_setting() +{ + global $view_deref; + if( ! isset( $view_deref ) || ! is_valid_deref_setting( $view_deref ) ) + return DEFAULT_VIEW_DEREF_SETTING; + else + return $view_deref; +} + +/** + * Checks the user-configured parameter for sanity. For the various *_deref settings, users + * may only use one of LDAP_DEREF_NEVER, LDAP_DEREF_SEARCHING, LDAP_DEREF_FINDING, or + * LDAP_DEREF_ALWAYS. This function can be used to conveniently enforce this. + * + * @param int $deref_setting The deref setting to validate. + * @return bool + */ +function is_valid_deref_setting( $deref_setting ) +{ + if( $deref_setting == LDAP_DEREF_NEVER || + $deref_setting == LDAP_DEREF_SEARCHING || + $deref_setting == LDAP_DEREF_FINDING || + $deref_setting == LDAP_DEREF_ALWAYS ) + return true; + else + return false; + +} + +/** + * Fetch whether the user has configured a certain server as "low bandwidth". Users may + * choose to configure a server as "low bandwidth" in config.php thus: + * + * $servers[$i]['low_bandwidth'] = true; + * + * @param int $server_id The ID of the server of interest from config.php. + * @return bool + */ +function is_server_low_bandwidth( $server_id ) +{ + global $servers; + if( isset( $servers[$server_id]['low_bandwidth'] ) && true == $servers[$server_id]['low_bandwidth'] ) + return true; + else + return false; +} + +/** + * Fetch whether the user has configured a certain server login to be non anonymous + * + * + * $servers[$i]['disable_anon_bind'] = true; + * + * @param int $server_id The ID of the server of interest from config.php. + * @return bool + */ +function is_anonymous_bind_allowed( $server_id ) { global $servers; - if( isset( $servers[$server_id]['login_attr'] ) && - 0 != strcasecmp( $servers[$server_id]['login_attr'], "dn" ) && - $servers[$server_id]['login_attr'] != "" ) + + return ( ! isset( $servers[$server_id]['disable_anon_bind'] ) + || false == $servers[$server_id]['disable_anon_bind'] ) + ? true + : false; +} + +/** + * Fetches whether TLS has been configured for use with a certain server. + * Users may configure phpLDAPadmin to use TLS in config,php thus: + * + * $servers[$i]['tls'] = true; + * + * @param int $server_id The ID of the server of interest from config.php. + * @return bool + */ +function tls_enabled( $server_id ) +{ + global $servers; + if( isset( $servers[$server_id]['tls'] ) && true == $servers[$server_id]['tls'] ) + return true; + else + return false; +} + +/** + * Fetches whether phpLDAPadmin has been configured to redirect anonymously bound users + * to a search form with no tree displayed. + * This is configured in config.php thus: + * + * $anonymous_bind_redirect_no_tree = true; + * + * @return bool + */ +function anon_bind_tree_disabled() +{ + global $anonymous_bind_redirect_no_tree; + if( isset( $anonymous_bind_redirect_no_tree ) && true == $anonymous_bind_redirect_no_tree ) return true; else return false; } -/* +/** + * Fetches whether phpLDAPadmin has been configured to display configuration + * management links (report bug, request feature, etc) + * @return bool + */ +function hide_configuration_management() +{ + global $hide_configuration_management; + if( isset( $hide_configuration_management ) && + $hide_configuration_management == true ) + return true; + else + return false; +} + +/** + * Fetches whether the user has configured phpLDAPadmin to obfuscate passwords + * with "*********" when displaying them. This is configured in config.php thus: + * + * $obfuscate_password_display = true; + * + * @return bool + */ +function obfuscate_password_display() +{ + global $obfuscate_password_display; + if( isset( $obfuscate_password_display ) && true == $obfuscate_password_display ) + return true; + else + return false; +} + +/** + * Fetches whether the login_attr feature is enabled for a specified server. + * This is configured in config.php thus: + * + * $servers[$server_id]['login_attr'] = 'uid'; + * + * By virtue of the fact that the login_attr is not blank and not 'dn', the + * feature is configured to be enabled. + * + * @return bool + */ +function login_attr_enabled( $server_id ) +{ + global $servers; + if( isset( $servers[$server_id]['login_attr'] ) && + 0 != strcasecmp( $servers[$server_id]['login_attr'], "dn" ) && + trim( $servers[$server_id]['login_attr'] != "" ) ) + return true; + else + return false; +} + +function login_string_enabled( $server_id ) +{ + global $servers; + if( isset( $servers[$server_id]['login_attr'] ) && + 0 == strcasecmp( $servers[$server_id]['login_attr'], "string" ) ) + return true; + else + return false; +} + +function get_login_string( $server_id ) +{ + global $servers; + if( isset( $servers[$server_id]['login_string'] ) ) + return $servers[$server_id]['login_string']; + else + return false; +} + +/** * Returns an HTML-beautified version of a DN. + * Internally, this function makes use of pla_explode_dn() to break the + * the DN into its components. It then glues them back together with + * "pretty" HTML. The returned HTML is NOT to be used as a real DN, but + * simply displayed. + * + * @param string $dn The DN to pretty-print. + * @return string */ function pretty_print_dn( $dn ) { $dn = pla_explode_dn( $dn ); - if( isset( $dn['count'] ) ) - unset( $dn['count'] ); foreach( $dn as $i => $element ) { $element = htmlspecialchars( $element ); $element = explode( '=', $element, 2 ); @@ -37,32 +333,127 @@ function pretty_print_dn( $dn ) return $dn; } - -/* - * Responsible for setting the cookie to indicate that a user has logged in. +/** + * Returns true if the attribute specified is required to take as input a DN. + * Some examples include 'distinguishedName', 'member' and 'uniqueMember'. + * @param int $server_id The ID of the server of interest + * (required since this operation demands a schema lookup) + * @param string $attr_name The name of the attribute of interest (case insensitive) + * @return bool */ -function set_cookie_login_dn( $server_id, $dn, $password, $anon_bind ) +function is_dn_attr( $server_id, $attr_name ) { - // cookie_time comes from config.php - if( ! check_server_id( $server_id ) ) - return false; - if( $anon_bind ) { - // we set the cookie val to 0 for anonymous binds. - $res1 = pla_set_cookie( "pla_login_dn_$server_id", 'anonymous' ); - $res2 = pla_set_cookie( "pla_login_pass_$server_id", '0' ); - } else { - $res1 = pla_set_cookie( "pla_login_dn_$server_id", $dn ); - $res2 = pla_set_cookie( "pla_login_pass_$server_id", $password ); - } - if( ! $res1 || ! $res2 ) - return false; - else - return true; + // Simple test first + $dn_attrs = array( "aliasedObjectName" ); + foreach( $dn_attrs as $dn_attr ) + if( 0 == strcasecmp( $attr_name, $dn_attr ) ) + return true; + + // Now look at the schema OID + $attr_schema = get_schema_attribute( $server_id, $attr_name ); + if( ! $attr_schema ) + return false; + $syntax_oid = $attr_schema->getSyntaxOID(); + if( '1.3.6.1.4.1.1466.115.121.1.12' == $syntax_oid ) + return true; + if( '1.3.6.1.4.1.1466.115.121.1.34' == $syntax_oid ) + return true; + $syntaxes = get_schema_syntaxes( $server_id ); + if( ! isset( $syntaxes[ $syntax_oid ] ) ) + return false; + $syntax_desc = $syntaxes[ $syntax_oid ]->getDescription(); + if( false !== strpos( strtolower($syntax_desc), 'distinguished name' ) ) + return true; + return false; } -/* - * PLA-only wrapper for setting cookies, which takes into consideration - * configuration values. +/** + * Given a string, this function returns true if the string has the format + * of a DN (ie, looks like "cn=Foo,dc=example,dc=com"). Returns false otherwise. + * The purpose of this function is so that developers can examine a string and + * know if it looks like a DN, and draw a hyperlink as needed. + * + * (See unit_test.php for test cases) + * + * @param string $attr The attribute to examine for "DNness" + * @see unit_test.php + * @return bool + */ +function is_dn_string( $str ) +{ + // Try to break the string into its component parts if it can be done + // ie, "uid=Manager" "dc=example" and "dc=com" + $parts = pla_explode_dn( $str ); + if( ! is_array( $parts ) ) + return false; + if( 0 == count( $parts ) ) + return false; + + // Foreach of the "parts", look for an "=" character, + // and make sure neither the left nor the right is empty + foreach( $parts as $part ) { + if( false === strpos( $part, "=" ) ) + return false; + $sub_parts = explode( "=", $part, 2 ); + $left = $sub_parts[0]; + $right = $sub_parts[1]; + if( 0 == strlen( trim( $left ) ) || 0 == strlen( trim( $right ) ) ) + return false; + if( false !== strpos( $left, '#' ) ) + return false; + } + + // We survived the above rigor. This is a bonified DN string. + return true; +} + +/** + * Get whether a string looks like an email address (user@example.com). + * + * @param string $str The string to analyze. + * @return bool Returns true if the specified string looks like + * an email address or false otherwise. + */ +function is_mail_string( $str ) +{ + $mail_regex = "/^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*$/"; + if( preg_match( $mail_regex, $str ) ) + return true; + else + return false; +} + +/** + * Get whether a string looks like a web URL (http://www.example.com/) + * + * @param string $str The string to analyze. + * @return bool Returns true if the specified string looks like + * a web URL or false otherwise. + */ +function is_url_string( $str ) +{ + $url_regex = '/(ftp|https?):\/\/+[\w\.\-\/\?\=\&]*\w+/'; + if( preg_match( $url_regex, $str ) ) + return true; + else + return false; + +} + + +/** + * Utility wrapper for setting cookies, which takes into consideration + * phpLDAPadmin configuration values. On success, true is returned. On + * failure, false is returned. + * + * @param string $name The name of the cookie to set. + * @param string $val The value of the cookie to set. + * @param int $expire (optional) The duration in seconds of this cookie. If unspecified, $cookie_time + * is used from config.php + * @param string $dir (optional) The directory value of this cookie (see php.net/setcookie) + * + * @see setcookie + * @return bool */ function pla_set_cookie( $name, $val, $expire=null, $dir=null ) { @@ -74,12 +465,10 @@ function pla_set_cookie( $name, $val, $expire=null, $dir=null ) } if( $dir == null ) { - global $_SERVER; $dir = dirname( $_SERVER['PHP_SELF'] ); } - if( setcookie( $name, $val, $expire, $dir ) ) { - global $_COOKIE; + if( @setcookie( $name, $val, $expire, $dir ) ) { $_COOKIE[ $name ] = $val; return true; } else { @@ -87,57 +476,229 @@ function pla_set_cookie( $name, $val, $expire=null, $dir=null ) } } -/* - * Responsible for removing a cookie after a user logs out. +/** + * Responsible for setting two cookies/session-vars to indicate that a user has logged in, + * one for the logged in DN and one for the logged in password. Cookies + * are stored unencrypted in the client's browser's cookie cache. Use caution! + * + * This function is only used if 'auth_type' is set to 'cookie' or 'session'. The values + * written have the name "pla_login_dn_X" and "pla_login_pass_X" where X is the + * ID of the server to which the user is attempting login. + * + * Note that as with all cookie/session operations this function must be called BEFORE + * any output is sent to the browser. + * + * On success, true is returned. On failure, false is returned. + * + * @param int $server_id The ID of the server to which the user is logged in. + * @param string $dn The DN with which the user has logged in. + * @param string $password The password of the user logged in. + * @param bool $anon_bind Indicates that this is an anonymous bind such that + * a password of "0" is stored. + * @return bool + * @see unset_login_dn */ -function unset_cookie_login_dn( $server_id ) +function set_login_dn( $server_id, $dn, $password, $anon_bind ) { - global $_SERVER; + global $servers; + if( ! check_server_id( $server_id ) ) return false; - $logged_in_dn = get_logged_in_dn( $server_id ); - $logged_in_pass = get_logged_in_pass( $server_id ); - $anon_bind = $logged_in_dn == 'anonymous' ? true : false; - - $expire = time()-3600; - if( $anon_bind ) { - $res1 = pla_set_cookie( "pla_login_dn_$server_id", 'anonymous', $expire ); - $res2 = pla_set_cookie( "pla_login_pass_$server_id", '0', $expire ); - } else { - $res1 = pla_set_cookie( "pla_login_dn_$server_id", $logged_in_dn, $expire ); - $res2 = pla_set_cookie( "pla_login_pass_$server_id", $logged_in_pass, $expire ); - } - - if( ! $res1 || ! $res2 ) + if( ! isset( $servers[ $server_id ][ 'auth_type' ] ) ) return false; - else - return true; + $auth_type = $servers[ $server_id ][ 'auth_type' ]; + + switch( $auth_type ) + { + case 'cookie': + $cookie_dn_name = "pla_login_dn_$server_id"; + $cookie_pass_name = "pla_login_pass_$server_id"; + if( $anon_bind ) { + // we set the cookie password to 0 for anonymous binds. + $dn = 'anonymous'; + $password = '0'; + } + $res1 = pla_set_cookie( $cookie_dn_name, pla_blowfish_encrypt( $dn ) ); + $res2 = pla_set_cookie( $cookie_pass_name, pla_blowfish_encrypt( $password ) ); + if( $res1 && $res2 ) + return true; + else + return false; + break; + case 'session': + $sess_var_dn_name = "pla_login_dn_$server_id"; + $sess_var_pass_name = "pla_login_pass_$server_id"; + if( $anon_bind ) { + $dn = 'anonymous'; + $password = '0'; + } + $_SESSION[ $sess_var_dn_name ] = $dn; + $_SESSION[ $sess_var_pass_name ] = $password; + return true; + break; + default: + global $lang; + pla_error( sprintf( $lang['unknown_auth_type'], htmlspecialchars( $auth_type ) ) ); + break; + } } -/* +/** + * Effectively logs a user out from a server. + * Removes the cookies/session-vars set by set_login_dn() + * after a user logs out using "auth_type" of "session" or "cookie". + * Returns true on success, false on failure. + * + * @param int $server_id The ID of the server from which the user is logging out. + * @return bool True on success, false on failure. + * @see set_login_dn + */ +function unset_login_dn( $server_id ) +{ + global $servers; + + if( ! check_server_id( $server_id ) ) + return false; + if( ! isset( $servers[ $server_id ][ 'auth_type' ] ) ) + return false; + $auth_type = $servers[ $server_id ][ 'auth_type' ]; + switch( $auth_type ) + { + case 'cookie': + $logged_in_dn = get_logged_in_dn( $server_id ); + if( ! $logged_in_dn ) + return false; + $logged_in_pass = get_logged_in_pass( $server_id ); + $anon_bind = $logged_in_dn == 'anonymous' ? true : false; + + // set cookie with expire time already passed to erase cookie from client + $expire = time()-3600; + $cookie_dn_name = "pla_login_dn_$server_id"; + $cookie_pass_name = "pla_login_pass_$server_id"; + if( $anon_bind ) { + $res1 = pla_set_cookie( $cookie_dn_name, 'anonymous', $expire ); + $res2 = pla_set_cookie( $cookie_pass_name, '0', $expire ); + } else { + $res1 = pla_set_cookie( $cookie_dn_name, pla_blowfish_encrypt( $logged_in_dn ), $expire ); + $res2 = pla_set_cookie( $cookie_pass_name, pla_blowfish_encrypt( $logged_in_pass ), $expire ); + } + + if( ! $res1 || ! $res2 ) + return false; + else + return true; + break; + case 'session': + // unset session variables + $session_var_dn_name = "pla_login_dn_$server_id"; + $session_var_pass_name = "pla_login_pass_$server_id"; + if( array_key_exists( $session_var_dn_name, $_SESSION ) ) + unset( $_SESSION[ $session_var_dn_name ] ); + if( array_key_exists( $session_var_pass_name, $_SESSION ) ) + unset( $_SESSION[ "$session_var_pass_name" ] ); + session_write_close(); + return true; + break; + default: + global $lang; + pla_error( sprintf( $lang['unknown_auth_type'], htmlspecialchars( $auth_type ) ) ); + break; + } +} + + +/** + * Get a customized file for a server + * We don't need any caching, because it's done by PHP + * + * @param int $server_id The ID of the server + * @param string $filename The requested filename + * + * @return string The customized filename, if exists, or the standard one + */ +function get_custom_file( $server_id, $filename ) +{ + global $servers; + + if( ! check_server_id( $server_id ) ) + return $filename; + + if( isset( $servers[ $server_id ]['custom_pages_prefix'] ) ) { + $custom = $servers[ $server_id ][ 'custom_pages_prefix' ]; + if( is_file( realpath( $custom . $filename ) ) ) + return ( $custom . $filename ); + } + + return $filename; +} + +/** + * Call a customized function + * + * @param int $server_id The ID of the server + * @param string $filename The requested function + * + * @return any The result of the called function + */ +function call_custom_function( $server_id, $function ) +{ + global $servers; + + if( ! check_server_id( $server_id ) ) + return $function; + + if( isset( $servers[$server_id]['custom_pages_prefix'] ) ) { + $custom = $servers[$server_id]['custom_pages_prefix']; + if( function_exists( $custom . $function ) ) + return call_user_func ( $custom . $function ); + } + return call_user_func( $function ); +} + +/** * Compares 2 DNs. If they are equivelant, returns 0, otherwise, - * returns their sorting order (similar to strcmp()). - * < 0 if dn1 is less than dn2 - * > 0 if dn1 is greater than dn2 + * returns their sorting order (similar to strcmp()): + * Returns < 0 if dn1 is less than dn2. + * Returns > 0 if dn1 is greater than dn2. + * + * The comparison is performed starting with the top-most element + * of the DN. Thus, the following list: + * + * ou=people,dc=example,dc=com + * cn=Admin,ou=People,dc=example,dc=com + * cn=Joe,ou=people,dc=example,dc=com + * dc=example,dc=com + * cn=Fred,ou=people,dc=example,dc=org + * cn=Dave,ou=people,dc=example,dc=org + * + * Will be sorted thus using usort( $list, "pla_compare_dns" ): + * + * dc=com + * dc=example,dc=com + * ou=people,dc=example,dc=com + * cn=Admin,ou=People,dc=example,dc=com + * cn=Joe,ou=people,dc=example,dc=com + * cn=Dave,ou=people,dc=example,dc=org + * cn=Fred,ou=people,dc=example,dc=org + * + * + * @param string $dn1 The first of two DNs to compare + * @param string $dn2 The second of two DNs to compare + * @return int */ function pla_compare_dns( $dn1, $dn2 ) { - $dn1_parts = pla_explode_dn( $dn1 ); - $dn2_parts = pla_explode_dn( $dn2 ); - assert( is_array( $dn1_parts ) ); - assert( is_array( $dn2_parts ) ); - // If they are obviously the same, return immediately if( 0 === strcasecmp( $dn1, $dn2 ) ) return 0; - // If they are obviously different, immediately - // do a string comparison rather than continuing - if( count( $dn1_parts ) != count( $dn2_parts ) ) - return strcasecmp( $dn1, $dn2 ); - - // Foreach of the "parts" of the DN - for( $i=0; $i count($dn2_parts) ) { + return 1; + } elseif( count( $dn2_parts ) > count( $dn1_parts ) ) { + return -1; + } else { + return 0; + } } /** - * Prunes off anything after the ";" in an attr name + * Prunes off anything after the ";" in an attr name. This is useful for + * attributes that may have ";binary" appended to their names. With + * real_attr_name(), you can more easily fetch these attributes' schema + * with their "real" attribute name. + * + * @param string $attr_name The name of the attribute to examine. + * @return string */ function real_attr_name( $attr_name ) { @@ -175,15 +749,24 @@ function real_attr_name( $attr_name ) return $attr_name; } -/* +/** * Returns true if the user has configured the specified - * server to enable mass deletion + * server to enable mass deletion. Mass deletion is enabled in config.php this: + * + * $enable_mass_delete = true; + * + * Notice that mass deletes are not enabled on a per-server basis, but this + * function checks that the sever is not in a read-only state as well. + * + * @param int $server_id The ID of the server of interest. + * @return bool */ function mass_delete_enabled( $server_id ) { global $enable_mass_delete; + if( check_server_id( $server_id ) && - pla_ldap_connect( $server_id ) && + ! pla_ldap_connection_is_error( pla_ldap_connect( $server_id ), false ) && have_auth_info( $server_id ) && ! is_server_read_only( $server_id ) && isset( $enable_mass_delete ) && @@ -193,9 +776,15 @@ function mass_delete_enabled( $server_id ) return false; } -/* +/** * Returns true if the user has configured PLA to show * helpful hints with the $show_hints setting. + * This is configured in config.php thus: + * + * $show_hints = true; + * + * + * @return bool */ function show_hints() { @@ -204,9 +793,25 @@ function show_hints() return true; } -/* +/** + * Determines if the user has enabled auto uidNumbers for the specified server ID. + * + * @param int $server_id The id of the server of interest. + * @return bool True if auto uidNumbers are enabled, false otherwise. + */ +function auto_uid_numbers_enabled( $server_id ) +{ + global $servers; + if( isset( $servers[$server_id]['enable_auto_uid_numbers'] ) && + true == $servers[$server_id]['enable_auto_uid_numbers'] ) + return true; + else + return false; +} + +/** * For hosts who have 'enable_auto_uid_numbers' set to true, this function will - * get the next available uidNumber using the host's preferred mechanism + * get the next available uidNumber using the host's preferred mechanism * (uidpool or search). The uidpool mechanism uses a user-configured entry in * the LDAP server to store the last used uidNumber. This mechanism simply fetches * and increments and returns that value. The search mechanism is more complicated @@ -217,6 +822,17 @@ function show_hints() * returned here has not been used in the mean time. Note that the two different * mechanisms may (will!) return different values as they use different algorithms * to arrive at their result. Do not be alarmed if (when!) this is the case. + * + * Also note that both algorithms are susceptible to a race condition. If two admins + * are adding users simultaneously, the users may get identical uidNumbers with this + * function. + * + * See config.php.example for more notes on the two auto uidNumber mechanisms. + * + * @param int $server_id The ID of the server of interest. + * @return int + * + * @todo eliminate race condition at create time by re-running this function. */ function get_next_uid_number( $server_id ) { @@ -224,6 +840,8 @@ function get_next_uid_number( $server_id ) // Some error checking if( ! check_server_id( $server_id ) ) return false; + if( ! auto_uid_numbers_enabled( $server_id ) ) + return false; $server_name = isset( $servers[ $server_id ]['name'] ) ? $servers[$server_id]['name'] : "Server $server_id"; @@ -257,9 +875,38 @@ function get_next_uid_number( $server_id ) } elseif( 0 == strcasecmp( $mechanism, 'search' ) ) { if( ! isset( $servers[ $server_id ][ 'auto_uid_number_search_base' ] ) ) pla_error( sprintf( $lang['specified_uidpool'] , $server_name ) ); + $base_dn = $servers[ $server_id ][ 'auto_uid_number_search_base' ]; $filter = "(uidNumber=*)"; - $results = pla_ldap_search( $server_id, $filter, $base_dn, array('uidNumber')); + + // Check see and use our alternate uid_dn and password if we have it. + if ( isset( $servers[ $server_id ][ 'auto_uid_number_search_dn' ] ) && + isset( $servers[ $server_id ][ 'auto_uid_number_search_dn_pass' ] ) ) { + $con = @ldap_connect( $servers[$server_id]['host'], $servers[$server_id]['port'] ); + @ldap_set_option( $con, LDAP_OPT_PROTOCOL_VERSION, 3 ); + @ldap_set_option( $con, LDAP_OPT_REFERRALS, 0); + + // Bind with the alternate ID. + $res = @ldap_bind( $con, + $servers[ $server_id ][ 'auto_uid_number_search_dn' ], + $servers[ $server_id ][ 'auto_uid_number_search_dn_pass' ] ); + if (! $res) pla_error( sprintf( $lang['auto_uid_invalid_credential'] , $server_name ) ); + $search = @ldap_search( $con, $base_dn, $filter, array('uidNumber'), 0, 0, 0, get_search_deref_setting() ); + if( ! $search ) pla_error( sprintf( $lang['bad_auto_uid_search_base'], $server_name ) ); + $search = @ldap_get_entries( $con, $search ); + $res = @ldap_unbind( $con ); + + $results = array(); + for( $i=0; $i<$search['count']; $i++ ) { + $entry = $search[$i]; + $dn['dn'] = $entry['dn']; + $dn['uidnumber'] = $entry['uidnumber'][0]; + $results[] = $dn; + } + + } else { + $results = pla_ldap_search( $server_id, $filter, $base_dn, array('uidNumber')); + } // lower-case all the inices so we can access them by name correctly foreach( $results as $dn => $attrs ) foreach( $attrs as $attr => $vals ) { @@ -295,8 +942,15 @@ function get_next_uid_number( $server_id ) } } -/* - * Used to determine if the specified attribute is indeed a jpegPhoto +/** + * Used to determine if the specified attribute is indeed a jpegPhoto. If the + * specified attribute is one that houses jpeg data, true is returned. Otherwise + * this function returns false. + * + * @param int $server_id The ID of the server hosuing the attribute of interest + * @param string $attr_name The name of the attribute to test. + * @return bool + * @see draw_jpeg_photos */ function is_jpeg_photo( $server_id, $attr_name ) { @@ -322,45 +976,202 @@ function is_jpeg_photo( $server_id, $attr_name ) return false; } -/* - * Given an attribute name and server id number, this function returns - * whether the attrbiute may contain binary data. +/** + * Given an attribute name and server ID number, this function returns + * whether the attrbiute contains boolean data. This is useful for + * developers who wish to display the contents of a boolean attribute + * with a drop-down. + * + * @param int $server_id The ID of the server of interest (required since + * this action requires a schema lookup on the server) + * @param string $attr_name The name of the attribute to test. + * @return bool + */ +function is_attr_boolean( $server_id, $attr_name ) +{ + $type = ( $schema_attr = get_schema_attribute( $server_id, $attr_name ) ) ? + $schema_attr->getType() : + null; + if( 0 == strcasecmp( 'boolean', $type ) || + 0 == strcasecmp( 'isCriticalSystemObject', $attr_name ) || + 0 == strcasecmp( 'showInAdvancedViewOnly', $attr_name ) ) + return true; + else + return false; +} + +/** + * Given an attribute name and server ID number, this function returns + * whether the attrbiute may contain binary data. This is useful for + * developers who wish to display the contents of an arbitrary attribute + * but don't want to dump binary data on the page. + * + * @param int $server_id The ID of the server of interest (required since + * this action requires a schema lookup on the server) + * @param string $attr_name The name of the attribute to test. + * @return bool + * + * @see is_jpeg_photo */ function is_attr_binary( $server_id, $attr_name ) { - @require_once realpath( 'schema_functions.php' ); + $attr_name = strtolower( $attr_name ); + /** Determining if an attribute is binary can be an expensive + operation. We cache the results for each attr name on each + server in the $attr_cache to speed up subsequent calls. + The $attr_cache looks like this: + Array + 0 => Array + 'objectclass' => false + 'cn' => false + 'usercertificate' => true + 1 => Array + 'jpegphoto' => true + 'cn' => false + */ - if( 0 == strcasecmp( substr( $attr_name, strlen( $attr_name ) - 7 ), ";binary" ) ) + static $attr_cache; + if( isset( $attr_cache[ $server_id ][ $attr_name ] ) ) + return $attr_cache[ $server_id ][ $attr_name ]; + + if( $attr_name == 'userpassword' ) { + $attr_cache[ $server_id ][ $attr_name ] = false; + return false; + } + + // Quick check: If the attr name ends in ";binary", then it's binary. + if( 0 == strcasecmp( substr( $attr_name, strlen( $attr_name ) - 7 ), ";binary" ) ) { + $attr_cache[ $server_id ][ $attr_name ] = true; return true; + } + // See what the server schema says about this attribute $schema_attr = get_schema_attribute( $server_id, $attr_name ); - if( ! $schema_attr ) - return false; + if( ! $schema_attr ) { + // Strangely, some attributeTypes may not show up in the server + // schema. This behavior has been observed in MS Active Directory. + $type = null; + $syntax = null; + } else { + $type = $schema_attr->getType(); + $syntax = $schema_attr->getSyntaxOID(); + } - $type = $schema_attr->getType(); - $syntax = $schema_attr->getSyntaxOID(); - - if( 0 == strcasecmp( substr( $attr_name, strlen( $attr_name ) - 7 ), ";binary" ) || - 0 == strcasecmp( $type, 'Certificate' ) || + if( 0 == strcasecmp( $type, 'Certificate' ) || 0 == strcasecmp( $type, 'Binary' ) || - 0 == strcasecmp( $attr_name, 'networkAddress' ) || - 0 == strcasecmp( $attr_name, 'userCertificate' ) || - 0 == strcasecmp( $attr_name, 'userSMIMECertificate' ) || + 0 == strcasecmp( $attr_name, 'usercertificate' ) || + 0 == strcasecmp( $attr_name, 'usersmimecertificate' ) || + 0 == strcasecmp( $attr_name, 'networkaddress' ) || + 0 == strcasecmp( $attr_name, 'objectGUID' ) || + 0 == strcasecmp( $attr_name, 'objectSID' ) || $syntax == '1.3.6.1.4.1.1466.115.121.1.10' || $syntax == '1.3.6.1.4.1.1466.115.121.1.28' || $syntax == '1.3.6.1.4.1.1466.115.121.1.5' || $syntax == '1.3.6.1.4.1.1466.115.121.1.8' || - $syntax == '1.3.6.1.4.1.1466.115.121.1.9' ) + $syntax == '1.3.6.1.4.1.1466.115.121.1.9' ) { + $attr_cache[ $server_id ][ $attr_name ] = true; return true; - else + } else { + $attr_cache[ $server_id ][ $attr_name ] = false; return false; + } } -/* +/** + * Returns true if the specified attribute is configured as read only + * in config.php with the $read_only_attrs array. + * Attributes are configured as read-only in config.php thus: + * + * $read_only_attrs = array( "objectClass", "givenName" ); + * + * + * @param string $attr The name of the attribute to test. + * @return bool + */ +function is_attr_read_only( $server_id, $attr ) +{ + global $read_only_attrs, $read_only_except_dn; + + $attr = trim( $attr ); + if( '' === $attr ) + return false; + if( ! isset( $read_only_attrs ) ) + return false; + if( ! is_array( $read_only_attrs) ) + return false; + + // Is the user excluded? + if (isset($read_only_except_dn) && userIsMember($server_id, get_logged_in_dn( $server_id ),$read_only_except_dn)) + return false; + + foreach( $read_only_attrs as $attr_name ) + if( 0 == strcasecmp( $attr, trim($attr_name) ) ) + return true; + return false; +} + +/** + * Returns true if the specified attribute is configured as hidden + * in config.php with the $hidden_attrs array or the $hidden_attrs_ro + * array. + * Attributes are configured as hidden in config.php thus: + * + * $hidden_attrs = array( "objectClass", "givenName" ); + * + * or + * + * $hidden_attrs_ro = array( "objectClass", "givenName", "shadowWarning", + * "shadowLastChange", "shadowMax", "shadowFlag", + * "shadowInactive", "shadowMin", "shadowExpire" ); + * + * + * @param string $attr The name of the attribute to test. + * @return bool + */ +function is_attr_hidden( $server_id, $attr ) +{ + global $hidden_attrs, $hidden_attrs_ro, $hidden_except_dn; + + $attr = trim( $attr ); + if( '' === $attr ) + return false; + if( ! isset( $hidden_attrs ) ) + return false; + if( ! is_array( $hidden_attrs) ) + return false; + if( ! isset( $hidden_attrs_ro ) ) + $hidden_attrs_ro = $hidden_attrs; + if( ! is_array( $hidden_attrs_ro) ) + $hidden_attrs_ro = $hidden_attrs; + + // Is the user excluded? + if (isset($hidden_except_dn) && userIsMember($server_id, get_logged_in_dn( $server_id ),$hidden_except_dn)) + return false; + + if( is_server_read_only( $server_id ) ) { + foreach( $hidden_attrs_ro as $attr_name ) + if( 0 == strcasecmp( $attr, trim($attr_name) ) ) + return true; + } else { + foreach( $hidden_attrs as $attr_name ) + if( 0 == strcasecmp( $attr, trim($attr_name) ) ) + return true; + } + return false; +} + +/** * Returns true if the specified server is configured to be displayed * in read only mode. If a user has logged in via anonymous bind, and * config.php specifies anonymous_bind_implies_read_only as true, then - * this also returns true. + * this also returns true. Servers can be configured read-only in + * config.php thus: + * + * $server[$i]['read_only'] = true; + * + * + * @param int $server_id The ID of the server of interest from the $servers array in config.php + * @return bool */ function is_server_read_only( $server_id ) { @@ -379,59 +1190,92 @@ function is_server_read_only( $server_id ) return false; } -/* +/** * Given a DN and server ID, this function reads the DN's objectClasses and * determines which icon best represents the entry. The results of this query - * are cached in a session variable so it is not run *every* time the tree + * are cached in a session variable so it is not run every time the tree * browser changes, just when exposing new DNs that were not displayed * previously. That means we can afford a little bit of inefficiency here * in favor of coolness. :) + * + * This function returns a string like "country.png". All icon files are assumed + * to be contained in the /images/ directory of phpLDAPadmin. + * + * Developers are encouraged to add new icons to the images directory and modify + * this function as needed to suit their types of LDAP entries. If the modifications + * are general to an LDAP audience, the phpLDAPadmin team will gladly accept them + * as a patch. + * + * @param int $server_id The ID of the LDAP server housing the DN of interest. + * @param string $dn The DN of the entry whose icon you wish to fetch. + * + * @return string */ function get_icon( $server_id, $dn ) { // fetch and lowercase all the objectClasses in an array $object_classes = get_object_attr( $server_id, $dn, 'objectClass', true ); - if( $object_classes === null || $object_classes === false) - return 'object.png'; + if( $object_classes === null || $object_classes === false || ! is_array( $object_classes ) ) + $object_classes = array(); foreach( $object_classes as $i => $class ) $object_classes[$i] = strtolower( $class ); $rdn = get_rdn( $dn ); + $rdn_parts = explode( '=', $rdn, 2 ); + $rdn_value = isset( $rdn_parts[0] ) ? $rdn_parts[0] : null; + $rdn_attr = isset( $rdn_parts[1] ) ? $rdn_parts[1] : null; + unset( $rdn_parts ); - // Is it a samba NT machine (is sambaAccount and ends with '$') + // return icon filename based upon objectClass value if( in_array( 'sambaaccount', $object_classes ) && '$' == $rdn{ strlen($rdn) - 1 } ) return 'nt_machine.png'; - // Is it a samba user account? if( in_array( 'sambaaccount', $object_classes ) ) return 'nt_user.png'; - // Is it a person or some type of account/user? elseif( in_array( 'person', $object_classes ) || in_array( 'organizationalperson', $object_classes ) || in_array( 'inetorgperson', $object_classes ) || in_array( 'account', $object_classes ) || in_array( 'posixaccount', $object_classes ) ) return 'user.png'; - // Is it an organization? - elseif ( in_array( 'organization', $object_classes ) ) + elseif( in_array( 'organization', $object_classes ) ) return 'o.png'; - // Is it an organizational Unit? elseif( in_array( 'organizationalunit', $object_classes ) ) return 'ou.png'; - // Is it a domain controler (dc) + elseif( in_array( 'organizationalrole', $object_classes ) ) + return 'uid.png'; elseif( in_array( 'dcobject', $object_classes ) || - in_array( 'domainrelatedobject', $object_classes ) ) + in_array( 'domainrelatedobject', $object_classes ) || + in_array( 'domain', $object_classes ) || + in_array( 'builtindomain', $object_classes )) return 'dc.png'; - elseif( in_array( 'country', $object_classes ) ) - return 'country.png'; + elseif( in_array( 'alias', $object_classes ) ) + return 'go.png'; + elseif( in_array( 'room', $object_classes ) ) + return 'door.png'; + elseif( in_array( 'device', $object_classes ) ) + return 'device.png'; + elseif( in_array( 'document', $object_classes ) ) + return 'document.png'; + elseif( in_array( 'country', $object_classes ) ) { + $tmp = pla_explode_dn( $dn ); + $cval = explode( '=', $tmp[0], 2 ); + $cval = isset( $cval[1] ) ? $cval[1] : false; + if( $cval && false === strpos( $cval, ".." ) && + file_exists( realpath( "./images/countries/$cval.png" ) ) ) + return "countries/$cval.png"; + else + return 'country.png'; + } elseif( in_array( 'jammvirtualdomain', $object_classes ) ) return 'mail.png'; elseif( in_array( 'locality', $object_classes ) ) return 'locality.png'; elseif( in_array( 'posixgroup', $object_classes ) || - in_array( 'groupofnames', $object_classes ) ) + in_array( 'groupofnames', $object_classes ) || + in_array( 'group', $object_classes ) ) return 'ou.png'; elseif( in_array( 'applicationprocess', $object_classes ) ) return 'process.png'; @@ -439,22 +1283,78 @@ function get_icon( $server_id, $dn ) return 'uniquegroup.png'; elseif( in_array( 'iphost', $object_classes ) ) return 'host.png'; + elseif( in_array( 'nlsproductcontainer', $object_classes ) ) + return 'n.png'; + elseif( in_array( 'ndspkikeymaterial', $object_classes ) ) + return 'lock.png'; + elseif( in_array( 'server', $object_classes ) ) + return 'server-small.png'; + elseif( in_array( 'volume', $object_classes ) ) + return 'hard-drive.png'; + elseif( in_array( 'ndscatcatalog', $object_classes ) ) + return 'catalog.png'; + elseif( in_array( 'resource', $object_classes ) ) + return 'n.png'; + elseif( in_array( 'ldapgroup', $object_classes ) ) + return 'ldap-server.png'; + elseif( in_array( 'ldapserver', $object_classes ) ) + return 'ldap-server.png'; + elseif( in_array( 'nisserver', $object_classes ) ) + return 'ldap-server.png'; + elseif( in_array( 'rbscollection', $object_classes ) ) + return 'ou.png'; + elseif( in_array( 'dfsconfiguration', $object_classes ) ) + return 'nt_machine.png'; + elseif( in_array( 'applicationsettings', $object_classes ) ) + return 'server-settings.png'; + elseif( in_array( 'aspenalias', $object_classes ) ) + return 'mail.png'; + elseif( in_array( 'container', $object_classes ) ) + return 'folder.png'; + elseif( in_array( 'ipnetwork', $object_classes ) ) + return 'network.png'; + elseif( in_array( 'samserver', $object_classes ) ) + return 'server-small.png'; + elseif( in_array( 'lostandfound', $object_classes ) ) + return 'find.png'; + elseif( in_array( 'infrastructureupdate', $object_classes ) ) + return 'server-small.png'; + elseif( in_array( 'filelinktracking', $object_classes ) ) + return 'files.png'; + elseif( in_array( 'automountmap', $object_classes ) || + in_array( 'automount', $object_classes ) ) + return 'hard-drive.png'; + elseif( 0 === strpos( $rdn_value, "ipsec" ) || + 0 == strcasecmp( $rdn_value, "IP Security" ) || + 0 == strcasecmp( $rdn_value, "MSRADIUSPRIVKEY Secret" ) || + 0 === strpos( $rdn_value, "BCKUPKEY_" ) ) + return 'lock.png'; + elseif( 0 == strcasecmp( $rdn_value, "MicrosoftDNS" ) ) + return 'dc.png'; // Oh well, I don't know what it is. Use a generic icon. else return 'object.png'; } -/* +/** * Does the same thing as get_icon(), but it tries to fetch the icon name from the * tree_icons session variable first. If not found, resorts to get_icon() and stores * the icon nmae in the tree_icons session before returing the icon. + * + * @param int $server_id The ID of the server housing the DN of interest. + * @param string $dn The DN of the entry of interest. + * + * @return string + * + * @see get_icon */ function get_icon_use_cache( $server_id, $dn ) { - @session_start(); - if( session_is_registered( 'tree_icons' ) ) { - global $_SESSION; - if( isset( $_SESSION['tree_icons'][ $server_id ][ $dn ] ) ) { + initialize_session_tree(); + if( array_key_exists( 'tree_icons', $_SESSION ) ) { + if( array_key_exists( $server_id, $_SESSION['tree_icons'] ) && + array_key_exists( $dn, $_SESSION['tree_icons'][$server_id] ) ) + { return $_SESSION['tree_icons'][ $server_id ][ $dn ]; } else { $icon = get_icon( $server_id, $dn ); @@ -464,22 +1364,35 @@ function get_icon_use_cache( $server_id, $dn ) } } -/* +/** * Given a server_id, returns whether or not we have enough information * to authenticate against the server. For example, if the user specifies - * 'cookie' in the config for that server, it checks the $_COOKIE array to - * see if the cookie username and password is set for the server. + * auth_type of 'cookie' in the config for that server, it checks the $_COOKIE array to + * see if the cookie username and password is set for the server. If the auth_type + * is 'session', the $_SESSION array is checked. + * + * There are three cases for this function depending on the auth_type configured for + * the specified server. If the auth_type is form or http, then get_logged_in_dn() is + * called to verify that the user has logged in. If the auth_type is config, then the + * $servers array in config.php is checked to ensure that the user has specified + * login information. In any case, if phpLDAPadmin has enough information to login + * to the server, true is returned. Otherwise false is returned. + * + * @param int $server_id + * @return bool + * @see get_logged_in_dn */ function have_auth_info( $server_id ) { global $servers; - if( ! is_numeric( $server_id ) || ! isset( $servers[$server_id] ) ) + if( ! check_server_id( $server_id ) ) return false; $server = $servers[$server_id]; - if( isset( $server['auth_type'] ) && $server['auth_type'] == 'form' ) { + // For session or cookie auth_types, we check the session or cookie to see if a user has logged in. + if( isset( $server['auth_type'] ) && ( in_array( $server['auth_type'], array( 'session', 'cookie' ) ) ) ) { // we don't look at get_logged_in_pass() cause it may be null for anonymous binds // get_logged_in_dn() will never return null if someone is really logged in. if( get_logged_in_dn( $server_id ) ) @@ -492,95 +1405,228 @@ function have_auth_info( $server_id ) elseif( ! isset( $server['auth_type'] ) || $server['auth_type'] == 'config' ) { return true; } - else - { + else { global $lang; - pla_error( sprintf( $lang['error_auth_type_config'], htmlspecialchars($server['auth_type'])) ); + pla_error( sprintf( $lang['error_auth_type_config'], + htmlspecialchars( $server[ 'auth_type' ] ) ) ); } } -/* - * Returns the password of the currently logged in DN (auth_type form only) +/** + * Fetches the password of the currently logged in user (for auth_types "form" and "http" only) * or false if the current login is anonymous. + * + * @param int $server_id The ID of the server of interest. + * + * @return string + * + * @see have_auth_info + * @see get_logged_in_dn */ function get_logged_in_pass( $server_id ) { + global $servers; if( ! is_numeric( $server_id ) ) return false; - $cookie_name = 'pla_login_pass_' . $server_id; - global $_COOKIE; - $pass = isset( $_COOKIE[ $cookie_name ] ) ? $_COOKIE[ $cookie_name ] : false; - - if( $pass == '0' ) - return null; - else - return $pass; + if( ! isset( $servers[ $server_id ][ 'auth_type' ] ) ) + return false; + $auth_type = $servers[ $server_id ][ 'auth_type' ]; + switch( $auth_type ) { + case 'cookie': + $cookie_name = 'pla_login_pass_' . $server_id; + $pass = isset( $_COOKIE[ $cookie_name ] ) ? $_COOKIE[ $cookie_name ] : false; + if( $pass == '0' ) + return null; + else + return pla_blowfish_decrypt( $pass ); + break; + case 'session': + $session_var_name = 'pla_login_pass_' . $server_id; + $pass = isset( $_SESSION[ $session_var_name ] ) ? $_SESSION[ $session_var_name ] : false; + if( $pass == '0' ) + return null; + else + return $pass; + break; + case 'config': + if( isset( $servers[ $server_id ][ 'login_pass' ] ) ) + return ( $servers[ $server_id ][ 'login_pass' ] ); + return false; + break; + default: + global $lang; + pla_error( sprintf( $lang['unknown_auth_type'], htmlspecialchars( $auth_type ) ) ); + } } -/* +/** * Returns the DN who is logged in currently to the given server, which may - * either be a DN or the string 'anonymous'. + * either be a DN or the string 'anonymous'. This applies only for auth_types + * "form" and "http". + * + * One place where this function is used is the tree viewer: + * After a user logs in, the text "Logged in as: " is displayed under the server + * name. This information is retrieved from this function. + * + * @param int $server_id The ID of the server of interest. + * + * @return string + * + * @see have_auth_info + * @see get_logged_in_pass */ function get_logged_in_dn( $server_id ) { + global $servers; if( ! is_numeric( $server_id ) ) return false; - $cookie_name = 'pla_login_dn_' . $server_id; - global $_COOKIE; - if( isset( $_COOKIE[ $cookie_name ] ) ) { - $dn = $_COOKIE[ $cookie_name ]; - } else { + if( ! isset( $servers[ $server_id ][ 'auth_type' ] ) ) return false; + $auth_type = $servers[ $server_id ][ 'auth_type' ]; + switch( $auth_type ) { + case 'cookie': + $cookie_name = 'pla_login_dn_' . $server_id; + if( isset( $_COOKIE[ $cookie_name ] ) ) { + $dn = $_COOKIE[ $cookie_name ]; + } else { + return false; + } + return pla_blowfish_decrypt( $dn ); + break; + case 'session': + $session_var_name = 'pla_login_dn_' . $server_id; + if( isset( $_SESSION[ $session_var_name ] ) ) { + $dn = $_SESSION[ $session_var_name ]; + return $dn; + } else { + return false; + } + break; + case 'config': + if( isset( $servers[ $server_id ][ 'login_dn' ] ) ) + return ( $servers[ $server_id ][ 'login_dn' ] ); + return false; + break; + default: + global $lang; + pla_error( sprintf( $lang['unknown_auth_type'], htmlspecialchars( $auth_type ) ) ); } - - return $dn; } -/* - * Specify a $server_id (0,1,2...) based on the order it appears in config.php. - * The first is 0, the second is 1, etc. You rarely will need to consult - * config.php since those values are usually generated dynamically in hrefs. +/** + * Appends a servers base to a "sub" dn or returns the base. + * If $get_base is true, return at least the base, otherwise null. */ -function pla_ldap_connect( $server_id ) +function expand_dn_with_base( $server_id, $sub_dn, $conn = null, $get_base = true ) { + global $servers; + if( ! check_server_id( $server_id ) ) return false; - if( ! have_auth_info( $server_id ) ) - return false; + $empty_str = ( is_null($sub_dn) || ( ( $len = strlen( trim( $sub_dn ) ) ) == 0 ) ); - global $servers; + if ( $empty_str ) { + // If we have no string and want not base + if ( ! $get_base ) + return null; + } elseif ( $sub_dn[$len - 1] != ',' ) + // If we have a string which doesn't need a base + return $sub_dn; + + if( ( $empty_str && $get_base ) || ! $empty_str ) + { + if( isset($servers[$server_id]['base']) ) { + $base = $servers[$server_id]['base']; + if ( strlen( trim( $base ) ) == 0 ) + $base = try_to_get_root_dn( $server_id, $conn ); + } else { + $base = try_to_get_root_dn( $server_id, $conn ); + } + + if ( $base ) + return ( ! $empty_str ) ? $sub_dn . $base : $base; + } + return null; +} + +/** + * Logs into the specified server using the auth_type configured for that server using + * ldap_connect() and ldap_bind() from the PHP LDAP API. + * If anonymous is true bind information (user / pass) is ignored (= anonymous). + * If anonymous is null a new bind is done (i.e. user changed). + * + * @param int $server_id The ID of the server of interest. + * @param bool $anonymous Set to override server config + * @return resource The LDAP connection resource or the LDAP errorcode + * + * @see get_logged_in_dn + * @see get_logged_in_pass + * @see have_auth_info + * @see check_server_id + */ +function pla_ldap_connect( $server_id, $anonymous = false, $use_cache = true) +{ + //echo "pla_ldap_connect( $server_id, $anonymous, $use_cache )
\n"; + if( ! check_server_id( $server_id ) ) + return -1; + + if( ! $anonymous && ! have_auth_info( $server_id ) ) + return -2; + + global $servers, $lang; // cache the connection, so if we are called multiple // times, we don't have to reauthenticate with the LDAP server - static $conns; - if( isset( $conns[$server_id] ) && $conns[$server_id] ) - return $conns[$server_id]; - $host = $servers[$server_id]['host']; - $port = $servers[$server_id]['port']; - if( ! $port ) $port = 389; + // We can reuse connections for multiple binds if we don't ldap_unbind + if( $use_cache && isset( $conns[ $server_id ] ) ) { + $conn = $conns[ $server_id ][ 'conn' ]; + $status = $conns[ $server_id ][ 'stat' ]; - $conn = @ldap_connect( $host, $port ); + // Status tells us, if we can use the same bind + if( !is_null($status) && $status == $anonymous ) + return $conn; + } else { + $host = $servers[$server_id]['host']; - if( ! $conn ) return false; + $port = isset( $servers[$server_id]['port'] ) ? $servers[ $server_id ][ 'port' ] : false; - // go with LDAP version 3 if possible (needed for renaming and Novell schema fetching) - @ldap_set_option( $conn, LDAP_OPT_PROTOCOL_VERSION, 3 ); + if( $port ) + $conn = @ldap_connect( $host, $port ); + else + $conn = @ldap_connect( $host ); - // try to fire up TLS is specified in the config - if( $servers[ $server_id ][ 'tls' ] == true ) { - global $lang; - function_exists( 'ldap_start_tls' ) or pla_error( $lang['php_install_not_supports_tls'] ); - @ldap_start_tls( $conn ) or pla_error( $lang['could_not_start_tls']); + $conn or pla_error( sprintf( $lang['could_not_connect_to_host_on_port'], htmlspecialchars( $host ), htmlspecialchars( $port ) ) ); + + // go with LDAP version 3 if possible (needed for renaming and Novell schema fetching) + @ldap_set_option( $conn, LDAP_OPT_PROTOCOL_VERSION, 3 ); + // Disabling this makes it possible to browse the tree for Active Directory, and seems + // to not affect other LDAP servers (tested with OpenLDAP) as phpLDAPadmin explicitly + // specifies deref behavior for each ldap_search operation. + @ldap_set_option( $conn, LDAP_OPT_REFERRALS, 0); + + // try to fire up TLS is specified in the config + if( tls_enabled( $server_id ) ) { + function_exists( 'ldap_start_tls' ) or pla_error( $lang['php_install_not_supports_tls'] ); + @ldap_start_tls( $conn ) or pla_error( $lang['could_not_start_tls']); + } + + // store the cached connection resource + $conns[$server_id]['conn'] = $conn; + $conns[$server_id]['stat'] = null; } - // grab the auth info based on the auth_type for this server - if( $servers[ $server_id ][ 'auth_type' ] == 'config' ) { + if( $anonymous == true ) { + $login_dn = null; + $login_pass = null; + } // grab the auth info based on the auth_type for this server + elseif( $servers[ $server_id ][ 'auth_type' ] == 'config' ) { $login_dn = $servers[$server_id]['login_dn']; $login_pass = $servers[$server_id]['login_pass']; - } elseif( $servers[ $server_id ][ 'auth_type' ] == 'form' ) { + $login_dn = expand_dn_with_base( $server_id, $login_dn, $conn, false ); + } else { $login_dn = get_logged_in_dn( $server_id ); $login_pass = get_logged_in_pass( $server_id ); @@ -589,34 +1635,106 @@ function pla_ldap_connect( $server_id ) $login_dn = null; $login_pass = null; } - } else { - global $lang; - pla_error( sprintf( $lang['auth_type_not_valid'], - htmlspecialchars( $servers[ $server_id ][ 'auth_type' ] ))); } $res = @ldap_bind( $conn, $login_dn, $login_pass ); - if( ! $res ) return false; + if( ! $res ) + return ldap_errno( $conn ); - // store the cached connection resource - $conns[$server_id] = $conn; + // store the bind status + $conns[$server_id]['stat'] = $anonymous; return $conn; } -/* - * Returns an array listing the DNs contained by the specified $dn +/** + * Convenient function to handle pla_ldap_connect results + * @see pla_ldap_connect + * + * @param resource $ds The pla_ldap_connect result + * @param bool $process_error Defines, if you want do run pla_error + * @return Returns false if the connection ($ds) is ok, or true otherwise. */ -function get_container_contents( $server_id, $dn, $size_limit=0 ) +function pla_ldap_connection_is_error( $ds, $process_error = true ) { - $con = pla_ldap_connect( $server_id ); - if( ! $con ) return false; + if ( ! $process_error ) + return ( ! is_resource( $ds ) ); + else { + if ( ! is_resource( $ds ) ) { + global $lang; - $search = @ldap_list( $con, $dn, 'objectClass=*', array( 'dn' ), 1, $size_limit ); + if( is_numeric( $ds ) ) { + switch( $ds ) { + case -1: pla_error( $lang['bad_server_id'] ); break; + case -2: pla_error( $lang['not_enough_login_info'] ); break; + default: pla_error( $lang['ferror_error'] ); break; + } + return true; + } + + switch( $ds ) { + case 0x31: + pla_error( $lang['bad_user_name_or_password'] ); + break; + case 0x32: + pla_error( $lang['insufficient_access_rights'] ); + break; + case 0x5b: + pla_error( $lang['could_not_connect'] ); + break; + default: + pla_error( $lang['could_not_bind'], ldap_err2str( $ds ), $ds ); + break; + } + } + return false; + } +} + +/** + * Gets a list of child entries for an entry. Given a DN, this function fetches the list of DNs of + * child entries one level beneath the parent. For example, for the following tree: + * + * + * dc=example,dc=com + * ou=People + * cn=Dave + * cn=Fred + * cn=Joe + * ou=More People + * cn=Mark + * cn=Bob + * + * + * Calling get_container_contents( $server_id, "ou=people,dc=example,dc=com" ) + * would return the following list: + * + * + * cn=Dave + * cn=Fred + * cn=Joe + * ou=More People + * + * + * @param int $server_id The ID of the server housing the entry of interest + * @param string $dn The DN of the entry whose children to return. + * @param int $size_limit (optional) The maximum number of entries to return. + * If unspecified, no limit is applied to the number of entries in the returned. + * @param string $filter (optional) An LDAP filter to apply when fetching children, example: "(objectClass=inetOrgPerson)" + * @return array An array of DN strings listing the immediate children of the specified entry. + */ +function get_container_contents( $server_id, $dn, $size_limit=0, $filter='(objectClass=*)', $deref=LDAP_DEREF_ALWAYS ) +{ + $conn = pla_ldap_connect( $server_id ); + if( pla_ldap_connection_is_error( $conn, false ) ) + return false; + +// echo "get_container_contents( $server_id, $dn, $size_limit, $filter, $deref )\n"; + $search = @ldap_list( $conn, $dn, $filter, array( 'dn' ), 1, $size_limit, 0, $deref ); if( ! $search ) return array(); - $search = ldap_get_entries( $con, $search ); + $search = ldap_get_entries( $conn, $search ); $return = array(); for( $i=0; $i<$search['count']; $i++ ) { @@ -628,10 +1746,19 @@ function get_container_contents( $server_id, $dn, $size_limit=0 ) return $return; } -/* +/** * Builds the initial tree that is stored in the session variable 'tree'. * Simply returns an array with an entry for each active server in - * config.php + * config.php. The structure of the returned array is simple, and looks like + * this: + * + * Array ( + * 0 => Array ( ) + * 1 => Array ( ) + * ) + * + * This function is not meant as a user callable function, but rather a convenient, + * automated method for setting up the initial structure for the tree viewer. */ function build_initial_tree() { @@ -648,8 +1775,25 @@ function build_initial_tree() return $tree; } -/* - * Builds the initial array that stores the icon-lookup for each DN in the tree browser +/** + * Builds the initial array that stores the icon-lookup for each server's DN in the tree browser. The returned + * array is then stored in the current session. The structure of the returned array is simple, and looks like + * this: + * + * Array + * ( + * [0] => Array + * ( + * [dc=example,dc=com] => "dcobject.png" + * ) + * [1] => Array + ( + * [o=Corporation] => "o.png" + * ) + * ) + * + * This function is not meant as a user-callable function, but rather a convenient, automated method for + * setting up the initial data structure for the tree viewer's icon cache. */ function build_initial_tree_icons() { @@ -667,15 +1811,71 @@ function build_initial_tree_icons() return $tree_icons; } -function get_entry_system_attrs( $server_id, $dn ) +/* + * Checks and fixes an initial session's tree cache if needed. + * + * This function is not meant as a user-callable function, but rather a convenient, + * automated method for checking the initial data structure of the session. + */ +function initialize_session_tree() +{ + // From the PHP manual: If you use $_SESSION don't use + // session_register(), session_is_registered() or session_unregister()! + if( ! array_key_exists( 'tree', $_SESSION ) ) + $_SESSION['tree'] = build_initial_tree(); + if( ! array_key_exists( 'tree_icons', $_SESSION ) ) + $_SESSION['tree_icons'] = build_initial_tree_icons(); + + // Make sure that the tree index is indeed well formed. + if( ! is_array( $_SESSION['tree'] ) ) + $_SESSION['tree'] = build_initial_tree(); + if( ! is_array( $_SESSION['tree_icons'] ) ) + $_SESSION['tree_icons'] = build_initial_tree_icons(); + +} + +/** + * Gets the operational attributes for an entry. Given a DN, this function fetches that entry's + * operational (ie, system or internal) attributes. These attributes include "createTimeStamp", + * "creatorsName", and any other attribute that the LDAP server sets automatically. The returned + * associative array is of this form: + * + * Array + * ( + * [creatorsName] => Array + * ( + * [0] => "cn=Admin,dc=example,dc=com" + * ) + * [createTimeStamp]=> Array + * ( + * [0] => "10401040130" + * ) + * [hasSubordinates] => Array + * ( + * [0] => "FALSE" + * ) + * ) + * + * + * @param int $server_id the ID of the server of interest. + * @param string $dn The DN of the entry whose interal attributes are desired. + * @param int $deref For aliases and referrals, this parameter specifies whether to + * follow references to the referenced DN or to fetch the attributes for + * the referencing DN. See http://php.net/ldap_search for the 4 valid + * options. + * @return array An associative array whose keys are attribute names and whose values + * are arrays of values for the aforementioned attribute. + */ +function get_entry_system_attrs( $server_id, $dn, $deref=LDAP_DEREF_NEVER ) { $conn = pla_ldap_connect( $server_id ); - if( ! $conn ) return false; + if( pla_ldap_connection_is_error( $conn, false ) ) + return false; $attrs = array( 'creatorsname', 'createtimestamp', 'modifiersname', 'structuralObjectClass', 'entryUUID', 'modifytimestamp', 'subschemaSubentry', 'hasSubordinates', '+' ); - $search = @ldap_read( $conn, $dn, '(objectClass=*)', $attrs, 0, 0, 0, LDAP_DEREF_ALWAYS ); + $search = @ldap_read( $conn, $dn, '(objectClass=*)', $attrs, 0, 0, 0, $deref ); if( ! $search ) return false; $entry = ldap_first_entry( $conn, $search ); @@ -697,31 +1897,59 @@ function get_entry_system_attrs( $server_id, $dn ) return $return_attrs; } -/* - * Returns the attribute/value pairs for the given $dn on the given - * $server_id. If the attribute is single valued, it will return - * a single value for that attribute. Otherwise, it will return an - * array of values for that attribute. Here's a sample return value: +/** + * Gets the attributes/values of an entry. Returns an associative array whose + * keys are attribute value names and whose values are arrays of values for + * said attribute. Optionally, callers may specify true for the parameter + * $lower_case_attr_names to force all keys in the associate array (attribute + * names) to be lower case. + * + * Sample return value of get_object_attrs( 0, "cn=Bob,ou=pepole,dc=example,dc=com" ) * + * * Array - * ( - * [objectclass] => Array + * ( + * [objectClass] => Array * ( - * [0] => organizationalRole - * [1] => krb5principal - * [2] => kerberosSecurityObject + * [0] => person + * [1] => top * ) - * [cn] => Manager - * [krbname] => phpldap@EXAMPLE.COM - * [dn] => cn=Manager,dc=example,dc=com - * ) + * [cn] => Array + * ( + * [0] => Bob + * ) + * [sn] => Array + * ( + * [0] => Jones + * ) + * [dn] => Array + * ( + * [0] => cn=Bob,ou=pepole,dc=example,dc=com + * ) + * ) + * + * + * @param int $server_id The ID of the server of interest + * @param string $dn The distinguished name (DN) of the entry whose attributes/values to fetch. + * @param bool $lower_case_attr_names (optional) If true, all keys of the returned associative + * array will be lower case. Otherwise, they will be cased as the LDAP server returns + * them. + * @param int $deref For aliases and referrals, this parameter specifies whether to + * follow references to the referenced DN or to fetch the attributes for + * the referencing DN. See http://php.net/ldap_search for the 4 valid + * options. + * @return array + * @see get_entry_system_attrs + * @see get_object_attr */ -function get_object_attrs( $server_id, $dn, $lower_case_attr_names = false ) +function get_object_attrs( $server_id, $dn, $lower_case_attr_names=false, $deref=LDAP_DEREF_NEVER ) { + //echo "get_object_attrs( $server_id, $dn, $lower_case_attr_names )
"; $conn = pla_ldap_connect( $server_id ); - if( ! $conn ) return false; + if( pla_ldap_connection_is_error( $conn, false ) ) + return false; - $search = @ldap_read( $conn, $dn, '(objectClass=*)', array( ), 0, 0, 0, LDAP_DEREF_ALWAYS ); + $search = @ldap_read( $conn, $dn, '(objectClass=*)', array( ), 0, 0, 0, $deref ); if( ! $search ) return false; @@ -744,9 +1972,11 @@ function get_object_attrs( $server_id, $dn, $lower_case_attr_names = false ) unset( $attrs[$i] ); $return_array = array(); - foreach( $attrs as $attr => $vals ) { + foreach( $attrs as $attr => $vals ) { if( $lower_case_attr_names ) $attr = strtolower( $attr ); + if( is_attr_binary( $server_id, $attr ) ) + $vals = ldap_get_values_len( $conn, $entry, $attr ); unset( $vals['count'] ); $return_array[ $attr ] = $vals; } @@ -756,7 +1986,7 @@ function get_object_attrs( $server_id, $dn, $lower_case_attr_names = false ) return $return_array; } -/* +/** * Returns true if the passed string $temp contains all printable * ASCII characters. Otherwise (like if it contains binary data), * returns false. @@ -772,32 +2002,121 @@ function is_printable_str($temp) { return true; } -/* - * Much like get_object_attrs(), but only returns the entry for - * one attribute of an object. Again, if the attribute contains - * multiple values, returns an array of values. Otherwise, it - * returns the single attribute value. - * TODO: Don't call get_object_attrs() and filter. Do the actual ldap_read() ourselves (for efficiencey) +/** + * Much like get_object_attrs(), but only returns the values for + * one attribute of an object. Example calls: + * + * + * print_r( get_object_attr( 0, "cn=Bob,ou=people,dc=example,dc=com", "sn" ) ); + * // prints: + * // Array + * // ( + * // [0] => "Smith" + * // ) + * + * print_r( get_object_attr( 0, "cn=Bob,ou=people,dc=example,dc=com", "objectClass" ) ); + * // prints: + * // Array + * // ( + * // [0] => "top" + * // [1] => "person" + * // ) + * + * + * @param int $server_id The ID of the server of interest + * @param string $dn The distinguished name (DN) of the entry whose attributes/values to fetch. + * @param string $attr The attribute whose value(s) to return (ie, "objectClass", "cn", "userPassword") + * @param bool $lower_case_attr_names (optional) If true, all keys of the returned associative + * array will be lower case. Otherwise, they will be cased as the LDAP server returns + * them. + * @param int $deref For aliases and referrals, this parameter specifies whether to + * follow references to the referenced DN or to fetch the attributes for + * the referencing DN. See http://php.net/ldap_search for the 4 valid + * options. + * @see get_object_attrs */ -function get_object_attr( $server_id, $dn, $attr ) +function get_object_attr( $server_id, $dn, $attr, $deref=LDAP_DEREF_NEVER ) { + /** $attr = strtolower( $attr ); $attrs = get_object_attrs( $server_id, $dn, true ); if( isset( $attrs[$attr] ) ) return $attrs[$attr]; else return false; + */ + + //echo "get_object_attr( $server_id, $dn, $attr )
"; + $conn = pla_ldap_connect( $server_id ); + if( pla_ldap_connection_is_error( $conn, false ) ) + return false; + + $search = @ldap_read( $conn, $dn, '(objectClass=*)', array( $attr ), 0, 0, 0, $deref ); + + if( ! $search ) + return false; + + $entry = ldap_first_entry( $conn, $search ); + + if( ! $entry ) + return false; + + $attrs = ldap_get_attributes( $conn, $entry ); + + if( ! $attrs || $attrs['count'] == 0 ) + return false; + + if( is_attr_binary( $server_id, $attr ) ) + $vals = ldap_get_values_len( $conn, $entry, $attr ); + else + $vals = ldap_get_values( $conn, $entry, $attr ); + unset( $vals['count'] ); + return $vals; } -/* - * A do-it-all ldap_search function. You can even specify the search scope. Other than - * that, it's pretty much the same as the PHP ldap_search() call, except it returns - * an array of results, rather than an LDAP result resource. +/** + * A handy ldap searching function very similar to PHP's ldap_search() with the + * following exceptions: Callers may specify a search scope and the return value + * is an array containing the search results rather than an LDAP result resource. * - * NOTE: This function will use a lot of memory on large searches. You should consider - * using the PHP LDAP API directly for large searches (ldap_next_entry(), ldap_next_attribute(), etc) + * Example usage: + * + * $samba_users = ldap_search( 0, "(&(objectClass=sambaAccount)(objectClass=posixAccount))", + * "ou=People,dc=example,dc=com", array( "uid", "homeDirectory" ) ); + * print_r( $samba_users ); + * // prints (for example): + * // Array + * // ( + * // [uid=jsmith,ou=People,dc=example,dc=com] => Array + * // ( + * // [dn] => "uid=jsmith,ou=People,dc=example,dc=com" + * // [uid] => "jsmith" + * // [homeDirectory] => "\\server\jsmith" + * // ) + * // [uid=byoung,ou=People,dc=example,dc=com] => Array + * // ( + * // [dn] => "uid=byoung,ou=Samba,ou=People,dc=example,dc=com" + * // [uid] => "byoung" + * // [homeDirectory] => "\\server\byoung" + * // ) + * // ) + * + * + * WARNING: This function will use a lot of memory on large searches since the entire result set is + * stored in a single array. For large searches, you should consider sing the less memory intensive + * PHP LDAP API directly (ldap_search(), ldap_next_entry(), ldap_next_attribute(), etc). + * + * @param int $server_id The ID of the server to search on. + * @param string $filter The LDAP filter to use when searching (example: "(objectClass=*)") (see RFC 2254) + * @param string $base_dn The DN of the base of search. + * @param array $attrs An array of attributes to include in the search result (example: array( "objectClass", "uid", "sn" )). + * @param string $scope The LDAP search scope. Must be one of "base", "one", or "sub". Standard LDAP search scope. + * @param bool $sort_results Specify false to not sort results by DN or true to have the + * returned array sorted by DN (uses ksort) + * @param int $deref When handling aliases or referrals, this specifies whether to follow referrals. Must be one of + * LDAP_DEREF_ALWAYS, LDAP_DEREF_NEVER, LDAP_DEREF_SEARCHING, or LDAP_DEREF_FINDING. See the PHP LDAP API for details. */ -function pla_ldap_search( $server_id, $filter, $base_dn=null, $attrs=array(), $scope='sub', $sort_results=true ) +function pla_ldap_search( $server_id, $filter, $base_dn=null, $attrs=array(), $scope='sub', $sort_results=true, $deref=LDAP_DEREF_ALWAYS ) { global $servers; @@ -808,19 +2127,19 @@ function pla_ldap_search( $server_id, $filter, $base_dn=null, $attrs=array(), $s $base_dn = $servers[$server_id]['base']; $ds = pla_ldap_connect( $server_id ); - if( ! $ds ) + if( pla_ldap_connection_is_error( $ds, false ) ) return false; switch( $scope ) { case 'base': - $search = @ldap_read( $ds, $base_dn, $filter, $attrs, 0, 0, 0, LDAP_DEREF_ALWAYS ); + $search = @ldap_read( $ds, $base_dn, $filter, $attrs, 0, 0, 0, $deref ); break; case 'one': - $search = @ldap_list( $ds, $base_dn, $filter, $attrs, 0, 0, 0, LDAP_DEREF_ALWAYS ); + $search = @ldap_list( $ds, $base_dn, $filter, $attrs, 0, 0, 0, $defef ); break; case 'sub': default: - $search = @ldap_search( $ds, $base_dn, $filter, $attrs, 0, 0, 0, LDAP_DEREF_ALWAYS ); + $search = @ldap_search( $ds, $base_dn, $filter, $attrs, 0, 0, 0, $deref ); break; } @@ -872,11 +2191,57 @@ function pla_ldap_search( $server_id, $filter, $base_dn=null, $attrs=array(), $s return $return; } -/* - * Transforms the user-configured lists into arrays and such. This is a little weird, but - * it takes the comma-separated lists (like the search result attribute list) in config.php +/** + * Reads the query, checks all values and sets defaults. + * + * @param int $query_id The ID of the predefined query. + * + * @return array The fixed query or null on error + */ +function get_cleaned_up_predefined_search( $query_id ) +{ + global $queries; + + if( ! isset( $queries[$query_id] ) ) + return null; + + $query = $queries[$query_id]; + + if( isset( $query['server'] ) && ( is_numeric( $query['server'] ) ) ) + $server_id = $query['server']; + else $server_id = 0; + + $base = ( isset( $query['base'] ) ) ? $query['base'] : null; + $base = expand_dn_with_base( $server_id, $base ); + + if( isset( $query['filter'] ) && strlen( trim( $query['filter'] ) ) > 0 ) + $filter = $query['filter']; + else + $filter = 'objectclass=*'; + + $scope = isset( $query['scope'] ) + && ( in_array( $query['scope'], array( 'base', 'sub', 'one' ) ) ) + ? $query['scope'] : 'sub'; + + if( isset( $query['attributes'] ) && strlen( trim( $query['filter'] ) ) > 0 ) + $attrib = $query['attributes']; + else + $attrib = "dn, cn, sn, objectClass"; + + return array ( 'server' => $server_id, 'base' => $base, + 'filter' => $filter, 'scope' => $scope, 'attributes' => $attrib ); +} + +/** + * Transforms the user-configured search lists into arrays for use by other components of phpLDAPadmin. + * This may seem a little strange, and that's because it is strange. + * + * The function takes the comma-separated lists (like the search result attribute list) in config.php * and turns them into arrays. Only call this ONCE per script. Any subsequent call will - * mess up the arrays. This function operates only on global variables defined in config.php. + * mess up the arrays. This function operates on global variables defined in config.php and is currently + * only used by search_form_simple.php + * + * For more details, just read the function's code. It's short and pretty straightforward. */ function process_config() { @@ -891,33 +2256,47 @@ function process_config() global $search_attributes; $search_attributes= explode( ",", $search_attributes); array_walk( $search_attributes, "trim_it" ); + + if( count( $search_attributes ) != count( $search_attributes_display ) ) + pla_error( $lang['search_Attrs_wrong_count'] ); } -/* - * Call-by-reference to trim a string. Used to filter empty entries out of the arrays +/** + * Trim a string in place (call by reference) Used to filter empty entries out of the arrays * that we generate in process_config(). + * + * @see process_config */ function trim_it( &$str ) { $str = trim($str); } -/* - * Checks the server id for sanity. Ensures that the server is indeed in the configured list and active +/** + * Checks the specified server id for sanity. Ensures that the server is indeed in the configured + * list and active. This is used by many many scripts to ensure that valid server ID values + * are passed in POST and GET. */ function check_server_id( $server_id ) { global $servers; - if( ! is_numeric( $server_id ) || ! isset( $servers[$server_id] ) || $servers[$server_id]['host'] == '' ) + if( ! is_numeric( $server_id ) || ! isset( $servers[$server_id] ) || ! isset( $servers[$server_id]['host'] ) || $servers[$server_id]['host'] == '' ) return false; else return true; } -/* - * Used to generate a random salt for crypt-style passwords +/** + * Used to generate a random salt for crypt-style passwords. Salt strings are used + * to make pre-built hash cracking dictionaries difficult to use as the hash algorithm uses + * not only the user's password but also a randomly generated string. The string is + * stored as the first N characters of the hash for reference of hashing algorithms later. + * * --- added 20021125 by bayu irawan --- * --- ammended 20030625 by S C Rigler --- + * + * @param int $length The length of the salt string to generate. + * @return string The generated salt string. */ function random_salt( $length ) { @@ -931,7 +2310,7 @@ function random_salt( $length ) { $str .= substr( $possible, ( rand() % strlen( $possible ) ), 1 ); } - /* + /** * Commented out following line because of problem * with crypt function in update.php * --- 20030625 by S C Rigler --- @@ -940,10 +2319,12 @@ function random_salt( $length ) return $str; } -/* +/** * Goes through the user-configured server list and looks for an available server_id, - * ie one that has specified enough information to login. This is for choosing the - * server to display in the drop-down box in search.php mostly. + * one that has specified enough information to login. This is for choosing the + * server to display in the drop-down box in search.php. + * + * @return int The first available server ID found. */ function get_avail_server_id() { @@ -955,49 +2336,76 @@ function get_avail_server_id() return false; } -/* +/** * Given a DN string, this returns the 'RDN' portion of the string. * For example. given 'cn=Manager,dc=example,dc=com', this function returns * 'cn=Manager' (it is really the exact opposite of get_container()). + * + * @param string $dn The DN whose RDN to return. + * @param bool $include_attrs If true, include attributes in the RDN string. + * See http://php.net/ldap_explode_dn for details + * + * @return string The RDN + * @see get_container */ function get_rdn( $dn, $include_attrs=0 ) { if( $dn == null ) return null; $rdn = pla_explode_dn( $dn, $include_attrs ); - if( $rdn['count'] == 0 ) - return null; + if( 0 == count($rdn) ) + return $dn; if( ! isset( $rdn[0] ) ) - return null; + return $dn; $rdn = $rdn[0]; return $rdn; } -/* - * Given a DN string, this returns the 'container' portion of the string. +/** + * Given a DN string, this returns the parent container portion of the string. * For example. given 'cn=Manager,dc=example,dc=com', this function returns * 'dc=example,dc=com'. + * + * @param string $dn The DN whose container string to return. + * + * @return string The container + * @see get_rdn */ function get_container( $dn ) { - $rdn = pla_explode_dn( $dn ); - $container = @$rdn[ 1 ]; - for( $i=2; $i + * Array + * ( + * [title] => "Invalid Credentials" + * [description] => "An invalid username and/or password was supplied to the LDAP server." + * ) + * */ function pla_verbose_error( $err_no ) { static $err_codes; if( count($err_codes) > 0 ) { - return $err_codes[ $err_no ]; - } else { - } + if( isset( $err_codes[ $err_no ] ) ) + return $err_codes[ $err_no ]; + else + return array( 'title' => null, 'desc' => null ); + } $err_codes_file = 'ldap_error_codes.txt'; @@ -1009,31 +2417,45 @@ function pla_verbose_error( $err_no ) return false; $contents = fread( $f, filesize( $err_codes_file ) ); + fclose( $f ); $entries = array(); preg_match_all( "/0x[A-Fa-f0-9][A-Za-z0-9]\s+[0-9A-Za-z_]+\s+\"[^\"]*\"\n/", $contents, $entries ); $err_codes = array(); - foreach( $entries[0] as $e ) - { + foreach( $entries[0] as $e ) { $entry = array(); preg_match( "/(0x[A-Za-z0-9][A-Za-z0-9])\s+([0-9A-Za-z_]+)\s+\"([^\"]*)\"/", $e, $entry ); - $hex_code = $entry[1]; - $title = $entry[2]; - $desc = $entry[3]; + $hex_code = isset( $entry[1] ) ? $entry[1] : null; + $title = isset( $entry[2] ) ? $entry[2] : null; + $desc = isset( $entry[3] ) ? $entry[3] : null; $desc = preg_replace( "/\s+/", " ", $desc ); - $err_codes[ $hex_code ] = array( 'title' => $title, 'desc' => $desc ); + $err_codes[ "$hex_code" ] = array( 'title' => $title, 'desc' => $desc ); } - return $err_codes[ $err_no ]; + // Sanity check + if( isset( $err_codes[ $err_no ] ) ) + return $err_codes[ $err_no ]; + else + return array( 'title' => null, 'desc' => null ); } -/* - * Spits out an HTML-formatted error string. If you specify the optional - * parameters, pla_error will lookup the error number and display a - * verbose message in addition to the message you pass it. +/** + * Prints an HTML-formatted error string. If you specify the optional + * parameters $ldap_err_msg and $ldap_err_no, this function will + * lookup the error number and display a verbose message in addition + * to the message you pass it. + * + * @param string $msg The error message to display. + * @param string $ldap_err_msg (optional) The error message supplied by the LDAP server + * @param string $ldap_err_no (optional) The hexadecimal error number string supplied by the LDAP server + * @param bool $fatal (optional) If true, phpLDAPadmin will terminate execution with the PHP die() function. + * + * @see die + * @see ldap_errno + * @see pla_verbose_error */ function pla_error( $msg, $ldap_err_msg=null, $ldap_err_no=-1, $fatal=true ) { - include_once 'header.php'; + @include_once 'header.php'; global $lang; ?> @@ -1045,8 +2467,10 @@ function pla_error( $msg, $ldap_err_msg=null, $ldap_err_no=-1, $fatal=true )
'; + } if( $ldap_err_no != -1 ) { $ldap_err_no = ( '0x' . str_pad( dechex( $ldap_err_no ), 2, 0, STR_PAD_LEFT ) ); @@ -1054,32 +2478,53 @@ function pla_error( $msg, $ldap_err_msg=null, $ldap_err_no=-1, $fatal=true ) if( $verbose_error ) { echo sprintf( $lang['ferror_number'], $ldap_err_no, $verbose_error['title']); + echo '
'; echo sprintf( $lang['ferror_discription'], $verbose_error['desc']); } else { echo sprintf($lang['ferror_number_short'], $ldap_err_no); + echo '
'; echo $lang['ferror_discription_short']; } } ?>
+
\n"; die(); } -/* - * This is our custom error handling function. When a PHP error occurs, - * php will call this so we can give the user a link to the bug submission - * page, where they can report it. Whoohoo. +/** + * phpLDAPadmin's custom error handling function. When a PHP error occurs, + * PHP will call this function rather than printing the typical PHP error string. + * This provides phpLDAPadmin the ability to format an error message more "pretty" + * and provide a link for users to submit a bug report. This function is not to + * be called by users. It is exclusively for the use of PHP internally. If this + * function is called by PHP from within a context where error handling has been + * disabled (ie, from within a function called with "@" prepended), then this + * function does nothing. + * + * @param int $errno The PHP error number that occurred (ie, E_ERROR, E_WARNING, E_PARSE, etc). + * @param string $errstr The PHP error string provided (ie, "Warning index "foo" is undefined) + * @param string $file The file in which the PHP error ocurred. + * @param int $lineno The line number on which the PHP error ocurred + * + * @see set_error_handler */ function pla_error_handler( $errno, $errstr, $file, $lineno ) { @@ -1096,6 +2541,7 @@ function pla_error_handler( $errno, $errstr, $file, $lineno ) $caller = basename( $_SERVER['PHP_SELF'] ); $errtype = ""; switch( $errno ) { + case E_STRICT: $errtype = "E_STRICT"; break; case E_ERROR: $errtype = "E_ERROR"; break; case E_WARNING: $errtype = "E_WARNING"; break; case E_PARSE: $errtype = "E_PARSE"; break; @@ -1118,15 +2564,18 @@ function pla_error_handler( $errno, $errstr, $file, $lineno ) return; } + $server = isset( $_SERVER['SERVER_SOFTWARE'] ) ? $_SERVER['SERVER_SOFTWARE'] : 'undefined'; + $phpself = isset( $_SERVER['PHP_SELF'] ) ? basename( $_SERVER['PHP_SELF'] ) : 'undefined'; pla_error( sprintf($lang['ferror_congrats_found_bug'], $errstr, $errtype, $file, - $lineno, basename($_SERVER['PHP_SELF']), pla_version(), - phpversion(), php_sapi_name(), $_SERVER['SERVER_SOFTWARE'])); + $lineno, $phpself, pla_version(), + phpversion(), php_sapi_name(), $server )); } -/* +/** * Reads the friendly_attrs array as defined in config.php and lower-cases all * the keys. Will return an empty array if the friendly_attrs array is not defined - * in config.php. + * in config.php. This is simply used so we can more easily lookup user-friendly + * attributes configured by the admin. */ function process_friendly_attr_table() { @@ -1142,8 +2591,14 @@ function process_friendly_attr_table() return $attrs_table; } -/* - * Returns true if the specified DN exists on the specified server, or false otherwise +/** + * Gets whether an entry exists based on its DN. If the entry exists, + * returns true. Otherwise returns false. + * + * @param int $server_id The ID of the server of interest + * @param string $dn The DN\of the entry of interest. + * + * @return bool */ function dn_exists( $server_id, $dn ) { @@ -1151,8 +2606,7 @@ function dn_exists( $server_id, $dn ) return false; $ds = pla_ldap_connect( $server_id ); - - if( ! $ds ) + if( pla_ldap_connection_is_error( $ds, false ) ) return false; $search_result = @ldap_read( $ds, $dn, 'objectClass=*', array('dn') ); @@ -1168,42 +2622,74 @@ function dn_exists( $server_id, $dn ) return false; } -/* - * Given a DN and server_id, this draws fetches the jpegPhoto binary data and echo's the - * HTML necesary to draw it. You can optionally have it draw the 'delete' button below - * each image. This function supports multiple jpegPhotos. +/** + * Draw the jpegPhoto image(s) for an entry wrapped in HTML. Many options are available to + * specify how the images are to be displayed. + * + * Usage Examples: + * + * draw_jpeg_photos( 0, "cn=Bob,ou=People,dc=example,dc=com", "jpegPhoto" true, false, "border: 1px; width: 150px" ); + * draw_jpeg_photos( 1, "cn=Fred,ou=People,dc=example,dc=com" ); + * + * + * @param int $server_id The ID of the server of interest. + * @param string $dn The DN of the entry that contains the jpeg attribute you want to draw. + * @param string $attr_name The name of the attribute containing the jpeg data (usually 'jpegPhoto'). + * @param bool $draw_delete_buttons If true, draws a button beneath the image titled 'Delete' allowing the user + * to delete the jpeg attribute by calling JavaScript function deleteAttribute() provided + * in the default modification template. + * @param bool $draw_bytes_and_size If true, draw text below the image indicating the byte size and dimensions. + * @param string $table_html_attrs Specifies optional CSS style attributes for the table tag. + * + * @return void */ -function draw_jpeg_photos( $server_id, $dn, $draw_delete_buttons=false ) +function draw_jpeg_photos( $server_id, $dn, $attr_name='jpegPhoto', $draw_delete_buttons=false, + $draw_bytes_and_size=true, $table_html_attrs='align="left"', $img_html_attrs='' ) { global $jpeg_temp_dir; global $jpeg_tmp_keep_time; global $lang; $conn = pla_ldap_connect( $server_id ); - $search_result = ldap_search( $conn, $dn, 'objectClass=*', array( 'jpegPhoto' ) ); + if( pla_ldap_connection_is_error( $conn, false ) ) + return; + $search_result = ldap_read( $conn, $dn, 'objectClass=*', array( $attr_name ) ); $entry = ldap_first_entry( $conn, $search_result ); - echo ""; +foreach( $all_attrs as $attr ) + $header_row .= ""; +$header_row .= "\n"; + +// begin drawing table +echo "
"; +echo "
"; +echo "
\n\n"; + echo "
\n\n"; // for each jpegPhoto in the entry, draw it (there may be only one, and that's okay) - $jpeg_data = ldap_get_values_len( $conn, $entry, "jpegphoto"); + $jpeg_data = @ldap_get_values_len( $conn, $entry, $attr_name ); + if( ! is_array( $jpeg_data ) ) { + echo "Could not fetch jpeg data from LDAP server for attribute " . htmlspecialchars( $attr_name ); + return; + } for( $i=0; $i<$jpeg_data['count']; $i++ ) { // ensures that the photo is written to the specified jpeg_temp_dir $jpeg_temp_dir = realpath($jpeg_temp_dir.'/'); + if( ! is_writable( $jpeg_temp_dir ) ) + pla_error( 'Please set $jpeg_temp_dir to a writable directory in the phpLDAPadmin config.php' ); $jpeg_filename = tempnam($jpeg_temp_dir.'/', 'pla'); - $outjpeg = fopen($jpeg_filename, "wb"); + $outjpeg = @fopen($jpeg_filename, "wb"); + if( ! $outjpeg ) + pla_error( 'Could not write to the $jpeg_temp_dir directory (' . $jpeg_temp_dir . '). Please verify that your web server can write files there.' ); fwrite($outjpeg, $jpeg_data[$i]); fclose ($outjpeg); $jpeg_data_size = filesize( $jpeg_filename ); - if( $jpeg_data_size < 6 ) { + if( $jpeg_data_size < 6 && $draw_delete_buttons ) { echo $lang['jpeg_contains_errors']; - echo ''. $lang['delete_photo'] .''; + echo ''. $lang['delete_photo'] .''; continue; } - $jpeg_dimensions = getimagesize ($jpeg_filename); - $width = $jpeg_dimensions[0]; - $height = $jpeg_dimensions[1]; + if( function_exists( 'getimagesize' ) ) { + $jpeg_dimensions = @getimagesize( $jpeg_filename ); + $width = $jpeg_dimensions[0]; + $height = $jpeg_dimensions[1]; + } else { + $width = 0; + $height = 0; + } if( $width > 300 ) { $scale_factor = 300 / $width; $img_width = 300; @@ -1212,15 +2698,17 @@ function draw_jpeg_photos( $server_id, $dn, $draw_delete_buttons=false ) $img_width = $width; $img_height = $height; } - echo "
\n"; - echo "" . number_format($jpeg_data_size) . " bytes. "; - echo "$width x $height pixels.
\n\n"; + if( $draw_bytes_and_size ) { + echo "" . number_format($jpeg_data_size) . " bytes. "; + echo "$width x $height pixels.
\n\n"; + } if( $draw_delete_buttons ) { ?> - Delete Photo + Delete Photo
\n\n"; @@ -1229,37 +2717,51 @@ function draw_jpeg_photos( $server_id, $dn, $draw_delete_buttons=false ) if( ! isset( $jpeg_tmp_keep_time ) ) $jpeg_tmp_keep_time = 120; + // If they set keep time to 0, we up it to 10 to allow the browser to fetch it before it is deleted. if( $jpeg_tmp_keep_time == 0 ) $jpeg_tmp_keep_time = 10; // delete old jpeg files. - $jpegtmp_wildcard = "pla.*"; + $jpegtmp_wildcard = "/^pla/"; $handle = opendir($jpeg_temp_dir); - while (($file = readdir($handle)) != false) - if (eregi($jpegtmp_wildcard, $file)) - { + while( ($file = readdir($handle) ) != false ) { + if( preg_match( $jpegtmp_wildcard, $file ) ) { $file = "$jpeg_temp_dir/$file"; - if ((time() - filemtime($file)) > $jpeg_tmp_keep_time) - unlink ( $file ); + if( (time() - filemtime($file) ) > $jpeg_tmp_keep_time ) + @unlink( $file ); } + } closedir($handle); - } -/* - * Returns the root DN of the specified server_id, or false if it - * can't find it (ie, the server won't give it to us). +/** + * Gets the root DN of the specified server_id, or false if it + * can't find it (ie, the server won't give it to us). This is + * used when the user leaves the $servers[$i]['base'] value empty + * to auto-determine the root DN. + * * Tested with OpenLDAP 2.0, Netscape iPlanet, and Novell eDirectory 8.7 (nldap.com) * Please report any and all bugs!! + * + * @param int $server_id The ID of the server whose root DN to fetch. + * @return mixed The root DN of the server on success (string) or false on error. */ -function try_to_get_root_dn( $server_id ) +function try_to_get_root_dn( $server_id, $ds = null ) { - if( ! have_auth_info( $server_id ) ) - return false; + if( is_null( $ds ) ) { + if( ! check_server_id( $server_id ) ) + return false; - $ds = pla_ldap_connect( $server_id ); - if( ! $ds ) - return false; + if( isset( $_SESSION[ "pla_root_dn_$server_id" ] ) ) + return $_SESSION[ "pla_root_dn_$server_id" ]; + + if( ! have_auth_info( $server_id ) ) + return false; + + $ds = pla_ldap_connect( $server_id ); + if ( pla_ldap_connection_is_error( $ds, false ) ) + return false; + } $r = @ldap_read( $ds, '', 'objectClass=*', array( 'namingContexts' ) ); if( ! $r ) @@ -1268,73 +2770,209 @@ function try_to_get_root_dn( $server_id ) $r = @ldap_get_entries( $ds, $r ); if( isset( $r[0]['namingcontexts'][0] ) ) { $root_dn = $r[0]['namingcontexts'][0]; + $_SESSION[ "pla_root_dn_$server_id" ] = $root_dn; return $root_dn; } else { return false; } } -/* - * Hashes a password and returns the hash based on the enc_type, which can be one of - * crypt, md5, md5crypt, sha, smd5, ssha, or clear. +/** + * Hashes a password and returns the hash based on the specified enc_type. + * + * @param string $password_clear The password to hash in clear text. + * @param string $enc_type Standard LDAP encryption type which must be one of + * crypt, md5, md5crypt, sha, smd5, ssha, or clear. + * @return string The hashed password. */ function password_hash( $password_clear, $enc_type ) { global $lang; - $enc_type = strtolower( $enc_type ); - switch( $enc_type ) - { - case 'crypt': - $new_value = '{crypt}' . crypt( $password_clear, random_salt(2) ); - break; - case 'md5': - $new_value = '{md5}' . base64_encode( pack( 'H*' , md5( $password_clear) ) ); - break; - case 'md5crypt': - if( ! defined( 'CRYPT_MD5' ) || 0 == CRYPT_MD5 ) - pla_error( $lang['install_not_support_blowfish'] ); - $new_value = '{crypt}' . crypt( $password_clear , '$1$' . random_salt(9) ); - break; - case 'blowfish': - if( ! defined( 'CRYPT_BLOWFISH' ) || 0 == CRYPT_BLOWFISH ) - pla_error( $lang['install_not_support_blowfish'] ); - $new_value = '{crypt}' . crypt( $password_clear , '$2$' . random_salt(13) ); - break; - case 'sha': - if( function_exists( 'mhash' ) ) { - $new_value = '{sha}' . base64_encode( mhash( MHASH_SHA1, $password_clear) ); - } else { - pla_error( $lang['install_no_mash'] ); - } - break; - case 'ssha': - if( function_exists( 'mhash' ) && function_exists( 'mhash_keygen_s2k' ) ) { - mt_srand( (double) microtime() * 1000000 ); - $salt = mhash_keygen_s2k( MHASH_SHA1, $password_clear, substr( pack( "h*", md5( mt_rand() ) ), 0, 8 ), 4 ); - $new_value = "{ssha}".base64_encode( mhash( MHASH_SHA1, $password_clear.$salt ).$salt ); - } else { - pla_error( $lang['install_no_mash'] ); - } - break; - case 'smd5': - if( function_exists( 'mhash' ) && function_exists( 'mhash_keygen_s2k' ) ) { - mt_srand( (double) microtime() * 1000000 ); - $salt = mhash_keygen_s2k( MHASH_MD5, $password_clear, substr( pack( "h*", md5( mt_rand() ) ), 0, 8 ), 4 ); - $new_value = "{smd5}".base64_encode( mhash( MHASH_SHA1, $password_clear.$salt ).$salt ); - } else { - pla_error( $lang['install_no_mash'] ); - } - break; - case 'clear': - default: - $new_value = $password_clear; + $enc_type = strtolower( $enc_type ); + switch( $enc_type ) + { + case 'crypt': + $new_value = '{CRYPT}' . crypt( $password_clear, random_salt(2) ); + break; + case 'md5': + $new_value = '{MD5}' . base64_encode( pack( 'H*' , md5( $password_clear) ) ); + break; + case 'md5crypt': + if( ! defined( 'CRYPT_MD5' ) || 0 == CRYPT_MD5 ) + pla_error( $lang['install_not_support_md5crypt'] ); + $new_value = '{CRYPT}' . crypt( $password_clear , '$1$' . random_salt(9) ); + break; + case 'blowfish': + if( ! defined( 'CRYPT_BLOWFISH' ) || 0 == CRYPT_BLOWFISH ) + pla_error( $lang['install_not_support_blowfish'] ); + $new_value = '{CRYPT}' . crypt( $password_clear , '$2$' . random_salt(13) ); + break; + case 'sha': + if( function_exists( 'mhash' ) ) { + $new_value = '{SHA}' . base64_encode( mhash( MHASH_SHA1, $password_clear) ); + } else { + pla_error( $lang['install_no_mash'] ); + } + break; + case 'ssha': + if( function_exists( 'mhash' ) && function_exists( 'mhash_keygen_s2k' ) ) { + mt_srand( (double) microtime() * 1000000 ); + $salt = mhash_keygen_s2k( MHASH_SHA1, $password_clear, substr( pack( "h*", md5( mt_rand() ) ), 0, 8 ), 4 ); + $new_value = "{SSHA}".base64_encode( mhash( MHASH_SHA1, $password_clear.$salt ).$salt ); + } else { + pla_error( $lang['install_no_mash'] ); + } + break; + case 'smd5': + if( function_exists( 'mhash' ) && function_exists( 'mhash_keygen_s2k' ) ) { + mt_srand( (double) microtime() * 1000000 ); + $salt = mhash_keygen_s2k( MHASH_MD5, $password_clear, substr( pack( "h*", md5( mt_rand() ) ), 0, 8 ), 4 ); + $new_value = "{SMD5}".base64_encode( mhash( MHASH_MD5, $password_clear.$salt ).$salt ); + } else { + pla_error( $lang['install_no_mash'] ); + } + break; + case 'clear': + default: + $new_value = $password_clear; } - return $new_value; } -/* - * Returns the version as a string as stored in the VERSION file. +/** + * Given a clear-text password and a hash, this function determines if the clear-text password + * is the password that was used to generate the hash. This is handy to verify a user's password + * when all that is given is the hash and a "guess". + * @param String $hash The hash. + * @param String $clear The password in clear text to test. + * @return Boolean True if the clear password matches the hash, and false otherwise. + */ +function password_check( $cryptedpassword, $plainpassword ) +{ + //echo "password_check( $cryptedpassword, $plainpassword )\n"; + if( preg_match( "/{([^}]+)}(.*)/", $cryptedpassword, $cypher ) ) { + $cryptedpassword = $cypher[2]; + $_cypher = strtolower($cypher[1]); + } else { + $_cypher = NULL; + } + + switch( $_cypher ) + { + // SSHA crypted passwords + case 'ssha': + $hash = base64_decode($cryptedpassword); + $salt = substr($hash, -4); + $new_hash = base64_encode( mhash( MHASH_SHA1, $plainpassword.$salt).$salt ); + if( strcmp( $cryptedpassword, $new_hash ) == 0 ) + return true; + else + return false; + break; + // Salted MD5 + case 'smd5': + $hash = base64_decode($cryptedpassword); + $salt = substr($hash, -4); + $new_hash = base64_encode( mhash( MHASH_MD5, $plainpassword.$salt).$salt ); + if( strcmp( $cryptedpassword, $new_hash ) == 0) + return true; + else + return false; + break; + // SHA crypted passwords + case 'sha': + if( 0 == strcasecmp( password_hash($plainpassword,'sha' ), "{SHA}".$cryptedpassword ) ) + return true; + else + return false; + break; + // MD5 cryped passwords + case 'md5': + if( 0 == strcasecmp( password_hash( $plainpassword,'md5' ), "{MD5}".$cryptedpassword ) ) + return true; + else + return false; + break; + // Crypt passwords + case 'crypt': + // Check if it's an crypted md5 + if( strstr( $cryptedpassword, '$1$' ) ) { + list(,$type,$salt,$hash) = explode('$',$cryptedpassword); + if( crypt( $plainpassword, '$1$' .$salt ) == $cryptedpassword ) + return true; + else + return false; + } + // Password is plain crypt + else { + if( crypt($plainpassword, $cryptedpassword ) == $cryptedpassword ) + return true; + else + return false; + } + break; + // No crypt is given assume plaintext passwords are used + default: + if( $plainpassword == $cryptedpassword ) + return true; + else + return false; + break; + } +} + +function get_enc_type( $user_password ) +{ + /* Capture the stuff in the { } to determine if this is crypt, md5, etc. */ + $enc_type = null; + if( preg_match( "/{([^}]+)}/", $user_password, $enc_type) ) + $enc_type = strtolower( $enc_type[1] ); + else + return null; + + /* handle crypt types */ + if( 0 == strcasecmp( $enc_type, 'crypt') ) { + $salt = null; + if( preg_match( "/{[^}]+}\\$(.)\\$/", $user_password, $salt) ) + $salt = $salt[1]; + else + $salt = null; + switch( $salt ) { + case '': // CRYPT_STD_DES + $enc_type = "crypt"; + break; + case '1': // CRYPT_MD5 + $enc_type = "md5crypt"; + break; + case '2': // CRYPT_BLOWFISH + $enc_type = "blowfish"; + break; + default: + $enc_type = "crypt"; + } + } + return $enc_type; +} + +/** + * Gets the default enc_type configured in config.php for the server indicated by $server_id; + * @param int $server_id The ID of the server of interest. + * @return String The enc_type, like 'sha', 'md5', 'ssha', 'md5crypt', for example. + */ +function get_default_hash( $server_id ) +{ + global $servers; + if( isset( $servers[$server_id]['default_hash'] ) ) + return $servers[$server_id]['default_hash']; + else + return null; +} + +/** + * Returns the phpLDAPadmin version currently running. The version + * is read from the file named VERSION. + * + * @return string The current version as read from the VERSION file. */ function pla_version() { @@ -1347,100 +2985,90 @@ function pla_version() return $version; } -function draw_chooser_link( $form_element ) +/** + * Draws an HTML browse button which, when clicked, pops up a DN chooser dialog. + * @param string $form_element The name of the form element to which this chooser + * dialog will publish the user's choice. The form element must be a member + * of a form with the "name" or "id" attribute set in the form tag, and the element + * must also define "name" or "id" for JavaScript to uniquely identify it. + * Example $form_element values may include "creation_form.container" or + * "edit_form.member_uid". See /templates/modification/default.php for example usage. + * @param bool $include_choose_text (optional) If true, the function draws the localized text "choose" to the right of the button. + */ +function draw_chooser_link( $form_element, $include_choose_text=true ) { global $lang; $href = "javascript:dnChooserPopup('$form_element');"; $title = $lang['chooser_link_tooltip']; - echo ""; - echo "". $lang['fbrowse'] ."\n"; -} - -function get_values($link_id,$entry_id,$attr){ - if( 0 == strcasecmp( $attr, 'jpegPhoto' ) ) { - $values = ldap_get_values_len($link_id,$entry_id,$attr); - } else { - $values = ldap_get_values($link_id,$entry_id,$attr); - unset($values['count']); - } - return $values; -} - -/* -function utf8_decode($str) -{ - global $code_page; - if( ! $code_page ) - $code_page = "ISO-8859-1"; - return iconv("UTF8", $code_page, $str); -} - -function utf8_encode($str) -{ - global $code_page; - if( ! $code_page ) - $code_page = "ISO-8859-1"; - return iconv( $code_page, "UTF8", $str); -} -*/ - -function get_code_page() -{ - global $code_page; - if( ! $code_page ) - $code_page = "ISO-8859-1"; - return $code_page; + echo ""; + if( $include_choose_text ) + echo "". $lang['fbrowse'] .""; + echo ""; } /** - * Convert the string to the configured codepage and replace HTML chars - * with their &-encoded equivelants, then echo to browser. - */ -function pla_echo( $str ) -{ - if( function_exists( "iconv" ) ) - $str = iconv( "UTF8", get_code_page(), $str ); - $str = htmlspecialchars( $str ); - echo $str; -} - -/* - * UTF-8 safe method for exploding a DN into its RDN parts. + * Explode a DN into an array of its RDN parts. This function is UTF-8 safe + * and replaces the buggy PHP ldap_explode_dn() which does not properly + * handle UTF-8 DNs and also causes segmentation faults with some inputs. + * + * @param string $dn The DN to explode. + * @param int $with_attriutes (optional) Whether to include attribute names (see http://php.net/ldap_explode_dn for details) + * + * @return array An array of RDN parts of this format: + * + * Array + * ( + * [0] => uid=ppratt + * [1] => ou=People + * [2] => dc=example + * [3] => dc=com + * ) + * */ function pla_explode_dn( $dn, $with_attributes=0 ) { - // This is a work-around for broken imeplementations of ldap_explode_dn() - // that ships with some versions of PHP. It has been known to seg-fault - // when passed the '<' and the '>' characters. - if( '4.2.2' != phpversion() ) - $dn = addcslashes( $dn, "<>" ); + // replace "\," with the hexadecimal value for safe split + $var = preg_replace("/\\\,/","\\\\\\\\2C",$dn); - $result = ldap_explode_dn( $dn, $with_attributes ); - - //translate hex code into ascii again - foreach( $result as $key => $value ) - $result[$key] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''", $value); - return $result; + // split the dn + $result = explode(",",$var); + + //translate hex code into ascii for display + foreach( $result as $key => $value ) + $result[$key] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''", $value); + + return $result; } -/* - * Convenience function for fetching project HREFs (like bugs) +/** + * Fetches the URL for the specified item. This is a convenience function for + * fetching project HREFs (like bugs) + * + * @param string $type One of "open_bugs", "add_bug", "donate", or "add_rfe" + * (rfe = request for enhancement) + * @return string The URL to the requested item. */ -function get_href( $type ) { +function get_href( $type ) +{ + /* We don't use SourceForge IDs any more $group_id = "61828"; $bug_atid = "498546"; $rfe_atid = "498549"; + */ switch( $type ) { - case 'open_bugs': return "http://sourceforge.net/tracker/?group_id=$group_id&atid=$bug_atid"; - case 'add_bug': return "http://sourceforge.net/tracker/?func=add&group_id=$group_id&atid=$bug_atid"; - case 'open_rfes': return "http://sourceforge.net/tracker/?atid=$rfe_atid&group_id=$group_id&func=browse"; - case 'add_rfe': return "http://sourceforge.net/tracker/?func=add&group_id=$group_id&atid=$rfe_atid"; + case 'open_bugs': return "http://www.phpldapadmin.com/bugs/"; + case 'add_bug': return "http://www.phpldapadmin.com/bugs/bug_report_page.php"; + case 'add_rfe': return get_href( 'add_bug' ); + case 'donate': return "donate.php"; + case 'help': return "help.php"; default: return null; } } -/* +/** * Returns the current time as a double (including micro-seconds). + * + * @return double The current time in seconds since the beginning of the UNIX epoch (Midnight Jan. 1, 1970) */ function utime () { @@ -1450,4 +3078,584 @@ function utime () return $sec + $usec; } +/** + * Converts an array to a query-string with the option to exclude certain variables + * from the returned query string. This is convenient if callers want to convert the + * current GET query string or POST array into a string and replace certain + * variables with their own. + * + * @param array $array The associate array to convert whose form is such that the keys are the + * names of the variables and the values are said variables' values like this: + * + * Array + * ( + * [server_id] = 0, + * [dn] = "dc=example,dc=com", + * [attr] = "sn" + * ) + * + * This will produce a string like this: "server_id=0&dn=dc=example,dc=com&attr=sn" + * @param array $exclude_vars (optional) An array of variables to exclude in the resulting string + * @param bool $url_encode_ampersands (optional) By default, this function encodes all ampersand-separators + * as & but callers may dislabe this by specifying false here. For example, URLs on HTML + * pages should encode the ampersands but URLs in header( "Location: http://example.com" ) should + * not be encoded. + * @return string The string created from the array. + */ +function array_to_query_string( $array, $exclude_vars=array(), $url_encode_ampersands=true ) +{ + if( ! is_array( $array ) ) + return ''; + if( ! $array ) + return ''; + $str = ''; + $i=0; + foreach( $array as $name => $val ) { + if( ! in_array( $name, $exclude_vars ) ) { + if( $i>0 ) + if( $url_encode_ampersands ) + $str .= '&'; + else + $str .= '&'; + $str .= urlencode( $name ) . '=' . urlencode( $val ); + $i++; + } + } + return $str; +} + +/** + * Gets whether the admin has configured phpLDAPadmin to show the "Create New" link in the tree viewer. + * If $servers[$server_id]['show_create'] is NOT set, then default to show the Create New item. + * If $servers[$server_id]['show_create'] IS set, then return the value (it should be true or false). + * + * @param int $server_id The ID of the server of interest + * @return bool True if the feature is enabled and false otherwise. + */ +function show_create_enabled( $server_id ) +{ + global $servers; + if( isset( $servers[$server_id]['show_create'] )) + return $servers[$server_id]['show_create']; + else + return true; +} + +/** + * Reverses a DN such that the top-level RDN is first and the bottom-level RDN is last + * For example: + * + * cn=Brigham,ou=People,dc=example,dc=com + * + * Becomes: + * + * dc=com,dc=example,ou=People,cn=Brigham + * + * This makes it possible to sort lists of DNs such that they are grouped by container. + * + * @param string $dn The DN to reverse + * + * @return string The reversed DN + * + * @see pla_compare_dns + */ +function pla_reverse_dn($dn) +{ + foreach (pla_explode_dn($dn) as $key => $branch) { + + // pla_expode_dn returns the array with an extra count attribute, we can ignore that. + if ( $key === "count" ) continue; + + if (isset($rev)) { + $rev = $branch.",".$rev; + } else { + $rev = $branch; + } + } + return $rev; +} + +/** + * Determins if the specified attribute is contained in the $unique_attrs list + * configured in config.php. + * @return Bool True if the specified attribute is in the $unique_attrs list and false + * otherwise. + */ +function is_unique_attr( $attr_name ) +{ + global $unique_attrs; + if( isset( $unique_attrs ) && is_array( $unique_attrs ) ) { + foreach( $unique_attrs as $attr ) + if( 0 === strcasecmp( $attr_name, $attr ) ) + return true; + } + return false; +} + +/* + * This function will check whether the value for an attribute being changed + * is already assigned to another DN. + * + * Inputs: + * - server_id + * - dn that is being changed + * - attribute being changed + * - new values for the attribute + * + * Returns the bad value, or null if all values are OK + */ +function checkUniqueAttr( $server_id, $dn, $attr_name, $new_value ) +{ + global $servers, $lang; + $server_name = $servers[ $server_id ][ 'name' ]; + + // Is this attribute in the unique_attrs list? + if ( is_unique_attr( $attr_name ) ) { + + // Search the tree and make sure that attribute doesnt already exist to somebody else. + + // Check see and use our alternate uid_dn and password if we have it. + $unique_attrs_dn = $servers[ $server_id ][ 'unique_attrs_dn' ]; + $unique_attrs_pass = $servers[ $server_id ][ 'unique_attrs_dn_pass' ]; + $need_to_unbind = false; + + if ( isset( $unique_attrs_dn ) && $unique_attrs_dn != '' && isset( $uniqe_attrs_pass ) ) + { + $con = @ldap_connect( $servers[$server_id]['host'], $servers[$server_id]['port'] ); + + @ldap_set_option( $con, LDAP_OPT_PROTOCOL_VERSION, 3 ); + + // Bind with the alternate ID. + $res = @ldap_bind( $con, $unuque_attrs_dn, $unique_attrs_pass ); + + if (! $res) pla_error( sprintf( $lang['unique_attrs_invalid_credential'] , $server_name ) ); + + $need_to_unbind = true; + + } else { + $con = pla_ldap_connect($server_id); + } + + // Should this be in a function? + $base_dn = $servers[ $server_id ][ 'base' ]; + if( ! $base_dn ) + $base_dn = try_to_get_root_dn( $server_id ); + + // Build our search filter to double check each attribute. + $searchfilter = "(|"; + foreach ($new_value as $val) { + $searchfilter .= "($attr_name=$val)"; + } + $searchfilter .= ")"; + + // Do we need a sanity check to just in case $new_value was null and hence the search string is bad? + + // Do the search + $search = @ldap_search( $con, $base_dn, $searchfilter, array('dn'), 0, 0, 0, LDAP_DEREF_ALWAYS); + $search = ldap_get_entries( $con, $search ); + + foreach ($search as $result) { + // Skip the count result and go to the array. + if (! is_array($result)) continue; + + // If one of the attributes is owned to somebody else, then we may as well die here. + if ($result['dn'] != $dn) { + return $val; + } + } + + if ( $need_to_unbind ) { + $res = @ldap_unbind( $con ); + } + + // If we get here, then it must be OK? + return; + + } else { + return; + } +} + +function sortAttrs($a,$b) { + global $friendly_attrs; + + $a = strtolower( (isset($friendly_attrs[ strtolower( $a ) ]) ? $friendly_attrs[ strtolower( $a ) ] : $a)); + $b = strtolower( (isset($friendly_attrs[ strtolower( $b ) ]) ? $friendly_attrs[ strtolower( $b ) ] : $b)); + return strcmp ($a, $b); +} + +function userIsMember($server_id,$user,$group) { + $group = get_object_attrs( $server_id, $group, $deref=LDAP_DEREF_NEVER ); + return (is_array($group) ? (in_array($user,$group['uniqueMember'])) : false); +} + +function arrayLower($array) { + foreach ($array as $key => $value) { + $newarray[$key] = strtolower($value); + } + return $newarray; +} + +/** + * Strips all slashes from the specified array in place (pass by ref). + * @param Array $array The array to strip slashes from, typically one of + * $_GET, $_POST, or $_COOKIE. + */ +function array_stripslashes(&$array) +{ + if( is_array( $array ) ) + while ( list( $key ) = each( $array ) ) + if ( is_array( $array[$key] ) && $key != $array ) + array_stripslashes( $array[$key] ); + else + $array[$key] = stripslashes( $array[$key] ); +} + +/** + * Gets a HTTP value via $_GET or $_POST + * + * @param string $val The HTTP value too look for + * @param any $default The default return value, if failed to get (default = false) + * @param bool $trim Trim a string value (default = true) + * @return string The HTTP value or the $default + */ +function http_get_value( $val, $default = false, $trim = true ) +{ + $result = $default; + if( array_key_exists( $val, $_GET ) ) + $result = $_GET[ $val ]; + elseif( array_key_exists( $val, $_POST ) ) + $result = $_POST[ $val ]; + if( ( $result !== $default ) && ( $trim === true ) && is_string( $result ) ) + $result = trim( $result ); + return $result; +} + +/** + * Gets the USER_AGENT string from the $_SERVER array, all in lower case in + * an E_NOTICE safe manner. + * @return String The user agent string as reported by the browser. + */ +function get_user_agent_string() +{ + if( isset( $_SERVER['HTTP_USER_AGENT'] ) ) + return strtolower( $_SERVER['HTTP_USER_AGENT'] ); + else + return false; +} + +/** + * Determines whether the browser's operating system is UNIX (or something like UNIX). + * @return boolean True if the brower's OS is UNIX, false otherwise. + */ +function is_browser_os_unix() +{ + $agent = get_user_agent_string(); + if( ! $agent ) + return false; + $unix_agent_strs = array( + 'sunos', + 'sunos 4', + 'sunos 5', + 'i86', + 'irix', + 'irix 5', + 'irix 6', + 'irix6', + 'hp-ux', + '09.', + '10.', + 'aix', + 'aix 1', + 'aix 2', + 'aix 3', + 'aix 4', + 'inux', + 'sco', + 'unix_sv', + 'unix_system_v', + 'ncr', + 'reliant', + 'dec', + 'osf1', + 'dec_alpha' , + 'alphaserver' , + 'ultrix' , + 'alphastation', + 'sinix', + 'freebsd', + 'bsd', + 'x11', + 'vax', + 'openvms' + ); + foreach( $unix_agent_strs as $agent_str ) + if( strpos( $agent, $agent_str ) !== false ) + return true; + return false; +} + +/** + * Determines whether the browser's operating system is Windows. + * @return boolean True if the brower's OS is Windows, false otherwise. + */ +function is_browser_os_windows() +{ + $agent = get_user_agent_string(); + if( ! $agent ) + return false; + $win_agent_strs = array( + 'win', + 'win95', + 'windows 95', + 'win16', + 'windows 3.1', + 'windows 16-bit', + 'windows', + 'win31', + 'win16', + 'winme', + 'win2k', + 'winxp', + 'win98', + 'windows 98', + 'win9x', + 'winnt', + 'windows nt', + 'win32', + 'win32', + '32bit' + ); + foreach( $win_agent_strs as $agent_str ) + if( strpos( $agent, $agent_str ) !== false ) + return true; + return false; +} + +/** + * Determines whether the browser's operating system is Macintosh. + * @return boolean True if the brower's OS is mac, false otherwise. + */ +function is_browser_os_mac() +{ + $agent = get_user_agent_string(); + if( ! $agent ) + return false; + $mac_agent_strs = array( + 'mac', + '68000', + 'ppc', + 'powerpc' + ); + foreach( $mac_agent_strs as $agent_str ) + if( strpos( $agent, $agent_str ) !== false ) + return true; + return false; +} + +/** + * Return posix group entries. + * @return Array An associative array of posix group entries with attributes as keys, and values as values. + * @param int $server_id The ID of the server to search. + * @param string $base_dn The base of the search. + */ +function get_posix_groups( $server_id , $base_dn = NULL ){ + global $servers; + if( is_null( $base_dn ) ) + $base_dn = isset( $servers[$server_id]['base'] ) ? $servers[$server_id]['base'] : try_to_get_root_dn( $server_id ); + + $results = pla_ldap_search( $server_id, "objectclass=posixGroup", $base_dn, array() ); + if( !$results ) + return array(); + else + return $results; +} + +function get_default_search_display() +{ + global $default_search_display; + if( ! isset( $default_search_display ) || is_null( $default_search_display ) ) + return 'list'; + elseif( 0 == strcasecmp( $default_search_display, 'list' ) ) + return 'list'; + elseif( 0 == strcasecmp( $default_search_display, 'table' ) ) + return 'table'; + else + pla_error( sprintf( $lang['bad_search_display'], htmlspecialchars( $default_search_display ) ) ); +} + + +/** + * Checks if a string exists in an array, ignoring case. + */ +function in_array_ignore_case( $needle, $haystack ) +{ + if( ! is_array( $haystack ) ) + return false; + if( ! is_string( $needle ) ) + return false; + foreach( $haystack as $element ) + if( is_string( $element ) && 0 == strcasecmp( $needle, $element ) ) + return true; + return false; +} + +/** + * String padding + * + * @param string input string + * @param integer length of the result + * @param string the filling string + * @param integer padding mode + * + * @return string the padded string + * + * @access public (taken from the phpMyAdmin source) + */ +function full_str_pad($input, $pad_length, $pad_string = '', $pad_type = 0) { + $str = ''; + $length = $pad_length - strlen($input); + if ($length > 0) { // str_repeat doesn't like negatives + if ($pad_type == STR_PAD_RIGHT) { // STR_PAD_RIGHT == 1 + $str = $input.str_repeat($pad_string, $length); + } elseif ($pad_type == STR_PAD_BOTH) { // STR_PAD_BOTH == 2 + $str = str_repeat($pad_string, floor($length/2)); + $str .= $input; + $str .= str_repeat($pad_string, ceil($length/2)); + } else { // defaults to STR_PAD_LEFT == 0 + $str = str_repeat($pad_string, $length).$input; + } + } else { // if $length is negative or zero we don't need to do anything + $str = $input; + } + return $str; +} + +/** + * Gets the user configured $blowfish_secret from config.php. + */ +function get_blowfish_secret() +{ + global $blowfish_secret; + if( isset( $blowfish_secret ) ) { + if( trim( $blowfish_secret ) == '' ) + return null; + else + return $blowfish_secret; + } else + return null; +} + +/** + * Encryption using blowfish algorithm + * + * @param string original data + * @param string the secret + * + * @return string the encrypted result + * + * @access public + * + * @author lem9 (taken from the phpMyAdmin source) + */ +function pla_blowfish_encrypt( $data, $secret=null ) +{ + include_once './blowfish.php'; + if( null === $secret ) { + $secret = get_blowfish_secret(); + if( null === $secret ) + pla_error( 'phpLDAPadmin cannot safely encrypt your sensitive information, because $blowfish_secret is not set in config.php. You need to edit config.php and set $blowfish_secret to some secret string now.' ); + } + $pma_cipher = new Horde_Cipher_blowfish; + $encrypt = ''; + for ($i=0; $iencryptBlock($block, $secret); + } + return base64_encode($encrypt); +} + +/** + * Decryption using blowfish algorithm + * + * @param string encrypted data + * @param string the secret + * + * @return string original data + * + * @access public + * + * @author lem9 (taken from the phpMyAdmin source) + */ +function pla_blowfish_decrypt( $encdata, $secret=null ) +{ + // This cache gives major speed up for stupid callers :) + static $cache = array(); + if( isset( $cache[$encdata] ) ) + return $cache[$encdata]; + + include_once './blowfish.php'; + if( null === $secret ) { + $secret = get_blowfish_secret(); + if( null === $secret ) + pla_error( 'phpLDAPadmin cannot safely decrypt your sensitive information, because $blowfish_secret is not set in config.php. You need to edit config.php and set $blowfish_secret to some secret string now.' ); + } + $pma_cipher = new Horde_Cipher_blowfish; + $decrypt = ''; + $data = base64_decode($encdata); + for ($i=0; $idecryptBlock(substr($data, $i, 8), $secret); + } + $return = trim($decrypt); + $cache[$encdata] = $return; + return $return; +} + +/** + * Gets the user configured $tree_display_format from config.php + */ +function get_tree_display_format() +{ + global $tree_display_format; + if( ! isset( $tree_display_format ) || '' == trim( $tree_display_format ) ) + $tree_display_format = "%rdn"; + return $tree_display_format; +} + +/** + * Gets a DN string using the user-configured tree_display_format string to format it. + */ +function draw_formatted_dn( $server_id, $dn ) +{ + $format = get_tree_display_format(); + preg_match_all( "/%[a-zA-Z_0-9]+/", $format, $tokens ); + $tokens = $tokens[0]; + foreach( $tokens as $token ) { + if( 0 == strcasecmp( $token, '%dn' ) ) + $format = str_replace( $token, pretty_print_dn( $dn ), $format ); + elseif( 0 == strcasecmp( $token, '%rdn' ) ) + $format = str_replace( $token, pretty_print_dn( get_rdn( $dn ) ), $format ); + elseif( 0 == strcasecmp( $token, '%rdnvalue' ) ) { + $rdn = get_rdn( $dn ); + $rdn_value = explode( '=', $rdn, 2 ); + $rdn_value = $rdn_value[1]; + $format = str_replace( $token, $rdn_value, $format ); + } else { + $attr_name = str_replace( '%', '', $token ); + $attr_values = get_object_attr( $server_id, $dn, $attr_name ); + if( null == $attr_values ) + $display = 'none'; + elseif( is_array( $attr_values ) ) + $display = htmlspecialchars( implode( ', ', $attr_values ) ); + else + $display = htmlspecialchars( $attr_values ); + $format = str_replace( $token, $display, $format ); + } + } + echo $format; +} + ?> diff --git a/generic_utils.js b/generic_utils.js new file mode 100644 index 0000000..2d554e6 --- /dev/null +++ b/generic_utils.js @@ -0,0 +1,21 @@ +function trim(inputString) { + // Removes leading and trailing spaces from the passed string. Also removes + // consecutive spaces and replaces it with one space. If something besides + // a string is passed in (null, custom object, etc.) then return the input. + if (typeof inputString != "string") { return inputString; } + var retValue = inputString; + var ch = retValue.substring(0, 1); + while (ch == " ") { // Check for spaces at the beginning of the string + retValue = retValue.substring(1, retValue.length); + ch = retValue.substring(0, 1); + } + ch = retValue.substring(retValue.length-1, retValue.length); + while (ch == " ") { // Check for spaces at the end of the string + retValue = retValue.substring(0, retValue.length-1); + ch = retValue.substring(retValue.length-1, retValue.length); + } + while (retValue.indexOf(" ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string + retValue = retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ")+1, retValue.length); // Again, there are two spaces in each of the strings + } + return retValue; // Return the trimmed string back to the user +} diff --git a/header.php b/header.php index 6112da3..dee700e 100644 --- a/header.php +++ b/header.php @@ -1,7 +1,12 @@ -" lang="" dir="ltr"> phpLDAPadmin - - - - + + + + + + + + + diff --git a/help.php b/help.php new file mode 100644 index 0000000..9fdbae8 --- /dev/null +++ b/help.php @@ -0,0 +1,21 @@ + + + + +

Help

+
+
+

Do you have a problem or question?

+

Perhaps you are new to LDAP and need a little guidance?

+

Help is only one click away. Visit the online phpLDAPadmin support forum.

+
+

(Note that paying members will receive priority support, so buy your membership today.)

+
+ + + diff --git a/ie_png_work_around.js b/ie_png_work_around.js new file mode 100644 index 0000000..6024cef --- /dev/null +++ b/ie_png_work_around.js @@ -0,0 +1,29 @@ +function fixIEPNG( img ) +{ + img.style.filter = + "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + img.src + "', enabled=true)"; + img.src="blank.gif"; +} + +function checkPNGs() +{ + // test to see if the browser is IE + var agent = navigator.userAgent.toLowerCase(); + var is_ie = (( agent.indexOf("msie") != -1 ) && + ( agent.indexOf("opera") == -1 )); + + // if IE, use DirectX to correctly display a PNG + if ( !is_ie ) return; + + // go through each image in the page and fix them + for ( var i = 0; i < document.images.length; i++ ) + { + // only if the image is a png + var img = document.images[ i ]; + if ( img.src.indexOf( "png" ) != -1 ) + fixIEPNG( img ); + } +} + +checkPNGs(); diff --git a/images/add.png b/images/add.png new file mode 100644 index 0000000..7c04bad Binary files /dev/null and b/images/add.png differ diff --git a/images/catalog.png b/images/catalog.png new file mode 100644 index 0000000..907d939 Binary files /dev/null and b/images/catalog.png differ diff --git a/images/children.png b/images/children.png index e3495eb..6fdc884 100644 Binary files a/images/children.png and b/images/children.png differ diff --git a/images/countries/af.png b/images/countries/af.png new file mode 100644 index 0000000..cda88b0 Binary files /dev/null and b/images/countries/af.png differ diff --git a/images/countries/al.png b/images/countries/al.png new file mode 100644 index 0000000..5925b27 Binary files /dev/null and b/images/countries/al.png differ diff --git a/images/countries/am.png b/images/countries/am.png new file mode 100644 index 0000000..45cd749 Binary files /dev/null and b/images/countries/am.png differ diff --git a/images/countries/an.png b/images/countries/an.png new file mode 100644 index 0000000..2d4d3a7 Binary files /dev/null and b/images/countries/an.png differ diff --git a/images/countries/ao.png b/images/countries/ao.png new file mode 100644 index 0000000..9463d24 Binary files /dev/null and b/images/countries/ao.png differ diff --git a/images/countries/ar.png b/images/countries/ar.png new file mode 100644 index 0000000..bd73382 Binary files /dev/null and b/images/countries/ar.png differ diff --git a/images/countries/at.png b/images/countries/at.png new file mode 100644 index 0000000..2a58c49 Binary files /dev/null and b/images/countries/at.png differ diff --git a/images/countries/au.png b/images/countries/au.png new file mode 100644 index 0000000..b20b048 Binary files /dev/null and b/images/countries/au.png differ diff --git a/images/countries/aw.png b/images/countries/aw.png new file mode 100644 index 0000000..411977e Binary files /dev/null and b/images/countries/aw.png differ diff --git a/images/countries/az.png b/images/countries/az.png new file mode 100644 index 0000000..ced5af0 Binary files /dev/null and b/images/countries/az.png differ diff --git a/images/countries/ba.png b/images/countries/ba.png new file mode 100644 index 0000000..fb7d190 Binary files /dev/null and b/images/countries/ba.png differ diff --git a/images/countries/bb.png b/images/countries/bb.png new file mode 100644 index 0000000..9c07e14 Binary files /dev/null and b/images/countries/bb.png differ diff --git a/images/countries/bd.png b/images/countries/bd.png new file mode 100644 index 0000000..56bba0b Binary files /dev/null and b/images/countries/bd.png differ diff --git a/images/countries/be.png b/images/countries/be.png new file mode 100644 index 0000000..9312218 Binary files /dev/null and b/images/countries/be.png differ diff --git a/images/countries/bf.png b/images/countries/bf.png new file mode 100644 index 0000000..1019379 Binary files /dev/null and b/images/countries/bf.png differ diff --git a/images/countries/bg.png b/images/countries/bg.png new file mode 100644 index 0000000..0f64f7d Binary files /dev/null and b/images/countries/bg.png differ diff --git a/images/countries/bh.png b/images/countries/bh.png new file mode 100644 index 0000000..236693d Binary files /dev/null and b/images/countries/bh.png differ diff --git a/images/countries/bi.png b/images/countries/bi.png new file mode 100644 index 0000000..7fa236a Binary files /dev/null and b/images/countries/bi.png differ diff --git a/images/countries/bj.png b/images/countries/bj.png new file mode 100644 index 0000000..290016a Binary files /dev/null and b/images/countries/bj.png differ diff --git a/images/countries/bm.png b/images/countries/bm.png new file mode 100644 index 0000000..96fb4dc Binary files /dev/null and b/images/countries/bm.png differ diff --git a/images/countries/bn.png b/images/countries/bn.png new file mode 100644 index 0000000..53460dc Binary files /dev/null and b/images/countries/bn.png differ diff --git a/images/countries/bo.png b/images/countries/bo.png new file mode 100644 index 0000000..5025e7f Binary files /dev/null and b/images/countries/bo.png differ diff --git a/images/countries/br.png b/images/countries/br.png new file mode 100644 index 0000000..734ace9 Binary files /dev/null and b/images/countries/br.png differ diff --git a/images/countries/bs.png b/images/countries/bs.png new file mode 100644 index 0000000..36c4cbe Binary files /dev/null and b/images/countries/bs.png differ diff --git a/images/countries/bt.png b/images/countries/bt.png new file mode 100644 index 0000000..3e10663 Binary files /dev/null and b/images/countries/bt.png differ diff --git a/images/countries/bw.png b/images/countries/bw.png new file mode 100644 index 0000000..bd8e293 Binary files /dev/null and b/images/countries/bw.png differ diff --git a/images/countries/by.png b/images/countries/by.png new file mode 100644 index 0000000..8f5b849 Binary files /dev/null and b/images/countries/by.png differ diff --git a/images/countries/bz.png b/images/countries/bz.png new file mode 100644 index 0000000..fb1bd5a Binary files /dev/null and b/images/countries/bz.png differ diff --git a/images/countries/ca.png b/images/countries/ca.png new file mode 100644 index 0000000..d06843f Binary files /dev/null and b/images/countries/ca.png differ diff --git a/images/countries/cf.png b/images/countries/cf.png new file mode 100644 index 0000000..35e6b47 Binary files /dev/null and b/images/countries/cf.png differ diff --git a/images/countries/cg.png b/images/countries/cg.png new file mode 100644 index 0000000..f2db518 Binary files /dev/null and b/images/countries/cg.png differ diff --git a/images/countries/ch.png b/images/countries/ch.png new file mode 100644 index 0000000..9899d78 Binary files /dev/null and b/images/countries/ch.png differ diff --git a/images/countries/ci.png b/images/countries/ci.png new file mode 100644 index 0000000..d536e9b Binary files /dev/null and b/images/countries/ci.png differ diff --git a/images/countries/ck.png b/images/countries/ck.png new file mode 100644 index 0000000..271f568 Binary files /dev/null and b/images/countries/ck.png differ diff --git a/images/countries/cl.png b/images/countries/cl.png new file mode 100644 index 0000000..97db9ec Binary files /dev/null and b/images/countries/cl.png differ diff --git a/images/countries/cm.png b/images/countries/cm.png new file mode 100644 index 0000000..febecad Binary files /dev/null and b/images/countries/cm.png differ diff --git a/images/countries/cn.png b/images/countries/cn.png new file mode 100644 index 0000000..f3f36da Binary files /dev/null and b/images/countries/cn.png differ diff --git a/images/countries/co.png b/images/countries/co.png new file mode 100644 index 0000000..2781663 Binary files /dev/null and b/images/countries/co.png differ diff --git a/images/countries/cr.png b/images/countries/cr.png new file mode 100644 index 0000000..09bb72d Binary files /dev/null and b/images/countries/cr.png differ diff --git a/images/countries/cu.png b/images/countries/cu.png new file mode 100644 index 0000000..9be2138 Binary files /dev/null and b/images/countries/cu.png differ diff --git a/images/countries/cv.png b/images/countries/cv.png new file mode 100644 index 0000000..6204e60 Binary files /dev/null and b/images/countries/cv.png differ diff --git a/images/countries/cy.png b/images/countries/cy.png new file mode 100644 index 0000000..14b2deb Binary files /dev/null and b/images/countries/cy.png differ diff --git a/images/countries/cz.png b/images/countries/cz.png new file mode 100644 index 0000000..36313b4 Binary files /dev/null and b/images/countries/cz.png differ diff --git a/images/countries/de.png b/images/countries/de.png new file mode 100644 index 0000000..67e1bd5 Binary files /dev/null and b/images/countries/de.png differ diff --git a/images/countries/dk.png b/images/countries/dk.png new file mode 100644 index 0000000..9404cf0 Binary files /dev/null and b/images/countries/dk.png differ diff --git a/images/countries/dz.png b/images/countries/dz.png new file mode 100644 index 0000000..26919b1 Binary files /dev/null and b/images/countries/dz.png differ diff --git a/images/countries/ec.png b/images/countries/ec.png new file mode 100644 index 0000000..961e5cd Binary files /dev/null and b/images/countries/ec.png differ diff --git a/images/countries/ee.png b/images/countries/ee.png new file mode 100644 index 0000000..e0a902e Binary files /dev/null and b/images/countries/ee.png differ diff --git a/images/countries/eg.png b/images/countries/eg.png new file mode 100644 index 0000000..f81b276 Binary files /dev/null and b/images/countries/eg.png differ diff --git a/images/countries/er.png b/images/countries/er.png new file mode 100644 index 0000000..f96b315 Binary files /dev/null and b/images/countries/er.png differ diff --git a/images/countries/es.png b/images/countries/es.png new file mode 100644 index 0000000..c85447d Binary files /dev/null and b/images/countries/es.png differ diff --git a/images/countries/et.png b/images/countries/et.png new file mode 100644 index 0000000..48ff7b1 Binary files /dev/null and b/images/countries/et.png differ diff --git a/images/countries/fi.png b/images/countries/fi.png new file mode 100644 index 0000000..d408743 Binary files /dev/null and b/images/countries/fi.png differ diff --git a/images/countries/fj.png b/images/countries/fj.png new file mode 100644 index 0000000..6818444 Binary files /dev/null and b/images/countries/fj.png differ diff --git a/images/countries/fo.png b/images/countries/fo.png new file mode 100644 index 0000000..1e12376 Binary files /dev/null and b/images/countries/fo.png differ diff --git a/images/countries/fr.png b/images/countries/fr.png new file mode 100644 index 0000000..39bed1a Binary files /dev/null and b/images/countries/fr.png differ diff --git a/images/countries/ga.png b/images/countries/ga.png new file mode 100644 index 0000000..8337ab9 Binary files /dev/null and b/images/countries/ga.png differ diff --git a/images/countries/gb.png b/images/countries/gb.png new file mode 100644 index 0000000..30035dd Binary files /dev/null and b/images/countries/gb.png differ diff --git a/images/countries/ge.png b/images/countries/ge.png new file mode 100644 index 0000000..da1ab41 Binary files /dev/null and b/images/countries/ge.png differ diff --git a/images/countries/gi.png b/images/countries/gi.png new file mode 100644 index 0000000..afb539b Binary files /dev/null and b/images/countries/gi.png differ diff --git a/images/countries/gl.png b/images/countries/gl.png new file mode 100644 index 0000000..66cd000 Binary files /dev/null and b/images/countries/gl.png differ diff --git a/images/countries/gp.png b/images/countries/gp.png new file mode 100644 index 0000000..e4a6159 Binary files /dev/null and b/images/countries/gp.png differ diff --git a/images/countries/gr.png b/images/countries/gr.png new file mode 100644 index 0000000..1fb9d52 Binary files /dev/null and b/images/countries/gr.png differ diff --git a/images/countries/gt.png b/images/countries/gt.png new file mode 100644 index 0000000..7d63cb8 Binary files /dev/null and b/images/countries/gt.png differ diff --git a/images/countries/gu.png b/images/countries/gu.png new file mode 100644 index 0000000..4282438 Binary files /dev/null and b/images/countries/gu.png differ diff --git a/images/countries/gy.png b/images/countries/gy.png new file mode 100644 index 0000000..a5d0e8e Binary files /dev/null and b/images/countries/gy.png differ diff --git a/images/countries/hk.png b/images/countries/hk.png new file mode 100644 index 0000000..e5fa24f Binary files /dev/null and b/images/countries/hk.png differ diff --git a/images/countries/hr.png b/images/countries/hr.png new file mode 100644 index 0000000..fda7328 Binary files /dev/null and b/images/countries/hr.png differ diff --git a/images/countries/ht.png b/images/countries/ht.png new file mode 100644 index 0000000..d058c3b Binary files /dev/null and b/images/countries/ht.png differ diff --git a/images/countries/hu.png b/images/countries/hu.png new file mode 100644 index 0000000..dc4eef1 Binary files /dev/null and b/images/countries/hu.png differ diff --git a/images/countries/id.png b/images/countries/id.png new file mode 100644 index 0000000..95e9ce3 Binary files /dev/null and b/images/countries/id.png differ diff --git a/images/countries/ie.png b/images/countries/ie.png new file mode 100644 index 0000000..1943e6b Binary files /dev/null and b/images/countries/ie.png differ diff --git a/images/countries/il.png b/images/countries/il.png new file mode 100644 index 0000000..a9161bb Binary files /dev/null and b/images/countries/il.png differ diff --git a/images/countries/in.png b/images/countries/in.png new file mode 100644 index 0000000..1e404ac Binary files /dev/null and b/images/countries/in.png differ diff --git a/images/countries/iq.png b/images/countries/iq.png new file mode 100644 index 0000000..1374301 Binary files /dev/null and b/images/countries/iq.png differ diff --git a/images/countries/ir.png b/images/countries/ir.png new file mode 100644 index 0000000..a6f4903 Binary files /dev/null and b/images/countries/ir.png differ diff --git a/images/countries/is.png b/images/countries/is.png new file mode 100644 index 0000000..9ce9864 Binary files /dev/null and b/images/countries/is.png differ diff --git a/images/countries/it.png b/images/countries/it.png new file mode 100644 index 0000000..4a4ba95 Binary files /dev/null and b/images/countries/it.png differ diff --git a/images/countries/jm.png b/images/countries/jm.png new file mode 100644 index 0000000..4274119 Binary files /dev/null and b/images/countries/jm.png differ diff --git a/images/countries/jo.png b/images/countries/jo.png new file mode 100644 index 0000000..17e4481 Binary files /dev/null and b/images/countries/jo.png differ diff --git a/images/countries/jp.png b/images/countries/jp.png new file mode 100644 index 0000000..8b52fa8 Binary files /dev/null and b/images/countries/jp.png differ diff --git a/images/countries/ke.png b/images/countries/ke.png new file mode 100644 index 0000000..7bc3858 Binary files /dev/null and b/images/countries/ke.png differ diff --git a/images/countries/kg.png b/images/countries/kg.png new file mode 100644 index 0000000..b176e4f Binary files /dev/null and b/images/countries/kg.png differ diff --git a/images/countries/kh.png b/images/countries/kh.png new file mode 100644 index 0000000..9c94193 Binary files /dev/null and b/images/countries/kh.png differ diff --git a/images/countries/ki.png b/images/countries/ki.png new file mode 100644 index 0000000..fdc58fe Binary files /dev/null and b/images/countries/ki.png differ diff --git a/images/countries/kp.png b/images/countries/kp.png new file mode 100644 index 0000000..405332c Binary files /dev/null and b/images/countries/kp.png differ diff --git a/images/countries/kr.png b/images/countries/kr.png new file mode 100644 index 0000000..0df561a Binary files /dev/null and b/images/countries/kr.png differ diff --git a/images/countries/ky.png b/images/countries/ky.png new file mode 100644 index 0000000..ae2ba3e Binary files /dev/null and b/images/countries/ky.png differ diff --git a/images/countries/kz.png b/images/countries/kz.png new file mode 100644 index 0000000..eb7b9be Binary files /dev/null and b/images/countries/kz.png differ diff --git a/images/countries/lb.png b/images/countries/lb.png new file mode 100644 index 0000000..44f9e1b Binary files /dev/null and b/images/countries/lb.png differ diff --git a/images/countries/lc.png b/images/countries/lc.png new file mode 100644 index 0000000..6b0389a Binary files /dev/null and b/images/countries/lc.png differ diff --git a/images/countries/lk.png b/images/countries/lk.png new file mode 100644 index 0000000..2f2c48b Binary files /dev/null and b/images/countries/lk.png differ diff --git a/images/countries/lt.png b/images/countries/lt.png new file mode 100644 index 0000000..c6252ce Binary files /dev/null and b/images/countries/lt.png differ diff --git a/images/countries/lu.png b/images/countries/lu.png new file mode 100644 index 0000000..6a80e6e Binary files /dev/null and b/images/countries/lu.png differ diff --git a/images/countries/lv.png b/images/countries/lv.png new file mode 100644 index 0000000..925ae28 Binary files /dev/null and b/images/countries/lv.png differ diff --git a/images/countries/ly.png b/images/countries/ly.png new file mode 100644 index 0000000..8741c4c Binary files /dev/null and b/images/countries/ly.png differ diff --git a/images/countries/ma.png b/images/countries/ma.png new file mode 100644 index 0000000..a5d9234 Binary files /dev/null and b/images/countries/ma.png differ diff --git a/images/countries/mc.png b/images/countries/mc.png new file mode 100644 index 0000000..8dd6d29 Binary files /dev/null and b/images/countries/mc.png differ diff --git a/images/countries/md.png b/images/countries/md.png new file mode 100644 index 0000000..9d9d278 Binary files /dev/null and b/images/countries/md.png differ diff --git a/images/countries/mg.png b/images/countries/mg.png new file mode 100644 index 0000000..e93f20e Binary files /dev/null and b/images/countries/mg.png differ diff --git a/images/countries/mn.png b/images/countries/mn.png new file mode 100644 index 0000000..9ce7bc9 Binary files /dev/null and b/images/countries/mn.png differ diff --git a/images/countries/mo.png b/images/countries/mo.png new file mode 100644 index 0000000..21497e9 Binary files /dev/null and b/images/countries/mo.png differ diff --git a/images/countries/mp.png b/images/countries/mp.png new file mode 100644 index 0000000..9523df6 Binary files /dev/null and b/images/countries/mp.png differ diff --git a/images/countries/ms.png b/images/countries/ms.png new file mode 100644 index 0000000..f92b84d Binary files /dev/null and b/images/countries/ms.png differ diff --git a/images/countries/mt.png b/images/countries/mt.png new file mode 100644 index 0000000..7f35e82 Binary files /dev/null and b/images/countries/mt.png differ diff --git a/images/countries/mx.png b/images/countries/mx.png new file mode 100644 index 0000000..5d481f0 Binary files /dev/null and b/images/countries/mx.png differ diff --git a/images/countries/my.png b/images/countries/my.png new file mode 100644 index 0000000..9fa6f81 Binary files /dev/null and b/images/countries/my.png differ diff --git a/images/countries/mz.png b/images/countries/mz.png new file mode 100644 index 0000000..5e6e87b Binary files /dev/null and b/images/countries/mz.png differ diff --git a/images/countries/na.png b/images/countries/na.png new file mode 100644 index 0000000..83d63cf Binary files /dev/null and b/images/countries/na.png differ diff --git a/images/countries/nc.png b/images/countries/nc.png new file mode 100644 index 0000000..32eb190 Binary files /dev/null and b/images/countries/nc.png differ diff --git a/images/countries/nf.png b/images/countries/nf.png new file mode 100644 index 0000000..efdc438 Binary files /dev/null and b/images/countries/nf.png differ diff --git a/images/countries/nl.png b/images/countries/nl.png new file mode 100644 index 0000000..99b5e13 Binary files /dev/null and b/images/countries/nl.png differ diff --git a/images/countries/no.png b/images/countries/no.png new file mode 100644 index 0000000..0199b30 Binary files /dev/null and b/images/countries/no.png differ diff --git a/images/countries/np.png b/images/countries/np.png new file mode 100644 index 0000000..254744a Binary files /dev/null and b/images/countries/np.png differ diff --git a/images/countries/nr.png b/images/countries/nr.png new file mode 100644 index 0000000..7f45229 Binary files /dev/null and b/images/countries/nr.png differ diff --git a/images/countries/nz.png b/images/countries/nz.png new file mode 100644 index 0000000..841bb97 Binary files /dev/null and b/images/countries/nz.png differ diff --git a/images/countries/om.png b/images/countries/om.png new file mode 100644 index 0000000..ad114e3 Binary files /dev/null and b/images/countries/om.png differ diff --git a/images/countries/pa.png b/images/countries/pa.png new file mode 100644 index 0000000..26d5b1a Binary files /dev/null and b/images/countries/pa.png differ diff --git a/images/countries/pe.png b/images/countries/pe.png new file mode 100644 index 0000000..41794a0 Binary files /dev/null and b/images/countries/pe.png differ diff --git a/images/countries/pf.png b/images/countries/pf.png new file mode 100644 index 0000000..cf744fa Binary files /dev/null and b/images/countries/pf.png differ diff --git a/images/countries/ph.png b/images/countries/ph.png new file mode 100644 index 0000000..24007ab Binary files /dev/null and b/images/countries/ph.png differ diff --git a/images/countries/pk.png b/images/countries/pk.png new file mode 100644 index 0000000..ff220ee Binary files /dev/null and b/images/countries/pk.png differ diff --git a/images/countries/pl.png b/images/countries/pl.png new file mode 100644 index 0000000..e275d90 Binary files /dev/null and b/images/countries/pl.png differ diff --git a/images/countries/pm.png b/images/countries/pm.png new file mode 100644 index 0000000..6f9bf90 Binary files /dev/null and b/images/countries/pm.png differ diff --git a/images/countries/pr.png b/images/countries/pr.png new file mode 100644 index 0000000..0671638 Binary files /dev/null and b/images/countries/pr.png differ diff --git a/images/countries/pt.png b/images/countries/pt.png new file mode 100644 index 0000000..8d32759 Binary files /dev/null and b/images/countries/pt.png differ diff --git a/images/countries/py.png b/images/countries/py.png new file mode 100644 index 0000000..bac8948 Binary files /dev/null and b/images/countries/py.png differ diff --git a/images/countries/qa.png b/images/countries/qa.png new file mode 100644 index 0000000..6cf12f1 Binary files /dev/null and b/images/countries/qa.png differ diff --git a/images/countries/ro.png b/images/countries/ro.png new file mode 100644 index 0000000..8d36c04 Binary files /dev/null and b/images/countries/ro.png differ diff --git a/images/countries/ru.png b/images/countries/ru.png new file mode 100644 index 0000000..2b7093c Binary files /dev/null and b/images/countries/ru.png differ diff --git a/images/countries/sa.png b/images/countries/sa.png new file mode 100644 index 0000000..f7982cc Binary files /dev/null and b/images/countries/sa.png differ diff --git a/images/countries/sb.png b/images/countries/sb.png new file mode 100644 index 0000000..37f5c89 Binary files /dev/null and b/images/countries/sb.png differ diff --git a/images/countries/sd.png b/images/countries/sd.png new file mode 100644 index 0000000..32398df Binary files /dev/null and b/images/countries/sd.png differ diff --git a/images/countries/se.png b/images/countries/se.png new file mode 100644 index 0000000..df1775d Binary files /dev/null and b/images/countries/se.png differ diff --git a/images/countries/sg.png b/images/countries/sg.png new file mode 100644 index 0000000..51dc5a8 Binary files /dev/null and b/images/countries/sg.png differ diff --git a/images/countries/si.png b/images/countries/si.png new file mode 100644 index 0000000..e8f8743 Binary files /dev/null and b/images/countries/si.png differ diff --git a/images/countries/sk.png b/images/countries/sk.png new file mode 100644 index 0000000..d605271 Binary files /dev/null and b/images/countries/sk.png differ diff --git a/images/countries/sl.png b/images/countries/sl.png new file mode 100644 index 0000000..beafb9f Binary files /dev/null and b/images/countries/sl.png differ diff --git a/images/countries/so.png b/images/countries/so.png new file mode 100644 index 0000000..d087512 Binary files /dev/null and b/images/countries/so.png differ diff --git a/images/countries/sr.png b/images/countries/sr.png new file mode 100644 index 0000000..e06354f Binary files /dev/null and b/images/countries/sr.png differ diff --git a/images/countries/sy.png b/images/countries/sy.png new file mode 100644 index 0000000..be08e92 Binary files /dev/null and b/images/countries/sy.png differ diff --git a/images/countries/tc.png b/images/countries/tc.png new file mode 100644 index 0000000..e24e1ff Binary files /dev/null and b/images/countries/tc.png differ diff --git a/images/countries/tg.png b/images/countries/tg.png new file mode 100644 index 0000000..74ed93c Binary files /dev/null and b/images/countries/tg.png differ diff --git a/images/countries/th.png b/images/countries/th.png new file mode 100644 index 0000000..5e15d0e Binary files /dev/null and b/images/countries/th.png differ diff --git a/images/countries/tn.png b/images/countries/tn.png new file mode 100644 index 0000000..f05f134 Binary files /dev/null and b/images/countries/tn.png differ diff --git a/images/countries/to.png b/images/countries/to.png new file mode 100644 index 0000000..b53e46f Binary files /dev/null and b/images/countries/to.png differ diff --git a/images/countries/tp.png b/images/countries/tp.png new file mode 100644 index 0000000..f8b4dca Binary files /dev/null and b/images/countries/tp.png differ diff --git a/images/countries/tr.png b/images/countries/tr.png new file mode 100644 index 0000000..0ecd06c Binary files /dev/null and b/images/countries/tr.png differ diff --git a/images/countries/tt.png b/images/countries/tt.png new file mode 100644 index 0000000..927700c Binary files /dev/null and b/images/countries/tt.png differ diff --git a/images/countries/tv.png b/images/countries/tv.png new file mode 100644 index 0000000..433deec Binary files /dev/null and b/images/countries/tv.png differ diff --git a/images/countries/tw.png b/images/countries/tw.png new file mode 100644 index 0000000..2e82e66 Binary files /dev/null and b/images/countries/tw.png differ diff --git a/images/countries/tz.png b/images/countries/tz.png new file mode 100644 index 0000000..c668335 Binary files /dev/null and b/images/countries/tz.png differ diff --git a/images/countries/ua.png b/images/countries/ua.png new file mode 100644 index 0000000..db85d97 Binary files /dev/null and b/images/countries/ua.png differ diff --git a/images/countries/ug.png b/images/countries/ug.png new file mode 100644 index 0000000..5c87b92 Binary files /dev/null and b/images/countries/ug.png differ diff --git a/images/countries/us.png b/images/countries/us.png new file mode 100644 index 0000000..652cb3e Binary files /dev/null and b/images/countries/us.png differ diff --git a/images/countries/uy.png b/images/countries/uy.png new file mode 100644 index 0000000..aec1979 Binary files /dev/null and b/images/countries/uy.png differ diff --git a/images/countries/va.png b/images/countries/va.png new file mode 100644 index 0000000..0fc5b5f Binary files /dev/null and b/images/countries/va.png differ diff --git a/images/countries/ve.png b/images/countries/ve.png new file mode 100644 index 0000000..0a90e47 Binary files /dev/null and b/images/countries/ve.png differ diff --git a/images/countries/vg.png b/images/countries/vg.png new file mode 100644 index 0000000..1ff7ca1 Binary files /dev/null and b/images/countries/vg.png differ diff --git a/images/countries/vi.png b/images/countries/vi.png new file mode 100644 index 0000000..c7e8572 Binary files /dev/null and b/images/countries/vi.png differ diff --git a/images/countries/vn.png b/images/countries/vn.png new file mode 100644 index 0000000..31af3d5 Binary files /dev/null and b/images/countries/vn.png differ diff --git a/images/countries/ws.png b/images/countries/ws.png new file mode 100644 index 0000000..654b842 Binary files /dev/null and b/images/countries/ws.png differ diff --git a/images/countries/ye.png b/images/countries/ye.png new file mode 100644 index 0000000..4c547cc Binary files /dev/null and b/images/countries/ye.png differ diff --git a/images/countries/yu.png b/images/countries/yu.png new file mode 100644 index 0000000..9947f62 Binary files /dev/null and b/images/countries/yu.png differ diff --git a/images/countries/za.png b/images/countries/za.png new file mode 100644 index 0000000..f9745fa Binary files /dev/null and b/images/countries/za.png differ diff --git a/images/countries/zw.png b/images/countries/zw.png new file mode 100644 index 0000000..7e69c9e Binary files /dev/null and b/images/countries/zw.png differ diff --git a/images/device.png b/images/device.png new file mode 100644 index 0000000..eb153a3 Binary files /dev/null and b/images/device.png differ diff --git a/images/document.png b/images/document.png new file mode 100644 index 0000000..62ea2ee Binary files /dev/null and b/images/document.png differ diff --git a/images/door.png b/images/door.png new file mode 100644 index 0000000..6720965 Binary files /dev/null and b/images/door.png differ diff --git a/images/files.png b/images/files.png new file mode 100644 index 0000000..76864d4 Binary files /dev/null and b/images/files.png differ diff --git a/images/go.png b/images/go.png new file mode 100644 index 0000000..78dfcf8 Binary files /dev/null and b/images/go.png differ diff --git a/images/hard-drive.png b/images/hard-drive.png new file mode 100644 index 0000000..f3da3d2 Binary files /dev/null and b/images/hard-drive.png differ diff --git a/images/help.png b/images/help.png new file mode 100644 index 0000000..674a8e9 Binary files /dev/null and b/images/help.png differ diff --git a/images/home.png b/images/home.png new file mode 100644 index 0000000..aa6a5c8 Binary files /dev/null and b/images/home.png differ diff --git a/images/index.php b/images/index.php new file mode 100644 index 0000000..9d533fc --- /dev/null +++ b/images/index.php @@ -0,0 +1,36 @@ + + +

phpLDAPadmin icons

+
+
+  '; + if( $counter % 15 == 0 ) + echo '

'; + flush(); +} + +?> +
+ + diff --git a/images/info.png b/images/info.png new file mode 100644 index 0000000..092335a Binary files /dev/null and b/images/info.png differ diff --git a/images/ldap-server.png b/images/ldap-server.png new file mode 100644 index 0000000..d40900d Binary files /dev/null and b/images/ldap-server.png differ diff --git a/images/lock.png b/images/lock.png index ff35893..6af707e 100644 Binary files a/images/lock.png and b/images/lock.png differ diff --git a/images/logo.jpg b/images/logo.jpg index 6eadc24..845dcd4 100644 Binary files a/images/logo.jpg and b/images/logo.jpg differ diff --git a/images/mail_account.png b/images/mail_account.png new file mode 100644 index 0000000..6d0dc92 Binary files /dev/null and b/images/mail_account.png differ diff --git a/images/mail_alias.png b/images/mail_alias.png new file mode 100644 index 0000000..4edbee4 Binary files /dev/null and b/images/mail_alias.png differ diff --git a/images/n.png b/images/n.png new file mode 100644 index 0000000..a035c34 Binary files /dev/null and b/images/n.png differ diff --git a/images/network.png b/images/network.png new file mode 100644 index 0000000..008b03f Binary files /dev/null and b/images/network.png differ diff --git a/images/paypal-donate.png b/images/paypal-donate.png new file mode 100644 index 0000000..10d5628 Binary files /dev/null and b/images/paypal-donate.png differ diff --git a/images/question.png b/images/question.png deleted file mode 100644 index a0281f2..0000000 Binary files a/images/question.png and /dev/null differ diff --git a/images/rename.png b/images/rename.png new file mode 100644 index 0000000..320d2e5 Binary files /dev/null and b/images/rename.png differ diff --git a/images/server-settings.png b/images/server-settings.png new file mode 100644 index 0000000..4d8f1a1 Binary files /dev/null and b/images/server-settings.png differ diff --git a/images/server-small.png b/images/server-small.png new file mode 100644 index 0000000..3d1e0f6 Binary files /dev/null and b/images/server-small.png differ diff --git a/images/smile.png b/images/smile.png new file mode 100644 index 0000000..3eb3152 Binary files /dev/null and b/images/smile.png differ diff --git a/images/tools-no.png b/images/tools-no.png new file mode 100644 index 0000000..96a04d1 Binary files /dev/null and b/images/tools-no.png differ diff --git a/images/tools.png b/images/tools.png new file mode 100644 index 0000000..b391a0e Binary files /dev/null and b/images/tools.png differ diff --git a/images/unknown.png b/images/unknown.png new file mode 100644 index 0000000..2164ac1 Binary files /dev/null and b/images/unknown.png differ diff --git a/index.php b/index.php index f724327..860732f 100644 --- a/index.php +++ b/index.php @@ -1,4 +1,6 @@ @@ -9,7 +11,7 @@ PHP is not installed on your web server!!! *******************************************/ -require 'common.php'; +require './common.php'; if( ! file_exists(realpath( 'config.php' )) ) { @@ -26,10 +28,7 @@ if( ! file_exists(realpath( 'config.php' )) ) {

-You need to configure phpLDAPadmin. Edit the file 'config.php' to do so.
-
-An example config file is provided in 'config.php.example' - +
@@ -69,6 +68,7 @@ echo "\n"; */ function check_config() { + global $lang; /* Make sure their PHP version is current enough */ if( strcmp( phpversion(), REQUIRED_PHP_VERSION ) < 0 ) { pla_error( "phpLDAPadmin requires PHP version 4.1.0 or greater. You are using " . phpversion() ); @@ -78,27 +78,25 @@ function check_config() if( ! extension_loaded( 'ldap' ) ) { pla_error( "Your install of PHP appears to be missing LDAP support. Please install " . - "LDAP support before using phpLDAPadmin." ); + "LDAP support before using phpLDAPadmin. (Don't forget to restart your web server afterwards)" ); return false; } - /* Make sure they have all the functions we will need */ - $required_functions = array( 'utf8_encode', 'utf8_decode', 'htmlspecialchars' ); - foreach( $required_functions as $function ) { - if( ! function_exists( $function ) ) { - pla_error( "Your install of PHP appears to be missing the function '$function()' " . - "phpLDAPadmin requires this function to work properly." ); - return false; - } - } - /* Make sure the config file is readable */ //if( ! is_readable( 'config.php' ) ) if( ! is_readable( realpath( 'config.php' ) ) ) { - echo "The config file 'config.php' is not readable. Please check its permissions."; + pla_error( "The config file 'config.php' is not readable. Please check its permissions." ); return false; } + // Make sure their session save path is writable, if they are using a file system session module, that is. + if( 0 == strcasecmp( "Files", session_module_name() && ! is_writable( realpath( session_save_path() ) ) ) ) { + pla_error( "Your PHP session configuration is incorrect. Please check the value of session.save_path + in your php.ini to ensure that the directory specified there exists and is writable. + The current setting of \"". session_save_path() . "\" is un-writable by the web server." ); + return false; + } + /* check for syntax errors in config.php */ // capture the result of including the file with output buffering ob_start(); @@ -153,38 +151,48 @@ function check_config() /* check the existence of the servers array */ require 'config.php'; - if( ! is_array( $servers ) || count( $servers ) == 0 ) { - echo "Your config.php is missing the servers array or the array is empty. "; - echo " Please see the sample file config.php.example "; + if( ! isset( $servers ) || ! is_array( $servers ) || count( $servers ) == 0 ) { + pla_error( "Your config.php is missing the \$servers array or the \$servers array is empty. + Please see the sample file config.php.example ", false ); return false; } /* Make sure there is at least one server in the array */ $count = 0; foreach( $servers as $i => $server ) - if( $server['host'] ) + if( isset( $server['host'] ) ) $count++; if( $count == 0 ) { - echo "None of the " . count($servers) . " servers in your \$servers array is "; - echo "active in config.php. phpLDAPadmin cannot proceed util you correct this."; + pla_error( "None of the " . count($servers) . " servers in your \$servers configuration is + active in config.php. At least one of your servers must set the 'host' directive. + Example:
\$servers['host'] = \"ldap.example.com\";
+ phpLDAPadmin cannot proceed util you correct this.", false ); return false; } + // Check that 'base' is present on all serve entries + foreach( $servers as $id => $server ) { + if( isset( $server['host'] ) && isset( $server['name'] ) ) + isset( $server['base'] ) or pla_error ( "Your configuration has an error. You omitted the 'base' directive + on server number $id. Your server entry must have a 'base' directive + even if it's empty ('')." ); + } + // Check each of the servers in the servers array foreach( $servers as $id => $server ) { if( isset( $server['host'] ) ) { // Make sure they specified an auth_type if( ! isset( $server['auth_type'] ) ) { - echo "Your configuratoin has an error. You omitted the 'auth_type' directive on server number $id"; - echo "'auth_type' must be set, and it must be one of 'config' or 'form'."; + pla_error( "Your configuratoin has an error. You omitted the 'auth_type' directive on server number $id + 'auth_type' must be set, and it must be one of 'config', 'cookie', or 'session'.", false ); return false; } // Make sure they specified a correct auth_type - if( $server['auth_type'] != 'config' && $server['auth_type'] != 'form' ) { - echo "You specified an invalid 'auth_type' (" . htmlspecialchars( $server['auth_type'] ) . ") "; - echo "for server number $id in your configuration."; + if( ! in_array( $server['auth_type'], array( 'config', 'cookie', 'session' ) ) ) { + global $lang; + pla_error( sprintf( $lang['error_auth_type_config'], htmlspecialchars( $server['auth_type'] ) ) ); return false; } } diff --git a/lang/Makefile b/lang/Makefile index cf31591..7d24b7a 100644 --- a/lang/Makefile +++ b/lang/Makefile @@ -1,31 +1,43 @@ # # This Makefile (lang/Makefile) converts the source lang files to UTF8 # coding. You need iconv installed to use it. -# +# $Header: /cvsroot/phpldapadmin/phpldapadmin/lang/Makefile,v 1.24 2004/12/09 14:12:16 uugdave Exp $ # ToDo: detect the encoding in the "source" # # posible detect of the language # echo `cat de.php | grep "logged_in_as" | sed s/".*="//g | file - | sed s/".*: "//g | sed s/" .*"//g` # # or -# +# # maybe like this # cat LANG.php | sed s/"^\/"//g | sed s/".*= "//g | sed s/";.*"//g | grep -v "<"| file - | sed s/".*: "//g | sed s/" .*"//g -# + +# Where to place the recoded language files DESTDIR=./recoded +# Path to the iconv binary ICONV=iconv -# php is not on all systems in /usr/bin/php +# Path to the PHP binary PHP=php TARGETS=${DESTDIR}/auto.php \ ${DESTDIR}/ca.php \ + ${DESTDIR}/cz.php \ ${DESTDIR}/de.php \ ${DESTDIR}/en.php \ ${DESTDIR}/es.php \ ${DESTDIR}/fr.php \ + ${DESTDIR}/hu.php \ ${DESTDIR}/it.php \ + ${DESTDIR}/ja.php \ ${DESTDIR}/nl.php \ - ${DESTDIR}/ru.php + ${DESTDIR}/pl.php \ + ${DESTDIR}/pt-br.php \ + ${DESTDIR}/ru.php \ + ${DESTDIR}/sv.php \ + ${DESTDIR}/zz.php \ + ${DESTDIR}/zzz.php +# OFF zh-tw.php +# ${DESTDIR}/zh-tw.php \ default: @echo "usage:" @@ -38,10 +50,10 @@ iconvlang: prepare ${TARGETS} syntax @echo "Done!" syntax: - @echo "Starting syntax" + @echo "Starting syntax checking..." @which $(PHP) >/dev/null 2>&1 || ( echo "You must have '$(PHP)' installed to use this Makefile, but I could not find it in your path!" && exit 1 ) @for i in ${TARGETS}; do ${PHP} -l $$i >/dev/null 2>&1 || ( echo "Syntax errors found in $$i!" && exit 1 ); done - @echo "Ending syntax" + @echo "Done" prepare: @echo "Starting prepare" @@ -63,6 +75,11 @@ ${DESTDIR}/ca.php: ca.php @echo "Fixing encoding ca.php to UTF8 "${DESTDIR}/ca.php @iconv -f iso8859-1 -t utf8 ca.php > ${DESTDIR}/ca.php +${DESTDIR}/cz.php: cz.php + @echo "Fixing encoding cz.php to UTF8 "${DESTDIR}/cz.php + @iconv -f iso8859-2 -t utf8 cz.php > ${DESTDIR}/cz.php + + ${DESTDIR}/de.php: de.php @echo "Fixing encoding de.php to UTF8 "${DESTDIR}/de.php @iconv -f iso8859-1 -t utf8 de.php > ${DESTDIR}/de.php @@ -79,14 +96,49 @@ ${DESTDIR}/fr.php: fr.php @echo "Fixing encoding fr.php to UTF8 "${DESTDIR}/fr.php @iconv -f iso8859-1 -t utf8 fr.php > ${DESTDIR}/fr.php +${DESTDIR}/hu.php: hu.php + @echo "Fixing encoding hu.php to UTF8 "${DESTDIR}/hu.php + #@iconv -f iso8859-2 -t utf8 hu.php > ${DESTDIR}/hu.php + cp hu.php ${DESTDIR}/. + ${DESTDIR}/it.php: it.php @echo "Fixing encoding it.php to UTF8 "${DESTDIR}/it.php @iconv -f iso8859-1 -t utf8 it.php > ${DESTDIR}/it.php +${DESTDIR}/ja.php: ja.php + @echo "Copying only the ja.php" + @cp ja.php ${DESTDIR}/. + ${DESTDIR}/nl.php: nl.php @echo "Fixing encoding nl.php to UTF8 "${DESTDIR}/nl.php @iconv -f iso8859-1 -t utf8 nl.php > ${DESTDIR}/nl.php +${DESTDIR}/pl.php: pl.php + @echo "Fixing encoding pl.php to UTF8 "${DESTDIR}/pl.php + @iconv -f iso8859-2 -t utf8 pl.php > ${DESTDIR}/pl.php + +${DESTDIR}/pt-br.php: pt-br.php + @echo "Fixing encoding pt-br.php to UTF8 "${DESTDIR}/pt-br.php + @iconv -f iso8859-1 -t utf8 pt-br.php > ${DESTDIR}/pt-br.php + +${DESTDIR}/sv.php: sv.php + @echo "Fixing encoding sv.php to UTF8 "${DESTDIR}/sv.php + @iconv -f iso8859-1 -t utf8 sv.php > ${DESTDIR}/sv.php + ${DESTDIR}/ru.php: ru.php @echo "Fixing encoding ru.php to UTF8 "${DESTDIR}/ru.php - @iconv -f utf8 -t utf8 ru.php > ${DESTDIR}/ru.php \ No newline at end of file + @iconv -f utf8 -t utf8 ru.php > ${DESTDIR}/ru.php + +#${DESTDIR}/zh-tw.php: zh-tw.php +# @echo "Copying only the zh-tw.php" + # @iconv -f utf8 -t utf8 zh-tw.php ${DESTDIR}/zh-tw.php + # INTERNAL BUG COULDN CONVERT IT, SO WE COPY IT + # cp zh-tw.php ${DESTDIR}/zh-tw.php +${DESTDIR}/zz.php: zz.php + @echo "Copying only the zz.php" + @cp zz.php ${DESTDIR}/. + +${DESTDIR}/zzz.php: zzz.php + @echo "Copying only the zzz.php" + @cp zzz.php ${DESTDIR}/. + diff --git a/lang/auto.php b/lang/auto.php index 04d8c95..abc98fc 100644 --- a/lang/auto.php +++ b/lang/auto.php @@ -1,7 +1,8 @@ "ca" // catalan ," fr-"=>"fr" // fr-lu,fr-ca,... ," it "=>"it" // italien ," it-"=>"it" // for it-ch (italien swiss).. + ," ja "=>"ja" // japanese ," nl "=>"nl" // dutch - ," nl-"=>"nl" // for ne-be, only one? + ," nl-"=>"nl" // for ne-be, only one? + ," pl "=>"pl" // polish + ," pl-"=>"pl" // maybe exist + ," pt "=>"pt-br" // brazilian portuguese + ," pt-br"=>"pt-br" // brazilian portuguese ," ru "=>"ru" // russian ," ru-"=>"ru" // ru- exits? + ," sv "=>"sv" //swedish + ," sv-"=>"sv" // swedisch to );// all supported languages in this array // test @@ -39,4 +47,6 @@ foreach ($langSupport as $key=>$value) { } //echo "used:$useLang\n"; include realpath ("$useLang".".php");// this should include from recode/ position +$language=$useLang; +//echo "language:".$langugage; ?> diff --git a/lang/ca.php b/lang/ca.php index 42e4f2f..ee52247 100644 --- a/lang/ca.php +++ b/lang/ca.php @@ -1,7 +1,9 @@ + + * --- INSTRUCTIONS FOR TRANSLATORS --- + * + * If you want to write a new language file for your language, + * please submit the file on SourceForge: + * + * https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498548 + * + * Use the option "Check to Upload and Attach a File" at the bottom + * + * Thank you! + * + */ + +// Search form +$lang['simple_search_form_str'] = 'Rychlé vyhledávání'; +$lang['advanced_search_form_str'] = 'Roz¹íøené vyhledávání'; +$lang['server'] = 'Server'; +$lang['search_for_entries_whose'] = 'Vyhledat objekty kde'; +$lang['base_dn'] = 'Výchozí DN'; +$lang['search_scope'] = 'Oblast prohledávání'; +$lang['show_attributes'] = 'Zobrazovat atributy'; +$lang['Search'] = 'Vyhledat'; +$lang['predefined_search_str'] = 'Zvolte pøeddefinované vyhledávání'; +$lang['predefined_searches'] = 'Pøeddefinovaná vyhledávání'; +$lang['no_predefined_queries'] = 'V config.php nejsou definovány ¾ádné dotazy.'; + +// Tree browser +$lang['request_new_feature'] = 'Napi¹te si o novou funkci'; +$lang['report_bug'] = 'Nahlásit chybu'; +$lang['schema'] = 'schéma'; +$lang['search'] = 'vyhledat'; +$lang['create'] = 'vytvoøit'; +$lang['info'] = 'info'; +$lang['import'] = 'import'; +$lang['refresh'] = 'obnovit'; +$lang['logout'] = 'odhlásit se'; +$lang['create_new'] = 'Vytvoøit nový'; +$lang['view_schema_for'] = 'Zobrazit schéma pro'; +$lang['refresh_expanded_containers'] = 'Obnovit v¹echny otevøené slo¾ky'; +$lang['create_new_entry_on'] = 'Vytvoøit nový objekt v'; +$lang['new'] = 'nový'; +$lang['view_server_info'] = 'Zobrazit serverem poskytované informace'; +$lang['import_from_ldif'] = 'Importovat data ze souboru LDIF'; +$lang['logout_of_this_server'] = 'Odhlásit se od tohoto serveru'; +$lang['logged_in_as'] = 'Pøihlá¹en jako: '; +$lang['read_only'] = 'jen pro ètení'; +$lang['read_only_tooltip'] = 'Tento atribut byl administrátorem phpLDAPadminu oznaèen jako "jen pro ètení".'; +$lang['could_not_determine_root'] = 'Nepodaøilo se zjistit koøen Va¹eho LDAP stromu.'; +$lang['ldap_refuses_to_give_root'] = 'Zdá se, ¾e LDAP server je nastavený tak, ¾e nezobrazuje svùj koøen.'; +$lang['please_specify_in_config'] = 'Nastavte ho prosím v souboru config.php'; +$lang['create_new_entry_in'] = 'Vytvoøit nový objekt v'; +$lang['login_link'] = 'Pøihlásit se...'; +$lang['login'] = 'pøihlásit'; + +// Entry display +$lang['delete_this_entry'] = 'Smazat tento objekt'; +$lang['delete_this_entry_tooltip'] = 'Budete po¾ádáni o potvrzení tohoto rozhodnutí'; +$lang['copy_this_entry'] = 'Kopírovat tento objekt'; +$lang['copy_this_entry_tooltip'] = 'Okopíruje tento objekt do jiného umístìní, nového DN, nebo na jiný server'; +$lang['export'] = 'Export'; +$lang['export_tooltip'] = 'Ulo¾it pøepis objektu'; +$lang['export_subtree_tooltip'] = 'Ulo¾í pøepis tohoto objektu a v¹ech jeho potomkù'; +$lang['export_subtree'] = 'Exportovat podstrom'; +$lang['create_a_child_entry'] = 'Vytvoøit nového potomka'; +$lang['rename_entry'] = 'Pøejmenovat objekt'; +$lang['rename'] = 'Pøejmenovat'; +$lang['add'] = 'Pøidat'; +$lang['view'] = 'Zobrazit'; +$lang['view_one_child'] = 'Zobrazit potomka'; +$lang['view_children'] = 'Zobrazit potomky (%s)'; +$lang['add_new_attribute'] = 'Pøidat nový atribut'; +$lang['add_new_objectclass'] = 'Pøidat objectClass'; +$lang['hide_internal_attrs'] = 'Schovat interní atributy'; +$lang['show_internal_attrs'] = 'Zobrazit interní atributy'; +$lang['attr_name_tooltip'] = 'Klepnutím zobrazíte definièní schéma pro atribut typu \'%s\''; +$lang['none'] = '¾ádný'; +$lang['no_internal_attributes'] = '®ádné interní atributy'; +$lang['no_attributes'] = 'Tento objekt nemá atributy'; +$lang['save_changes'] = 'Ulo¾it zmìny'; +$lang['add_value'] = 'pøidat hodnotu'; +$lang['add_value_tooltip'] = 'Pøidá dal¹í hodnotu k atributu \'%s\''; +$lang['refresh_entry'] = 'Obnovit'; +$lang['refresh_this_entry'] = 'Obnovit tento objekt'; +$lang['delete_hint'] = 'Rada: Pro smazání atributu vyprázdìte textové políèko a klepnìte na Ulo¾it.'; +$lang['attr_schema_hint'] = 'Rada: K zobrazení schémata pro atribut klepnìte na název atributu.'; +$lang['attrs_modified'] = 'Nìkteré atributy (%s) byly modifikováný a jsou zvýraznìny dole.'; +$lang['attr_modified'] = 'Atribut (%s) byl zmìnìn a je zvýraznìn dole.'; +$lang['viewing_read_only'] = 'Prohlí¾ení objekt v módu "pouze pro ètení".'; +$lang['no_new_attrs_available'] = 'nejsou dostupné ¾ádné nové atributy pro tento objekt'; +$lang['no_new_binary_attrs_available'] = 'nejsou dostupné ¾ádné nové binární atributy pro tento objekt'; +$lang['binary_value'] = 'Binarní hodnota'; +$lang['add_new_binary_attr'] = 'Pøidat nový binarní atribut'; +$lang['alias_for'] = 'Poznámka: \'%s\' je aliasem pro \'%s\''; +$lang['download_value'] = 'stáhnout data'; +$lang['delete_attribute'] = 'smazat atribut'; +$lang['true'] = 'true'; +$lang['false'] = 'false'; +$lang['none_remove_value'] = '¾ádný, odebrat hodnotu'; +$lang['really_delete_attribute'] = 'Skuteènì smazat atribut'; +$lang['add_new_value'] = 'Pøidat novou hodnotu'; + +// Schema browser +$lang['the_following_objectclasses'] = 'Následující objectClass jsou podporovány tímto LDAP serverem.'; +$lang['the_following_attributes'] = 'Následující attributeType jsou podporovány tímto LDAP serverem.'; +$lang['the_following_matching'] = 'Následující kritéria výbìru jsou podporovány tímto LDAP serverem.'; +$lang['the_following_syntaxes'] = 'Následující syntaxe jsou podporovány tímto LDAP serverem.'; +$lang['schema_retrieve_error_1']='Server plnì nepodporuje LDAP protocol.'; +$lang['schema_retrieve_error_2']='Va¹e verze PHP korektnì neprovede tento dotaz.'; +$lang['schema_retrieve_error_3']='Nebo mo¾ná phpLDAPadmin neví jak získat schéma pro Vá¹ server.'; +$lang['jump_to_objectclass'] = 'Jdi na objectClass'; +$lang['jump_to_attr'] = 'Jdi na typ atributu'; +$lang['jump_to_matching_rule'] = 'Jdi na Matching Rule'; +$lang['schema_for_server'] = 'Schéma serveru'; +$lang['required_attrs'] = 'Vy¾adované atributy'; +$lang['optional_attrs'] = 'Volitelné atributy'; +$lang['optional_binary_attrs'] = 'Volitelné binární atributy'; +$lang['OID'] = 'OID'; +$lang['aliases']='Aliasy'; +$lang['desc'] = 'Popis'; +$lang['no_description']='¾ádný popis'; +$lang['name'] = 'Název'; +$lang['equality']='Equality'; +$lang['is_obsolete'] = 'Tato objectClass je zastaralá'; +$lang['inherits'] = 'Odvozeno od objectClass'; +$lang['inherited_from'] = 'Odvozeno od objectClass'; +$lang['parent_to'] = 'Rodièovská objectClass'; +$lang['jump_to_this_oclass'] = 'Jdi na definici této objectClass'; +$lang['matching_rule_oid'] = 'Výbìrové kritérium OID'; +$lang['syntax_oid'] = 'Syntaxe OID'; +$lang['not_applicable'] = 'nepou¾itelný'; +$lang['not_specified'] = 'nespecifikovaný'; +$lang['character']='znak'; +$lang['characters']='znakù'; +$lang['used_by_objectclasses']='Pou¾íváno tìmito objectClass'; +$lang['used_by_attributes']='Pou¾ívají atributy'; +$lang['maximum_length']='Maximální délka'; +$lang['attributes']='Typy atributù'; +$lang['syntaxes']='Syntaxe'; +$lang['matchingrules']='Matching Rules'; +$lang['oid']='OID'; +$lang['obsolete']='Zastaralé'; +$lang['ordering']='Øazení'; +$lang['substring_rule']='Substring Rule'; +$lang['single_valued']='Single Valued'; +$lang['collective']='Collective'; +$lang['user_modification']='User Modification'; +$lang['usage']='Pou¾ití'; +$lang['could_not_retrieve_schema_from']='Nelze získat schéma z'; +$lang['type']='Typ'; + +// Deleting entries +$lang['entry_deleted_successfully'] = 'Objekt \'%s\' byl úspì¹nì odstranìn.'; +$lang['you_must_specify_a_dn'] = 'Musíte zadat DN'; +$lang['could_not_delete_entry'] = 'Nebylo mo¾né odstranit objekt: %s'; +$lang['no_such_entry'] = 'Objekt neexistuje: %s'; +$lang['delete_dn'] = 'Smazat %s'; +$lang['permanently_delete_children'] = 'Odstranit také v¹echny potomky?'; +$lang['entry_is_root_sub_tree'] = 'Tento objekt je koøenem podstromu, který obsahuje %s objektù.'; +$lang['view_entries'] = 'zobrazit objekty'; +$lang['confirm_recursive_delete'] = 'phpLDAPadmin rekurzivnì odstraní tento objekt a v¹ech jeho %s potomkù. Pozornì si prohlédnìte seznam objektù, které tato operace odstraní. Pøejete si pokraèovat?'; +$lang['confirm_recursive_delete_note'] = 'Poznámka: tato operace mù¾e mít fatální následky a nelze ji vrátit zpìt. Speciální pozornost vìnujte aliasùm, odkazùm a ostatním vìcem, které mù¾ou zpùsobit problémy.'; +$lang['delete_all_x_objects'] = 'Smazat v¹ech %s objektù'; +$lang['recursive_delete_progress'] = 'Prùbìh rekurzivního odstranìní'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'Objekt %s a jeho podstrom byly úspì¹nì odstranìny.'; +$lang['failed_to_delete_entry'] = 'Nepodaøilo se odstranit objekt %s'; +$lang['list_of_entries_to_be_deleted'] = 'Seznam objektù k odstranìní:'; +$lang['sure_permanent_delete_object']='Jste si skuteènì jisti, ¾e chcete odstranit tento objekt?'; +$lang['dn'] = 'DN'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'Atribut "%s" je v konfiguraci phpLDAPadminu oznaèen jako "jen pro ètení".'; +$lang['no_attr_specified'] = 'Nebylo zadáno jméno atributu.'; +$lang['no_dn_specified'] = 'Nebylo zadáno DN'; + +// Adding attributes +$lang['left_attr_blank'] = 'Nevyplnili jste hodnotu atributu. Vra»te se zpìt a akci opakujte.'; +$lang['failed_to_add_attr'] = 'Pøidání atributu selhalo.'; +$lang['file_empty'] = 'Soubor, který jste zvolili je buï prázdný nebo neexistuje. Vra»te se prosím zpìt a akci opakujte.'; +$lang['invalid_file'] = 'Bezpeènostní chyba: Soubor, který uploadujete mù¾e být závadný.'; +$lang['warning_file_uploads_disabled'] = 'V konfiguraci PHP jsou zakázány uploady souborù. Pro pokraèování upravte prosím php.ini.'; +$lang['uploaded_file_too_big'] = 'Soubor, který se pokou¹eli ulo¾it je pøíli¹ veliký. Upravte prosím hodnotu upload_max_size v php.ini.'; +$lang['uploaded_file_partial'] = 'Pøi uploadu souboru do¹lo zøejmì k selhání sítì, nebo» se podaøilo získat jen èást souboru.'; +$lang['max_file_size'] = 'Maximální velikost souboru: %s'; + +// Updating values +$lang['modification_successful'] = 'Úprava probìhla úspì¹nì!'; +$lang['change_password_new_login'] = 'Kvùli zmìnì svého hesla se nyní musíte pøihlásit znova - s novým heslem.'; + +// Adding objectClass form +$lang['new_required_attrs'] = 'Nový vy¾adovaný atribut'; +$lang['requires_to_add'] = 'K provedení této akce musíte pøidat'; +$lang['new_attributes'] = 'nové atributy'; +$lang['new_required_attrs_instructions'] = 'Návod: K pøiøazení této objectClass k vybranému objektu musíte zadat'; +$lang['that_this_oclass_requires'] = 'atributy, které jsou touto objectClass vy¾adovány. Mù¾ete tak uèinit v tomto formuláøi.'; +$lang['add_oclass_and_attrs'] = 'Pøidat objectClass a atributy'; +$lang['objectclasses'] = 'objectClassy'; + +// General +$lang['chooser_link_tooltip'] = 'Otevøe popup okno, ve kterém zvolíte DN'; +$lang['no_updates_in_read_only_mode'] = 'Nelze provádìt úpravy dokud je server v módu "pouze pro ètení"'; +$lang['bad_server_id'] = '©patné ID serveru'; +$lang['not_enough_login_info'] = 'Nedostatek informací pro pøihlá¹ení k serveru. Ovìøte prosím nastavení.'; +$lang['could_not_connect'] = 'Nelze se pøipojit k LDAP serveru.'; +$lang['could_not_connect_to_host_on_port'] = 'Nelze se pøipojit k "%s" na portu "%s"'; +$lang['could_not_perform_ldap_mod_add'] = 'Nelze provést ldap_mod_add operaci.'; +$lang['bad_server_id_underline'] = 'server_id: '; +$lang['success'] = 'Hotovo'; +$lang['server_colon_pare'] = 'Server: '; +$lang['look_in'] = 'Prohlí¾ení: '; +$lang['missing_server_id_in_query_string'] = 'V po¾adavku nebylo uvedeno ¾ádné ID serveru!'; +$lang['missing_dn_in_query_string'] = 'V po¾adavku nebyl uveden ¾ádný DN!'; +$lang['back_up_p'] = 'O úroveò vý¹...'; +$lang['no_entries'] = '¾ádné objekty'; +$lang['not_logged_in'] = 'Nepøihlá¹en'; +$lang['could_not_det_base_dn'] = 'Nelze zjistit výchozí DN'; +$lang['please_report_this_as_a_bug']='Nahla¹te toto prosím jako chybu.'; +$lang['reasons_for_error']='Toto se mù¾e pøihodit z nìkolika pøíèin. Nejpravdìpodobnìj¹í jsou:'; +$lang['yes']='Ano'; +$lang['no']='Ne'; +$lang['go']='Jdi'; +$lang['delete']='Odstranit'; +$lang['back']='Zpìt'; +$lang['object']='objekt'; +$lang['delete_all']='Odstranit v¹e'; +$lang['url_bug_report']='https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'rada'; +$lang['bug'] = 'chyba'; +$lang['warning'] = 'upozornìní'; +$lang['light'] = 'light'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Proveï >>'; + +// Add value form +$lang['add_new'] = 'Pøidat nový'; +$lang['value_to'] = 'hodnota pro'; +$lang['distinguished_name'] = 'Distinguished Name'; +$lang['current_list_of'] = 'Souèasný výpis'; +$lang['values_for_attribute'] = 'hodnoty pro atribut'; +$lang['inappropriate_matching_note'] = 'Poznámka: Pokud nenastavíte na tomto LDAP serveru pravidlo
EQUALITY pro tento atribut, dojde k chybì pøi výbìru objektù.'; +$lang['enter_value_to_add'] = 'Zadejte hodnotu, kterou chcete pøidat:'; +$lang['new_required_attrs_note'] = 'Poznámka: Není vylouèené, ¾e budete vyzváni k zadání nových atributù vy¾adovaných touto objectClass'; +$lang['syntax'] = 'Syntaxe'; + +//copy.php +$lang['copy_server_read_only'] = 'Nemù¾ete provádìt zmìny dokud je server v módu "jen pro ètení"'; +$lang['copy_dest_dn_blank'] = 'Ponechali jste kolonku cílové DN prázdnou.'; +$lang['copy_dest_already_exists'] = 'Objekt (%s) ji¾ v cílovém DN existuje.'; +$lang['copy_dest_container_does_not_exist'] = 'Cílová slo¾ka (%s) neexistuje.'; +$lang['copy_source_dest_dn_same'] = 'Zdrojové a cílové DN se shodují.'; +$lang['copy_copying'] = 'Kopíruji '; +$lang['copy_recursive_copy_progress'] = 'Prùbìh rekurzivního kopírování'; +$lang['copy_building_snapshot'] = 'Sestavuji obraz stromu ke kopírování... '; +$lang['copy_successful_like_to'] = 'Kopie úspì¹nì dokonèena! Pøejete si '; +$lang['copy_view_new_entry'] = 'zobrazit nový objekt'; +$lang['copy_failed'] = 'Nepodaøilo se okopírovat DN: '; + +//edit.php +$lang['missing_template_file'] = 'Upozornìní: chybí ¹ablona, '; +$lang['using_default'] = 'Pou¾ívám výchozí.'; +$lang['template'] = '©ablona'; +$lang['must_choose_template'] = 'Musíte zvolit ¹ablonu'; +$lang['invalid_template'] = '%s je neplatná ¹ablona'; +$lang['using_template'] = 'pou¾ítím ¹ablony'; +$lang['go_to_dn'] = 'Jdi na %s'; + +//copy_form.php +$lang['copyf_title_copy'] = 'Kopírovat '; +$lang['copyf_to_new_object'] = 'jako nový objekt'; +$lang['copyf_dest_dn'] = 'Cílové DN'; +$lang['copyf_dest_dn_tooltip'] = 'Celé DN nového objektu bude vytvoøeno kopií zdrojového objektu'; +$lang['copyf_dest_server'] = 'Cílový server'; +$lang['copyf_note'] = 'Rada: Kopírování mezi servery funguje jedinì za pøedpokladu, ¾e nedojde k neshodì schémat'; +$lang['copyf_recursive_copy'] = 'Pøi kopírování zahrnout v¹echny potomky tohoto objektu.'; +$lang['recursive_copy'] = 'Rekurzivní kopie'; +$lang['filter'] = 'Filtr'; +$lang['filter_tooltip'] = 'Pøi rekurzivní kopii pracovat pouze s objekty, které splòují zvolený filtr'; + +//create.php +$lang['create_required_attribute'] = 'Nevyplnili jste pole pro vy¾adovaný atribut %s.'; +$lang['redirecting'] = 'Pøesmìrovávám'; +$lang['here'] = 'zde'; +$lang['create_could_not_add'] = 'Nelze objekt do LDAP serveru pøidat.'; + +//create_form.php +$lang['createf_create_object'] = 'Vytvoøit objekt'; +$lang['createf_choose_temp'] = 'Vyberte ¹ablonu'; +$lang['createf_select_temp'] = 'Zvolte ¹ablonu pro vytvoøení objektu'; +$lang['createf_proceed'] = 'Provést'; +$lang['rdn_field_blank'] = 'Ponechali jste pole RDN nevyplnìné.'; +$lang['container_does_not_exist'] = 'Slo¾ka (%s) neexistuje. Opakujte prosím akci.'; +$lang['no_objectclasses_selected'] = 'Nepøiøadili jste ¾ádné objectClass k tomuto objektu. Vra»te se prosím zpìt a akci opakujte.'; +$lang['hint_structural_oclass'] = 'Nápovìda: Musíte zvolit alespoò jednu structural objectClass.'; + +//creation_template.php +$lang['ctemplate_on_server'] = 'Na serveru'; +$lang['ctemplate_no_template'] = 'V POST po¾adavku nebyla zaslána ¾ádná ¹ablona.'; +$lang['ctemplate_config_handler'] = 'Va¹e nastavení uvádí obsluhovaè '; +$lang['ctemplate_handler_does_not_exist'] = 'pro tuto ¹ablonu. Ale tento obsluhovaè nelze v adresáøi templates/creation nalézt.'; +$lang['create_step1'] = 'Krok 1 ze 2: Jméno a objectClass(y)'; +$lang['create_step2'] = 'Krok 2 ze 2: Atributy a hodnoty'; +$lang['relative_distinguished_name'] = 'Relativní Distinguished Name'; +$lang['rdn'] = 'RDN'; +$lang['rdn_example'] = '(pøíklad: cn=MujNovyUzivatel)'; +$lang['container'] = 'Slo¾ka'; +$lang['alias_for'] = 'Alias k %s'; + +// search.php +$lang['you_have_not_logged_into_server'] = 'Nelze provádìt vyhledávání na serveru bez pøedchozího pøihlá¹ení.'; +$lang['click_to_go_to_login_form'] = 'Klepnutím budete pøesmìrováni na formuláø k pøihlá¹ení'; +$lang['unrecognized_criteria_option'] = 'Neznámá vyhledávací kritéria: '; +$lang['if_you_want_to_add_criteria'] = 'Pokud si pøejete pøidat svoje vlastní vyhledávací kritéria, ujistìte se, ¾e jste je pøidali do search.php.'; +$lang['entries_found'] = 'Nalezené objekty: '; +$lang['filter_performed'] = 'Uplatnìný filtr: '; +$lang['search_duration'] = 'Vyhledávání dokonèeno za'; +$lang['seconds'] = 'sekund'; + +// search_form_advanced.php +$lang['scope_in_which_to_search'] = 'Oblast vyhledávání'; +$lang['scope_sub'] = 'Celý podstrom'; +$lang['scope_one'] = 'O jednu úroveò ní¾'; +$lang['scope_base'] = 'Pouze výchozí DN'; +$lang['standard_ldap_search_filter'] = 'Standardní LDAP vyhledávací filtr. Pøiklad: (&(sn=Smith)(givenname=David))'; +$lang['search_filter'] = 'Vyhledávací filtr'; +$lang['list_of_attrs_to_display_in_results'] = 'Seznam atributù zobrazených ve výsledku hledání (oddìlené èárkou)'; +$lang['show_attributes'] = 'Zobrazit atributy'; + +// search_form_simple.php +$lang['search_for_entries_whose'] = 'Vyhledat objekty kde'; +$lang['equals'] = 'je'; +$lang['starts with'] = 'zaèíná na'; +$lang['contains'] = 'obsahuje'; +$lang['ends with'] = 'konèí na'; +$lang['sounds like'] = 'zní jako'; + +// server_info.php +$lang['could_not_fetch_server_info'] = 'Nelze získat informace ze serveru LDAP'; +$lang['server_info_for'] = 'Server info pro: '; +$lang['server_reports_following'] = 'Server o sobì poskytuje následující informace'; +$lang['nothing_to_report'] = 'Server neposkytuje ¾ádné informace.'; + +//update.php +$lang['update_array_malformed'] = 'update_array je po¹kozené. Mù¾e se jednat o chybu v phpLDAPadmin. Prosíme Vás, abyste chybu nahlásili.'; +$lang['could_not_perform_ldap_modify'] = 'Nelze provést operaci ldap_modify.'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'Pøejete si provést tyto zmìny?'; +$lang['attribute'] = 'Atribut'; +$lang['old_value'] = 'Pùvodní hodnota'; +$lang['new_value'] = 'Nová hodnota'; +$lang['attr_deleted'] = '[atribut odstranìn]'; +$lang['commit'] = 'Odeslat'; +$lang['cancel'] = 'Storno'; +$lang['you_made_no_changes'] = 'Neprovedli jste ¾ádné zmìny'; +$lang['go_back'] = 'Zpìt'; + +// welcome.php +$lang['welcome_note'] = 'K navigaci pou¾ijte prosím menu v levé èásti obrazovky'; +$lang['credits'] = 'Autoøi'; +$lang['changelog'] = 'ChangeLog'; +$lang['donate'] = 'Podpoøit projekt'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = 'Nebezpeèný název souboru: '; +$lang['no_such_file'] = 'Soubor nelze nalézt: '; + +//function.php +$lang['auto_update_not_setup'] = 'V konfiguraci jste zapnuli podporu auto_uid_numbers pro %s, ale nespecifikovali jste auto_uid_number_mechanism. Napravte prosím nejprve tento problém.'; +$lang['uidpool_not_set'] = 'V konfiguraci serveru %s jste specifikovali auto_uid_number_mechanism jako uidpool, ale neuvedli jste audo_uid_number_uid_pool_dn. Napravte prosím nejprve tento problém.'; +$lang['uidpool_not_exist'] = 'Zdá se, ¾e uidPool uvedený v konfiguraci (%s) neexistuje.'; +$lang['specified_uidpool'] = 'V konfiguraci serveru %s jste specifikovali auto_uid_number_mechanism jako search, ale neuvedli jste auto_uid_number_search_base. Napravte prosím nejprve tento problém.'; +$lang['auto_uid_invalid_credential'] = 'Se zadanými pøístupovými oprávnìními se nelze pøipojit k %s a získat auto_uid. Zkontrolujte prosím konfiguraci.'; +$lang['bad_auto_uid_search_base'] = 'V konfiguraci phpLDAPadminu je uveden neplatný parametr auto_uid_search_base pro server %s'; +$lang['auto_uid_invalid_value'] = 'V konfiguraci je uvedena neplatná hodnota auto_uid_number_mechanism (%s). Platné hodnoty jsou pouze uidpool a search. Napravte prosím nejprve tento problém.'; +$lang['error_auth_type_config'] = 'Chyba: Ve svém konfiguraèním souboru jste u polo¾ky $servers[\'auth_type\'] uvedli chybnou hodnotu \'%s\'. Platné hodnoty jsou pouze \'config\' a \'form\'.'; +$lang['php_install_not_supports_tls'] = 'Tato instalace PHP neobsahuje podporu pro TLS'; +$lang['could_not_start_tls'] = 'Nelze inicializovat TLS.
Zkontolujte prosím konfiguraci svého LDAP serveru.'; +$lang['could_not_bind_anon'] = 'K serveru se nelze pøipojit anonymnì.'; +$lang['could_not_bind'] = 'Nelze se pøipojit k serveru LDAP.'; +$lang['anonymous_bind'] = 'Pøipojit anonymnì'; +$lang['bad_user_name_or_password'] = 'Nesprávné jméno nebo heslo. Opakujte pøihlá¹ení.'; +$lang['redirecting_click_if_nothing_happens'] = 'Pøesmìrovávám... Klepnìte sem, pokud se nic nestane.'; +$lang['successfully_logged_in_to_server'] = 'Úspì¹nì jste se pøihlásili k serveru %s'; +$lang['could_not_set_cookie'] = 'Cookie nemohla být ulo¾ena.'; +$lang['ldap_said'] = 'Odpovìï LDAP serveru: %s

'; +$lang['ferror_error'] = 'Chyba'; +$lang['fbrowse'] = 'procházet'; +$lang['delete_photo'] = 'Odstranit fotografii'; +$lang['install_not_support_blowfish'] = 'Tato instalace PHP neobsahuje podporu pro ¹ifru Blowfish.'; +$lang['install_not_support_md5crypt'] = 'Tato instalace PHP neobsahuje podporu pro ¹ifru md5crypt.'; +$lang['install_no_mash'] = 'Tato instalace PHP nepodporuje funkci mhash(). Nelze aplikovat SHA hash.'; +$lang['jpeg_contains_errors'] = 'jpegPhoto obsahuje chyby
'; +$lang['ferror_number'] = 'Èíslo chyby: %s (%s)

'; +$lang['ferror_discription'] = 'Popis: %s

'; +$lang['ferror_number_short'] = 'Èíslo chyby: %s

'; +$lang['ferror_discription_short'] = 'Popis: (popis není k dispozici)
'; +$lang['ferror_submit_bug'] = 'Pokud je toto chyba v phpLDAPadmin, napi¹te nám o tom.'; +$lang['ferror_unrecognized_num'] = 'Neznámé èíslo chyby: '; +$lang['ferror_nonfatil_bug'] = '
+
+ Narazili jste na nezáva¾nou, droubnou a¾ zanedbatelnou chybu v phpLDAPadmin!
Chyba:%s (%s)
Soubor:%s øádka %s, voláno z %s
Verze:PLA: %s, PHP: %s, SAPI: %s +
Web server:%s
+ Klepnutím prosím ohlá¹te chybu.

'; +$lang['ferror_congrats_found_bug'] = 'Blahopøejeme! Nalezli jste chybu v phpLDAPadmin. :-)

+ + + + + + + + + + +
Chyba:%s
Vá¾nost:%s
Soubor:%s
Øádka:%s
Voláno z:%s
Verze PLA:%s
Verze PHP:%s
PHP SAPI:%s
Web server:%s
+
+ Klepnutím dole prosím ohla¹te chybu!'; + +//ldif_import_form +$lang['import_ldif_file_title'] = 'Importovat soubor LDIF'; +$lang['select_ldif_file'] = 'Zvolte soubor LDIF:'; +$lang['select_ldif_file_proceed'] = 'Proveï >>'; +$lang['dont_stop_on_errors'] = 'Ignorovat chyby'; + +//ldif_import +$lang['add_action'] = 'Pøidávání...'; +$lang['delete_action'] = 'Odstraòování...'; +$lang['rename_action'] = 'Pøejmenovávání...'; +$lang['modify_action'] = 'Upravování...'; +$lang['warning_no_ldif_version_found'] = 'Nebyla nalezena verze. Pøedpokládám 1.'; +$lang['valid_dn_line_required'] = 'Je vy¾adován platný øádek s DN.'; +$lang['missing_uploaded_file'] = 'Soubor LDIF nebyl nalezen.'; +$lang['no_ldif_file_specified.'] = 'Neuvedli jste LDIF soubor. Opakujte prosím akci.'; +$lang['ldif_file_empty'] = 'Soubor LDIF je prázdný.'; +$lang['empty'] = 'prázdný'; +$lang['file'] = 'Soubor'; +$lang['number_bytes'] = '%s bajtù'; + +$lang['failed'] = 'selhal'; +$lang['ldif_parse_error'] = 'Chyba v souboru LDIF'; +$lang['ldif_could_not_add_object'] = 'Nelze pøidat objekt:'; +$lang['ldif_could_not_rename_object'] = 'Nelze pøejmenovat objekt:'; +$lang['ldif_could_not_delete_object'] = 'Nelze odstranit objekt:'; +$lang['ldif_could_not_modify_object'] = 'Nelze upravit objekt:'; +$lang['ldif_line_number'] = 'Èíslo øádku:'; +$lang['ldif_line'] = 'Øádek:'; + +// Exports +$lang['export_format'] = 'Formát exportu'; +$lang['line_ends'] = 'Konce øádkù'; +$lang['must_choose_export_format'] = 'Musíte zvolit exportní formát.'; +$lang['invalid_export_format'] = 'Neplatný exportní formát'; +$lang['no_exporter_found'] = 'Nebyla nalezena ¾ádná aplikace pro export.'; +$lang['error_performing_search'] = 'Bìhem vyhledávání do¹lo k chybì.'; +$lang['showing_results_x_through_y'] = 'Výsledky od %s do %s.'; +$lang['searching'] = 'Vyhledávám...'; +$lang['size_limit_exceeded'] = 'Byl pøekroèen limitní parametr pro vyhledávání.'; +$lang['entry'] = 'Objekt'; +$lang['ldif_export_for_dn'] = 'LDIF Export objektu: %s'; +$lang['generated_on_date'] = 'Generováno phpLDAPadminem dne %s'; +$lang['total_entries'] = 'Celkem objektù'; +$lang['dsml_export_for_dn'] = 'DSLM Export objektu: %s'; + +// logins +$lang['could_not_find_user'] = 'Nelze nalézt u¾ivatele "%s"'; +$lang['password_blank'] = 'Nezadali jste u¾ivatelské heslo.'; +$lang['login_cancelled'] = 'Pøihla¹ování zru¹eno.'; +$lang['no_one_logged_in'] = 'Nikdo není pøihlá¹en k tomuto serveru.'; +$lang['could_not_logout'] = 'Nelze se odhlásit.'; +$lang['unknown_auth_type'] = 'Neznámý auth_type: %s'; +$lang['logged_out_successfully'] = 'Odhlá¹ení od serveru %s probìhlo úspì¹nì.'; +$lang['authenticate_to_server'] = 'Ovìøení vùèi serveru %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Upozornìní: Toto spojení není ¹ifrováné.'; +$lang['not_using_https'] = 'Nepøipojujete se pomocí \'https\'. Prohlí¾eè ode¹le Va¹e pøihlá¹ení v ne¹ifrované podobì.'; +$lang['login_dn'] = 'Pøihla¹ovací DN'; +$lang['user_name'] = 'U¾ivatel'; +$lang['password'] = 'Heslo'; +$lang['authenticate'] = 'Pøihlásit'; + +// Entry browser +$lang['entry_chooser_title'] = 'Zvolit objekt'; + +// Index page +$lang['need_to_configure'] = 'Nejprve je tøeba phpLDAPadmin nakonfigurovat. Toho docílíte upravou souboru \'config.php\'. Ukázková konfigurace je k nalezení v souboru \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Mazání je v re¾imu "jen pro ètení" zakázáno.'; +$lang['error_calling_mass_delete'] = 'Chyba pøi volání mass_delete.php. V POSTu chybí promìnná mass_delete.'; +$lang['mass_delete_not_array'] = 'mass_delete v POSTu není pole.'; +$lang['mass_delete_not_enabled'] = 'Hromadý výmaz není umo¾nìn. Mù¾ete ho povolit v souboru config.php.'; +$lang['mass_deleting'] = 'Hromadný výmaz'; +$lang['mass_delete_progress'] = 'Prùbìh odstraòování na serveru "%s"'; +$lang['malformed_mass_delete_array'] = 'Zdeformované pole mass_delete.'; +$lang['no_entries_to_delete'] = 'Nevybrali jste ¾ádné objekty k odstranìní.'; +$lang['deleting_dn'] = 'Odstraòuji %s'; +$lang['total_entries_failed'] = '%s z %s objektù se nepodaøilo odstranit.'; +$lang['all_entries_successful'] = 'V¹echny objekty byly úspì¹nì odstranìny.'; +$lang['confirm_mass_delete'] = 'Potvïte hromadný výmaz v poètu %s objektù na serveru %s'; +$lang['yes_delete'] = 'Ano, odstranit!'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Nelze pøejmenovat objekt, který má potomky. Toto se napøíklad vztahuje na v¹echny objekty, které nejsou typu "list".'; +$lang['no_rdn_change'] = 'Nezmìnili jste RDN'; +$lang['invalid_rdn'] = 'Neplatná hodnota RDN'; +$lang['could_not_rename'] = 'Objekt nelze pøejmenovat'; + +?> diff --git a/lang/de.php b/lang/de.php index be2d388..474794e 100644 --- a/lang/de.php +++ b/lang/de.php @@ -4,173 +4,282 @@ * Übersetzung von Marius Rieder * Uwe Ebel * Modifikationen von Dieter Kluenter + * + * + * $Header: /cvsroot/phpldapadmin/phpldapadmin/lang/de.php,v 1.25 2004/07/20 19:47:32 i18phpldapadmin Exp $ + * Update auf CVS-Version von en.php 1.79 + * Verwendete CVS-Version von en.php 1.65 */ // Search form $lang['simple_search_form_str'] = 'Einfache Suche';//'Simple Search Form'; $lang['advanced_search_form_str'] = 'Experten Suche';//'Advanced Search Form'; $lang['server'] = 'Server';//'Server'; -$lang['search_for_entries_whose'] = 'Suche nach Einträgen die';//'Search for entries whose'; +$lang['search_for_entries_whose'] = 'Suche nach Einträgen die';//'Search for entries whose'; $lang['base_dn'] = 'Base DN';//'Base DN'; $lang['search_scope'] = 'Suchbereich';//'Search Scope'; -$lang['search_ filter'] = 'Suchfilter';//'Search Filter'; +//$lang['search_ filter'] = 'Suchfilter';//'Search Filter'; $lang['show_attributes'] = 'Zeige Attribute';//'Show Attributtes'; $lang['Search'] = 'Suchen';//'Search'; $lang['equals'] = 'gleich';//'equals'; -$lang['starts_with'] = 'beginnt mit';//'starts with'; -$lang['contains'] = 'enthält';//'contains'; -$lang['ends_with'] = 'endet mit';//'ends with'; -$lang['sounds_like'] = 'änlich wie';//'sounds like'; +//$lang['starts_with'] = 'beginnt mit';//'starts with'; +$lang['contains'] = 'enthält';//'contains'; +//$lang['ends_with'] = 'endet mit';//'ends with'; +//$lang['sounds_like'] = 'ähnlich wie';//'sounds like'; +$lang['predefined_search_str'] = 'oder ein von dieser Liste auswählen';//'or select a predefined search'; +$lang['predefined_searches'] = 'Vordefinierte Suche';//'Predefined Searches'; +$lang['no_predefined_queries'] = 'Keine Abfragen sind in der config.php definiert';// 'No queries have been defined in config.php.'; +$lang['export_results'] = 'Ergebnisse exportieren';// 'export results'; +$lang['unrecoginzed_search_result_format'] = 'Das Suchergebnisformat ist nicht erkennbar: %s';//'Unrecognized search result format: %s'; +$lang['format'] = 'Format';// 'Format'; +$lang['list'] = 'Liste';// 'list'; +$lang['table'] = 'Tabelle';// 'table'; +$lang['bad_search_display'] = 'Die config.php gibt einen falsche Wert für $default_search_display: %s vor. Bitte in der Konfiguration korrigieren.';//'Your config.php specifies an invalid value for $default_search_display: %s. Please fix it'; + + // Tree browser -$lang['request_new_feature'] = 'Anfragen von neuen Möglichkeiten';//'Request a new feature'; -$lang['see_open_requests'] = 'Siehe offene Anfragen';//'see open requests'; +$lang['request_new_feature'] = 'Anfragen von neuen Möglichkeiten';//'Request a new feature'; +//$lang['see_open_requests'] = 'Siehe offene Anfragen';//'see open requests'; $lang['report_bug'] = 'Einen Fehler berichten';//'Report a bug'; -$lang['see_open_bugs'] = 'Siehe offene Fehler';//'see open bugs'; +//$lang['see_open_bugs'] = 'Siehe offene Fehler';//'see open bugs'; $lang['schema'] = 'Schema';//'schema'; $lang['search'] = 'suche';//'search'; $lang['refresh'] = 'aktualisieren';//'refresh'; -$lang['create'] = 'neu';//'create'; +$lang['create'] = 'Erstellen';//'create'; $lang['info'] = 'Info';//'info'; $lang['import'] = 'Import';//'import'; $lang['logout'] = 'abmelden';//'logout'; $lang['create_new'] = 'Neuen Eintrag erzeugen';//'Create New'; -$lang['view_schema_for'] = 'Zeige Schema für';//'View schema for'; -$lang['refresh_expanded_containers'] = 'Aktualisiere alle geöffneten Container von';//'Refresh all expanded containers for'; +$lang['new'] = 'Neu';//'new'; +$lang['view_schema_for'] = 'Zeige Schema für';//'View schema for'; +$lang['refresh_expanded_containers'] = 'Aktualisiere alle geöffneten Container von';//'Refresh all expanded containers for'; $lang['create_new_entry_on'] = 'Erzeuge einen neuen Eintrag auf';//'Create a new entry on'; $lang['view_server_info'] = 'Zeige Server Informationen';//'View server-supplied information'; -$lang['import_from_ldif'] = 'Importiere Einträge von einer LDIF-Datei';//'Import entries from an LDIF file'; +$lang['import_from_ldif'] = 'Importiere Einträge von einer LDIF-Datei';//'Import entries from an LDIF file'; $lang['logout_of_this_server'] = 'Von diesem Server abmelden';//'Logout of this server'; $lang['logged_in_as'] = 'Angemeldet als: ';//'Logged in as: '; $lang['read_only'] = 'nur lesen';//'read only'; +$lang['read_only_tooltip'] = 'Diese Attribut wurde vom phpLDAPadmin-Adminstrator als nur lesend markiert.';//This attribute has been flagged as read only by the phpLDAPadmin administrator'; $lang['could_not_determine_root'] = 'Konnte die Basis ihres LDAP Verzeichnises nicht ermitteln';//'Could not determin the root of your LDAP tree.'; $lang['ldap_refuses_to_give_root'] = 'Es scheint das ihr LDAP Server nicht dazu konfiguriert wurde seine Basis bekanntzugeben';//'It appears that the LDAP server has been configured to not reveal its root.'; $lang['please_specify_in_config'] = 'Bitte in config.php angeben';//'Please specify it in config.php'; $lang['create_new_entry_in'] = 'Neuen Eintrag erzeugen auf';//'Create a new entry in'; $lang['login_link'] = 'Anmelden...';//'Login...'; +$lang['login'] = 'Anmelden';//'login'; // Entry display -$lang['delete_this_entry'] = 'Diesen Eintrag löschen';//'Delete this entry'; -$lang['delete_this_entry_tooltip'] = 'F¨r diese Entscheidung wird nochmals nachgefragt.';//'You will be prompted to confirm this decision'; +$lang['delete_this_entry'] = 'Diesen Eintrag löschen';//'Delete this entry'; +$lang['delete_this_entry_tooltip'] = 'Für diese Entscheidung wird nochmals nachgefragt.';//'You will be prompted to confirm this decision'; $lang['copy_this_entry'] = 'Diesen Eintrag kopieren';//'Copy this entry'; $lang['copy_this_entry_tooltip'] = 'Kopiere diese Object an eine anderen Ort: ein neuer DN oder einen anderen Server.';//'Copy this object to another location, a new DN, or another server'; -$lang['export_to_ldif'] = 'Exportieren nach LDIF';//'Export to LDIF'; -$lang['export_to_ldif_tooltip'] = 'Speichere einen LDIF-Abzug diese Objektes';//'Save an LDIF dump of this object'; -$lang['export_subtree_to_ldif_tooltip'] = 'Speicher eine LDIF-Abzug ab diesem Objekt und alle seine Untereinträge';//'Save an LDIF dump of this object and all of its children'; -$lang['export_subtree_to_ldif'] = 'Export Unterbaum nach LDIF';//'Export subtree to LDIF'; -$lang['export_to_ldif_mac'] = 'Zeilenende für Macintosh';//'Macintosh style line ends'; -$lang['export_to_ldif_win'] = 'Zeilenende für Windows';//'Windows style line ends'; -$lang['export_to_ldif_unix'] = 'Zeilenende für Unix';//'Unix style line ends'; +$lang['export'] = 'Exportieren';//'Export to LDIF'; +$lang['export_lcase'] = 'exportieren';//'export'; +$lang['export_tooltip'] = 'Speichere einen Abzug diese Objektes';//'Save an LDIF dump of this object'; +$lang['export_subtree_tooltip'] = 'Speicher eine Abzug ab diesem Objekt und alle seine Untereinträge';//'Save an LDIF dump of this object and all of its children'; +$lang['export_subtree'] = 'Export Unterbaum nach LDIF';//'Export subtree to LDIF'; +//$lang['export_mac'] = 'Zeilenende für Macintosh';//'Macintosh style line ends'; +//$lang['export_win'] = 'Zeilenende für Windows';//'Windows style line ends'; +//$lang['export_unix'] = 'Zeilenende für Unix';//'Unix style line ends'; $lang['create_a_child_entry'] = 'Erzeuge einen Untereintrag';//'Create a child entry'; -$lang['add_a_jpeg_photo'] = 'Ein JPEG-Foto hinzufügen';//'Add a jpegPhoto'; +//$lang['add_a_jpeg_photo'] = 'Ein JPEG-Foto hinzufügen';//'Add a jpegPhoto'; $lang['rename_entry'] = 'Eintrag umbenennen';//'Rename Entry'; $lang['rename'] = 'Umbenennen';//'Rename'; -$lang['add'] = 'Hinzufügen';//'Add'; +$lang['add'] = 'Hinzufügen';//'Add'; $lang['view'] = 'Ansehen';//'View'; -$lang['add_new_attribute'] = 'Neues Attribut hinzufügen';//'Add New Attribute'; -$lang['add_new_attribute_tooltip'] = 'Füge ein neues Attribut/Wert zu diesem Eintrag hinzu';// 'Add a new attribute/value to this entry'; -$lang['internal_attributes'] = 'Interne Attribute';//'Internal Attributes'; +$lang['view_one_child'] = 'Zeige einen Untereintrag';//'View 1 child'; +$lang['view_children'] = 'Zeige %s Untereinträge';//'View %s children'; +$lang['add_new_attribute'] = 'Neues Attribut hinzufügen';//'Add New Attribute'; +// DELETED $lang['add_new_attribute_tooltip'] = 'Füge ein neues Attribut/Wert zu diesem Eintrag hinzu';// 'Add a new attribute/value to this entry'; +$lang['add_new_objectclass'] = 'Neue ObjectClass hinzufügen';//'Add new ObjectClass'; +//$lang['internal_attributes'] = 'Interne Attribute';//'Internal Attributes'; $lang['hide_internal_attrs'] = 'Verdecke interne Attribute';//'Hide internal attributes'; $lang['show_internal_attrs'] = 'Zeige interne Attribute';//'Show internal attributes'; -$lang['internal_attrs_tooltip'] = 'Attribute werden automatisch vom System erzeugt.';//'Attributes set automatically by the system'; -$lang['entry_attributes'] = 'Attribute des Eintrages';//'Entry Attributes'; -$lang['attr_name_tooltip'] = 'Klicken sie um die Schemadefinition für den Attributtyp \'%s\' anzuzeigen.';//'Click to view the schema defintion for attribute type \'%s\''; -$lang['click_to_display'] = 'Klicken zum Ansehen';//'click to display'; -$lang['hidden'] = 'verdeckt';//'hidden'; +//$lang['internal_attrs_tooltip'] = 'Attribute werden automatisch vom System erzeugt.';//'Attributes set automatically by the system'; +//$lang['entry_attributes'] = 'Attribute des Eintrages';//'Entry Attributes'; +$lang['attr_name_tooltip'] = 'Klicken sie um die Schemadefinition für den Attributtyp "%s" anzuzeigen.';//'Click to view the schema defintion for attribute type \'%s\''; +//$lang['click_to_display'] = 'Klicken zum Ansehen';//'click to display'; +//$lang['hidden'] = 'verdeckt';//'hidden'; $lang['none'] = 'Keine';//'none'; -$lang['save_changes'] = 'Änderungen speichern';//'Save Changes'; -$lang['add_value'] = 'Wert hinzufügen';//'add value'; -$lang['add_value_tooltip'] = 'Füge einen weiteren Wert dem Attribut hinzu';//'Add an additional value to this attribute'; +$lang['no_internal_attributes'] = 'Keine internen Attribute.';//'No internal attributes'; +$lang['no_attributes'] = 'Dieser Eintrag hat keine Attribute.';//'This entry has no attributes'; +$lang['save_changes'] = 'Änderungen speichern';//'Save Changes'; +$lang['add_value'] = 'Wert hinzufügen';//'add value'; +$lang['add_value_tooltip'] = 'Füge einen weiteren Wert dem Attribut hinzu';//'Add an additional value to this attribute'; $lang['refresh_entry'] = 'Auffrischen';// 'Refresh'; $lang['refresh_this_entry'] = 'Aktualisiere den Entrag';//'Refresh this entry'; -$lang['delete_hint'] = 'Hinweis: Um ein Attribut zu löschen, leeren Sie den Inhalt des Wertes.';//'Hint: To delete an attribute, empty the text field and click save.'; -$lang['attr_schema_hint'] = 'Tipp:Um das Schema für ein Attribut anzusehen, genügt ein klick auf den Attributnamen';//'Hint: To view the schema for an attribute, click the attribute name.'; -$lang['attrs_modified'] = 'Einige Attribute (%s) wurden verändert und sind hervorgehoben.';//'Some attributes (%s) were modified and are highlighted below.'; -$lang['attr_modified'] = 'Ein Attribut (%s) wurde verändert und ist hervorgehoben.';//'An attribute (%s) was modified and is highlighted below.'; +$lang['delete_hint'] = 'Hinweis: Um ein Attribut zu löschen, leeren Sie den Inhalt des Wertes.';//'Hint: To delete an attribute, empty the text field and click save.'; +$lang['attr_schema_hint'] = 'Tipp:Um das Schema für ein Attribut anzusehen, genügt ein klick auf den Attributnamen';//'Hint: To view the schema for an attribute, click the attribute name.'; +$lang['attrs_modified'] = 'Einige Attribute (%s) wurden verändert und sind hervorgehoben.';//'Some attributes (%s) were modified and are highlighted below.'; +$lang['attr_modified'] = 'Ein Attribut (%s) wurde verändert und ist hervorgehoben.';//'An attribute (%s) was modified and is highlighted below.'; $lang['viewing_read_only'] = 'Zeige Eintrag im Nurlesemodus';//'Viewing entry in read-only mode.'; -$lang['change_entry_rdn'] = 'Ändere den RDN des Eintrages';//'Change this entry\'s RDN'; -$lang['no_new_attrs_available'] = 'Keine weiteren Attribute verfügbar für diesen Eintrag';//'no new attributes available for this entry'; -$lang['binary_value'] = 'Binärwert';//'Binary value'; -$lang['add_new_binary_attr'] = 'Neuen Binärwert hinzufügen';//'Add New Binary Attribute'; -$lang['add_new_binary_attr_tooltip'] = 'Füge einen neuen Binäwert (Attribut/Wert) aus einer Datei hinzu.';//'Add a new binary attribute/value from a file'; -$lang['alias_for'] = 'Alias für';//'Alias for'; +//$lang['change_entry_rdn'] = 'Ändere den RDN des Eintrages';//'Change this entry\'s RDN'; +$lang['no_new_attrs_available'] = 'Keine weiteren Attribute verfügbar für diesen Eintrag';//'no new attributes available for this entry'; +$lang['no_new_binary_attrs_available'] = 'Keine weiteren Binären Attribute verfügbar für diesen Eintrag.';//'no new binary attributes available for this entry'; +$lang['binary_value'] = 'Binärwert';//'Binary value'; +$lang['add_new_binary_attr'] = 'Neuen Binärwert hinzufügen';//'Add New Binary Attribute'; +// DELETE $lang['add_new_binary_attr_tooltip'] = 'Füge einen neuen Binäwert (Attribut/Wert) aus einer Datei hinzu.';//'Add a new binary attribute/value from a file'; +$lang['alias_for'] = 'Alias für';//'Alias for'; +$lang['required_for'] = 'Notwendige Attribute für die Objektklasse(n) %s';//'Required attribute for objectClass(es) %s'; $lang['download_value'] = 'Wert herunterladen';//'download value'; -$lang['delete_attribute'] = 'Lösche Attribut';//'delete attribute'; +$lang['delete_attribute'] = 'Lösche Attribut';//'delete attribute'; $lang['true'] = 'Wahr';//'true'; $lang['false'] = 'Falsch';//'false'; $lang['none_remove_value'] = 'nichts, entferne den Wert';//?? //'none, remove value'; -$lang['really_delete_attribute'] = 'Lösche das Attribut wirklich';//'Really delete attribute'; +$lang['really_delete_attribute'] = 'Lösche das Attribut wirklich';//'Really delete attribute'; +$lang['add_new_value'] = 'Neuen Wert hinzufügen';//'Add New Value'; // Schema browser -$lang['the_following_objectclasses'] = 'Die folgenden Objektklassen werden vom LDAP-Server unterstützt.';//'The following objectClasses are supported by this LDAP server.'; -$lang['the_following_attributes'] = 'Die folgenden Attribute werden vom LDAP-Server unterstützt.';//'The following attributeTypes are supported by this LDAP server.'; -$lang['the_following_matching'] = 'Die folgenden Suchregeln werden vom LDAP-Server unterstützt.';//'The following matching rules are supported by this LDAP server.'; -$lang['the_following_syntaxes'] = 'Die folgenden Syntaxe werden vom LDAP-Server unterstützt.';//'The following syntaxes are supported by this LDAP server.'; +$lang['the_following_objectclasses'] = 'Die folgenden Objektklassen werden vom LDAP-Server unterstützt.';//'The following objectClasses are supported by this LDAP server.'; +$lang['the_following_attributes'] = 'Die folgenden Attribute werden vom LDAP-Server unterstützt.';//'The following attributeTypes are supported by this LDAP server.'; +$lang['the_following_matching'] = 'Die folgenden Suchregeln werden vom LDAP-Server unterstützt.';//'The following matching rules are supported by this LDAP server.'; +$lang['the_following_syntaxes'] = 'Die folgenden Syntaxe werden vom LDAP-Server unterstützt.';//'The following syntaxes are supported by this LDAP server.'; +$lang['schema_retrieve_error_1']='Der Server unterstützt nicht vollständig das LDAP-Protokoll.';//'The server does not fully support the LDAP protocol.'; +$lang['schema_retrieve_error_2']='Die verwendete PHP-Version setzte keine korrekte LDAP-Abfrage ab.';//'Your version of PHP does not correctly perform the query.'; +$lang['schema_retrieve_error_3']='Oder phpLDAPadmin konnte nicht das Schema für den Server abfragen.';//'Or lastly, phpLDAPadmin doesn\'t know how to fetch the schema for your server.'; $lang['jump_to_objectclass'] = 'Gehe zur objectClass';//'Jump to an objectClass'; +$lang['view_schema_for_oclass'] = 'Zeige die Schemabeschreibung für diese Objektklasse';//'View the schema description for this objectClass'; $lang['jump_to_attr'] = 'Gehe zum Attribut';//'Jump to an attribute'; -$lang['schema_for_server'] = 'Schema für Server';//'Schema for server'; +$lang['jump_to_matching_rule'] = 'Gehe zur Treffer Regel'; // 'Jump to a matching rule'; + +$lang['schema_for_server'] = 'Schema für Server';//'Schema for server'; $lang['required_attrs'] = 'Notwendige Attribute';//'Required Attributes'; +$lang['required'] = 'notwendig';//'required'; $lang['optional_attrs'] = 'Optionale Attribute';//'Optional Attributes'; +$lang['optional_binary_attrs'] = 'Optinales Binärattribut';//'Optional Binary Attributes'; $lang['OID'] = 'OID';//'OID'; +$lang['aliases']='Pseudonym(e)';//'Aliases'; $lang['desc'] = 'Beschreibung';//'Description'; +$lang['no_description']='Keine Beschreibung';//'no description'; $lang['name'] = 'Name';//'Name'; +$lang['equality']='Gleichheit';// 'Equality'; $lang['is_obsolete'] = 'Diese objectClass ist veraltet';//'This objectClass is obsolete'; $lang['inherits'] = 'Abgeleitet von';//'Inherits'; +$lang['inherited_from']='abgeleitet von';//inherited from'; +$lang['parent_to'] = 'Knoten von';//'Parent to'; $lang['jump_to_this_oclass'] = 'Gehe zur objectClass Definition';//'Jump to this objectClass definition'; $lang['matching_rule_oid'] = 'Treffer-Regel OID';//'Matching Rule OID'; $lang['syntax_oid'] = 'Syntax OID';//'Syntax OID'; -$lang['not_applicable'] = 'keine Angabe';//'not applicable'; +$lang['not_applicable'] = 'nicht anwendbar';//'not applicable'; $lang['not_specified'] = 'nicht spezifiziert';//not specified'; +$lang['character']='Zeichen';//'character'; +$lang['characters']='Zeichen';//'characters'; +$lang['used_by_objectclasses']='Verwendet von den Objektklassen';//'Used by objectClasses'; +$lang['used_by_attributes']='Verwendet in den Attributen';//'Used by Attributes'; +$lang['oid']='OID'; // 'OID' +$lang['obsolete']='Veraltet';//'Obsolete'; +$lang['ordering']='Ordnung';//'Ordering'; +$lang['substring_rule']='Teilstring Regel';//'Substring Rule'; +$lang['single_valued']='Einzelner Wert';//'Single Valued'; +$lang['collective']='Sammlung';//'Collective'; +$lang['user_modification']='Benutzer Änderung';//'User Modification'; +$lang['usage']='Verwendung';//'Usage'; +$lang['maximum_length']='Maximale Grösse';//'Maximum Length'; +$lang['attribute_types']='Attribut Typen';//'Attribute Types'; +$lang['attributes']='Attribut Typen';//'Attributes Types'; +$lang['syntaxes']='Syntaxe';//'Syntaxes'; +$lang['objectclasses']='Objekt Klassen';//'objectClasses'; +$lang['matchingrules']='Treffer Regeln';//'Matching Rules'; +$lang['could_not_retrieve_schema_from']='Das Schema konnte nicht abgefragt werden. Betrifft die Einstellung des Servers:';//'Could not retrieve schema from'; +$lang['type']='Typ';// 'Type'; +$lang['no_such_schema_item'] = 'Kein Schema Eintrag für Element: %s';//'No such schema item: "%s"'; + // Deleting entries -$lang['entry_deleted_successfully'] = 'Der Eintrag \'%s\' wurde erfolgreich gelöscht.';//'Entry \'%s\' deleted successfully.'; +$lang['entry_deleted_successfully'] = 'Der Eintrag \'%s\' wurde erfolgreich gelöscht.';//'Entry \'%s\' deleted successfully.'; $lang['you_must_specify_a_dn'] = 'Ein DN muss angegeben werden.';//'You must specify a DN'; -$lang['could_not_delete_entry'] = 'Konnte den Eintrag nicht löschen: %s';//'Could not delete the entry: %s'; +$lang['could_not_delete_entry'] = 'Konnte den Eintrag nicht löschen: %s';//'Could not delete the entry: %s'; +$lang['no_such_entry'] = 'Keinen solchen Eintrag: %s';//'No such entry: %s'; +$lang['delete_dn'] = 'Löschen von %s';//'Delete %s'; +//$lang['permanently_delete_children'] = 'Ebenso dauerhaftes Löschen aller Untereinträge?';//'Permanently delete all children also?'; +$lang['entry_is_root_sub_tree'] = 'Dies ist ein Root-Eintrag und beinhaltet einen Unterbaum mit %s Einträgen.';//'This entry is the root of a sub-tree containing %s entries.'; +$lang['view_entries'] = 'Zeige Einträge';//'view entries'; +$lang['confirm_recursive_delete'] = 'phpLDAPadmin kann diesen Eintrag und die %s Untereinträge rekursiv löschen. Unten ist eine Liste der Einträge angegeben die von diesem Löschen betroffen wären. Sollen alle Einträge gelöscht werden?';//'phpLDAPadmin can recursively delete this entry and all %s of its children. See below for a list of all the entries that this action will delete. Do you want to do this?'; +$lang['confirm_recursive_delete_note'] = 'Hinweis: Dies ist sehr gefährlich und erfolgt auf eines Risiko. Die Ausführung kann nicht rückgängig gemacht werden. Dies betrifft ebenso Aliase, Referenzen und andere Dinge die zu Problemen führen können.';//'Note: this is potentially very dangerous and you do this at your own risk. This operation cannot be undone. Take into consideration aliases, referrals, and other things that may cause problems.'; +$lang['delete_all_x_objects'] = 'Löschen aller "%s" Objekte';//'Delete all %s objects'; +$lang['recursive_delete_progress'] = 'Rekursives Löschen in Arbeit';//'Recursive delete progress'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'Erfolgreiches Löschen des Eintrages "%s" und dessen Unterbaums.';// 'Entry %s and sub-tree deleted successfully.'; +$lang['failed_to_delete_entry'] = 'Fehler beim Löschen des Eintrages %s.';//'Failed to delete entry %s'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'Das Attribut "%s" ist in der phpLDAPadmin Konfiguration als nur lesend deklariert.';//'The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'; +$lang['no_attr_specified'] = 'Kein Attributname angegeben.';//'No attribute name specified.'; +$lang['no_dn_specified'] = 'Kein DN angegeben.';//'No DN specified'; + +// Adding attributes +$lang['left_attr_blank'] = 'Der Wert des Attributes wurde leergelassen. Bitte zurück gehen und erneut versuchen.';//'You left the attribute value blank. Please go back and try again.'; +$lang['failed_to_add_attr'] = 'Fehler beim Hinzufügen des Attributes';//'Failed to add the attribute.'; +$lang['file_empty'] = 'Die ausgewählte Datei ist entweder nicht vorhanden oder leer. Bitte zurückgehen und nochmals versuchen.';//'The file you chose is either empty or does not exist. Please go back and try again.'; +$lang['invalid_file'] = 'Sicherheitsfehler: Die hochgeladene Datei kann bösartig sein.';//'Security error: The file being uploaded may be malicious.'; +$lang['warning_file_uploads_disabled'] = 'Die PHP-Konfiguration (php.ini) gestattet es nicht Dateien hochzuladen. Bitte die php.ini hierzu überprüfen.';//'Your PHP configuration has disabled file uploads. Please check php.ini before proceeding.'; +$lang['uploaded_file_too_big'] = 'Die hochgeladene Datei ist größer als die maximal erlaubte Datei aus der "php.ini". Bitte in der php.ini den Eintrag "upload_max_size" überprüfen.';//'The file you uploaded is too large. Please check php.ini, upload_max_size setting'; +$lang['uploaded_file_partial'] = 'Die auswählte Datei wurde nur unvollständig hochgeladen.';//'The file you selected was only partially uploaded, likley due to a network error.'; +$lang['max_file_size'] = 'Maximal Dateigröße ist: %s';//'Maximum file size: %s'; + +// Updating values +$lang['modification_successful'] = 'Änderung war erfolgreich!';//'Modification successful!'; +$lang['change_password_new_login'] = 'Da das Passwort geändert wurde müssen Sie sich erneut einloggen.'; //'Since you changed your password, you must now login again with your new password.'; // Adding objectClass form -$lang['new_required_attrs'] = 'Neue benötigte Attribute';//'New Required Attributes'; -$lang['requires_to_add'] = 'Diese Aktion zwingt sie folgendes hinzuzufügen';//'This action requires you to add'; +$lang['new_required_attrs'] = 'Neue benötigte Attribute';//'New Required Attributes'; +$lang['requires_to_add'] = 'Diese Aktion zwingt sie folgendes hinzuzufügen';//'This action requires you to add'; $lang['new_attributes'] = 'neue Attribute';//'new attributes'; -$lang['new_required_attrs_instructions'] = 'Anleitung: Um diese objectClass hinzuzuf¨gen müssen sie ';//'Instructions: In order to add this objectClass to this entry, you must specify'; -$lang['that_this_oclass_requires'] = 'die von dieser objectClass benötigt werden. Sie können dies in diesem Formular machen.';//'that this objectClass requires. You can do so in this form.'; -$lang['add_oclass_and_attrs'] = 'ObjectClass und Attribute hinzufügen';//'Add ObjectClass and Attributes'; +$lang['new_required_attrs_instructions'] = 'Anleitung: Um diese objectClass hinzuzufügen müssen sie ';//'Instructions: In order to add this objectClass to this entry, you must specify'; +$lang['that_this_oclass_requires'] = 'die von dieser objectClass benötigt werden. Sie können dies in diesem Formular machen.';//'that this objectClass requires. You can do so in this form.'; +$lang['add_oclass_and_attrs'] = 'ObjectClass und Attribute hinzufügen';//'Add ObjectClass and Attributes'; // General -$lang['chooser_link_tooltip'] = 'Klicken um einen Eintrag (DN) grafisch auszuwählen.';//"Click to popup a dialog to select an entry (DN) graphically'; -$lang['no_updates_in_read_only_mode'] = 'Sie können keine Aktualisierungen durchführen während der Server sich im \'nur lese\'-modus befindet';//'You cannot perform updates while server is in read-only mode'; -$lang['bad_server_id'] = 'Ungültige Server ID';//'Bad server id'; -$lang['not_enough_login_info'] = 'Nicht genügend Angaben zur Anmeldung am Server. Bitte überprüfen sie ihre Konfiguration';//'Not enough information to login to server. Please check your configuration.'; +$lang['chooser_link_tooltip'] = 'Klicken um einen Eintrag (DN) grafisch auszuwählen.';//"Click to popup a dialog to select an entry (DN) graphically'; +$lang['no_updates_in_read_only_mode'] = 'Sie können keine Aktualisierungen durchführen während der Server sich im \'nur lese\'-modus befindet';//'You cannot perform updates while server is in read-only mode'; +$lang['bad_server_id'] = 'Ungültige Server ID';//'Bad server id'; +$lang['not_enough_login_info'] = 'Nicht genügend Angaben zur Anmeldung am Server. Bitte überprüfen sie ihre Konfiguration';//'Not enough information to login to server. Please check your configuration.'; $lang['could_not_connect'] = 'Konnte keine Verbindung zum LDAP Server herstellen.';//'Could not connect to LDAP server.'; -$lang['could_not_perform_ldap_mod_add'] = 'Kann keine \'ldap_mod_add\' Operationen durchführen.';//'Could not perform ldap_mod_add operation.'; -$lang['bad_server_id_underline'] = 'Ungültige Server ID:';//"Bad server_id: '; +$lang['could_not_connect_to_host_on_port'] = 'Konnte keine Verbindung zum Server "%s" am Port "%s" erstellen.';//'Could not connect to "%s" on port "%s"'; +$lang['could_not_perform_ldap_mod_add'] = 'Kann keine \'ldap_mod_add\' Operationen durchführen.';//'Could not perform ldap_mod_add operation.'; +$lang['bad_server_id_underline'] = 'Ungültige Server ID:';//"Bad server_id: '; $lang['success'] = 'Erfolgreich';//"Success'; $lang['server_colon_pare'] = 'Server';//"Server: '; $lang['look_in'] = 'Sehe nach in:';//"Looking in: '; $lang['missing_server_id_in_query_string'] = 'Keine Server ID in der Anfrage angegeben';//'No server ID specified in query string!'; $lang['missing_dn_in_query_string'] = 'Kein DN in der Anfrage angegeben';//'No DN specified in query string!'; -$lang['back_up_p'] = 'Backup...';//"Back Up...'; -$lang['no_entries'] = 'Keine Einträge';//"no entries'; +$lang['back_up_p'] = 'Eine Ebene höher...';//"Back Up...'; +$lang['no_entries'] = 'Keine Einträge';//"no entries'; $lang['not_logged_in'] = 'Nicht eingeloggt';//"Not logged in'; $lang['could_not_det_base_dn'] = 'Konnten Basis-DN nicht ermitteln.';//"Could not determine base DN'; +$lang['reasons_for_error']='Dies kann mehrere Gründe haben. Die häufigsten sind:';//'This could happen for several reasons, the most probable of which are:'; +$lang['please_report_this_as_a_bug']='Bitte senden Sie dies als einen Fehlerbericht.';//'Please report this as a bug.'; +$lang['yes']='Ja';//'Yes' +$lang['no']='Nein';//'No' +$lang['go']='Weiter';//'go' +$lang['delete']='Löschen';//'Delete'; +$lang['back']='Zurück';//'Back'; +$lang['object']='Objekt';//'object'; +//$lang['objects']='Objekte';//'objects'; +$lang['delete_all']='Lösche alle';//'Delete all'; +$lang['url_bug_report']=''+$lang['url_bug_report'];//'https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'Hinweis';//'hint'; +$lang['bug'] = 'Programmfehler';//'bug'; +$lang['warning'] = 'Warnung';//'warning'; +$lang['light'] = 'light'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Weiter';//'Proceed >>'; // Add value form -$lang['add_new'] = 'Neu hinzufügen';//'Add new'; +$lang['add_new'] = 'Neu hinzufügen';//'Add new'; $lang['value_to'] = 'Wert auf';//'value to'; -$lang['server'] = 'Server';//'Server'; //also used in copy_form.php $lang['distinguished_name'] = 'Distinguished Name (eindeutiger Name)';// 'Distinguished Name'; $lang['current_list_of'] = 'Aktuelle Liste von';//'Current list of'; $lang['values_for_attribute'] = 'Werte des Attributes';//'values for attribute'; -$lang['inappropriate_matching_note'] = 'Info: Sie werden einen "inappropriate matching" Fehler erhalten, falls sie nicht
'; //'Note: You will get an "inappropriate matching" error if you have not
' . - 'eine EQUALITY Regel für dieses Attribut auf ihren LDAP Server eingerichtet haben.';//'setup an EQUALITY rule on your LDAP server for this attribute.'; -$lang['enter_value_to_add'] = 'Geben sie den Wert ein den sie hinzufügen möchten:';//'Enter the value you would like to add:'; -$lang['new_required_attrs_note'] = 'Info: Sie werden gegebenenfalles gezwungen sein neue Attribute hinzuzufügen.';//'Note: you may be required to enter new attributes
that this objectClass requires.'; +$lang['inappropriate_matching_note'] = 'Info: Sie werden einen "inappropriate matching" Fehler erhalten, falls sie nicht'; //'Note: You will get an "inappropriate matching" error if you have not
' . + ' eine "EQUALITY" Regel für dieses Attribut auf ihren LDAP Server eingerichtet haben.';//'setup an EQUALITY rule on your LDAP server for this attribute.'; +$lang['enter_value_to_add'] = 'Geben sie den Wert ein den sie hinzufügen möchten:';//'Enter the value you would like to add:'; +$lang['new_required_attrs_note'] = 'Info: Sie werden gegebenenfalles gezwungen sein neue Attribute hinzuzufügen.';//'Note: you may be required to enter new attributes
that this objectClass requires.'; $lang['syntax'] = 'Syntax';//'Syntax'; //Copy.php -$lang['copy_server_read_only'] = 'Sie können keine Aktualisierungen durchführen während der Server sich im \'nur lese\'-modus befindet';//"You cannot perform updates while server is in read-only mode'; +$lang['copy_server_read_only'] = 'Sie können keine Aktualisierungen durchführen während der Server sich im \'nur lese\'-modus befindet';//"You cannot perform updates while server is in read-only mode'; $lang['copy_dest_dn_blank'] = 'Sie haben kein Ziel DN angegeben';//"You left the destination DN blank.'; $lang['copy_dest_already_exists'] = 'Der Zieleintrag (%s) existiert bereits.';//"The destination entry (%s) already exists.'; $lang['copy_dest_container_does_not_exist'] = 'Der Zielcontainer (%s) existiert nicht.';//'The destination container (%s) does not exist.'; @@ -186,6 +295,15 @@ $lang['copy_failed'] = 'Kopieren des DN fehlgeschlagen: ';//'Failed to copy DN: //edit.php $lang['missing_template_file'] = 'Warnung: Template Datei nicht gefunden';//'Warning: missing template file, '; $lang['using_default'] = 'Standardeinstellung verwenden';//'Using default.'; +$lang['template'] = 'Vorlage';//'Template'; +$lang['must_choose_template'] = 'Eine Vorlage muss ausgewählt sein';//'You must choose a template'; +$lang['invalid_template'] = 'Die Vorlage "%s" ist ungültig';// '%s is an invalid template'; +$lang['using_template'] = 'Verwende Vorlage';//'using template'; +$lang['go_to_dn'] = 'Gehe zu %s';//'Go to %s'; +$lang['structural_object_class_cannot_remove'] = 'Dies ist eine strukturelle Objektklasse und kann nicht entfernt werden.';//'This is a stuctural ObjectClass and cannot be removed.'; +$lang['structural'] = 'Strukturell';//'stuctural'; + + //copy_form.php $lang['copyf_title_copy'] = 'Kopiere';//"Copy '; @@ -195,111 +313,144 @@ $lang['copyf_dest_dn_tooltip'] = 'Der komplette DN des Eintrages der beim Kopier $lang['copyf_dest_server'] = 'Zielserver';//"Destination Server'; $lang['copyf_note'] = 'Info: Kopieren zwischen unterschiedlichen Servern funktioniert nur wenn keine Unvereinbarkeiten im Schema auftreten';//"Note: Copying between different servers only works if there are no schema violations'; $lang['copyf_recursive_copy'] = 'Rekursiv kopiert auch alle Unterobjekte';//"Recursively copy all children of this object as well.'; +$lang['recursive_copy'] = 'Rekursives kopieren';//'Recursive copy'; +$lang['filter'] = 'Filter';//'Filter'; +$lang['filter_tooltip'] = 'Bei der Ausfürung des rekursiven Kopierens werden nur die Einträge verwendet, die mit dem Filter übereinstimmen';// 'When performing a recursive copy, only copy those entries which match this filter'; + //create.php -$lang['create_required_attribute'] = 'Fehler, sie haben einen Wert für ein benötigtes Attribut frei gelassen.';//"Error, you left the value blank for required attribute '; -$lang['create_redirecting'] = 'Weiterleitung';//"Redirecting'; -$lang['create_here'] = 'hier';//"here'; -$lang['create_could_not_add'] = 'Konnte das Objekt dem LDAP-Server nicht hinzufügen.';//"Could not add the object to the LDAP server.'; +$lang['create_required_attribute'] = 'Fehler, sie haben einen Wert für ein benötigtes Attribut frei gelassen.';//"Error, you left the value blank for required attribute '; +$lang['redirecting'] = 'Weiterleitung';//"Redirecting'; moved from create_redirection -> redirection +$lang['here'] = 'hier';//"here'; renamed vom create_here -> here +$lang['create_could_not_add'] = 'Konnte das Objekt dem LDAP-Server nicht hinzufügen.';//"Could not add the object to the LDAP server.'; //create_form.php $lang['createf_create_object'] = 'Erzeuge einen neuen Eintag';//"Create Object'; -$lang['createf_choose_temp'] = 'Vorlage wählen';//"Choose a template'; -$lang['createf_select_temp'] = 'Wählen sie eine Vorlage für das Objekt';//"Select a template for the creation process'; +$lang['createf_choose_temp'] = 'Vorlage wählen';//"Choose a template'; +$lang['createf_select_temp'] = 'Wählen sie eine Vorlage für das Objekt';//"Select a template for the creation process'; $lang['createf_proceed'] = 'Weiter';//"Proceed >>'; +$lang['rdn_field_blank'] = 'Das RDN Feld wurde leer gelassen.';//'You left the RDN field blank.'; +$lang['container_does_not_exist'] = 'Der angegenben Eintrag (%s) ist nicht vorhanden. Bitte erneut versuchen.';// 'The container you specified (%s) does not exist. Please try again.'; +$lang['no_objectclasses_selected'] = 'Es wurde kein ObjectClasses für diesen Eintrag ausgewählt. Bitte zurückgehen und korrigieren';//'You did not select any ObjectClasses for this object. Please go back and do so.'; +$lang['hint_structural_oclass'] = 'Hinweis: Es muss mindestens ein Strukturelle ObjectClass ausgewählt sein.';//'Hint: You must choose at least one structural objectClass'; //creation_template.php $lang['ctemplate_on_server'] = 'Auf dem Server';//"On server'; $lang['ctemplate_no_template'] = 'Keine Vorlage angegeben in den POST Variabeln';//"No template specified in POST variables.'; -$lang['ctemplate_config_handler'] = 'Ihre Konfiguration spezifiziert für diese Vorlage die Routine';//"Your config specifies a handler of'; +$lang['ctemplate_config_handler'] = 'Ihre Konfiguration spezifiziert für diese Vorlage die Routine';//"Your config specifies a handler of'; $lang['ctemplate_handler_does_not_exist'] = '. Diese Routine existiert nicht im \'templates/creation\' Verzeichnis';//"for this template. But, this handler does not exist in the 'templates/creation' directory.'; +$lang['create_step1'] = 'Schritt 1 von 2: Name und Objektklasse(n)';//'Step 1 of 2: Name and ObjectClass(es)'; +$lang['create_step2'] = 'Schritt 2 von 2: Bestimmen der Attribute und Werte';//'Step 2 of 2: Specify attributes and values'; +$lang['relative_distinguished_name'] = 'Relativer Distingushed Name';//'Relative Distinguished Name'; +$lang['rdn'] = 'RDN';//'RDN'; +$lang['rdn_example'] = '(Beispiel: cn=MeineNeuePerson)';//'(example: cn=MyNewPerson)'; +$lang['container'] = 'Behälter';//'Container'; + // search.php -$lang['you_have_not_logged_into_server'] = 'Sie haben sich am ausgewählten Server nicht angemeldet. Sie k&oouml;nnen keine Suche durchführen.';//'You have not logged into the selected server yet, so you cannot perform searches on it.'; +$lang['you_have_not_logged_into_server'] = 'Sie haben sich am ausgewählten Server nicht angemeldet. Sie können keine Suche durchführen.';//'You have not logged into the selected server yet, so you cannot perform searches on it.'; $lang['click_to_go_to_login_form'] = 'Klicken sie hier um zur Anmeldeseite zu gelangen';//'Click here to go to the login form'; $lang['unrecognized_criteria_option'] = 'Unbekannte Option';// 'Unrecognized criteria option: '; -$lang['if_you_want_to_add_criteria'] = 'Falls eigene Auswahlkriterien hinzugefügt werden sollen, muss \'search.php\' editiert werden';//'If you want to add your own criteria to the list. Be sure to edit search.php to handle them. Quitting.'; -$lang['entries_found'] = 'Gefundene Einträge: ';//'Entries found: '; +$lang['if_you_want_to_add_criteria'] = 'Falls eigene Auswahlkriterien hinzugefügt werden sollen, muss \'search.php\' editiert werden';//'If you want to add your own criteria to the list. Be sure to edit search.php to handle them. Quitting.'; +$lang['entries_found'] = 'Gefundene Einträge: ';//'Entries found: '; $lang['filter_performed'] = 'Angewanter Filter: ';//'Filter performed: '; -$lang['search_duration'] = 'Suche durch phpLDAPadmin ausgeführt in';//'Search performed by phpLDAPadmin in'; +$lang['search_duration'] = 'Suche durch phpLDAPadmin ausgeführt in';//'Search performed by phpLDAPadmin in'; $lang['seconds'] = 'Sekunden';//'seconds'; // search_form_advanced.php $lang['scope_in_which_to_search'] = 'Bereich der durchsucht wird.';//'The scope in which to search'; -$lang['scope_sub'] = 'Sub (Suchbase und alle Unterverzeichnisebenen)';//'Sub (entire subtree)'; +$lang['scope_sub'] = 'Sub (Suchbasis und alle Unterverzeichnisebenen)';//'Sub (entire subtree)'; $lang['scope_one'] = 'One (Suchbasis und eine Unterverzeichnisebene)';//'One (one level beneath base)'; $lang['scope_base'] = 'Base (Nur Suchbasis)';//'Base (base dn only)'; $lang['standard_ldap_search_filter'] = 'Standard LDAP Suchfilter. Bsp.: (&(sn=Smith)(givenname=David))';//'Standard LDAP search filter. Example: (&(sn=Smith)(givenname=David))'; $lang['search_filter'] = 'Suchfilter';//'Search Filter'; $lang['list_of_attrs_to_display_in_results'] = 'Kommaseparierte Liste der anzuzeigenden Attribute.';//'A list of attributes to display in the results (comma-separated)'; -$lang['show_attributes'] = 'Zeige Attribute';//'Show Attributes'; // search_form_simple.php -$lang['search_for_entries_whose'] = 'Suche nach Einträgen welche:';//'Search for entries whose:'; -$lang['equals'] = 'entspricht';//'equals'; $lang['starts with'] = 'beginnt mit';//'starts with'; -$lang['contains'] = 'enthält';//'contains'; $lang['ends with'] = 'endet auf';//'ends with'; $lang['sounds like'] = 'klingt wie';//'sounds like'; + // server_info.php $lang['could_not_fetch_server_info'] = 'Konnte keine LDAP Informationen vom Server empfangen';//'Could not retrieve LDAP information from the server'; -$lang['server_info_for'] = 'Serverinformationen für: ';//'Server info for: '; -$lang['server_reports_following'] = 'Der Server meldete die folgenden Informationen über sich';//'Server reports the following information about itself'; +$lang['server_info_for'] = 'Serverinformationen für: ';//'Server info for: '; +$lang['server_reports_following'] = 'Der Server meldete die folgenden Informationen über sich';//'Server reports the following information about itself'; $lang['nothing_to_report'] = 'Der Server hat keine Informationen gemeldet';//'This server has nothing to report.'; //update.php -$lang['update_array_malformed'] = 'Das \'update_array\' wird falsch dargestellt. Dies könnte ein phpLDAPadmin Fehler sein. Bitte Berichten sie uns davon.';//'update_array is malformed. This might be a phpLDAPadmin bug. Please report it.'; -$lang['could_not_perform_ldap_modify'] = 'Konnte die \'ldap_modify\' Operation nicht ausführen.';//'Could not perform ldap_modify operation.'; +$lang['update_array_malformed'] = 'Das "update_array" wird falsch dargestellt. Dies könnte ein phpLDAPadmin Fehler sein. Bitte Berichten sie uns davon.';//'update_array is malformed. This might be a phpLDAPadmin bug. Please report it.'; +$lang['could_not_perform_ldap_modify'] = 'Konnte die \'ldap_modify\' Operation nicht ausführen.';//'Could not perform ldap_modify operation.'; // update_confirm.php -$lang['do_you_want_to_make_these_changes'] = 'Wollen sie diese Änderungen übernehmen?';//'Do you want to make these changes?'; +$lang['do_you_want_to_make_these_changes'] = 'Wollen sie diese Änderungen übernehmen?';//'Do you want to make these changes?'; $lang['attribute'] = 'Attribute';//'Attribute'; $lang['old_value'] = 'Alter Wert';//'Old Value'; $lang['new_value'] = 'Neuer Wert';//'New Value'; -$lang['attr_deleted'] = '[Wert gelöscht]';//'[attribute deleted]'; +$lang['attr_deleted'] = '[Wert gelöscht]';//'[attribute deleted]'; $lang['commit'] = 'Anwenden';//'Commit'; -$lang['cancel'] = 'Verwerfen';//'Cancel'; -$lang['you_made_no_changes'] = 'Sie haben keine Änderungen vorgenommen.';//'You made no changes'; -$lang['go_back'] = 'Zurück';//'Go back'; +$lang['cancel'] = 'Abbruch';//'Cancel'; +$lang['you_made_no_changes'] = 'Sie haben keine Änderungen vorgenommen.';//'You made no changes'; +$lang['go_back'] = 'Zurück';//'Go back'; // welcome.php -$lang['welcome_note'] = 'Benützen sie das Menu auf der linken Seite zur Navigation.';//'Use the menu to the left to navigate'; +$lang['welcome_note'] = 'Benutzen sie das Menu auf der linken Seite zur Navigation.';//'Use the menu to the left to navigate'; $lang['credits'] = 'Vorspann';//'Credits'; -$lang['changelog'] = 'Änderungsdatei';//'ChangeLog'; -$lang['documentation'] = 'Dokumentation';// 'Documentation'; +$lang['changelog'] = 'Änderungsdatei';//'ChangeLog'; +//$lang['documentation'] = 'Dokumentation';// 'Documentation'; +$lang['donate'] = 'Spende';//'Donate'; + +$lang['purge_cache'] = 'Cache bereinigen';//'Purge caches'; +$lang['no_cache_to_purge'] = 'Kein Cache zu bereinigen';//'No cache to purge.'; +$lang['done_purging_caches'] = 'Es wurden %s Bytes aus dem Cache bereinigt.';//'Purged %s bytes of cache.'; + + // view_jpeg_photo.php $lang['unsafe_file_name'] = 'Unsicherer Dateiname:';//'Unsafe file name: '; $lang['no_such_file'] = 'Keine Datei unter diesem Namen';//'No such file: '; //function.php -$lang['auto_update_not_setup'] = 'auto_uid_numbers wurde in der Konfiguration (%s aktiviert, aber der Mechanismus (auto_uid_number_mechanism) nicht. Bitte diese Problem korrigieren.';//"You have enabled auto_uid_numbers for %s in your configuration, but you have not specified the auto_uid_number_mechanism. Please correct this problem.'; -$lang['uidpool_not_set'] = 'Der Mechanismus auto_uid_number_mechanism ist als uidpool für den Server %s festgelegt, jedoch wurde nicht der auto_uid_number_uid_pool_dn festgelegt. Bitte korrigieren und dann weiter verfahren.';//"You specified the auto_uid_number_mechanism as uidpool in your configuration for server %s, but you did not specify the audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; +$lang['auto_update_not_setup'] = '"auto_uid_numbers" wurde in der Konfiguration (%s) aktiviert, aber der Mechanismus (auto_uid_number_mechanism) nicht. Bitte diese Problem korrigieren.';//"You have enabled auto_uid_numbers for %s in your configuration, but you have not specified the auto_uid_number_mechanism. Please correct this problem.'; +$lang['uidpool_not_set'] = 'Der Mechanismus "auto_uid_number_mechanism" ist als "uidpool" für den Server (%s) festgelegt, jedoch wurde nicht der "auto_uid_number_uid_pool_dn" festgelegt. Bitte korrigieren und dann weiter verfahren.';//"You specified the auto_uid_number_mechanism as uidpool in your configuration for server %s, but you did not specify the audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; -$lang['uidpool_not_exist'] = 'Es scheint so, dass der uidPool - der in der Konfiguration festgelegt ist - nicht vorhanden ist.';//"It appears that the uidPool you specified in your configuration (%s) does not exist.'; +$lang['uidpool_not_exist'] = 'Es scheint so, dass der "uidPool" - der in der Konfiguration festgelegt ist - nicht vorhanden ist.';//"It appears that the uidPool you specified in your configuration (%s) does not exist.'; -$lang['specified_uidpool'] = 'Der auto_uid_number_mechanism wurde auf search in der Konfiguration des Servers %s festgelegt, aber es wurde der Wert fü auto_uid_number_search_base nicht gesetzt. Bitte korrigieren und dann weiter verfahren.';//"You specified the auto_uid_number_mechanism as search in your configuration for server %s, but you did not specify the auto_uid_number_search_base. Please specify it before proceeding.'; +$lang['specified_uidpool'] = 'Der "auto_uid_number_mechanism" wurde auf "search" in der Konfiguration des Servers (%s) festgelegt, aber es wurde der Wert fü "auto_uid_number_search_base" nicht gesetzt. Bitte korrigieren und dann weiter verfahren.';//"You specified the auto_uid_number_mechanism as search in your configuration for server %s, but you did not specify the auto_uid_number_search_base. Please specify it before proceeding.'; +$lang['bad_auto_uid_search_base'] = 'Die phpLDAPadmin Konfiguration für den Server "%s" gibt eine ungültige Suchbasis für "auto_uid_search_base" an.';//'Your phpLDAPadmin configuration specifies an invalid auto_uid_search_base for server %s'; +$lang['auto_uid_invalid_credential'] = 'Konnte nicht mit "%s" verbinden';// 'Unable to bind to %s with your with auto_uid credentials. Please check your configuration file.'; +$lang['auto_uid_invalid_value'] = 'Es wurde ein ungültiger Wert für "auto_uid_number_mechanism" (%s) festgelegt. Gültig sind nur die Werte "uidpool" und "search". Bitte den Fehler korrigieren. ';//"You specified an invalid value for auto_uid_number_mechanism (%s) in your configration. Only uidpool and search are valid. Please correct this problem.'; -$lang['auto_uid_invalid_value'] = 'Es wurde ein ungültiger Wert für auto_uid_number_mechanism(%s) festgelegt. Gültig sind nur die Werte uidpool und search. Bitte den Fehler korrigieren. ';//"You specified an invalid value for auto_uid_number_mechanism (%s) in your configration. Only uidpool and search are valid. Please correct this problem.'; +$lang['error_auth_type_config'] = 'Fehler: Ein Fehler ist in der Konfiguration (config.php) aufgetreten. Die einzigen beiden erlaubten Werte im Konfigurationsteil "auth_type" zu einem LDAP-Server ist "config" oder "form". Eingetragen ist aber "%s", was nicht erlaubt ist.';//"Error: You have an error in your config file. The only two allowed values for 'auth_type' in the $servers section are 'config' and 'form'. You entered '%s', which is not allowed. '; -$lang['error_auth_type_config'] = 'Fehler: Ein Fehler ist in der Konfiguration (config.php) aufgetreten. Die einzigen beiden erlaubten Werte im Konfigurationsteil \'auth_type\' zu einem LDAP-Server ist \'config\' oder \'form\'. Eingetragen ist aber %s, was nicht erlaubt ist.';//"Error: You have an error in your config file. The only two allowed values for 'auth_type' in the $servers section are 'config' and 'form'. You entered '%s', which is not allowed. '; +$lang['unique_attrs_invalid_credential'] = 'Es konnten nicht an "%s" mit dem Berechtigungsnachweis von "unique_attrs" verbunden werden. Bitte die Konfigurationdatei (config.php) überprüfen.';//'Unable to bind to %s with your with unique_attrs credentials. Please check your configuration file.'; +$lang['unique_attr_failed'] = 'Der Versuch von "%s" (%s) an "%s%" ist nicht erlaubt. Das Attibut/Wert gehört zu einem anderen Eintrag. Vielleicht möchten Sie nach dem Wert suchen?';// ERROR DONT'T USE HTML!!! //'Your attempt to add %s (%s) to
%s
is NOT allowed. That attribute/value belongs to another entry.

You might like to search for that entry.'; -$lang['php_install_not_supports_tls'] = 'Die verwendete PHP-Version unterstützt kein TLS (verschlüsselte Verbindung).';//"Your PHP install does not support TLS'; -$lang['could_not_start_tls'] = 'TLS konnte nicht gestartet werden.
Bitte die LDAP-Server-Konfiguration überprüfen.';//"Could not start TLS.
Please check your LDAP server configuration.'; -$lang['auth_type_not_valid'] = 'Die Konfigurationsdatei enthält einen Fehler. Der Eintrag für \'auth_type\' %s ist nicht gü,ltig';// 'You have an error in your config file. auth_type of %s is not valid.'; -$lang['ldap_said'] = 'LDAP meldet: %s

';//"LDAP said: %s

'; + +$lang['php_install_not_supports_tls'] = 'Die verwendete PHP-Version unterstützt kein TLS (verschlüsselte Verbindung).';//"Your PHP install does not support TLS'; +$lang['could_not_start_tls'] = 'TLS konnte nicht gestartet werden. Bitte die LDAP-Server-Konfiguration überprüfen.';//"Could not start TLS.
Please check your LDAP server configuration.'; +$lang['could_not_bind_anon'] = 'Konnte keine Anonymous Anmeldung zum Server herstellen.';//'Could not bind anonymously to server.'; +$lang['could_not_bind'] = 'Konnte keine Verbindung zum LDAP-Server herstellen';//'Could not bind to the LDAP server.'; +//$lang['anon_required_for_login_attr'] = 'Bei der Verwendung des Anmeldeprozedur "login_attr" muss der Server Anonymous Anmelden zulassen.';//'When using the login_attr feature, the LDAP server must support anonymous binds.'; +$lang['anonymous_bind'] = 'Anonymous anmelden';//'Anonymous Bind'; +//$lang['auth_type_not_valid'] = 'Die Konfigurationsdatei enthält einen Fehler. Der Eintrag für \'auth_type\' mit \'%s\' ist nicht gültig';// 'You have an error in your config file. auth_type of %s is not valid.'; +$lang['bad_user_name_or_password'] = 'Falscher Benutzername oder Passwort. Bitte erneut versuchen.';//'Bad username or password. Please try again.'; +$lang['redirecting_click_if_nothing_happens'] = 'Automatische Umleitung. Falls dies nicht automatisch erfolgt dann hier klicken.';//'Redirecting... Click here if nothing happens.'; +$lang['successfully_logged_in_to_server'] = 'Erfolgreich am Server %s angemeldet';//'Successfully logged into server %s'; +$lang['could_not_set_cookie'] = 'Konnte kein \'Cookie\' setzten.';//'Could not set cookie.'; +$lang['ldap_said'] = 'LDAP meldet: %s';//"LDAP said: %s

'; $lang['ferror_error'] = 'Fehler';//"Error'; -$lang['fbrowse'] = 'Überfliegen';//"browse'; -$lang['delete_photo'] = 'Lösche Foto';//"Delete Photo'; -$lang['install_not_support_blowfish'] = 'Die verwendete PHP-Version unterstützt keine Blowfish Verschlüsselung.';//"Your PHP install does not support blowfish encryption.'; -$lang['install_no_mash'] = 'Die verwendete PHP-Version unterstützt nicht die Funktion mhash(), daher kann kein SHA Hash verwendet werden.';// "Your PHP install does not have the mhash() function. Cannot do SHA hashes.'; -$lang['jpeg_contains_errors'] = 'Die Bilddatei enthält Fehler';//"jpegPhoto contains errors
'; -$lang['ferror_number'] = 'Fehlernummer: %s(%s)

';//"Error number: %s (%s)

'; -$lang['ferror_discription'] ='Beschreibung: %s

';// "Description: %s

'; -$lang['ferror_number_short'] = 'Fehlernummer:%s

';//"Error number: %s

'; -$lang['ferror_discription_short'] = 'Beschreibung: (keine Beschreibung verfügbar)
';//"Description: (no description available)
'; -$lang['ferror_submit_bug'] = 'Ist das ein phpLDAPadmin Fehler? Wenn dies so ist, dann bitte darüber berichten';//"Is this a phpLDAPadmin bug? If so, please report it.'; +$lang['fbrowse'] = 'Überfliegen';//"browse'; +$lang['delete_photo'] = 'Lösche Foto';//"Delete Photo'; +$lang['install_not_support_blowfish'] = 'Die verwendete PHP-Version unterstützt keine Blowfish Verschlüsselung.';//"Your PHP install does not support blowfish encryption.'; +$lang['install_not_support_md5crypt'] = 'Die eingesetzte PHP-Version unterstützt keine MD5-Verschlüsselung.';//'Your PHP install does not support md5crypt encryption.'; +$lang['install_no_mash'] = 'Die verwendete PHP-Version unterstützt nicht die Funktion mhash(), daher kann kein SHA Hash verwendet werden.';// "Your PHP install does not have the mhash() function. Cannot do SHA hashes.'; +$lang['jpeg_contains_errors'] = 'Die Bilddatei enthält Fehler';//"jpegPhoto contains errors
'; +$lang['ferror_number'] = 'Fehlernummer: %s (%s)';//"Error number: %s (%s)

'; +$lang['ferror_discription'] ='Beschreibung: %s';// "Description: %s

'; +$lang['ferror_number_short'] = 'Fehlernummer: %s';//"Error number: %s

'; +$lang['ferror_discription_short'] = 'Beschreibung: (keine Beschreibung verfügbar)';//"Description: (no description available)
'; +$lang['ferror_submit_bug'] = 'Ist das ein phpLDAPadmin Fehler? Wenn dies so ist, dann bitte darüber berichten';//"Is this a phpLDAPadmin bug? If so, please report it.'; $lang['ferror_unrecognized_num'] = 'Unbekannte Fehlernummer:';//"Unrecognized error number: '; $lang['ferror_nonfatil_bug'] = '

Ein nicht fataler Fehler in phpLDAPadmin gefunden!
Fehler:%s (%s)
Datei:%sZeile:%s, aufgerufen von %s
Version:PLA: %s, PHP: %s, SAPI: %s
Web server:%s
Bitte diesen Fehler melden (durch anklicken)..

';//"
You found a non-fatal phpLDAPadmin bug!
Error:%s (%s)
File:%s line %s, caller %s
Versions:PLA: %s, PHP: %s, SAPI: %s
Web server:%s
Please report this bug by clicking here.

'; @@ -308,22 +459,109 @@ $lang['ferror_congrats_found_bug'] = '
+
%s'; +$lang['authenticate_to_server'] = 'Authentifizierung mit Server %s';//'Authenticate to server %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Achtung: Diese Webverbindung ist unverschlüsselt.';//'Warning: This web connection is unencrypted.'; +$lang['not_using_https'] = 'Es wird keine verschlüsselte Verbindung (\'https\') verwendet. Der Webbrowser übermittelt die Anmeldeinformationen im Klartext.';// 'You are not use \'https\'. Web browser will transmit login information in clear text.'; +$lang['login_dn'] = 'Anmelde DN';//'Login DN'; +$lang['user_name'] = 'Benutzername';//'User name'; +$lang['password'] = 'Passwort';//'Password'; +$lang['authenticate'] = 'Authentifizierung';//'Authenticate'; + +// Entry browser +$lang['entry_chooser_title'] = 'Einträge auswählen';//'Entry Chooser'; + +// Index page +$lang['need_to_configure'] = 'phpLDAPadmin muss konfiguriert werden. Bitte die Datei "config.php" erstellen. Ein Beispiel einer "config.php" liegt als Datei "config.php.example" bei.';// ';//'You need to configure phpLDAPadmin. Edit the file \'config.php\' to do so. An example config file is provided in \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Löschen ist im Nur-Lese-Modus nicht erlaubt.';//'Deletes not allowed in read only mode.'; +$lang['error_calling_mass_delete'] = 'Fehler im Aufruf von "mass_delete.php". "mass_delete" ist in den POST-Variablen nicht vorhanden.';//'Error calling mass_delete.php. Missing mass_delete in POST vars.'; +$lang['search_attrs_wrong_count'] = 'Die config.php beinhaltet einen fehlerhaften Eintrag. Die anzahl der Attribute in $search_attributes und $search_attributes_diplay ist unterschiedlich';//'Your config.php has an error. The number of attributes in $search_attributes and $search_attributes_display is different'; +$lang['mass_delete_not_array'] = 'Die POST-Variable "mass_delete" ist kein Array.';//'mass_delete POST var is not an array.'; +$lang['mass_delete_not_enabled'] = '"Viel-Löschen" ist nicht aktiviert. Bitte in der der "config.php" aktivieren vor dem Weitermachen.';//'Mass deletion is not enabled. Please enable it in config.php before proceeding.'; +$lang['mass_deleting'] = 'Viel-Löschen';//'Mass Deleting'; +$lang['mass_delete_progress'] = 'Löschprozess auf Server "%s"';//'Deletion progress on server "%s"'; +$lang['malformed_mass_delete_array'] = 'Das Array "mass_delete" ist falsch dargestellt.';//'Malformed mass_delete array.'; +$lang['no_entries_to_delete'] = 'Es wurde kein zu löschender Eintrag ausgewählt.';//'You did not select any entries to delete.'; +$lang['deleting_dn'] = 'Lösche "%s"';//'Deleting %s'; +$lang['total_entries_failed'] = '%s von %s Einträgen konnten nicht gelöscht werden.';//'%s of %s entries failed to be deleted.'; +$lang['all_entries_successful'] = 'Alle Einträge wurden erfolgreich gelöscht.';//'All entries deleted successfully.'; +$lang['confirm_mass_delete'] = 'Bitte das Löschen von %s Einträgen auf dem Server %s bestätigen';//'Confirm mass delete of %s entries on server %s'; +$lang['yes_delete'] = 'Ja, Löschen!';//'Yes, delete!'; + + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Das Umbenennen von einem Eintrag mit Untereinträgen ist nicht Möglich. Es ist nur auf den Untersten Einträgen gestattet.';// 'You cannot rename an entry which has children entries (eg, the rename operation is not allowed on non-leaf entries)'; +$lang['no_rdn_change'] = 'Der RDN wurde nicht verändert';//'You did not change the RDN'; +$lang['invalid_rdn'] = 'Ungültiger RDN Wert';//'Invalid RDN value'; +$lang['could_not_rename'] = 'Der Eintrag konnte nicht umbenannt werden';//'Could not rename the entry'; + + ?> diff --git a/lang/en.php b/lang/en.php index 4fe9a03..d80ede9 100644 --- a/lang/en.php +++ b/lang/en.php @@ -1,14 +1,18 @@ DN'; +$lang['base_dn'] = 'Base DN'; $lang['search_scope'] = 'Search Scope'; -$lang['search_ filter'] = 'Search Filter'; $lang['show_attributes'] = 'Show Attributtes'; +$lang['attributes'] = 'Attributes'; $lang['Search'] = 'Search'; -$lang['equals'] = 'equals'; -$lang['starts_with'] = 'starts with'; -$lang['contains'] = 'contains'; -$lang['ends_with'] = 'ends with'; -$lang['sounds_like'] = 'sounds like'; +$lang['predefined_search_str'] = 'Select a predefined search'; +$lang['predefined_searches'] = 'Predefined Searches'; +$lang['no_predefined_queries'] = 'No queries have been defined in config.php.'; +$lang['export_results'] = 'export results'; +$lang['unrecoginzed_search_result_format'] = 'Unrecognized search result format: %s'; +$lang['format'] = 'Format'; +$lang['list'] = 'list'; +$lang['table'] = 'table'; +$lang['bad_search_display'] = 'Your config.php specifies an invalid value for $default_search_display: %s. Please fix it'; +$lang['page_n'] = 'Page %d'; +$lang['no_results'] = 'The search found no results.'; // Tree browser -$lang['request_new_feature'] = 'Request a new feature'; -$lang['see_open_requests'] = 'see open requests'; +$lang['request_new_feature'] = 'Request feature'; $lang['report_bug'] = 'Report a bug'; -$lang['see_open_bugs'] = 'see open bugs'; $lang['schema'] = 'schema'; $lang['search'] = 'search'; $lang['create'] = 'create'; @@ -47,98 +55,166 @@ $lang['info'] = 'info'; $lang['import'] = 'import'; $lang['refresh'] = 'refresh'; $lang['logout'] = 'logout'; -$lang['create_new'] = 'Create New'; +$lang['create_new'] = 'Create new entry here'; $lang['view_schema_for'] = 'View schema for'; $lang['refresh_expanded_containers'] = 'Refresh all expanded containers for'; $lang['create_new_entry_on'] = 'Create a new entry on'; +$lang['new'] = 'new'; $lang['view_server_info'] = 'View server-supplied information'; $lang['import_from_ldif'] = 'Import entries from an LDIF file'; $lang['logout_of_this_server'] = 'Logout of this server'; $lang['logged_in_as'] = 'Logged in as: '; +$lang['this_base_dn_is_not_valid'] = 'This is not a valid DN.'; +$lang['this_base_dn_does_not_exist'] = 'This entry does not exist.'; $lang['read_only'] = 'read only'; +$lang['read_only_tooltip'] = 'This attribute has been flagged as read only by the phpLDAPadmin administrator'; $lang['could_not_determine_root'] = 'Could not determine the root of your LDAP tree.'; $lang['ldap_refuses_to_give_root'] = 'It appears that the LDAP server has been configured to not reveal its root.'; $lang['please_specify_in_config'] = 'Please specify it in config.php'; $lang['create_new_entry_in'] = 'Create a new entry in'; $lang['login_link'] = 'Login...'; +$lang['login'] = 'login'; +$lang['base_entry_does_not_exist'] = 'The base entry does not exist.'; +$lang['create_it'] = 'Create it?'; // Entry display $lang['delete_this_entry'] = 'Delete this entry'; $lang['delete_this_entry_tooltip'] = 'You will be prompted to confirm this decision'; $lang['copy_this_entry'] = 'Copy this entry'; $lang['copy_this_entry_tooltip'] = 'Copy this object to another location, a new DN, or another server'; -$lang['export_to_ldif'] = 'Export to LDIF'; -$lang['export_to_ldif_tooltip'] = 'Save an LDIF dump of this object'; -$lang['export_subtree_to_ldif_tooltip'] = 'Save an LDIF dump of this object and all of its children'; -$lang['export_subtree_to_ldif'] = 'Export subtree to LDIF'; -$lang['export_to_ldif_mac'] = 'Macintosh style line ends'; -$lang['export_to_ldif_win'] = 'Windows style line ends'; -$lang['export_to_ldif_unix'] = 'Unix style line ends'; +$lang['export'] = 'Export'; +$lang['export_lcase'] = 'export'; +$lang['export_tooltip'] = 'Save a dump of this object'; +$lang['export_subtree_tooltip'] = 'Save a dump of this object and all of its children'; +$lang['export_subtree'] = 'Export subtree'; $lang['create_a_child_entry'] = 'Create a child entry'; -$lang['add_a_jpeg_photo'] = 'Add a jpegPhoto'; $lang['rename_entry'] = 'Rename Entry'; $lang['rename'] = 'Rename'; $lang['add'] = 'Add'; $lang['view'] = 'View'; -$lang['add_new_attribute'] = 'Add New Attribute'; -$lang['add_new_attribute_tooltip'] = 'Add a new attribute/value to this entry'; -$lang['internal_attributes'] = 'Internal Attributes'; +$lang['view_one_child'] = 'View 1 child'; +$lang['view_children'] = 'View %s children'; +$lang['add_new_attribute'] = 'Add new attribute'; +$lang['add_new_objectclass'] = 'Add new ObjectClass'; $lang['hide_internal_attrs'] = 'Hide internal attributes'; $lang['show_internal_attrs'] = 'Show internal attributes'; -$lang['internal_attrs_tooltip'] = 'Attributes set automatically by the system'; -$lang['entry_attributes'] = 'Entry Attributes'; $lang['attr_name_tooltip'] = 'Click to view the schema defintion for attribute type \'%s\''; -$lang['click_to_display'] = 'click \'+\' to display'; -$lang['hidden'] = 'hidden'; $lang['none'] = 'none'; +$lang['no_internal_attributes'] = 'No internal attributes'; +$lang['no_attributes'] = 'This entry has no attributes'; $lang['save_changes'] = 'Save Changes'; $lang['add_value'] = 'add value'; $lang['add_value_tooltip'] = 'Add an additional value to attribute \'%s\''; $lang['refresh_entry'] = 'Refresh'; $lang['refresh_this_entry'] = 'Refresh this entry'; -$lang['delete_hint'] = 'Hint: To delete an attribute, empty the text field and click save.'; -$lang['attr_schema_hint'] = 'Hint: To view the schema for an attribute, click the attribute name.'; +$lang['delete_hint'] = 'Hint: To delete an attribute, empty the text field and click save.'; +$lang['attr_schema_hint'] = 'Hint: To view the schema for an attribute, click the attribute name.'; $lang['attrs_modified'] = 'Some attributes (%s) were modified and are highlighted below.'; $lang['attr_modified'] = 'An attribute (%s) was modified and is highlighted below.'; $lang['viewing_read_only'] = 'Viewing entry in read-only mode.'; -$lang['change_entry_rdn'] = 'Change this entry\'s RDN'; $lang['no_new_attrs_available'] = 'no new attributes available for this entry'; +$lang['no_new_binary_attrs_available'] = 'no new binary attributes available for this entry'; $lang['binary_value'] = 'Binary value'; -$lang['add_new_binary_attr'] = 'Add New Binary Attribute'; -$lang['add_new_binary_attr_tooltip'] = 'Add a new binary attribute/value from a file'; +$lang['add_new_binary_attr'] = 'Add new binary attribute'; $lang['alias_for'] = 'Note: \'%s\' is an alias for \'%s\''; +$lang['required_for'] = 'Required attribute for objectClass(es) %s'; $lang['download_value'] = 'download value'; $lang['delete_attribute'] = 'delete attribute'; $lang['true'] = 'true'; $lang['false'] = 'false'; $lang['none_remove_value'] = 'none, remove value'; $lang['really_delete_attribute'] = 'Really delete attribute'; +$lang['add_new_value'] = 'Add New Value'; // Schema browser -$lang['the_following_objectclasses'] = 'The following objectClasses are supported by this LDAP server.'; -$lang['the_following_attributes'] = 'The following attributeTypes are supported by this LDAP server.'; -$lang['the_following_matching'] = 'The following matching rules are supported by this LDAP server.'; -$lang['the_following_syntaxes'] = 'The following syntaxes are supported by this LDAP server.'; +$lang['the_following_objectclasses'] = 'The following objectClasses are supported by this LDAP server.'; +$lang['the_following_attributes'] = 'The following attributeTypes are supported by this LDAP server.'; +$lang['the_following_matching'] = 'The following matching rules are supported by this LDAP server.'; +$lang['the_following_syntaxes'] = 'The following syntaxes are supported by this LDAP server.'; +$lang['schema_retrieve_error_1']='The server does not fully support the LDAP protocol.'; +$lang['schema_retrieve_error_2']='Your version of PHP does not correctly perform the query.'; +$lang['schema_retrieve_error_3']='Or lastly, phpLDAPadmin doesn\'t know how to fetch the schema for your server.'; $lang['jump_to_objectclass'] = 'Jump to an objectClass'; +$lang['view_schema_for_oclass'] = 'View the schema description for this objectClass'; $lang['jump_to_attr'] = 'Jump to an attribute type'; +$lang['jump_to_matching_rule'] = 'Jump to a matching rule'; $lang['schema_for_server'] = 'Schema for server'; $lang['required_attrs'] = 'Required Attributes'; +$lang['required'] = 'required'; $lang['optional_attrs'] = 'Optional Attributes'; +$lang['optional_binary_attrs'] = 'Optional Binary Attributes'; $lang['OID'] = 'OID'; +$lang['aliases']='Aliases'; $lang['desc'] = 'Description'; +$lang['no_description']='no description'; $lang['name'] = 'Name'; -$lang['is_obsolete'] = 'This objectClass is obsolete'; -$lang['inherits'] = 'Inherits'; +$lang['equality']='Equality'; +$lang['is_obsolete'] = 'This objectClass is obsolete.'; +$lang['inherits'] = 'Inherits from'; +$lang['inherited_from'] = 'Inherited from'; +$lang['parent_to'] = 'Parent to'; $lang['jump_to_this_oclass'] = 'Jump to this objectClass definition'; $lang['matching_rule_oid'] = 'Matching Rule OID'; $lang['syntax_oid'] = 'Syntax OID'; $lang['not_applicable'] = 'not applicable'; $lang['not_specified'] = 'not specified'; +$lang['character']='character'; +$lang['characters']='characters'; +$lang['used_by_objectclasses']='Used by objectClasses'; +$lang['used_by_attributes']='Used by Attributes'; +$lang['maximum_length']='Maximum Length'; +$lang['attribute_types']='Attribute Types'; +$lang['syntaxes']='Syntaxes'; +$lang['matchingrules']='Matching Rules'; +$lang['oid']='OID'; +$lang['obsolete']='Obsolete'; +$lang['ordering']='Ordering'; +$lang['substring_rule']='Substring Rule'; +$lang['single_valued']='Single Valued'; +$lang['collective']='Collective'; +$lang['user_modification']='User Modification'; +$lang['usage']='Usage'; +$lang['could_not_retrieve_schema_from']='Could not retrieve schema from'; +$lang['type']='Type'; +$lang['no_such_schema_item'] = 'No such schema item: "%s"'; // Deleting entries -$lang['entry_deleted_successfully'] = 'Entry \'%s\' deleted successfully.'; +$lang['entry_deleted_successfully'] = 'Entry %s deleted successfully.'; $lang['you_must_specify_a_dn'] = 'You must specify a DN'; $lang['could_not_delete_entry'] = 'Could not delete the entry: %s'; +$lang['no_such_entry'] = 'No such entry: %s'; +$lang['delete_dn'] = 'Delete %s'; +$lang['permanently_delete_children'] = 'Permanently delete all children also?'; +$lang['entry_is_root_sub_tree'] = 'This entry is the root of a sub-tree containing %s entries.'; +$lang['view_entries'] = 'view entries'; +$lang['confirm_recursive_delete'] = 'phpLDAPadmin can recursively delete this entry and all %s of its children. See below for a list of all the entries that this action will delete. Do you want to do this?'; +$lang['confirm_recursive_delete_note'] = 'Note: this is potentially very dangerous and you do this at your own risk. This operation cannot be undone. Take into consideration aliases, referrals, and other things that may cause problems.'; +$lang['delete_all_x_objects'] = 'Delete all %s objects'; +$lang['recursive_delete_progress'] = 'Recursive delete progress'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'Entry %s and sub-tree deleted successfully.'; +$lang['failed_to_delete_entry'] = 'Failed to delete entry %s'; +$lang['list_of_entries_to_be_deleted'] = 'List of entries to be deleted:'; +$lang['sure_permanent_delete_object']='Are you sure you want to permanently delete this object?'; +$lang['dn'] = 'DN'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'; +$lang['no_attr_specified'] = 'No attribute name specified.'; +$lang['no_dn_specified'] = 'No DN specified'; + +// Adding attributes +$lang['left_attr_blank'] = 'You left the attribute value blank. Please go back and try again.'; +$lang['failed_to_add_attr'] = 'Failed to add the attribute.'; +$lang['file_empty'] = 'The file you chose is either empty or does not exist. Please go back and try again.'; +$lang['invalid_file'] = 'Security error: The file being uploaded may be malicious.'; +$lang['warning_file_uploads_disabled'] = 'Your PHP configuration has disabled file uploads. Please check php.ini before proceeding.'; +$lang['uploaded_file_too_big'] = 'The file you uploaded is too large. Please check php.ini, upload_max_size setting'; +$lang['uploaded_file_partial'] = 'The file you selected was only partially uploaded, likley due to a network error.'; +$lang['max_file_size'] = 'Maximum file size: %s'; + +// Updating values +$lang['modification_successful'] = 'Modification successful!'; +$lang['change_password_new_login'] = 'Since you changed your password, you must now login again with your new password.'; // Adding objectClass form $lang['new_required_attrs'] = 'New Required Attributes'; @@ -147,6 +223,7 @@ $lang['new_attributes'] = 'new attributes'; $lang['new_required_attrs_instructions'] = 'Instructions: In order to add this objectClass to this entry, you must specify'; $lang['that_this_oclass_requires'] = 'that this objectClass requires. You can do so in this form.'; $lang['add_oclass_and_attrs'] = 'Add ObjectClass and Attributes'; +$lang['objectclasses'] = 'ObjectClasses'; // General $lang['chooser_link_tooltip'] = 'Click to popup a dialog to select an entry (DN) graphically'; @@ -154,8 +231,11 @@ $lang['no_updates_in_read_only_mode'] = 'You cannot perform updates while server $lang['bad_server_id'] = 'Bad server id'; $lang['not_enough_login_info'] = 'Not enough information to login to server. Please check your configuration.'; $lang['could_not_connect'] = 'Could not connect to LDAP server.'; +$lang['could_not_connect_to_host_on_port'] = 'Could not connect to "%s" on port "%s"'; $lang['could_not_perform_ldap_mod_add'] = 'Could not perform ldap_mod_add operation.'; $lang['bad_server_id_underline'] = 'Bad server_id: '; +$lang['home'] = 'Home'; +$lang['help'] = 'Help'; $lang['success'] = 'Success'; $lang['server_colon_pare'] = 'Server: '; $lang['look_in'] = 'Looking in: '; @@ -165,6 +245,22 @@ $lang['back_up_p'] = 'Back Up...'; $lang['no_entries'] = 'no entries'; $lang['not_logged_in'] = 'Not logged in'; $lang['could_not_det_base_dn'] = 'Could not determine base DN'; +$lang['please_report_this_as_a_bug']='Please report this as a bug.'; +$lang['reasons_for_error']='This could happen for several reasons, the most probable of which are:'; +$lang['yes']='Yes'; +$lang['no']='No'; +$lang['go']='Go'; +$lang['delete']='Delete'; +$lang['back']='Back'; +$lang['object']='object'; +$lang['delete_all']='Delete all'; +$lang['url_bug_report']='https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'hint'; +$lang['bug'] = 'bug'; +$lang['warning'] = 'warning'; +$lang['light'] = 'light'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Proceed >>'; + // Add value form $lang['add_new'] = 'Add new'; @@ -172,8 +268,7 @@ $lang['value_to'] = 'value to'; $lang['distinguished_name'] = 'Distinguished Name'; $lang['current_list_of'] = 'Current list of'; $lang['values_for_attribute'] = 'values for attribute'; -$lang['inappropriate_matching_note'] = 'Note: You will get an "inappropriate matching" error if you have not
' . - 'setup an EQUALITY rule on your LDAP server for this attribute.'; +$lang['inappropriate_matching_note'] = 'Note: You will get an "inappropriate matching" error if you have not setup an EQUALITY rule on your LDAP server for this attribute.'; $lang['enter_value_to_add'] = 'Enter the value you would like to add:'; $lang['new_required_attrs_note'] = 'Note: you may be required to enter new attributes that this objectClass requires'; $lang['syntax'] = 'Syntax'; @@ -194,6 +289,13 @@ $lang['copy_failed'] = 'Failed to copy DN: '; //edit.php $lang['missing_template_file'] = 'Warning: missing template file, '; $lang['using_default'] = 'Using default.'; +$lang['template'] = 'Template'; +$lang['must_choose_template'] = 'You must choose a template'; +$lang['invalid_template'] = '%s is an invalid template'; +$lang['using_template'] = 'using template'; +$lang['go_to_dn'] = 'Go to %s'; ++$lang['structural_object_class_cannot_remove'] = 'This is a structural ObjectClass and cannot be removed.'; ++$lang['structural'] = 'structural'; //copy_form.php $lang['copyf_title_copy'] = 'Copy '; @@ -203,24 +305,38 @@ $lang['copyf_dest_dn_tooltip'] = 'The full DN of the new entry to be created whe $lang['copyf_dest_server'] = 'Destination Server'; $lang['copyf_note'] = 'Hint: Copying between different servers only works if there are no schema violations'; $lang['copyf_recursive_copy'] = 'Recursively copy all children of this object as well.'; +$lang['recursive_copy'] = 'Recursive copy'; +$lang['filter'] = 'Filter'; +$lang['search_filter'] = 'Search Filter'; +$lang['filter_tooltip'] = 'When performing a recursive copy, only copy those entries which match this filter'; //create.php -$lang['create_required_attribute'] = 'You left the value blank for required attribute %s.'; -$lang['create_redirecting'] = 'Redirecting'; -$lang['create_here'] = 'here'; +$lang['create_required_attribute'] = 'You left the value blank for required attribute (%s).'; +$lang['redirecting'] = 'Redirecting...'; +$lang['here'] = 'here'; $lang['create_could_not_add'] = 'Could not add the object to the LDAP server.'; //create_form.php $lang['createf_create_object'] = 'Create Object'; $lang['createf_choose_temp'] = 'Choose a template'; $lang['createf_select_temp'] = 'Select a template for the creation process'; -$lang['createf_proceed'] = 'Proceed'; +$lang['save_as_file'] = 'Save as file'; +$lang['rdn_field_blank'] = 'You left the RDN field blank.'; +$lang['container_does_not_exist'] = 'The container you specified (%s) does not exist. Please try again.'; +$lang['no_objectclasses_selected'] = 'You did not select any ObjectClasses for this object. Please go back and do so.'; +$lang['hint_structural_oclass'] = 'Hint: You must choose exactly one structural objectClass (shown in bold above)'; //creation_template.php $lang['ctemplate_on_server'] = 'On server'; $lang['ctemplate_no_template'] = 'No template specified in POST variables.'; -$lang['ctemplate_config_handler'] = 'Your config specifies a handler of'; -$lang['ctemplate_handler_does_not_exist'] = 'for this template. But, this handler does not exist in the templates/creation directory.'; +$lang['template_not_readable'] = 'Your config specifies a handler of "%s" for this template but this file is not readable because the permissions are too strict.'; +$lang['template_does_not_exist'] = 'Your config specifies a handler of "%s" for this template but this handler does not exist in the templates/creation directory.'; +$lang['create_step1'] = 'Step 1 of 2: Name and ObjectClass(es)'; +$lang['create_step2'] = 'Step 2 of 2: Specify attributes and values'; +$lang['relative_distinguished_name'] = 'Relative Distinguished Name'; +$lang['rdn'] = 'RDN'; +$lang['rdn_example'] = '(example: cn=MyNewPerson)'; +$lang['container'] = 'Container'; // search.php $lang['you_have_not_logged_into_server'] = 'You have not logged into the selected server yet, so you cannot perform searches on it.'; @@ -251,7 +367,7 @@ $lang['ends with'] = 'ends with'; $lang['sounds like'] = 'sounds like'; // server_info.php -$lang['could_not_fetch_server_info'] = 'Could not retrieve LDAP information from the server'; +$lang['could_not_fetch_server_info'] = 'Could not retrieve LDAP information from the server. This may be due to a bug in your version of PHP or perhaps your LDAP server has access control specified that prevents LDAP clients from accessing the RootDSE.'; $lang['server_info_for'] = 'Server info for: '; $lang['server_reports_following'] = 'Server reports the following information about itself'; $lang['nothing_to_report'] = 'This server has nothing to report.'; @@ -275,7 +391,19 @@ $lang['go_back'] = 'Go back'; $lang['welcome_note'] = 'Use the menu to the left to navigate'; $lang['credits'] = 'Credits'; $lang['changelog'] = 'ChangeLog'; -$lang['documentation'] = 'Documentation'; +$lang['donate'] = 'Donate'; +$lang['pla_logo'] = 'phpLDAPadmin logo'; + +// Donate.php +$lang['donation_instructions'] = 'To donate funds to the phpLDAPadmin project, use one of the PayPal buttons below.'; +$lang['donate_amount'] = 'Donate %s'; +$lang['wish_list_option'] = 'Or perhaps you would prefer to purchase an gift for a phpLDAPadmin developer.'; +$lang['wish_list'] = 'View Dave\'s phpLDAPadmin wish list'; + +$lang['purge_cache'] = 'Purge caches'; +$lang['no_cache_to_purge'] = 'No cache to purge.'; +$lang['done_purging_caches'] = 'Purged %s bytes of cache.'; +$lang['purge_cache_tooltip'] = 'Purge all cached data in phpLDAPadmin, including server schemas.'; // view_jpeg_photo.php $lang['unsafe_file_name'] = 'Unsafe file name: '; @@ -285,34 +413,45 @@ $lang['no_such_file'] = 'No such file: '; $lang['auto_update_not_setup'] = 'You have enabled auto_uid_numbers for %s in your configuration, but you have not specified the auto_uid_number_mechanism. Please correct this problem.'; -$lang['uidpool_not_set'] = 'You specified the auto_uid_number_mechanism as uidpool +$lang['uidpool_not_set'] = 'You specified the "auto_uid_number_mechanism" as "uidpool" in your configuration for server %s, but you did not specify the audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; -$lang['uidpool_not_exist'] = 'It appears that the uidPool you specified in your configuration (%s) +$lang['uidpool_not_exist'] = 'It appears that the uidPool you specified in your configuration ("%s") does not exist.'; -$lang['specified_uidpool'] = 'You specified the auto_uid_number_mechanism as search in your +$lang['specified_uidpool'] = 'You specified the "auto_uid_number_mechanism" as "search" in your configuration for server %s, but you did not specify the - auto_uid_number_search_base. Please specify it before proceeding.'; -$lang['auto_uid_invalid_value'] = 'You specified an invalid value for auto_uid_number_mechanism (%s) - in your configration. Only uidpool and search are valid. + "auto_uid_number_search_base". Please specify it before proceeding.'; +$lang['auto_uid_invalid_credential'] = 'Unable to bind to %s with your with auto_uid credentials. Please check your configuration file.'; +$lang['bad_auto_uid_search_base'] = 'Your phpLDAPadmin configuration specifies an invalid auto_uid_search_base for server %s'; +$lang['auto_uid_invalid_value'] = 'You specified an invalid value for auto_uid_number_mechanism ("%s") + in your configration. Only "uidpool" and "search" are valid. Please correct this problem.'; -$lang['error_auth_type_config'] = 'Error: You have an error in your config file. The only two allowed values - for auth_type in the $servers section are \'config\' and \'form\'. You entered \'%s\', +$lang['error_auth_type_config'] = 'Error: You have an error in your config file. The only three allowed values + for auth_type in the $servers section are \'session\', \'cookie\', and \'config\'. You entered \'%s\', which is not allowed. '; -$lang['php_install_not_supports_tls'] = 'Your PHP install does not support TLS'; -$lang['could_not_start_tls'] = 'Could not start TLS.
Please check your LDAP server configuration.'; -$lang['auth_type_not_valid'] = 'You have an error in your config file. auth_type of %s is not valid.'; -$lang['ldap_said'] = 'LDAP said: %s

'; +$lang['unique_attrs_invalid_credential'] = 'Unable to bind to %s with your with unique_attrs credentials. Please check your configuration file.'; +$lang['unique_attr_failed'] = 'Your attempt to add %s (%s) to
%s
is NOT allowed. That attribute/value belongs to another entry.

You might like to search for that entry.'; +$lang['php_install_not_supports_tls'] = 'Your PHP install does not support TLS.'; +$lang['could_not_start_tls'] = 'Could not start TLS. Please check your LDAP server configuration.'; +$lang['could_not_bind_anon'] = 'Could not bind anonymously to server.'; +$lang['could_not_bind'] = 'Could not bind to the LDAP server.'; +$lang['anonymous_bind'] = 'Anonymous Bind'; +$lang['bad_user_name_or_password'] = 'Bad username or password. Please try again.'; +$lang['redirecting_click_if_nothing_happens'] = 'Redirecting... Click here if nothing happens.'; +$lang['successfully_logged_in_to_server'] = 'Successfully logged into server %s'; +$lang['could_not_set_cookie'] = 'Could not set cookie.'; +$lang['ldap_said'] = 'LDAP said: %s'; $lang['ferror_error'] = 'Error'; $lang['fbrowse'] = 'browse'; $lang['delete_photo'] = 'Delete Photo'; $lang['install_not_support_blowfish'] = 'Your PHP install does not support blowfish encryption.'; +$lang['install_not_support_md5crypt'] = 'Your PHP install does not support md5crypt encryption.'; $lang['install_no_mash'] = 'Your PHP install does not have the mhash() function. Cannot do SHA hashes.'; $lang['jpeg_contains_errors'] = 'jpegPhoto contains errors
'; -$lang['ferror_number'] = 'Error number: %s (%s)

'; -$lang['ferror_discription'] = 'Description: %s

'; -$lang['ferror_number_short'] = 'Error number: %s

'; -$lang['ferror_discription_short'] = 'Description: (no description available)
'; +$lang['ferror_number'] = 'Error number: %s (%s)'; +$lang['ferror_discription'] = 'Description: %s

'; +$lang['ferror_number_short'] = 'Error number: %s

'; +$lang['ferror_discription_short'] = 'Description: (no description available)
'; $lang['ferror_submit_bug'] = 'Is this a phpLDAPadmin bug? If so, please report it.'; $lang['ferror_unrecognized_num'] = 'Unrecognized error number: '; $lang['ferror_nonfatil_bug'] = '

\n"; flush(); $counter=1; - $schema_syntaxes = get_schema_syntaxes( $server_id ); + $schema_syntaxes = get_schema_syntaxes( $server_id, null, false ); if( ! $schema_syntaxes ) pla_error( $schema_error_str ); foreach( $schema_syntaxes as $syntax ) { $counter++; @@ -95,93 +98,86 @@ if( $view == 'syntaxes' ) { } elseif( $view == 'attributes' ) { //echo "
" . $lang['the_following_attributes'] . "

\n"; flush(); - $schema_attrs = get_schema_attributes( $server_id ); - $schema_object_classes = get_schema_objectclasses( $server_id ); + $schema_attrs = get_schema_attributes( $server_id, null, false ); + $schema_object_classes = get_schema_objectclasses( $server_id, null, false ); if( ! $schema_attrs || ! $schema_object_classes ) pla_error( $schema_error_str ); - // do a reverse-mapping to add in which objectClasses each attributeType is used - foreach( $schema_object_classes as $object_class ) { - $must_attrs = $object_class->getMustAttrNames($schema_object_classes); - $may_attrs = $object_class->getMayAttrNames($schema_object_classes); - $oclass_attrs = array_unique( array_merge( $must_attrs, $may_attrs ) ); - foreach( $oclass_attrs as $attr_name ) { - if( isset( $schema_attrs[ strtolower( $attr_name ) ] ) ) { - $schema_attrs[ strtolower( $attr_name ) ]->addUsedInObjectClass( - $object_class->getName() ); - } else { - //echo "Warning, attr not set: $attr_name
"; - } - } - - } - //echo "
";
 	//print_r( $schema_attrs );
 	//echo "
"; ?> : - - + + + getName() + .'" ' + .( 0 == strcasecmp( $attr->getName(), $viewvalue ) ? ' selected ' : '' ) + .'>' + . $attr->getName() + .'' . "\n" ); + } ?> +
@@ -338,15 +477,23 @@ $lang['ferror_congrats_found_bug'] = 'Congratulations! You found a bug in phpLDA //ldif_import_form $lang['import_ldif_file_title'] = 'Import LDIF File'; $lang['select_ldif_file'] = 'Select an LDIF file:'; -$lang['select_ldif_file_proceed'] = 'Proceed >>'; +$lang['dont_stop_on_errors'] = 'Don\'t stop on errors'; //ldif_import $lang['add_action'] = 'Adding...'; $lang['delete_action'] = 'Deleting...'; $lang['rename_action'] = 'Renaming...'; $lang['modify_action'] = 'Modifying...'; +$lang['warning_no_ldif_version_found'] = 'No version found. Assuming 1.'; +$lang['valid_dn_line_required'] = 'A valid dn line is required.'; +$lang['missing_uploaded_file'] = 'Missing uploaded file.'; +$lang['no_ldif_file_specified'] = 'No LDIF file specified. Please try again.'; +$lang['ldif_file_empty'] = 'Uploaded LDIF file is empty.'; +$lang['empty'] = 'empty'; +$lang['file'] = 'File'; +$lang['number_bytes'] = '%s bytes'; -$lang['failed'] = 'failed'; +$lang['failed'] = 'Failed'; $lang['ldif_parse_error'] = 'LDIF Parse Error'; $lang['ldif_could_not_add_object'] = 'Could not add object:'; $lang['ldif_could_not_rename_object'] = 'Could not rename object:'; @@ -354,4 +501,174 @@ $lang['ldif_could_not_delete_object'] = 'Could not delete object:'; $lang['ldif_could_not_modify_object'] = 'Could not modify object:'; $lang['ldif_line_number'] = 'Line Number:'; $lang['ldif_line'] = 'Line:'; + +// Exports +$lang['export_format'] = 'Export format'; +$lang['line_ends'] = 'Line ends'; +$lang['must_choose_export_format'] = 'You must choose an export format.'; +$lang['invalid_export_format'] = 'Invalid export format'; +$lang['no_exporter_found'] = 'No available exporter found.'; +$lang['error_performing_search'] = 'Encountered an error while performing search.'; +$lang['showing_results_x_through_y'] = 'Showing results %s through %s.'; +$lang['searching'] = 'Searching...'; +$lang['size_limit_exceeded'] = 'Notice, search size limit exceeded.'; +$lang['entry'] = 'Entry'; +$lang['ldif_export_for_dn'] = 'LDIF Export for: %s'; +$lang['generated_on_date'] = 'Generated by phpLDAPadmin ( http://www.phpldapadmin.com/ ) on %s'; +$lang['total_entries'] = 'Total Entries'; +$lang['dsml_export_for_dn'] = 'DSLM Export for: %s'; +$lang['include_system_attrs'] = 'Include system attributes'; +$lang['csv_spreadsheet'] = 'CSV (Spreadsheet)'; + +// logins +$lang['could_not_find_user'] = 'Could not find a user "%s"'; +$lang['password_blank'] = 'You left the password blank.'; +$lang['login_cancelled'] = 'Login cancelled.'; +$lang['no_one_logged_in'] = 'No one is logged in to that server.'; +$lang['could_not_logout'] = 'Could not logout.'; +$lang['unknown_auth_type'] = 'Unknown auth_type: %s'; +$lang['logged_out_successfully'] = 'Logged out successfully from server %s'; +$lang['authenticate_to_server'] = 'Authenticate to server %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Warning: This web connection is unencrypted.'; +$lang['not_using_https'] = 'You are not using \'https\'. Web browser will transmit login information in clear text.'; +$lang['login_dn'] = 'Login DN'; +$lang['user_name'] = 'User name'; +$lang['password'] = 'Password'; +$lang['authenticate'] = 'Authenticate'; + +// Entry browser +$lang['entry_chooser_title'] = 'Entry Chooser'; + +// Index page +$lang['need_to_configure'] = 'You need to configure phpLDAPadmin. Edit the file \'config.php\' to do so. An example config file is provided in \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Deletes not allowed in read only mode.'; +$lang['error_calling_mass_delete'] = 'Error calling mass_delete.php. Missing mass_delete in POST vars.'; +$lang['mass_delete_not_array'] = 'mass_delete POST var is not an array.'; +$lang['mass_delete_not_enabled'] = 'Mass deletion is not enabled. Please enable it in config.php before proceeding.'; +$lang['search_attrs_wrong_count'] = 'Your config.php has an error. The number of attributes in $search_attributes and $search_attributes_display is different'; +$lang['mass_deleting'] = 'Mass Deleting'; +$lang['mass_delete_progress'] = 'Deletion progress on server "%s"'; +$lang['malformed_mass_delete_array'] = 'Malformed mass_delete array.'; +$lang['no_entries_to_delete'] = 'You did not select any entries to delete.'; +$lang['deleting_dn'] = 'Deleting %s'; +$lang['total_entries_failed'] = '%s of %s entries failed to be deleted.'; +$lang['all_entries_successful'] = 'All entries deleted successfully.'; +$lang['confirm_mass_delete'] = 'Confirm mass delete of %s entries on server %s'; +$lang['yes_delete'] = 'Yes, delete!'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'You cannot rename an entry which has children entries (eg, the rename operation is not allowed on non-leaf entries)'; +$lang['no_rdn_change'] = 'You did not change the RDN'; +$lang['invalid_rdn'] = 'Invalid RDN value'; +$lang['could_not_rename'] = 'Could not rename the entry'; + +// General errors +$lang['php5_unsupported'] = 'phpLDAPadmin does not yet support PHP 5. You will likely encounter many weird problems if you continue.'; +$lang['mismatched_search_attr_config'] = 'Your configuration has an error. $search_attributes must have the same number of attributes as $search_attributes_display.'; + +// Password checker +$lang['passwords_match'] = 'Passwords match!'; +$lang['passwords_do_not_match'] = 'Passwords do not match!'; +$lang['password_checker_tool'] = 'Password Checker Tool'; +$lang['compare'] = 'Compare'; +$lang['to'] = 'To'; + +// Templates +$lang['using'] = 'Using the'; +$lang['template'] = 'template'; +$lang['switch_to'] = 'You may switch to the '; +$lang['default_template'] = 'default template'; + +// template_config +$lang['user_account'] = 'User Account (posixAccount)'; +$lang['address_book_inet'] = 'Address Book Entry (inetOrgPerson)'; +$lang['address_book_moz'] = 'Address Book Entry (mozillaOrgPerson)'; +$lang['kolab_user'] = 'Kolab User Entry'; +$lang['organizational_unit'] = 'Organizational Unit'; +$lang['organizational_role'] = 'Organizational Role'; +$lang['posix_group'] = 'Posix Group'; +$lang['samba_machine'] = 'Samba NT Machine'; +$lang['samba3_machine'] = 'Samba 3 NT Machine'; +$lang['samba_user'] = 'Samba User'; +$lang['samba3_user'] = 'Samba 3 User'; +$lang['samba3_group'] = 'Samba 3 Group Mapping'; +$lang['dns_entry'] = 'DNS Entry'; +$lang['simple_sec_object'] = 'Simple Security Object'; +$lang['courier_mail_account'] = 'Courier Mail Account'; +$lang['courier_mail_alias'] = 'Courier Mail Alias'; +$lang['ldap_alias'] = 'LDAP Alias'; +$lang['sendmail_cluster'] = 'Sendmail Cluster'; +$lang['sendmail_domain'] = 'Sendmail Domain'; +$lang['sendmail_alias'] = 'Sendmail Alias'; +$lang['sendmail_virt_dom'] = 'Sendmail Virtual Domain'; +$lang['sendmail_virt_users'] = 'Sendmail Virtual Users'; +$lang['sendmail_relays'] = 'Sendmail Relays'; +$lang['custom'] = 'Custom'; +$lang['samba_domain_name'] = 'My Samba domain Name'; +$lang['administrators'] = 'Administrators'; +$lang['users'] = 'Users'; +$lang['guests'] = 'Guests'; +$lang['power_users'] = 'Power Users'; +$lang['account_ops'] = 'Account Operators'; +$lang['server_ops'] = 'Server Operators'; +$lang['print_ops'] = 'Print Operators'; +$lang['backup_ops'] = 'Backup Operators'; +$lang['replicator'] = 'Replicator'; +$lang['unable_smb_passwords'] = ' Unable to create the Samba passwords. Please, check the configuration in template_config.php'; +$lang['err_smb_conf'] = 'Error: You have an error in your samba confguration.'; +$lang['err_smb_no_name_sid'] = 'Error: A name and a sid for your samba domain need to be provided.'; +$lang['err_smb_no_name'] = 'Error: No name provided for samba domain.'; +$lang['err_smb_no_sid'] = 'Error: No sid provided for samba domain.'; + +// Samba Account Template +$lang['samba_account'] = 'Samba Account'; +$lang['samba_account_lcase'] = 'samba account'; + +// New User (Posix) Account +$lang['t_new_user_account'] = 'New User Account'; +$lang['t_hint_customize'] = 'Hint: To customize this template, edit the file templates/creation/new_user_template.php'; +$lang['t_name'] = 'Name'; +$lang['t_first_name'] = 'First name'; +$lang['t_last_name'] = 'Last name'; +$lang['t_first'] = 'first'; +$lang['t_last'] = 'last'; +$lang['t_common_name'] = 'Common name'; +$lang['t_user_name'] = 'User Name'; +$lang['t_password'] = 'Password'; +$lang['t_encryption'] = 'Encryption'; +$lang['t_login_shell'] = 'Login Shell'; +$lang['t_home_dir'] = 'Home Directory'; +$lang['t_uid_number'] = 'UID Number'; +$lang['t_auto_det'] = '(automatically determined)'; +$lang['t_group'] = 'Group'; +$lang['t_gid_number'] = 'GID Number'; +$lang['t_err_passwords'] = 'Your passwords don\'t match. Please go back and try again.'; +$lang['t_err_field_blank'] = 'You cannot leave the %s blank. Please go back and try again.'; +$lang['t_err_field_num'] = 'You can only enter numeric values for the %s field. Please go back and try again.'; +$lang['t_err_bad_container'] = 'The container you specified (%s) does not exist. Please go back and try again.'; +$lang['t_confirm_account_creation'] = 'Confirm account creation'; +$lang['t_secret'] = '[secret]'; +$lang['t_create_account'] = 'Create Account'; + +// New Address Template +$lang['t_new_address'] = 'New Address Book Entry'; +$lang['t_organization'] = 'Organization'; +$lang['t_address'] = 'Address'; +$lang['t_city'] = 'City'; +$lang['t_postal_code'] = 'Postal code'; +$lang['t_street'] = 'Street'; +$lang['t_work_phone'] = 'Work phone'; +$lang['t_fax'] = 'Fax'; +$lang['t_mobile'] = 'Mobile'; +$lang['t_email'] = 'Email'; +$lang['t_container'] = 'Container'; +$lang['t_err_cn_blank'] = 'You cannot leave the Common Name blank. Please go back and try again.'; +$lang['t_confim_creation'] = 'Confirm entry creation:'; +$lang['t_create_address'] = 'Create Address'; + +// default template +$lang['t_check_pass'] = 'Check password...'; + ?> diff --git a/lang/es.php b/lang/es.php index c7e38d8..bd682e3 100644 --- a/lang/es.php +++ b/lang/es.php @@ -1,4 +1,6 @@ Descripci $lang['ferror_submit_bug'] = 'Es un error del phpLDAPadmin? Si así es, por favor dínoslo.'; $lang['ferror_unrecognized_num'] = 'Número de error desconocido: '; $lang['ferror_nonfatil_bug'] = '
+ Has encontrado un error menor del phpLDAPadmin!
- Has encontrado un error fatal del phpLDAPadmin!
Error:%s (%s)
Archivo:
Error:%s (%s)
Archivo: %s línea %s, caller %s
Versiones:PLA: %s, PHP: %s, SAPI: %s
Servidor Web:%s
Envía este error haciendo click aquí.

'; diff --git a/lang/fr.php b/lang/fr.php index da59de7..24bb5f4 100644 --- a/lang/fr.php +++ b/lang/fr.php @@ -11,6 +11,7 @@ * * Thank you! * + * $Header: /cvsroot/phpldapadmin/phpldapadmin/lang/fr.php,v 1.25 2004/05/29 04:07:02 uugdave Exp $ */ /* @@ -26,20 +27,17 @@ $lang['server'] = 'Serveur'; $lang['search_for_entries_whose'] = 'Chercher les entrées dont'; $lang['base_dn'] = 'Base DN'; $lang['search_scope'] = 'Portée de la recherche'; -$lang['search_ filter'] = 'Filtre de la recherche'; $lang['show_attributes'] = 'Montrer les attributs'; $lang['Search'] = 'Chercher'; $lang['equals'] = 'est égal à'; -$lang['starts_with'] = 'commence par'; $lang['contains'] = 'contient'; -$lang['ends_with'] = 'finit par'; -$lang['sounds_like'] = 'ressemble à;'; +$lang['predefined_search_str'] = 'Selectionner une recherche prédéfinie'; +$lang['predefined_searches'] = 'Recherches prédéfinies'; +$lang['no_predefined_queries'] = 'Aucune requête n\' a été définie dans config.php.'; -// tree.php +// Tree browser $lang['request_new_feature'] = 'Demander une nouvelle fonctionnalité'; -$lang['see_open_requests'] = 'voir les demandes en cours'; $lang['report_bug'] = 'Signaler un bogue'; -$lang['see_open_bugs'] = 'voir les bogues en cours'; $lang['schema'] = 'schema'; $lang['search'] = 'chercher'; $lang['refresh'] = 'rafraîchir'; @@ -51,6 +49,7 @@ $lang['create_new'] = 'Cr $lang['view_schema_for'] = 'Voir les schemas pour'; $lang['refresh_expanded_containers'] = 'Rafraîchir tous les containeurs étendus'; $lang['create_new_entry_on'] = 'Créer une nouvelle entrée sur'; +$lang['new'] = 'nouveau'; $lang['view_server_info'] = 'Voir les informations sur le serveur'; $lang['import_from_ldif'] = 'Importer des entrées à partir d\'un fichier LDIF'; $lang['logout_of_this_server'] = 'Se déconnecter de ce serveur'; @@ -61,52 +60,44 @@ $lang['ldap_refuses_to_give_root'] = 'Il semble que le serveur LDAP a $lang['please_specify_in_config'] = 'Veuillez le spécifier dans le fichier config.php'; $lang['create_new_entry_in'] = 'Créer une nouvelle entrée dans'; $lang['login_link'] = 'Login...'; +$lang['login'] = 'login'; -// entry display +// Entry display $lang['delete_this_entry'] = 'Supprimer cette entrée'; $lang['delete_this_entry_tooltip'] = 'Il vous sera demandé confirmation'; $lang['copy_this_entry'] = 'Copier cette entrée'; $lang['copy_this_entry_tooltip'] = 'Copier cet objet vers un autre endroit, un nouveau DN ou un autre serveur'; -$lang['export_to_ldif'] = 'Exporter au format LDIF'; -$lang['export_to_ldif_tooltip'] = 'Sauvegarder cet objet au format LDIF'; -$lang['export_subtree_to_ldif_tooltip'] = 'Sauvegarder cet objet ainsi que tous les sous-objets au format LDIF'; -$lang['export_subtree_to_ldif'] = 'Exporter l\'arborescence au format LDIF'; -$lang['export_to_ldif_mac'] = 'Fins de ligne Macintosh'; -$lang['export_to_ldif_win'] = 'Fins de lignes Windows'; -$lang['export_to_ldif_unix'] = 'Fins de ligne Unix '; +$lang['export'] = 'Exporter'; +$lang['export_tooltip'] = 'Sauvegarder cet objet'; +$lang['export_subtree_tooltip'] = 'Sauvegarder cet objet ainsi que tous les sous-objets'; +$lang['export_subtree'] = 'Exporter l\'arborescence'; $lang['create_a_child_entry'] = 'Créer une sous-entrée'; -$lang['add_a_jpeg_photo'] = 'Ajouter un attribut jpegPhoto'; $lang['rename_entry'] = 'Renommer l\'entrée'; $lang['rename'] = 'Renommer'; $lang['add'] = 'Ajouter'; $lang['view'] = 'Voir'; +$lang['view_one_child'] = 'Voir 1 sous-entrée'; +$lang['view_children'] = 'Voir les %s sous-entrées'; $lang['add_new_attribute'] = 'Ajouter un nouvel attribut'; -$lang['add_new_attribute_tooltip'] = 'Ajouter un nouvel attribut/une nouvelle valeur à cette entrée'; -$lang['internal_attributes'] = 'Attributs Internes'; +$lang['add_new_objectclass'] = 'Ajouter une nouvelle classe d\'objet'; $lang['hide_internal_attrs'] = 'Cacher les attributs internes'; $lang['show_internal_attrs'] = 'Montrer les attributs internes'; -$lang['internal_attrs_tooltip'] = 'Attributs établis automatiquement par le système'; -$lang['entry_attributes'] = 'Attributs de l\'entrée'; $lang['attr_name_tooltip'] = 'Cliquer pour voir la définition de schéma pour l\'attribut de type \'%s\''; -$lang['click_to_display'] = 'Cliquer pour afficher'; -$lang['hidden'] = 'caché'; $lang['none'] = 'aucun'; $lang['save_changes'] = 'Sauver les modifications'; $lang['add_value'] = 'ajouter une valeur'; $lang['add_value_tooltip'] = 'Ajouter une valeur supplémentaire à cet attribut'; $lang['refresh_entry'] = 'Rafraichir'; -$lang['refresh'] = 'rafraîchir'; $lang['refresh_this_entry'] = 'Rafraîchir cette entrée'; -$lang['delete_hint'] = 'Note: Pour effacer un attribut, laissez le champs vide et cliquez pour sauvegarder.'; -$lang['attr_schema_hint'] = 'Note: Pour voir le schéma pour un attribut, cliquer sur le nom de l\'attribut.'; -$lang['attrs_modified'] = 'Certains attributs (%s) ont été mdoifiés et sont mis en évidence ci-dessous.'; +$lang['delete_hint'] = 'Note: Pour effacer un attribut, laissez le champs vide et cliquez pour sauvegarder.'; +$lang['attr_schema_hint'] = 'Note: Pour voir le schéma pour un attribut, cliquer sur le nom de l\'attribut.'; +$lang['attrs_modified'] = 'Certains attributs (%s) ont été modifiés et sont mis en évidence ci-dessous.'; $lang['attr_modified'] = 'Un attribut (%s) a été modifié et est mis en évidence ci-dessous.'; $lang['viewing_read_only'] = 'Voir une entrée en lecture seule.'; -$lang['change_entry_rdn'] = 'Changer le RDN de cette entrée'; $lang['no_new_attrs_available'] = 'plus d\'attributs disponibles pour cette entrée'; +$lang['no_new_binary_attrs_available'] = 'plus d\' attributs binaires disponibles pour cette entréé'; $lang['binary_value'] = 'Valeur de type binaire'; $lang['add_new_binary_attr'] = 'Ajouter un nouvel attribut de type binaire'; -$lang['add_new_binary_attr_tooltip'] = 'Ajouter un nouvel attribut à partir d\'un fichier'; $lang['alias_for'] = 'Alias pour'; $lang['download_value'] = 'Télécharger le contenu'; $lang['delete_attribute'] = 'Supprimer l\'attribut'; @@ -114,32 +105,89 @@ $lang['true'] = 'vrai'; $lang['false'] = 'faux'; $lang['none_remove_value'] = 'aucun, suppression de la valeur'; $lang['really_delete_attribute'] = 'Voulez-vous vraiment supprimer l\'attribut'; +$lang['add_new_value'] = 'Ajouter une nouvelle valeur'; // Schema browser -$lang['the_following_objectclasses'] = 'Les classes d\'objets (objectClasses) suivantes sont supportés par ce serveur LDAP.'; -$lang['the_following_attributes'] = 'Les types d\'attributs (attributesTypes) suivants sont supportés par ce serveur LDAP.'; -$lang['the_following_matching'] = 'Les opérateurs (matching rules) suivants sont supportés par ce serveur LDAP.'; -$lang['the_following_syntaxes'] = 'Les syntaxes suivantes sont supportés par ce serveur LDAP.'; +$lang['the_following_objectclasses'] = 'Les classes d\'objets (objectClasses) suivantes sont supportés par ce serveur LDAP.'; +$lang['the_following_attributes'] = 'Les types d\'attributs (attributesTypes) suivants sont supportés par ce serveur LDAP.'; +$lang['the_following_matching'] = 'Les opérateurs (matching rules) suivants sont supportés par ce serveur LDAP.'; +$lang['the_following_syntaxes'] = 'Les syntaxes suivantes sont supportés par ce serveur LDAP.'; +$lang['schema_retrieve_error_1']='Le serveur ne supporte pas entièrement le protocol LDAP.'; +$lang['schema_retrieve_error_2']='Votre version de PHP ne permet pas d\'exécute correctement la requête.'; +$lang['schema_retrieve_error_3']='Ou tout du moins, phpLDAPadmin ne sait pas comment récupérer le schéma pour votre serveur.'; $lang['jump_to_objectclass'] = 'Aller à une classe d\'objet'; $lang['jump_to_attr'] = 'Aller à un attribut'; +$lang['jump_to_matching_rule'] = 'Aller à une règle d\'égalité'; $lang['schema_for_server'] = 'Schema pour le serveur'; $lang['required_attrs'] = 'Attributs obligatoires'; -$lang['optional_attrs'] = 'Attributs facultatifs'; +$lang['optional_attrs'] = 'Attributs optionnels'; +$lang['optional_binary_attrs'] = 'Attributs binaires optionnels'; $lang['OID'] = 'OID'; +$lang['aliases']='Alias'; $lang['desc'] = 'Description'; +$lang['no_description']='aucune description'; $lang['name'] = 'Nom'; -$lang['is_obsolete'] = 'Cette classe d\'objet est obsolete'; +$lang['equality']='Egalité'; +$lang['is_obsolete'] = 'Cette classe d\'objet est obsolete'; $lang['inherits'] = 'hérite'; +$lang['inherited_from']='hérite de'; $lang['jump_to_this_oclass'] = 'Aller à la définition de cette classe d\'objet'; $lang['matching_rule_oid'] = 'OID de l\'opérateur'; $lang['syntax_oid'] = 'OID de la syntaxe'; $lang['not_applicable'] = 'not applicable'; $lang['not_specified'] = 'non spécifié'; +$lang['character']='caractère'; +$lang['characters']='caractères'; +$lang['used_by_objectclasses']='Utilisé par les objectClasses'; +$lang['used_by_attributes']='Utilisé par les attributes'; +$lang['maximum_length']='Maximum Length'; +$lang['attributes']='Types d\'attribut'; +$lang['syntaxes']='Syntaxes'; +$lang['objectclasses']='objectClasses'; +$lang['matchingrules']='Règles d\'égalité'; +$lang['oid']='OID'; +$lang['obsolete']='Obsolète'; +$lang['ordering']='Ordonné'; +$lang['substring_rule']='Substring Rule'; +$lang['single_valued']='Valeur Unique'; +$lang['collective']='Collective'; +$lang['user_modification']='Modification Utilisateur'; +$lang['usage']='Usage'; +$lang['maximum_length']='Longueur maximale'; +$lang['could_not_retrieve_schema_from']='Impossible de récupérer le schéma de'; +$lang['type']='Type'; // Deleting entries $lang['entry_deleted_successfully'] = 'Suppression de l\'entrée \'%s\' réussie.'; $lang['you_must_specify_a_dn'] = 'Un DN doit être spécifié'; $lang['could_not_delete_entry'] = 'Impossible de supprimer l\'entrée: %s'; +$lang['no_such_entry'] = 'Aucune entrée de ce type: %s'; +$lang['delete_dn'] = 'Delete %s'; +$lang['permanently_delete_children'] = 'Effacer également les sous-entrées?'; +$lang['entry_is_root_sub_tree'] = 'Cette entrée est la racine d\'une arborescence contenant %s entrées.'; +$lang['view_entries'] = 'voir les entrées'; +$lang['confirm_recursive_delete'] = 'phpLDAPadmin peut supprimer cette entrées ainsi que les %s noeuds enfants de façon récursive. Voir ci-dessous pour une liste des entrées que cette action suprimera. Voulez-vous continuer?'; +$lang['confirm_recursive_delete_note'] = 'Note: ceci est potentiellement très dangereux and vous faîtes cela à vos propres risques. Cette opération ne peut être annulée. Prenez en considération les alias ainsi que d\'autres choses qui pourraient causer des problèmes.'; +$lang['delete_all_x_objects'] = 'Suppressions des %s objets'; +$lang['recursive_delete_progress'] = 'Progression de la suppression récursive'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'L\'entrée %s ainsi que la sous-arborescence de ce noeud ont été supprimés avec succès.'; +$lang['failed_to_delete_entry'] = 'Echec lors de la suppression de l\'entrée %s'; +$lang['list_of_entries_to_be_deleted'] = 'Liste des entrées à supprimer:'; +$lang['sure_permanent_delete_object']='Etes-vous certain de vouloir supprimer définitivement cet objet?'; +$lang['dn'] = 'DN'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'L\'attribut "%s" est marqué comme étant en lecture seule dans la configuration de phpLDAPadmin.'; +$lang['no_attr_specified'] = 'Aucun nom d\'attributs spécifié.'; +$lang['no_dn_specified'] = 'Aucun DN specifié'; + +// Adding attributes +$lang['left_attr_blank'] = 'Vous avez laisser la valeur de l\'attribut vide. Veuillez s\'il vous plaît retourner à la page précédente et recommencer.'; +$lang['failed_to_add_attr'] = 'Echec lors de l\'ajout de l\'attribut.'; + +// Updating values +$lang['modification_successful'] = 'Modification réussie!'; +$lang['change_password_new_login'] = 'Votre mot de passe ayant été changé, vous devez maintenant vous logger avec votre nouveau mot de passe.'; // Adding objectClass form $lang['new_required_attrs'] = 'Nouveaux Attributs Obligatoires'; @@ -155,6 +203,7 @@ $lang['no_updates_in_read_only_mode'] = 'Vous ne pouvez effectuer des mises $lang['bad_server_id'] = 'Id de serveur invalide'; $lang['not_enough_login_info'] = 'Informations insuffisantes pour se logguer au serveur. Veuillez, s\'il vous plaî, vérifier votre configuration.'; $lang['could_not_connect'] = 'Impossible de se connecter au serveur LDAP.'; +$lang['could_not_connect_to_host_on_port'] = 'Impossible de se connecter à "%s" sur le port "%s"'; $lang['could_not_perform_ldap_mod_add'] = 'Echec lors de l\'opération ldap_mod_add.'; $lang['bad_server_id_underline'] = 'serveur_id invalide: '; $lang['success'] = 'Succès'; @@ -166,6 +215,22 @@ $lang['back_up_p'] = 'Retour...'; $lang['no_entries'] = 'aucune entrée'; $lang['not_logged_in'] = 'Vous n\'êtes pas loggué'; $lang['could_not_det_base_dn'] = 'Impossible de déterminer le DN de base'; +$lang['please_report_this_as_a_bug']='Veuillez s\'il-vous-plaît rapporter ceci comme un bogue.'; +$lang['reasons_for_error']='Ceci peut arriver pour plusieurs raisons, les plus probables sont:'; +$lang['yes']='Oui'; +$lang['no']='Non'; +$lang['go']='Go'; +$lang['delete']='Suppression'; +$lang['back']='Back'; +$lang['object']='object'; +$lang['delete_all']='Tous les supprimer'; +$lang['url_bug_report']='https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'Astuce'; +$lang['bug'] = 'bogue'; +$lang['warning'] = 'Avertissement'; +$lang['light'] = 'lumière'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Continuer >>'; + // Add value form $lang['add_new'] = 'Ajout d\'une nouvelle valeur '; @@ -174,7 +239,7 @@ $lang['distinguished_name'] = 'Distinguished Name'; $lang['current_list_of'] = 'Liste actuelle de'; $lang['values_for_attribute'] = 'valeur(s) pour l\' attribut'; $lang['inappropriate_matching_note'] = 'Note: Vous obtiendrez une erreur de type "inappropriate matching" si vous n\'avez pas
' . - 'défini une règle EQUALITY pour cet attribut auprès du serveur LDAP.'; + 'défini une règle "EQUALITY" pour cet attribut auprès du serveur LDAP.'; $lang['enter_value_to_add'] = 'Entrez la valeur que vous voulez ajouter:'; $lang['new_required_attrs_note'] = 'Note: vous aurez peut-êre besoin d\'introduire de nouveaux attributs requis pour cette classe d\'objet'; $lang['syntax'] = 'Syntaxe'; @@ -195,6 +260,14 @@ $lang['copy_failed'] = 'Echec lors de la copie de: '; //edit.php $lang['missing_template_file'] = 'Avertissement: le fichier modèle est manquant, '; $lang['using_default'] = 'Utilisation du modèle par défaut.'; +$lang['template'] = 'Modèle'; +$lang['must_choose_template'] = 'Vous devez choisir un modèle'; +$lang['invalid_template'] = '%s est un modèle non valide'; +$lang['using_template'] = 'Utilisation du modèle'; +$lang['go_to_dn'] = 'Aller à %s'; + + + //copy_form.php $lang['copyf_title_copy'] = 'Copie de '; @@ -204,31 +277,45 @@ $lang['copyf_dest_dn_tooltip'] = 'Le DN de la nouvelle entr $lang['copyf_dest_server'] = 'Destination Serveur'; $lang['copyf_note'] = 'Note: La copie entre différents serveurs fonctionne seulement si il n\'y a pas de violation de schéma'; $lang['copyf_recursive_copy'] = 'Copier récursivement les sous-entrées de cet object.'; +$lang['recursive_copy'] = 'Copie récursive'; +$lang['filter'] = 'Filtre'; +$lang['filter_tooltip'] = 'Lors d\'une copie récursive, seuls les entrées correspondant à ce filtre seront copiés'; //create.php -$lang['create_required_attribute'] = 'Une valeur n\'a pas été spécifiée pour l\'attribut requis %s.'; -$lang['create_redirecting'] = 'Redirection'; -$lang['create_here'] = 'ici'; +$lang['create_required_attribute'] = 'Une valeur n\'a pas été spécifiée pour l\'attribut requis %s.'; +$lang['redirecting'] = 'Redirection'; +$lang['here'] = 'ici'; $lang['create_could_not_add'] = 'L\'ajout de l\'objet au serveur LDAP n\'a pu être effectuée.'; +$lang['rdn_field_blank'] = 'Vous avez laisser le champ du RDN vide.'; +$lang['container_does_not_exist'] = 'Le containeur que vous avez spécifié (%s) n\'existe pas. Veuillez, s\'il vous plaît recommencer.'; +$lang['no_objectclasses_selected'] = 'Vous n\'avez sélectionner aucun ObjectClasses pour cet objet. Veuillez s\'il vous plaît retourner à la page précédente et le faire.'; +$lang['hint_structural_oclass'] = 'Note: Vous devez choisir au moins une classe d\'objet de type structural'; //create_form.php $lang['createf_create_object'] = 'Creation d\'un objet'; $lang['createf_choose_temp'] = 'Choix d\'un modèle'; $lang['createf_select_temp'] = 'Selectionner un modèle pour la procédure de création'; $lang['createf_proceed'] = 'Continuer'; +$lang['relative_distinguished_name'] = 'Relative Distinguished Name'; +$lang['rdn'] = 'RDN'; +$lang['rdn_example'] = '(exemple: cn=MyNewPerson)'; +$lang['container'] = 'Containeur'; +$lang['alias_for'] = 'Alias pour %s'; + //creation_template.php $lang['ctemplate_on_server'] = 'Sur le serveur'; $lang['ctemplate_no_template'] = 'Aucun modèle spécifié dans les variables POST.'; $lang['ctemplate_config_handler'] = 'Votre configuration scécifie un gestionnaire de'; $lang['ctemplate_handler_does_not_exist'] = 'pour ce modèle. Cependant, ce gestionnaire n\'existe pas dans le répertoire \'templates/creation\'.'; - +$lang['create_step1'] = 'Etape 1 de 2: Nom et classes d\'objet'; +$lang['create_step2'] = 'Etape 2 de 2: Définition des attributs et de leurs valeurs'; //search.php $lang['you_have_not_logged_into_server'] = 'Vous ne vous êtes pas encore loggé auprès du serveur sélectionné. Vous ne pouvez y effectuer des recherches.'; $lang['click_to_go_to_login_form'] = 'Cliquer ici pour vous rendre au formulaire de login'; $lang['unrecognized_criteria_option'] = 'Critère non reconnu: '; $lang['if_you_want_to_add_criteria'] = 'Si vous voulez ajouter vos propres critère à la liste, soyez cetain d\'éditer search.php afin de pouvoir les gérer.'; -$lang['entries_found'] = 'Entrées trouvée: '; +$lang['entries_found'] = 'Entrées trouvées: '; $lang['filter_performed'] = 'Filtre utilisé: '; $lang['search_duration'] = 'Recherche effectuée par phpLDAPadmin en'; $lang['seconds'] = 'secondes'; @@ -274,24 +361,28 @@ $lang['go_back'] = 'Retour'; // welcome.php $lang['welcome_note'] = 'Utilisez le menu de gauche pour la navigation'; +$lang['credits'] = 'Crédits'; +$lang['changelog'] = 'ChangeLog'; +$lang['donate'] = 'Donation'; // view_jpeg_photo.php $lang['unsafe_file_name'] = 'Nom de fichier non sûr: '; $lang['no_such_file'] = 'Aucun fichier trouvé: '; //function.php -$lang['auto_update_not_setup'] = 'auto_uid_numbers a été activé pour %s dans votre configuration, - mais vous n\'avez pas spécifié l\' auto_uid_number_mechanism. Veuiller corriger +$lang['auto_update_not_setup'] = '"auto_uid_numbers" a été activé pour %s dans votre configuration, + mais vous n\'avez pas spécifié le mécanisme "auto_uid_number_mechanism". Veuiller corriger ce problème.'; -$lang['uidpool_not_set'] = 'Vous avez spécifié lauto_uid_number_mechanism comme uidpool +$lang['uidpool_not_set'] = 'Vous avez spécifié lauto_uid_number_mechanism comme uidpool dans la configuration du serveur %s, mais vous n\'avez pas spécifié de valeur pour auto_uid_number_uid_pool_dn. Veuillez le spécifier avant de continuer.'; -$lang['uidpool_not_exist'] = 'Le uidPool que vous avez spécifié dans votre configuration (%s) +$lang['uidpool_not_exist'] = 'Le uidPool que vous avez spécifié dans votre configuration (%s) n\'existe pas.'; -$lang['specified_uidpool'] = 'L\'auto_uid_number_mechanism a été défini à search dans votre - configuration pour le serveur %s, mais vous n\'avez pas défini - auto_uid_number_search_base. Veuillez le spécifier avant de continuer.'; -$lang['auto_uid_invalid_value'] = 'Une valeur non valide a été spécifiée pour auto_uid_number_mechanism (%s) +$lang['specified_uidpool'] = 'Le méchanisme "auto_uid_number_mechanism" a été défini à search dans votre + configuration pour le serveur %s, mais la directive "auto_uid_number_search_base" n\'est pad définie. Veuillez le spécifier avant de continuer.'; +$lang['auto_uid_invalid_credential'] = 'Impossible d\'effectuer un "bind" à %s avec vos droits pour "auto_uid". Veuillez S\'il vous plaît vérifier votre fichier de configuration.'; +$lang['bad_auto_uid_search_base'] = 'Votre fichier de configuration spécifie un invalide auto_uid_search_base pour le serveur %s'; +$lang['auto_uid_invalid_value'] = 'Une valeur non valide a été spécifiée pour le méchaninsme "auto_uid_number_mechanism" (%s) dans votre configuration. Seul uidpool et search sont valides. Veuillez corriger ce problème.'; $lang['error_auth_type_config'] = 'Erreur: Vous avez une erreur dans votre fichier de configuration.Les valeurs @@ -299,7 +390,12 @@ $lang['error_auth_type_config'] = 'Erreur: Vous avez une erreur dans votre fichi Vous avez mis \'%s\', ce qui n\'est pas autorisé.'; $lang['php_install_not_supports_tls'] = 'Votre installation PHP ne supporte pas TLS.'; $lang['could_not_start_tls'] = 'Impossible de démarrer TLS.
Veuillez,s\'il vous plaît, vérifier la configuration de votre serveur LDAP.'; -$lang['auth_type_not_valid'] = 'Vous avez une erreur dans votre fichier de configuration. auth_type %s n\'est pas valide.'; +$lang['could_not_bind_anon'] = 'Impossible d\'effectuer un "bind" anonyme.'; +$lang['anonymous_bind'] = 'Bind Anonyme'; +$lang['bad_user_name_or_password'] = 'Mauvais nom d\'utilisateur ou mot de passe. Veuillez recommencer s\'il vous plaît.'; +$lang['redirecting_click_if_nothing_happens'] = 'Redirection... Cliquez ici si rien ne se passe.'; +$lang['successfully_logged_in_to_server'] = 'Login réussi sur le serveur %s'; +$lang['could_not_set_cookie'] = 'Impossible d\'activer les cookies.'; $lang['ldap_said'] = 'LDAP said: %s

'; $lang['ferror_error'] = 'Erreur'; $lang['fbrowse'] = 'naviguer'; @@ -343,6 +439,15 @@ $lang['add_action'] = 'Ajout de...'; $lang['delete_action'] = 'Supression de...'; $lang['rename_action'] = 'Renommage de...'; $lang['modify_action'] = 'Modification de...'; +$lang['warning_no_ldif_version_found'] = 'Aucun numéro de version trouvé. Version 1 supposé.'; +$lang['valid_dn_line_required'] = 'Une ligne avec un dn valide est requis.'; +$lang['valid_dn_line_required'] = 'A valid dn line is required.'; +$lang['missing_uploaded_file'] = 'Le fichier est manquant.'; +$lang['no_ldif_file_specified.'] = 'Aucun fichier LDIFspécifié. Veuillez réessayer, s\'il vous plaît.'; +$lang['ldif_file_empty'] = 'Le fichier LDIF est vide.'; +$lang['file'] = 'Fichier'; +$lang['number_bytes'] = '%s bytes'; + $lang['failed'] = 'échec'; $lang['ldif_parse_error'] = 'Erreur lors de l\'analyse du fichier LDIF'; $lang['ldif_could_not_add_object'] = 'Impossible d\'ajouter l\'objet:'; @@ -352,4 +457,70 @@ $lang['ldif_could_not_modify_object'] = 'Impossible de modifier l\'objet:'; $lang['ldif_line_number'] = 'Numéro de ligne'; $lang['ldif_line'] = 'Ligne'; +//delete_form +$lang['sure_permanent_delete_object']='Etes-vous certain de vouloir supprimer définitivement cet objet?'; +$lang['list_of_entries_to_be_deleted'] = 'Liste des entrées à supprimer:'; +$lang['dn'] = 'DN'; + +// Exports +$lang['export_format'] = 'Format'; +$lang['line_ends'] = 'Fin de ligne'; +$lang['must_choose_export_format'] = 'Vous devez sélectionner un format pour l\'exportation.'; +$lang['invalid_export_format'] = 'Format d\'exportation invalide'; +$lang['no_exporter_found'] = 'Aucun exporteur trouvé.'; +$lang['error_performing_search'] = 'Une erreur a eu lieu lors de la recherche.'; +$lang['showing_results_x_through_y'] = 'Affichage de %s à %s des résultats.'; +$lang['searching'] = 'Recherche...'; +$lang['size_limit_exceeded'] = 'Notice, la limite de taille pour la recherche est atteinte.'; +$lang['entry'] = 'Entrée'; +$lang['ldif_export_for_dn'] = 'Export LDIF pour: %s'; +$lang['generated_on_date'] = 'Generé par phpLDAPadmin ( http://phpldapadmin.sourceforge.net/ ) le %s'; +$lang['total_entries'] = 'Nombre d\'entrées'; +$lang['dsml_export_for_dn'] = 'Export DSML pour: %s'; + + +// logins +$lang['could_not_find_user'] = 'Impossible de trouver l\'utilisateur "%s"'; +$lang['password_blank'] = 'Le champ pour le mot de passe est vide.'; +$lang['login_cancelled'] = 'Login interrompu.'; +$lang['no_one_logged_in'] = 'Personne n\'est loggé à ce serveur.'; +$lang['could_not_logout'] = 'Impossible de se déconnecter.'; +$lang['unknown_auth_type'] = 'auth_type inconnu: %s'; +$lang['logged_out_successfully'] = 'Déconnection réussie du serveur %s'; +$lang['authenticate_to_server'] = 'Authentification au serveur %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Attention: Cette connection web n\'est pas cryptée.'; +$lang['not_using_https'] = 'Vous n\'utilisez pas \'https\'. Le navigateur web transmettra les informations de login en clair.'; +$lang['login_dn'] = 'Login DN'; +$lang['user_name'] = 'Nom de l\'utilisateur'; +$lang['password'] = 'Mot de passe'; +$lang['authenticate'] = 'Authentification'; + +// Entry browser +$lang['entry_chooser_title'] = 'Sélection de l\'entrée'; + +// Index page +$lang['need_to_configure'] = 'phpLDAPadmin a besoin d\'être configuré.Pour cela, éditer le fichier \'config.php\' . Un exemple de fichier de configuration est fourni dans \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Les suppressions ne sont pas permises en mode lecure seule.'; +$lang['error_calling_mass_delete'] = 'Erreur lors de l\'appel à mass_delete.php. mass_delete est manquant dans les variables POST.'; +$lang['mass_delete_not_array'] = 'La variable POST mass_delete \'est pas un tableau.'; +$lang['mass_delete_not_enabled'] = 'La suppression de masse n\'est pas disponible. Veuillez l\'activer dans config.php avant de continuer.'; +$lang['mass_deleting'] = 'Suppression en masse'; +$lang['mass_delete_progress'] = 'Progrès de la suppression sur le serveur "%s"'; +$lang['malformed_mass_delete_array'] = 'Le tableau mass_delete n\'est pas bien formé.'; +$lang['no_entries_to_delete'] = 'Vous n\'avez sélectionné aucune entrées à effacer.'; +$lang['deleting_dn'] = 'Deleting %s'; +$lang['total_entries_failed'] = '%s des %s entrées n\'ont pu être supprimées.'; +$lang['all_entries_successful'] = 'Toutes les entrées ont été supprimées avec succès.'; +$lang['confirm_mass_delete'] = 'Confirmation de la suppression en masse de %s entrées sur le serveur %s'; +$lang['yes_delete'] = 'Oui, supprimer!'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Vous ne pouvez pas renommer une entrée qui a des sous-entrées'; +$lang['no_rdn_change'] = 'Le RDN n\'a pas été modifié'; +$lang['invalid_rdn'] = 'Valeur invalide du RDN'; +$lang['could_not_rename'] = 'Impossible de renommer l\'entrée'; + + ?> diff --git a/lang/hu.php b/lang/hu.php new file mode 100644 index 0000000..68efcc4 --- /dev/null +++ b/lang/hu.php @@ -0,0 +1,556 @@ + + * with help from SIPOS Agnes + * $Header: /cvsroot/phpldapadmin/phpldapadmin/lang/hu.php,v 1.1 2004/05/23 21:12:03 i18phpldapadmin Exp $ + */ + +/* --- INSTRUCTIONS FOR TRANSLATORS --- + * + * If you want to write a new language file for your language, + * please submit the file on SourceForge: + * + * https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498548 + * + * Use the option "Check to Upload and Attach a File" at the bottom + * + * Thank you! + * + */ + +/* + * The $lang array contains all the strings that phpLDAPadmin uses. + * Each language file simply defines this aray with strings in its + * language. + */ + +// Search form +$lang['simple_search_form_str'] = 'Egyszerű keresési űrlap'; // 'Simple Search Form'; +$lang['advanced_search_form_str'] = 'Részletes keresési űrlap'; //'Advanced Search Form'; +$lang['server'] = 'Kiszolgáló'; //'Server'; +$lang['search_for_entries_whose'] = 'Bejegyzések keresése ahol'; //'Search for entries whose'; +$lang['base_dn'] = 'Alap-DN'; //'Base DN'; +$lang['search_scope'] = 'A keresés hatásköre'; //'Search Scope'; +$lang['show_attributes'] = 'MegjelenítendÅ‘ attribútumok'; //'Show Attributtes'; +$lang['Search'] = 'Keresés'; //'Search'; +$lang['predefined_search_str'] = 'ElÅ‘re definiált keresés kiválasztása'; //'Select a predefined search'; +$lang['predefined_searches'] = 'ElÅ‘re definiált keresések'; //'Predefined Searches'; +$lang['no_predefined_queries'] = 'Nincs keresés definiálva a config.php-ben.'; //'No queries have been defined in config.php.'; + +// Tree browser +$lang['request_new_feature'] = 'Új tulajdonság kérése'; //'Request a new feature'; +$lang['report_bug'] = 'Hiba jelentése'; //'Report a bug'; +$lang['schema'] = 'séma'; //'schema'; +$lang['search'] = 'keresés'; //'search'; +$lang['create'] = 'létrehozás'; //'create'; +$lang['info'] = 'infó'; //'info'; +$lang['import'] = 'import'; //'import'; +$lang['refresh'] = 'frissítés'; //'refresh'; +$lang['logout'] = 'kilépés'; //'logout'; +$lang['create_new'] = 'Új bejegyzés'; //'Create New'; +$lang['view_schema_for'] = 'Séma megtekintése:'; //'View schema for'; +$lang['refresh_expanded_containers'] = 'Az összes kiterjesztett tároló frissítése:'; //'Refresh all expanded containers for'; +$lang['create_new_entry_on'] = 'Új bejegyzés létrehozása:'; //'Create a new entry on'; +$lang['new'] = 'új'; //'new'; +$lang['view_server_info'] = 'A kiszolgáló információinak megtekintése'; //'View server-supplied information'; +$lang['import_from_ldif'] = 'LDIF-állományból bejegyzések importálása'; //'Import entries from an LDIF file'; +$lang['logout_of_this_server'] = 'Kilépés ebbÅ‘l a kiszolgálóból'; //'Logout of this server'; +$lang['logged_in_as'] = 'Belépve mint'; //'Logged in as: '; +$lang['read_only'] = 'csak olvasható'; //'read only'; +$lang['read_only_tooltip'] = 'A phpLDAPadmin adminisztrátora ezt az attribútumot csak olvashatóra állította'; //'This attribute has been flagged as read only by the phpLDAPadmin administrator'; +$lang['could_not_determine_root'] = 'Nem tudom megállapítani az LDAP-fa gyökerét.'; //'Could not determine the root of your LDAP tree.'; +$lang['ldap_refuses_to_give_root'] = 'Az LDAP-kiszolgálót úgy konfigurálták, hogy ne fedje föl az LDAP-fa gyökerét.'; //'It appears that the LDAP server has been configured to not reveal its root.'; +$lang['please_specify_in_config'] = 'Kérem adja meg a config.php-ban'; //'Please specify it in config.php'; +$lang['create_new_entry_in'] = 'Új bejegyzés létrehozása:'; //'Create a new entry in'; +$lang['login_link'] = 'Belépés...'; //'Login...'; +$lang['login'] = 'belépés'; //'login'; + +// Entry display +$lang['delete_this_entry'] = 'A bejegyzés törlése'; //'Delete this entry'; +$lang['delete_this_entry_tooltip'] = 'Ezt a döntést majd még meg kell erÅ‘síteni'; //'You will be prompted to confirm this decision'; +$lang['copy_this_entry'] = 'A bejegyzés másolása'; //'Copy this entry'; +$lang['copy_this_entry_tooltip'] = 'Az objektum másolása más helyre új DN-nel és/vagy másik kiszolgálóra'; //'Copy this object to another location, a new DN, or another server'; +$lang['export'] = 'Exportálás'; //'Export'; +$lang['export_tooltip'] = 'Az objektum kiírása'; //'Save a dump of this object'; +$lang['export_subtree_tooltip'] = 'Az objektum és az összes gyermekének kiírása'; //'Save a dump of this object and all of its children'; +$lang['export_subtree'] = 'Részfa exportálása'; //'Export subtree'; +$lang['create_a_child_entry'] = 'Gyermekbejegyzés létrehozása'; //'Create a child entry'; +$lang['rename_entry'] = 'A bejegyzés átnevezése'; 'Rename Entry'; +$lang['rename'] = 'Ãtnevezés'; //'Rename'; +$lang['add'] = 'Hozzáadás'; //'Add'; +$lang['view'] = 'Megtekintés'; //'View'; +$lang['view_one_child'] = 'A gyermek megtekintése (1 darab)'; //'View 1 child'; +$lang['view_children'] = 'A gyermekek megtekintése (%s darab)'; //'View %s children'; +$lang['add_new_attribute'] = 'Új attribútum hozzáadása'; //'Add new attribute'; +$lang['add_new_objectclass'] = 'Új objektumosztály hozzáadása'; //'Add new ObjectClass'; +$lang['hide_internal_attrs'] = 'BelsÅ‘ attribútumok elrejtése'; //'Hide internal attributes'; +$lang['show_internal_attrs'] = 'BelsÅ‘ attribútumok megjelenítése'; //'Show internal attributes'; +$lang['attr_name_tooltip'] = 'Kattintással megjelenik a(z) %s attribútumtípus sémabeli definíciója'; //'Click to view the schema defintion for attribute type \'%s\''; +$lang['none'] = 'nincs'; //'none'; +$lang['no_internal_attributes'] = 'Nincs belsÅ‘ attribútum'; //'No internal attributes'; +$lang['no_attributes'] = 'A bejegyzésnek nincs attribútuma'; //'This entry has no attributes'; +$lang['save_changes'] = 'Változások mentése'; //'Save Changes'; +$lang['add_value'] = 'érték hozzáadása'; //'add value'; +$lang['add_value_tooltip'] = 'Érték hozzáadása a(z) %s attribútumhoz'; //'Add an additional value to attribute \'%s\''; +$lang['refresh_entry'] = 'Frissítés'; //'Refresh'; +$lang['refresh_this_entry'] = 'Bejegyzés frissítése'; //'Refresh this entry'; +$lang['delete_hint'] = 'Tipp: Az attribútum törléséhez elÅ‘bb törölje a mezÅ‘t, majd kattintson a változtatások mentésére.'; //'Hint: To delete an attribute, empty the text field and click save.'; +$lang['attr_schema_hint'] = 'Tipp: Az attribútum sémájának megtekintéséhez kattintson az attribútum nevére.'; //'Hint: To view the schema for an attribute, click the attribute name.'; +$lang['attrs_modified'] = 'Módosult néhány attribútum (%s), s ezek kiemelve szerepelnek az alábbiakban.'; //'Some attributes (%s) were modified and are highlighted below.'; +$lang['attr_modified'] = 'Módosult egy attribútum (%s), s ez kiemelve szerepel az alábbiakban. '; //'An attribute (%s) was modified and is highlighted below.'; +$lang['viewing_read_only'] = 'A bejegyzés megtekintése csak olvasható üzemmódban.'; //'Viewing entry in read-only mode.'; +$lang['no_new_attrs_available'] = 'a bejegyzéshez nem tartozik új attribútum'; //'no new attributes available for this entry'; +$lang['no_new_binary_attrs_available'] = 'a bejegyzéshez nem tartozik új bináris attribútum'; //'no new binary attributes available for this entry'; +$lang['binary_value'] = 'Bináris érték'; //'Binary value'; +$lang['add_new_binary_attr'] = 'Új bináris attribútum hozzáadása'; //'Add new binary attribute'; +$lang['alias_for'] = 'Megj.: A(z) %s egy álneve (aliasa) a(z) %s attribútumnak'; //'Note: \'%s\' is an alias for \'%s\''; +$lang['download_value'] = 'érték letöltése'; //'download value'; +$lang['delete_attribute'] = 'attribútum törlése'; //'delete attribute'; +$lang['true'] = 'igaz'; //'true'; +$lang['false'] = 'hamis'; //'false'; +$lang['none_remove_value'] = 'nincs, érték törése'; //'none, remove value'; +$lang['really_delete_attribute'] = 'Attribútum tényleges törlése'; //'Really delete attribute'; +$lang['add_new_value'] = 'Új érték hozzáadása'; //'Add New Value'; + +// Schema browser +$lang['the_following_objectclasses'] = 'A következÅ‘ objektumosztályokat (objectClass) támogatja ez a kiszolgáló.'; //'The following objectClasses are supported by this LDAP server.'; +$lang['the_following_attributes'] = 'A következÅ‘ attribútumtípusokat (attributeType) támogatja ez a kiszolgáló.'; //'The following attributeTypes are supported by this LDAP server.'; +$lang['the_following_matching'] = 'A következÅ‘ illesztÅ‘szabályokat (matching rule) támogatja ez a kiszolgáló.'; //'The following matching rules are supported by this LDAP server.'; +$lang['the_following_syntaxes'] = 'A következÅ‘ szintaxisokat (syntax) támogatja ez a kiszolgáló.'; //'The following syntaxes are supported by this LDAP server.'; +$lang['schema_retrieve_error_1']= 'A kiszolgáló nem beszéli elég jól az LDAP-protokollt'; //'The server does not fully support the LDAP protocol.'; +$lang['schema_retrieve_error_2']= 'Ez a PHP-verzió nem tudja szabályosan végrehajtani a keresést.'; //'Your version of PHP does not correctly perform the query.'; +$lang['schema_retrieve_error_3']= 'Vagy végül is a phpLDAPadmin nem tudja hogyan kell a sémát letölteni errÅ‘l a kiszolgálóról.'; //'Or lastly, phpLDAPadmin doesn\'t know how to fetch the schema for your server.'; +$lang['jump_to_objectclass'] = 'Ugrás az objektumosztályhoz'; //'Jump to an objectClass'; +$lang['jump_to_attr'] = 'Ugrás az attribútumtípushoz'; //'Jump to an attribute type'; +$lang['jump_to_matching_rule'] = 'Ugrás az illesztÅ‘szabályhoz'; //'Jump to a matching rule'; +$lang['schema_for_server'] = 'Séma:'; //'Schema for server'; +$lang['required_attrs'] = 'KötelezÅ‘ attribútumok'; //'Required Attributes'; +$lang['optional_attrs'] = 'Opcionális attribútumok'; //'Optional Attributes'; +$lang['optional_binary_attrs'] = 'Opcionális bináris attribútumok'; //'Optional Binary Attributes'; +$lang['OID'] = 'OID'; //'OID'; +$lang['aliases']='Ãlnevek (alias)'; //'Aliases'; +$lang['desc'] = 'Leírás'; //'Description'; +$lang['no_description'] = 'nincs leírás'; //'no description'; +$lang['name'] = 'Név'; //'Name'; +$lang['equality']='EgyenlÅ‘ség'; //'Equality'; +$lang['is_obsolete'] = 'Ez az objektumosztály maradi'; //'This objectClass is obsolete.'; +$lang['inherits'] = 'KitÅ‘l öröklÅ‘dik'; //'Inherits from'; +$lang['inherited_from'] = 'KitÅ‘l örökölte:'; //'Inherited from'; +$lang['parent_to'] = 'Kinek a szülÅ‘je'; //'Parent to'; +$lang['jump_to_this_oclass'] = 'Ugrás ehhez az objektumosztály-definícióhoz'; //'Jump to this objectClass definition'; +$lang['matching_rule_oid'] = 'IllesztÅ‘szabály-OID'; //'Matching Rule OID'; +$lang['syntax_oid'] = 'Szintaxis-OID'; //'Syntax OID'; +$lang['not_applicable'] = 'nem alkalmazható'; //'not applicable'; +$lang['not_specified'] = 'nincs megadva'; //'not specified'; +$lang['character'] = 'karakter'; //'character'; +$lang['characters'] = 'karakter'; //'characters'; +$lang['used_by_objectclasses'] = 'Mely osztályok használják'; //'Used by objectClasses'; +$lang['used_by_attributes'] = 'Mely attribútumok használják'; //'Used by Attributes'; +$lang['maximum_length'] = 'Maximális hossz'; //'Maximum Length'; +$lang['attributes'] = 'Attribútumtípusok';//'Attribute Types'; +$lang['syntaxes'] = 'Szintaxisok'; //'Syntaxes'; +$lang['matchingrules'] = 'IllesztÅ‘szabályok'; //'Matching Rules'; +$lang['oid'] = 'OID'; //'OID'; +$lang['obsolete'] = 'Maradi'; //'Obsolete'; +$lang['ordering'] = 'Sorbarendezés'; //'Ordering'; +$lang['substring_rule'] = 'Alfüzér-szabály'; //'Substring Rule'; +$lang['single_valued'] = 'Egyértékű'; //'Single Valued'; +$lang['collective'] = 'Kollektív'; //'Collective'; +$lang['user_modification'] = 'Felhasználó-módosítás'; //'User Modification'; +$lang['usage'] = 'Használat'; //'Usage'; +$lang['could_not_retrieve_schema_from'] = 'Nem tudom a sémát elérni,'; //'Could not retrieve schema from'; +$lang['type']='Típus'; //'Type'; + +// Deleting entries +$lang['entry_deleted_successfully'] = 'A(z) %s bejegyzés sikeresen törölve.'; //'Entry %s deleted successfully.'; +$lang['you_must_specify_a_dn'] = 'A DN-t meg kell adni'; //'You must specify a DN'; +$lang['could_not_delete_entry'] = 'Nem tudom a(z) %s bejegyzést törölni'; //'Could not delete the entry: %s'; +$lang['no_such_entry'] = 'Nincs ilyen bejegyzés: %s'; //'No such entry: %s'; +$lang['delete_dn'] = 'A(z) %s törlése'; //'Delete %s'; +$lang['permanently_delete_children'] = 'Az összes gyermeket is töröljem?'; //'Permanently delete all children also?'; +$lang['entry_is_root_sub_tree'] = 'Ez a bejegyzés egy %s bejegyzést tartalmazó részfa gyökere.'; //'This entry is the root of a sub-tree containing %s entries.'; +$lang['view_entries'] = 'bejegyzések megtekintése'; //'view entries'; +$lang['confirm_recursive_delete'] = 'Rekurzív módon törölhetem ezt a bejegyzést, és mind a(z) %s gyermekét. Lásd alul a bejegyzéseket, amelyeket törölnék. Óhajtja törölni?'; //'phpLDAPadmin can recursively delete this entry and all %s of its children. See below for a list of all the entries that this action will delete. Do you want to do this?'; +$lang['confirm_recursive_delete_note'] = 'Megj.: Ez a törlés veszélyes lehet. A műveletet nem lehet visszavonni!'; //'Note: this is potentially very dangerous and you do this at your own risk. This operation cannot be undone. Take into consideration aliases, referrals, and other things that may cause problems.'; +$lang['delete_all_x_objects'] = 'Mind a(z) %s objektum törlése'; //'Delete all %s objects'; +$lang['recursive_delete_progress'] = 'A rekurzív törlés folyamatban'; //'Recursive delete progress'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'A(z) %s bejegyzés és a részfa sikeresen törölve.'; //'Entry %s and sub-tree deleted successfully.'; +$lang['failed_to_delete_entry'] = 'A(z) %s bejegyzés törlése sikertelen'; //'Failed to delete entry %s'; +$lang['list_of_entries_to_be_deleted'] = 'A törlendÅ‘ bejegyzések listája:'; //'List of entries to be deleted:'; +$lang['sure_permanent_delete_object']='Biztos törölni óhajtja ezt az objektumot?'; //'Are you sure you want to permanently delete this object?'; +$lang['dn'] = 'DN'; //'DN'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'A(z) %s attribútum csak olvasható a phpLDAPadmin konfigurációja szerint.'; //'The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'; +$lang['no_attr_specified'] = 'Nincs megadva az attribútumnév.'; //'No attribute name specified.'; +$lang['no_dn_specified'] = 'Nincs megadva a DN'; //'No DN specified'; + +// Adding attributes +$lang['left_attr_blank'] = 'Az attribútumértéket üresen hagyta. Kérem lépjen vissza és próbálja újra.'; //'You left the attribute value blank. Please go back and try again.'; +$lang['failed_to_add_attr'] = 'Nem tudtam az attribútumot hozzáadni.'; //'Failed to add the attribute.'; +$lang['file_empty'] = 'A kiválasztott állomány vagy üres, vagy nem létezik. Kérem lépjen vissza és próbálja újra.'; //'The file you chose is either empty or does not exist. Please go back and try again.'; +$lang['invalid_file'] = 'Biztonsági hiba: a feltöltendÅ‘ állomány veszélyes elemeket tartalmazhat.'; //'Security error: The file being uploaded may be malicious.'; +$lang['warning_file_uploads_disabled'] = 'A PHP-konfiguráció tiltja az állományok feltöltését. Kérem ellenÅ‘rizze a php.ini állományt.'; //'Your PHP configuration has disabled file uploads. Please check php.ini before proceeding.'; +$lang['uploaded_file_too_big'] = 'A feltöltött állomány túl nagy. Kérem ellenÅ‘rizze a php.ini állományban a upload_max_size beállítást.'; //'The file you uploaded is too large. Please check php.ini, upload_max_size setting'; +$lang['uploaded_file_partial'] = 'A kiválasztott állomány csak részben töltÅ‘dött föl valószínűleg hálózati hiba miatt.'; //'The file you selected was only partially uploaded, likley due to a network error.'; +$lang['max_file_size'] = 'Maximális állományméret: %s'; //'Maximum file size: %s'; + +// Updating values +$lang['modification_successful'] = 'A módosítás sikerült!'; //'Modification successful!'; +$lang['change_password_new_login'] = 'Mivel megváltoztatta a jelszót most újra be kell jelentkeznie az új jelszóval.'; //'Since you changed your password, you must now login again with your new password.'; + +// Adding objectClass form +$lang['new_required_attrs'] = 'Új kötelezÅ‘ attribútumok'; //'New Required Attributes'; +$lang['requires_to_add'] = 'Ez a művelet megközeveteli hogy hozzáadjon'; //'This action requires you to add'; +$lang['new_attributes'] = 'új attribútumo(ka)t'; //'new attributes'; +$lang['new_required_attrs_instructions'] = 'Az új objektumosztály hozzáadásához'; //'Instructions: In order to add this objectClass to this entry, you must specify'; +$lang['that_this_oclass_requires'] = 'kell megadni ezen az űrlapon.'; //'that this objectClass requires. You can do so in this form.'; +$lang['add_oclass_and_attrs'] = 'Objektumosztály és attribútumok hozzáadása'; //'Add ObjectClass and Attributes'; +$lang['objectclasses'] = 'Objektumosztályok'; //'ObjectClasses'; + +// General +$lang['chooser_link_tooltip'] = 'Kattintásra egy új ablak jön föl, amelyben egy bejegyzést választhat a DN alapján.'; //'Click to popup a dialog to select an entry (DN) graphically'; +$lang['no_updates_in_read_only_mode'] = 'Nem lehet módosítani mikor a kiszolgáló csak olvasható üzemmódban van'; //'You cannot perform updates while server is in read-only mode'; +$lang['bad_server_id'] = 'Hibás kiszolgáló-azonosító'; //'Bad server id'; +$lang['not_enough_login_info'] = 'Kevés az adat a belépéshez. Kérem ellenÅ‘rizze a konfigurációt.'; //'Not enough information to login to server. Please check your configuration.'; +$lang['could_not_connect'] = 'Nem tudok csatlakozni az LDAP-kiszolgálóhoz.'; //'Could not connect to LDAP server.'; +$lang['could_not_connect_to_host_on_port'] = 'Nem tudok csatlakozni a(z) %s géphez a(z) %s porton.'; //'Could not connect to "%s" on port "%s"'; +$lang['could_not_perform_ldap_mod_add'] = 'Nem tudom végrehajtani az ldap_mod_add műveletet.'; //'Could not perform ldap_mod_add operation.'; +$lang['bad_server_id_underline'] = 'Hibás kiszolgáló-azonosító: '; //'Bad server_id: '; +$lang['success'] = 'Siker'; //'Success'; +$lang['server_colon_pare'] = 'Kiszolgáló: '; //'Server: '; +$lang['look_in'] = 'Keresés itt: '; //'Looking in: '; +$lang['missing_server_id_in_query_string'] = 'Nincs megadva a kiszolgáló-azonosító a keresési füzérben!'; //'No server ID specified in query string!'; +$lang['missing_dn_in_query_string'] = 'Nincs megadva a DN a keresési füzérben!'; //'No DN specified in query string!'; +$lang['back_up_p'] = 'Vissza...'; //'Back Up...'; +$lang['no_entries'] = 'nics bejegyzés'; //'no entries'; +$lang['not_logged_in'] = 'Nincs belépve'; //'Not logged in'; +$lang['could_not_det_base_dn'] = 'Nem tudom az alap-DN-t meghatározni'; //'Could not determine base DN'; +$lang['please_report_this_as_a_bug'] = 'Kérjük jelentse ezt a hibát.'; //'Please report this as a bug.'; +$lang['reasons_for_error'] = 'Ez több dolog miatt történhet, például:'; //'This could happen for several reasons, the most probable of which are:'; +$lang['yes'] = 'Igen'; //'Yes'; +$lang['no'] = 'Nem'; //'No'; +$lang['go'] = 'Mehet'; //'Go'; +$lang['delete'] = 'Törlés'; //'Delete'; +$lang['back'] = 'Vissza'; //'Back'; +$lang['object'] = 'objektum'; //'object'; +$lang['delete_all'] = 'Minden törlése'; //'Delete all'; +$lang['url_bug_report'] = 'https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; //'https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'tipp'; //'hint'; +$lang['bug'] = 'hiba'; //'bug'; +$lang['warning'] = 'figyelmeztetés'; //'warning'; +$lang['light'] = 'lámpa'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Tovább >>'; //'Proceed >>'; + + +// Add value form +$lang['add_new'] = 'Új'; //'Add new'; +$lang['value_to'] = 'érték, RDN:'; //'value to'; +$lang['distinguished_name'] = 'MegkülönböztetÅ‘ név (DN)'; //'Distinguished Name'; +$lang['current_list_of'] = 'Az aktuális lista'; //'Current list of'; +$lang['values_for_attribute'] = 'értéket tartalmaz. Attribútum:'; //'values for attribute'; +$lang['inappropriate_matching_note'] = 'Megj.: Ha nincs beállítva EGYENLÅSÉG-szabály ehhez az attribútumhoz a kiszolgáló az ún. inappropriate matching hibát adja vissza.'; //'Note: You will get an "inappropriate matching" error if you have not setup an EQUALITY rule on your LDAP server for this attribute.'; +$lang['enter_value_to_add'] = 'Adja meg a kívánt értéket:'; //'Enter the value you would like to add:'; +$lang['new_required_attrs_note'] = 'Megj.: Lehet hogy új kötelezÅ‘ attribútumokat kell bevinnie ehhez az objektumosztályhoz'; //'Note: you may be required to enter new attributes that this objectClass requires'; +$lang['syntax'] = 'Szintaxis'; //'Syntax'; + +//copy.php +$lang['copy_server_read_only'] = 'Nem lehet módosítást eszközölni amíg a kiszolgáló csak olvasható üzemmódban van'; //'You cannot perform updates while server is in read-only mode'; +$lang['copy_dest_dn_blank'] = 'Ãœresen hagyta a cél-DN mezejét'; //'You left the destination DN blank.'; +$lang['copy_dest_already_exists'] = 'A célbejegyzés (%s) már létezik.'; //'The destination entry (%s) already exists.'; +$lang['copy_dest_container_does_not_exist'] = 'A cél-tároló (%s) nem létezik.'; //'The destination container (%s) does not exist.'; +$lang['copy_source_dest_dn_same'] = 'A forrás- és cél-DN ugyanaz.'; //'The source and destination DN are the same.'; +$lang['copy_copying'] = 'Másolás: '; //'Copying '; +$lang['copy_recursive_copy_progress'] = 'Rekurzív másolás folyamatban'; //'Recursive copy progress'; +$lang['copy_building_snapshot'] = 'A fáról készítek egy pillanatfelvételt a másoláshoz... '; //'Building snapshot of tree to copy... '; +$lang['copy_successful_like_to'] = 'A másolás sikerült! Szeretné-e '; //'Copy successful! Would you like to '; +$lang['copy_view_new_entry'] = 'megtekinteni az új bejegyzést'; //'view the new entry'; +$lang['copy_failed'] = 'A DN másolása nem sikerült: '; //'Failed to copy DN: '; + +//edit.php +$lang['missing_template_file'] = 'Figyelem: hiányzik a mintaállomány.'; //'Warning: missing template file, '; +$lang['using_default'] = 'Az alapértelmezés használata.'; //'Using default.'; +$lang['template'] = 'Minta'; //'Template'; +$lang['must_choose_template'] = 'Választania kell egy mintát.'; //'You must choose a template'; +$lang['invalid_template'] = 'A(z) %s hibás minta.'; //'%s is an invalid template'; +$lang['using_template'] = 'használt minta:'; //'using template'; +$lang['go_to_dn'] = 'Menj a(z) %s DN-hez'; //'Go to %s'; + +//copy_form.php +$lang['copyf_title_copy'] = 'Másolás: '; //'Copy '; +$lang['copyf_to_new_object'] = '; az új objektum'; //'to a new object'; +$lang['copyf_dest_dn'] = 'Cél-DN'; //'Destination DN'; +$lang['copyf_dest_dn_tooltip'] = 'A másolással létrejövÅ‘ új bejegyzés teljes DN-je'; //'The full DN of the new entry to be created when copying the source entry'; +$lang['copyf_dest_server'] = 'Célkiszolgáló'; //'Destination Server'; +$lang['copyf_note'] = 'Tipp: A kiszolgálók közötti másolás csak akkor működik, ha nincs séma-sértés'; //'Hint: Copying between different servers only works if there are no schema violations'; +$lang['copyf_recursive_copy'] = 'Az objektum összes gyermekeinek rekurzív másolása.'; //'Recursively copy all children of this object as well.'; +$lang['recursive_copy'] = 'Rekurzív másolás'; //'Recursive copy'; +$lang['filter'] = 'SzűrÅ‘'; //'Filter'; +$lang['filter_tooltip'] = 'Rekurzív másolásnál csak azokat másolja le, amelyekre illik ez a szűrÅ‘'; //'When performing a recursive copy, only copy those entries which match this filter'; + +//create.php +$lang['create_required_attribute'] = 'A(z) %s kötelezÅ‘ attribútum értékét üresen hagyta.'; //'You left the value blank for required attribute (%s).'; +$lang['redirecting'] = 'Ãtirányítás...'; //'Redirecting...'; +$lang['here'] = 'ide'; //'here'; +$lang['create_could_not_add'] = 'Nem tudom az objektumot létrehozni a kiszolgálón.'; //'Could not add the object to the LDAP server.'; + +//create_form.php +$lang['createf_create_object'] = 'Objektum létrehozása'; //'Create Object'; +$lang['createf_choose_temp'] = 'Válasszon mintát'; //'Choose a template'; +$lang['createf_select_temp'] = 'Válasszon mintát a létrehozási folyamathoz'; //'Select a template for the creation process'; +$lang['createf_proceed'] = 'Tovább'; //'Proceed'; +$lang['rdn_field_blank'] = 'Az RDN-mezÅ‘t üresen hagyta'; //'You left the RDN field blank.'; +$lang['container_does_not_exist'] = 'A(z) %s tároló nem létezik. Kérem próbálja újra.'; //'The container you specified (%s) does not exist. Please try again.'; +$lang['no_objectclasses_selected'] = 'Nem választott objektumosztályt ehhez az objektumhoz. Kérem lépjen vissza és válasszon egyet.'; //'You did not select any ObjectClasses for this object. Please go back and do so.'; +$lang['hint_structural_oclass'] = 'Tipp: Legalább egy strukturális objektumosztályt kell választania'; //'Hint: You must choose at least one structural objectClass'; + +//creation_template.php +$lang['ctemplate_on_server'] = 'Kiszolgáló:'; //'On server'; +$lang['ctemplate_no_template'] = 'Nincs megadva a minta a POST-változóban.'; //'No template specified in POST variables.'; +$lang['ctemplate_config_handler'] = 'A konfiguráció egy kezelÅ‘t ad meg:'; //'Your config specifies a handler of'; +$lang['ctemplate_handler_does_not_exist'] = 'ehhez a mintához. De ez a kezelÅ‘ nincs a mintakönyvtárban.'; //'for this template. But, this handler does not exist in the templates/creation directory.'; +$lang['create_step1'] = 'ElsÅ‘ lépés: Név és objektumosztály(ok)'; //'Step 1 of 2: Name and ObjectClass(es)'; +$lang['create_step2'] = 'Második lépés: Adja meg az attribútumokat és értékeiket'; //'Step 2 of 2: Specify attributes and values'; +$lang['relative_distinguished_name'] = 'Viszonylagos megkülönböztetÅ‘ név (RDN)'; //'Relative Distinguished Name'; +$lang['rdn'] = 'RDN'; //'RDN'; +$lang['rdn_example'] = '(példa: cn=ÚjEmber)'; //'(example: cn=MyNewPerson)'; +$lang['container'] = 'Tároló'; //'Container'; +$lang['alias_for'] = 'A(z) %s álneve a(z) %s attribútumnévnek'; //'Alias for %s'; + +// search.php +$lang['you_have_not_logged_into_server'] = 'Nem lépett be a kiválasztott kiszolgálóba, s így nem tudok keresni.'; //'You have not logged into the selected server yet, so you cannot perform searches on it.'; +$lang['click_to_go_to_login_form'] = 'Kattintson ide a belépési űrlap eléréséhez'; //'Click here to go to the login form'; +$lang['unrecognized_criteria_option'] = 'Ismeretlen kritérium-opció: '; //'Unrecognized criteria option: '; +$lang['if_you_want_to_add_criteria'] = 'Ha kritériumot kíván adni a listához szerkessze meg a search.php-t, hogy kezelje le azokat. Most kilépek.'; //'If you want to add your own criteria to the list. Be sure to edit search.php to handle them. Quitting.'; +$lang['entries_found'] = 'A megtalált bejegyzések: '; //'Entries found: '; +$lang['filter_performed'] = 'Használt szűrÅ‘: '; //'Filter performed: '; +$lang['search_duration'] = 'A phpLDAPadmin'; //'Search performed by phpLDAPadmin in'; +$lang['seconds'] = 's alatt hajtotta végre a keresést'; //'seconds'; + +// search_form_advanced.php +$lang['scope_in_which_to_search'] = 'A keresés hatásköre'; //'The scope in which to search'; +$lang['scope_sub'] = 'Az egész részfa'; //'Sub (entire subtree)'; +$lang['scope_one'] = 'Egy szint az alap-DN alatt'; //'One (one level beneath base)'; +$lang['scope_base'] = 'Csak az alap-DN'; //'Base (base dn only)'; +$lang['standard_ldap_search_filter'] = 'Szabványos LDAP-szűrÅ‘, pl. (&(sn=Kovács)(givenname=István))'; //'Standard LDAP search filter. Example: (&(sn=Smith)(givenname=David))'; +$lang['search_filter'] = 'KeresÅ‘szűrÅ‘'; //'Search Filter'; +$lang['list_of_attrs_to_display_in_results'] = 'A megjelenítendÅ‘ találatok attribútumainak vesszÅ‘vel elválasztott listája'; //'A list of attributes to display in the results (comma-separated)'; +$lang['show_attributes'] = 'Attribútumok megjelenítése'; //'Show Attributes'; + +// search_form_simple.php +$lang['search_for_entries_whose'] = 'Bejegyzések keresése, ahol:'; //'Search for entries whose:'; +$lang['equals'] = 'egyenlÅ‘'; //'equals'; +$lang['starts with'] = 'kezdet'; //'starts with'; +$lang['contains'] = 'tartalmaz'; //'contains'; +$lang['ends with'] = 'végzÅ‘dés'; //'ends with'; +$lang['sounds like'] = 'hangzás'; //'sounds like'; + +// server_info.php +$lang['could_not_fetch_server_info'] = 'Nem tudom az információt letölteni a kiszolgálóról'; //'Could not retrieve LDAP information from the server'; +$lang['server_info_for'] = 'Kiszolgáló-infó: '; //'Server info for: '; +$lang['server_reports_following'] = 'A kiszolgáló ezeket az információkat közölte önmagáról'; //'Server reports the following information about itself'; +$lang['nothing_to_report'] = 'A kiszolgálónak nincs mit elküldenie'; //'This server has nothing to report.'; + +//update.php +$lang['update_array_malformed'] = 'Az update_array hibés. Ez a phpLDAPadmin hibája lehet, kérem jelentse.'; //'update_array is malformed. This might be a phpLDAPadmin bug. Please report it.'; +$lang['could_not_perform_ldap_modify'] = 'Nem tudom elvégezni az ldap_modify műveletet.'; //'Could not perform ldap_modify operation.'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'Érvényesíteni kívánja a változásokat?'; //'Do you want to make these changes?'; +$lang['attribute'] = 'Attribútumok'; //'Attribute'; +$lang['old_value'] = 'Régi érték'; //'Old Value'; +$lang['new_value'] = 'Új érték'; //'New Value'; +$lang['attr_deleted'] = '[attribútum törölve]'; //'[attribute deleted]'; +$lang['commit'] = 'Érvényesítés'; //'Commit'; +$lang['cancel'] = 'Mégsem'; //'Cancel'; +$lang['you_made_no_changes'] = 'Nem történt változtatás'; //'You made no changes'; +$lang['go_back'] = 'Vissza'; //'Go back'; + +// welcome.php +$lang['welcome_note'] = 'A bal oldali menüvel tájékozódhat a programban'; //'Use the menu to the left to navigate'; +$lang['credits'] = 'Köszönetnyilvánítás'; //'Credits'; +$lang['changelog'] = 'Változtatások naplója'; //'ChangeLog'; +$lang['donate'] = 'Adományozzon'; //'Donate'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = 'Nem biztonságos állománynév: '; //'Unsafe file name: '; +$lang['no_such_file'] = 'Nincs ilyen állomány: '; //'No such file: '; + +//function.php +$lang['auto_update_not_setup'] = 'Az auto_uid_numbers engedélyezett a konfigurációban a(z) %s kiszolgálóhoz, de az auto_uid_number_mechanism nincs megadva. Kérem írja be ezt az értéket.'; +//'You have enabled auto_uid_numbers for %s in your configuration, +// but you have not specified the auto_uid_number_mechanism. Please correct +// this problem.'; +$lang['uidpool_not_set'] = 'A konfigurációban az auto_uid_number_mechanism értéke uidpool a(z) %s kiszolgálóhoz, de nem adta meg az auto_uid_number_uid_pool_dn értékét. Kérem írja be ezt az értéket.'; +//'You specified the "auto_uid_number_mechanism" as "uidpool" +// in your configuration for server %s, but you did not specify the +// audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; +$lang['uidpool_not_exist'] = 'A konfigurációban megadott uidPool nem létezik (%s).'; +//'It appears that the uidPool you specified in your configuration ("%s") +// does not exist.'; +$lang['specified_uidpool'] = 'A konfigurációban az auto_uid_number_mechanism értéke search a(z) %s kiszolgálóhoz, de nem adta meg az auto_uid_number_search_base értékét. Kérem írja be ezt az értéket.'; +//'You specified the "auto_uid_number_mechanism" as "search" in your +// configuration for server %s, but you did not specify the +// "auto_uid_number_search_base". Please specify it before proceeding.'; +$lang['auto_uid_invalid_credential'] = 'A bind művelet sikertelen a(z) %s kiszolgálóhoz az auto_uid használatával. Kérem ellenÅ‘rizze a konfigurációt. '; //'Unable to bind to %s with your with auto_uid credentials. Please check your configuration file.'; +$lang['bad_auto_uid_search_base'] = 'A konfigurációban érvénytelen auto_uid_search_base van megadva a(z) %s kiszolgálóhoz.'; //'Your phpLDAPadmin configuration specifies an invalid auto_uid_search_base for server %s'; +$lang['auto_uid_invalid_value'] = 'Érvénytelen értéket adott meg a auto_uid_number_mechanism-nak (%s). Csak uidpool és search a megengedett érték.'; +//'You specified an invalid value for auto_uid_number_mechanism ("%s") +// in your configration. Only "uidpool" and "search" are valid. +// Please correct this problem.'; +$lang['error_auth_type_config'] = 'Csak a session, cookie és config a megengedett értékek az auth_type-nak a konfigurációban. A megadott helytelen érték: %s.'; +//'Error: You have an error in your config file. The only three allowed values +// for auth_type in the $servers section are \'session\', \'cookie\', and \'config\'. You entered \'%s\', +// which is not allowed. '; +$lang['php_install_not_supports_tls'] = 'Ez a PHP nem támogatja a TLS-t.'; //'Your PHP install does not support TLS.'; +$lang['could_not_start_tls'] = 'Nem tudom a TLS-t elindítani. Kérem ellenÅ‘rizze az LDAP-kiszolgálót és a konfigurációt.'; //'Could not start TLS. Please check your LDAP server configuration.'; +$lang['could_not_bind_anon'] = 'Az anonymous bind művelet nem sikerült.'; //'Could not bind anonymously to server.'; +$lang['could_not_bind'] = 'A bind művelet sikertelen az LDAP-kiszolgálóhoz.'; //'Could not bind to the LDAP server.'; +$lang['anonymous_bind'] = 'Anonymous bind'; //'Anonymous Bind'; +$lang['bad_user_name_or_password'] = 'Helytelen felhasználónév vagy jelszó. Kérem próbálja újra.'; //'Bad username or password. Please try again.'; +$lang['redirecting_click_if_nothing_happens'] = 'Ãtirányítás... kérem kattintson ide, ha semmi sem történik.'; //'Redirecting... Click here if nothing happens.'; +$lang['successfully_logged_in_to_server'] = 'A(z) %s kiszolgálóhoz sikeresen bejelentkezett.'; //'Successfully logged into server %s'; +$lang['could_not_set_cookie'] = 'Nem tudok sütit beállítani.'; //'Could not set cookie.'; +$lang['ldap_said'] = 'Az LDAP ezt mondta: %s'; //'LDAP said: %s'; +$lang['ferror_error'] = 'Hiba'; //'Error'; +$lang['fbrowse'] = 'böngészés'; //'browse'; +$lang['delete_photo'] = 'Fotó törlése'; //'Delete Photo'; +$lang['install_not_support_blowfish'] = 'Ez a PHP nem támogatja a blowfish titkosítást.'; //'Your PHP install does not support blowfish encryption.'; +$lang['install_not_support_md5crypt'] = 'Ez a PHP nem támogatja az md5crypt titkosítást.'; //'Your PHP install does not support md5crypt encryption.'; +$lang['install_no_mash'] = 'Ez a PHP nem tartalmazza az mhash() függvényt. Nem tudok SHA hash-eket kezelni.'; //'Your PHP install does not have the mhash() function. Cannot do SHA hashes.'; +$lang['jpeg_contains_errors'] = 'A jpegPhoto hibás
'; //'jpegPhoto contains errors
'; +$lang['ferror_number'] = 'Hibaszám: %s (%s)'; //'Error number: %s (%s)'; +$lang['ferror_discription'] = 'Leírás: %s

'; //'Description: %s

'; +$lang['ferror_number_short'] = 'Hibaszám: %s

'; //'Error number: %s

'; +$lang['ferror_discription_short'] = 'Leírás: (nincs leírás)
'; //'Description: (no description available)
'; +$lang['ferror_submit_bug'] = 'Ez a phpLDAPadmin hibája? Ha igen, kérem jelentse.'; //'Is this a phpLDAPadmin bug? If so, please report it.'; +$lang['ferror_unrecognized_num'] = 'Ismeretlen hibaszám: '; //'Unrecognized error number: '; +$lang['ferror_nonfatil_bug'] = '
+
+ Egy kisebb hibát talált a phpLDAPadmin-ban!
Hiba:%s (%s)
Ãllomány:%s. sor %s, hívó %s
Verziók:PLA: %s, PHP: %s, SAPI: %s +
Web-kiszolgáló:%s
+ Kérem jelentse a hibát, kattintson ide!.

'; +//'
+//
+// You found a non-fatal phpLDAPadmin bug!
Error:%s (%s)
File:%s line %s, caller %s
Versions:PLA: %s, PHP: %s, SAPI: %s +//
Web server:%s
+// Please report this bug by clicking here.

'; +$lang['ferror_congrats_found_bug'] = 'Gratulálunk! Hibát talált a phpLDAPadmin-ban.

+ + + + + + + + + + +
Hiba:%s
Szint:%s
Ãllomány:%s
Sor:%s
Hívó:%s
PLA Verzió:%s
PHP Verzió:%s
PHP SAPI:%s
Web-kiszolgáló:%s
+
+ Kérjük jelentse a hibát, kattintson alulra!'; +//'Congratulations! You found a bug in phpLDAPadmin.

+// +// +// +// +// +// +// +// +// +// +//
Error:%s
Level:%s
File:%s
Line:%s
Caller:%s
PLA Version:%s
PHP Version:%s
PHP SAPI:%s
Web server:%s
+//
+// Please report this bug by clicking below!'; + +//ldif_import_form +$lang['import_ldif_file_title'] = 'LDIF-állomány importálása'; //'Import LDIF File'; +$lang['select_ldif_file'] = 'LDIF-állomány kiválasztása'; //'Select an LDIF file:'; +$lang['select_ldif_file_proceed'] = 'Tovább >>'; //'Proceed >>'; +$lang['dont_stop_on_errors'] = 'Ne állj meg hiba esetén'; //'Don\'t stop on errors'; + +//ldif_import +$lang['add_action'] = 'Hozzáadás...'; //'Adding...'; +$lang['delete_action'] = 'Törlés...'; //'Deleting...'; +$lang['rename_action'] = 'Ãtnevezés'; //'Renaming...'; +$lang['modify_action'] = 'Módosítás...'; //'Modifying...'; +$lang['warning_no_ldif_version_found'] = 'Nem találtam verziószámot, feltételeztem, hogy 1-es.'; //'No version found. Assuming 1.'; +$lang['valid_dn_line_required'] = 'Érvényes DN-sor kell.'; //'A valid dn line is required.'; +$lang['missing_uploaded_file'] = 'A feltöltött állomány hiányzik.'; //'Missing uploaded file.'; +$lang['no_ldif_file_specified.'] = 'Nem adott meg LDIF-állományt. Kérem próbálja újra.'; //'No LDIF file specified. Please try again.'; +$lang['ldif_file_empty'] = 'A feltöltött LDIF-állomány üres.'; //'Uploaded LDIF file is empty.'; +$lang['empty'] = 'üres'; //'empty'; +$lang['file'] = 'Ãllomány'; //'File'; +$lang['number_bytes'] = '%s byte'; //'%s bytes'; + +$lang['failed'] = 'Sikertelen'; //'Failed'; +$lang['ldif_parse_error'] = 'LDIF-pásztázási hiba'; //'LDIF Parse Error'; +$lang['ldif_could_not_add_object'] = 'Nem tudom ezt az objektumot hozzáadni:'; //'Could not add object:'; +$lang['ldif_could_not_rename_object'] = 'Nem tudom ezt az objektumot átnevezni:'; //'Could not rename object:'; +$lang['ldif_could_not_delete_object'] = 'Nem tudom ezt az objektumot törölni:'; //'Could not delete object:'; +$lang['ldif_could_not_modify_object'] = 'Nem tudom ezt az objektumot módosítani:'; //'Could not modify object:'; +$lang['ldif_line_number'] = 'Sorszám:'; //'Line Number:'; +$lang['ldif_line'] = 'Sor:'; //'Line:'; + +// Exports +$lang['export_format'] = 'Export-formátum'; //'Export format'; +$lang['line_ends'] = 'Sorvégek'; //'Line ends'; +$lang['must_choose_export_format'] = 'Az export formátumát ki kell választani.'; //'You must choose an export format.'; +$lang['invalid_export_format'] = 'Az export formátuma érvénytelen'; //'Invalid export format'; +$lang['no_exporter_found'] = 'Nincs használható exportáló.'; //'No available exporter found.'; +$lang['error_performing_search'] = 'Keresés közben hibába akadtam.'; //'Encountered an error while performing search.'; +$lang['showing_results_x_through_y'] = 'A(z) %s és %s közé esÅ‘ találatok megjelenítése.'; //'Showing results %s through %s.'; +$lang['searching'] = 'Folyik a keresés...'; //'Searching...'; +$lang['size_limit_exceeded'] = 'Figyelem: a keresési méret korlátja túllépve.'; //'Notice, search size limit exceeded.'; +$lang['entry'] = 'Bejegyzés'; //'Entry'; +$lang['ldif_export_for_dn'] = 'A(z) %s LDIF exportja'; //'LDIF Export for: %s'; +$lang['generated_on_date'] = 'A phpLDAPadmin generálta, dátum: %s'; //'Generated by phpLDAPadmin on %s'; +$lang['total_entries'] = 'Bejegyzések száma összesen'; //'Total Entries'; +$lang['dsml_export_for_dn'] = 'A(z) %s DSLM exportja'; //'DSLM Export for: %s'; + +// logins +$lang['could_not_find_user'] = 'Nem találtam meg a(z) %s felhasználót'; //'Could not find a user "%s"'; +$lang['password_blank'] = 'A jelszó üresen maradt.'; //'You left the password blank.'; +$lang['login_cancelled'] = 'A bejelentkezést megszakították.'; //'Login cancelled.'; +$lang['no_one_logged_in'] = 'Arra a kiszolgálóra nincs bejelentkezve senki.'; //'No one is logged in to that server.'; +$lang['could_not_logout'] = 'Nem sikerült kilépni.'; //'Could not logout.'; +$lang['unknown_auth_type'] = 'Ismeretlen auth_type: %s'; //'Unknown auth_type: %s'; +$lang['logged_out_successfully'] = 'A kilépés sikerült a(z) %s kiszolgálóból'; //'Logged out successfully from server %s'; +$lang['authenticate_to_server'] = 'Azonosítsa magát a(z) %s kiszolgálón'; //'Authenticate to server %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Figyelem: A kapcsolat a bögészÅ‘vel titkosítatlan.'; //'Warning: This web connection is unencrypted.'; +$lang['not_using_https'] = 'Nem https kapcsolatot használ. A böngészÅ‘ a bejelentkezés adatait sima szöveg formátumban fogja továbbítani'; //'You are not using \'https\'. Web browser will transmit login information in clear text.'; +$lang['login_dn'] = 'Bejelentkezési DN'; //'Login DN'; +$lang['user_name'] = 'A felhasználó neve'; //'User name'; +$lang['password'] = 'Jelszó'; //'Password'; +$lang['authenticate'] = 'Azonosítás'; //'Authenticate'; + +// Entry browser +$lang['entry_chooser_title'] = 'Bejegyzés kiválasztása'; //'Entry Chooser'; + +// Index page +$lang['need_to_configure'] = 'Konfigurálnia kell a phpLDAPadmint a config.php állomány szerkesztésével, amihez mintául a config.php.example szolgálhat.'; //'You need to configure phpLDAPadmin. Edit the file \'config.php\' to do so. An example config file is provided in \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Csak olvasható üzemmódban a törlés nem működik.'; //'Deletes not allowed in read only mode.'; +$lang['error_calling_mass_delete'] = 'Hiba a mass_delete.php hívásakor. A POST változók közül hiányzik a mass_delete.'; //'Error calling mass_delete.php. Missing mass_delete in POST vars.'; +$lang['mass_delete_not_array'] = 'A mass_delete POST változó nem tömb.'; //'mass_delete POST var is not an array.'; +$lang['mass_delete_not_enabled'] = 'A tömeges törlés nincs engedélyezve. MielÅ‘tt folytatná, állítsa át az enable_mass_delete értékét config.php állományban.'; //'Mass deletion is not enabled. Please enable it in config.php before proceeding.'; +$lang['mass_deleting'] = 'Tömeges törlés'; //'Mass Deleting'; +$lang['mass_delete_progress'] = 'A törlési művelet a(z) %s kiszolgálón'; //'Deletion progress on server "%s"'; +$lang['malformed_mass_delete_array'] = 'A tömeges törléshez megadott tömb formátuma helytelen'; //'Malformed mass_delete array.'; +$lang['no_entries_to_delete'] = 'Nem választotta ki a törlendÅ‘ bejegyzés(eke)t. '; //'You did not select any entries to delete.'; +$lang['deleting_dn'] = '%s törölve'; //'Deleting %s'; +$lang['total_entries_failed'] = '%s darab bejegyzés törlése nem sikerült a(z) %s darabból.'; //'%s of %s entries failed to be deleted.'; +$lang['all_entries_successful'] = 'Az összes bejegyzés törlése sikerült.'; //'All entries deleted successfully.'; +$lang['confirm_mass_delete'] = 'Hagyja jóvá a(z) %s bejegyzés tömeges törlését a(z) %s kiszolgálóról'; //'Confirm mass delete of %s entries on server %s'; +$lang['yes_delete'] = 'Igen, törlÅ‘djön'; //'Yes, delete!'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Nem nevezhet át olyan bejegyzést aminek gyermekei vannak (azaz az átnevezés művelete csak levél-bejegyzéseken megengedett)'; //'You cannot rename an entry which has children entries (eg, the rename operation is not allowed on non-leaf entries)'; +$lang['no_rdn_change'] = 'Nem változtatta meg az RDN-t'; //'You did not change the RDN'; +$lang['invalid_rdn'] = 'Érvénytelen RDN érték'; //'Invalid RDN value'; +$lang['could_not_rename'] = 'A bejegyzést nem sikerült átnevezni'; //'Could not rename the entry'; + +?> diff --git a/lang/it.php b/lang/it.php index f49d6f7..814eedf 100644 --- a/lang/it.php +++ b/lang/it.php @@ -1,4 +1,6 @@ ä¸éƒ½åˆã«ã‚ˆã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。ã‚ã‚‹ã„ã¯ã€ã‚ãªãŸã® LDAP サーãƒãƒ¼ã¯ã€LDAP クライアント㌠RootDSE ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã‚’防ãアクセス制御指定をã—ã¦ã„ã¾ã™ã€‚'; +$lang['server_info_for'] = 'Server info for: '; +$lang['server_reports_following'] = 'Server reports the following information about itself'; +$lang['nothing_to_report'] = 'ã“ã®ã‚µãƒ¼ãƒãƒ¼ã¯ãªã«ã‚‚報告ã™ã‚‹ã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“。'; + +//update.php +$lang['update_array_malformed'] = 'update_array ãŒã‚ªã‚«ã‚·ã‚¤ã§ã™ã€‚This might be a phpLDAPadmin bug. Please report it.'; +$lang['could_not_perform_ldap_modify'] = 'ldap_modify æ“作ãŒå®Ÿè¡Œã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'Do you want to make these changes?'; +$lang['attribute'] = '属性'; +$lang['old_value'] = 'å¤ã„値'; +$lang['new_value'] = 'æ–°ã—ã„値'; +$lang['attr_deleted'] = '[属性を削除ã—ã¾ã—ãŸ]'; +$lang['commit'] = 'コミット'; +$lang['cancel'] = 'å–り消ã—'; +$lang['you_made_no_changes'] = '変更ã¯ã‚ã‚Šã¾ã›ã‚“'; +$lang['go_back'] = 'Go back'; + +// welcome.php +$lang['welcome_note'] = 'å·¦ã¸ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’使用ã—ã¦æœæŸ»ã—ã¾ã™'; +$lang['credits'] = 'クレジット'; +$lang['changelog'] = '変更履歴'; +$lang['donate'] = '寄贈'; +$lang['pla_logo'] = 'phpLDAPadmin ロゴ'; + +// Donate.php +$lang['donation_instructions'] = 'phpLDAPadmin プロジェクトã«è³‡é‡‘を寄贈ã™ã‚‹ãŸã‚ã«ã¯ã€PayPal ボタンã®ã†ã¡ã® 1 ã¤ã‚’下ã«ä½¿ç”¨ã—ã¦ãã ã•ã„。'; +$lang['donate_amount'] = '%s を寄贈'; +$lang['wish_list_option'] = 'Or perhaps you would prefer to purchase an gift for a phpLDAPadmin developer.'; +$lang['wish_list'] = 'Dave\'s phpLDAPadmin ã®ã‚ã£ä¸»ãƒªã‚¹ãƒˆã‚’閲覧'; + +$lang['purge_cache'] = 'キャッシュ破棄'; +$lang['no_cache_to_purge'] = '破棄ã™ã‚‹ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã¯ã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚'; +$lang['done_purging_caches'] = '%s ãƒã‚¤ãƒˆã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’破棄ã—ã¾ã—ãŸã€‚'; +$lang['purge_cache_tooltip'] = 'サーãƒãƒ¼ã‚¹ã‚­ãƒ¼ãƒžã‚’å«ã‚€ã€phpLDAPadmin ã®ã™ã¹ã¦ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’破棄ã—ã¾ã—ãŸã€‚'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = '安全ã§ãªã„ファイルå: '; +$lang['no_such_file'] = 'ファイルãŒã‚ã‚Šã¾ã›ã‚“: '; + +//function.php +$lang['auto_update_not_setup'] = 'You have enabled auto_uid_numbers for %s in your configuration, + but you have not specified the auto_uid_number_mechanism. Please correct + this problem.'; +$lang['uidpool_not_set'] = 'You specified the "auto_uid_number_mechanism" as "uidpool" + in your configuration for server %s, but you did not specify the + audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; +$lang['uidpool_not_exist'] = 'It appears that the uidPool you specified in your configuration ("%s") + does not exist.'; +$lang['specified_uidpool'] = 'You specified the "auto_uid_number_mechanism" as "search" in your + configuration for server %s, but you did not specify the + "auto_uid_number_search_base". Please specify it before proceeding.'; +$lang['auto_uid_invalid_credential'] = 'Unable to bind to %s with your with auto_uid credentials. Please check your configuration file.'; +$lang['bad_auto_uid_search_base'] = 'Your phpLDAPadmin configuration specifies an invalid auto_uid_search_base for server %s'; +$lang['auto_uid_invalid_value'] = 'You specified an invalid value for auto_uid_number_mechanism ("%s") + in your configration. Only "uidpool" and "search" are valid. + Please correct this problem.'; +$lang['error_auth_type_config'] = 'Error: You have an error in your config file. The only three allowed values + for auth_type in the $servers section are \'session\', \'cookie\', and \'config\'. You entered \'%s\', + which is not allowed. '; +$lang['unique_attrs_invalid_credential'] = 'Unable to bind to %s with your with unique_attrs credentials. Please check your configuration file.'; +$lang['unique_attr_failed'] = 'Your attempt to add %s (%s) to
%s
is NOT allowed. That attribute/value belongs to another entry.

You might like to search for that entry.'; +$lang['php_install_not_supports_tls'] = 'インストールã•ã‚Œã¦ã„ã‚‹ PHP 㯠TLS をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。'; +$lang['could_not_start_tls'] = 'TLS を開始ã§ãã¾ã›ã‚“。LDAP サーãƒãƒ¼ã®è¨­å®šã‚’確èªã—ã¦ãã ã•ã„。'; +$lang['could_not_bind_anon'] = 'サーãƒãƒ¼ã«åŒ¿å接続ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; +$lang['could_not_bind'] = 'LDAP サーãƒãƒ¼ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; +$lang['anonymous_bind'] = '匿å接続'; +$lang['bad_user_name_or_password'] = 'ユーザーåã‹ãƒ‘スワードãŒãŠã‹ã—ã„ã§ã™ã€‚ã‚‚ã†ä¸€åº¦è¡Œã£ã¦ãã ã•ã„。'; +$lang['redirecting_click_if_nothing_happens'] = 'Redirecting... Click here if nothing happens.'; +$lang['successfully_logged_in_to_server'] = 'サーãƒãƒ¼ %sã¸ã®ãƒ­ã‚°ã‚¤ãƒ³ã«æˆåŠŸã—ã¾ã—ãŸ'; +$lang['could_not_set_cookie'] = 'cookie を設定ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; +$lang['ldap_said'] = 'LDAP 回答: %s'; +$lang['ferror_error'] = 'エラー'; +$lang['fbrowse'] = '閲覧'; +$lang['delete_photo'] = '写真削除'; +$lang['install_not_support_blowfish'] = 'インストールã•ã‚ŒãŸ PHP 㯠blowfish æš—å·åŒ–をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。'; +$lang['install_not_support_md5crypt'] = 'インストールã•ã‚ŒãŸ PHP 㯠md5crypt æš—å·åŒ–をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。'; +$lang['install_no_mash'] = 'インストールã•ã‚ŒãŸ PHP 㯠mhash() をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。SHA ãƒãƒƒã‚·ãƒ¥ã‚’ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。'; +$lang['jpeg_contains_errors'] = 'jpegPhoto contains errors
'; +$lang['ferror_number'] = 'エラー番å·: %s (%s)'; +$lang['ferror_discription'] = '説明: %s

'; +$lang['ferror_number_short'] = 'エラー番å·: %s

'; +$lang['ferror_discription_short'] = '説明: (利用å¯èƒ½ãªèª¬æ˜ŽãŒã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸ)
'; +$lang['ferror_submit_bug'] = 'ã“れ㯠phpLDAPadmin ã®ä¸éƒ½åˆã§ã™ã‹? ã‚‚ã—ãã†ãªã‚‰ 報告 ã—ã¦ãã ã•ã„。'; +$lang['ferror_unrecognized_num'] = '未承èªã®ã‚¨ãƒ©ãƒ¼ç•ªå·: '; +$lang['ferror_nonfatil_bug'] = '

+
+ 致命的ã§ãªã„ phpLDAPadmin ã®ä¸éƒ½åˆã‚’発見ã—ã¾ã—ãŸ!
エラー:%s (%s)
ファイル:%s 行 %s, caller %s
ãƒãƒ¼ã‚¸ãƒ§ãƒ³:PLA: %s, PHP: %s, SAPI: %s +
ウェブサーãƒãƒ¼:%s
+ ã“ã“をクリックã—ã¦å€‹ã®ä¸éƒ½åˆã‚’報告ã—ã¦ãã ã•ã„。.

'; +$lang['ferror_congrats_found_bug'] = 'ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™! phpLDAPadmin ã§ä¸éƒ½åˆã‚’発見ã—ã¾ã—ãŸã€‚

+ + + + + + + + + + +
エラー:%s
レベル:%s
ファイル:%s
行:%s
Caller:%s
PLA ãƒãƒ¼ã‚¸ãƒ§ãƒ³:%s
PHP ãƒãƒ¼ã‚¸ãƒ§ãƒ³:%s
PHP SAPI:%s
Web サーãƒãƒ¼:%s
+
+ 下記をクリックã—ã¦ã“ã®ä¸éƒ½åˆã‚’報告ã—ã¦ãã ã•ã„!'; + +//ldif_import_form +$lang['import_ldif_file_title'] = 'LDIF ファイルインãƒãƒ¼ãƒˆ'; +$lang['select_ldif_file'] = 'LDIF ファイルをé¸æŠž:'; +$lang['dont_stop_on_errors'] = 'Don\'t stop on errors'; + +//ldif_import +$lang['add_action'] = '追加中...'; +$lang['delete_action'] = '削除中...'; +$lang['rename_action'] = 'å称変更中...'; +$lang['modify_action'] = '修正中...'; +$lang['warning_no_ldif_version_found'] = 'ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。1 ã¨ä»®å®šã—ã¾ã™ã€‚'; +$lang['valid_dn_line_required'] = '有効㪠dn è¡ŒãŒå¿…è¦ã§ã™ã€‚'; +$lang['missing_uploaded_file'] = 'アップロードファイルãŒè¦‹å½“ãŸã‚Šã¾ã›ã‚“。'; +$lang['no_ldif_file_specified'] = 'LDIF ファイルãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。もã†ä¸€åº¦è¡Œã£ã¦ãã ã•ã„。'; +$lang['ldif_file_empty'] = 'アップロードã•ã‚ŒãŸ LDIF ファイルãŒç©ºã§ã™ã€‚'; +$lang['empty'] = '空'; +$lang['file'] = 'ファイル'; +$lang['number_bytes'] = '%s ãƒã‚¤ãƒˆ'; + +$lang['failed'] = '失敗ã—ã¾ã—ãŸ'; +$lang['ldif_parse_error'] = 'LDIF 解æžã‚¨ãƒ©ãƒ¼'; +$lang['ldif_could_not_add_object'] = 'オブジェクトを追加ã§ãã¾ã›ã‚“ã§ã—ãŸ:'; +$lang['ldif_could_not_rename_object'] = 'オブジェクトをå称変更ã§ãã¾ã›ã‚“ã§ã—ãŸ:'; +$lang['ldif_could_not_delete_object'] = 'オブジェクトを削除ã§ãã¾ã›ã‚“ã§ã—ãŸ:'; +$lang['ldif_could_not_modify_object'] = 'オブジェクトを修正ã§ãã¾ã›ã‚“ã§ã—ãŸ:'; +$lang['ldif_line_number'] = '行番å·:'; +$lang['ldif_line'] = 'è¡Œ:'; + +// Exports +$lang['export_format'] = 'エクスãƒãƒ¼ãƒˆæ›¸å¼'; +$lang['line_ends'] = 'Line ends'; +$lang['must_choose_export_format'] = 'エクスãƒãƒ¼ãƒˆæ›¸å¼ã‚’é¸ã°ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。'; +$lang['invalid_export_format'] = '無効ãªã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆæ›¸å¼'; +$lang['no_exporter_found'] = 'No available exporter found.'; +$lang['error_performing_search'] = '検索実行中ã«ã‚¨ãƒ©ãƒ¼ã«é­é‡ã—ã¾ã—ãŸã€‚'; +$lang['showing_results_x_through_y'] = 'Showing results %s through %s.'; +$lang['searching'] = '検索中...'; +$lang['size_limit_exceeded'] = '通知ã§ã™ã€‚検索サイズãŒåˆ¶é™ã‚’越ãˆã¾ã—ãŸã€‚'; +$lang['entry'] = 'エントリ'; +$lang['ldif_export_for_dn'] = 'LDIF エクスãƒãƒ¼ãƒˆ: %s'; +$lang['generated_on_date'] = 'Generated by phpLDAPadmin ( http://phpldapadmin.sourceforge.net/ ) on %s'; +$lang['total_entries'] = 'ç·ã‚¨ãƒ³ãƒˆãƒª'; +$lang['dsml_export_for_dn'] = 'DSLM エクスãƒãƒ¼ãƒˆ: %s'; +$lang['include_system_attrs'] = 'システム属性をå«ã‚€'; +$lang['csv_spreadsheet'] = 'CSV (スプレッドシート)'; + +// logins +$lang['could_not_find_user'] = 'ユーザー "%s" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“'; +$lang['password_blank'] = 'You left the password blank.'; +$lang['login_cancelled'] = 'ログインãŒå–り消ã•ã‚Œã¾ã—ãŸã€‚'; +$lang['no_one_logged_in'] = 'No one is logged in to that server.'; +$lang['could_not_logout'] = 'ログアウトã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; +$lang['unknown_auth_type'] = '未知㮠auth_type: %s'; +$lang['logged_out_successfully'] = 'サーãƒãƒ¼ %s ã‹ã‚‰ãƒ­ã‚°ã‚¢ã‚¦ãƒˆã«æˆåŠŸã—ã¾ã—ãŸ'; +$lang['authenticate_to_server'] = 'Authenticate to server %s'; +$lang['warning_this_web_connection_is_unencrypted'] = '警告: ã“ã®ã‚¦ã‚§ãƒ–接続ã¯æš—å·åŒ–ã•ã‚Œã¦ã„ã¾ã›ã‚“。'; +$lang['not_using_https'] = 'You are not using \'https\'. Web browser will transmit login information in clear text.'; +$lang['login_dn'] = 'ログイン DN'; +$lang['user_name'] = 'ユーザーå'; +$lang['password'] = 'パスワード'; +$lang['authenticate'] = 'Authenticate'; + +// Entry browser +$lang['entry_chooser_title'] = 'エントリé¸æŠž'; + +// Index page +$lang['need_to_configure'] = 'phpLDAPadmin ã®è¨­å®šã‚’å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ファイル \'config.php\' ã®å¤‰æ›´ã‚’ã—ã¦ãã ã•ã„。サンプル設定ファイルã¨ã—㦠\'config.php.example\' ã‚’æä¾›ã—ã¦ã„ã¾ã™ã€‚'; + +// Mass deletes +$lang['no_deletes_in_read_only'] = '読ã¿è¾¼ã¿å°‚用モードã§ã¯å‰Šé™¤ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。'; +$lang['error_calling_mass_delete'] = 'mass_delete.php 呼ã³å‡ºã—中ã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚POST 値ã‹ã‚‰ mass_delete ãŒè¦‹ã‹ã‚Šã¾ã›ã‚“。'; +$lang['mass_delete_not_array'] = 'mass_delete POST 辺りãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“。'; +$lang['mass_delete_not_enabled'] = '一括削除ãŒæœ‰åŠ¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“。次ã«é€²ã‚€å‰ã« config.php ã§ãれを有効ã«ã—ã¦ãã ã•ã„。'; +$lang['search_attrs_wrong_count'] = 'config.php ã«ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™ã€‚The number of attributes in $search_attributes and $search_attributes_display is different'; +$lang['mass_deleting'] = '一括削除中'; +$lang['mass_delete_progress'] = 'サーãƒãƒ¼ "%s" ã‹ã‚‰å‰Šé™¤ä¸­'; +$lang['malformed_mass_delete_array'] = 'ãŠã‹ã—ã„ mass_delete é…列ã§ã™ã€‚'; +$lang['no_entries_to_delete'] = '削除ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“。'; +$lang['deleting_dn'] = '%s 削除中'; +$lang['total_entries_failed'] = '%s 個ã®ã‚¨ãƒ³ãƒˆãƒªãŒ %s 個ã®ã‚¨ãƒ³ãƒˆãƒªä¸­ã§å‰Šé™¤ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; +$lang['all_entries_successful'] = 'ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã®å‰Šé™¤ã«æˆåŠŸã—ã¾ã—ãŸã€‚'; +$lang['confirm_mass_delete'] = '%s エントリをサーãƒãƒ¼ %s ã‹ã‚‰ä¸€æ‹¬å‰Šé™¤ã®ç¢ºèª'; +$lang['yes_delete'] = 'ã¯ã„, 削除ã—ã¾ã™!'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'å­ã‚¨ãƒ³ãƒˆãƒªã‚’æŒã¤ã‚¨ãƒ³ãƒˆãƒªã¯å称変更ã§ãã¾ã›ã‚“ (eg, the rename operation is not allowed on non-leaf entries)'; +$lang['no_rdn_change'] = 'RDN を変更ã—ã¾ã›ã‚“ã§ã—ãŸ'; +$lang['invalid_rdn'] = '無効㪠RDN 値'; +$lang['could_not_rename'] = 'エントリã®å称変更ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸ'; + +// General errors +$lang['php5_unsupported'] = 'phpLDAPadmin 㯠PHP 5 をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。You will likely encounter many weird problems if you continue.'; +$lang['mismatched_search_attr_config'] = '設定ã«ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™ã€‚$search_attributes must have the same number of attributes as $search_attributes_display.'; + +// Password checker +$lang['passwords_match'] = 'パスワードãŒä¸€è‡´ã—ã¾ã—ãŸ!'; +$lang['passwords_do_not_match'] = 'パスワードãŒä¸€è‡´ã—ã¾ã›ã‚“!'; +$lang['password_checker_tool'] = 'パスワードãƒã‚§ãƒƒã‚¯ãƒ„ール'; +$lang['compare'] = '比較'; +$lang['to'] = 'To'; + +?> diff --git a/lang/nl.php b/lang/nl.php index c040532..89d8a09 100644 --- a/lang/nl.php +++ b/lang/nl.php @@ -1,8 +1,10 @@ - * Uwe Ebel + * Vertaling door Richard Lucassen + * Commentaar gaarne naar bovenstaand adres sturen a.u.b. */ // Search form @@ -56,9 +58,9 @@ $lang['export_to_ldif'] = 'exporteren naar LDIF';//'Export to LDIF'; $lang['export_to_ldif_tooltip'] = 'maak LDIF dump van dit object';//'Save an LDIF dump of this object'; $lang['export_subtree_to_ldif_tooltip'] = 'maak LDIF dump van dit object plus alle onderliggende objecten';//'Save an LDIF dump of this object and all of its children'; $lang['export_subtree_to_ldif'] = 'exporteer deze subvelden naar LDIF';//'Export subtree to LDIF'; -$lang['export_to_ldif_mac'] = 'Macintosh regeleinden';//'Macintosh style line ends'; -$lang['export_to_ldif_win'] = 'Windows regeleinden';//'Windows style line ends'; -$lang['export_to_ldif_unix'] = 'Unix regeleinden';//'Unix style line ends'; +$lang['export_mac'] = 'Macintosh regeleinden';//'Macintosh style line ends'; +$lang['export_win'] = 'Windows regeleinden';//'Windows style line ends'; +$lang['export_unix'] = 'Unix regeleinden';//'Unix style line ends'; $lang['create_a_child_entry'] = 'subveld aanmaken';//'Create a child entry'; $lang['add_a_jpeg_photo'] = 'jpeg foto toevoegen';//'Add a jpegPhoto'; $lang['rename_entry'] = 'veld hernoemen';//'Rename Entry'; @@ -239,6 +241,7 @@ $lang['starts with'] = 'begint met';//'starts with'; $lang['contains'] = 'bevat';//'contains'; $lang['ends with'] = 'eindigt met';//'ends with'; $lang['sounds like'] = 'klinkt als';//'sounds like'; +$lang['predefined_search_str'] = 'of een van deze lijst uitlezen';//'or select a predefined search'; // server_info.php $lang['could_not_fetch_server_info'] = 'kan geen LDAP van de server krijgen';//'Could not retrieve LDAP information from the server'; @@ -326,4 +329,9 @@ $lang['ldif_could_not_modify_object'] = 'Kan object niet wijzigen'; $lang['ldif_line_number'] = 'regelnummer: '; $lang['ldif_line'] = 'regel: '; +$lang['credits'] = 'Credits';//'Credits'; +$lang['changelog'] = 'Changelog';//'ChangeLog'; +$lang['documentation'] = 'Documentatie';// 'Documentation'; + + ?> diff --git a/lang/pl.php b/lang/pl.php new file mode 100644 index 0000000..b40ef9e --- /dev/null +++ b/lang/pl.php @@ -0,0 +1,617 @@ + Czy na pewno chcesz to zrobiæ ?'; +$lang['confirm_recursive_delete_note'] = 'Uwaga: ta operacja jest potencjalnie bardzo niebezpieczna i wykonujesz j± na w³asne ryzyko. Ta akcja nie mo¿e zostaæ cofniêta. We¼ pod uwagê aliasy, owo³ania i inne rzeczy, które mog± spowodowaæ problemy.'; +$lang['delete_all_x_objects'] = 'Usuñ wszystkie %s obiekty/ów'; +$lang['recursive_delete_progress'] = 'Postêp rekursywnego usuwania'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'Wpis %s oraz poddrzewo zosta³y pomy¶lnie usuniête.'; +$lang['failed_to_delete_entry'] = 'B³±d podczas usuwania wpisu %s'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'Atrybut "%s" jest oznaczony jako tylko-do-odczytu w konfiguracji phpLDAPadmin.'; +$lang['no_attr_specified'] = 'Nie okre¶lono nazwy atrybutu.'; +$lang['no_dn_specified'] = 'Nie okre¶lono DN'; + +// Adding attributes +$lang['left_attr_blank'] = 'Pozostawi³e¶/a¶ pust± warto¶æ atrybutu. Proszê wróciæ i spróbowaæ ponownie.'; +$lang['failed_to_add_attr'] = 'B³±d podczas dodawania atrybutu.'; +$lang['file_empty'] = 'Wybrany plik jest pusty lub nie istnieje. Wróæ i spróbuj ponownie.'; +$lang['invalid_file'] = 'B³±d bezpieczeñstwa: Za³adowany plik mo¿e stanowiæ zagro¿enie.'; +$lang['warning_file_uploads_disabled'] = 'Twoja konfiguracja PHP uniemo¿liwia za³adowanie plików. Proszê sprawdziæ php.ini przed kontynuacj±.'; +$lang['uploaded_file_too_big'] = 'Za³adowany plik jest zbyt du¿y. Proszê sprawdziæ ustawienie upload_max_size w php.ini'; +$lang['uploaded_file_partial'] = 'Wybrany plik zosta³ tylko czê¶ciowo za³adowany, prawdopodobnie wyst±pi³ b³±d w sieci.'; +$lang['max_file_size'] = 'Maksymalny rozmiar pliku: %s'; + +// Updating values +$lang['modification_successful'] = 'Modyfikacja zakoñczona pomy¶lnie.'; +$lang['change_password_new_login'] = 'Je¶li zmieni³e¶/a¶ has³o, musisz siê zalogowaæ ponownie z nowym has³em.'; + +// Adding objectClass form +$lang['new_required_attrs'] = 'Nowe atrybuty wymagane'; +$lang['requires_to_add'] = 'Ta akcja wymaga, aby¶ doda³/a'; +$lang['new_attributes'] = 'nowe atrybuty'; +$lang['new_required_attrs_instructions'] = 'Instrukcja: Aby dodaæ tê klasê obiektu do tego wpisu, musisz okre¶liæ'; +$lang['that_this_oclass_requires'] = 'co ta klasa obiektu wymaga. Mo¿esz zrobiæ to w tym formularzu.'; +$lang['add_oclass_and_attrs'] = 'Dodaj klasê obiektu i atrybuty'; + +// General +$lang['chooser_link_tooltip'] = 'Kliknij aby wywo³aæ okno i wybraæ wpis (DN) graficznie'; +$lang['no_updates_in_read_only_mode'] = 'Nie mo¿esz wykonaæ modyfikacji dopóki serwer jest w trybie tylko-do-odczytu'; +$lang['bad_server_id'] = 'Z³y identyfikator (id) serwera'; +$lang['not_enough_login_info'] = 'Brak wystarczaj±cych informacji aby zalogowaæ siê do serwera. Proszê sprawdziæ konfiguracjê.'; +$lang['could_not_connect'] = 'Nie mo¿na pod³±czyæ siê do serwera LDAP.'; +$lang['could_not_connect_to_host_on_port'] = 'Nie mo¿na pod³±czyæ siê do "%s" na port "%s"'; +$lang['could_not_perform_ldap_mod_add'] = 'Nie mo¿na dokonaæ operacji ldap_mod_add.'; +$lang['bad_server_id_underline'] = 'Z³y server_id: '; +$lang['success'] = 'Sukces'; +$lang['server_colon_pare'] = 'Serwer: '; +$lang['look_in'] = 'Szukam w: '; +$lang['missing_server_id_in_query_string'] = 'Nie okre¶lono ID serwera w zapytaniu !'; +$lang['missing_dn_in_query_string'] = 'Nie okre¶lono DN w zapytaniu !'; +$lang['back_up_p'] = 'Do góry...'; +$lang['no_entries'] = 'brak wpisów'; +$lang['not_logged_in'] = 'Nie zalogowany/a'; +$lang['could_not_det_base_dn'] = 'Nie mo¿na okre¶liæ bazowego DN'; +$lang['please_report_this_as_a_bug']='Proszê zg³osiæ to jako b³±d.'; +$lang['reasons_for_error']='To mog³o zdarzyæ siê z kilku powodów, z których najbardziej prawdopodobne to:'; +$lang['yes']='Tak'; +$lang['no']='Nie'; +$lang['go']='Id¼'; +$lang['delete']='Usuñ'; +$lang['back']='Powrót'; +$lang['object']='obiekt'; +$lang['delete_all']='Usuñ wszystko'; +$lang['url_bug_report']='https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'wskazówka'; +$lang['bug'] = 'b³±d (bug)'; +$lang['warning'] = 'ostrze¿enie'; +$lang['light'] = '¿arówka'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Dalej >>'; + +// Add value form +$lang['add_new'] = 'Dodaj'; +$lang['value_to'] = 'warto¶æ do'; +$lang['distinguished_name'] = 'Wyró¿niona Nazwa (DN)'; +$lang['current_list_of'] = 'Aktualna lista'; +$lang['values_for_attribute'] = 'warto¶ci dla atrybutu'; +$lang['inappropriate_matching_note'] = 'Uwaga: Je¶li nie ustawisz regu³y EQUALITY dla tego atrybutu na Twoim serwerze LDAP otrzymasz b³±d "niew³a¶ciwe dopasowanie (inappropriate matching)"'; +$lang['enter_value_to_add'] = 'Wprowad¼ warto¶æ, któr± chcesz dodaæ:'; +$lang['new_required_attrs_note'] = 'Uwaga: mo¿e byæ wymagane wprowadzenie nowych atrybutów wymaganych przez tê klasê obiektu'; +$lang['syntax'] = 'Sk³adnia'; + +//copy.php +$lang['copy_server_read_only'] = 'Nie mo¿esz dokonaæ modyfikacji dopóki serwer jest w trybie tylko-do-odczytu'; +$lang['copy_dest_dn_blank'] = 'Nie wype³niono docelowej DN.'; +$lang['copy_dest_already_exists'] = 'Docelowy wpis (%s) ju¿ istnieje.'; +$lang['copy_dest_container_does_not_exist'] = 'Docelowy kontener (%s) nie istnieje.'; +$lang['copy_source_dest_dn_same'] = '¬ród³owa i docelowa DN s± takie same.'; +$lang['copy_copying'] = 'Kopiowanie '; +$lang['copy_recursive_copy_progress'] = 'Postêp kopiowania rekursywnego'; +$lang['copy_building_snapshot'] = 'Budowanie migawki (snapshot) drzewa do skopiowania... '; +$lang['copy_successful_like_to'] = 'Kopiowanie zakoñczone pomy¶lnie. Czy chcesz '; +$lang['copy_view_new_entry'] = 'zobaczyæ nowy wpis '; +$lang['copy_failed'] = 'B³±d podczas kopiowania DN: '; + +//edit.php +$lang['missing_template_file'] = 'Uwaga: brak pliku szablonu, '; +$lang['using_default'] = 'U¿ywam domy¶lnego.'; +$lang['template'] = 'Szablon'; +$lang['must_choose_template'] = 'Musisz wybraæ szablon'; +$lang['invalid_template'] = '%s nie jest prawid³owym szablonem'; +$lang['using_template'] = 'wykorzystuj±c szablon'; +$lang['go_to_dn'] = 'Id¼ do %s'; +$lang['structural_object_class_cannot_remove'] = 'To jest strukturalna klasa obiektu i nie mo¿e zostaæ usuniêta.'; +$lang['structural'] = 'strukturalna'; + +//copy_form.php +$lang['copyf_title_copy'] = 'Kopiuj '; +$lang['copyf_to_new_object'] = 'do nowego obiektu'; +$lang['copyf_dest_dn'] = 'Docelowa DN'; +$lang['copyf_dest_dn_tooltip'] = 'Pe³na DN nowego wpisu do utworzenia poprzez skopiowanie wpisu ¼ród³owego'; +$lang['copyf_dest_server'] = 'Docelowy serwer'; +$lang['copyf_note'] = 'Wskazówka: Kopiowanie pomiêdzy ró¿nymi serwerami dzia³a wtedy, gdy nie wystêpuje naruszenie schematów'; +$lang['copyf_recursive_copy'] = 'Rekursywne kopiowanie wszystkich potomnych obiektów'; +$lang['recursive_copy'] = 'Kopia rekursywna'; +$lang['filter'] = 'Filtr'; +$lang['filter_tooltip'] = 'Podczas rekursywnego kopiowania, kopiowane s± tylko wpisy pasuj±ce do filtra'; + +//create.php +$lang['create_required_attribute'] = 'Brak warto¶ci dla wymaganego atrybutu (%s).'; +$lang['redirecting'] = 'Przekierowujê'; +$lang['here'] = 'tutaj'; +$lang['create_could_not_add'] = 'Nie mo¿na dodaæ obiektu do serwera LDAP.'; + +//create_form.php +$lang['createf_create_object'] = 'Utwórz obiekt'; +$lang['createf_choose_temp'] = 'Wybierz szablon'; +$lang['createf_select_temp'] = 'Wybierz szablon dla procesu tworzenia'; +$lang['createf_proceed'] = 'Dalej'; +$lang['rdn_field_blank'] = 'Pozostawi³e¶/a¶ puste pole RDN.'; +$lang['container_does_not_exist'] = 'Kontener który okre¶li³e¶/a¶ (%s) nie istnieje. Spróbuj ponownie.'; +$lang['no_objectclasses_selected'] = 'Nie wybra³e¶/a¶ ¿adnych Klas Obiektu dla tego obiektu. Wróæ proszê i zrób to.'; +$lang['hint_structural_oclass'] = 'Wskazówka: Musisz wybraæ co najmniej jedn± strukturaln± klasê obiektu (wyró¿nion± pogrubieniem)'; + +//creation_template.php +$lang['ctemplate_on_server'] = 'Na serwerze'; +$lang['ctemplate_no_template'] = 'Brak okre¶lenia szablonu w zmiennych POST.'; +$lang['ctemplate_config_handler'] = 'Twoja konfiguracja okre¶la handler'; +$lang['ctemplate_handler_does_not_exist'] = 'dla tego szablonu. Ale, ten handler nie istnieje w szablonach/tworzonym katalogu'; +$lang['create_step1'] = 'Krok 1 z 2: Nazwa i klasa/y obiektu'; +$lang['create_step2'] = 'Krok 2 z 2: Okre¶lenie atrybutów i warto¶ci'; +$lang['relative_distinguished_name'] = 'Relatywna Wyró¿niona Nazwa (RDN)'; +$lang['rdn'] = 'RDN'; +$lang['rdn_example'] = '(przyk³ad: cn=MyNewPerson)'; +$lang['container'] = 'Kontener'; + +// search.php +$lang['you_have_not_logged_into_server'] = 'Nie zalogowa³e¶/a¶ siê jeszcze do wybranego serwera, wiêc nie mo¿esz go przeszukiwaæ.'; +$lang['click_to_go_to_login_form'] = 'Kliknij tutaj aby przej¶æ do formularza logowania'; +$lang['unrecognized_criteria_option'] = 'Nierozpoznane kryterium opcji: '; +$lang['if_you_want_to_add_criteria'] = 'Je¶li chcesz dodaæ w³asne kryteria do listy, zmodyfikuj plik search.php aby to obs³u¿yæ.'; +$lang['entries_found'] = 'Znaleziono wpisów: '; +$lang['filter_performed'] = 'Zastosowano filtr: '; +$lang['search_duration'] = 'Wyszukiwanie wykonane przez phpLDAPadmin w'; +$lang['seconds'] = 'sekund(y)'; + +// search_form_advanced.php +$lang['scope_in_which_to_search'] = 'Przeszukiwany zakres'; +$lang['scope_sub'] = 'Sub (ca³e poddrzewo)'; +$lang['scope_one'] = 'One (jeden poziom poni¿ej bazowej)'; +$lang['scope_base'] = 'Base (tylko bazowa dn)'; +$lang['standard_ldap_search_filter'] = 'Standardowy filtr dla LDAP. Na przyk³ad: (&(sn=Kowalski)(givenname=Jan))'; +$lang['search_filter'] = 'Filtr wyszukiwania'; +$lang['list_of_attrs_to_display_in_results'] = 'Lista atrybutów do wy¶wietlenia rezultatów (rozdzielona przecinkami)'; + +// search_form_simple.php +$lang['starts with'] = 'zaczyna siê od'; +$lang['ends with'] = 'koñczy siê na'; +$lang['sounds like'] = 'brzmi jak'; + +// server_info.php +$lang['could_not_fetch_server_info'] = 'Nie mo¿na uzyskaæ informacji od serwera LDAP'; +$lang['server_info_for'] = 'Informacja o serwerze: '; +$lang['server_reports_following'] = 'Serwer zwróci³ nastêpuj±ce informacje o sobie'; +$lang['nothing_to_report'] = 'Ten serwer nie chce nic powiedzieæ o sobie :).'; + +//update.php +$lang['update_array_malformed'] = 'tablica modyfikacji (update_array) jest zniekszta³cona. To mo¿e byæ b³±d (bug) w phpLDAPadmin. Proszê to zg³osiæ.'; +$lang['could_not_perform_ldap_modify'] = 'Nie mo¿na wykonaæ operacji modyfikacji (ldap_modify).'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'Czy chcesz dokonaæ tych zmian ?'; +$lang['attribute'] = 'Atrybuty'; +$lang['old_value'] = 'Stara warto¶æ'; +$lang['new_value'] = 'Nowa warto¶æ'; +$lang['attr_deleted'] = '[atrybut usuniêty]'; +$lang['commit'] = 'Zatwierd¼'; +$lang['cancel'] = 'Anuluj'; +$lang['you_made_no_changes'] = 'Nie dokonano ¿adnych zmian'; +$lang['go_back'] = 'Powrót'; + +// welcome.php +$lang['welcome_note'] = 'U¿yj menu z lewej strony do nawigacji'; +$lang['credits'] = 'Lista p³ac'; +$lang['changelog'] = 'Historia zmian'; +$lang['donate'] = 'Wesprzyj projekt'; +$lang['purge_cache'] = 'Wyczy¶æ pamiêæ podrêczn±'; +$lang['no_cache_to_purge'] = 'Nie ma czego czy¶ciæ.'; +$lang['done_purging_caches'] = 'Wyczyszczono %s bajtów pamiêci podrêcznej.'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = 'Niebezpieczna nazwa pliku: '; +$lang['no_such_file'] = 'Nie znaleziono pliku: '; + +//function.php +$lang['auto_update_not_setup'] = 'Zezwoli³e¶/a¶ na automatyczne nadawanie uid (auto_uid_numbers) + dla %s w konfiguracji, ale nie okre¶li³e¶/a¶ mechanizmu + (auto_uid_number_mechanism). Proszê skorygowaæ ten problem.'; +$lang['uidpool_not_set'] = 'Okre¶li³e¶/a¶ mechanizm autonumerowania uid "auto_uid_number_mechanism" jako "uidpool" w konfiguracji Twojego serwera %s, lecz nie okre¶li³e¶/a¶ audo_uid_number_uid_pool_dn. Proszê okre¶l to zanim przejdziesz dalej.'; +$lang['uidpool_not_exist'] = 'Wygl±da na to, ¿e uidPool, któr± okre¶li³e¶/a¶ w Twojej konfiguracji ("%s") nie istnieje.'; +$lang['specified_uidpool'] = 'Okre¶li³e¶/a¶ "auto_uid_number_mechanism" jako "search" w konfiguracji Twojego serwera %s, ale nie okre¶li³e¶/a¶ bazy "auto_uid_number_search_base". Zrób to zanim przejdziesz dalej.'; +$lang['auto_uid_invalid_credential'] = 'Nie mo¿na pod³±czyæ do %s z podan± to¿samo¶ci± auto_uid. Proszê sprawdziæ swój plik konfiguracyjny.'; +$lang['bad_auto_uid_search_base'] = 'W Twojej konfiguracji phpLDAPadmin okre¶lona jest nieprawid³owa warto¶æ auto_uid_search_base dla serwera %s'; +$lang['auto_uid_invalid_value'] = 'Okre¶li³e¶/a¶ b³êdn± warto¶æ dla auto_uid_number_mechanism ("%s") w konfiguracji. Tylko "uidpool" i "search" s± poprawne. Proszê skorygowaæ ten problem.'; +$lang['error_auth_type_config'] = 'B³±d: Masz b³±d w pliku konfiguracji. Trzy mo¿liwe warto¶ci dla auth_type w sekcji $servers to \'session\', \'cookie\' oraz \'config\'. Ty wpisa³e¶/a¶ \'%s\', co jest niedozwolone. '; +$lang['unique_attrs_invalid_credential'] = 'Nie mo¿na pod³±czyæ do %s z podan± to¿samo¶ci± unique_attrs. Proszê sprawdziæ swój plik konfiguracyjny.'; +$lang['unique_attr_failed'] = 'Próba dodania %s (%s) do
%s
jest NIEDOZWOLONA. Ten atrybut/warto¶æ nale¿y do innego wpisu.

Je¶li chcesz, mo¿esz poszukaæ tego wpisu.'; +$lang['php_install_not_supports_tls'] = 'Twoja instalacja PHP nie wspiera TLS.'; +$lang['could_not_start_tls'] = 'Nie mo¿na uruchomiæ TLS. Proszê sprawdziæ konfiguracjê serwera LDAP.'; +$lang['could_not_bind_anon'] = 'Nie mo¿na anonimowo pod³±czyæ do serwera.'; +$lang['could_not_bind'] = 'Nie mo¿na pod³±czyæ siê do serwera LDAP.'; +$lang['anonymous_bind'] = 'Pod³±czenie anonimowe'; +$lang['bad_user_name_or_password'] = 'Z³a nazwa u¿ytkownika lub has³o. Spróbuj ponownie.'; +$lang['redirecting_click_if_nothing_happens'] = 'Przekierowujê... Kliknij tutaj je¶li nic siê nie dzieje.'; +$lang['successfully_logged_in_to_server'] = 'Pomy¶lnie zalogowano do serwera %s'; +$lang['could_not_set_cookie'] = 'Nie mo¿na ustawiæ ciasteczka (cookie).'; +$lang['ldap_said'] = 'LDAP odpowiedzia³: %s'; +$lang['ferror_error'] = 'B³±d'; +$lang['fbrowse'] = 'przegl±daj'; +$lang['delete_photo'] = 'Usuñ fotografiê'; +$lang['install_not_support_blowfish'] = 'Twoja instalacja PHP nie wspiera szyfrowania blowfish.'; +$lang['install_not_support_md5crypt'] = 'Twoja instalacja PHP nie wspiera szyfrowania md5crypt.'; +$lang['install_no_mash'] = 'Twoja instalacja PHP nie posiada funkcji mhash(). Nie mogê tworzyæ haszy SHA.'; +$lang['jpeg_contains_errors'] = 'jpegPhoto zawiera b³êdy
'; +$lang['ferror_number'] = 'B³±d numer: %s (%s)'; +$lang['ferror_discription'] = 'Opis: %s

'; +$lang['ferror_number_short'] = 'B³±d numer: %s

'; +$lang['ferror_discription_short'] = 'Opis: (brak dostêpnego opisu)
'; +$lang['ferror_submit_bug'] = 'Czy jest to b³±d w phpLDAPadmin ? Je¶li tak, proszê go zg³osiæ.'; +$lang['ferror_unrecognized_num'] = 'Nierozpoznany numer b³êdu: '; +$lang['ferror_nonfatil_bug'] = '

+
+ Znalaz³e¶ b³±d w phpLDAPadmin (nie krytyczny) !
B³±d:%s (%s)
Plik:%s linia %s, wywo³ane z %s
Wersje:PLA: %s, PHP: %s, SAPI: %s +
Serwer Web:%s
+ Proszê zg³o¶ ten b³±d klikaj±c tutaj.

'; +$lang['ferror_congrats_found_bug'] = 'Gratulacje ! Znalaz³e¶ b³±d w phpLDAPadmin.

+ + + + + + + + + + +
B³±d:%s
Poziom:%s
Plik:%s
Linia:%s
Wywo³ane z:%s
Wersja PLA:%s
Wersja PHP:%s
PHP SAPI:%s
Serwer Web:%s
+
+ Proszê zg³o¶ ten b³±d klikaj±c poni¿ej !'; + +//ldif_import_form +$lang['import_ldif_file_title'] = 'Importuj plik LDIF'; +$lang['select_ldif_file'] = 'Wybierz plik LDIF:'; +$lang['select_ldif_file_proceed'] = 'Dalej >>'; +$lang['dont_stop_on_errors'] = 'Nie zatrzymuj siê po napotkaniu b³êdów'; + +//ldif_import +$lang['add_action'] = 'Dodawanie...'; +$lang['delete_action'] = 'Usuwanie...'; +$lang['rename_action'] = 'Zmiana nazwy...'; +$lang['modify_action'] = 'Modyfikowanie...'; +$lang['warning_no_ldif_version_found'] = 'Nie znaleziono numeru wersji. Przyjmujê 1.'; +$lang['valid_dn_line_required'] = 'Wymagana jest poprawna linia DN.'; +$lang['missing_uploaded_file'] = 'Brak wgrywanego pliku.'; +$lang['no_ldif_file_specified.'] = 'Nie okre¶lono pliku LDIF. Spróbuj ponownie.'; +$lang['ldif_file_empty'] = 'Wgrany plik LDIF jest pusty.'; +$lang['empty'] = 'pusty'; +$lang['file'] = 'Plik'; +$lang['number_bytes'] = '%s bajtów'; + +$lang['failed'] = 'Nieudane'; +$lang['ldif_parse_error'] = 'B³±d przetwarzania LDIF (Parse Error)'; +$lang['ldif_could_not_add_object'] = 'Nie mo¿na dodaæ obiektu:'; +$lang['ldif_could_not_rename_object'] = 'Nie mo¿na zmieniæ nazwy obiektu:'; +$lang['ldif_could_not_delete_object'] = 'Nie mo¿na usun±æ obiektu:'; +$lang['ldif_could_not_modify_object'] = 'Nie mo¿na zmodyfikowaæ obiektu:'; +$lang['ldif_line_number'] = 'Linia numer:'; +$lang['ldif_line'] = 'Linia:'; + +//delete_form +$lang['sure_permanent_delete_object']='Czy na pewno trwale usun±æ ten obiekt ?'; +$lang['list_of_entries_to_be_deleted'] = 'Lista wpisów do usuniêcia:'; +$lang['dn'] = 'DN'; + +// Exports +$lang['export_format'] = 'Format eksportu'; +$lang['line_ends'] = 'Zakoñczenie linii'; +$lang['must_choose_export_format'] = 'Musisz wybraæ format eksportu.'; +$lang['invalid_export_format'] = 'B³êdny format eksportu'; +$lang['no_exporter_found'] = 'Nie znaleziono dostêpnego eksportera.'; +$lang['error_performing_search'] = 'Napotkano b³±d podczas szukania.'; +$lang['showing_results_x_through_y'] = 'Pokazywanie rezultatów %s przez %s.'; +$lang['searching'] = 'Szukam...'; +$lang['size_limit_exceeded'] = 'Uwaga, przekroczono limit rozmiaru wyszukiwania.'; +$lang['entry'] = 'Wpis'; +$lang['ldif_export_for_dn'] = 'Eksport LDIF dla: %s'; +$lang['generated_on_date'] = 'Wygenerowane przez phpLDAPadmin ( http://phpldapadmin.sourceforge.net/ ) na %s'; +$lang['total_entries'] = '£±cznie wpisów'; +$lang['dsml_export_for_dn'] = 'Eksport DSLM dla: %s'; +$lang['include_system_attrs'] = 'Zawiera atrybuty systemowe'; + +// logins +$lang['could_not_find_user'] = 'Nie mo¿na znale¼æ u¿ytkownika "%s"'; +$lang['password_blank'] = 'Pozostawi³e¶/a¶ puste has³o.'; +$lang['login_cancelled'] = 'Logowanie anulowane.'; +$lang['no_one_logged_in'] = 'Nikt nie jest zalogowany do tego serwera.'; +$lang['could_not_logout'] = 'Nie mo¿na wylogowaæ.'; +$lang['unknown_auth_type'] = 'Nieznany auth_type: %s'; +$lang['logged_out_successfully'] = 'Pomy¶lnie wylogowano z serwera %s'; +$lang['authenticate_to_server'] = 'Uwierzytelnienie dla serwera %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Uwaga: To po³±czenie nie jest szyfrowane.'; +$lang['not_using_https'] = 'Nie u¿ywasz \'https\'. Przegl±darka bêdzie transmitowaæ informacjê logowania czystym tekstem (clear text).'; +$lang['login_dn'] = 'Login DN'; +$lang['user_name'] = 'Nazwa u¿ytkownika'; +$lang['password'] = 'Has³o'; +$lang['authenticate'] = 'Zaloguj'; + +// Entry browser +$lang['entry_chooser_title'] = 'Wybór wpisu'; + +// Index page +$lang['need_to_configure'] = 'Musisz skonfigurowaæ phpLDAPadmin. Wyedytuj plik \'config.php\' aby to zrobiæ. Przyk³ad pliku konfiguracji znajduje siê w \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Usuwanie jest niedozwolone w trybie tylko-do-odczytu.'; +$lang['error_calling_mass_delete'] = 'B³±d podczas wywo³ania mass_delete.php. Brakuj±ca mass_delete w zmiennych POST.'; +$lang['mass_delete_not_array'] = 'zmienna POST mass_delete nie jest w tablic±.'; +$lang['mass_delete_not_enabled'] = 'Masowe usuwanie nie jest dozwolone. Odblokuj to proszê w config.php przed kontynuacj±.'; +$lang['search_attrs_wrong_count'] = 'Twój config.php zawiera b³±d. Ilo¶æ atrybutów w $search_attributes i$search_attributes_display jest ró¿na'; +$lang['mass_deleting'] = 'Masowe usuwanie'; +$lang['mass_delete_progress'] = 'Postêp usuwania na serwerze "%s"'; +$lang['malformed_mass_delete_array'] = 'Zniekszta³cona tablica mass_delete.'; +$lang['no_entries_to_delete'] = 'Nie wybrano ¿adnegych wpisów do usuniêcia.'; +$lang['deleting_dn'] = 'Usuwanie %s'; +$lang['total_entries_failed'] = '%s z %s wpisów nie zosta³o usuniêtych.'; +$lang['all_entries_successful'] = 'Wszystkie wpisy pomy¶lnie usunieto.'; +$lang['confirm_mass_delete'] = 'Potwierd¼ masowe usuniêcie %s wpisów na serwerze %s'; +$lang['yes_delete'] = 'Tak, usuñ !'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Nie mo¿esz zmieniæ nazwy wpisu, posiadaj±cego wpisy potomne (np. operacja zmiany nazwy nie jest dozwolona na wpisach nie bêd±cych li¶cmi).'; +$lang['no_rdn_change'] = 'Nie zmieni³e¶/a¶ RDN'; +$lang['invalid_rdn'] = 'B³êdna warto¶æ RDN'; +$lang['could_not_rename'] = 'Nie mo¿na zmieniæ nazwy wpisu'; + +// Templates +$lang['using'] = 'U¿ywaj±c'; +$lang['template'] = 'szablonu'; +$lang['switch_to'] = 'Mo¿esz prze³±czyæ siê do '; +$lang['default_template'] = 'domy¶lnego szablonu'; + +// template_config +$lang['user_account'] = 'Konto U¿ytkownika (posixAccount)'; +$lang['address_book'] = 'Wpis Ksi±¿ki Adresowej (inetOrgPerson)'; +$lang['kolab_user'] = 'Wpis U¿ytkownika Kolab'; +$lang['organizational_unit'] = 'Jednostka Organizacyjna'; +$lang['organizational_role'] = 'Rola w Organizacji'; +$lang['posix_group'] = 'Grupa Posix'; +$lang['samba_machine'] = 'Maszyna Samba NT'; +$lang['samba3_machine'] = 'Maszyna Samba 3 NT'; +$lang['samba_user'] = 'U¿ytkownik Samba'; +$lang['samba3_user'] = 'U¿ytkownik Samba 3'; +$lang['samba3_group'] = 'Przypisanie grupy Samba 3'; +$lang['dns_entry'] = 'Wpis DNS'; +$lang['simple_sec_object'] = 'Prosty obiekt bezpieczeñstwa (SSO)'; +$lang['courier_mail_account'] = 'Konto Pocztowe w Courier'; +$lang['courier_mail_alias'] = 'Alias Pocztowy w Courier'; +$lang['ldap_alias'] = 'Alias w LDAP'; +$lang['custom'] = 'Ogólne'; +$lang['samba_domain_name'] = 'Moja nazwa domeny w Samba'; +$lang['administrators'] = 'Administratorzy'; +$lang['users'] = 'U¿ytkownicy'; +$lang['guests'] = 'Go¶cie'; +$lang['power_users'] = 'U¿ytkownicy zaawansowani'; +$lang['account_ops'] = 'Operatorzy kont'; +$lang['server_ops'] = 'Operatorzy serwera'; +$lang['print_ops'] = 'Operatorzy drukowania'; +$lang['backup_ops'] = 'Operatorzy archiwizacji danych'; +$lang['replicator'] = 'Replikator'; +$lang['unable_smb_passwords'] = ' Nie mo¿na utworzyæ hase³ Samba. Proszê sprawdziæ konfiguracjê w template_config.php'; + +// Samba Account Template +$lang['samba_account'] = 'Konto Samba'; +$lang['samba_account_lcase'] = 'konto samba'; + +// New User (Posix) Account +$lang['t_new_user_account'] = 'Nowe konto u¿ytkownika'; +$lang['t_hint_customize'] = 'Wskazówka: Aby dostosowaæ ten szablon, wyedytuj plik templates/creation/new_user_template.php'; +$lang['t_name'] = 'Nazwa/Nazwisko'; +$lang['t_first_name'] = 'Imiê'; +$lang['t_last_name'] = 'Nazwisko'; +$lang['t_common_name'] = 'Nazwa'; +$lang['t_user_name'] = 'Nazwa u¿ytkownika'; +$lang['t_password'] = 'Has³o'; +$lang['t_encryption'] = 'Szyfrowanie'; +$lang['t_login_shell'] = 'Pow³oka (shell)'; +$lang['t_home_dir'] = 'Katalog domowy'; +$lang['t_uid_number'] = 'Numer UID'; +$lang['t_auto_det'] = '(automatycznie okre¶lony)'; +$lang['t_group'] = 'Grupa'; +$lang['t_gid_number'] = 'Numer GID'; +$lang['t_err_passwords'] = 'Has³a nie zgadzaj± siê. Wróc i spróbuj ponownie.'; +$lang['t_err_field_blank'] = 'Nie mo¿esz pozostawiæ pustego pola %s. Wróæ i spróbuj ponownie.'; +$lang['t_err_field_num'] = 'Pole %s mo¿e zawieraæ tylko warto¶ci numeryczne. Wróæ i spróbuj ponownie.'; +$lang['t_err_bad_container'] = 'Kontener który wybra³e¶/a¶ (%s) nie istnieje. Wróæ i spróbuj ponownie.'; +$lang['t_confirm_account_creation'] = 'Potwierd¼ utworzenie konta'; +$lang['t_secret'] = '[tajne]'; +$lang['t_create_account'] = 'Utwórz konto'; + +// New Address Template +$lang['t_new_address'] = 'Nowy wpis w Ksi±¿ce Adresowej'; +$lang['t_organization'] = 'Organizacja'; +$lang['t_address'] = 'Adres'; +$lang['t_city'] = 'Miasto'; +$lang['t_postal_code'] = 'Kod pocztowy'; +$lang['t_street'] = 'Ulica'; +$lang['t_work_phone'] = 'Telefon s³u¿bowy'; +$lang['t_fax'] = 'Fax'; +$lang['t_mobile'] = 'Telefon komórkowy'; +$lang['t_email'] = 'E-mail'; +$lang['t_container'] = 'Kontener'; +$lang['t_err_cn_blank'] = 'Nie mo¿esz pozostawiæ pustego pola Nazwa. Wróæ i spróbuj ponownie.'; +$lang['t_confim_creation'] = 'Potwierd¼ utworzenie wpisu:'; +$lang['t_create_address'] = 'Utwórz adres'; + +?> diff --git a/lang/pt-br.php b/lang/pt-br.php new file mode 100644 index 0000000..f89b128 --- /dev/null +++ b/lang/pt-br.php @@ -0,0 +1,516 @@ +To delete an attribute, empty the text field and click save.'; +$lang['attr_schema_hint'] = 'Dica: Para ver o esquema de um atributo clique no nome do atributo.';//'Hint: To view the schema for an attribute, click the attribute name.'; +$lang['attrs_modified'] = 'Alguns atributos (%s) foram modificados e estão destacados abaixo.';//'Some attributes (%s) were modified and are highlighted below.'; +$lang['attr_modified'] = 'Um atributo (%s) foi modificado e está destacado abaixo';//'An attribute (%s) was modified and is highlighted below.'; +$lang['viewing_read_only'] = 'Vizualizando objeto em modo somente-leitura.';//'Viewing entry in read-only mode.'; +$lang['no_new_attrs_available'] = 'novos atributos não disponíveis para este objeto.';//'no new attributes available for this entry'; +$lang['no_new_binary_attrs_available'] = 'novos atributos binários não disponíveis para este objeto.';//'no new binary attributes available for this entry'; +$lang['binary_value'] = 'Valor binário';//'Binary value'; +$lang['add_new_binary_attr'] = 'Inserir novo atributo binário';//'Add New Binary Attribute'; +$lang['alias_for'] = 'Nota: \'%s\' é um alias para \'%s\'';//'Note: \'%s\' is an alias for \'%s\''; +$lang['download_value'] = 'download do valor';//'download value'; +$lang['delete_attribute'] = 'apagar atributo';//'delete attribute'; +$lang['true'] = 'verdadeiro';//'true'; +$lang['false'] = 'falso';//'false'; +$lang['none_remove_value'] = 'nenhum, remover valor';//?? //'none, remove value'; +$lang['really_delete_attribute'] = 'Deseja realmente apagar atributo';//'Really delete attribute'; +$lang['add_new_value'] = 'Inserir novo valor';//'Add New Value'; + +// Schema browser +$lang['the_following_objectclasses'] = 'As seguintes Classes de objetos são suportadas por este servidor LDAP.';//'The following objectClasses are supported by this LDAP server.'; +$lang['the_following_attributes'] = 'Os seguintes tipos de atributos são suportadas por este servidor LDAP.';//'The following attributeTypes are supported by this LDAP server.'; +$lang['the_following_matching'] = 'As seguintes regras de consistência são suportadas por este servidor LDAP.';//'The following matching rules are supported by this LDAP server.'; +$lang['the_following_syntaxes'] = 'As seguintes sintaxes são suportadas por este servidor LDAP.';//'The following syntaxes are supported by this LDAP server.'; +$lang['schema_retrieve_error_1']='O servidor não suporta o protocolo LDAP completamente.';//'The server does not fully support the LDAP protocol.'; +$lang['schema_retrieve_error_2']='Sua versão do PHP não executa a consulta corretamente.';//'Your version of PHP does not correctly perform the query.'; +$lang['schema_retrieve_error_3']='Ou, por fim, o phpLDAPadmin não sabe como buscar o esquema para o seu servidor.';//'Or lastly, phpLDAPadmin doesn\'t know how to fetch the schema for your server.'; +$lang['jump_to_objectclass'] = 'Ir para uma classe de objetos';//'Jump to an objectClass'; +$lang['jump_to_attr'] = 'Ir para um tipo de atributo';//'Jump to an attribute'; +$lang['jump_to_matching_rule'] = 'Ir para regras de consistência';//'Jump to a matching rule'; +$lang['schema_for_server'] = 'Esquema para servidor';//'Schema for server'; +$lang['required_attrs'] = 'Atributos Obrigatórios';//'Required Attributes'; +$lang['optional_attrs'] = 'Atributos Opcionais';//'Optional Attributes'; +$lang['optional_binary_attrs'] = 'Atributos Binários Opcionais';//'Optional Binary Attributes'; +$lang['OID'] = 'OID';//'OID'; +$lang['aliases']='Apelidos';//'Aliases'; +$lang['desc'] = 'Descrição';//'Description'; +$lang['no_description']='sem descrição';//'no description'; +$lang['name'] = 'Nome';//'Name'; +$lang['equality']='Igualdade';//'Equality'; +$lang['is_obsolete'] = 'Esta classe de objeto está obsoleta.';//'This objectClass is obsolete'; +$lang['inherits'] = 'Herda de';//'Inherits'; +$lang['inherited_from']='Herdado de';//inherited from'; +$lang['parent_to'] = 'Pai para';//'Parent to'; +$lang['jump_to_this_oclass'] = 'Ir para definição desta classe de objeto';//'Jump to this objectClass definition'; +$lang['matching_rule_oid'] = 'OID da Regra de consistência';//'Matching Rule OID'; +$lang['syntax_oid'] = 'OID da Sintaxe';//'Syntax OID'; +$lang['not_applicable'] = 'não aplicável';//'not applicable'; +$lang['not_specified'] = 'não especificado';//not specified'; +$lang['character']='caracter';//'character'; +$lang['characters']='caracteres';//'characters'; +$lang['used_by_objectclasses']='Usado por classes de objetos';//'Used by objectClasses'; +$lang['used_by_attributes']='Usado por Atributos';//'Used by Attributes'; +$lang['oid']='OID'; +$lang['obsolete']='Obsoleto';//'Obsolete'; +$lang['ordering']='Ordenando';//'Ordering'; +$lang['substring_rule']='Regra de substring';//'Substring Rule'; +$lang['single_valued']='Avaliado sozinho';//'Single Valued'; +$lang['collective']='Coletivo';//'Collective'; +$lang['user_modification']='Alteração do usuário';//'User Modification'; +$lang['usage']='Uso';//'Usage'; +$lang['maximum_length']='Tamanho Máximo';//'Maximum Length'; +$lang['attributes']='Tipos de Atriburos';//'Attributes Types'; +$lang['syntaxes']='Sintaxes';//'Syntaxes'; +$lang['objectclasses']='Classe de Objetos';//'objectClasses'; +$lang['matchingrules']='Regra de consistência';//'Matching Rules'; +$lang['could_not_retrieve_schema_from']='Não foi possível encontrar esquema de';//'Could not retrieve schema from'; +$lang['type']='Tipo';// 'Type'; + +// Deleting entries +$lang['entry_deleted_successfully'] = 'Objeto \'%s\' excluído com sucesso.';//'Entry \'%s\' deleted successfully.'; +$lang['you_must_specify_a_dn'] = 'Você deve especificar um DN';//'You must specify a DN'; +$lang['could_not_delete_entry'] = 'Não foi possível excluir o objeto: %s';//'Could not delete the entry: %s'; +$lang['no_such_entry'] = 'Objeto inexistente: %s';//'No such entry: %s'; +$lang['delete_dn'] = 'Excluir %s';//'Delete %s'; +$lang['entry_is_root_sub_tree'] = 'Este objeto é a raiz de uma sub-árvore e contém %s objetos.';//'This entry is the root of a sub-tree containing %s entries.'; +$lang['view_entries'] = 'Ver objetos';//'view entries'; +$lang['confirm_recursive_delete'] = 'o phpLDAPadmin pode excluir recursivamente este objeto e todos %s filhos. Veja abaixo uma lista de todos os objetos que esta ação vai excluir. Deseja fazer isso?';//'phpLDAPadmin can recursively delete this entry and all %s of its children. See below for a list of all the entries that this action will delete. Do you want to do this?'; +$lang['confirm_recursive_delete_note'] = 'Nota: isto é potencialmente muito perigoso, faça isso por sua conta e risco. Esta operação não pode ser desfeita. Leve em consideração apelidos, referências e outras coisas que podem causar problemas.';//'Note: this is potentially very dangerous and you do this at your own risk. This operation cannot be undone. Take into consideration aliases, referrals, and other things that may cause problems.'; +$lang['delete_all_x_objects'] = 'Excluir todos os %s objetos';//'Delete all %s objects'; +$lang['recursive_delete_progress'] = 'Progresso de exclusão recursiva';//'Recursive delete progress'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'Objeto %s e sub-árvore excluído com sucesso.';// 'Entry %s and sub-tree deleted successfully.'; +$lang['failed_to_delete_entry'] = 'Falha ao excluir objeto %s';//'Failed to delete entry %s'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'O atributo %s está marcado como somente leitura na configuração do phpLDAPadmin.';//'The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'; +$lang['no_attr_specified'] = 'Nome de atributo não especificado.';//'No attribute name specified.'; +$lang['no_dn_specified'] = 'DN não especificado';//'No DN specified'; + +// Adding attributes +$lang['left_attr_blank'] = 'Você deixou o valor do atributo vazio. Por favor retorne e tente novamente.';//'You left the attribute value blank. Please go back and try again.'; +$lang['failed_to_add_attr'] = 'Falha ao inserir o atributo.';//'Failed to add the attribute.'; +$lang['file_empty'] = 'O arquivo que você escolheu está vazio ou não existe. Por favor retorne e tente novamente.';//'The file you chose is either empty or does not exist. Please go back and try again.'; +$lang['invalid_file'] = 'Erro de segurança: O arquivo que está sendo carregado pode ser malicioso.';//'Security error: The file being uploaded may be malicious.'; +$lang['warning_file_uploads_disabled'] = 'Sua configuração do PHP desabilitou o upload de arquivos. Por favor verifique o php.ini antes de continuar.';//'Your PHP configuration has disabled file uploads. Please check php.ini before proceeding.'; +$lang['uploaded_file_too_big'] = 'O arquivo que você carregou é muito grande. Por favor verifique a configuração do upload_max_size no php.ini';//'The file you uploaded is too large. Please check php.ini, upload_max_size setting'; +$lang['uploaded_file_partial'] = 'O arquivo que você selecionou foi carregado parcialmente, provavelmente por causa de um erro de rede.';//'The file you selected was only partially uploaded, likley due to a network error.'; +$lang['max_file_size'] = 'Tamanho máximo de arquivo: %s';//'Maximum file size: %s'; + +// Updating values +$lang['modification_successful'] = 'Alteração bem sucedida!';//'Modification successful!'; +$lang['change_password_new_login'] = 'Você alterou sua senha, você deve conectar novamente com a sua nova senha.'; //'Since you changed your password, you must now login again with your new password.'; + + +// Adding objectClass form +$lang['new_required_attrs'] = 'Novos Atributos Obrigatórios';//'New Required Attributes'; +$lang['requires_to_add'] = 'Esta ação requer que você insira';//'This action requires you to add'; +$lang['new_attributes'] = 'novos atributos';//'new attributes'; +$lang['new_required_attrs_instructions'] = 'Instruções: Para poder inserir esta Classe de Objetos a este objeto, você deve especificar';//'Instructions: In order to add this objectClass to this entry, you must specify'; +$lang['that_this_oclass_requires'] = 'que esta Classe de Objetos requer. Você pode fazê-lo no formulário abaixo:';//'that this objectClass requires. You can do so in this form.'; +$lang['add_oclass_and_attrs'] = 'Inserir Classe de Objetos e Atributos';//'Add ObjectClass and Attributes'; + +// General +$lang['chooser_link_tooltip'] = 'Clique para abrir uma janela e selecionar um objeto (DN) graficamente';//"Click to popup a dialog to select an entry (DN) graphically'; +$lang['no_updates_in_read_only_mode'] = 'Você não pode realizar atualizações enquanto o servidor estiver em modo somente leitura';//'You cannot perform updates while server is in read-only mode'; +$lang['bad_server_id'] = 'ID do servidor inválido';//'Bad server id'; +$lang['not_enough_login_info'] = 'Informações insuficientes para a conexão com o servidor. Por favor verifique sua configuração.';//'Not enough information to login to server. Please check your configuration.'; +$lang['could_not_connect'] = 'Não foi possível conectar com o servidor LDAP.';//'Could not connect to LDAP server.'; +$lang['could_not_connect_to_host_on_port'] = 'Não foi possível conectar em "%s" na porta "%s"';//'Could not connect to "%s" on port "%s"'; +$lang['could_not_perform_ldap_mod_add'] = 'Não foi possível executar operação ldap_mod_add.';//'Could not perform ldap_mod_add operation.'; +$lang['bad_server_id_underline'] = 'server_id inválido: ';//"Bad server_id: '; +$lang['success'] = 'Sucesso';//"Success'; +$lang['server_colon_pare'] = 'Servidor: ';//"Server: '; +$lang['look_in'] = 'Procurando em: ';//"Looking in: '; +$lang['missing_server_id_in_query_string'] = 'ID do servidor não especificado na consulta!';//'No server ID specified in query string!'; +$lang['missing_dn_in_query_string'] = 'DN não especificado na consulta!';//'No DN specified in query string!'; +$lang['back_up_p'] = 'Backup...';//"Back Up...'; +$lang['no_entries'] = 'nenhum objeto';//"no entries'; +$lang['not_logged_in'] = 'Não conectado';//"Not logged in'; +$lang['could_not_det_base_dn'] = 'Não foi possível determinar a base DN';//"Could not determine base DN'; +$lang['reasons_for_error']='Isso pode ter acontecido por vários motivos, os mais provável são:';//'This could happen for several reasons, the most probable of which are:'; +$lang['please_report_this_as_a_bug']='Por favor informe isso como bug.';//'Please report this as a bug.'; +$lang['yes']='Sim';//'Yes' +$lang['no']='Não';//'No' +$lang['go']='Ir';//'go' +$lang['delete']='Excluir';//'Delete'; +$lang['back']='Voltar';//'Back'; +$lang['object']='objeto';//'object'; +$lang['delete_all']='Excluir tudo';//'Delete all'; +$lang['url_bug_report']='https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'dica';//'hint'; +$lang['bug'] = 'bug';//'bug'; +$lang['warning'] = 'aviso';//'warning'; +$lang['light'] = 'a palavra "light" de "light bulb"'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Continuar >>';//'Proceed >>'; + + +// Add value form +$lang['add_new'] = 'Inserir novo';//'Add new'; +$lang['value_to'] = 'valor para';//'value to'; +//also used in copy_form.php +$lang['distinguished_name'] = 'Nome Distinto';// 'Distinguished Name'; +$lang['current_list_of'] = 'Lista atual de';//'Current list of'; +$lang['values_for_attribute'] = 'valores para atributo';//'values for attribute'; +$lang['inappropriate_matching_note'] = 'Nota: Você vai receber um erro de "inappropriate matching" se você não configurar uma regra de IGUALDADE no seu servidor LDAP para este atributo.'; //'Note: You will get an "inappropriate matching" error if you have not
setup an EQUALITY rule on your LDAP server for this attribute.'; +$lang['enter_value_to_add'] = 'Entre com o valor que você quer inserir: ';//'Enter the value you would like to add:'; +$lang['new_required_attrs_note'] = 'Nota: talvez seja solicitado que você entre com os atributos necessários para esta classe de objetos';//'Note: you may be required to enter new attributes
that this objectClass requires.'; +$lang['syntax'] = 'Sintaxe';//'Syntax'; + +//Copy.php +$lang['copy_server_read_only'] = 'Você não pode realizar atualizações enquanto o servidor estiver em modo somente leitura';//"You cannot perform updates while server is in read-only mode'; +$lang['copy_dest_dn_blank'] = 'Você deixou o DN de destino vazio.';//"You left the destination DN blank.'; +$lang['copy_dest_already_exists'] = 'O objeto de destino (%s) já existe.';//"The destination entry (%s) already exists.'; +$lang['copy_dest_container_does_not_exist'] = 'O container de destino (%s) não existe.';//'The destination container (%s) does not exist.'; +$lang['copy_source_dest_dn_same'] = 'O DN de origem e destino são o mesmo.';//"The source and destination DN are the same.'; +$lang['copy_copying'] = 'Copiando ';//"Copying '; +$lang['copy_recursive_copy_progress'] = 'Progresso da cópia recursiva';//"Recursive copy progress'; +$lang['copy_building_snapshot'] = 'Construindo a imagem da árvore a ser copiada...';//"Building snapshot of tree to copy... '; +$lang['copy_successful_like_to'] = 'Copiado com sucesso! Você gostaria de ';//"Copy successful! Would you like to '; +$lang['copy_view_new_entry'] = 'ver o novo objeto';//"view the new entry'; +$lang['copy_failed'] = 'Falha ao copiar DN: ';//'Failed to copy DN: '; + + +//edit.php +$lang['missing_template_file'] = 'Aviso: arquivo modelo faltando, ';//'Warning: missing template file, '; +$lang['using_default'] = 'Usando o padrão.';//'Using default.'; +$lang['template'] = 'Modelo';//'Template'; +$lang['must_choose_template'] = 'Você deve escolher um modelo';//'You must choose a template'; +$lang['invalid_template'] = '%s é um modelo inválido';// '%s is an invalid template'; +$lang['using_template'] = 'usando o modelo';//'using template'; +$lang['go_to_dn'] = 'Ir para %s';//'Go to %s'; + +//copy_form.php +$lang['copyf_title_copy'] = 'Copiar ';//"Copy '; +$lang['copyf_to_new_object'] = 'para um novo objeto';//"to a new object'; +$lang['copyf_dest_dn'] = 'DN de destino';//"Destination DN'; +$lang['copyf_dest_dn_tooltip'] = 'O DN completo do novo objeto que será criado a partir da cópia da origem';//'The full DN of the new entry to be created when copying the source entry'; +$lang['copyf_dest_server'] = 'Servidor de destino';//"Destination Server'; +$lang['copyf_note'] = 'Dica: Copiando entre diferentes servidores somente funciona se não houver violação de esquema';//"Note: Copying between different servers only works if there are no schema violations'; +$lang['copyf_recursive_copy'] = 'Copia recursivamente todos filhos deste objeto também.';//"Recursively copy all children of this object as well.'; +$lang['recursive_copy'] = 'Cópia Recursiva';//'Recursive copy'; +$lang['filter'] = 'Filtro';//'Filter'; +$lang['filter_tooltip'] = 'Quando executar uma cópia recursiva, copiar somente os objetos que atendem a este filtro';// 'When performing a recursive copy, only copy those entries which match this filter'; + + +//create.php +$lang['create_required_attribute'] = 'Você deixou vazio o valor de um atributo obrigatório (%s).';//"Error, you left the value blank for required attribute '; +$lang['redirecting'] = 'Redirecionando...';//"Redirecting'; moved from create_redirection -> redirection +$lang['here'] = 'aqui';//"here'; renamed vom create_here -> here +$lang['create_could_not_add'] = 'Não foi possível inserir o objeto no servidor LDAP.';//"Could not add the object to the LDAP server.'; + +//create_form.php +$lang['createf_create_object'] = 'Criar Objeto';//"Create Object'; +$lang['createf_choose_temp'] = 'Escolher um modelo';//"Choose a template'; +$lang['createf_select_temp'] = 'Selecionar um modelo para o processo de criação';//"Select a template for the creation process'; +$lang['createf_proceed'] = 'Prosseguir';//"Proceed >>'; +$lang['rdn_field_blank'] = 'Você deixou o campo RDN vazio.';//'You left the RDN field blank.'; +$lang['container_does_not_exist'] = 'O container que você especificou (%s) não existe. Por favor tente novamente.';// 'The container you specified (%s) does not exist. Please try again.'; +$lang['no_objectclasses_selected'] = 'Você não selecionou nenhuma Classe de Objetos para este objeto. Por favor volte e faça isso.';//'You did not select any ObjectClasses for this object. Please go back and do so.'; +$lang['hint_structural_oclass'] = 'Dica: Você deve escolher pelo menos uma Classe de Objetos estrutural';//'Hint: You must choose at least one structural objectClass'; + +//creation_template.php +$lang['ctemplate_on_server'] = 'No servidor';//"On server'; +$lang['ctemplate_no_template'] = 'Nenhum modelo especificado.';//"No template specified in POST variables.'; +$lang['ctemplate_config_handler'] = 'Seu arquivo de configuração determina que o modelo';//"Your config specifies a handler of'; +$lang['ctemplate_handler_does_not_exist'] = 'é válido. Porém este modelo não existe no diretório "templates/creation".';//"for this template. But, this handler does not exist in the 'templates/creation' directory.'; +$lang['create_step1'] = 'Passo 1 de 2: Nome e Classe(s) de Objetos';//'Step 1 of 2: Name and ObjectClass(es)'; +$lang['create_step2'] = 'Passo 2 de 2: Especifica atributos e valores';//'Step 2 of 2: Specify attributes and values'; +$lang['relative_distinguished_name'] = 'Nome Distinto Relativo';//'Relative Distinguished Name'; +$lang['rdn'] = 'RDN';//'RDN'; +$lang['rdn_example'] = 'exemplo: cn=MinhaNovaPessoa';//'(example: cn=MyNewPerson)'; +$lang['container'] = 'Container';//'Container'; + + +// search.php +$lang['you_have_not_logged_into_server'] = 'Você não conectou no servidor selecionado ainda, assim, você não pode realizar buscas nele.';//'You have not logged into the selected server yet, so you cannot perform searches on it.'; +$lang['click_to_go_to_login_form'] = 'Clique aqui para conectar-se ao servidor';//'Click here to go to the login form'; +$lang['unrecognized_criteria_option'] = 'Critério desconhecido: ';// 'Unrecognized criteria option: '; +$lang['if_you_want_to_add_criteria'] = 'Se você quer inserir seus próprios critérios à lista. Certifique-se de editar o search.php para tratá-los. Saindo.';//'If you want to add your own criteria to the list. Be sure to edit search.php to handle them. Quitting.'; +$lang['entries_found'] = 'Objetos encontrados: ';//'Entries found: '; +$lang['filter_performed'] = 'Filtro aplicado: ';//'Filter performed: '; +$lang['search_duration'] = 'Busca realizada pelo phpLDAPadmin em';//'Search performed by phpLDAPadmin in'; +$lang['seconds'] = 'segundos';//'seconds'; + +// search_form_advanced.php +$lang['scope_in_which_to_search'] = 'O escopo no qual procurar';//'The scope in which to search'; +$lang['scope_sub'] = 'Sub (toda a sub-árvore)';//'Sub (entire subtree)'; +$lang['scope_one'] = 'One (um nível de profundidade)';//'One (one level beneath base)'; +$lang['scope_base'] = 'Base (apenas a base dn)';//'Base (base dn only)'; +$lang['standard_ldap_search_filter'] = 'Filtro de busca LDAP padrão. Exemplo: (&(sn=Silva)(givenname=Pedro))';//'Standard LDAP search filter. Example: (&(sn=Smith)(givenname=David))'; +$lang['search_filter'] = 'Filtro de Busca';//'Search Filter'; +$lang['list_of_attrs_to_display_in_results'] = 'A lista de atributos que devem ser mostrados nos resultados (separados por vírgula)';//'A list of attributes to display in the results (comma-separated)'; + +// search_form_simple.php +$lang['starts with'] = 'inicia com';//'starts with'; +$lang['ends with'] = 'termina com';//'ends with'; +$lang['sounds like'] = 'é semelhante a';//'sounds like'; + + +// server_info.php +$lang['could_not_fetch_server_info'] = 'Não foi possível obter informação LDAP do servidor';//'Could not retrieve LDAP information from the server'; +$lang['server_info_for'] = 'Informações do servidor: ';//'Server info for: '; +$lang['server_reports_following'] = 'O servidor forneceu a seguinte informação sobre si mesmo';//'Server reports the following information about itself'; +$lang['nothing_to_report'] = 'Este servidor não tem nada a informar';//'This server has nothing to report.'; + +//update.php +$lang['update_array_malformed'] = 'update_array danificado. Isto pode ser um bug do phpLDAPadmin. Por favor informe.';//'update_array is malformed. This might be a phpLDAPadmin bug. Please report it.'; +$lang['could_not_perform_ldap_modify'] = 'Não foi possível realizar a operação ldap_modify.';//'Could not perform ldap_modify operation.'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'Você confirma estas alterações?';//'Do you want to make these changes?'; +$lang['attribute'] = 'Atributo';//'Attribute'; +$lang['old_value'] = 'Valor Antigo';//'Old Value'; +$lang['new_value'] = 'Valor Novo';//'New Value'; +$lang['attr_deleted'] = '[atributo excluído]';//'[attribute deleted]'; +$lang['commit'] = 'Confirmar';//'Commit'; +$lang['cancel'] = 'Cancelar';//'Cancel'; +$lang['you_made_no_changes'] = 'Você não fez alterações';//'You made no changes'; +$lang['go_back'] = 'Voltar';//'Go back'; + +// welcome.php +$lang['welcome_note'] = 'Use o menu à esquerda para navegar';//'Use the menu to the left to navigate'; +$lang['credits'] = 'Créditos';//'Credits'; +$lang['changelog'] = 'Log de Alterações';//'ChangeLog'; +$lang['donate'] = 'Contribuir';//'Donate'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = 'Nome de arquivo inseguro: ';//'Unsafe file name: '; +$lang['no_such_file'] = 'Arquivo inexistente: ';//'No such file: '; + +//function.php +$lang['auto_update_not_setup'] = 'Você habilitou auto_uid_numbers para %s na sua configuração, mas você não especificou auto_uid_number_mechanism. Por favor corrija este problema.';//"You have enabled auto_uid_numbers for %s in your configuration, but you have not specified the auto_uid_number_mechanism. Please correct this problem.'; +$lang['uidpool_not_set'] = 'Você especificou o "auto_uid_number_mechanism" como "uidpool" na sua configuração para o servidor %s, mas você não especificou o audo_uid_number_uid_pool_dn. Por favor especifique-o antes de continuar.';//"You specified the auto_uid_number_mechanism as uidpool in your configuration for server %s, but you did not specify the audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; +$lang['uidpool_not_exist'] = 'Parece que o uidPool que você especificou na sua configuração (%s) não existe.';//"It appears that the uidPool you specified in your configuration (%s) does not exist.'; +$lang['specified_uidpool'] = 'Você especificou o "auto_uid_number_mechanism" como "busca" na sua configuração para o servidor %s, mas você não especificou o "auto_uid_number_search_base". Por favor especifique-o antes de continuar.';//"You specified the auto_uid_number_mechanism as search in your configuration for server %s, but you did not specify the auto_uid_number_search_base. Please specify it before proceeding.'; +$lang['auto_uid_invalid_credential'] = 'Problema ao conectar ao %s com as suas credenciais auto_uid. Por favor verifique seu arquivo de configuração.';// 'Unable to bind to %s with your with auto_uid credentials. Please check your configuration file.'; +$lang['bad_auto_uid_search_base'] = 'Sua configuração do phpLDAPadmin especifica que o auto_uid_search_base é inválido para o servidor %s';//'Your phpLDAPadmin configuration specifies an invalid auto_uid_search_base for server %s'; +$lang['auto_uid_invalid_value'] = 'Você especificou um valor inválido para auto_uid_number_mechanism ("%s") na sua configuração. Somente "uidpool" e "busca" são válidos. Por favor corrija este problema.';//"You specified an invalid value for auto_uid_number_mechanism (%s) in your configration. Only uidpool and search are valid. Please correct this problem.'; + +$lang['error_auth_type_config'] = 'Erro: Você tem um erro no seu arquivo de configuração. Os dois únicos valores permitidos para auth_type na seção $servers são \'config\' e \'form\'. Você entrou \'%s\', que não é permitido.';//"Error: You have an error in your config file. The only two allowed values for 'auth_type' in the $servers section are 'config' and 'form'. You entered '%s', which is not allowed. '; + +$lang['php_install_not_supports_tls'] = 'Sua instalação do PHP não suporta TLS';//"Your PHP install does not support TLS'; +$lang['could_not_start_tls'] = 'Impossível iniciar TLS. Por favor verifique a configuração do servidor LDAP.';//"Could not start TLS.
Please check your LDAP server configuration.'; +$lang['could_not_bind_anon'] = 'Não foi possível conectar ao servidor anonimamente.';//'Could not bind anonymously to server.'; +$lang['could_not_bind'] = 'Não foi possível conectar ao servidor LDAP.';//'Could not bind to the LDAP server.'; +$lang['anonymous_bind'] = 'Conexão anônima';//'Anonymous Bind'; +$lang['bad_user_name_or_password'] = 'Usuário ou senha inválido. Por favor tente novamente.';//'Bad username or password. Please try again.'; +$lang['redirecting_click_if_nothing_happens'] = 'Redirecionando... Clique aqui se nada acontecer.';//'Redirecting... Click here if nothing happens.'; +$lang['successfully_logged_in_to_server'] = 'Conexão estabelecida com sucesso no sevidor %s';//'Successfully logged into server %s'; +$lang['could_not_set_cookie'] = 'Não foi possível criar o cookie.';//'Could not set cookie.'; +$lang['ldap_said'] = 'O servidor LDAP respondeu: %s';//"LDAP said: %s

'; +$lang['ferror_error'] = 'Erro';//"Error'; +$lang['fbrowse'] = 'procurar';//"browse'; +$lang['delete_photo'] = 'Excluir imagem';//"Delete Photo'; +$lang['install_not_support_blowfish'] = 'Sua instalação do PHP não suporta codificação blowfish.';//"Your PHP install does not support blowfish encryption.'; +$lang['install_not_support_md5crypt'] = 'Sua instalação do PHP não suporta codificação md5crypt.';//'Your PHP install does not support md5crypt encryption.'; +$lang['install_no_mash'] = 'Sua instalação do PHP não tem a função mhash(). Impossível fazer transformações SHA.';// "Your PHP install does not have the mhash() function. Cannot do SHA hashes.'; +$lang['jpeg_contains_errors'] = 'Foto jpeg contém erros
';//"jpegPhoto contains errors
'; +$lang['ferror_number'] = 'Erro número: %s (%s)';//"Error number: %s (%s)

'; +$lang['ferror_discription'] ='Descrição: %s

';// "Description: %s

'; +$lang['ferror_number_short'] = 'Erro número: %s

';//"Error number: %s

'; +$lang['ferror_discription_short'] = 'Descrição: (descrição não disponível
';//"Description: (no description available)
'; +$lang['ferror_submit_bug'] = 'Isto é um bug do phpLDAPadmin? Se for, por favor informe.';//"Is this a phpLDAPadmin bug? If so, please report it.'; +$lang['ferror_unrecognized_num'] = 'Número do erro desconhecido: ';//"Unrecognized error number: '; + +$lang['ferror_nonfatil_bug'] = '
Você encontrou um bug não-fatal no phpLDAPadmin!
Erro:%s (%s)
Arquivo:%s linha %s, solicitante %s
Versão:PLA: %s, PHP: %s, SAPI: %s
Servidor Web:%s
Por favor informe este bug clicando aqui.

';//"
You found a non-fatal phpLDAPadmin bug!
Error:%s (%s)
File:%s line %s, caller %s
Versions:PLA: %s, PHP: %s, SAPI: %s
Web server:%s
Please report this bug by clicking here.

'; + +$lang['ferror_congrats_found_bug'] = 'Parabéns! Você encontrou um bug no phpLDAPadmin.

Erro:%s
Nível:%s
Arquivo:%s
Linha:%s
Caller:%s
PLA Vers&atile;o:%s
PHP Vers&atile;o:%s
PHP SAPI:%s
Servidor Web:%s

Por favor informe o bug clicando abaixo!';//"Congratulations! You found a bug in phpLDAPadmin.

Error:%s
Level:%s
File:%s
Line:%s
Caller:%s
PLA Version:%s
PHP Version:%s
PHP SAPI:%s
Web server:%s

Please report this bug by clicking below!'; + +//ldif_import_form +$lang['import_ldif_file_title'] = 'Importar arquivo LDIF';//'Import LDIF File'; +$lang['select_ldif_file'] = 'Selecionar um arquivo LDIF';//'Select an LDIF file:'; +$lang['select_ldif_file_proceed'] = 'Continuar >>';//'Proceed >>'; +$lang['dont_stop_on_errors'] = 'Não parar quando der erro';//'Don\'t stop on errors'; + +//ldif_import +$lang['add_action'] = 'Inserindo...';//'Adding...'; +$lang['delete_action'] = 'Deletando...';//'Deleting...'; +$lang['rename_action'] = 'Renomeando...';//'Renaming...'; +$lang['modify_action'] = 'Alterando...';//'Modifying...'; +$lang['warning_no_ldif_version_found'] = 'Nenhuma versão encontrada. Assumindo 1.';//'No version found. Assuming 1.'; +$lang['valid_dn_line_required'] = 'Uma linha dn válida é obrigatória.';//'A valid dn line is required.'; +$lang['missing_uploaded_file'] = 'Arquivo carregado perdido.';//'Missing uploaded file.'; +$lang['no_ldif_file_specified.'] = 'Nenhum arquivo LDIF especificado. Por favor tente novamente.';//'No LDIF file specified. Please try again.'; +$lang['ldif_file_empty'] = 'Arquivo LDIF carregado está vazio.';// 'Uploaded LDIF file is empty.'; +$lang['empty'] = 'vazio';//'empty'; +$lang['file'] = 'Arquivo';//'File'; +$lang['number_bytes'] = '%s bytes';//'%s bytes'; + +$lang['failed'] = 'Falhou';//'failed'; +$lang['ldif_parse_error'] = 'Erro Analisando Arquivo LDIF';//'LDIF Parse Error'; +$lang['ldif_could_not_add_object'] = 'Não foi possível inserir objeto:';//'Could not add object:'; +$lang['ldif_could_not_rename_object'] = 'Não foi possível renomear objeto:';//'Could not rename object:'; +$lang['ldif_could_not_delete_object'] = 'Não foi possível excluir objeto:';//'Could not delete object:'; +$lang['ldif_could_not_modify_object'] = 'Não foi possível alterar objeto:';//'Could not modify object:'; +$lang['ldif_line_number'] = 'Linha Número:';//'Line Number:'; +$lang['ldif_line'] = 'Linha:';//'Line:'; + +//delete_form +$lang['sure_permanent_delete_object']='Você tem certeza que deseja excluir este objeto permanentemente?';//'Are you sure you want to permanently delete this object?'; +$lang['permanently_delete_children']='Exluir permanentemente todos os objetos filho também?';//'Permanently delete all children also?'; + +$lang['list_of_entries_to_be_deleted'] = 'Lista de objetos a serem deletados: ';//'List of entries to be deleted:'; +$lang['dn'] = 'DN'; //'DN'; + +// Exports +$lang['export_format'] = 'Formato para exportar';// 'Export format'; +$lang['line_ends'] = 'Fins de linha'; //'Line ends'; +$lang['must_choose_export_format'] = 'Você deve especificar um formato para exportar';//'You must choose an export format.'; +$lang['invalid_export_format'] = 'Formato para exportação inválido';//'Invalid export format'; +$lang['no_exporter_found'] = 'Nenhum exportador de arquivos encontrado.';//'No available exporter found.'; +$lang['error_performing_search'] = 'Erro encontrado enquanto fazia a pesquisa.';//'Encountered an error while performing search.'; +$lang['showing_results_x_through_y'] = 'Mostrando resultados %s através %s.';//'Showing results %s through %s.'; +$lang['searching'] = 'Pesquisando...';//'Searching...'; +$lang['size_limit_exceeded'] = 'Aviso, limite da pesquisa excedido.';//'Notice, search size limit exceeded.'; +$lang['entry'] = 'Objeto';//'Entry'; +$lang['ldif_export_for_dn'] = 'Exportação LDIF para: %s'; //'LDIF Export for: %s'; +$lang['generated_on_date'] = 'Gerado pelo phpLDAPadmin no %s';//'Generated by phpLDAPadmin on %s'; +$lang['total_entries'] = 'Total de objetos';//'Total Entries'; +$lang['dsml_export_for_dn'] = 'Exportação DSLM para: %s';//'DSLM Export for: %s'; + +// logins +$lang['could_not_find_user'] = 'Não foi possível encontrar o usuário "%s"';//'Could not find a user "%s"'; +$lang['password_blank'] = 'Você deixou a senha vazia.';//'You left the password blank.'; +$lang['login_cancelled'] = 'Login cancelado.';//'Login cancelled.'; +$lang['no_one_logged_in'] = 'Ninguém está conectado neste servidor.';//'No one is logged in to that server.'; +$lang['could_not_logout'] = 'Não foi possível desconectar.';//'Could not logout.'; +$lang['unknown_auth_type'] = 'auth_type desconhecido: %s';//'Unknown auth_type: %s'; +$lang['logged_out_successfully'] = 'Desconectado com sucesso do servidor %s';//'Logged out successfully from server %s'; +$lang['authenticate_to_server'] = 'Autenticar no servidor %s';//'Authenticate to server %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Aviso: Esta conexão NÃO é criptografada.';//'Warning: This web connection is unencrypted.'; +$lang['not_using_https'] = 'Você não está usando \'https\'. O navegador internet vai transmitir as informações de login sem criptografar.';// 'You are not use \'https\'. Web browser will transmit login information in clear text.'; +$lang['login_dn'] = 'Login DN';//'Login DN'; +$lang['user_name'] = 'Nome de usuário';//'User name'; +$lang['password'] = 'Senha';//'Password'; +$lang['authenticate'] = 'Autenticar';//'Authenticate'; + +// Entry browser +$lang['entry_chooser_title'] = 'Selecionador de objeto';//'Entry Chooser'; + +// Index page +$lang['need_to_configure'] = 'Você deve configurar o phpLDAPadmin. Faça isso editando o arquivo \'config.php\'. Um arquivo de exemplo é fornecido em \'config.php.example\'';// ';//'You need to configure phpLDAPadmin. Edit the file \'config.php\' to do so. An example config file is provided in \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Exclusões não permitidas no modo somente leitura.';//'Deletes not allowed in read only mode.'; +$lang['error_calling_mass_delete'] = 'Erro chamando mass_delete.php. Faltando mass_delete nas variáveis POST.';//'Error calling mass_delete.php. Missing mass_delete in POST vars.'; +$lang['mass_delete_not_array'] = 'a variável POST mass_delete não é um conjunto';//'mass_delete POST var is not an array.'; +$lang['mass_delete_not_enabled'] = 'Exclusão em massa não habilitada. Por favor habilite-a no arquivo config.php antes de continuar';//'Mass deletion is not enabled. Please enable it in config.php before proceeding.'; +$lang['mass_deleting'] = 'Exclusão em massa';//'Mass Deleting'; +$lang['mass_delete_progress'] = 'Progresso da exclusão no servidor "%s"';//'Deletion progress on server "%s"'; +$lang['malformed_mass_delete_array'] = 'Conjunto mass_delete danificado.';//'Malformed mass_delete array.'; +$lang['no_entries_to_delete'] = 'Você não selecionou nenhum objeto para excluir';//'You did not select any entries to delete.'; +$lang['deleting_dn'] = 'Excluindo %s';//'Deleting %s'; +$lang['total_entries_failed'] = '%s de %s objetos falharam na exclusão.';//'%s of %s entries failed to be deleted.'; +$lang['all_entries_successful'] = 'Todos objetos foram excluídos com sucesso.';//'All entries deleted successfully.'; +$lang['confirm_mass_delete'] = 'Confirme exclusão em massa de %s objetos no servidor %s';//'Confirm mass delete of %s entries on server %s'; +$lang['yes_delete'] = 'Sim, excluir!';//'Yes, delete!'; + + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Você não pode renomear um objeto que tem objetos filhos (isto é, a operação de renomear não é permitida em objetos não-folha)';// 'You cannot rename an entry which has children entries (eg, the rename operation is not allowed on non-leaf entries)'; +$lang['no_rdn_change'] = 'Você não alterou o RDN';//'You did not change the RDN'; +$lang['invalid_rdn'] = 'Valor RDN inválido';//'Invalid RDN value'; +$lang['could_not_rename'] = 'Não foi possível renomear o objeto';//'Could not rename the entry'; + + +?> diff --git a/lang/recoded/auto.php b/lang/recoded/auto.php index 8acdb9d..fdf60ca 100644 --- a/lang/recoded/auto.php +++ b/lang/recoded/auto.php @@ -1,25 +1,35 @@ "ct" // catalan is this right? shouldn't it be ca? - ," ct-"=>"ct" // +$langSupport=array(" ca "=>"ca" // catalan + ," ca-"=>"ca" // ," de "=>"de" // german ," de-"=>"de" // for de-at, de-ch... ," German "=>"de" // the browser Moz (1.5)submit German instead of de ," en "=>"en" // englisch ," en-"=>"en" // for en-us,en-gb,en-ca,.. + ," es "=>"es" // spainish + ," es-"=>"es" // es-cr, es-co,.... ," fr "=>"fr" // french ," fr-"=>"fr" // fr-lu,fr-ca,... ," it "=>"it" // italien ," it-"=>"it" // for it-ch (italien swiss).. + ," ja "=>"ja" // japanese ," nl "=>"nl" // dutch - ," nl-"=>"nl" // for ne-be, only one? + ," nl-"=>"nl" // for ne-be, only one? + ," pl "=>"pl" // polish + ," pl-"=>"pl" // maybe exist + ," pt "=>"pt-br" // brazilian portuguese + ," pt-br"=>"pt-br" // brazilian portuguese ," ru "=>"ru" // russian ," ru-"=>"ru" // ru- exits? + ," sv "=>"sv" //swedish + ," sv-"=>"sv" // swedisch to );// all supported languages in this array // test @@ -37,4 +47,6 @@ foreach ($langSupport as $key=>$value) { } //echo "used:$useLang\n"; include realpath ("$useLang".".php");// this should include from recode/ position +$language=$useLang; +//echo "language:".$langugage; ?> diff --git a/lang/recoded/ca.php b/lang/recoded/ca.php index 881faa7..0eb41a5 100644 --- a/lang/recoded/ca.php +++ b/lang/recoded/ca.php @@ -1,7 +1,9 @@ + + * --- INSTRUCTIONS FOR TRANSLATORS --- + * + * If you want to write a new language file for your language, + * please submit the file on SourceForge: + * + * https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498548 + * + * Use the option "Check to Upload and Attach a File" at the bottom + * + * Thank you! + * + */ + +// Search form +$lang['simple_search_form_str'] = 'Rychlé vyhledávání'; +$lang['advanced_search_form_str'] = 'Rozšířené vyhledávání'; +$lang['server'] = 'Server'; +$lang['search_for_entries_whose'] = 'Vyhledat objekty kde'; +$lang['base_dn'] = 'Výchozí DN'; +$lang['search_scope'] = 'Oblast prohledávání'; +$lang['show_attributes'] = 'Zobrazovat atributy'; +$lang['Search'] = 'Vyhledat'; +$lang['predefined_search_str'] = 'Zvolte pÅ™eddefinované vyhledávání'; +$lang['predefined_searches'] = 'PÅ™eddefinovaná vyhledávání'; +$lang['no_predefined_queries'] = 'V config.php nejsou definovány žádné dotazy.'; + +// Tree browser +$lang['request_new_feature'] = 'NapiÅ¡te si o novou funkci'; +$lang['report_bug'] = 'Nahlásit chybu'; +$lang['schema'] = 'schéma'; +$lang['search'] = 'vyhledat'; +$lang['create'] = 'vytvoÅ™it'; +$lang['info'] = 'info'; +$lang['import'] = 'import'; +$lang['refresh'] = 'obnovit'; +$lang['logout'] = 'odhlásit se'; +$lang['create_new'] = 'VytvoÅ™it nový'; +$lang['view_schema_for'] = 'Zobrazit schéma pro'; +$lang['refresh_expanded_containers'] = 'Obnovit vÅ¡echny otevÅ™ené složky'; +$lang['create_new_entry_on'] = 'VytvoÅ™it nový objekt v'; +$lang['new'] = 'nový'; +$lang['view_server_info'] = 'Zobrazit serverem poskytované informace'; +$lang['import_from_ldif'] = 'Importovat data ze souboru LDIF'; +$lang['logout_of_this_server'] = 'Odhlásit se od tohoto serveru'; +$lang['logged_in_as'] = 'PÅ™ihlášen jako: '; +$lang['read_only'] = 'jen pro Ätení'; +$lang['read_only_tooltip'] = 'Tento atribut byl administrátorem phpLDAPadminu oznaÄen jako "jen pro Ätení".'; +$lang['could_not_determine_root'] = 'NepodaÅ™ilo se zjistit koÅ™en VaÅ¡eho LDAP stromu.'; +$lang['ldap_refuses_to_give_root'] = 'Zdá se, že LDAP server je nastavený tak, že nezobrazuje svůj koÅ™en.'; +$lang['please_specify_in_config'] = 'Nastavte ho prosím v souboru config.php'; +$lang['create_new_entry_in'] = 'VytvoÅ™it nový objekt v'; +$lang['login_link'] = 'PÅ™ihlásit se...'; +$lang['login'] = 'pÅ™ihlásit'; + +// Entry display +$lang['delete_this_entry'] = 'Smazat tento objekt'; +$lang['delete_this_entry_tooltip'] = 'Budete požádáni o potvrzení tohoto rozhodnutí'; +$lang['copy_this_entry'] = 'Kopírovat tento objekt'; +$lang['copy_this_entry_tooltip'] = 'Okopíruje tento objekt do jiného umístÄ›ní, nového DN, nebo na jiný server'; +$lang['export'] = 'Export'; +$lang['export_tooltip'] = 'Uložit pÅ™epis objektu'; +$lang['export_subtree_tooltip'] = 'Uloží pÅ™epis tohoto objektu a vÅ¡ech jeho potomků'; +$lang['export_subtree'] = 'Exportovat podstrom'; +$lang['create_a_child_entry'] = 'VytvoÅ™it nového potomka'; +$lang['rename_entry'] = 'PÅ™ejmenovat objekt'; +$lang['rename'] = 'PÅ™ejmenovat'; +$lang['add'] = 'PÅ™idat'; +$lang['view'] = 'Zobrazit'; +$lang['view_one_child'] = 'Zobrazit potomka'; +$lang['view_children'] = 'Zobrazit potomky (%s)'; +$lang['add_new_attribute'] = 'PÅ™idat nový atribut'; +$lang['add_new_objectclass'] = 'PÅ™idat objectClass'; +$lang['hide_internal_attrs'] = 'Schovat interní atributy'; +$lang['show_internal_attrs'] = 'Zobrazit interní atributy'; +$lang['attr_name_tooltip'] = 'Klepnutím zobrazíte definiÄní schéma pro atribut typu \'%s\''; +$lang['none'] = 'žádný'; +$lang['no_internal_attributes'] = 'Žádné interní atributy'; +$lang['no_attributes'] = 'Tento objekt nemá atributy'; +$lang['save_changes'] = 'Uložit zmÄ›ny'; +$lang['add_value'] = 'pÅ™idat hodnotu'; +$lang['add_value_tooltip'] = 'PÅ™idá další hodnotu k atributu \'%s\''; +$lang['refresh_entry'] = 'Obnovit'; +$lang['refresh_this_entry'] = 'Obnovit tento objekt'; +$lang['delete_hint'] = 'Rada: Pro smazání atributu vyprázdÄ›te textové políÄko a klepnÄ›te na Uložit.'; +$lang['attr_schema_hint'] = 'Rada: K zobrazení schémata pro atribut klepnÄ›te na název atributu.'; +$lang['attrs_modified'] = 'NÄ›které atributy (%s) byly modifikováný a jsou zvýraznÄ›ny dole.'; +$lang['attr_modified'] = 'Atribut (%s) byl zmÄ›nÄ›n a je zvýraznÄ›n dole.'; +$lang['viewing_read_only'] = 'Prohlížení objekt v módu "pouze pro Ätení".'; +$lang['no_new_attrs_available'] = 'nejsou dostupné žádné nové atributy pro tento objekt'; +$lang['no_new_binary_attrs_available'] = 'nejsou dostupné žádné nové binární atributy pro tento objekt'; +$lang['binary_value'] = 'Binarní hodnota'; +$lang['add_new_binary_attr'] = 'PÅ™idat nový binarní atribut'; +$lang['alias_for'] = 'Poznámka: \'%s\' je aliasem pro \'%s\''; +$lang['download_value'] = 'stáhnout data'; +$lang['delete_attribute'] = 'smazat atribut'; +$lang['true'] = 'true'; +$lang['false'] = 'false'; +$lang['none_remove_value'] = 'žádný, odebrat hodnotu'; +$lang['really_delete_attribute'] = 'SkuteÄnÄ› smazat atribut'; +$lang['add_new_value'] = 'PÅ™idat novou hodnotu'; + +// Schema browser +$lang['the_following_objectclasses'] = 'Následující objectClass jsou podporovány tímto LDAP serverem.'; +$lang['the_following_attributes'] = 'Následující attributeType jsou podporovány tímto LDAP serverem.'; +$lang['the_following_matching'] = 'Následující kritéria výbÄ›ru jsou podporovány tímto LDAP serverem.'; +$lang['the_following_syntaxes'] = 'Následující syntaxe jsou podporovány tímto LDAP serverem.'; +$lang['schema_retrieve_error_1']='Server plnÄ› nepodporuje LDAP protocol.'; +$lang['schema_retrieve_error_2']='VaÅ¡e verze PHP korektnÄ› neprovede tento dotaz.'; +$lang['schema_retrieve_error_3']='Nebo možná phpLDAPadmin neví jak získat schéma pro Váš server.'; +$lang['jump_to_objectclass'] = 'Jdi na objectClass'; +$lang['jump_to_attr'] = 'Jdi na typ atributu'; +$lang['jump_to_matching_rule'] = 'Jdi na Matching Rule'; +$lang['schema_for_server'] = 'Schéma serveru'; +$lang['required_attrs'] = 'Vyžadované atributy'; +$lang['optional_attrs'] = 'Volitelné atributy'; +$lang['optional_binary_attrs'] = 'Volitelné binární atributy'; +$lang['OID'] = 'OID'; +$lang['aliases']='Aliasy'; +$lang['desc'] = 'Popis'; +$lang['no_description']='žádný popis'; +$lang['name'] = 'Název'; +$lang['equality']='Equality'; +$lang['is_obsolete'] = 'Tato objectClass je zastaralá'; +$lang['inherits'] = 'Odvozeno od objectClass'; +$lang['inherited_from'] = 'Odvozeno od objectClass'; +$lang['parent_to'] = 'RodiÄovská objectClass'; +$lang['jump_to_this_oclass'] = 'Jdi na definici této objectClass'; +$lang['matching_rule_oid'] = 'VýbÄ›rové kritérium OID'; +$lang['syntax_oid'] = 'Syntaxe OID'; +$lang['not_applicable'] = 'nepoužitelný'; +$lang['not_specified'] = 'nespecifikovaný'; +$lang['character']='znak'; +$lang['characters']='znaků'; +$lang['used_by_objectclasses']='Používáno tÄ›mito objectClass'; +$lang['used_by_attributes']='Používají atributy'; +$lang['maximum_length']='Maximální délka'; +$lang['attributes']='Typy atributů'; +$lang['syntaxes']='Syntaxe'; +$lang['matchingrules']='Matching Rules'; +$lang['oid']='OID'; +$lang['obsolete']='Zastaralé'; +$lang['ordering']='Řazení'; +$lang['substring_rule']='Substring Rule'; +$lang['single_valued']='Single Valued'; +$lang['collective']='Collective'; +$lang['user_modification']='User Modification'; +$lang['usage']='Použití'; +$lang['could_not_retrieve_schema_from']='Nelze získat schéma z'; +$lang['type']='Typ'; + +// Deleting entries +$lang['entry_deleted_successfully'] = 'Objekt \'%s\' byl úspěšnÄ› odstranÄ›n.'; +$lang['you_must_specify_a_dn'] = 'Musíte zadat DN'; +$lang['could_not_delete_entry'] = 'Nebylo možné odstranit objekt: %s'; +$lang['no_such_entry'] = 'Objekt neexistuje: %s'; +$lang['delete_dn'] = 'Smazat %s'; +$lang['permanently_delete_children'] = 'Odstranit také vÅ¡echny potomky?'; +$lang['entry_is_root_sub_tree'] = 'Tento objekt je koÅ™enem podstromu, který obsahuje %s objektů.'; +$lang['view_entries'] = 'zobrazit objekty'; +$lang['confirm_recursive_delete'] = 'phpLDAPadmin rekurzivnÄ› odstraní tento objekt a vÅ¡ech jeho %s potomků. PozornÄ› si prohlédnÄ›te seznam objektů, které tato operace odstraní. PÅ™ejete si pokraÄovat?'; +$lang['confirm_recursive_delete_note'] = 'Poznámka: tato operace může mít fatální následky a nelze ji vrátit zpÄ›t. Speciální pozornost vÄ›nujte aliasům, odkazům a ostatním vÄ›cem, které můžou způsobit problémy.'; +$lang['delete_all_x_objects'] = 'Smazat vÅ¡ech %s objektů'; +$lang['recursive_delete_progress'] = 'PrůbÄ›h rekurzivního odstranÄ›ní'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'Objekt %s a jeho podstrom byly úspěšnÄ› odstranÄ›ny.'; +$lang['failed_to_delete_entry'] = 'NepodaÅ™ilo se odstranit objekt %s'; +$lang['list_of_entries_to_be_deleted'] = 'Seznam objektů k odstranÄ›ní:'; +$lang['sure_permanent_delete_object']='Jste si skuteÄnÄ› jisti, že chcete odstranit tento objekt?'; +$lang['dn'] = 'DN'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'Atribut "%s" je v konfiguraci phpLDAPadminu oznaÄen jako "jen pro Ätení".'; +$lang['no_attr_specified'] = 'Nebylo zadáno jméno atributu.'; +$lang['no_dn_specified'] = 'Nebylo zadáno DN'; + +// Adding attributes +$lang['left_attr_blank'] = 'Nevyplnili jste hodnotu atributu. VraÅ¥te se zpÄ›t a akci opakujte.'; +$lang['failed_to_add_attr'] = 'PÅ™idání atributu selhalo.'; +$lang['file_empty'] = 'Soubor, který jste zvolili je buÄ prázdný nebo neexistuje. VraÅ¥te se prosím zpÄ›t a akci opakujte.'; +$lang['invalid_file'] = 'BezpeÄnostní chyba: Soubor, který uploadujete může být závadný.'; +$lang['warning_file_uploads_disabled'] = 'V konfiguraci PHP jsou zakázány uploady souborů. Pro pokraÄování upravte prosím php.ini.'; +$lang['uploaded_file_too_big'] = 'Soubor, který se pokouÅ¡eli uložit je příliÅ¡ veliký. Upravte prosím hodnotu upload_max_size v php.ini.'; +$lang['uploaded_file_partial'] = 'PÅ™i uploadu souboru doÅ¡lo zÅ™ejmÄ› k selhání sítÄ›, neboÅ¥ se podaÅ™ilo získat jen Äást souboru.'; +$lang['max_file_size'] = 'Maximální velikost souboru: %s'; + +// Updating values +$lang['modification_successful'] = 'Úprava probÄ›hla úspěšnÄ›!'; +$lang['change_password_new_login'] = 'Kvůli zmÄ›nÄ› svého hesla se nyní musíte pÅ™ihlásit znova - s novým heslem.'; + +// Adding objectClass form +$lang['new_required_attrs'] = 'Nový vyžadovaný atribut'; +$lang['requires_to_add'] = 'K provedení této akce musíte pÅ™idat'; +$lang['new_attributes'] = 'nové atributy'; +$lang['new_required_attrs_instructions'] = 'Návod: K pÅ™iÅ™azení této objectClass k vybranému objektu musíte zadat'; +$lang['that_this_oclass_requires'] = 'atributy, které jsou touto objectClass vyžadovány. Můžete tak uÄinit v tomto formuláři.'; +$lang['add_oclass_and_attrs'] = 'PÅ™idat objectClass a atributy'; +$lang['objectclasses'] = 'objectClassy'; + +// General +$lang['chooser_link_tooltip'] = 'OtevÅ™e popup okno, ve kterém zvolíte DN'; +$lang['no_updates_in_read_only_mode'] = 'Nelze provádÄ›t úpravy dokud je server v módu "pouze pro Ätení"'; +$lang['bad_server_id'] = 'Å patné ID serveru'; +$lang['not_enough_login_info'] = 'Nedostatek informací pro pÅ™ihlášení k serveru. Ověřte prosím nastavení.'; +$lang['could_not_connect'] = 'Nelze se pÅ™ipojit k LDAP serveru.'; +$lang['could_not_connect_to_host_on_port'] = 'Nelze se pÅ™ipojit k "%s" na portu "%s"'; +$lang['could_not_perform_ldap_mod_add'] = 'Nelze provést ldap_mod_add operaci.'; +$lang['bad_server_id_underline'] = 'server_id: '; +$lang['success'] = 'Hotovo'; +$lang['server_colon_pare'] = 'Server: '; +$lang['look_in'] = 'Prohlížení: '; +$lang['missing_server_id_in_query_string'] = 'V požadavku nebylo uvedeno žádné ID serveru!'; +$lang['missing_dn_in_query_string'] = 'V požadavku nebyl uveden žádný DN!'; +$lang['back_up_p'] = 'O úroveň výš...'; +$lang['no_entries'] = 'žádné objekty'; +$lang['not_logged_in'] = 'NepÅ™ihlášen'; +$lang['could_not_det_base_dn'] = 'Nelze zjistit výchozí DN'; +$lang['please_report_this_as_a_bug']='NahlaÅ¡te toto prosím jako chybu.'; +$lang['reasons_for_error']='Toto se může pÅ™ihodit z nÄ›kolika příÄin. NejpravdÄ›podobnÄ›jší jsou:'; +$lang['yes']='Ano'; +$lang['no']='Ne'; +$lang['go']='Jdi'; +$lang['delete']='Odstranit'; +$lang['back']='ZpÄ›t'; +$lang['object']='objekt'; +$lang['delete_all']='Odstranit vÅ¡e'; +$lang['url_bug_report']='https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'rada'; +$lang['bug'] = 'chyba'; +$lang['warning'] = 'upozornÄ›ní'; +$lang['light'] = 'light'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'ProveÄ >>'; + +// Add value form +$lang['add_new'] = 'PÅ™idat nový'; +$lang['value_to'] = 'hodnota pro'; +$lang['distinguished_name'] = 'Distinguished Name'; +$lang['current_list_of'] = 'SouÄasný výpis'; +$lang['values_for_attribute'] = 'hodnoty pro atribut'; +$lang['inappropriate_matching_note'] = 'Poznámka: Pokud nenastavíte na tomto LDAP serveru pravidlo
EQUALITY pro tento atribut, dojde k chybÄ› pÅ™i výbÄ›ru objektů.'; +$lang['enter_value_to_add'] = 'Zadejte hodnotu, kterou chcete pÅ™idat:'; +$lang['new_required_attrs_note'] = 'Poznámka: Není vylouÄené, že budete vyzváni k zadání nových atributů vyžadovaných touto objectClass'; +$lang['syntax'] = 'Syntaxe'; + +//copy.php +$lang['copy_server_read_only'] = 'Nemůžete provádÄ›t zmÄ›ny dokud je server v módu "jen pro Ätení"'; +$lang['copy_dest_dn_blank'] = 'Ponechali jste kolonku cílové DN prázdnou.'; +$lang['copy_dest_already_exists'] = 'Objekt (%s) již v cílovém DN existuje.'; +$lang['copy_dest_container_does_not_exist'] = 'Cílová složka (%s) neexistuje.'; +$lang['copy_source_dest_dn_same'] = 'Zdrojové a cílové DN se shodují.'; +$lang['copy_copying'] = 'Kopíruji '; +$lang['copy_recursive_copy_progress'] = 'PrůbÄ›h rekurzivního kopírování'; +$lang['copy_building_snapshot'] = 'Sestavuji obraz stromu ke kopírování... '; +$lang['copy_successful_like_to'] = 'Kopie úspěšnÄ› dokonÄena! PÅ™ejete si '; +$lang['copy_view_new_entry'] = 'zobrazit nový objekt'; +$lang['copy_failed'] = 'NepodaÅ™ilo se okopírovat DN: '; + +//edit.php +$lang['missing_template_file'] = 'UpozornÄ›ní: chybí Å¡ablona, '; +$lang['using_default'] = 'Používám výchozí.'; +$lang['template'] = 'Å ablona'; +$lang['must_choose_template'] = 'Musíte zvolit Å¡ablonu'; +$lang['invalid_template'] = '%s je neplatná Å¡ablona'; +$lang['using_template'] = 'použítím Å¡ablony'; +$lang['go_to_dn'] = 'Jdi na %s'; + +//copy_form.php +$lang['copyf_title_copy'] = 'Kopírovat '; +$lang['copyf_to_new_object'] = 'jako nový objekt'; +$lang['copyf_dest_dn'] = 'Cílové DN'; +$lang['copyf_dest_dn_tooltip'] = 'Celé DN nového objektu bude vytvoÅ™eno kopií zdrojového objektu'; +$lang['copyf_dest_server'] = 'Cílový server'; +$lang['copyf_note'] = 'Rada: Kopírování mezi servery funguje jedinÄ› za pÅ™edpokladu, že nedojde k neshodÄ› schémat'; +$lang['copyf_recursive_copy'] = 'PÅ™i kopírování zahrnout vÅ¡echny potomky tohoto objektu.'; +$lang['recursive_copy'] = 'Rekurzivní kopie'; +$lang['filter'] = 'Filtr'; +$lang['filter_tooltip'] = 'PÅ™i rekurzivní kopii pracovat pouze s objekty, které splňují zvolený filtr'; + +//create.php +$lang['create_required_attribute'] = 'Nevyplnili jste pole pro vyžadovaný atribut %s.'; +$lang['redirecting'] = 'PÅ™esmÄ›rovávám'; +$lang['here'] = 'zde'; +$lang['create_could_not_add'] = 'Nelze objekt do LDAP serveru pÅ™idat.'; + +//create_form.php +$lang['createf_create_object'] = 'VytvoÅ™it objekt'; +$lang['createf_choose_temp'] = 'Vyberte Å¡ablonu'; +$lang['createf_select_temp'] = 'Zvolte Å¡ablonu pro vytvoÅ™ení objektu'; +$lang['createf_proceed'] = 'Provést'; +$lang['rdn_field_blank'] = 'Ponechali jste pole RDN nevyplnÄ›né.'; +$lang['container_does_not_exist'] = 'Složka (%s) neexistuje. Opakujte prosím akci.'; +$lang['no_objectclasses_selected'] = 'NepÅ™iÅ™adili jste žádné objectClass k tomuto objektu. VraÅ¥te se prosím zpÄ›t a akci opakujte.'; +$lang['hint_structural_oclass'] = 'NápovÄ›da: Musíte zvolit alespoň jednu structural objectClass.'; + +//creation_template.php +$lang['ctemplate_on_server'] = 'Na serveru'; +$lang['ctemplate_no_template'] = 'V POST požadavku nebyla zaslána žádná Å¡ablona.'; +$lang['ctemplate_config_handler'] = 'VaÅ¡e nastavení uvádí obsluhovaÄ '; +$lang['ctemplate_handler_does_not_exist'] = 'pro tuto Å¡ablonu. Ale tento obsluhovaÄ nelze v adresáři templates/creation nalézt.'; +$lang['create_step1'] = 'Krok 1 ze 2: Jméno a objectClass(y)'; +$lang['create_step2'] = 'Krok 2 ze 2: Atributy a hodnoty'; +$lang['relative_distinguished_name'] = 'Relativní Distinguished Name'; +$lang['rdn'] = 'RDN'; +$lang['rdn_example'] = '(příklad: cn=MujNovyUzivatel)'; +$lang['container'] = 'Složka'; +$lang['alias_for'] = 'Alias k %s'; + +// search.php +$lang['you_have_not_logged_into_server'] = 'Nelze provádÄ›t vyhledávání na serveru bez pÅ™edchozího pÅ™ihlášení.'; +$lang['click_to_go_to_login_form'] = 'Klepnutím budete pÅ™esmÄ›rováni na formulář k pÅ™ihlášení'; +$lang['unrecognized_criteria_option'] = 'Neznámá vyhledávací kritéria: '; +$lang['if_you_want_to_add_criteria'] = 'Pokud si pÅ™ejete pÅ™idat svoje vlastní vyhledávací kritéria, ujistÄ›te se, že jste je pÅ™idali do search.php.'; +$lang['entries_found'] = 'Nalezené objekty: '; +$lang['filter_performed'] = 'UplatnÄ›ný filtr: '; +$lang['search_duration'] = 'Vyhledávání dokonÄeno za'; +$lang['seconds'] = 'sekund'; + +// search_form_advanced.php +$lang['scope_in_which_to_search'] = 'Oblast vyhledávání'; +$lang['scope_sub'] = 'Celý podstrom'; +$lang['scope_one'] = 'O jednu úroveň níž'; +$lang['scope_base'] = 'Pouze výchozí DN'; +$lang['standard_ldap_search_filter'] = 'Standardní LDAP vyhledávací filtr. PÅ™iklad: (&(sn=Smith)(givenname=David))'; +$lang['search_filter'] = 'Vyhledávací filtr'; +$lang['list_of_attrs_to_display_in_results'] = 'Seznam atributů zobrazených ve výsledku hledání (oddÄ›lené Äárkou)'; +$lang['show_attributes'] = 'Zobrazit atributy'; + +// search_form_simple.php +$lang['search_for_entries_whose'] = 'Vyhledat objekty kde'; +$lang['equals'] = 'je'; +$lang['starts with'] = 'zaÄíná na'; +$lang['contains'] = 'obsahuje'; +$lang['ends with'] = 'konÄí na'; +$lang['sounds like'] = 'zní jako'; + +// server_info.php +$lang['could_not_fetch_server_info'] = 'Nelze získat informace ze serveru LDAP'; +$lang['server_info_for'] = 'Server info pro: '; +$lang['server_reports_following'] = 'Server o sobÄ› poskytuje následující informace'; +$lang['nothing_to_report'] = 'Server neposkytuje žádné informace.'; + +//update.php +$lang['update_array_malformed'] = 'update_array je poÅ¡kozené. Může se jednat o chybu v phpLDAPadmin. Prosíme Vás, abyste chybu nahlásili.'; +$lang['could_not_perform_ldap_modify'] = 'Nelze provést operaci ldap_modify.'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'PÅ™ejete si provést tyto zmÄ›ny?'; +$lang['attribute'] = 'Atribut'; +$lang['old_value'] = 'Původní hodnota'; +$lang['new_value'] = 'Nová hodnota'; +$lang['attr_deleted'] = '[atribut odstranÄ›n]'; +$lang['commit'] = 'Odeslat'; +$lang['cancel'] = 'Storno'; +$lang['you_made_no_changes'] = 'Neprovedli jste žádné zmÄ›ny'; +$lang['go_back'] = 'ZpÄ›t'; + +// welcome.php +$lang['welcome_note'] = 'K navigaci použijte prosím menu v levé Äásti obrazovky'; +$lang['credits'] = 'AutoÅ™i'; +$lang['changelog'] = 'ChangeLog'; +$lang['donate'] = 'PodpoÅ™it projekt'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = 'NebezpeÄný název souboru: '; +$lang['no_such_file'] = 'Soubor nelze nalézt: '; + +//function.php +$lang['auto_update_not_setup'] = 'V konfiguraci jste zapnuli podporu auto_uid_numbers pro %s, ale nespecifikovali jste auto_uid_number_mechanism. Napravte prosím nejprve tento problém.'; +$lang['uidpool_not_set'] = 'V konfiguraci serveru %s jste specifikovali auto_uid_number_mechanism jako uidpool, ale neuvedli jste audo_uid_number_uid_pool_dn. Napravte prosím nejprve tento problém.'; +$lang['uidpool_not_exist'] = 'Zdá se, že uidPool uvedený v konfiguraci (%s) neexistuje.'; +$lang['specified_uidpool'] = 'V konfiguraci serveru %s jste specifikovali auto_uid_number_mechanism jako search, ale neuvedli jste auto_uid_number_search_base. Napravte prosím nejprve tento problém.'; +$lang['auto_uid_invalid_credential'] = 'Se zadanými přístupovými oprávnÄ›ními se nelze pÅ™ipojit k %s a získat auto_uid. Zkontrolujte prosím konfiguraci.'; +$lang['bad_auto_uid_search_base'] = 'V konfiguraci phpLDAPadminu je uveden neplatný parametr auto_uid_search_base pro server %s'; +$lang['auto_uid_invalid_value'] = 'V konfiguraci je uvedena neplatná hodnota auto_uid_number_mechanism (%s). Platné hodnoty jsou pouze uidpool a search. Napravte prosím nejprve tento problém.'; +$lang['error_auth_type_config'] = 'Chyba: Ve svém konfiguraÄním souboru jste u položky $servers[\'auth_type\'] uvedli chybnou hodnotu \'%s\'. Platné hodnoty jsou pouze \'config\' a \'form\'.'; +$lang['php_install_not_supports_tls'] = 'Tato instalace PHP neobsahuje podporu pro TLS'; +$lang['could_not_start_tls'] = 'Nelze inicializovat TLS.
Zkontolujte prosím konfiguraci svého LDAP serveru.'; +$lang['could_not_bind_anon'] = 'K serveru se nelze pÅ™ipojit anonymnÄ›.'; +$lang['could_not_bind'] = 'Nelze se pÅ™ipojit k serveru LDAP.'; +$lang['anonymous_bind'] = 'PÅ™ipojit anonymnÄ›'; +$lang['bad_user_name_or_password'] = 'Nesprávné jméno nebo heslo. Opakujte pÅ™ihlášení.'; +$lang['redirecting_click_if_nothing_happens'] = 'PÅ™esmÄ›rovávám... KlepnÄ›te sem, pokud se nic nestane.'; +$lang['successfully_logged_in_to_server'] = 'ÚspěšnÄ› jste se pÅ™ihlásili k serveru %s'; +$lang['could_not_set_cookie'] = 'Cookie nemohla být uložena.'; +$lang['ldap_said'] = 'OdpovÄ›Ä LDAP serveru: %s

'; +$lang['ferror_error'] = 'Chyba'; +$lang['fbrowse'] = 'procházet'; +$lang['delete_photo'] = 'Odstranit fotografii'; +$lang['install_not_support_blowfish'] = 'Tato instalace PHP neobsahuje podporu pro šifru Blowfish.'; +$lang['install_not_support_md5crypt'] = 'Tato instalace PHP neobsahuje podporu pro šifru md5crypt.'; +$lang['install_no_mash'] = 'Tato instalace PHP nepodporuje funkci mhash(). Nelze aplikovat SHA hash.'; +$lang['jpeg_contains_errors'] = 'jpegPhoto obsahuje chyby
'; +$lang['ferror_number'] = 'Číslo chyby: %s (%s)

'; +$lang['ferror_discription'] = 'Popis: %s

'; +$lang['ferror_number_short'] = 'Číslo chyby: %s

'; +$lang['ferror_discription_short'] = 'Popis: (popis není k dispozici)
'; +$lang['ferror_submit_bug'] = 'Pokud je toto chyba v phpLDAPadmin, napiÅ¡te nám o tom.'; +$lang['ferror_unrecognized_num'] = 'Neznámé Äíslo chyby: '; +$lang['ferror_nonfatil_bug'] = '
+
+ Narazili jste na nezávažnou, droubnou až zanedbatelnou chybu v phpLDAPadmin!
Chyba:%s (%s)
Soubor:%s řádka %s, voláno z %s
Verze:PLA: %s, PHP: %s, SAPI: %s +
Web server:%s
+ Klepnutím prosím ohlášte chybu.

'; +$lang['ferror_congrats_found_bug'] = 'Blahopřejeme! Nalezli jste chybu v phpLDAPadmin. :-)

+ + + + + + + + + + +
Chyba:%s
Vážnost:%s
Soubor:%s
Řádka:%s
Voláno z:%s
Verze PLA:%s
Verze PHP:%s
PHP SAPI:%s
Web server:%s
+
+ Klepnutím dole prosím ohlaÅ¡te chybu!'; + +//ldif_import_form +$lang['import_ldif_file_title'] = 'Importovat soubor LDIF'; +$lang['select_ldif_file'] = 'Zvolte soubor LDIF:'; +$lang['select_ldif_file_proceed'] = 'ProveÄ >>'; +$lang['dont_stop_on_errors'] = 'Ignorovat chyby'; + +//ldif_import +$lang['add_action'] = 'PÅ™idávání...'; +$lang['delete_action'] = 'Odstraňování...'; +$lang['rename_action'] = 'PÅ™ejmenovávání...'; +$lang['modify_action'] = 'Upravování...'; +$lang['warning_no_ldif_version_found'] = 'Nebyla nalezena verze. PÅ™edpokládám 1.'; +$lang['valid_dn_line_required'] = 'Je vyžadován platný řádek s DN.'; +$lang['missing_uploaded_file'] = 'Soubor LDIF nebyl nalezen.'; +$lang['no_ldif_file_specified.'] = 'Neuvedli jste LDIF soubor. Opakujte prosím akci.'; +$lang['ldif_file_empty'] = 'Soubor LDIF je prázdný.'; +$lang['empty'] = 'prázdný'; +$lang['file'] = 'Soubor'; +$lang['number_bytes'] = '%s bajtů'; + +$lang['failed'] = 'selhal'; +$lang['ldif_parse_error'] = 'Chyba v souboru LDIF'; +$lang['ldif_could_not_add_object'] = 'Nelze pÅ™idat objekt:'; +$lang['ldif_could_not_rename_object'] = 'Nelze pÅ™ejmenovat objekt:'; +$lang['ldif_could_not_delete_object'] = 'Nelze odstranit objekt:'; +$lang['ldif_could_not_modify_object'] = 'Nelze upravit objekt:'; +$lang['ldif_line_number'] = 'Číslo řádku:'; +$lang['ldif_line'] = 'Řádek:'; + +// Exports +$lang['export_format'] = 'Formát exportu'; +$lang['line_ends'] = 'Konce řádků'; +$lang['must_choose_export_format'] = 'Musíte zvolit exportní formát.'; +$lang['invalid_export_format'] = 'Neplatný exportní formát'; +$lang['no_exporter_found'] = 'Nebyla nalezena žádná aplikace pro export.'; +$lang['error_performing_search'] = 'BÄ›hem vyhledávání doÅ¡lo k chybÄ›.'; +$lang['showing_results_x_through_y'] = 'Výsledky od %s do %s.'; +$lang['searching'] = 'Vyhledávám...'; +$lang['size_limit_exceeded'] = 'Byl pÅ™ekroÄen limitní parametr pro vyhledávání.'; +$lang['entry'] = 'Objekt'; +$lang['ldif_export_for_dn'] = 'LDIF Export objektu: %s'; +$lang['generated_on_date'] = 'Generováno phpLDAPadminem dne %s'; +$lang['total_entries'] = 'Celkem objektů'; +$lang['dsml_export_for_dn'] = 'DSLM Export objektu: %s'; + +// logins +$lang['could_not_find_user'] = 'Nelze nalézt uživatele "%s"'; +$lang['password_blank'] = 'Nezadali jste uživatelské heslo.'; +$lang['login_cancelled'] = 'PÅ™ihlaÅ¡ování zruÅ¡eno.'; +$lang['no_one_logged_in'] = 'Nikdo není pÅ™ihlášen k tomuto serveru.'; +$lang['could_not_logout'] = 'Nelze se odhlásit.'; +$lang['unknown_auth_type'] = 'Neznámý auth_type: %s'; +$lang['logged_out_successfully'] = 'Odhlášení od serveru %s probÄ›hlo úspěšnÄ›.'; +$lang['authenticate_to_server'] = 'Ověření vůÄi serveru %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'UpozornÄ›ní: Toto spojení není Å¡ifrováné.'; +$lang['not_using_https'] = 'NepÅ™ipojujete se pomocí \'https\'. ProhlížeÄ odeÅ¡le VaÅ¡e pÅ™ihlášení v neÅ¡ifrované podobÄ›.'; +$lang['login_dn'] = 'PÅ™ihlaÅ¡ovací DN'; +$lang['user_name'] = 'Uživatel'; +$lang['password'] = 'Heslo'; +$lang['authenticate'] = 'PÅ™ihlásit'; + +// Entry browser +$lang['entry_chooser_title'] = 'Zvolit objekt'; + +// Index page +$lang['need_to_configure'] = 'Nejprve je tÅ™eba phpLDAPadmin nakonfigurovat. Toho docílíte upravou souboru \'config.php\'. Ukázková konfigurace je k nalezení v souboru \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Mazání je v režimu "jen pro Ätení" zakázáno.'; +$lang['error_calling_mass_delete'] = 'Chyba pÅ™i volání mass_delete.php. V POSTu chybí promÄ›nná mass_delete.'; +$lang['mass_delete_not_array'] = 'mass_delete v POSTu není pole.'; +$lang['mass_delete_not_enabled'] = 'Hromadý výmaz není umožnÄ›n. Můžete ho povolit v souboru config.php.'; +$lang['mass_deleting'] = 'Hromadný výmaz'; +$lang['mass_delete_progress'] = 'PrůbÄ›h odstraňování na serveru "%s"'; +$lang['malformed_mass_delete_array'] = 'Zdeformované pole mass_delete.'; +$lang['no_entries_to_delete'] = 'Nevybrali jste žádné objekty k odstranÄ›ní.'; +$lang['deleting_dn'] = 'Odstraňuji %s'; +$lang['total_entries_failed'] = '%s z %s objektů se nepodaÅ™ilo odstranit.'; +$lang['all_entries_successful'] = 'VÅ¡echny objekty byly úspěšnÄ› odstranÄ›ny.'; +$lang['confirm_mass_delete'] = 'PotvÄte hromadný výmaz v poÄtu %s objektů na serveru %s'; +$lang['yes_delete'] = 'Ano, odstranit!'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Nelze pÅ™ejmenovat objekt, který má potomky. Toto se například vztahuje na vÅ¡echny objekty, které nejsou typu "list".'; +$lang['no_rdn_change'] = 'NezmÄ›nili jste RDN'; +$lang['invalid_rdn'] = 'Neplatná hodnota RDN'; +$lang['could_not_rename'] = 'Objekt nelze pÅ™ejmenovat'; + +?> diff --git a/lang/recoded/de.php b/lang/recoded/de.php index 489035f..5de6f92 100644 --- a/lang/recoded/de.php +++ b/lang/recoded/de.php @@ -4,173 +4,282 @@ * Ãœbersetzung von Marius Rieder * Uwe Ebel * Modifikationen von Dieter Kluenter + * + * + * $Header: /cvsroot/phpldapadmin/phpldapadmin/lang/recoded/de.php,v 1.22 2004/07/20 19:47:32 i18phpldapadmin Exp $ + * Update auf CVS-Version von en.php 1.79 + * Verwendete CVS-Version von en.php 1.65 */ // Search form $lang['simple_search_form_str'] = 'Einfache Suche';//'Simple Search Form'; $lang['advanced_search_form_str'] = 'Experten Suche';//'Advanced Search Form'; $lang['server'] = 'Server';//'Server'; -$lang['search_for_entries_whose'] = 'Suche nach Einträgen die';//'Search for entries whose'; +$lang['search_for_entries_whose'] = 'Suche nach Einträgen die';//'Search for entries whose'; $lang['base_dn'] = 'Base DN';//'Base DN'; $lang['search_scope'] = 'Suchbereich';//'Search Scope'; -$lang['search_ filter'] = 'Suchfilter';//'Search Filter'; +//$lang['search_ filter'] = 'Suchfilter';//'Search Filter'; $lang['show_attributes'] = 'Zeige Attribute';//'Show Attributtes'; $lang['Search'] = 'Suchen';//'Search'; $lang['equals'] = 'gleich';//'equals'; -$lang['starts_with'] = 'beginnt mit';//'starts with'; -$lang['contains'] = 'enthält';//'contains'; -$lang['ends_with'] = 'endet mit';//'ends with'; -$lang['sounds_like'] = 'änlich wie';//'sounds like'; +//$lang['starts_with'] = 'beginnt mit';//'starts with'; +$lang['contains'] = 'enthält';//'contains'; +//$lang['ends_with'] = 'endet mit';//'ends with'; +//$lang['sounds_like'] = 'ähnlich wie';//'sounds like'; +$lang['predefined_search_str'] = 'oder ein von dieser Liste auswählen';//'or select a predefined search'; +$lang['predefined_searches'] = 'Vordefinierte Suche';//'Predefined Searches'; +$lang['no_predefined_queries'] = 'Keine Abfragen sind in der config.php definiert';// 'No queries have been defined in config.php.'; +$lang['export_results'] = 'Ergebnisse exportieren';// 'export results'; +$lang['unrecoginzed_search_result_format'] = 'Das Suchergebnisformat ist nicht erkennbar: %s';//'Unrecognized search result format: %s'; +$lang['format'] = 'Format';// 'Format'; +$lang['list'] = 'Liste';// 'list'; +$lang['table'] = 'Tabelle';// 'table'; +$lang['bad_search_display'] = 'Die config.php gibt einen falsche Wert für $default_search_display: %s vor. Bitte in der Konfiguration korrigieren.';//'Your config.php specifies an invalid value for $default_search_display: %s. Please fix it'; + + // Tree browser -$lang['request_new_feature'] = 'Anfragen von neuen Möglichkeiten';//'Request a new feature'; -$lang['see_open_requests'] = 'Siehe offene Anfragen';//'see open requests'; +$lang['request_new_feature'] = 'Anfragen von neuen Möglichkeiten';//'Request a new feature'; +//$lang['see_open_requests'] = 'Siehe offene Anfragen';//'see open requests'; $lang['report_bug'] = 'Einen Fehler berichten';//'Report a bug'; -$lang['see_open_bugs'] = 'Siehe offene Fehler';//'see open bugs'; +//$lang['see_open_bugs'] = 'Siehe offene Fehler';//'see open bugs'; $lang['schema'] = 'Schema';//'schema'; $lang['search'] = 'suche';//'search'; $lang['refresh'] = 'aktualisieren';//'refresh'; -$lang['create'] = 'neu';//'create'; +$lang['create'] = 'Erstellen';//'create'; $lang['info'] = 'Info';//'info'; $lang['import'] = 'Import';//'import'; $lang['logout'] = 'abmelden';//'logout'; $lang['create_new'] = 'Neuen Eintrag erzeugen';//'Create New'; -$lang['view_schema_for'] = 'Zeige Schema für';//'View schema for'; -$lang['refresh_expanded_containers'] = 'Aktualisiere alle geöffneten Container von';//'Refresh all expanded containers for'; +$lang['new'] = 'Neu';//'new'; +$lang['view_schema_for'] = 'Zeige Schema für';//'View schema for'; +$lang['refresh_expanded_containers'] = 'Aktualisiere alle geöffneten Container von';//'Refresh all expanded containers for'; $lang['create_new_entry_on'] = 'Erzeuge einen neuen Eintrag auf';//'Create a new entry on'; $lang['view_server_info'] = 'Zeige Server Informationen';//'View server-supplied information'; -$lang['import_from_ldif'] = 'Importiere Einträge von einer LDIF-Datei';//'Import entries from an LDIF file'; +$lang['import_from_ldif'] = 'Importiere Einträge von einer LDIF-Datei';//'Import entries from an LDIF file'; $lang['logout_of_this_server'] = 'Von diesem Server abmelden';//'Logout of this server'; $lang['logged_in_as'] = 'Angemeldet als: ';//'Logged in as: '; $lang['read_only'] = 'nur lesen';//'read only'; +$lang['read_only_tooltip'] = 'Diese Attribut wurde vom phpLDAPadmin-Adminstrator als nur lesend markiert.';//This attribute has been flagged as read only by the phpLDAPadmin administrator'; $lang['could_not_determine_root'] = 'Konnte die Basis ihres LDAP Verzeichnises nicht ermitteln';//'Could not determin the root of your LDAP tree.'; $lang['ldap_refuses_to_give_root'] = 'Es scheint das ihr LDAP Server nicht dazu konfiguriert wurde seine Basis bekanntzugeben';//'It appears that the LDAP server has been configured to not reveal its root.'; $lang['please_specify_in_config'] = 'Bitte in config.php angeben';//'Please specify it in config.php'; $lang['create_new_entry_in'] = 'Neuen Eintrag erzeugen auf';//'Create a new entry in'; $lang['login_link'] = 'Anmelden...';//'Login...'; +$lang['login'] = 'Anmelden';//'login'; // Entry display -$lang['delete_this_entry'] = 'Diesen Eintrag löschen';//'Delete this entry'; -$lang['delete_this_entry_tooltip'] = 'F¨r diese Entscheidung wird nochmals nachgefragt.';//'You will be prompted to confirm this decision'; +$lang['delete_this_entry'] = 'Diesen Eintrag löschen';//'Delete this entry'; +$lang['delete_this_entry_tooltip'] = 'Für diese Entscheidung wird nochmals nachgefragt.';//'You will be prompted to confirm this decision'; $lang['copy_this_entry'] = 'Diesen Eintrag kopieren';//'Copy this entry'; $lang['copy_this_entry_tooltip'] = 'Kopiere diese Object an eine anderen Ort: ein neuer DN oder einen anderen Server.';//'Copy this object to another location, a new DN, or another server'; -$lang['export_to_ldif'] = 'Exportieren nach LDIF';//'Export to LDIF'; -$lang['export_to_ldif_tooltip'] = 'Speichere einen LDIF-Abzug diese Objektes';//'Save an LDIF dump of this object'; -$lang['export_subtree_to_ldif_tooltip'] = 'Speicher eine LDIF-Abzug ab diesem Objekt und alle seine Untereinträge';//'Save an LDIF dump of this object and all of its children'; -$lang['export_subtree_to_ldif'] = 'Export Unterbaum nach LDIF';//'Export subtree to LDIF'; -$lang['export_to_ldif_mac'] = 'Zeilenende für Macintosh';//'Macintosh style line ends'; -$lang['export_to_ldif_win'] = 'Zeilenende für Windows';//'Windows style line ends'; -$lang['export_to_ldif_unix'] = 'Zeilenende für Unix';//'Unix style line ends'; +$lang['export'] = 'Exportieren';//'Export to LDIF'; +$lang['export_lcase'] = 'exportieren';//'export'; +$lang['export_tooltip'] = 'Speichere einen Abzug diese Objektes';//'Save an LDIF dump of this object'; +$lang['export_subtree_tooltip'] = 'Speicher eine Abzug ab diesem Objekt und alle seine Untereinträge';//'Save an LDIF dump of this object and all of its children'; +$lang['export_subtree'] = 'Export Unterbaum nach LDIF';//'Export subtree to LDIF'; +//$lang['export_mac'] = 'Zeilenende für Macintosh';//'Macintosh style line ends'; +//$lang['export_win'] = 'Zeilenende für Windows';//'Windows style line ends'; +//$lang['export_unix'] = 'Zeilenende für Unix';//'Unix style line ends'; $lang['create_a_child_entry'] = 'Erzeuge einen Untereintrag';//'Create a child entry'; -$lang['add_a_jpeg_photo'] = 'Ein JPEG-Foto hinzufügen';//'Add a jpegPhoto'; +//$lang['add_a_jpeg_photo'] = 'Ein JPEG-Foto hinzufügen';//'Add a jpegPhoto'; $lang['rename_entry'] = 'Eintrag umbenennen';//'Rename Entry'; $lang['rename'] = 'Umbenennen';//'Rename'; -$lang['add'] = 'Hinzufügen';//'Add'; +$lang['add'] = 'Hinzufügen';//'Add'; $lang['view'] = 'Ansehen';//'View'; -$lang['add_new_attribute'] = 'Neues Attribut hinzufügen';//'Add New Attribute'; -$lang['add_new_attribute_tooltip'] = 'Füge ein neues Attribut/Wert zu diesem Eintrag hinzu';// 'Add a new attribute/value to this entry'; -$lang['internal_attributes'] = 'Interne Attribute';//'Internal Attributes'; +$lang['view_one_child'] = 'Zeige einen Untereintrag';//'View 1 child'; +$lang['view_children'] = 'Zeige %s Untereinträge';//'View %s children'; +$lang['add_new_attribute'] = 'Neues Attribut hinzufügen';//'Add New Attribute'; +// DELETED $lang['add_new_attribute_tooltip'] = 'Füge ein neues Attribut/Wert zu diesem Eintrag hinzu';// 'Add a new attribute/value to this entry'; +$lang['add_new_objectclass'] = 'Neue ObjectClass hinzufügen';//'Add new ObjectClass'; +//$lang['internal_attributes'] = 'Interne Attribute';//'Internal Attributes'; $lang['hide_internal_attrs'] = 'Verdecke interne Attribute';//'Hide internal attributes'; $lang['show_internal_attrs'] = 'Zeige interne Attribute';//'Show internal attributes'; -$lang['internal_attrs_tooltip'] = 'Attribute werden automatisch vom System erzeugt.';//'Attributes set automatically by the system'; -$lang['entry_attributes'] = 'Attribute des Eintrages';//'Entry Attributes'; -$lang['attr_name_tooltip'] = 'Klicken sie um die Schemadefinition für den Attributtyp \'%s\' anzuzeigen.';//'Click to view the schema defintion for attribute type \'%s\''; -$lang['click_to_display'] = 'Klicken zum Ansehen';//'click to display'; -$lang['hidden'] = 'verdeckt';//'hidden'; +//$lang['internal_attrs_tooltip'] = 'Attribute werden automatisch vom System erzeugt.';//'Attributes set automatically by the system'; +//$lang['entry_attributes'] = 'Attribute des Eintrages';//'Entry Attributes'; +$lang['attr_name_tooltip'] = 'Klicken sie um die Schemadefinition für den Attributtyp "%s" anzuzeigen.';//'Click to view the schema defintion for attribute type \'%s\''; +//$lang['click_to_display'] = 'Klicken zum Ansehen';//'click to display'; +//$lang['hidden'] = 'verdeckt';//'hidden'; $lang['none'] = 'Keine';//'none'; -$lang['save_changes'] = 'Änderungen speichern';//'Save Changes'; -$lang['add_value'] = 'Wert hinzufügen';//'add value'; -$lang['add_value_tooltip'] = 'Füge einen weiteren Wert dem Attribut hinzu';//'Add an additional value to this attribute'; +$lang['no_internal_attributes'] = 'Keine internen Attribute.';//'No internal attributes'; +$lang['no_attributes'] = 'Dieser Eintrag hat keine Attribute.';//'This entry has no attributes'; +$lang['save_changes'] = 'Änderungen speichern';//'Save Changes'; +$lang['add_value'] = 'Wert hinzufügen';//'add value'; +$lang['add_value_tooltip'] = 'Füge einen weiteren Wert dem Attribut hinzu';//'Add an additional value to this attribute'; $lang['refresh_entry'] = 'Auffrischen';// 'Refresh'; $lang['refresh_this_entry'] = 'Aktualisiere den Entrag';//'Refresh this entry'; -$lang['delete_hint'] = 'Hinweis: Um ein Attribut zu löschen, leeren Sie den Inhalt des Wertes.';//'Hint: To delete an attribute, empty the text field and click save.'; -$lang['attr_schema_hint'] = 'Tipp:Um das Schema für ein Attribut anzusehen, genügt ein klick auf den Attributnamen';//'Hint: To view the schema for an attribute, click the attribute name.'; -$lang['attrs_modified'] = 'Einige Attribute (%s) wurden verändert und sind hervorgehoben.';//'Some attributes (%s) were modified and are highlighted below.'; -$lang['attr_modified'] = 'Ein Attribut (%s) wurde verändert und ist hervorgehoben.';//'An attribute (%s) was modified and is highlighted below.'; +$lang['delete_hint'] = 'Hinweis: Um ein Attribut zu löschen, leeren Sie den Inhalt des Wertes.';//'Hint: To delete an attribute, empty the text field and click save.'; +$lang['attr_schema_hint'] = 'Tipp:Um das Schema für ein Attribut anzusehen, genügt ein klick auf den Attributnamen';//'Hint: To view the schema for an attribute, click the attribute name.'; +$lang['attrs_modified'] = 'Einige Attribute (%s) wurden verändert und sind hervorgehoben.';//'Some attributes (%s) were modified and are highlighted below.'; +$lang['attr_modified'] = 'Ein Attribut (%s) wurde verändert und ist hervorgehoben.';//'An attribute (%s) was modified and is highlighted below.'; $lang['viewing_read_only'] = 'Zeige Eintrag im Nurlesemodus';//'Viewing entry in read-only mode.'; -$lang['change_entry_rdn'] = 'Ändere den RDN des Eintrages';//'Change this entry\'s RDN'; -$lang['no_new_attrs_available'] = 'Keine weiteren Attribute verfügbar für diesen Eintrag';//'no new attributes available for this entry'; -$lang['binary_value'] = 'Binärwert';//'Binary value'; -$lang['add_new_binary_attr'] = 'Neuen Binärwert hinzufügen';//'Add New Binary Attribute'; -$lang['add_new_binary_attr_tooltip'] = 'Füge einen neuen Binäwert (Attribut/Wert) aus einer Datei hinzu.';//'Add a new binary attribute/value from a file'; -$lang['alias_for'] = 'Alias für';//'Alias for'; +//$lang['change_entry_rdn'] = 'Ändere den RDN des Eintrages';//'Change this entry\'s RDN'; +$lang['no_new_attrs_available'] = 'Keine weiteren Attribute verfügbar für diesen Eintrag';//'no new attributes available for this entry'; +$lang['no_new_binary_attrs_available'] = 'Keine weiteren Binären Attribute verfügbar für diesen Eintrag.';//'no new binary attributes available for this entry'; +$lang['binary_value'] = 'Binärwert';//'Binary value'; +$lang['add_new_binary_attr'] = 'Neuen Binärwert hinzufügen';//'Add New Binary Attribute'; +// DELETE $lang['add_new_binary_attr_tooltip'] = 'Füge einen neuen Binäwert (Attribut/Wert) aus einer Datei hinzu.';//'Add a new binary attribute/value from a file'; +$lang['alias_for'] = 'Alias für';//'Alias for'; +$lang['required_for'] = 'Notwendige Attribute für die Objektklasse(n) %s';//'Required attribute for objectClass(es) %s'; $lang['download_value'] = 'Wert herunterladen';//'download value'; -$lang['delete_attribute'] = 'Lösche Attribut';//'delete attribute'; +$lang['delete_attribute'] = 'Lösche Attribut';//'delete attribute'; $lang['true'] = 'Wahr';//'true'; $lang['false'] = 'Falsch';//'false'; $lang['none_remove_value'] = 'nichts, entferne den Wert';//?? //'none, remove value'; -$lang['really_delete_attribute'] = 'Lösche das Attribut wirklich';//'Really delete attribute'; +$lang['really_delete_attribute'] = 'Lösche das Attribut wirklich';//'Really delete attribute'; +$lang['add_new_value'] = 'Neuen Wert hinzufügen';//'Add New Value'; // Schema browser -$lang['the_following_objectclasses'] = 'Die folgenden Objektklassen werden vom LDAP-Server unterstützt.';//'The following objectClasses are supported by this LDAP server.'; -$lang['the_following_attributes'] = 'Die folgenden Attribute werden vom LDAP-Server unterstützt.';//'The following attributeTypes are supported by this LDAP server.'; -$lang['the_following_matching'] = 'Die folgenden Suchregeln werden vom LDAP-Server unterstützt.';//'The following matching rules are supported by this LDAP server.'; -$lang['the_following_syntaxes'] = 'Die folgenden Syntaxe werden vom LDAP-Server unterstützt.';//'The following syntaxes are supported by this LDAP server.'; +$lang['the_following_objectclasses'] = 'Die folgenden Objektklassen werden vom LDAP-Server unterstützt.';//'The following objectClasses are supported by this LDAP server.'; +$lang['the_following_attributes'] = 'Die folgenden Attribute werden vom LDAP-Server unterstützt.';//'The following attributeTypes are supported by this LDAP server.'; +$lang['the_following_matching'] = 'Die folgenden Suchregeln werden vom LDAP-Server unterstützt.';//'The following matching rules are supported by this LDAP server.'; +$lang['the_following_syntaxes'] = 'Die folgenden Syntaxe werden vom LDAP-Server unterstützt.';//'The following syntaxes are supported by this LDAP server.'; +$lang['schema_retrieve_error_1']='Der Server unterstützt nicht vollständig das LDAP-Protokoll.';//'The server does not fully support the LDAP protocol.'; +$lang['schema_retrieve_error_2']='Die verwendete PHP-Version setzte keine korrekte LDAP-Abfrage ab.';//'Your version of PHP does not correctly perform the query.'; +$lang['schema_retrieve_error_3']='Oder phpLDAPadmin konnte nicht das Schema für den Server abfragen.';//'Or lastly, phpLDAPadmin doesn\'t know how to fetch the schema for your server.'; $lang['jump_to_objectclass'] = 'Gehe zur objectClass';//'Jump to an objectClass'; +$lang['view_schema_for_oclass'] = 'Zeige die Schemabeschreibung für diese Objektklasse';//'View the schema description for this objectClass'; $lang['jump_to_attr'] = 'Gehe zum Attribut';//'Jump to an attribute'; -$lang['schema_for_server'] = 'Schema für Server';//'Schema for server'; +$lang['jump_to_matching_rule'] = 'Gehe zur Treffer Regel'; // 'Jump to a matching rule'; + +$lang['schema_for_server'] = 'Schema für Server';//'Schema for server'; $lang['required_attrs'] = 'Notwendige Attribute';//'Required Attributes'; +$lang['required'] = 'notwendig';//'required'; $lang['optional_attrs'] = 'Optionale Attribute';//'Optional Attributes'; +$lang['optional_binary_attrs'] = 'Optinales Binärattribut';//'Optional Binary Attributes'; $lang['OID'] = 'OID';//'OID'; +$lang['aliases']='Pseudonym(e)';//'Aliases'; $lang['desc'] = 'Beschreibung';//'Description'; +$lang['no_description']='Keine Beschreibung';//'no description'; $lang['name'] = 'Name';//'Name'; +$lang['equality']='Gleichheit';// 'Equality'; $lang['is_obsolete'] = 'Diese objectClass ist veraltet';//'This objectClass is obsolete'; $lang['inherits'] = 'Abgeleitet von';//'Inherits'; +$lang['inherited_from']='abgeleitet von';//inherited from'; +$lang['parent_to'] = 'Knoten von';//'Parent to'; $lang['jump_to_this_oclass'] = 'Gehe zur objectClass Definition';//'Jump to this objectClass definition'; $lang['matching_rule_oid'] = 'Treffer-Regel OID';//'Matching Rule OID'; $lang['syntax_oid'] = 'Syntax OID';//'Syntax OID'; -$lang['not_applicable'] = 'keine Angabe';//'not applicable'; +$lang['not_applicable'] = 'nicht anwendbar';//'not applicable'; $lang['not_specified'] = 'nicht spezifiziert';//not specified'; +$lang['character']='Zeichen';//'character'; +$lang['characters']='Zeichen';//'characters'; +$lang['used_by_objectclasses']='Verwendet von den Objektklassen';//'Used by objectClasses'; +$lang['used_by_attributes']='Verwendet in den Attributen';//'Used by Attributes'; +$lang['oid']='OID'; // 'OID' +$lang['obsolete']='Veraltet';//'Obsolete'; +$lang['ordering']='Ordnung';//'Ordering'; +$lang['substring_rule']='Teilstring Regel';//'Substring Rule'; +$lang['single_valued']='Einzelner Wert';//'Single Valued'; +$lang['collective']='Sammlung';//'Collective'; +$lang['user_modification']='Benutzer Änderung';//'User Modification'; +$lang['usage']='Verwendung';//'Usage'; +$lang['maximum_length']='Maximale Grösse';//'Maximum Length'; +$lang['attribute_types']='Attribut Typen';//'Attribute Types'; +$lang['attributes']='Attribut Typen';//'Attributes Types'; +$lang['syntaxes']='Syntaxe';//'Syntaxes'; +$lang['objectclasses']='Objekt Klassen';//'objectClasses'; +$lang['matchingrules']='Treffer Regeln';//'Matching Rules'; +$lang['could_not_retrieve_schema_from']='Das Schema konnte nicht abgefragt werden. Betrifft die Einstellung des Servers:';//'Could not retrieve schema from'; +$lang['type']='Typ';// 'Type'; +$lang['no_such_schema_item'] = 'Kein Schema Eintrag für Element: %s';//'No such schema item: "%s"'; + // Deleting entries -$lang['entry_deleted_successfully'] = 'Der Eintrag \'%s\' wurde erfolgreich gelöscht.';//'Entry \'%s\' deleted successfully.'; +$lang['entry_deleted_successfully'] = 'Der Eintrag \'%s\' wurde erfolgreich gelöscht.';//'Entry \'%s\' deleted successfully.'; $lang['you_must_specify_a_dn'] = 'Ein DN muss angegeben werden.';//'You must specify a DN'; -$lang['could_not_delete_entry'] = 'Konnte den Eintrag nicht löschen: %s';//'Could not delete the entry: %s'; +$lang['could_not_delete_entry'] = 'Konnte den Eintrag nicht löschen: %s';//'Could not delete the entry: %s'; +$lang['no_such_entry'] = 'Keinen solchen Eintrag: %s';//'No such entry: %s'; +$lang['delete_dn'] = 'Löschen von %s';//'Delete %s'; +//$lang['permanently_delete_children'] = 'Ebenso dauerhaftes Löschen aller Untereinträge?';//'Permanently delete all children also?'; +$lang['entry_is_root_sub_tree'] = 'Dies ist ein Root-Eintrag und beinhaltet einen Unterbaum mit %s Einträgen.';//'This entry is the root of a sub-tree containing %s entries.'; +$lang['view_entries'] = 'Zeige Einträge';//'view entries'; +$lang['confirm_recursive_delete'] = 'phpLDAPadmin kann diesen Eintrag und die %s Untereinträge rekursiv löschen. Unten ist eine Liste der Einträge angegeben die von diesem Löschen betroffen wären. Sollen alle Einträge gelöscht werden?';//'phpLDAPadmin can recursively delete this entry and all %s of its children. See below for a list of all the entries that this action will delete. Do you want to do this?'; +$lang['confirm_recursive_delete_note'] = 'Hinweis: Dies ist sehr gefährlich und erfolgt auf eines Risiko. Die Ausführung kann nicht rückgängig gemacht werden. Dies betrifft ebenso Aliase, Referenzen und andere Dinge die zu Problemen führen können.';//'Note: this is potentially very dangerous and you do this at your own risk. This operation cannot be undone. Take into consideration aliases, referrals, and other things that may cause problems.'; +$lang['delete_all_x_objects'] = 'Löschen aller "%s" Objekte';//'Delete all %s objects'; +$lang['recursive_delete_progress'] = 'Rekursives Löschen in Arbeit';//'Recursive delete progress'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'Erfolgreiches Löschen des Eintrages "%s" und dessen Unterbaums.';// 'Entry %s and sub-tree deleted successfully.'; +$lang['failed_to_delete_entry'] = 'Fehler beim Löschen des Eintrages %s.';//'Failed to delete entry %s'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'Das Attribut "%s" ist in der phpLDAPadmin Konfiguration als nur lesend deklariert.';//'The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'; +$lang['no_attr_specified'] = 'Kein Attributname angegeben.';//'No attribute name specified.'; +$lang['no_dn_specified'] = 'Kein DN angegeben.';//'No DN specified'; + +// Adding attributes +$lang['left_attr_blank'] = 'Der Wert des Attributes wurde leergelassen. Bitte zurück gehen und erneut versuchen.';//'You left the attribute value blank. Please go back and try again.'; +$lang['failed_to_add_attr'] = 'Fehler beim Hinzufügen des Attributes';//'Failed to add the attribute.'; +$lang['file_empty'] = 'Die ausgewählte Datei ist entweder nicht vorhanden oder leer. Bitte zurückgehen und nochmals versuchen.';//'The file you chose is either empty or does not exist. Please go back and try again.'; +$lang['invalid_file'] = 'Sicherheitsfehler: Die hochgeladene Datei kann bösartig sein.';//'Security error: The file being uploaded may be malicious.'; +$lang['warning_file_uploads_disabled'] = 'Die PHP-Konfiguration (php.ini) gestattet es nicht Dateien hochzuladen. Bitte die php.ini hierzu überprüfen.';//'Your PHP configuration has disabled file uploads. Please check php.ini before proceeding.'; +$lang['uploaded_file_too_big'] = 'Die hochgeladene Datei ist größer als die maximal erlaubte Datei aus der "php.ini". Bitte in der php.ini den Eintrag "upload_max_size" überprüfen.';//'The file you uploaded is too large. Please check php.ini, upload_max_size setting'; +$lang['uploaded_file_partial'] = 'Die auswählte Datei wurde nur unvollständig hochgeladen.';//'The file you selected was only partially uploaded, likley due to a network error.'; +$lang['max_file_size'] = 'Maximal Dateigröße ist: %s';//'Maximum file size: %s'; + +// Updating values +$lang['modification_successful'] = 'Änderung war erfolgreich!';//'Modification successful!'; +$lang['change_password_new_login'] = 'Da das Passwort geändert wurde müssen Sie sich erneut einloggen.'; //'Since you changed your password, you must now login again with your new password.'; // Adding objectClass form -$lang['new_required_attrs'] = 'Neue benötigte Attribute';//'New Required Attributes'; -$lang['requires_to_add'] = 'Diese Aktion zwingt sie folgendes hinzuzufügen';//'This action requires you to add'; +$lang['new_required_attrs'] = 'Neue benötigte Attribute';//'New Required Attributes'; +$lang['requires_to_add'] = 'Diese Aktion zwingt sie folgendes hinzuzufügen';//'This action requires you to add'; $lang['new_attributes'] = 'neue Attribute';//'new attributes'; -$lang['new_required_attrs_instructions'] = 'Anleitung: Um diese objectClass hinzuzuf¨gen müssen sie ';//'Instructions: In order to add this objectClass to this entry, you must specify'; -$lang['that_this_oclass_requires'] = 'die von dieser objectClass benötigt werden. Sie können dies in diesem Formular machen.';//'that this objectClass requires. You can do so in this form.'; -$lang['add_oclass_and_attrs'] = 'ObjectClass und Attribute hinzufügen';//'Add ObjectClass and Attributes'; +$lang['new_required_attrs_instructions'] = 'Anleitung: Um diese objectClass hinzuzufügen müssen sie ';//'Instructions: In order to add this objectClass to this entry, you must specify'; +$lang['that_this_oclass_requires'] = 'die von dieser objectClass benötigt werden. Sie können dies in diesem Formular machen.';//'that this objectClass requires. You can do so in this form.'; +$lang['add_oclass_and_attrs'] = 'ObjectClass und Attribute hinzufügen';//'Add ObjectClass and Attributes'; // General -$lang['chooser_link_tooltip'] = 'Klicken um einen Eintrag (DN) grafisch auszuwählen.';//"Click to popup a dialog to select an entry (DN) graphically'; -$lang['no_updates_in_read_only_mode'] = 'Sie können keine Aktualisierungen durchführen während der Server sich im \'nur lese\'-modus befindet';//'You cannot perform updates while server is in read-only mode'; -$lang['bad_server_id'] = 'Ungültige Server ID';//'Bad server id'; -$lang['not_enough_login_info'] = 'Nicht genügend Angaben zur Anmeldung am Server. Bitte überprüfen sie ihre Konfiguration';//'Not enough information to login to server. Please check your configuration.'; +$lang['chooser_link_tooltip'] = 'Klicken um einen Eintrag (DN) grafisch auszuwählen.';//"Click to popup a dialog to select an entry (DN) graphically'; +$lang['no_updates_in_read_only_mode'] = 'Sie können keine Aktualisierungen durchführen während der Server sich im \'nur lese\'-modus befindet';//'You cannot perform updates while server is in read-only mode'; +$lang['bad_server_id'] = 'Ungültige Server ID';//'Bad server id'; +$lang['not_enough_login_info'] = 'Nicht genügend Angaben zur Anmeldung am Server. Bitte überprüfen sie ihre Konfiguration';//'Not enough information to login to server. Please check your configuration.'; $lang['could_not_connect'] = 'Konnte keine Verbindung zum LDAP Server herstellen.';//'Could not connect to LDAP server.'; -$lang['could_not_perform_ldap_mod_add'] = 'Kann keine \'ldap_mod_add\' Operationen durchführen.';//'Could not perform ldap_mod_add operation.'; -$lang['bad_server_id_underline'] = 'Ungültige Server ID:';//"Bad server_id: '; +$lang['could_not_connect_to_host_on_port'] = 'Konnte keine Verbindung zum Server "%s" am Port "%s" erstellen.';//'Could not connect to "%s" on port "%s"'; +$lang['could_not_perform_ldap_mod_add'] = 'Kann keine \'ldap_mod_add\' Operationen durchführen.';//'Could not perform ldap_mod_add operation.'; +$lang['bad_server_id_underline'] = 'Ungültige Server ID:';//"Bad server_id: '; $lang['success'] = 'Erfolgreich';//"Success'; $lang['server_colon_pare'] = 'Server';//"Server: '; $lang['look_in'] = 'Sehe nach in:';//"Looking in: '; $lang['missing_server_id_in_query_string'] = 'Keine Server ID in der Anfrage angegeben';//'No server ID specified in query string!'; $lang['missing_dn_in_query_string'] = 'Kein DN in der Anfrage angegeben';//'No DN specified in query string!'; -$lang['back_up_p'] = 'Backup...';//"Back Up...'; -$lang['no_entries'] = 'Keine Einträge';//"no entries'; +$lang['back_up_p'] = 'Eine Ebene höher...';//"Back Up...'; +$lang['no_entries'] = 'Keine Einträge';//"no entries'; $lang['not_logged_in'] = 'Nicht eingeloggt';//"Not logged in'; $lang['could_not_det_base_dn'] = 'Konnten Basis-DN nicht ermitteln.';//"Could not determine base DN'; +$lang['reasons_for_error']='Dies kann mehrere Gründe haben. Die häufigsten sind:';//'This could happen for several reasons, the most probable of which are:'; +$lang['please_report_this_as_a_bug']='Bitte senden Sie dies als einen Fehlerbericht.';//'Please report this as a bug.'; +$lang['yes']='Ja';//'Yes' +$lang['no']='Nein';//'No' +$lang['go']='Weiter';//'go' +$lang['delete']='Löschen';//'Delete'; +$lang['back']='Zurück';//'Back'; +$lang['object']='Objekt';//'object'; +//$lang['objects']='Objekte';//'objects'; +$lang['delete_all']='Lösche alle';//'Delete all'; +$lang['url_bug_report']=''+$lang['url_bug_report'];//'https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'Hinweis';//'hint'; +$lang['bug'] = 'Programmfehler';//'bug'; +$lang['warning'] = 'Warnung';//'warning'; +$lang['light'] = 'light'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Weiter';//'Proceed >>'; // Add value form -$lang['add_new'] = 'Neu hinzufügen';//'Add new'; +$lang['add_new'] = 'Neu hinzufügen';//'Add new'; $lang['value_to'] = 'Wert auf';//'value to'; -$lang['server'] = 'Server';//'Server'; //also used in copy_form.php $lang['distinguished_name'] = 'Distinguished Name (eindeutiger Name)';// 'Distinguished Name'; $lang['current_list_of'] = 'Aktuelle Liste von';//'Current list of'; $lang['values_for_attribute'] = 'Werte des Attributes';//'values for attribute'; -$lang['inappropriate_matching_note'] = 'Info: Sie werden einen "inappropriate matching" Fehler erhalten, falls sie nicht
'; //'Note: You will get an "inappropriate matching" error if you have not
' . - 'eine EQUALITY Regel für dieses Attribut auf ihren LDAP Server eingerichtet haben.';//'setup an EQUALITY rule on your LDAP server for this attribute.'; -$lang['enter_value_to_add'] = 'Geben sie den Wert ein den sie hinzufügen möchten:';//'Enter the value you would like to add:'; -$lang['new_required_attrs_note'] = 'Info: Sie werden gegebenenfalles gezwungen sein neue Attribute hinzuzufügen.';//'Note: you may be required to enter new attributes
that this objectClass requires.'; +$lang['inappropriate_matching_note'] = 'Info: Sie werden einen "inappropriate matching" Fehler erhalten, falls sie nicht'; //'Note: You will get an "inappropriate matching" error if you have not
' . + ' eine "EQUALITY" Regel für dieses Attribut auf ihren LDAP Server eingerichtet haben.';//'setup an EQUALITY rule on your LDAP server for this attribute.'; +$lang['enter_value_to_add'] = 'Geben sie den Wert ein den sie hinzufügen möchten:';//'Enter the value you would like to add:'; +$lang['new_required_attrs_note'] = 'Info: Sie werden gegebenenfalles gezwungen sein neue Attribute hinzuzufügen.';//'Note: you may be required to enter new attributes
that this objectClass requires.'; $lang['syntax'] = 'Syntax';//'Syntax'; //Copy.php -$lang['copy_server_read_only'] = 'Sie können keine Aktualisierungen durchführen während der Server sich im \'nur lese\'-modus befindet';//"You cannot perform updates while server is in read-only mode'; +$lang['copy_server_read_only'] = 'Sie können keine Aktualisierungen durchführen während der Server sich im \'nur lese\'-modus befindet';//"You cannot perform updates while server is in read-only mode'; $lang['copy_dest_dn_blank'] = 'Sie haben kein Ziel DN angegeben';//"You left the destination DN blank.'; $lang['copy_dest_already_exists'] = 'Der Zieleintrag (%s) existiert bereits.';//"The destination entry (%s) already exists.'; $lang['copy_dest_container_does_not_exist'] = 'Der Zielcontainer (%s) existiert nicht.';//'The destination container (%s) does not exist.'; @@ -186,6 +295,15 @@ $lang['copy_failed'] = 'Kopieren des DN fehlgeschlagen: ';//'Failed to copy DN: //edit.php $lang['missing_template_file'] = 'Warnung: Template Datei nicht gefunden';//'Warning: missing template file, '; $lang['using_default'] = 'Standardeinstellung verwenden';//'Using default.'; +$lang['template'] = 'Vorlage';//'Template'; +$lang['must_choose_template'] = 'Eine Vorlage muss ausgewählt sein';//'You must choose a template'; +$lang['invalid_template'] = 'Die Vorlage "%s" ist ungültig';// '%s is an invalid template'; +$lang['using_template'] = 'Verwende Vorlage';//'using template'; +$lang['go_to_dn'] = 'Gehe zu %s';//'Go to %s'; +$lang['structural_object_class_cannot_remove'] = 'Dies ist eine strukturelle Objektklasse und kann nicht entfernt werden.';//'This is a stuctural ObjectClass and cannot be removed.'; +$lang['structural'] = 'Strukturell';//'stuctural'; + + //copy_form.php $lang['copyf_title_copy'] = 'Kopiere';//"Copy '; @@ -195,111 +313,144 @@ $lang['copyf_dest_dn_tooltip'] = 'Der komplette DN des Eintrages der beim Kopier $lang['copyf_dest_server'] = 'Zielserver';//"Destination Server'; $lang['copyf_note'] = 'Info: Kopieren zwischen unterschiedlichen Servern funktioniert nur wenn keine Unvereinbarkeiten im Schema auftreten';//"Note: Copying between different servers only works if there are no schema violations'; $lang['copyf_recursive_copy'] = 'Rekursiv kopiert auch alle Unterobjekte';//"Recursively copy all children of this object as well.'; +$lang['recursive_copy'] = 'Rekursives kopieren';//'Recursive copy'; +$lang['filter'] = 'Filter';//'Filter'; +$lang['filter_tooltip'] = 'Bei der Ausfürung des rekursiven Kopierens werden nur die Einträge verwendet, die mit dem Filter übereinstimmen';// 'When performing a recursive copy, only copy those entries which match this filter'; + //create.php -$lang['create_required_attribute'] = 'Fehler, sie haben einen Wert für ein benötigtes Attribut frei gelassen.';//"Error, you left the value blank for required attribute '; -$lang['create_redirecting'] = 'Weiterleitung';//"Redirecting'; -$lang['create_here'] = 'hier';//"here'; -$lang['create_could_not_add'] = 'Konnte das Objekt dem LDAP-Server nicht hinzufügen.';//"Could not add the object to the LDAP server.'; +$lang['create_required_attribute'] = 'Fehler, sie haben einen Wert für ein benötigtes Attribut frei gelassen.';//"Error, you left the value blank for required attribute '; +$lang['redirecting'] = 'Weiterleitung';//"Redirecting'; moved from create_redirection -> redirection +$lang['here'] = 'hier';//"here'; renamed vom create_here -> here +$lang['create_could_not_add'] = 'Konnte das Objekt dem LDAP-Server nicht hinzufügen.';//"Could not add the object to the LDAP server.'; //create_form.php $lang['createf_create_object'] = 'Erzeuge einen neuen Eintag';//"Create Object'; -$lang['createf_choose_temp'] = 'Vorlage wählen';//"Choose a template'; -$lang['createf_select_temp'] = 'Wählen sie eine Vorlage für das Objekt';//"Select a template for the creation process'; +$lang['createf_choose_temp'] = 'Vorlage wählen';//"Choose a template'; +$lang['createf_select_temp'] = 'Wählen sie eine Vorlage für das Objekt';//"Select a template for the creation process'; $lang['createf_proceed'] = 'Weiter';//"Proceed >>'; +$lang['rdn_field_blank'] = 'Das RDN Feld wurde leer gelassen.';//'You left the RDN field blank.'; +$lang['container_does_not_exist'] = 'Der angegenben Eintrag (%s) ist nicht vorhanden. Bitte erneut versuchen.';// 'The container you specified (%s) does not exist. Please try again.'; +$lang['no_objectclasses_selected'] = 'Es wurde kein ObjectClasses für diesen Eintrag ausgewählt. Bitte zurückgehen und korrigieren';//'You did not select any ObjectClasses for this object. Please go back and do so.'; +$lang['hint_structural_oclass'] = 'Hinweis: Es muss mindestens ein Strukturelle ObjectClass ausgewählt sein.';//'Hint: You must choose at least one structural objectClass'; //creation_template.php $lang['ctemplate_on_server'] = 'Auf dem Server';//"On server'; $lang['ctemplate_no_template'] = 'Keine Vorlage angegeben in den POST Variabeln';//"No template specified in POST variables.'; -$lang['ctemplate_config_handler'] = 'Ihre Konfiguration spezifiziert für diese Vorlage die Routine';//"Your config specifies a handler of'; +$lang['ctemplate_config_handler'] = 'Ihre Konfiguration spezifiziert für diese Vorlage die Routine';//"Your config specifies a handler of'; $lang['ctemplate_handler_does_not_exist'] = '. Diese Routine existiert nicht im \'templates/creation\' Verzeichnis';//"for this template. But, this handler does not exist in the 'templates/creation' directory.'; +$lang['create_step1'] = 'Schritt 1 von 2: Name und Objektklasse(n)';//'Step 1 of 2: Name and ObjectClass(es)'; +$lang['create_step2'] = 'Schritt 2 von 2: Bestimmen der Attribute und Werte';//'Step 2 of 2: Specify attributes and values'; +$lang['relative_distinguished_name'] = 'Relativer Distingushed Name';//'Relative Distinguished Name'; +$lang['rdn'] = 'RDN';//'RDN'; +$lang['rdn_example'] = '(Beispiel: cn=MeineNeuePerson)';//'(example: cn=MyNewPerson)'; +$lang['container'] = 'Behälter';//'Container'; + // search.php -$lang['you_have_not_logged_into_server'] = 'Sie haben sich am ausgewählten Server nicht angemeldet. Sie k&oouml;nnen keine Suche durchführen.';//'You have not logged into the selected server yet, so you cannot perform searches on it.'; +$lang['you_have_not_logged_into_server'] = 'Sie haben sich am ausgewählten Server nicht angemeldet. Sie können keine Suche durchführen.';//'You have not logged into the selected server yet, so you cannot perform searches on it.'; $lang['click_to_go_to_login_form'] = 'Klicken sie hier um zur Anmeldeseite zu gelangen';//'Click here to go to the login form'; $lang['unrecognized_criteria_option'] = 'Unbekannte Option';// 'Unrecognized criteria option: '; -$lang['if_you_want_to_add_criteria'] = 'Falls eigene Auswahlkriterien hinzugefügt werden sollen, muss \'search.php\' editiert werden';//'If you want to add your own criteria to the list. Be sure to edit search.php to handle them. Quitting.'; -$lang['entries_found'] = 'Gefundene Einträge: ';//'Entries found: '; +$lang['if_you_want_to_add_criteria'] = 'Falls eigene Auswahlkriterien hinzugefügt werden sollen, muss \'search.php\' editiert werden';//'If you want to add your own criteria to the list. Be sure to edit search.php to handle them. Quitting.'; +$lang['entries_found'] = 'Gefundene Einträge: ';//'Entries found: '; $lang['filter_performed'] = 'Angewanter Filter: ';//'Filter performed: '; -$lang['search_duration'] = 'Suche durch phpLDAPadmin ausgeführt in';//'Search performed by phpLDAPadmin in'; +$lang['search_duration'] = 'Suche durch phpLDAPadmin ausgeführt in';//'Search performed by phpLDAPadmin in'; $lang['seconds'] = 'Sekunden';//'seconds'; // search_form_advanced.php $lang['scope_in_which_to_search'] = 'Bereich der durchsucht wird.';//'The scope in which to search'; -$lang['scope_sub'] = 'Sub (Suchbase und alle Unterverzeichnisebenen)';//'Sub (entire subtree)'; +$lang['scope_sub'] = 'Sub (Suchbasis und alle Unterverzeichnisebenen)';//'Sub (entire subtree)'; $lang['scope_one'] = 'One (Suchbasis und eine Unterverzeichnisebene)';//'One (one level beneath base)'; $lang['scope_base'] = 'Base (Nur Suchbasis)';//'Base (base dn only)'; $lang['standard_ldap_search_filter'] = 'Standard LDAP Suchfilter. Bsp.: (&(sn=Smith)(givenname=David))';//'Standard LDAP search filter. Example: (&(sn=Smith)(givenname=David))'; $lang['search_filter'] = 'Suchfilter';//'Search Filter'; $lang['list_of_attrs_to_display_in_results'] = 'Kommaseparierte Liste der anzuzeigenden Attribute.';//'A list of attributes to display in the results (comma-separated)'; -$lang['show_attributes'] = 'Zeige Attribute';//'Show Attributes'; // search_form_simple.php -$lang['search_for_entries_whose'] = 'Suche nach Einträgen welche:';//'Search for entries whose:'; -$lang['equals'] = 'entspricht';//'equals'; $lang['starts with'] = 'beginnt mit';//'starts with'; -$lang['contains'] = 'enthält';//'contains'; $lang['ends with'] = 'endet auf';//'ends with'; $lang['sounds like'] = 'klingt wie';//'sounds like'; + // server_info.php $lang['could_not_fetch_server_info'] = 'Konnte keine LDAP Informationen vom Server empfangen';//'Could not retrieve LDAP information from the server'; -$lang['server_info_for'] = 'Serverinformationen für: ';//'Server info for: '; -$lang['server_reports_following'] = 'Der Server meldete die folgenden Informationen über sich';//'Server reports the following information about itself'; +$lang['server_info_for'] = 'Serverinformationen für: ';//'Server info for: '; +$lang['server_reports_following'] = 'Der Server meldete die folgenden Informationen über sich';//'Server reports the following information about itself'; $lang['nothing_to_report'] = 'Der Server hat keine Informationen gemeldet';//'This server has nothing to report.'; //update.php -$lang['update_array_malformed'] = 'Das \'update_array\' wird falsch dargestellt. Dies könnte ein phpLDAPadmin Fehler sein. Bitte Berichten sie uns davon.';//'update_array is malformed. This might be a phpLDAPadmin bug. Please report it.'; -$lang['could_not_perform_ldap_modify'] = 'Konnte die \'ldap_modify\' Operation nicht ausführen.';//'Could not perform ldap_modify operation.'; +$lang['update_array_malformed'] = 'Das "update_array" wird falsch dargestellt. Dies könnte ein phpLDAPadmin Fehler sein. Bitte Berichten sie uns davon.';//'update_array is malformed. This might be a phpLDAPadmin bug. Please report it.'; +$lang['could_not_perform_ldap_modify'] = 'Konnte die \'ldap_modify\' Operation nicht ausführen.';//'Could not perform ldap_modify operation.'; // update_confirm.php -$lang['do_you_want_to_make_these_changes'] = 'Wollen sie diese Änderungen übernehmen?';//'Do you want to make these changes?'; +$lang['do_you_want_to_make_these_changes'] = 'Wollen sie diese Änderungen übernehmen?';//'Do you want to make these changes?'; $lang['attribute'] = 'Attribute';//'Attribute'; $lang['old_value'] = 'Alter Wert';//'Old Value'; $lang['new_value'] = 'Neuer Wert';//'New Value'; -$lang['attr_deleted'] = '[Wert gelöscht]';//'[attribute deleted]'; +$lang['attr_deleted'] = '[Wert gelöscht]';//'[attribute deleted]'; $lang['commit'] = 'Anwenden';//'Commit'; -$lang['cancel'] = 'Verwerfen';//'Cancel'; -$lang['you_made_no_changes'] = 'Sie haben keine Änderungen vorgenommen.';//'You made no changes'; -$lang['go_back'] = 'Zurück';//'Go back'; +$lang['cancel'] = 'Abbruch';//'Cancel'; +$lang['you_made_no_changes'] = 'Sie haben keine Änderungen vorgenommen.';//'You made no changes'; +$lang['go_back'] = 'Zurück';//'Go back'; // welcome.php -$lang['welcome_note'] = 'Benützen sie das Menu auf der linken Seite zur Navigation.';//'Use the menu to the left to navigate'; +$lang['welcome_note'] = 'Benutzen sie das Menu auf der linken Seite zur Navigation.';//'Use the menu to the left to navigate'; $lang['credits'] = 'Vorspann';//'Credits'; -$lang['changelog'] = 'Änderungsdatei';//'ChangeLog'; -$lang['documentation'] = 'Dokumentation';// 'Documentation'; +$lang['changelog'] = 'Änderungsdatei';//'ChangeLog'; +//$lang['documentation'] = 'Dokumentation';// 'Documentation'; +$lang['donate'] = 'Spende';//'Donate'; + +$lang['purge_cache'] = 'Cache bereinigen';//'Purge caches'; +$lang['no_cache_to_purge'] = 'Kein Cache zu bereinigen';//'No cache to purge.'; +$lang['done_purging_caches'] = 'Es wurden %s Bytes aus dem Cache bereinigt.';//'Purged %s bytes of cache.'; + + // view_jpeg_photo.php $lang['unsafe_file_name'] = 'Unsicherer Dateiname:';//'Unsafe file name: '; $lang['no_such_file'] = 'Keine Datei unter diesem Namen';//'No such file: '; //function.php -$lang['auto_update_not_setup'] = 'auto_uid_numbers wurde in der Konfiguration (%s aktiviert, aber der Mechanismus (auto_uid_number_mechanism) nicht. Bitte diese Problem korrigieren.';//"You have enabled auto_uid_numbers for %s in your configuration, but you have not specified the auto_uid_number_mechanism. Please correct this problem.'; -$lang['uidpool_not_set'] = 'Der Mechanismus auto_uid_number_mechanism ist als uidpool für den Server %s festgelegt, jedoch wurde nicht der auto_uid_number_uid_pool_dn festgelegt. Bitte korrigieren und dann weiter verfahren.';//"You specified the auto_uid_number_mechanism as uidpool in your configuration for server %s, but you did not specify the audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; +$lang['auto_update_not_setup'] = '"auto_uid_numbers" wurde in der Konfiguration (%s) aktiviert, aber der Mechanismus (auto_uid_number_mechanism) nicht. Bitte diese Problem korrigieren.';//"You have enabled auto_uid_numbers for %s in your configuration, but you have not specified the auto_uid_number_mechanism. Please correct this problem.'; +$lang['uidpool_not_set'] = 'Der Mechanismus "auto_uid_number_mechanism" ist als "uidpool" für den Server (%s) festgelegt, jedoch wurde nicht der "auto_uid_number_uid_pool_dn" festgelegt. Bitte korrigieren und dann weiter verfahren.';//"You specified the auto_uid_number_mechanism as uidpool in your configuration for server %s, but you did not specify the audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; -$lang['uidpool_not_exist'] = 'Es scheint so, dass der uidPool - der in der Konfiguration festgelegt ist - nicht vorhanden ist.';//"It appears that the uidPool you specified in your configuration (%s) does not exist.'; +$lang['uidpool_not_exist'] = 'Es scheint so, dass der "uidPool" - der in der Konfiguration festgelegt ist - nicht vorhanden ist.';//"It appears that the uidPool you specified in your configuration (%s) does not exist.'; -$lang['specified_uidpool'] = 'Der auto_uid_number_mechanism wurde auf search in der Konfiguration des Servers %s festgelegt, aber es wurde der Wert fü auto_uid_number_search_base nicht gesetzt. Bitte korrigieren und dann weiter verfahren.';//"You specified the auto_uid_number_mechanism as search in your configuration for server %s, but you did not specify the auto_uid_number_search_base. Please specify it before proceeding.'; +$lang['specified_uidpool'] = 'Der "auto_uid_number_mechanism" wurde auf "search" in der Konfiguration des Servers (%s) festgelegt, aber es wurde der Wert fü "auto_uid_number_search_base" nicht gesetzt. Bitte korrigieren und dann weiter verfahren.';//"You specified the auto_uid_number_mechanism as search in your configuration for server %s, but you did not specify the auto_uid_number_search_base. Please specify it before proceeding.'; +$lang['bad_auto_uid_search_base'] = 'Die phpLDAPadmin Konfiguration für den Server "%s" gibt eine ungültige Suchbasis für "auto_uid_search_base" an.';//'Your phpLDAPadmin configuration specifies an invalid auto_uid_search_base for server %s'; +$lang['auto_uid_invalid_credential'] = 'Konnte nicht mit "%s" verbinden';// 'Unable to bind to %s with your with auto_uid credentials. Please check your configuration file.'; +$lang['auto_uid_invalid_value'] = 'Es wurde ein ungültiger Wert für "auto_uid_number_mechanism" (%s) festgelegt. Gültig sind nur die Werte "uidpool" und "search". Bitte den Fehler korrigieren. ';//"You specified an invalid value for auto_uid_number_mechanism (%s) in your configration. Only uidpool and search are valid. Please correct this problem.'; -$lang['auto_uid_invalid_value'] = 'Es wurde ein ungültiger Wert für auto_uid_number_mechanism(%s) festgelegt. Gültig sind nur die Werte uidpool und search. Bitte den Fehler korrigieren. ';//"You specified an invalid value for auto_uid_number_mechanism (%s) in your configration. Only uidpool and search are valid. Please correct this problem.'; +$lang['error_auth_type_config'] = 'Fehler: Ein Fehler ist in der Konfiguration (config.php) aufgetreten. Die einzigen beiden erlaubten Werte im Konfigurationsteil "auth_type" zu einem LDAP-Server ist "config" oder "form". Eingetragen ist aber "%s", was nicht erlaubt ist.';//"Error: You have an error in your config file. The only two allowed values for 'auth_type' in the $servers section are 'config' and 'form'. You entered '%s', which is not allowed. '; -$lang['error_auth_type_config'] = 'Fehler: Ein Fehler ist in der Konfiguration (config.php) aufgetreten. Die einzigen beiden erlaubten Werte im Konfigurationsteil \'auth_type\' zu einem LDAP-Server ist \'config\' oder \'form\'. Eingetragen ist aber %s, was nicht erlaubt ist.';//"Error: You have an error in your config file. The only two allowed values for 'auth_type' in the $servers section are 'config' and 'form'. You entered '%s', which is not allowed. '; +$lang['unique_attrs_invalid_credential'] = 'Es konnten nicht an "%s" mit dem Berechtigungsnachweis von "unique_attrs" verbunden werden. Bitte die Konfigurationdatei (config.php) überprüfen.';//'Unable to bind to %s with your with unique_attrs credentials. Please check your configuration file.'; +$lang['unique_attr_failed'] = 'Der Versuch von "%s" (%s) an "%s%" ist nicht erlaubt. Das Attibut/Wert gehört zu einem anderen Eintrag. Vielleicht möchten Sie nach dem Wert suchen?';// ERROR DONT'T USE HTML!!! //'Your attempt to add %s (%s) to
%s
is NOT allowed. That attribute/value belongs to another entry.

You might like to search for that entry.'; -$lang['php_install_not_supports_tls'] = 'Die verwendete PHP-Version unterstützt kein TLS (verschlüsselte Verbindung).';//"Your PHP install does not support TLS'; -$lang['could_not_start_tls'] = 'TLS konnte nicht gestartet werden.
Bitte die LDAP-Server-Konfiguration überprüfen.';//"Could not start TLS.
Please check your LDAP server configuration.'; -$lang['auth_type_not_valid'] = 'Die Konfigurationsdatei enthält einen Fehler. Der Eintrag für \'auth_type\' %s ist nicht gü,ltig';// 'You have an error in your config file. auth_type of %s is not valid.'; -$lang['ldap_said'] = 'LDAP meldet: %s

';//"LDAP said: %s

'; + +$lang['php_install_not_supports_tls'] = 'Die verwendete PHP-Version unterstützt kein TLS (verschlüsselte Verbindung).';//"Your PHP install does not support TLS'; +$lang['could_not_start_tls'] = 'TLS konnte nicht gestartet werden. Bitte die LDAP-Server-Konfiguration überprüfen.';//"Could not start TLS.
Please check your LDAP server configuration.'; +$lang['could_not_bind_anon'] = 'Konnte keine Anonymous Anmeldung zum Server herstellen.';//'Could not bind anonymously to server.'; +$lang['could_not_bind'] = 'Konnte keine Verbindung zum LDAP-Server herstellen';//'Could not bind to the LDAP server.'; +//$lang['anon_required_for_login_attr'] = 'Bei der Verwendung des Anmeldeprozedur "login_attr" muss der Server Anonymous Anmelden zulassen.';//'When using the login_attr feature, the LDAP server must support anonymous binds.'; +$lang['anonymous_bind'] = 'Anonymous anmelden';//'Anonymous Bind'; +//$lang['auth_type_not_valid'] = 'Die Konfigurationsdatei enthält einen Fehler. Der Eintrag für \'auth_type\' mit \'%s\' ist nicht gültig';// 'You have an error in your config file. auth_type of %s is not valid.'; +$lang['bad_user_name_or_password'] = 'Falscher Benutzername oder Passwort. Bitte erneut versuchen.';//'Bad username or password. Please try again.'; +$lang['redirecting_click_if_nothing_happens'] = 'Automatische Umleitung. Falls dies nicht automatisch erfolgt dann hier klicken.';//'Redirecting... Click here if nothing happens.'; +$lang['successfully_logged_in_to_server'] = 'Erfolgreich am Server %s angemeldet';//'Successfully logged into server %s'; +$lang['could_not_set_cookie'] = 'Konnte kein \'Cookie\' setzten.';//'Could not set cookie.'; +$lang['ldap_said'] = 'LDAP meldet: %s';//"LDAP said: %s

'; $lang['ferror_error'] = 'Fehler';//"Error'; -$lang['fbrowse'] = 'Überfliegen';//"browse'; -$lang['delete_photo'] = 'Lösche Foto';//"Delete Photo'; -$lang['install_not_support_blowfish'] = 'Die verwendete PHP-Version unterstützt keine Blowfish Verschlüsselung.';//"Your PHP install does not support blowfish encryption.'; -$lang['install_no_mash'] = 'Die verwendete PHP-Version unterstützt nicht die Funktion mhash(), daher kann kein SHA Hash verwendet werden.';// "Your PHP install does not have the mhash() function. Cannot do SHA hashes.'; -$lang['jpeg_contains_errors'] = 'Die Bilddatei enthält Fehler';//"jpegPhoto contains errors
'; -$lang['ferror_number'] = 'Fehlernummer: %s(%s)

';//"Error number: %s (%s)

'; -$lang['ferror_discription'] ='Beschreibung: %s

';// "Description: %s

'; -$lang['ferror_number_short'] = 'Fehlernummer:%s

';//"Error number: %s

'; -$lang['ferror_discription_short'] = 'Beschreibung: (keine Beschreibung verfügbar)
';//"Description: (no description available)
'; -$lang['ferror_submit_bug'] = 'Ist das ein phpLDAPadmin Fehler? Wenn dies so ist, dann bitte darüber berichten';//"Is this a phpLDAPadmin bug? If so, please report it.'; +$lang['fbrowse'] = 'Ãœberfliegen';//"browse'; +$lang['delete_photo'] = 'Lösche Foto';//"Delete Photo'; +$lang['install_not_support_blowfish'] = 'Die verwendete PHP-Version unterstützt keine Blowfish Verschlüsselung.';//"Your PHP install does not support blowfish encryption.'; +$lang['install_not_support_md5crypt'] = 'Die eingesetzte PHP-Version unterstützt keine MD5-Verschlüsselung.';//'Your PHP install does not support md5crypt encryption.'; +$lang['install_no_mash'] = 'Die verwendete PHP-Version unterstützt nicht die Funktion mhash(), daher kann kein SHA Hash verwendet werden.';// "Your PHP install does not have the mhash() function. Cannot do SHA hashes.'; +$lang['jpeg_contains_errors'] = 'Die Bilddatei enthält Fehler';//"jpegPhoto contains errors
'; +$lang['ferror_number'] = 'Fehlernummer: %s (%s)';//"Error number: %s (%s)

'; +$lang['ferror_discription'] ='Beschreibung: %s';// "Description: %s

'; +$lang['ferror_number_short'] = 'Fehlernummer: %s';//"Error number: %s

'; +$lang['ferror_discription_short'] = 'Beschreibung: (keine Beschreibung verfügbar)';//"Description: (no description available)
'; +$lang['ferror_submit_bug'] = 'Ist das ein phpLDAPadmin Fehler? Wenn dies so ist, dann bitte darüber berichten';//"Is this a phpLDAPadmin bug? If so, please report it.'; $lang['ferror_unrecognized_num'] = 'Unbekannte Fehlernummer:';//"Unrecognized error number: '; $lang['ferror_nonfatil_bug'] = '

Ein nicht fataler Fehler in phpLDAPadmin gefunden!
Fehler:%s (%s)
Datei:%sZeile:%s, aufgerufen von %s
Version:PLA: %s, PHP: %s, SAPI: %s
Web server:%s
Bitte diesen Fehler melden (durch anklicken)..

';//"
You found a non-fatal phpLDAPadmin bug!
Error:%s (%s)
File:%s line %s, caller %s
Versions:PLA: %s, PHP: %s, SAPI: %s
Web server:%s
Please report this bug by clicking here.

'; @@ -308,22 +459,109 @@ $lang['ferror_congrats_found_bug'] = '
%s'; +$lang['authenticate_to_server'] = 'Authentifizierung mit Server %s';//'Authenticate to server %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Achtung: Diese Webverbindung ist unverschlüsselt.';//'Warning: This web connection is unencrypted.'; +$lang['not_using_https'] = 'Es wird keine verschlüsselte Verbindung (\'https\') verwendet. Der Webbrowser übermittelt die Anmeldeinformationen im Klartext.';// 'You are not use \'https\'. Web browser will transmit login information in clear text.'; +$lang['login_dn'] = 'Anmelde DN';//'Login DN'; +$lang['user_name'] = 'Benutzername';//'User name'; +$lang['password'] = 'Passwort';//'Password'; +$lang['authenticate'] = 'Authentifizierung';//'Authenticate'; + +// Entry browser +$lang['entry_chooser_title'] = 'Einträge auswählen';//'Entry Chooser'; + +// Index page +$lang['need_to_configure'] = 'phpLDAPadmin muss konfiguriert werden. Bitte die Datei "config.php" erstellen. Ein Beispiel einer "config.php" liegt als Datei "config.php.example" bei.';// ';//'You need to configure phpLDAPadmin. Edit the file \'config.php\' to do so. An example config file is provided in \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Löschen ist im Nur-Lese-Modus nicht erlaubt.';//'Deletes not allowed in read only mode.'; +$lang['error_calling_mass_delete'] = 'Fehler im Aufruf von "mass_delete.php". "mass_delete" ist in den POST-Variablen nicht vorhanden.';//'Error calling mass_delete.php. Missing mass_delete in POST vars.'; +$lang['search_attrs_wrong_count'] = 'Die config.php beinhaltet einen fehlerhaften Eintrag. Die anzahl der Attribute in $search_attributes und $search_attributes_diplay ist unterschiedlich';//'Your config.php has an error. The number of attributes in $search_attributes and $search_attributes_display is different'; +$lang['mass_delete_not_array'] = 'Die POST-Variable "mass_delete" ist kein Array.';//'mass_delete POST var is not an array.'; +$lang['mass_delete_not_enabled'] = '"Viel-Löschen" ist nicht aktiviert. Bitte in der der "config.php" aktivieren vor dem Weitermachen.';//'Mass deletion is not enabled. Please enable it in config.php before proceeding.'; +$lang['mass_deleting'] = 'Viel-Löschen';//'Mass Deleting'; +$lang['mass_delete_progress'] = 'Löschprozess auf Server "%s"';//'Deletion progress on server "%s"'; +$lang['malformed_mass_delete_array'] = 'Das Array "mass_delete" ist falsch dargestellt.';//'Malformed mass_delete array.'; +$lang['no_entries_to_delete'] = 'Es wurde kein zu löschender Eintrag ausgewählt.';//'You did not select any entries to delete.'; +$lang['deleting_dn'] = 'Lösche "%s"';//'Deleting %s'; +$lang['total_entries_failed'] = '%s von %s Einträgen konnten nicht gelöscht werden.';//'%s of %s entries failed to be deleted.'; +$lang['all_entries_successful'] = 'Alle Einträge wurden erfolgreich gelöscht.';//'All entries deleted successfully.'; +$lang['confirm_mass_delete'] = 'Bitte das Löschen von %s Einträgen auf dem Server %s bestätigen';//'Confirm mass delete of %s entries on server %s'; +$lang['yes_delete'] = 'Ja, Löschen!';//'Yes, delete!'; + + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Das Umbenennen von einem Eintrag mit Untereinträgen ist nicht Möglich. Es ist nur auf den Untersten Einträgen gestattet.';// 'You cannot rename an entry which has children entries (eg, the rename operation is not allowed on non-leaf entries)'; +$lang['no_rdn_change'] = 'Der RDN wurde nicht verändert';//'You did not change the RDN'; +$lang['invalid_rdn'] = 'Ungültiger RDN Wert';//'Invalid RDN value'; +$lang['could_not_rename'] = 'Der Eintrag konnte nicht umbenannt werden';//'Could not rename the entry'; + + ?> diff --git a/lang/recoded/en.php b/lang/recoded/en.php index bba4041..64a5fee 100644 --- a/lang/recoded/en.php +++ b/lang/recoded/en.php @@ -1,14 +1,18 @@ DN'; +$lang['base_dn'] = 'Base DN'; $lang['search_scope'] = 'Search Scope'; -$lang['search_ filter'] = 'Search Filter'; $lang['show_attributes'] = 'Show Attributtes'; +$lang['attributes'] = 'Attributes'; $lang['Search'] = 'Search'; -$lang['equals'] = 'equals'; -$lang['starts_with'] = 'starts with'; -$lang['contains'] = 'contains'; -$lang['ends_with'] = 'ends with'; -$lang['sounds_like'] = 'sounds like'; +$lang['predefined_search_str'] = 'Select a predefined search'; +$lang['predefined_searches'] = 'Predefined Searches'; +$lang['no_predefined_queries'] = 'No queries have been defined in config.php.'; +$lang['export_results'] = 'export results'; +$lang['unrecoginzed_search_result_format'] = 'Unrecognized search result format: %s'; +$lang['format'] = 'Format'; +$lang['list'] = 'list'; +$lang['table'] = 'table'; +$lang['bad_search_display'] = 'Your config.php specifies an invalid value for $default_search_display: %s. Please fix it'; +$lang['page_n'] = 'Page %d'; +$lang['no_results'] = 'The search found no results.'; // Tree browser -$lang['request_new_feature'] = 'Request a new feature'; -$lang['see_open_requests'] = 'see open requests'; +$lang['request_new_feature'] = 'Request feature'; $lang['report_bug'] = 'Report a bug'; -$lang['see_open_bugs'] = 'see open bugs'; $lang['schema'] = 'schema'; $lang['search'] = 'search'; $lang['create'] = 'create'; @@ -47,98 +55,166 @@ $lang['info'] = 'info'; $lang['import'] = 'import'; $lang['refresh'] = 'refresh'; $lang['logout'] = 'logout'; -$lang['create_new'] = 'Create New'; +$lang['create_new'] = 'Create new entry here'; $lang['view_schema_for'] = 'View schema for'; $lang['refresh_expanded_containers'] = 'Refresh all expanded containers for'; $lang['create_new_entry_on'] = 'Create a new entry on'; +$lang['new'] = 'new'; $lang['view_server_info'] = 'View server-supplied information'; $lang['import_from_ldif'] = 'Import entries from an LDIF file'; $lang['logout_of_this_server'] = 'Logout of this server'; $lang['logged_in_as'] = 'Logged in as: '; +$lang['this_base_dn_is_not_valid'] = 'This is not a valid DN.'; +$lang['this_base_dn_does_not_exist'] = 'This entry does not exist.'; $lang['read_only'] = 'read only'; +$lang['read_only_tooltip'] = 'This attribute has been flagged as read only by the phpLDAPadmin administrator'; $lang['could_not_determine_root'] = 'Could not determine the root of your LDAP tree.'; $lang['ldap_refuses_to_give_root'] = 'It appears that the LDAP server has been configured to not reveal its root.'; $lang['please_specify_in_config'] = 'Please specify it in config.php'; $lang['create_new_entry_in'] = 'Create a new entry in'; $lang['login_link'] = 'Login...'; +$lang['login'] = 'login'; +$lang['base_entry_does_not_exist'] = 'The base entry does not exist.'; +$lang['create_it'] = 'Create it?'; // Entry display $lang['delete_this_entry'] = 'Delete this entry'; $lang['delete_this_entry_tooltip'] = 'You will be prompted to confirm this decision'; $lang['copy_this_entry'] = 'Copy this entry'; $lang['copy_this_entry_tooltip'] = 'Copy this object to another location, a new DN, or another server'; -$lang['export_to_ldif'] = 'Export to LDIF'; -$lang['export_to_ldif_tooltip'] = 'Save an LDIF dump of this object'; -$lang['export_subtree_to_ldif_tooltip'] = 'Save an LDIF dump of this object and all of its children'; -$lang['export_subtree_to_ldif'] = 'Export subtree to LDIF'; -$lang['export_to_ldif_mac'] = 'Macintosh style line ends'; -$lang['export_to_ldif_win'] = 'Windows style line ends'; -$lang['export_to_ldif_unix'] = 'Unix style line ends'; +$lang['export'] = 'Export'; +$lang['export_lcase'] = 'export'; +$lang['export_tooltip'] = 'Save a dump of this object'; +$lang['export_subtree_tooltip'] = 'Save a dump of this object and all of its children'; +$lang['export_subtree'] = 'Export subtree'; $lang['create_a_child_entry'] = 'Create a child entry'; -$lang['add_a_jpeg_photo'] = 'Add a jpegPhoto'; $lang['rename_entry'] = 'Rename Entry'; $lang['rename'] = 'Rename'; $lang['add'] = 'Add'; $lang['view'] = 'View'; -$lang['add_new_attribute'] = 'Add New Attribute'; -$lang['add_new_attribute_tooltip'] = 'Add a new attribute/value to this entry'; -$lang['internal_attributes'] = 'Internal Attributes'; +$lang['view_one_child'] = 'View 1 child'; +$lang['view_children'] = 'View %s children'; +$lang['add_new_attribute'] = 'Add new attribute'; +$lang['add_new_objectclass'] = 'Add new ObjectClass'; $lang['hide_internal_attrs'] = 'Hide internal attributes'; $lang['show_internal_attrs'] = 'Show internal attributes'; -$lang['internal_attrs_tooltip'] = 'Attributes set automatically by the system'; -$lang['entry_attributes'] = 'Entry Attributes'; $lang['attr_name_tooltip'] = 'Click to view the schema defintion for attribute type \'%s\''; -$lang['click_to_display'] = 'click \'+\' to display'; -$lang['hidden'] = 'hidden'; $lang['none'] = 'none'; +$lang['no_internal_attributes'] = 'No internal attributes'; +$lang['no_attributes'] = 'This entry has no attributes'; $lang['save_changes'] = 'Save Changes'; $lang['add_value'] = 'add value'; $lang['add_value_tooltip'] = 'Add an additional value to attribute \'%s\''; $lang['refresh_entry'] = 'Refresh'; $lang['refresh_this_entry'] = 'Refresh this entry'; -$lang['delete_hint'] = 'Hint: To delete an attribute, empty the text field and click save.'; -$lang['attr_schema_hint'] = 'Hint: To view the schema for an attribute, click the attribute name.'; +$lang['delete_hint'] = 'Hint: To delete an attribute, empty the text field and click save.'; +$lang['attr_schema_hint'] = 'Hint: To view the schema for an attribute, click the attribute name.'; $lang['attrs_modified'] = 'Some attributes (%s) were modified and are highlighted below.'; $lang['attr_modified'] = 'An attribute (%s) was modified and is highlighted below.'; $lang['viewing_read_only'] = 'Viewing entry in read-only mode.'; -$lang['change_entry_rdn'] = 'Change this entry\'s RDN'; $lang['no_new_attrs_available'] = 'no new attributes available for this entry'; +$lang['no_new_binary_attrs_available'] = 'no new binary attributes available for this entry'; $lang['binary_value'] = 'Binary value'; -$lang['add_new_binary_attr'] = 'Add New Binary Attribute'; -$lang['add_new_binary_attr_tooltip'] = 'Add a new binary attribute/value from a file'; +$lang['add_new_binary_attr'] = 'Add new binary attribute'; $lang['alias_for'] = 'Note: \'%s\' is an alias for \'%s\''; +$lang['required_for'] = 'Required attribute for objectClass(es) %s'; $lang['download_value'] = 'download value'; $lang['delete_attribute'] = 'delete attribute'; $lang['true'] = 'true'; $lang['false'] = 'false'; $lang['none_remove_value'] = 'none, remove value'; $lang['really_delete_attribute'] = 'Really delete attribute'; +$lang['add_new_value'] = 'Add New Value'; // Schema browser -$lang['the_following_objectclasses'] = 'The following objectClasses are supported by this LDAP server.'; -$lang['the_following_attributes'] = 'The following attributeTypes are supported by this LDAP server.'; -$lang['the_following_matching'] = 'The following matching rules are supported by this LDAP server.'; -$lang['the_following_syntaxes'] = 'The following syntaxes are supported by this LDAP server.'; +$lang['the_following_objectclasses'] = 'The following objectClasses are supported by this LDAP server.'; +$lang['the_following_attributes'] = 'The following attributeTypes are supported by this LDAP server.'; +$lang['the_following_matching'] = 'The following matching rules are supported by this LDAP server.'; +$lang['the_following_syntaxes'] = 'The following syntaxes are supported by this LDAP server.'; +$lang['schema_retrieve_error_1']='The server does not fully support the LDAP protocol.'; +$lang['schema_retrieve_error_2']='Your version of PHP does not correctly perform the query.'; +$lang['schema_retrieve_error_3']='Or lastly, phpLDAPadmin doesn\'t know how to fetch the schema for your server.'; $lang['jump_to_objectclass'] = 'Jump to an objectClass'; -$lang['jump_to_attr'] = 'Jump to an attribute'; +$lang['view_schema_for_oclass'] = 'View the schema description for this objectClass'; +$lang['jump_to_attr'] = 'Jump to an attribute type'; +$lang['jump_to_matching_rule'] = 'Jump to a matching rule'; $lang['schema_for_server'] = 'Schema for server'; $lang['required_attrs'] = 'Required Attributes'; +$lang['required'] = 'required'; $lang['optional_attrs'] = 'Optional Attributes'; +$lang['optional_binary_attrs'] = 'Optional Binary Attributes'; $lang['OID'] = 'OID'; +$lang['aliases']='Aliases'; $lang['desc'] = 'Description'; +$lang['no_description']='no description'; $lang['name'] = 'Name'; -$lang['is_obsolete'] = 'This objectClass is obsolete'; -$lang['inherits'] = 'Inherits'; +$lang['equality']='Equality'; +$lang['is_obsolete'] = 'This objectClass is obsolete.'; +$lang['inherits'] = 'Inherits from'; +$lang['inherited_from'] = 'Inherited from'; +$lang['parent_to'] = 'Parent to'; $lang['jump_to_this_oclass'] = 'Jump to this objectClass definition'; $lang['matching_rule_oid'] = 'Matching Rule OID'; $lang['syntax_oid'] = 'Syntax OID'; $lang['not_applicable'] = 'not applicable'; $lang['not_specified'] = 'not specified'; +$lang['character']='character'; +$lang['characters']='characters'; +$lang['used_by_objectclasses']='Used by objectClasses'; +$lang['used_by_attributes']='Used by Attributes'; +$lang['maximum_length']='Maximum Length'; +$lang['attribute_types']='Attribute Types'; +$lang['syntaxes']='Syntaxes'; +$lang['matchingrules']='Matching Rules'; +$lang['oid']='OID'; +$lang['obsolete']='Obsolete'; +$lang['ordering']='Ordering'; +$lang['substring_rule']='Substring Rule'; +$lang['single_valued']='Single Valued'; +$lang['collective']='Collective'; +$lang['user_modification']='User Modification'; +$lang['usage']='Usage'; +$lang['could_not_retrieve_schema_from']='Could not retrieve schema from'; +$lang['type']='Type'; +$lang['no_such_schema_item'] = 'No such schema item: "%s"'; // Deleting entries -$lang['entry_deleted_successfully'] = 'Entry \'%s\' deleted successfully.'; +$lang['entry_deleted_successfully'] = 'Entry %s deleted successfully.'; $lang['you_must_specify_a_dn'] = 'You must specify a DN'; $lang['could_not_delete_entry'] = 'Could not delete the entry: %s'; +$lang['no_such_entry'] = 'No such entry: %s'; +$lang['delete_dn'] = 'Delete %s'; +$lang['permanently_delete_children'] = 'Permanently delete all children also?'; +$lang['entry_is_root_sub_tree'] = 'This entry is the root of a sub-tree containing %s entries.'; +$lang['view_entries'] = 'view entries'; +$lang['confirm_recursive_delete'] = 'phpLDAPadmin can recursively delete this entry and all %s of its children. See below for a list of all the entries that this action will delete. Do you want to do this?'; +$lang['confirm_recursive_delete_note'] = 'Note: this is potentially very dangerous and you do this at your own risk. This operation cannot be undone. Take into consideration aliases, referrals, and other things that may cause problems.'; +$lang['delete_all_x_objects'] = 'Delete all %s objects'; +$lang['recursive_delete_progress'] = 'Recursive delete progress'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'Entry %s and sub-tree deleted successfully.'; +$lang['failed_to_delete_entry'] = 'Failed to delete entry %s'; +$lang['list_of_entries_to_be_deleted'] = 'List of entries to be deleted:'; +$lang['sure_permanent_delete_object']='Are you sure you want to permanently delete this object?'; +$lang['dn'] = 'DN'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'; +$lang['no_attr_specified'] = 'No attribute name specified.'; +$lang['no_dn_specified'] = 'No DN specified'; + +// Adding attributes +$lang['left_attr_blank'] = 'You left the attribute value blank. Please go back and try again.'; +$lang['failed_to_add_attr'] = 'Failed to add the attribute.'; +$lang['file_empty'] = 'The file you chose is either empty or does not exist. Please go back and try again.'; +$lang['invalid_file'] = 'Security error: The file being uploaded may be malicious.'; +$lang['warning_file_uploads_disabled'] = 'Your PHP configuration has disabled file uploads. Please check php.ini before proceeding.'; +$lang['uploaded_file_too_big'] = 'The file you uploaded is too large. Please check php.ini, upload_max_size setting'; +$lang['uploaded_file_partial'] = 'The file you selected was only partially uploaded, likley due to a network error.'; +$lang['max_file_size'] = 'Maximum file size: %s'; + +// Updating values +$lang['modification_successful'] = 'Modification successful!'; +$lang['change_password_new_login'] = 'Since you changed your password, you must now login again with your new password.'; // Adding objectClass form $lang['new_required_attrs'] = 'New Required Attributes'; @@ -147,6 +223,7 @@ $lang['new_attributes'] = 'new attributes'; $lang['new_required_attrs_instructions'] = 'Instructions: In order to add this objectClass to this entry, you must specify'; $lang['that_this_oclass_requires'] = 'that this objectClass requires. You can do so in this form.'; $lang['add_oclass_and_attrs'] = 'Add ObjectClass and Attributes'; +$lang['objectclasses'] = 'ObjectClasses'; // General $lang['chooser_link_tooltip'] = 'Click to popup a dialog to select an entry (DN) graphically'; @@ -154,8 +231,11 @@ $lang['no_updates_in_read_only_mode'] = 'You cannot perform updates while server $lang['bad_server_id'] = 'Bad server id'; $lang['not_enough_login_info'] = 'Not enough information to login to server. Please check your configuration.'; $lang['could_not_connect'] = 'Could not connect to LDAP server.'; +$lang['could_not_connect_to_host_on_port'] = 'Could not connect to "%s" on port "%s"'; $lang['could_not_perform_ldap_mod_add'] = 'Could not perform ldap_mod_add operation.'; $lang['bad_server_id_underline'] = 'Bad server_id: '; +$lang['home'] = 'Home'; +$lang['help'] = 'Help'; $lang['success'] = 'Success'; $lang['server_colon_pare'] = 'Server: '; $lang['look_in'] = 'Looking in: '; @@ -165,6 +245,22 @@ $lang['back_up_p'] = 'Back Up...'; $lang['no_entries'] = 'no entries'; $lang['not_logged_in'] = 'Not logged in'; $lang['could_not_det_base_dn'] = 'Could not determine base DN'; +$lang['please_report_this_as_a_bug']='Please report this as a bug.'; +$lang['reasons_for_error']='This could happen for several reasons, the most probable of which are:'; +$lang['yes']='Yes'; +$lang['no']='No'; +$lang['go']='Go'; +$lang['delete']='Delete'; +$lang['back']='Back'; +$lang['object']='object'; +$lang['delete_all']='Delete all'; +$lang['url_bug_report']='https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'hint'; +$lang['bug'] = 'bug'; +$lang['warning'] = 'warning'; +$lang['light'] = 'light'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Proceed >>'; + // Add value form $lang['add_new'] = 'Add new'; @@ -172,8 +268,7 @@ $lang['value_to'] = 'value to'; $lang['distinguished_name'] = 'Distinguished Name'; $lang['current_list_of'] = 'Current list of'; $lang['values_for_attribute'] = 'values for attribute'; -$lang['inappropriate_matching_note'] = 'Note: You will get an "inappropriate matching" error if you have not
' . - 'setup an EQUALITY rule on your LDAP server for this attribute.'; +$lang['inappropriate_matching_note'] = 'Note: You will get an "inappropriate matching" error if you have not setup an EQUALITY rule on your LDAP server for this attribute.'; $lang['enter_value_to_add'] = 'Enter the value you would like to add:'; $lang['new_required_attrs_note'] = 'Note: you may be required to enter new attributes that this objectClass requires'; $lang['syntax'] = 'Syntax'; @@ -194,6 +289,13 @@ $lang['copy_failed'] = 'Failed to copy DN: '; //edit.php $lang['missing_template_file'] = 'Warning: missing template file, '; $lang['using_default'] = 'Using default.'; +$lang['template'] = 'Template'; +$lang['must_choose_template'] = 'You must choose a template'; +$lang['invalid_template'] = '%s is an invalid template'; +$lang['using_template'] = 'using template'; +$lang['go_to_dn'] = 'Go to %s'; ++$lang['structural_object_class_cannot_remove'] = 'This is a structural ObjectClass and cannot be removed.'; ++$lang['structural'] = 'structural'; //copy_form.php $lang['copyf_title_copy'] = 'Copy '; @@ -203,24 +305,38 @@ $lang['copyf_dest_dn_tooltip'] = 'The full DN of the new entry to be created whe $lang['copyf_dest_server'] = 'Destination Server'; $lang['copyf_note'] = 'Hint: Copying between different servers only works if there are no schema violations'; $lang['copyf_recursive_copy'] = 'Recursively copy all children of this object as well.'; +$lang['recursive_copy'] = 'Recursive copy'; +$lang['filter'] = 'Filter'; +$lang['search_filter'] = 'Search Filter'; +$lang['filter_tooltip'] = 'When performing a recursive copy, only copy those entries which match this filter'; //create.php -$lang['create_required_attribute'] = 'You left the value blank for required attribute %s.'; -$lang['create_redirecting'] = 'Redirecting'; -$lang['create_here'] = 'here'; +$lang['create_required_attribute'] = 'You left the value blank for required attribute (%s).'; +$lang['redirecting'] = 'Redirecting...'; +$lang['here'] = 'here'; $lang['create_could_not_add'] = 'Could not add the object to the LDAP server.'; //create_form.php $lang['createf_create_object'] = 'Create Object'; $lang['createf_choose_temp'] = 'Choose a template'; $lang['createf_select_temp'] = 'Select a template for the creation process'; -$lang['createf_proceed'] = 'Proceed'; +$lang['save_as_file'] = 'Save as file'; +$lang['rdn_field_blank'] = 'You left the RDN field blank.'; +$lang['container_does_not_exist'] = 'The container you specified (%s) does not exist. Please try again.'; +$lang['no_objectclasses_selected'] = 'You did not select any ObjectClasses for this object. Please go back and do so.'; +$lang['hint_structural_oclass'] = 'Hint: You must choose exactly one structural objectClass (shown in bold above)'; //creation_template.php $lang['ctemplate_on_server'] = 'On server'; $lang['ctemplate_no_template'] = 'No template specified in POST variables.'; -$lang['ctemplate_config_handler'] = 'Your config specifies a handler of'; -$lang['ctemplate_handler_does_not_exist'] = 'for this template. But, this handler does not exist in the templates/creation directory.'; +$lang['template_not_readable'] = 'Your config specifies a handler of "%s" for this template but this file is not readable because the permissions are too strict.'; +$lang['template_does_not_exist'] = 'Your config specifies a handler of "%s" for this template but this handler does not exist in the templates/creation directory.'; +$lang['create_step1'] = 'Step 1 of 2: Name and ObjectClass(es)'; +$lang['create_step2'] = 'Step 2 of 2: Specify attributes and values'; +$lang['relative_distinguished_name'] = 'Relative Distinguished Name'; +$lang['rdn'] = 'RDN'; +$lang['rdn_example'] = '(example: cn=MyNewPerson)'; +$lang['container'] = 'Container'; // search.php $lang['you_have_not_logged_into_server'] = 'You have not logged into the selected server yet, so you cannot perform searches on it.'; @@ -251,7 +367,7 @@ $lang['ends with'] = 'ends with'; $lang['sounds like'] = 'sounds like'; // server_info.php -$lang['could_not_fetch_server_info'] = 'Could not retrieve LDAP information from the server'; +$lang['could_not_fetch_server_info'] = 'Could not retrieve LDAP information from the server. This may be due to a bug in your version of PHP or perhaps your LDAP server has access control specified that prevents LDAP clients from accessing the RootDSE.'; $lang['server_info_for'] = 'Server info for: '; $lang['server_reports_following'] = 'Server reports the following information about itself'; $lang['nothing_to_report'] = 'This server has nothing to report.'; @@ -275,7 +391,19 @@ $lang['go_back'] = 'Go back'; $lang['welcome_note'] = 'Use the menu to the left to navigate'; $lang['credits'] = 'Credits'; $lang['changelog'] = 'ChangeLog'; -$lang['documentation'] = 'Documentation'; +$lang['donate'] = 'Donate'; +$lang['pla_logo'] = 'phpLDAPadmin logo'; + +// Donate.php +$lang['donation_instructions'] = 'To donate funds to the phpLDAPadmin project, use one of the PayPal buttons below.'; +$lang['donate_amount'] = 'Donate %s'; +$lang['wish_list_option'] = 'Or perhaps you would prefer to purchase an gift for a phpLDAPadmin developer.'; +$lang['wish_list'] = 'View Dave\'s phpLDAPadmin wish list'; + +$lang['purge_cache'] = 'Purge caches'; +$lang['no_cache_to_purge'] = 'No cache to purge.'; +$lang['done_purging_caches'] = 'Purged %s bytes of cache.'; +$lang['purge_cache_tooltip'] = 'Purge all cached data in phpLDAPadmin, including server schemas.'; // view_jpeg_photo.php $lang['unsafe_file_name'] = 'Unsafe file name: '; @@ -285,34 +413,45 @@ $lang['no_such_file'] = 'No such file: '; $lang['auto_update_not_setup'] = 'You have enabled auto_uid_numbers for %s in your configuration, but you have not specified the auto_uid_number_mechanism. Please correct this problem.'; -$lang['uidpool_not_set'] = 'You specified the auto_uid_number_mechanism as uidpool +$lang['uidpool_not_set'] = 'You specified the "auto_uid_number_mechanism" as "uidpool" in your configuration for server %s, but you did not specify the audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; -$lang['uidpool_not_exist'] = 'It appears that the uidPool you specified in your configuration (%s) +$lang['uidpool_not_exist'] = 'It appears that the uidPool you specified in your configuration ("%s") does not exist.'; -$lang['specified_uidpool'] = 'You specified the auto_uid_number_mechanism as search in your +$lang['specified_uidpool'] = 'You specified the "auto_uid_number_mechanism" as "search" in your configuration for server %s, but you did not specify the - auto_uid_number_search_base. Please specify it before proceeding.'; -$lang['auto_uid_invalid_value'] = 'You specified an invalid value for auto_uid_number_mechanism (%s) - in your configration. Only uidpool and search are valid. + "auto_uid_number_search_base". Please specify it before proceeding.'; +$lang['auto_uid_invalid_credential'] = 'Unable to bind to %s with your with auto_uid credentials. Please check your configuration file.'; +$lang['bad_auto_uid_search_base'] = 'Your phpLDAPadmin configuration specifies an invalid auto_uid_search_base for server %s'; +$lang['auto_uid_invalid_value'] = 'You specified an invalid value for auto_uid_number_mechanism ("%s") + in your configration. Only "uidpool" and "search" are valid. Please correct this problem.'; -$lang['error_auth_type_config'] = 'Error: You have an error in your config file. The only two allowed values - for auth_type in the $servers section are \'config\' and \'form\'. You entered \'%s\', +$lang['error_auth_type_config'] = 'Error: You have an error in your config file. The only three allowed values + for auth_type in the $servers section are \'session\', \'cookie\', and \'config\'. You entered \'%s\', which is not allowed. '; -$lang['php_install_not_supports_tls'] = 'Your PHP install does not support TLS'; -$lang['could_not_start_tls'] = 'Could not start TLS.
Please check your LDAP server configuration.'; -$lang['auth_type_not_valid'] = 'You have an error in your config file. auth_type of %s is not valid.'; -$lang['ldap_said'] = 'LDAP said: %s

'; +$lang['unique_attrs_invalid_credential'] = 'Unable to bind to %s with your with unique_attrs credentials. Please check your configuration file.'; +$lang['unique_attr_failed'] = 'Your attempt to add %s (%s) to
%s
is NOT allowed. That attribute/value belongs to another entry.

You might like to search for that entry.'; +$lang['php_install_not_supports_tls'] = 'Your PHP install does not support TLS.'; +$lang['could_not_start_tls'] = 'Could not start TLS. Please check your LDAP server configuration.'; +$lang['could_not_bind_anon'] = 'Could not bind anonymously to server.'; +$lang['could_not_bind'] = 'Could not bind to the LDAP server.'; +$lang['anonymous_bind'] = 'Anonymous Bind'; +$lang['bad_user_name_or_password'] = 'Bad username or password. Please try again.'; +$lang['redirecting_click_if_nothing_happens'] = 'Redirecting... Click here if nothing happens.'; +$lang['successfully_logged_in_to_server'] = 'Successfully logged into server %s'; +$lang['could_not_set_cookie'] = 'Could not set cookie.'; +$lang['ldap_said'] = 'LDAP said: %s'; $lang['ferror_error'] = 'Error'; $lang['fbrowse'] = 'browse'; $lang['delete_photo'] = 'Delete Photo'; $lang['install_not_support_blowfish'] = 'Your PHP install does not support blowfish encryption.'; +$lang['install_not_support_md5crypt'] = 'Your PHP install does not support md5crypt encryption.'; $lang['install_no_mash'] = 'Your PHP install does not have the mhash() function. Cannot do SHA hashes.'; $lang['jpeg_contains_errors'] = 'jpegPhoto contains errors
'; -$lang['ferror_number'] = 'Error number: %s (%s)

'; -$lang['ferror_discription'] = 'Description: %s

'; -$lang['ferror_number_short'] = 'Error number: %s

'; -$lang['ferror_discription_short'] = 'Description: (no description available)
'; +$lang['ferror_number'] = 'Error number: %s (%s)'; +$lang['ferror_discription'] = 'Description: %s

'; +$lang['ferror_number_short'] = 'Error number: %s

'; +$lang['ferror_discription_short'] = 'Description: (no description available)
'; $lang['ferror_submit_bug'] = 'Is this a phpLDAPadmin bug? If so, please report it.'; $lang['ferror_unrecognized_num'] = 'Unrecognized error number: '; $lang['ferror_nonfatil_bug'] = '

@@ -338,15 +477,23 @@ $lang['ferror_congrats_found_bug'] = 'Congratulations! You found a bug in phpLDA //ldif_import_form $lang['import_ldif_file_title'] = 'Import LDIF File'; $lang['select_ldif_file'] = 'Select an LDIF file:'; -$lang['select_ldif_file_proceed'] = 'Proceed >>'; +$lang['dont_stop_on_errors'] = 'Don\'t stop on errors'; //ldif_import $lang['add_action'] = 'Adding...'; $lang['delete_action'] = 'Deleting...'; $lang['rename_action'] = 'Renaming...'; $lang['modify_action'] = 'Modifying...'; +$lang['warning_no_ldif_version_found'] = 'No version found. Assuming 1.'; +$lang['valid_dn_line_required'] = 'A valid dn line is required.'; +$lang['missing_uploaded_file'] = 'Missing uploaded file.'; +$lang['no_ldif_file_specified'] = 'No LDIF file specified. Please try again.'; +$lang['ldif_file_empty'] = 'Uploaded LDIF file is empty.'; +$lang['empty'] = 'empty'; +$lang['file'] = 'File'; +$lang['number_bytes'] = '%s bytes'; -$lang['failed'] = 'failed'; +$lang['failed'] = 'Failed'; $lang['ldif_parse_error'] = 'LDIF Parse Error'; $lang['ldif_could_not_add_object'] = 'Could not add object:'; $lang['ldif_could_not_rename_object'] = 'Could not rename object:'; @@ -354,4 +501,174 @@ $lang['ldif_could_not_delete_object'] = 'Could not delete object:'; $lang['ldif_could_not_modify_object'] = 'Could not modify object:'; $lang['ldif_line_number'] = 'Line Number:'; $lang['ldif_line'] = 'Line:'; + +// Exports +$lang['export_format'] = 'Export format'; +$lang['line_ends'] = 'Line ends'; +$lang['must_choose_export_format'] = 'You must choose an export format.'; +$lang['invalid_export_format'] = 'Invalid export format'; +$lang['no_exporter_found'] = 'No available exporter found.'; +$lang['error_performing_search'] = 'Encountered an error while performing search.'; +$lang['showing_results_x_through_y'] = 'Showing results %s through %s.'; +$lang['searching'] = 'Searching...'; +$lang['size_limit_exceeded'] = 'Notice, search size limit exceeded.'; +$lang['entry'] = 'Entry'; +$lang['ldif_export_for_dn'] = 'LDIF Export for: %s'; +$lang['generated_on_date'] = 'Generated by phpLDAPadmin ( http://www.phpldapadmin.com/ ) on %s'; +$lang['total_entries'] = 'Total Entries'; +$lang['dsml_export_for_dn'] = 'DSLM Export for: %s'; +$lang['include_system_attrs'] = 'Include system attributes'; +$lang['csv_spreadsheet'] = 'CSV (Spreadsheet)'; + +// logins +$lang['could_not_find_user'] = 'Could not find a user "%s"'; +$lang['password_blank'] = 'You left the password blank.'; +$lang['login_cancelled'] = 'Login cancelled.'; +$lang['no_one_logged_in'] = 'No one is logged in to that server.'; +$lang['could_not_logout'] = 'Could not logout.'; +$lang['unknown_auth_type'] = 'Unknown auth_type: %s'; +$lang['logged_out_successfully'] = 'Logged out successfully from server %s'; +$lang['authenticate_to_server'] = 'Authenticate to server %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Warning: This web connection is unencrypted.'; +$lang['not_using_https'] = 'You are not using \'https\'. Web browser will transmit login information in clear text.'; +$lang['login_dn'] = 'Login DN'; +$lang['user_name'] = 'User name'; +$lang['password'] = 'Password'; +$lang['authenticate'] = 'Authenticate'; + +// Entry browser +$lang['entry_chooser_title'] = 'Entry Chooser'; + +// Index page +$lang['need_to_configure'] = 'You need to configure phpLDAPadmin. Edit the file \'config.php\' to do so. An example config file is provided in \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Deletes not allowed in read only mode.'; +$lang['error_calling_mass_delete'] = 'Error calling mass_delete.php. Missing mass_delete in POST vars.'; +$lang['mass_delete_not_array'] = 'mass_delete POST var is not an array.'; +$lang['mass_delete_not_enabled'] = 'Mass deletion is not enabled. Please enable it in config.php before proceeding.'; +$lang['search_attrs_wrong_count'] = 'Your config.php has an error. The number of attributes in $search_attributes and $search_attributes_display is different'; +$lang['mass_deleting'] = 'Mass Deleting'; +$lang['mass_delete_progress'] = 'Deletion progress on server "%s"'; +$lang['malformed_mass_delete_array'] = 'Malformed mass_delete array.'; +$lang['no_entries_to_delete'] = 'You did not select any entries to delete.'; +$lang['deleting_dn'] = 'Deleting %s'; +$lang['total_entries_failed'] = '%s of %s entries failed to be deleted.'; +$lang['all_entries_successful'] = 'All entries deleted successfully.'; +$lang['confirm_mass_delete'] = 'Confirm mass delete of %s entries on server %s'; +$lang['yes_delete'] = 'Yes, delete!'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'You cannot rename an entry which has children entries (eg, the rename operation is not allowed on non-leaf entries)'; +$lang['no_rdn_change'] = 'You did not change the RDN'; +$lang['invalid_rdn'] = 'Invalid RDN value'; +$lang['could_not_rename'] = 'Could not rename the entry'; + +// General errors +$lang['php5_unsupported'] = 'phpLDAPadmin does not yet support PHP 5. You will likely encounter many weird problems if you continue.'; +$lang['mismatched_search_attr_config'] = 'Your configuration has an error. $search_attributes must have the same number of attributes as $search_attributes_display.'; + +// Password checker +$lang['passwords_match'] = 'Passwords match!'; +$lang['passwords_do_not_match'] = 'Passwords do not match!'; +$lang['password_checker_tool'] = 'Password Checker Tool'; +$lang['compare'] = 'Compare'; +$lang['to'] = 'To'; + +// Templates +$lang['using'] = 'Using the'; +$lang['template'] = 'template'; +$lang['switch_to'] = 'You may switch to the '; +$lang['default_template'] = 'default template'; + +// template_config +$lang['user_account'] = 'User Account (posixAccount)'; +$lang['address_book_inet'] = 'Address Book Entry (inetOrgPerson)'; +$lang['address_book_moz'] = 'Address Book Entry (mozillaOrgPerson)'; +$lang['kolab_user'] = 'Kolab User Entry'; +$lang['organizational_unit'] = 'Organizational Unit'; +$lang['organizational_role'] = 'Organizational Role'; +$lang['posix_group'] = 'Posix Group'; +$lang['samba_machine'] = 'Samba NT Machine'; +$lang['samba3_machine'] = 'Samba 3 NT Machine'; +$lang['samba_user'] = 'Samba User'; +$lang['samba3_user'] = 'Samba 3 User'; +$lang['samba3_group'] = 'Samba 3 Group Mapping'; +$lang['dns_entry'] = 'DNS Entry'; +$lang['simple_sec_object'] = 'Simple Security Object'; +$lang['courier_mail_account'] = 'Courier Mail Account'; +$lang['courier_mail_alias'] = 'Courier Mail Alias'; +$lang['ldap_alias'] = 'LDAP Alias'; +$lang['sendmail_cluster'] = 'Sendmail Cluster'; +$lang['sendmail_domain'] = 'Sendmail Domain'; +$lang['sendmail_alias'] = 'Sendmail Alias'; +$lang['sendmail_virt_dom'] = 'Sendmail Virtual Domain'; +$lang['sendmail_virt_users'] = 'Sendmail Virtual Users'; +$lang['sendmail_relays'] = 'Sendmail Relays'; +$lang['custom'] = 'Custom'; +$lang['samba_domain_name'] = 'My Samba domain Name'; +$lang['administrators'] = 'Administrators'; +$lang['users'] = 'Users'; +$lang['guests'] = 'Guests'; +$lang['power_users'] = 'Power Users'; +$lang['account_ops'] = 'Account Operators'; +$lang['server_ops'] = 'Server Operators'; +$lang['print_ops'] = 'Print Operators'; +$lang['backup_ops'] = 'Backup Operators'; +$lang['replicator'] = 'Replicator'; +$lang['unable_smb_passwords'] = ' Unable to create the Samba passwords. Please, check the configuration in template_config.php'; +$lang['err_smb_conf'] = 'Error: You have an error in your samba confguration.'; +$lang['err_smb_no_name_sid'] = 'Error: A name and a sid for your samba domain need to be provided.'; +$lang['err_smb_no_name'] = 'Error: No name provided for samba domain.'; +$lang['err_smb_no_sid'] = 'Error: No sid provided for samba domain.'; + +// Samba Account Template +$lang['samba_account'] = 'Samba Account'; +$lang['samba_account_lcase'] = 'samba account'; + +// New User (Posix) Account +$lang['t_new_user_account'] = 'New User Account'; +$lang['t_hint_customize'] = 'Hint: To customize this template, edit the file templates/creation/new_user_template.php'; +$lang['t_name'] = 'Name'; +$lang['t_first_name'] = 'First name'; +$lang['t_last_name'] = 'Last name'; +$lang['t_first'] = 'first'; +$lang['t_last'] = 'last'; +$lang['t_common_name'] = 'Common name'; +$lang['t_user_name'] = 'User Name'; +$lang['t_password'] = 'Password'; +$lang['t_encryption'] = 'Encryption'; +$lang['t_login_shell'] = 'Login Shell'; +$lang['t_home_dir'] = 'Home Directory'; +$lang['t_uid_number'] = 'UID Number'; +$lang['t_auto_det'] = '(automatically determined)'; +$lang['t_group'] = 'Group'; +$lang['t_gid_number'] = 'GID Number'; +$lang['t_err_passwords'] = 'Your passwords don\'t match. Please go back and try again.'; +$lang['t_err_field_blank'] = 'You cannot leave the %s blank. Please go back and try again.'; +$lang['t_err_field_num'] = 'You can only enter numeric values for the %s field. Please go back and try again.'; +$lang['t_err_bad_container'] = 'The container you specified (%s) does not exist. Please go back and try again.'; +$lang['t_confirm_account_creation'] = 'Confirm account creation'; +$lang['t_secret'] = '[secret]'; +$lang['t_create_account'] = 'Create Account'; + +// New Address Template +$lang['t_new_address'] = 'New Address Book Entry'; +$lang['t_organization'] = 'Organization'; +$lang['t_address'] = 'Address'; +$lang['t_city'] = 'City'; +$lang['t_postal_code'] = 'Postal code'; +$lang['t_street'] = 'Street'; +$lang['t_work_phone'] = 'Work phone'; +$lang['t_fax'] = 'Fax'; +$lang['t_mobile'] = 'Mobile'; +$lang['t_email'] = 'Email'; +$lang['t_container'] = 'Container'; +$lang['t_err_cn_blank'] = 'You cannot leave the Common Name blank. Please go back and try again.'; +$lang['t_confim_creation'] = 'Confirm entry creation:'; +$lang['t_create_address'] = 'Create Address'; + +// default template +$lang['t_check_pass'] = 'Check password...'; + ?> diff --git a/lang/recoded/es.php b/lang/recoded/es.php index 5bc9cb3..7bb0db5 100644 --- a/lang/recoded/es.php +++ b/lang/recoded/es.php @@ -1,4 +1,6 @@ Descripción: (no hay descripción)< $lang['ferror_submit_bug'] = 'Es un error del phpLDAPadmin? Si así es, por favor dínoslo.'; $lang['ferror_unrecognized_num'] = 'Número de error desconocido: '; $lang['ferror_nonfatil_bug'] = '
+ Has encontrado un error menor del phpLDAPadmin!
- Has encontrado un error fatal del phpLDAPadmin!
Error:%s (%s)
Archivo:
Error:%s (%s)
Archivo: %s línea %s, caller %s
Versiones:PLA: %s, PHP: %s, SAPI: %s
Servidor Web:%s
Envía este error haciendo click aquí.

'; diff --git a/lang/recoded/fr.php b/lang/recoded/fr.php index 7707bf8..546dd2e 100644 --- a/lang/recoded/fr.php +++ b/lang/recoded/fr.php @@ -1,5 +1,5 @@ Pour effacer un attribut, laissez le champs vide et cliquez pour sauvegarder.'; -$lang['attr_schema_hint'] = 'Note: Pour voir le schéma pour un attribut, cliquer sur le nom de l\'attribut.'; -$lang['attrs_modified'] = 'Certains attributs (%s) ont été mdoifiés et sont mis en évidence ci-dessous.'; -$lang['attr_modified'] = 'Un attribut (%s) a été modifié et est mis en évidence ci-dessous.'; -$lang['viewing_read_only'] = 'Voir une entrée en lecture seule.'; -$lang['change_entry_rdn'] = 'Changer le RDN de cette entrée'; -$lang['no_new_attrs_available'] = 'plus d\'attributs disponibles pour cette entrée'; +$lang['refresh_this_entry'] = 'Rafraîchir cette entrée'; +$lang['delete_hint'] = 'Note: Pour effacer un attribut, laissez le champs vide et cliquez pour sauvegarder.'; +$lang['attr_schema_hint'] = 'Note: Pour voir le schéma pour un attribut, cliquer sur le nom de l\'attribut.'; +$lang['attrs_modified'] = 'Certains attributs (%s) ont été modifiés et sont mis en évidence ci-dessous.'; +$lang['attr_modified'] = 'Un attribut (%s) a été modifié et est mis en évidence ci-dessous.'; +$lang['viewing_read_only'] = 'Voir une entrée en lecture seule.'; +$lang['no_new_attrs_available'] = 'plus d\'attributs disponibles pour cette entrée'; +$lang['no_new_binary_attrs_available'] = 'plus d\' attributs binaires disponibles pour cette entréé'; $lang['binary_value'] = 'Valeur de type binaire'; $lang['add_new_binary_attr'] = 'Ajouter un nouvel attribut de type binaire'; -$lang['add_new_binary_attr_tooltip'] = 'Ajouter un nouvel attribut à partir d\'un fichier'; $lang['alias_for'] = 'Alias pour'; -$lang['download_value'] = 'Télécharger le contenu'; +$lang['download_value'] = 'Télécharger le contenu'; $lang['delete_attribute'] = 'Supprimer l\'attribut'; $lang['true'] = 'vrai'; $lang['false'] = 'faux'; $lang['none_remove_value'] = 'aucun, suppression de la valeur'; $lang['really_delete_attribute'] = 'Voulez-vous vraiment supprimer l\'attribut'; +$lang['add_new_value'] = 'Ajouter une nouvelle valeur'; // Schema browser -$lang['the_following_objectclasses'] = 'Les classes d\'objets (objectClasses) suivantes sont supportés par ce serveur LDAP.'; -$lang['the_following_attributes'] = 'Les types d\'attributs (attributesTypes) suivants sont supportés par ce serveur LDAP.'; -$lang['the_following_matching'] = 'Les opérateurs (matching rules) suivants sont supportés par ce serveur LDAP.'; -$lang['the_following_syntaxes'] = 'Les syntaxes suivantes sont supportés par ce serveur LDAP.'; -$lang['jump_to_objectclass'] = 'Aller à une classe d\'objet'; -$lang['jump_to_attr'] = 'Aller à un attribut'; +$lang['the_following_objectclasses'] = 'Les classes d\'objets (objectClasses) suivantes sont supportés par ce serveur LDAP.'; +$lang['the_following_attributes'] = 'Les types d\'attributs (attributesTypes) suivants sont supportés par ce serveur LDAP.'; +$lang['the_following_matching'] = 'Les opérateurs (matching rules) suivants sont supportés par ce serveur LDAP.'; +$lang['the_following_syntaxes'] = 'Les syntaxes suivantes sont supportés par ce serveur LDAP.'; +$lang['schema_retrieve_error_1']='Le serveur ne supporte pas entièrement le protocol LDAP.'; +$lang['schema_retrieve_error_2']='Votre version de PHP ne permet pas d\'exécute correctement la requête.'; +$lang['schema_retrieve_error_3']='Ou tout du moins, phpLDAPadmin ne sait pas comment récupérer le schéma pour votre serveur.'; +$lang['jump_to_objectclass'] = 'Aller à une classe d\'objet'; +$lang['jump_to_attr'] = 'Aller à un attribut'; +$lang['jump_to_matching_rule'] = 'Aller à une règle d\'égalité'; $lang['schema_for_server'] = 'Schema pour le serveur'; $lang['required_attrs'] = 'Attributs obligatoires'; -$lang['optional_attrs'] = 'Attributs facultatifs'; +$lang['optional_attrs'] = 'Attributs optionnels'; +$lang['optional_binary_attrs'] = 'Attributs binaires optionnels'; $lang['OID'] = 'OID'; +$lang['aliases']='Alias'; $lang['desc'] = 'Description'; +$lang['no_description']='aucune description'; $lang['name'] = 'Nom'; -$lang['is_obsolete'] = 'Cette classe d\'objet est obsolete'; -$lang['inherits'] = 'hérite'; -$lang['jump_to_this_oclass'] = 'Aller à la définition de cette classe d\'objet'; -$lang['matching_rule_oid'] = 'OID de l\'opérateur'; +$lang['equality']='Egalité'; +$lang['is_obsolete'] = 'Cette classe d\'objet est obsolete'; +$lang['inherits'] = 'hérite'; +$lang['inherited_from']='hérite de'; +$lang['jump_to_this_oclass'] = 'Aller à la définition de cette classe d\'objet'; +$lang['matching_rule_oid'] = 'OID de l\'opérateur'; $lang['syntax_oid'] = 'OID de la syntaxe'; $lang['not_applicable'] = 'not applicable'; -$lang['not_specified'] = 'non spécifié'; +$lang['not_specified'] = 'non spécifié'; +$lang['character']='caractère'; +$lang['characters']='caractères'; +$lang['used_by_objectclasses']='Utilisé par les objectClasses'; +$lang['used_by_attributes']='Utilisé par les attributes'; +$lang['maximum_length']='Maximum Length'; +$lang['attributes']='Types d\'attribut'; +$lang['syntaxes']='Syntaxes'; +$lang['objectclasses']='objectClasses'; +$lang['matchingrules']='Règles d\'égalité'; +$lang['oid']='OID'; +$lang['obsolete']='Obsolète'; +$lang['ordering']='Ordonné'; +$lang['substring_rule']='Substring Rule'; +$lang['single_valued']='Valeur Unique'; +$lang['collective']='Collective'; +$lang['user_modification']='Modification Utilisateur'; +$lang['usage']='Usage'; +$lang['maximum_length']='Longueur maximale'; +$lang['could_not_retrieve_schema_from']='Impossible de récupérer le schéma de'; +$lang['type']='Type'; // Deleting entries -$lang['entry_deleted_successfully'] = 'Suppression de l\'entrée \'%s\' réussie.'; -$lang['you_must_specify_a_dn'] = 'Un DN doit être spécifié'; -$lang['could_not_delete_entry'] = 'Impossible de supprimer l\'entrée: %s'; +$lang['entry_deleted_successfully'] = 'Suppression de l\'entrée \'%s\' réussie.'; +$lang['you_must_specify_a_dn'] = 'Un DN doit être spécifié'; +$lang['could_not_delete_entry'] = 'Impossible de supprimer l\'entrée: %s'; +$lang['no_such_entry'] = 'Aucune entrée de ce type: %s'; +$lang['delete_dn'] = 'Delete %s'; +$lang['permanently_delete_children'] = 'Effacer également les sous-entrées?'; +$lang['entry_is_root_sub_tree'] = 'Cette entrée est la racine d\'une arborescence contenant %s entrées.'; +$lang['view_entries'] = 'voir les entrées'; +$lang['confirm_recursive_delete'] = 'phpLDAPadmin peut supprimer cette entrées ainsi que les %s noeuds enfants de façon récursive. Voir ci-dessous pour une liste des entrées que cette action suprimera. Voulez-vous continuer?'; +$lang['confirm_recursive_delete_note'] = 'Note: ceci est potentiellement très dangereux and vous faîtes cela à vos propres risques. Cette opération ne peut être annulée. Prenez en considération les alias ainsi que d\'autres choses qui pourraient causer des problèmes.'; +$lang['delete_all_x_objects'] = 'Suppressions des %s objets'; +$lang['recursive_delete_progress'] = 'Progression de la suppression récursive'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'L\'entrée %s ainsi que la sous-arborescence de ce noeud ont été supprimés avec succès.'; +$lang['failed_to_delete_entry'] = 'Echec lors de la suppression de l\'entrée %s'; +$lang['list_of_entries_to_be_deleted'] = 'Liste des entrées à supprimer:'; +$lang['sure_permanent_delete_object']='Etes-vous certain de vouloir supprimer définitivement cet objet?'; +$lang['dn'] = 'DN'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'L\'attribut "%s" est marqué comme étant en lecture seule dans la configuration de phpLDAPadmin.'; +$lang['no_attr_specified'] = 'Aucun nom d\'attributs spécifié.'; +$lang['no_dn_specified'] = 'Aucun DN specifié'; + +// Adding attributes +$lang['left_attr_blank'] = 'Vous avez laisser la valeur de l\'attribut vide. Veuillez s\'il vous plaît retourner à la page précédente et recommencer.'; +$lang['failed_to_add_attr'] = 'Echec lors de l\'ajout de l\'attribut.'; + +// Updating values +$lang['modification_successful'] = 'Modification réussie!'; +$lang['change_password_new_login'] = 'Votre mot de passe ayant été changé, vous devez maintenant vous logger avec votre nouveau mot de passe.'; // Adding objectClass form $lang['new_required_attrs'] = 'Nouveaux Attributs Obligatoires'; -$lang['requires_to_add'] = 'Cette action nécessite d\'ajouter'; +$lang['requires_to_add'] = 'Cette action nécessite d\'ajouter'; $lang['new_attributes'] = 'nouveaux attributs'; -$lang['new_required_attrs_instructions'] = 'Instructions: Afin d\'ajouter cette classe d\'objet, vous devez spécifier'; +$lang['new_required_attrs_instructions'] = 'Instructions: Afin d\'ajouter cette classe d\'objet, vous devez spécifier'; $lang['that_this_oclass_requires'] = 'dont cette classe d\'objet a besoin. Vous pouvez le faire avec ce formulaire.'; $lang['add_oclass_and_attrs'] = 'Ajout d\' ObjectClass et d\'attributs'; // General -$lang['chooser_link_tooltip'] = 'Cliquer pour choisir un entré(DN)'; -$lang['no_updates_in_read_only_mode'] = 'Vous ne pouvez effectuer des mises à jour si le serveur est en lecture seule'; +$lang['chooser_link_tooltip'] = 'Cliquer pour choisir un entré(DN)'; +$lang['no_updates_in_read_only_mode'] = 'Vous ne pouvez effectuer des mises à jour si le serveur est en lecture seule'; $lang['bad_server_id'] = 'Id de serveur invalide'; -$lang['not_enough_login_info'] = 'Informations insuffisantes pour se logguer au serveur. Veuillez, s\'il vous plaî, vérifier votre configuration.'; +$lang['not_enough_login_info'] = 'Informations insuffisantes pour se logguer au serveur. Veuillez, s\'il vous plaî, vérifier votre configuration.'; $lang['could_not_connect'] = 'Impossible de se connecter au serveur LDAP.'; -$lang['could_not_perform_ldap_mod_add'] = 'Echec lors de l\'opération ldap_mod_add.'; +$lang['could_not_connect_to_host_on_port'] = 'Impossible de se connecter à "%s" sur le port "%s"'; +$lang['could_not_perform_ldap_mod_add'] = 'Echec lors de l\'opération ldap_mod_add.'; $lang['bad_server_id_underline'] = 'serveur_id invalide: '; -$lang['success'] = 'Succès'; +$lang['success'] = 'Succès'; $lang['server_colon_pare'] = 'Serveur: '; $lang['look_in'] = 'Recherche dans: '; -$lang['missing_server_id_in_query_string'] = 'Aucun serveur ID spécifié dans la ligne de requête !'; -$lang['missing_dn_in_query_string'] = 'Aucun DN spécifié dans la ligne de requête !'; +$lang['missing_server_id_in_query_string'] = 'Aucun serveur ID spécifié dans la ligne de requête !'; +$lang['missing_dn_in_query_string'] = 'Aucun DN spécifié dans la ligne de requête !'; $lang['back_up_p'] = 'Retour...'; -$lang['no_entries'] = 'aucune entrée'; -$lang['not_logged_in'] = 'Vous n\'ê pas loggué'; -$lang['could_not_det_base_dn'] = 'Impossible de déterminer le DN de base'; +$lang['no_entries'] = 'aucune entrée'; +$lang['not_logged_in'] = 'Vous n\'êtes pas loggué'; +$lang['could_not_det_base_dn'] = 'Impossible de déterminer le DN de base'; +$lang['please_report_this_as_a_bug']='Veuillez s\'il-vous-plaît rapporter ceci comme un bogue.'; +$lang['reasons_for_error']='Ceci peut arriver pour plusieurs raisons, les plus probables sont:'; +$lang['yes']='Oui'; +$lang['no']='Non'; +$lang['go']='Go'; +$lang['delete']='Suppression'; +$lang['back']='Back'; +$lang['object']='object'; +$lang['delete_all']='Tous les supprimer'; +$lang['url_bug_report']='https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'Astuce'; +$lang['bug'] = 'bogue'; +$lang['warning'] = 'Avertissement'; +$lang['light'] = 'lumière'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Continuer >>'; + // Add value form $lang['add_new'] = 'Ajout d\'une nouvelle valeur '; @@ -174,151 +239,182 @@ $lang['distinguished_name'] = 'Distinguished Name'; $lang['current_list_of'] = 'Liste actuelle de'; $lang['values_for_attribute'] = 'valeur(s) pour l\' attribut'; $lang['inappropriate_matching_note'] = 'Note: Vous obtiendrez une erreur de type "inappropriate matching" si vous n\'avez pas
' . - 'défini une règle EQUALITY pour cet attribut auprès du serveur LDAP.'; + 'défini une règle "EQUALITY" pour cet attribut auprès du serveur LDAP.'; $lang['enter_value_to_add'] = 'Entrez la valeur que vous voulez ajouter:'; -$lang['new_required_attrs_note'] = 'Note: vous aurez peut-être besoin d\'introduire de nouveaux attributs requis pour cette classe d\'objet'; +$lang['new_required_attrs_note'] = 'Note: vous aurez peut-êre besoin d\'introduire de nouveaux attributs requis pour cette classe d\'objet'; $lang['syntax'] = 'Syntaxe'; //Copy.php -$lang['copy_server_read_only'] = 'Des mises à jours ne peuvent pas être effectuées si le serveur est en lecture seule'; -$lang['copy_dest_dn_blank'] = 'Vous avez laissé le DN de destination vide.'; -$lang['copy_dest_already_exists'] = 'L\'entrée de destination (%s) existe déjà.'; +$lang['copy_server_read_only'] = 'Des mises à jours ne peuvent pas être effectuées si le serveur est en lecture seule'; +$lang['copy_dest_dn_blank'] = 'Vous avez laissé le DN de destination vide.'; +$lang['copy_dest_already_exists'] = 'L\'entrée de destination (%s) existe déjà.'; $lang['copy_dest_container_does_not_exist'] = 'Le conteneur de destination (%s) n\'existe pas.'; $lang['copy_source_dest_dn_same'] = 'Le DN d\'origine et le DN de destination sont identiques.'; $lang['copy_copying'] = 'Copie '; -$lang['copy_recursive_copy_progress'] = 'Progression de la copie récursive'; -$lang['copy_building_snapshot'] = 'Construction de l\'image de l\'arborscence à copier... '; -$lang['copy_successful_like_to'] = 'Copie réussite! Voulez-vous '; -$lang['copy_view_new_entry'] = 'éditer cette nouvelle entrée'; +$lang['copy_recursive_copy_progress'] = 'Progression de la copie récursive'; +$lang['copy_building_snapshot'] = 'Construction de l\'image de l\'arborscence à copier... '; +$lang['copy_successful_like_to'] = 'Copie réussite! Voulez-vous '; +$lang['copy_view_new_entry'] = 'éditer cette nouvelle entrée'; $lang['copy_failed'] = 'Echec lors de la copie de: '; //edit.php -$lang['missing_template_file'] = 'Avertissement: le fichier modèle est manquant, '; -$lang['using_default'] = 'Utilisation du modèle par défaut.'; +$lang['missing_template_file'] = 'Avertissement: le fichier modèle est manquant, '; +$lang['using_default'] = 'Utilisation du modèle par défaut.'; +$lang['template'] = 'Modèle'; +$lang['must_choose_template'] = 'Vous devez choisir un modèle'; +$lang['invalid_template'] = '%s est un modèle non valide'; +$lang['using_template'] = 'Utilisation du modèle'; +$lang['go_to_dn'] = 'Aller à %s'; + + + //copy_form.php $lang['copyf_title_copy'] = 'Copie de '; $lang['copyf_to_new_object'] = 'vers un nouvel objet'; $lang['copyf_dest_dn'] = 'DN de destination'; -$lang['copyf_dest_dn_tooltip'] = 'Le DN de la nouvelle entrée à créer lors de la copie de l\'entrée source'; +$lang['copyf_dest_dn_tooltip'] = 'Le DN de la nouvelle entrée à créer lors de la copie de l\'entrée source'; $lang['copyf_dest_server'] = 'Destination Serveur'; -$lang['copyf_note'] = 'Note: La copie entre différents serveurs fonctionne seulement si il n\'y a pas de violation de schéma'; -$lang['copyf_recursive_copy'] = 'Copier récursivement les sous-entrées de cet object.'; +$lang['copyf_note'] = 'Note: La copie entre différents serveurs fonctionne seulement si il n\'y a pas de violation de schéma'; +$lang['copyf_recursive_copy'] = 'Copier récursivement les sous-entrées de cet object.'; +$lang['recursive_copy'] = 'Copie récursive'; +$lang['filter'] = 'Filtre'; +$lang['filter_tooltip'] = 'Lors d\'une copie récursive, seuls les entrées correspondant à ce filtre seront copiés'; //create.php -$lang['create_required_attribute'] = 'Une valeur n\'a pas été spécifiée pour l\'attribut requis %s.'; -$lang['create_redirecting'] = 'Redirection'; -$lang['create_here'] = 'ici'; -$lang['create_could_not_add'] = 'L\'ajout de l\'objet au serveur LDAP n\'a pu être effectuée.'; +$lang['create_required_attribute'] = 'Une valeur n\'a pas été spécifiée pour l\'attribut requis %s.'; +$lang['redirecting'] = 'Redirection'; +$lang['here'] = 'ici'; +$lang['create_could_not_add'] = 'L\'ajout de l\'objet au serveur LDAP n\'a pu être effectuée.'; +$lang['rdn_field_blank'] = 'Vous avez laisser le champ du RDN vide.'; +$lang['container_does_not_exist'] = 'Le containeur que vous avez spécifié (%s) n\'existe pas. Veuillez, s\'il vous plaît recommencer.'; +$lang['no_objectclasses_selected'] = 'Vous n\'avez sélectionner aucun ObjectClasses pour cet objet. Veuillez s\'il vous plaît retourner à la page précédente et le faire.'; +$lang['hint_structural_oclass'] = 'Note: Vous devez choisir au moins une classe d\'objet de type structural'; //create_form.php $lang['createf_create_object'] = 'Creation d\'un objet'; -$lang['createf_choose_temp'] = 'Choix d\'un modèle'; -$lang['createf_select_temp'] = 'Selectionner un modèle pour la procédure de création'; +$lang['createf_choose_temp'] = 'Choix d\'un modèle'; +$lang['createf_select_temp'] = 'Selectionner un modèle pour la procédure de création'; $lang['createf_proceed'] = 'Continuer'; +$lang['relative_distinguished_name'] = 'Relative Distinguished Name'; +$lang['rdn'] = 'RDN'; +$lang['rdn_example'] = '(exemple: cn=MyNewPerson)'; +$lang['container'] = 'Containeur'; +$lang['alias_for'] = 'Alias pour %s'; + //creation_template.php $lang['ctemplate_on_server'] = 'Sur le serveur'; -$lang['ctemplate_no_template'] = 'Aucun modèle spécifié dans les variables POST.'; -$lang['ctemplate_config_handler'] = 'Votre configuration scécifie un gestionnaire de'; -$lang['ctemplate_handler_does_not_exist'] = 'pour ce modèle. Cependant, ce gestionnaire n\'existe pas dans le répertoire \'templates/creation\'.'; - +$lang['ctemplate_no_template'] = 'Aucun modèle spécifié dans les variables POST.'; +$lang['ctemplate_config_handler'] = 'Votre configuration scécifie un gestionnaire de'; +$lang['ctemplate_handler_does_not_exist'] = 'pour ce modèle. Cependant, ce gestionnaire n\'existe pas dans le répertoire \'templates/creation\'.'; +$lang['create_step1'] = 'Etape 1 de 2: Nom et classes d\'objet'; +$lang['create_step2'] = 'Etape 2 de 2: Définition des attributs et de leurs valeurs'; //search.php -$lang['you_have_not_logged_into_server'] = 'Vous ne vous êtes pas encore loggé auprès du serveur sélectionné. Vous ne pouvez y effectuer des recherches.'; +$lang['you_have_not_logged_into_server'] = 'Vous ne vous êtes pas encore loggé auprès du serveur sélectionné. Vous ne pouvez y effectuer des recherches.'; $lang['click_to_go_to_login_form'] = 'Cliquer ici pour vous rendre au formulaire de login'; -$lang['unrecognized_criteria_option'] = 'Critère non reconnu: '; -$lang['if_you_want_to_add_criteria'] = 'Si vous voulez ajouter vos propres critère à la liste, soyez cetain d\'éditer search.php afin de pouvoir les gérer.'; -$lang['entries_found'] = 'Entrées trouvée: '; -$lang['filter_performed'] = 'Filtre utilisé: '; -$lang['search_duration'] = 'Recherche effectuée par phpLDAPadmin en'; +$lang['unrecognized_criteria_option'] = 'Critère non reconnu: '; +$lang['if_you_want_to_add_criteria'] = 'Si vous voulez ajouter vos propres critère à la liste, soyez cetain d\'éditer search.php afin de pouvoir les gérer.'; +$lang['entries_found'] = 'Entrées trouvées: '; +$lang['filter_performed'] = 'Filtre utilisé: '; +$lang['search_duration'] = 'Recherche effectuée par phpLDAPadmin en'; $lang['seconds'] = 'secondes'; // search_form_advanced.php -$lang['scope_in_which_to_search'] = 'Portée de la recherche'; +$lang['scope_in_which_to_search'] = 'Portée de la recherche'; $lang['scope_sub'] = 'Sub (le sous-arbre)'; $lang['scope_one'] = 'One (un niveau sous la base)'; $lang['scope_base'] = 'Base (le dn de base)'; $lang['standard_ldap_search_filter'] = 'Un filtre standard de recherche LDAP. Exemple: (&(sn=Smith)(givenname=David))'; $lang['search_filter'] = 'Filtre pour la recherche'; -$lang['list_of_attrs_to_display_in_results'] = 'Une liste des attributs à afficher dans les résultats(séparés par des virgules)'; -$lang['show_attributes'] = 'Attributs à afficher'; +$lang['list_of_attrs_to_display_in_results'] = 'Une liste des attributs à afficher dans les résultats(séparés par des virgules)'; +$lang['show_attributes'] = 'Attributs à afficher'; // search_form_simple.php -$lang['search_for_entries_whose'] = 'Chercher les entrées dont:'; +$lang['search_for_entries_whose'] = 'Chercher les entrées dont:'; $lang['equals'] = 'est egal à;'; $lang['starts with'] = 'commence par'; $lang['contains'] = 'contient'; $lang['ends with'] = 'se termine par'; -$lang['sounds like'] = 'ressemble à'; +$lang['sounds like'] = 'ressemble à'; // server_info.php -$lang['could_not_fetch_server_info'] = 'Impossible de récupérer les informations concernant le serveur Ldap'; +$lang['could_not_fetch_server_info'] = 'Impossible de récupérer les informations concernant le serveur Ldap'; $lang['server_info_for'] = 'Informations pour le serveur: '; -$lang['server_reports_following'] = 'Le serveur a rapporté les informations suivantes'; +$lang['server_reports_following'] = 'Le serveur a rapporté les informations suivantes'; $lang['nothing_to_report'] = 'Ce serveur n\'a aucunes informations a rapporter.'; //update.php -$lang['update_array_malformed'] = 'update_array n\'est pas bien formé. Ceci est peut-être un bogue de phpLDAPadmin. Pourriez-vous effectuer un rapport de bogue, s\'il vous plaît.'; -$lang['could_not_perform_ldap_modify'] = 'L\'opération ldap_modify n\'a pu être effectuée.'; +$lang['update_array_malformed'] = 'update_array n\'est pas bien formé. Ceci est peut-être un bogue de phpLDAPadmin. Pourriez-vous effectuer un rapport de bogue, s\'il vous plaît.'; +$lang['could_not_perform_ldap_modify'] = 'L\'opération ldap_modify n\'a pu être effectuée.'; // update_confirm.php $lang['do_you_want_to_make_these_changes'] = 'Voulez-vous effectuer ces changements?'; $lang['attribute'] = 'Attribut'; $lang['old_value'] = 'Ancienne Valeur'; $lang['new_value'] = 'Nouvelle Valeur'; -$lang['attr_deleted'] = '[attribut supprimé]'; +$lang['attr_deleted'] = '[attribut supprimé]'; $lang['commit'] = 'Valider'; $lang['cancel'] = 'Annuler'; -$lang['you_made_no_changes'] = 'Aucun changement n\'a été effectué'; +$lang['you_made_no_changes'] = 'Aucun changement n\'a été effectué'; $lang['go_back'] = 'Retour'; // welcome.php $lang['welcome_note'] = 'Utilisez le menu de gauche pour la navigation'; +$lang['credits'] = 'Crédits'; +$lang['changelog'] = 'ChangeLog'; +$lang['donate'] = 'Donation'; // view_jpeg_photo.php $lang['unsafe_file_name'] = 'Nom de fichier non sûr: '; -$lang['no_such_file'] = 'Aucun fichier trouvé: '; +$lang['no_such_file'] = 'Aucun fichier trouvé: '; //function.php -$lang['auto_update_not_setup'] = 'auto_uid_numbers a été activé pour %s dans votre configuration, - mais vous n\'avez pas spécifié l\' auto_uid_number_mechanism. Veuiller corriger - ce problème.'; -$lang['uidpool_not_set'] = 'Vous avez spécifié lauto_uid_number_mechanism comme uidpool - dans la configuration du serveur %s, mais vous n\'avez pas spécifié de valeur pour - auto_uid_number_uid_pool_dn. Veuillez le spécifier avant de continuer.'; -$lang['uidpool_not_exist'] = 'Le uidPool que vous avez spécifié dans votre configuration (%s) +$lang['auto_update_not_setup'] = '"auto_uid_numbers" a été activé pour %s dans votre configuration, + mais vous n\'avez pas spécifié le mécanisme "auto_uid_number_mechanism". Veuiller corriger + ce problème.'; +$lang['uidpool_not_set'] = 'Vous avez spécifié lauto_uid_number_mechanism comme uidpool + dans la configuration du serveur %s, mais vous n\'avez pas spécifié de valeur pour + auto_uid_number_uid_pool_dn. Veuillez le spécifier avant de continuer.'; +$lang['uidpool_not_exist'] = 'Le uidPool que vous avez spécifié dans votre configuration (%s) n\'existe pas.'; -$lang['specified_uidpool'] = 'L\'auto_uid_number_mechanism a été défini à search dans votre - configuration pour le serveur %s, mais vous n\'avez pas défini - auto_uid_number_search_base. Veuillez le spécifier avant de continuer.'; -$lang['auto_uid_invalid_value'] = 'Une valeur non valide a été spécifiée pour auto_uid_number_mechanism (%s) +$lang['specified_uidpool'] = 'Le méchanisme "auto_uid_number_mechanism" a été défini à search dans votre + configuration pour le serveur %s, mais la directive "auto_uid_number_search_base" n\'est pad définie. Veuillez le spécifier avant de continuer.'; +$lang['auto_uid_invalid_credential'] = 'Impossible d\'effectuer un "bind" à %s avec vos droits pour "auto_uid". Veuillez S\'il vous plaît vérifier votre fichier de configuration.'; +$lang['bad_auto_uid_search_base'] = 'Votre fichier de configuration spécifie un invalide auto_uid_search_base pour le serveur %s'; +$lang['auto_uid_invalid_value'] = 'Une valeur non valide a été spécifiée pour le méchaninsme "auto_uid_number_mechanism" (%s) dans votre configuration. Seul uidpool et search sont valides. - Veuillez corriger ce problème.'; + Veuillez corriger ce problème.'; $lang['error_auth_type_config'] = 'Erreur: Vous avez une erreur dans votre fichier de configuration.Les valeurs - supportées pour \'auth_type\' sont \'config\' et \'form\' dans la section $servers. - Vous avez mis \'%s\', ce qui n\'est pas autorisé.'; + supportées pour \'auth_type\' sont \'config\' et \'form\' dans la section $servers. + Vous avez mis \'%s\', ce qui n\'est pas autorisé.'; $lang['php_install_not_supports_tls'] = 'Votre installation PHP ne supporte pas TLS.'; -$lang['could_not_start_tls'] = 'Impossible de démarrer TLS.
Veuillez,s\'il vous plaît, vérifier la configuration de votre serveur LDAP.'; -$lang['auth_type_not_valid'] = 'Vous avez une erreur dans votre fichier de configuration. auth_type %s n\'est pas valide.'; +$lang['could_not_start_tls'] = 'Impossible de démarrer TLS.
Veuillez,s\'il vous plaît, vérifier la configuration de votre serveur LDAP.'; +$lang['could_not_bind_anon'] = 'Impossible d\'effectuer un "bind" anonyme.'; +$lang['anonymous_bind'] = 'Bind Anonyme'; +$lang['bad_user_name_or_password'] = 'Mauvais nom d\'utilisateur ou mot de passe. Veuillez recommencer s\'il vous plaît.'; +$lang['redirecting_click_if_nothing_happens'] = 'Redirection... Cliquez ici si rien ne se passe.'; +$lang['successfully_logged_in_to_server'] = 'Login réussi sur le serveur %s'; +$lang['could_not_set_cookie'] = 'Impossible d\'activer les cookies.'; $lang['ldap_said'] = 'LDAP said: %s

'; $lang['ferror_error'] = 'Erreur'; $lang['fbrowse'] = 'naviguer'; $lang['delete_photo'] = 'Supprimer la photo'; $lang['install_not_support_blowfish'] = 'Votre installation PHP ne support pas l\'encryption blowfish.'; -$lang['install_no_mash'] = 'Votre installation PHP ne supporte pas la fonction mhash(). Impossible de créer un hash SHA.'; +$lang['install_no_mash'] = 'Votre installation PHP ne supporte pas la fonction mhash(). Impossible de créer un hash SHA.'; $lang['jpeg_contains_errors'] = 'jpegPhoto contient des erreurs
'; -$lang['ferror_number'] = 'Numéro de l\'erreur: %s (%s)

'; +$lang['ferror_number'] = 'Numéro de l\'erreur: %s (%s)

'; $lang['ferror_discription'] = 'Description: %s

'; -$lang['ferror_number_short'] = 'Numé de l\'erreur: %s

'; +$lang['ferror_number_short'] = 'Numé de l\'erreur: %s

'; $lang['ferror_discription_short'] = 'Description: (pas de description disponible)
'; -$lang['ferror_submit_bug'] = 'Est-ce un bogue de phpLDAPadmin? Si c\'est le cas,veuillez s\'il vous plaît le rapporter.'; -$lang['ferror_unrecognized_num'] = 'Numéro de l\'erreur non reconnu: '; +$lang['ferror_submit_bug'] = 'Est-ce un bogue de phpLDAPadmin? Si c\'est le cas,veuillez s\'il vous plaît le rapporter.'; +$lang['ferror_unrecognized_num'] = 'Numéro de l\'erreur non reconnu: '; $lang['ferror_nonfatil_bug'] = '
+ Vous avez trouvé un bogue non fatal dans phpLDAPAdmin!
- Vous avez trouvé un bogue non fatal dans phpLDAPAdmin!
Erreur:%s (%s)
Fichier:
Erreur:%s (%s)
Fichier: %s ligne %s, origine de l\'appel %s
Versions:PLA: %s, PHP: %s, SAPI: %s
Serveur Web:%s
- S\'il vous plaît, veuillez rapporter ce bogue en cliquant ici.

'; -$lang['ferror_congrats_found_bug'] = 'Félicitations! Vous avez trouvé un bogue dans phpLDAPadmin.

+ S\'il vous plaît, veuillez rapporter ce bogue en cliquant ici.

'; +$lang['ferror_congrats_found_bug'] = 'Félicitations! Vous avez trouvé un bogue dans phpLDAPadmin.

@@ -331,11 +427,11 @@ $lang['ferror_congrats_found_bug'] = 'Félicitations! Vous avez trouv&eacu
Erreur:%s
Niveau:%s
Serveur Webr:%s

- S\'il vous plaît, veuillez rapporter ce bogue en cliquant ici!'; + S\'il vous plaît, veuillez rapporter ce bogue en cliquant ici!'; //ldif_import_form $lang['import_ldif_file_title'] = 'Import de fichier LDIF'; -$lang['select_ldif_file'] = 'Sélectionner un fichier LDIF:'; +$lang['select_ldif_file'] = 'Sélectionner un fichier LDIF:'; $lang['select_ldif_file_proceed'] = 'Continuer >>'; //lldif_import @@ -343,13 +439,88 @@ $lang['add_action'] = 'Ajout de...'; $lang['delete_action'] = 'Supression de...'; $lang['rename_action'] = 'Renommage de...'; $lang['modify_action'] = 'Modification de...'; -$lang['failed'] = 'échec'; +$lang['warning_no_ldif_version_found'] = 'Aucun numéro de version trouvé. Version 1 supposé.'; +$lang['valid_dn_line_required'] = 'Une ligne avec un dn valide est requis.'; +$lang['valid_dn_line_required'] = 'A valid dn line is required.'; +$lang['missing_uploaded_file'] = 'Le fichier est manquant.'; +$lang['no_ldif_file_specified.'] = 'Aucun fichier LDIFspécifié. Veuillez réessayer, s\'il vous plaît.'; +$lang['ldif_file_empty'] = 'Le fichier LDIF est vide.'; +$lang['file'] = 'Fichier'; +$lang['number_bytes'] = '%s bytes'; + +$lang['failed'] = 'échec'; $lang['ldif_parse_error'] = 'Erreur lors de l\'analyse du fichier LDIF'; $lang['ldif_could_not_add_object'] = 'Impossible d\'ajouter l\'objet:'; $lang['ldif_could_not_rename_object'] = 'Impossible de renommer l\'objet:'; $lang['ldif_could_not_delete_object'] = 'Impossible de supprimer l\'objet:'; $lang['ldif_could_not_modify_object'] = 'Impossible de modifier l\'objet:'; -$lang['ldif_line_number'] = 'Numéro de ligne'; +$lang['ldif_line_number'] = 'Numéro de ligne'; $lang['ldif_line'] = 'Ligne'; +//delete_form +$lang['sure_permanent_delete_object']='Etes-vous certain de vouloir supprimer définitivement cet objet?'; +$lang['list_of_entries_to_be_deleted'] = 'Liste des entrées à supprimer:'; +$lang['dn'] = 'DN'; + +// Exports +$lang['export_format'] = 'Format'; +$lang['line_ends'] = 'Fin de ligne'; +$lang['must_choose_export_format'] = 'Vous devez sélectionner un format pour l\'exportation.'; +$lang['invalid_export_format'] = 'Format d\'exportation invalide'; +$lang['no_exporter_found'] = 'Aucun exporteur trouvé.'; +$lang['error_performing_search'] = 'Une erreur a eu lieu lors de la recherche.'; +$lang['showing_results_x_through_y'] = 'Affichage de %s à %s des résultats.'; +$lang['searching'] = 'Recherche...'; +$lang['size_limit_exceeded'] = 'Notice, la limite de taille pour la recherche est atteinte.'; +$lang['entry'] = 'Entrée'; +$lang['ldif_export_for_dn'] = 'Export LDIF pour: %s'; +$lang['generated_on_date'] = 'Generé par phpLDAPadmin ( http://phpldapadmin.sourceforge.net/ ) le %s'; +$lang['total_entries'] = 'Nombre d\'entrées'; +$lang['dsml_export_for_dn'] = 'Export DSML pour: %s'; + + +// logins +$lang['could_not_find_user'] = 'Impossible de trouver l\'utilisateur "%s"'; +$lang['password_blank'] = 'Le champ pour le mot de passe est vide.'; +$lang['login_cancelled'] = 'Login interrompu.'; +$lang['no_one_logged_in'] = 'Personne n\'est loggé à ce serveur.'; +$lang['could_not_logout'] = 'Impossible de se déconnecter.'; +$lang['unknown_auth_type'] = 'auth_type inconnu: %s'; +$lang['logged_out_successfully'] = 'Déconnection réussie du serveur %s'; +$lang['authenticate_to_server'] = 'Authentification au serveur %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Attention: Cette connection web n\'est pas cryptée.'; +$lang['not_using_https'] = 'Vous n\'utilisez pas \'https\'. Le navigateur web transmettra les informations de login en clair.'; +$lang['login_dn'] = 'Login DN'; +$lang['user_name'] = 'Nom de l\'utilisateur'; +$lang['password'] = 'Mot de passe'; +$lang['authenticate'] = 'Authentification'; + +// Entry browser +$lang['entry_chooser_title'] = 'Sélection de l\'entrée'; + +// Index page +$lang['need_to_configure'] = 'phpLDAPadmin a besoin d\'être configuré.Pour cela, éditer le fichier \'config.php\' . Un exemple de fichier de configuration est fourni dans \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Les suppressions ne sont pas permises en mode lecure seule.'; +$lang['error_calling_mass_delete'] = 'Erreur lors de l\'appel à mass_delete.php. mass_delete est manquant dans les variables POST.'; +$lang['mass_delete_not_array'] = 'La variable POST mass_delete \'est pas un tableau.'; +$lang['mass_delete_not_enabled'] = 'La suppression de masse n\'est pas disponible. Veuillez l\'activer dans config.php avant de continuer.'; +$lang['mass_deleting'] = 'Suppression en masse'; +$lang['mass_delete_progress'] = 'Progrès de la suppression sur le serveur "%s"'; +$lang['malformed_mass_delete_array'] = 'Le tableau mass_delete n\'est pas bien formé.'; +$lang['no_entries_to_delete'] = 'Vous n\'avez sélectionné aucune entrées à effacer.'; +$lang['deleting_dn'] = 'Deleting %s'; +$lang['total_entries_failed'] = '%s des %s entrées n\'ont pu être supprimées.'; +$lang['all_entries_successful'] = 'Toutes les entrées ont été supprimées avec succès.'; +$lang['confirm_mass_delete'] = 'Confirmation de la suppression en masse de %s entrées sur le serveur %s'; +$lang['yes_delete'] = 'Oui, supprimer!'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Vous ne pouvez pas renommer une entrée qui a des sous-entrées'; +$lang['no_rdn_change'] = 'Le RDN n\'a pas été modifié'; +$lang['invalid_rdn'] = 'Valeur invalide du RDN'; +$lang['could_not_rename'] = 'Impossible de renommer l\'entrée'; + + ?> diff --git a/lang/recoded/hu.php b/lang/recoded/hu.php new file mode 100644 index 0000000..6f0ee89 --- /dev/null +++ b/lang/recoded/hu.php @@ -0,0 +1,556 @@ + + * with help from SIPOS Agnes + * $Header: /cvsroot/phpldapadmin/phpldapadmin/lang/recoded/hu.php,v 1.1 2004/05/23 21:12:04 i18phpldapadmin Exp $ + */ + +/* --- INSTRUCTIONS FOR TRANSLATORS --- + * + * If you want to write a new language file for your language, + * please submit the file on SourceForge: + * + * https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498548 + * + * Use the option "Check to Upload and Attach a File" at the bottom + * + * Thank you! + * + */ + +/* + * The $lang array contains all the strings that phpLDAPadmin uses. + * Each language file simply defines this aray with strings in its + * language. + */ + +// Search form +$lang['simple_search_form_str'] = 'Egyszerű keresési űrlap'; // 'Simple Search Form'; +$lang['advanced_search_form_str'] = 'Részletes keresési űrlap'; //'Advanced Search Form'; +$lang['server'] = 'Kiszolgáló'; //'Server'; +$lang['search_for_entries_whose'] = 'Bejegyzések keresése ahol'; //'Search for entries whose'; +$lang['base_dn'] = 'Alap-DN'; //'Base DN'; +$lang['search_scope'] = 'A keresés hatásköre'; //'Search Scope'; +$lang['show_attributes'] = 'MegjelenítendÅ‘ attribútumok'; //'Show Attributtes'; +$lang['Search'] = 'Keresés'; //'Search'; +$lang['predefined_search_str'] = 'ElÅ‘re definiált keresés kiválasztása'; //'Select a predefined search'; +$lang['predefined_searches'] = 'ElÅ‘re definiált keresések'; //'Predefined Searches'; +$lang['no_predefined_queries'] = 'Nincs keresés definiálva a config.php-ben.'; //'No queries have been defined in config.php.'; + +// Tree browser +$lang['request_new_feature'] = 'Új tulajdonság kérése'; //'Request a new feature'; +$lang['report_bug'] = 'Hiba jelentése'; //'Report a bug'; +$lang['schema'] = 'séma'; //'schema'; +$lang['search'] = 'keresés'; //'search'; +$lang['create'] = 'létrehozás'; //'create'; +$lang['info'] = 'infó'; //'info'; +$lang['import'] = 'import'; //'import'; +$lang['refresh'] = 'frissítés'; //'refresh'; +$lang['logout'] = 'kilépés'; //'logout'; +$lang['create_new'] = 'Új bejegyzés'; //'Create New'; +$lang['view_schema_for'] = 'Séma megtekintése:'; //'View schema for'; +$lang['refresh_expanded_containers'] = 'Az összes kiterjesztett tároló frissítése:'; //'Refresh all expanded containers for'; +$lang['create_new_entry_on'] = 'Új bejegyzés létrehozása:'; //'Create a new entry on'; +$lang['new'] = 'új'; //'new'; +$lang['view_server_info'] = 'A kiszolgáló információinak megtekintése'; //'View server-supplied information'; +$lang['import_from_ldif'] = 'LDIF-állományból bejegyzések importálása'; //'Import entries from an LDIF file'; +$lang['logout_of_this_server'] = 'Kilépés ebbÅ‘l a kiszolgálóból'; //'Logout of this server'; +$lang['logged_in_as'] = 'Belépve mint'; //'Logged in as: '; +$lang['read_only'] = 'csak olvasható'; //'read only'; +$lang['read_only_tooltip'] = 'A phpLDAPadmin adminisztrátora ezt az attribútumot csak olvashatóra állította'; //'This attribute has been flagged as read only by the phpLDAPadmin administrator'; +$lang['could_not_determine_root'] = 'Nem tudom megállapítani az LDAP-fa gyökerét.'; //'Could not determine the root of your LDAP tree.'; +$lang['ldap_refuses_to_give_root'] = 'Az LDAP-kiszolgálót úgy konfigurálták, hogy ne fedje föl az LDAP-fa gyökerét.'; //'It appears that the LDAP server has been configured to not reveal its root.'; +$lang['please_specify_in_config'] = 'Kérem adja meg a config.php-ban'; //'Please specify it in config.php'; +$lang['create_new_entry_in'] = 'Új bejegyzés létrehozása:'; //'Create a new entry in'; +$lang['login_link'] = 'Belépés...'; //'Login...'; +$lang['login'] = 'belépés'; //'login'; + +// Entry display +$lang['delete_this_entry'] = 'A bejegyzés törlése'; //'Delete this entry'; +$lang['delete_this_entry_tooltip'] = 'Ezt a döntést majd még meg kell erÅ‘síteni'; //'You will be prompted to confirm this decision'; +$lang['copy_this_entry'] = 'A bejegyzés másolása'; //'Copy this entry'; +$lang['copy_this_entry_tooltip'] = 'Az objektum másolása más helyre új DN-nel és/vagy másik kiszolgálóra'; //'Copy this object to another location, a new DN, or another server'; +$lang['export'] = 'Exportálás'; //'Export'; +$lang['export_tooltip'] = 'Az objektum kiírása'; //'Save a dump of this object'; +$lang['export_subtree_tooltip'] = 'Az objektum és az összes gyermekének kiírása'; //'Save a dump of this object and all of its children'; +$lang['export_subtree'] = 'Részfa exportálása'; //'Export subtree'; +$lang['create_a_child_entry'] = 'Gyermekbejegyzés létrehozása'; //'Create a child entry'; +$lang['rename_entry'] = 'A bejegyzés átnevezése'; 'Rename Entry'; +$lang['rename'] = 'Ãtnevezés'; //'Rename'; +$lang['add'] = 'Hozzáadás'; //'Add'; +$lang['view'] = 'Megtekintés'; //'View'; +$lang['view_one_child'] = 'A gyermek megtekintése (1 darab)'; //'View 1 child'; +$lang['view_children'] = 'A gyermekek megtekintése (%s darab)'; //'View %s children'; +$lang['add_new_attribute'] = 'Új attribútum hozzáadása'; //'Add new attribute'; +$lang['add_new_objectclass'] = 'Új objektumosztály hozzáadása'; //'Add new ObjectClass'; +$lang['hide_internal_attrs'] = 'BelsÅ‘ attribútumok elrejtése'; //'Hide internal attributes'; +$lang['show_internal_attrs'] = 'BelsÅ‘ attribútumok megjelenítése'; //'Show internal attributes'; +$lang['attr_name_tooltip'] = 'Kattintással megjelenik a(z) %s attribútumtípus sémabeli definíciója'; //'Click to view the schema defintion for attribute type \'%s\''; +$lang['none'] = 'nincs'; //'none'; +$lang['no_internal_attributes'] = 'Nincs belsÅ‘ attribútum'; //'No internal attributes'; +$lang['no_attributes'] = 'A bejegyzésnek nincs attribútuma'; //'This entry has no attributes'; +$lang['save_changes'] = 'Változások mentése'; //'Save Changes'; +$lang['add_value'] = 'érték hozzáadása'; //'add value'; +$lang['add_value_tooltip'] = 'Érték hozzáadása a(z) %s attribútumhoz'; //'Add an additional value to attribute \'%s\''; +$lang['refresh_entry'] = 'Frissítés'; //'Refresh'; +$lang['refresh_this_entry'] = 'Bejegyzés frissítése'; //'Refresh this entry'; +$lang['delete_hint'] = 'Tipp: Az attribútum törléséhez elÅ‘bb törölje a mezÅ‘t, majd kattintson a változtatások mentésére.'; //'Hint: To delete an attribute, empty the text field and click save.'; +$lang['attr_schema_hint'] = 'Tipp: Az attribútum sémájának megtekintéséhez kattintson az attribútum nevére.'; //'Hint: To view the schema for an attribute, click the attribute name.'; +$lang['attrs_modified'] = 'Módosult néhány attribútum (%s), s ezek kiemelve szerepelnek az alábbiakban.'; //'Some attributes (%s) were modified and are highlighted below.'; +$lang['attr_modified'] = 'Módosult egy attribútum (%s), s ez kiemelve szerepel az alábbiakban. '; //'An attribute (%s) was modified and is highlighted below.'; +$lang['viewing_read_only'] = 'A bejegyzés megtekintése csak olvasható üzemmódban.'; //'Viewing entry in read-only mode.'; +$lang['no_new_attrs_available'] = 'a bejegyzéshez nem tartozik új attribútum'; //'no new attributes available for this entry'; +$lang['no_new_binary_attrs_available'] = 'a bejegyzéshez nem tartozik új bináris attribútum'; //'no new binary attributes available for this entry'; +$lang['binary_value'] = 'Bináris érték'; //'Binary value'; +$lang['add_new_binary_attr'] = 'Új bináris attribútum hozzáadása'; //'Add new binary attribute'; +$lang['alias_for'] = 'Megj.: A(z) %s egy álneve (aliasa) a(z) %s attribútumnak'; //'Note: \'%s\' is an alias for \'%s\''; +$lang['download_value'] = 'érték letöltése'; //'download value'; +$lang['delete_attribute'] = 'attribútum törlése'; //'delete attribute'; +$lang['true'] = 'igaz'; //'true'; +$lang['false'] = 'hamis'; //'false'; +$lang['none_remove_value'] = 'nincs, érték törése'; //'none, remove value'; +$lang['really_delete_attribute'] = 'Attribútum tényleges törlése'; //'Really delete attribute'; +$lang['add_new_value'] = 'Új érték hozzáadása'; //'Add New Value'; + +// Schema browser +$lang['the_following_objectclasses'] = 'A következÅ‘ objektumosztályokat (objectClass) támogatja ez a kiszolgáló.'; //'The following objectClasses are supported by this LDAP server.'; +$lang['the_following_attributes'] = 'A következÅ‘ attribútumtípusokat (attributeType) támogatja ez a kiszolgáló.'; //'The following attributeTypes are supported by this LDAP server.'; +$lang['the_following_matching'] = 'A következÅ‘ illesztÅ‘szabályokat (matching rule) támogatja ez a kiszolgáló.'; //'The following matching rules are supported by this LDAP server.'; +$lang['the_following_syntaxes'] = 'A következÅ‘ szintaxisokat (syntax) támogatja ez a kiszolgáló.'; //'The following syntaxes are supported by this LDAP server.'; +$lang['schema_retrieve_error_1']= 'A kiszolgáló nem beszéli elég jól az LDAP-protokollt'; //'The server does not fully support the LDAP protocol.'; +$lang['schema_retrieve_error_2']= 'Ez a PHP-verzió nem tudja szabályosan végrehajtani a keresést.'; //'Your version of PHP does not correctly perform the query.'; +$lang['schema_retrieve_error_3']= 'Vagy végül is a phpLDAPadmin nem tudja hogyan kell a sémát letölteni errÅ‘l a kiszolgálóról.'; //'Or lastly, phpLDAPadmin doesn\'t know how to fetch the schema for your server.'; +$lang['jump_to_objectclass'] = 'Ugrás az objektumosztályhoz'; //'Jump to an objectClass'; +$lang['jump_to_attr'] = 'Ugrás az attribútumtípushoz'; //'Jump to an attribute type'; +$lang['jump_to_matching_rule'] = 'Ugrás az illesztÅ‘szabályhoz'; //'Jump to a matching rule'; +$lang['schema_for_server'] = 'Séma:'; //'Schema for server'; +$lang['required_attrs'] = 'KötelezÅ‘ attribútumok'; //'Required Attributes'; +$lang['optional_attrs'] = 'Opcionális attribútumok'; //'Optional Attributes'; +$lang['optional_binary_attrs'] = 'Opcionális bináris attribútumok'; //'Optional Binary Attributes'; +$lang['OID'] = 'OID'; //'OID'; +$lang['aliases']='Ãlnevek (alias)'; //'Aliases'; +$lang['desc'] = 'Leírás'; //'Description'; +$lang['no_description'] = 'nincs leírás'; //'no description'; +$lang['name'] = 'Név'; //'Name'; +$lang['equality']='EgyenlÅ‘ség'; //'Equality'; +$lang['is_obsolete'] = 'Ez az objektumosztály maradi'; //'This objectClass is obsolete.'; +$lang['inherits'] = 'KitÅ‘l öröklÅ‘dik'; //'Inherits from'; +$lang['inherited_from'] = 'KitÅ‘l örökölte:'; //'Inherited from'; +$lang['parent_to'] = 'Kinek a szülÅ‘je'; //'Parent to'; +$lang['jump_to_this_oclass'] = 'Ugrás ehhez az objektumosztály-definícióhoz'; //'Jump to this objectClass definition'; +$lang['matching_rule_oid'] = 'IllesztÅ‘szabály-OID'; //'Matching Rule OID'; +$lang['syntax_oid'] = 'Szintaxis-OID'; //'Syntax OID'; +$lang['not_applicable'] = 'nem alkalmazható'; //'not applicable'; +$lang['not_specified'] = 'nincs megadva'; //'not specified'; +$lang['character'] = 'karakter'; //'character'; +$lang['characters'] = 'karakter'; //'characters'; +$lang['used_by_objectclasses'] = 'Mely osztályok használják'; //'Used by objectClasses'; +$lang['used_by_attributes'] = 'Mely attribútumok használják'; //'Used by Attributes'; +$lang['maximum_length'] = 'Maximális hossz'; //'Maximum Length'; +$lang['attributes'] = 'Attribútumtípusok';//'Attribute Types'; +$lang['syntaxes'] = 'Szintaxisok'; //'Syntaxes'; +$lang['matchingrules'] = 'IllesztÅ‘szabályok'; //'Matching Rules'; +$lang['oid'] = 'OID'; //'OID'; +$lang['obsolete'] = 'Maradi'; //'Obsolete'; +$lang['ordering'] = 'Sorbarendezés'; //'Ordering'; +$lang['substring_rule'] = 'Alfüzér-szabály'; //'Substring Rule'; +$lang['single_valued'] = 'Egyértékű'; //'Single Valued'; +$lang['collective'] = 'Kollektív'; //'Collective'; +$lang['user_modification'] = 'Felhasználó-módosítás'; //'User Modification'; +$lang['usage'] = 'Használat'; //'Usage'; +$lang['could_not_retrieve_schema_from'] = 'Nem tudom a sémát elérni,'; //'Could not retrieve schema from'; +$lang['type']='Típus'; //'Type'; + +// Deleting entries +$lang['entry_deleted_successfully'] = 'A(z) %s bejegyzés sikeresen törölve.'; //'Entry %s deleted successfully.'; +$lang['you_must_specify_a_dn'] = 'A DN-t meg kell adni'; //'You must specify a DN'; +$lang['could_not_delete_entry'] = 'Nem tudom a(z) %s bejegyzést törölni'; //'Could not delete the entry: %s'; +$lang['no_such_entry'] = 'Nincs ilyen bejegyzés: %s'; //'No such entry: %s'; +$lang['delete_dn'] = 'A(z) %s törlése'; //'Delete %s'; +$lang['permanently_delete_children'] = 'Az összes gyermeket is töröljem?'; //'Permanently delete all children also?'; +$lang['entry_is_root_sub_tree'] = 'Ez a bejegyzés egy %s bejegyzést tartalmazó részfa gyökere.'; //'This entry is the root of a sub-tree containing %s entries.'; +$lang['view_entries'] = 'bejegyzések megtekintése'; //'view entries'; +$lang['confirm_recursive_delete'] = 'Rekurzív módon törölhetem ezt a bejegyzést, és mind a(z) %s gyermekét. Lásd alul a bejegyzéseket, amelyeket törölnék. Óhajtja törölni?'; //'phpLDAPadmin can recursively delete this entry and all %s of its children. See below for a list of all the entries that this action will delete. Do you want to do this?'; +$lang['confirm_recursive_delete_note'] = 'Megj.: Ez a törlés veszélyes lehet. A műveletet nem lehet visszavonni!'; //'Note: this is potentially very dangerous and you do this at your own risk. This operation cannot be undone. Take into consideration aliases, referrals, and other things that may cause problems.'; +$lang['delete_all_x_objects'] = 'Mind a(z) %s objektum törlése'; //'Delete all %s objects'; +$lang['recursive_delete_progress'] = 'A rekurzív törlés folyamatban'; //'Recursive delete progress'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'A(z) %s bejegyzés és a részfa sikeresen törölve.'; //'Entry %s and sub-tree deleted successfully.'; +$lang['failed_to_delete_entry'] = 'A(z) %s bejegyzés törlése sikertelen'; //'Failed to delete entry %s'; +$lang['list_of_entries_to_be_deleted'] = 'A törlendÅ‘ bejegyzések listája:'; //'List of entries to be deleted:'; +$lang['sure_permanent_delete_object']='Biztos törölni óhajtja ezt az objektumot?'; //'Are you sure you want to permanently delete this object?'; +$lang['dn'] = 'DN'; //'DN'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'A(z) %s attribútum csak olvasható a phpLDAPadmin konfigurációja szerint.'; //'The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'; +$lang['no_attr_specified'] = 'Nincs megadva az attribútumnév.'; //'No attribute name specified.'; +$lang['no_dn_specified'] = 'Nincs megadva a DN'; //'No DN specified'; + +// Adding attributes +$lang['left_attr_blank'] = 'Az attribútumértéket üresen hagyta. Kérem lépjen vissza és próbálja újra.'; //'You left the attribute value blank. Please go back and try again.'; +$lang['failed_to_add_attr'] = 'Nem tudtam az attribútumot hozzáadni.'; //'Failed to add the attribute.'; +$lang['file_empty'] = 'A kiválasztott állomány vagy üres, vagy nem létezik. Kérem lépjen vissza és próbálja újra.'; //'The file you chose is either empty or does not exist. Please go back and try again.'; +$lang['invalid_file'] = 'Biztonsági hiba: a feltöltendÅ‘ állomány veszélyes elemeket tartalmazhat.'; //'Security error: The file being uploaded may be malicious.'; +$lang['warning_file_uploads_disabled'] = 'A PHP-konfiguráció tiltja az állományok feltöltését. Kérem ellenÅ‘rizze a php.ini állományt.'; //'Your PHP configuration has disabled file uploads. Please check php.ini before proceeding.'; +$lang['uploaded_file_too_big'] = 'A feltöltött állomány túl nagy. Kérem ellenÅ‘rizze a php.ini állományban a upload_max_size beállítást.'; //'The file you uploaded is too large. Please check php.ini, upload_max_size setting'; +$lang['uploaded_file_partial'] = 'A kiválasztott állomány csak részben töltÅ‘dött föl valószínűleg hálózati hiba miatt.'; //'The file you selected was only partially uploaded, likley due to a network error.'; +$lang['max_file_size'] = 'Maximális állományméret: %s'; //'Maximum file size: %s'; + +// Updating values +$lang['modification_successful'] = 'A módosítás sikerült!'; //'Modification successful!'; +$lang['change_password_new_login'] = 'Mivel megváltoztatta a jelszót most újra be kell jelentkeznie az új jelszóval.'; //'Since you changed your password, you must now login again with your new password.'; + +// Adding objectClass form +$lang['new_required_attrs'] = 'Új kötelezÅ‘ attribútumok'; //'New Required Attributes'; +$lang['requires_to_add'] = 'Ez a művelet megközeveteli hogy hozzáadjon'; //'This action requires you to add'; +$lang['new_attributes'] = 'új attribútumo(ka)t'; //'new attributes'; +$lang['new_required_attrs_instructions'] = 'Az új objektumosztály hozzáadásához'; //'Instructions: In order to add this objectClass to this entry, you must specify'; +$lang['that_this_oclass_requires'] = 'kell megadni ezen az űrlapon.'; //'that this objectClass requires. You can do so in this form.'; +$lang['add_oclass_and_attrs'] = 'Objektumosztály és attribútumok hozzáadása'; //'Add ObjectClass and Attributes'; +$lang['objectclasses'] = 'Objektumosztályok'; //'ObjectClasses'; + +// General +$lang['chooser_link_tooltip'] = 'Kattintásra egy új ablak jön föl, amelyben egy bejegyzést választhat a DN alapján.'; //'Click to popup a dialog to select an entry (DN) graphically'; +$lang['no_updates_in_read_only_mode'] = 'Nem lehet módosítani mikor a kiszolgáló csak olvasható üzemmódban van'; //'You cannot perform updates while server is in read-only mode'; +$lang['bad_server_id'] = 'Hibás kiszolgáló-azonosító'; //'Bad server id'; +$lang['not_enough_login_info'] = 'Kevés az adat a belépéshez. Kérem ellenÅ‘rizze a konfigurációt.'; //'Not enough information to login to server. Please check your configuration.'; +$lang['could_not_connect'] = 'Nem tudok csatlakozni az LDAP-kiszolgálóhoz.'; //'Could not connect to LDAP server.'; +$lang['could_not_connect_to_host_on_port'] = 'Nem tudok csatlakozni a(z) %s géphez a(z) %s porton.'; //'Could not connect to "%s" on port "%s"'; +$lang['could_not_perform_ldap_mod_add'] = 'Nem tudom végrehajtani az ldap_mod_add műveletet.'; //'Could not perform ldap_mod_add operation.'; +$lang['bad_server_id_underline'] = 'Hibás kiszolgáló-azonosító: '; //'Bad server_id: '; +$lang['success'] = 'Siker'; //'Success'; +$lang['server_colon_pare'] = 'Kiszolgáló: '; //'Server: '; +$lang['look_in'] = 'Keresés itt: '; //'Looking in: '; +$lang['missing_server_id_in_query_string'] = 'Nincs megadva a kiszolgáló-azonosító a keresési füzérben!'; //'No server ID specified in query string!'; +$lang['missing_dn_in_query_string'] = 'Nincs megadva a DN a keresési füzérben!'; //'No DN specified in query string!'; +$lang['back_up_p'] = 'Vissza...'; //'Back Up...'; +$lang['no_entries'] = 'nics bejegyzés'; //'no entries'; +$lang['not_logged_in'] = 'Nincs belépve'; //'Not logged in'; +$lang['could_not_det_base_dn'] = 'Nem tudom az alap-DN-t meghatározni'; //'Could not determine base DN'; +$lang['please_report_this_as_a_bug'] = 'Kérjük jelentse ezt a hibát.'; //'Please report this as a bug.'; +$lang['reasons_for_error'] = 'Ez több dolog miatt történhet, például:'; //'This could happen for several reasons, the most probable of which are:'; +$lang['yes'] = 'Igen'; //'Yes'; +$lang['no'] = 'Nem'; //'No'; +$lang['go'] = 'Mehet'; //'Go'; +$lang['delete'] = 'Törlés'; //'Delete'; +$lang['back'] = 'Vissza'; //'Back'; +$lang['object'] = 'objektum'; //'object'; +$lang['delete_all'] = 'Minden törlése'; //'Delete all'; +$lang['url_bug_report'] = 'https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; //'https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'tipp'; //'hint'; +$lang['bug'] = 'hiba'; //'bug'; +$lang['warning'] = 'figyelmeztetés'; //'warning'; +$lang['light'] = 'lámpa'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Tovább >>'; //'Proceed >>'; + + +// Add value form +$lang['add_new'] = 'Új'; //'Add new'; +$lang['value_to'] = 'érték, RDN:'; //'value to'; +$lang['distinguished_name'] = 'MegkülönböztetÅ‘ név (DN)'; //'Distinguished Name'; +$lang['current_list_of'] = 'Az aktuális lista'; //'Current list of'; +$lang['values_for_attribute'] = 'értéket tartalmaz. Attribútum:'; //'values for attribute'; +$lang['inappropriate_matching_note'] = 'Megj.: Ha nincs beállítva EGYENLÅSÉG-szabály ehhez az attribútumhoz a kiszolgáló az ún. inappropriate matching hibát adja vissza.'; //'Note: You will get an "inappropriate matching" error if you have not setup an EQUALITY rule on your LDAP server for this attribute.'; +$lang['enter_value_to_add'] = 'Adja meg a kívánt értéket:'; //'Enter the value you would like to add:'; +$lang['new_required_attrs_note'] = 'Megj.: Lehet hogy új kötelezÅ‘ attribútumokat kell bevinnie ehhez az objektumosztályhoz'; //'Note: you may be required to enter new attributes that this objectClass requires'; +$lang['syntax'] = 'Szintaxis'; //'Syntax'; + +//copy.php +$lang['copy_server_read_only'] = 'Nem lehet módosítást eszközölni amíg a kiszolgáló csak olvasható üzemmódban van'; //'You cannot perform updates while server is in read-only mode'; +$lang['copy_dest_dn_blank'] = 'Ãœresen hagyta a cél-DN mezejét'; //'You left the destination DN blank.'; +$lang['copy_dest_already_exists'] = 'A célbejegyzés (%s) már létezik.'; //'The destination entry (%s) already exists.'; +$lang['copy_dest_container_does_not_exist'] = 'A cél-tároló (%s) nem létezik.'; //'The destination container (%s) does not exist.'; +$lang['copy_source_dest_dn_same'] = 'A forrás- és cél-DN ugyanaz.'; //'The source and destination DN are the same.'; +$lang['copy_copying'] = 'Másolás: '; //'Copying '; +$lang['copy_recursive_copy_progress'] = 'Rekurzív másolás folyamatban'; //'Recursive copy progress'; +$lang['copy_building_snapshot'] = 'A fáról készítek egy pillanatfelvételt a másoláshoz... '; //'Building snapshot of tree to copy... '; +$lang['copy_successful_like_to'] = 'A másolás sikerült! Szeretné-e '; //'Copy successful! Would you like to '; +$lang['copy_view_new_entry'] = 'megtekinteni az új bejegyzést'; //'view the new entry'; +$lang['copy_failed'] = 'A DN másolása nem sikerült: '; //'Failed to copy DN: '; + +//edit.php +$lang['missing_template_file'] = 'Figyelem: hiányzik a mintaállomány.'; //'Warning: missing template file, '; +$lang['using_default'] = 'Az alapértelmezés használata.'; //'Using default.'; +$lang['template'] = 'Minta'; //'Template'; +$lang['must_choose_template'] = 'Választania kell egy mintát.'; //'You must choose a template'; +$lang['invalid_template'] = 'A(z) %s hibás minta.'; //'%s is an invalid template'; +$lang['using_template'] = 'használt minta:'; //'using template'; +$lang['go_to_dn'] = 'Menj a(z) %s DN-hez'; //'Go to %s'; + +//copy_form.php +$lang['copyf_title_copy'] = 'Másolás: '; //'Copy '; +$lang['copyf_to_new_object'] = '; az új objektum'; //'to a new object'; +$lang['copyf_dest_dn'] = 'Cél-DN'; //'Destination DN'; +$lang['copyf_dest_dn_tooltip'] = 'A másolással létrejövÅ‘ új bejegyzés teljes DN-je'; //'The full DN of the new entry to be created when copying the source entry'; +$lang['copyf_dest_server'] = 'Célkiszolgáló'; //'Destination Server'; +$lang['copyf_note'] = 'Tipp: A kiszolgálók közötti másolás csak akkor működik, ha nincs séma-sértés'; //'Hint: Copying between different servers only works if there are no schema violations'; +$lang['copyf_recursive_copy'] = 'Az objektum összes gyermekeinek rekurzív másolása.'; //'Recursively copy all children of this object as well.'; +$lang['recursive_copy'] = 'Rekurzív másolás'; //'Recursive copy'; +$lang['filter'] = 'SzűrÅ‘'; //'Filter'; +$lang['filter_tooltip'] = 'Rekurzív másolásnál csak azokat másolja le, amelyekre illik ez a szűrÅ‘'; //'When performing a recursive copy, only copy those entries which match this filter'; + +//create.php +$lang['create_required_attribute'] = 'A(z) %s kötelezÅ‘ attribútum értékét üresen hagyta.'; //'You left the value blank for required attribute (%s).'; +$lang['redirecting'] = 'Ãtirányítás...'; //'Redirecting...'; +$lang['here'] = 'ide'; //'here'; +$lang['create_could_not_add'] = 'Nem tudom az objektumot létrehozni a kiszolgálón.'; //'Could not add the object to the LDAP server.'; + +//create_form.php +$lang['createf_create_object'] = 'Objektum létrehozása'; //'Create Object'; +$lang['createf_choose_temp'] = 'Válasszon mintát'; //'Choose a template'; +$lang['createf_select_temp'] = 'Válasszon mintát a létrehozási folyamathoz'; //'Select a template for the creation process'; +$lang['createf_proceed'] = 'Tovább'; //'Proceed'; +$lang['rdn_field_blank'] = 'Az RDN-mezÅ‘t üresen hagyta'; //'You left the RDN field blank.'; +$lang['container_does_not_exist'] = 'A(z) %s tároló nem létezik. Kérem próbálja újra.'; //'The container you specified (%s) does not exist. Please try again.'; +$lang['no_objectclasses_selected'] = 'Nem választott objektumosztályt ehhez az objektumhoz. Kérem lépjen vissza és válasszon egyet.'; //'You did not select any ObjectClasses for this object. Please go back and do so.'; +$lang['hint_structural_oclass'] = 'Tipp: Legalább egy strukturális objektumosztályt kell választania'; //'Hint: You must choose at least one structural objectClass'; + +//creation_template.php +$lang['ctemplate_on_server'] = 'Kiszolgáló:'; //'On server'; +$lang['ctemplate_no_template'] = 'Nincs megadva a minta a POST-változóban.'; //'No template specified in POST variables.'; +$lang['ctemplate_config_handler'] = 'A konfiguráció egy kezelÅ‘t ad meg:'; //'Your config specifies a handler of'; +$lang['ctemplate_handler_does_not_exist'] = 'ehhez a mintához. De ez a kezelÅ‘ nincs a mintakönyvtárban.'; //'for this template. But, this handler does not exist in the templates/creation directory.'; +$lang['create_step1'] = 'ElsÅ‘ lépés: Név és objektumosztály(ok)'; //'Step 1 of 2: Name and ObjectClass(es)'; +$lang['create_step2'] = 'Második lépés: Adja meg az attribútumokat és értékeiket'; //'Step 2 of 2: Specify attributes and values'; +$lang['relative_distinguished_name'] = 'Viszonylagos megkülönböztetÅ‘ név (RDN)'; //'Relative Distinguished Name'; +$lang['rdn'] = 'RDN'; //'RDN'; +$lang['rdn_example'] = '(példa: cn=ÚjEmber)'; //'(example: cn=MyNewPerson)'; +$lang['container'] = 'Tároló'; //'Container'; +$lang['alias_for'] = 'A(z) %s álneve a(z) %s attribútumnévnek'; //'Alias for %s'; + +// search.php +$lang['you_have_not_logged_into_server'] = 'Nem lépett be a kiválasztott kiszolgálóba, s így nem tudok keresni.'; //'You have not logged into the selected server yet, so you cannot perform searches on it.'; +$lang['click_to_go_to_login_form'] = 'Kattintson ide a belépési űrlap eléréséhez'; //'Click here to go to the login form'; +$lang['unrecognized_criteria_option'] = 'Ismeretlen kritérium-opció: '; //'Unrecognized criteria option: '; +$lang['if_you_want_to_add_criteria'] = 'Ha kritériumot kíván adni a listához szerkessze meg a search.php-t, hogy kezelje le azokat. Most kilépek.'; //'If you want to add your own criteria to the list. Be sure to edit search.php to handle them. Quitting.'; +$lang['entries_found'] = 'A megtalált bejegyzések: '; //'Entries found: '; +$lang['filter_performed'] = 'Használt szűrÅ‘: '; //'Filter performed: '; +$lang['search_duration'] = 'A phpLDAPadmin'; //'Search performed by phpLDAPadmin in'; +$lang['seconds'] = 's alatt hajtotta végre a keresést'; //'seconds'; + +// search_form_advanced.php +$lang['scope_in_which_to_search'] = 'A keresés hatásköre'; //'The scope in which to search'; +$lang['scope_sub'] = 'Az egész részfa'; //'Sub (entire subtree)'; +$lang['scope_one'] = 'Egy szint az alap-DN alatt'; //'One (one level beneath base)'; +$lang['scope_base'] = 'Csak az alap-DN'; //'Base (base dn only)'; +$lang['standard_ldap_search_filter'] = 'Szabványos LDAP-szűrÅ‘, pl. (&(sn=Kovács)(givenname=István))'; //'Standard LDAP search filter. Example: (&(sn=Smith)(givenname=David))'; +$lang['search_filter'] = 'KeresÅ‘szűrÅ‘'; //'Search Filter'; +$lang['list_of_attrs_to_display_in_results'] = 'A megjelenítendÅ‘ találatok attribútumainak vesszÅ‘vel elválasztott listája'; //'A list of attributes to display in the results (comma-separated)'; +$lang['show_attributes'] = 'Attribútumok megjelenítése'; //'Show Attributes'; + +// search_form_simple.php +$lang['search_for_entries_whose'] = 'Bejegyzések keresése, ahol:'; //'Search for entries whose:'; +$lang['equals'] = 'egyenlÅ‘'; //'equals'; +$lang['starts with'] = 'kezdet'; //'starts with'; +$lang['contains'] = 'tartalmaz'; //'contains'; +$lang['ends with'] = 'végzÅ‘dés'; //'ends with'; +$lang['sounds like'] = 'hangzás'; //'sounds like'; + +// server_info.php +$lang['could_not_fetch_server_info'] = 'Nem tudom az információt letölteni a kiszolgálóról'; //'Could not retrieve LDAP information from the server'; +$lang['server_info_for'] = 'Kiszolgáló-infó: '; //'Server info for: '; +$lang['server_reports_following'] = 'A kiszolgáló ezeket az információkat közölte önmagáról'; //'Server reports the following information about itself'; +$lang['nothing_to_report'] = 'A kiszolgálónak nincs mit elküldenie'; //'This server has nothing to report.'; + +//update.php +$lang['update_array_malformed'] = 'Az update_array hibés. Ez a phpLDAPadmin hibája lehet, kérem jelentse.'; //'update_array is malformed. This might be a phpLDAPadmin bug. Please report it.'; +$lang['could_not_perform_ldap_modify'] = 'Nem tudom elvégezni az ldap_modify műveletet.'; //'Could not perform ldap_modify operation.'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'Érvényesíteni kívánja a változásokat?'; //'Do you want to make these changes?'; +$lang['attribute'] = 'Attribútumok'; //'Attribute'; +$lang['old_value'] = 'Régi érték'; //'Old Value'; +$lang['new_value'] = 'Új érték'; //'New Value'; +$lang['attr_deleted'] = '[attribútum törölve]'; //'[attribute deleted]'; +$lang['commit'] = 'Érvényesítés'; //'Commit'; +$lang['cancel'] = 'Mégsem'; //'Cancel'; +$lang['you_made_no_changes'] = 'Nem történt változtatás'; //'You made no changes'; +$lang['go_back'] = 'Vissza'; //'Go back'; + +// welcome.php +$lang['welcome_note'] = 'A bal oldali menüvel tájékozódhat a programban'; //'Use the menu to the left to navigate'; +$lang['credits'] = 'Köszönetnyilvánítás'; //'Credits'; +$lang['changelog'] = 'Változtatások naplója'; //'ChangeLog'; +$lang['donate'] = 'Adományozzon'; //'Donate'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = 'Nem biztonságos állománynév: '; //'Unsafe file name: '; +$lang['no_such_file'] = 'Nincs ilyen állomány: '; //'No such file: '; + +//function.php +$lang['auto_update_not_setup'] = 'Az auto_uid_numbers engedélyezett a konfigurációban a(z) %s kiszolgálóhoz, de az auto_uid_number_mechanism nincs megadva. Kérem írja be ezt az értéket.'; +//'You have enabled auto_uid_numbers for %s in your configuration, +// but you have not specified the auto_uid_number_mechanism. Please correct +// this problem.'; +$lang['uidpool_not_set'] = 'A konfigurációban az auto_uid_number_mechanism értéke uidpool a(z) %s kiszolgálóhoz, de nem adta meg az auto_uid_number_uid_pool_dn értékét. Kérem írja be ezt az értéket.'; +//'You specified the "auto_uid_number_mechanism" as "uidpool" +// in your configuration for server %s, but you did not specify the +// audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; +$lang['uidpool_not_exist'] = 'A konfigurációban megadott uidPool nem létezik (%s).'; +//'It appears that the uidPool you specified in your configuration ("%s") +// does not exist.'; +$lang['specified_uidpool'] = 'A konfigurációban az auto_uid_number_mechanism értéke search a(z) %s kiszolgálóhoz, de nem adta meg az auto_uid_number_search_base értékét. Kérem írja be ezt az értéket.'; +//'You specified the "auto_uid_number_mechanism" as "search" in your +// configuration for server %s, but you did not specify the +// "auto_uid_number_search_base". Please specify it before proceeding.'; +$lang['auto_uid_invalid_credential'] = 'A bind művelet sikertelen a(z) %s kiszolgálóhoz az auto_uid használatával. Kérem ellenÅ‘rizze a konfigurációt. '; //'Unable to bind to %s with your with auto_uid credentials. Please check your configuration file.'; +$lang['bad_auto_uid_search_base'] = 'A konfigurációban érvénytelen auto_uid_search_base van megadva a(z) %s kiszolgálóhoz.'; //'Your phpLDAPadmin configuration specifies an invalid auto_uid_search_base for server %s'; +$lang['auto_uid_invalid_value'] = 'Érvénytelen értéket adott meg a auto_uid_number_mechanism-nak (%s). Csak uidpool és search a megengedett érték.'; +//'You specified an invalid value for auto_uid_number_mechanism ("%s") +// in your configration. Only "uidpool" and "search" are valid. +// Please correct this problem.'; +$lang['error_auth_type_config'] = 'Csak a session, cookie és config a megengedett értékek az auth_type-nak a konfigurációban. A megadott helytelen érték: %s.'; +//'Error: You have an error in your config file. The only three allowed values +// for auth_type in the $servers section are \'session\', \'cookie\', and \'config\'. You entered \'%s\', +// which is not allowed. '; +$lang['php_install_not_supports_tls'] = 'Ez a PHP nem támogatja a TLS-t.'; //'Your PHP install does not support TLS.'; +$lang['could_not_start_tls'] = 'Nem tudom a TLS-t elindítani. Kérem ellenÅ‘rizze az LDAP-kiszolgálót és a konfigurációt.'; //'Could not start TLS. Please check your LDAP server configuration.'; +$lang['could_not_bind_anon'] = 'Az anonymous bind művelet nem sikerült.'; //'Could not bind anonymously to server.'; +$lang['could_not_bind'] = 'A bind művelet sikertelen az LDAP-kiszolgálóhoz.'; //'Could not bind to the LDAP server.'; +$lang['anonymous_bind'] = 'Anonymous bind'; //'Anonymous Bind'; +$lang['bad_user_name_or_password'] = 'Helytelen felhasználónév vagy jelszó. Kérem próbálja újra.'; //'Bad username or password. Please try again.'; +$lang['redirecting_click_if_nothing_happens'] = 'Ãtirányítás... kérem kattintson ide, ha semmi sem történik.'; //'Redirecting... Click here if nothing happens.'; +$lang['successfully_logged_in_to_server'] = 'A(z) %s kiszolgálóhoz sikeresen bejelentkezett.'; //'Successfully logged into server %s'; +$lang['could_not_set_cookie'] = 'Nem tudok sütit beállítani.'; //'Could not set cookie.'; +$lang['ldap_said'] = 'Az LDAP ezt mondta: %s'; //'LDAP said: %s'; +$lang['ferror_error'] = 'Hiba'; //'Error'; +$lang['fbrowse'] = 'böngészés'; //'browse'; +$lang['delete_photo'] = 'Fotó törlése'; //'Delete Photo'; +$lang['install_not_support_blowfish'] = 'Ez a PHP nem támogatja a blowfish titkosítást.'; //'Your PHP install does not support blowfish encryption.'; +$lang['install_not_support_md5crypt'] = 'Ez a PHP nem támogatja az md5crypt titkosítást.'; //'Your PHP install does not support md5crypt encryption.'; +$lang['install_no_mash'] = 'Ez a PHP nem tartalmazza az mhash() függvényt. Nem tudok SHA hash-eket kezelni.'; //'Your PHP install does not have the mhash() function. Cannot do SHA hashes.'; +$lang['jpeg_contains_errors'] = 'A jpegPhoto hibás
'; //'jpegPhoto contains errors
'; +$lang['ferror_number'] = 'Hibaszám: %s (%s)'; //'Error number: %s (%s)'; +$lang['ferror_discription'] = 'Leírás: %s

'; //'Description: %s

'; +$lang['ferror_number_short'] = 'Hibaszám: %s

'; //'Error number: %s

'; +$lang['ferror_discription_short'] = 'Leírás: (nincs leírás)
'; //'Description: (no description available)
'; +$lang['ferror_submit_bug'] = 'Ez a phpLDAPadmin hibája? Ha igen, kérem jelentse.'; //'Is this a phpLDAPadmin bug? If so, please report it.'; +$lang['ferror_unrecognized_num'] = 'Ismeretlen hibaszám: '; //'Unrecognized error number: '; +$lang['ferror_nonfatil_bug'] = '
+
+ Egy kisebb hibát talált a phpLDAPadmin-ban!
Hiba:%s (%s)
Ãllomány:%s. sor %s, hívó %s
Verziók:PLA: %s, PHP: %s, SAPI: %s +
Web-kiszolgáló:%s
+ Kérem jelentse a hibát, kattintson ide!.

'; +//'
+//
+// You found a non-fatal phpLDAPadmin bug!
Error:%s (%s)
File:%s line %s, caller %s
Versions:PLA: %s, PHP: %s, SAPI: %s +//
Web server:%s
+// Please report this bug by clicking here.

'; +$lang['ferror_congrats_found_bug'] = 'Gratulálunk! Hibát talált a phpLDAPadmin-ban.

+ + + + + + + + + + +
Hiba:%s
Szint:%s
Ãllomány:%s
Sor:%s
Hívó:%s
PLA Verzió:%s
PHP Verzió:%s
PHP SAPI:%s
Web-kiszolgáló:%s
+
+ Kérjük jelentse a hibát, kattintson alulra!'; +//'Congratulations! You found a bug in phpLDAPadmin.

+// +// +// +// +// +// +// +// +// +// +//
Error:%s
Level:%s
File:%s
Line:%s
Caller:%s
PLA Version:%s
PHP Version:%s
PHP SAPI:%s
Web server:%s
+//
+// Please report this bug by clicking below!'; + +//ldif_import_form +$lang['import_ldif_file_title'] = 'LDIF-állomány importálása'; //'Import LDIF File'; +$lang['select_ldif_file'] = 'LDIF-állomány kiválasztása'; //'Select an LDIF file:'; +$lang['select_ldif_file_proceed'] = 'Tovább >>'; //'Proceed >>'; +$lang['dont_stop_on_errors'] = 'Ne állj meg hiba esetén'; //'Don\'t stop on errors'; + +//ldif_import +$lang['add_action'] = 'Hozzáadás...'; //'Adding...'; +$lang['delete_action'] = 'Törlés...'; //'Deleting...'; +$lang['rename_action'] = 'Ãtnevezés'; //'Renaming...'; +$lang['modify_action'] = 'Módosítás...'; //'Modifying...'; +$lang['warning_no_ldif_version_found'] = 'Nem találtam verziószámot, feltételeztem, hogy 1-es.'; //'No version found. Assuming 1.'; +$lang['valid_dn_line_required'] = 'Érvényes DN-sor kell.'; //'A valid dn line is required.'; +$lang['missing_uploaded_file'] = 'A feltöltött állomány hiányzik.'; //'Missing uploaded file.'; +$lang['no_ldif_file_specified.'] = 'Nem adott meg LDIF-állományt. Kérem próbálja újra.'; //'No LDIF file specified. Please try again.'; +$lang['ldif_file_empty'] = 'A feltöltött LDIF-állomány üres.'; //'Uploaded LDIF file is empty.'; +$lang['empty'] = 'üres'; //'empty'; +$lang['file'] = 'Ãllomány'; //'File'; +$lang['number_bytes'] = '%s byte'; //'%s bytes'; + +$lang['failed'] = 'Sikertelen'; //'Failed'; +$lang['ldif_parse_error'] = 'LDIF-pásztázási hiba'; //'LDIF Parse Error'; +$lang['ldif_could_not_add_object'] = 'Nem tudom ezt az objektumot hozzáadni:'; //'Could not add object:'; +$lang['ldif_could_not_rename_object'] = 'Nem tudom ezt az objektumot átnevezni:'; //'Could not rename object:'; +$lang['ldif_could_not_delete_object'] = 'Nem tudom ezt az objektumot törölni:'; //'Could not delete object:'; +$lang['ldif_could_not_modify_object'] = 'Nem tudom ezt az objektumot módosítani:'; //'Could not modify object:'; +$lang['ldif_line_number'] = 'Sorszám:'; //'Line Number:'; +$lang['ldif_line'] = 'Sor:'; //'Line:'; + +// Exports +$lang['export_format'] = 'Export-formátum'; //'Export format'; +$lang['line_ends'] = 'Sorvégek'; //'Line ends'; +$lang['must_choose_export_format'] = 'Az export formátumát ki kell választani.'; //'You must choose an export format.'; +$lang['invalid_export_format'] = 'Az export formátuma érvénytelen'; //'Invalid export format'; +$lang['no_exporter_found'] = 'Nincs használható exportáló.'; //'No available exporter found.'; +$lang['error_performing_search'] = 'Keresés közben hibába akadtam.'; //'Encountered an error while performing search.'; +$lang['showing_results_x_through_y'] = 'A(z) %s és %s közé esÅ‘ találatok megjelenítése.'; //'Showing results %s through %s.'; +$lang['searching'] = 'Folyik a keresés...'; //'Searching...'; +$lang['size_limit_exceeded'] = 'Figyelem: a keresési méret korlátja túllépve.'; //'Notice, search size limit exceeded.'; +$lang['entry'] = 'Bejegyzés'; //'Entry'; +$lang['ldif_export_for_dn'] = 'A(z) %s LDIF exportja'; //'LDIF Export for: %s'; +$lang['generated_on_date'] = 'A phpLDAPadmin generálta, dátum: %s'; //'Generated by phpLDAPadmin on %s'; +$lang['total_entries'] = 'Bejegyzések száma összesen'; //'Total Entries'; +$lang['dsml_export_for_dn'] = 'A(z) %s DSLM exportja'; //'DSLM Export for: %s'; + +// logins +$lang['could_not_find_user'] = 'Nem találtam meg a(z) %s felhasználót'; //'Could not find a user "%s"'; +$lang['password_blank'] = 'A jelszó üresen maradt.'; //'You left the password blank.'; +$lang['login_cancelled'] = 'A bejelentkezést megszakították.'; //'Login cancelled.'; +$lang['no_one_logged_in'] = 'Arra a kiszolgálóra nincs bejelentkezve senki.'; //'No one is logged in to that server.'; +$lang['could_not_logout'] = 'Nem sikerült kilépni.'; //'Could not logout.'; +$lang['unknown_auth_type'] = 'Ismeretlen auth_type: %s'; //'Unknown auth_type: %s'; +$lang['logged_out_successfully'] = 'A kilépés sikerült a(z) %s kiszolgálóból'; //'Logged out successfully from server %s'; +$lang['authenticate_to_server'] = 'Azonosítsa magát a(z) %s kiszolgálón'; //'Authenticate to server %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Figyelem: A kapcsolat a bögészÅ‘vel titkosítatlan.'; //'Warning: This web connection is unencrypted.'; +$lang['not_using_https'] = 'Nem https kapcsolatot használ. A böngészÅ‘ a bejelentkezés adatait sima szöveg formátumban fogja továbbítani'; //'You are not using \'https\'. Web browser will transmit login information in clear text.'; +$lang['login_dn'] = 'Bejelentkezési DN'; //'Login DN'; +$lang['user_name'] = 'A felhasználó neve'; //'User name'; +$lang['password'] = 'Jelszó'; //'Password'; +$lang['authenticate'] = 'Azonosítás'; //'Authenticate'; + +// Entry browser +$lang['entry_chooser_title'] = 'Bejegyzés kiválasztása'; //'Entry Chooser'; + +// Index page +$lang['need_to_configure'] = 'Konfigurálnia kell a phpLDAPadmint a config.php állomány szerkesztésével, amihez mintául a config.php.example szolgálhat.'; //'You need to configure phpLDAPadmin. Edit the file \'config.php\' to do so. An example config file is provided in \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Csak olvasható üzemmódban a törlés nem működik.'; //'Deletes not allowed in read only mode.'; +$lang['error_calling_mass_delete'] = 'Hiba a mass_delete.php hívásakor. A POST változók közül hiányzik a mass_delete.'; //'Error calling mass_delete.php. Missing mass_delete in POST vars.'; +$lang['mass_delete_not_array'] = 'A mass_delete POST változó nem tömb.'; //'mass_delete POST var is not an array.'; +$lang['mass_delete_not_enabled'] = 'A tömeges törlés nincs engedélyezve. MielÅ‘tt folytatná, állítsa át az enable_mass_delete értékét config.php állományban.'; //'Mass deletion is not enabled. Please enable it in config.php before proceeding.'; +$lang['mass_deleting'] = 'Tömeges törlés'; //'Mass Deleting'; +$lang['mass_delete_progress'] = 'A törlési művelet a(z) %s kiszolgálón'; //'Deletion progress on server "%s"'; +$lang['malformed_mass_delete_array'] = 'A tömeges törléshez megadott tömb formátuma helytelen'; //'Malformed mass_delete array.'; +$lang['no_entries_to_delete'] = 'Nem választotta ki a törlendÅ‘ bejegyzés(eke)t. '; //'You did not select any entries to delete.'; +$lang['deleting_dn'] = '%s törölve'; //'Deleting %s'; +$lang['total_entries_failed'] = '%s darab bejegyzés törlése nem sikerült a(z) %s darabból.'; //'%s of %s entries failed to be deleted.'; +$lang['all_entries_successful'] = 'Az összes bejegyzés törlése sikerült.'; //'All entries deleted successfully.'; +$lang['confirm_mass_delete'] = 'Hagyja jóvá a(z) %s bejegyzés tömeges törlését a(z) %s kiszolgálóról'; //'Confirm mass delete of %s entries on server %s'; +$lang['yes_delete'] = 'Igen, törlÅ‘djön'; //'Yes, delete!'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Nem nevezhet át olyan bejegyzést aminek gyermekei vannak (azaz az átnevezés művelete csak levél-bejegyzéseken megengedett)'; //'You cannot rename an entry which has children entries (eg, the rename operation is not allowed on non-leaf entries)'; +$lang['no_rdn_change'] = 'Nem változtatta meg az RDN-t'; //'You did not change the RDN'; +$lang['invalid_rdn'] = 'Érvénytelen RDN érték'; //'Invalid RDN value'; +$lang['could_not_rename'] = 'A bejegyzést nem sikerült átnevezni'; //'Could not rename the entry'; + +?> diff --git a/lang/recoded/it.php b/lang/recoded/it.php index 088b54b..830638b 100644 --- a/lang/recoded/it.php +++ b/lang/recoded/it.php @@ -1,4 +1,6 @@ ä¸éƒ½åˆã«ã‚ˆã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。ã‚ã‚‹ã„ã¯ã€ã‚ãªãŸã® LDAP サーãƒãƒ¼ã¯ã€LDAP クライアント㌠RootDSE ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã‚’防ãアクセス制御指定をã—ã¦ã„ã¾ã™ã€‚'; +$lang['server_info_for'] = 'Server info for: '; +$lang['server_reports_following'] = 'Server reports the following information about itself'; +$lang['nothing_to_report'] = 'ã“ã®ã‚µãƒ¼ãƒãƒ¼ã¯ãªã«ã‚‚報告ã™ã‚‹ã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“。'; + +//update.php +$lang['update_array_malformed'] = 'update_array ãŒã‚ªã‚«ã‚·ã‚¤ã§ã™ã€‚This might be a phpLDAPadmin bug. Please report it.'; +$lang['could_not_perform_ldap_modify'] = 'ldap_modify æ“作ãŒå®Ÿè¡Œã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'Do you want to make these changes?'; +$lang['attribute'] = '属性'; +$lang['old_value'] = 'å¤ã„値'; +$lang['new_value'] = 'æ–°ã—ã„値'; +$lang['attr_deleted'] = '[属性を削除ã—ã¾ã—ãŸ]'; +$lang['commit'] = 'コミット'; +$lang['cancel'] = 'å–り消ã—'; +$lang['you_made_no_changes'] = '変更ã¯ã‚ã‚Šã¾ã›ã‚“'; +$lang['go_back'] = 'Go back'; + +// welcome.php +$lang['welcome_note'] = 'å·¦ã¸ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’使用ã—ã¦æœæŸ»ã—ã¾ã™'; +$lang['credits'] = 'クレジット'; +$lang['changelog'] = '変更履歴'; +$lang['donate'] = '寄贈'; +$lang['pla_logo'] = 'phpLDAPadmin ロゴ'; + +// Donate.php +$lang['donation_instructions'] = 'phpLDAPadmin プロジェクトã«è³‡é‡‘を寄贈ã™ã‚‹ãŸã‚ã«ã¯ã€PayPal ボタンã®ã†ã¡ã® 1 ã¤ã‚’下ã«ä½¿ç”¨ã—ã¦ãã ã•ã„。'; +$lang['donate_amount'] = '%s を寄贈'; +$lang['wish_list_option'] = 'Or perhaps you would prefer to purchase an gift for a phpLDAPadmin developer.'; +$lang['wish_list'] = 'Dave\'s phpLDAPadmin ã®ã‚ã£ä¸»ãƒªã‚¹ãƒˆã‚’閲覧'; + +$lang['purge_cache'] = 'キャッシュ破棄'; +$lang['no_cache_to_purge'] = '破棄ã™ã‚‹ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã¯ã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚'; +$lang['done_purging_caches'] = '%s ãƒã‚¤ãƒˆã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’破棄ã—ã¾ã—ãŸã€‚'; +$lang['purge_cache_tooltip'] = 'サーãƒãƒ¼ã‚¹ã‚­ãƒ¼ãƒžã‚’å«ã‚€ã€phpLDAPadmin ã®ã™ã¹ã¦ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’破棄ã—ã¾ã—ãŸã€‚'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = '安全ã§ãªã„ファイルå: '; +$lang['no_such_file'] = 'ファイルãŒã‚ã‚Šã¾ã›ã‚“: '; + +//function.php +$lang['auto_update_not_setup'] = 'You have enabled auto_uid_numbers for %s in your configuration, + but you have not specified the auto_uid_number_mechanism. Please correct + this problem.'; +$lang['uidpool_not_set'] = 'You specified the "auto_uid_number_mechanism" as "uidpool" + in your configuration for server %s, but you did not specify the + audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; +$lang['uidpool_not_exist'] = 'It appears that the uidPool you specified in your configuration ("%s") + does not exist.'; +$lang['specified_uidpool'] = 'You specified the "auto_uid_number_mechanism" as "search" in your + configuration for server %s, but you did not specify the + "auto_uid_number_search_base". Please specify it before proceeding.'; +$lang['auto_uid_invalid_credential'] = 'Unable to bind to %s with your with auto_uid credentials. Please check your configuration file.'; +$lang['bad_auto_uid_search_base'] = 'Your phpLDAPadmin configuration specifies an invalid auto_uid_search_base for server %s'; +$lang['auto_uid_invalid_value'] = 'You specified an invalid value for auto_uid_number_mechanism ("%s") + in your configration. Only "uidpool" and "search" are valid. + Please correct this problem.'; +$lang['error_auth_type_config'] = 'Error: You have an error in your config file. The only three allowed values + for auth_type in the $servers section are \'session\', \'cookie\', and \'config\'. You entered \'%s\', + which is not allowed. '; +$lang['unique_attrs_invalid_credential'] = 'Unable to bind to %s with your with unique_attrs credentials. Please check your configuration file.'; +$lang['unique_attr_failed'] = 'Your attempt to add %s (%s) to
%s
is NOT allowed. That attribute/value belongs to another entry.

You might like to search for that entry.'; +$lang['php_install_not_supports_tls'] = 'インストールã•ã‚Œã¦ã„ã‚‹ PHP 㯠TLS をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。'; +$lang['could_not_start_tls'] = 'TLS を開始ã§ãã¾ã›ã‚“。LDAP サーãƒãƒ¼ã®è¨­å®šã‚’確èªã—ã¦ãã ã•ã„。'; +$lang['could_not_bind_anon'] = 'サーãƒãƒ¼ã«åŒ¿å接続ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; +$lang['could_not_bind'] = 'LDAP サーãƒãƒ¼ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; +$lang['anonymous_bind'] = '匿å接続'; +$lang['bad_user_name_or_password'] = 'ユーザーåã‹ãƒ‘スワードãŒãŠã‹ã—ã„ã§ã™ã€‚ã‚‚ã†ä¸€åº¦è¡Œã£ã¦ãã ã•ã„。'; +$lang['redirecting_click_if_nothing_happens'] = 'Redirecting... Click here if nothing happens.'; +$lang['successfully_logged_in_to_server'] = 'サーãƒãƒ¼ %sã¸ã®ãƒ­ã‚°ã‚¤ãƒ³ã«æˆåŠŸã—ã¾ã—ãŸ'; +$lang['could_not_set_cookie'] = 'cookie を設定ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; +$lang['ldap_said'] = 'LDAP 回答: %s'; +$lang['ferror_error'] = 'エラー'; +$lang['fbrowse'] = '閲覧'; +$lang['delete_photo'] = '写真削除'; +$lang['install_not_support_blowfish'] = 'インストールã•ã‚ŒãŸ PHP 㯠blowfish æš—å·åŒ–をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。'; +$lang['install_not_support_md5crypt'] = 'インストールã•ã‚ŒãŸ PHP 㯠md5crypt æš—å·åŒ–をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。'; +$lang['install_no_mash'] = 'インストールã•ã‚ŒãŸ PHP 㯠mhash() をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。SHA ãƒãƒƒã‚·ãƒ¥ã‚’ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。'; +$lang['jpeg_contains_errors'] = 'jpegPhoto contains errors
'; +$lang['ferror_number'] = 'エラー番å·: %s (%s)'; +$lang['ferror_discription'] = '説明: %s

'; +$lang['ferror_number_short'] = 'エラー番å·: %s

'; +$lang['ferror_discription_short'] = '説明: (利用å¯èƒ½ãªèª¬æ˜ŽãŒã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸ)
'; +$lang['ferror_submit_bug'] = 'ã“れ㯠phpLDAPadmin ã®ä¸éƒ½åˆã§ã™ã‹? ã‚‚ã—ãã†ãªã‚‰ 報告 ã—ã¦ãã ã•ã„。'; +$lang['ferror_unrecognized_num'] = '未承èªã®ã‚¨ãƒ©ãƒ¼ç•ªå·: '; +$lang['ferror_nonfatil_bug'] = '

+
+ 致命的ã§ãªã„ phpLDAPadmin ã®ä¸éƒ½åˆã‚’発見ã—ã¾ã—ãŸ!
エラー:%s (%s)
ファイル:%s 行 %s, caller %s
ãƒãƒ¼ã‚¸ãƒ§ãƒ³:PLA: %s, PHP: %s, SAPI: %s +
ウェブサーãƒãƒ¼:%s
+ ã“ã“をクリックã—ã¦å€‹ã®ä¸éƒ½åˆã‚’報告ã—ã¦ãã ã•ã„。.

'; +$lang['ferror_congrats_found_bug'] = 'ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™! phpLDAPadmin ã§ä¸éƒ½åˆã‚’発見ã—ã¾ã—ãŸã€‚

+ + + + + + + + + + +
エラー:%s
レベル:%s
ファイル:%s
行:%s
Caller:%s
PLA ãƒãƒ¼ã‚¸ãƒ§ãƒ³:%s
PHP ãƒãƒ¼ã‚¸ãƒ§ãƒ³:%s
PHP SAPI:%s
Web サーãƒãƒ¼:%s
+
+ 下記をクリックã—ã¦ã“ã®ä¸éƒ½åˆã‚’報告ã—ã¦ãã ã•ã„!'; + +//ldif_import_form +$lang['import_ldif_file_title'] = 'LDIF ファイルインãƒãƒ¼ãƒˆ'; +$lang['select_ldif_file'] = 'LDIF ファイルをé¸æŠž:'; +$lang['dont_stop_on_errors'] = 'Don\'t stop on errors'; + +//ldif_import +$lang['add_action'] = '追加中...'; +$lang['delete_action'] = '削除中...'; +$lang['rename_action'] = 'å称変更中...'; +$lang['modify_action'] = '修正中...'; +$lang['warning_no_ldif_version_found'] = 'ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。1 ã¨ä»®å®šã—ã¾ã™ã€‚'; +$lang['valid_dn_line_required'] = '有効㪠dn è¡ŒãŒå¿…è¦ã§ã™ã€‚'; +$lang['missing_uploaded_file'] = 'アップロードファイルãŒè¦‹å½“ãŸã‚Šã¾ã›ã‚“。'; +$lang['no_ldif_file_specified'] = 'LDIF ファイルãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。もã†ä¸€åº¦è¡Œã£ã¦ãã ã•ã„。'; +$lang['ldif_file_empty'] = 'アップロードã•ã‚ŒãŸ LDIF ファイルãŒç©ºã§ã™ã€‚'; +$lang['empty'] = '空'; +$lang['file'] = 'ファイル'; +$lang['number_bytes'] = '%s ãƒã‚¤ãƒˆ'; + +$lang['failed'] = '失敗ã—ã¾ã—ãŸ'; +$lang['ldif_parse_error'] = 'LDIF 解æžã‚¨ãƒ©ãƒ¼'; +$lang['ldif_could_not_add_object'] = 'オブジェクトを追加ã§ãã¾ã›ã‚“ã§ã—ãŸ:'; +$lang['ldif_could_not_rename_object'] = 'オブジェクトをå称変更ã§ãã¾ã›ã‚“ã§ã—ãŸ:'; +$lang['ldif_could_not_delete_object'] = 'オブジェクトを削除ã§ãã¾ã›ã‚“ã§ã—ãŸ:'; +$lang['ldif_could_not_modify_object'] = 'オブジェクトを修正ã§ãã¾ã›ã‚“ã§ã—ãŸ:'; +$lang['ldif_line_number'] = '行番å·:'; +$lang['ldif_line'] = 'è¡Œ:'; + +// Exports +$lang['export_format'] = 'エクスãƒãƒ¼ãƒˆæ›¸å¼'; +$lang['line_ends'] = 'Line ends'; +$lang['must_choose_export_format'] = 'エクスãƒãƒ¼ãƒˆæ›¸å¼ã‚’é¸ã°ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。'; +$lang['invalid_export_format'] = '無効ãªã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆæ›¸å¼'; +$lang['no_exporter_found'] = 'No available exporter found.'; +$lang['error_performing_search'] = '検索実行中ã«ã‚¨ãƒ©ãƒ¼ã«é­é‡ã—ã¾ã—ãŸã€‚'; +$lang['showing_results_x_through_y'] = 'Showing results %s through %s.'; +$lang['searching'] = '検索中...'; +$lang['size_limit_exceeded'] = '通知ã§ã™ã€‚検索サイズãŒåˆ¶é™ã‚’越ãˆã¾ã—ãŸã€‚'; +$lang['entry'] = 'エントリ'; +$lang['ldif_export_for_dn'] = 'LDIF エクスãƒãƒ¼ãƒˆ: %s'; +$lang['generated_on_date'] = 'Generated by phpLDAPadmin ( http://phpldapadmin.sourceforge.net/ ) on %s'; +$lang['total_entries'] = 'ç·ã‚¨ãƒ³ãƒˆãƒª'; +$lang['dsml_export_for_dn'] = 'DSLM エクスãƒãƒ¼ãƒˆ: %s'; +$lang['include_system_attrs'] = 'システム属性をå«ã‚€'; +$lang['csv_spreadsheet'] = 'CSV (スプレッドシート)'; + +// logins +$lang['could_not_find_user'] = 'ユーザー "%s" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“'; +$lang['password_blank'] = 'You left the password blank.'; +$lang['login_cancelled'] = 'ログインãŒå–り消ã•ã‚Œã¾ã—ãŸã€‚'; +$lang['no_one_logged_in'] = 'No one is logged in to that server.'; +$lang['could_not_logout'] = 'ログアウトã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; +$lang['unknown_auth_type'] = '未知㮠auth_type: %s'; +$lang['logged_out_successfully'] = 'サーãƒãƒ¼ %s ã‹ã‚‰ãƒ­ã‚°ã‚¢ã‚¦ãƒˆã«æˆåŠŸã—ã¾ã—ãŸ'; +$lang['authenticate_to_server'] = 'Authenticate to server %s'; +$lang['warning_this_web_connection_is_unencrypted'] = '警告: ã“ã®ã‚¦ã‚§ãƒ–接続ã¯æš—å·åŒ–ã•ã‚Œã¦ã„ã¾ã›ã‚“。'; +$lang['not_using_https'] = 'You are not using \'https\'. Web browser will transmit login information in clear text.'; +$lang['login_dn'] = 'ログイン DN'; +$lang['user_name'] = 'ユーザーå'; +$lang['password'] = 'パスワード'; +$lang['authenticate'] = 'Authenticate'; + +// Entry browser +$lang['entry_chooser_title'] = 'エントリé¸æŠž'; + +// Index page +$lang['need_to_configure'] = 'phpLDAPadmin ã®è¨­å®šã‚’å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ファイル \'config.php\' ã®å¤‰æ›´ã‚’ã—ã¦ãã ã•ã„。サンプル設定ファイルã¨ã—㦠\'config.php.example\' ã‚’æä¾›ã—ã¦ã„ã¾ã™ã€‚'; + +// Mass deletes +$lang['no_deletes_in_read_only'] = '読ã¿è¾¼ã¿å°‚用モードã§ã¯å‰Šé™¤ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。'; +$lang['error_calling_mass_delete'] = 'mass_delete.php 呼ã³å‡ºã—中ã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚POST 値ã‹ã‚‰ mass_delete ãŒè¦‹ã‹ã‚Šã¾ã›ã‚“。'; +$lang['mass_delete_not_array'] = 'mass_delete POST 辺りãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“。'; +$lang['mass_delete_not_enabled'] = '一括削除ãŒæœ‰åŠ¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“。次ã«é€²ã‚€å‰ã« config.php ã§ãれを有効ã«ã—ã¦ãã ã•ã„。'; +$lang['search_attrs_wrong_count'] = 'config.php ã«ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™ã€‚The number of attributes in $search_attributes and $search_attributes_display is different'; +$lang['mass_deleting'] = '一括削除中'; +$lang['mass_delete_progress'] = 'サーãƒãƒ¼ "%s" ã‹ã‚‰å‰Šé™¤ä¸­'; +$lang['malformed_mass_delete_array'] = 'ãŠã‹ã—ã„ mass_delete é…列ã§ã™ã€‚'; +$lang['no_entries_to_delete'] = '削除ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“。'; +$lang['deleting_dn'] = '%s 削除中'; +$lang['total_entries_failed'] = '%s 個ã®ã‚¨ãƒ³ãƒˆãƒªãŒ %s 個ã®ã‚¨ãƒ³ãƒˆãƒªä¸­ã§å‰Šé™¤ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; +$lang['all_entries_successful'] = 'ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã®å‰Šé™¤ã«æˆåŠŸã—ã¾ã—ãŸã€‚'; +$lang['confirm_mass_delete'] = '%s エントリをサーãƒãƒ¼ %s ã‹ã‚‰ä¸€æ‹¬å‰Šé™¤ã®ç¢ºèª'; +$lang['yes_delete'] = 'ã¯ã„, 削除ã—ã¾ã™!'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'å­ã‚¨ãƒ³ãƒˆãƒªã‚’æŒã¤ã‚¨ãƒ³ãƒˆãƒªã¯å称変更ã§ãã¾ã›ã‚“ (eg, the rename operation is not allowed on non-leaf entries)'; +$lang['no_rdn_change'] = 'RDN を変更ã—ã¾ã›ã‚“ã§ã—ãŸ'; +$lang['invalid_rdn'] = '無効㪠RDN 値'; +$lang['could_not_rename'] = 'エントリã®å称変更ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸ'; + +// General errors +$lang['php5_unsupported'] = 'phpLDAPadmin 㯠PHP 5 をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。You will likely encounter many weird problems if you continue.'; +$lang['mismatched_search_attr_config'] = '設定ã«ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™ã€‚$search_attributes must have the same number of attributes as $search_attributes_display.'; + +// Password checker +$lang['passwords_match'] = 'パスワードãŒä¸€è‡´ã—ã¾ã—ãŸ!'; +$lang['passwords_do_not_match'] = 'パスワードãŒä¸€è‡´ã—ã¾ã›ã‚“!'; +$lang['password_checker_tool'] = 'パスワードãƒã‚§ãƒƒã‚¯ãƒ„ール'; +$lang['compare'] = '比較'; +$lang['to'] = 'To'; + +?> diff --git a/lang/recoded/nl.php b/lang/recoded/nl.php index 123b547..a116c5c 100644 --- a/lang/recoded/nl.php +++ b/lang/recoded/nl.php @@ -1,8 +1,10 @@ - * Uwe Ebel + * Vertaling door Richard Lucassen + * Commentaar gaarne naar bovenstaand adres sturen a.u.b. */ // Search form @@ -56,9 +58,9 @@ $lang['export_to_ldif'] = 'exporteren naar LDIF';//'Export to LDIF'; $lang['export_to_ldif_tooltip'] = 'maak LDIF dump van dit object';//'Save an LDIF dump of this object'; $lang['export_subtree_to_ldif_tooltip'] = 'maak LDIF dump van dit object plus alle onderliggende objecten';//'Save an LDIF dump of this object and all of its children'; $lang['export_subtree_to_ldif'] = 'exporteer deze subvelden naar LDIF';//'Export subtree to LDIF'; -$lang['export_to_ldif_mac'] = 'Macintosh regeleinden';//'Macintosh style line ends'; -$lang['export_to_ldif_win'] = 'Windows regeleinden';//'Windows style line ends'; -$lang['export_to_ldif_unix'] = 'Unix regeleinden';//'Unix style line ends'; +$lang['export_mac'] = 'Macintosh regeleinden';//'Macintosh style line ends'; +$lang['export_win'] = 'Windows regeleinden';//'Windows style line ends'; +$lang['export_unix'] = 'Unix regeleinden';//'Unix style line ends'; $lang['create_a_child_entry'] = 'subveld aanmaken';//'Create a child entry'; $lang['add_a_jpeg_photo'] = 'jpeg foto toevoegen';//'Add a jpegPhoto'; $lang['rename_entry'] = 'veld hernoemen';//'Rename Entry'; @@ -239,6 +241,7 @@ $lang['starts with'] = 'begint met';//'starts with'; $lang['contains'] = 'bevat';//'contains'; $lang['ends with'] = 'eindigt met';//'ends with'; $lang['sounds like'] = 'klinkt als';//'sounds like'; +$lang['predefined_search_str'] = 'of een van deze lijst uitlezen';//'or select a predefined search'; // server_info.php $lang['could_not_fetch_server_info'] = 'kan geen LDAP van de server krijgen';//'Could not retrieve LDAP information from the server'; @@ -326,4 +329,9 @@ $lang['ldif_could_not_modify_object'] = 'Kan object niet wijzigen'; $lang['ldif_line_number'] = 'regelnummer: '; $lang['ldif_line'] = 'regel: '; +$lang['credits'] = 'Credits';//'Credits'; +$lang['changelog'] = 'Changelog';//'ChangeLog'; +$lang['documentation'] = 'Documentatie';// 'Documentation'; + + ?> diff --git a/lang/recoded/pl.php b/lang/recoded/pl.php new file mode 100644 index 0000000..b99c111 --- /dev/null +++ b/lang/recoded/pl.php @@ -0,0 +1,617 @@ + Czy na pewno chcesz to zrobić ?'; +$lang['confirm_recursive_delete_note'] = 'Uwaga: ta operacja jest potencjalnie bardzo niebezpieczna i wykonujesz jÄ… na wÅ‚asne ryzyko. Ta akcja nie może zostać cofniÄ™ta. Weź pod uwagÄ™ aliasy, owoÅ‚ania i inne rzeczy, które mogÄ… spowodować problemy.'; +$lang['delete_all_x_objects'] = 'UsuÅ„ wszystkie %s obiekty/ów'; +$lang['recursive_delete_progress'] = 'PostÄ™p rekursywnego usuwania'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'Wpis %s oraz poddrzewo zostaÅ‚y pomyÅ›lnie usuniÄ™te.'; +$lang['failed_to_delete_entry'] = 'BÅ‚Ä…d podczas usuwania wpisu %s'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'Atrybut "%s" jest oznaczony jako tylko-do-odczytu w konfiguracji phpLDAPadmin.'; +$lang['no_attr_specified'] = 'Nie okreÅ›lono nazwy atrybutu.'; +$lang['no_dn_specified'] = 'Nie okreÅ›lono DN'; + +// Adding attributes +$lang['left_attr_blank'] = 'PozostawiÅ‚eÅ›/aÅ› pustÄ… wartość atrybutu. ProszÄ™ wrócić i spróbować ponownie.'; +$lang['failed_to_add_attr'] = 'BÅ‚Ä…d podczas dodawania atrybutu.'; +$lang['file_empty'] = 'Wybrany plik jest pusty lub nie istnieje. Wróć i spróbuj ponownie.'; +$lang['invalid_file'] = 'BÅ‚Ä…d bezpieczeÅ„stwa: ZaÅ‚adowany plik może stanowić zagrożenie.'; +$lang['warning_file_uploads_disabled'] = 'Twoja konfiguracja PHP uniemożliwia zaÅ‚adowanie plików. ProszÄ™ sprawdzić php.ini przed kontynuacjÄ….'; +$lang['uploaded_file_too_big'] = 'ZaÅ‚adowany plik jest zbyt duży. ProszÄ™ sprawdzić ustawienie upload_max_size w php.ini'; +$lang['uploaded_file_partial'] = 'Wybrany plik zostaÅ‚ tylko częściowo zaÅ‚adowany, prawdopodobnie wystÄ…piÅ‚ bÅ‚Ä…d w sieci.'; +$lang['max_file_size'] = 'Maksymalny rozmiar pliku: %s'; + +// Updating values +$lang['modification_successful'] = 'Modyfikacja zakoÅ„czona pomyÅ›lnie.'; +$lang['change_password_new_login'] = 'JeÅ›li zmieniÅ‚eÅ›/aÅ› hasÅ‚o, musisz siÄ™ zalogować ponownie z nowym hasÅ‚em.'; + +// Adding objectClass form +$lang['new_required_attrs'] = 'Nowe atrybuty wymagane'; +$lang['requires_to_add'] = 'Ta akcja wymaga, abyÅ› dodaÅ‚/a'; +$lang['new_attributes'] = 'nowe atrybuty'; +$lang['new_required_attrs_instructions'] = 'Instrukcja: Aby dodać tÄ™ klasÄ™ obiektu do tego wpisu, musisz okreÅ›lić'; +$lang['that_this_oclass_requires'] = 'co ta klasa obiektu wymaga. Możesz zrobić to w tym formularzu.'; +$lang['add_oclass_and_attrs'] = 'Dodaj klasÄ™ obiektu i atrybuty'; + +// General +$lang['chooser_link_tooltip'] = 'Kliknij aby wywoÅ‚ać okno i wybrać wpis (DN) graficznie'; +$lang['no_updates_in_read_only_mode'] = 'Nie możesz wykonać modyfikacji dopóki serwer jest w trybie tylko-do-odczytu'; +$lang['bad_server_id'] = 'ZÅ‚y identyfikator (id) serwera'; +$lang['not_enough_login_info'] = 'Brak wystarczajÄ…cych informacji aby zalogować siÄ™ do serwera. ProszÄ™ sprawdzić konfiguracjÄ™.'; +$lang['could_not_connect'] = 'Nie można podÅ‚Ä…czyć siÄ™ do serwera LDAP.'; +$lang['could_not_connect_to_host_on_port'] = 'Nie można podÅ‚Ä…czyć siÄ™ do "%s" na port "%s"'; +$lang['could_not_perform_ldap_mod_add'] = 'Nie można dokonać operacji ldap_mod_add.'; +$lang['bad_server_id_underline'] = 'ZÅ‚y server_id: '; +$lang['success'] = 'Sukces'; +$lang['server_colon_pare'] = 'Serwer: '; +$lang['look_in'] = 'Szukam w: '; +$lang['missing_server_id_in_query_string'] = 'Nie okreÅ›lono ID serwera w zapytaniu !'; +$lang['missing_dn_in_query_string'] = 'Nie okreÅ›lono DN w zapytaniu !'; +$lang['back_up_p'] = 'Do góry...'; +$lang['no_entries'] = 'brak wpisów'; +$lang['not_logged_in'] = 'Nie zalogowany/a'; +$lang['could_not_det_base_dn'] = 'Nie można okreÅ›lić bazowego DN'; +$lang['please_report_this_as_a_bug']='ProszÄ™ zgÅ‚osić to jako bÅ‚Ä…d.'; +$lang['reasons_for_error']='To mogÅ‚o zdarzyć siÄ™ z kilku powodów, z których najbardziej prawdopodobne to:'; +$lang['yes']='Tak'; +$lang['no']='Nie'; +$lang['go']='Idź'; +$lang['delete']='UsuÅ„'; +$lang['back']='Powrót'; +$lang['object']='obiekt'; +$lang['delete_all']='UsuÅ„ wszystko'; +$lang['url_bug_report']='https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'wskazówka'; +$lang['bug'] = 'bÅ‚Ä…d (bug)'; +$lang['warning'] = 'ostrzeżenie'; +$lang['light'] = 'żarówka'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Dalej >>'; + +// Add value form +$lang['add_new'] = 'Dodaj'; +$lang['value_to'] = 'wartość do'; +$lang['distinguished_name'] = 'Wyróżniona Nazwa (DN)'; +$lang['current_list_of'] = 'Aktualna lista'; +$lang['values_for_attribute'] = 'wartoÅ›ci dla atrybutu'; +$lang['inappropriate_matching_note'] = 'Uwaga: JeÅ›li nie ustawisz reguÅ‚y EQUALITY dla tego atrybutu na Twoim serwerze LDAP otrzymasz bÅ‚Ä…d "niewÅ‚aÅ›ciwe dopasowanie (inappropriate matching)"'; +$lang['enter_value_to_add'] = 'Wprowadź wartość, którÄ… chcesz dodać:'; +$lang['new_required_attrs_note'] = 'Uwaga: może być wymagane wprowadzenie nowych atrybutów wymaganych przez tÄ™ klasÄ™ obiektu'; +$lang['syntax'] = 'SkÅ‚adnia'; + +//copy.php +$lang['copy_server_read_only'] = 'Nie możesz dokonać modyfikacji dopóki serwer jest w trybie tylko-do-odczytu'; +$lang['copy_dest_dn_blank'] = 'Nie wypeÅ‚niono docelowej DN.'; +$lang['copy_dest_already_exists'] = 'Docelowy wpis (%s) już istnieje.'; +$lang['copy_dest_container_does_not_exist'] = 'Docelowy kontener (%s) nie istnieje.'; +$lang['copy_source_dest_dn_same'] = 'ŹródÅ‚owa i docelowa DN sÄ… takie same.'; +$lang['copy_copying'] = 'Kopiowanie '; +$lang['copy_recursive_copy_progress'] = 'PostÄ™p kopiowania rekursywnego'; +$lang['copy_building_snapshot'] = 'Budowanie migawki (snapshot) drzewa do skopiowania... '; +$lang['copy_successful_like_to'] = 'Kopiowanie zakoÅ„czone pomyÅ›lnie. Czy chcesz '; +$lang['copy_view_new_entry'] = 'zobaczyć nowy wpis '; +$lang['copy_failed'] = 'BÅ‚Ä…d podczas kopiowania DN: '; + +//edit.php +$lang['missing_template_file'] = 'Uwaga: brak pliku szablonu, '; +$lang['using_default'] = 'Używam domyÅ›lnego.'; +$lang['template'] = 'Szablon'; +$lang['must_choose_template'] = 'Musisz wybrać szablon'; +$lang['invalid_template'] = '%s nie jest prawidÅ‚owym szablonem'; +$lang['using_template'] = 'wykorzystujÄ…c szablon'; +$lang['go_to_dn'] = 'Idź do %s'; +$lang['structural_object_class_cannot_remove'] = 'To jest strukturalna klasa obiektu i nie może zostać usuniÄ™ta.'; +$lang['structural'] = 'strukturalna'; + +//copy_form.php +$lang['copyf_title_copy'] = 'Kopiuj '; +$lang['copyf_to_new_object'] = 'do nowego obiektu'; +$lang['copyf_dest_dn'] = 'Docelowa DN'; +$lang['copyf_dest_dn_tooltip'] = 'PeÅ‚na DN nowego wpisu do utworzenia poprzez skopiowanie wpisu źródÅ‚owego'; +$lang['copyf_dest_server'] = 'Docelowy serwer'; +$lang['copyf_note'] = 'Wskazówka: Kopiowanie pomiÄ™dzy różnymi serwerami dziaÅ‚a wtedy, gdy nie wystÄ™puje naruszenie schematów'; +$lang['copyf_recursive_copy'] = 'Rekursywne kopiowanie wszystkich potomnych obiektów'; +$lang['recursive_copy'] = 'Kopia rekursywna'; +$lang['filter'] = 'Filtr'; +$lang['filter_tooltip'] = 'Podczas rekursywnego kopiowania, kopiowane sÄ… tylko wpisy pasujÄ…ce do filtra'; + +//create.php +$lang['create_required_attribute'] = 'Brak wartoÅ›ci dla wymaganego atrybutu (%s).'; +$lang['redirecting'] = 'PrzekierowujÄ™'; +$lang['here'] = 'tutaj'; +$lang['create_could_not_add'] = 'Nie można dodać obiektu do serwera LDAP.'; + +//create_form.php +$lang['createf_create_object'] = 'Utwórz obiekt'; +$lang['createf_choose_temp'] = 'Wybierz szablon'; +$lang['createf_select_temp'] = 'Wybierz szablon dla procesu tworzenia'; +$lang['createf_proceed'] = 'Dalej'; +$lang['rdn_field_blank'] = 'PozostawiÅ‚eÅ›/aÅ› puste pole RDN.'; +$lang['container_does_not_exist'] = 'Kontener który okreÅ›liÅ‚eÅ›/aÅ› (%s) nie istnieje. Spróbuj ponownie.'; +$lang['no_objectclasses_selected'] = 'Nie wybraÅ‚eÅ›/aÅ› żadnych Klas Obiektu dla tego obiektu. Wróć proszÄ™ i zrób to.'; +$lang['hint_structural_oclass'] = 'Wskazówka: Musisz wybrać co najmniej jednÄ… strukturalnÄ… klasÄ™ obiektu (wyróżnionÄ… pogrubieniem)'; + +//creation_template.php +$lang['ctemplate_on_server'] = 'Na serwerze'; +$lang['ctemplate_no_template'] = 'Brak okreÅ›lenia szablonu w zmiennych POST.'; +$lang['ctemplate_config_handler'] = 'Twoja konfiguracja okreÅ›la handler'; +$lang['ctemplate_handler_does_not_exist'] = 'dla tego szablonu. Ale, ten handler nie istnieje w szablonach/tworzonym katalogu'; +$lang['create_step1'] = 'Krok 1 z 2: Nazwa i klasa/y obiektu'; +$lang['create_step2'] = 'Krok 2 z 2: OkreÅ›lenie atrybutów i wartoÅ›ci'; +$lang['relative_distinguished_name'] = 'Relatywna Wyróżniona Nazwa (RDN)'; +$lang['rdn'] = 'RDN'; +$lang['rdn_example'] = '(przykÅ‚ad: cn=MyNewPerson)'; +$lang['container'] = 'Kontener'; + +// search.php +$lang['you_have_not_logged_into_server'] = 'Nie zalogowaÅ‚eÅ›/aÅ› siÄ™ jeszcze do wybranego serwera, wiÄ™c nie możesz go przeszukiwać.'; +$lang['click_to_go_to_login_form'] = 'Kliknij tutaj aby przejść do formularza logowania'; +$lang['unrecognized_criteria_option'] = 'Nierozpoznane kryterium opcji: '; +$lang['if_you_want_to_add_criteria'] = 'JeÅ›li chcesz dodać wÅ‚asne kryteria do listy, zmodyfikuj plik search.php aby to obsÅ‚użyć.'; +$lang['entries_found'] = 'Znaleziono wpisów: '; +$lang['filter_performed'] = 'Zastosowano filtr: '; +$lang['search_duration'] = 'Wyszukiwanie wykonane przez phpLDAPadmin w'; +$lang['seconds'] = 'sekund(y)'; + +// search_form_advanced.php +$lang['scope_in_which_to_search'] = 'Przeszukiwany zakres'; +$lang['scope_sub'] = 'Sub (caÅ‚e poddrzewo)'; +$lang['scope_one'] = 'One (jeden poziom poniżej bazowej)'; +$lang['scope_base'] = 'Base (tylko bazowa dn)'; +$lang['standard_ldap_search_filter'] = 'Standardowy filtr dla LDAP. Na przykÅ‚ad: (&(sn=Kowalski)(givenname=Jan))'; +$lang['search_filter'] = 'Filtr wyszukiwania'; +$lang['list_of_attrs_to_display_in_results'] = 'Lista atrybutów do wyÅ›wietlenia rezultatów (rozdzielona przecinkami)'; + +// search_form_simple.php +$lang['starts with'] = 'zaczyna siÄ™ od'; +$lang['ends with'] = 'koÅ„czy siÄ™ na'; +$lang['sounds like'] = 'brzmi jak'; + +// server_info.php +$lang['could_not_fetch_server_info'] = 'Nie można uzyskać informacji od serwera LDAP'; +$lang['server_info_for'] = 'Informacja o serwerze: '; +$lang['server_reports_following'] = 'Serwer zwróciÅ‚ nastÄ™pujÄ…ce informacje o sobie'; +$lang['nothing_to_report'] = 'Ten serwer nie chce nic powiedzieć o sobie :).'; + +//update.php +$lang['update_array_malformed'] = 'tablica modyfikacji (update_array) jest znieksztaÅ‚cona. To może być bÅ‚Ä…d (bug) w phpLDAPadmin. ProszÄ™ to zgÅ‚osić.'; +$lang['could_not_perform_ldap_modify'] = 'Nie można wykonać operacji modyfikacji (ldap_modify).'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'Czy chcesz dokonać tych zmian ?'; +$lang['attribute'] = 'Atrybuty'; +$lang['old_value'] = 'Stara wartość'; +$lang['new_value'] = 'Nowa wartość'; +$lang['attr_deleted'] = '[atrybut usuniÄ™ty]'; +$lang['commit'] = 'Zatwierdź'; +$lang['cancel'] = 'Anuluj'; +$lang['you_made_no_changes'] = 'Nie dokonano żadnych zmian'; +$lang['go_back'] = 'Powrót'; + +// welcome.php +$lang['welcome_note'] = 'Użyj menu z lewej strony do nawigacji'; +$lang['credits'] = 'Lista pÅ‚ac'; +$lang['changelog'] = 'Historia zmian'; +$lang['donate'] = 'Wesprzyj projekt'; +$lang['purge_cache'] = 'Wyczyść pamięć podrÄ™cznÄ…'; +$lang['no_cache_to_purge'] = 'Nie ma czego czyÅ›cić.'; +$lang['done_purging_caches'] = 'Wyczyszczono %s bajtów pamiÄ™ci podrÄ™cznej.'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = 'Niebezpieczna nazwa pliku: '; +$lang['no_such_file'] = 'Nie znaleziono pliku: '; + +//function.php +$lang['auto_update_not_setup'] = 'ZezwoliÅ‚eÅ›/aÅ› na automatyczne nadawanie uid (auto_uid_numbers) + dla %s w konfiguracji, ale nie okreÅ›liÅ‚eÅ›/aÅ› mechanizmu + (auto_uid_number_mechanism). ProszÄ™ skorygować ten problem.'; +$lang['uidpool_not_set'] = 'OkreÅ›liÅ‚eÅ›/aÅ› mechanizm autonumerowania uid "auto_uid_number_mechanism" jako "uidpool" w konfiguracji Twojego serwera %s, lecz nie okreÅ›liÅ‚eÅ›/aÅ› audo_uid_number_uid_pool_dn. ProszÄ™ okreÅ›l to zanim przejdziesz dalej.'; +$lang['uidpool_not_exist'] = 'WyglÄ…da na to, że uidPool, którÄ… okreÅ›liÅ‚eÅ›/aÅ› w Twojej konfiguracji ("%s") nie istnieje.'; +$lang['specified_uidpool'] = 'OkreÅ›liÅ‚eÅ›/aÅ› "auto_uid_number_mechanism" jako "search" w konfiguracji Twojego serwera %s, ale nie okreÅ›liÅ‚eÅ›/aÅ› bazy "auto_uid_number_search_base". Zrób to zanim przejdziesz dalej.'; +$lang['auto_uid_invalid_credential'] = 'Nie można podÅ‚Ä…czyć do %s z podanÄ… tożsamoÅ›ciÄ… auto_uid. ProszÄ™ sprawdzić swój plik konfiguracyjny.'; +$lang['bad_auto_uid_search_base'] = 'W Twojej konfiguracji phpLDAPadmin okreÅ›lona jest nieprawidÅ‚owa wartość auto_uid_search_base dla serwera %s'; +$lang['auto_uid_invalid_value'] = 'OkreÅ›liÅ‚eÅ›/aÅ› bÅ‚Ä™dnÄ… wartość dla auto_uid_number_mechanism ("%s") w konfiguracji. Tylko "uidpool" i "search" sÄ… poprawne. ProszÄ™ skorygować ten problem.'; +$lang['error_auth_type_config'] = 'BÅ‚Ä…d: Masz bÅ‚Ä…d w pliku konfiguracji. Trzy możliwe wartoÅ›ci dla auth_type w sekcji $servers to \'session\', \'cookie\' oraz \'config\'. Ty wpisaÅ‚eÅ›/aÅ› \'%s\', co jest niedozwolone. '; +$lang['unique_attrs_invalid_credential'] = 'Nie można podÅ‚Ä…czyć do %s z podanÄ… tożsamoÅ›ciÄ… unique_attrs. ProszÄ™ sprawdzić swój plik konfiguracyjny.'; +$lang['unique_attr_failed'] = 'Próba dodania %s (%s) do
%s
jest NIEDOZWOLONA. Ten atrybut/wartość należy do innego wpisu.

Jeśli chcesz, możesz poszukać tego wpisu.'; +$lang['php_install_not_supports_tls'] = 'Twoja instalacja PHP nie wspiera TLS.'; +$lang['could_not_start_tls'] = 'Nie można uruchomić TLS. Proszę sprawdzić konfigurację serwera LDAP.'; +$lang['could_not_bind_anon'] = 'Nie można anonimowo podłączyć do serwera.'; +$lang['could_not_bind'] = 'Nie można podłączyć się do serwera LDAP.'; +$lang['anonymous_bind'] = 'Podłączenie anonimowe'; +$lang['bad_user_name_or_password'] = 'Zła nazwa użytkownika lub hasło. Spróbuj ponownie.'; +$lang['redirecting_click_if_nothing_happens'] = 'Przekierowuję... Kliknij tutaj jeśli nic się nie dzieje.'; +$lang['successfully_logged_in_to_server'] = 'Pomyślnie zalogowano do serwera %s'; +$lang['could_not_set_cookie'] = 'Nie można ustawić ciasteczka (cookie).'; +$lang['ldap_said'] = 'LDAP odpowiedział: %s'; +$lang['ferror_error'] = 'Błąd'; +$lang['fbrowse'] = 'przeglądaj'; +$lang['delete_photo'] = 'Usuń fotografię'; +$lang['install_not_support_blowfish'] = 'Twoja instalacja PHP nie wspiera szyfrowania blowfish.'; +$lang['install_not_support_md5crypt'] = 'Twoja instalacja PHP nie wspiera szyfrowania md5crypt.'; +$lang['install_no_mash'] = 'Twoja instalacja PHP nie posiada funkcji mhash(). Nie mogę tworzyć haszy SHA.'; +$lang['jpeg_contains_errors'] = 'jpegPhoto zawiera błędy
'; +$lang['ferror_number'] = 'BÅ‚Ä…d numer: %s (%s)'; +$lang['ferror_discription'] = 'Opis: %s

'; +$lang['ferror_number_short'] = 'BÅ‚Ä…d numer: %s

'; +$lang['ferror_discription_short'] = 'Opis: (brak dostępnego opisu)
'; +$lang['ferror_submit_bug'] = 'Czy jest to błąd w phpLDAPadmin ? Jeśli tak, proszę go zgłosić.'; +$lang['ferror_unrecognized_num'] = 'Nierozpoznany numer błędu: '; +$lang['ferror_nonfatil_bug'] = '

+
+ Znalazłeś błąd w phpLDAPadmin (nie krytyczny) !
BÅ‚Ä…d:%s (%s)
Plik:%s linia %s, wywołane z %s
Wersje:PLA: %s, PHP: %s, SAPI: %s +
Serwer Web:%s
+ Proszę zgłoś ten błąd klikając tutaj.

'; +$lang['ferror_congrats_found_bug'] = 'Gratulacje ! Znalazłeś błąd w phpLDAPadmin.

+ + + + + + + + + + +
BÅ‚Ä…d:%s
Poziom:%s
Plik:%s
Linia:%s
Wywołane z:%s
Wersja PLA:%s
Wersja PHP:%s
PHP SAPI:%s
Serwer Web:%s
+
+ ProszÄ™ zgÅ‚oÅ› ten bÅ‚Ä…d klikajÄ…c poniżej !'; + +//ldif_import_form +$lang['import_ldif_file_title'] = 'Importuj plik LDIF'; +$lang['select_ldif_file'] = 'Wybierz plik LDIF:'; +$lang['select_ldif_file_proceed'] = 'Dalej >>'; +$lang['dont_stop_on_errors'] = 'Nie zatrzymuj siÄ™ po napotkaniu bÅ‚Ä™dów'; + +//ldif_import +$lang['add_action'] = 'Dodawanie...'; +$lang['delete_action'] = 'Usuwanie...'; +$lang['rename_action'] = 'Zmiana nazwy...'; +$lang['modify_action'] = 'Modyfikowanie...'; +$lang['warning_no_ldif_version_found'] = 'Nie znaleziono numeru wersji. PrzyjmujÄ™ 1.'; +$lang['valid_dn_line_required'] = 'Wymagana jest poprawna linia DN.'; +$lang['missing_uploaded_file'] = 'Brak wgrywanego pliku.'; +$lang['no_ldif_file_specified.'] = 'Nie okreÅ›lono pliku LDIF. Spróbuj ponownie.'; +$lang['ldif_file_empty'] = 'Wgrany plik LDIF jest pusty.'; +$lang['empty'] = 'pusty'; +$lang['file'] = 'Plik'; +$lang['number_bytes'] = '%s bajtów'; + +$lang['failed'] = 'Nieudane'; +$lang['ldif_parse_error'] = 'BÅ‚Ä…d przetwarzania LDIF (Parse Error)'; +$lang['ldif_could_not_add_object'] = 'Nie można dodać obiektu:'; +$lang['ldif_could_not_rename_object'] = 'Nie można zmienić nazwy obiektu:'; +$lang['ldif_could_not_delete_object'] = 'Nie można usunąć obiektu:'; +$lang['ldif_could_not_modify_object'] = 'Nie można zmodyfikować obiektu:'; +$lang['ldif_line_number'] = 'Linia numer:'; +$lang['ldif_line'] = 'Linia:'; + +//delete_form +$lang['sure_permanent_delete_object']='Czy na pewno trwale usunąć ten obiekt ?'; +$lang['list_of_entries_to_be_deleted'] = 'Lista wpisów do usuniÄ™cia:'; +$lang['dn'] = 'DN'; + +// Exports +$lang['export_format'] = 'Format eksportu'; +$lang['line_ends'] = 'ZakoÅ„czenie linii'; +$lang['must_choose_export_format'] = 'Musisz wybrać format eksportu.'; +$lang['invalid_export_format'] = 'BÅ‚Ä™dny format eksportu'; +$lang['no_exporter_found'] = 'Nie znaleziono dostÄ™pnego eksportera.'; +$lang['error_performing_search'] = 'Napotkano bÅ‚Ä…d podczas szukania.'; +$lang['showing_results_x_through_y'] = 'Pokazywanie rezultatów %s przez %s.'; +$lang['searching'] = 'Szukam...'; +$lang['size_limit_exceeded'] = 'Uwaga, przekroczono limit rozmiaru wyszukiwania.'; +$lang['entry'] = 'Wpis'; +$lang['ldif_export_for_dn'] = 'Eksport LDIF dla: %s'; +$lang['generated_on_date'] = 'Wygenerowane przez phpLDAPadmin ( http://phpldapadmin.sourceforge.net/ ) na %s'; +$lang['total_entries'] = 'ÅÄ…cznie wpisów'; +$lang['dsml_export_for_dn'] = 'Eksport DSLM dla: %s'; +$lang['include_system_attrs'] = 'Zawiera atrybuty systemowe'; + +// logins +$lang['could_not_find_user'] = 'Nie można znaleźć użytkownika "%s"'; +$lang['password_blank'] = 'PozostawiÅ‚eÅ›/aÅ› puste hasÅ‚o.'; +$lang['login_cancelled'] = 'Logowanie anulowane.'; +$lang['no_one_logged_in'] = 'Nikt nie jest zalogowany do tego serwera.'; +$lang['could_not_logout'] = 'Nie można wylogować.'; +$lang['unknown_auth_type'] = 'Nieznany auth_type: %s'; +$lang['logged_out_successfully'] = 'PomyÅ›lnie wylogowano z serwera %s'; +$lang['authenticate_to_server'] = 'Uwierzytelnienie dla serwera %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Uwaga: To poÅ‚Ä…czenie nie jest szyfrowane.'; +$lang['not_using_https'] = 'Nie używasz \'https\'. PrzeglÄ…darka bÄ™dzie transmitować informacjÄ™ logowania czystym tekstem (clear text).'; +$lang['login_dn'] = 'Login DN'; +$lang['user_name'] = 'Nazwa użytkownika'; +$lang['password'] = 'HasÅ‚o'; +$lang['authenticate'] = 'Zaloguj'; + +// Entry browser +$lang['entry_chooser_title'] = 'Wybór wpisu'; + +// Index page +$lang['need_to_configure'] = 'Musisz skonfigurować phpLDAPadmin. Wyedytuj plik \'config.php\' aby to zrobić. PrzykÅ‚ad pliku konfiguracji znajduje siÄ™ w \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Usuwanie jest niedozwolone w trybie tylko-do-odczytu.'; +$lang['error_calling_mass_delete'] = 'BÅ‚Ä…d podczas wywoÅ‚ania mass_delete.php. BrakujÄ…ca mass_delete w zmiennych POST.'; +$lang['mass_delete_not_array'] = 'zmienna POST mass_delete nie jest w tablicÄ….'; +$lang['mass_delete_not_enabled'] = 'Masowe usuwanie nie jest dozwolone. Odblokuj to proszÄ™ w config.php przed kontynuacjÄ….'; +$lang['search_attrs_wrong_count'] = 'Twój config.php zawiera bÅ‚Ä…d. Ilość atrybutów w $search_attributes i$search_attributes_display jest różna'; +$lang['mass_deleting'] = 'Masowe usuwanie'; +$lang['mass_delete_progress'] = 'PostÄ™p usuwania na serwerze "%s"'; +$lang['malformed_mass_delete_array'] = 'ZnieksztaÅ‚cona tablica mass_delete.'; +$lang['no_entries_to_delete'] = 'Nie wybrano żadnegych wpisów do usuniÄ™cia.'; +$lang['deleting_dn'] = 'Usuwanie %s'; +$lang['total_entries_failed'] = '%s z %s wpisów nie zostaÅ‚o usuniÄ™tych.'; +$lang['all_entries_successful'] = 'Wszystkie wpisy pomyÅ›lnie usunieto.'; +$lang['confirm_mass_delete'] = 'Potwierdź masowe usuniÄ™cie %s wpisów na serwerze %s'; +$lang['yes_delete'] = 'Tak, usuÅ„ !'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Nie możesz zmienić nazwy wpisu, posiadajÄ…cego wpisy potomne (np. operacja zmiany nazwy nie jest dozwolona na wpisach nie bÄ™dÄ…cych liÅ›cmi).'; +$lang['no_rdn_change'] = 'Nie zmieniÅ‚eÅ›/aÅ› RDN'; +$lang['invalid_rdn'] = 'BÅ‚Ä™dna wartość RDN'; +$lang['could_not_rename'] = 'Nie można zmienić nazwy wpisu'; + +// Templates +$lang['using'] = 'UżywajÄ…c'; +$lang['template'] = 'szablonu'; +$lang['switch_to'] = 'Możesz przeÅ‚Ä…czyć siÄ™ do '; +$lang['default_template'] = 'domyÅ›lnego szablonu'; + +// template_config +$lang['user_account'] = 'Konto Użytkownika (posixAccount)'; +$lang['address_book'] = 'Wpis Książki Adresowej (inetOrgPerson)'; +$lang['kolab_user'] = 'Wpis Użytkownika Kolab'; +$lang['organizational_unit'] = 'Jednostka Organizacyjna'; +$lang['organizational_role'] = 'Rola w Organizacji'; +$lang['posix_group'] = 'Grupa Posix'; +$lang['samba_machine'] = 'Maszyna Samba NT'; +$lang['samba3_machine'] = 'Maszyna Samba 3 NT'; +$lang['samba_user'] = 'Użytkownik Samba'; +$lang['samba3_user'] = 'Użytkownik Samba 3'; +$lang['samba3_group'] = 'Przypisanie grupy Samba 3'; +$lang['dns_entry'] = 'Wpis DNS'; +$lang['simple_sec_object'] = 'Prosty obiekt bezpieczeÅ„stwa (SSO)'; +$lang['courier_mail_account'] = 'Konto Pocztowe w Courier'; +$lang['courier_mail_alias'] = 'Alias Pocztowy w Courier'; +$lang['ldap_alias'] = 'Alias w LDAP'; +$lang['custom'] = 'Ogólne'; +$lang['samba_domain_name'] = 'Moja nazwa domeny w Samba'; +$lang['administrators'] = 'Administratorzy'; +$lang['users'] = 'Użytkownicy'; +$lang['guests'] = 'GoÅ›cie'; +$lang['power_users'] = 'Użytkownicy zaawansowani'; +$lang['account_ops'] = 'Operatorzy kont'; +$lang['server_ops'] = 'Operatorzy serwera'; +$lang['print_ops'] = 'Operatorzy drukowania'; +$lang['backup_ops'] = 'Operatorzy archiwizacji danych'; +$lang['replicator'] = 'Replikator'; +$lang['unable_smb_passwords'] = ' Nie można utworzyć haseÅ‚ Samba. ProszÄ™ sprawdzić konfiguracjÄ™ w template_config.php'; + +// Samba Account Template +$lang['samba_account'] = 'Konto Samba'; +$lang['samba_account_lcase'] = 'konto samba'; + +// New User (Posix) Account +$lang['t_new_user_account'] = 'Nowe konto użytkownika'; +$lang['t_hint_customize'] = 'Wskazówka: Aby dostosować ten szablon, wyedytuj plik templates/creation/new_user_template.php'; +$lang['t_name'] = 'Nazwa/Nazwisko'; +$lang['t_first_name'] = 'ImiÄ™'; +$lang['t_last_name'] = 'Nazwisko'; +$lang['t_common_name'] = 'Nazwa'; +$lang['t_user_name'] = 'Nazwa użytkownika'; +$lang['t_password'] = 'HasÅ‚o'; +$lang['t_encryption'] = 'Szyfrowanie'; +$lang['t_login_shell'] = 'PowÅ‚oka (shell)'; +$lang['t_home_dir'] = 'Katalog domowy'; +$lang['t_uid_number'] = 'Numer UID'; +$lang['t_auto_det'] = '(automatycznie okreÅ›lony)'; +$lang['t_group'] = 'Grupa'; +$lang['t_gid_number'] = 'Numer GID'; +$lang['t_err_passwords'] = 'HasÅ‚a nie zgadzajÄ… siÄ™. Wróc i spróbuj ponownie.'; +$lang['t_err_field_blank'] = 'Nie możesz pozostawić pustego pola %s. Wróć i spróbuj ponownie.'; +$lang['t_err_field_num'] = 'Pole %s może zawierać tylko wartoÅ›ci numeryczne. Wróć i spróbuj ponownie.'; +$lang['t_err_bad_container'] = 'Kontener który wybraÅ‚eÅ›/aÅ› (%s) nie istnieje. Wróć i spróbuj ponownie.'; +$lang['t_confirm_account_creation'] = 'Potwierdź utworzenie konta'; +$lang['t_secret'] = '[tajne]'; +$lang['t_create_account'] = 'Utwórz konto'; + +// New Address Template +$lang['t_new_address'] = 'Nowy wpis w Książce Adresowej'; +$lang['t_organization'] = 'Organizacja'; +$lang['t_address'] = 'Adres'; +$lang['t_city'] = 'Miasto'; +$lang['t_postal_code'] = 'Kod pocztowy'; +$lang['t_street'] = 'Ulica'; +$lang['t_work_phone'] = 'Telefon sÅ‚użbowy'; +$lang['t_fax'] = 'Fax'; +$lang['t_mobile'] = 'Telefon komórkowy'; +$lang['t_email'] = 'E-mail'; +$lang['t_container'] = 'Kontener'; +$lang['t_err_cn_blank'] = 'Nie możesz pozostawić pustego pola Nazwa. Wróć i spróbuj ponownie.'; +$lang['t_confim_creation'] = 'Potwierdź utworzenie wpisu:'; +$lang['t_create_address'] = 'Utwórz adres'; + +?> diff --git a/lang/recoded/pt-br.php b/lang/recoded/pt-br.php new file mode 100644 index 0000000..05bc49a --- /dev/null +++ b/lang/recoded/pt-br.php @@ -0,0 +1,516 @@ +To delete an attribute, empty the text field and click save.'; +$lang['attr_schema_hint'] = 'Dica: Para ver o esquema de um atributo clique no nome do atributo.';//'Hint: To view the schema for an attribute, click the attribute name.'; +$lang['attrs_modified'] = 'Alguns atributos (%s) foram modificados e estão destacados abaixo.';//'Some attributes (%s) were modified and are highlighted below.'; +$lang['attr_modified'] = 'Um atributo (%s) foi modificado e está destacado abaixo';//'An attribute (%s) was modified and is highlighted below.'; +$lang['viewing_read_only'] = 'Vizualizando objeto em modo somente-leitura.';//'Viewing entry in read-only mode.'; +$lang['no_new_attrs_available'] = 'novos atributos não disponíveis para este objeto.';//'no new attributes available for this entry'; +$lang['no_new_binary_attrs_available'] = 'novos atributos binários não disponíveis para este objeto.';//'no new binary attributes available for this entry'; +$lang['binary_value'] = 'Valor binário';//'Binary value'; +$lang['add_new_binary_attr'] = 'Inserir novo atributo binário';//'Add New Binary Attribute'; +$lang['alias_for'] = 'Nota: \'%s\' é um alias para \'%s\'';//'Note: \'%s\' is an alias for \'%s\''; +$lang['download_value'] = 'download do valor';//'download value'; +$lang['delete_attribute'] = 'apagar atributo';//'delete attribute'; +$lang['true'] = 'verdadeiro';//'true'; +$lang['false'] = 'falso';//'false'; +$lang['none_remove_value'] = 'nenhum, remover valor';//?? //'none, remove value'; +$lang['really_delete_attribute'] = 'Deseja realmente apagar atributo';//'Really delete attribute'; +$lang['add_new_value'] = 'Inserir novo valor';//'Add New Value'; + +// Schema browser +$lang['the_following_objectclasses'] = 'As seguintes Classes de objetos são suportadas por este servidor LDAP.';//'The following objectClasses are supported by this LDAP server.'; +$lang['the_following_attributes'] = 'Os seguintes tipos de atributos são suportadas por este servidor LDAP.';//'The following attributeTypes are supported by this LDAP server.'; +$lang['the_following_matching'] = 'As seguintes regras de consistência são suportadas por este servidor LDAP.';//'The following matching rules are supported by this LDAP server.'; +$lang['the_following_syntaxes'] = 'As seguintes sintaxes são suportadas por este servidor LDAP.';//'The following syntaxes are supported by this LDAP server.'; +$lang['schema_retrieve_error_1']='O servidor não suporta o protocolo LDAP completamente.';//'The server does not fully support the LDAP protocol.'; +$lang['schema_retrieve_error_2']='Sua versão do PHP não executa a consulta corretamente.';//'Your version of PHP does not correctly perform the query.'; +$lang['schema_retrieve_error_3']='Ou, por fim, o phpLDAPadmin não sabe como buscar o esquema para o seu servidor.';//'Or lastly, phpLDAPadmin doesn\'t know how to fetch the schema for your server.'; +$lang['jump_to_objectclass'] = 'Ir para uma classe de objetos';//'Jump to an objectClass'; +$lang['jump_to_attr'] = 'Ir para um tipo de atributo';//'Jump to an attribute'; +$lang['jump_to_matching_rule'] = 'Ir para regras de consistência';//'Jump to a matching rule'; +$lang['schema_for_server'] = 'Esquema para servidor';//'Schema for server'; +$lang['required_attrs'] = 'Atributos Obrigatórios';//'Required Attributes'; +$lang['optional_attrs'] = 'Atributos Opcionais';//'Optional Attributes'; +$lang['optional_binary_attrs'] = 'Atributos Binários Opcionais';//'Optional Binary Attributes'; +$lang['OID'] = 'OID';//'OID'; +$lang['aliases']='Apelidos';//'Aliases'; +$lang['desc'] = 'Descrição';//'Description'; +$lang['no_description']='sem descrição';//'no description'; +$lang['name'] = 'Nome';//'Name'; +$lang['equality']='Igualdade';//'Equality'; +$lang['is_obsolete'] = 'Esta classe de objeto está obsoleta.';//'This objectClass is obsolete'; +$lang['inherits'] = 'Herda de';//'Inherits'; +$lang['inherited_from']='Herdado de';//inherited from'; +$lang['parent_to'] = 'Pai para';//'Parent to'; +$lang['jump_to_this_oclass'] = 'Ir para definição desta classe de objeto';//'Jump to this objectClass definition'; +$lang['matching_rule_oid'] = 'OID da Regra de consistência';//'Matching Rule OID'; +$lang['syntax_oid'] = 'OID da Sintaxe';//'Syntax OID'; +$lang['not_applicable'] = 'não aplicável';//'not applicable'; +$lang['not_specified'] = 'não especificado';//not specified'; +$lang['character']='caracter';//'character'; +$lang['characters']='caracteres';//'characters'; +$lang['used_by_objectclasses']='Usado por classes de objetos';//'Used by objectClasses'; +$lang['used_by_attributes']='Usado por Atributos';//'Used by Attributes'; +$lang['oid']='OID'; +$lang['obsolete']='Obsoleto';//'Obsolete'; +$lang['ordering']='Ordenando';//'Ordering'; +$lang['substring_rule']='Regra de substring';//'Substring Rule'; +$lang['single_valued']='Avaliado sozinho';//'Single Valued'; +$lang['collective']='Coletivo';//'Collective'; +$lang['user_modification']='Alteração do usuário';//'User Modification'; +$lang['usage']='Uso';//'Usage'; +$lang['maximum_length']='Tamanho Máximo';//'Maximum Length'; +$lang['attributes']='Tipos de Atriburos';//'Attributes Types'; +$lang['syntaxes']='Sintaxes';//'Syntaxes'; +$lang['objectclasses']='Classe de Objetos';//'objectClasses'; +$lang['matchingrules']='Regra de consistência';//'Matching Rules'; +$lang['could_not_retrieve_schema_from']='Não foi possível encontrar esquema de';//'Could not retrieve schema from'; +$lang['type']='Tipo';// 'Type'; + +// Deleting entries +$lang['entry_deleted_successfully'] = 'Objeto \'%s\' excluído com sucesso.';//'Entry \'%s\' deleted successfully.'; +$lang['you_must_specify_a_dn'] = 'Você deve especificar um DN';//'You must specify a DN'; +$lang['could_not_delete_entry'] = 'Não foi possível excluir o objeto: %s';//'Could not delete the entry: %s'; +$lang['no_such_entry'] = 'Objeto inexistente: %s';//'No such entry: %s'; +$lang['delete_dn'] = 'Excluir %s';//'Delete %s'; +$lang['entry_is_root_sub_tree'] = 'Este objeto é a raiz de uma sub-árvore e contém %s objetos.';//'This entry is the root of a sub-tree containing %s entries.'; +$lang['view_entries'] = 'Ver objetos';//'view entries'; +$lang['confirm_recursive_delete'] = 'o phpLDAPadmin pode excluir recursivamente este objeto e todos %s filhos. Veja abaixo uma lista de todos os objetos que esta ação vai excluir. Deseja fazer isso?';//'phpLDAPadmin can recursively delete this entry and all %s of its children. See below for a list of all the entries that this action will delete. Do you want to do this?'; +$lang['confirm_recursive_delete_note'] = 'Nota: isto é potencialmente muito perigoso, faça isso por sua conta e risco. Esta operação não pode ser desfeita. Leve em consideração apelidos, referências e outras coisas que podem causar problemas.';//'Note: this is potentially very dangerous and you do this at your own risk. This operation cannot be undone. Take into consideration aliases, referrals, and other things that may cause problems.'; +$lang['delete_all_x_objects'] = 'Excluir todos os %s objetos';//'Delete all %s objects'; +$lang['recursive_delete_progress'] = 'Progresso de exclusão recursiva';//'Recursive delete progress'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'Objeto %s e sub-árvore excluído com sucesso.';// 'Entry %s and sub-tree deleted successfully.'; +$lang['failed_to_delete_entry'] = 'Falha ao excluir objeto %s';//'Failed to delete entry %s'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'O atributo %s está marcado como somente leitura na configuração do phpLDAPadmin.';//'The attribute "%s" is flagged as read-only in the phpLDAPadmin configuration.'; +$lang['no_attr_specified'] = 'Nome de atributo não especificado.';//'No attribute name specified.'; +$lang['no_dn_specified'] = 'DN não especificado';//'No DN specified'; + +// Adding attributes +$lang['left_attr_blank'] = 'Você deixou o valor do atributo vazio. Por favor retorne e tente novamente.';//'You left the attribute value blank. Please go back and try again.'; +$lang['failed_to_add_attr'] = 'Falha ao inserir o atributo.';//'Failed to add the attribute.'; +$lang['file_empty'] = 'O arquivo que você escolheu está vazio ou não existe. Por favor retorne e tente novamente.';//'The file you chose is either empty or does not exist. Please go back and try again.'; +$lang['invalid_file'] = 'Erro de segurança: O arquivo que está sendo carregado pode ser malicioso.';//'Security error: The file being uploaded may be malicious.'; +$lang['warning_file_uploads_disabled'] = 'Sua configuração do PHP desabilitou o upload de arquivos. Por favor verifique o php.ini antes de continuar.';//'Your PHP configuration has disabled file uploads. Please check php.ini before proceeding.'; +$lang['uploaded_file_too_big'] = 'O arquivo que você carregou é muito grande. Por favor verifique a configuração do upload_max_size no php.ini';//'The file you uploaded is too large. Please check php.ini, upload_max_size setting'; +$lang['uploaded_file_partial'] = 'O arquivo que você selecionou foi carregado parcialmente, provavelmente por causa de um erro de rede.';//'The file you selected was only partially uploaded, likley due to a network error.'; +$lang['max_file_size'] = 'Tamanho máximo de arquivo: %s';//'Maximum file size: %s'; + +// Updating values +$lang['modification_successful'] = 'Alteração bem sucedida!';//'Modification successful!'; +$lang['change_password_new_login'] = 'Você alterou sua senha, você deve conectar novamente com a sua nova senha.'; //'Since you changed your password, you must now login again with your new password.'; + + +// Adding objectClass form +$lang['new_required_attrs'] = 'Novos Atributos Obrigatórios';//'New Required Attributes'; +$lang['requires_to_add'] = 'Esta ação requer que você insira';//'This action requires you to add'; +$lang['new_attributes'] = 'novos atributos';//'new attributes'; +$lang['new_required_attrs_instructions'] = 'Instruções: Para poder inserir esta Classe de Objetos a este objeto, você deve especificar';//'Instructions: In order to add this objectClass to this entry, you must specify'; +$lang['that_this_oclass_requires'] = 'que esta Classe de Objetos requer. Você pode fazê-lo no formulário abaixo:';//'that this objectClass requires. You can do so in this form.'; +$lang['add_oclass_and_attrs'] = 'Inserir Classe de Objetos e Atributos';//'Add ObjectClass and Attributes'; + +// General +$lang['chooser_link_tooltip'] = 'Clique para abrir uma janela e selecionar um objeto (DN) graficamente';//"Click to popup a dialog to select an entry (DN) graphically'; +$lang['no_updates_in_read_only_mode'] = 'Você não pode realizar atualizações enquanto o servidor estiver em modo somente leitura';//'You cannot perform updates while server is in read-only mode'; +$lang['bad_server_id'] = 'ID do servidor inválido';//'Bad server id'; +$lang['not_enough_login_info'] = 'Informações insuficientes para a conexão com o servidor. Por favor verifique sua configuração.';//'Not enough information to login to server. Please check your configuration.'; +$lang['could_not_connect'] = 'Não foi possível conectar com o servidor LDAP.';//'Could not connect to LDAP server.'; +$lang['could_not_connect_to_host_on_port'] = 'Não foi possível conectar em "%s" na porta "%s"';//'Could not connect to "%s" on port "%s"'; +$lang['could_not_perform_ldap_mod_add'] = 'Não foi possível executar operação ldap_mod_add.';//'Could not perform ldap_mod_add operation.'; +$lang['bad_server_id_underline'] = 'server_id inválido: ';//"Bad server_id: '; +$lang['success'] = 'Sucesso';//"Success'; +$lang['server_colon_pare'] = 'Servidor: ';//"Server: '; +$lang['look_in'] = 'Procurando em: ';//"Looking in: '; +$lang['missing_server_id_in_query_string'] = 'ID do servidor não especificado na consulta!';//'No server ID specified in query string!'; +$lang['missing_dn_in_query_string'] = 'DN não especificado na consulta!';//'No DN specified in query string!'; +$lang['back_up_p'] = 'Backup...';//"Back Up...'; +$lang['no_entries'] = 'nenhum objeto';//"no entries'; +$lang['not_logged_in'] = 'Não conectado';//"Not logged in'; +$lang['could_not_det_base_dn'] = 'Não foi possível determinar a base DN';//"Could not determine base DN'; +$lang['reasons_for_error']='Isso pode ter acontecido por vários motivos, os mais provável são:';//'This could happen for several reasons, the most probable of which are:'; +$lang['please_report_this_as_a_bug']='Por favor informe isso como bug.';//'Please report this as a bug.'; +$lang['yes']='Sim';//'Yes' +$lang['no']='Não';//'No' +$lang['go']='Ir';//'go' +$lang['delete']='Excluir';//'Delete'; +$lang['back']='Voltar';//'Back'; +$lang['object']='objeto';//'object'; +$lang['delete_all']='Excluir tudo';//'Delete all'; +$lang['url_bug_report']='https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'dica';//'hint'; +$lang['bug'] = 'bug';//'bug'; +$lang['warning'] = 'aviso';//'warning'; +$lang['light'] = 'a palavra "light" de "light bulb"'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Continuar >>';//'Proceed >>'; + + +// Add value form +$lang['add_new'] = 'Inserir novo';//'Add new'; +$lang['value_to'] = 'valor para';//'value to'; +//also used in copy_form.php +$lang['distinguished_name'] = 'Nome Distinto';// 'Distinguished Name'; +$lang['current_list_of'] = 'Lista atual de';//'Current list of'; +$lang['values_for_attribute'] = 'valores para atributo';//'values for attribute'; +$lang['inappropriate_matching_note'] = 'Nota: Você vai receber um erro de "inappropriate matching" se você não configurar uma regra de IGUALDADE no seu servidor LDAP para este atributo.'; //'Note: You will get an "inappropriate matching" error if you have not
setup an EQUALITY rule on your LDAP server for this attribute.'; +$lang['enter_value_to_add'] = 'Entre com o valor que você quer inserir: ';//'Enter the value you would like to add:'; +$lang['new_required_attrs_note'] = 'Nota: talvez seja solicitado que você entre com os atributos necessários para esta classe de objetos';//'Note: you may be required to enter new attributes
that this objectClass requires.'; +$lang['syntax'] = 'Sintaxe';//'Syntax'; + +//Copy.php +$lang['copy_server_read_only'] = 'Você não pode realizar atualizações enquanto o servidor estiver em modo somente leitura';//"You cannot perform updates while server is in read-only mode'; +$lang['copy_dest_dn_blank'] = 'Você deixou o DN de destino vazio.';//"You left the destination DN blank.'; +$lang['copy_dest_already_exists'] = 'O objeto de destino (%s) já existe.';//"The destination entry (%s) already exists.'; +$lang['copy_dest_container_does_not_exist'] = 'O container de destino (%s) não existe.';//'The destination container (%s) does not exist.'; +$lang['copy_source_dest_dn_same'] = 'O DN de origem e destino são o mesmo.';//"The source and destination DN are the same.'; +$lang['copy_copying'] = 'Copiando ';//"Copying '; +$lang['copy_recursive_copy_progress'] = 'Progresso da cópia recursiva';//"Recursive copy progress'; +$lang['copy_building_snapshot'] = 'Construindo a imagem da árvore a ser copiada...';//"Building snapshot of tree to copy... '; +$lang['copy_successful_like_to'] = 'Copiado com sucesso! Você gostaria de ';//"Copy successful! Would you like to '; +$lang['copy_view_new_entry'] = 'ver o novo objeto';//"view the new entry'; +$lang['copy_failed'] = 'Falha ao copiar DN: ';//'Failed to copy DN: '; + + +//edit.php +$lang['missing_template_file'] = 'Aviso: arquivo modelo faltando, ';//'Warning: missing template file, '; +$lang['using_default'] = 'Usando o padrão.';//'Using default.'; +$lang['template'] = 'Modelo';//'Template'; +$lang['must_choose_template'] = 'Você deve escolher um modelo';//'You must choose a template'; +$lang['invalid_template'] = '%s é um modelo inválido';// '%s is an invalid template'; +$lang['using_template'] = 'usando o modelo';//'using template'; +$lang['go_to_dn'] = 'Ir para %s';//'Go to %s'; + +//copy_form.php +$lang['copyf_title_copy'] = 'Copiar ';//"Copy '; +$lang['copyf_to_new_object'] = 'para um novo objeto';//"to a new object'; +$lang['copyf_dest_dn'] = 'DN de destino';//"Destination DN'; +$lang['copyf_dest_dn_tooltip'] = 'O DN completo do novo objeto que será criado a partir da cópia da origem';//'The full DN of the new entry to be created when copying the source entry'; +$lang['copyf_dest_server'] = 'Servidor de destino';//"Destination Server'; +$lang['copyf_note'] = 'Dica: Copiando entre diferentes servidores somente funciona se não houver violação de esquema';//"Note: Copying between different servers only works if there are no schema violations'; +$lang['copyf_recursive_copy'] = 'Copia recursivamente todos filhos deste objeto também.';//"Recursively copy all children of this object as well.'; +$lang['recursive_copy'] = 'Cópia Recursiva';//'Recursive copy'; +$lang['filter'] = 'Filtro';//'Filter'; +$lang['filter_tooltip'] = 'Quando executar uma cópia recursiva, copiar somente os objetos que atendem a este filtro';// 'When performing a recursive copy, only copy those entries which match this filter'; + + +//create.php +$lang['create_required_attribute'] = 'Você deixou vazio o valor de um atributo obrigatório (%s).';//"Error, you left the value blank for required attribute '; +$lang['redirecting'] = 'Redirecionando...';//"Redirecting'; moved from create_redirection -> redirection +$lang['here'] = 'aqui';//"here'; renamed vom create_here -> here +$lang['create_could_not_add'] = 'Não foi possível inserir o objeto no servidor LDAP.';//"Could not add the object to the LDAP server.'; + +//create_form.php +$lang['createf_create_object'] = 'Criar Objeto';//"Create Object'; +$lang['createf_choose_temp'] = 'Escolher um modelo';//"Choose a template'; +$lang['createf_select_temp'] = 'Selecionar um modelo para o processo de criação';//"Select a template for the creation process'; +$lang['createf_proceed'] = 'Prosseguir';//"Proceed >>'; +$lang['rdn_field_blank'] = 'Você deixou o campo RDN vazio.';//'You left the RDN field blank.'; +$lang['container_does_not_exist'] = 'O container que você especificou (%s) não existe. Por favor tente novamente.';// 'The container you specified (%s) does not exist. Please try again.'; +$lang['no_objectclasses_selected'] = 'Você não selecionou nenhuma Classe de Objetos para este objeto. Por favor volte e faça isso.';//'You did not select any ObjectClasses for this object. Please go back and do so.'; +$lang['hint_structural_oclass'] = 'Dica: Você deve escolher pelo menos uma Classe de Objetos estrutural';//'Hint: You must choose at least one structural objectClass'; + +//creation_template.php +$lang['ctemplate_on_server'] = 'No servidor';//"On server'; +$lang['ctemplate_no_template'] = 'Nenhum modelo especificado.';//"No template specified in POST variables.'; +$lang['ctemplate_config_handler'] = 'Seu arquivo de configuração determina que o modelo';//"Your config specifies a handler of'; +$lang['ctemplate_handler_does_not_exist'] = 'é válido. Porém este modelo não existe no diretório "templates/creation".';//"for this template. But, this handler does not exist in the 'templates/creation' directory.'; +$lang['create_step1'] = 'Passo 1 de 2: Nome e Classe(s) de Objetos';//'Step 1 of 2: Name and ObjectClass(es)'; +$lang['create_step2'] = 'Passo 2 de 2: Especifica atributos e valores';//'Step 2 of 2: Specify attributes and values'; +$lang['relative_distinguished_name'] = 'Nome Distinto Relativo';//'Relative Distinguished Name'; +$lang['rdn'] = 'RDN';//'RDN'; +$lang['rdn_example'] = 'exemplo: cn=MinhaNovaPessoa';//'(example: cn=MyNewPerson)'; +$lang['container'] = 'Container';//'Container'; + + +// search.php +$lang['you_have_not_logged_into_server'] = 'Você não conectou no servidor selecionado ainda, assim, você não pode realizar buscas nele.';//'You have not logged into the selected server yet, so you cannot perform searches on it.'; +$lang['click_to_go_to_login_form'] = 'Clique aqui para conectar-se ao servidor';//'Click here to go to the login form'; +$lang['unrecognized_criteria_option'] = 'Critério desconhecido: ';// 'Unrecognized criteria option: '; +$lang['if_you_want_to_add_criteria'] = 'Se você quer inserir seus próprios critérios à lista. Certifique-se de editar o search.php para tratá-los. Saindo.';//'If you want to add your own criteria to the list. Be sure to edit search.php to handle them. Quitting.'; +$lang['entries_found'] = 'Objetos encontrados: ';//'Entries found: '; +$lang['filter_performed'] = 'Filtro aplicado: ';//'Filter performed: '; +$lang['search_duration'] = 'Busca realizada pelo phpLDAPadmin em';//'Search performed by phpLDAPadmin in'; +$lang['seconds'] = 'segundos';//'seconds'; + +// search_form_advanced.php +$lang['scope_in_which_to_search'] = 'O escopo no qual procurar';//'The scope in which to search'; +$lang['scope_sub'] = 'Sub (toda a sub-árvore)';//'Sub (entire subtree)'; +$lang['scope_one'] = 'One (um nível de profundidade)';//'One (one level beneath base)'; +$lang['scope_base'] = 'Base (apenas a base dn)';//'Base (base dn only)'; +$lang['standard_ldap_search_filter'] = 'Filtro de busca LDAP padrão. Exemplo: (&(sn=Silva)(givenname=Pedro))';//'Standard LDAP search filter. Example: (&(sn=Smith)(givenname=David))'; +$lang['search_filter'] = 'Filtro de Busca';//'Search Filter'; +$lang['list_of_attrs_to_display_in_results'] = 'A lista de atributos que devem ser mostrados nos resultados (separados por vírgula)';//'A list of attributes to display in the results (comma-separated)'; + +// search_form_simple.php +$lang['starts with'] = 'inicia com';//'starts with'; +$lang['ends with'] = 'termina com';//'ends with'; +$lang['sounds like'] = 'é semelhante a';//'sounds like'; + + +// server_info.php +$lang['could_not_fetch_server_info'] = 'Não foi possível obter informação LDAP do servidor';//'Could not retrieve LDAP information from the server'; +$lang['server_info_for'] = 'Informações do servidor: ';//'Server info for: '; +$lang['server_reports_following'] = 'O servidor forneceu a seguinte informação sobre si mesmo';//'Server reports the following information about itself'; +$lang['nothing_to_report'] = 'Este servidor não tem nada a informar';//'This server has nothing to report.'; + +//update.php +$lang['update_array_malformed'] = 'update_array danificado. Isto pode ser um bug do phpLDAPadmin. Por favor informe.';//'update_array is malformed. This might be a phpLDAPadmin bug. Please report it.'; +$lang['could_not_perform_ldap_modify'] = 'Não foi possível realizar a operação ldap_modify.';//'Could not perform ldap_modify operation.'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'Você confirma estas alterações?';//'Do you want to make these changes?'; +$lang['attribute'] = 'Atributo';//'Attribute'; +$lang['old_value'] = 'Valor Antigo';//'Old Value'; +$lang['new_value'] = 'Valor Novo';//'New Value'; +$lang['attr_deleted'] = '[atributo excluído]';//'[attribute deleted]'; +$lang['commit'] = 'Confirmar';//'Commit'; +$lang['cancel'] = 'Cancelar';//'Cancel'; +$lang['you_made_no_changes'] = 'Você não fez alterações';//'You made no changes'; +$lang['go_back'] = 'Voltar';//'Go back'; + +// welcome.php +$lang['welcome_note'] = 'Use o menu à esquerda para navegar';//'Use the menu to the left to navigate'; +$lang['credits'] = 'Créditos';//'Credits'; +$lang['changelog'] = 'Log de Alterações';//'ChangeLog'; +$lang['donate'] = 'Contribuir';//'Donate'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = 'Nome de arquivo inseguro: ';//'Unsafe file name: '; +$lang['no_such_file'] = 'Arquivo inexistente: ';//'No such file: '; + +//function.php +$lang['auto_update_not_setup'] = 'Você habilitou auto_uid_numbers para %s na sua configuração, mas você não especificou auto_uid_number_mechanism. Por favor corrija este problema.';//"You have enabled auto_uid_numbers for %s in your configuration, but you have not specified the auto_uid_number_mechanism. Please correct this problem.'; +$lang['uidpool_not_set'] = 'Você especificou o "auto_uid_number_mechanism" como "uidpool" na sua configuração para o servidor %s, mas você não especificou o audo_uid_number_uid_pool_dn. Por favor especifique-o antes de continuar.';//"You specified the auto_uid_number_mechanism as uidpool in your configuration for server %s, but you did not specify the audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; +$lang['uidpool_not_exist'] = 'Parece que o uidPool que você especificou na sua configuração (%s) não existe.';//"It appears that the uidPool you specified in your configuration (%s) does not exist.'; +$lang['specified_uidpool'] = 'Você especificou o "auto_uid_number_mechanism" como "busca" na sua configuração para o servidor %s, mas você não especificou o "auto_uid_number_search_base". Por favor especifique-o antes de continuar.';//"You specified the auto_uid_number_mechanism as search in your configuration for server %s, but you did not specify the auto_uid_number_search_base. Please specify it before proceeding.'; +$lang['auto_uid_invalid_credential'] = 'Problema ao conectar ao %s com as suas credenciais auto_uid. Por favor verifique seu arquivo de configuração.';// 'Unable to bind to %s with your with auto_uid credentials. Please check your configuration file.'; +$lang['bad_auto_uid_search_base'] = 'Sua configuração do phpLDAPadmin especifica que o auto_uid_search_base é inválido para o servidor %s';//'Your phpLDAPadmin configuration specifies an invalid auto_uid_search_base for server %s'; +$lang['auto_uid_invalid_value'] = 'Você especificou um valor inválido para auto_uid_number_mechanism ("%s") na sua configuração. Somente "uidpool" e "busca" são válidos. Por favor corrija este problema.';//"You specified an invalid value for auto_uid_number_mechanism (%s) in your configration. Only uidpool and search are valid. Please correct this problem.'; + +$lang['error_auth_type_config'] = 'Erro: Você tem um erro no seu arquivo de configuração. Os dois únicos valores permitidos para auth_type na seção $servers são \'config\' e \'form\'. Você entrou \'%s\', que não é permitido.';//"Error: You have an error in your config file. The only two allowed values for 'auth_type' in the $servers section are 'config' and 'form'. You entered '%s', which is not allowed. '; + +$lang['php_install_not_supports_tls'] = 'Sua instalação do PHP não suporta TLS';//"Your PHP install does not support TLS'; +$lang['could_not_start_tls'] = 'Impossível iniciar TLS. Por favor verifique a configuração do servidor LDAP.';//"Could not start TLS.
Please check your LDAP server configuration.'; +$lang['could_not_bind_anon'] = 'Não foi possível conectar ao servidor anonimamente.';//'Could not bind anonymously to server.'; +$lang['could_not_bind'] = 'Não foi possível conectar ao servidor LDAP.';//'Could not bind to the LDAP server.'; +$lang['anonymous_bind'] = 'Conexão anônima';//'Anonymous Bind'; +$lang['bad_user_name_or_password'] = 'Usuário ou senha inválido. Por favor tente novamente.';//'Bad username or password. Please try again.'; +$lang['redirecting_click_if_nothing_happens'] = 'Redirecionando... Clique aqui se nada acontecer.';//'Redirecting... Click here if nothing happens.'; +$lang['successfully_logged_in_to_server'] = 'Conexão estabelecida com sucesso no sevidor %s';//'Successfully logged into server %s'; +$lang['could_not_set_cookie'] = 'Não foi possível criar o cookie.';//'Could not set cookie.'; +$lang['ldap_said'] = 'O servidor LDAP respondeu: %s';//"LDAP said: %s

'; +$lang['ferror_error'] = 'Erro';//"Error'; +$lang['fbrowse'] = 'procurar';//"browse'; +$lang['delete_photo'] = 'Excluir imagem';//"Delete Photo'; +$lang['install_not_support_blowfish'] = 'Sua instalação do PHP não suporta codificação blowfish.';//"Your PHP install does not support blowfish encryption.'; +$lang['install_not_support_md5crypt'] = 'Sua instalação do PHP não suporta codificação md5crypt.';//'Your PHP install does not support md5crypt encryption.'; +$lang['install_no_mash'] = 'Sua instalação do PHP não tem a função mhash(). Impossível fazer transformações SHA.';// "Your PHP install does not have the mhash() function. Cannot do SHA hashes.'; +$lang['jpeg_contains_errors'] = 'Foto jpeg contém erros
';//"jpegPhoto contains errors
'; +$lang['ferror_number'] = 'Erro número: %s (%s)';//"Error number: %s (%s)

'; +$lang['ferror_discription'] ='Descrição: %s

';// "Description: %s

'; +$lang['ferror_number_short'] = 'Erro número: %s

';//"Error number: %s

'; +$lang['ferror_discription_short'] = 'Descrição: (descrição não disponível
';//"Description: (no description available)
'; +$lang['ferror_submit_bug'] = 'Isto é um bug do phpLDAPadmin? Se for, por favor informe.';//"Is this a phpLDAPadmin bug? If so, please report it.'; +$lang['ferror_unrecognized_num'] = 'Número do erro desconhecido: ';//"Unrecognized error number: '; + +$lang['ferror_nonfatil_bug'] = '
Você encontrou um bug não-fatal no phpLDAPadmin!
Erro:%s (%s)
Arquivo:%s linha %s, solicitante %s
Versão:PLA: %s, PHP: %s, SAPI: %s
Servidor Web:%s
Por favor informe este bug clicando aqui.

';//"
You found a non-fatal phpLDAPadmin bug!
Error:%s (%s)
File:%s line %s, caller %s
Versions:PLA: %s, PHP: %s, SAPI: %s
Web server:%s
Please report this bug by clicking here.

'; + +$lang['ferror_congrats_found_bug'] = 'Parabéns! Você encontrou um bug no phpLDAPadmin.

Erro:%s
Nível:%s
Arquivo:%s
Linha:%s
Caller:%s
PLA Vers&atile;o:%s
PHP Vers&atile;o:%s
PHP SAPI:%s
Servidor Web:%s

Por favor informe o bug clicando abaixo!';//"Congratulations! You found a bug in phpLDAPadmin.

Error:%s
Level:%s
File:%s
Line:%s
Caller:%s
PLA Version:%s
PHP Version:%s
PHP SAPI:%s
Web server:%s

Please report this bug by clicking below!'; + +//ldif_import_form +$lang['import_ldif_file_title'] = 'Importar arquivo LDIF';//'Import LDIF File'; +$lang['select_ldif_file'] = 'Selecionar um arquivo LDIF';//'Select an LDIF file:'; +$lang['select_ldif_file_proceed'] = 'Continuar >>';//'Proceed >>'; +$lang['dont_stop_on_errors'] = 'Não parar quando der erro';//'Don\'t stop on errors'; + +//ldif_import +$lang['add_action'] = 'Inserindo...';//'Adding...'; +$lang['delete_action'] = 'Deletando...';//'Deleting...'; +$lang['rename_action'] = 'Renomeando...';//'Renaming...'; +$lang['modify_action'] = 'Alterando...';//'Modifying...'; +$lang['warning_no_ldif_version_found'] = 'Nenhuma versão encontrada. Assumindo 1.';//'No version found. Assuming 1.'; +$lang['valid_dn_line_required'] = 'Uma linha dn válida é obrigatória.';//'A valid dn line is required.'; +$lang['missing_uploaded_file'] = 'Arquivo carregado perdido.';//'Missing uploaded file.'; +$lang['no_ldif_file_specified.'] = 'Nenhum arquivo LDIF especificado. Por favor tente novamente.';//'No LDIF file specified. Please try again.'; +$lang['ldif_file_empty'] = 'Arquivo LDIF carregado está vazio.';// 'Uploaded LDIF file is empty.'; +$lang['empty'] = 'vazio';//'empty'; +$lang['file'] = 'Arquivo';//'File'; +$lang['number_bytes'] = '%s bytes';//'%s bytes'; + +$lang['failed'] = 'Falhou';//'failed'; +$lang['ldif_parse_error'] = 'Erro Analisando Arquivo LDIF';//'LDIF Parse Error'; +$lang['ldif_could_not_add_object'] = 'Não foi possível inserir objeto:';//'Could not add object:'; +$lang['ldif_could_not_rename_object'] = 'Não foi possível renomear objeto:';//'Could not rename object:'; +$lang['ldif_could_not_delete_object'] = 'Não foi possível excluir objeto:';//'Could not delete object:'; +$lang['ldif_could_not_modify_object'] = 'Não foi possível alterar objeto:';//'Could not modify object:'; +$lang['ldif_line_number'] = 'Linha Número:';//'Line Number:'; +$lang['ldif_line'] = 'Linha:';//'Line:'; + +//delete_form +$lang['sure_permanent_delete_object']='Você tem certeza que deseja excluir este objeto permanentemente?';//'Are you sure you want to permanently delete this object?'; +$lang['permanently_delete_children']='Exluir permanentemente todos os objetos filho também?';//'Permanently delete all children also?'; + +$lang['list_of_entries_to_be_deleted'] = 'Lista de objetos a serem deletados: ';//'List of entries to be deleted:'; +$lang['dn'] = 'DN'; //'DN'; + +// Exports +$lang['export_format'] = 'Formato para exportar';// 'Export format'; +$lang['line_ends'] = 'Fins de linha'; //'Line ends'; +$lang['must_choose_export_format'] = 'Você deve especificar um formato para exportar';//'You must choose an export format.'; +$lang['invalid_export_format'] = 'Formato para exportação inválido';//'Invalid export format'; +$lang['no_exporter_found'] = 'Nenhum exportador de arquivos encontrado.';//'No available exporter found.'; +$lang['error_performing_search'] = 'Erro encontrado enquanto fazia a pesquisa.';//'Encountered an error while performing search.'; +$lang['showing_results_x_through_y'] = 'Mostrando resultados %s através %s.';//'Showing results %s through %s.'; +$lang['searching'] = 'Pesquisando...';//'Searching...'; +$lang['size_limit_exceeded'] = 'Aviso, limite da pesquisa excedido.';//'Notice, search size limit exceeded.'; +$lang['entry'] = 'Objeto';//'Entry'; +$lang['ldif_export_for_dn'] = 'Exportação LDIF para: %s'; //'LDIF Export for: %s'; +$lang['generated_on_date'] = 'Gerado pelo phpLDAPadmin no %s';//'Generated by phpLDAPadmin on %s'; +$lang['total_entries'] = 'Total de objetos';//'Total Entries'; +$lang['dsml_export_for_dn'] = 'Exportação DSLM para: %s';//'DSLM Export for: %s'; + +// logins +$lang['could_not_find_user'] = 'Não foi possível encontrar o usuário "%s"';//'Could not find a user "%s"'; +$lang['password_blank'] = 'Você deixou a senha vazia.';//'You left the password blank.'; +$lang['login_cancelled'] = 'Login cancelado.';//'Login cancelled.'; +$lang['no_one_logged_in'] = 'Ninguém está conectado neste servidor.';//'No one is logged in to that server.'; +$lang['could_not_logout'] = 'Não foi possível desconectar.';//'Could not logout.'; +$lang['unknown_auth_type'] = 'auth_type desconhecido: %s';//'Unknown auth_type: %s'; +$lang['logged_out_successfully'] = 'Desconectado com sucesso do servidor %s';//'Logged out successfully from server %s'; +$lang['authenticate_to_server'] = 'Autenticar no servidor %s';//'Authenticate to server %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Aviso: Esta conexão NÃO é criptografada.';//'Warning: This web connection is unencrypted.'; +$lang['not_using_https'] = 'Você não está usando \'https\'. O navegador internet vai transmitir as informações de login sem criptografar.';// 'You are not use \'https\'. Web browser will transmit login information in clear text.'; +$lang['login_dn'] = 'Login DN';//'Login DN'; +$lang['user_name'] = 'Nome de usuário';//'User name'; +$lang['password'] = 'Senha';//'Password'; +$lang['authenticate'] = 'Autenticar';//'Authenticate'; + +// Entry browser +$lang['entry_chooser_title'] = 'Selecionador de objeto';//'Entry Chooser'; + +// Index page +$lang['need_to_configure'] = 'Você deve configurar o phpLDAPadmin. Faça isso editando o arquivo \'config.php\'. Um arquivo de exemplo é fornecido em \'config.php.example\'';// ';//'You need to configure phpLDAPadmin. Edit the file \'config.php\' to do so. An example config file is provided in \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Exclusões não permitidas no modo somente leitura.';//'Deletes not allowed in read only mode.'; +$lang['error_calling_mass_delete'] = 'Erro chamando mass_delete.php. Faltando mass_delete nas variáveis POST.';//'Error calling mass_delete.php. Missing mass_delete in POST vars.'; +$lang['mass_delete_not_array'] = 'a variável POST mass_delete não é um conjunto';//'mass_delete POST var is not an array.'; +$lang['mass_delete_not_enabled'] = 'Exclusão em massa não habilitada. Por favor habilite-a no arquivo config.php antes de continuar';//'Mass deletion is not enabled. Please enable it in config.php before proceeding.'; +$lang['mass_deleting'] = 'Exclusão em massa';//'Mass Deleting'; +$lang['mass_delete_progress'] = 'Progresso da exclusão no servidor "%s"';//'Deletion progress on server "%s"'; +$lang['malformed_mass_delete_array'] = 'Conjunto mass_delete danificado.';//'Malformed mass_delete array.'; +$lang['no_entries_to_delete'] = 'Você não selecionou nenhum objeto para excluir';//'You did not select any entries to delete.'; +$lang['deleting_dn'] = 'Excluindo %s';//'Deleting %s'; +$lang['total_entries_failed'] = '%s de %s objetos falharam na exclusão.';//'%s of %s entries failed to be deleted.'; +$lang['all_entries_successful'] = 'Todos objetos foram excluídos com sucesso.';//'All entries deleted successfully.'; +$lang['confirm_mass_delete'] = 'Confirme exclusão em massa de %s objetos no servidor %s';//'Confirm mass delete of %s entries on server %s'; +$lang['yes_delete'] = 'Sim, excluir!';//'Yes, delete!'; + + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Você não pode renomear um objeto que tem objetos filhos (isto é, a operação de renomear não é permitida em objetos não-folha)';// 'You cannot rename an entry which has children entries (eg, the rename operation is not allowed on non-leaf entries)'; +$lang['no_rdn_change'] = 'Você não alterou o RDN';//'You did not change the RDN'; +$lang['invalid_rdn'] = 'Valor RDN inválido';//'Invalid RDN value'; +$lang['could_not_rename'] = 'Não foi possível renomear o objeto';//'Could not rename the entry'; + + +?> diff --git a/lang/recoded/ru.php b/lang/recoded/ru.php index 7b97d19..cf52b58 100644 --- a/lang/recoded/ru.php +++ b/lang/recoded/ru.php @@ -1,259 +1,535 @@ Удалить атрибут, очиÑтите текÑтовое поле и нажмите Ñохрнить.';//'Hint: To delete an attribute, empty the text field and click save.'; -$lang['viewing_read_only'] = 'ПроÑмотреть запиÑÑŒ в режиме только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ';//'Viewing entry in read-only mode.'; -$lang['change_entry_rdn'] = 'Change this entry\'s RDN'; -$lang['no_new_attrs_available'] = 'нет новых атрибутов Ð´Ð»Ñ Ñтой запиÑи';//'no new attributes available for this entry'; -$lang['binary_value'] = 'Бинарное значение';//'Binary value'; -$lang['add_new_binary_attr'] = 'Добавить новый бинарный атрибут';//'Add New Binary Attribute'; -$lang['add_new_binary_attr_tooltip'] = 'Добавить новый бинарный атрибут/значение Ñ Ñ„Ð°Ð¹Ð»Ð°';//'Add a new binary attribute/value from a file'; -$lang['alias_for'] = 'ÐÐ»Ð¸Ð°Ñ Ð´Ð»Ñ';//'Alias for'; -$lang['download_value'] = 'загрузить значение';//'download value'; -$lang['delete_attribute'] = 'удалить атрибут';//'delete attribute'; -$lang['true'] = 'да';//'true'; -$lang['false'] = 'нет';//'false'; -$lang['none_remove_value'] = 'нет, удалите значение';//'none, remove value'; -$lang['really_delete_attribute'] = 'Really delete attribute'; +$lang['delete_this_entry'] = 'Удалить Ñту запиÑÑŒ'; +$lang['delete_this_entry_tooltip'] = 'Ð’Ð°Ñ Ð¿Ð¾Ð¿Ñ€Ð¾ÑÑÑ‚ подтвердить Ваше решение'; +$lang['copy_this_entry'] = 'Скопировать Ñту запиÑÑŒ'; +$lang['copy_this_entry_tooltip'] = 'Скопировать Ñтот объект в другое меÑто, в новый DN или на другой Ñервер'; +$lang['export'] = 'ЭкÑпорт'; +$lang['export_tooltip'] = 'Сохранить дамп Ñтого объекта'; +$lang['export_subtree_tooltip'] = 'Сохранить дамп Ñтого объекта и вÑех его потомков'; +$lang['export_subtree'] = 'ЭкÑпортировать ветвь'; +$lang['create_a_child_entry'] = 'Создать потомка'; +$lang['rename_entry'] = 'Переименовать запиÑÑŒ'; +$lang['rename'] = 'Переименовать'; +$lang['add'] = 'Добавить'; +$lang['view'] = 'ПроÑмотреть'; +$lang['view_one_child'] = 'ПроÑмотреть 1 потомка'; +$lang['view_children'] = 'ПроÑмотреть %s потомков'; +$lang['add_new_attribute'] = 'Добавить новый атрибут'; +$lang['add_new_objectclass'] = 'Добавить новый объект'; +$lang['hide_internal_attrs'] = 'Скрыть внутренние атрибуты'; +$lang['show_internal_attrs'] = 'Показать внутренние атрибуты'; +$lang['attr_name_tooltip'] = 'Ðажмите чтобы проÑмотреть опиÑание Ñхемы Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° \'%s\''; +$lang['none'] = 'нет'; +$lang['no_internal_attributes'] = 'Ðет внутренних атрибутов'; +$lang['no_attributes'] = 'Эта запиÑÑŒ не имеет атрибутов'; +$lang['save_changes'] = 'Сохранить изменениÑ'; +$lang['add_value'] = 'добавить значение'; +$lang['add_value_tooltip'] = 'Добавить дополнительное значение Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° \'%s\''; +$lang['refresh_entry'] = 'Обновить'; +$lang['refresh_this_entry'] = 'Обновить Ñту запиÑÑŒ'; +$lang['delete_hint'] = 'ПодÑказка: Чтобы удалить атрибут - очиÑтите текÑтовое поле и нажмите "Ñохранить"'; +$lang['attr_schema_hint'] = 'ПодÑказка: Чтобы проÑмотреть Ñхему атрибута - нажмите на его названии.'; +$lang['attrs_modified'] = 'Ðекоторые атрибуты (%s) были модифицированы и теперь подÑвечены ниже.'; +$lang['attr_modified'] = 'Ðтрибут (%s) был модифицирован и теперь подÑвечен ниже.'; +$lang['viewing_read_only'] = 'ПроÑмотр запиÑи в режиме "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ".'; +$lang['no_new_attrs_available'] = 'Ð´Ð»Ñ Ñтой запиÑи нет доÑтупных новых атрибутов'; +$lang['no_new_binary_attrs_available'] = 'Ð´Ð»Ñ Ñтой запиÑи нет доÑтупных новых бинарных атрибутов'; +$lang['binary_value'] = 'Бинарное значение'; +$lang['add_new_binary_attr'] = 'Добавить новый бинарный атрибут'; +$lang['alias_for'] = 'Внимание: \'%s\' - Ð°Ð»Ð¸Ð°Ñ Ð´Ð»Ñ \'%s\''; +$lang['download_value'] = 'загрузить значение'; +$lang['delete_attribute'] = 'удалить атрибут'; +$lang['true'] = 'правда'; +$lang['false'] = 'ложь'; +$lang['none_remove_value'] = 'пуÑто, удалите значение'; +$lang['really_delete_attribute'] = 'ДейÑтвительно удалить значение'; +$lang['add_new_value'] = 'Добавить новое значение'; // Schema browser -$lang['the_following_objectclasses'] = 'Следующий objectClasses поддерживаетьÑÑ Ñтим LDAP Ñервером.';;//'The following objectClasses are supported by this LDAP server.'; -$lang['the_following_attributes'] = 'Следующий attributeTypes поддерживаетьÑÑ Ñтим LDAP Ñевером.';//The following attributeTypes are supported by this LDAP server.'; -$lang['the_following_matching'] = 'Следующий matching rules поддерживаетьÑÑ Ñтим LDAP Ñевером.';//'The following matching rules are supported by this LDAP server.'; -$lang['the_following_syntaxes'] = 'Следующий syntaxes поддерживаетьÑÑ Ñтим LDAP Ñервером.';//'The following syntaxes are supported by this LDAP server.'; -$lang['jump_to_objectclass'] = 'Перейти к objectClass';//'Jump to an objectClass'; -$lang['jump_to_attr'] = 'Перейти к атрибутам';//'Jump to an attribute'; -$lang['schema_for_server'] = 'Схема Ð´Ð»Ñ Ñервера';//'Schema for server'; -$lang['required_attrs'] = 'Запрошеные атрибуты';//'Required Attributes'; -$lang['optional_attrs'] = 'Оптимальные отрибуты';//'Optional Attributes'; +$lang['the_following_objectclasses'] = 'Этот LDAP Ñервер поддерживает Ñледующие объекты.'; +$lang['the_following_attributes'] = 'Этот LDAP Ñервер поддерживает Ñледующие типы атрибутов.'; +$lang['the_following_matching'] = 'Этот LDAP Ñервер поддерживает Ñледующие правила ÑоответÑтвиÑ.'; +$lang['the_following_syntaxes'] = 'Этот LDAP Ñервер поддерживает Ñледующие ÑинтакÑиÑÑ‹.'; +$lang['schema_retrieve_error_1']='Этот Ñервер не полноÑтью поддерживает LDAP протокол.'; +$lang['schema_retrieve_error_2']='Ваша верÑÐ¸Ñ PHP неправильно обработала запроÑ.'; +$lang['schema_retrieve_error_3']='Или phpLDAPadmin не знает как получить Ñхему Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ Ñервера.'; +$lang['jump_to_objectclass'] = 'Перейти к объекту'; +$lang['jump_to_attr'] = 'Перейти к типам атрибутов'; +$lang['jump_to_matching_rule'] = 'Перейти к правилам ÑоответÑтвиÑ'; +$lang['schema_for_server'] = 'Схема Ð´Ð»Ñ Ñервера'; +$lang['required_attrs'] = 'Требуемые атрибуты'; +$lang['optional_attrs'] = 'ÐеобÑзательные атрибуты'; +$lang['optional_binary_attrs'] = 'ÐеобÑзательные бинарные атрибуты'; $lang['OID'] = 'OID'; -$lang['desc'] = 'ОпиÑание';//'Description'; -$lang['is_obsolete'] = 'Этот objectClass еÑÑ‚ÑŒ obsolete';//'This objectClass is obsolete'; -$lang['inherits'] = 'ÐаÑледование'; -$lang['jump_to_this_oclass'] = 'Перейти к Ñтому objectClass опиÑанию';//'Jump to this objectClass definition'; -$lang['matching_rule_oid'] = 'Matching Rule OID'; -$lang['syntax_oid'] = 'Syntax OID'; +$lang['aliases']='ÐлиаÑÑ‹'; +$lang['desc'] = 'ОпиÑание'; +$lang['no_description']='нет опиÑаниÑ'; +$lang['name'] = 'ИмÑ'; +$lang['equality']='РавенÑтво'; +$lang['is_obsolete'] = 'Этот объект уÑтарел.'; +$lang['inherits'] = 'ЗаимÑтвует из'; +$lang['inherited_from'] = 'ЗаимÑтвован из'; +$lang['parent_to'] = 'Родитель длÑ'; +$lang['jump_to_this_oclass'] = 'Перейти к определению Ñтого объекта'; +$lang['matching_rule_oid'] = 'OID правила ÑоответÑтвиÑ'; +$lang['syntax_oid'] = 'OID ÑинтакÑиÑа'; +$lang['not_applicable'] = 'неприменимый'; +$lang['not_specified'] = 'не указано'; +$lang['character']='Ñимвол'; +$lang['characters']='Ñимволы'; +$lang['used_by_objectclasses']='ИÑпользуетÑÑ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸'; +$lang['used_by_attributes']='ИÑпользован атрибутами'; +$lang['maximum_length']='МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð°'; +$lang['attributes']='Типы атрибутов'; +$lang['syntaxes']='СинтакÑиÑÑ‹'; +$lang['matchingrules']='Правила ÑоответÑтвиÑ'; +$lang['oid']='OID'; +$lang['obsolete']='УÑтаревший'; +$lang['ordering']='Сортировка'; +$lang['substring_rule']='Правило подÑтроки'; +$lang['single_valued']='Однозначный'; +$lang['collective']='СовмеÑтный'; +$lang['user_modification']='Изменение пользователем'; +$lang['usage']='ИÑпользование'; +$lang['could_not_retrieve_schema_from']='Ðе могу получить Ñхему из'; +$lang['type']='Тип'; + +// Deleting entries +$lang['entry_deleted_successfully'] = 'ЗапиÑÑŒ %s уÑпешно удалена.'; +$lang['you_must_specify_a_dn'] = 'Ð’Ñ‹ должны указать DN'; +$lang['could_not_delete_entry'] = 'Ðе удалоÑÑŒ удалить запиÑÑŒ: %s'; +$lang['no_such_entry'] = 'Ðет такой запиÑи: %s'; +$lang['delete_dn'] = 'Удалить %s'; +$lang['permanently_delete_children'] = 'Также окончательно удалить вÑех потомков?'; +$lang['entry_is_root_sub_tree'] = 'Эта запиÑÑŒ ÑвлÑетÑÑ ÐºÐ¾Ñ€Ð½ÐµÐ¼ дерева Ñодержащего %s запиÑей.'; +$lang['view_entries'] = 'проÑмотреть запиÑи'; +$lang['confirm_recursive_delete'] = 'phpLDAPadmin может рекурÑивно удалить Ñту запиÑÑŒ и %s его потомков. Ðиже ÑпиÑок вÑех запиÑей, которые будут удалены. Ð’Ñ‹ дейÑтвительно хотите Ñто Ñделать?'; +$lang['confirm_recursive_delete_note'] = 'Внимание: Ñто потенциально очень опаÑно и вы делаете Ñто на Ñвой ÑобÑтвенный риÑк. Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть отменена. Примите во внимание алиаÑÑ‹, ÑÑылки и другие вещи, которые могум вызвать проблемы.'; +$lang['delete_all_x_objects'] = 'Удалить вÑе %s объектов'; +$lang['recursive_delete_progress'] = 'ПрогреÑÑ Ñ€ÐµÐºÑƒÑ€Ñивного удалениÑ'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'ЗапиÑÑŒ %s и ее потомки уÑпешно удалены.'; +$lang['failed_to_delete_entry'] = 'Ðе удалоÑÑŒ удалить запиÑÑŒ %s'; +$lang['list_of_entries_to_be_deleted'] = 'СпиÑок запиÑей на удаление:'; +$lang['sure_permanent_delete_object']='Ð’Ñ‹ уверены, что хотите окончательно удалить Ñтот объект?'; +$lang['dn'] = 'DN'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'Этот атрибут "%s" уÑтановлен "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" в конфигурации phpLDAPadmin.'; +$lang['no_attr_specified'] = 'Ðе указано Ð¸Ð¼Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð°.'; +$lang['no_dn_specified'] = 'Ðе указан DN'; + +// Adding attributes +$lang['left_attr_blank'] = 'Ð’Ñ‹ оÑтавили значение атрибута пуÑтым. ВернитеÑÑŒ и попробуйте еще раз.'; +$lang['failed_to_add_attr'] = 'Ðе удалоÑÑŒ добавить атрибут.'; +$lang['file_empty'] = 'Файл, который Ð’Ñ‹ выбрали или не ÑущеÑтвует или пуÑÑ‚. ПожалуйÑта вернитеÑÑŒ и попробуйте еще раз.'; +$lang['invalid_file'] = 'Ошибка безопаÑноÑти: Файл который Ð’Ñ‹ загрузили может иметь вредоноÑный код.'; +$lang['warning_file_uploads_disabled'] = 'Ваша ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ PHP запрещает загрузку файлов. Проверьте php.ini перед тем как продолжить.'; +$lang['uploaded_file_too_big'] = 'Файл, который Ð’Ñ‹ загрузили Ñлишком велик. Проверьте php.ini, опцию upload_max_size'; +$lang['uploaded_file_partial'] = 'Файл, который Ð’Ñ‹ выбрали был загружен только чаÑтично, вероÑтно из-за ошибки в Ñети.'; +$lang['max_file_size'] = 'МакÑимальный размер файла: %s'; + +// Updating values +$lang['modification_successful'] = 'Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑƒÑпешно произведены!'; +$lang['change_password_new_login'] = 'Т.к. Ð’Ñ‹ изменили Ñвой пароль, Ð’Ñ‹ должны войти заново, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñвой новый пароль.'; // Adding objectClass form -$lang['new_required_attrs'] = 'Ðовые запрошеные параметры';// 'New Required Attributes'; -$lang['requires_to_add'] = 'Это дейÑтвие запрошено вами к добавлению';//'This action requires you to add'; -$lang['new_attributes'] = 'новые атрибуты';//'new attributes'; -$lang['new_required_attrs_instructions'] = 'Instructions: In order to add this objectClass to this entry, you must specify'; -$lang['that_this_oclass_requires'] = 'that this objectClass requires. You can do so in this form.'; -$lang['add_oclass_and_attrs'] = 'И ObjectClass и Attributes';//'Add ObjectClass and Attributes'; +$lang['new_required_attrs'] = 'Ðовые требуемые атрибуты'; +$lang['requires_to_add'] = 'Это дейÑтвие требует добавить'; +$lang['new_attributes'] = 'новые атрибуты'; +$lang['new_required_attrs_instructions'] = 'ИнÑтрукциÑ: Чтобы добавить Ñтот объект к Ñтой запиÑи, Ð’Ñ‹ должны указать'; +$lang['that_this_oclass_requires'] = 'что требует Ñтот объект. Ð’Ñ‹ можете Ñто Ñделать в Ñтой форме.'; +$lang['add_oclass_and_attrs'] = 'Добавить объект и атрибуты'; +$lang['objectclasses'] = 'Объекты'; // General -$lang['chooser_link_tooltip'] = 'Click to popup a dialog to select an entry (DN) graphically'; -$lang['no_updates_in_read_only_mode'] = 'You cannot perform updates while server is in read-only mode'; -$lang['bad_server_id'] = 'Плохой Ñервера id';//'Bad server id'; -$lang['not_enough_login_info'] = 'Ðе доÑтаточно информации Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Ñерверу. ПожалуÑта проверте Вашу конфигулацию.';//'Not enough information to login to server. Please check your configuration.'; -$lang['could_not_connect'] = 'Ðе могу подключитьÑÑ Ðº LDAP Ñервером';//'Could not connect to LDAP server.'; -$lang['could_not_perform_ldap_mod_add'] = 'Could not perform ldap_mod_add operation.'; +$lang['chooser_link_tooltip'] = 'Ðажмите чтобы вызвать диалог Ð´Ð»Ñ Ð²Ð¸Ð·ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ выбора запиÑи(DN)'; +$lang['no_updates_in_read_only_mode'] = 'Ð’Ñ‹ не можете производить Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾ тех пор, пока Ñервер находитÑÑ Ð² режиме "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"'; +$lang['bad_server_id'] = 'Ðеправильный id Ñервера'; +$lang['not_enough_login_info'] = 'ÐедоÑтаточно информации чтобы подключитьÑÑ Ðº Ñерверу. Проверьте Вашу конфигурацию.'; +$lang['could_not_connect'] = 'Ðе могу подключитьÑÑ Ðº LDAP-Ñерверу.'; +$lang['could_not_connect_to_host_on_port'] = 'Ðе могу подключитьÑÑ Ðº "%s" на порт "%s"'; +$lang['could_not_perform_ldap_mod_add'] = 'Ðе удалоÑÑŒ произвеÑти операцию ldap_mod_add.'; +$lang['bad_server_id_underline'] = 'Ðеправильный server_id: '; +$lang['success'] = 'УÑпешно'; +$lang['server_colon_pare'] = 'Сервер: '; +$lang['look_in'] = 'Ищу в: '; +$lang['missing_server_id_in_query_string'] = 'Ðе указан ID Ñервера в Ñтроке запроÑа!'; +$lang['missing_dn_in_query_string'] = 'Ðе указан DN в Ñтроке запроÑа!'; +$lang['back_up_p'] = 'Back Up...'; +$lang['no_entries'] = 'нет запиÑей'; +$lang['not_logged_in'] = 'Ðе авторизовалиÑÑŒ'; +$lang['could_not_det_base_dn'] = 'Ðе могу выÑÑнить оÑновной DN'; +$lang['please_report_this_as_a_bug']='ПожалуйÑта Ñообщите об Ñтой ошибке.'; +$lang['reasons_for_error']='Это могло ÑлучитÑÑ Ð¿Ð¾ неÑкольким причинам, наиболее вероÑтные Ñто:'; +$lang['yes']='Да'; +$lang['no']='Ðет'; +$lang['go']='Перейти'; +$lang['delete']='Удалить'; +$lang['back']='Ðазад'; +$lang['object']='объект'; +$lang['delete_all']='Удалить вÑе'; +$lang['url_bug_report']='https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'подÑказка'; +$lang['bug'] = 'ошибка'; +$lang['warning'] = 'предупреждение'; +$lang['light'] = 'Ñвет'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Далее >>'; + // Add value form -$lang['add_new'] = 'Добавить новый';//'Add new'; -$lang['value_to'] = 'Значение к';//'value to'; -$lang['server'] = 'Сервер';//'Server'; -$lang['distinguished_name'] = 'Distinguished Name'; -$lang['current_list_of'] = 'Текущий ÑпиÑок';//'Current list of'; -$lang['values_for_attribute'] = 'значение Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð°';//'values for attribute'; -$lang['inappropriate_matching_note'] = 'Note: You will get an "inappropriate matching" error if you have not
' . - 'setup an EQUALITY rule on your LDAP server for this attribute.'; -$lang['enter_value_to_add'] = 'Enter the value you would like to add:'; -$lang['new_required_attrs_note'] = 'Note: you may be required to enter new attributes
that this objectClass requires.'; -$lang['syntax'] = 'СинтакÑиÑ';//'Syntax'; +$lang['add_new'] = 'Добавить новый'; +$lang['value_to'] = 'значение длÑ'; +$lang['distinguished_name'] = 'Отличительное имÑ'; +$lang['current_list_of'] = 'Текущий ÑпиÑок'; +$lang['values_for_attribute'] = 'значений атрибутов'; +$lang['inappropriate_matching_note'] = 'Внимание: Ð’Ñ‹ получите ошибку "неподходÑщее ÑоответÑтвие", еÑли Ð’Ñ‹ выÑтавили правило "равенÑтво"(EQUALITY) на Вашем LDAP-Ñервере Ð´Ð»Ñ Ñтого атрибута.'; +$lang['enter_value_to_add'] = 'Введите значение, которое Ð’Ñ‹ хотите добавить:'; +$lang['new_required_attrs_note'] = 'Внимание: Вам может потребоватьÑÑ Ð²Ð²ÐµÑти новые атрибуты, которые требует Ñтот объект'; +$lang['syntax'] = 'СинтакÑ'; -// Incomplete or Erroneous Language Files -$lang['attr_name_tooltip'] = 'attr_name_tooltip'; -$lang['refresh_entry']= 'обновить запиÑÑŒ'; -$lang['attr_schema_hint']='атрибут Ñхемы подÑказки'; -$lang['attrs_modified']='атрибуты изменены'; -$lang['attr_modified']='атрибут изменен'; -$lang['name']='имÑ'; -$lang['not_applicable']='не применимый'; -$lang['not_specified']='не орпеделенный'; -$lang['entry_deleted_successfully']='запиÑÑŒ удалена уÑпешно'; -$lang['you_must_specify_a_dn']='вы должны определить DN'; -$lang['could_not_delete_entry']='не возможно удалить запиÑÑŒ'; -$lang['bad_server_id_underline']='неверный id Ñервера подчеркивать'; -$lang['success']='уÑпешно'; -$lang['server_colon_pare']='вырезать двоеточие Ñевера'; -$lang['look_in']='раÑÑматривать'; -$lang['missing_server_id_in_query_string']='отÑутÑвует id Ñервера в Ñтроке запроÑа'; -$lang['missing_dn_in_query_string']='отÑутÑвует dn в Ñтроке запроÑа'; -$lang['back_up_p']='back up p'; -$lang['no_entries']='нет запиÑей'; -$lang['not_logged_in']='не зарагеÑтрирован в'; -$lang['could_not_det_base_dn']='не возможно определить Base DN'; -$lang['copy_server_read_only']='корировать Ñервер только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ'; -$lang['copy_dest_dn_blank']='копировать в раÑположение пуÑтого DN'; -$lang['copy_dest_already_exists']='копировать в раÑположение уже ÑущеÑтвующее'; -$lang['copy_dest_container_does_not_exist']='копировать в раÑположение которое не ÑущеÑтвует'; -$lang['copy_source_dest_dn_same']='копировать Ñ Ð¸Ñходного раÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² тот же DN '; -$lang['copy_copying']='копировать копирование'; -$lang['copy_recursive_copy_progress']='копирование Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ€ÐµÐºÑƒÑ€Ñивного копированиÑ'; -$lang['copy_building_snapshot']='копирование кадра поÑтроение'; -$lang['copy_successful_like_to']='копирование уÑпешно подобно до '; -$lang['copy_view_new_entry']='копирование проÑмотр новых запиÑей'; -$lang['copy_failed']='копирование неудачно'; -$lang['missing_template_file']='нет временого файла'; -$lang['using_default']='иÑпользовать по умолчанию'; -$lang['copyf_title_copy']='копировать заголовок копировать'; -$lang['copyf_to_new_object']='копировать новый объект'; -$lang['copyf_dest_dn']='копировать раÑположение DN'; -$lang['copyf_dest_dn_tooltip']='копировать раÑположение DN toolip'; -$lang['copyf_dest_server']='копировать раÑположение Ñервера'; -$lang['copyf_note']='копировать запиÑку'; -$lang['copyf_recursive_copy']='копирование рекурÑивное копирование'; -$lang['create_required_attribute']='Ñоздать необходимый атрибут'; -$lang['create_redirecting']='Ñоздать переназначение'; -$lang['create_here']='Ñоздать ÑдеÑÑŒ'; -$lang['create_could_not_add']='Ñоздание не может добавление'; -$lang['createf_create_object']='Ñоздать объект'; -$lang['createf_choose_temp']='выбрать шаблон'; -$lang['createf_select_temp']='выбрать шаблон'; -$lang['createf_proceed']='обработаный'; -$lang['ctemplate_on_server']='на Ñервер'; -$lang['ctemplate_no_template']='нет шаблона'; -$lang['ctemplate_config_handler']='Ñкофигурировать инÑтруктора'; -$lang['ctemplate_handler_does_not_exist']='конÑтруктор не ÑущеÑтвует'; -$lang['you_have_not_logged_into_server']='Ð’Ñ‹ не зарегеÑтрировалиÑÑŒ на Ñервере'; -$lang['click_to_go_to_login_form']='нажмите Ð´Ð»Ñ Ñ€ÐµÐ³Ð¸Ñтрации'; -$lang['unrecognized_criteria_option']='неизвеÑна Ð¾Ð¿Ñ†Ð¸Ñ ÐºÑ€Ð¸Ñ‚ÐµÑ€Ð¸Ñ'; -$lang['if_you_want_to_add_criteria']='еÑли Ð’Ñ‹ хотите добавить критерий'; -$lang['entries_found']='запиÑи найдены'; -$lang['filter_performed']='фильтер выполнен'; -$lang['search_duration']='поиÑк длительный'; -$lang['seconds']='Ñекунды'; -$lang['scope_in_which_to_search']='в которой иÑкать'; -$lang['scope_sub']='под'; -$lang['scope_one']='одна облаÑÑ‚ÑŒ'; -$lang['scope_base']='база'; -$lang['standard_ldap_search_filter']='Ñтандартный ldap поиÑковый фильтер'; +//copy.php +$lang['copy_server_read_only'] = 'Ð’Ñ‹ не можете производить Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾ тех пор, пока Ñервер находитÑÑ Ð² режиме "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"'; +$lang['copy_dest_dn_blank'] = 'Ð’Ñ‹ не заполнили конечный DN.'; +$lang['copy_dest_already_exists'] = 'ÐšÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ (%s) уже ÑужеÑтвует.'; +$lang['copy_dest_container_does_not_exist'] = 'Конечный контейнер (%s) не ÑущеÑтвует.'; +$lang['copy_source_dest_dn_same'] = 'ИÑходный и конечный DN одинаковы.'; +$lang['copy_copying'] = 'Сопирую '; +$lang['copy_recursive_copy_progress'] = 'ПрогреÑÑ Ñ€ÐµÐºÑƒÑ€Ñивного копированиÑ'; +$lang['copy_building_snapshot'] = 'Создаю копию ÑоÑтоÑÐ½Ð¸Ñ Ð´ÐµÑ€ÐµÐ²Ð° Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ... '; +$lang['copy_successful_like_to'] = 'Копирование прошло уÑпешно! Ð’Ñ‹ хотите '; +$lang['copy_view_new_entry'] = 'проÑмотреть новую запиÑÑŒ'; +$lang['copy_failed'] = 'Ðе удалоÑÑŒ Ñкопировать DN: '; + +//edit.php +$lang['missing_template_file'] = 'Предупреджение: отÑутÑтвуе файл шаблона, '; +$lang['using_default'] = 'ИÑпользую оÑновной.'; +$lang['template'] = 'Шаблон'; +$lang['must_choose_template'] = 'Ð’Ñ‹ должны выбрать шаблон'; +$lang['invalid_template'] = '%s неверный шаблон'; +$lang['using_template'] = 'иÑпользую шаблон'; +$lang['go_to_dn'] = 'Перейти к %s'; + +//copy_form.php +$lang['copyf_title_copy'] = 'Копировать '; +$lang['copyf_to_new_object'] = 'в новый объект'; +$lang['copyf_dest_dn'] = 'Конечный DN'; +$lang['copyf_dest_dn_tooltip'] = 'Полный DN новой запиÑи будет Ñоздан при копировании иÑходной'; +$lang['copyf_dest_server'] = 'Конечный Ñервер'; +$lang['copyf_note'] = 'ПодÑказка: Копирование между различными Ñерверами Ñработает, еÑли между ними нет противоречий в Ñхемах'; +$lang['copyf_recursive_copy'] = 'РекурÑивно Ñкопировать и вÑех потомков Ñтого объекта.'; +$lang['recursive_copy'] = 'РекурÑивное копирование'; +$lang['filter'] = 'Фильтр'; +$lang['filter_tooltip'] = 'ЕÑли производите рекурÑивное копирование - копируйте только те запиÑи, которые ÑоответÑтвуют Ñтому фильтру'; + +//create.php +$lang['create_required_attribute'] = 'Ð’Ñ‹ оÑтавили пуÑтым значение Ð´Ð»Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ð¾Ð³Ð¾ атрибута (%s).'; +$lang['redirecting'] = 'Переназначаю...'; +$lang['here'] = 'Ñюда'; +$lang['create_could_not_add'] = 'Ðе удалоÑÑŒ добавить объект на LDAP-Ñервер.'; + +//create_form.php +$lang['createf_create_object'] = 'Создать объект'; +$lang['createf_choose_temp'] = 'Выберите шаблон'; +$lang['createf_select_temp'] = 'Выберите шаблон Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°'; +$lang['createf_proceed'] = 'Далее'; +$lang['rdn_field_blank'] = 'Ð’Ñ‹ оÑтавили RDN поле пуÑтым.'; +$lang['container_does_not_exist'] = 'Контейнер, который Ð’Ñ‹ указали (%s) не ÑущеÑтвует. Попробуйте еще раз.'; +$lang['no_objectclasses_selected'] = 'Ð’Ñ‹ не выбрали ни одного клаÑÑа Ð´Ð»Ñ Ñтого объекта. ВернитеÑÑŒ и Ñделайте Ñто.'; +$lang['hint_structural_oclass'] = 'ПодÑказка: Ð’Ñ‹ должны выбрать как минимум один Ñтруктурный клаÑÑ'; + +//creation_template.php +$lang['ctemplate_on_server'] = 'Ðа Ñервере'; +$lang['ctemplate_no_template'] = 'Ð’ POST переменных не указан шаблон.'; +$lang['ctemplate_config_handler'] = 'Ваша ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ обработчик'; +$lang['ctemplate_handler_does_not_exist'] = 'Ð´Ð»Ñ Ñтого шаблона. Ðо Ñтот обработчик не ÑущеÑтвует в каталоге templates/creation.'; +$lang['create_step1'] = 'Шаг 1 из 2: Ð˜Ð¼Ñ Ð¸ клаÑÑ(Ñ‹) объекта'; +$lang['create_step2'] = 'Шаг 2 из 2: Определение атрибутов и значений'; +$lang['relative_distinguished_name'] = 'ОтноÑительное оттличительное имÑ'; +$lang['rdn'] = 'RDN'; +$lang['rdn_example'] = '(пример: cn=MyNewPerson)'; +$lang['container'] = 'Контейнер'; +$lang['alias_for'] = 'ÐÐ»Ð¸Ð°Ñ Ð´Ð»Ñ %s'; + +// search.php +$lang['you_have_not_logged_into_server'] = 'Ð’Ñ‹ еще на вошли на выбранный Ñервер, поÑтому Ð’Ñ‹ не можете производить на нем поиÑк.'; +$lang['click_to_go_to_login_form'] = 'Ðажмите здеÑÑŒ чтобы перейти на форму входа на Ñервер'; +$lang['unrecognized_criteria_option'] = 'ÐераÑпознанный критерий поиÑка: '; +$lang['if_you_want_to_add_criteria'] = 'ЕÑли Ð’Ñ‹ хотите добавить Ñвои критерии поиÑка в ÑпиÑок, отредактируйте search.php, чтобы они поддерживалиÑÑŒ. Выхожу.'; +$lang['entries_found'] = 'Ðайдено запиÑей: '; +$lang['filter_performed'] = 'Применен фильтр: '; +$lang['search_duration'] = 'phpLDAPadmin произвел поиÑк за'; +$lang['seconds'] = 'Ñекунд'; + +// search_form_advanced.php +$lang['scope_in_which_to_search'] = 'ОблаÑÑ‚ÑŒ поиÑка'; +$lang['scope_sub'] = 'Ð’Ñе (вÑе поддерево)'; +$lang['scope_one'] = 'Один (один уровень под базовым)'; +$lang['scope_base'] = 'База (только базовый dn)'; +$lang['standard_ldap_search_filter'] = 'Стандартный фильтр поиÑка LDAP. Пример: (&(sn=Smith)(givenname=David))'; $lang['search_filter'] = 'Фильтр поиÑка'; -$lang['list_of_attrs_to_display_in_results']='ÑпиÑок атрибутов показать в результате'; -$lang['starts with'] = 'начинаетÑÑ Ñ';//'starts with'; -$lang['ends with'] = 'заканчиваетÑÑ Ð½Ð°';//'ends with'; -$lang['sounds like']='звучит подобно'; -$lang['could_not_fetch_server_info']='не могу получить информацию Ñ Ñервера'; -$lang['server_info_for']='инфа Ñервера длÑ'; -$lang['server_reports_following']='отчет Ñервера Ñледует'; -$lang['nothing_to_report']='нечего показать Ð´Ð»Ñ Ð¾Ñ‚Ñ‡ÐµÑ‚Ð°'; -$lang['update_array_malformed']='update_array_malformed'; -$lang['could_not_perform_ldap_modify']='Ð½ÐµÐ»ÑŒÐ·Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ изменение ldap'; -$lang['do_you_want_to_make_these_changes']='хотите Ñделать Ñти изменениÑ'; -$lang['attribute']='атрибут'; -$lang['old_value']='Ñтарое значение'; -$lang['new_value']='новое значение'; -$lang['attr_deleted']='атрибут удален'; -$lang['commit']='подтвердить'; -$lang['cancel']='отменить'; -$lang['you_made_no_changes']='Ð’Ñ‹ ничего не изменили '; -$lang['go_back']='назад'; -$lang['welcome_note']='ИÑпользуйте меню Ñлева Ð´Ð»Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ð¸'; -$lang['unsafe_file_name']='ненадежное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°'; -$lang['no_such_file']='нет такого файла'; -$lang['auto_update_not_setup']='авто-обновление не уÑтанавливать'; -$lang['uidpool_not_set']='uidpool не указан'; -$lang['uidpool_not_exist']='uidpool не ÑущеÑтвует'; -$lang['specified_uidpool']='определите uidpool'; -$lang['auto_uid_invalid_value']='auto uid неправильное значение'; -$lang['error_auth_type_config']='error_auth_type_config'; -$lang['php_install_not_supports_tls']='уÑтановленый PHP не поддерживает tls'; -$lang['could_not_start_tls']='Ð½ÐµÐ»ÑŒÐ·Ñ Ð½Ð°Ñ‡Ð°Ñ‚ÑŒ tls'; -$lang['auth_type_not_valid']='тип авторизации не правильный'; -$lang['ldap_said']='ldap Ñказал'; -$lang['ferror_error']='ошибка'; -$lang['fbrowse']='проÑмотреть'; -$lang['delete_photo']='удалить фото'; -$lang['install_not_support_blowfish']='уÑтановка не поддерживает blowfish'; -$lang['install_no_mash']='install_no_mash'; -$lang['jpeg_contains_errors']='jpeg Ñодержит ошибки'; -$lang['ferror_number']='номер ошибки'; -$lang['ferror_discription']='ошибка опиÑаниÑ'; -$lang['ferror_number_short']='чиÑло короткое'; -$lang['ferror_discription_short']='опиÑание короткое'; -$lang['ferror_submit_bug']='подтвердите баг'; -$lang['ferror_unrecognized_num']='неивеÑный номер ошибки '; -$lang['ferror_nonfatil_bug']='не Ñ„Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°'; -$lang['ferror_congrats_found_bug']='поздравление нашедшим баг'; +$lang['list_of_attrs_to_display_in_results'] = 'СпиÑок атрибутов, которые отображать в результатах (разделенные запÑтыми)'; +$lang['show_attributes'] = 'Показать атрибуты'; + +// search_form_simple.php +$lang['search_for_entries_whose'] = 'ИÑкать запиÑи, которые:'; +$lang['equals'] = 'равны'; +$lang['starts with'] = 'начинаютÑÑ Ñ'; +$lang['contains'] = 'Ñодержат'; +$lang['ends with'] = 'заканчиваютÑÑ Ð½Ð°'; +$lang['sounds like'] = 'похожи на'; + +// server_info.php +$lang['could_not_fetch_server_info'] = 'Ðе могу получить LDAP-информацию Ñ Ñервера'; +$lang['server_info_for'] = 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ Ñервере: '; +$lang['server_reports_following'] = 'Сервер Ñообщил о Ñебе Ñледующую информацию'; +$lang['nothing_to_report'] = 'Этому Ñерверу нечего о Ñебе Ñообщить.'; + +//update.php +$lang['update_array_malformed'] = 'неправильно Ñформирован update_array. Возможно Ñто ошибка phpLDAPadmin. Сообщите о ней.'; +$lang['could_not_perform_ldap_modify'] = 'Ðе удалоÑÑŒ произвеÑти операцию ldap_modify.'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'Ð’Ñ‹ дейÑтвительно хотите произвеÑти Ñти изменениÑ?'; +$lang['attribute'] = 'Ðтрибут'; +$lang['old_value'] = 'Старое значение'; +$lang['new_value'] = 'Ðовое значение'; +$lang['attr_deleted'] = '[атрибут удален]'; +$lang['commit'] = 'Подтвердить'; +$lang['cancel'] = 'Отменить'; +$lang['you_made_no_changes'] = 'Ð’Ñ‹ не Ñделали никаких изменений'; +$lang['go_back'] = 'ВернутьÑÑ'; + +// welcome.php +$lang['welcome_note'] = 'ИÑпользуйте меню Ñлева Ð´Ð»Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ð¸'; +$lang['credits'] = 'Создатели'; +$lang['changelog'] = 'СпиÑок изменений'; +$lang['donate'] = 'СпонÑировать'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = 'ÐебезопаÑтное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°: '; +$lang['no_such_file'] = 'Ðет такого файла: '; + +//function.php +$lang['auto_update_not_setup'] = 'Ð’Ñ‹ разрешили auto_uid_numbers Ð´Ð»Ñ %s в Вашей конфигурации, + но Ð’Ñ‹ не указали auto_uid_number_mechanism. ПожалуйÑта иÑправьте Ñту проблему.'; +$lang['uidpool_not_set'] = 'Ð’Ñ‹ указали "auto_uid_number_mechanism" как "uidpool" + в Вашей конфигурации Ð´Ð»Ñ Ñервера %s, но не указали + audo_uid_number_uid_pool_dn. ИÑправьте Ñто перед тем как продолжить.'; +$lang['uidpool_not_exist'] = 'Похоже что uidPool, который Ð’Ñ‹ указали в Вашей конфигурации ("%s") + не ÑущеÑтвует.'; +$lang['specified_uidpool'] = 'Ð’Ñ‹ указали "auto_uid_number_mechanism" как "search" в Вашей кофигурации + Ð´Ð»Ñ Ñервера %s, но не указали + "auto_uid_number_search_base". ИÑправьте Ñто перед тем как продолжить.'; +$lang['auto_uid_invalid_credential'] = 'Ðе могу привÑзатьÑÑ Ðº %s Ñ Ð’Ð°ÑˆÐ¸Ð¼Ð¸ auto_uid данными. Проверьте Ваш файл конфигурации.'; +$lang['bad_auto_uid_search_base'] = 'Ð’ Вашей конфигурации phpLDAPadmin указано неверное значение Ð´Ð»Ñ auto_uid_search_base Ð´Ð»Ñ Ñервера %s'; +$lang['auto_uid_invalid_value'] = 'Ð’Ñ‹ указали неверное значение Ð´Ð»Ñ auto_uid_number_mechanism ("%s") + в Вашей конфигурации. Возможны только "uidpool" и "search". + ПожалуйÑта иÑправьте Ñту проблему.'; +$lang['error_auth_type_config'] = 'Ошибка: Ð’ Вашем конфигурационном файле ошибка. ЕдинÑтвенные три допуÑтимых Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ + Ð´Ð»Ñ auth_type в Ñекции $servers - \'session\', \'cookie\', и \'config\'. Ð’Ñ‹ ввели \'%s\', + что недопуÑтимо. '; +$lang['php_install_not_supports_tls'] = 'Ваша уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ PHP не поддерживает TLS.'; +$lang['could_not_start_tls'] = 'Ðе могу запуÑтить TLS. Проверьте конфигурацию Вашего LDAP-Ñервера.'; +$lang['could_not_bind_anon'] = 'Ðе могу анонимно привÑзатьÑÑ Ðº Ñерверу.'; +$lang['could_not_bind'] = 'Ðе удалоÑÑŒ привÑзатьÑÑ Ðº LDAP-Ñерверу.'; +$lang['anonymous_bind'] = 'ÐÐ½Ð¾Ð½Ð¸Ð¼Ð½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка'; +$lang['bad_user_name_or_password'] = 'Ðеверное Ð¸Ð¼Ñ Ð¸Ð»Ð¸ пароль. Попробуйте еще раз.'; +$lang['redirecting_click_if_nothing_happens'] = 'ПеренапрÑвлÑÑŽ... Ðажмите здеÑÑŒ, еÑли ничего не проиÑходит.'; +$lang['successfully_logged_in_to_server'] = 'УÑпешно вошли на Ñервер %s'; +$lang['could_not_set_cookie'] = 'Ðе удалоÑÑŒ уÑтановить cookie.'; +$lang['ldap_said'] = 'LDAP ответил: %s'; +$lang['ferror_error'] = 'Ошибка'; +$lang['fbrowse'] = 'проÑмотр'; +$lang['delete_photo'] = 'Удалить фотографию'; +$lang['install_not_support_blowfish'] = 'Ваша уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ PHP не поддерживает шифрование blowfish.'; +$lang['install_not_support_md5crypt'] = 'Ваша уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ PHP не поддерживает шифрование md5crypt.'; +$lang['install_no_mash'] = 'Ваша уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ PHP не имеет функцию mhash(). Ðе могу Ñоздать Ñ…Ñши SHA.'; +$lang['jpeg_contains_errors'] = 'jpegPhoto Ñодержит ошибки
'; +$lang['ferror_number'] = 'Ðомер ошибки: %s (%s)'; +$lang['ferror_discription'] = 'ОпиÑание: %s

'; +$lang['ferror_number_short'] = 'Ðомер ошибки: %s

'; +$lang['ferror_discription_short'] = 'ОпиÑание: (нет опиÑаниÑ)
'; +$lang['ferror_submit_bug'] = 'ЕÑли Ñто ошибка phpLDAPadmin - пожалуйÑта, Ñообщите о ней.'; +$lang['ferror_unrecognized_num'] = 'ÐераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: '; +$lang['ferror_nonfatil_bug'] = '
+
+ Вы нашли нефатальную ошибку phpLDAPadmin!
Ошибка:%s (%s)
Файл:%s Ñтрока %s, вызвано %s
ВерÑии:PLA: %s, PHP: %s, SAPI: %s +
Web Ñервер:%s
+ Сообщите об Ñтой ошибке нажав здеÑÑŒ.

'; +$lang['ferror_congrats_found_bug'] = 'ПоздравлÑем! Ð’Ñ‹ нашли ошибку в phpLDAPadmin.

+ + + + + + + + + + +
Ошибка:%s
Уровень:%s
Файл:%s
Строка:%s
Вызвано:%s
PLA ВерÑиÑ:%s
PHP ВерÑиÑ:%s
PHP SAPI:%s
Web Ñервер:%s
+
+ Сообщите об Ñтой ошибке нажав ниже!'; + +//ldif_import_form +$lang['import_ldif_file_title'] = 'Иморт LDIF файла'; +$lang['select_ldif_file'] = 'Выберите LDIF файл:'; +$lang['select_ldif_file_proceed'] = 'Далее >>'; +$lang['dont_stop_on_errors'] = 'Ðе оÑтанавливатьÑÑ Ð½Ð° ошибках'; + +//ldif_import +$lang['add_action'] = 'ДобавлÑÑŽ...'; +$lang['delete_action'] = 'УдалÑÑŽ...'; +$lang['rename_action'] = 'Переименовываю...'; +$lang['modify_action'] = 'ИзменÑÑŽ...'; +$lang['warning_no_ldif_version_found'] = 'Ðе найдено номера верÑии. Предполагаю 1.'; +$lang['valid_dn_line_required'] = 'ТребуетÑÑ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñтрока Ñ dn.'; +$lang['missing_uploaded_file'] = 'ОтÑутÑтвует загруженный файл.'; +$lang['no_ldif_file_specified.'] = 'не указан LDIF файл. Попробуйте еще раз.'; +$lang['ldif_file_empty'] = 'Загруженный LDIF файл пуÑÑ‚.'; +$lang['empty'] = 'пуÑÑ‚'; +$lang['file'] = 'Файл'; +$lang['number_bytes'] = '%s байт'; + +$lang['failed'] = 'Ðе удалоÑÑŒ'; +$lang['ldif_parse_error'] = 'Ошибка интерпретации LDIF файла'; +$lang['ldif_could_not_add_object'] = 'Ðе удалоÑÑŒ добавить объект:'; +$lang['ldif_could_not_rename_object'] = 'Ðе удалоÑÑŒ переименовать объект:'; +$lang['ldif_could_not_delete_object'] = 'Ðе удалоÑÑŒ удалить объект:'; +$lang['ldif_could_not_modify_object'] = 'Ðе удалоÑÑŒ изменить объект:'; +$lang['ldif_line_number'] = 'Ðомер Ñтроки:'; +$lang['ldif_line'] = 'Строка:'; + +// Exports +$lang['export_format'] = 'Формат ÑкÑпорта'; +$lang['line_ends'] = 'Конец Ñтроки'; +$lang['must_choose_export_format'] = 'Ð’Ñ‹ должны выбрать формат ÑкÑпорта.'; +$lang['invalid_export_format'] = 'Ðеверный формат ÑкÑпорта'; +$lang['no_exporter_found'] = 'Ðет доÑтупных ÑкÑпортеров.'; +$lang['error_performing_search'] = 'Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка.'; +$lang['showing_results_x_through_y'] = 'Показываю результаты Ñ %s по %s.'; +$lang['searching'] = 'ПоиÑк...'; +$lang['size_limit_exceeded'] = 'Внимание, превышен размер поиÑка.'; +$lang['entry'] = 'ЗапиÑÑŒ'; +$lang['ldif_export_for_dn'] = 'LDIF ÑкÑпорт длÑ: %s'; +$lang['generated_on_date'] = 'Сгенерировано phpLDAPadmin %s'; +$lang['total_entries'] = 'Ð’Ñего запиÑей'; +$lang['dsml_export_for_dn'] = 'DSLM ÑкÑпорт длÑ: %s'; + +// logins +$lang['could_not_find_user'] = 'Ðе могу найти Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ "%s"'; +$lang['password_blank'] = 'Ð’Ñ‹ не ввели пароль.'; +$lang['login_cancelled'] = 'Вход отменен.'; +$lang['no_one_logged_in'] = 'Ðа Ñтом Ñервере ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ð¸ÐºÐ¾Ð³Ð¾ нет.'; +$lang['could_not_logout'] = 'Ðе удалоÑÑŒ выйти.'; +$lang['unknown_auth_type'] = 'ÐеизвеÑтный auth_type: %s'; +$lang['logged_out_successfully'] = 'УÑпешно вышли Ñ Ñервера %s'; +$lang['authenticate_to_server'] = 'ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° Ñервере %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Предупреждение: Это web-Ñоединение нешифровано.'; +$lang['not_using_https'] = 'Ð’Ñ‹ не иÑпользуете \'https\'. Web-браузер передает авторизационные данные открытым текÑтом.'; +$lang['login_dn'] = 'Login DN'; +$lang['user_name'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ'; +$lang['password'] = 'Пароль'; +$lang['authenticate'] = 'ÐвотризациÑ'; + +// Entry browser +$lang['entry_chooser_title'] = 'Выбор запиÑи'; + +// Index page +$lang['need_to_configure'] = 'Вам надо Ñконфигурировать phpLDAPadmin. Отредактируйте файл \'config.php\'. Примерный файл наÑтроек - \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Удаление невозможно в режиме "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ".'; +$lang['error_calling_mass_delete'] = 'Ошибка вызова mass_delete.php. ОтÑутÑтвует mass_delete в POST переменных.'; +$lang['mass_delete_not_array'] = 'POST Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ mass_delete не в маÑÑиве.'; +$lang['mass_delete_not_enabled'] = 'МаÑÑовое удаление не разрешено. ИÑпровьте Ñто в config.php перед тем как продолжить.'; +$lang['mass_deleting'] = 'МаÑÑовое удаление'; +$lang['mass_delete_progress'] = 'ПрогреÑÑ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð½Ð° Ñервере "%s"'; +$lang['malformed_mass_delete_array'] = 'Ðеправильно Ñформированный маÑÑив mass_delete.'; +$lang['no_entries_to_delete'] = 'Ð’Ñ‹ не выбрали ни одной запиÑи Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ.'; +$lang['deleting_dn'] = 'УдалÑÑŽ %s'; +$lang['total_entries_failed'] = 'Ðе удалоÑÑŒ удалить %s из %s запиÑей.'; +$lang['all_entries_successful'] = 'Ð’Ñе запиÑи уÑпешно удалены.'; +$lang['confirm_mass_delete'] = 'Подтвердите маÑÑовое удаление %s запиÑей на Ñервере %s'; +$lang['yes_delete'] = 'Да, удалить!'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Ð’Ñ‹ не можете переименовать запиÑÑŒ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¸Ð¼ÐµÐµÑ‚ потомков (Ñ‚.е., Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ допуÑтима Ð´Ð»Ñ Ð´ÐµÑ€ÐµÐ²Ð°)'; +$lang['no_rdn_change'] = 'Ð’Ñ‹ не изменили RDN'; +$lang['invalid_rdn'] = 'Ðеверное значение RDN'; +$lang['could_not_rename'] = 'Ðе удалоÑÑŒ переименовать запиÑÑŒ'; ?> diff --git a/lang/recoded/sv.php b/lang/recoded/sv.php new file mode 100644 index 0000000..32b9e91 --- /dev/null +++ b/lang/recoded/sv.php @@ -0,0 +1,387 @@ + + * based on 0.9.3 Version + +*/ + +// Search form +$lang['simple_search_form_str'] = 'Enkel sökning';//'Simple Search Form'; +$lang['advanced_search_form_str'] = 'Expertsökning';//'Advanced Search Form'; +$lang['server'] = 'Server';//'Server'; +$lang['search_for_entries_whose'] = 'Sök efter rader som';//'Search for entries whose'; +$lang['base_dn'] = 'Base DN';//'Base DN'; +$lang['search_scope'] = 'SökomfÃ¥ng';//Search Scope'; +$lang['search_ filter'] = 'Sökfilter';//'Search Filter'; +$lang['show_attributes'] = 'Visa attribut';//'Show Attributtes'; +$lang['Search'] = 'Sök';// 'Search'; +$lang['equals'] = 'lika med';//'equals'; +$lang['starts_with'] = 'Börjar med';//'starts with'; +$lang['contains'] = 'innehÃ¥ller';//'contains'; +$lang['ends_with'] = 'slutar med';//'ends with'; +$lang['sounds_like'] = 'lÃ¥ter som';//'sounds like'; + +// Tree browser +$lang['request_new_feature'] = 'Begär en ny funktion';//'Request a new feature'; +$lang['see_open_requests'] = 'Se öppna förfrÃ¥gningar';//'see open requests'; +$lang['report_bug'] = 'Rapportera ett fel';//'Report a bug'; +$lang['see_open_bugs'] = 'Se öppna felrapporter';//'see open bugs'; +$lang['schema'] = 'schema';//'schema'; +$lang['search'] = 'sökning';//'search'; +$lang['create'] = 'skapa';//'create'; +$lang['info'] = 'information';//'info'; +$lang['import'] = 'importera';//'import'; +$lang['refresh'] = 'uppdatera';//'refresh'; +$lang['logout'] = 'logga ut';//'logout'; +$lang['create_new'] = 'Skapa ny';//'Create New'; +$lang['view_schema_for'] = 'Titta pÃ¥ schema för';//'View schema for'; +$lang['refresh_expanded_containers'] = 'Uppdatera alla öpnna behÃ¥llare för';//'Refresh all expanded containers for'; +$lang['create_new_entry_on'] = 'Skapa en ny post för';//'Create a new entry on'; +$lang['view_server_info'] = 'Titta pÃ¥ information som servern tillhandahÃ¥llit';//'View server-supplied information'; +$lang['import_from_ldif'] = 'Importera rader frÃ¥n LDIF file';//'Import entries from an LDIF file'; +$lang['logout_of_this_server'] = 'Logga ut frÃ¥n den här servern';//'Logout of this server'; +$lang['logged_in_as'] = '/Inloggad som';//'Logged in as: '; +$lang['read_only'] = 'Enbart läsning';//'read only'; +$lang['could_not_determine_root'] = 'Kan inte bestämma roten för ditt LDAP träd';//'Could not determine the root of your LDAP tree.'; +$lang['ldap_refuses_to_give_root'] = 'Det ser ut som om LDAP-servern har konfigurerats att inte avslöja sin rot.';//'It appears that the LDAP server has been configured to not reveal its root.'; +$lang['please_specify_in_config'] = 'Var snäll och specificera i config.php';//'Please specify it in config.php'; +$lang['create_new_entry_in'] = 'Skapa en ny post i';//'Create a new entry in'; +$lang['login_link'] = 'Logga in...';//'Login...'; + +// Entry display +$lang['delete_this_entry'] = 'Ta bort den här posten';//'Delete this entry'; +$lang['delete_this_entry_tooltip'] = 'Du kommer att bli tillfrÃ¥gad för att konfirmera det här beslutet';//'You will be prompted to confirm this decision'; +$lang['copy_this_entry'] = 'Kopiera den här posten';//'Copy this entry'; +$lang['copy_this_entry_tooltip'] = 'Kopiera det här objektet till en annan plats, ett nytt DN, eller en annan server';//'Copy this object to another location, a new DN, or another server'; +$lang['export_to_ldif'] = 'Exportera till LDIF';//'Export to LDIF'; +$lang['export_to_ldif_tooltip'] = 'Spara en LDIF kopia av detta objekt';//'Save an LDIF dump of this object'; +$lang['export_subtree_to_ldif_tooltip'] = 'Spara en LDIF kopia av detta objekt och alla dess underobjekt';//'Save an LDIF dump of this object and all of its children'; +$lang['export_subtree_to_ldif'] = 'Exportera subträdet till LDIF';//'Export subtree to LDIF'; +$lang['export_to_ldif_mac'] = 'Radslut enligt Macintosh-standard';// 'Macintosh style line ends'; +$lang['export_to_ldif_win'] = 'Radslut enligt Windows-standard';//'Windows style line ends'; +$lang['export_to_ldif_unix'] = 'Radslut enligt Unix-standard';//'Unix style line ends'; +$lang['create_a_child_entry'] = 'Skapa en subpost';//'Create a child entry'; +$lang['add_a_jpeg_photo'] = 'Lägg till ett JPEG-foto';//'Add a jpegPhoto'; +$lang['rename_entry'] = 'Döp om posten';//'Rename Entry'; +$lang['rename'] = 'Döp om ';//'Rename'; +$lang['add'] = 'Lägg till';//'Add'; +$lang['view'] = 'Titta';//'View'; +$lang['add_new_attribute'] = 'Lägg till ett nytt attribut';//'Add New Attribute'; +$lang['add_new_attribute_tooltip'] = 'Lägg till ett nytt attribut/värde till denna post';//'Add a new attribute/value to this entry'; +$lang['internal_attributes'] = 'Interna attribut';//'Internal Attributes'; +$lang['hide_internal_attrs'] = 'Göm interna attribut';//'Hide internal attributes'; +$lang['show_internal_attrs'] ='Visa interna attribut';// 'Show internal attributes'; +$lang['internal_attrs_tooltip'] = 'Attribut som sätts automatiskt av systemet';//'Attributes set automatically by the system'; +$lang['entry_attributes'] = 'IngÃ¥ngsattribut';//'Entry Attributes'; +$lang['attr_name_tooltip'] = 'Klicka för att titta pÃ¥ schemadefinitionen för attributtyp \'%s\'';//'Click to view the schema defintion for attribute type \'%s\''; +$lang['click_to_display'] = 'klicka\'+\' för att visa';// 'click \'+\' to display'; +$lang['hidden'] = 'gömda';//'hidden'; +$lang['none'] = 'inget';//'none'; +$lang['save_changes'] = 'Spara ändringar';//'Save Changes'; +$lang['add_value'] = 'lägg till värde';//'add value'; +$lang['add_value_tooltip'] = 'Lägg till ett ytterligare värde till attribut \'%s\''; // 'Add an additional value to attribute \'%s\''; +$lang['refresh_entry'] = 'Uppdatera';//'Refresh'; +$lang['refresh_this_entry'] = 'Uppdatera denna post';//'Refresh this entry'; +$lang['delete_hint'] = 'Tips: För att ta bort ett attribut, ta bort all text i textfältet och klicka \'Spara ändringar\'.'; 'Hint: To delete an attribute, empty the text field and click save.'; +$lang['attr_schema_hint'] = 'Tips: För att titta pÃ¥ ett attributs schema, klicka pÃ¥ attributnamnet';//'Hint: To view the schema for an attribute, click the attribute name.'; +$lang['attrs_modified'] = 'NÃ¥gra attribut var ändrade och är markerade nedan.';//'Some attributes (%s) were modified and are highlighted below.'; +$lang['attr_modified'] = 'Ett attribut var ändrat och är markerat nedan.';//An attribute (%s) was modified and is highlighted below.'; +$lang['viewing_read_only'] = 'Titta pÃ¥ en post med enbart lästiilstÃ¥nd';//'Viewing entry in read-only mode.'; +$lang['change_entry_rdn'] = 'ändra denna posts RDN';//'Change this entry\'s RDN'; +$lang['no_new_attrs_available'] = 'inga nya attribut tillgängliga för denna post';//'no new attributes available for this entry'; +$lang['binary_value'] = 'Binärt värde';//'Binary value'; +$lang['add_new_binary_attr'] = 'Lägg till nytt binärt attribut';//'Add New Binary Attribute'; +$lang['add_new_binary_attr_tooltip'] = 'Lägg till nytt binärt attribut/värde frÃ¥n en fil';//'Add a new binary attribute/value from a file'; +$lang['alias_for'] = 'Observera: \'%s\' är ett alias for \'%s\'';//'Note: \'%s\' is an alias for \'%s\''; +$lang['download_value'] = 'ladda ner värde';//'download value'; +$lang['delete_attribute'] = 'ta bort attribut';//'delete attribute'; +$lang['true'] = 'Sant';//'true'; +$lang['false'] = 'Falskt';//'false'; +$lang['none_remove_value'] = 'inget, ta bort värdet';//'none, remove value'; +$lang['really_delete_attribute'] = 'Ta definitivt bort värdet';//'Really delete attribute'; + +// Schema browser +$lang['the_following_objectclasses'] = 'Följande objektklasser stöds av denna LDAP server.';//'The following objectClasses are supported by this LDAP server.'; +$lang['the_following_attributes'] = 'Följande attributtyper stöds av denna LDAP server.';//'The following attributeTypes are supported by this LDAP server.'; +$lang['the_following_matching'] = 'Följande matchningsregler stöds av denna LDAP server.';//'The following matching rules are supported by this LDAP server.'; +$lang['the_following_syntaxes'] = 'Följande syntax stöds av denna LDAP server.';//'The following syntaxes are supported by this LDAP server.'; +$lang['jump_to_objectclass'] = 'Välj en objectClass';//'Jump to an objectClass'; +$lang['jump_to_attr'] = 'Välj en attributtyp';//'Jump to an attribute type'; +$lang['schema_for_server'] = 'Schema för servern';//'Schema for server'; +$lang['required_attrs'] = 'Nödvändiga attribut';//'Required Attributes'; +$lang['optional_attrs'] = 'Valfria attribut';//'Optional Attributes'; +$lang['OID'] = 'OID';//'OID'; +$lang['desc'] = 'Beskrivning';//'Description'; +$lang['name'] = 'Namn';//'Name'; +$lang['is_obsolete'] = 'Denna objectClass är förÃ¥ldrad';//'This objectClass is obsolete'; +$lang['inherits'] = 'ärver';//'Inherits'; +$lang['jump_to_this_oclass'] = 'GÃ¥ till definitionen av denna objectClass';//'Jump to this objectClass definition'; +$lang['matching_rule_oid'] = 'Matchande regel-OID';//'Matching Rule OID'; +$lang['syntax_oid'] = 'Syntax-OID';//'Syntax OID'; +$lang['not_applicable'] = 'inte tillämplig';//'not applicable'; +$lang['not_specified'] = 'inte specificerad';//'not specified'; + +// Deleting entries +$lang['entry_deleted_successfully'] = 'Borttagning av posten \'%s\' lyckades';//'Entry \'%s\' deleted successfully.'; +$lang['you_must_specify_a_dn'] = 'Du mÃ¥ste specificera ett DN';//'You must specify a DN'; +$lang['could_not_delete_entry'] = 'Det gick inte att ta bort posten';//'Could not delete the entry: %s'; + +// Adding objectClass form +$lang['new_required_attrs'] = 'Nya nödvändiga attribut';//'New Required Attributes'; +$lang['requires_to_add'] = 'Den här Ã¥tgärden kräver att du lägger till';//'This action requires you to add'; +$lang['new_attributes'] = 'nya attribut';//'new attributes'; +$lang['new_required_attrs_instructions'] = 'Instruktioner: För att kunna lägga till objektklassen till denna post, mÃ¥ste du specificera';//'Instructions: In order to add this objectClass to this entry, you must specify'; +$lang['that_this_oclass_requires'] = 'att objektklassen kräver. Det kan göras i detta formulär.';//'that this objectClass requires. You can do so in this form.'; +$lang['add_oclass_and_attrs'] = 'Lägg till objektklass och attribut';//'Add ObjectClass and Attributes'; + +// General +$lang['chooser_link_tooltip'] = 'Klicka för att öppna ett fönster för att välja ett grafiskt.';//'Click to popup a dialog to select an entry (DN) graphically'; +$lang['no_updates_in_read_only_mode'] = 'Du kan inte göra uppdateringar medan servern är i lästillstÃ¥nd';//'You cannot perform updates while server is in read-only mode'; +$lang['bad_server_id'] = 'Felaktigt server-id';//'Bad server id'; +$lang['not_enough_login_info'] = 'Det saknas information för att logga in pÃ¥ servern. Var vänlig och kontrollera din konfiguration.';//'Not enough information to login to server. Please check your configuration.'; +$lang['could_not_connect'] = 'Det gick inte att ansluta till LDAP-servern.';//'Could not connect to LDAP server.'; +$lang['could_not_perform_ldap_mod_add'] = 'Det gick inte att utföra ldap_mod_add operationen.';//''Could not perform ldap_mod_add operation.'; +$lang['bad_server_id_underline'] = 'Felaktigt server_id';//'Bad server_id: '; +$lang['success'] = 'Det lyckades';//'Success'; +$lang['server_colon_pare'] = 'Server';//'Server: '; +$lang['look_in'] = 'Tittar in';//'Looking in: '; +$lang['missing_server_id_in_query_string'] = 'Inget server-ID specificerat i frÃ¥gesträgen!';//'No server ID specified in query string!'; +$lang['missing_dn_in_query_string'] = 'Inget DN specificerat i frÃ¥gesträgen!';//'No DN specified in query string!'; +$lang['back_up_p'] = 'Tillbaka';//'Back Up...'; +$lang['no_entries'] = 'inga poster';//'no entries'; +$lang['not_logged_in'] = 'Inte inloggad';//'Not logged in'; +$lang['could_not_det_base_dn'] = 'Det gick inte att bestämma \'base DN\'';//'Could not determine base DN'; + +// Add value form +$lang['add_new'] = 'Lägg till nytt';//'Add new'; +$lang['value_to'] = 'värde till';//'value to'; +$lang['distinguished_name'] = 'Distinguished Name';//'Distinguished Name'; +$lang['current_list_of'] = 'Aktuell lista av';//'Current list of'; +$lang['values_for_attribute'] = 'attributvärden';//'values for attribute'; +$lang['inappropriate_matching_note'] = 'Observera: Du kommer att fÃ¥ ett \'inappropriate matching\'-fel om du inte har
' . + 'satt upp en EQUALITY-regel på din LDAP-server för detta attribut.';// 'Note: You will get an "inappropriate matching" error if you have not
' . + 'setup an EQUALITY rule on your LDAP server for this attribute.'; +$lang['enter_value_to_add'] = 'Skriv in värdet du vill lägga till';//'Enter the value you would like to add:'; +$lang['new_required_attrs_note'] = 'Observera: Du kan bli tvungen att skriva in de nya attribut som denna objectClass behöver';//'Note: you may be required to enter new attributes that this objectClass requires'; +$lang['syntax'] = 'Syntax';//'Syntax'; + +//copy.php +$lang['copy_server_read_only'] = 'Du kan inte göra uppdateringar medan servern är i lästillstånd';//'You cannot perform updates while server is in read-only mode'; +$lang['copy_dest_dn_blank'] = 'Du lämnade destinations-DN tomt';//'You left the destination DN blank.'; +$lang['copy_dest_already_exists'] = 'Destinationen finns redan';//'The destination entry (%s) already exists.'; +$lang['copy_dest_container_does_not_exist'] = 'Destinations-behållaren (%s) finns inte';// 'The destination container (%s) does not exist.'; +$lang['copy_source_dest_dn_same'] = 'Käll- och destinations-DN är samma.';//'The source and destination DN are the same.'; +$lang['copy_copying'] = 'Kopierar';//'Copying '; +$lang['copy_recursive_copy_progress'] = 'Rekursiv kopiering pågår';//'Recursive copy progress'; +$lang['copy_building_snapshot'] = 'Bygger en ögonblicksbild av det träd som ska kopieras';//'Building snapshot of tree to copy... '; +$lang['copy_successful_like_to'] = 'Kopieringen lyckades! Vill du';//'Copy successful! Would you like to '; +$lang['copy_view_new_entry'] = 'titta på den nya posten';//'view the new entry'; +$lang['copy_failed'] = 'Kopiering av DN misslyckades';//'Failed to copy DN: '; + +//edit.php +$lang['missing_template_file'] = 'Varning! mall-filen saknas,';//'Warning: missing template file, '; +$lang['using_default'] = 'använder default.'; //'Using default.'; + +//copy_form.php +$lang['copyf_title_copy'] = 'Kopiera';//'Copy '; +$lang['copyf_to_new_object'] = 'till ett nytt objekt';//'to a new object'; +$lang['copyf_dest_dn'] = 'Destinations-DN';//'Destination DN'; +$lang['copyf_dest_dn_tooltip'] = 'Den nya postens fullständiga DN skapas när källposten kopieras';//'The full DN of the new entry to be created when copying the source entry'; +$lang['copyf_dest_server'] = 'Destinations-server';//'Destination Server'; +$lang['copyf_note'] = 'Tips: Kopiering mellan olika servrar fungerar bara om det inte finns några brott mot schemorna.';// 'Hint: Copying between different servers only works if there are no schema violations'; +$lang['copyf_recursive_copy'] = 'Kopiera även rekursivt alla underobjekt till detta objekt.';//'Recursively copy all children of this object as well.'; + +//create.php +$lang['create_required_attribute'] = 'Du lämnade ett värde tomt för ett nödvändigt attribut %s.';//'You left the value blank for required attribute %s.'; +$lang['create_redirecting'] = 'Omstyrning';//'Redirecting'; +$lang['create_here'] = 'här';//'here'; +$lang['create_could_not_add'] = 'Det gick inte att lägga till objektet till LDAP-servern.';//'Could not add the object to the LDAP server.'; + +//create_form.php +$lang['createf_create_object'] = 'Skapa objekt';//'Create Object'; +$lang['createf_choose_temp'] = 'Välj en mall';//'Choose a template'; +$lang['createf_select_temp'] = 'Välj en mall för att skapa objekt';//'Select a template for the creation process'; +$lang['createf_proceed'] = 'Fortsätt';//'Proceed'; + +//creation_template.php +$lang['ctemplate_on_server'] = 'På servern';//'On server'; +$lang['ctemplate_no_template'] = 'Ingen mall specificerad i POST variablerna.';//'No template specified in POST variables.'; +$lang['ctemplate_config_handler'] = 'Din konfiguration specificerar en hanterare';//'Your config specifies a handler of'; +$lang['ctemplate_handler_does_not_exist'] = 'för denna mall, men hanteraren finns inte i templates/creation-katalogen';//'for this template. But, this handler does not exist in the templates/creation directory.'; + +// search.php +$lang['you_have_not_logged_into_server'] = 'Du har inte loggat in till den valda servern ännu, så du kan inte göra sökningar på den.';//'You have not logged into the selected server yet, so you cannot perform searches on it.'; +$lang['click_to_go_to_login_form'] = 'Klicka här för att komma till login-formuläret';//'Click here to go to the login form'; +$lang['unrecognized_criteria_option'] = 'Känner inte till detta urvals-kriterium';//'Unrecognized criteria option: '; +$lang['if_you_want_to_add_criteria'] = 'Om du vill lägga till ditt eget kriterium till listan, kom ihåg att ändra search.php för att hantera det. Avslutar.';//'If you want to add your own criteria to the list. Be sure to edit search.php to handle them. Quitting.'; +$lang['entries_found'] = 'Poster funna:';//'Entries found: '; +$lang['filter_performed'] = 'Filtrering utförd: ';//'Filter performed: '; +$lang['search_duration'] = 'Sökning utförd av phpLDAPadmin på';//'Search performed by phpLDAPadmin in'; +$lang['seconds'] = 'sekunder';//'seconds'; + +// search_form_advanced.php +$lang['scope_in_which_to_search'] = 'Sökomfattning';//'The scope in which to search'; +$lang['scope_sub'] = 'Sub (Base DN och hela trädet under)';//'Sub (entire subtree)'; +$lang['scope_one'] = 'One (en nivå under Base DN)';//One (one level beneath base)'; +$lang['scope_base'] = 'Base (endast Base DN)';//'Base (base dn only)'; +$lang['standard_ldap_search_filter'] = 'Standard LDAP sökfilter. Exempel: (&(sn=Smith)(givenname=David))';//'Standard LDAP search filter. Example: (&(sn=Smith)(givenname=David))'; +$lang['search_filter'] = 'Sökfilter';//'Search Filter'; +$lang['list_of_attrs_to_display_in_results'] = 'En lista med attribut att visa i resultatet (komma-separerad)';// 'A list of attributes to display in the results (comma-separated)'; +$lang['show_attributes'] = 'Visa attribut';//'Show Attributes'; + +// search_form_simple.php +$lang['search_for_entries_whose'] = 'Sök efter poster som:';//'Search for entries whose:'; +$lang['equals'] = 'är lika med';//'equals'; +$lang['starts with'] = 'börjar med';//'starts with'; +$lang['contains'] = 'innehåller';//'contains'; +$lang['ends with'] = 'slutar med';//'ends with'; +$lang['sounds like'] = 'låter som';//'sounds like'; + +// server_info.php +$lang['could_not_fetch_server_info'] = 'Det gick inte att hämta LDAP information från servern.';//'Could not retrieve LDAP information from the server'; +$lang['server_info_for'] = 'Serverinformation för';//'Server info for: '; +$lang['server_reports_following'] = 'Servern rapporterar följande information om sig själv';//'Server reports the following information about itself'; +$lang['nothing_to_report'] = 'Servern har inget att rapportera';//'This server has nothing to report.'; + +//update.php +$lang['update_array_malformed'] = 'update_array är felaktig. Detta kan vara ett phpLDAPadmin-fel. Var vänlig och rapportera det.';// 'update_array is malformed. This might be a phpLDAPadmin bug. Please report it.'; +$lang['could_not_perform_ldap_modify'] = 'Det gick inte att utföra operationen ldap_modify.';//'Could not perform ldap_modify operation.'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'Vill du göra dessa ändringar?';//'Do you want to make these changes?'; +$lang['attribute'] = 'Attribut';//'Attribute'; +$lang['old_value'] = 'Föregående värde';//'Old Value'; +$lang['new_value'] = 'Nytt värde';//'New Value'; +$lang['attr_deleted'] = '[attributet borttaget]';//'[attribute deleted]'; +$lang['commit'] = 'Bekräfta';//'Commit'; +$lang['cancel'] = 'ångra';//'Cancel'; +$lang['you_made_no_changes'] = 'Du gjorde inga ändringar';//'You made no changes'; +$lang['go_back'] = 'Gå tillbaka';//'Go back'; + +// welcome.php +$lang['welcome_note'] = 'Navigera med hjälp av menyn till vänster';//'Use the menu to the left to navigate'; +$lang['credits'] = 'Tack till';//'Credits'; +$lang['changelog'] = 'ändringslogg';//'ChangeLog'; +$lang['documentation'] = 'Dokumentation';//'Documentation'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = 'Osäkert filnamn';//'Unsafe file name: '; +$lang['no_such_file'] = 'Filen finns inte';//'No such file: '; + +//function.php +$lang['auto_update_not_setup'] = 'Du har slagit på auto_uid_numbers för %s i din konfiguration, + men du har inte specificerat auto_uid_number_mechanism. Var vänlig och rätta till + detta problem.'; + //'You have enabled auto_uid_numbers for %s in your configuration, + //but you have not specified the auto_uid_number_mechanism. Please correct + //this problem.'; +$lang['uidpool_not_set'] = 'Du har specificerat auto_uid_number_mechanism som uidpool + i din konfiguration för server%s, men du specificerade inte + audo_uid_number_uid_pool_dn. Var vänlig och specificera den innan du fortsätter.'; + //'You specified the auto_uid_number_mechanism as uidpool + //in your configuration for server %s, but you did not specify the + //audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; +$lang['uidpool_not_exist'] = 'Det ser ut som om den uidPool du specificerade i din konfiguration (%s) + inte existerar.'; + // 'It appears that the uidPool you specified in your configuration (%s) + // does not exist.'; +$lang['specified_uidpool'] = 'Du specificerade auto_uid_number_mechanism som search i din + konfiguration för server%s, men du specificerade inte + auto_uid_number_search_base. Var vänlig och specificera den innan du fortsätter.'; + // 'You specified the auto_uid_number_mechanism as search in your + //configuration for server %s, but you did not specify the + //auto_uid_number_search_base. Please specify it before proceeding.'; +$lang['auto_uid_invalid_value'] = 'Du specificerade ett ogiltigt värde för auto_uid_number_mechanism (%s) + i din konfiguration. Endast uidpool och search are giltiga. + Var vänlig och rätta till detta problem.'; + //'You specified an invalid value for auto_uid_number_mechanism (%s) + //in your configration. Only uidpool and search are valid. + //Please correct this problem.'; +$lang['error_auth_type_config'] = 'Fel: Du har ett fel i din konfigurationsfil. De enda tillåtna värdena + för auth_type i $servers-sektionen är \'config\' and \'form\'. Du skrev in \'%s\', + vilket inte är tillåtet. '; + //'Error: You have an error in your config file. The only two allowed values + //for auth_type in the $servers section are \'config\' and \'form\'. You entered \'%s\', + //which is not allowed. '; +$lang['php_install_not_supports_tls'] = 'Din PHP-installation stödjer inte TLS';//'Your PHP install does not support TLS'; +$lang['could_not_start_tls'] = 'Det gick inte att starta TLS.
Var vänlig och kontrollera din LDAP-serverkonfiguration.';//'Could not start TLS.
Please check your LDAP server configuration.'; +$lang['auth_type_not_valid'] = 'Du har ett fel i din konfigurationsfil. auth_type %s är inte tillåten.';//'You have an error in your config file. auth_type of %s is not valid.'; +$lang['ldap_said'] = 'LDAP sa: %s

';//'LDAP said: %s

'; +$lang['ferror_error'] = 'Fel';'Error'; +$lang['fbrowse'] = 'titta';//'browse'; +$lang['delete_photo'] = 'Ta bort foto';//'Delete Photo'; +$lang['install_not_support_blowfish'] = 'Din PHP-installation stödjer inte blowfish-kryptering.';// 'Your PHP install does not support blowfish encryption.'; +$lang['install_no_mash'] = 'Din PHP-installation har inte funktionen mash(). Det går inte att göra SHA hashes.';//'Your PHP install does not have the mhash() function. Cannot do SHA hashes.'; +$lang['jpeg_contains_errors'] = 'JPEG-fotot innehåller fel
';//'jpegPhoto contains errors
'; +$lang['ferror_number'] = 'Felnummer: %s (%s)

';//'Error number: %s (%s)

'; +$lang['ferror_discription'] ='Beskrivning: %s

';//'Description: %s

'; +$lang['ferror_number_short'] = 'Felnummer: %s

';//'Error number: %s

'; +$lang['ferror_discription_short'] = 'Beskrivning: (ingen beskrivning tillgänglig)
';//'Description: (no description available)
'; +$lang['ferror_submit_bug'] = 'är det här ett phpLDAPadmin-fel? Om så är fallet, var vänlig och rapportera det.'; +//'Is this a phpLDAPadmin bug? If so, please report it.'; +$lang['ferror_unrecognized_num'] = 'Okänt felnummer';//'Unrecognized error number: '; +$lang['ferror_nonfatil_bug'] = '
+
+ Du har hittat en icke-kritisk phpLDAPadmin bug!
Fel:%s (%s)
Fil:%s rad %s, anropande %s
Versioner:PLA: %s, PHP: %s, SAPI: %s +
Web server:%s
+ Var vänlig och rapportera felet genom att klicka här.

'; + + //'
+ //
+ //You found a non-fatal phpLDAPadmin bug!
Error:%s (%s)
File:%s line %s, caller %s
Versions:PLA: %s, PHP: %s, SAPI: %s + //
Web server:%s
+ //Please report this bug by clicking here.

'; + +$lang['ferror_congrats_found_bug'] = 'Gratulerar! Du har hittat en bug i phpLDAPadmin.

+ + + + + + + + + + +
Fel:%s
Nivå:%s
Fil:%s
Rad:%s
Anropare:%s
PLA Version:%s
PHP Version:%s
PHP SAPI:%s
Web server:%s
+
+ Var vänlig och rapportera den här buggen genom att klicak här nedan!'; + +//'Congratulations! You found a bug in phpLDAPadmin.

+// +// +// +// +// +// +// +// +// +// +//
Error:%s
Level:%s
File:%s
Line:%s
Caller:%s
PLA Version:%s
PHP Version:%s
PHP SAPI:%s
Web server:%s
+//
+//Please report this bug by clicking below!'; + + +//ldif_import_form +$lang['import_ldif_file_title'] = 'Importera LDIF-fil';//'Import LDIF File'; +$lang['select_ldif_file'] = 'Välj en LDIF-fil:';//'Select an LDIF file:'; +$lang['select_ldif_file_proceed'] = 'Fortsätt >>';//'Proceed >>'; + +//ldif_import +$lang['add_action'] = 'Lägger till...';//'Adding...'; +$lang['delete_action'] = 'Tar bort...';//'Deleting...'; +$lang['rename_action'] = 'Döper om...';//''Renaming...'; +$lang['modify_action'] = 'ändrar...';//'Modifying...'; + +$lang['failed'] = 'misslyckades';//'failed'; +$lang['ldif_parse_error'] = 'LDIF parsningsfel';//'LDIF Parse Error'; +$lang['ldif_could_not_add_object'] = 'Det gick inte att lägga till objekt';//'Could not add object:'; +$lang['ldif_could_not_rename_object'] = 'Det gick inte att lägga döpa om objekt';//'Could not rename object:'; +$lang['ldif_could_not_delete_object'] = 'Det gick inte att ta bort objekt';//'Could not delete object:'; +$lang['ldif_could_not_modify_object'] = 'Det gick inte att ändra objekt';//'Could not modify object:'; +$lang['ldif_line_number'] = 'Radnummer';//'Line Number:'; +$lang['ldif_line'] = 'Rad:';//'Line:'; +?> diff --git a/lang/recoded/zz.php b/lang/recoded/zz.php new file mode 100644 index 0000000..922fdc0 --- /dev/null +++ b/lang/recoded/zz.php @@ -0,0 +1,13 @@ + diff --git a/lang/recoded/zzz.php b/lang/recoded/zzz.php new file mode 100644 index 0000000..d7822e9 --- /dev/null +++ b/lang/recoded/zzz.php @@ -0,0 +1,13 @@ + diff --git a/lang/ru.php b/lang/ru.php index 7b97d19..ca27538 100644 --- a/lang/ru.php +++ b/lang/ru.php @@ -1,259 +1,535 @@ Удалить атрибут, очиÑтите текÑтовое поле и нажмите Ñохрнить.';//'Hint: To delete an attribute, empty the text field and click save.'; -$lang['viewing_read_only'] = 'ПроÑмотреть запиÑÑŒ в режиме только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ';//'Viewing entry in read-only mode.'; -$lang['change_entry_rdn'] = 'Change this entry\'s RDN'; -$lang['no_new_attrs_available'] = 'нет новых атрибутов Ð´Ð»Ñ Ñтой запиÑи';//'no new attributes available for this entry'; -$lang['binary_value'] = 'Бинарное значение';//'Binary value'; -$lang['add_new_binary_attr'] = 'Добавить новый бинарный атрибут';//'Add New Binary Attribute'; -$lang['add_new_binary_attr_tooltip'] = 'Добавить новый бинарный атрибут/значение Ñ Ñ„Ð°Ð¹Ð»Ð°';//'Add a new binary attribute/value from a file'; -$lang['alias_for'] = 'ÐÐ»Ð¸Ð°Ñ Ð´Ð»Ñ';//'Alias for'; -$lang['download_value'] = 'загрузить значение';//'download value'; -$lang['delete_attribute'] = 'удалить атрибут';//'delete attribute'; -$lang['true'] = 'да';//'true'; -$lang['false'] = 'нет';//'false'; -$lang['none_remove_value'] = 'нет, удалите значение';//'none, remove value'; -$lang['really_delete_attribute'] = 'Really delete attribute'; +$lang['delete_this_entry'] = 'Удалить Ñту запиÑÑŒ'; +$lang['delete_this_entry_tooltip'] = 'Ð’Ð°Ñ Ð¿Ð¾Ð¿Ñ€Ð¾ÑÑÑ‚ подтвердить Ваше решение'; +$lang['copy_this_entry'] = 'Скопировать Ñту запиÑÑŒ'; +$lang['copy_this_entry_tooltip'] = 'Скопировать Ñтот объект в другое меÑто, в новый DN или на другой Ñервер'; +$lang['export'] = 'ЭкÑпорт'; +$lang['export_tooltip'] = 'Сохранить дамп Ñтого объекта'; +$lang['export_subtree_tooltip'] = 'Сохранить дамп Ñтого объекта и вÑех его потомков'; +$lang['export_subtree'] = 'ЭкÑпортировать ветвь'; +$lang['create_a_child_entry'] = 'Создать потомка'; +$lang['rename_entry'] = 'Переименовать запиÑÑŒ'; +$lang['rename'] = 'Переименовать'; +$lang['add'] = 'Добавить'; +$lang['view'] = 'ПроÑмотреть'; +$lang['view_one_child'] = 'ПроÑмотреть 1 потомка'; +$lang['view_children'] = 'ПроÑмотреть %s потомков'; +$lang['add_new_attribute'] = 'Добавить новый атрибут'; +$lang['add_new_objectclass'] = 'Добавить новый объект'; +$lang['hide_internal_attrs'] = 'Скрыть внутренние атрибуты'; +$lang['show_internal_attrs'] = 'Показать внутренние атрибуты'; +$lang['attr_name_tooltip'] = 'Ðажмите чтобы проÑмотреть опиÑание Ñхемы Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° \'%s\''; +$lang['none'] = 'нет'; +$lang['no_internal_attributes'] = 'Ðет внутренних атрибутов'; +$lang['no_attributes'] = 'Эта запиÑÑŒ не имеет атрибутов'; +$lang['save_changes'] = 'Сохранить изменениÑ'; +$lang['add_value'] = 'добавить значение'; +$lang['add_value_tooltip'] = 'Добавить дополнительное значение Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° \'%s\''; +$lang['refresh_entry'] = 'Обновить'; +$lang['refresh_this_entry'] = 'Обновить Ñту запиÑÑŒ'; +$lang['delete_hint'] = 'ПодÑказка: Чтобы удалить атрибут - очиÑтите текÑтовое поле и нажмите "Ñохранить"'; +$lang['attr_schema_hint'] = 'ПодÑказка: Чтобы проÑмотреть Ñхему атрибута - нажмите на его названии.'; +$lang['attrs_modified'] = 'Ðекоторые атрибуты (%s) были модифицированы и теперь подÑвечены ниже.'; +$lang['attr_modified'] = 'Ðтрибут (%s) был модифицирован и теперь подÑвечен ниже.'; +$lang['viewing_read_only'] = 'ПроÑмотр запиÑи в режиме "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ".'; +$lang['no_new_attrs_available'] = 'Ð´Ð»Ñ Ñтой запиÑи нет доÑтупных новых атрибутов'; +$lang['no_new_binary_attrs_available'] = 'Ð´Ð»Ñ Ñтой запиÑи нет доÑтупных новых бинарных атрибутов'; +$lang['binary_value'] = 'Бинарное значение'; +$lang['add_new_binary_attr'] = 'Добавить новый бинарный атрибут'; +$lang['alias_for'] = 'Внимание: \'%s\' - Ð°Ð»Ð¸Ð°Ñ Ð´Ð»Ñ \'%s\''; +$lang['download_value'] = 'загрузить значение'; +$lang['delete_attribute'] = 'удалить атрибут'; +$lang['true'] = 'правда'; +$lang['false'] = 'ложь'; +$lang['none_remove_value'] = 'пуÑто, удалите значение'; +$lang['really_delete_attribute'] = 'ДейÑтвительно удалить значение'; +$lang['add_new_value'] = 'Добавить новое значение'; // Schema browser -$lang['the_following_objectclasses'] = 'Следующий objectClasses поддерживаетьÑÑ Ñтим LDAP Ñервером.';;//'The following objectClasses are supported by this LDAP server.'; -$lang['the_following_attributes'] = 'Следующий attributeTypes поддерживаетьÑÑ Ñтим LDAP Ñевером.';//The following attributeTypes are supported by this LDAP server.'; -$lang['the_following_matching'] = 'Следующий matching rules поддерживаетьÑÑ Ñтим LDAP Ñевером.';//'The following matching rules are supported by this LDAP server.'; -$lang['the_following_syntaxes'] = 'Следующий syntaxes поддерживаетьÑÑ Ñтим LDAP Ñервером.';//'The following syntaxes are supported by this LDAP server.'; -$lang['jump_to_objectclass'] = 'Перейти к objectClass';//'Jump to an objectClass'; -$lang['jump_to_attr'] = 'Перейти к атрибутам';//'Jump to an attribute'; -$lang['schema_for_server'] = 'Схема Ð´Ð»Ñ Ñервера';//'Schema for server'; -$lang['required_attrs'] = 'Запрошеные атрибуты';//'Required Attributes'; -$lang['optional_attrs'] = 'Оптимальные отрибуты';//'Optional Attributes'; +$lang['the_following_objectclasses'] = 'Этот LDAP Ñервер поддерживает Ñледующие объекты.'; +$lang['the_following_attributes'] = 'Этот LDAP Ñервер поддерживает Ñледующие типы атрибутов.'; +$lang['the_following_matching'] = 'Этот LDAP Ñервер поддерживает Ñледующие правила ÑоответÑтвиÑ.'; +$lang['the_following_syntaxes'] = 'Этот LDAP Ñервер поддерживает Ñледующие ÑинтакÑиÑÑ‹.'; +$lang['schema_retrieve_error_1']='Этот Ñервер не полноÑтью поддерживает LDAP протокол.'; +$lang['schema_retrieve_error_2']='Ваша верÑÐ¸Ñ PHP неправильно обработала запроÑ.'; +$lang['schema_retrieve_error_3']='Или phpLDAPadmin не знает как получить Ñхему Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ Ñервера.'; +$lang['jump_to_objectclass'] = 'Перейти к объекту'; +$lang['jump_to_attr'] = 'Перейти к типам атрибутов'; +$lang['jump_to_matching_rule'] = 'Перейти к правилам ÑоответÑтвиÑ'; +$lang['schema_for_server'] = 'Схема Ð´Ð»Ñ Ñервера'; +$lang['required_attrs'] = 'Требуемые атрибуты'; +$lang['optional_attrs'] = 'ÐеобÑзательные атрибуты'; +$lang['optional_binary_attrs'] = 'ÐеобÑзательные бинарные атрибуты'; $lang['OID'] = 'OID'; -$lang['desc'] = 'ОпиÑание';//'Description'; -$lang['is_obsolete'] = 'Этот objectClass еÑÑ‚ÑŒ obsolete';//'This objectClass is obsolete'; -$lang['inherits'] = 'ÐаÑледование'; -$lang['jump_to_this_oclass'] = 'Перейти к Ñтому objectClass опиÑанию';//'Jump to this objectClass definition'; -$lang['matching_rule_oid'] = 'Matching Rule OID'; -$lang['syntax_oid'] = 'Syntax OID'; +$lang['aliases']='ÐлиаÑÑ‹'; +$lang['desc'] = 'ОпиÑание'; +$lang['no_description']='нет опиÑаниÑ'; +$lang['name'] = 'ИмÑ'; +$lang['equality']='РавенÑтво'; +$lang['is_obsolete'] = 'Этот объект уÑтарел.'; +$lang['inherits'] = 'ЗаимÑтвует из'; +$lang['inherited_from'] = 'ЗаимÑтвован из'; +$lang['parent_to'] = 'Родитель длÑ'; +$lang['jump_to_this_oclass'] = 'Перейти к определению Ñтого объекта'; +$lang['matching_rule_oid'] = 'OID правила ÑоответÑтвиÑ'; +$lang['syntax_oid'] = 'OID ÑинтакÑиÑа'; +$lang['not_applicable'] = 'неприменимый'; +$lang['not_specified'] = 'не указано'; +$lang['character']='Ñимвол'; +$lang['characters']='Ñимволы'; +$lang['used_by_objectclasses']='ИÑпользуетÑÑ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸'; +$lang['used_by_attributes']='ИÑпользован атрибутами'; +$lang['maximum_length']='МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð°'; +$lang['attributes']='Типы атрибутов'; +$lang['syntaxes']='СинтакÑиÑÑ‹'; +$lang['matchingrules']='Правила ÑоответÑтвиÑ'; +$lang['oid']='OID'; +$lang['obsolete']='УÑтаревший'; +$lang['ordering']='Сортировка'; +$lang['substring_rule']='Правило подÑтроки'; +$lang['single_valued']='Однозначный'; +$lang['collective']='СовмеÑтный'; +$lang['user_modification']='Изменение пользователем'; +$lang['usage']='ИÑпользование'; +$lang['could_not_retrieve_schema_from']='Ðе могу получить Ñхему из'; +$lang['type']='Тип'; + +// Deleting entries +$lang['entry_deleted_successfully'] = 'ЗапиÑÑŒ %s уÑпешно удалена.'; +$lang['you_must_specify_a_dn'] = 'Ð’Ñ‹ должны указать DN'; +$lang['could_not_delete_entry'] = 'Ðе удалоÑÑŒ удалить запиÑÑŒ: %s'; +$lang['no_such_entry'] = 'Ðет такой запиÑи: %s'; +$lang['delete_dn'] = 'Удалить %s'; +$lang['permanently_delete_children'] = 'Также окончательно удалить вÑех потомков?'; +$lang['entry_is_root_sub_tree'] = 'Эта запиÑÑŒ ÑвлÑетÑÑ ÐºÐ¾Ñ€Ð½ÐµÐ¼ дерева Ñодержащего %s запиÑей.'; +$lang['view_entries'] = 'проÑмотреть запиÑи'; +$lang['confirm_recursive_delete'] = 'phpLDAPadmin может рекурÑивно удалить Ñту запиÑÑŒ и %s его потомков. Ðиже ÑпиÑок вÑех запиÑей, которые будут удалены. Ð’Ñ‹ дейÑтвительно хотите Ñто Ñделать?'; +$lang['confirm_recursive_delete_note'] = 'Внимание: Ñто потенциально очень опаÑно и вы делаете Ñто на Ñвой ÑобÑтвенный риÑк. Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть отменена. Примите во внимание алиаÑÑ‹, ÑÑылки и другие вещи, которые могум вызвать проблемы.'; +$lang['delete_all_x_objects'] = 'Удалить вÑе %s объектов'; +$lang['recursive_delete_progress'] = 'ПрогреÑÑ Ñ€ÐµÐºÑƒÑ€Ñивного удалениÑ'; +$lang['entry_and_sub_tree_deleted_successfully'] = 'ЗапиÑÑŒ %s и ее потомки уÑпешно удалены.'; +$lang['failed_to_delete_entry'] = 'Ðе удалоÑÑŒ удалить запиÑÑŒ %s'; +$lang['list_of_entries_to_be_deleted'] = 'СпиÑок запиÑей на удаление:'; +$lang['sure_permanent_delete_object']='Ð’Ñ‹ уверены, что хотите окончательно удалить Ñтот объект?'; +$lang['dn'] = 'DN'; + +// Deleting attributes +$lang['attr_is_read_only'] = 'Этот атрибут "%s" уÑтановлен "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" в конфигурации phpLDAPadmin.'; +$lang['no_attr_specified'] = 'Ðе указано Ð¸Ð¼Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð°.'; +$lang['no_dn_specified'] = 'Ðе указан DN'; + +// Adding attributes +$lang['left_attr_blank'] = 'Ð’Ñ‹ оÑтавили значение атрибута пуÑтым. ВернитеÑÑŒ и попробуйте еще раз.'; +$lang['failed_to_add_attr'] = 'Ðе удалоÑÑŒ добавить атрибут.'; +$lang['file_empty'] = 'Файл, который Ð’Ñ‹ выбрали или не ÑущеÑтвует или пуÑÑ‚. ПожалуйÑта вернитеÑÑŒ и попробуйте еще раз.'; +$lang['invalid_file'] = 'Ошибка безопаÑноÑти: Файл который Ð’Ñ‹ загрузили может иметь вредоноÑный код.'; +$lang['warning_file_uploads_disabled'] = 'Ваша ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ PHP запрещает загрузку файлов. Проверьте php.ini перед тем как продолжить.'; +$lang['uploaded_file_too_big'] = 'Файл, который Ð’Ñ‹ загрузили Ñлишком велик. Проверьте php.ini, опцию upload_max_size'; +$lang['uploaded_file_partial'] = 'Файл, который Ð’Ñ‹ выбрали был загружен только чаÑтично, вероÑтно из-за ошибки в Ñети.'; +$lang['max_file_size'] = 'МакÑимальный размер файла: %s'; + +// Updating values +$lang['modification_successful'] = 'Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑƒÑпешно произведены!'; +$lang['change_password_new_login'] = 'Т.к. Ð’Ñ‹ изменили Ñвой пароль, Ð’Ñ‹ должны войти заново, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñвой новый пароль.'; // Adding objectClass form -$lang['new_required_attrs'] = 'Ðовые запрошеные параметры';// 'New Required Attributes'; -$lang['requires_to_add'] = 'Это дейÑтвие запрошено вами к добавлению';//'This action requires you to add'; -$lang['new_attributes'] = 'новые атрибуты';//'new attributes'; -$lang['new_required_attrs_instructions'] = 'Instructions: In order to add this objectClass to this entry, you must specify'; -$lang['that_this_oclass_requires'] = 'that this objectClass requires. You can do so in this form.'; -$lang['add_oclass_and_attrs'] = 'И ObjectClass и Attributes';//'Add ObjectClass and Attributes'; +$lang['new_required_attrs'] = 'Ðовые требуемые атрибуты'; +$lang['requires_to_add'] = 'Это дейÑтвие требует добавить'; +$lang['new_attributes'] = 'новые атрибуты'; +$lang['new_required_attrs_instructions'] = 'ИнÑтрукциÑ: Чтобы добавить Ñтот объект к Ñтой запиÑи, Ð’Ñ‹ должны указать'; +$lang['that_this_oclass_requires'] = 'что требует Ñтот объект. Ð’Ñ‹ можете Ñто Ñделать в Ñтой форме.'; +$lang['add_oclass_and_attrs'] = 'Добавить объект и атрибуты'; +$lang['objectclasses'] = 'Объекты'; // General -$lang['chooser_link_tooltip'] = 'Click to popup a dialog to select an entry (DN) graphically'; -$lang['no_updates_in_read_only_mode'] = 'You cannot perform updates while server is in read-only mode'; -$lang['bad_server_id'] = 'Плохой Ñервера id';//'Bad server id'; -$lang['not_enough_login_info'] = 'Ðе доÑтаточно информации Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Ñерверу. ПожалуÑта проверте Вашу конфигулацию.';//'Not enough information to login to server. Please check your configuration.'; -$lang['could_not_connect'] = 'Ðе могу подключитьÑÑ Ðº LDAP Ñервером';//'Could not connect to LDAP server.'; -$lang['could_not_perform_ldap_mod_add'] = 'Could not perform ldap_mod_add operation.'; +$lang['chooser_link_tooltip'] = 'Ðажмите чтобы вызвать диалог Ð´Ð»Ñ Ð²Ð¸Ð·ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ выбора запиÑи(DN)'; +$lang['no_updates_in_read_only_mode'] = 'Ð’Ñ‹ не можете производить Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾ тех пор, пока Ñервер находитÑÑ Ð² режиме "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"'; +$lang['bad_server_id'] = 'Ðеправильный id Ñервера'; +$lang['not_enough_login_info'] = 'ÐедоÑтаточно информации чтобы подключитьÑÑ Ðº Ñерверу. Проверьте Вашу конфигурацию.'; +$lang['could_not_connect'] = 'Ðе могу подключитьÑÑ Ðº LDAP-Ñерверу.'; +$lang['could_not_connect_to_host_on_port'] = 'Ðе могу подключитьÑÑ Ðº "%s" на порт "%s"'; +$lang['could_not_perform_ldap_mod_add'] = 'Ðе удалоÑÑŒ произвеÑти операцию ldap_mod_add.'; +$lang['bad_server_id_underline'] = 'Ðеправильный server_id: '; +$lang['success'] = 'УÑпешно'; +$lang['server_colon_pare'] = 'Сервер: '; +$lang['look_in'] = 'Ищу в: '; +$lang['missing_server_id_in_query_string'] = 'Ðе указан ID Ñервера в Ñтроке запроÑа!'; +$lang['missing_dn_in_query_string'] = 'Ðе указан DN в Ñтроке запроÑа!'; +$lang['back_up_p'] = 'Back Up...'; +$lang['no_entries'] = 'нет запиÑей'; +$lang['not_logged_in'] = 'Ðе авторизовалиÑÑŒ'; +$lang['could_not_det_base_dn'] = 'Ðе могу выÑÑнить оÑновной DN'; +$lang['please_report_this_as_a_bug']='ПожалуйÑта Ñообщите об Ñтой ошибке.'; +$lang['reasons_for_error']='Это могло ÑлучитÑÑ Ð¿Ð¾ неÑкольким причинам, наиболее вероÑтные Ñто:'; +$lang['yes']='Да'; +$lang['no']='Ðет'; +$lang['go']='Перейти'; +$lang['delete']='Удалить'; +$lang['back']='Ðазад'; +$lang['object']='объект'; +$lang['delete_all']='Удалить вÑе'; +$lang['url_bug_report']='https://sourceforge.net/tracker/?func=add&group_id=61828&atid=498546'; +$lang['hint'] = 'подÑказка'; +$lang['bug'] = 'ошибка'; +$lang['warning'] = 'предупреждение'; +$lang['light'] = 'Ñвет'; // the word 'light' from 'light bulb' +$lang['proceed_gt'] = 'Далее >>'; + // Add value form -$lang['add_new'] = 'Добавить новый';//'Add new'; -$lang['value_to'] = 'Значение к';//'value to'; -$lang['server'] = 'Сервер';//'Server'; -$lang['distinguished_name'] = 'Distinguished Name'; -$lang['current_list_of'] = 'Текущий ÑпиÑок';//'Current list of'; -$lang['values_for_attribute'] = 'значение Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð°';//'values for attribute'; -$lang['inappropriate_matching_note'] = 'Note: You will get an "inappropriate matching" error if you have not
' . - 'setup an EQUALITY rule on your LDAP server for this attribute.'; -$lang['enter_value_to_add'] = 'Enter the value you would like to add:'; -$lang['new_required_attrs_note'] = 'Note: you may be required to enter new attributes
that this objectClass requires.'; -$lang['syntax'] = 'СинтакÑиÑ';//'Syntax'; +$lang['add_new'] = 'Добавить новый'; +$lang['value_to'] = 'значение длÑ'; +$lang['distinguished_name'] = 'Отличительное имÑ'; +$lang['current_list_of'] = 'Текущий ÑпиÑок'; +$lang['values_for_attribute'] = 'значений атрибутов'; +$lang['inappropriate_matching_note'] = 'Внимание: Ð’Ñ‹ получите ошибку "неподходÑщее ÑоответÑтвие", еÑли Ð’Ñ‹ выÑтавили правило "равенÑтво"(EQUALITY) на Вашем LDAP-Ñервере Ð´Ð»Ñ Ñтого атрибута.'; +$lang['enter_value_to_add'] = 'Введите значение, которое Ð’Ñ‹ хотите добавить:'; +$lang['new_required_attrs_note'] = 'Внимание: Вам может потребоватьÑÑ Ð²Ð²ÐµÑти новые атрибуты, которые требует Ñтот объект'; +$lang['syntax'] = 'СинтакÑ'; -// Incomplete or Erroneous Language Files -$lang['attr_name_tooltip'] = 'attr_name_tooltip'; -$lang['refresh_entry']= 'обновить запиÑÑŒ'; -$lang['attr_schema_hint']='атрибут Ñхемы подÑказки'; -$lang['attrs_modified']='атрибуты изменены'; -$lang['attr_modified']='атрибут изменен'; -$lang['name']='имÑ'; -$lang['not_applicable']='не применимый'; -$lang['not_specified']='не орпеделенный'; -$lang['entry_deleted_successfully']='запиÑÑŒ удалена уÑпешно'; -$lang['you_must_specify_a_dn']='вы должны определить DN'; -$lang['could_not_delete_entry']='не возможно удалить запиÑÑŒ'; -$lang['bad_server_id_underline']='неверный id Ñервера подчеркивать'; -$lang['success']='уÑпешно'; -$lang['server_colon_pare']='вырезать двоеточие Ñевера'; -$lang['look_in']='раÑÑматривать'; -$lang['missing_server_id_in_query_string']='отÑутÑвует id Ñервера в Ñтроке запроÑа'; -$lang['missing_dn_in_query_string']='отÑутÑвует dn в Ñтроке запроÑа'; -$lang['back_up_p']='back up p'; -$lang['no_entries']='нет запиÑей'; -$lang['not_logged_in']='не зарагеÑтрирован в'; -$lang['could_not_det_base_dn']='не возможно определить Base DN'; -$lang['copy_server_read_only']='корировать Ñервер только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ'; -$lang['copy_dest_dn_blank']='копировать в раÑположение пуÑтого DN'; -$lang['copy_dest_already_exists']='копировать в раÑположение уже ÑущеÑтвующее'; -$lang['copy_dest_container_does_not_exist']='копировать в раÑположение которое не ÑущеÑтвует'; -$lang['copy_source_dest_dn_same']='копировать Ñ Ð¸Ñходного раÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² тот же DN '; -$lang['copy_copying']='копировать копирование'; -$lang['copy_recursive_copy_progress']='копирование Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ€ÐµÐºÑƒÑ€Ñивного копированиÑ'; -$lang['copy_building_snapshot']='копирование кадра поÑтроение'; -$lang['copy_successful_like_to']='копирование уÑпешно подобно до '; -$lang['copy_view_new_entry']='копирование проÑмотр новых запиÑей'; -$lang['copy_failed']='копирование неудачно'; -$lang['missing_template_file']='нет временого файла'; -$lang['using_default']='иÑпользовать по умолчанию'; -$lang['copyf_title_copy']='копировать заголовок копировать'; -$lang['copyf_to_new_object']='копировать новый объект'; -$lang['copyf_dest_dn']='копировать раÑположение DN'; -$lang['copyf_dest_dn_tooltip']='копировать раÑположение DN toolip'; -$lang['copyf_dest_server']='копировать раÑположение Ñервера'; -$lang['copyf_note']='копировать запиÑку'; -$lang['copyf_recursive_copy']='копирование рекурÑивное копирование'; -$lang['create_required_attribute']='Ñоздать необходимый атрибут'; -$lang['create_redirecting']='Ñоздать переназначение'; -$lang['create_here']='Ñоздать ÑдеÑÑŒ'; -$lang['create_could_not_add']='Ñоздание не может добавление'; -$lang['createf_create_object']='Ñоздать объект'; -$lang['createf_choose_temp']='выбрать шаблон'; -$lang['createf_select_temp']='выбрать шаблон'; -$lang['createf_proceed']='обработаный'; -$lang['ctemplate_on_server']='на Ñервер'; -$lang['ctemplate_no_template']='нет шаблона'; -$lang['ctemplate_config_handler']='Ñкофигурировать инÑтруктора'; -$lang['ctemplate_handler_does_not_exist']='конÑтруктор не ÑущеÑтвует'; -$lang['you_have_not_logged_into_server']='Ð’Ñ‹ не зарегеÑтрировалиÑÑŒ на Ñервере'; -$lang['click_to_go_to_login_form']='нажмите Ð´Ð»Ñ Ñ€ÐµÐ³Ð¸Ñтрации'; -$lang['unrecognized_criteria_option']='неизвеÑна Ð¾Ð¿Ñ†Ð¸Ñ ÐºÑ€Ð¸Ñ‚ÐµÑ€Ð¸Ñ'; -$lang['if_you_want_to_add_criteria']='еÑли Ð’Ñ‹ хотите добавить критерий'; -$lang['entries_found']='запиÑи найдены'; -$lang['filter_performed']='фильтер выполнен'; -$lang['search_duration']='поиÑк длительный'; -$lang['seconds']='Ñекунды'; -$lang['scope_in_which_to_search']='в которой иÑкать'; -$lang['scope_sub']='под'; -$lang['scope_one']='одна облаÑÑ‚ÑŒ'; -$lang['scope_base']='база'; -$lang['standard_ldap_search_filter']='Ñтандартный ldap поиÑковый фильтер'; +//copy.php +$lang['copy_server_read_only'] = 'Ð’Ñ‹ не можете производить Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾ тех пор, пока Ñервер находитÑÑ Ð² режиме "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"'; +$lang['copy_dest_dn_blank'] = 'Ð’Ñ‹ не заполнили конечный DN.'; +$lang['copy_dest_already_exists'] = 'ÐšÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ (%s) уже ÑужеÑтвует.'; +$lang['copy_dest_container_does_not_exist'] = 'Конечный контейнер (%s) не ÑущеÑтвует.'; +$lang['copy_source_dest_dn_same'] = 'ИÑходный и конечный DN одинаковы.'; +$lang['copy_copying'] = 'Сопирую '; +$lang['copy_recursive_copy_progress'] = 'ПрогреÑÑ Ñ€ÐµÐºÑƒÑ€Ñивного копированиÑ'; +$lang['copy_building_snapshot'] = 'Создаю копию ÑоÑтоÑÐ½Ð¸Ñ Ð´ÐµÑ€ÐµÐ²Ð° Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ... '; +$lang['copy_successful_like_to'] = 'Копирование прошло уÑпешно! Ð’Ñ‹ хотите '; +$lang['copy_view_new_entry'] = 'проÑмотреть новую запиÑÑŒ'; +$lang['copy_failed'] = 'Ðе удалоÑÑŒ Ñкопировать DN: '; + +//edit.php +$lang['missing_template_file'] = 'Предупреджение: отÑутÑтвуе файл шаблона, '; +$lang['using_default'] = 'ИÑпользую оÑновной.'; +$lang['template'] = 'Шаблон'; +$lang['must_choose_template'] = 'Ð’Ñ‹ должны выбрать шаблон'; +$lang['invalid_template'] = '%s неверный шаблон'; +$lang['using_template'] = 'иÑпользую шаблон'; +$lang['go_to_dn'] = 'Перейти к %s'; + +//copy_form.php +$lang['copyf_title_copy'] = 'Копировать '; +$lang['copyf_to_new_object'] = 'в новый объект'; +$lang['copyf_dest_dn'] = 'Конечный DN'; +$lang['copyf_dest_dn_tooltip'] = 'Полный DN новой запиÑи будет Ñоздан при копировании иÑходной'; +$lang['copyf_dest_server'] = 'Конечный Ñервер'; +$lang['copyf_note'] = 'ПодÑказка: Копирование между различными Ñерверами Ñработает, еÑли между ними нет противоречий в Ñхемах'; +$lang['copyf_recursive_copy'] = 'РекурÑивно Ñкопировать и вÑех потомков Ñтого объекта.'; +$lang['recursive_copy'] = 'РекурÑивное копирование'; +$lang['filter'] = 'Фильтр'; +$lang['filter_tooltip'] = 'ЕÑли производите рекурÑивное копирование - копируйте только те запиÑи, которые ÑоответÑтвуют Ñтому фильтру'; + +//create.php +$lang['create_required_attribute'] = 'Ð’Ñ‹ оÑтавили пуÑтым значение Ð´Ð»Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ð¾Ð³Ð¾ атрибута (%s).'; +$lang['redirecting'] = 'Переназначаю...'; +$lang['here'] = 'Ñюда'; +$lang['create_could_not_add'] = 'Ðе удалоÑÑŒ добавить объект на LDAP-Ñервер.'; + +//create_form.php +$lang['createf_create_object'] = 'Создать объект'; +$lang['createf_choose_temp'] = 'Выберите шаблон'; +$lang['createf_select_temp'] = 'Выберите шаблон Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°'; +$lang['createf_proceed'] = 'Далее'; +$lang['rdn_field_blank'] = 'Ð’Ñ‹ оÑтавили RDN поле пуÑтым.'; +$lang['container_does_not_exist'] = 'Контейнер, который Ð’Ñ‹ указали (%s) не ÑущеÑтвует. Попробуйте еще раз.'; +$lang['no_objectclasses_selected'] = 'Ð’Ñ‹ не выбрали ни одного клаÑÑа Ð´Ð»Ñ Ñтого объекта. ВернитеÑÑŒ и Ñделайте Ñто.'; +$lang['hint_structural_oclass'] = 'ПодÑказка: Ð’Ñ‹ должны выбрать как минимум один Ñтруктурный клаÑÑ'; + +//creation_template.php +$lang['ctemplate_on_server'] = 'Ðа Ñервере'; +$lang['ctemplate_no_template'] = 'Ð’ POST переменных не указан шаблон.'; +$lang['ctemplate_config_handler'] = 'Ваша ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ обработчик'; +$lang['ctemplate_handler_does_not_exist'] = 'Ð´Ð»Ñ Ñтого шаблона. Ðо Ñтот обработчик не ÑущеÑтвует в каталоге templates/creation.'; +$lang['create_step1'] = 'Шаг 1 из 2: Ð˜Ð¼Ñ Ð¸ клаÑÑ(Ñ‹) объекта'; +$lang['create_step2'] = 'Шаг 2 из 2: Определение атрибутов и значений'; +$lang['relative_distinguished_name'] = 'ОтноÑительное оттличительное имÑ'; +$lang['rdn'] = 'RDN'; +$lang['rdn_example'] = '(пример: cn=MyNewPerson)'; +$lang['container'] = 'Контейнер'; +$lang['alias_for'] = 'ÐÐ»Ð¸Ð°Ñ Ð´Ð»Ñ %s'; + +// search.php +$lang['you_have_not_logged_into_server'] = 'Ð’Ñ‹ еще на вошли на выбранный Ñервер, поÑтому Ð’Ñ‹ не можете производить на нем поиÑк.'; +$lang['click_to_go_to_login_form'] = 'Ðажмите здеÑÑŒ чтобы перейти на форму входа на Ñервер'; +$lang['unrecognized_criteria_option'] = 'ÐераÑпознанный критерий поиÑка: '; +$lang['if_you_want_to_add_criteria'] = 'ЕÑли Ð’Ñ‹ хотите добавить Ñвои критерии поиÑка в ÑпиÑок, отредактируйте search.php, чтобы они поддерживалиÑÑŒ. Выхожу.'; +$lang['entries_found'] = 'Ðайдено запиÑей: '; +$lang['filter_performed'] = 'Применен фильтр: '; +$lang['search_duration'] = 'phpLDAPadmin произвел поиÑк за'; +$lang['seconds'] = 'Ñекунд'; + +// search_form_advanced.php +$lang['scope_in_which_to_search'] = 'ОблаÑÑ‚ÑŒ поиÑка'; +$lang['scope_sub'] = 'Ð’Ñе (вÑе поддерево)'; +$lang['scope_one'] = 'Один (один уровень под базовым)'; +$lang['scope_base'] = 'База (только базовый dn)'; +$lang['standard_ldap_search_filter'] = 'Стандартный фильтр поиÑка LDAP. Пример: (&(sn=Smith)(givenname=David))'; $lang['search_filter'] = 'Фильтр поиÑка'; -$lang['list_of_attrs_to_display_in_results']='ÑпиÑок атрибутов показать в результате'; -$lang['starts with'] = 'начинаетÑÑ Ñ';//'starts with'; -$lang['ends with'] = 'заканчиваетÑÑ Ð½Ð°';//'ends with'; -$lang['sounds like']='звучит подобно'; -$lang['could_not_fetch_server_info']='не могу получить информацию Ñ Ñервера'; -$lang['server_info_for']='инфа Ñервера длÑ'; -$lang['server_reports_following']='отчет Ñервера Ñледует'; -$lang['nothing_to_report']='нечего показать Ð´Ð»Ñ Ð¾Ñ‚Ñ‡ÐµÑ‚Ð°'; -$lang['update_array_malformed']='update_array_malformed'; -$lang['could_not_perform_ldap_modify']='Ð½ÐµÐ»ÑŒÐ·Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ изменение ldap'; -$lang['do_you_want_to_make_these_changes']='хотите Ñделать Ñти изменениÑ'; -$lang['attribute']='атрибут'; -$lang['old_value']='Ñтарое значение'; -$lang['new_value']='новое значение'; -$lang['attr_deleted']='атрибут удален'; -$lang['commit']='подтвердить'; -$lang['cancel']='отменить'; -$lang['you_made_no_changes']='Ð’Ñ‹ ничего не изменили '; -$lang['go_back']='назад'; -$lang['welcome_note']='ИÑпользуйте меню Ñлева Ð´Ð»Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ð¸'; -$lang['unsafe_file_name']='ненадежное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°'; -$lang['no_such_file']='нет такого файла'; -$lang['auto_update_not_setup']='авто-обновление не уÑтанавливать'; -$lang['uidpool_not_set']='uidpool не указан'; -$lang['uidpool_not_exist']='uidpool не ÑущеÑтвует'; -$lang['specified_uidpool']='определите uidpool'; -$lang['auto_uid_invalid_value']='auto uid неправильное значение'; -$lang['error_auth_type_config']='error_auth_type_config'; -$lang['php_install_not_supports_tls']='уÑтановленый PHP не поддерживает tls'; -$lang['could_not_start_tls']='Ð½ÐµÐ»ÑŒÐ·Ñ Ð½Ð°Ñ‡Ð°Ñ‚ÑŒ tls'; -$lang['auth_type_not_valid']='тип авторизации не правильный'; -$lang['ldap_said']='ldap Ñказал'; -$lang['ferror_error']='ошибка'; -$lang['fbrowse']='проÑмотреть'; -$lang['delete_photo']='удалить фото'; -$lang['install_not_support_blowfish']='уÑтановка не поддерживает blowfish'; -$lang['install_no_mash']='install_no_mash'; -$lang['jpeg_contains_errors']='jpeg Ñодержит ошибки'; -$lang['ferror_number']='номер ошибки'; -$lang['ferror_discription']='ошибка опиÑаниÑ'; -$lang['ferror_number_short']='чиÑло короткое'; -$lang['ferror_discription_short']='опиÑание короткое'; -$lang['ferror_submit_bug']='подтвердите баг'; -$lang['ferror_unrecognized_num']='неивеÑный номер ошибки '; -$lang['ferror_nonfatil_bug']='не Ñ„Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°'; -$lang['ferror_congrats_found_bug']='поздравление нашедшим баг'; +$lang['list_of_attrs_to_display_in_results'] = 'СпиÑок атрибутов, которые отображать в результатах (разделенные запÑтыми)'; +$lang['show_attributes'] = 'Показать атрибуты'; + +// search_form_simple.php +$lang['search_for_entries_whose'] = 'ИÑкать запиÑи, которые:'; +$lang['equals'] = 'равны'; +$lang['starts with'] = 'начинаютÑÑ Ñ'; +$lang['contains'] = 'Ñодержат'; +$lang['ends with'] = 'заканчиваютÑÑ Ð½Ð°'; +$lang['sounds like'] = 'похожи на'; + +// server_info.php +$lang['could_not_fetch_server_info'] = 'Ðе могу получить LDAP-информацию Ñ Ñервера'; +$lang['server_info_for'] = 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ Ñервере: '; +$lang['server_reports_following'] = 'Сервер Ñообщил о Ñебе Ñледующую информацию'; +$lang['nothing_to_report'] = 'Этому Ñерверу нечего о Ñебе Ñообщить.'; + +//update.php +$lang['update_array_malformed'] = 'неправильно Ñформирован update_array. Возможно Ñто ошибка phpLDAPadmin. Сообщите о ней.'; +$lang['could_not_perform_ldap_modify'] = 'Ðе удалоÑÑŒ произвеÑти операцию ldap_modify.'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'Ð’Ñ‹ дейÑтвительно хотите произвеÑти Ñти изменениÑ?'; +$lang['attribute'] = 'Ðтрибут'; +$lang['old_value'] = 'Старое значение'; +$lang['new_value'] = 'Ðовое значение'; +$lang['attr_deleted'] = '[атрибут удален]'; +$lang['commit'] = 'Подтвердить'; +$lang['cancel'] = 'Отменить'; +$lang['you_made_no_changes'] = 'Ð’Ñ‹ не Ñделали никаких изменений'; +$lang['go_back'] = 'ВернутьÑÑ'; + +// welcome.php +$lang['welcome_note'] = 'ИÑпользуйте меню Ñлева Ð´Ð»Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ð¸'; +$lang['credits'] = 'Создатели'; +$lang['changelog'] = 'СпиÑок изменений'; +$lang['donate'] = 'СпонÑировать'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = 'ÐебезопаÑтное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°: '; +$lang['no_such_file'] = 'Ðет такого файла: '; + +//function.php +$lang['auto_update_not_setup'] = 'Ð’Ñ‹ разрешили auto_uid_numbers Ð´Ð»Ñ %s в Вашей конфигурации, + но Ð’Ñ‹ не указали auto_uid_number_mechanism. ПожалуйÑта иÑправьте Ñту проблему.'; +$lang['uidpool_not_set'] = 'Ð’Ñ‹ указали "auto_uid_number_mechanism" как "uidpool" + в Вашей конфигурации Ð´Ð»Ñ Ñервера %s, но не указали + audo_uid_number_uid_pool_dn. ИÑправьте Ñто перед тем как продолжить.'; +$lang['uidpool_not_exist'] = 'Похоже что uidPool, который Ð’Ñ‹ указали в Вашей конфигурации ("%s") + не ÑущеÑтвует.'; +$lang['specified_uidpool'] = 'Ð’Ñ‹ указали "auto_uid_number_mechanism" как "search" в Вашей кофигурации + Ð´Ð»Ñ Ñервера %s, но не указали + "auto_uid_number_search_base". ИÑправьте Ñто перед тем как продолжить.'; +$lang['auto_uid_invalid_credential'] = 'Ðе могу привÑзатьÑÑ Ðº %s Ñ Ð’Ð°ÑˆÐ¸Ð¼Ð¸ auto_uid данными. Проверьте Ваш файл конфигурации.'; +$lang['bad_auto_uid_search_base'] = 'Ð’ Вашей конфигурации phpLDAPadmin указано неверное значение Ð´Ð»Ñ auto_uid_search_base Ð´Ð»Ñ Ñервера %s'; +$lang['auto_uid_invalid_value'] = 'Ð’Ñ‹ указали неверное значение Ð´Ð»Ñ auto_uid_number_mechanism ("%s") + в Вашей конфигурации. Возможны только "uidpool" и "search". + ПожалуйÑта иÑправьте Ñту проблему.'; +$lang['error_auth_type_config'] = 'Ошибка: Ð’ Вашем конфигурационном файле ошибка. ЕдинÑтвенные три допуÑтимых Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ + Ð´Ð»Ñ auth_type в Ñекции $servers - \'session\', \'cookie\', и \'config\'. Ð’Ñ‹ ввели \'%s\', + что недопуÑтимо. '; +$lang['php_install_not_supports_tls'] = 'Ваша уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ PHP не поддерживает TLS.'; +$lang['could_not_start_tls'] = 'Ðе могу запуÑтить TLS. Проверьте конфигурацию Вашего LDAP-Ñервера.'; +$lang['could_not_bind_anon'] = 'Ðе могу анонимно привÑзатьÑÑ Ðº Ñерверу.'; +$lang['could_not_bind'] = 'Ðе удалоÑÑŒ привÑзатьÑÑ Ðº LDAP-Ñерверу.'; +$lang['anonymous_bind'] = 'ÐÐ½Ð¾Ð½Ð¸Ð¼Ð½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка'; +$lang['bad_user_name_or_password'] = 'Ðеверное Ð¸Ð¼Ñ Ð¸Ð»Ð¸ пароль. Попробуйте еще раз.'; +$lang['redirecting_click_if_nothing_happens'] = 'ПеренапрÑвлÑÑŽ... Ðажмите здеÑÑŒ, еÑли ничего не проиÑходит.'; +$lang['successfully_logged_in_to_server'] = 'УÑпешно вошли на Ñервер %s'; +$lang['could_not_set_cookie'] = 'Ðе удалоÑÑŒ уÑтановить cookie.'; +$lang['ldap_said'] = 'LDAP ответил: %s'; +$lang['ferror_error'] = 'Ошибка'; +$lang['fbrowse'] = 'проÑмотр'; +$lang['delete_photo'] = 'Удалить фотографию'; +$lang['install_not_support_blowfish'] = 'Ваша уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ PHP не поддерживает шифрование blowfish.'; +$lang['install_not_support_md5crypt'] = 'Ваша уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ PHP не поддерживает шифрование md5crypt.'; +$lang['install_no_mash'] = 'Ваша уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ PHP не имеет функцию mhash(). Ðе могу Ñоздать Ñ…Ñши SHA.'; +$lang['jpeg_contains_errors'] = 'jpegPhoto Ñодержит ошибки
'; +$lang['ferror_number'] = 'Ðомер ошибки: %s (%s)'; +$lang['ferror_discription'] = 'ОпиÑание: %s

'; +$lang['ferror_number_short'] = 'Ðомер ошибки: %s

'; +$lang['ferror_discription_short'] = 'ОпиÑание: (нет опиÑаниÑ)
'; +$lang['ferror_submit_bug'] = 'ЕÑли Ñто ошибка phpLDAPadmin - пожалуйÑта, Ñообщите о ней.'; +$lang['ferror_unrecognized_num'] = 'ÐераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: '; +$lang['ferror_nonfatil_bug'] = '
+
+ Вы нашли нефатальную ошибку phpLDAPadmin!
Ошибка:%s (%s)
Файл:%s Ñтрока %s, вызвано %s
ВерÑии:PLA: %s, PHP: %s, SAPI: %s +
Web Ñервер:%s
+ Сообщите об Ñтой ошибке нажав здеÑÑŒ.

'; +$lang['ferror_congrats_found_bug'] = 'ПоздравлÑем! Ð’Ñ‹ нашли ошибку в phpLDAPadmin.

+ + + + + + + + + + +
Ошибка:%s
Уровень:%s
Файл:%s
Строка:%s
Вызвано:%s
PLA ВерÑиÑ:%s
PHP ВерÑиÑ:%s
PHP SAPI:%s
Web Ñервер:%s
+
+ Сообщите об Ñтой ошибке нажав ниже!'; + +//ldif_import_form +$lang['import_ldif_file_title'] = 'Иморт LDIF файла'; +$lang['select_ldif_file'] = 'Выберите LDIF файл:'; +$lang['select_ldif_file_proceed'] = 'Далее >>'; +$lang['dont_stop_on_errors'] = 'Ðе оÑтанавливатьÑÑ Ð½Ð° ошибках'; + +//ldif_import +$lang['add_action'] = 'ДобавлÑÑŽ...'; +$lang['delete_action'] = 'УдалÑÑŽ...'; +$lang['rename_action'] = 'Переименовываю...'; +$lang['modify_action'] = 'ИзменÑÑŽ...'; +$lang['warning_no_ldif_version_found'] = 'Ðе найдено номера верÑии. Предполагаю 1.'; +$lang['valid_dn_line_required'] = 'ТребуетÑÑ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñтрока Ñ dn.'; +$lang['missing_uploaded_file'] = 'ОтÑутÑтвует загруженный файл.'; +$lang['no_ldif_file_specified.'] = 'не указан LDIF файл. Попробуйте еще раз.'; +$lang['ldif_file_empty'] = 'Загруженный LDIF файл пуÑÑ‚.'; +$lang['empty'] = 'пуÑÑ‚'; +$lang['file'] = 'Файл'; +$lang['number_bytes'] = '%s байт'; + +$lang['failed'] = 'Ðе удалоÑÑŒ'; +$lang['ldif_parse_error'] = 'Ошибка интерпретации LDIF файла'; +$lang['ldif_could_not_add_object'] = 'Ðе удалоÑÑŒ добавить объект:'; +$lang['ldif_could_not_rename_object'] = 'Ðе удалоÑÑŒ переименовать объект:'; +$lang['ldif_could_not_delete_object'] = 'Ðе удалоÑÑŒ удалить объект:'; +$lang['ldif_could_not_modify_object'] = 'Ðе удалоÑÑŒ изменить объект:'; +$lang['ldif_line_number'] = 'Ðомер Ñтроки:'; +$lang['ldif_line'] = 'Строка:'; + +// Exports +$lang['export_format'] = 'Формат ÑкÑпорта'; +$lang['line_ends'] = 'Конец Ñтроки'; +$lang['must_choose_export_format'] = 'Ð’Ñ‹ должны выбрать формат ÑкÑпорта.'; +$lang['invalid_export_format'] = 'Ðеверный формат ÑкÑпорта'; +$lang['no_exporter_found'] = 'Ðет доÑтупных ÑкÑпортеров.'; +$lang['error_performing_search'] = 'Произошла ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка.'; +$lang['showing_results_x_through_y'] = 'Показываю результаты Ñ %s по %s.'; +$lang['searching'] = 'ПоиÑк...'; +$lang['size_limit_exceeded'] = 'Внимание, превышен размер поиÑка.'; +$lang['entry'] = 'ЗапиÑÑŒ'; +$lang['ldif_export_for_dn'] = 'LDIF ÑкÑпорт длÑ: %s'; +$lang['generated_on_date'] = 'Сгенерировано phpLDAPadmin %s'; +$lang['total_entries'] = 'Ð’Ñего запиÑей'; +$lang['dsml_export_for_dn'] = 'DSLM ÑкÑпорт длÑ: %s'; + +// logins +$lang['could_not_find_user'] = 'Ðе могу найти Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ "%s"'; +$lang['password_blank'] = 'Ð’Ñ‹ не ввели пароль.'; +$lang['login_cancelled'] = 'Вход отменен.'; +$lang['no_one_logged_in'] = 'Ðа Ñтом Ñервере ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ð¸ÐºÐ¾Ð³Ð¾ нет.'; +$lang['could_not_logout'] = 'Ðе удалоÑÑŒ выйти.'; +$lang['unknown_auth_type'] = 'ÐеизвеÑтный auth_type: %s'; +$lang['logged_out_successfully'] = 'УÑпешно вышли Ñ Ñервера %s'; +$lang['authenticate_to_server'] = 'ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° Ñервере %s'; +$lang['warning_this_web_connection_is_unencrypted'] = 'Предупреждение: Это web-Ñоединение нешифровано.'; +$lang['not_using_https'] = 'Ð’Ñ‹ не иÑпользуете \'https\'. Web-браузер передает авторизационные данные открытым текÑтом.'; +$lang['login_dn'] = 'Login DN'; +$lang['user_name'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ'; +$lang['password'] = 'Пароль'; +$lang['authenticate'] = 'ÐвотризациÑ'; + +// Entry browser +$lang['entry_chooser_title'] = 'Выбор запиÑи'; + +// Index page +$lang['need_to_configure'] = 'Вам надо Ñконфигурировать phpLDAPadmin. Отредактируйте файл \'config.php\'. Примерный файл наÑтроек - \'config.php.example\''; + +// Mass deletes +$lang['no_deletes_in_read_only'] = 'Удаление невозможно в режиме "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ".'; +$lang['error_calling_mass_delete'] = 'Ошибка вызова mass_delete.php. ОтÑутÑтвует mass_delete в POST переменных.'; +$lang['mass_delete_not_array'] = 'POST Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ mass_delete не в маÑÑиве.'; +$lang['mass_delete_not_enabled'] = 'МаÑÑовое удаление не разрешено. ИÑпровьте Ñто в config.php перед тем как продолжить.'; +$lang['mass_deleting'] = 'МаÑÑовое удаление'; +$lang['mass_delete_progress'] = 'ПрогреÑÑ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð½Ð° Ñервере "%s"'; +$lang['malformed_mass_delete_array'] = 'Ðеправильно Ñформированный маÑÑив mass_delete.'; +$lang['no_entries_to_delete'] = 'Ð’Ñ‹ не выбрали ни одной запиÑи Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ.'; +$lang['deleting_dn'] = 'УдалÑÑŽ %s'; +$lang['total_entries_failed'] = 'Ðе удалоÑÑŒ удалить %s из %s запиÑей.'; +$lang['all_entries_successful'] = 'Ð’Ñе запиÑи уÑпешно удалены.'; +$lang['confirm_mass_delete'] = 'Подтвердите маÑÑовое удаление %s запиÑей на Ñервере %s'; +$lang['yes_delete'] = 'Да, удалить!'; + +// Renaming entries +$lang['non_leaf_nodes_cannot_be_renamed'] = 'Ð’Ñ‹ не можете переименовать запиÑÑŒ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¸Ð¼ÐµÐµÑ‚ потомков (Ñ‚.е., Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ допуÑтима Ð´Ð»Ñ Ð´ÐµÑ€ÐµÐ²Ð°)'; +$lang['no_rdn_change'] = 'Ð’Ñ‹ не изменили RDN'; +$lang['invalid_rdn'] = 'Ðеверное значение RDN'; +$lang['could_not_rename'] = 'Ðе удалоÑÑŒ переименовать запиÑÑŒ'; ?> diff --git a/lang/sv.php b/lang/sv.php new file mode 100644 index 0000000..91255ec --- /dev/null +++ b/lang/sv.php @@ -0,0 +1,387 @@ + + * based on 0.9.3 Version + +*/ + +// Search form +$lang['simple_search_form_str'] = 'Enkel sökning';//'Simple Search Form'; +$lang['advanced_search_form_str'] = 'Expertsökning';//'Advanced Search Form'; +$lang['server'] = 'Server';//'Server'; +$lang['search_for_entries_whose'] = 'Sök efter rader som';//'Search for entries whose'; +$lang['base_dn'] = 'Base DN';//'Base DN'; +$lang['search_scope'] = 'Sökomfång';//Search Scope'; +$lang['search_ filter'] = 'Sökfilter';//'Search Filter'; +$lang['show_attributes'] = 'Visa attribut';//'Show Attributtes'; +$lang['Search'] = 'Sök';// 'Search'; +$lang['equals'] = 'lika med';//'equals'; +$lang['starts_with'] = 'Börjar med';//'starts with'; +$lang['contains'] = 'innehåller';//'contains'; +$lang['ends_with'] = 'slutar med';//'ends with'; +$lang['sounds_like'] = 'låter som';//'sounds like'; + +// Tree browser +$lang['request_new_feature'] = 'Begär en ny funktion';//'Request a new feature'; +$lang['see_open_requests'] = 'Se öppna förfrågningar';//'see open requests'; +$lang['report_bug'] = 'Rapportera ett fel';//'Report a bug'; +$lang['see_open_bugs'] = 'Se öppna felrapporter';//'see open bugs'; +$lang['schema'] = 'schema';//'schema'; +$lang['search'] = 'sökning';//'search'; +$lang['create'] = 'skapa';//'create'; +$lang['info'] = 'information';//'info'; +$lang['import'] = 'importera';//'import'; +$lang['refresh'] = 'uppdatera';//'refresh'; +$lang['logout'] = 'logga ut';//'logout'; +$lang['create_new'] = 'Skapa ny';//'Create New'; +$lang['view_schema_for'] = 'Titta på schema för';//'View schema for'; +$lang['refresh_expanded_containers'] = 'Uppdatera alla öpnna behållare för';//'Refresh all expanded containers for'; +$lang['create_new_entry_on'] = 'Skapa en ny post för';//'Create a new entry on'; +$lang['view_server_info'] = 'Titta på information som servern tillhandahållit';//'View server-supplied information'; +$lang['import_from_ldif'] = 'Importera rader från LDIF file';//'Import entries from an LDIF file'; +$lang['logout_of_this_server'] = 'Logga ut från den här servern';//'Logout of this server'; +$lang['logged_in_as'] = '/Inloggad som';//'Logged in as: '; +$lang['read_only'] = 'Enbart läsning';//'read only'; +$lang['could_not_determine_root'] = 'Kan inte bestämma roten för ditt LDAP träd';//'Could not determine the root of your LDAP tree.'; +$lang['ldap_refuses_to_give_root'] = 'Det ser ut som om LDAP-servern har konfigurerats att inte avslöja sin rot.';//'It appears that the LDAP server has been configured to not reveal its root.'; +$lang['please_specify_in_config'] = 'Var snäll och specificera i config.php';//'Please specify it in config.php'; +$lang['create_new_entry_in'] = 'Skapa en ny post i';//'Create a new entry in'; +$lang['login_link'] = 'Logga in...';//'Login...'; + +// Entry display +$lang['delete_this_entry'] = 'Ta bort den här posten';//'Delete this entry'; +$lang['delete_this_entry_tooltip'] = 'Du kommer att bli tillfrågad för att konfirmera det här beslutet';//'You will be prompted to confirm this decision'; +$lang['copy_this_entry'] = 'Kopiera den här posten';//'Copy this entry'; +$lang['copy_this_entry_tooltip'] = 'Kopiera det här objektet till en annan plats, ett nytt DN, eller en annan server';//'Copy this object to another location, a new DN, or another server'; +$lang['export_to_ldif'] = 'Exportera till LDIF';//'Export to LDIF'; +$lang['export_to_ldif_tooltip'] = 'Spara en LDIF kopia av detta objekt';//'Save an LDIF dump of this object'; +$lang['export_subtree_to_ldif_tooltip'] = 'Spara en LDIF kopia av detta objekt och alla dess underobjekt';//'Save an LDIF dump of this object and all of its children'; +$lang['export_subtree_to_ldif'] = 'Exportera subträdet till LDIF';//'Export subtree to LDIF'; +$lang['export_to_ldif_mac'] = 'Radslut enligt Macintosh-standard';// 'Macintosh style line ends'; +$lang['export_to_ldif_win'] = 'Radslut enligt Windows-standard';//'Windows style line ends'; +$lang['export_to_ldif_unix'] = 'Radslut enligt Unix-standard';//'Unix style line ends'; +$lang['create_a_child_entry'] = 'Skapa en subpost';//'Create a child entry'; +$lang['add_a_jpeg_photo'] = 'Lägg till ett JPEG-foto';//'Add a jpegPhoto'; +$lang['rename_entry'] = 'Döp om posten';//'Rename Entry'; +$lang['rename'] = 'Döp om ';//'Rename'; +$lang['add'] = 'Lägg till';//'Add'; +$lang['view'] = 'Titta';//'View'; +$lang['add_new_attribute'] = 'Lägg till ett nytt attribut';//'Add New Attribute'; +$lang['add_new_attribute_tooltip'] = 'Lägg till ett nytt attribut/värde till denna post';//'Add a new attribute/value to this entry'; +$lang['internal_attributes'] = 'Interna attribut';//'Internal Attributes'; +$lang['hide_internal_attrs'] = 'Göm interna attribut';//'Hide internal attributes'; +$lang['show_internal_attrs'] ='Visa interna attribut';// 'Show internal attributes'; +$lang['internal_attrs_tooltip'] = 'Attribut som sätts automatiskt av systemet';//'Attributes set automatically by the system'; +$lang['entry_attributes'] = 'Ingångsattribut';//'Entry Attributes'; +$lang['attr_name_tooltip'] = 'Klicka för att titta på schemadefinitionen för attributtyp \'%s\'';//'Click to view the schema defintion for attribute type \'%s\''; +$lang['click_to_display'] = 'klicka\'+\' för att visa';// 'click \'+\' to display'; +$lang['hidden'] = 'gömda';//'hidden'; +$lang['none'] = 'inget';//'none'; +$lang['save_changes'] = 'Spara ändringar';//'Save Changes'; +$lang['add_value'] = 'lägg till värde';//'add value'; +$lang['add_value_tooltip'] = 'Lägg till ett ytterligare värde till attribut \'%s\''; // 'Add an additional value to attribute \'%s\''; +$lang['refresh_entry'] = 'Uppdatera';//'Refresh'; +$lang['refresh_this_entry'] = 'Uppdatera denna post';//'Refresh this entry'; +$lang['delete_hint'] = 'Tips: För att ta bort ett attribut, ta bort all text i textfältet och klicka \'Spara ändringar\'.'; 'Hint: To delete an attribute, empty the text field and click save.'; +$lang['attr_schema_hint'] = 'Tips: För att titta på ett attributs schema, klicka på attributnamnet';//'Hint: To view the schema for an attribute, click the attribute name.'; +$lang['attrs_modified'] = 'Några attribut var ändrade och är markerade nedan.';//'Some attributes (%s) were modified and are highlighted below.'; +$lang['attr_modified'] = 'Ett attribut var ändrat och är markerat nedan.';//An attribute (%s) was modified and is highlighted below.'; +$lang['viewing_read_only'] = 'Titta på en post med enbart lästiilstånd';//'Viewing entry in read-only mode.'; +$lang['change_entry_rdn'] = 'ändra denna posts RDN';//'Change this entry\'s RDN'; +$lang['no_new_attrs_available'] = 'inga nya attribut tillgängliga för denna post';//'no new attributes available for this entry'; +$lang['binary_value'] = 'Binärt värde';//'Binary value'; +$lang['add_new_binary_attr'] = 'Lägg till nytt binärt attribut';//'Add New Binary Attribute'; +$lang['add_new_binary_attr_tooltip'] = 'Lägg till nytt binärt attribut/värde från en fil';//'Add a new binary attribute/value from a file'; +$lang['alias_for'] = 'Observera: \'%s\' är ett alias for \'%s\'';//'Note: \'%s\' is an alias for \'%s\''; +$lang['download_value'] = 'ladda ner värde';//'download value'; +$lang['delete_attribute'] = 'ta bort attribut';//'delete attribute'; +$lang['true'] = 'Sant';//'true'; +$lang['false'] = 'Falskt';//'false'; +$lang['none_remove_value'] = 'inget, ta bort värdet';//'none, remove value'; +$lang['really_delete_attribute'] = 'Ta definitivt bort värdet';//'Really delete attribute'; + +// Schema browser +$lang['the_following_objectclasses'] = 'Följande objektklasser stöds av denna LDAP server.';//'The following objectClasses are supported by this LDAP server.'; +$lang['the_following_attributes'] = 'Följande attributtyper stöds av denna LDAP server.';//'The following attributeTypes are supported by this LDAP server.'; +$lang['the_following_matching'] = 'Följande matchningsregler stöds av denna LDAP server.';//'The following matching rules are supported by this LDAP server.'; +$lang['the_following_syntaxes'] = 'Följande syntax stöds av denna LDAP server.';//'The following syntaxes are supported by this LDAP server.'; +$lang['jump_to_objectclass'] = 'Välj en objectClass';//'Jump to an objectClass'; +$lang['jump_to_attr'] = 'Välj en attributtyp';//'Jump to an attribute type'; +$lang['schema_for_server'] = 'Schema för servern';//'Schema for server'; +$lang['required_attrs'] = 'Nödvändiga attribut';//'Required Attributes'; +$lang['optional_attrs'] = 'Valfria attribut';//'Optional Attributes'; +$lang['OID'] = 'OID';//'OID'; +$lang['desc'] = 'Beskrivning';//'Description'; +$lang['name'] = 'Namn';//'Name'; +$lang['is_obsolete'] = 'Denna objectClass är föråldrad';//'This objectClass is obsolete'; +$lang['inherits'] = 'ärver';//'Inherits'; +$lang['jump_to_this_oclass'] = 'Gå till definitionen av denna objectClass';//'Jump to this objectClass definition'; +$lang['matching_rule_oid'] = 'Matchande regel-OID';//'Matching Rule OID'; +$lang['syntax_oid'] = 'Syntax-OID';//'Syntax OID'; +$lang['not_applicable'] = 'inte tillämplig';//'not applicable'; +$lang['not_specified'] = 'inte specificerad';//'not specified'; + +// Deleting entries +$lang['entry_deleted_successfully'] = 'Borttagning av posten \'%s\' lyckades';//'Entry \'%s\' deleted successfully.'; +$lang['you_must_specify_a_dn'] = 'Du måste specificera ett DN';//'You must specify a DN'; +$lang['could_not_delete_entry'] = 'Det gick inte att ta bort posten';//'Could not delete the entry: %s'; + +// Adding objectClass form +$lang['new_required_attrs'] = 'Nya nödvändiga attribut';//'New Required Attributes'; +$lang['requires_to_add'] = 'Den här åtgärden kräver att du lägger till';//'This action requires you to add'; +$lang['new_attributes'] = 'nya attribut';//'new attributes'; +$lang['new_required_attrs_instructions'] = 'Instruktioner: För att kunna lägga till objektklassen till denna post, måste du specificera';//'Instructions: In order to add this objectClass to this entry, you must specify'; +$lang['that_this_oclass_requires'] = 'att objektklassen kräver. Det kan göras i detta formulär.';//'that this objectClass requires. You can do so in this form.'; +$lang['add_oclass_and_attrs'] = 'Lägg till objektklass och attribut';//'Add ObjectClass and Attributes'; + +// General +$lang['chooser_link_tooltip'] = 'Klicka för att öppna ett fönster för att välja ett grafiskt.';//'Click to popup a dialog to select an entry (DN) graphically'; +$lang['no_updates_in_read_only_mode'] = 'Du kan inte göra uppdateringar medan servern är i lästillstånd';//'You cannot perform updates while server is in read-only mode'; +$lang['bad_server_id'] = 'Felaktigt server-id';//'Bad server id'; +$lang['not_enough_login_info'] = 'Det saknas information för att logga in på servern. Var vänlig och kontrollera din konfiguration.';//'Not enough information to login to server. Please check your configuration.'; +$lang['could_not_connect'] = 'Det gick inte att ansluta till LDAP-servern.';//'Could not connect to LDAP server.'; +$lang['could_not_perform_ldap_mod_add'] = 'Det gick inte att utföra ldap_mod_add operationen.';//''Could not perform ldap_mod_add operation.'; +$lang['bad_server_id_underline'] = 'Felaktigt server_id';//'Bad server_id: '; +$lang['success'] = 'Det lyckades';//'Success'; +$lang['server_colon_pare'] = 'Server';//'Server: '; +$lang['look_in'] = 'Tittar in';//'Looking in: '; +$lang['missing_server_id_in_query_string'] = 'Inget server-ID specificerat i frågesträgen!';//'No server ID specified in query string!'; +$lang['missing_dn_in_query_string'] = 'Inget DN specificerat i frågesträgen!';//'No DN specified in query string!'; +$lang['back_up_p'] = 'Tillbaka';//'Back Up...'; +$lang['no_entries'] = 'inga poster';//'no entries'; +$lang['not_logged_in'] = 'Inte inloggad';//'Not logged in'; +$lang['could_not_det_base_dn'] = 'Det gick inte att bestämma \'base DN\'';//'Could not determine base DN'; + +// Add value form +$lang['add_new'] = 'Lägg till nytt';//'Add new'; +$lang['value_to'] = 'värde till';//'value to'; +$lang['distinguished_name'] = 'Distinguished Name';//'Distinguished Name'; +$lang['current_list_of'] = 'Aktuell lista av';//'Current list of'; +$lang['values_for_attribute'] = 'attributvärden';//'values for attribute'; +$lang['inappropriate_matching_note'] = 'Observera: Du kommer att få ett \'inappropriate matching\'-fel om du inte har
' . + 'satt upp en EQUALITY-regel på din LDAP-server för detta attribut.';// 'Note: You will get an "inappropriate matching" error if you have not
' . + 'setup an EQUALITY rule on your LDAP server for this attribute.'; +$lang['enter_value_to_add'] = 'Skriv in värdet du vill lägga till';//'Enter the value you would like to add:'; +$lang['new_required_attrs_note'] = 'Observera: Du kan bli tvungen att skriva in de nya attribut som denna objectClass behöver';//'Note: you may be required to enter new attributes that this objectClass requires'; +$lang['syntax'] = 'Syntax';//'Syntax'; + +//copy.php +$lang['copy_server_read_only'] = 'Du kan inte göra uppdateringar medan servern är i lästillstånd';//'You cannot perform updates while server is in read-only mode'; +$lang['copy_dest_dn_blank'] = 'Du lämnade destinations-DN tomt';//'You left the destination DN blank.'; +$lang['copy_dest_already_exists'] = 'Destinationen finns redan';//'The destination entry (%s) already exists.'; +$lang['copy_dest_container_does_not_exist'] = 'Destinations-behållaren (%s) finns inte';// 'The destination container (%s) does not exist.'; +$lang['copy_source_dest_dn_same'] = 'Käll- och destinations-DN är samma.';//'The source and destination DN are the same.'; +$lang['copy_copying'] = 'Kopierar';//'Copying '; +$lang['copy_recursive_copy_progress'] = 'Rekursiv kopiering pågår';//'Recursive copy progress'; +$lang['copy_building_snapshot'] = 'Bygger en ögonblicksbild av det träd som ska kopieras';//'Building snapshot of tree to copy... '; +$lang['copy_successful_like_to'] = 'Kopieringen lyckades! Vill du';//'Copy successful! Would you like to '; +$lang['copy_view_new_entry'] = 'titta på den nya posten';//'view the new entry'; +$lang['copy_failed'] = 'Kopiering av DN misslyckades';//'Failed to copy DN: '; + +//edit.php +$lang['missing_template_file'] = 'Varning! mall-filen saknas,';//'Warning: missing template file, '; +$lang['using_default'] = 'använder default.'; //'Using default.'; + +//copy_form.php +$lang['copyf_title_copy'] = 'Kopiera';//'Copy '; +$lang['copyf_to_new_object'] = 'till ett nytt objekt';//'to a new object'; +$lang['copyf_dest_dn'] = 'Destinations-DN';//'Destination DN'; +$lang['copyf_dest_dn_tooltip'] = 'Den nya postens fullständiga DN skapas när källposten kopieras';//'The full DN of the new entry to be created when copying the source entry'; +$lang['copyf_dest_server'] = 'Destinations-server';//'Destination Server'; +$lang['copyf_note'] = 'Tips: Kopiering mellan olika servrar fungerar bara om det inte finns några brott mot schemorna.';// 'Hint: Copying between different servers only works if there are no schema violations'; +$lang['copyf_recursive_copy'] = 'Kopiera även rekursivt alla underobjekt till detta objekt.';//'Recursively copy all children of this object as well.'; + +//create.php +$lang['create_required_attribute'] = 'Du lämnade ett värde tomt för ett nödvändigt attribut %s.';//'You left the value blank for required attribute %s.'; +$lang['create_redirecting'] = 'Omstyrning';//'Redirecting'; +$lang['create_here'] = 'här';//'here'; +$lang['create_could_not_add'] = 'Det gick inte att lägga till objektet till LDAP-servern.';//'Could not add the object to the LDAP server.'; + +//create_form.php +$lang['createf_create_object'] = 'Skapa objekt';//'Create Object'; +$lang['createf_choose_temp'] = 'Välj en mall';//'Choose a template'; +$lang['createf_select_temp'] = 'Välj en mall för att skapa objekt';//'Select a template for the creation process'; +$lang['createf_proceed'] = 'Fortsätt';//'Proceed'; + +//creation_template.php +$lang['ctemplate_on_server'] = 'På servern';//'On server'; +$lang['ctemplate_no_template'] = 'Ingen mall specificerad i POST variablerna.';//'No template specified in POST variables.'; +$lang['ctemplate_config_handler'] = 'Din konfiguration specificerar en hanterare';//'Your config specifies a handler of'; +$lang['ctemplate_handler_does_not_exist'] = 'för denna mall, men hanteraren finns inte i templates/creation-katalogen';//'for this template. But, this handler does not exist in the templates/creation directory.'; + +// search.php +$lang['you_have_not_logged_into_server'] = 'Du har inte loggat in till den valda servern ännu, så du kan inte göra sökningar på den.';//'You have not logged into the selected server yet, so you cannot perform searches on it.'; +$lang['click_to_go_to_login_form'] = 'Klicka här för att komma till login-formuläret';//'Click here to go to the login form'; +$lang['unrecognized_criteria_option'] = 'Känner inte till detta urvals-kriterium';//'Unrecognized criteria option: '; +$lang['if_you_want_to_add_criteria'] = 'Om du vill lägga till ditt eget kriterium till listan, kom ihåg att ändra search.php för att hantera det. Avslutar.';//'If you want to add your own criteria to the list. Be sure to edit search.php to handle them. Quitting.'; +$lang['entries_found'] = 'Poster funna:';//'Entries found: '; +$lang['filter_performed'] = 'Filtrering utförd: ';//'Filter performed: '; +$lang['search_duration'] = 'Sökning utförd av phpLDAPadmin på';//'Search performed by phpLDAPadmin in'; +$lang['seconds'] = 'sekunder';//'seconds'; + +// search_form_advanced.php +$lang['scope_in_which_to_search'] = 'Sökomfattning';//'The scope in which to search'; +$lang['scope_sub'] = 'Sub (Base DN och hela trädet under)';//'Sub (entire subtree)'; +$lang['scope_one'] = 'One (en nivå under Base DN)';//One (one level beneath base)'; +$lang['scope_base'] = 'Base (endast Base DN)';//'Base (base dn only)'; +$lang['standard_ldap_search_filter'] = 'Standard LDAP sökfilter. Exempel: (&(sn=Smith)(givenname=David))';//'Standard LDAP search filter. Example: (&(sn=Smith)(givenname=David))'; +$lang['search_filter'] = 'Sökfilter';//'Search Filter'; +$lang['list_of_attrs_to_display_in_results'] = 'En lista med attribut att visa i resultatet (komma-separerad)';// 'A list of attributes to display in the results (comma-separated)'; +$lang['show_attributes'] = 'Visa attribut';//'Show Attributes'; + +// search_form_simple.php +$lang['search_for_entries_whose'] = 'Sök efter poster som:';//'Search for entries whose:'; +$lang['equals'] = 'är lika med';//'equals'; +$lang['starts with'] = 'börjar med';//'starts with'; +$lang['contains'] = 'innehåller';//'contains'; +$lang['ends with'] = 'slutar med';//'ends with'; +$lang['sounds like'] = 'låter som';//'sounds like'; + +// server_info.php +$lang['could_not_fetch_server_info'] = 'Det gick inte att hämta LDAP information från servern.';//'Could not retrieve LDAP information from the server'; +$lang['server_info_for'] = 'Serverinformation för';//'Server info for: '; +$lang['server_reports_following'] = 'Servern rapporterar följande information om sig själv';//'Server reports the following information about itself'; +$lang['nothing_to_report'] = 'Servern har inget att rapportera';//'This server has nothing to report.'; + +//update.php +$lang['update_array_malformed'] = 'update_array är felaktig. Detta kan vara ett phpLDAPadmin-fel. Var vänlig och rapportera det.';// 'update_array is malformed. This might be a phpLDAPadmin bug. Please report it.'; +$lang['could_not_perform_ldap_modify'] = 'Det gick inte att utföra operationen ldap_modify.';//'Could not perform ldap_modify operation.'; + +// update_confirm.php +$lang['do_you_want_to_make_these_changes'] = 'Vill du göra dessa ändringar?';//'Do you want to make these changes?'; +$lang['attribute'] = 'Attribut';//'Attribute'; +$lang['old_value'] = 'Föregående värde';//'Old Value'; +$lang['new_value'] = 'Nytt värde';//'New Value'; +$lang['attr_deleted'] = '[attributet borttaget]';//'[attribute deleted]'; +$lang['commit'] = 'Bekräfta';//'Commit'; +$lang['cancel'] = 'ångra';//'Cancel'; +$lang['you_made_no_changes'] = 'Du gjorde inga ändringar';//'You made no changes'; +$lang['go_back'] = 'Gå tillbaka';//'Go back'; + +// welcome.php +$lang['welcome_note'] = 'Navigera med hjälp av menyn till vänster';//'Use the menu to the left to navigate'; +$lang['credits'] = 'Tack till';//'Credits'; +$lang['changelog'] = 'ändringslogg';//'ChangeLog'; +$lang['documentation'] = 'Dokumentation';//'Documentation'; + +// view_jpeg_photo.php +$lang['unsafe_file_name'] = 'Osäkert filnamn';//'Unsafe file name: '; +$lang['no_such_file'] = 'Filen finns inte';//'No such file: '; + +//function.php +$lang['auto_update_not_setup'] = 'Du har slagit på auto_uid_numbers för %s i din konfiguration, + men du har inte specificerat auto_uid_number_mechanism. Var vänlig och rätta till + detta problem.'; + //'You have enabled auto_uid_numbers for %s in your configuration, + //but you have not specified the auto_uid_number_mechanism. Please correct + //this problem.'; +$lang['uidpool_not_set'] = 'Du har specificerat auto_uid_number_mechanism som uidpool + i din konfiguration för server%s, men du specificerade inte + audo_uid_number_uid_pool_dn. Var vänlig och specificera den innan du fortsätter.'; + //'You specified the auto_uid_number_mechanism as uidpool + //in your configuration for server %s, but you did not specify the + //audo_uid_number_uid_pool_dn. Please specify it before proceeding.'; +$lang['uidpool_not_exist'] = 'Det ser ut som om den uidPool du specificerade i din konfiguration (%s) + inte existerar.'; + // 'It appears that the uidPool you specified in your configuration (%s) + // does not exist.'; +$lang['specified_uidpool'] = 'Du specificerade auto_uid_number_mechanism som search i din + konfiguration för server%s, men du specificerade inte + auto_uid_number_search_base. Var vänlig och specificera den innan du fortsätter.'; + // 'You specified the auto_uid_number_mechanism as search in your + //configuration for server %s, but you did not specify the + //auto_uid_number_search_base. Please specify it before proceeding.'; +$lang['auto_uid_invalid_value'] = 'Du specificerade ett ogiltigt värde för auto_uid_number_mechanism (%s) + i din konfiguration. Endast uidpool och search are giltiga. + Var vänlig och rätta till detta problem.'; + //'You specified an invalid value for auto_uid_number_mechanism (%s) + //in your configration. Only uidpool and search are valid. + //Please correct this problem.'; +$lang['error_auth_type_config'] = 'Fel: Du har ett fel i din konfigurationsfil. De enda tillåtna värdena + för auth_type i $servers-sektionen är \'config\' and \'form\'. Du skrev in \'%s\', + vilket inte är tillåtet. '; + //'Error: You have an error in your config file. The only two allowed values + //for auth_type in the $servers section are \'config\' and \'form\'. You entered \'%s\', + //which is not allowed. '; +$lang['php_install_not_supports_tls'] = 'Din PHP-installation stödjer inte TLS';//'Your PHP install does not support TLS'; +$lang['could_not_start_tls'] = 'Det gick inte att starta TLS.
Var vänlig och kontrollera din LDAP-serverkonfiguration.';//'Could not start TLS.
Please check your LDAP server configuration.'; +$lang['auth_type_not_valid'] = 'Du har ett fel i din konfigurationsfil. auth_type %s är inte tillåten.';//'You have an error in your config file. auth_type of %s is not valid.'; +$lang['ldap_said'] = 'LDAP sa: %s

';//'LDAP said: %s

'; +$lang['ferror_error'] = 'Fel';'Error'; +$lang['fbrowse'] = 'titta';//'browse'; +$lang['delete_photo'] = 'Ta bort foto';//'Delete Photo'; +$lang['install_not_support_blowfish'] = 'Din PHP-installation stödjer inte blowfish-kryptering.';// 'Your PHP install does not support blowfish encryption.'; +$lang['install_no_mash'] = 'Din PHP-installation har inte funktionen mash(). Det går inte att göra SHA hashes.';//'Your PHP install does not have the mhash() function. Cannot do SHA hashes.'; +$lang['jpeg_contains_errors'] = 'JPEG-fotot innehåller fel
';//'jpegPhoto contains errors
'; +$lang['ferror_number'] = 'Felnummer: %s (%s)

';//'Error number: %s (%s)

'; +$lang['ferror_discription'] ='Beskrivning: %s

';//'Description: %s

'; +$lang['ferror_number_short'] = 'Felnummer: %s

';//'Error number: %s

'; +$lang['ferror_discription_short'] = 'Beskrivning: (ingen beskrivning tillgänglig)
';//'Description: (no description available)
'; +$lang['ferror_submit_bug'] = 'är det här ett phpLDAPadmin-fel? Om så är fallet, var vänlig och rapportera det.'; +//'Is this a phpLDAPadmin bug? If so, please report it.'; +$lang['ferror_unrecognized_num'] = 'Okänt felnummer';//'Unrecognized error number: '; +$lang['ferror_nonfatil_bug'] = '
+
+ Du har hittat en icke-kritisk phpLDAPadmin bug!
Fel:%s (%s)
Fil:%s rad %s, anropande %s
Versioner:PLA: %s, PHP: %s, SAPI: %s +
Web server:%s
+ Var vänlig och rapportera felet genom att klicka här.

'; + + //'
+ //
+ //You found a non-fatal phpLDAPadmin bug!
Error:%s (%s)
File:%s line %s, caller %s
Versions:PLA: %s, PHP: %s, SAPI: %s + //
Web server:%s
+ //Please report this bug by clicking here.

'; + +$lang['ferror_congrats_found_bug'] = 'Gratulerar! Du har hittat en bug i phpLDAPadmin.

+ + + + + + + + + + +
Fel:%s
Nivå:%s
Fil:%s
Rad:%s
Anropare:%s
PLA Version:%s
PHP Version:%s
PHP SAPI:%s
Web server:%s
+
+ Var vänlig och rapportera den här buggen genom att klicak här nedan!'; + +//'Congratulations! You found a bug in phpLDAPadmin.

+// +// +// +// +// +// +// +// +// +// +//
Error:%s
Level:%s
File:%s
Line:%s
Caller:%s
PLA Version:%s
PHP Version:%s
PHP SAPI:%s
Web server:%s
+//
+//Please report this bug by clicking below!'; + + +//ldif_import_form +$lang['import_ldif_file_title'] = 'Importera LDIF-fil';//'Import LDIF File'; +$lang['select_ldif_file'] = 'Välj en LDIF-fil:';//'Select an LDIF file:'; +$lang['select_ldif_file_proceed'] = 'Fortsätt >>';//'Proceed >>'; + +//ldif_import +$lang['add_action'] = 'Lägger till...';//'Adding...'; +$lang['delete_action'] = 'Tar bort...';//'Deleting...'; +$lang['rename_action'] = 'Döper om...';//''Renaming...'; +$lang['modify_action'] = 'ändrar...';//'Modifying...'; + +$lang['failed'] = 'misslyckades';//'failed'; +$lang['ldif_parse_error'] = 'LDIF parsningsfel';//'LDIF Parse Error'; +$lang['ldif_could_not_add_object'] = 'Det gick inte att lägga till objekt';//'Could not add object:'; +$lang['ldif_could_not_rename_object'] = 'Det gick inte att lägga döpa om objekt';//'Could not rename object:'; +$lang['ldif_could_not_delete_object'] = 'Det gick inte att ta bort objekt';//'Could not delete object:'; +$lang['ldif_could_not_modify_object'] = 'Det gick inte att ändra objekt';//'Could not modify object:'; +$lang['ldif_line_number'] = 'Radnummer';//'Line Number:'; +$lang['ldif_line'] = 'Rad:';//'Line:'; +?> diff --git a/lang/zz.php b/lang/zz.php new file mode 100644 index 0000000..e847169 --- /dev/null +++ b/lang/zz.php @@ -0,0 +1,13 @@ + diff --git a/lang/zzz.php b/lang/zzz.php new file mode 100644 index 0000000..522dfef --- /dev/null +++ b/lang/zzz.php @@ -0,0 +1,13 @@ + diff --git a/ldap_error_codes.txt b/ldap_error_codes.txt index 45e7341..03fb07d 100644 --- a/ldap_error_codes.txt +++ b/ldap_error_codes.txt @@ -1,5 +1,6 @@ 0x00 LDAP_SUCCESS "The operation completed successfully." -0x01 LDAP_OPERATIONS_ERROR "An operations error occurred." +0x01 LDAP_OPERATIONS_ERROR "An operations error occurred. This is + typically the result of an internal error on your LDAP server." 0x02 LDAP_PROTOCOL_ERROR "A protocol violation was detected." 0x03 LDAP_TIMELIMIT_EXCEEDED "The operation timed out waiting to complete." 0x04 LDAP_SIZELIMIT_EXCEEDED "The LDAP sever refused to serve such a large result set." @@ -36,8 +37,8 @@ 0x24 LDAP_ALIAS_DEREF_PROBLEM "A problem was encountereed when dereferencing an alias" 0x30 LDAP_INAPPROPRIATE_AUTH "Inappropriate authentication was - specifiedi (e.g., LDAP_AUTH_SIMPLE was - specified and the entry does not have + specified (e.g. LDAP_AUTH_SIMPLE was + specified and the entry does not have a userPassword attribute)." 0x31 LDAP_INVALID_CREDENTIALS "Incorrect login DN and/or password." 0x32 LDAP_INSUFFICIENT_ACCESS "You do not have sufficient permissions @@ -48,17 +49,23 @@ 0x36 LDAP_LOOP_DETECT "A loop was detected." 0x3C LDAP_SORT_CONTROL_MISSING "" 0x3D LDAP_INDEX_RANGE_ERROR "" -0x40 LDAP_NAMING_VIOLATION "A naming violation occurred." +0x40 LDAP_NAMING_VIOLATION "A naming violation occurred. This usually + means that you tried to change the value of an attribute that is used in the + DN. For example, if you change the 'cn' value of an entry whose DN is 'cn=Bob + Jones,dc=example,dc=com', you must also rename the entry to reflect the + change." 0x41 LDAP_OBJECT_CLASS_VIOLATION "You tried to perform an operation that would cause an undefined attribute to exist or that would remove a required attribute, given the current list - of ObjectClasses." -0x42 LDAP_NOT_ALLOWED_ON_NONLEAF "The entry you tried to operate on has children. (usually this means you + of ObjectClasses. This can also occur if you do not + specify a structural objectClass when creating an entry, or if you specify + more than one structural objectClass." +0x42 LDAP_NOT_ALLOWED_ON_NONLEAF "The entry you tried to operate on has children. Usually this means you tried to delete or rename the entry, which you cannot do to an entry - with children)." + with children." 0x43 LDAP_NOT_ALLOWED_ON_RDN "You cannot preform that operation on a the relative distinguished name (RDN) of an object." -0x44 LDAP_ALREADY_EXISTS "The object already exists (usually you are trying to create a new object - on top of an existing one)" +0x44 LDAP_ALREADY_EXISTS "The object already exists. Usually you are trying to create a new object + on top of an existing one." 0x45 LDAP_NO_OBJECT_CLASS_MODS "ObjectClass modifications are not allolwed." 0x46 LDAP_RESULTS_TOO_LARGE "" @@ -74,7 +81,7 @@ 0x58 LDAP_USER_CANCELLED "The user cancelled the LDAP operation." 0x59 LDAP_PARAM_ERROR "An ldap routine was called with a bad parameter." -0x5a LDAP_NO_MEMORY "An memory allocation (e.g., malloc(3) +0x5a LDAP_NO_MEMORY "A memory allocation (e.g., malloc(3) or other dynamic memory allocator) call failed in an ldap library rou- tine." diff --git a/ldif_export.php b/ldif_export.php deleted file mode 100644 index cd9ff4f..0000000 --- a/ldif_export.php +++ /dev/null @@ -1,136 +0,0 @@ -"; -//print_r( $objects ); -//exit; - -$rdn = get_rdn( $dn ); -$friendly_rdn = get_rdn( $dn, 1 ); - -switch( $format ) { - case 'win': $br = "\r\n"; break; - case 'mac': $br = "\r"; break; - case 'unix': - default: $br = "\n"; break; -} - -if( ! $objects ) - pla_error( "Search on dn (" . htmlspecialchars($dn) . ") came back empty" ); - -// define the max length of a ldif line to 76 -// as it is suggested (implicitely) for (some) binary -// attributes in rfc 2849 (see note 10) - -define("MAX_LDIF_LINE_LENGTH",76); - -header( "Content-type: application/download" ); -header( "Content-Disposition: filename=$friendly_rdn.ldif" ); -header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); -header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" ); -header( "Cache-Control: post-check=0, pre-check=0", false ); - -echo "version: 1$br$br"; -echo "# LDIF Export for: " . utf8_decode( $dn ) . "$br"; -echo "# Generated by phpLDAPadmin on " . date("F j, Y g:i a") . "$br"; -echo "# Server: " . utf8_decode( $server_name ) . " ($server_host)$br"; -echo "# Search Scope: $scope$br"; -echo "# Total entries: " . count( $objects ) . "$br"; -echo $br; - -$counter = 0; -foreach( $objects as $dn => $attrs ) -{ - $counter++; - unset( $attrs['dn'] ); - unset( $attrs['count'] ); - - - // display "# Entry 3: cn=test,dc=example,dc=com..." - $title_string = "# Entry $counter: " . utf8_decode( $dn ); - if( strlen( $title_string ) > MAX_LDIF_LINE_LENGTH-3 ) - $title_string = substr( $title_string, 0, MAX_LDIF_LINE_LENGTH-3 ) . "..."; - echo "$title_string$br"; - - // display the DN - if( is_safe_ascii( $dn ) ) - multi_lines_display("dn: $dn"); - else - multi_lines_display("dn:: " . base64_encode( $dn )); - - // display all the attrs/values - foreach( $attrs as $attr => $val ) { - if( is_array( $val ) ) { - foreach( $val as $v ) { - if( is_safe_ascii( $v ) ) { - multi_lines_display("$attr: $v"); - } else { - multi_lines_display("$attr:: " . base64_encode( $v )); - } - } - } else { - $v = $val; - if( is_safe_ascii( $v ) ) { - multi_lines_display("$attr: $v"); - } else { - multi_lines_display("$attr:: " . base64_encode( $v )); - } - } - } - echo $br; -} - -function is_safe_ascii( $str ) -{ - for( $i=0; $i 127 ) - return false; - return true; -} - - -function multi_lines_display($str){ - global $br; - - $length_string = strlen($str); - $max_length = MAX_LDIF_LINE_LENGTH; - - while ($length_string > $max_length){ - echo substr($str,0,$max_length).$br." "; - $str= substr($str,$max_length,$length_string); - $length_string = strlen($str); - - // need to do minus one to align on the right - // the first line with the possible following lines - // as these will have an extra space - $max_length = MAX_LDIF_LINE_LENGTH-1; - } - echo $str."".$br; -} - - -?> diff --git a/ldif_functions.php b/ldif_functions.php index cbde523..2ad6595 100644 --- a/ldif_functions.php +++ b/ldif_functions.php @@ -1,25 +1,24 @@ dn=$dn; $this->changeType=$changeType; $this->attributes=$atts; } + /** + * Return the dn of the entry + * + * @return String the dn of the entry + */ function getDn(){ return $this->dn; } @@ -47,10 +50,8 @@ class LdifEntry{ /** * Setter method for the distinguished name * - * @return String the distinguished name of the entry + * @param String $dn the distinguished name of the entry */ - - function setDn($dn){ $this->dn = $dn; } @@ -58,34 +59,30 @@ class LdifEntry{ /** * Getter method for the change type * - * @param String $changeType the changetype - * + * @return String the change type of the entry */ - function getChangeType(){ return $this->changeType; } /** - * Setter method for the distinguished nae + * Setter method for the change type of the entry * - * @return String the distinguished name of the entry + * @param String $changeType the change type of the entry */ - function setChangeType($changeType){ - $this->changeType = $changeType; + $this->changeType = $changeType; } - + /** * Add the attributes to the entry * + * @param String[][] $atts the attributes of the entry */ - function setAttributes($atts){ $this->attributes = $atts; } - /** * Get the attributes of the entry * @@ -98,17 +95,14 @@ class LdifEntry{ } /** - * this exception is similar to the one in LdifReader + * This exception is similar to the one in LdifReader * Should be remove latter * see comment for the class Ldif_LdapEntryReader - * - * - * */ class LdifEntryReaderException{ - + var $lineNumber; var $currentLine; var $message; @@ -126,65 +120,58 @@ class LdifEntryReaderException{ $this->lineNumber = $lineNumber; $this->currentLine =$currentLine; $this->message = $message; - } } - /** * Class in charge of reading a paricular entry - * Strictly speaking,the fonction of this class - * could go to LdapLdifReader - * - * another reason to delegate to this class - * is that futur change for net_ldap will have to be done only - * in this class - * After we can put it back to the main reader */ - - class LdifEntryReader{ //the entry var $entry; + + // the lines of the entry fetch from the file var $lines; + + // the dn of the entry var $dn=""; - var $_error = 0; - var $_currentLineNumber=1; + + // error flag + var $_error; + + // the current line number of the entry; + var $_currentLineNumber; + /** * Constructor of the LdifEntryReader * * @param String[] $lines the line of the entry */ - - - function LdifEntryReader(&$lines){ + function LdifEntryReader( &$lines ){ $this->lines = &$lines; -//need to change the following lines -// $this->_currentLineNumber = $currentLineNumber- count($this->lines); - $dn=$this->_getDnValue(); - $changeType = $this->_readChangeType(); - $this->entry = new LdifEntry($dn,$changeType); + $this->_currentLineNumber = 1; + $this->_error = 0; } /** * Read the change type action associated with the entry - * Default action is add - * @return String the change type action of the entry * + * @return String the change type action of the entry */ - - function _readChangeType(){ $changeType ="add"; $arr = array(); + + // no lines after the dn one if(count($this->lines)==0){ $this->lines[0] = ""; $this->setLdifEntryReaderException(new LdifEntryReaderException($this->_currentLineNumber,$this->lines[0],"Missing attibutes or changetype attribute for entry",new LdifEntry($this->dn))); } - if(ereg("changetype:[ ]*(delete|add|modrdn|moddn|modify)",$this->lines[0],$arr)){ + // get the change type of the entry + elseif(ereg("changetype:[ ]*(delete|add|modrdn|moddn|modify)",$this->lines[0],$arr)){ $changeType = $arr[1]; array_shift($this->lines); $this->_currentLineNumber++; @@ -195,34 +182,28 @@ class LdifEntryReader{ /** * Check if the distinguished name is base 64 encoded * - * @return bool true if the dn is base 64 encoded + * @return boolean true if the dn is base 64 encoded, false otherwise */ - function _isDnBase64Encoded($dn){ return ereg("dn::",$dn)?1:0; } - /** * Return the base64 decoded value of an attribute * * @param $attr the attribute to be decoded * @return String base64 decoded value of an attribute */ - function _getBase64DecodedValue($attr){ return base64_decode(trim($attr)); } - /** * Fetch the dn value from a line of the ldif file * * @param String $currentDnLine line with a distinguished name * @return the value of the distinguished name */ - - function _getDnValue(){ $currentDnLine=$this->lines[0]; if($this->_isDNBase64Encoded($currentDnLine)){ @@ -230,29 +211,48 @@ class LdifEntryReader{ }else{ $currentDnValue = substr($currentDnLine,3,strlen($currentDnLine)-1); } - // echo $this->_currentLineNumber; + // switch to the next line array_shift($this->lines); $this->_currentLineNumber++; return trim($currentDnValue); } + /** + * Check if the dn line is valid + * + * @return boolean true if the dn is valid, false otherwise. + */ + function isValidDn(){ + return ereg("^dn:",$this->lines[0])?1:0; + } + /** * Return the entry read from the ldif lines * - * + * @return LdifEntry the entry */ - - function getEntry(){ + global $lang; - $changeType = $this->entry->getChangeType(); + // the dn is not valid, throw the exception and return the entry with the non valid dn + if (! $this->isValidDn() ){ + $dn = $this->lines[0]; + $changeType = $this->_readChangeType(); + //For the moment, overwrite the exception + $this->setLdifEntryReaderException(new LdifEntryReaderException($this->_currentLineNumber,$this->lines[0],$lang['valid_dn_line_required'],new LdifEntry($this->dn))); + return new LdifEntry( $dn , $changeType ); + } + + $dn=$this->_getDnValue(); + $changeType = $this->_readChangeType(); + $this->entry = new LdifEntry($dn,$changeType); + if($changeType=="add"){ $this->_getAddAttributes(); } elseif($changeType=="delete"){ //do nothing } - // $atts = $this->entry->getAttributes(); elseif($changeType=="modrdn"||$changeType=="moddn"){ $this->_getModrdnAttributes(); } @@ -260,19 +260,15 @@ class LdifEntryReader{ $this->_getModifyAttributes(); } return $this->entry; - } /** * Checked if the parsing of the entry has raised some exception * * @return bool true if the reading of the entry raised some exceptions, else otherwise. - * */ - function hasRaisedException(){ return $this->_error; - } /** @@ -287,7 +283,7 @@ class LdifEntryReader{ $this->_error=1; $this->_ldifEntryReaderException= $ldifEntryReaderException; } - + /** * Return the exception handler of the entry Reader @@ -302,12 +298,7 @@ class LdifEntryReader{ /** * Method to retrieve the attribute value of a ldif line, * and get the base 64 decoded value if it is encoded - * - * - * */ - - function _getAttributeValue($attributeValuePart){ $attribute_value=""; if(substr($attributeValuePart,0,1)==":"){ @@ -343,6 +334,9 @@ class LdifEntryReader{ } + /** + * Build the attributes array when the change type is add. + */ function _getAddAttributes(){ if(count($this->lines)==0){ @@ -370,18 +364,18 @@ class LdifEntryReader{ // $this->entry->add($attrs); array_shift($this->lines); $this->_currentLineNumber++; - } else{ $this->setLdifEntryReaderException(new LdifEntryReaderException($this->_currentLineNumber,$this->lines[0],"Attribute not well formed",$this->entry)); //jetter l'exception } - } - } - + + /** + * Build the attributes array for the entry when the change type is modify + */ function _getModifyAttributes(){ if(count($this->lines)==0){ $this->lines[0]=""; @@ -400,72 +394,66 @@ class LdifEntryReader{ if(count($attribute)==2){ $action_attribute = trim($attribute[0]); $action_attribute_value =trim($attribute[1]); - if($action_attribute != "add" &&$action_attribute!= "delete" &&$action_attribute !=="replace"){ + + if($action_attribute != "add" && $action_attribute != "delete" && $action_attribute !="replace"){ $this->setLdifEntryReaderException(new LdifEntryReaderException($this->_currentLineNumber,$this->lines[0],"The attribute name should be add, delete or replace",$this->entry)); } // put the action attribute in the array $this->entry->attributes[$numberModification] = array(); $this->entry->attributes[$numberModification][$action_attribute] = $this->_getAttributeValue($action_attribute_value); - + $this->entry->attributes[$numberModification][$action_attribute_value] = array(); + // fetching the attribute for the following line array_shift($this->lines); - $currentLine=&$this->lines[0]; $this->_currentLineNumber++; - // while there is attributes for this entry - while(trim($currentLine)!="-"&&trim($currentLine)!=""&&$this->_error!=1 && $new_entry_mod !=1){ - if(ereg(":",$currentLine)){ - //get the position of the character ":" - $pos = strpos($currentLine,":"); - - //get the description of the attribute - $attribute_name = substr($currentLine,0, $pos); - - // get the value part of the attribute - $attribute_value_part = trim(substr($currentLine,$pos+1,strlen($currentLine))); - $attribute_value = $this->_getAttributeValue($attribute_value_part); + while(trim($currentLine)!="-" && $this->_error!=1 && count($this->lines)!=0 ){ - - // need to handle the special case when whe add an new attribute - if($attribute_name != "add"){ - $this->entry->attributes[$numberModification][$attribute_name][]=$this->_getAttributeValue($attribute_value); - if(count($this->lines)>1){ - array_shift($this->lines); - $this->_currentLineNumber++; - $currentLine = $this->lines[0]; - } - else{ - $this->setLdifEntryReaderException(new LdifEntryReaderException($this->_currentLineNumber,$this->lines[0],"Missing - ?",$this->entry)); - } + // if there is a valid line + if(ereg(":",$currentLine)){ + //get the position of the character ":" + $pos = strpos($currentLine,":"); + //get the name of the attribute to modify + $attribute_name = substr($currentLine,0, $pos); + + //check that it correspond to the one specified before + if ($attribute_name == $action_attribute_value){ + + // get the value part of the attribute + $attribute_value_part = trim(substr($currentLine,$pos+1,strlen($currentLine))); + $attribute_value = $this->_getAttributeValue($attribute_value_part); + $this->entry->attributes[$numberModification][$attribute_name][]=$attribute_value; + array_shift($this->lines); + $this->_currentLineNumber++; + + if(count($this->lines)!=0) + $currentLine = &$this->lines[0]; } else{ - // flag set to indicate that we need to build an new attribute array and leave the inner while loop - $new_entry_mod = 1; + $this->setLdifEntryReaderException(new LdifEntryReaderException($this->_currentLineNumber,$this->lines[0],"The attribute to modify doesn't match the one specified by the ".$action_attribute." attribute.",$this->entry)); } } else{ $this->setLdifEntryReaderException(new LdifEntryReaderException($this->_currentLineNumber,$this->lines[0],"Attribute is not valid",$this->entry)); } - - }//fin while - $this->_currentLineNumber++; - - //if we encountered the flag new_entry_mod(=1), rebuild an new array and therefore dot not shift - if($new_entry_mod!=1){ - + }// end inner while + + // we get a "-" charachter, we remove it from the array + if ($currentLine == "-"){ array_shift($this->lines); + $this->_currentLineNumber++; } $numberModification++; } - else{ - $this->setLdifEntryReaderException(new LdifEntryReaderException($this->_currentLineNumber,$this->lines[0],"Attribute is not valid",$this->entry)); - } - }// end while - } - + } + } + /** + * Build the attributes for the entry when the change type is modrdn + */ + function _getModrdnAttributes(){ $attrs = array(); @@ -507,7 +495,6 @@ $arr=array(); else{ $this->setLdifEntryReaderException(new LdifEntryReaderException($this->_currentLineNumber,$this->lines[0],"the attribute name should be newsuperior",$this->entry)); } - } else{ //as the first character is not ,,we "can write it this way for teh moment" @@ -518,8 +505,6 @@ $arr=array(); $this->setLdifEntryReaderException(new LdifEntryReaderException($this->_currentLineNumber,$this->lines[0],"Container is null",$this->entry)); } } - - } else{ $this->setLdifEntryReaderException(new LdifEntryReaderException($this->_currentLineNumber,$this->lines[0],"a valid deleteoldrdn attribute should be specified",$this->entry)); @@ -535,10 +520,8 @@ $arr=array(); /** * Exception which can be raised during processing the ldif file - * */ - class LdifReaderException{ var $lineNumber; @@ -553,8 +536,6 @@ class LdifReaderException{ * @param String currentLine the line wich raised an exception * @param String the message associated the exception */ - - function LdifReaderException($lineNumber,$currentLine,$message){ $this->lineNumber = $lineNumber; $this->currentLine =$currentLine; @@ -562,6 +543,9 @@ class LdifReaderException{ } } +/** + * Helper base class to read file. + */ class FileReader{ @@ -590,13 +574,11 @@ class FileReader{ */ function eof(){ - return feof($this->_fp); + return @feof($this->_fp); } /** * Helper method to switch to the next line - * - * @static */ function _nextLine(){ @@ -622,19 +604,17 @@ class FileReader{ function _isBlankLine(){ return(trim($this->_currentLine)=="")?1:0; } - + + /** + * Close the handler + */ function close(){ return @fclose($this->_fp); - } - - } /** * Main parser of the ldif file - * - * @package Ldap */ class LdifReader extends FileReader{ @@ -658,6 +638,10 @@ class LdifReader extends FileReader{ var $_warningVersion; var $_dnLineNumber; + + // continuous mode operation flag + var $continuous_mode; + /** * Private constructor of the LDIFReader class. * Marked as private as we need to instantiate the class @@ -675,121 +659,106 @@ class LdifReader extends FileReader{ //need to change this one $this->_currentEntry = new LdifEntry(); } - + /** * Constructor of the class * * @param String $path2File path of the ldif file to read + * @param boolean $continuous_mode 1 if continuous mode operation, 0 otherwise */ - function LdifReader($path2File){ - parent::FileReader($path2File); - $this->_LdifReader(); + function LdifReader( $path2File , $continuous_mode = 0 ){ + parent::FileReader( $path2File ); + $this->continuous_mode = $continuous_mode; + $this->_LdifReader(); } - + /** * Returns the lines that generated the Ldif Entry. * * @return String[] The lines from the entry. */ - function getCurrentLines(){ return $this->_currentLines; } - - + /** * Check if it's a ldif comment line. * * @return bool true if it's a comment line,false otherwise */ - function _isCommentLine(){ return substr(trim($this->_currentLine),0,1)=="#"?1:0; } - - + /** * Check if the current line is a line containing the distinguished * name of an entry. * * @return bool true if the line contains a dn line, false otherwise. */ - function _isDnLine(){ return ereg("^dn:",$this->_currentLine)?1:0; } - + /** * Return the current entry object * * @return Ldap_Ldif_entry the current ldif entry - * */ - function getCurrentEntry(){ - return $this->_currentEntry; - } /** * Get the lines of the next entry * * @return String[] the lines (unfolded) of the next entry - * */ - function nextLines(){ $endEntryFound=0; //free the array (instance member) unset($this->_currentLines); + + // reset the error state + $this->_error = 0; - if($this->_error!=1){ + if( $this->_hasMoreEntries() && !$this->eof() ){ - //if we found a valid dn line go on - if($this->_hasValidDnLine()&&!$this->eof() && $this->_error!=1){ + //the first line is the dn one + $this->_currentLines[0]= trim($this->_currentLine); + + $count=0; + + // while we end on a blank line, fetch the attribute lines + while(!$this->eof() && !$endEntryFound ){ + //fetch the next line + $this->_nextLine(); - //the first line is the dn one - $this->_currentLines[0]= trim($this->_currentLine); + // if the next line begin with a space,we append it to the current row + // else we push it into the array (unwrap) - $count=0; - - // while we end on a blank line, fetch the attribute lines - while(!$this->eof() && !$endEntryFound && !$this->_ldifHasError()){ - //fetch the next line - $this->_nextLine(); - - // if the next line begin with a space,we append it to the current row - // else we push it into the array (unwrap) - - if(substr($this->_currentLine,0,1)==" "){ - $this->_currentLines[$count].=trim($this->_currentLine); - } - elseif(substr($this->_currentLine,0,1)=="#"){ - //do nothing - // echo $this->_currentLine; - } - elseif(trim($this->_currentLine)!=""){ - $this->_currentLines[++$count]=trim($this->_currentLine); - } - - + if(substr($this->_currentLine,0,1)==" "){ + $this->_currentLines[$count].=trim($this->_currentLine); + } + elseif(substr($this->_currentLine,0,1)=="#"){ + //do nothing + // echo $this->_currentLine; + } + elseif(trim($this->_currentLine)!=""){ + $this->_currentLines[++$count]=trim($this->_currentLine); + } else{ $endEntryFound=1; } - }//end while - //return the ldif entry array - return $this->_currentLines; - } - else{ - return false; - } - + }//end while + //return the ldif entry array + return $this->_currentLines; + } + else{ + return false; } - } - /** * Check if the ldif version is present in the ldif * @@ -815,49 +784,38 @@ class LdifReader extends FileReader{ } else{ $this->_warningVersion=1; - $this->_warningMessage = "No version found - assuming 1"; + global $lang; + $this->_warningMessage = $lang['warning_no_ldif_version_found']; $ldifLineFound=1; } - }// end while loop return $this->_warningVersion; } - + /** - * Private method to check if we have a valid dn line + * Private method to check if there is more entries in the file * - * - * return bool true if a valid dn line is found false otherwise. + * @return boolean true if an entry was found, false otherwise. */ - - - function _hasValidDnLine(){ - $dn_found=0; - while(!$this->_ldifHasError() && !$this->eof() && !$dn_found ){ - - //if it's a comment or blank line,switch to the next line - if($this->_isCommentLine() || $this->_isBlankLine()){ - //debug usage - // echo $this->_currentLineNumber." - " .($this->_isCommentLine()?"comment":"blank line\n")."
"; - $this->_nextLine(); - } - // case where a line with a distinguished name is found - elseif($this->_isDnLine()){ - $this->_currentDnLine = $this->_currentLine; - $this->dnLineNumber = $this->_currentLineNumber; - $dn_found=1; - //echo $this->_currentLineNumber." - ".$this->_currentLine."
"; - } - else{ - $this->setLdapLdifReaderException(new LdifReaderException($this->_currentLineNumber,$this->_currentLine,"A valid dn line is required")); - } - } - return $dn_found; + function _hasMoreEntries(){ + $entry_found = 0; + while( !$this->eof() && !$entry_found ){ + //if it's a comment or blank line,switch to the next line + if( $this->_isCommentLine() || $this->_isBlankLine() ){ + //debug usage + // echo $this->_currentLineNumber." - " .($this->_isCommentLine()?"comment":"blank line\n")."
"; + $this->_nextLine(); + } + else{ + $this->_currentDnLine = $this->_currentLine; + $this->dnLineNumber = $this->_currentLineNumber; + $entry_found=1; + } + } + return $entry_found; } - - - + /** * Associate the ldif reader with a exception which occurs during * proceesing the file. @@ -865,11 +823,10 @@ class LdifReader extends FileReader{ * * @param Ldap_LdifReaderException $ldifReaderException */ - - function setLdapLdifReaderException($ldifReaderException){ $this->_ldifReaderException= $ldifReaderException; - $this->done(); + if( !$this->continuous_mode ) + $this->done(); $this->_error=1; } @@ -878,7 +835,6 @@ class LdifReader extends FileReader{ * * @return Ldap_ldifReaderException */ - function getLdapLdifReaderException(){ return $this->_ldifReaderException; } @@ -889,8 +845,6 @@ class LdifReader extends FileReader{ * * @return true if an error was encountered, false otherwise */ - - function _ldifHasError(){ return $this->_error; } @@ -915,17 +869,15 @@ class LdifReader extends FileReader{ } /** - * Return an entry from the ldif file - * wrapper upon the NextLines method - * + * Return a ldif entry object + * + * @return LdifEntry the entry object buid from the lines of the ldif file */ function readEntry(){ - if($lines = $this->nextLines()){ $ldifEntryReader = new LdifEntryReader($lines); - //fetch entry $entry = $ldifEntryReader->getEntry(); $this->_currentEntry = $entry; @@ -934,28 +886,26 @@ class LdifReader extends FileReader{ $exception = $ldifEntryReader->getLdifEntryReaderException(); $faultyLineNumber = $this->dnLineNumber + $exception->lineNumber - 1; $this->setLdapLdifReaderException(new LdifReaderException($faultyLineNumber,$exception->currentLine,$exception->message)); - return false; - } - else{ - return $entry; + + if ( ! $this->continuous_mode ) + return 0; } + return $entry; } + else + return false; } function getWarningMessage(){ return $this->_warningMessage; - } } /** * Helper class to write entries into the ldap server - * - * */ - class LdapWriter{ var $ldapConnexion; @@ -963,18 +913,29 @@ class LdapWriter{ /** * Constructor - * - * */ function LdapWriter(&$conn){ $this->ldapConnexion = &$conn; } + /** + * Add a new entry to the ldap server + * + * @param LdifEntry $entry the entry to add + * @return true in case of success, false otherwise + */ function ldapAdd($entry){ return @ldap_add($this->ldapConnexion,$entry->dn,$entry->attributes); } + + /** + * Modify an entry + * + * @param LdifEntry $entry the entry to add + * @return true in case of success, false otherwise + */ function ldapModify($entry){ $changeType = $entry->getChangeType(); @@ -1016,7 +977,12 @@ class LdapWriter{ } return $this->_writeError; } - + + /** + * Close the connection to the ldap server + * + * @return boolean true in case of success, false otherwise + */ function ldapClose(){ return @ldap_close($this->ldapConnexion); } diff --git a/ldif_import.php b/ldif_import.php index 472ba5a..fbbab30 100644 --- a/ldif_import.php +++ b/ldif_import.php @@ -1,4 +1,6 @@ - 0 or pla_error( "Uploaded file is empty." ); -check_server_id( $server_id ) or pla_error( "Bad server_id: " . htmlspecialchars( $server_id ) ); -have_auth_info( $server_id ) or pla_error( "Not enough information to login to server. Please check your configuration." ); +is_array( $_FILES['ldif_file'] ) or pla_error( $lang['missing_uploaded_file'] ); +file_exists( $file ) or pla_error( $lang['no_ldif_file_specified'] ); +$file_len > 0 or pla_error( $lang['ldif_file_empty'] ); +check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] ); +have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] ); -include 'header.php'; ?> +include './header.php'; ?> -

Import LDIF File

+

- Server: - File: - ( bytes) + : + : + ()


@@ -61,10 +64,11 @@ $actionErrorMsg['moddn']= $lang['ldif_could_not_rename_object']; $actionErrorMsg['modify']= $lang['ldif_could_not_modify_object']; // get the connection -$ds = pla_ldap_connect( $server_id ) or pla_error( "Could not connect to LDAP server" ); +$ds = pla_ldap_connect( $server_id ); +pla_ldap_connection_is_error( $ds ); //instantiate the reader -$ldifReader = new LdifReader($file); +$ldifReader = new LdifReader($file,$continuous_mode); //instantiate the writer $ldapWriter = new LdapWriter($ds); @@ -73,28 +77,54 @@ $ldapWriter = new LdapWriter($ds); if(!$ldifReader->hasVersionNumber()){ display_warning($ldifReader->getWarningMessage()); } +$i=0; +// if .. else not mandatory but should be easier to maintain +if( $continuous_mode ){ + while( $ldifReader->readEntry() ){ + $i++; + // get the entry. + $currentEntry = $ldifReader->getCurrentEntry(); + $changeType = $currentEntry->getChangeType(); + echo "".$actionString[$changeType]." ".$currentEntry->dn; - + if($ldifReader->hasRaisedException()){ + echo " ".$lang['failed']."
"; + $exception = $ldifReader->getLdapLdifReaderException(); + echo "".$lang['ldif_line_number'].": ".$exception->lineNumber."
"; +echo "".$lang['ldif_line'].": ".$exception->currentLine."
"; +echo "".$lang['desc'].": ".$exception->message."
"; +} + else{ + if($ldapWriter->ldapModify($currentEntry)) + echo " ".$lang['success']."
"; + else{ + echo " ".$lang['failed']."
"; + echo "Error Code: ".ldap_errno($ds)."
"; + echo "".$lang['desc'].": ".ldap_error($ds)."
"; + } + } + if( 0 == $i % 5 ) + flush(); + }// end while +} +else{ //while we have a valid entry, while($entry = $ldifReader->readEntry()){ + $i++; $changeType = $entry->getChangeType(); echo "".$actionString[$changeType]." ".$entry->dn; if($ldapWriter->ldapModify($entry)){ echo " ".$lang['success']."
"; + if( 0 == $i % 5 ) flush(); } else{ echo " ".$lang['failed']."

"; reload_left_frame(); - pla_error( $actionErrorMsg[$changeType]. " " . htmlspecialchars( utf8_decode( $entry->dn ) ), ldap_error( $ds ), ldap_errno( $ds ) ); + pla_error( $actionErrorMsg[$changeType]. " " . htmlspecialchars( $entry->dn ), ldap_error( $ds ), ldap_errno( $ds ) ); } } -// close the file -$ldifReader->done(); - -//close the ldap connection -$ldapWriter->ldapClose(); // if any errors occurs during reading file ,"catch" the exception and display it here. if($ldifReader->hasRaisedException()){ @@ -110,6 +140,12 @@ echo "
"; echo "
"; display_pla_parse_error($exception,$currentEntry); } +} +// close the file +$ldifReader->done(); + +//close the ldap connection +$ldapWriter->ldapClose(); reload_left_frame(); diff --git a/ldif_import_form.php b/ldif_import_form.php index c6e8ae4..4a06201 100644 --- a/ldif_import_form.php +++ b/ldif_import_form.php @@ -1,4 +1,6 @@ - +include './header.php'; ?> @@ -26,15 +28,26 @@ include 'header.php'; ?>

-

+ -
-
- + +
+
+
+ +
+" . $lang['warning_file_uploads_disabled'] . "
"; + else + echo "
" . sprintf( $lang['max_file_size'], ini_get( 'upload_max_filesize' ) ) . "
"; +?> + +
diff --git a/login.php b/login.php index 00caf2e..ba6ccf5 100644 --- a/login.php +++ b/login.php @@ -1,8 +1,9 @@ -', $uid, get_login_string( $server_id ) ); + } else { + // This is a standard login_attr + + // Fake the auth_type of config to do searching. This way, the admin can specify + // the DN to use when searching for the login_attr user. + $servers[$server_id]['auth_type'] = 'config'; + + // search for the "uid" first + set_error_handler( 'temp_login_error_handler' ); + $ds = pla_ldap_connect( $server_id ); + pla_ldap_connection_is_error( $ds ); + restore_error_handler(); + $search_base = isset( $servers[$server_id]['base'] ) && '' != trim( $servers[$server_id]['base'] ) ? + $servers[$server_id]['base'] : + try_to_get_root_dn( $server_id, $ds ); + if (!empty($servers[$server_id]['login_class'])) { + $filter = '(&(objectClass='.$servers[$server_id]['login_class'].')('.$servers[$server_id]['login_attr'].'='.$uid.'))'; + } else { + $filter = $servers[$server_id]['login_attr'].'='.$uid; + } + $sr = @ldap_search($ds, $search_base, $filter, array('dn'), 0, 1); + $result = @ldap_get_entries($ds, $sr); + $dn = isset( $result[0]['dn'] ) ? $result[0]['dn'] : false; + if( ! $dn ) { + pla_error( $lang['bad_user_name_or_password'] ); + } + + // restore the original auth_type + $servers[$server_id]['auth_type'] = $auth_type; + } } +// We fake a 'config' server auth_type to omit duplicated code +$auth_type = $servers[$server_id]['auth_type']; +$servers[$server_id]['auth_type'] = 'config'; +$servers[$server_id]['login_dn'] = $dn; +$servers[$server_id]['login_pass'] = $pass; + // verify that the login is good -$ds = @ldap_connect( $host, $port ); -$ds or pla_error( "Could not connect to '" . htmlspecialchars( $host ) . "' on port '" . htmlentities( $port ) . "'" ); - -// go with LDAP version 3 if possible -@ldap_set_option( $ds, LDAP_OPT_PROTOCOL_VERSION, 3 ); -if( isset( $servers[ $server_id ][ 'tls' ] ) && $servers[ $server_id ][ 'tls' ] == true ) { - function_exists( 'ldap_start_tls' ) or pla_error( - "Your PHP install does not support TLS" ); - ldap_start_tls( $ds ) or pla_error( "Could not start - TLS. Please check your ". - "LDAP server configuration.", ldap_error( $ds ), ldap_errno( $ds ) ); -} - -if( $anon_bind ) - $bind_result = @ldap_bind( $ds ); +if( null == $dn && null == $pass ) + $ds = pla_ldap_connect( $server_id, true, false ); else - $bind_result = @ldap_bind( $ds, $dn, $pass ); + $ds = pla_ldap_connect( $server_id, false, false ); -if( ! $bind_result ) { +if( ! is_resource( $ds ) ) { if( $anon_bind ) - pla_error( "Could not bind anonymously to LDAP server.", ldap_error( $ds ), ldap_errno( $ds ) ); + pla_error( $lang['could_not_bind_anon'] ); else - pla_error( "Bad username/password. Try again" ); + pla_error( $lang['bad_user_name_or_password'] ); } -set_cookie_login_dn( $server_id, $dn, $pass, $anon_bind ) or pla_error( "Could not set cookie!" ); +$servers[$server_id]['auth_type'] = $auth_type; +set_login_dn( $server_id, $dn, $pass, $anon_bind ) or pla_error( $lang['could_not_set_cookie'] ); + +initialize_session_tree(); +$_SESSION['tree'][$server_id] = array(); +$_SESSION['tree_icons'][$server_id] = array(); -// Clear out any pre-existing tree data in the session for this server -session_start(); -if( session_is_registered( 'tree' ) ) - if( isset( $_SESSION['tree'][$server_id] ) ) - unset( $_SESSION['tree'][$server_id] ); -if( session_is_registered( 'tree_icons' ) ) - if( isset( $_SESSION['tree_icons'][$server_id] ) ) - unset( $_SESSION['tree_icons'][$server_id] ); session_write_close(); +include realpath( 'header.php' ); ?> - - - - - - - - - - - - - + +
+
+
+
+
+ + () +
+
+
" . htmlspecialchars( $errstr ) ); +} +?> + diff --git a/login_form.php b/login_form.php index 3c82fa6..ba40328 100644 --- a/login_form.php +++ b/login_form.php @@ -1,28 +1,37 @@ - +$anonymous_bind_allowed = is_anonymous_bind_allowed( $server_id ); + +isset( $servers[ $server_id ][ 'auth_type' ] ) or pla_error( $lang['error_auth_type_config'] ); +$auth_type = $servers[ $server_id ][ 'auth_type' ]; +if( $auth_type != 'cookie' && $auth_type != 'session' ) + pla_error( sprintf( $lang['unknown_auth_type'], htmlspecialchars( $auth_type ) ) ); + +include './header.php'; ?> - + + -
-

Authenticate to server

+


- +
-Warning: This web connection is unencrypted.
+ + + + +
+
@@ -61,20 +75,29 @@ include 'header.php'; ?> + - + + + + + + - - + + - - - - - + -
+ + + diff --git a/logout.php b/logout.php index c04a007..dca6a6b 100644 --- a/logout.php +++ b/logout.php @@ -1,42 +1,44 @@ - - - - - - - - - - -
-
-
- Logged out successfully from
-
- - - - + + + + +
+
+
+
+
+ + + + diff --git a/mass_delete.php b/mass_delete.php index f342769..d4705ed 100644 --- a/mass_delete.php +++ b/mass_delete.php @@ -1,4 +1,6 @@ \n"; -echo "

Mass Deleting

\n"; +echo "

" . $lang['mass_deleting'] . "

\n"; if( $confirmed == true ) { - echo "

Deletion progress on server '$server_name'

\n"; + echo "

" . sprintf( $lang['mass_delete_progress'], $server_name ) . "

\n"; echo "
"; echo "\n"; @@ -54,27 +54,27 @@ if( $confirmed == true ) { $failed_dns = array(); if( ! is_array( $mass_delete ) ) - pla_error( "Malformed mass_delete array" ); + pla_error( $lang['malformed_mass_delete_array'] ); if( count( $mass_delete ) == 0 ) { echo "
"; - echo "
You did not select any entries to delete.
"; + echo "
" . $lang['no_entries_to_delete'] . "
"; die(); } foreach( $mass_delete as $dn => $junk ) { - echo "Deleting " . htmlspecialchars($dn) . "... "; + echo sprintf( $lang['deleting_dn'], htmlspecialchars($dn) ); flush(); if( true === preEntryDelete( $server_id, $dn ) ) { $success = @ldap_delete( $ds, $dn ); if( $success ) { postEntryDelete( $server_id, $dn ); - echo "success.
\n"; + echo " " . $lang['success'] . ".
\n"; $successfully_delete_dns[] = $dn; } else { - echo "failed.\n"; + echo " " . $lang['failed'] . ".\n"; echo "(" . ldap_error( $ds ) . ")
\n"; $failed_dns[] = $dn; } @@ -90,15 +90,15 @@ if( $confirmed == true ) { $total_count = count( $mass_delete ); if( $failed_count > 0 ) { echo "\n"; - echo "$failed_count of $total_count entries failed to be deleted.\n"; + echo sprintf( $lang['total_entries_failed'], $failed_count, $total_count ) . "\n"; } else { echo "\n"; - echo "All entries deleted successfully!\n"; + echo $lang['all_entries_successful'] . "\n"; } // kill the deleted DNs from the tree browser session variable and // refresh the tree viewer frame (left_frame) - if( session_is_registered( 'tree' ) ) + if( array_key_exists( 'tree', $_SESSION ) ) { $tree = $_SESSION['tree']; foreach( $successfully_delete_dns as $dn ) { @@ -124,7 +124,7 @@ if( $confirmed == true ) { } else { $n = count( $mass_delete ); - echo "

Confirm mass delete of $n entries on server '$server_name'

\n"; + echo "

" . sprintf( $lang['confirm_mass_delete'], $n, $server_name ) . "

\n"; ?>
@@ -144,7 +144,7 @@ if( $confirmed == true ) {
-
+
diff --git a/new_attr.php b/new_attr.php deleted file mode 100644 index aefa511..0000000 --- a/new_attr.php +++ /dev/null @@ -1,67 +0,0 @@ - $val ); -$result = @ldap_mod_add( $ds, $dn, $new_entry ); - -if( $result ) - header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn&modified_attrs[]=$encoded_attr" ); -else - pla_error( "Failed to add the attribute.", ldap_error( $ds ) , ldap_errno( $ds ) ); diff --git a/password_checker.php b/password_checker.php new file mode 100644 index 0000000..cf925be --- /dev/null +++ b/password_checker.php @@ -0,0 +1,49 @@ + + +

+ +
+ + + + + + + + + + + + + +
+ + "; + if( password_check( $hash, $check_password) ) + echo "" . $lang['passwords_match'] . ""; + else + echo "" . $lang['passwords_do_not_match'] . ""; + echo ""; + } ?> +
+
+ + diff --git a/purge_cache.php b/purge_cache.php new file mode 100644 index 0000000..a4b3df1 --- /dev/null +++ b/purge_cache.php @@ -0,0 +1,37 @@ + + + +

Purging Caches

+
+
+
+
+ + + +
+ + diff --git a/rdelete.php b/rdelete.php index 90971ac..ba5d9bd 100644 --- a/rdelete.php +++ b/rdelete.php @@ -1,4 +1,6 @@ -\n"; -echo "

Deleting" . htmlspecialchars( $dn) . "

\n"; -echo "

Recursive delete progress

\n"; +echo "

" . sprintf( $lang['deleting_dn'], htmlspecialchars($rdn) ) . "

\n"; +echo "

" . $lang['recursive_delete_progress'] . "

"; echo "

"; echo "\n"; flush(); @@ -44,7 +48,7 @@ if( $del_result ) // kill the DN from the tree browser session variable and // refresh the tree viewer frame (left_frame) - if( session_is_registered( 'tree' ) ) + if( array_key_exists( 'tree', $_SESSION ) ) { $tree = $_SESSION['tree']; @@ -52,7 +56,10 @@ if( $del_result ) if( isset( $tree[$server_id][$dn] ) ) unset( $tree[$server_id][$dn] ); - // search and destroy + // Get a tree in the session if not already gotten + initialize_session_tree(); + + // search and destroy from the tree sesssion foreach( $tree[$server_id] as $tree_dn => $subtree ) foreach( $subtree as $key => $sub_tree_dn ) if( 0 == strcasecmp( $sub_tree_dn, $dn ) ) @@ -68,13 +75,12 @@ if( $del_result ) parent.left_frame.location.reload(); - Object and sub-tree deleted successfully. - ' . htmlspecialchars( $dn ) . '' ); } else { - pla_error( "Could not delete the object: " . htmlspecialchars( $dn ), ldap_error( $ds ), ldap_errno( $ds ) ); + pla_error( sprintf( $lang['could_not_delete_entry'], htmlspecialchars( $dn ) ), ldap_error( $ds ), ldap_errno( $ds ) ); } @@ -83,36 +89,37 @@ exit; function pla_rdelete( $server_id, $dn ) { + global $lang; $children = get_container_contents( $server_id, $dn ); global $ds; $ds = pla_ldap_connect( $server_id ); if( ! is_array( $children ) || count( $children ) == 0 ) { - echo "Deleting " . htmlspecialchars( $dn ) . "..."; + echo "" . sprintf( $lang['deleting_dn'], htmlspecialchars( $dn ) ) . "..."; flush(); if( true === preEntryDelete( $server_id, $dn ) ) if( @ldap_delete( $ds, $dn ) ) { postEntryDelete( $server_id, $dn ); - echo " Success
\n"; + echo " " . $lang['success'] . "
\n"; return true; } else { - pla_error( "Failed to delete dn: " . htmlspecialchars( $dn ), - ldap_error( $ds ), ldap_errno( $ds ) ); + pla_error( sprintf( $lang['failed_to_delete_entry'], htmlspecialchars( $dn ) ), + ldap_error( $ds ), ldap_errno( $ds ) ); } } else { foreach( $children as $child_dn ) { pla_rdelete( $server_id, $child_dn ); } - echo "Deleting " . htmlspecialchars( $dn ) . "..."; + echo "" . sprintf( $lang['deleting_dn'], htmlspecialchars( $dn ) ) . "..."; flush(); if( true === preEntryDelete( $server_id, $dn ) ) if( @ldap_delete( $ds, $dn ) ) { postEntryDelete( $server_id, $dn ); - echo " Success
\n"; + echo " " . $lang['success'] . "
\n"; return true; } else { - pla_error( "Failed to delete dn: " . htmlspecialchars( ( $dn ) ), - ldap_error( $ds ), ldap_errno( $ds ) ); + pla_error( sprintf( $lang['failed_to_delete_entry'], htmlspecialchars( $dn ) ), + ldap_error( $ds ), ldap_errno( $ds ) ); } } diff --git a/refresh.php b/refresh.php index d173d12..10f55a2 100644 --- a/refresh.php +++ b/refresh.php @@ -1,4 +1,6 @@ - $children ) { - $tree[$server_id][$dn] = get_container_contents( $server_id, $dn ); + $tree[$server_id][$dn] = get_container_contents( $server_id, $dn, 0, '(objectClass=*)', get_tree_deref_setting() ); if( is_array( $tree[$server_id][$dn] ) ) { foreach( $tree[$server_id][$dn] as $child_dn ) $tree_icons[$server_id][$child_dn] = get_icon( $server_id, $child_dn ); diff --git a/rename.php b/rename.php index 001c08d..236cd5c 100644 --- a/rename.php +++ b/rename.php @@ -1,4 +1,6 @@ - 0 ) - pla_error( "You cannot rename an entry which has children entries - (eg, the rename operation is not allowed on non-leaf entries)" ); + pla_error( $lang['non_leaf_nodes_cannot_be_renamed'] ); -check_server_id( $server_id ) or pla_error( "Bad server_id: " . htmlspecialchars( $server_id ) ); -have_auth_info( $server_id ) or pla_error( "Not enough information to login to server. Please check your configuration." ); +check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] ); +have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] ); -$ds = pla_ldap_connect( $server_id ) or pla_error( "Could not connect to LDAP sever" ); +$ds = pla_ldap_connect( $server_id ); +pla_ldap_connection_is_error( $ds ); $container = get_container( $dn ); $new_dn = $new_rdn . ',' . $container; if( $new_dn == $dn ) - pla_error( "You did not change the RDN" ); + pla_error( $lang['no_rdn_change'] ); $dn_attr = explode( '=', $dn ); $dn_attr = $dn_attr[0]; @@ -45,6 +47,8 @@ $old_dn_value = pla_explode_dn( $dn ); $old_dn_value = explode( '=', $old_dn_value[0], 2 ); $old_dn_value = $old_dn_value[1]; $new_dn_value = explode( '=', $new_rdn, 2 ); +if( count( $new_dn_value ) != 2 || ! isset( $new_dn_value[1] ) ) + pla_error( $lang['invalid_rdn'] ); $new_dn_value = $new_dn_value[1]; // Add the new DN attr value to the DN attr (ie, add newName to cn) @@ -56,7 +60,7 @@ $remove_old_dn_attr = array( $dn_attr => $old_dn_value ); $add_dn_attr_success = @ldap_mod_add( $ds, $dn, $add_new_dn_attr ); if( ! @ldap_rename( $ds, $dn, $new_rdn, $container, false ) ) { - pla_error( "Could not rename the object.", ldap_error( $ds ), ldap_errno( $ds ), false ); + pla_error( $lang['could_not_rename'], ldap_error( $ds ), ldap_errno( $ds ), false ); // attempt to undo our changes to the DN attr if( $add_dn_attr_success ) @@ -67,9 +71,7 @@ else // attempt to remove the old DN attr value (if we can't, die a silent death) @ldap_mod_del( $ds, $new_dn, $remove_old_dn_attr ); - // update the session tree to reflect the name change - session_start(); - if( session_is_registered( 'tree' ) ) + if( array_key_exists( 'tree', $_SESSION ) ) { $tree = $_SESSION['tree']; $tree_icons = $_SESSION['tree_icons']; @@ -105,11 +107,11 @@ else location.href=''; - + - Redirecting... click here if you're impatient. + diff --git a/rename_form.php b/rename_form.php new file mode 100644 index 0000000..1230675 --- /dev/null +++ b/rename_form.php @@ -0,0 +1,46 @@ + + + + +

+

:     :

+ +
+
+
+ + + + +
+
+ + + diff --git a/schema.php b/schema.php index 8765b48..f01d3b1 100644 --- a/schema.php +++ b/schema.php @@ -1,4 +1,6 @@ " . htmlspecialchars($servers[$server_id]['name']) . ".
-
- - This could happen for several reasons, the most probable of which are: -
    -
  • The server does not fully support the LDAP protocol.
  • -
  • Your version of PHP does not correctly perform the query.
  • -
  • Or lastly, phpLDAPadmin doesn't know how to fetch the schema for your server.
  • -
- Please - report this as a bug"; +$schema_error_str = $lang['could_not_retrieve_schema_from']." " + . htmlspecialchars($servers[$server_id]['name']) + . ".

" + .$lang['reasons_for_error'] + ."
  • " + .$lang['schema_retrieve_error_1'] + . "
  • " + .$lang['schema_retrieve_error_2'] + ."
  • " + .$lang['schema_retrieve_error_3'] + ."
".$lang['please_report_this_as_a_bug'].""; ?> @@ -50,20 +53,20 @@ $schema_error_str = "Could not retrieve schema from " . htmlspecialchars($ser
objectClasses' ); ?> + $lang['objectclasses'] : + ''.$lang['objectclasses'].'' ); ?> | Attributes' ); ?> + $lang['attribute_types']: + ''. $lang['attribute_types'].'' ); ?> | Syntaxes' ); ?> + $lang['syntaxes'] : + ''.$lang['syntaxes'].'' ); ?> | Matching Rules' ); ?> + $lang['matchingrules'] : + ''.$lang['matchingrules'].'' ); ?>

@@ -78,7 +81,7 @@ if( $view == 'syntaxes' ) { echo "
" . $lang['syntax_oid'] . "" . $lang['desc'] . "
- getName())){ + + getName() ) ) { + if( ! is_null( $viewvalue ) ) + $viewed = true; flush(); echo "\n\n"; $counter = 0; echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n\n"; - echo "\n"; - echo "\n"; + echo "\n"; echo "\n"; echo "\n\n"; echo "\n"; - echo "\n"; - echo "\n"; + echo '\n"; + echo "\n"; echo "\n\n"; echo "\n"; echo "\n"; echo "\n"; + echo "getSupAttribute() ) . "\">" . $attr->getSupAttribute() . "\n"; echo "\n\n"; echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n\n"; echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n\n"; echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n\n"; echo "\n"; - echo "\n"; + echo "\n"; echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n\n"; echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n\n"; echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n\n"; echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n\n"; echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n\n"; echo "\n"; - echo "\n"; + echo "\n"; echo ""; echo "\n\n"; echo "\n"; - echo "\n"; + echo "\n"; echo ""; echo "\n\n"; @@ -250,66 +251,106 @@ if( $view == 'syntaxes' ) { } elseif( $view == 'matching_rules' ) { //echo "
" . $lang['the_following_matching'] . "

\n\n"; + $schema_matching_rules = get_schema_matching_rules( $server_id, null, false ); + echo '' . $lang['jump_to_matching_rule'].'
'; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; echo "\n\n
getName() ) . "\">"; echo $attr->getName() . "
Description" . ( $attr->getDescription() == null ? '(no description)' : $attr->getDescription() ). "".$lang['desc']."" . ( $attr->getDescription() == null ? '('.$lang['no_description'].')' : $attr->getDescription() ). "
OID".$lang['oid']."" . $attr->getOID() . "
Obsolete?" . ( $attr->getIsObsolete() ? 'Yes' : 'No' ) . "'.$lang['obsolete']."?" . ( $attr->getIsObsolete() ? '' . $lang['yes'] . '' : $lang['no'] ) . "
".$lang['inherits'].""; if( $attr->getSupAttribute()==null ) - echo '(none)'; + echo '('.$lang['none'].')'; else - echo "getSupAttribute() ) . "\">" . $attr->getSupAttribute() . "
Equality" . ( $attr->getEquality() == null ? '(not specified)' : $attr->getEquality() ) . "".$lang['equality']."" . ( $attr->getEquality() == null ? '('.$lang['not_specified'].')' : "getEquality()."\">".$attr->getEquality() ) . "
Ordering" . ( $attr->getOrdering()==null? '(not specified)' : $attr->getOrdering() ) . "".$lang['ordering']."" . ( $attr->getOrdering()==null? '('.$lang['not_specified'].')' : $attr->getOrdering() ) . "
Substring Rule" . ( $attr->getSubstr()==null? '(not specified)' : $attr->getSubstr() ) . "".$lang['substring_rule']."" . ( $attr->getSubstr()==null? '('.$lang['not_specified'].')' : $attr->getSubstr() ) . "
Syntax".$lang['syntax'].""; if( null != $attr->getType() ) { echo "\n\n"; echo "
Single Valued" . ( $attr->getIsSingleValue() ? 'Yes' : 'No' ) . "".$lang['single_valued']."" . ( $attr->getIsSingleValue() ? $lang['yes'] : $lang['no'] ) . "
Collective?" . ( $attr->getIsCollective() ? 'Yes' : 'No' ) . "".$lang['collective']."?" . ( $attr->getIsCollective() ? $lang['yes'] : $lang['no'] ) . "
User Modification" . ( $attr->getIsNoUserModification() ? 'No' : 'Yes' ) . "".$lang['user_modification']."" . ( $attr->getIsNoUserModification() ? $lang['no'] : $lang['yes'] ) . "
Usage" . ( $attr->getUsage() ? $attr->getUsage() : '(not specified)' ) . "".$lang['usage']."" . ( $attr->getUsage() ? $attr->getUsage() : '('.$lang['not_specified'].')' ) . "
Maximum Length" . ( $attr->getMaxLength() === null ? - '(not applicable)' : - number_format( $attr->getMaxLength() ) . ' characters' ) . "".$lang['maximum_length'].""; + if ( $attr->getMaxLength() === null ) { echo '('.$lang['not_applicable'].')';} + else { + echo number_format( $attr->getMaxLength() ) ." "; + if ( $attr->getMaxLength()>1) {echo $lang['characters'];} + else { echo $lang['character'] ;} + } + echo "
Aliases".$lang['aliases'].""; if( count( $attr->getAliases() ) == 0 ) - echo "(none)"; + echo '('.$lang['none'].')'; else foreach( $attr->getAliases() as $alias_attr_name ) - echo "$alias_attr_name "; + echo "$alias_attr_name "; echo "
Used by objectClasses".$lang['used_by_objectclasses'].""; if( count( $attr->getUsedInObjectClasses() ) == 0 ) - echo "(none)"; + echo '('.$lang['none'].')'; else foreach( $attr->getUsedInObjectClasses() as $used_in_oclass) - echo "$used_in_oclass "; echo "
\n"; - echo "\n"; + echo "\n"; flush(); $counter=1; - $schema_matching_rules = get_schema_matching_rules( $server_id ); + $schema_matching_rules = get_schema_matching_rules( $server_id, null, false ); if( ! $schema_matching_rules ) pla_error( $schema_error_str ); foreach( $schema_matching_rules as $rule ) { $counter++; $oid = htmlspecialchars( $rule->getOID() ); $desc = htmlspecialchars( $rule->getName() ); - + if ( $viewvalue==null || $viewvalue==($rule->getName() )) { + if( ! is_null( $viewvalue ) ) + $viewed = true; if( null != $rule->getDescription() ) $desc .= ' (' . $rule->getDescription() . ')'; if( true === $rule->getIsObsolete() ) $desc .= ' ' . $lang['obsolete'] . ''; echo ""; - echo ""; - echo ""; + echo ""; + echo ""; echo "\n"; + } } echo "
" . $lang['matching_rule_oid'] . "" . $lang['name'] . "Used by Attributes
" . $lang['matching_rule_oid'] . "" . $lang['name'] . "".$lang['used_by_attributes']."
$oid$desc$oid$desc"; if( count( $rule->getUsedByAttrs() ) == 0 ) { - echo "
(" . $lang['none'] . ")


\n"; + echo "
(" . $lang['none'] . ")


\n"; } else { - echo "
"; + echo ""; + echo ""; + echo "\n"; + echo "
\n"; } echo "
\n"; } elseif( $view == 'objectClasses' ) { //echo "
" . $lang['the_following_objectclasses'] . "

\n"; flush(); - $schema_oclasses = get_schema_objectclasses( $server_id ); + $schema_oclasses = get_schema_objectclasses( $server_id, null, false ); if( ! $schema_oclasses ) pla_error( $schema_error_str ); ?> : -
- + + + $oclass ) { + echo ''; + } ?> +
+ + + + $oclass ) { + foreach( $oclass->getSupClasses() as $parent_name ) { + $parent_name = $parent_name; + if( isset( $schema_oclasses[ $parent_name ] ) ) { + $schema_oclasses[ $parent_name ]->addChildObjectClass( $oclass->getName() ); + } + } + + } ?> +
$oclass ) { - if ( $viewvalue==null || $viewvalue==$oclass->getName()){ - ?> - + if ( $viewvalue==null || 0 == strcasecmp( $viewvalue, $oclass->getName() ) ){ + if( ! is_null( $viewvalue ) ) + $viewed = true; + ?> +

getName(); ?>

: getOID(); ?>

getDescription() ) { ?>

: getDescription(); ?>

-

Type: getType(); ?>

- getIsObsolete() ) && */$oclass->getIsObsolete() == true ) { ?> +

: getType(); ?>

+ getIsObsolete() == true ) { ?>

@@ -319,13 +360,28 @@ if( $view == 'syntaxes' ) { else foreach( $oclass->getSupClasses() as $i => $object_class ) { echo '' . htmlspecialchars( $object_class ) . ''; if( $i < count( $oclass->getSupClasses() ) - 1 ) echo ', '; } ?> +

: getName(), 'top' ) ) + echo "(all)"; + elseif( count( $oclass->getChildObjectClasses() ) == 0 ) + echo "(" . $lang['none'] . ")"; + else + foreach( $oclass->getChildObjectClasses() as $i => $object_class ) { + echo '' . htmlspecialchars( $object_class ) . ''; + if( $i < count( $oclass->getChildObjectClasses() ) - 1 ) + echo ', '; + } + ?>

+ @@ -336,13 +392,13 @@ if( $view == 'syntaxes' ) { getMustAttrs($schema_oclasses) ) > 0 ) { echo '
    '; foreach( $oclass->getMustAttrs($schema_oclasses) as $attr ) { - echo "
  • getName() ). "\">" . htmlspecialchars($attr->getName()); echo ""; if( $attr->getSource() != $oclass->getName() ) { - echo "
      (inherited from "; - echo "getSource() . "\">" . $attr->getSource() . ""; + echo "
      (".$lang['inherited_from']." "; + echo "getSource() . "\">" . $attr->getSource() . ""; echo ")"; } echo "
  • \n"; @@ -357,13 +413,13 @@ if( $view == 'syntaxes' ) { if( count( $oclass->getMayAttrs($schema_oclasses) ) > 0 ) { echo '
      '; foreach( $oclass->getMayAttrs($schema_oclasses) as $attr ) { - echo "
    • getName() ) . "\">" . htmlspecialchars($attr->getName() ); echo "\n"; if( $attr->getSource() != $oclass->getName() ) { - echo "
         (inherited from "; - echo "getSource() . "\">" . $attr->getSource() . ""; + echo "
         (".$lang['inherited_from']." "; + echo "getSource() . "\">" . $attr->getSource() . ""; echo ")"; } echo "
    • "; @@ -381,6 +437,10 @@ if( $view == 'syntaxes' ) { + + diff --git a/schema_functions.php b/schema_functions.php index 63ee65f..07010ce 100644 --- a/schema_functions.php +++ b/schema_functions.php @@ -1,60 +1,88 @@ oid = null; + $this->description = null; + } + + /** Default constructor. */ + function SchemaItem() + { + $this->initVars(); + } + + function setOID( $new_oid ) { - $this->name=$name; - $this->source=$source; + $this->oid = $new_oid; } - /* getters */ - - function getName () + function setDescription( $new_desc ) { - return $this->name; + $this->description = $new_desc; } - function getSource () - { - return $this->source; - } + function getOID() + { + return $this->oid; + } + + function getDescription() + { + return $this->description; + } } -/* +/** * Represents an LDAP objectClass */ -class ObjectClass +class ObjectClass extends SchemaItem { - /* This objectClass' OID, ie "2.16.840.1.113730.3.2.2" */ - var $oid; - /* This objectClass' name, ie "inetOrgPerson" */ + /** This objectClass' name, ie "inetOrgPerson" */ var $name; - /* This objectClass' description */ - var $description; - /* array of objectClass names from which this objectClass inherits */ + /** array of objectClass names from which this objectClass inherits */ var $sup_classes; - /* one of STRUCTURAL, ABSTRACT, or AUXILIARY */ + /** one of STRUCTURAL, ABSTRACT, or AUXILIARY */ var $type; - /* arrays of attribute names that this objectClass requires */ + /** arrays of attribute names that this objectClass requires */ var $must_attrs; - /* arrays of attribute names that this objectClass allows, but does not require */ + /** arrays of attribute names that this objectClass allows, but does not require */ var $may_attrs; - /* boolean value indicating whether this objectClass is obsolete */ + /** boolean value indicating whether this objectClass is obsolete */ var $is_obsolete; + /** array of objectClasses which inherit from this one (must be set at runtime explicitly by the caller) */ + var $children_objectclasses; - /* Initialize the class' member variables */ + /** Initialize the class' member variables */ function initVars() { + parent::initVars(); $this->oid = null; $this->name = null; $this->description = null; @@ -63,10 +91,11 @@ class ObjectClass $this->must_attrs = array(); $this->may_attrs = array(); $this->is_obsolete = false; + $this->children_objectclasses = array(); } - /* - * Parses a raw LDAP objectClass string into this object's $this vars + /** + * Creates a new ObjectClass object given a raw LDAP objectClass string. */ function ObjectClass( $raw_ldap_schema_string ) { @@ -185,9 +214,20 @@ class ObjectClass $this->description = preg_replace("/\'$/", "", $this->description); } - - /* Getters */ - + /** + * Gets an array of AttributeType objects that entries of this ObjectClass must define. + * This differs from getMustAttrNames in that it returns an array of AttributeType objects + * + * @param array $oclasses An array of ObjectClass objects to use when traversing + * the inheritance tree. This presents some what of a bootstrapping problem + * as we must fetch all objectClasses to determine through inheritance which + * attributes this objectClass requires. + * @return array The array of required AttributeType objects. + * + * @see getMustAttrNames + * @see getMayAttrs + * @see getMayAttrNames + */ function getMustAttrs($oclasses = NULL) { $all_must_attrs = array(); @@ -207,6 +247,21 @@ class ObjectClass return $all_must_attrs; } + /** + * Gets an array of AttributeType objects that entries of this ObjectClass may define. + * This differs from getMayAttrNames in that it returns an array of AttributeType objects + * + * @param array $oclasses An array of ObjectClass objects to use when traversing + * the inheritance tree. This presents some what of a bootstrapping problem + * as we must fetch all objectClasses to determine through inheritance which + * attributes this objectClass provides. + * @return array The array of allowed AttributeType objects. + * + * @see getMustAttrNames + * @see getMustAttrs + * @see getMayAttrNames + * @see AttributeType + */ function getMayAttrs($oclasses = NULL) { $all_may_attrs = array(); @@ -226,6 +281,21 @@ class ObjectClass return $all_may_attrs; } + /** + * Gets an array of attribute names (strings) that entries of this ObjectClass must define. + * This differs from getMustAttrs in that it returns an array of strings rather than + * array of AttributeType objects + * + * @param array $oclasses An array of ObjectClass objects to use when traversing + * the inheritance tree. This presents some what of a bootstrapping problem + * as we must fetch all objectClasses to determine through inheritance which + * attributes this objectClass provides. + * @return array The array of allowed attribute names (strings). + * + * @see getMustAttrs + * @see getMayAttrs + * @see getMayAttrNames + */ function getMustAttrNames( $oclasses = null ) { $attrs = $this->getMustAttrs( $oclasses ); @@ -235,6 +305,21 @@ class ObjectClass return $attr_names; } + /** + * Gets an array of attribute names (strings) that entries of this ObjectClass must define. + * This differs from getMayAttrs in that it returns an array of strings rather than + * array of AttributeType objects + * + * @param array $oclasses An array of ObjectClass objects to use when traversing + * the inheritance tree. This presents some what of a bootstrapping problem + * as we must fetch all objectClasses to determine through inheritance which + * attributes this objectClass provides. + * @return array The array of allowed attribute names (strings). + * + * @see getMustAttrs + * @see getMayAttrs + * @see getMustAttrNames + */ function getMayAttrNames( $oclasses = null ) { $attrs = $this->getMayAttrs( $oclasses ); @@ -244,41 +329,74 @@ class ObjectClass return $attr_names; } + /** + * Adds an objectClass to the list of objectClasses that inherit + * from this objectClass. + * @param String $object_class_name The name of the objectClass to add + * @return bool Returns true on success or false on failure (objectclass already existed for example) + */ + function addChildObjectClass( $object_class_name ) + { + $object_class_name = trim( $object_class_name ); + if( ! is_array( $this->children_objectclasses ) ) + $this->children_objectclasses = array(); + foreach( $this->children_objectclasses as $existing_objectclass ) + if( 0 == strcasecmp( $object_class_name, $existing_objectclass ) ) + return false; + $this->children_objectclasses[] = $object_class_name; + return true; + } + /** + * Returns the array of objectClass names which inherit from this objectClass. + * @return Array Names of objectClasses which inherit from this objectClass. + */ + function getChildObjectClasses() + { + return $this->children_objectclasses; + } + + /** + * Gets the name of this objectClass (ie, "inetOrgPerson") + * @return string The name of the objectClass + */ function getName() { return $this->name; } - function getDescription() - { - return $this->description; - } - - function getOID() - { - return $this->oid; - } - + /** + * Gets the objectClass names from which this objectClass inherits. + * + * @return array An array of objectClass names (strings) + */ function getSupClasses() { return $this->sup_classes; } + /** + * Gets the type of this objectClass: STRUCTURAL, ABSTRACT, or AUXILIARY. + */ function getType() { return $this->type; } + /** + * Gets whether this objectClass is flagged as obsolete by the LDAP server. + */ function getIsObsolete() { return $this->is_obsolete; } - /* + /** * Adds the specified array of attributes to this objectClass' list of * MUST attributes. The resulting array of must attributes will contain * unique members. + * + * @param array $new_must_attrs An array of attribute names (strings) to add. */ function addMustAttrs( $new_must_attrs ) { @@ -289,9 +407,11 @@ class ObjectClass $this->must_attrs = array_values( array_unique( array_merge( $this->must_attrs, $new_must_attrs ) ) ); } - /* + /** * Behaves identically to addMustAttrs, but it operates on the MAY * attributes of this objectClass. + * + * @param array $new_may_attrs An array of attribute names (strings) to add. */ function addMayAttrs( $new_may_attrs ) { @@ -301,54 +421,95 @@ class ObjectClass return; $this->may_attrs = array_values( array_unique( array_merge( $this->may_attrs, $new_may_attrs ) ) ); } - } -/* + /** + * A simple class for representing AttributeTypes used only by the ObjectClass class. + * Users should never instantiate this class. It represents an attribute internal to + * an ObjectClass. If PHP supported inner-classes and variable permissions, this would + * be interior to class ObjectClass and flagged private. The reason this class is used + * and not the "real" class AttributeType is because this class supports the notion of + * a "source" objectClass, meaning that it keeps track of which objectClass originally + * specified it. This class is therefore used by the class ObjectClass to determine + * inheritance. + */ + class ObjectClassAttribute + { + /** This Attribute's name */ + var $name; + /** This Attribute's root */ + var $source; + + /** + * Creates a new ObjectClassAttribute with specified name and source objectClass. + * @param string $name the name of the new attribute. + * @param string $source the name of the ObjectClass which + * specifies this attribute. + */ + function ObjectClassAttribute ($name, $source) + { + $this->name=$name; + $this->source=$source; + } + + /** Gets this attribute's name */ + function getName () + { + return $this->name; + } + + /** Gets the name of the ObjectClass which originally specified this attribute. */ + function getSource () + { + return $this->source; + } + } + + +/** * Represents an LDAP AttributeType */ -class AttributeType +class AttributeType extends SchemaItem { - /* The OID of this attributeType: ie, 1.2.3.4*/ - var $oid; - /* The name of this attributeType */ + /** The name of this attributeType */ var $name; - /* string: the description */ - var $description; - /* boolean: is it obsoloete */ + /** string: the description */ var $is_obsolete; - /* The attribute from which this attribute inherits (if any) */ + /** The attribute from which this attribute inherits (if any) */ var $sup_attribute; - /* The equality rule used */ + /** The equality rule used */ var $equality; - /* The ordering of the attributeType */ + /** The ordering of the attributeType */ var $ordering; - /* Boolean: supports substring matching? */ + /** Boolean: supports substring matching? */ var $sub_str; - /* The full syntax string, ie 1.2.3.4{16} */ + /** The full syntax string, ie 1.2.3.4{16} */ var $syntax; - /* boolean: is single valued only? */ + /** boolean: is single valued only? */ var $is_single_value; - /* boolean: is collective? */ + /** boolean: is collective? */ var $is_collective; - /* boolean: can use modify? */ + /** boolean: can use modify? */ var $is_no_user_modification; - /* The usage string set by the LDAP schema */ + /** The usage string set by the LDAP schema */ var $usage; - /* An array of alias attribute names, strings */ + /** An array of alias attribute names, strings */ var $aliases; - /* The max number of characters this attribute can be */ + /** The max number of characters this attribute can be */ var $max_length; - /* A string description of the syntax type (taken from the LDAPSyntaxes) */ + /** A string description of the syntax type (taken from the LDAPSyntaxes) */ var $type; - /* An array of objectClasses which use this attributeType (must be set by caller) */ + /** An array of objectClasses which use this attributeType (must be set by caller) */ var $used_in_object_classes; + /** A list of object class names that require this attribute type. */ + var $required_by_object_classes = array(); - /* + /** * Initialize the class' member variables */ function initVars() { + parent::initVars(); $this->oid = null; $this->name = null; $this->description = null; @@ -367,14 +528,14 @@ class AttributeType $this->aliases = array(); $this->type = null; $this->used_in_object_classes = array(); + $this->required_by_object_classes = array(); } - /* - * Parses a raw LDAP objectClass string into this object's $this vars + /** + * Creates a new AttributeType objcet from a raw LDAP AttributeType string. */ function AttributeType( $raw_ldap_attr_string ) { - //echo "$raw_ldap_attr_string
      "; $this->initVars(); $attr = $raw_ldap_attr_string; $strings = preg_split ("/[\s,]+/", $attr, -1,PREG_SPLIT_DELIM_CAPTURE); @@ -448,7 +609,7 @@ class AttributeType $this->max_length = $this->max_length[1]; else $this->max_length = null; - if($strings[$i+1]=="{") { + if($i < count($strings) - 1 && $strings[$i+1]=="{") { do { $i++; $this->name .= " " . $strings[$i]; @@ -482,111 +643,175 @@ class AttributeType $this->syntax_oid = preg_replace("/\'$/", "", $this->syntax_oid ); } - /* Getters */ - function getOID() - { - return $this->oid; - } - + /** + * Gets this attribute's name + * @return string + */ function getName() { return $this->name; } - function getDescription() - { - return $this->description; - } - + /** + * Gets whether this attribute has been flagged as obsolete by the LDAP server + * @return bool + */ function getIsObsolete() { return $this->is_obsolete; } + /** + * Gets this attribute's usage string as defined by the LDAP server + * @return string + */ function getUsage() { return $this->usage; } + /** + * Gets this attribute's parent attribute (if any). If this attribute does not + * inherit from another attribute, null is returned. + * @return string + */ function getSupAttribute() { return $this->sup_attribute; } + /** + * Gets this attribute's equality string + * @return string + */ function getEquality() { return $this->equality; } + /** + * Gets this attribute's ordering specification. + * @return string + */ function getOrdering() { return $this->ordering; } + /** + * Gets this attribute's substring matching specification + * @return string + */ function getSubstr() { return $this->sub_str; } + /** + * Gets the names of attributes that are an alias for this attribute (if any). + * @return array An array of names of attributes which alias this attribute or + * an empty array if no attribute aliases this object. + */ function getAliases() { return $this->aliases; } - /* - * Returns the entire raw syntax string for this attr, for example: 1.2.3.4{16} + /** + * Returns whether the specified attribute is an alias for this one (based on this attribute's alias list). + * @param string $attr_name The name of the attribute to check. + * @return bool True if the specified attribute is an alias for this one, or false otherwise. + */ + function isAliasFor( $attr_name ) + { + foreach( $this->aliases as $alias_attr_name ) + if( 0 == strcasecmp( $alias_attr_name, $attr_name ) ) + return true; + return false; + + } + + /** + * Gets this attribute's raw syntax string (ie: "1.2.3.4{16}"). + * @return string The raw syntax string */ function getSyntaxString() { return $this->syntax; } - /* - * Differs from getSyntaxString() in that it only returns the actual OID with any length - * specification removed. Ie, if the syntax string is 1.2.3.4{16}, this retruns - * 1.2.3.4. + /** + * Gets this attribute's syntax OID. Differs from getSyntaxString() in that this + * function only returns the actual OID with any length specification removed. + * Ie, if the syntax string is "1.2.3.4{16}", this function only retruns + * "1.2.3.4". + * @return string The syntax OID string. */ function getSyntaxOID() { return $this->syntax_oid; } - /* - * Returns the maximum length specified by this attribute (ie, "16" in 1.2.3.4{16}) + /** + * Gets this attribute's the maximum length. If no maximum is defined by the LDAP server, null is returned. + * @return int The maximum length (in characters) of this attribute or null if no maximum is specified. */ function getMaxLength() { return $this->max_length; } + /** + * Gets whether this attribute is single-valued. If this attribute only supports single values, true + * is returned. If this attribute supports multiple values, false is returned. + * @return bool Returns true if this attribute is single-valued or false otherwise. + */ function getIsSingleValue() { return $this->is_single_value; } + /** + * Sets whether this attribute is single-valued. + * @param bool $is_single_value + */ function setIsSingleValue( $is_single_value ) { $this->is_single_value = $is_single_value; } - + /** + * Gets whether this attribute is collective. + * @return bool Returns true if this attribute is collective and false otherwise. + */ function getIsCollective() { return $this->is_collective; } + /** + * Gets whether this attribute is not modifiable by users. + * @return bool Returns true if this attribute is not modifiable by users. + */ function getIsNoUserModification() { return $this->is_no_user_modification; } + /** + * Gets this attribute's type + * @return string The attribute's type. + */ function getType() { return $this->type; } - /* - * Removes an attribute name from the alias array. + /** + * Removes an attribute name from this attribute's alias array. + * @param string $remove_alias_name The name of the attribute to remove. + * @return bool true on success or false on failure (ie, if the specified + * attribute name is not found in this attribute's list of aliases) */ function removeAlias( $remove_alias_name ) { @@ -600,44 +825,56 @@ class AttributeType return false; } - /* + /** * Adds an attribute name to the alias array. + * @param string $new_alias_name The name of a new attribute to add to this attribute's list of aliases. */ function addAlias( $new_alias_name ) { $this->aliases[] = $new_alias_name; } + /** + * Sets this attriute's name. + * @param string $new_name The new name to give this attribute. + */ function setName( $new_name ) { $this->name = $new_name; } - function setOID( $new_oid ) - { - $this->oid = $new_oid; - } - - function setDescription( $new_desc ) - { - $this->description = $new_desc; - } - + /** + * Sets this attriute's SUP attribute (ie, the attribute from which this attribute inherits). + * @param string $new_sup_attr The name of the new parent (SUP) attribute + */ function setSupAttribute( $new_sup_attr ) { $this->sup_attribute = $new_sup_attr; } + /** + * Sets this attribute's list of aliases. + * @param array $new_aliases The array of alias names (strings) + */ function setAliases( $new_aliases ) { $this->aliases = $new_aliases; } + /** + * Sets this attribute's type. + * @param string $new_type The new type. + */ function setType( $new_type ) { $this->type = $new_type; } + /** + * Adds an objectClass name to this attribute's list of "used in" objectClasses, + * that is the list of objectClasses which provide this attribute. + * @param string $object_class_name The name of the objectClass to add. + */ function addUsedInObjectClass( $object_class_name ) { foreach( $this->used_in_object_classes as $used_in_object_class ) @@ -647,31 +884,56 @@ class AttributeType return true; } + /** + * Gets the list of "used in" objectClasses, that is the list of objectClasses + * which provide this attribute. + * @return array An array of names of objectclasses (strings) which provide this attribute + */ function getUsedInObjectClasses() { return $this->used_in_object_classes; } + + /** + * Adds an objectClass name to this attribute's list of "required by" objectClasses, + * that is the list of objectClasses which must have this attribute. + * @param string $object_class_name The name of the objectClass to add. + */ + function addRequiredByObjectClass( $object_class_name ) + { + foreach( $this->required_by_object_classes as $required_by_object_class ) + if( 0 == strcasecmp( $required_by_object_class, $object_class_name ) ) + return false; + $this->required_by_object_classes[] = $object_class_name; + return true; + } + + /** + * Gets the list of "required by" objectClasses, that is the list of objectClasses + * which provide must have attribute. + * @return array An array of names of objectclasses (strings) which provide this attribute + */ + function getRequiredByObjectClasses() + { + return $this->required_by_object_classes; + } } -/* +/** * Represents an LDAP Syntax */ -class Syntax +class Syntax extends SchemaItem { - /* This Syntax OID, ie "2.16.840.1.113730.3.2.2" */ - var $oid; - /* This Syntax description */ - var $description; - - /* Initialize the class' member variables */ + /** Initializes the class' member variables */ function initVars() { + parent::initVars(); $this->oid = null; $this->description = null; } - /* - * Parses a raw LDAP objectClass string into this object's $this vars + /** + * Creates a new Syntax object from a raw LDAP syntax string. */ function Syntax( $raw_ldap_syntax_string ) { @@ -699,42 +961,26 @@ class Syntax $this->description = preg_replace("/^\'/", "", $this->description); $this->description = preg_replace("/\'$/", "", $this->description); } - - - /* Getters */ - - function getDescription() - { - return $this->description; - } - - function getOID() - { - return $this->oid; - } } -/* +/** * Represents an LDAP MatchingRule */ -class MatchingRule +class MatchingRule extends SchemaItem { - /* This rule's OID, ie "2.16.840.1.113730.3.2.2" */ - var $oid; - /* This rule's name */ + /** This rule's name */ var $name; - /* This rule's description */ - var $description; - /* This rule's syntax OID */ + /** This rule's syntax OID */ var $syntax; - /* Boolean value indicating whether this MatchingRule is obsolete */ + /** Boolean value indicating whether this MatchingRule is obsolete */ var $is_obsolete; - /* An array of attribute names who use this MatchingRule */ + /** An array of attribute names who use this MatchingRule */ var $used_by_attrs; - /* Initialize the class' member variables */ + /** Initialize the class' member variables */ function initVars() { + parent::initVars(); $this->oid = null; $this->name = null; $this->description = null; @@ -743,8 +989,8 @@ class MatchingRule $this->used_by_attrs = array(); } - /* - * Parses a raw LDAP objectClass string into this object's $this vars + /** + * Creates a new MatchingRule object from a raw LDAP MatchingRule string. */ function MatchingRule( $raw_ldap_matching_rule_string ) { @@ -803,15 +1049,16 @@ class MatchingRule $this->description = preg_replace("/\'$/", "", $this->description); } - /* + /** * Sets the list of used_by_attrs to the array specified by $attrs; + * @param array $attrs The array of attribute names (strings) which use this MatchingRule */ function setUsedByAttrs( $attrs ) { $this->used_by_attrs = $attrs; } - /* + /** * Adds an attribute name to the list of attributes who use this MatchingRule * @return true if the attribute was added and false otherwise (already in the list) */ @@ -824,55 +1071,58 @@ class MatchingRule return true; } - /* Getters */ - + /** + * Gets this MatchingRule's name. + * @return string The name. + */ function getName() { return $this->name; } - function getDescription() - { - return $this->description; - } - + /** + * Gets whether this MatchingRule is flagged as obsolete by the LDAP server. + * @return bool True if this MatchingRule is obsolete and false otherwise. + */ function getIsObsolete() { return $this->is_obsolete; } + /** + * Gets this MatchingRule's syntax string (an OID). + * @todo Is this function broken? + */ function getSyntax() { return $this->description; } - function getOID() - { - return $this->oid; - } - + /** + * Gets an array of attribute names (strings) which use this MatchingRule + * @return array The array of attribute names (strings). + */ function getUsedByAttrs() { return $this->used_by_attrs; } } -/* +/** * Represents an LDAP schema matchingRuleUse entry */ -class MatchingRuleUse +class MatchingRuleUse extends SchemaItem { - /* The OID of the MatchingRule this applies to */ - var $oid; - /* The name of the MathingRule this applies to */ + /** The name of the MathingRule this applies to */ var $name; - /* An array of attributeType names who make use of the mathingRule + /** An array of attributeType names who make use of the mathingRule * identified by $this->oid and $this->name */ var $used_by_attrs; - /* Initialize the class' member variables */ + /** Initialize the class' member variables */ function initVars() { + parent::initVars(); $this->oid = null; $this->name = null; $this->used_by_attrs = array(); @@ -880,6 +1130,7 @@ class MatchingRuleUse function MatchingRuleUse( $raw_matching_rule_use_string ) { + $this->initVars(); $strings = preg_split ("/[\s,]+/", $raw_matching_rule_use_string, -1,PREG_SPLIT_DELIM_CAPTURE); for($i=0; $iname)==0) + if( ! isset( $this->name ) || strlen( $this->name ) ==0 ) $this->name = $strings[$i]; else $this->name .= " " . $strings[$i]; @@ -939,36 +1190,44 @@ class MatchingRuleUse sort( $this->used_by_attrs ); } - /* Getters */ - - function getOID() - { - return $this->oid; - } - + /** + * Gets this MatchingRuleUse's name + * @return string The name + */ function getName() { return $this->name; } + /** + * Gets an array of attribute names (strings) which use this MatchingRuleUse object. + * @return array The array of attribute names (strings). + */ function getUsedByAttrs() { return $this->used_by_attrs; } } -/* +/** * Helper for _get_raw_schema() which fetches the DN of the schema object * in an LDAP server based on a DN. Entries should set the subSchemaSubEntry * attribute pointing to the DN of the server schema. You can specify the * DN whose subSchemaSubEntry you wish to retrieve of specify an empty string * to fetch the subScehamSubEntry from the Root DSE. + * + * @param int $server_id The ID of the server whose schema DN to fetch. + * @param string $dn The DN (may be null) which houses the subschemaSubEntry attribute which + * this function can use to determine the schema entry's DN. + * @param bool $debug Switch to true to see some nice and copious output. :) + * + * @return string The DN of the entry which houses this LDAP server's schema. */ function _get_schema_dn( $server_id, $dn, $debug=false ) { if( $debug ) echo "
      ";
       	$ds = pla_ldap_connect( $server_id );
      -	if( ! $ds )
      +	if( pla_ldap_connection_is_error( $ds, false ) )
       		return false;
       
       	$search = @ldap_read( $ds, $dn, 'objectClass=*', array( 'subschemaSubentry' ) );
      @@ -978,9 +1237,9 @@ function _get_schema_dn( $server_id, $dn, $debug=false )
       		return false;
       	}
       
      -	if( ldap_count_entries( $ds, $search ) == 0 ) {
      +	if( @ldap_count_entries( $ds, $search ) == 0 ) {
       		if( $debug ) echo "_get_schema_dn() returning false (ldap_count_entries() == 0).\n";
      -		return false;
      +        return false;
       	}
       
       	$entries = @ldap_get_entries( $ds, $search );
      @@ -1010,10 +1269,11 @@ function _get_schema_dn( $server_id, $dn, $debug=false )
       	return $schema_dn;
       }
       
      -/*
      +/**
        * Fetches the raw schema array for the subschemaSubentry of the server. Note,
        * this function has grown many hairs to accomodate more LDAP servers. It is
      - * needfully complicated. If you can find a better way to write it, feel free!
      + * needfully complicated as it now supports many popular LDAP servers that
      + * don't necessarily expose their schema "the right way".
        *
        * @param $server_id - The server ID whose server you want to retrieve
        * @param $schema_to_fetch - A string indicating which type of schema to 
      @@ -1036,13 +1296,12 @@ function _get_schema_dn( $server_id, $dn, $debug=false )
       function _get_raw_schema( $server_id, $schema_to_fetch, $dn='' )
       {
       	global $lang;
      -	static $cache = null;
       
       	// Swith to true to enable verbose output of schema fetching progress
       	$debug = false;
       
       	$ds = pla_ldap_connect( $server_id );
      -	if( ! $ds )
      +	if( pla_ldap_connection_is_error( $ds, false ) )
       		return false;
       
       	// error checking
      @@ -1050,14 +1309,11 @@ function _get_raw_schema( $server_id, $schema_to_fetch, $dn='' )
       	$valid_schema_to_fetch = array( 'objectclasses', 'attributetypes', 'ldapsyntaxes', 
       					'matchingrules', 'matchingruleuse'  );
       	if( ! in_array( $schema_to_fetch, $valid_schema_to_fetch ) )
      +        // This error message is not localized as only developers should ever see it
       		pla_error( "Bad parameter provided to function to _get_raw_schema(). '" 
       				. htmlspecialchars( $schema_to_fetch ) . "' is 
       				not valid for the schema_to_fetch parameter." );
       	
      -	// Minimize the hits to LDAP server by caching the result
      -	if( isset( $cache[ $server_id ][ $schema_to_fetch ] ) )
      -		return $cache[ $server_id ][ $schema_to_fetch ];
      -
       	// Try to get the schema DN from the specified entry. 
       	$schema_dn = _get_schema_dn( $server_id, $dn, $debug );
       
      @@ -1073,12 +1329,33 @@ function _get_raw_schema( $server_id, $schema_to_fetch, $dn='' )
       		$schema_search = @ldap_read( $ds, $schema_dn, '(objectClass=*)',
       							array( $schema_to_fetch ), 0, 0, 0, 
       							LDAP_DEREF_ALWAYS );
      -		if( $schema_search === false ) {
      -			if( $debug ) echo "Did not find the schema at DN: $schema_dn.\n";
      -			$schema_search = null;
      -			unset( $schema_dn );
      +
      +        // Were we not able to fetch the schema from the $schema_dn?
      +        $schema_entries = @ldap_get_entries( $ds, $schema_search );
      +		if( $schema_search === false || 
      +            0 == @ldap_count_entries( $ds, $schema_search ) ||
      +            ! isset( $schema_entries[0][$schema_to_fetch] ) ) {
      +                if( $debug ) echo "Did not find the schema with (objectClass=*). Attempting with (objetClass=subschema)\n";
      +
      +                // Try again with a different filter (some servers require (objectClass=subschema) like M-Vault)
      +                $schema_search = @ldap_read( $ds, $schema_dn, '(objectClass=subschema)',
      +                        array( $schema_to_fetch ), 0, 0, 0, 
      +                        LDAP_DEREF_ALWAYS );
      +                $schema_entries = @ldap_get_entries( $ds, $schema_search );
      +
      +                // Still didn't get it?
      +                if( $schema_search === false || 
      +                        0 == @ldap_count_entries( $ds, $schema_search ) ||
      +                        ! isset( $schema_entries[0][$schema_to_fetch] ) ) {
      +                    if( $debug ) echo "Did not find the schema at DN: $schema_dn (with objectClass=* nor objectClass=subschema).\n";
      +                    unset( $schema_entries );
      +                    unset( $schema_dn );
      +                    $schema_search = null;
      +                } else {
      +                    if( $debug ) echo "Found the schema at DN: $schema_dn (with objectClass=subschema).\n";
      +                }
       		} else {
      -			if( $debug ) echo "Found the schema at DN: $schema_dn.\n";
      +			if( $debug ) echo "Found the schema at DN: $schema_dn (with objectClass=*).\n";
       		}
       	} 
       
      @@ -1130,19 +1407,58 @@ function _get_raw_schema( $server_id, $schema_to_fetch, $dn='' )
       				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
       	}
       
      +	// Attempt to pull schema from Root DSE with scope "base"
      +	if( $schema_search == null ) {
      +		// try again, with a different schema DN
      +		if( $debug ) echo "Attempting to pull schema from Root DSE with scope \"base\"...\n";
      +		if( $base_dn != null )
      +			$schema_search = @ldap_read($ds, '', '(objectClass=*)',
      +				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
      +         $schema_entries = @ldap_get_entries( $ds, $schema_search );
      +         if( ! isset( $schema_entries[0][$schema_to_fetch] ) )
      +            $schema_search = null;
      +    }
      +    
      +	// Attempt to pull schema from Root DSE with scope "one" (work-around for Isode M-Vault X.500/LDAP)
      +	if( $schema_search == null ) {
      +		// try again, with a different schema DN
      +		if( $debug ) echo "Attempting to pull schema from Root DSE with scope \"one\"...\n";
      +		if( $base_dn != null )
      +			$schema_search = @ldap_list($ds, '', '(objectClass=*)',
      +				array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
      +         $schema_entries = @ldap_get_entries( $ds, $schema_search );
      +         if( ! isset( $schema_entries[0][$schema_to_fetch] ) )
      +            $schema_search = null;
      +	}
      +
       	// Shall we just give up?
      -	if( $schema_search == null ) 
      +	if( $schema_search == null ) {
      +        if( $debug ) echo "Returning false since schema_search came back null
      \n"; + set_schema_cache_unavailable( $server_id ); return false; + } // Did we get something unrecognizable? if( 'resource' != gettype( $schema_search ) ) { - if( $debug ) "Returning false since schema_esarch is not of type 'resource'\n"; + if( $debug ) echo "Returning false since schema_esarch is not of type 'resource'. Dumping schema search:\n"; + if( $debug ) var_dump( $schema_search ); + if( $debug ) echo ""; + set_schema_cache_unavailable( $server_id ); return false; } $schema = @ldap_get_entries( $ds, $schema_search ); if( $schema == false ) { - if( $debug ) "Returning false since ldap_get_entries() returned false.\n"; + if( $debug ) echo "Returning false since ldap_get_entries() returned false.\n"; + set_schema_cache_unavailable( $server_id ); + return false; + } + + if( ! isset( $schema[0][$schema_to_fetch] ) ) { + if( $debug ) echo "Returning false since '$schema_to_fetch' isn't in the schema array. Showing schema array:\n"; + if( $debug ) var_dump( $schema ); + if( $debug ) echo ""; + set_schema_cache_unavailable( $server_id ); return false; } @@ -1151,35 +1467,32 @@ function _get_raw_schema( $server_id, $schema_to_fetch, $dn='' ) // [0] => "( 1.3.6.1.4.1.7165.1.2.2.4 NAME 'gidPool' DESC 'Pool ... // [1] => "( 1.3.6.1.4.1.7165.2.2.3 NAME 'sambaAccount' DESC 'Sa ... // etc. - if( ! isset( $schema[0][$schema_to_fetch] ) ) { - if( $debug ) "Returning false since '$schema_to_fetch' isn't in the schema array\n"; - return false; - } - $schema = $schema[0][$schema_to_fetch]; unset( $schema['count'] ); - // Store the results in cache for subsequent calls - $cache[ $server_id ][ $schema_to_fetch ] = $schema; - + if( $debug ) echo ""; return $schema; } -/* - * Returns an associative array of objectClasses for the specified - * $server_id. Each array entry's key is the name of the objectClass - * in lower-case. - * The sub-entries consist of sub-arrays called 'must_attrs' and - * 'may_attrs', and sub-entries called 'oid', 'name' and 'description'. +/** + * Gets an associative array of ObjectClass objects for the specified + * server. Each array entry's key is the name of the objectClass + * in lower-case and the value is an ObjectClass object. + * + * @param int $server_id The ID of the server whose objectClasses to fetch + * @param string $dn (optional) It is easier to fetch schema if a DN is provided + * which defines the subschemaSubEntry attribute (all entries should). + * + * @return array An array of ObjectClass objects. + * + * @see ObjectClass + * @see get_schema_objectclass */ -function get_schema_objectclasses( $server_id, $dn=null ) +function get_schema_objectclasses( $server_id, $dn=null, $use_cache=true ) { - // cache the schema to prevent multiple schema fetches from LDAP server - static $cache = array(); - if( isset( $cache[$server_id] ) ) { - //echo "Using oclass cache.
      "; - return $cache[$server_id]; - } + if( $use_cache && cached_schema_available( $server_id, 'objectclasses' ) ) { + return get_cached_schema( $server_id, 'objectclasses' ); + } $raw_oclasses = _get_raw_schema( $server_id, 'objectclasses', $dn ); if( ! $raw_oclasses ) @@ -1199,17 +1512,27 @@ function get_schema_objectclasses( $server_id, $dn=null ) ksort( $object_classes ); // cache the schema to prevent multiple schema fetches from LDAP server - $cache[ $server_id ] = $object_classes; + set_cached_schema( $server_id, 'objectclasses', $object_classes ); return( $object_classes ); } -/* - * Returns the schema for a single ObjectClass +/** + * Gets a single ObjectClass object specified by name. + * + * @param int $server_id The ID of the server which houses the objectClass to fetch. + * @param string $oclass_name The name of the objectClass to fetch. + * @param string $dn (optional) It is easier to fetch schema if a DN is provided + * which defines the subschemaSubEntry attribute (all entries should). + * + * @return ObjectClass The specified ObjectClass object or false on error. + * + * @see ObjectClass + * @see get_schema_objectclasses */ -function get_schema_objectclass( $server_id, $oclass_name, $dn=null ) +function get_schema_objectclass( $server_id, $oclass_name, $dn=null, $use_cache=true ) { $oclass_name = strtolower( $oclass_name ); - $oclasses = get_schema_objectclasses( $server_id, $dn ); + $oclasses = get_schema_objectclasses( $server_id, $dn, $use_cache ); if( ! $oclasses ) return false; if( isset( $oclasses[ $oclass_name ] ) ) @@ -1218,13 +1541,23 @@ function get_schema_objectclass( $server_id, $oclass_name, $dn=null ) return false; } -/* - * Retrieves the schema for a single attribute. +/** + * Gets a single AttributeType object specified by name. + * + * @param int $server_id The ID of the server which houses the AttributeType to fetch. + * @param string $oclass_name The name of the AttributeType to fetch. + * @param string $dn (optional) It is easier to fetch schema if a DN is provided + * which defines the subschemaSubEntry attribute (all entries should). + * + * @return AttributeType The specified AttributeType object or false on error. + * + * @see AttributeType + * @see get_schema_attributes */ -function get_schema_attribute( $server_id, $attr_name, $dn=null ) +function get_schema_attribute( $server_id, $attr_name, $dn=null, $use_cache=true ) { $attr_name = real_attr_name( $attr_name ); - $schema_attrs = get_schema_attributes( $server_id, $dn ); + $schema_attrs = get_schema_attributes( $server_id, $dn, $use_cache ); $attr_name = strtolower( $attr_name ); $schema_attr = isset( $schema_attrs[ $attr_name ] ) ? $schema_attrs[ $attr_name ] : @@ -1232,18 +1565,22 @@ function get_schema_attribute( $server_id, $attr_name, $dn=null ) return $schema_attr; } -/* - * Returns an array of AttributeType objects for the specified - * $server_id. Each array entry's key is the name of the attribute, - * in lower-case. +/** + * Gets an associative array of AttributeType objects for the specified + * server. Each array entry's key is the name of the attributeType + * in lower-case and the value is an AttributeType object. + * + * @param int $server_id The ID of the server whose AttributeTypes to fetch + * @param string $dn (optional) It is easier to fetch schema if a DN is provided + * which defines the subschemaSubEntry attribute (all entries should). + * + * @return array An array of AttributeType objects. */ -function get_schema_attributes( $server_id, $dn = null ) +function get_schema_attributes( $server_id, $dn = null, $use_cache=true ) { - // Cache gets filled in later (bottom). each subsequent call uses - // the cache which has the attributes already fetched and parsed - static $cache = null; - if( isset( $cache[ $server_id ] ) ) - return $cache[ $server_id ]; + if( $use_cache && cached_schema_available( $server_id, 'attributetypes' ) ) { + return get_cached_schema( $server_id, 'attributetypes' ); + } $raw_attrs = _get_raw_schema( $server_id, 'attributeTypes', $dn ); if( ! $raw_attrs ) @@ -1252,7 +1589,7 @@ function get_schema_attributes( $server_id, $dn = null ) // build the array of attribueTypes $syntaxes = get_schema_syntaxes( $server_id, $dn ); $attrs = array(); - /* + /** * bug 856832: create two arrays - one indexed by name (the standard * $attrs array above) and one indexed by oid (the new $attrs_oid array * below). This will help for directory servers, like IBM's, that use OIDs @@ -1271,7 +1608,7 @@ function get_schema_attributes( $server_id, $dn = null ) $key = strtolower( $name ); $attrs[ $key ] = $attr; - /* + /** * bug 856832: create an entry in the $attrs_oid array too. This * will be a ref to the $attrs entry for maintenance and performance * reasons @@ -1281,7 +1618,7 @@ function get_schema_attributes( $server_id, $dn = null ) } add_aliases_to_attrs( $attrs ); - /* + /** * bug 856832: pass the $attrs_oid array as a second (new) parameter * to add_sup_to_attrs. This will allow lookups by either name or oid. */ @@ -1289,12 +1626,42 @@ function get_schema_attributes( $server_id, $dn = null ) ksort( $attrs ); + // Add the used in and required_by values. + $schema_object_classes = get_schema_objectclasses( $server_id ); + + foreach( $schema_object_classes as $object_class ) { + $must_attrs = $object_class->getMustAttrNames($schema_object_classes); + $may_attrs = $object_class->getMayAttrNames($schema_object_classes); + $oclass_attrs = array_unique( array_merge( $must_attrs, $may_attrs ) ); + + // Add Used In. + foreach( $oclass_attrs as $attr_name ) { + if( isset( $attrs[ strtolower( $attr_name ) ] ) ) { + $attrs[ strtolower( $attr_name ) ]->addUsedInObjectClass( + $object_class->getName() ); + } else { + //echo "Warning, attr not set: $attr_name
      "; + } + } + + // Add Required By. + foreach( $must_attrs as $attr_name ) { + if( isset( $attrs[ strtolower( $attr_name ) ] ) ) { + $attrs[ strtolower( $attr_name ) ]->addRequiredByObjectClass( + $object_class->getName() ); + } else { + //echo "Warning, attr not set: $attr_name
      "; + } + } + + } + // cache the schema to prevent multiple schema fetches from LDAP server - $cache[ $server_id ] = $attrs; + set_cached_schema( $server_id, 'attributetypes', $attrs ); return( $attrs ); } -/* +/** * For each attribute that has multiple names, this function adds unique entries to * the attrs array for those names. Ie, attributeType has name 'gn' and 'givenName'. * This function will create a unique entry for 'gn' and 'givenName'. @@ -1319,7 +1686,7 @@ function add_aliases_to_attrs( &$attrs ) } } -/* +/** * Adds inherited values to each attributeType specified by the SUP directive. * Supports infinite levels of inheritance. * Bug 856832: require a second paramter that has all attributes indexed by OID @@ -1344,10 +1711,10 @@ function add_sup_to_attrs( &$attrs, &$attrs_oid ) // but just in case we get carried away, stop at 100. This shouldn't happen, but for // some weird reason, we have had someone report that it has happened. Oh well. $i = 0; - while( $i++ < 100 /* 100 == INFINITY ;) */ ) { + while( $i++ < 100 /** 100 == INFINITY ;) */ ) { if( $debug ) echo "Top of loop.\n"; - /* + /** * Bug 856832: check if sup is indexed by OID. If it is, * replace the OID with the appropriate name. Then reset * $sup_attr_name to the name instead of the OID. This will @@ -1434,18 +1801,15 @@ function add_sup_to_attrs( &$attrs, &$attrs_oid ) if( $debug ) echo "\n"; } -/* +/** * Returns an array of MatchingRule objects for the specified server. * The key of each entry is the OID of the matching rule. */ -function get_schema_matching_rules( $server_id, $dn=null ) +function get_schema_matching_rules( $server_id, $dn=null, $use_cache=true ) { - static $cache; - - // cache the schema to prevent multiple schema fetches from LDAP server - if( isset( $cache[$server_id] ) ) { - return $cache[$server_id]; - } + if( $use_cache && cached_schema_available( $server_id, 'matchingrules' ) ) { + return get_cached_schema( $server_id, 'matchingrules' ); + } // build the array of MatchingRule objects $raw_matching_rules = _get_raw_schema( $server_id, 'matchingRules', $dn ); @@ -1487,22 +1851,19 @@ function get_schema_matching_rules( $server_id, $dn=null ) } // cache the schema to prevent multiple schema fetches from LDAP server - $cache[$server_id] = $rules; + set_cached_schema( $server_id, 'matchingrules', $rules ); return $rules; } -/* +/** * Returns an array of Syntax objects that this LDAP server uses mapped to * their descriptions. The key of each entry is the OID of the Syntax. */ -function get_schema_syntaxes( $server_id, $dn=null ) +function get_schema_syntaxes( $server_id, $dn=null, $use_cache=true ) { - static $cache; - - // cache the schema to prevent multiple schema fetches from LDAP server - if( isset( $cache[$server_id] ) ) { - return $cache[$server_id]; - } + if( $use_cache && cached_schema_available( $server_id, 'ldapsyntaxes' ) ) { + return get_cached_schema( $server_id, 'ldapsyntaxes' ); + } $raw_syntaxes = _get_raw_schema( $server_id, 'ldapSyntaxes', $dn ); if( ! $raw_syntaxes ) @@ -1520,9 +1881,130 @@ function get_schema_syntaxes( $server_id, $dn=null ) ksort( $syntaxes ); // cache the schema to prevent multiple schema fetches from LDAP server - $cache[$server_id] = $syntaxes; + set_cached_schema( $server_id, 'ldapsyntaxes', $syntaxes ); return $syntaxes; } +// -------------------------------------------------------------------- +// Schema caching functions +// -------------------------------------------------------------------- + +/** + * Returns true if the schema for $schema_type has been cached and + * is availble. $schema_type may be one of (lowercase) the following: + * objectclasses + * attributetypes + * ldapsyntaxes + * matchingrules + * matchingruleuse + * Note that _get_raw_schema() takes a similar parameter. + */ +function cached_schema_available( $server_id, $schema_type ) +{ + // Check config to make sure session-based caching is enabled. + if( ! SCHEMA_SESSION_CACHE_ENABLED ) + return false; + + // Static memory cache available? + // (note: this memory cache buys us a 20% speed improvement over strictly + // checking the session, ie 0.05 to 0.04 secs) + $schema_type = strtolower( $schema_type ); + static $cache_avail; + if( isset( $cache_avail[ $server_id ][ $schema_type ] ) ) { + return true; + } + + // Session cache available? + if( isset( $_SESSION[ 'schema' ][ $server_id ][ $schema_type ] ) ) { + $cache_avail[ $server_id ][ $schema_type ] = true; + return true; + } elseif ( isset( $_SESSION[ 'schema' ][ $server_id ][ 'unavailable'] ) ) { + return true; + } else { + return false; + } +} + +/** + * Returns the cached array of schemaitem objects for the specified + * $schema_type. For list of valid $schema_type values, see above + * schema_cache_available(). Note that internally, this function + * utilizes a two-layer cache, one in memory using a static variable + * for multiple calls within the same page load, and one in a session + * for multiple calls within the same user session (spanning multiple + * page loads). + * + * Returns an array of SchemaItem objects on success or false on failure. + */ +function get_cached_schema( $server_id, $schema_type ) +{ + // Check config to make sure session-based caching is enabled. + if( ! SCHEMA_SESSION_CACHE_ENABLED ) + return false; + + static $cache; + $schema_type = strtolower( $schema_type ); + if( isset( $cache[ $server_id ][ $schema_type ] ) ) { + //echo "Getting memory-cached schema for \"$schema_type\"...
      \n"; + return $cache[ $server_id ][ $schema_type ]; + } + + //echo "Getting session-cached schema for \"$schema_type\"...
      \n"; + if( cached_schema_available( $server_id, $schema_type ) ) { + $schema = $_SESSION[ 'schema' ][ $server_id ][ $schema_type ]; + $cache[ $server_id ][ $schema_type ] = $schema; + return $schema; + } else { + return false; + } +} + +/** + * Caches the specified $schema_type for the specified $server_id. + * $schema_items should be an array of SchemaItem instances (ie, + * an array of ObjectClass, AttributeType, LDAPSyntax, MatchingRuleUse, + * or MatchingRule objects. + * + * Returns true on success of false on failure. + */ +function set_cached_schema( $server_id, $schema_type, $schema_items ) +{ + // Check config to make sure session-based caching is enabled. + if( ! SCHEMA_SESSION_CACHE_ENABLED ) + return false; + + //echo "Setting cached schema for \"$schema_type\"...
      \n"; + // Sanity check. The schema must be in the form of an array + if( ! is_array( $schema_items ) ) { + die( "While attempting to cache schema, passed a non-array for \$schema_items!" ); + return false; + } + // Make sure we are being passed a valid array of schema_items + foreach( $schema_items as $schema_item ) { + if( ! is_subclass_of( $schema_item, 'SchemaItem' ) && + ! 0 == strcasecmp( 'SchemaItem', get_class( $schema_item ) ) ) { + die( "While attempting to cache schema, one of the schema items passed is not a true SchemaItem instance!" ); + return false; + } + } + + $schema_type = strtolower( $schema_type ); + $_SESSION[ 'schema' ][ $server_id ][ $schema_type ] = $schema_items; + return true; +} + +/** + * Sets the schema entry for the server_id to be "unavailable" so that we realize + * that we tried to get the schema but could not, so quit trying next time to + * fetch it from the server. + */ +function set_schema_cache_unavailable( $server_id ) +{ + if( ! SCHEMA_SESSION_CACHE_ENABLED ) + return false; + $_SESSION['schema'][$server_id]['unavailable'] = true; + return true; +} + ?> diff --git a/search.php b/search.php index e51ed3b..2dc3ab7 100644 --- a/search.php +++ b/search.php @@ -1,4 +1,6 @@ -'; $server_info_list =array(); -foreach( $servers as $id => $server ) { +$server_menu_html = ''; +if (count($servers)>1){ + $server_menu_html = ''; +} else { + $server = reset($servers); + $id = key($servers); $base_dn = $server['base'] ? $server['base'] : try_to_get_root_dn( $id ); $server_info_list[$id]['id'] = $id; $server_info_list[$id]['name'] = $server['name']; $server_info_list[$id]['base_dn'] = $base_dn; - - if( $server['host'] ) { - $server_menu_html .= ''; - } + if( $server['host'] ) + $server_menu_html .= '' . + '' . $server['name'] . ''; } -$server_menu_html .= ''; $filter = isset( $_GET['filter'] ) ? $_GET['filter'] : null; -$filter = $filter; $attr = isset( $_GET['attribute'] ) ? $_GET['attribute'] : null; // grab the base dn for the search -if( isset( $_GET['base_dn'] ) ) +if( isset( $_GET['base_dn'] ) ) { $base_dn = $_GET['base_dn']; -elseif( '' != $servers[$server_id]['base'] ) + $base_dn_is_invalid = false; + $base_dn_does_not_exist = false; + if( trim( $base_dn ) ) + if( ! is_dn_string( $base_dn ) ) + $base_dn_is_invalid = true; + elseif( ! dn_exists( $server_id, $base_dn ) ) + $base_dn_does_not_exist = true; +} elseif( '' != $servers[$server_id]['base'] ) $base_dn = $servers[$server_id]['base']; else $base_dn = try_to_get_root_dn( $server_id ); $criterion = isset( $_GET['criterion'] ) ? $_GET['criterion'] : null; -$form = isset( $_GET['form'] ) ? $_GET['form'] : null; +$form = isset( $_GET['form'] ) ? $_GET['form'] : null; $scope = isset( $_GET['scope'] ) ? $_GET['scope'] : 'sub'; -include 'header.php'; ?> +include './header.php'; ?> @@ -73,22 +101,27 @@ include 'header.php'; ?> include 'search_form_advanced.php'; +} elseif( $form == 'predefined' ) { + + include 'search_form_predefined.php'; + } else /* Draw simple search form */ { process_config(); + if( count( $search_attributes ) != count( $search_attributes_display ) ) + pla_error( $lang['mismatched_search_attr_config'] ); include 'search_form_simple.php'; } ?> - - Searching...\n"; + echo "
      " . $lang['searching'] . "
      \n"; flush(); // prevent script from bailing early on a long delete @set_time_limit( 0 ); - // grab the time limit set in config.php + // grab the size limit set in config.php $size_limit = isset ( $search_result_size_limit ) && is_numeric( $search_result_size_limit ) ? $search_result_size_limit : - 0; + 50; + // Sanity check + if( $size_limit < 1 ) + $size_limit = 1; + + $page = isset( $_GET['page'] ) ? $_GET['page'] : 0; $time_start = utime(); if( $scope == 'base' ) $results = @ldap_read( $ds, $base_dn, $filter, $search_result_attributes, - 0, 0, 0, LDAP_DEREF_ALWAYS ); + 0, 0, 0, get_search_deref_setting() ); elseif( $scope == 'one' ) $results = @ldap_list( $ds, $base_dn, $filter, $search_result_attributes, - 0, 0, 0, LDAP_DEREF_ALWAYS ); + 0, 0, 0, get_search_deref_setting() ); else // scope == 'sub' $results = @ldap_search( $ds, $base_dn, $filter, $search_result_attributes, - 0, 0, 0, LDAP_DEREF_ALWAYS ); - + 0, 0, 0, get_search_deref_setting() ); $errno = @ldap_errno( $ds ); + if( ! $results ) { + pla_error( $lang['error_performing_search'], ldap_error( $ds ), ldap_errno( $ds ) ); + } + $time_end = utime(); $time_elapsed = round( $time_end - $time_start, 2 ); $count = @ldap_count_entries( $ds, $results ); + $start_entry = $page * $size_limit; + $end_entry = min( $start_entry + $size_limit + 1, $count+1 ); + ?> -
      - - (in seconds). - +
+ + + +
+ ' . number_format( $count ) ?>  + ( ) + - // The LDAP error code for the size limit exceeded error. - define( 'SIZE_LIMIT_EXCEEDED', 4 ); - if( $errno && $errno == SIZE_LIMIT_EXCEEDED ) { - echo "
Notice, search size limit exceeded.
\n"; - } - - if( $size_limit > 0 && $count > $size_limit ) { - echo "
Showing first $size_limit results.
\n"; - - } - - ?> - - -
-
+ + + " . + $lang['export_results'] . " ]"; ?> + ' . $lang['format'] . ':'; + foreach( $result_formats as $f ) { + echo ' '; + if( $format == $f ) { + echo '' . $lang[$f] . ''; + } else { + $php_self = $_SERVER['PHP_SELF']; + $query_string = array_to_query_string( $_GET, array( 'format' ) ); + $query_string .= "&format=$f"; + echo "" . $lang[$f] . ""; + } + } + ?> + ] + + + +
+ - - +
-
" . $lang['size_limit_exceeded'] . "

\n"; + } + + // Draw the paging links + $pager_html = ''; + $total_pages = $count / $size_limit; + $results_per_page = $size_limit; + if( $count > $size_limit ) { + echo sprintf( $lang['showing_results_x_through_y'], "" . number_format($start_entry+1) . "", "" . number_format($end_entry-1) . "" ) . "
\n"; + $php_self = $_SERVER['PHP_SELF']; + if( $page != 0 ) { + $query_string = array_to_query_string( $_GET, array( 'page' ) ); + $query_string .= '&page=' . ($page-1); + $pager_html .= "‹‹"; + } else { + $pager_html .= "‹‹"; + } + $pager_html .= '  '; + + // for large search results where we page beyone the first 20 pages, + // print elipsis instead of making the pager be super wide. + $elipsis_printed = false; + for( $i=0; $i<$count; $i+=$size_limit ) { + $page_num = $i/$size_limit; + if( $count > $size_limit * 20 && abs( $page_num - $page ) > 10 ) { + if( ! $elipsis_printed ) { + $pager_html .= '...  '; + $elipsis_printed = true; + } + } else if( $page == $page_num ) { + $pager_html .= '' . ($page_num + 1) . ''; + $pager_html .= '  '; + $elipsis_printed = false; + } else { + $query_string = array_to_query_string( $_GET, array( 'page' ) ); + $query_string .= '&page=' . $page_num; + $pager_html .= "" . ($page_num+1) . ""; + $pager_html .= '  '; + $elipsis_printed = false; + } + } + if( $page+1 < $total_pages ) { + $query_string = array_to_query_string( $_GET, array( 'page' ) ); + $query_string .= '&page=' . ($page+1); + $pager_html .= "››"; + } else { + $pager_html .= "››"; } - $friendly_attrs = process_friendly_attr_table(); - $entry_id = ldap_first_entry( $ds, $results ); + } - // Iterate over each entry - $i = 0; - while( $entry_id ) { - $i++; - // Only display the first $size_limit entries - if( $size_limit != 0 && $i > $size_limit ) { - break; - } - - $dn = ldap_get_dn( $ds, $entry_id ); - $encoded_dn = rawurlencode( $dn ); - $rdn = get_rdn( $dn ); - ?> - -
- - - - - -
-
-
- - - - "; - echo "\n"; - - // Iterate over each attribute for this entry - while( $attr ) { - - if( is_attr_binary( $server_id, $attr ) ) - $values = array( "(binary)" ); - else - $values = ldap_get_values( $ds, $entry_id, $attr ); - if( isset( $values['count'] ) ) - unset( $values['count'] ); - - if( isset( $friendly_attrs[ strtolower( $attr ) ] ) ) - $attr = "" . - htmlspecialchars( $friendly_attrs[ strtolower($attr) ] ) . - ""; - else - $attr = htmlspecialchars( $attr ); - ?> - - - - - - - -
dn" . htmlspecialchars($dn) . "
- \n"; - ?> -
- -

' . $lang['no_results'] . '

'; + else { + echo '
' . $pager_html . '

'; + flush(); + if( $format == 'list' ) + include realpath( './search_results_list.php' ); + elseif( $format == 'table' ) + include realpath( './search_results_table.php' ); + else + pla_error( sprintf( $lang['unrecoginzed_search_result_format'], htmlspecialchars( $format ) ) ); + echo '
' . $pager_html . '
'; + } ?> diff --git a/search_form_advanced.php b/search_form_advanced.php index 1452a44..0f942f8 100644 --- a/search_form_advanced.php +++ b/search_form_advanced.php @@ -1,20 +1,27 @@ - - + diff --git a/search_form_predefined.php b/search_form_predefined.php new file mode 100644 index 0000000..6c48da1 --- /dev/null +++ b/search_form_predefined.php @@ -0,0 +1,52 @@ +
+ diff --git a/search_form_simple.php b/search_form_simple.php index ded2aea..c49d5f6 100644 --- a/search_form_simple.php +++ b/search_form_simple.php @@ -1,23 +1,33 @@ - - + diff --git a/search_results_list.php b/search_results_list.php new file mode 100644 index 0000000..6e1f35a --- /dev/null +++ b/search_results_list.php @@ -0,0 +1,90 @@ += $end_entry ) + break; + $dn = ldap_get_dn( $ds, $entry_id ); + $encoded_dn = rawurlencode( $dn ); + $rdn = get_rdn( $dn ); + ?> + +
+ + + + + +
+
+
+ + + + "; + echo "\n"; + + // Iterate over each attribute for this entry + while( $attr ) { + + if( is_attr_binary( $server_id, $attr ) ) + $values = array( "(binary)" ); + else + $values = ldap_get_values( $ds, $entry_id, $attr ); + if( isset( $values['count'] ) ) + unset( $values['count'] ); + + if( isset( $friendly_attrs[ strtolower( $attr ) ] ) ) + $attr = "" . + htmlspecialchars( $friendly_attrs[ strtolower($attr) ] ) . + ""; + else + $attr = htmlspecialchars( $attr ); + ?> + + + + + + + +
dn" . htmlspecialchars($dn) . "
+ \n"; + ?> +
+ + 1, + 'dn' => 1 ); + +// Iterate over each entry and store the whole dang thing in memory (necessary to extract +// all attribute names and display in table format in a single pass) +$i = 0; +$entries = array(); +$entries_display = array(); +while( $entry_id ) { + $i++; + if( $i <= $start_entry ) { + $entry_id = ldap_next_entry( $ds, $entry_id ); + continue; + } + if( $i >= $end_entry ) + break; + $dn = ldap_get_dn( $ds, $entry_id ); + $dn_display = strlen( $dn ) > 40 ? "" . + htmlspecialchars( substr( $dn, 0, 40 ) . '...' ) . + "" + : htmlspecialchars( $dn ); + $encoded_dn = rawurlencode( $dn ); + $rdn = get_rdn( $dn ); + $icon = get_icon_use_cache( $server_id, $dn ); + $attrs = ldap_get_attributes( $ds, $entry_id ); + $attr = ldap_first_attribute( $ds, $entry_id, $attrs ); + $attrs_display = array(); + $edit_url = "edit.php?server_id=$server_id&dn=$encoded_dn"; + $attrs_display[''] = "
"; + $attrs_display['dn'] = "$dn_display"; + + // Iterate over each attribute for this entry and store in associative array $attrs_display + while( $attr ) { + //echo "getting values for dn $dn, attr $attr\n"; + + // Clean up the attr name + if( isset( $friendly_attrs[ strtolower( $attr ) ] ) ) + $attr_display = "" . + htmlspecialchars( $friendly_attrs[ strtolower($attr) ] ) . + ""; + else + $attr_display = htmlspecialchars( $attr ); + + if( ! isset( $all_attrs[ $attr_display ] ) ) + $all_attrs[ $attr_display ] = 1; + + // Get the values + $display = ''; + if( is_jpeg_photo( $server_id, $attr ) ) { + ob_start(); + draw_jpeg_photos( $server_id, $dn, $attr, false, false, 'align="center"' ); + $display = ob_get_contents(); + ob_end_clean(); + } elseif( is_attr_binary( $server_id, $attr ) ) { + $display = array( "(binary)" ); + } else { + $values = @ldap_get_values( $ds, $entry_id, $attr ); + if( ! is_array( $values ) ) { + $display = 'Error'; + } else { + if( isset( $values['count'] ) ) + unset( $values['count'] ); + foreach( $values as $value ) + $display .= str_replace( ' ', ' ', + htmlspecialchars( $value ) ) . "
\n"; + } + } + $attrs_display[ $attr_display ] = $display; + $attr = ldap_next_attribute( $ds, $entry_id, $attrs ); + } // end while( $attr ) + + $entries_display[] = $attrs_display; + + //echo '
';
+    //print_r( $attrs_display );
+    //echo "\n\n";
+    $entry_id = ldap_next_entry( $ds, $entry_id );
+
+} // end while( $entry_id )
+
+$all_attrs = array_keys( $all_attrs );
+
+/*
+echo "
";
+print_r( $all_attrs );
+print_r( $entries_display );
+echo "
"; +*/ + +// Store the header row so it can be repeated later +$header_row = "
$attr
\n"; + +for( $i=0; $i"; + else + echo ""; + foreach( $all_attrs as $attr ) { + echo "\n"; + } + echo "\n"; +} +echo "
"; + if( isset( $entry[ $attr ] ) ) + echo $entry[ $attr ]; + echo "
"; +echo ""; diff --git a/search_util.js b/search_util.js index 84232c3..4475171 100644 --- a/search_util.js +++ b/search_util.js @@ -3,7 +3,7 @@ // This JavaScript file defines some functions used by the two search forms for // auto-populating the base DN dynamically when a server is selected from the // drop-down. -// +// $Header: /cvsroot/phpldapadmin/phpldapadmin/search_util.js,v 1.2 2004/03/19 20:17:51 i18phpldapadmin Exp $ //the array to store the server var servers = new Array(); diff --git a/server_info.php b/server_info.php index dd904d4..e3321f7 100644 --- a/server_info.php +++ b/server_info.php @@ -1,4 +1,6 @@ - +

@@ -60,25 +96,26 @@ include 'header.php'; -
+ href="">
\n"; ?>
+ + diff --git a/session_functions.php b/session_functions.php new file mode 100644 index 0000000..92b8ac3 --- /dev/null +++ b/session_functions.php @@ -0,0 +1,119 @@ + diff --git a/style.css b/style.css index 2fd25d9..b5437cb 100644 --- a/style.css +++ b/style.css @@ -1,3 +1,14 @@ +/* $Header: /cvsroot/phpldapadmin/phpldapadmin/style.css,v 1.40 2004/10/23 21:13:16 uugdave Exp $ */ +span.hint { + font-size: small; + font-weight: normal; + color: #888; +} + +span.x-small { + font-size: x-small; +} + table.schema_oclasses { border-left: 1px solid black; border-right: 1px solid black; @@ -82,6 +93,10 @@ table.confirm th { font-weight: normal; } +table.confirm tr td { + padding: 4px; +} + table.confirm tr.spacer { background-color: #ddd; } @@ -90,17 +105,27 @@ table.confirm tr.even { background-color: #ccc; } -table.confirm tr.odd{ +table.confirm tr.odd { background-color: #eee; } -table.confirm tr td { - padding: 4px; - vertical-align: top; +table.confirm tr td.heading { + text-align: right; + font-size: 75%; } -table.confirm tr td.heading { - font-size: 75%; +table.confirm td.icon { + text-align: center; +} + +table.browse tr td { + border: 0; + margin: 0; + padding: 0; +} + +table.template_display tr td { + vertical-align: top; } table.templates tr td { @@ -112,6 +137,18 @@ table.templates tr { height: 25px; } +table.templates td.icon { + text-align: center; +} + +table.exporters tr td { + text-align: left; + vertical-align: center; +} + +table.exporters tr { + height: 25px; +} a img { border: 0px; @@ -241,27 +278,38 @@ h3.subtitle { font-weight: normal; } -table.edit_dn tr.spacer td { - height: 10px; -} - table.edit_dn { - width: 100%; + border-collapse: collapse; + border-spacing: 0px; + empty-cells: show; + width: 500px; } -table.edit_dn th { - background: #777; - color: white; - font-weight: normal; - font-size: 125%; - padding: 5px; +table.edit_dn input { + margin: 1px; +} + +table.edit_dn input.val { + font-size: 14px; + width: 350px; + font-family: arial, helvetica, sans-serif + background-color: white; +} + +table.edit_dn textarea.val { + font-size: 14px; + width: 350px; + font-family: arial, helvetica, sans-serif; + background-color: white; } table.edit_dn tr td { padding: 4px; + padding-right: 0px; } table.edit_dn tr td.attr { + background-color: #eee; vertical-align: top; } @@ -270,6 +318,11 @@ table.edit_dn tr td.heading { font-weight: bold; } +table.edit_dn tr td.attr_note { + text-align: right; + background-color: #eee; +} + table.edit_dn tr td.attr a { text-decoration: none; color: black; @@ -281,20 +334,35 @@ table.edit_dn tr td.attr a:hover { } table.edit_dn tr td.val { - text-align: right; + text-align: left; vertical-align: center; - padding-bottom: 15px; + padding-bottom: 10px; + padding-left: 80px; } -/* When an attr is updated, it is displayed in light blue to indicate such */ -table.edit_dn tr.updated_attr { - background: #def; + +/** When an attr is updated, it is highlighted to indicate such */ +table.edit_dn tr.updated_attr td.attr { + border-top: 1px dashed green; + border-left: 1px dashed green; + background-color: #ded; } -table.edit_dn tr.updated_attr td { - border-top: 1px solid black; - border-bottom: 1px solid black; - color: #005; +table.edit_dn tr.updated_attr td.attr_note { + border-top: 1px dashed green; + border-right: 1px dashed green; + background-color: #ded; +} + +/** An extra row that sits at the bottom of recently modified attrs to encase them in dashes */ +table.edit_dn tr.updated_attr td.bottom { + border-top: 1px dashed green; +} + +/** Formatting for the value cell when it is the attribute that has been recently modified */ +table.edit_dn tr.updated_attr td.val { + border-left: 1px dashed green; + border-right: 1px dashed green; } /* Neede to prevent sub-tables (like the one in which jpegPhotos are displayed) @@ -384,15 +452,44 @@ form.new_value { margin-left: 70px; } +table.search_result_table { + border-spacing: 0; + border-collapse: collapse; + empty-cells: show; +} + +table.search_result_table td { + vertical-align: top; + border: 1px solid gray; + padding: 4px; +} + +table.search_result_table th { + border: 1px solid gray; + padding: 10px; + padding-left: 20px; + padding-right: 20px; +} + +table.search_result_table tr.highlight { + background-color: #eee; +} + + ul.search { font-weight: bold; } +table.search_header { + background-color: #ddf; + width: 100%; + vertical-align: top; +} + div.search_result { list-style-type: none; - background: #ffb; padding: 6px; - padding-left: 10px; + padding-left: 20px; margin-right: 40px; } @@ -400,6 +497,7 @@ table.attrs { font-weight: normal; font-size: 75%; margin: 0px; + margin-left: 35px; } table.attrs td { @@ -421,6 +519,11 @@ table.edit_dn_menu { font-size: 75%; } +table.edit_dn_menu td.icon { + width: 16px; + text-align: center; +} + input.scary { background: red; font-weight: bold; @@ -467,6 +570,7 @@ table.create td.heading { div.add_value { font-size: 10pt; margin: 0px; + padding: 0px; } a.logged_in_dn { @@ -497,3 +601,21 @@ h2.doc { p.doc { margin-left: 100px; } + +table.export_form { + font-size: 75%; + width: 400px; + border-spacing: 10px; + border-collapse: separate; +} + +table.export_form tr td { + text-align: left; + vertical-align: top; + padding: 4px; +} + +img.chooser { + /* This makes the chooser image line up properly when placed next to a form element in a table cell*/ + vertical-align: bottom; +} diff --git a/templates/creation/custom.php b/templates/creation/custom.php index f82ed4f..10cbfa6 100644 --- a/templates/creation/custom.php +++ b/templates/creation/custom.php @@ -1,6 +1,5 @@ -

Step 1 of 2: Name and ObjectClass(es)

+

@@ -27,20 +28,22 @@ if( $step == 1 ) - - + + - + - + @@ -62,7 +65,7 @@ if( $step == 1 ) - +
RDN: (example: cn=MyNewObject):
Container:
ObjectClass(es): - + $oclass ) { + if( 0 == strcasecmp( "top", $name ) ) continue; ?> + @@ -53,7 +56,7 @@ if( $step == 1 ) - Hint: You must choose at least one structural objectClass +
@@ -72,17 +75,16 @@ if( $step == 1 ) if( $step == 2 ) { strlen( trim( $rdn ) ) != 0 or - pla_error( "You left the RDN field blank" ); + pla_error( $lang['rdn_field_blank'] ); strlen( trim( $container ) ) == 0 or dn_exists( $server_id, $container ) or - pla_error( "The container you specified (" . htmlspecialchars( $container ) . ") does not exist. " . - "Please go back and try again." ); + pla_error( sprintf( $lang['container_does_not_exist'], htmlspecialchars( $container ) ) ); $friendly_attrs = process_friendly_attr_table(); - $oclasses = $_POST['object_classes']; + $oclasses = isset( $_POST['object_classes'] ) ? $_POST['object_classes'] : null; if( count( $oclasses ) == 0 ) - pla_error( "You did not select any ObjectClasses for this object. Please go back and do so." ); - $dn = $rdn . ',' . $container; + pla_error( $lang['no_objectclasses_selected'] ); + $dn = trim( $container ) ? $rdn . ',' . $container : $rdn; // incrementally build up the all_attrs and required_attrs arrays $schema_oclasses = get_schema_objectclasses( $server_id ); @@ -101,9 +103,28 @@ if( $step == 2 ) $required_attrs = array_unique( $required_attrs ); $all_attrs = array_unique( $all_attrs ); + remove_aliases( $required_attrs, $server_id ); + remove_aliases( $all_attrs, $server_id ); sort( $required_attrs ); sort( $all_attrs ); - + + // if for some reason "ObjectClass" ends up in the list of + // $all_attrs or $required_attrs, remove it! This is a fix + // for bug 927487 + foreach( $all_attrs as $i => $attr_name ) + if( 0 == strcasecmp( $attr_name, 'objectClass' ) ) { + unset( $all_attrs[$i] ); + $all_attrs = array_values( $all_attrs ); + break; + } + + foreach( $required_attrs as $i => $attr_name ) + if( 0 == strcasecmp( $attr_name, 'objectClass' ) ) { + unset( $required_attrs[$i] ); + $required_attrs = array_values( $required_attrs ); + break; + } + // remove binary attributes and add them to the binary_attrs array $binary_attrs = array(); foreach( $all_attrs as $i => $attr_name ) { @@ -112,51 +133,26 @@ if( $step == 2 ) $binary_attrs[] = $attr_name; } } + + // If we trim any attrs out above, then we will have a gap in the index + // sequence and will get an "undefined index" error below. This prevents + // that from happening. + $all_attrs = array_values( $all_attrs ); - $attr_select_html = ""; - foreach( $all_attrs as $a ) { - // is there a user-friendly translation available for this attribute? - if( isset( $friendly_attrs[ strtolower( $a ) ] ) ) { - $attr_display = htmlspecialchars( $friendly_attrs[ strtolower( $a ) ] ) . " (" . - htmlspecialchars($a) . ")"; - } else { - $attr_display = htmlspecialchars( $a ); - } - - $attr_select_html .= "\n"; - } - - $binary_attr_select_html = ""; - if( count( $binary_attrs ) > 0 ) { - foreach( $binary_attrs as $a ) { - if( isset( $friendly_attrs[ strtolower( $a ) ] ) ) { - $attr_display = htmlspecialchars( $friendly_attrs[ strtolower( $a ) ] ) . " (" . - htmlspecialchars( $a ) . ")"; - } else { - $attr_display = htmlspecialchars( $a ); - } - - $binary_attr_select_html .= "\n"; - } - } - // add the required attribute based on the RDN provided by the user // (ie, if the user specifies "cn=Bob" for their RDN, make sure "cn" is // in the list of required attributes. $rdn_attr = trim( substr( $rdn, 0, strpos( $rdn, '=' ) ) ); $rdn_value = trim( substr( $rdn, strpos( $rdn, '=' ) + 1 ) ); + $rdn_value = @pla_explode_dn( $rdn ); + $rdn_value = @explode( '=', $rdn_value[0], 2 ); + $rdn_value = @$rdn_value[1]; if( in_array( $rdn_attr, $all_attrs ) && ! in_array( $rdn_attr, $required_attrs ) ) $required_attrs[] = $rdn_attr; ?> -

Step 2 of 2: Specify attributes and values

+

- Instructions: - Enter values for the required attributes.
- Then specify any optional attributes. 0 ) { ?> - Finally, you may
specify optional binary attributes from a file if needed. -
-
@@ -166,22 +162,18 @@ if( $step == 2 ) - + \n"; + echo "\n"; } else foreach( $required_attrs as $count => $attr ) { ?> - - - - - - + ?> + - + - + - - - - - - - + + + + + + 0 ) { ?> - + - - - - - - - + -
Required Attributes
(none)
(" . $lang['none'] . ")
+ " . + $attr_display = "" . htmlspecialchars( $friendly_attrs[ strtolower( $attr ) ] ) . ""; } else { $attr_display = htmlspecialchars( $attr ); @@ -189,47 +181,121 @@ if( $step == 2 ) echo $attr_display; - ?>
" name="required_attrs[]" - value="" size="40" /> + value="" size="40" />
Optional Attributes
(none)
()
-
Optional Binary Attributes
+
- + +
- +
+ - + + +$attr_display\n"; + } + return $attr_select_html; +} + +function get_binary_attr_select_html( $binary_attrs, $friendly_attrs, $highlight_attr=null ) +{ + $binary_attr_select_html = ""; + if( ! is_array( $binary_attrs ) ) + return null; + if( count( $binary_attrs ) == 0 ) + return null; + foreach( $binary_attrs as $a ) { + // is there a user-friendly translation available for this attribute? + if( isset( $friendly_attrs[ strtolower( $a ) ] ) ) { + $attr_display = htmlspecialchars( $friendly_attrs[ strtolower( $a ) ] ) . " (" . + htmlspecialchars( $a ) . ")"; + } else { + $attr_display = htmlspecialchars( $a ); + } + $binary_attr_select_html .= ""; + $attr1 = get_schema_attribute( $server_id, $attr_name1 ); + if( null == $attr1 ) + continue; + if( $attr1->isAliasFor( $attr_name2 ) ) { + //echo "* Removing attribute ". $attribute_list[ $k ] . "
"; + unset( $attribute_list[ $k ] ); + } + } + } + $attribute_list = array_values( $attribute_list ); +} +?> diff --git a/templates/creation/new_address_template.php b/templates/creation/new_address_template.php index fb8cabc..3d96c67 100755 --- a/templates/creation/new_address_template.php +++ b/templates/creation/new_address_template.php @@ -1,250 +1,249 @@ - - - - -

New Address Book Entry
-(InetOrgPerson)

-
- - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name: - - -
Common name:
Organization:
Address:
City:
Postal code:
Work phone:
Fax:
Mobile:
Email:
Container: -

-
- - -

Confirm entry creation:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Common name:
First name:
Last name:
Organization:
City:
Postal code:
Street:
Work phone:
Fax:
Mobile:
Email:
Container:
-
-
- - - - - - + + + + +


+(InetOrgPerson)

+
+ + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
: + + +
:
:
:
:
:
:
:
:
:
: + +

+
+
+ + +

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+ + + diff --git a/templates/creation/new_alias_template.php b/templates/creation/new_alias_template.php new file mode 100644 index 0000000..7765be0 --- /dev/null +++ b/templates/creation/new_alias_template.php @@ -0,0 +1,95 @@ + + +

New Alias

+ + + +
+ + + + +
+ + + + + + + + + + + + + + +
Container DN: + +
Alias To: + +

+
+
+ + +
+ + + + + + + + + + + + + + +
+ Really create this new Alias entry?
+
+ + + + +
Container
alias
+
+
+
+ + + diff --git a/templates/creation/new_dns_entry.php b/templates/creation/new_dns_entry.php index 597e8b3..55faf03 100755 --- a/templates/creation/new_dns_entry.php +++ b/templates/creation/new_dns_entry.php @@ -1,91 +1,91 @@ - - -

New DNS Entry

- - - -
- - - - -
- - - - - - - - - - - - - - - - - - - - -
DC Name: (hint: don't include "dc=")
Associated Domain:
Container DN: -

-
- - - - - - - - - - - - - - - - - - -
- Really create this new DC entry?
-
- - - - - -
Name
Domain
Container
-
-
- - + + +

New DNS Entry

+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
DC Name: (hint: don't include "dc=")
Associated Domain:
Container DN: + +

+
+
+ + +
+ + + + + + + + + + + + + + + +
+ Really create this new DC entry?
+
+ + + + + +
Name
Domain
Container
+
+
+ + diff --git a/templates/creation/new_kolab_template.php b/templates/creation/new_kolab_template.php new file mode 100644 index 0000000..b72a408 --- /dev/null +++ b/templates/creation/new_kolab_template.php @@ -0,0 +1,300 @@ + + + + +

New Kolab Entry
+(extended InetOrgPerson)

+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name (First/Last): + + +
Common name:
Email (uid):
Password:
Title:
E-Mail Alias:
Organization:
Organizational Unit:
Room number:
Address:
Post Box:
City:
Postal code:
Country:
Work phone:
Fax:
Container: + +

+
+
+ + +

Confirm entry creation:

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Common name:
First name:
Last name:
Organization:
City:
Postal code:
Street:
Work phone:
Fax:
Email:
Container:
+
+
+
+ + diff --git a/templates/creation/new_mozillaOrgPerson_template.php b/templates/creation/new_mozillaOrgPerson_template.php new file mode 100644 index 0000000..d5d08d8 --- /dev/null +++ b/templates/creation/new_mozillaOrgPerson_template.php @@ -0,0 +1,224 @@ + + */ + +// customize this to your needs +$default_container = "ou=Addresses"; + +// Common to all templates +$container = $_POST['container']; +$server_id = $_POST['server_id']; + +// Unique to this template +$step = isset( $_POST['step'] ) ? $_POST['step'] : 1; + +check_server_id( $server_id ) or pla_error( "Bad server_id: " . htmlspecialchars( $server_id ) ); +have_auth_info( $server_id ) or pla_error( "Not enough information to login to server. Please check your configuration." ); + +/** +* Data definition incl. group names +*/ +$arDataDef = array( + 'name' => array( + 'givenName' => 'Given name', + 'sn' => 'Last name', + 'cn' => 'Common name', + 'mozillanickname' => 'mozillaNickname' + ), + 'internet' => array( + 'mail' => 'Email', + 'mozillaSecondEmail' => 'Second email', +// 'mozilla_AimScreenName' => 'Screen name', +// 'mozillausehtmlmail' => 'Use HTML mail' + ), + 'Phones' => array( + 'telephoneNumber' => 'Work', + 'homePhone' => 'Home', + 'facsimileTelephoneNumber' => 'Fax', + 'pager' => 'Pager', + 'mobile' => 'Mobile' + ), + 'Home address' => array( + 'homePostalAddress' => 'Address', + 'mozillaHomePostalAddress2' => 'Address 2', + 'mozillaHomeLocalityName' => 'City', + 'mozillaHomeState' => 'State', + 'mozillaHomePostalCode' => 'ZIP', +// 'mozillaHomeFriendlyCountryName' => 'friendly Country', + 'mozillaHomeCountryName' => 'Country', + 'mozillaHomeUrl' => 'Web page' + ), + 'Work address' => array( + 'title' => 'Title', + 'ou' => 'Department', + 'o' => 'Organization', + 'postalAddress' => 'Address', + 'mozillaPostalAddress2' => 'Address 2', + 'l' => 'City', + 'st' => 'State/Province', + 'postalCode' => 'ZIP', + 'c' => 'Country', + 'mozillaWorkUrl' => 'Web page' + ), + 'Other' => array( +// 'custom1' => 'Custom 1', +// 'custom2' => 'Custom 2', +// 'custom3' => 'Custom 3', +// 'custom4' => 'Custom 4', +// 'description' => 'Notes' + ) +/**/ +); + +?> + + + +

New Address Book Entry
+(MozillaOrgPerson)

+
+ + + +
+ + + + +
+ + $arGroup) + { + echo '' . "\r\n"; + foreach( $arGroup as $strId => $strName) + { + if( $strId == 'sn' || $strId == 'givenName') { + $strAutoChange = ' onChange="autoFillCommonName(this.form)"'; + } else { + $strAutoChange = ''; + } + echo '' . "\r\n"; + echo '' . "\r\n"; + echo '' . "\r\n"; + echo '' . "\r\n"; + echo '' . "\r\n"; + } + } + +?> + + + + + + + + + +
' . htmlspecialchars( $strGroupName) . '
' . htmlspecialchars( $strName) . '
Container: + +

+
+
+ + $strName) { + $arData[$strId] = trim( $_POST[$strId]); + } + } + $container = $_POST['container']; + + /* Critical assertions */ + 0 != strlen( $arData['cn']) or + pla_error( "You cannot leave the Common Name blank. Please go back and try again." ); + + ?> +

Confirm entry creation:

+ +
+ + + + + + + + + + $strName) { + echo '' . "\r\n"; + echo '' . "\r\n"; + } + } + ?> +
+ + $arGroup) + { + echo ''; + foreach( $arGroup as $strId => $strName) + { + echo '' . "\r\n"; + echo ' ' . "\r\n"; + echo ' ' . "\r\n"; + echo '' . "\r\n"; + $strEven = $strEven == 'even' ? 'odd' : 'even'; + } + } + + ?> + + + + +
' . $strGroupName . '
' . $strName . ':' . htmlspecialchars( $arData[$strId] ) . '
Container:
+
+
+
+ + + + + diff --git a/templates/creation/new_nt_machine.php b/templates/creation/new_nt_machine.php index 8db0d95..8563be0 100644 --- a/templates/creation/new_nt_machine.php +++ b/templates/creation/new_nt_machine.php @@ -1,6 +1,6 @@ @@ -52,7 +52,7 @@ if( get_schema_objectclass( $server_id, 'sambaAccount' ) == null ) Container: - + diff --git a/templates/creation/new_organizationalRole.php b/templates/creation/new_organizationalRole.php new file mode 100644 index 0000000..c9f52ee --- /dev/null +++ b/templates/creation/new_organizationalRole.php @@ -0,0 +1,240 @@ + +

New Organizational Role
+(organizationalRole)

+ +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Role CN: (hint: don't include "cn=")
Phone:
Fax:
Comments:
Occupant DN:
+
Street Address
Address:City:
State:
ZIP:
Mailing Address
Address:City:
State:
ZIP:
Registered Mail Address
Address:City:
State:
ZIP:
Container DN:

+
+
+ +

Confirm entry creation:

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
Role CN:
Phone:
Fax:
Comments:
Occupant DN:
Street:'.htmlspecialchars($street2):''); ?>
City:
State:
Mailing Address:'.htmlspecialchars($mail_street2):'') . ((!empty($mail_city)||!empty($mail_state)||!empty($mail_zip))?'
':'') . ((!empty($mail_city))?htmlspecialchars($mail_city):'') . ((!empty($mail_state))?', '.htmlspecialchars($mail_state):'') . ((!empty($mail_zip))?' '.htmlspecialchars($mail_zip):'') : '' ?>
Registered Address:'.htmlspecialchars($reg_street2):'') . ((!empty($reg_city)||!empty($reg_state)||!empty($reg_zip))?'
':'') . ((!empty($reg_city))?htmlspecialchars($reg_city):'') . ((!empty($reg_state))?', '.htmlspecialchars($reg_state):'') . ((!empty($reg_zip))?' '.htmlspecialchars($reg_zip):'') : '' ?>
Container DN:
+
+
+ diff --git a/templates/creation/new_ou_template.php b/templates/creation/new_ou_template.php index 83e4b86..c546bc8 100644 --- a/templates/creation/new_ou_template.php +++ b/templates/creation/new_ou_template.php @@ -1,15 +1,12 @@ Container DN: - + -

+

+
Container DN: - + - Users: - (example: dsmith)
- -
+ Users: + + +
-

+

+ + +

New Postfix Mail Account
+(CourierMailAccount)

+
+ + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uid:
Home Directory:
Mailbox:
Email:
Password:
Password:
Encryption:
Container: +

+
+
+ + +

Confirm entry creation:

+ +
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
uid:
Home Directory:
Mailbox:
Email:
Password:[secret]
Container:
+
+
+
+ + diff --git a/templates/creation/new_postfix_alias_template.php b/templates/creation/new_postfix_alias_template.php new file mode 100644 index 0000000..fc76671 --- /dev/null +++ b/templates/creation/new_postfix_alias_template.php @@ -0,0 +1,94 @@ + + +

New Postfix Alias

+ + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + +
Container DN: + +
Mail:
Maildrop:

+
+
+ + +
+ + + + + + + + + + + + + + + +
+ Really create this new Alias entry?
+
+ + + + + +
Container
mail
maildrop
+
+
+
+ + + diff --git a/templates/creation/new_security_object_template.php b/templates/creation/new_security_object_template.php index 87be204..fe070d1 100644 --- a/templates/creation/new_security_object_template.php +++ b/templates/creation/new_security_object_template.php @@ -1,6 +1,5 @@ - + - + @@ -102,7 +101,7 @@ function autoFillHomeDir( form ) - + @@ -111,14 +110,15 @@ function autoFillHomeDir( form ) echo htmlspecialchars( $container ); else echo htmlspecialchars( $default_container . ',' . $servers[$server_id]['base'] ); ?>" /> - + - +
User name:
Password:
Container:


+ "aliases" + ); + +// Unique to this template +$step = 1; +if( isset($_POST['step']) ) + $step = $_POST['step']; + +check_server_id( $server_id ) or pla_error( "Bad server_id: " . htmlspecialchars( $server_id ) ); +have_auth_info( $server_id ) or pla_error( "Not enough information to login to server. Please check your configuration." ); +?> + + + +
+

New Sendmail Alias

+
+
+ +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Sendmail cluster name:
Sendmail host name:Leave blank
Email alias:
Recipient addresses:
+ +

+
+
+ + +

Confirm sendmail domain creation:

+ +
+ + + " /> + + + + + + + + + + + + + + + + + + + + + + + + $default_val ) { ?> + + + + + + +
+ + + + + +
Sendmail cluster name:
Sendmail host name:
Email alias:
Recipient addresses: + \n"; + } ?> +
+
+
+ + diff --git a/templates/creation/new_sendmail_cluster_template.php b/templates/creation/new_sendmail_cluster_template.php new file mode 100644 index 0000000..4922cb4 --- /dev/null +++ b/templates/creation/new_sendmail_cluster_template.php @@ -0,0 +1,118 @@ + + + + +
+

New Sendmail Cluster

+
+
+ + + + + + +
+ + + + + + + + + + + + + + + + +
Sendmail cluster name:
+ +

+
+
+ + +

Confirm sendmail domain creation:

+ +
+ + + " /> + + + + + + + + + + + $default_val ) { ?> + + + + + + +
+ + +
Sendmail cluster name:
+
+
+ + diff --git a/templates/creation/new_sendmail_domain_template.php b/templates/creation/new_sendmail_domain_template.php new file mode 100644 index 0000000..b0e8d69 --- /dev/null +++ b/templates/creation/new_sendmail_domain_template.php @@ -0,0 +1,141 @@ + 'w', + ); + +// Unique to this template +$step = 1; +if( isset($_POST['step']) ) + $step = $_POST['step']; + +check_server_id( $server_id ) or pla_error( "Bad server_id: " . htmlspecialchars( $server_id ) ); +have_auth_info( $server_id ) or pla_error( "Not enough information to login to server. Please check your configuration." ); +?> + + + +
+

New Sendmail Domain

+
+
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Sendmail cluster name:
Sendmail host name:Leave blank
Email domain:
+ +

+
+
+ + +

Confirm sendmail domain creation:

+ +
+ + + " /> + + + + + + + + + + + + + + + + + $default_val ) { ?> + + + + + + +
+ + + + +
Sendmail cluster name:
Sendmail host name:
Email domain:
+
+
+ + diff --git a/templates/creation/new_sendmail_relay_template.php b/templates/creation/new_sendmail_relay_template.php new file mode 100644 index 0000000..fca3b44 --- /dev/null +++ b/templates/creation/new_sendmail_relay_template.php @@ -0,0 +1,213 @@ + 'access', + ); + +// Unique to this template +$step = 1; +if( isset($_POST['step']) ) + $step = $_POST['step']; + +check_server_id( $server_id ) or pla_error( "Bad server_id: " . htmlspecialchars( $server_id ) ); +have_auth_info( $server_id ) or pla_error( "Not enough information to login to server. Please check your configuration." ); +?> + + + + + +
+

New Sendmail Relay

+
+
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Sendmail cluster name:
Sendmail host name:Leave blank
Host/Network/Address:
Relay control: + +
Custom error
+ +

+
+
+ + + + +

Confirm sendmail domain creation:

+ +
+ + + " /> + + + + + + + + + + + + + + + + + + + + + + + $default_val ) { ?> + + + + + + +
+ + + + + + + +
Sendmail cluster name:
Sendmail host name:
Host/Network/Address:
Relay Control:
Custom error:
+
+
+ + diff --git a/templates/creation/new_sendmail_virthost_template.php b/templates/creation/new_sendmail_virthost_template.php new file mode 100644 index 0000000..a210cd0 --- /dev/null +++ b/templates/creation/new_sendmail_virthost_template.php @@ -0,0 +1,141 @@ + 'VirtHost', + ); + +// Unique to this template +$step = 1; +if( isset($_POST['step']) ) + $step = $_POST['step']; + +check_server_id( $server_id ) or pla_error( "Bad server_id: " . htmlspecialchars( $server_id ) ); +have_auth_info( $server_id ) or pla_error( "Not enough information to login to server. Please check your configuration." ); +?> + + + +
+

New Sendmail Virtual Domain

+
+
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Sendmail cluster name:
Sendmail host name:Leave blank
Virtual email domain:
+ +

+
+
+ + +

Confirm sendmail domain creation:

+ +
+ + + " /> + + + + + + + + + + + + + + + + + $default_val ) { ?> + + + + + + +
+ + + + +
Sendmail cluster name:
Sendmail host name:
Email domain:
+
+
+ + diff --git a/templates/creation/new_sendmail_virtuser_template.php b/templates/creation/new_sendmail_virtuser_template.php new file mode 100644 index 0000000..4ee48a3 --- /dev/null +++ b/templates/creation/new_sendmail_virtuser_template.php @@ -0,0 +1,153 @@ + 'virtuser', + ); + +// Unique to this template +$step = 1; +if( isset($_POST['step']) ) + $step = $_POST['step']; + +check_server_id( $server_id ) or pla_error( "Bad server_id: " . htmlspecialchars( $server_id ) ); +have_auth_info( $server_id ) or pla_error( "Not enough information to login to server. Please check your configuration." ); +?> + + + +
+

New Sendmail Virtual User

+
+
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Sendmail cluster name:
Sendmail host name:Leave blank
Virtual email address:use @domain.com to map entire domain
Recipient address:use %1 to map user name port of address
+ +

+
+
+ + +

Confirm sendmail domain creation:

+ +
+ + + " /> + + + + + + + + + + + + + + + + + + + + $default_val ) { ?> + + + + + + +
+ + + + + +
Sendmail cluster name:
Sendmail host name:
Virtual email address:
Recipient email address:
+
+
+ + diff --git a/templates/creation/new_smb3_nt_machine.php b/templates/creation/new_smb3_nt_machine.php index 2eaa527..ef078c8 100644 --- a/templates/creation/new_smb3_nt_machine.php +++ b/templates/creation/new_smb3_nt_machine.php @@ -1,6 +1,5 @@ + gidNumber = form.gid_number.value; + if( form.samba_group[0].checked ){ + form.custom_rid.value = ""; + } + else { + form.custom_rid.value = (2*gidNumber)+1001; + } +} +--> +

New Samba3 User Account

- + @@ -72,11 +95,14 @@
- + - + + @@ -84,9 +110,9 @@ + - - + @@ -101,28 +127,83 @@ + onChange="autoFillHomeDir(this.form)" onExit="autoFillHomeDir(this.form,this)" /> - + - + - + - + - + + + + + + + @@ -146,37 +227,62 @@ echo htmlspecialchars( $container ); else echo htmlspecialchars( $default_container . ',' . $servers[$server_id]['base'] ); ?>" /> - + - - - + + + + - + - + + + + + + + + +
+
Custom:
+
+ + +
+
+ + @@ -184,20 +290,22 @@ - + - - + + - +
UID Number: + (automatically determined)"; ?> +
-
First name: User name:
Password:User Password:
Password:User Password:
Encryption: - - crypt -
Samba Password: +
+
+ + Use Unix Password +
+
+ + Null Password +
+
+ + No Password +
+
+ + + + + +
New Password : +
+
+
+
+
+ + + + + + + +
Existing Password :
+
+ LM Password: + +
+
+ NT Password: + +
+
+
+
+
Login Shell:
Unix Group:: + + + +
+
Windows Group: +
+
+
Built-In:
+
+


Note: To change the value(s) of the samba domain sid, please edit the file :
templates/template_config.php
To change the value(s) of the samba domain sid, please edit the file :
templates/template_config.php
+
+ createSambaPasswords( $clearSambaPassword ) ){ + $sambaLMPassword = $mkntPassword->getsambaLMPassword(); + $sambaNTPassword = $mkntPassword->getsambaNTPassword(); + $smb_passwd_creation_success = 1; + } } ?> @@ -266,7 +420,7 @@ - + @@ -284,14 +438,13 @@ - +
@@ -299,14 +452,19 @@ User name: First name: Last name: - UID Number: - Login Shell: - Samba SID: - GID Number: + Login Shell: + UID Number: + Samba SID: + GID Number: + Samba Group Sid: Container: Home dir: + User Password:[secret] - Password:[secret] + Samba Password:[secret] + Password Last Set: + Password Can Change: + Password Must Change:
diff --git a/templates/creation/new_smbgroup_template.php b/templates/creation/new_smbgroup_template.php index 6f2aca1..4686d80 100644 --- a/templates/creation/new_smbgroup_template.php +++ b/templates/creation/new_smbgroup_template.php @@ -1,5 +1,5 @@

New Samba Group Mapping

@@ -66,19 +60,20 @@ function autoFillSambaRID( form ){ - - + + - + - + + + + + + + + - + + + + + + - + + + + + - - - - - - - - - - - - - - - - + - - - - - + + + + + + + - + + + + + + + + + + + + + + + + - 0 ) { if( $children_count == $max_children ) @@ -130,254 +110,139 @@ if( ($children_count = count( $children ) ) > 0 ) { ?> - - - - - - - 0 ) { ?> - - - - + + + + - - + - - - - + + + + - + - + 1 ) { ?> - + - + - - + $attr ) { + $modified_attrs[$i] = strtolower( $attr ); + } +} +?>
Samba Group Name: (example: admins, do not include "cn=")Unix Name: (example: admins, do not include "cn=")
Display Name:Windows Name:
GID Number: (example: 2000) (example: 2000)
Samba Sid: +
+
+
Built-In:
+
+ +
+
+
+
Custom:
+
+ + +
+
+
+
Container DN: -
SambaGroupType Number:SambaGroupType :
Description:
Members: (example: dsmith)
@@ -130,15 +170,31 @@ function autoFillSambaRID( form ){ - + @@ -161,16 +217,19 @@ function autoFillSambaRID( form ){ - + - " /> + - + + + + @@ -179,13 +238,14 @@ function autoFillSambaRID( form ){ Really create this new Posix Group entry?

- + - + - + @@ -195,5 +255,3 @@ function autoFillSambaRID( form ){ - - diff --git a/templates/creation/new_smbuser_template.php b/templates/creation/new_smbuser_template.php index dcb3853..9daddaa 100644 --- a/templates/creation/new_smbuser_template.php +++ b/templates/creation/new_smbuser_template.php @@ -1,5 +1,5 @@ " /> - + diff --git a/templates/creation/new_user_template.php b/templates/creation/new_user_template.php index e824199..8a33c44 100644 --- a/templates/creation/new_user_template.php +++ b/templates/creation/new_user_template.php @@ -1,6 +1,5 @@
-

New User Account

+

-Hint: To customize this template, edit the file templates/creation/new_user_template.php
+

@@ -98,41 +108,46 @@ function autoFillHomeDir( form )
- +
Name
Common Name
Container
display Name
gidNumber
sambaSid
sambaSID
sambaGroupType
Member UIDs +
description
Member UIDs $uid ) echo htmlspecialchars($uid) . "
"; ?>
- + - + - + - + + + + + + - + - + - + - + - + - + - + + - + - - + + - - + + + - +
First name::
Last name::
User name::
:
Password::
Password::
Encryption::
Login Shell::
Container:: -
Home Directory::
UID Number:: - (automatically determined)"; ?> + " . $lang['t_auto_det'] . ""; ?>
Group:: + + + +
+


+ + -

Confirm account creation:

+

:

+ + + @@ -245,10 +287,12 @@ function autoFillHomeDir( form ) - + + + @@ -270,17 +314,19 @@ function autoFillHomeDir( form )
- - - - - - - - - + + + + + + + + + +
User name:
First name:
Last name:
Password:[secret]
Login Shell:
UID Number:
GID Number:
Container:
Home dir:
:
:
:
:
:
:
:
:
:
-
+
+
diff --git a/templates/modification/default.php b/templates/modification/default.php index 224d412..c46afd2 100644 --- a/templates/modification/default.php +++ b/templates/modification/default.php @@ -1,4 +1,6 @@ -getMustAttrNames( $schema_oclasses ), - $schema_oclass->getMayAttrNames( $schema_oclasses ), - $avail_attrs ); - } - - $avail_attrs = array_unique( $avail_attrs ); - $avail_attrs = array_filter( $avail_attrs, "not_an_attr" ); - sort( $avail_attrs ); - - $avail_binary_attrs = array(); - foreach( $avail_attrs as $i => $attr ) { - if( is_attr_binary( $server_id, $attr ) ) { - $avail_binary_attrs[] = $attr; - unset( $avail_attrs[ $i ] ); - } - } -} - include 'header.php'; ?> @@ -73,55 +54,54 @@ include 'header.php'; ?>
- (mac) - (win) - (unix) -
">">
- (mac) - (win) - (unix) +
+ + +
+ - - -
- - - - - - - - - - - - - - - - - - - - - - - - 0 ) { ?> - - - - - - - - - - - - - - - - - $vals ) { $counter++; - $schema_href = "schema.php?server_id=$server_id&view=attributes&viewvalue=" . real_attr_name($attr); + $schema_href = "schema.php?server_id=$server_id&view=attributes&viewvalue=" . real_attr_name($attr); ?> - - + + \n"; + echo "\n"; } ?> - - - - - + - 0 ) - foreach( $hidden_attrs as $i => $attr_name ) - $hidden_attrs[$i] = strtolower( $attr_name ); - else - $hidden_attrs = array(); -?> + $vals ) { +if( ! $attrs || ! is_array( $attrs ) ) { + echo "\n"; + echo "
- -
- - - - -
-
-
- - - - - - 0 ) { ?> - - - - - - - - () - - -
- - - - - - - - - - -
- - - - - - - - - - - -() - - - - -
+
- -
- + + +
+ 1 ) { for( $i=1; $i<=count($vals); $i++ ) { ?> + "> ()
+ +
+ \n"; + } + } ?>
(" . $lang['none'] . ")
(" . $lang['no_internal_attributes'] . ")
- -
(" . $lang['no_attributes'] . ")
"; + echo ""; + die(); +} + +uksort( $attrs, 'sortAttrs' ); +foreach( $attrs as $attr => $vals ) { flush(); - if( ! is_server_read_only( $server_id ) ) { - $schema_attr = get_schema_attribute( $server_id, $attr, $dn ); - if( $schema_attr ) - $attr_syntax = $schema_attr->getSyntaxOID(); - else - $attr_syntax = null; - } + $schema_attr = get_schema_attribute( $server_id, $attr, $dn ); + if( $schema_attr ) + $attr_syntax = $schema_attr->getSyntaxOID(); + else + $attr_syntax = null; if( 0 == strcasecmp( $attr, 'dn' ) ) continue; - // has the config.php specified that this attribute is to be hidden? - if( in_array( strtolower( $attr ), $hidden_attrs ) ) - continue; + // has the config.php specified that this attribute is to be hidden or shown? + if( is_attr_hidden( $server_id, $attr)) + continue; + + // Setup the $attr_note, which will be displayed to the right of the attr name (if any) + $attr_note = ''; // is there a user-friendly translation available for this attribute? if( isset( $friendly_attrs[ strtolower( $attr ) ] ) ) { @@ -388,27 +253,53 @@ if( $show_internal_attrs ) { $attr_display = $attr; } + // is this attribute required by an objectClass? + $required_by = ''; + if( $schema_attr ) + foreach( $schema_attr->getRequiredByObjectClasses() as $required ) + if( in_array( strtolower( $required ), arrayLower( $attrs['objectClass'] ) ) ) + $required_by .= $required . ' '; + if( $required_by ) { + if( trim( $attr_note ) ) + $attr_note .= ', '; + $attr_note .= "" . $lang['required'] . " "; + } ?> - + + + - - - - - + - - - -
+ + + + + + + () + + + - + + + + + + \n"; + if( $is_modified_attr ) + echo ''; continue; } @@ -445,36 +339,51 @@ if( $show_internal_attrs ) {
- +
+ - '; + continue; } + /* * Note: at this point, the attribute must be text-based (not binary or jpeg) */ + /* - * If we are in read-only mode, simply draw the attribute values and continue. + * If this server is in read-only mode or this attribute is configured as read_only, + * simply draw the attribute values and continue. */ - if( is_server_read_only( $server_id ) ) { + if( is_server_read_only( $server_id ) || is_attr_read_only( $server_id, $attr ) ) { if( is_array( $vals ) ) { foreach( $vals as $i => $val ) { - $val = ( $val ); - if( $val == "" ) - echo "[empty]
\n"; + if( trim( $val ) == "" ) + echo "[" . $lang['empty'] . "]
\n"; + elseif( 0 == strcasecmp( $attr, 'userPassword' ) && obfuscate_password_display() ) + echo preg_replace( '/./', '*', $val ) . "
"; else - echo $val . "
"; + echo htmlspecialchars( $val ) . "
"; } } else { - echo ( $vals ) . "
"; + if( 0 == strcasecmp( $attr, 'userPassword' ) && obfuscate_password_display() ) + echo preg_replace( '/./', '*', $vals ) . "
"; + else + echo $vals . "
"; } + echo ""; + echo ""; + if( $is_modified_attr ) + echo ''; continue; } @@ -483,38 +392,13 @@ if( $show_internal_attrs ) { */ if( 0 == strcasecmp( $attr, 'userpassword' ) ) { $user_password = $vals[0]; - - /* Capture the stuff in the { } to determine if this is crypt, md5, etc. */ - if( preg_match( "/{([^}]+)}/", $user_password, $enc_type) ) - $enc_type = strtolower($enc_type[1]); - else - $enc_type = null; + $enc_type = get_enc_type( $user_password ); - // Set the default hashing type if the password is blank (must be newly created) - if( $val == '' ) { - $enc_type = $servers[$server_id]['default_hash']; - } ?> - - + // Set the default hashing type if the password is blank (must be newly created) + if( $user_password == '' ) { + $enc_type = get_default_hash( $server_id ); + } + ?> - + +
+ - + + + + + + + '; + continue; } /* * Is this a boolean attribute? */ - $type = ( $schema_attr = get_schema_attribute( $server_id, $attr, $dn ) ) ? - $schema_attr->getType() : - null; - - if( 0 == strcasecmp( 'boolean', $type ) ) { + if( is_attr_boolean( $server_id, $attr) ) { $val = $vals[0]; - ?> + + '; continue; } /* - * End of special case attributes. + * End of special case attributes (non plain text). */ + /* - * This is a normal attribute, to be displayed and edited in plain text. + * This is a plain text attribute, to be displayed and edited in plain text. */ foreach( $vals as $i => $val ) { - $val = ( $val ); ?> - + $input_name = "new_values[" . htmlspecialchars( $attr ) . "][$i]"; + // We smack an id="..." tag in here that doesn't have [][] in it to allow the + // draw_chooser_link() to identify it after the user clicks. + $input_id = "new_values_" . htmlspecialchars($attr) . "_" . $i; + + ?> + + + + type == 'structural') { + echo "$val (" . + $lang['structural'] . ")
"; + ?> + + - -
- -

- + + + + + + + + + + + + + + + + + 0 ) { + echo "
"; + $group = array_pop( $group ); + $group_dn = $group['dn']; + $group_name = explode( '=', get_rdn( $group_dn ) ); + $group_name = $group_name[1]; + $href = "edit.php?server_id=$server_id&dn=" . urlencode( $group_dn ); + echo ""; + echo "" . htmlspecialchars($group_name) . ""; + $description = isset( $group['description'] ) ? $group['description'] : null; + if( $description ) echo " (" . htmlspecialchars( $description ) . ")"; + echo ""; + } + } + + ?> + +
+ + + + + $vals ) */ ?> -
+
\n"; ?> diff --git a/templates/modification/group_of_names.php b/templates/modification/group_of_names.php new file mode 100644 index 0000000..4c0c921 --- /dev/null +++ b/templates/modification/group_of_names.php @@ -0,0 +1,142 @@ + + + + +
+ + + + + + + + +
+ +

Group:

+ +
+ Using the group of names template. + You may switch to the default template +
+ +List of Members (' . ( $unique ? 'unique' : 'non-unique' ) . ')

'; +if( ! is_array( $members ) || 0 == count( $members ) ) { + echo "(none)"; + echo "
"; + echo "
"; +} else { + echo "
    "; + for( $i=0; $i"; + echo ""; + echo htmlspecialchars( $member ) . ""; + echo " (remove)"; + + $member_cn = get_object_attr( $server_id, $member, 'cn' ); + $member_cn = @$member_cn[0]; + $member_sn = get_object_attr( $server_id, $member, 'sn' ); + $member_sn = @$member_sn[0]; + echo ''; + // Don't display the SN if it is a subset of the CN + if( false !== strpos( $member_cn, $member_sn ) ) + $member_sn = ' '; + if( $member_sn && $member_cn ) + echo '
      Name: ' . htmlspecialchars( $member_cn . ' ' . $member_sn ); + $object_classes = get_object_attr( $server_id, $member, 'objectClass' ); + if( is_array( $object_classes ) ) + echo '
      objectClasses: ' . implode( ', ', $object_classes ); + echo '
    '; + ""; + } + echo "
"; +} + +?> + + + + +
+ + + + +
+ Add a new member:
+ +
+ +
+
+ diff --git a/templates/modification/samba_account.php b/templates/modification/samba_account.php new file mode 100644 index 0000000..bc6c676 --- /dev/null +++ b/templates/modification/samba_account.php @@ -0,0 +1,32 @@ + + +

+
+ ' . $lang['samba_account_lcase'] . '' . $lang['template'] . '.'; ?> + ' . $lang['default_template'] . ''; ?> +
+

TO DO

+ + diff --git a/templates/modification/user.php b/templates/modification/user.php index da3de27..1694dac 100644 --- a/templates/modification/user.php +++ b/templates/modification/user.php @@ -1,4 +1,6 @@ - -
Using the user template. You may switch to the default template diff --git a/templates/template_config.php b/templates/template_config.php index 4734969..3f713c0 100644 --- a/templates/template_config.php +++ b/templates/template_config.php @@ -1,4 +1,6 @@ 'User Account', + array( 'desc' => $lang['user_account'], // 'User Account (posixAccount)', 'icon' => 'images/user.png', 'handler' => 'new_user_template.php' ); - // You can use the 'regexp' directive to restrict where - // entries can be created for this template + // You can use the 'regexp' directive to restrict where + // entries can be created for this template //'regexp' => '^ou=People,o=.*,c=.*$' - //'regexp' => '^ou=People,dc=.*,dc=.*$' + //'regexp' => '^ou=People,dc=.*,dc=.*$' $templates[] = - array( 'desc' => 'Address Book Entry (inetOrgPerson)', + array( 'desc' => $lang['address_book_inet'], // 'Address Book Entry (inetOrgPerson)', 'icon' => 'images/user.png', 'handler' => 'new_address_template.php' ); $templates[] = - array( 'desc' => 'Organizational Unit', + array( 'desc' => $lang['address_book_moz'], // 'Address Book Entry (mozillaOrgPerson)', + 'icon' => 'images/user.png', + 'handler' => 'new_mozillaOrgPerson_template.php' ); + +$templates[] = + array( 'desc' => $lang['kolab_user'], // 'Kolab User Entry', + 'icon' => 'images/user.png', + 'handler' => 'new_kolab_template.php' ); + +$templates[] = + array( 'desc' => $lang['organizational_unit'], // 'Organizational Unit', 'icon' => 'images/ou.png', 'handler' => 'new_ou_template.php' ); $templates[] = - array( 'desc' => 'Posix Group', + array( 'desc' => $lang['organizational_role'], // 'Organizational Role', + 'icon' => 'images/o.png', + 'handler' => 'new_organizationalRole.php' ); + +$templates[] = + array( 'desc' => $lang['posix_group'], // 'Posix Group', 'icon' => 'images/ou.png', 'handler' => 'new_posix_group_template.php' ); $templates[] = - array( 'desc' => 'Samba NT Machine', + array( 'desc' => $lang['samba_machine'], // 'Samba NT Machine', 'icon' => 'images/nt_machine.png', 'handler' => 'new_nt_machine.php' ); $templates[] = - array( 'desc' => 'Samba 3 NT Machine', + array( 'desc' => $lang['samba3_machine'], // 'Samba 3 NT Machine', 'icon' => 'images/nt_machine.png', 'handler' => 'new_smb3_nt_machine.php' ); -/*$templates[] = - array( 'desc' => 'Samba User', - 'icon' => 'images/nt_user.png', - 'handler' => 'new_smbuser_template.php' ); -*/ + $templates[] = - array( 'desc' => 'Samba 3 User', + array( 'desc' => $lang['samba3_user'], // 'Samba 3 User', 'icon' => 'images/nt_user.png', 'handler' => 'new_smb3_user_template.php' ); + $templates[] = - array( 'desc' => 'Samba 3 Group Mapping', + array( 'desc' => $lang['samba_user'], // 'Samba User', + 'icon' => 'images/nt_user.png', + 'handler' => 'new_smbuser_template.php' ); + +$templates[] = + array( 'desc' => $lang['samba3_group'], // 'Samba 3 Group Mapping', 'icon' => 'images/ou.png', 'handler' => 'new_smbgroup_template.php' ); $templates[] = - array( 'desc' => 'DNS Entry', + array( 'desc' => $lang['dns_entry'], // 'DNS Entry', 'icon' => 'images/dc.png', 'handler' => 'new_dns_entry.php' ); $templates[] = - array( 'desc' => 'Simple Security Object', - 'icon' => 'images/user.png', - 'handler' => 'new_security_object_template.php' ); + array( 'desc' => $lang['simple_sec_object'], // 'Simple Security Object', + 'icon' => 'images/user.png', + 'handler' => 'new_security_object_template.php' ); $templates[] = - array( 'desc' => 'Custom', - 'icon' => 'images/object.png', - 'handler' => 'custom.php' ); + array( 'desc' => $lang['courier_mail_account'], // 'Courier Mail Account', + 'icon' => 'images/mail_account.png', + 'handler' => 'new_postfix_account_template.php' ); + +$templates[] = + array( 'desc' => $lang['courier_mail_alias'], // 'Courier Mail Alias', + 'icon' => 'images/mail_alias.png', + 'handler' => 'new_postfix_alias_template.php' ); + +$templates[] = + array( 'desc' => $lang['ldap_alias'], // 'LDAP Alias', + 'icon' => 'images/go.png', + 'handler' => 'new_alias_template.php' ); +$templates[] = + array( 'desc' => $lang['sendmail_cluster'], // 'Sendmail Cluster', + 'icon' => 'images/mail.png', + 'handler' => 'new_sendmail_cluster_template.php' ); + + $templates[] = + array( 'desc' => $lang['sendmail_domain'], // 'Sendmail Domain', + 'icon' => 'images/mail.png', + 'handler' => 'new_sendmail_domain_template.php' ); + + $templates[] = + array( 'desc' => $lang['sendmail_alias'], // 'Sendmail Alias', + 'icon' => 'images/mail.png', + 'handler' => 'new_sendmail_alias_template.php' ); + + $templates[] = + array( 'desc' => $lang['sendmail_virt_dom'], // 'Sendmail Virtual Domain', + 'icon' => 'images/mail.png', + 'handler' => 'new_sendmail_virthost_template.php' ); + + $templates[] = + array( 'desc' => $lang['sendmail_virt_users'], // 'Sendmail Virtual Users', + 'icon' => 'images/mail.png', + 'handler' => 'new_sendmail_virtuser_template.php' ); + + $templates[] = + array( 'desc' => $lang['sendmail_relays'], // 'Sendmail Relays', + 'icon' => 'images/mail.png', + 'handler' => 'new_sendmail_relay_template.php' ); + +$templates[] = + array( 'desc' => $lang['custom'], // 'Custom', + 'icon' => 'images/object.png', + 'handler' => 'custom.php' ); + +/*##################################################################################### +## POSIX GROUP TEMPLATE CONFIGURATION ## +## ---------------------------------- ## +## ## +#####################################################################################*/ + +// uncomment to set the base dn of posix groups +// default is set to the base dn of the server +//$base_posix_groups="ou=People,dc=example,dc=com"; + + /*###################################################################################### @@ -92,20 +167,34 @@ $templates[] = ## ## ## In order to use the samba templates, you might edit the following properties: ## ## 1 - $mkntpwdCommand : the path to the mkntpwd utility provided with/by Samba. ## -## 2 - $default_samba3_domains : the domain name and the domain sid. ## +## 2 - $samba3_domains : the domain name and the domain sid. ## ## ## ######################################################################################*/ // path 2 the mkntpwd utility (Customize) -$mkntpwdCommand = "./templates/creation/mkntpwd"; +$mkntpwdCommand = "/usr/local/bin/mkntpwd"; // Default domains definition (Customize) -$default_samba3_domains = array(); -$default_samba3_domains[] = - array( 'name' => 'My Samba domain Name', - 'sid' => 'S-1-5-21-1234567891-123456789-123456789' ); +// (use `net getlocalsid` on samba server) +$samba3_domains = array(); +$samba3_domains[] = +array( 'name' => $lang['samba_domain_name'], // 'My Samba domain Name', + 'sid' => 'S-1-5-21-4147564533-719371898-3834029857' ); + +// The base dn of samba group. (CUSTOMIZE) +//$samba_base_groups = "ou=Groups,ou=samba,dc=example,dc=org"; +//Definition of built-in local groups +$built_in_local_groups = array( "S-1-5-32-544" => $lang['administrators'], // "Administrators", + "S-1-5-32-545" => $lang['users'], // "Users", + "S-1-5-32-546" => $lang['guests'], // "Guests", + "S-1-5-32-547" => $lang['power_users'], // "Power Users", + "S-1-5-32-548" => $lang['account_ops'], // "Account Operators", + "S-1-5-32-549" => $lang['server_ops'], // "Server Operators", + "S-1-5-32-550" => $lang['print_ops'], // "Print Operators", + "S-1-5-32-551" => $lang['backup_ops'], // "backup Operators", + "S-1-5-32-552" => $lang['replicator'] ); // "Replicator" ); /*###################################################################################### @@ -123,32 +212,32 @@ $default_samba3_domains[] = function get_template( $server_id, $dn ) { + // fetch and lowercase all the objectClasses in an array + $object_classes = get_object_attr( $server_id, $dn, 'objectClass', true ); - // For now, just use default. We will add more templates for 0.9.2. - // If you have custom modification templates, just modify this. - return 'default'; + if( $object_classes === null || $object_classes === false) + return 'default'; - // fetch and lowercase all the objectClasses in an array - $object_classes = get_object_attr( $server_id, $dn, 'objectClass', true ); + foreach( $object_classes as $i => $class ) + $object_classes[$i] = strtolower( $class ); - if( $object_classes === null || $object_classes === false) - return 'default'; + $rdn = get_rdn( $dn ); + if( in_array( 'groupofnames', $object_classes ) || + in_array( 'groupofuniquenames', $object_classes ) ) + return 'group_of_names'; + /* + if( in_array( 'person', $object_classes ) && + in_array( 'posixaccount', $object_classes ) ) + return 'user'; + */ + // TODO: Write other templates and criteria therefor + // else if ... + // return 'some other template'; + // else if ... + // return 'some other template'; + // etc. - foreach( $object_classes as $i => $class ) - $object_classes[$i] = strtolower( $class ); - - $rdn = get_rdn( $dn ); - if( in_array( 'person', $object_classes ) && - in_array( 'posixaccount', $object_classes ) ) - return 'user'; - // TODO: Write other templates and criteria therefor - // else if ... - // return 'some other template'; - // else if ... - // return 'some other template'; - // etc. - - return 'default'; + return 'default'; } /** @@ -157,11 +246,80 @@ function get_template( $server_id, $dn ) */ function get_samba3_domains(){ - global $default_samba3_domains; - + global $samba3_domains; + // do the search for the sambadomainname object here - // In the meantime, just return the default domains - return $default_samba3_domains; + // In the meantime, just return the domains defined in this config file + check_samba_setting(); + return $samba3_domains; +} + + +/** + * Utily class to get the samba passwords. + */ + +class MkntPasswdUtil{ + + + var $clearPassword = NULL; + var $sambaPassword ; + function MkntPasswdUtil(){ + $sambaPassword = array("sambaLMPassword" => NULL, + "sambaNTPassword" => NULL); + } + + function createSambaPasswords($password){ + global $mkntpwdCommand, $lang; + $this->clearPassword = $password; + file_exists ( $mkntpwdCommand ) && is_executable ( $mkntpwdCommand ) or pla_error( $lang['unable_smb_passwords'] ); + $sambaPassCommand = $mkntpwdCommand . " " . $password; + if($sambaPassCommandOutput = shell_exec($sambaPassCommand)){ + $this->sambaPassword['sambaLMPassword'] = trim( substr( $sambaPassCommandOutput , 0 , strPos( $sambaPassCommandOutput,':' ) ) ); + $this->sambaPassword['sambaNTPassword'] = trim( substr( $sambaPassCommandOutput, strPos( $sambaPassCommandOutput ,':' ) +1 ) ); + return true; + } + else{ + return false; + } + } + + function getSambaLMPassword(){ + return $this->sambaPassword['sambaLMPassword']; + } + + function getSambaNTPassword(){ + return $this->sambaPassword['sambaNTPassword']; + } + + function getSambaClearPassword(){ + return $this->clearPassword; + } + + function valueOf($key){ + return $this->sambaPassword[$key]; + } + +} + +function check_samba_setting(){ + global $samba3_domains; + + // check if the samba3_domains exist and is a array + ( isset($samba3_domains ) && is_array( $samba3_domains ) ) or pla_error($lang['err_smb_conf']); + //"Error: You have an error in your samba confguration."); + + // no definition for the samba domain + if(empty($samba3_domains)) + pla_error($lang['err_smb_no_name_sid']); + // "Error: A name and a sid for your samba domain need to be provided."); + else{ + // check if there is name or a sid declared for each domains + foreach($samba3_domains as $samba3_domain){ + isset($samba3_domain['name']) or pla_error($lang['err_smb_no_name']); // "Error: No name provided for samba domain."); + isset($samba3_domain['sid']) or pla_error($lang['err_smb_no_sid']); // "Error: No sid provided for samba domain."); + } + } } ?> diff --git a/tree.php b/tree.php index 90b2a35..16d4443 100644 --- a/tree.php +++ b/tree.php @@ -1,4 +1,5 @@ +// Close the session for faster page loading (we're done with session data anyway). +pla_session_close(); + +include './header.php'; +?> -

phpLDAPadmin -

+ + + - - + + + + + + + + + + + - - + + + +
- <?php echo $lang['light']; ?><?php echo $lang['bug']; ?>
<?php echo $lang['donate']; ?><?php echo $lang['purge_cache']; ?>
- <?php echo $lang['home']; ?><?php echo $lang['help']; ?>
@@ -67,193 +76,22 @@ include 'header.php'; ?> $server_tree ) { - if( $servers[$server_id]['host'] != '' ) { + $is_visible = ( ! isset( $servers[ $server_id ][ 'visible' ] ) + || ( $servers[ $server_id ][ 'visible' ] === true ) ); + if( isset( $servers[ $server_id ] ) + && trim( $servers[ $server_id ][ 'host' ] ) != '' + && $is_visible ) + { + $filename = get_custom_file( $server_id, 'tree_functions.php' ); + require_once( $filename ); - // Does this server want mass deletion availble? - if( mass_delete_enabled( $server_id ) ) { - echo "
\n"; - echo "\n"; - } - - $server_name = $servers[$server_id]['name']; - echo ''; - echo 'server'; - echo ''; - echo '' . htmlspecialchars( $server_name ) . ''; - echo ''; - - // do we have what it takes to authenticate here, or do we need to - // present the user with a login link (for 'form' auth_types)? - if( have_auth_info( $server_id ) ) { - - if( pla_ldap_connect( $server_id ) ) { - $schema_href = 'schema.php?server_id=' . $server_id . '" target="right_frame'; - $search_href= 'search.php?server_id=' . $server_id . '" target="right_frame'; - $refresh_href = 'refresh.php?server_id=' . $server_id; - $create_href = 'create_form.php?server_id=' . $server_id . '&container=' . - rawurlencode( $servers[$server_id]['base'] ); - $logout_href = 'logout.php?server_id=' . $server_id; - $info_href = 'server_info.php?server_id=' . $server_id; - $import_href = 'ldif_import_form.php?server_id=' . $server_id; - - // Draw the quick-links below the server name: - // ( schema | search | refresh | create ) - echo ''; - echo ''; - echo '( '; - echo '' . $lang['schema'] . ' | '; - echo '' . $lang['search'] . ' | '; - echo '' . $lang['refresh'] . ' | '; - echo '' . $lang['create'] . ' | '; - echo '' . $lang['info'] . ' | '; - echo '' . $lang['import'] . ''; - if( $servers[ $server_id ][ 'auth_type' ] == 'form' ) - echo ' | ' . $lang['logout'] . ''; - echo ' )'; - - if( $servers[$server_id]['auth_type'] == 'form' && have_auth_info( $server_id ) ) - echo "" . - $lang['logged_in_as'] . "" . - htmlspecialchars(get_logged_in_dn($server_id)) . "" . - ""; - if( is_server_read_only( $server_id ) ) - echo "" . - "(" . $lang['read_only'] . ")"; - - // Fetch and display the base DN for this server - if( null == $servers[ $server_id ]['base'] ) { - $base_dn = try_to_get_root_dn( $server_id ); - } else { - $base_dn = $servers[ $server_id ]['base']; - } - - // Did we get a base_dn for this server somehow? - if( $base_dn ) { - - echo "\n\n\n\n"; - - // is the root of the tree expanded already? - if( isset( $tree[$server_id][$base_dn] ) ) { - $expand_href = "collapse.php?server_id=$server_id&" . - "dn=" . rawurlencode( $base_dn ); - $expand_img = "images/minus.png"; - } else { - $expand_href = "expand.php?server_id=$server_id&" . - "dn=" . rawurlencode( $base_dn ); - $expand_img = "images/plus.png"; - } - - $edit_href = "edit.php?server_id=$server_id&dn=" . rawurlencode( $base_dn ); - - $icon = isset( $tree_icons[ $server_id ][ $base_dn ] ) ? - $tree_icons[ $server_id ][ $base_dn ] : - get_icon( $server_id, $base_dn ); - - // Shall we draw the "mass-delete" checkbox? - if( mass_delete_enabled( $server_id ) ) { - echo "\n"; - } - - echo ""; - echo ""; - echo ""; - echo "\n"; - echo "" . pretty_print_dn( $base_dn ) . "\n"; - echo "\n"; - - } else { // end if( $base_dn ) - - if( "" === $base_dn || null === $base_dn ) { - // The server refuses to give out the base dn - echo ""; - echo $lang['could_not_determine_root']; - echo '
'; - echo $lang['ldap_refuses_to_give_root']; - echo '
'; - echo $lang['please_specify_in_config']; - echo "
"; - // Proceed to the next server. We cannot draw anything else for this server. - continue; - } else { - // For some unknown reason, we couldn't determine the base dn - echo ""; - echo $lang['could_not_determine_root']; - echo '
'; - echo $lang['please_specify_in_config']; - echo "
"; - // Proceed to the next server. We cannot draw anything else for this server. - continue; - } - } - - flush(); - - // Is the root of the tree expanded already? - if( isset( $tree[$server_id][$base_dn] ) && is_array( $tree[$server_id][$base_dn] ) ) { - foreach( $tree[ $server_id ][ $base_dn ] as $child_dn ) - draw_tree_html( $child_dn, $server_id, 0 ); - if( ! is_server_read_only( $server_id ) ) { - echo ''; - echo '
'; - echo '' . $lang['create_new'] . ''; - } - } - - } else { // end if( pla_ldap_connect( $ds ) ) - // could not connect to LDAP server - echo "\n"; - echo "\n"; - echo "\n"; - echo "" . $lang['could_not_connect'] . "\n"; - echo "\n"; - - if( $servers[ $server_id ][ 'auth_type' ] == 'form' ) { - $logout_href = 'logout.php?server_id=' . $server_id; - echo "\n"; - echo "\n"; - echo "\n"; - echo ""; - echo "" . $lang['logout'] . "\n"; - echo "\n"; - } - - - // Proceed to the next server in the list. We cannot do anything mroe here. - continue; - } - - } else { // end if have_auth_info( $server_id ) - - // We don't have enough information to login to this server - // Draw the "login..." link - $login_href = "login_form.php?server_id=$server_id"; - echo ''; - echo ''; - echo ''; - echo 'login'; - echo '' . $lang['login_link'] . ''; - echo ''; - } - - if( mass_delete_enabled( $server_id ) ) { - echo "\n"; - echo "\n"; - echo "
\n"; - } + call_custom_function( $server_id, 'draw_server_tree' ); } } @@ -261,24 +99,23 @@ foreach( $servers as $server_id => $server_tree ) { "; print_r( $tree ); +// echo "
"; print_r( $tree ); 
 ?>
 
 
 
 
-
 		
 			
-			plus
+			-
 			
 		
-		(' . count( $tree[$server_id][$dn] ) . ')';
+			
 		
 			
-			minus
+			+
 			
 		
-		 $limit )
+                    $child_count = $limit . '+';
+            }
 	} ?>	
 
 	
 		
+		   name="_">img
 	
 	
 		
 			
-				
+				target="right_frame">
+				
+					()
+				
 		
 	
 	
@@ -340,26 +187,37 @@ function draw_tree_html( $dn, $server_id, $level=0 )
 	 10 )
+            if( show_create_enabled( $server_id ) )
+                draw_create_link( $server_id, $rdn, $level, $encoded_dn );
+		foreach( $tree[$server_id][$dn] as $dn )
 			draw_tree_html( $dn, $server_id, $level+1 );
-		}
-
-		// print the "Create New object" link.
-		$create_href = "create_form.php?server_id=$server_id&container=$encoded_dn";
-		echo '';
-		for( $i=0; $i<=$level; $i++ ) {
-			echo '';
-		}
-		echo '';
-		echo '';
-		echo '' . 
-		     $lang['create_new'] . '';
+        // Always draw the "create new" link at the bottom of the listing
+		if( show_create_enabled( $server_id ) )
+            draw_create_link( $server_id, $rdn, $level, $encoded_dn );
 	}
+}
 
-	echo '';
-
+function draw_create_link( $server_id, $rdn, $level, $encoded_dn )
+{
+    global $lang;
+    // print the "Create New object" link.
+    $create_html = "";
+    $create_href = "create_form.php?server_id=$server_id&container=$encoded_dn";
+    $create_html .= '';
+    for( $i=0; $i<=$level; $i++ ) {
+        $create_html .= '';
+    }
+    $create_html .= '';
+    $create_html .= '' . $lang['new'] . '';
+    $create_html .= '' . 
+        $lang['create_new'] . '';
+    $create_html .= '';
+    echo $create_html;
 }
 
 ?>
diff --git a/tree_functions.php b/tree_functions.php
new file mode 100644
index 0000000..90e0b24
--- /dev/null
+++ b/tree_functions.php
@@ -0,0 +1,264 @@
+_, so if I wanted to scroll to
+ * dc=example,dc=com for server 3, the URL would be: 
+ *	tree.php#3_dc%3Dexample%2Cdc%3Dcom
+ */
+function draw_server_tree()
+{
+	global $server_id;
+	global $servers;
+	global $lang;
+	global $tree;
+	global $tree_icons;
+
+	// Does this server want mass deletion availble?
+	if( mass_delete_enabled( $server_id ) ) {
+		echo "
\n"; + echo "\n"; + } + + $server_name = $servers[$server_id]['name']; + echo ''; + echo '' . $lang['server'] . ''; + echo ''; + echo '' . htmlspecialchars( $server_name ) . ''; + echo ''; + + // do we have what it takes to authenticate here, or do we need to + // present the user with a login link (for 'cookie' and 'session' auth_types)? + if( have_auth_info( $server_id ) ) { + if( ! pla_ldap_connection_is_error( pla_ldap_connect( $server_id ), false ) ) { + $schema_href = 'schema.php?server_id=' . $server_id . '" target="right_frame'; + $search_href = 'search.php?server_id=' . $server_id . '" target="right_frame'; + $refresh_href = 'refresh.php?server_id=' . $server_id; + $create_href = 'create_form.php?server_id=' . $server_id . '&container=' . + rawurlencode( $servers[$server_id]['base'] ); + $logout_href = get_custom_file( $server_id, 'logout.php') . '?server_id=' . $server_id; + $info_href = 'server_info.php?server_id=' . $server_id; + $import_href = 'ldif_import_form.php?server_id=' . $server_id; + $export_href = 'export_form.php?server_id=' . $server_id; + + // Draw the quick-links below the server name: + // ( schema | search | refresh | create ) + echo ''; + echo ''; + echo '( '; + echo '' . $lang['schema'] . ' | '; + echo '' . $lang['search'] . ' | '; + echo '' . $lang['refresh'] . ' | '; + if (show_create_enabled($server_id)) + echo '' . $lang['create'] . ' | '; + echo '' . $lang['info'] . ' | '; + echo '' . $lang['import'] . ' | '; + echo '' . $lang['export_lcase'] . ''; + if( $servers[ $server_id ][ 'auth_type' ] != 'config' ) + echo ' | ' . $lang['logout'] . ''; + echo ' )'; + + if( $servers[$server_id]['auth_type'] != 'config' ) { + $logged_in_dn = get_logged_in_dn( $server_id ); + echo "" . $lang['logged_in_as']; + if( strcasecmp( "anonymous", $logged_in_dn ) ) + echo "" . + pretty_print_dn( $logged_in_dn ) . ""; + else + echo "Anonymous"; + echo ""; + } + if( is_server_read_only( $server_id ) ) + echo "" . + "(" . $lang['read_only'] . ")"; + + // Fetch and display the base DN for this server + if( null == $servers[ $server_id ]['base'] ) + $base_dn = try_to_get_root_dn( $server_id ); + else + $base_dn = $servers[ $server_id ]['base']; + + // Did we get a base_dn for this server somehow? + if( $base_dn ) { + echo "\n\n\n\n"; + + // is the root of the tree expanded already? + if( isset( $tree[$server_id][$base_dn] ) ) { + $expand_href = "collapse.php?server_id=$server_id&" . + "dn=" . rawurlencode( $base_dn ); + $expand_img = "images/minus.png"; + $expand_alt = "-"; + $child_count = number_format( count( $tree[$server_id][$base_dn] ) ); + } else { + // Check if the LDAP server is not yet initialized + // (ie, the base DN configured in config.php does not exist) + if( ! dn_exists( $server_id, $base_dn ) ) { + $create_base_href = "creation_template.php?template=custom&server_id=$server_id"; + ?> + + + + + + + + + + + + +
+ + + + + + + + + + + $limit ) + $child_count = $limit . '+'; + } + } + } + + $edit_href = "edit.php?server_id=$server_id&dn=" . rawurlencode( $base_dn ); + + $icon = isset( $tree_icons[ $server_id ][ $base_dn ] ) + ? $tree_icons[ $server_id ][ $base_dn ] + : get_icon( $server_id, $base_dn ); + + // Shall we draw the "mass-delete" checkbox? + if( mass_delete_enabled( $server_id ) ) { + echo "\n"; + } + + echo ""; + echo "\"$expand_alt\""; + echo ""; + echo "\"img\"\n"; + echo "" . pretty_print_dn( $base_dn ) . ''; + if( $child_count ) + echo " ($child_count)"; + echo "\n"; + echo "\n"; + + if( show_create_enabled( $server_id ) && isset( $tree[ $server_id ][ $base_dn ]) + && count( $tree[ $server_id ][ $base_dn ] ) > 10 ) + draw_create_link( $server_id, $base_dn, -1, urlencode( $base_dn )); + + } else { // end if( $base_dn ) + + if( "" === $base_dn || null === $base_dn ) { + // The server refuses to give out the base dn + echo ""; + echo $lang['could_not_determine_root']; + echo '
'; + echo $lang['ldap_refuses_to_give_root']; + echo '
'; + echo $lang['please_specify_in_config']; + echo "
"; + // Proceed to the next server. We cannot draw anything else for this server. + return; + } else { + // For some unknown reason, we couldn't determine the base dn + echo ""; + echo $lang['could_not_determine_root']; + echo '
'; + echo $lang['please_specify_in_config']; + echo "
"; + // Proceed to the next server. We cannot draw anything else for this server. + return; + } + } + + flush(); + + // Is the root of the tree expanded already? + if( isset( $tree[$server_id][$base_dn] ) && is_array( $tree[$server_id][$base_dn] ) ) { + foreach( $tree[ $server_id ][ $base_dn ] as $child_dn ) + draw_tree_html( $child_dn, $server_id, 0 ); + if( ! is_server_read_only( $server_id ) ) { + echo ''; + if( show_create_enabled( $server_id ) ) { + echo '' . 
+							$lang['new'] . ''; + echo '' . $lang['create_new'] . ''; + } + } + } + + } else { // end if( pla_ldap_connect( $ds ) ) + // could not connect to LDAP server + echo "\n"; + echo "\n"; + echo "\""\n"; + echo "" . $lang['could_not_connect'] . "\n"; + echo "\n"; + + if( $servers[ $server_id ][ 'auth_type' ] != 'config' ) { + $logout_href = get_custom_file( $server_id, 'logout.php') . '?server_id=' . $server_id; + echo "\n"; + echo "\n"; + echo "\n"; + echo ""; + echo "" . $lang['logout'] . "\n"; + echo "\n"; + } + // Proceed to the next server in the list. We cannot do anything mroe here. + return; + } + + } else { // end if have_auth_info( $server_id ) + // We don't have enough information to login to this server + // Draw the "login..." link + $login_href = get_custom_file( $server_id, 'login_form.php' ) . "?server_id=$server_id"; + echo ''; + echo ''; + echo ''; + echo '' . $lang['login'] . ''; + echo '' . $lang['login_link'] . ''; + echo ''; + } + + if( mass_delete_enabled( $server_id ) ) { + echo "\n"; + echo "\n"; + echo "\n"; + } +} + +?> diff --git a/unit_test.php b/unit_test.php index e864232..e9e5838 100644 --- a/unit_test.php +++ b/unit_test.php @@ -1,17 +1,144 @@ "; require_once realpath( 'functions.php' ); -$dns1 = array( 'cn=joe,dc=example,dc=com', 'cn=joe,dc=example,dc=com', 'cn = bob, dc= example,dc =com' ); -$dns2 = array( 'cn=joe,dc=example,dc=com', 'CN =joe,dc=Example,dc =com', 'cn= bob, dc= example,dc =com' ); - -for( $i=0; $i"; } -// TESTING PLA_EXPLODE_DN() -var_dump( pla_explode_dn( "cn=,dc=example,dc=" ) ); -var_dump( ldap_explode_dn( "cn=,dc=example,dc=", 0 ) ); +// test pla_verbose_error() using ldap_error_codes.txt +if( false) { + for( $i=0; $i<255; $i++ ) { + $num = "0x" . str_pad( dechex( $i ), 2, "0", STR_PAD_LEFT ); + var_dump( $num ); + print_r( pla_verbose_error( $num ) ); + } +} + +// tests is_dn_string() +if( false ) { + $dn_strs = array( ' cn=joe,dc=example,dc=com', + 'cn = joe, dc= example, dc =com', + ' cn=asdf asdf, ou= foo bar, o =foo bar, dc=com', + 'cn=True!=False,dc=example,dc=com' ); + $not_dn_strs = array( ' asdf asdf ', + '== asdf asdf ', + ' = = = = = = = =' ); + + echo "All should be true:\n"; + foreach( $dn_strs as $str ) { + echo "\"$str\"\n"; + var_dump( is_dn_string( $str ) ); + } + echo "\nAll should be false:\n"; + foreach( $not_dn_strs as $str ) { + echo "\"$str\"\n"; + var_dump( is_dn_string( $str ) ); + } +} + +// tests pla_compare_dns() +if( false ) { + echo "Should all be 0:
"; + $dns1 = array( 'cn=joe,dc=example,dc=com', 'cn=joe,dc=example,dc=com', 'cn = bob, dc= example,dc =com' ); + $dns2 = array( 'cn=joe,dc=example,dc=com', 'CN =joe,dc=Example,dc =com', 'cn= bob, dc= example,dc =com' ); + + for( $i=0; $i"; + $dns1 = array( 'dc=test,dc=example,dc=com', 'cn=Fred,cn=joe,dc=example,dc=com', 'cn=joe2,dc=example,dc=com', 'cn = bob, dc= example,dc =com' ); + $dns2 = array( 'dc=example, dc=com', 'cn=joe,dc=example,dc=com', 'CN =joe,dc=Example2,dc =com', 'cn= 2bob, dc= example,dc =com' ); + + for( $i=0; $i\n"; + echo "Should be dc=com: "; + echo get_rdn( "dc=com" ); + echo "
\n"; + echo "Should be Fred: "; + echo get_rdn( "Fred" ); + echo "
\n"; +} + +// testing get_container() +if( false ) { + echo "Should be ou=People-copy1,ou=People-copy2,ou=People2,dc=example,dc=com: "; + var_dump( get_container( "uid=bäb,ou=People-copy1,ou=People-copy2,ou=People2,dc=example,dc=com" ) ); + echo "
\n"; + echo "Should be null: "; + var_dump( get_container( "dc=com" ) ); + echo "
\n"; + echo "Should be null: "; + var_dump( get_container( "Fred" ) ); + echo "
\n"; +} + +// tests pla_explode_dn() +if( false ) { + var_dump( pla_explode_dn( "cn=,dc=example,dc=" ) ); +} + +if( false ) { + $password = 'asdf@sadf'; + foreach( array('md5','md5crypt','sha','ssha','smd5','crypt','clear') as $enc_type ) { + $crypted_password = password_hash($password,$enc_type); + print "[".$enc_type."] ".$crypted_password."
"; + print " Test: " . (password_check($crypted_password,$password) ? "passed" : "failed" ); + print "\n"; + //unset($crypted_password); + flush(); + } +} + +if( true ) { + $secret = "foobar"; + $passwords = array( 'fun!244A', 'asdf', 'dc=stuff,ou=things', 'y()ikes' ); + + $passwords_encrypted = array(); + foreach( $passwords as $password ) { + $passwords_encrypted[] = pla_blowfish_encrypt( $password, $secret ); + } + + $passwords_decrypted = array(); + foreach( $passwords_encrypted as $password ) { + $passwords_decrypted[] = pla_blowfish_decrypt( $password, $secret ); + } + + foreach( $passwords_decrypted as $i => $password ) { + echo $passwords[$i] . ': ' . $passwords_encrypted[$i] . '
'; + if( $passwords[$i] == $passwords_decrypted[$i] ) + echo "passed
"; + else + echo "failed!
"; + } +} + +?> diff --git a/update.php b/update.php index 0ca1b27..87c312f 100644 --- a/update.php +++ b/update.php @@ -1,4 +1,6 @@ - '' foreach( $update_array as $attr => $val ) @@ -52,9 +55,19 @@ foreach( $update_array as $attr => $val ) // Call the custom callback for each attribute modification // and verify that it should be modified. -foreach( $update_array as $attr_name => $val ) +foreach( $update_array as $attr_name => $val ) { + + // Check to see if this is a unique Attribute + if( $badattr = checkUniqueAttr( $server_id, $dn, $attr_name, $val ) ) { + $search_href='search.php?search=true&form=advanced&server_id=' . $server_id . '&filter=' . $attr_name . '=' . $badattr; + pla_error(sprintf( $lang['unique_attr_failed'] , $attr_name,$badattr,$dn,$search_href ) ); + } + if( true !== preAttrModify( $server_id, $dn, $attr_name, $val ) ) unset( $update_array[ $attr_name ] ); + elseif( is_attr_read_only( $server_id, $attr ) ) + pla_error( sprintf( $lang['attr_is_read_only'], htmlspecialchars( $attr_name ) ) ); +} $ds = pla_ldap_connect( $server_id ); $res = @ldap_modify( $ds, $dn, $update_array ); @@ -71,10 +84,11 @@ if( $res ) if( 0 === strcasecmp( $attr_name, 'userPassword' ) && check_server_id( $server_id ) && isset( $servers[ $server_id ][ 'auth_type' ] ) && - $servers[ $server_id ][ 'auth_type' ] == 'form' && + ( $servers[ $server_id ][ 'auth_type' ] == 'cookie' || + $servers[ $server_id ][ 'auth_type' ] == 'session' ) && 0 === pla_compare_dns( get_logged_in_dn( $server_id ), $dn ) ) { - unset_cookie_login_dn( $server_id ); + unset_login_dn( $server_id ); include realpath( 'header.php' ); ?> @@ -84,10 +98,10 @@ if( $res )
- Modification successful!
+

- Since you changed your password, you must
- now login again with your new password. +   +
diff --git a/update_confirm.php b/update_confirm.php index f260bed..53400f7 100644 --- a/update_confirm.php +++ b/update_confirm.php @@ -1,215 +1,217 @@ - $vals ) - if( is_array( $vals ) ) - foreach( $vals as $i => $v ) - $old_values[ $attr ][ $i ] = utf8_decode( $v ); - else - $old_values[ $attr ] = utf8_decode( $vals ); -foreach( $new_values as $attr => $vals ) - if( is_array( $vals ) ) - foreach( $vals as $i => $v ) - $new_values[ $attr ][ $i ] = utf8_decode( $v ); - else - $new_values[ $attr ] = utf8_decode( $vals ); - -?> - - - -

-

Server:     :

- - $old_val ) -{ - // Did the user delete the field? - if( ! isset( $new_values[ $attr ] ) ) { - $update_array[ $attr ] = ''; - } - // did the user change the field? - elseif( $old_val != $new_values[ $attr ] ) { - - $new_val = $new_values[ $attr ]; - - // special case for userPassword attributes - if( 0 == strcasecmp( $attr, 'userPassword' ) && $new_val != '' ) - $new_val = password_hash( $new_val, $_POST['enc_type'] ); - $update_array[ $attr ] = $new_val; - } -} - -// special case check for a new enc_type for userPassword (not otherwise detected) -if( isset( $_POST['enc_type'] ) && - $_POST['enc_type'] != $_POST['old_enc_type'] && - $_POST['enc_type'] != 'clear' && - $_POST['new_values']['userpassword'] != '' ) { - - $new_password = password_hash( $_POST['new_values']['userpassword'], $_POST['enc_type'] ); - $update_array[ 'userpassword' ] = $new_password; -} - -// strip empty vals from update_array and ensure consecutive indices for each attribute -foreach( $update_array as $attr => $val ) { - if( is_array( $val ) ) { - foreach( $val as $i => $v ) - if( null == $v || 0 == strlen( $v ) ) - unset( $update_array[$attr][$i] ); - $update_array[$attr] = array_values( $update_array[$attr] ); - } -} - -// at this point, the update_array should look like this (example): -// Array ( -// cn => Array( -// [0] => 'Dave', -// [1] => 'Bob' ) -// sn => 'Smith', -// telephoneNumber => '555-1234' ) -// This array should be ready to be passed to ldap_modify() - -?> - 0 ) { ?> - -
-
- -
-
- - - - - - - - - $new_val ) { $counter++ ?> - - - - \n\n"; - } - - ?> - -
- "; - else - echo htmlspecialchars( utf8_encode( $old_values[ $attr ] ) ) . "
"; - echo "
"; - - // is this a multi-valued attribute? - if( is_array( $new_val ) ) { - foreach( $new_val as $i => $v ) { - if( $v == '' ) { - // remove it from the update array if it's empty - unset( $update_array[ $attr ][ $i ] ); - $update_array[ $attr ] = array_values( $update_array[ $attr ] ); - } else { - echo htmlspecialchars( utf8_encode( $v ) ) . "
"; - } - } - - // was this a multi-valued attribute deletion? If so, - // fix the $update_array to reflect that per update_confirm.php's - // expectations - if( $update_array[ $attr ] == array( 0 => '' ) || $update_array[ $attr ] == array() ) { - $update_array[ $attr ] = ''; - echo '' . $lang['attr_deleted'] . ''; - } - } - else - if( $new_val != '' ) - echo htmlspecialchars( $new_val ) . "
"; - else - echo '' . $lang['attr_deleted'] . ''; - echo "
-
- - - - - - -
- -
- - - $val ) { ?> - - $v ) { ?> - - - - - - - - - -
-
- -
- - - -
-
-
- - - - -
- - . -
- - - - - - - + + +

+

Server:     :

+ $old_val ) +{ + // Did the user delete the field? + if( ! isset( $new_values[ $attr ] ) ) { + $update_array[ $attr ] = ''; + } + // did the user change the field? + elseif( $old_val != $new_values[ $attr ] ) { + + $new_val = $new_values[ $attr ]; + + // special case for userPassword attributes + if( 0 == strcasecmp( $attr, 'userPassword' ) && $new_val != '' ) { + $new_val = password_hash( $new_val, $_POST['enc_type'] ); + $password_already_hashed = true; + } + // special case for samba password + else if (( 0 == strcasecmp($attr,'sambaNTPassword') || 0 == strcasecmp($attr,'sambaLMPassword')) && trim($new_val[0]) != '' ){ + $mkntPassword = new MkntPasswdUtil(); + $mkntPassword->createSambaPasswords( $new_val[0] ) or pla_error("Unable to create samba password. Please check your configuration in template_config.php"); + $new_val = $mkntPassword->valueOf($attr); + } + $update_array[ $attr ] = $new_val; + } +} + +// special case check for a new enc_type for userPassword (not otherwise detected) +if( isset( $_POST['enc_type'] ) && + ! isset( $password_already_hashed ) && + $_POST['enc_type'] != $_POST['old_enc_type'] && + $_POST['enc_type'] != 'clear' && + $_POST['new_values']['userpassword'] != '' ) { + + $new_password = password_hash( $_POST['new_values']['userpassword'], $_POST['enc_type'] ); + $update_array[ 'userpassword' ] = $new_password; +} + +// strip empty vals from update_array and ensure consecutive indices for each attribute +foreach( $update_array as $attr => $val ) { + if( is_array( $val ) ) { + foreach( $val as $i => $v ) + if( null == $v || 0 == strlen( $v ) ) + unset( $update_array[$attr][$i] ); + $update_array[$attr] = array_values( $update_array[$attr] ); + } +} + +// at this point, the update_array should look like this (example): +// Array ( +// cn => Array( +// [0] => 'Dave', +// [1] => 'Bob' ) +// sn => 'Smith', +// telephoneNumber => '555-1234' ) +// This array should be ready to be passed to ldap_modify() + +?> + 0 ) { ?> + +
+
+ +
+
+ + + + + + + + + $new_val ) { $counter++ ?> + + + + \n\n"; + } + + ?> + +
+ "; + else + if( 0 == strcasecmp( $attr, 'userPassword' ) && ( obfuscate_password_display() || is_null( get_enc_type( $old_values[ $attr ] ) ) ) ) + echo preg_replace( '/./', '*', $old_values[ $attr ] ) . "
"; + else + echo nl2br( htmlspecialchars( $old_values[ $attr ] ) ) . "
"; + echo "
"; + + // is this a multi-valued attribute? + if( is_array( $new_val ) ) { + foreach( $new_val as $i => $v ) { + if( $v == '' ) { + // remove it from the update array if it's empty + unset( $update_array[ $attr ][ $i ] ); + $update_array[ $attr ] = array_values( $update_array[ $attr ] ); + } else { + echo nl2br( htmlspecialchars( $v ) ) . "
"; + } + } + + // was this a multi-valued attribute deletion? If so, + // fix the $update_array to reflect that per update_confirm.php's + // expectations + if( $update_array[ $attr ] == array( 0 => '' ) || $update_array[ $attr ] == array() ) { + $update_array[ $attr ] = ''; + echo '' . $lang['attr_deleted'] . ''; + } + } + else + if( $new_val != '' ) + if( 0 == strcasecmp( $attr, 'userPassword' ) && ( obfuscate_password_display() || is_null( get_enc_type( $new_values[ $attr ] ) ) ) ) + echo preg_replace( '/./', '*', $new_val ) . "
"; + else + echo htmlspecialchars( $new_val ) . "
"; + else + echo '' . $lang['attr_deleted'] . ''; + echo "
+
+ + + + + + +
+ +
+ + + $val ) { ?> + + $v ) { ?> + + + + + + + + + +
+
+ +
+ + + +
+
+
+ + + + +
+ + . +
+ + + + + + + diff --git a/view_jpeg_photo.php b/view_jpeg_photo.php index 7645598..934ad40 100644 --- a/view_jpeg_photo.php +++ b/view_jpeg_photo.php @@ -1,6 +1,8 @@ +



-
+<?php echo $lang['pla_logo']; ?>





+ | - - + | + + +