Merge lp:~quam-plures-core/quam-plures/no_wp_and_mt_importers into lp:quam-plures

Proposed by EdB
Status: Merged
Approved by: Tilman Blumenbach
Approved revision: not available
Merged at revision: not available
Proposed branch: lp:~quam-plures-core/quam-plures/no_wp_and_mt_importers
Merge into: lp:quam-plures
Diff against target: 126806 lines (+62155/-64582)
9 files modified
inc/_core/__core.init.php (+0/-2)
inc/_core/ui/forms/_form.funcs.php (+0/-119)
inc/tools/mtimport.ctrl.php (+0/-1674)
inc/tools/tools.ctrl.php (+0/-18)
inc/tools/wpimport.ctrl.php (+0/-586)
locales/de_DE/LC_MESSAGES/messages.po (+15569/-15576)
locales/fr_FR/LC_MESSAGES/messages.po (+16528/-16535)
locales/messages.pot (+14812/-14819)
locales/ru_RU/LC_MESSAGES/messages.po (+15246/-15253)
To merge this branch: bzr merge lp:~quam-plures-core/quam-plures/no_wp_and_mt_importers
Reviewer Review Type Date Requested Status
Tilman Blumenbach Pending
Review via email: mp+19605@code.launchpad.net
To post a comment you must log in.
Revision history for this message
EdB (edb) wrote :

Removed mtimport and wpimport - 2 files gone and a few edited. Most editing was in translations. See http://forums.quamplures.net/viewtopic.php?f=9&t=245 if you're into it :)

Revision history for this message
Tilman Blumenbach (tblue) wrote :

I think you can safely remove form_select(), form_select_object() and form_checkbox() now that these functions are not needed anymore and deprecated anyway.

Revision history for this message
EdB (edb) wrote :

I saw Walter's comment on that and figured "next" because I do kinda want to keep a focus ya know? Got those wrote down on my whiteboard (an actual whiteboard - yeah I know) as 'check and remove'.

Revision history for this message
EdB (edb) wrote :

Or I can push it into this one?

Revision history for this message
Tilman Blumenbach (tblue) wrote :

You've got a point with the "keeping focus" stuff. Well, perhaps you could just add a @todo for now?

7427. By EdB

removed functions that are fully obsoleted by the removal of the importers

Revision history for this message
EdB (edb) wrote :

Thought about it a bit. Walter's comment clearly indicated those funcs were needed for something that I removed, so either clean it up now OR somehow figure out how to clean out all obsolete stuff later. Seems like "clean up as we go" makes more sense and has a chance of working.

So now we have the importers gone, and removal of functions no longer needed by anything.

Revision history for this message
Tilman Blumenbach (tblue) wrote :

Looks fine now. I will test it tomorrow.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'inc/_core/__core.init.php'
--- inc/_core/__core.init.php 2010-01-15 20:06:40 +0000
+++ inc/_core/__core.init.php 2010-02-18 17:25:21 +0000
@@ -105,7 +105,6 @@
105 'itemstatuses' => 'items/item_statuses.ctrl.php',105 'itemstatuses' => 'items/item_statuses.ctrl.php',
106 'itemtypes' => 'items/item_types.ctrl.php',106 'itemtypes' => 'items/item_types.ctrl.php',
107 'locales' => 'locales/locales.ctrl.php',107 'locales' => 'locales/locales.ctrl.php',
108 'mtimport' => 'tools/mtimport.ctrl.php',
109 'plugins' => 'plugins/plugins.ctrl.php',108 'plugins' => 'plugins/plugins.ctrl.php',
110 'settings' => 'settings/settings.ctrl.php',109 'settings' => 'settings/settings.ctrl.php',
111 'set_antispam' => 'antispam/antispam_settings.ctrl.php',110 'set_antispam' => 'antispam/antispam_settings.ctrl.php',
@@ -116,7 +115,6 @@
116 'users' => 'users/users.ctrl.php',115 'users' => 'users/users.ctrl.php',
117 'upload' => 'files/upload.ctrl.php',116 'upload' => 'files/upload.ctrl.php',
118 'widgets' => 'widgets/widgets.ctrl.php',117 'widgets' => 'widgets/widgets.ctrl.php',
119 'wpimport' => 'tools/wpimport.ctrl.php',
120 );118 );
121119
122120
123121
=== modified file 'inc/_core/ui/forms/_form.funcs.php'
--- inc/_core/ui/forms/_form.funcs.php 2010-02-08 21:42:02 +0000
+++ inc/_core/ui/forms/_form.funcs.php 2010-02-18 17:25:21 +0000
@@ -92,125 +92,6 @@
92 }92 }
93}93}
9494
95/**
96 * Display a select field and populate it with a callback function.
97 *
98 * @deprecated Deprecated by (@link Form::select_input())
99 *
100 * @param string field name
101 * @param string default field value
102 * @param callback callback function
103 * @param string field label to be display before the field
104 * @param string note to be displayed after the field
105 * @param string CSS class for select
106 * waltercruz> still used by mtimport
107 */
108function form_select(
109 $field_name,
110 $field_value,
111 $field_list_callback,
112 $field_label,
113 $field_note = '',
114 $field_class = '' )
115{
116 echo '<fieldset>';
117 echo ' <div class="label"><label for="', $field_name, '">', $field_label, (($field_label != '') ? ':' : ''), '</label></div>';
118 echo ' <div class="input"><select name="', $field_name, '" id="', $field_name, '"';
119 if( !empty($field_class) )
120 {
121 echo ' class="', $field_class,'"';
122 }
123 echo '>';
124
125 // call the callback function:
126 $field_list_callback( $field_value );
127
128 echo ' </select>';
129 echo ' <span class="notes">', $field_note, '</span></div>';
130 echo "</fieldset>\n\n";
131}
132
133
134/**
135 * Display a select field and populate it with a cache object.
136 *
137 * @deprecated Deprecated by (@link Form::select_object())
138 *
139 * @param string field name
140 * @param string default field value
141 * @param DataObjectCache Cache containing values for list (get_option_list() gets called on it)
142 * @param string field label to be display before the field
143 * @param string note to be displayed after the field
144 * @param boolean allow to select [none] in list
145 * @param string CSS class for select
146 * waltercruz> still used by mtimport
147 */
148function form_select_object(
149 $field_name,
150 $field_value,
151 & $field_object,
152 $field_label,
153 $field_note = '',
154 $allow_none = false,
155 $field_class = '' )
156{
157 echo '<fieldset>';
158 echo ' <div class="label"><label for="', $field_name, '">', $field_label, ':</label></div>';
159 echo ' <div class="input"><select name="', $field_name, '" id="', $field_name, '"';
160 if( !empty($field_class) )
161 {
162 echo ' class="'.$field_class.'"';
163 }
164 echo '>';
165 echo $field_object->get_option_list( $field_value, $allow_none );
166 echo ' </select>';
167 echo ' <span class="notes">'.$field_note.'</span></div>';
168 echo "</fieldset>\n\n";
169}
170
171/**
172 * form_checkbox(-)
173 *
174 * @deprecated Deprecated by (@link Form::checkbox())
175 *
176 * @param string the name of the checkbox
177 * @param boolean initial value
178 * @param string label
179 * @param string note
180 * @param string CSS class
181 * @param boolean to output (default) or not
182 * @return mixed true (if output) or the generated HTML if not outputting
183 * waltercruz > still used by mtimport
184 */
185function form_checkbox( $field_name, $field_value, $field_label, $field_note = '',
186 $field_class = '', $output = true )
187{
188 $r = "<fieldset>\n"
189 .'<div class="label"><label for="'.$field_name.'">'.$field_label.":</label></div>\n"
190 .'<div class="input"><input type="checkbox" class="checkbox" name="'.$field_name.'" id="'
191 .$field_name.'" value="1"';
192 if( $field_value )
193 {
194 $r .= ' checked="checked"';
195 }
196 if( !empty($field_class) )
197 {
198 $r .= ' class="'.$field_class.'"';
199 }
200 $r .= " />\n"
201 .'<span class="notes">'.$field_note."</span></div>\n"
202 ."</fieldset>\n\n";
203
204 if( $output )
205 {
206 echo $r;
207 return true;
208 }
209 else
210 {
211 return $r;
212 }
213}
21495
215/**96/**
216 * form_info(-)97 * form_info(-)
21798
=== removed file 'inc/tools/mtimport.ctrl.php'
--- inc/tools/mtimport.ctrl.php 2010-01-15 20:06:40 +0000
+++ inc/tools/mtimport.ctrl.php 1970-01-01 00:00:00 +0000
@@ -1,1674 +0,0 @@
1<?php
2/**
3 * This file implements importing of Movable Type entries into b2evolution.
4 *
5 * {@internal
6 * TODO:
7 * - Wrap this by an abstract import class!
8 * - list of all posts, editable (overkill?)
9 * - assign comment_author_ID to comments if user exist?! }}
10 *
11 *
12 * This script was developed and tested with b2evolution 0.9.0.4 (on Sourceforge CVS)
13 * and Movable Type 2.64 and 2.661.
14 * It should work quite alright with b2evo 0.9 and later though.
15 *
16 * This file is part of the Quam Plures project - {@link http://quamplures.net/}.
17 * See also {@link https://launchpad.net/quam-plures}.
18 *
19 * @copyright (c) 2009 by the Quam Plures developers - {@link http://quamplures.net/}
20 * @copyright (c)2003-2009 by Francois PLANQUE - {@link http://fplanque.net/}.
21 * Parts of this file are copyright (c)2004-2005 by Daniel HAHLER - {@link http://thequod.de/contact}.
22 * Credits go to the WordPress team (@link http://wordpress.org), where I got the basic
23 * import-mt.php script with most of the core functions. Thank you!
24 *
25 * @license http://quamplures.net/license.html GNU General Public License (GPL)
26 *
27 * {@internal Open Source relicensing agreement:
28 * Daniel HAHLER grants Francois PLANQUE the right to license
29 * Daniel HAHLER's contributions to this file and the b2evolution project
30 * under any OSI approved OSS license (http://www.opensource.org/licenses/).
31 * }}
32 *
33 * {@internal Below is a list of authors who have contributed to design/coding of this file: }}
34 * @author fplanque: Francois PLANQUE
35 * @author blueyed: Daniel HAHLER
36 *
37 * @package pond
38 */
39if( !defined('QP_MAIN_INIT') ) die( 'Please, do not access this page directly.' );
40
41global $dispatcher;
42
43/**
44 * IMPORT_SRC_DIR directory where to be imported files get searched for.
45 */
46define('IMPORT_SRC_DIR', $basepath);
47
48/**
49 * Enter the relative path of the import.txt file containing the MT entries.
50 * If the file is called import.txt and it is in /admin, then this line should be:
51 * <code>
52 * define('MTEXPORT', 'import.txt');
53 * </code>
54 *
55 * You only need this to force a specific file instead of using a dropdown list
56 * (UI selection)
57 */
58define('MTEXPORT', '');
59
60/**
61 * Set to true to get a lot of var_dumps, wrapped in pre tags
62 */
63$output_debug_dump = 0;
64
65
66// ----------- don't change below if you don't know what you do ------------------------
67// TODO: Make this AdminUI compliant, or better: make an MT import plugin..
68
69load_funcs('files/model/_file.funcs.php');
70load_class('items/model/_item.class.php');
71
72set_magic_quotes_runtime( 0 ); // be clear on this
73
74// TODO: $io_charset !!
75$head = <<<EOB
76<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
77<html xmlns="http://www.w3.org/1999/xhtml">
78<head>
79 <title>${app_name} &rsaquo; Import from Movable Type</title>
80 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
81 <link href="{$admintemplates_url}legacy/rsc/css/variation.css" rel="stylesheet" type="text/css" title="Variation" />
82 <link href="{$admintemplates_url}legacy/rsc/css/desert.css" rel="alternate stylesheet" type="text/css" title="Desert" />
83 <link href="{$admintemplates_url}legacy/rsc/css/legacy.css" rel="alternate stylesheet" type="text/css" title="Legacy" />
84EOB;
85if( is_file( $admintemplates_path.'legacy/rsc/css/custom.css' ) )
86{
87 $head .= '<link href="'.$admintemplates_url.'legacy/rsc/css/custom.css" rel="alternate stylesheet" type="text/css" title="Custom" />';
88}
89$head .= <<<EOB
90<script type="text/javascript" src="{$rsc_url}js/styleswitcher.js?v=2"></script>
91</head>
92<body>
93<div id="header">
94 <div id="headinfo">
95 <span style="font-size:150%; font-weight:bold">Movable Type to ${app_name} importer</span>
96 [<a href="{$dispatcher}?ctrl=tools">Back to ${app_name}</a>]
97 </div>
98EOB;
99
100$conf_file = $conf_path.'_config.php';
101if( !file_exists( $conf_file ) )
102{
103 dieerror( 'There doesn\'t seem to be a conf/_config.php file. You must install '.$app_name.' before you can import any entries.', $head );
104}
105require( $conf_file );
106if( ! isset($config_is_done) || ! $config_is_done )
107{
108 $error_message = '';
109 require( $inc_path.'_conf_error_page.php' );
110
111 dieerror( $app_name.' configuration is not done yet.', $head );
112}
113
114
115// TODO: this should use no output buffering (probably to display page content during import, which may take long)!
116
117
118// Check if user is logged in and is in group #1 (admins)
119if( !is_logged_in() || $current_User->Group->ID != 1 )
120{ // login failed
121 debug_die( 'You must login with an administrator (group #1) account.' );
122}
123
124echo $head;
125
126param( 'exportedfile', 'string', '' );
127param( 'import_mode', 'string', 'normal' );
128
129/*** mode-tabs ***/ ?>
130<ul class="tabs"><?php
131 foreach( array( 'easy', 'normal', 'expert' ) as $tab )
132 {
133 echo ( $tab == $import_mode ) ? '<li class="current">' : '<li>';
134 echo '<a href="'.$dispatcher.'?ctrl=mtimport&amp;import_mode='.$tab.( !empty($exportedfile) ? '&amp;exportedfile='.$exportedfile : '' ).'">'.ucwords($tab).'</a></li>';
135 }
136?></ul>
137</div>
138
139<div style="padding-top:1em;clear:both;">
140<?php
141 // check existence of export-file
142 if( empty($exportedfile) )
143 {
144 if( '' != MTEXPORT && !file_exists(MTEXPORT) )
145 {
146 ?>
147 <div class="error"><p>
148 The MT export file you defined in MTEXPORT at top of the script does not seem to exist.
149 Please check the path you've given for MTEXPORT or choose a file below.
150 </p></div>
151 <?php
152 }
153 elseif( '' != MTEXPORT )
154 {
155 $exportedfile = MTEXPORT;
156 }
157 if( empty($exportedfile) )
158 { // no valid MTEXPORT defined
159 chooseexportfile();
160 echo '</div></div></body></html>';
161 exit(0);
162 }
163 }
164 else
165 {
166 if( !file_exists($exportedfile) )
167 {
168 chooseexportfile();
169 dieerror("The MT export file [$exportedfile] you've chosen does not seem to exist. Please check path/permission.");
170 }
171 }
172
173 // get the params
174 param( 'simulate', 'integer', 0 );
175 param( 'default_password', 'string', 'changeme' );
176 param( 'default_password2', 'string', 'changeme' );
177 param( 'post_locale', 'string', $Settings->get( 'default_locale' ) );
178
179 if( $default_password != $default_password2 )
180 {
181 dieerror( 'The two passwords for new users are not identical.' );
182 }
183
184 param( 'default_userlevel', 'integer', 1 );
185 if( $default_userlevel > 10 ) $default_userlevel = 10;
186 param( 'default_usergroup', 'integer', $Settings->get('newusers_grp_ID') );
187 param( 'default_convert_breaks', 'integer', 1 );
188 param( 'convert_html_tags', 'integer', 0 );
189
190 param( 'action', 'string', '' );
191
192
193 // global arrays
194 $categories_countprim = array(); // counts posts in primary categories
195
196 // load caches
197 blog_load_cache();
198 cat_load_cache( 'none' );
199
200 $i_user = -1;
201
202 if( empty($action) )
203 {
204 param( 'import_mode', 'string', 'normal', true );
205 import_data_extract_authors_cats();
206
207 ?>
208 <div class="panelinfo">
209 <p>We are about to import <?php
210 echo '['.$exportedfile.'].';
211 if( '' == MTEXPORT )
212 {
213 ?> [<a href="<?php echo $dispatcher ?>?ctrl=mtimport&amp;import_mode=<?php echo $import_mode ?>">choose another export-file</a>]<?php
214 } ?></p>
215
216 <p>This file contains <?php echo count( $posts ) ?> post(s) from <?php echo count( $authors ) ?> author(s) in <?php echo count( $categories ) ?> category(ies).</p>
217
218 <p>We'll import into Quam Plures' database &quot;<?php echo $db_config['name'] ?>&quot;.</p>
219 </div>
220 <div class="panelinfo">
221 <p>Before importing, you should check the URLs of any &lt;img&gt; tags you may have in <?php echo $exportedfile ?>. Will these URLs still be valid after the migration? If not, we advise you do a search and replace on <?php echo $exportedfile ?> before continuing.</p>
222
223 <p>Preferred location for inline images is the blog media folder.</p>
224
225 <p>You can also handle the images later, but it might be easier now :)</p>
226 </div>
227
228 <div class="panelinfo">
229 <p>The importer is smart enough not to import duplicates, so you can run this procedure multiple times without worrying if &#8212; for whatever reason &#8212; it doesn't finish (script timeout for example).</p>
230 </div>
231
232
233 <div class="panelblock">
234 <form class="fform" action="<?php echo $dispatcher ?>" method="post">
235 <input type="hidden" name="ctrl" value="mtimport" />
236 <input type="hidden" name="action" value="import" />
237 <?php
238 if( !empty($exportedfile) )
239 {
240 ?><input type="hidden" name="exportedfile" value="<?php echo format_to_output( $exportedfile, 'formvalue' ) ?>" />
241 <?php
242 }
243
244 ?>
245
246 <?php
247 switch( $import_mode )
248 {
249 case 'easy':
250 ?>
251 <h2>Easy Import:</h2>
252 <ul>
253 <li>MT users with no matching <?php echo $app_name; ?> user login will be automatically created.</li>
254 <li>MT categories with no matching <?php echo $app_name; ?> category name will be automatically created (in the default blog selected below.)</li>
255 <?php
256 if( isset($categories_countprim['[no category assigned]']) )
257 { ?>
258 <li>Entries without categories (<?php echo $categories_countprim['[no category assigned]'] ?>) will be imported to category '[no category assigned]' in the default blog.</li>
259 <?php
260 }
261 echo '</ul>';
262 break;
263 case 'normal':
264 ?>
265 <h2>Normal Import:</h2>
266 <ul>
267 <li>MT users can be mapped to existing <?php echo $app_name; ?> users, mapped to new users (provide login) or ignored.</li>
268 <li>Categories can be mapped to existing <?php echo $app_name; ?> categories, mapped to new categories (provide location + name) or ignored.</li>
269 </ul>
270 <?php
271 break;
272 case 'expert':
273 ?>
274 <h2>Expert Import:</h2>
275 <p>This gives you as much power as we can provide. It's like normal mode, but lets you map categories to a whole set of <?php echo $app_name; ?> categories (one main category and as many extra categories as you like). You can run the importer multiple times to use different sets of <?php echo $app_name; ?> categories for different sets of MT categories.</p>
276 <?php
277 break;
278
279 }
280
281 ?>
282
283 <?php if( $import_mode != 'expert' ) { ?>
284 <fieldset>
285 <legend>Default blog</legend>
286 <fieldset>
287 <div class="label"><?php echo ( $import_mode == 'easy' ) ? 'Create categories in blog' : 'Use as default blog for categories' ?>:</div>
288 <div class="input">
289 <select name="default_blog">
290 <?php
291 $BlogCache = & get_Cache( 'BlogCache' );
292 echo $BlogCache->get_option_list( 2 ); // use first non-all blog as default
293 ?>
294 </select>
295 </div>
296 </fieldset>
297 </fieldset>
298 <?php } ?>
299
300 <?php if( $import_mode != 'easy' ) { ?>
301 <fieldset><legend>Author mapping</legend>
302 <?php
303 $evousers = $DB->get_results('SELECT * FROM T_users ORDER BY user_ID');
304 foreach ($authors as $author)
305 {
306 ++$i_user;
307 ?>
308 <fieldset>
309 <div class="label"><label><?php echo $author ?></label></div>
310 <div class="input">
311 <select name="user_select[]">
312 <option value="#CREATENEW#" selected="selected"> Create new: </option>
313 <option value="#IGNORE#"> Ignore! </option>
314 <?php
315 foreach( $evousers as $user )
316 {
317 ?><option value="<?php echo $user->user_ID ?>"<?php if( strtolower($author) == strtolower( $user->user_login ) ) echo ' selected="selected"';
318 echo '>'.format_to_output(strtolower($user->user_login), 'formvalue').'</option>';
319 }
320 ?></select>
321 <input type="text" value="<?php echo format_to_output($author, 'formvalue') ?>" name="user_name[]" maxlength="30" class="input" />
322 <span class="notes">(login for new user)</span>
323 </div>
324 </fieldset>
325 <?php
326 }
327 ?>
328 </fieldset>
329 <?php } ?>
330
331
332 <fieldset><legend>New user defaults</legend>
333 <?php
334 form_text( 'default_password', $default_password, 20, 'Password for new users', 'this will be the password for users created during migration (default is "changeme")', 30 , '', 'password' );
335 form_text( 'default_password2', $default_password, 20, 'Confirm password', 'please confirm the password', 30 , '', 'password' );
336 $GroupCache = & get_Cache( 'GroupCache' );
337 form_select_object( 'default_usergroup', $Settings->get('newusers_grp_ID'), $GroupCache, T_('User group') );
338 $field_note = '[0 - 10] '.sprintf( T_('See <a %s>online manual</a> for details.'), 'href="http://manual.b2evolution.net/User_levels"' );
339 form_text( 'default_userlevel', $Settings->get('newusers_level'), 2, T_('Level'), $field_note, 2 );
340 ?>
341 </fieldset>
342
343
344 <?php if( $mode != 'easy' ){ ?>
345 <fieldset><legend>Category mapping</legend>
346 <?php
347 $i_cat = 0;
348 foreach( $categories as $cat )
349 {
350 ?>
351 <fieldset>
352 <div class="label">
353 <label><?php echo format_to_output($cat, 'htmlbody') ?></label>
354 <br /><span class="notes" style="font-weight:normal">used <?php echo @(int)$categories_countprim[$cat] ?> times as primary category</span>
355 </div>
356 <div class="input"><select name="catmap_select[]">
357 <?php
358 if( $import_mode == 'expert' )
359 echo '<option value="#DEFAULTSET#">Map to default categories set (see below)</option>';
360 else echo '<option value="#DEFAULTBLOG#">Create in default blog:</option>'; ?>
361 <?php cats_optionslist( $cat ) ?>
362 <option value="#IGNORE#">Ignore entries with this primary cat</option>
363 </select>
364 <input type="text" name="catmap_name[]" value="<?php echo format_to_output( $cat, 'formvalue' ) ?>" size="30" />
365 </div>
366 </fieldset>
367 <?php
368 $i_cat++;
369 } ?>
370 <?php
371 if( $import_mode == 'expert' )
372 {
373 fieldset_cats();
374 }
375 ?>
376 </fieldset>
377 <?php } ?>
378
379
380 <fieldset><legend>Post/Entry defaults</legend>
381 <?php
382 form_checkbox( 'default_convert_breaks', $default_convert_breaks, 'Convert-Breaks default', 'will be used for posts with empty CONVERT BREAKS or "__default__"' );
383 form_select( 'post_locale', $Settings->get('default_locale'), 'locale_options', T_('Default locale'), 'Locale for posts.' );
384 form_checkbox( 'convert_html_tags', $convert_html_tags, 'Convert ugly HTML', 'this will lowercase all html tags and add a XHTML compliant closing tag to &lt;br&gt;, &lt;img&gt;, &lt;hr&gt; (you\'ll get notes)' );
385
386 if( $import_mode != 'easy' )
387 { // we'll use 'default' when importing
388 ?>
389 <div class="label">Renderers:</div>
390 <div class="input"><?php renderer_list() ?></div>
391 <?php } ?>
392 </fieldset>
393
394 <?php /*<fieldset style="padding-left:1ex"><legend>&lt;img&gt;-URL mapping</legend>
395 <a id="imgurls"><p class="notes">This lets you map found image urls (their basename) to another basename.
396
397 // TODO: refer to Blog media folder/url and ensure that it's enabled..
398
399 You probably want to put the images that you had on your MT installation into Quam Plures' media folder.<br />
400 So you would use <strong><?php echo "TODO" ?></strong> for replacement.<br />
401
402 You can leave this empty, of course and nothing will be replaced, but then you'll have probably broken images.</p></a>
403 <?php
404 preg_match_all( '#<img .*?src="([^"]*)/.*?"#is', $importdata, $matches );
405
406 foreach( $matches[1] as $imgurl )
407 {
408 if( !isset($imgurlscount[ $imgurl ]) )
409 $imgurlscount[ $imgurl ] = 1;
410 else $imgurlscount[ $imgurl ]++;
411 }
412
413 asort( $imgurlscount );
414 $imgurlscount = array_reverse( $imgurlscount );
415
416 param( 'singleimgurls', 'integer', 0 );
417 $i = 0;
418 foreach( $imgurlscount as $imgurl => $counter ) if( $counter > 1 || $singleimgurls )
419 {
420 ?><input type="hidden" name="url_search[<?php echo $i ?>]" value="<?php echo format_to_output( $imgurl, 'formvalue' ) ?>" />
421 <strong><?php echo $imgurl ?></strong>:<br />
422 <div class="input"><input style="clear:left" type="text" name="url_replace[]" size="50" /></div>
423 <span class="notes" style="font-weight:normal"> (used <?php echo $counter ?> times)</span>
424 <br />
425 <?php
426 $i++;
427 }
428
429 echo '<p class="center"><a id="imgurls" href="<?php echo $dispatcher ?>?ctrl=mtimport&amp;tab=import&amp;singleimgurls='.( $singleimgurls ? '0' : '1' );
430 if( !empty($exportedfile) ) echo '&amp;exportedfile='.$exportedfile;
431 echo '">'.( $singleimgurls ? 'hide img urls only used once' : 'show also img urls only used once').'</a></p>';
432
433 ?>
434 </fieldset>
435 */ ?>
436
437 <fieldset><legend>other settings</legend>
438 <?php
439 form_checkbox( 'simulate', $simulate, 'Simulate: do not import really', 'Use this to test importing, without really changing the target database.' );
440 ?>
441 </fieldset>
442 <p>Please note:</p>
443 <ul>
444 <li><?php echo $app_name; ?> does not support excerpts yet.
445 So, we will import them in front of the body with "<?php echo htmlspecialchars('<!--more-->< !--noteaser-->') ?>" tags,
446 but only if there is no extended body for the post. In that case we'll use the extended body appended with the &lt;!--more--&gt; tag to the body - excerpts are lost then (but you'll get a note about it).
447 </li>
448 </ul>
449
450 <fieldset class="submit">
451 <div class="input">
452 <input type="hidden" name="import_mode" value="<?php echo $import_mode ?>" />
453 <input class="search" type="submit" value=" Import! " />
454 <input class="search" type="reset" value="Reset form" />
455 </div>
456 </fieldset>
457
458 </div>
459
460 </form>
461
462 <?php
463 }
464
465
466 /*************
467 IMPORT
468 *************/
469 elseif( $action == 'import' )
470 {
471 $Timer->resume('import_main');
472 ?>
473 <div class="panelinfo">
474 <h4>Importing from [<?php echo $exportedfile ?>]..<?php if( $simulate ) echo ' (simulating)' ?></h4>
475
476 <?php
477 if( function_exists( 'set_time_limit' ) )
478 {
479 set_time_limit( 900 ); // 15 minutes ought to be enough for everybody *g
480 }
481 @ini_set( 'max_execution_time', '900' );
482
483 // counters
484 $count_postscreated = 0;
485 $count_userscreated = 0;
486 $count_commentscreated = 0;
487 $count_trackbackscreated = 0;
488
489 // get POSTed data
490 param( 'import_mode', 'string', true );
491
492 if( $import_mode != 'expert' )
493 {
494 param( 'default_blog', 'integer', true );
495 }
496
497 import_data_extract_authors_cats();
498
499 {{{ // map categories
500 /**
501 * associative array that maps MT cats to b2evo.
502 * key is the MT category name.
503 * values:
504 * holds type and value:
505 * types:
506 * - 'blogid': blog_id, new name
507 * - 'catid': cat_id
508 * - 'defaultset': -
509 * - 'ignore': -
510 */
511 $catsmapped = array();
512
513 $i_cat = -1;
514 // category mapping
515 if( !isset($_POST['catmap_select']) )
516 { // no category mapping
517 foreach( $categories as $cat )
518 {
519 $catsmapped[ $cat ] = array('blogid', $default_blog, $cat );
520 }
521 }
522 else foreach( $_POST['catmap_select'] as $cat )
523 {
524 $i_cat++;
525 if( $cat == '#IGNORE#' )
526 {
527 $catsmapped[ $categories[$i_cat] ] = array( 'ignore' );
528 }
529 elseif( $cat == '#DEFAULTSET#' )
530 {
531 if( !isset( $default_post_category ) )
532 { // get the default category set
533 if( isset($_POST['post_category']) )
534 {
535 $default_post_category = (int)$_POST['post_category'];
536 }
537 else
538 {
539 dieerror( 'You have chosen to map at least one category to the default category set, but you have not selected a main category for this set!<br />Please go back and correct that..' );
540 }
541 $default_post_extracats = array();
542 if( isset( $_POST['post_extracats'] ) )
543 { // get extra cats
544 foreach( $_POST['post_extracats'] as $tcat )
545 {
546 $default_post_extracats[] = (int)$tcat;
547 }
548 }
549 }
550 $catsmapped[ $categories[$i_cat] ] = array( 'defaultset' );
551 }
552 elseif( preg_match( '/^\d+$/', $cat, $match ) )
553 { // we map to a b2evo cat
554 $catsmapped[ $categories[$i_cat] ] = array('catid', (int)$cat);
555 }
556 elseif( $cat == '#DEFAULTBLOG#'
557 || preg_match( '/^#NEW#(\d+)$/', $cat, $match ) )
558 { // we want a new category
559 $blog_id = ($cat == '#DEFAULTBLOG#') ? $default_blog : $match[1];
560 // remember the name to create it when posts get inserted
561 // fp>dh: please use param() instead of $_POST[] (everywhere)
562 $catsmapped[ $categories[$i_cat] ] = array( 'blogid', $blog_id, remove_magic_quotes( $_POST['catmap_name'][$i_cat]) );
563 }
564 else
565 {
566 dieerror('This should never happen @catmapping. Please report it! (cat='.$cat.' / ');
567 }
568
569 }
570
571 foreach( $catsmapped as $mtcat => $values ) if( $values[0] == 'blogid' )
572 {
573 echo 'Category <span style="color:#09c">'.$values[2].'</span> (for blog #'.$values[1].') ';
574 // check if it already exists
575 $cat_ID = $DB->get_var("SELECT cat_ID FROM T_categories
576 WHERE cat_blog_ID = {$values[1]}
577 AND cat_name = ".$DB->quote( $values[2] ));
578 if( !$cat_ID )
579 {
580 echo 'will be created with first post.<br />';
581 }
582 else
583 {
584 echo 'already exists.<br />';
585 $catsmapped[ $mtcat ] = array('catid', (int)$cat_ID); // map to existing category
586 }
587
588 }
589
590 debug_dump( $catsmapped, 'catsmapped' );
591 }}}
592
593
594
595 // get renderers
596 if( $import_mode != 'easy' )
597 {
598 $default_renderers = array();
599 if( !isset($_POST['renderers']) )
600 { // all unchecked
601 $default_renderers = array();
602 }
603 else $default_renderers = $_POST['renderers'];
604
605 // the special Auto-P renderer
606 param( 'autop', 'string', true );
607 if( $autop === '1' )
608 { // use always
609 $default_renderers[] = 'b2WPAutP';
610 }
611 }
612 else
613 {
614 global $Plugins;
615 $default_renderers = $Plugins->validate_renderer_list( array('default') );
616 $autop = 1;
617 }
618
619
620 /*
621 // get image s&r
622 $urlsearch = array();
623 $urlreplace = array();
624 $i = 0;
625 foreach( $_POST['url_replace'] as $replace )
626 {
627 if( !empty($replace) )
628 {
629 $urlsearch[] = remove_magic_quotes($_POST['url_search'][$i]);
630 $urlreplace[] = remove_magic_quotes( $replace );
631 }
632 $i++;
633 }
634 */
635
636 // get users
637 $i_user = 0;
638 if( !isset($_POST['user_select']) )
639 {
640 foreach( $authors as $author )
641 {
642 $usersmapped[ $author ] = array('createnew', $author );
643 }
644
645 }
646 else foreach( $_POST['user_select'] as $select )
647 {
648 $mtauthor = $authors[ $i_user ];
649
650 if( $select == '#IGNORE#' )
651 {
652 $usersmapped[ $mtauthor ] = array( 'ignore' );
653 }
654 elseif( $select == '#CREATENEW#' )
655 {
656 $usersmapped[ $mtauthor ] = array( 'createnew', remove_magic_quotes( $_POST['user_name'][$i_user] ) );
657 }
658 elseif( preg_match( '#\d+#', $select, $match ) )
659 {
660 $usersmapped[ $mtauthor ] = array( 'b2evo', $select );
661 }
662 else
663 {
664 ?><p class="error">Unknown user mapping. This should never ever happen. Please report it.</p><?php
665 }
666 $i_user++;
667 }
668 debug_dump( $usersmapped, 'usersmapped' );
669
670
671 if( $simulate )
672 {
673 $simulate_cat_id = $DB->get_var( 'SELECT MAX( cat_ID )+1 FROM T_categories' );
674 }
675
676 $i = -1;
677 echo "\n<ol>";
678 foreach ($posts as $post)
679 {
680 ++$i;
681
682 // Defaults:
683 $post_catids = array();
684 $post_renderers = $default_renderers;
685 $post_status = 'published';
686
687 // strip the post's last '--------'
688 // "MT export files use 8 dashes to delimit entires (not 5, which delimit entry's sections)."
689 $post = preg_replace("|--------\n+$|s", '', $post);
690
691 // first line is author of post
692 $post_author = trim( substr( $post, 0, strpos( $post, "\n", 1 ) ) );
693 $post = preg_replace( '/^.*\n/', '', $post );
694 $message = "\n<li>Post from ".format_to_output( $post_author, 'entityencoded' ).' <ul>';
695
696 // Take the pings out first
697 preg_match("|(-----\n\nPING:.*)|s", $post, $pings);
698 $post = preg_replace("|(-----\n\nPING:.*)|s", '', $post);
699
700 // Then take the comments out
701 preg_match("|(-----\nCOMMENT:.*)|s", $post, $comments);
702 $post = preg_replace("|(-----\nCOMMENT:.*)|s", '', $post);
703
704 // We ignore the keywords
705 $post = preg_replace("|(-----\nKEYWORDS:.*)|s", '', $post);
706
707 // We want the excerpt - it's put with more and noteaser tag into main body, only if we have no extended body!
708 preg_match("|-----\nEXCERPT:(.*)|s", $post, $excerpt);
709 $excerpt = trim($excerpt[1]);
710 $post = preg_replace("|(-----\nEXCERPT:.*)|s", '', $post);
711
712 // We're going to put extended body into main body with a more tag
713 preg_match("|-----\nEXTENDED BODY:(.*)|s", $post, $extended);
714 $extended = trim($extended[1]);
715 $post = preg_replace("|(-----\nEXTENDED BODY:.*)|s", '', $post);
716
717 // Now for the main body
718 preg_match("|-----\nBODY:(.*)|s", $post, $body);
719 $body = trim($body[1]);
720 if( empty($extended) )
721 { // no extended body, so we can use the excerpt
722 if( empty($excerpt) )
723 $post_content = $body;
724 else $post_content = $excerpt."\n<!--more--><!--noteaser-->\n".$body;
725 }
726 else
727 { // we'll use body and extended body
728 if( !empty($excerpt) )
729 {
730 $message .= '<li><span style="color:red">Excerpt discarded because of existing extended body:</span>
731 <blockquote>'.htmlspecialchars($excerpt).'</blockquote></li>';
732 }
733 $post_content = $body."\n<!--more-->\n".$extended;
734 }
735
736 $post = preg_replace("|(-----\nBODY:.*)|s", '', $post);
737
738
739 // Grab the metadata from what's left
740 $metadata = explode("\n", $post);
741
742 $post_categories = array();
743 foreach ($metadata as $line) if( !empty($line) )
744 {
745 debug_dump($line);
746
747 if( !preg_match("/^(.*?):(.*)/", $line, $token) )
748 {
749 $message .= "<li class=\"notes\">Unknown meta-data: [$line] (ignoring)</li>";
750 continue;
751 }
752 $key = trim( $token[1] );
753 $value = trim( $token[2] );
754
755 // Now we decide what it is and what to do with it
756 switch($key)
757 {
758 case 'TITLE':
759 $message .= '<li>title: '.strip_tags($value).'</li>';
760 $post_title = $value;
761 break;
762 case 'STATUS':
763 if( strtolower($value) == 'publish' )
764 $post_status = 'published';
765 elseif( strtolower($value) == 'draft' )
766 $post_status = 'draft';
767 else
768 {
769 $message .= '<li>Unknown post status ['.$value.'], using "draft".</li>';
770 $post_status = 'draft';
771 }
772 break;
773 case 'ALLOW COMMENTS':
774 $post_allow_comments = $value;
775 switch( $post_allow_comments ) {
776 case 0: $comment_status = 'disabled'; break;
777 case 1: $comment_status = 'open'; break;
778 case 2: $comment_status = 'closed'; break;
779 default:
780 $message .= '<li>Unknown comment status ['.$value.'], using "closed".</li>';
781 $comment_status = 'closed';
782 }
783 break;
784 case 'CONVERT BREAKS':
785 if( $value == '__default__' || empty($value) )
786 {
787 $post_convert_breaks = $default_convert_breaks;
788 }
789 elseif( $value == 'textile_2' && array_search( 'b2DATxtl', $post_renderers ) === false )
790 { // add the textile 2 renderer to the post's renderers
791 $post_renderers[] = 'b2DATxtl';
792 $post_convert_breaks = 1; // TODO: check if this makes sense!
793 }
794 elseif( preg_match('/\d+/', $value) )
795 {
796 $post_convert_breaks = (int)( $value > 0 );
797 }
798 else
799 {
800 $message .= '<li>Unknown CONVERT BREAKS value, using default ('.$default_convert_breaks.')..</li>';
801 $post_convert_breaks = $default_convert_breaks;
802 }
803
804 if( $autop == 'depends' && $post_convert_breaks && array_search( 'b2WPAutP', $post_renderers ) === false )
805 { // add the Auto-P renderer
806 $post_renderers[] = 'b2WPAutP';
807 }
808
809 break;
810 case 'ALLOW PINGS':
811 if( $value == 1)
812 {
813 $post_allow_pings = 'open';
814 }
815 else
816 {
817 $post_allow_pings = 'closed';
818 }
819 break;
820 case 'PRIMARY CATEGORY':
821 case 'CATEGORY':
822 if( !empty($value) && !isset($post_categories[$value]) )
823 {
824 if( $catsmapped[ $value ][0] == 'defaultset' )
825 { // we add default set
826 $post_categories[$value] = $default_post_extracats;
827 array_unshift( $post_categories[$value], 'catid', $default_post_category );
828 }
829 else $post_categories[$value] = $catsmapped[ $value ];
830 }
831 break;
832 case 'DATE':
833 $post_date = strtotime( $value );
834 $post_date = date('Y-m-d H:i:s', $post_date);
835 break;
836 default:
837 $message .= "\n<li>Unknown key [$key] in metadata:\nvalue: $value\n</li>";
838 break;
839 }
840 } // End foreach (metadata)
841
842 $dontimport = 0;
843
844
845 if( empty($post_categories) )
846 { // no category metadata found!
847
848 if( $catsmapped[ '[no category assigned]' ][0] == 'defaultset' )
849 { // we must convert default set
850 $post_categories['[no category assigned]'] = $default_post_extracats;
851 array_unshift( $post_categories['[no category assigned]'], 'catid', $default_post_category );
852 }
853 else $post_categories[ '[no category assigned]' ] = $catsmapped[ '[no category assigned]' ];
854
855 }
856
857 // Let's check to see if it's in already
858 if( $post_ID = $DB->get_var( "SELECT post_ID
859 FROM T_items__item
860 WHERE post_title = ".$DB->quote($post_title)."
861 AND post_datestart = '$post_date'"))
862 {
863 $message .= '<li style="color:blue">Post already imported.</li>';
864 }
865 else
866 { // insert post
867
868 // check&map author
869 switch( $usersmapped[ $post_author ][0] )
870 {
871 case 'ignore':
872 $message .= '<li style="color:blue">User ignored!</li>';
873 echo $message.'</ul>';
874 continue; // next post
875
876 case 'b2evo':
877 $item_Author = & $UserCache->get_by_login( $usersmapped[ $post_author ][1] );
878 break;
879
880 case 'createnew':
881 // check if the user already exists
882 $UserCache = & get_Cache( 'UserCache' );
883 $item_Author = & $UserCache->get_by_login( $usersmapped[ $post_author ][1] );
884
885 if( ! $item_Author )
886 {
887 $item_Author = new User();
888 $item_Author->set('login', strtolower($usersmapped[ $post_author ][1]));
889 $item_Author->set('nickname', $usersmapped[ $post_author ][1]);
890 $item_Author->set('pass', md5( $default_password ));
891 $item_Author->set('level', $default_userlevel);
892 $item_Author->set('email', '');
893 $GroupCache = & get_Cache( 'GroupCache' );
894 $item_Author_Group = & $GroupCache->get_by_ID( $default_usergroup );
895 $item_Author->set_Group( $item_Author_Group );
896
897 if( !$simulate )
898 {
899 $item_Author->dbinsert();
900 }
901
902 // This is a bad hack, because add() would need an ID (which we don't have when simulating)
903 $UserCache->cache_login[ $item_Author->login ] = & $item_Author;
904
905 $message .= '<li style="color:orange">user '.$item_Author->login.' created</li>';
906 $count_userscreated++;
907 }
908 break;
909 default:
910 $message .= '<li style="color:red">unknown type in checkauthor ('.$usersmapped[ $author ][0].'). This should never ever happen. Post ignored. Please report it.</li>';
911 echo $message.'</ul>';
912 continue; // next post
913 }
914
915
916 debug_dump( $post_categories, 'cats to check' );
917
918 // Check categories
919 $i_cat = -1;
920 $message_ignored = '';
921 foreach( $post_categories as $catname => $checkcat )
922 {
923 $i_cat++;
924 switch( $checkcat[0] )
925 {
926 case 'catid': // existing b2evo catids
927 array_shift($checkcat);
928 while( $cat_id = array_shift($checkcat) )
929 $post_catids[] = $cat_id; // get all catids
930 continue;
931
932 case 'ignore': // category is ignored
933 if( $i_cat == 0 )
934 { // main category ignored, don't import post
935 $dontimport = 1;
936 $message_ignored .= '<li>Main Category &quot;'.$catname.'&quot; ignored! - no import</li>';
937 break;
938 }
939 else
940 { // ignored category in extracats, remove it there
941 $message_ignored .= '<li>Extra category '.$catname.' ignored.</li>';
942 unset( $post_categories[ $catname ] );
943 }
944 break;
945
946 case 'blogid': // category has to be created
947 // create it and remember ID
948 if( $simulate )
949 {
950 $cat_id = ++$simulate_cat_id;
951 }
952 else
953 {
954 $cat_id = cat_create( $checkcat[2], 'NULL', $checkcat[1] );
955 }
956 $catsmapped[ $catname ] = array( 'catid', $cat_id ); // use ID from now on.
957
958 if( !isset($cache_categories[ $cat_id ] ) )
959 { // stupid workaround because of a bug where cache_categories does not get updated and we want to use get_catname later
960 $cache_categories[ $cat_id ] = array(
961 'cat_name' => $checkcat[2],
962 'cat_blog_ID' => $checkcat[1],
963 'cat_parent_ID' => NULL,
964 'cat_postcount' => 0,
965 'cat_children' => 0
966 );
967 }
968 $post_catids[] = $cat_id;
969 $message .= '<li style="color:orange">category '.$checkcat[2].' [ID '.$cat_id.'] created</li>';
970 break;
971
972 default:
973 $message .= '<li style="color:red">This should never ever happen @check_cats. Please report it! (checkcat[0]: '.$checkcat[0].')</li>';
974
975 }
976 }
977 if( !empty($message_ignored) )
978 $message .= '<li style="color:blue">Categories ignored: <ul>'.$message_ignored.'</ul></li>';
979
980 debug_dump( $dontimport, 'dontimport' );
981 if( $dontimport )
982 { // see var name :)
983 echo $message;
984 continue; // next post
985 }
986
987 if( $convert_html_tags )
988 {
989 $old_content = $post_content;
990 // convert tags to lowercase
991 $post_content = stripslashes( preg_replace( "¤(</?)(\w+)([^>]*>)¤e", "'\\1'.strtolower('\\2').'\\3'", $post_content ) );
992
993 // close br, hr and img tags
994 $post_content = preg_replace( array('¤<(br)>¤', '¤<(hr\s?.*?)>¤', '¤<(img\s.*?)>¤'), '<\\1 />', $post_content );
995
996
997 // add quotes for href tags that don't have them
998 $post_content = preg_replace( '¤href=([^"\'][^\s>"\']+)["\']?¤', 'href="$1"', $post_content );
999
1000 if( $post_content != $old_content )
1001 {
1002 $message .= '<li><p style="color:darkblue;border:1px dashed orange;">'.htmlspecialchars($old_content).'</p>
1003 html-converted to: <p style="color:darkblue;border:1px dashed orange;">'.htmlspecialchars($post_content).'</p></li>';
1004 }
1005 }
1006
1007 /*if( count($urlreplace) )
1008 {
1009 $old_content = $post_content;
1010 foreach( $urlreplace as $search => $replace )
1011 {
1012 $post_content = str_replace( $urlsearch, $urlreplace, $post_content );
1013 }
1014 if( $post_content != $old_content )
1015 {
1016 echo '<p style="color:darkblue;border:1px dashed orange;">'.htmlspecialchars($old_content).'</p>
1017 converted img-links to: <p style="color:darkblue;border:1px dashed orange;">'.htmlspecialchars($post_content).'</p>';
1018 }
1019 }*/
1020
1021 debug_dump( $post_catids, 'post_extracats' );
1022 $post_category = array_shift($post_catids);
1023 debug_dump( $post_category, 'post_category' );
1024 debug_dump( $post_categories, 'post_categories' );
1025 debug_dump( $post_author, 'post_author' );
1026 debug_dump( isset($item_Author->ID) ? $item_Author->ID : 'NULL (simulating)', 'item_Author->ID' );
1027
1028 if( !$simulate )
1029 {
1030 $edited_Item = & new Item();
1031 $edited_Item->set_creator_User($item_Author);
1032 $edited_Item->set('title', $post_title);
1033 $edited_Item->set('content', $post_content);
1034 $edited_Item->set('datestart', $post_date);
1035 $edited_Item->set('main_cat_ID', $post_category);
1036 $edited_Item->set('extra_cat_IDs', $post_catids);
1037 $edited_Item->set('status', $post_status);
1038 $edited_Item->set('locale', $post_locale);
1039 $edited_Item->set('notifications_status', 'finished');
1040 $edited_Item->set('comment_status', $comment_status);
1041 $edited_Item->set_renderers($post_renderers);
1042 $edited_Item->dbinsert();
1043 $post_ID = $edited_Item->ID;
1044 }
1045
1046 $message .= '<li><span style="color:green">Imported successfully</span><ul><li>main category: <span style="color:#09c">'.get_catname( $post_category ).'</span></li>';
1047 if( count($post_catids) )
1048 $message .= '<li>extra categories: <span style="color:#09c">'.preg_replace( '/(\d+)/e', "get_catname('\\1')", implode( ', ', $post_catids ) ).'</span></li>';
1049 $message .= '</ul></li>';
1050 $count_postscreated++;
1051
1052 }
1053 echo $message.'</ul>';
1054
1055
1056 if( count($comments) )
1057 { // comments
1058 $message = '';
1059
1060 $comments = explode("-----\nCOMMENT:", $comments[0]);
1061 foreach ($comments as $comment)
1062 {
1063 $comment = trim($comment);
1064 if( empty($comment) ) continue;
1065
1066 $comment_author = ripline( 'AUTHOR:', $comment );
1067 $comment_email = ripline( 'EMAIL:', $comment );
1068 $comment_ip = ripline( 'IP:', $comment );
1069 $comment_url = ripline( 'URL:', $comment );
1070 $comment_date = date('Y-m-d H:i:s', strtotime( ripline( 'DATE:', $comment )));
1071
1072 $comment_content = preg_replace("/\n*-----$/", '', $comment);
1073
1074 // Check if it's already in there
1075 if( !$DB->get_row("SELECT * FROM T_comments WHERE comment_date = '$comment_date' AND comment_content = ".$DB->quote( $comment_content )) )
1076 {
1077 if( !$simulate )
1078 {
1079 $DB->query( "INSERT INTO T_comments( comment_post_ID, comment_type, comment_author_ID, comment_author,
1080 comment_author_email, comment_author_url, comment_author_IP,
1081 comment_date, comment_content)
1082 VALUES( $post_ID, 'comment', NULL, ".$DB->quote($comment_author).",
1083 ".$DB->quote($comment_email).", ".$DB->quote($comment_url).",
1084 ".$DB->quote($comment_ip).", '$comment_date', ".$DB->quote($comment_content)." )" );
1085 }
1086
1087 $message .= '<li>Comment from '.$comment_author.' added.</li>';
1088 $count_commentscreated++;
1089 }
1090 }
1091 if( !empty($message) )
1092 {
1093 echo '<ul>'.$message.'</ul>';
1094 }
1095
1096 }
1097
1098 // Finally the pings
1099 // fix the double newline on the first one
1100 if( count($pings) )
1101 {
1102 $message = '';
1103 $pings[0] = str_replace("-----\n\n", "-----\n", $pings[0]);
1104 $pings = explode("-----\nPING:", $pings[0]);
1105 foreach( $pings as $ping )
1106 {
1107 $ping = trim($ping);
1108 if( empty($ping) ) continue;
1109
1110 $comment_author = ripline( 'BLOG NAME:', $ping );
1111 $comment_email = '';
1112 $comment_ip = ripline( 'IP:', $ping );
1113 $comment_url = ripline( 'URL:', $ping );
1114 $comment_date = date('Y-m-d H:i:s', strtotime( ripline( 'DATE:', $ping )));
1115 $ping_title = ripline( 'TITLE:', $ping );
1116
1117 $comment_content = preg_replace("/\n*-----$/", '', $ping);
1118
1119 $comment_content = "<strong>$ping_title</strong><br />$comment_content";
1120
1121 // Check if it's already there
1122 if (!$DB->get_row("SELECT * FROM T_comments WHERE comment_date = '$comment_date' AND comment_type = 'trackback' AND comment_content = ".$DB->quote($comment_content)))
1123 {
1124 if( !$simulate )
1125 {
1126 $DB->query( "INSERT INTO T_comments
1127 (comment_post_ID, comment_type, comment_author, comment_author_email, comment_author_url,
1128 comment_author_IP, comment_date, comment_content )
1129 VALUES
1130 ($post_ID, 'trackback', ".$DB->quote($comment_author).", ".$DB->quote($comment_email).", ".$DB->quote($comment_url).",
1131 ".$DB->quote($comment_ip).", ".$DB->quote($comment_date).", ".$DB->quote($comment_content)." )" );
1132 }
1133 $message .= '<li>Trackback from '.$comment_url.' added.</li>';
1134 $count_trackbackscreated++;
1135 }
1136 }
1137 echo $message;
1138 }
1139
1140 echo "</li>\n";
1141 flush();
1142 }
1143 ?>
1144 </ol>
1145 <h4>All done.<?php if( $simulate ) echo ' (simulated - no real import!)' ?></h4>
1146 <ul>
1147 <li><?php echo $count_postscreated ?> post(s) imported.</li>
1148 <li><?php echo $count_userscreated ?> user(s) created.</li>
1149 <li><?php echo $count_commentscreated ?> comment(s) imported.</li>
1150 <li><?php echo $count_trackbackscreated ?> trackback(s) imported.</li>
1151 <li>in <?php echo $Timer->get_duration('import_main') ?> seconds.</li>
1152 </ul>
1153 <?php
1154 if( $simulate )
1155 {
1156 echo '
1157 <form action="'.$dispatcher.'" method="post">
1158 <input type="hidden" name="ctrl" value="mtimport" />
1159 <p>
1160 <strong>This was only simulated..</strong>
1161 ';
1162 foreach( $_POST as $key => $value )
1163 {
1164 if( $key != 'simulate' )
1165 {
1166 if( is_array( $value ) )
1167 {
1168 foreach( $value as $key2 => $value2 )
1169 {
1170 echo '<input type="hidden" name="'.$key.'['.$key2.']" value="'.format_to_output( $value2, 'formvalue' ).'" />';
1171 }
1172 }
1173 else
1174 {
1175 echo '<input type="hidden" name="'.$key.'" value="'.format_to_output( $value, 'formvalue' ).'" />';
1176 }
1177 }
1178 }
1179 echo '<input type="submit" value="Do it for real now!" /></p></form>'."\n";
1180 }
1181 ?>
1182 <p>
1183 <a href="<?php echo $baseurl ?>">Have fun in your blogs</a> or <a href="<?php echo $admin_url ?>">go to admin</a> (it's fun there, too)
1184 </p>
1185 <?php
1186 if( $count_userscreated )
1187 {
1188 echo '<p class="note">Please note that the new users being created are not member of any blog yet. You\'ll have to setup this in the <a href="'.$admin_url.'?ctrl=collections">blogs admin</a>.</p>';
1189 }
1190 ?>
1191 </div>
1192 <?php
1193 }
1194
1195?>
1196<div class="panelinfo">
1197 <p>
1198 Feel free to <a href="http://thequod.de/contact">contact me</a> in case of suggestions, bugs and lack of clarity.
1199 Of course, you're also welcome to <a href="https://sourceforge.net/donate/index.php?user_id=663176">donate to me</a>.. :)
1200 </p>
1201</div>
1202<div class="clear">
1203<?php if( $output_debug_dump ) $DB->dump_queries() ?>
1204</div>
1205</div>
1206</body>
1207</html>
1208<?php
1209
1210/* ------ FUNCTIONS ------ */
1211
1212/**
1213 * @todo fp> this needs to be deprecated
1214 * @todo fp> get rid of the $cache_blogs crap and use $BlogCache only
1215 */
1216function blog_load_cache()
1217{
1218 global $DB, $cache_blogs;
1219 if( empty($cache_blogs) )
1220 {
1221 $BlogCache = & get_Cache('BlogCache');
1222 $cache_blogs = array();
1223
1224 foreach( $DB->get_results( "SELECT * FROM T_blogs ORDER BY blog_ID", OBJECT, 'blog_load_cache()' ) as $this_blog )
1225 {
1226 $cache_blogs[$this_blog->blog_ID] = $this_blog;
1227
1228 // Add it to BlogCache, so it does not need to load it also again:
1229 // NOTE: dh> it may be bad to instantiate all objects, but there's no shadow_cache for rows..
1230 $BlogCache->instantiate($this_blog);
1231 //echo 'just cached:'.$cache_blogs[$this_blog->blog_ID]->blog_name.'('.$this_blog->blog_ID.')<br />';
1232 }
1233 $BlogCache->all_loaded = true;
1234 }
1235}
1236
1237
1238/**
1239 * Get name for a given cat ID.
1240 *
1241 * @return string Cat name in case of success, false on failure.
1242 */
1243function get_catname($cat_ID)
1244{
1245 $ChapterCache = & get_Cache('ChapterCache');
1246 $Chapter = & $ChapterCache->get_by_ID($cat_ID);
1247 return $Chapter->name;
1248}
1249
1250
1251function fieldset_cats()
1252{
1253 global $cache_blogs, $cache_categories;
1254
1255 ?>
1256 <fieldset title="default categories set" style="background-color:#fafafa; border:1px solid #ccc; padding: 1em; display:inline; float:right; white-space:nowrap;">
1257 <legend>Default categories set (only needed if you want to map categories to this)</legend>
1258 <p class="extracatnote">
1259 <?php
1260 if( count( $cache_categories ) )
1261 {
1262 echo T_('Select main category in target blog and optionally check additional categories').':';
1263 }
1264 else
1265 {
1266 echo 'No categories in your blogs..';
1267 }
1268 ?>
1269 </p>
1270
1271 <?php
1272 // ---------------------------- CATEGORIES ------------------------------
1273 $default_main_cat = 0;
1274 $blog = 1;
1275
1276 // ----------------- START RECURSIVE CAT LIST ----------------
1277 cat_load_cache(); // make sure the caches are loaded
1278 function import_cat_select_before_first( $parent_cat_ID, $level )
1279 { // callback to start sublist
1280 echo "\n<ul>\n";
1281 }
1282
1283 function import_cat_select_before_each( $cat_ID, $level )
1284 { // callback to display sublist element
1285 global $current_blog_ID, $blog, $cat, $postdata, $default_main_cat, $action, $tabindex, $allow_cross_posting;
1286 echo '<li>';
1287
1288 if( $allow_cross_posting )
1289 { // We allow cross posting, display checkbox:
1290 echo'<input type="checkbox" name="post_extracats[]" class="checkbox" title="', T_('Select as an additionnal category') , '" value="',$cat_ID,'"';
1291 echo ' />';
1292 }
1293
1294 // Radio for main cat:
1295 if( $current_blog_ID == $blog )
1296 {
1297 if( ($default_main_cat == 0) && ($action == 'post') )
1298 { // Assign default cat for new post
1299 $default_main_cat = $cat_ID;
1300 }
1301 echo ' <input type="radio" name="post_category" class="checkbox" title="', T_('Select as MAIN category'), '" value="',$cat_ID,'"';
1302 if( ($cat_ID == $postdata["Category"]) || ($cat_ID == $default_main_cat))
1303 echo ' checked="checked"';
1304 echo ' />';
1305 }
1306 echo ' '.htmlspecialchars(get_catname($cat_ID));
1307 }
1308
1309 function import_cat_select_after_each( $cat_ID, $level )
1310 { // callback after each sublist element
1311 echo "</li>\n";
1312 }
1313
1314 function import_cat_select_after_last( $parent_cat_ID, $level )
1315 { // callback to end sublist
1316 echo "</ul>\n";
1317 }
1318
1319 // go through all blogs with cats:
1320 foreach( $cache_blogs as $i_blog )
1321 { // run recursively through the cats
1322 $current_blog_ID = $i_blog->blog_ID;
1323 if( ! blog_has_cats( $current_blog_ID ) ) continue;
1324 #if( ! $current_User->check_perm( 'blog_post_statuses', 'any', false, $current_blog_ID ) ) continue;
1325 echo "<h4>".$i_blog->blog_name."</h4>\n";
1326 cat_children( $cache_categories, $current_blog_ID, NULL, 'import_cat_select_before_first',
1327 'import_cat_select_before_each', 'import_cat_select_after_each', 'import_cat_select_after_last', 1 );
1328 }
1329 // ----------------- END RECURSIVE CAT LIST ----------------
1330 ?>
1331 </fieldset>
1332<?php
1333}
1334
1335
1336/*
1337 -- Category options list --
1338*/
1339function cats_optionslist( $forcat )
1340{
1341 global $cache_categories, $cache_blogs, $cache_optionslist;
1342
1343 if( !isset($cache_optionslist) )
1344 {
1345 $cache_optionslist = '';
1346 foreach( $cache_blogs as $i_blog )
1347 {
1348 $cache_optionslist .= '<option value="#NEW#'.$i_blog->blog_ID.'">[-- create in blog '.$i_blog->blog_shortname.' --]:</option>';
1349 cat_children2( $cache_categories, $i_blog->blog_ID, NULL, 1 );
1350 }
1351 }
1352
1353 $cat_id = false;
1354 foreach( $cache_categories as $key => $value )
1355 {
1356 if( $value['cat_name'] == $forcat )
1357 {
1358 $cat_id = $key;
1359 break;
1360 }
1361 }
1362
1363 if( is_int($cat_id) )
1364 {
1365 echo str_replace( '<option value="'.$cat_id.'">', '<option value="'.$cat_id.'" selected="selected">', $cache_optionslist );
1366 }
1367 else
1368 {
1369 echo $cache_optionslist;
1370 }
1371}
1372
1373function cat_children2(
1374 $ccats, // PHP requires this stupid cloning of the cache_categories array in order to be able to perform foreach on it
1375 $blog_ID,
1376 $parent_ID,
1377 $level = 0 ) // Caller nesting level, just to keep track of how far we go :)
1378{
1379 global $cache_optionslist;
1380
1381 // echo 'Number of cats=', count($ccats);
1382 if( ! empty( $ccats ) ) // this can happen if there are no cats at all!
1383 {
1384 $child_count = 0;
1385 foreach( $ccats as $icat_ID => $i_cat )
1386 {
1387 // fp> TODO: check what ($blog_ID == 0) is for .. ?
1388 if( $icat_ID
1389 && ( ($blog_ID == 0) || ($i_cat['cat_blog_ID'] == $blog_ID))
1390 && ($i_cat['cat_parent_ID'] == $parent_ID) )
1391 { // this cat is in the blog and is a child of the parent
1392 $child_count++;
1393
1394 $cache_optionslist .= '<option value="'.$icat_ID.'">';
1395
1396 for( $i = 0; $i < $level; $i++ )
1397 {
1398 $cache_optionslist .= '-';
1399 }
1400
1401 $cache_optionslist .= '&gt; '.format_to_output( $ccats[ $icat_ID ]['cat_name'], 'entityencoded' ).'</option>';
1402
1403 cat_children2( $ccats, $blog_ID, $icat_ID, $level+1 );
1404 }
1405 }
1406 }
1407}
1408
1409
1410/**
1411 * extracts unique authors and cats from posts array
1412 */
1413function import_data_extract_authors_cats()
1414{
1415 global $authors, $categories, $posts;
1416 global $exportedfile;
1417 global $categories_countprim;
1418 global $importdata;
1419 global $import_mode;
1420 global $dispatcher;
1421
1422 $fp = fopen( $exportedfile, 'rb');
1423//slamp_080609_begin: to avoid warning when importing file with 0 bytes of data
1424// $buffer = fread($fp, filesize( $exportedfile ));
1425 $buffer = '';
1426 $length = filesize($exportedfile);
1427 if($length)
1428 {
1429 $buffer = fread($fp, $length);
1430 }
1431//slamp_080609_end
1432 fclose($fp);
1433 if( !preg_match( '/^[-\s]*AUTHOR: /', $buffer ) )
1434 {
1435 dieerror("The file [$exportedfile] does not seem to be a MT exported file.. ".'[<a href="'.$dispatcher.'?ctrl=mtimport&amp;import_mode='.$import_mode.'">choose another export-file</a>]');
1436 }
1437
1438 $importdata = preg_replace( "/\r?\n|\r/", "\n", $buffer );
1439 $posts = preg_split( '/(^|--------\n)(AUTHOR: |$)/', $importdata );
1440
1441 $authors = array(); $tempauthors = array();
1442 $categories = array(); $tempcategories = array();
1443
1444 foreach ($posts as $nr => $post)
1445 {
1446 if ('' != trim($post))
1447 {
1448 // first line is author of post
1449 $tempauthors[] = trim( substr( $post, 0, strpos( $post, "\n", 1 ) ) );
1450
1451 $oldcatcount = count( $tempcategories );
1452
1453 if( preg_match_all( "/^(PRIMARY )?CATEGORY: (.*)/m", $post, $matches ) )
1454 {
1455 for( $i = 1; $i < count( $matches[2] ); $i++ )
1456 {
1457 $cat = trim( $matches[2][$i] );
1458 if( !empty( $cat ) ) $tempcategories[] = $cat;
1459 }
1460
1461 // main category last (-> counter)
1462 if( !empty($matches[2][0]) ) $tempcategories[] = $matches[2][0];
1463 }
1464
1465 if( $oldcatcount == count( $tempcategories ) )
1466 {
1467 $tempcategories[] = '[no category assigned]';
1468 }
1469
1470 // remember how many times used as primary category
1471 @$categories_countprim[ $tempcategories[ count( $tempcategories )-1 ] ]++;
1472 }
1473 else
1474 {
1475 unset( $posts[ $nr ] );
1476 }
1477 }
1478
1479 // we need to find unique values of author names, while preserving the order, so this function emulates the unique_value(); php function, without the sorting.
1480 $authors[0] = array_shift($tempauthors);
1481 $y = count($tempauthors) + 1;
1482 for ($x = 1; $x < $y; $x++)
1483 {
1484 $next = array_shift($tempauthors);
1485 if( !(in_array($next,$authors)) ) $authors[] = $next;
1486 }
1487 $categories[0] = array_shift( $tempcategories );
1488 $y = count($tempcategories) + 1;
1489 for ($x = 1; $x < $y; $x++)
1490 {
1491 $next = array_shift($tempcategories);
1492 if( !(in_array($next, $categories)) ) $categories[] = $next;
1493 }
1494}
1495
1496
1497/**
1498 * Outputs a list of available renderers (not necessarily installed).
1499 */
1500function renderer_list()
1501{
1502 global $renderers;
1503
1504 $admin_Plugins = & get_Cache('Plugins_admin'); // use Plugins_admin, because a plugin might be disabled
1505 $admin_Plugins->discover();
1506
1507 $renderers = array('default');
1508 $admin_Plugins->restart(); // make sure iterator is at start position
1509 while( $loop_RendererPlugin = & $admin_Plugins->get_next() )
1510 { // Go through whole list of renders
1511 // echo ' ',$loop_RendererPlugin->code;
1512 if( empty($loop_RendererPlugin->code) )
1513 { // No unique code!
1514 continue;
1515 }
1516 if( $loop_RendererPlugin->apply_rendering == 'stealth'
1517 || $loop_RendererPlugin->apply_rendering == 'never' )
1518 { // This is not an option.
1519 continue;
1520 }
1521 elseif( $loop_RendererPlugin->code == 'b2WPAutP' )
1522 { // special Auto-P plugin
1523 ?>
1524 <fieldset>
1525 <label for="textile" title="<?php echo format_to_output($loop_RendererPlugin->short_desc, 'formvalue'); ?>"><strong><?php echo format_to_output($loop_RendererPlugin->name) ?>:</strong></label>
1526 <div style="margin-left:2ex" />
1527 <input type="radio" name="autop" value="1" class="checkbox" checked="checked" /> yes (always)<br>
1528 <input type="radio" name="autop" value="0" class="checkbox" /> no (never)<br>
1529 <input type="radio" name="autop" value="depends" class="checkbox" /> depends on CONVERT BREAKS
1530 <span class="notes"> ..that means it will apply if convert breaks results to true (set to either 1, textile_2 or __DEFAULT__ (and &quot;Convert-breaks default&quot; checked above)</span>
1531
1532 </div>
1533 </fieldset>
1534 <?php
1535 continue;
1536 }
1537 ?>
1538 <div>
1539 <input type="checkbox" class="checkbox" name="renderers[]"
1540 value="<?php echo $loop_RendererPlugin->code ?>" id="<?php echo $loop_RendererPlugin->code ?>"
1541 <?php
1542 switch( $loop_RendererPlugin->apply_rendering )
1543 {
1544 case 'always':
1545 // echo 'FORCED';
1546 echo ' checked="checked"';
1547 echo ' disabled="disabled"';
1548 break;
1549
1550 case 'opt-out':
1551 if( in_array( $loop_RendererPlugin->code, $renderers ) // Option is activated
1552 || in_array( 'default', $renderers ) ) // OR we're asking for default renderer set
1553 {
1554 // echo 'OPT';
1555 echo ' checked="checked"';
1556 }
1557 // else echo 'NO';
1558 break;
1559
1560 case 'opt-in':
1561 if( in_array( $loop_RendererPlugin->code, $renderers ) ) // Option is activated
1562 {
1563 // echo 'OPT';
1564 echo ' checked="checked"';
1565 }
1566 // else echo 'NO';
1567 break;
1568
1569 case 'lazy':
1570 // cannot select
1571 if( in_array( $loop_RendererPlugin->code, $renderers ) ) // Option is activated
1572 {
1573 // echo 'OPT';
1574 echo ' checked="checked"';
1575 }
1576 echo ' disabled="disabled"';
1577 break;
1578 }
1579 ?>
1580 title="<?php echo format_to_output( $loop_RendererPlugin->short_desc, 'formvalue' ) ?>" />
1581 <label for="<?php echo $loop_RendererPlugin->code ?>" title="<?php echo format_to_output($loop_RendererPlugin->short_desc, 'formvalue'); ?>"><strong><?php echo format_to_output($loop_RendererPlugin->name); ?></strong></label>
1582 </div>
1583 <?php
1584 }
1585}
1586
1587
1588/**
1589 * Die with a message.
1590 *
1591 * @param string the message (wrapped in div and p tag of class error)
1592 * @param string optional head
1593 */
1594function dieerror( $message, $before = '' )
1595{
1596 if( !empty($before) )
1597 echo $before;
1598
1599 die( '<div class="error"><p class="error">'.$message.'</p></div>
1600 </div></body></html>' );
1601}
1602
1603
1604function debug_dump( $var, $title = '' )
1605{
1606 global $output_debug_dump;
1607
1608 if( $output_debug_dump )
1609 {
1610 pre_dump( $var, $title );
1611 }
1612}
1613
1614
1615function chooseexportfile()
1616{
1617 global $exportedfile, $import_mode, $dispatcher;
1618
1619 // Go through directory:
1620 $this_dir = dir( IMPORT_SRC_DIR );
1621 $r = '';
1622 while( $this_file = $this_dir->read() )
1623 {
1624 if( preg_match( '/^.+\.txt$/i', $this_file ) )
1625 {
1626 $r .= '<option value="'.format_to_output( $this_file, 'formvalue' ).'"';
1627 if( $exportedfile == $this_file ) $r .= ' selected="selected"';
1628 $r .= '>'.format_to_output( $this_file, 'entityencoded' ).'</option>';
1629 }
1630 }
1631
1632 if( $r )
1633 {
1634 ?>
1635 <form action="<?php echo $dispatcher ?>" class="center">
1636 <p>First, choose a file to import (.TXT files from the <?php echo $app_name; ?> base directory):</p>
1637 <select name="exportedfile" onChange="submit()">
1638 <?php echo $r ?>
1639 </select>
1640 <input type="hidden" name="import_mode" value="<?php echo $import_mode ?>" />
1641 <input type="hidden" name="ctrl" value="mtimport" />
1642 <input type="submit" value="Next step..." class="search" />
1643 </form>
1644 <?php
1645 }
1646 else
1647 { // no file found
1648 ?>
1649 <div class="error">
1650 <p class="center">No .TXT file found. Nothing to import...</p>
1651 <p class="center">Please copy your Movable Type .TXT export file into <?php echo rel_path_to_base(IMPORT_SRC_DIR); ?>.</p>
1652 </div>
1653 <?php
1654 }
1655}
1656
1657
1658function ripline( $prefix, &$haystack )
1659{
1660 if( preg_match( '|^'.$prefix.'(.*)|m', $haystack, $match ) )
1661 {
1662 $haystack = preg_replace('|^'.$prefix.".*\n?|m", '', $haystack );
1663 return trim( $match[1] );
1664 }
1665 else return false;
1666}
1667
1668
1669function tidypostdata( $string )
1670{
1671 return str_replace( array('&quot;', '&#039;', '&lt;', '&gt;'), array('"', "'", '<', '>'), remove_magic_quotes( $string ) );
1672}
1673
1674?>
16750
=== modified file 'inc/tools/tools.ctrl.php'
--- inc/tools/tools.ctrl.php 2009-12-21 17:27:20 +0000
+++ inc/tools/tools.ctrl.php 2010-02-18 17:25:21 +0000
@@ -106,24 +106,6 @@
106 $block_item_Widget->disp_template_raw( 'block_end' );106 $block_item_Widget->disp_template_raw( 'block_end' );
107 }107 }
108108
109
110 // fp> TODO: pluginize MT! :P
111 $block_item_Widget->title = T_('Movable Type Import');
112 $block_item_Widget->disp_template_replaced( 'block_start' );
113 ?>
114 <ol>
115 <li><?php echo T_('Use MT\'s export functionnality to create a .TXT file containing your posts.') ?></li>
116 <li><?php printf( T_('Follow the instructions in <a %s>Daniel\'s Movable Type Importer</a>.'), ' href="?ctrl=mtimport"' ) ?></li>
117 </ol>
118 <?php
119 $block_item_Widget->disp_template_raw( 'block_end' );
120
121
122 $block_item_Widget->title = T_('WordPress Import');
123 $block_item_Widget->disp_template_replaced( 'block_start' );
124 printf( '<p>'.T_('You can import contents from your WordPress 2.3 database into your '.$app_name.' database by using <a %s>Hari\'s WordPress Importer</a>.').'</p>', ' href="?ctrl=wpimport"' );
125 $block_item_Widget->disp_template_raw( 'block_end' );
126
127}109}
128elseif( $tab_Plugin )110elseif( $tab_Plugin )
129{ // Plugin tab111{ // Plugin tab
130112
=== removed file 'inc/tools/wpimport.ctrl.php'
--- inc/tools/wpimport.ctrl.php 2010-01-15 20:06:40 +0000
+++ inc/tools/wpimport.ctrl.php 1970-01-01 00:00:00 +0000
@@ -1,586 +0,0 @@
1<?php
2/**
3 * WordPress 2.3 to b2evolution 2.0 alpha converter
4 * Copyright (C) 2007 V.Harishankar.
5 *
6 * Please use this with care and at your own discretion. This script will try and import the following from
7 * WP to b2evolution:
8 * 1. posts
9 * 2. comments
10 * 3. categories
11 * 4. users
12 * This is alpha software and subject to change.
13 *
14 * @package pond
15 */
16if( !defined('QP_MAIN_INIT') ) die( 'Please, do not access this page directly.' );
17
18 // set error reporting to full in order to get useful info when something fails
19 $prevlevel = error_reporting (E_ALL);
20
21 ?>
22<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
23<html>
24
25<head>
26 <title>WP to <?php echo $app_name; ?> Converter</title>
27 <meta name="GENERATOR" content="Quanta Plus">
28 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
29</head>
30<body bgcolor="#EEEEEE" text="#000000" link="#0000FF" alink="#FF0000" vlink="#7E0089">
31 <h1>WordPress 2.3 to <?php echo $app_name; ?> importer</h1>
32 [<a href="<?php echo $dispatcher ?>?ctrl=tools">Back to <?php echo $app_name; ?></a>]
33 <p><FONT SIZE="-2">Copyright &copy; 2007 <a href="http://hari.literaryforums.org/2007/10/04/wordpress-to-b2evolution-import-script">V.Harishankar</a>. Released under the GNU GPL.</FONT></p>
34 <?php
35
36 // Check if user is logged in and is in group #1 (admins)
37 if( !is_logged_in() || $current_User->Group->ID != 1 )
38 { // login failed
39 debug_die( 'You must login with an administrator (group #1) account.' );
40 }
41
42 // The form has not yet been posted
43 if ( ! isset ( $_POST['wp_db'] ) ) { ?>
44 <P>Before running this importer, you must ensure that a proper <font color="#00CC00"><strong><em>NEW, EMPTY</em></strong></font> installation of b2evolution 2 exists! <strong><font color="#FF0000">IMPORTANT</font></strong>: This works <strong>only</strong> with WordPress 2.3 and above.</P>
45
46 <p><font color="#FF0000"><strong>Warning!!</strong> Your existing <?php echo $app_name; ?> posts, categories, tags, comments and users (except admin) will be removed if you run this script. Make sure you have a backup before you proceed.</font></p>
47
48 <FORM action="<?php echo $dispatcher ?>?ctrl=wpimport" enctype="multipart/form-data" method="POST" >
49 <h2>DB Settings</h2>
50 <table>
51 <tbody>
52 <tr>
53 <td>WordPress database name</td>
54 <td><INPUT type="text" name="wp_db"><br></td>
55 </tr>
56
57 <tr>
58 <td>WordPress table prefix</td>
59 <td><INPUT type="text" name="wp_prefix" value="wp_"><br></td>
60 </tr>
61
62 <tr>
63 <td><?php echo $app_name; ?> database</td>
64 <td><INPUT type="text" name="b2evo_db" value="<?php echo $db_config['name'] ?>"></td>
65 </tr>
66
67 <tr>
68 <td><?php echo $app_name; ?> table prefix</td>
69 <td><INPUT type="text" name="b2evo_prefix" value="<?php echo $tableprefix ?>"></td>
70 </tr>
71
72 <tr>
73 <td>Database host</td>
74 <td><INPUT type="text" name="db_host" value="<?php echo $db_config['host'] ?>"></td>
75 </tr>
76
77 <tr>
78 <td>Username</td>
79 <td><INPUT type="text" name="db_user" value="<?php echo $db_config['user'] ?>"></td>
80 </tr>
81
82 <tr>
83 <td>Password</td>
84 <td><INPUT type="password" name="db_pass" value="<?php echo $db_config['password'] ?>"></td>
85 </tr>
86
87 <tr>
88 <td>Default locale for imported posts</td>
89 <td><INPUT type="text" name="locale" value="en-US"></td>
90 </tr>
91
92 <tr>
93 <td></td>
94 <td><INPUT type="submit" value="import"></td>
95 </tr>
96 </tbody>
97 </table>
98
99 </FORM>
100 <?php // The form has been posted; do the conversion
101 }
102 else
103 {
104 // Try to obtain some serious time to do some serious processing (15 minutes)
105 @set_time_limit( 900 );
106
107 // required fields initialization
108 $wp_db = $_POST['wp_db'];
109 $evo_db = $_POST['b2evo_db'];
110 $host = $_POST['db_host'];
111 $user = $_POST['db_user'];
112 $password = $_POST['db_pass'];
113 $wp = $_POST['wp_prefix'];
114 $b2 = $_POST['b2evo_prefix'];
115 $locale = $_POST['locale'];
116
117 // establish database connection
118 $con = mysql_connect ($host, $user, $password);
119 if (! $con )
120 die ( 'Error connecting to MySQL. Please check whether the server is running and the host, username and password fields are correct!' );
121
122 // First remove existing database items in categories, users, postcats, items__item, comments, blogusers
123 $db = mysql_select_db ($evo_db, $con);
124 if (! $db)
125 die ($app_name.' database name is incorrect. Please check your '.$app_name.' installation.');
126
127 $query = 'DELETE FROM '.$b2.'categories;';
128 $flag = mysql_query ($query);
129 if (! $flag )
130 die ('Existing categories deleting failed. Cannot proceed.');
131
132 $query = 'DELETE FROM '.$b2.'items__item;';
133 $flag = mysql_query ($query);
134 if (! $flag )
135 die ('Existing posts deletion failed. Cannot proceed.');
136
137 $query = 'DELETE FROM '.$b2.'postcats;';
138 $flag = mysql_query ($query);
139 if (! $flag )
140 die ('Existing post categories deletion failed. Cannot proceed.');
141
142 $query = 'DELETE FROM '.$b2.'comments;';
143 $flag = mysql_query ($query);
144 if (! $flag )
145 die ('Existing comments deletion failed. Cannot proceed.');
146
147 $query = 'DELETE FROM '.$b2.'items__itemtag;';
148 $flag = mysql_query ($query);
149 if (! $flag )
150 die ('Existing post tags deletion failed. Cannot proceed.');
151
152 $query = 'DELETE FROM '.$b2.'items__tag;';
153 $flag = mysql_query ($query);
154 if (! $flag )
155 die ('Existing tags deletion failed. Cannot proceed.');
156
157 $query = 'DELETE FROM '.$b2.'users WHERE user_ID <> 1;';
158 $flag = mysql_query ($query);
159 if (! $flag )
160 die ('Existing users deletion failed. Cannot proceed.');
161
162 $query = 'DELETE FROM '.$b2.'blogusers WHERE bloguser_user_ID <> 1;';
163 $flag = mysql_query ($query);
164 if (! $flag )
165 die ('Existing user permissions deletion failed. Cannot proceed.');
166
167 // CATEGORIES + TAGS
168 echo '<h2>Trying to import categories and tags:</h2>';
169 $cats = array();
170 $tags = array();
171
172 // select the wordpress database
173 $db = mysql_select_db ($wp_db, $con);
174 if (! $db)
175 die ('WordPress database name is incorrect. Please check the name and try again.');
176
177 // get the list of taxonomy terms. includes categories, link cats and tags as well
178 $query = 'SELECT *
179 FROM '.$wp.'terms;' ;
180 $res = mysql_query ($query);
181 if (! $res )
182 die ('Query failed. Please check your WordPress installation.');
183
184 $i = 0;
185 while( $row = mysql_fetch_array ($res, MYSQL_ASSOC) )
186 {
187 // in order to establish whether a term is a category or not
188 $query2 = 'SELECT *
189 FROM '.$wp.'term_taxonomy
190 WHERE term_id='.$row['term_id'].';';
191 $res2 = mysql_query ($query2);
192 if (! $res2)
193 die ('Query 2 failed. Please check your WordPress installation.');
194 $row2 = mysql_fetch_array ($res2, MYSQL_ASSOC);
195
196 // if it is a category only then import. ignore tags and link categories
197 switch( $row2['taxonomy'] )
198 {
199 case 'category':
200 echo 'Reading cat: '.$row['name'].'<br>';
201 $cats[$i]['name'] = $row['name'];
202 $cats[$i]['slug'] = $row['slug'];
203 $cats[$i]['description'] = $row2['description'];
204 $cats[$i]['cat_id'] = $row2['term_taxonomy_id'];
205 $i ++;
206 break;
207
208 case 'post_tag':
209 echo 'Reading tag: '.$row['name'].'<br>';
210 $tag_id = $row2['term_taxonomy_id'];
211 $tags[$tag_id]['name'] = strtolower( $row['name'] );
212 $tags[$tag_id]['slug'] = $row['slug'];
213 $tags[$tag_id]['description'] = $row2['description'];
214 break;
215 }
216 mysql_free_result ($res2);
217 }
218 mysql_free_result ($res);
219
220 if( empty($cats) )
221 {
222 die( 'There must be at least one category!' );
223 }
224
225 // Use the first category as the default category in case we find uncategorized posts later on.
226 $default_category_ID = $cats[0]['cat_id'];
227
228 // select the evolution database
229 $db = mysql_select_db ($evo_db, $con);
230 if (! $db)
231 die ($app_name.' database name is incorrect. Please check the name and try again.');
232 foreach ($cats as $category)
233 {
234 // insert each category into the evolution database
235 $query = 'INSERT INTO '.$b2.'categories (cat_ID, cat_name, cat_urlname, cat_blog_ID, cat_description) VALUES ("'.$category['cat_id'].'", "'.$category['name'].'", "'.$category['slug'].'", "1", "'.$category['description'].'");';
236
237 $flag = mysql_query ($query);
238
239 if (! $flag )
240 die ('Category importing failed. Please check your '.$app_name.' installation.');
241 }
242 echo '<font color="#00CC00">Categories inserted successfully!</font><br>';
243
244 // INSERT TAGS:
245 foreach( $tags as $tag_id => $tag )
246 {
247 // insert each tags into the evolution database
248 $query = 'INSERT INTO '.$b2.'items__tag(tag_ID, tag_name)
249 VALUES ( '.$tag_id.', "'.evo_substr($tag['name'],0,50).'" );';
250 $flag = mysql_query ($query);
251
252 if(! $flag )
253 {
254 pre_dump($query);
255 die ('Tag importing failed. Please check your '.$app_name.' installation.');
256 }
257 }
258 echo '<font color="#00CC00">Tags inserted successfully!</font><br>';
259
260
261 // Now import the posts into b2evolution
262 echo '<h2>Trying to import posts</h2>';
263
264 $posts = array ();
265 $db = mysql_select_db ($wp_db, $con);
266 if (! $db)
267 die ('WordPress database name is incorrect. Please check the name and try again.');
268
269 $query = 'SELECT * FROM '.$wp.'posts WHERE post_type="post" OR post_type="page";' ;
270 $res = mysql_query ($query);
271 if (! $res )
272 die ('Query failed. Please check your WordPress installation.');
273
274 $i = 0;
275 while ( $row = mysql_fetch_array ($res, MYSQL_ASSOC) )
276 {
277 $posts[$i]['post_id'] = $row['ID'];
278 $posts[$i]['slug'] = $row['post_name'];
279 $posts[$i]['title'] = $row['post_title'];
280 $posts[$i]['status'] = $row['post_status'];
281 $posts[$i]['create_date'] = $row['post_date'];
282 $posts[$i]['modified_date'] = $row['post_modified'];
283 $posts[$i]['excerpt'] = $row['post_excerpt'];
284 $posts[$i]['comment_status'] = $row['comment_status'];
285 $posts[$i]['content'] = $row['post_content'];
286 $posts[$i]['author'] = $row['post_author'];
287 $posts[$i]['type'] = 1;
288
289 if (strcmp ($row['post_type'], 'page') == 0)
290 $posts[$i]['type'] = 1000;
291
292 echo 'Reading: '.$posts[$i]['title'].'<br>';
293
294 // Now to get the cats for each post. Includes both CATS and TAGS
295 $j = 0;
296 $posts[$i]['cats'] = array ();
297 $posts[$i]['tags'] = array ();
298
299 // Get all reltated terms:
300 $query2 = 'SELECT *
301 FROM '.$wp.'term_relationships
302 WHERE object_id='.$row['ID'].'; ';
303 $res2 = mysql_query ($query2);
304 if (! $res2)
305 die ('Query 2 failed. Please check your WordPress installation.');
306
307 // Lop through terms
308 while( $row2 = mysql_fetch_array ($res2, MYSQL_ASSOC) )
309 {
310 // Get each specific term:
311 $query3 = 'SELECT *
312 FROM '.$wp.'term_taxonomy
313 WHERE term_taxonomy_id='.$row2['term_taxonomy_id'].';';
314 $res3 = mysql_query ($query3);
315 if (! $res3 )
316 die ('Query 3 failed. Please check your WordPress installation.');
317 $row3 = mysql_fetch_array ($res3, MYSQL_ASSOC);
318 switch( $row3['taxonomy'] )
319 {
320 case 'category':
321 $posts[$i]['cats'][$j] = $row2['term_taxonomy_id'];
322 $j ++;
323 break;
324
325 case 'post_tag':
326 $posts[$i]['tags'][] = $row2['term_taxonomy_id'];
327 break;
328 }
329
330 mysql_free_result ($res3);
331 }
332 mysql_free_result ($res2);
333 $i ++;
334 }
335 mysql_free_result ($res);
336
337 // select the evolution database
338 $db = mysql_select_db ($evo_db, $con);
339 if (! $db)
340 die ($app_name.' database name is incorrect. Please check the name and try again.');
341
342/**
343 * dummy docblock makes error-free autodocs
344 */
345 function fix_date( $date )
346 {
347 if( $date == '0000-00-00 00:00:00' )
348 {
349 $date = '2000-01-01 00:00:00';
350 }
351 return $date;
352 }
353
354/**
355 * dummy docblock makes error-free autodocs
356 */
357 function convert_status( $status )
358 {
359 switch( $status )
360 {
361 case 'publish':
362 return 'published';
363
364 case 'pivate':
365 return 'private';
366
367 default:
368 return 'draft';
369 }
370 }
371
372 foreach ($posts as $post)
373 {
374 echo '<br/>Inserting: '.$post['title'];
375
376 // Check that we have at least one category:
377 if( empty($post['cats']) )
378 { // Use default category:
379 $post['cats'][0] = $default_category_ID;
380 }
381
382 // set the post rendering options. TODO: this could probably be an option for the user before importing
383 $postrenderers = 'b2evSmil.b2evALnk.b2WPAutP';
384
385 // Check that slug is not empty. Mind you, in WP it CAN happen!
386 if( empty( $post['slug'] ) )
387 {
388 $post['slug'] = preg_replace( '/[^a-z0-9]/i', '-', $post['post_id'].'-'.$post['title'] );
389 echo '<br /> ** WARNING: generated automatic slug: '.$post['slug'];
390 }
391
392 // query to insert the posts into the b2evolution table
393 $query = 'INSERT INTO '.$b2.'items__item (post_ptyp_ID, post_ID, post_main_cat_ID, post_creator_user_ID,
394 post_lastedit_user_ID, post_datestart, post_datecreated, post_datemodified, post_status,
395 post_locale, post_content, post_excerpt, post_title, post_urltitle, post_comment_status,
396 post_renderers)
397 VALUES ("'. $post['type'].'", "'.$post['post_id'].'", "'.$post['cats'][0].'", "'. $post['author'].'", "'
398 .$post['author'].'", "'.fix_date($post['create_date']).'", "'.fix_date($post['create_date']).'", "'
399 .fix_date($post['modified_date']).'", "'.convert_status($post['status']).'", "'.$locale.'", "'
400 .mysql_real_escape_string($post['content']).'", "'.mysql_real_escape_string($post['excerpt'])
401 .'", "'.mysql_real_escape_string($post['title']).'", "'.substr($post['slug'],0,50).'", "'
402 .$post['comment_status'].'", "'.$postrenderers.'");';
403
404 $flag = mysql_query($query);
405 if (! $flag )
406 {
407 pre_dump( $query );
408 die ('Post importing failed.');
409 }
410
411
412 // insert the post categories into the postcats table
413 foreach($post['cats'] as $cat)
414 {
415 // query to insert each category for the particular post
416 $query = 'INSERT INTO '.$b2.'postcats (postcat_post_ID, postcat_cat_ID) VALUES ("'.$post['post_id']. '", "'.$cat.'");';
417 $flag = mysql_query ($query);
418 if (! $flag )
419 die ('Post categories insertion failed. Please check your '.$app_name.' installation.');
420 }
421
422 // insert the post tags
423 foreach($post['tags'] as $tag_id)
424 {
425 $query = 'INSERT INTO '.$b2.'items__itemtag (itag_itm_ID, itag_tag_ID)
426 VALUES ('.$post['post_id'].', '.$tag_id.');';
427 $flag = mysql_query ($query);
428 if (! $flag )
429 die ('Post tags insertion failed. Please check your '.$app_name.' installation.');
430 }
431
432 }
433 echo '<font color="#00CC00">Posts and post categories imported successfully!</font>';
434
435 // Now import the comments
436 echo '<h2>Trying to import comments</h2>';
437 $comments = array ();
438
439 // select the wordpress database
440 $db = mysql_select_db ($wp_db);
441 if (! $db)
442 die ('WordPress database name is incorrect. Please check the name and try again.');
443
444 // discard the spam comments. select only comments where status is either 'in moderation' or 'approved'
445 $query = 'SELECT * FROM '.$wp.'comments WHERE comment_approved="0" OR comment_approved="1" ORDER BY comment_date ASC;';
446
447 $res = mysql_query ($query);
448 if (! $res )
449 die ('Query failed. Please check your WordPress installation.');
450
451 $i = 0;
452 while ($row = mysql_fetch_array ($res, MYSQL_ASSOC) )
453 {
454 // set the values from comments table
455 $comments[$i]['comment_id'] = $row['comment_ID'];
456 $comments[$i]['post_id'] = $row['comment_post_ID'];
457 $comments[$i]['author'] = $row['comment_author'];
458 $comments[$i]['email'] = $row['comment_author_email'];
459 $comments[$i]['url'] = $row['comment_author_url'];
460 $comments[$i]['ip'] = $row['comment_author_IP'];
461 $comments[$i]['date'] = $row['comment_date'];
462 $comments[$i]['content'] = $row['comment_content'];
463 $comments[$i]['author_id'] = $row['user_id'];
464
465 // set default comment status to published
466 $comments[$i]['status'] = 'published';
467 // if the comment isn't approved set it to draft
468 if ($row['comment_approved'] == 0)
469 $comments[$i]['status'] = 'draft';
470
471 // default comment type is 'comment
472 $comments[$i]['type'] = 'comment';
473 // if it is a pingback or trackback change the type accordingly
474 if ($row['comment_type'] == 'pingback' || $row['comment_type'] == 'trackback')
475 $comments[$i]['type'] = 'pingback';
476
477 $i ++;
478 }
479 // free the query result set
480 mysql_free_result ($res);
481
482 // select the evolution db
483 $db = mysql_select_db ($evo_db, $con);
484 if (! $db)
485 die ($app_name.' database name is incorrect. Please check the name and try again.');
486
487 foreach ($comments as $comment)
488 {
489 // escape the string and replace UNIX newlines to line breaks in order to
490 // render properly in b2evolution
491 $ccontent = mysql_real_escape_string ($comment['content']);
492 $ccontent = str_replace ('\r\n', '<br />', $ccontent);
493
494 // query to insert the comments into the b2evolution table
495 $query = 'INSERT INTO '.$b2.'comments (comment_ID, comment_post_ID, comment_type, comment_status, comment_author_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_content, comment_allow_msgform)
496 VALUES ("'. $comment['comment_id'].'", "'.$comment['post_id'].'", "'.$comment['type'].'", "'
497 .$comment['status'].'", "'.$comment['author_id'].'", "'.evo_substr($comment['author'],0,100).'", "'.$comment['email']
498 .'", "'.$comment['url'].'", "'.$comment['ip'].'", "'.$comment['date'].'", "'.$ccontent.'", "1");';
499
500 $flag = mysql_query ($query);
501 if (! $flag)
502 {
503 pre_dump( $query );
504 die ('Comment importing failed. Please check your '.$app_name.' installation.');
505 }
506
507 }
508 echo '<font color="#00CC00">Comments imported successfully!</font>';
509
510 // Now to import users. Note: all users other than admin will be imported and then they will be set to the default level
511 // of 0
512 echo '<h2>Trying to import all users (except admin)</h2>';
513 $users = array ();
514
515 // select the wordpress database
516 $db = mysql_select_db ($wp_db, $con);
517 if (! $db)
518 die ('WordPress database name is incorrect. Please check the name and try again.');
519
520 // select all users except the admin user
521 $query = 'SELECT * FROM '. $wp.'users WHERE user_login <> "admin";';
522 $res = mysql_query ($query);
523 if (! $res )
524 die ('Query failed. Please check your WordPress installation.');
525
526 $i = 0;
527 while ( $row = mysql_fetch_array ($res, MYSQL_ASSOC) )
528 {
529 // set all the values from the user table
530 $users[$i]['id'] = $row['ID'];
531 $users[$i]['login'] = $row['user_login'];
532 $users[$i]['password'] = $row['user_pass'];
533 $users[$i]['nickname'] = $row['user_nicename'];
534 $users[$i]['email'] = $row['user_email'];
535 $users[$i]['url'] = $row['user_url'];
536 $users[$i]['date'] = $row['user_registered'];
537 $users[$i]['firstname'] = $row['display_name'];
538 echo 'Reading: '.$users[$i]['login'].'<br>';
539 $i ++;
540 }
541 mysql_free_result ($res);
542
543 // select the evolution db
544 $db = mysql_select_db ($evo_db, $con);
545 if (! $db )
546 die ($app_name.' database name is incorrect. Please check the name and try again.');
547
548 foreach ($users as $a_user)
549 {
550 // Import the user
551 $query = 'INSERT INTO '.$b2.'users (user_ID, user_login, user_pass, user_firstname, user_nickname, user_email,
552 user_url, dateYMDhour, user_validated, user_grp_ID)
553 VALUES ("'.$a_user['id'].'", "'.$a_user['login'].'", "'.$a_user['password'].'", "'
554 .$a_user['firstname'].'", "'.$a_user['nickname'].'", "'.$a_user['email']
555 .'", "'.$a_user['url'].'", "'.fix_date($a_user['date']).'", "1", "4");';
556
557 $flag = mysql_query ($query);
558 if (! $flag)
559 {
560 pre_dump($query);
561 die ('User importing failed. Please check your '.$app_name.' installation.');
562 }
563
564 // Import the permissions for blog for the user
565 $query = 'INSERT INTO '.$b2.'blogusers (bloguser_blog_ID, bloguser_user_ID, bloguser_ismember) VALUES ("1", "'.$a_user['id'].'", "1");';
566
567 $flag = mysql_query ($query);
568 if (! $flag)
569 die ('User (permissions) importing failed. Please check you '.$app_name.' installation.');
570 }
571 echo '<font color="#00CC00">Users imported successfully! <strong>NOTE:</strong> all users are set to basic users level by default. You should probably reconfigure user permissions in the admin control panel if you want to give them higher privileges.</font>';
572
573 // All done
574 echo '<br><br>';
575 echo '<strong><font color="#00CC00">Everything imported correctly. Try out your new '.$app_name.' blog!</font></strong>';
576
577 // close the connection to the MySQL server
578 mysql_close ($con);
579 } ?>
580 <?php // reset the PHP error reporting to the previous level
581 error_reporting ($prevlevel); ?>
582</body>
583</html>
584
585<?php
586?>
5870
=== modified file 'locales/de_DE/LC_MESSAGES/messages.po'
--- locales/de_DE/LC_MESSAGES/messages.po 2010-02-08 21:42:02 +0000
+++ locales/de_DE/LC_MESSAGES/messages.po 2010-02-18 17:25:21 +0000
@@ -1,15576 +1,15569 @@
1# b2evolution - German language file
2# Copyright (C) 2009 Francois PLANQUE
3# This file is distributed under the same license as the b2evolution package.
4#
5# This translation is managed through Launchpad:
6# https://translations.launchpad.net/b2evolution/trunk/+pots/b2evolution/de
7#
8# Please use your favourite dictionary or e. g. http://dict.leo.org/ende for
9# translation assistance.
10# Use correct grammar etc. when translating; always use the formal form of
11# German.
12msgid ""
13msgstr ""
14"Project-Id-Version: b2evolution 3.1.0-beta\n"
15"Report-Msgid-Bugs-To: http://fplanque.net/\n"
16"POT-Creation-Date: 2009-11-22 20:13+0100\n"
17"PO-Revision-Date: 2009-11-22 20:14+0100\n"
18"Last-Translator: Tilman Blumenbach <tilman@ax86.net>\n"
19"Language-Team: Tilman Blumenbach <tilman (at) ax86 (dot) net>\n"
20"MIME-Version: 1.0\n"
21"Content-Type: text/plain; charset=ISO-8859-1\n"
22"Content-Transfer-Encoding: 8bit\n"
23"X-Launchpad-Export-Date: 2009-05-21 13:08+0000\n"
24"X-Generator: Launchpad (build Unknown)\n"
25"X-Poedit-Country: GERMANY\n"
26"X-Poedit-Language: German\n"
27"X-Poedit-SourceCharset: iso-8859-1\n"
28"X-Poedit-Basepath: /home/tilman/public_html/b2evo/cvs/HEAD/blogs/locales/de_DE/LC_MESSAGES\n"
29"X-Poedit-Bookmarks: 2506,787,-1,2100,-1,-1,-1,-1,-1,-1\n"
30
31#: ../../../a_noskin.php:236
32#: ../../../inc/_core/__core.init.php:275
33#: ../../../inc/_core/__core.init.php:662
34#: ../../../inc/items/model/_item.funcs.php:499
35#: ../../../inc/items/model/_itemlistlight.class.php:895
36#: ../../../inc/items/views/_item_list_full.view.php:194
37#: ../../../inc/settings/views/_features.form.php:188
38#: ../../../inc/widgets/widgets/_category_list.widget.php:95
39#: ../../../inc/widgets/widgets/_common_links.widget.php:164
40#: ../../../inc/widgets/widgets/_menu_link.widget.php:143
41#: ../../../multiblogs.php:199
42#: ../../../skins/asevo/_item_block.inc.php:66
43#: ../../../skins/basic/index.main.php:153
44#: ../../../skins/custom/_item_block.inc.php:69
45#: ../../../skins/miami_blue/_item_block.inc.php:54
46#: ../../../skins/natural_pink/_item_block.inc.php:52
47#: ../../../skins/nifty_corners/_item_block.inc.php:56
48#: ../../../skins/pixelgreen/_item_block.inc.php:55
49msgid "Categories"
50msgstr "Kategorien"
51
52#: ../../../a_noskin.php:260
53#: ../../../inc/items/model/_item.class.php:2779
54#: ../../../inc/items/model/_itemlistlight.class.php:897
55#: ../../../inc/items/views/_item_expert.form.php:243
56#: ../../../inc/items/views/_item_list_full.view.php:251
57#: ../../../inc/items/views/_item_simple.form.php:213
58#: ../../../skins/asevo/_item_block.inc.php:76
59#: ../../../skins/custom/_item_block.inc.php:92
60#: ../../../skins/evocamp/_item_block.inc.php:97
61#: ../../../skins/evocamp/single.main.php:140
62#: ../../../skins/evopress/_item_block.inc.php:67
63#: ../../../skins/evopress/single.main.php:165
64#: ../../../skins/glossyblue/_item_block.inc.php:90
65#: ../../../skins/glossyblue/single.main.php:134
66#: ../../../skins/miami_blue/_item_block.inc.php:77
67#: ../../../skins/natural_pink/_item_block.inc.php:62
68#: ../../../skins/nifty_corners/_item_block.inc.php:66
69#: ../../../skins/photoblog/_item_block.inc.php:134
70#: ../../../skins/pixelgreen/_item_block.inc.php:64
71#: ../../../skins/terrafirma/_item_block.inc.php:62
72#: ../../../skins/vastitude/_item_block.inc.php:83
73msgid "Tags"
74msgstr "Schlagworte"
75
76#: ../../../a_noskin.php:359
77#: ../../../inc/items/views/_item_list_full.view.php:107
78#: ../../../multiblogs.php:272
79#: ../../../skins/asevo/index.main.php:173
80#: ../../../skins/basic/index.main.php:242
81#: ../../../skins/natural_pink/index.main.php:172
82#: ../../../skins/nifty_corners/index.main.php:206
83#: ../../../skins/photoblog/index.main.php:94
84#: ../../../skins/photoblog/index.main.php:112
85#: ../../../skins_adm/_adminUI_general.class.php:816
86#: ../../../skins_adm/_adminUI_general.class.php:901
87#: ../../../skins_adm/chicago/_adminUI.class.php:266
88msgid "Previous"
89msgstr "Vorherige"
90
91#: ../../../a_noskin.php:360
92#: ../../../inc/items/views/_item_list_full.view.php:108
93#: ../../../multiblogs.php:273
94#: ../../../skins/asevo/index.main.php:174
95#: ../../../skins/basic/index.main.php:243
96#: ../../../skins/natural_pink/index.main.php:173
97#: ../../../skins/nifty_corners/index.main.php:207
98#: ../../../skins/photoblog/index.main.php:95
99#: ../../../skins/photoblog/index.main.php:108
100#: ../../../skins_adm/_adminUI_general.class.php:817
101#: ../../../skins_adm/_adminUI_general.class.php:902
102#: ../../../skins_adm/chicago/_adminUI.class.php:267
103msgid "Next"
104msgstr "Nächste"
105
106#: ../../../conf/_application.php:41
107msgid "visit b2evolution's website"
108msgstr "Die Webseite von b2evolution besuchen"
109
110#: ../../../conf/_application.php:44
111msgid "GPL License"
112msgstr "GPL-Lizenz"
113
114#. TRANS: short for "Switch to _A_dmin"
115#: ../../../conf/_icons.php:43
116msgid "Adm"
117msgstr "Adm"
118
119#. TRANS: short for "Switch to _B_log"
120#: ../../../conf/_icons.php:48
121msgid "Blg"
122msgstr "Blg"
123
124#: ../../../conf/_icons.php:54
125msgid "Folder"
126msgstr "Verzeichnis"
127
128#: ../../../conf/_icons.php:59
129msgid "Unknown file"
130msgstr "Unbekannte Datei"
131
132#: ../../../conf/_icons.php:64
133msgid "Empty file"
134msgstr "Leere Datei"
135
136#: ../../../conf/_icons.php:69
137msgid "Parent folder"
138msgstr "Übergeordnetes Verzeichnis"
139
140#: ../../../conf/_icons.php:74
141msgid "Home folder"
142msgstr "Heimverzeichnis"
143
144#: ../../../conf/_icons.php:79
145#: ../../../conf/_icons.php:281
146#: ../../../inc/files/views/_file_links.view.php:62
147#: ../../../inc/locales/_locale_settings.form.php:290
148msgid "Edit"
149msgstr "Bearbeiten"
150
151#: ../../../conf/_icons.php:84
152#: ../../../conf/_icons.php:276
153#: ../../../inc/files/views/_file_copy_move.form.php:64
154#: ../../../inc/files/views/_file_copy_move.form.php:86
155#: ../../../inc/files/views/_file_list.inc.php:421
156msgid "Copy"
157msgstr "Kopieren"
158
159#: ../../../conf/_icons.php:89
160#: ../../../inc/chapters/views/_chapter.form.php:60
161#: ../../../inc/chapters/views/_chapter_list.view.php:117
162#: ../../../inc/files/views/_file_copy_move.form.php:64
163#: ../../../inc/files/views/_file_copy_move.form.php:86
164#: ../../../inc/files/views/_file_list.inc.php:420
165#: ../../../inc/generic/views/_generic_ordered_list.inc.php:97
166#: ../../../inc/widgets/views/_widget_list.view.php:56
167msgid "Move"
168msgstr "Verschieben"
169
170#: ../../../conf/_icons.php:94
171#: ../../../inc/files/views/_file_list.inc.php:419
172#: ../../../inc/files/views/_file_rename.form.php:46
173#: ../../../inc/files/views/_file_rename.form.php:65
174msgid "Rename"
175msgstr "Umbenennen"
176
177#. TRANS: Abbrev. for Delete (stats)
178#: ../../../conf/_icons.php:99
179#: ../../../conf/_icons.php:306
180#: ../../../inc/sessions/views/_stats_direct.view.php:63
181msgid "Del"
182msgstr "Lösch"
183
184#: ../../../conf/_icons.php:100
185#: ../../../conf/_icons.php:307
186#: ../../../inc/files/views/_file_delete.form.php:47
187#: ../../../inc/files/views/_file_delete.form.php:71
188#: ../../../inc/files/views/_file_list.inc.php:422
189msgid "Delete"
190msgstr "Löschen"
191
192#: ../../../conf/_icons.php:105
193msgid "Permissions"
194msgstr "Rechte"
195
196#. TRANS: Short (alt tag) for "Ascending"
197#: ../../../conf/_icons.php:112
198msgid "A"
199msgstr "Aufst"
200
201#. TRANS: Short (alt tag) for "Descending"
202#: ../../../conf/_icons.php:117
203msgid "D"
204msgstr "Abst"
205
206#: ../../../conf/_icons.php:123
207msgid "New window"
208msgstr "Neues Fenster"
209
210#: ../../../conf/_icons.php:217
211msgid "Expand"
212msgstr "Ausklappen"
213
214#: ../../../conf/_icons.php:223
215msgid "Collapse"
216msgstr "Zuklappen"
217
218#: ../../../conf/_icons.php:229
219#: ../../../inc/cron/views/_cronjob_list.view.php:72
220#: ../../../inc/items/model/_item.funcs.php:463
221msgid "Refresh"
222msgstr "Aktualisieren"
223
224#: ../../../conf/_icons.php:234
225msgid "Reload"
226msgstr "Neu laden"
227
228#: ../../../conf/_icons.php:240
229#: ../../../inc/files/files.ctrl.php:581
230#: ../../../inc/files/views/_file_download.form.php:63
231msgid "Download"
232msgstr "Herunterladen"
233
234#: ../../../conf/_icons.php:247
235#: ../../../inc/_core/ui/results/_resultsel.class.php:539
236msgid "Warning"
237msgstr "Warnung"
238
239#: ../../../conf/_icons.php:253
240msgid "Info"
241msgstr "Info"
242
243#: ../../../conf/_icons.php:258
244#: ../../../htsrv/register.php:160
245#: ../../../inc/comments/model/_comment.class.php:1264
246#: ../../../inc/comments/views/_comment.form.php:75
247#: ../../../inc/users/views/_user.form.php:129
248#: ../../../inc/users/views/_user.form.php:145
249#: ../../../inc/users/views/_user_list.view.php:212
250#: ../../../inc/users/views/_user_list.view.php:215
251#: ../../../skins/_item_comment_form.inc.php:142
252#: ../../../skins/_msgform.disp.php:179
253#: ../../../skins/_profile.disp.php:61
254#: ../../../skins/_subs.disp.php:58
255#: ../../../skins/basic/_item_feedback.inc.php:203
256#: ../../../skins/glossyblue/_item_feedback.inc.php:328
257#: ../../../skins_adm/login/_reg_complete.main.php:47
258#: ../../../skins_adm/login/_reg_form.main.php:66
259#: ../../../skins_adm/login/_validate_form.main.php:56
260msgid "Email"
261msgstr "E-Mail"
262
263#: ../../../conf/_icons.php:263
264msgid "WWW"
265msgstr "WWW"
266
267#: ../../../conf/_icons.php:264
268#: ../../../inc/comments/model/_comment.class.php:1251
269#: ../../../skins/_item_comment_form.inc.php:143
270#: ../../../skins/_user.disp.php:64
271#: ../../../skins/glossyblue/_item_feedback.inc.php:329
272msgid "Website"
273msgstr "Webseite"
274
275#: ../../../conf/_icons.php:271
276#: ../../../inc/_core/ui/forms/_form.class.php:1888
277#: ../../../inc/collections/collections.ctrl.php:75
278#: ../../../inc/files/views/_file_browse.view.php:327
279msgid "New"
280msgstr "Neu"
281
282#: ../../../conf/_icons.php:286
283#: ../../../inc/chapters/views/_chapter.form.php:53
284#: ../../../inc/chapters/views/_chapter_move.form.php:53
285#: ../../../inc/files/views/_file_properties.form.php:45
286#: ../../../inc/generic/views/_generic_category.form.php:55
287#: ../../../inc/items/views/_item_expert.form.php:336
288#: ../../../inc/widgets/views/_widget.form.php:39
289msgid "Properties"
290msgstr "Eigenschaften"
291
292#: ../../../conf/_icons.php:291
293msgid "Publish"
294msgstr "Veröffentlichen"
295
296#: ../../../conf/_icons.php:296
297msgid "Deprecate"
298msgstr "Missbilligen"
299
300#: ../../../conf/_icons.php:301
301msgid "Locate"
302msgstr "Lokalisieren"
303
304#: ../../../conf/_icons.php:313
305msgid "Close"
306msgstr "Schließen"
307
308#: ../../../conf/_icons.php:321
309#: ../../../conf/_icons.php:391
310msgid "+"
311msgstr "+"
312
313#: ../../../conf/_icons.php:327
314msgid "-"
315msgstr "-"
316
317# TRANS: Short for "Activate(d)"
318#. TRANS: Short for "Activate(d)"
319#: ../../../conf/_icons.php:349
320#: ../../../conf/_icons.php:361
321#: ../../../inc/items/views/_item_list_table.view.php:223
322#: ../../../inc/items/views/_item_list_track.view.php:237
323msgid "Act."
324msgstr "Akt."
325
326#: ../../../conf/_icons.php:350
327msgid "Activate"
328msgstr "Aktivieren"
329
330# TRANS: Short for "Deactivate(d)"
331#. TRANS: Short for "Deactivate(d)"
332#: ../../../conf/_icons.php:355
333#: ../../../conf/_icons.php:367
334msgid "Deact."
335msgstr "Deakt."
336
337#: ../../../conf/_icons.php:356
338msgid "Deactivate"
339msgstr "Deaktivieren"
340
341#: ../../../conf/_icons.php:362
342msgid "Activated"
343msgstr "Aktiviert"
344
345#: ../../../conf/_icons.php:368
346msgid "Deactivated"
347msgstr "Deaktiviert"
348
349#. TRANS: Link + space => verb (not noun)
350#: ../../../conf/_icons.php:374
351msgid "Link "
352msgstr "Verknüpfen "
353
354#: ../../../conf/_icons.php:379
355msgid "Unlink"
356msgstr "Verknüpfung aufheben"
357
358#: ../../../conf/_icons.php:385
359msgid "Calendar"
360msgstr "Kalender"
361
362#: ../../../conf/_icons.php:397
363#: ../../../conf/_icons.php:403
364#: ../../../inc/plugins/plugins.ctrl.php:1000
365#: ../../../inc/plugins/views/_plugin_list.view.php:226
366#: ../../../inc/plugins/views/_plugin_list_available.view.php:57
367#: ../../../inc/plugins/views/_plugin_settings.form.php:78
368msgid "Help"
369msgstr "Hilfe"
370
371#: ../../../conf/_icons.php:404
372msgid "Online Manual"
373msgstr "Onlinehilfe"
374
375#: ../../../conf/_icons.php:409
376#: ../../../inc/comments/model/_comment.class.php:891
377#: ../../../inc/comments/model/_comment.class.php:899
378#: ../../../inc/items/model/_itemlight.class.php:681
379#: ../../../inc/items/model/_itemlight.class.php:689
380#: ../../../skins/photoblog/_item_block.inc.php:79
381msgid "Permalink"
382msgstr "Permalink"
383
384#: ../../../conf/_icons.php:414
385msgid "History"
386msgstr "Verlauf"
387
388#: ../../../conf/_icons.php:420
389#: ../../../inc/users/views/_user.form.php:204
390msgid "Allowed"
391msgstr "Erlaubt"
392
393#: ../../../conf/_icons.php:425
394msgid "Blocked"
395msgstr "Geblockt"
396
397#: ../../../conf/_icons.php:431
398#: ../../../conf/_icons.php:436
399#: ../../../inc/_core/__core.init.php:259
400#: ../../../inc/collections/views/_coll_features.form.php:78
401#: ../../../inc/dashboard/dashboard.ctrl.php:323
402#: ../../../inc/items/model/_item.funcs.php:737
403#: ../../../inc/items/views/_item_expert.form.php:394
404#: ../../../inc/items/views/_item_list_full.view.php:322
405#: ../../../inc/items/views/_item_simple.form.php:252
406#: ../../../inc/widgets/widgets/_xml_feeds.widget.php:155
407#: ../../../skins/_subs.disp.php:85
408#: ../../../skins/_subs.disp.php:97
409#: ../../../skins/basic/_item_feedback.inc.php:68
410msgid "Comments"
411msgstr "Kommentare"
412
413#: ../../../conf/_icons.php:443
414msgid "Up"
415msgstr "Hoch"
416
417#: ../../../conf/_icons.php:449
418msgid "Down"
419msgstr "Runter"
420
421#: ../../../conf/_icons.php:454
422#: ../../../conf/_icons.php:459
423#: ../../../inc/_core/ui/results/_results.class.php:1464
424#: ../../../inc/_core/ui/results/_results.class.php:1474
425msgid "Sort by order"
426msgstr "Nach Reihenfolge sortieren"
427
428#: ../../../conf/_icons.php:469
429#: ../../../inc/items/model/_itemlistlight.class.php:1027
430#: ../../../inc/items/views/_item_expert.form.php:281
431#: ../../../inc/items/views/_item_list_full.view.php:182
432msgid "Assigned to"
433msgstr "Zugeordnet zu"
434
435#: ../../../conf/_icons.php:474
436msgid "Check all"
437msgstr "Alle auswählen"
438
439#: ../../../conf/_icons.php:479
440msgid "Uncheck all"
441msgstr "Alle abwählen"
442
443#: ../../../conf/_icons.php:485
444msgid "Reset all filters"
445msgstr "Alle Filter zurücksetzen"
446
447#: ../../../conf/_icons.php:491
448msgid "Allow back"
449msgstr "Erneut erlauben"
450
451#. TRANS: Abbrev.
452#: ../../../conf/_icons.php:496
453msgid "Ban"
454msgstr "Blocken"
455
456#: ../../../conf/_icons.php:507
457#: ../../../inc/skins/views/_skin.form.php:57
458msgid "XML Feed"
459msgstr "XML-Feed"
460
461#: ../../../conf/_locales.php:118
462msgid "English (US) latin1"
463msgstr "Englisch (US) latin1"
464
465#: ../../../contact.php:49
466#: ../../../contact.php:98
467msgid "Contact Form Demo"
468msgstr "Kontaktformular-Demo"
469
470#: ../../../contact.php:103
471msgid "This demo displays a form to contact the site admin."
472msgstr "Diese Demo zeigt ein Formular an, mit dem der Administrator der Webseite kontaktiert werden kann."
473
474#: ../../../contact.php:135
475msgid "Thank you for your message. I will reply as soon as possible."
476msgstr "Vielen Dank für Ihre Nachricht. Ich werde so schnell wie möglich antworten."
477
478#: ../../../contact.php:138
479msgid "Send another message?"
480msgstr "Eine weitere Nachricht senden?"
481
482#: ../../../cron/getmail.php:50
483msgid "Blog by email feature is not enabled."
484msgstr "Bloggen-per-E-Mail-Feature nicht aktiviert"
485
486#: ../../../cron/getmail.php:102
487msgid "You configured test mode in the settings or set $test to 2. Nothing will be posted to the database/mediastore nor will your inbox be altered."
488msgstr "Sie haben den Test-Modus aktiviert oder $test auf 2 gesetzt. Nichts wird an Ihrer Datenbank, Ihrem Medienverzeichnis und Ihrer Mailbox verändert werden."
489
490#: ../../../cron/getmail.php:111
491#: ../../../inc/settings/views/_features.form.php:78
492msgid "Blog by email"
493msgstr "Bloggen per E-Mail"
494
495#: ../../../cron/getmail.php:258
496msgid "Could not parse date header!"
497msgstr "Konnte Date-Header nicht verarbeiten!"
498
499#: ../../../cron/getmail.php:284
500msgid "Invalid month name in message date string."
501msgstr "Ungültiger Monatsname im Datumsstring der Nachricht."
502
503#: ../../../cron/getmail.php:366
504#: ../../../inc/users/views/_user.form.php:136
505#: ../../../inc/users/views/_user.form.php:146
506#: ../../../inc/users/views/_user.form.php:147
507#: ../../../inc/users/views/_user.form.php:148
508#: ../../../inc/users/views/_user.form.php:203
509msgid "no"
510msgstr "Nein"
511
512#: ../../../cron/getmail.php:366
513#: ../../../inc/users/views/_user.form.php:136
514#: ../../../inc/users/views/_user.form.php:146
515#: ../../../inc/users/views/_user.form.php:147
516#: ../../../inc/users/views/_user.form.php:148
517#: ../../../inc/users/views/_user.form.php:203
518msgid "yes"
519msgstr "Ja"
520
521#: ../../../cron/getmail.php:409
522msgid "The php_imap extension is not available to PHP on this server. Please load it in php.ini or ask your hosting provider to do so."
523msgstr "Die php_imap-Erweiterung ist für PHP auf diesem Server nicht verfügbar. Bitte laden Sie sie in php.ini oder fragen Sie Ihren Hoster um Rat."
524
525#. TRANS: %s is the error message
526#: ../../../cron/getmail.php:453
527#, php-format
528msgid "Connection failed: %s"
529msgstr "Verbindung fehlgeschlagen: %s"
530
531#: ../../../cron/getmail.php:483
532msgid "Could not create temporary file."
533msgstr "Konnte temporäre Datei nicht erzeugen"
534
535#: ../../../cron/getmail.php:502
536#, php-format
537msgid "MIME message decoding error: %s at position %d."
538msgstr "Fehler beim Entschlüsseln der MIME-Nachricht: %s an Position %d."
539
540#: ../../../cron/getmail.php:512
541#, php-format
542msgid "MIME message analyse error: %s"
543msgstr "Fehler bei der Analyse der MIME-Nachricht: %s"
544
545#: ../../../cron/getmail.php:591
546#, php-format
547msgid "Authentication failed for user %s."
548msgstr "Authentifizierung für Benutzer %s fehlgeschlagen."
549
550#: ../../../cron/getmail.php:632
551#, php-format
552msgid "Blog #%d not found!"
553msgstr "Blog #%d nicht gefunden!"
554
555#: ../../../cron/getmail.php:644
556msgid "Permission denied."
557msgstr "Zugriff verweigert."
558
559#: ../../../cron/getmail.php:663
560msgid "Unable to access media directory. No attachments processed."
561msgstr "Kann nicht auf das Medienverzeichnis zugreifen. Keine Anhänge wurden verarbeitet."
562
563#: ../../../cron/getmail.php:671
564msgid "Cannot post, please correct these errors:"
565msgstr "Kann nicht absenden, bitte korrigieren Sie die folgenden Fehler:"
566
567#: ../../../default.php:80
568msgid "Default page"
569msgstr "Standardseite"
570
571#: ../../../default.php:104
572msgid "Welcome to b2evolution"
573msgstr "Willkommen zu b2evolution"
574
575#: ../../../default.php:114
576msgid "b2evolution is installed and ready but you haven't created any blog on this system yet."
577msgstr "b2evolution ist installiert und betriebsbereit, aber Sie haben noch keine Blogs auf diesem System erstellt."
578
579#: ../../../default.php:116
580msgid "Create a first blog"
581msgstr "Ein erstes Blog erstellen"
582
583#: ../../../default.php:120
584msgid "You have successfully installed b2evolution."
585msgstr "Sie haben b2evolution erfolgreich installiert."
586
587#: ../../../default.php:122
588msgid "You haven't set a default blog yet. Thus, you see this default page."
589msgstr "Sie haben noch kein Standardblog festgelegt, deswegen sehen Sie diese Standardseite."
590
591#: ../../../default.php:124
592msgid "Set a default blog"
593msgstr "Ein Standardblog festlegen"
594
595#: ../../../default.php:142
596msgid "Blogs on this system"
597msgstr "Blogs auf diesem System"
598
599#: ../../../default.php:152
600#, php-format
601msgid "Blog #%d"
602msgstr "Blog #%d"
603
604#: ../../../default.php:163
605msgid "Add a new blog"
606msgstr "Ein neues Blog hinzufügen"
607
608#: ../../../default.php:173
609msgid "Bonus templates &amp; features"
610msgstr "Bonustemplates &amp; -features"
611
612#: ../../../default.php:174
613msgid "These templates demonstrate more advanced uses of b2evolution. These do not make use of skins. The only way to change their look and feel is to edit their PHP template."
614msgstr "Diese Templates demonstrieren fortgeschrittene Anwendungen von b2evolution. Sie benutzen keine Skins. Der einzige Weg ihr Aussehen zu ändern, ist ihr PHP-Template zu bearbeiten."
615
616#: ../../../default.php:181
617msgid "Blog #1 called through a custom template (not a skin)"
618msgstr "Blog #1 mit einem benutzerdefinierten Template aufgerufen (kein Skin)"
619
620#: ../../../default.php:182
621msgid "Multiple blogs displayed on the same page"
622msgstr "Mehrere Blogs auf der selben Seite dargestellt"
623
624#: ../../../default.php:183
625msgid "Blog #1 XML sitemap (called through a stub)"
626msgstr "XML-Sitemap für Blog #1 (durch ein Stub aufgerufen)"
627
628#: ../../../default.php:184
629msgid "Blog #1 aggregated XML sitemap (called through a stub)"
630msgstr "Aggregierte XML-Sitemap für Blog #1 (durch ein Stub aufgerufen)"
631
632#: ../../../default.php:188
633msgid "Summary of latest posts in all blogs"
634msgstr "Zusammenfassung der letzten Einträge in allen Blogs"
635
636#: ../../../default.php:189
637msgid "The page you're looking at"
638msgstr "Die Seite, die Sie gerade anschauen"
639
640#: ../../../default.php:190
641msgid "A standalone admin-contact page for your site"
642msgstr "Eine eigenständige Administrator-Kontaktseite für Ihre Webseite"
643
644#: ../../../default.php:209
645msgid "Contact the admin"
646msgstr "Den Administrator kontaktieren"
647
648#: ../../../htsrv/comment_post.php:48
649msgid "You cannot leave comments on this post!"
650msgstr "Sie können keine Kommentare zu diesem Eintrag hinterlassen!"
651
652#: ../../../htsrv/comment_post.php:125
653#: ../../../htsrv/message_send.php:124
654msgid "Please fill in your name."
655msgstr "Bitte geben Sie Ihren Namen an."
656
657#: ../../../htsrv/comment_post.php:129
658#: ../../../htsrv/message_send.php:128
659msgid "Please fill in your email."
660msgstr "Bitten geben Sie Ihre E-Mail-Adresse an."
661
662#: ../../../htsrv/comment_post.php:135
663msgid "Supplied name is invalid."
664msgstr "Der angegebene Name ist ungültig."
665
666#: ../../../htsrv/comment_post.php:141
667#: ../../../htsrv/message_send.php:132
668msgid "Supplied email address is invalid."
669msgstr "Die angegebene E-Mail-Adresse ist ungültig."
670
671#: ../../../htsrv/comment_post.php:159
672msgid "Supplied website address is invalid: "
673msgstr "Die angegebene Webseiten-Adresse ist ungültig: "
674
675#: ../../../htsrv/comment_post.php:175
676msgid "Please do not send empty comments."
677msgstr "Bitte senden Sie keine leeren Kommentare."
678
679#: ../../../htsrv/comment_post.php:240
680#, php-format
681msgid "You can only post a new comment every %d seconds."
682msgstr "Sie können nur alle %d Sekunden einen neuen Kommentar schreiben."
683
684#: ../../../htsrv/comment_post.php:261
685msgid "Errors while processing your comment"
686msgstr "Fehler bei der Verarbeitung Ihres Kommentars"
687
688#: ../../../htsrv/comment_post.php:277
689msgid "Cannot post comment, please correct these errors:"
690msgstr "Kann Kommentar nicht senden, bitte berichtigen Sie die folgenden Fehler:"
691
692#: ../../../htsrv/comment_post.php:278
693msgid "Back to comment editing"
694msgstr "Zurück zum Bearbeiten des Kommentars"
695
696#: ../../../htsrv/comment_post.php:295
697msgid "This is a preview only! Do not forget to send your comment!"
698msgstr "Das ist nur eine Vorschau! Vergessen Sie nicht, Ihren Kommentar abzuschicken!"
699
700#: ../../../htsrv/comment_post.php:375
701msgid "Your comment has been submitted."
702msgstr "Ihr Kommentar wurde abgeschickt."
703
704#: ../../../htsrv/comment_post.php:382
705msgid "Your comment has been submitted. It will appear once it has been approved."
706msgstr "Ihr Kommentar wurde abgeschickt. Er wird erscheinen, sobald er freigegeben wurde."
707
708#: ../../../htsrv/login.php:78
709#: ../../../htsrv/login.php:132
710msgid "If you correctly typed in your login, a link to change your password has been sent to your registered email address."
711msgstr "Wenn Sie Ihren Benutzernamen korrekt angegeben haben, wurde Ihnen ein Link zum Ändern Ihres Passwortes an Ihre registrierte E-Mail-Adresse geschickt."
712
713#: ../../../htsrv/login.php:88
714msgid "You cannot reset this account in demo mode."
715msgstr "Sie können diesen Account im Demo-Modus nicht zurücksetzen."
716
717#: ../../../htsrv/login.php:100
718msgid "You have no email address with your profile, therefore we cannot reset your password."
719msgstr "Sie haben keine E-Mail-Adresse in Ihrem Profil, somit können wir Ihr Passwort nicht zurücksetzen."
720
721#: ../../../htsrv/login.php:101
722msgid "Please try contacting the admin."
723msgstr "Bitte versuchen Sie, den Administrator zu kontaktieren."
724
725#: ../../../htsrv/login.php:107
726msgid "Somebody (presumably you) has requested a password change for your account."
727msgstr "Jemand (wahrscheinlich Sie) hat eine Passwortänderung für Ihren Account angefordert."
728
729#: ../../../htsrv/login.php:109
730#: ../../../htsrv/register.php:159
731#: ../../../inc/users/model/_user.class.php:1196
732msgid "Login:"
733msgstr "Benutzername:"
734
735#: ../../../htsrv/login.php:110
736msgid "Link to change your password:"
737msgstr "Link zum Ändern Ihres Passwortes:"
738
739#: ../../../htsrv/login.php:117
740#: ../../../htsrv/message_send.php:81
741#: ../../../inc/users/model/_user.class.php:1203
742msgid "Please note:"
743msgstr "Bitte beachten Sie:"
744
745#: ../../../htsrv/login.php:118
746#: ../../../htsrv/message_send.php:82
747#: ../../../inc/users/model/_user.class.php:1204
748msgid "For security reasons the link is only valid for your current session (by means of your session cookie)."
749msgstr "Aus Sicherheitsgründen ist dieser Link nur für Ihre aktuelle Sitzung gültig (bezogen auf Ihr Session-Cookie)."
750
751#: ../../../htsrv/login.php:120
752msgid "If it was not you that requested this password change, simply ignore this mail."
753msgstr "Falls nicht Sie diese Passwortänderung angefordert haben, ignorieren Sie diese E-Mail bitte einfach."
754
755#: ../../../htsrv/login.php:122
756#, php-format
757msgid "Password change request for %s"
758msgstr "Anforderung einer Passwortänderung für %s"
759
760#: ../../../htsrv/login.php:124
761msgid "Sorry, the email with the link to reset your password could not be sent."
762msgstr "Entschuldigung, die E-Mail mit dem Link, um Ihr Passwort zurückzusetzen, konnte nicht gesendet werden."
763
764#: ../../../htsrv/login.php:125
765#: ../../../htsrv/login.php:312
766#: ../../../htsrv/message_send.php:95
767#: ../../../htsrv/message_send.php:301
768#: ../../../htsrv/register.php:180
769msgid "Possible reason: the PHP mail() function may have been disabled on the server."
770msgstr "Möglicher Grund: Die mail()-Funktion von PHP könnte auf diesem Server deaktiviert worden sein."
771
772#: ../../../htsrv/login.php:151
773#: ../../../htsrv/login.php:168
774msgid "Invalid password change request! Please try again..."
775msgstr "Ungültige Passwortänderungsanfrage! Bitte versuchen Sie es erneut..."
776
777#: ../../../htsrv/login.php:159
778#: ../../../htsrv/login.php:213
779msgid "You have to use the same session (by means of your session cookie) as when you have requested the action. Please try again..."
780msgstr "Sie müssen die gleiche Sitzung benutzen, in der Sie diese Aktion angefordert haben (bezogen auf Ihr Session-Cookie). Bitte versuchen Sie es erneut..."
781
782#: ../../../htsrv/login.php:178
783msgid "Please change your password to something you remember now."
784msgstr "Bitte ändern Sie Ihr Passwort nun in etwas, an das Sie sich erinnern können."
785
786#: ../../../htsrv/login.php:197
787msgid "Your account has already been validated."
788msgstr "Ihr Account wurde bereits bestätigt."
789
790#: ../../../htsrv/login.php:205
791#: ../../../htsrv/login.php:223
792msgid "Invalid email address validation request!"
793msgstr "Ungültige Adressbestätigungsanfrage!"
794
795#: ../../../htsrv/login.php:233
796msgid "Please login to validate your account."
797msgstr "Bitte melden Sie sich an, um Ihren Account zu bestätigen."
798
799#: ../../../htsrv/login.php:242
800msgid "Your email address has been validated."
801msgstr "Ihre E-Mail-Adresse wurde bestätigt."
802
803#: ../../../htsrv/login.php:272
804msgid "You have to be logged in to request an account validation link."
805msgstr "Sie müssen angemeldet sein, um einen Accountbestätigungslink anfordern zu können."
806
807#: ../../../htsrv/login.php:302
808#: ../../../htsrv/profile_update.php:134
809#: ../../../inc/users/users.ctrl.php:434
810msgid "Your profile has been updated."
811msgstr "Ihr Profil wurde aktualisiert."
812
813#. TRANS: %s gets replaced by the user's email address
814#: ../../../htsrv/login.php:307
815#, php-format
816msgid "An email has been sent to your email address (%s). Please click on the link therein to validate your account."
817msgstr "Eine E-Mail wurde an Ihre E-Mail-Adresse (%s) gesendet. Bitte klicken Sie auf den darin enthaltenen Link, um Ihren Account zu bestätigen."
818
819#: ../../../htsrv/login.php:311
820#: ../../../htsrv/register.php:179
821msgid "Sorry, the email with the link to validate and activate your password could not be sent."
822msgstr "Entschuldigung, die E-Mail mit dem Link, um Ihren Account zu bestätigen und zu aktivieren, konnte nicht gesendet werden."
823
824#: ../../../htsrv/login.php:321
825#, php-format
826msgid "We have already sent you %d email(s) with a validation link."
827msgstr "Wir haben Ihnen bereits %d E-Mail(s) mit einem Bestätigungslink gesendet."
828
829#: ../../../htsrv/login.php:326
830msgid "You have no email address with your profile, therefore we cannot validate it. Please give your email address below."
831msgstr "Sie haben keine E-Mail-Adresse in Ihrem Profil, also können wir sie nicht bestätigen. Bitte geben Sie unten Ihre E-Mail-Adresse an."
832
833#: ../../../htsrv/login.php:339
834#, php-format
835msgid "WARNING: you are trying to log in on <strong>%s</strong> but we expect you to log in on <strong>%s</strong>. If this is due to an automatic redirect, this will prevent you from successfully loging in. You must either fix your webserver configuration, or your %s configuration in order for these two URLs to match."
836msgstr "WARNUNG: Sie versuchen, sich auf <strong>%s</strong> anzumelden, aber wir erwarten, dass Sie sich auf <strong>%s</strong> anmelden. Falls dies auf Grund einer automatischen Weiterleitung geschieht, werden Sie sich nicht erfolgreich anmelden können. Sie müssen entweder Ihre Webserver- oder %s-Konfiguration anpassen, so dass die beiden URLs übereinstimmen."
837
838#: ../../../htsrv/login.php:378
839#, php-format
840msgid "WARNING: you are trying to log in to <strong>%s</strong> but your cookie domain is <strong>%s</strong>. You will not be able to successfully log in to the requested domain until you fix your cookie domain in your %s configuration."
841msgstr "WARNUNG: Sie versuchen, sich an <strong>%s</strong> anzumelden, aber Ihre Cookie-Domain ist <strong>%s</strong>. Sie werden sich nicht erfolgreich an der angeforderten Domain anmelden können, bis Sie Ihre Cookie-Domain in Ihrer %s-Konfiguration angepasst haben."
842
843#: ../../../htsrv/message_send.php:62
844msgid "All your comments have been marked not to allow emailing you through a message form."
845msgstr "Für alle Ihre Kommentare wurde die Funktion, Ihnen über ein Kontaktformular E-Mails zu diesen zu schicken, deaktiviert."
846
847#: ../../../htsrv/message_send.php:68
848msgid "The request not to receive emails through a message form for your comments failed."
849msgstr "Die Anfrage, zu Ihren Kommentaren keine E-Mails mehr per Kontaktformular zu erhalten, ist fehlgeschlagen."
850
851#: ../../../htsrv/message_send.php:77
852msgid ""
853"We have received a request that you do not want to receive emails through\n"
854"a message form on your comments anymore.\n"
855"\n"
856"To confirm that this request is from you, please click on the following link:"
857msgstr ""
858"Wir haben eine Anfrage erhalten, dass Sie zu Ihren Kommentaren keine E-Mails\n"
859"mehr über ein Kontaktformular erhalten möchten.\n"
860"\n"
861"Um zu bestätigen, dass diese Anfrage von Ihnen stammt, klicken Sie bitte auf\n"
862"den folgenden Link:"
863
864#: ../../../htsrv/message_send.php:84
865msgid "If it was not you that requested this, simply ignore this mail."
866msgstr "Wenn Sie das nicht angefordert haben, ignorieren Sie diese E-Mail einfach."
867
868#: ../../../htsrv/message_send.php:86
869msgid "Confirm opt-out for emails through message form"
870msgstr "Opt-out für E-Mails über Kontaktformular"
871
872#: ../../../htsrv/message_send.php:88
873msgid "An email has been sent to you, with a link to confirm your request not to receive emails through the comments you have made on this blog."
874msgstr "Eine E-Mail wurde an Sie verschickt. Sie enthält einen Link, mit dem Sie Ihre Anfrage, keine E-Mails mehr zu Ihren Kommentaren in diesem Blog zu bekommen, bestätigen können."
875
876#: ../../../htsrv/message_send.php:94
877#: ../../../htsrv/message_send.php:300
878msgid "Sorry, could not send email."
879msgstr "Entschuldigung, die E-Mail konnte nicht versendet werden."
880
881#: ../../../htsrv/message_send.php:137
882msgid "Please fill in the subject of your message."
883msgstr "Bitte geben Sie einen Betreff an."
884
885#: ../../../htsrv/message_send.php:142
886msgid "Please do not send empty messages."
887msgstr "Bitte senden Sie keine leeren Mitteilungen."
888
889#: ../../../htsrv/message_send.php:146
890msgid "The supplied message is invalid / appears to be spam."
891msgstr "Die angegebene Nachricht ist ungültig / scheint Spam zu sein."
892
893#: ../../../htsrv/message_send.php:157
894msgid "Message sent from your comment:"
895msgstr "Nachricht bezieht sich auf Ihren Kommentar:"
896
897#: ../../../htsrv/message_send.php:165
898msgid "Message sent from your post:"
899msgstr "Nachricht bezieht sich auf Ihren Eintrag:"
900
901#: ../../../htsrv/message_send.php:233
902msgid "You can edit your profile to not reveive mails through a form:"
903msgstr "Sie können Ihr Profil bearbeiten, um keine E-Mails mehr über ein Kontaktformular zu erhalten:"
904
905#: ../../../htsrv/message_send.php:240
906msgid ""
907"Click on the following link to not receive e-mails on your comments\n"
908"for this e-mail address anymore:"
909msgstr ""
910"Klicken Sie auf den folgenden Link, um für diese E-Mail-Adresse keine\n"
911"E-Mails mehr zu Ihren Kommentaren zu erhalten:"
912
913#: ../../../htsrv/message_send.php:261
914msgid "Cannot send email, please correct these errors:"
915msgstr "Kann E-Mail nicht senden, bitte berichtigen Sie die folgenden Fehler:"
916
917#: ../../../htsrv/message_send.php:262
918msgid "Back to email editing"
919msgstr "Zurück zum Bearbeiten der E-Mail"
920
921#: ../../../htsrv/message_send.php:270
922#: ../../../htsrv/message_send.php:278
923#, php-format
924msgid "This message was sent via the messaging system on %s."
925msgstr "Diese E-Mail wurde über das Nachrichtensystem von %s versendet."
926
927#: ../../../htsrv/message_send.php:296
928msgid "Your message has been sent."
929msgstr "Ihre Nachricht wurde versendet."
930
931#: ../../../htsrv/profile_update.php:69
932#: ../../../htsrv/subs_update.php:50
933#: ../../../skins/_profile.disp.php:42
934#: ../../../skins/_subs.disp.php:36
935msgid "You are not logged in."
936msgstr "Sie sind nicht angemeldet."
937
938#: ../../../htsrv/profile_update.php:80
939#: ../../../htsrv/profile_update.php:101
940#: ../../../htsrv/subs_update.php:61
941#: ../../../htsrv/subs_update.php:75
942msgid "Back to profile"
943msgstr "Zurück zum Profil"
944
945#: ../../../htsrv/profile_update.php:100
946#: ../../../htsrv/subs_update.php:74
947msgid "Cannot update profile. Please correct the following errors:"
948msgstr "Kann Profil nicht aktualisieren. Bitte berichtigen Sie die folgenden Fehler:"
949
950#: ../../../htsrv/profile_update.php:138
951#: ../../../inc/users/users.ctrl.php:438
952msgid "Your profile has not been changed."
953msgstr "Ihr Profil wurde nicht geändert."
954
955#: ../../../htsrv/register.php:94
956#, php-format
957msgid "The login &laquo;%s&raquo; is already registered, please choose another one."
958msgstr "Der Benutzername &laquo;%s&raquo; ist bereits registriert, bitte wählen Sie einen anderen."
959
960#: ../../../htsrv/register.php:141
961msgid "No user account has been created!"
962msgstr "Kein Benutzeraccount wurde erstellt!"
963
964#: ../../../htsrv/register.php:157
965#: ../../../htsrv/register.php:164
966msgid "New user registration on your blog"
967msgstr "Neue Benutzerregistrierung auf Ihrem Blog"
968
969#: ../../../htsrv/register.php:162
970msgid "Edit user"
971msgstr "Benutzer bearbeiten"
972
973#: ../../../htsrv/register.php:175
974msgid "An email has been sent to your email address. Please click on the link therein to validate your account."
975msgstr "Eine E-Mail wurde an Ihre E-Mail-Adresse gesendet. Bitte klicken Sie auf den darin enthaltenen Link, um Ihren Account zu bestätigen."
976
977#: ../../../htsrv/subs_update.php:125
978msgid "Your profile & subscriptions have been updated."
979msgstr "Ihr Profil und Ihre Abonnements wurden aktualisiert."
980
981#: ../../../htsrv/trackback.php:121
982#: ../../../inc/users/model/_user.funcs.php:545
983msgid "Supplied URL is invalid: "
984msgstr "Angegebener URL ist ungültig: "
985
986#: ../../../htsrv/trackback.php:152
987msgid "Please do not send empty comment"
988msgstr "Bitte senden Sie keinen leeren Kommentar"
989
990#: ../../../htsrv/viewfile.php:73
991#: ../../../inc/items/views/_item_expert.form.php:176
992#: ../../../inc/items/views/_item_simple.form.php:168
993#: ../../../inc/skins/model/_skin.class.php:454
994#: ../../../skins/_item_comment_form.inc.php:207
995#: ../../../skins/glossyblue/_item_feedback.inc.php:392
996msgid "Preview"
997msgstr "Vorschau"
998
999#: ../../../htsrv/viewfile.php:131
1000#: ../../../inc/files/views/_file_links.view.php:82
1001#: ../../../inc/files/views/_file_rename.form.php:56
1002#: ../../../inc/items/views/inc/_item_links.inc.php:60
1003msgid "File"
1004msgstr "Datei"
1005
1006#: ../../../htsrv/viewfile.php:133
1007#: ../../../inc/_core/_misc.funcs.php:3462
1008#: ../../../inc/collections/views/_coll_general.form.php:52
1009#: ../../../inc/files/views/_file_links.view.php:112
1010#: ../../../inc/items/model/_item.class.php:3654
1011#: ../../../inc/items/model/_item.class.php:3664
1012#: ../../../inc/items/views/_item_expert.form.php:101
1013#: ../../../inc/items/views/_item_list_table.view.php:141
1014#: ../../../inc/items/views/_item_simple.form.php:132
1015#: ../../../inc/widgets/widgets/_xml_feeds.widget.php:87
1016#: ../../../plugins/_quicktags.plugin.php:407
1017msgid "Title"
1018msgstr "Titel"
1019
1020#: ../../../htsrv/viewfile.php:137
1021#: ../../../inc/chapters/views/_chapter.form.php:71
1022#: ../../../inc/collections/views/_coll_general.form.php:104
1023#: ../../../inc/plugins/views/_plugin_list.view.php:210
1024#: ../../../inc/plugins/views/_plugin_list_available.view.php:55
1025#: ../../../inc/widgets/views/_widget.form.php:41
1026msgid "Description"
1027msgstr "Beschreibung"
1028
1029#: ../../../htsrv/viewfile.php:143
1030msgid "Empty file!"
1031msgstr "Leere Datei!"
1032
1033#: ../../../htsrv/viewfile.php:148
1034#, php-format
1035msgid "%d lines"
1036msgstr "%d Zeile(n)"
1037
1038#: ../../../htsrv/viewfile.php:157
1039#: ../../../htsrv/viewfile.php:187
1040msgid "Hide line numbers"
1041msgstr "Verstecke Zeilennummern"
1042
1043#: ../../../htsrv/viewfile.php:157
1044#: ../../../htsrv/viewfile.php:172
1045msgid "Show line numbers"
1046msgstr "Zeige Zeilennummern"
1047
1048#: ../../../htsrv/viewfile.php:224
1049msgid "End Of File"
1050msgstr "Ende der Datei (EOF)"
1051
1052#: ../../../htsrv/viewfile.php:229
1053#: ../../../htsrv/viewfile.php:234
1054#, php-format
1055msgid "The file &laquo;%s&raquo; could not be accessed!"
1056msgstr "Auf die Datei &laquo;%s&raquo; konnte nicht zugegriffen werden!"
1057
1058#: ../../../inc/_blog_main.inc.php:461
1059#, php-format
1060msgid "The skin [%s] is not installed on this system."
1061msgstr "Der Skin [%s] ist auf diesem System nicht installiert."
1062
1063#: ../../../inc/_blog_main.inc.php:479
1064#, php-format
1065msgid "The skin [%s] set for blog [%s] does not exist. It must be properly set in the <a %s>blog properties</a> or properly overriden in a stub file."
1066msgstr "Der gewählte Skin [%s] für das Blog [%s] existiert nicht. Er muss ordnungsgemäß in den <a %s>Blogeigenschaften</a> gesetzt oder in einer Stub-Datei überschrieben werden."
1067
1068#: ../../../inc/_core/__core.init.php:150
1069#: ../../../inc/_core/__core.init.php:545
1070msgid "Dashboard"
1071msgstr "Übersicht"
1072
1073#: ../../../inc/_core/__core.init.php:152
1074msgid "Go to admin dashboard"
1075msgstr "Zur Admin-Übersichtsseite gehen"
1076
1077#: ../../../inc/_core/__core.init.php:155
1078msgid "See"
1079msgstr "Ansehen"
1080
1081#: ../../../inc/_core/__core.init.php:157
1082msgid "See the home page"
1083msgstr "Die Hauptseite ansehen"
1084
1085#: ../../../inc/_core/__core.init.php:160
1086#: ../../../inc/collections/views/_coll_group_perm.form.php:386
1087#: ../../../inc/collections/views/_coll_user_perm.form.php:392
1088msgid "Write"
1089msgstr "Schreiben"
1090
1091#: ../../../inc/_core/__core.init.php:161
1092#: ../../../inc/_core/__core.init.php:166
1093#: ../../../inc/_core/__core.init.php:171
1094msgid "No blog is currently selected"
1095msgstr "Zur Zeit ist kein Blog ausgewählt"
1096
1097#: ../../../inc/_core/__core.init.php:165
1098msgid "Manage"
1099msgstr "Verwalten"
1100
1101#: ../../../inc/_core/__core.init.php:170
1102msgid "Customize"
1103msgstr "Anpassen"
1104
1105#: ../../../inc/_core/__core.init.php:175
1106#: ../../../inc/_core/__core.init.php:768
1107#: ../../../inc/_core/__core.init.php:801
1108msgid "Tools"
1109msgstr "Werkzeuge"
1110
1111#: ../../../inc/_core/__core.init.php:186
1112msgid "See the public view of this blog"
1113msgstr "Die öffentliche Ansicht dieses Blogs ansehen"
1114
1115#: ../../../inc/_core/__core.init.php:193
1116msgid "Write a new post into this blog"
1117msgstr "Einen neuen Eintrag in diesem Blog verfassen"
1118
1119#: ../../../inc/_core/__core.init.php:197
1120msgid "You don't have permission to post into this blog"
1121msgstr "Sie haben keine Rechte, um Einträge in diesem Blog zu erstellen"
1122
1123#: ../../../inc/_core/__core.init.php:204
1124msgid "Manage the contents of this blog"
1125msgstr "Die Inhalte dieses Blogs verwalten"
1126
1127#: ../../../inc/_core/__core.init.php:207
1128#: ../../../inc/items/model/_item.funcs.php:696
1129#: ../../../inc/users/views/_user.form.php:338
1130#: ../../../inc/widgets/widgets/_xml_feeds.widget.php:152
1131#: ../../../skins/_profile.disp.php:104
1132#: ../../../skins/_subs.disp.php:84
1133#: ../../../skins/_subs.disp.php:96
1134#: ../../../skins/_user.disp.php:88
1135msgid "Posts"
1136msgstr "Einträge"
1137
1138#: ../../../inc/_core/__core.init.php:211
1139#: ../../../inc/_core/ui/results/_results.class.php:1739
1140#: ../../../inc/items/model/_item.funcs.php:700
1141#: ../../../inc/items/views/_item_list_full.view.php:101
1142#: ../../../inc/items/views/_item_list_full.view.php:105
1143#: ../../../inc/widgets/widgets/_page_list.widget.php:60
1144#: ../../../skins_adm/_adminUI_general.class.php:754
1145#: ../../../skins_adm/_adminUI_general.class.php:810
1146#: ../../../skins_adm/_adminUI_general.class.php:895
1147#: ../../../skins_adm/chicago/_adminUI.class.php:200
1148#: ../../../skins_adm/chicago/_adminUI.class.php:260
1149msgid "Pages"
1150msgstr "Seiten"
1151
1152#: ../../../inc/_core/__core.init.php:215
1153msgid "Intro posts"
1154msgstr "Intro-Einträge"
1155
1156#: ../../../inc/_core/__core.init.php:219
1157msgid "Podcast episodes"
1158msgstr "Podcast-Episoden"
1159
1160#: ../../../inc/_core/__core.init.php:223
1161#: ../../../inc/items/model/_item.funcs.php:712
1162msgid "Sidebar links"
1163msgstr "Seitenleistenlinks"
1164
1165#: ../../../inc/_core/__core.init.php:230
1166#: ../../../inc/items/model/_item.funcs.php:724
1167msgid "Tracker"
1168msgstr "Tracker"
1169
1170#: ../../../inc/_core/__core.init.php:235
1171msgid "All Items"
1172msgstr "Alle Elemente"
1173
1174#: ../../../inc/_core/__core.init.php:267
1175#: ../../../inc/_core/__core.init.php:562
1176#: ../../../inc/_core/__core.init.php:722
1177#: ../../../inc/files/views/_file_browse_set.form.php:56
1178#: ../../../inc/items/views/_item_list_table.view.php:207
1179#: ../../../inc/users/views/_group.form.php:151
1180msgid "Files"
1181msgstr "Dateien"
1182
1183#: ../../../inc/_core/__core.init.php:286
1184#: ../../../inc/tools/system.ctrl.php:84
1185#: ../../../install/_functions_create.php:601
1186msgid "About this system"
1187msgstr "Über dieses System"
1188
1189#: ../../../inc/_core/__core.init.php:297
1190#: ../../../inc/dashboard/dashboard.ctrl.php:458
1191#: ../../../inc/settings/views/_general.form.php:59
1192msgid "Create new blog"
1193msgstr "Neues Blog erstellen"
1194
1195#: ../../../inc/_core/__core.init.php:306
1196msgid "More info"
1197msgstr "Mehr Info"
1198
1199#: ../../../inc/_core/__core.init.php:309
1200msgid "Open b2evolution.net"
1201msgstr "b2evolution.net öffnen"
1202
1203#: ../../../inc/_core/__core.init.php:314
1204msgid "Open Support forums"
1205msgstr "Support-Forum öffnen"
1206
1207#: ../../../inc/_core/__core.init.php:319
1208msgid "Open Online manual"
1209msgstr "Online-Anleitung öffnen"
1210
1211#: ../../../inc/_core/__core.init.php:327
1212msgid "b2evolution on twitter"
1213msgstr "b2evolution bei twitter"
1214
1215#: ../../../inc/_core/__core.init.php:332
1216msgid "b2evolution on facebook"
1217msgstr "b2evolution bei facebook"
1218
1219#: ../../../inc/_core/__core.init.php:347
1220msgid "Customize this blog"
1221msgstr "Dieses Blog anpassen"
1222
1223#: ../../../inc/_core/__core.init.php:351
1224#: ../../../inc/dashboard/dashboard.ctrl.php:350
1225msgid "Blog properties"
1226msgstr "Blogeigenschaften"
1227
1228#: ../../../inc/_core/__core.init.php:355
1229#: ../../../inc/dashboard/dashboard.ctrl.php:351
1230msgid "Blog features"
1231msgstr "Blog-Features"
1232
1233#: ../../../inc/_core/__core.init.php:359
1234#: ../../../inc/dashboard/dashboard.ctrl.php:352
1235msgid "Blog skin"
1236msgstr "Blog-Skin"
1237
1238#: ../../../inc/_core/__core.init.php:363
1239#: ../../../inc/dashboard/dashboard.ctrl.php:353
1240msgid "Blog widgets"
1241msgstr "Blog-Widgets"
1242
1243#: ../../../inc/_core/__core.init.php:367
1244#: ../../../inc/dashboard/dashboard.ctrl.php:354
1245msgid "Blog URLs"
1246msgstr "Blog-URLs"
1247
1248#: ../../../inc/_core/__core.init.php:382
1249#: ../../../inc/antispam/views/_antispam_list.view.php:27
1250#: ../../../inc/antispam/views/_antispam_settings.form.php:46
1251msgid "Antispam blacklist"
1252msgstr "Antispam-Bannliste"
1253
1254#: ../../../inc/_core/__core.init.php:390
1255#: ../../../inc/_core/__core.init.php:772
1256msgid "Scheduler"
1257msgstr "Planer"
1258
1259#: ../../../inc/_core/__core.init.php:435
1260msgid "Edit user profile"
1261msgstr "Benutzerprofil bearbeiten"
1262
1263#: ../../../inc/_core/__core.init.php:451
1264#: ../../../inc/collections/views/_coll_features.form.php:157
1265msgid "Email subscriptions"
1266msgstr "E-Mail-Abonnements"
1267
1268#: ../../../inc/_core/__core.init.php:466
1269#: ../../../inc/users/views/_user.form.php:243
1270#: ../../../inc/users/views/_user.form.php:268
1271msgid "Admin skin"
1272msgstr "Admin-Skin"
1273
1274#: ../../../inc/_core/__core.init.php:483
1275#: ../../../inc/_core/__core.init.php:513
1276#: ../../../inc/users/model/_user.funcs.php:243
1277#: ../../../inc/widgets/widgets/_user_tools.widget.php:76
1278#: ../../../skins_adm/_access_denied.main.php:23
1279#: ../../../skins_adm/_adminUI_general.class.php:1229
1280#: ../../../skins_adm/_adminUI_general.class.php:1231
1281msgid "Logout"
1282msgstr "Abmelden"
1283
1284#: ../../../inc/_core/__core.init.php:492
1285#: ../../../inc/chapters/views/_chapter.form.php:62
1286#: ../../../inc/collections/model/_blog.class.php:225
1287#: ../../../inc/comments/model/_comment.class.php:1241
1288#: ../../../inc/items/model/_item.class.php:3654
1289#: ../../../inc/items/model/_item.class.php:3659
1290#: ../../../inc/items/views/_item_list_table.view.php:80
1291#: ../../../inc/sessions/views/_stats_hit_list.view.php:155
1292#: ../../../inc/widgets/widgets/_comment_list.widget.php:92
1293#: ../../../inc/widgets/widgets/_item_list.widget.php:95
1294msgid "Blog"
1295msgstr "Blog"
1296
1297#: ../../../inc/_core/__core.init.php:499
1298#: ../../../inc/widgets/widgets/_menu_link.widget.php:171
1299#: ../../../skins_adm/login/_reg_disabled.main.php:40
1300msgid "Home"
1301msgstr "Start"
1302
1303#: ../../../inc/_core/__core.init.php:507
1304#: ../../../inc/collections/views/_coll_advanced.form.php:104
1305#: ../../../inc/collections/views/_coll_advanced.form.php:109
1306#: ../../../inc/collections/views/_coll_advanced.form.php:114
1307#: ../../../inc/collections/views/_coll_advanced.form.php:128
1308#: ../../../inc/collections/views/_coll_features.form.php:169
1309#: ../../../inc/collections/views/_coll_group_perm.form.php:464
1310#: ../../../inc/collections/views/_coll_urls.form.php:105
1311#: ../../../inc/collections/views/_coll_user_perm.form.php:471
1312#: ../../../inc/sessions/views/_stats_browserhits.view.php:166
1313#: ../../../inc/users/model/_user.funcs.php:332
1314#: ../../../inc/widgets/widgets/_user_tools.widget.php:97
1315#: ../../../install/index.php:137
1316msgid "Admin"
1317msgstr "Admin"
1318
1319#: ../../../inc/_core/__core.init.php:551
1320msgid "Posts / Comments"
1321msgstr "Einträge / Kommentare"
1322
1323#: ../../../inc/_core/__core.init.php:563
1324msgid "File management"
1325msgstr "Dateiverwaltung"
1326
1327#: ../../../inc/_core/__core.init.php:598
1328#: ../../../inc/_core/__core.init.php:629
1329msgid "Blog settings"
1330msgstr "Blogeinstellungen"
1331
1332#: ../../../inc/_core/__core.init.php:638
1333#: ../../../inc/_core/__core.init.php:704
1334#: ../../../inc/users/views/_group.form.php:76
1335msgid "General"
1336msgstr "Allgemein"
1337
1338#: ../../../inc/_core/__core.init.php:641
1339#: ../../../inc/_core/__core.init.php:707
1340msgid "Features"
1341msgstr "Features"
1342
1343#: ../../../inc/_core/__core.init.php:644
1344#: ../../../inc/collections/views/_coll_features.form.php:173
1345msgid "Skin"
1346msgstr "Skin"
1347
1348#: ../../../inc/_core/__core.init.php:647
1349msgid "Skin settings"
1350msgstr "Skin-Einstellungen"
1351
1352#: ../../../inc/_core/__core.init.php:650
1353#: ../../../inc/plugins/views/_plugin_settings.form.php:105
1354msgid "Plugin settings"
1355msgstr "Plugin-Einstellungen"
1356
1357#: ../../../inc/_core/__core.init.php:653
1358msgid "Widgets"
1359msgstr "Widgets"
1360
1361#: ../../../inc/_core/__core.init.php:671
1362msgid "URLs"
1363msgstr "URLs"
1364
1365#: ../../../inc/_core/__core.init.php:674
1366msgid "SEO"
1367msgstr "SEO"
1368
1369#: ../../../inc/_core/__core.init.php:677
1370#: ../../../inc/collections/views/_coll_group_perm.form.php:102
1371#: ../../../inc/collections/views/_coll_user_perm.form.php:102
1372#: ../../../inc/files/views/_file_browse_set.form.php:52
1373#: ../../../inc/plugins/views/_plugin_settings.form.php:113
1374#: ../../../inc/plugins/views/_plugin_settings.form.php:127
1375msgid "Advanced"
1376msgstr "Erweitert"
1377
1378#: ../../../inc/_core/__core.init.php:685
1379msgid "User perms"
1380msgstr "Benutzerrechte"
1381
1382#: ../../../inc/_core/__core.init.php:688
1383msgid "Group perms"
1384msgstr "Gruppenrechte"
1385
1386#: ../../../inc/_core/__core.init.php:700
1387#: ../../../inc/files/views/_file_browse_set.form.php:56
1388#: ../../../skins/_subs.disp.php:54
1389msgid "Global settings"
1390msgstr "Globale Einstellungen"
1391
1392#: ../../../inc/_core/__core.init.php:710
1393#: ../../../inc/files/model/_fileroot.class.php:156
1394#: ../../../inc/users/views/_group.form.php:163
1395msgid "Skins"
1396msgstr "Skins"
1397
1398#: ../../../inc/_core/__core.init.php:713
1399#: ../../../inc/widgets/views/_widget_list_available.view.php:102
1400msgid "Plugins"
1401msgstr "Plugins"
1402
1403#: ../../../inc/_core/__core.init.php:716
1404#: ../../../inc/_core/__core.init.php:785
1405#: ../../../inc/_core/__core.init.php:805
1406#: ../../../inc/users/views/_group.form.php:161
1407msgid "Antispam"
1408msgstr "Antispam"
1409
1410#: ../../../inc/_core/__core.init.php:719
1411msgid "Regional"
1412msgstr "Regional"
1413
1414#: ../../../inc/_core/__core.init.php:725
1415#: ../../../inc/files/views/_file_browse_set.form.php:56
1416msgid "File types"
1417msgstr "Dateitypen"
1418
1419#: ../../../inc/_core/__core.init.php:728
1420msgid "Post types"
1421msgstr "Eintragstypen"
1422
1423#: ../../../inc/_core/__core.init.php:729
1424msgid "Post types management"
1425msgstr "Verwaltung von Eintragstypen"
1426
1427#: ../../../inc/_core/__core.init.php:732
1428#: ../../../inc/items/item_statuses.ctrl.php:41
1429msgid "Post statuses"
1430msgstr "Eintragsstatus"
1431
1432#: ../../../inc/_core/__core.init.php:733
1433msgid "Post statuses management"
1434msgstr "Verwaltung von Eintragsstatus"
1435
1436#: ../../../inc/_core/__core.init.php:745
1437#: ../../../inc/sessions/_sessions.init.php:221
1438msgid "Users"
1439msgstr "Benutzer"
1440
1441#: ../../../inc/_core/__core.init.php:746
1442msgid "User management"
1443msgstr "Benutzerverwaltung"
1444
1445#: ../../../inc/_core/__core.init.php:755
1446msgid "My profile"
1447msgstr "Mein Profil"
1448
1449#: ../../../inc/_core/__core.init.php:756
1450#: ../../../inc/_core/_template.funcs.php:287
1451msgid "User profile"
1452msgstr "Benutzerprofil"
1453
1454#: ../../../inc/_core/__core.init.php:775
1455msgid "System"
1456msgstr "System"
1457
1458#: ../../../inc/_core/__core.init.php:792
1459#: ../../../inc/antispam/views/_antispam_settings.form.php:61
1460#: ../../../multiblogs.php:418
1461msgid "Misc"
1462msgstr "Verschiedenes"
1463
1464#: ../../../inc/_core/_misc.funcs.php:847
1465msgid "Hello"
1466msgstr "Hallo"
1467
1468#: ../../../inc/_core/_misc.funcs.php:1268
1469#: ../../../inc/_core/_misc.funcs.php:1315
1470msgid "No response!"
1471msgstr "Keine Antwort!"
1472
1473#: ../../../inc/_core/_misc.funcs.php:1274
1474#: ../../../inc/_core/_misc.funcs.php:1321
1475msgid "Remote error"
1476msgstr "Entfernter Fehler"
1477
1478#: ../../../inc/_core/_misc.funcs.php:1298
1479#: ../../../inc/_core/_misc.funcs.php:1344
1480msgid "Response"
1481msgstr "Antwort"
1482
1483#: ../../../inc/_core/_misc.funcs.php:1684
1484#: ../../../inc/_core/_misc.funcs.php:1702
1485msgid "An unexpected error has occurred!"
1486msgstr "Ein unerwarteter Fehler ist aufgetreten!"
1487
1488#: ../../../inc/_core/_misc.funcs.php:1685
1489#: ../../../inc/_core/_misc.funcs.php:1703
1490msgid "If this error persists, please report it to the administrator."
1491msgstr "Falls dieser Fehler bestehen bleibt, melden Sie ihn bitte dem Administrator."
1492
1493#: ../../../inc/_core/_misc.funcs.php:1686
1494#: ../../../inc/_core/_misc.funcs.php:1710
1495#: ../../../inc/_core/_misc.funcs.php:1817
1496msgid "Additional information about this error:"
1497msgstr "Zusätzliche Informationen zu diesem Fehler:"
1498
1499#: ../../../inc/_core/_misc.funcs.php:1704
1500#: ../../../inc/_core/_misc.funcs.php:1811
1501msgid "Go back to home page"
1502msgstr "Zurück zur Startseite gehen"
1503
1504#: ../../../inc/_core/_misc.funcs.php:1808
1505msgid "Bad Request!"
1506msgstr "Ungültige Anforderung!"
1507
1508#: ../../../inc/_core/_misc.funcs.php:1809
1509msgid "The parameters of your request are invalid."
1510msgstr "Die Parameter Ihrer Anforderung sind ungültig."
1511
1512#: ../../../inc/_core/_misc.funcs.php:1810
1513msgid "If you have obtained this error by clicking on a link INSIDE of this site, please report the bad link to the administrator."
1514msgstr "Wenn Sie den Fehler erhalten haben, indem Sie auf einen Link INNERHALB dieser Seite geklickt haben, teilen Sie den fehlerhaften Link bitte dem Administrator mit."
1515
1516#: ../../../inc/_core/_misc.funcs.php:2150
1517msgid "DB Username"
1518msgstr "DB-Benutzername"
1519
1520#: ../../../inc/_core/_misc.funcs.php:2151
1521msgid "DB Database"
1522msgstr "DB-Datenbank"
1523
1524#: ../../../inc/_core/_misc.funcs.php:2152
1525msgid "DB Host"
1526msgstr "DB-Host"
1527
1528#: ../../../inc/_core/_misc.funcs.php:2153
1529msgid "DB tables prefix"
1530msgstr "DB-Tabellenpräfix"
1531
1532#: ../../../inc/_core/_misc.funcs.php:2154
1533msgid "DB connection charset"
1534msgstr "DB-Verbindungszeichensatz"
1535
1536#: ../../../inc/_core/_misc.funcs.php:3030
1537#: ../../../install/index.php:678
1538msgid "Manual"
1539msgstr "Anleitung"
1540
1541#: ../../../inc/_core/_misc.funcs.php:3030
1542msgid "Open relevant page in online manual"
1543msgstr "Entsprechende Seite in der Onlinehilfe öffnen"
1544
1545#: ../../../inc/_core/_misc.funcs.php:3459
1546msgid "Date issued (Default)"
1547msgstr "Veröffentlichungsdatum (Standard)"
1548
1549#: ../../../inc/_core/_misc.funcs.php:3460
1550msgid "Order (as explicitely specified)"
1551msgstr "Reihenfolge (wie angegeben)"
1552
1553#: ../../../inc/_core/_misc.funcs.php:3463
1554msgid "Date created"
1555msgstr "Erstellungsdatum"
1556
1557#: ../../../inc/_core/_misc.funcs.php:3464
1558msgid "Date last modified"
1559msgstr "Datum der letzten Veränderung"
1560
1561#: ../../../inc/_core/_misc.funcs.php:3465
1562#: ../../../inc/collections/views/_coll_general.form.php:64
1563msgid "URL \"filename\""
1564msgstr "URL-\"Dateiname\""
1565
1566#: ../../../inc/_core/_misc.funcs.php:3466
1567#: ../../../inc/items/views/_item_expert.form.php:277
1568#: ../../../inc/items/views/_item_list_full.view.php:181
1569#: ../../../inc/locales/_locale_settings.form.php:95
1570#: ../../../inc/locales/_locale_settings.form.php:287
1571#: ../../../inc/locales/_locale_settings.form.php:321
1572#: ../../../inc/plugins/views/_plugin_list.view.php:166
1573#: ../../../inc/plugins/views/_plugin_settings.form.php:115
1574msgid "Priority"
1575msgstr "Priorität"
1576
1577#: ../../../inc/_core/_misc.funcs.php:3467
1578msgid "Views"
1579msgstr "Ansichten"
1580
1581#: ../../../inc/_core/_misc.funcs.php:3468
1582msgid "Random order!"
1583msgstr "Zufällige Reihenfolge!"
1584
1585#: ../../../inc/_core/_param.funcs.php:110
1586#, php-format
1587msgid "Parameter &laquo;%s&raquo; is required!"
1588msgstr "Parameter &laquo;%s&raquo; ist erforderlich!"
1589
1590#: ../../../inc/_core/_param.funcs.php:191
1591#: ../../../inc/_core/_param.funcs.php:255
1592#, php-format
1593msgid "Illegal value received for parameter &laquo;%s&raquo;!"
1594msgstr "Illegalen Wert für Parameter &laquo;%s&raquo; empfangen!"
1595
1596#: ../../../inc/_core/_param.funcs.php:497
1597#: ../../../inc/users/model/_user.funcs.php:536
1598msgid "The email address is invalid."
1599msgstr "Die E-Mail-Adresse ist ungültig."
1600
1601#: ../../../inc/_core/_param.funcs.php:520
1602#, php-format
1603msgid "Supplied URL is invalid. (%s)"
1604msgstr "Angegebener URL ist ungültig. (%s)"
1605
1606#: ../../../inc/_core/_param.funcs.php:795
1607msgid "Please enter a valid time."
1608msgstr "Bitte geben Sie eine gültige Zeit an."
1609
1610#: ../../../inc/_core/_param.funcs.php:981
1611msgid "The phone number is invalid."
1612msgstr "Die Telefonnummer ist ungültig."
1613
1614#: ../../../inc/_core/_param.funcs.php:1012
1615#: ../../../inc/_core/_param.funcs.php:1017
1616#: ../../../inc/users/model/_user.funcs.php:560
1617msgid "Please enter your password twice."
1618msgstr "Bitte geben Sie Ihr Passwort zweimal an."
1619
1620#: ../../../inc/_core/_param.funcs.php:1024
1621#: ../../../inc/users/model/_user.funcs.php:566
1622msgid "You typed two different passwords."
1623msgstr "Sie haben zwei verschiedene Passwörter angegeben."
1624
1625#: ../../../inc/_core/_param.funcs.php:1030
1626#: ../../../inc/users/model/_user.funcs.php:570
1627#, php-format
1628msgid "The minimum password length is %d characters."
1629msgstr "Das Passwort muss mindestens %d Zeichen lang sein."
1630
1631#: ../../../inc/_core/_param.funcs.php:1595
1632#: ../../../inc/_core/_param.funcs.php:1599
1633msgid "Invalid XHTML."
1634msgstr "Ungültiges XHTML."
1635
1636#: ../../../inc/_core/_param.funcs.php:1707
1637#: ../../../inc/_core/_param.funcs.php:1713
1638msgid "Illegal content found (spam?)"
1639msgstr "Ungültiger Inhalt gefunden (Spam?)"
1640
1641#: ../../../inc/_core/_param.funcs.php:1708
1642#, php-format
1643msgid "Illegal content found: blacklisted word \"%s\""
1644msgstr "Ungültiger Inhalt gefunden: gebanntes Wort \"%s\""
1645
1646#: ../../../inc/_core/_param.funcs.php:1714
1647#, php-format
1648msgid "Illegal content found: blacklisted word &laquo;%s&raquo;"
1649msgstr "Ungültiger Inhalt gefunden: gebanntes Wort &laquo;%s&raquo;"
1650
1651#: ../../../inc/_core/_param.funcs.php:1768
1652msgid "Illegal CSS markup found: "
1653msgstr "Ungültiges CSS gefunden: "
1654
1655#: ../../../inc/_core/_param.funcs.php:1779
1656msgid "Illegal javascript markup found: "
1657msgstr "Illegales Javascript gefunden: "
1658
1659#: ../../../inc/_core/_param.funcs.php:1787
1660msgid "Illegal frame markup found: "
1661msgstr "Illegaler Frame gefunden: "
1662
1663#: ../../../inc/_core/_param.funcs.php:1795
1664msgid "Illegal object markup found: "
1665msgstr "Illegales Object gefunden: "
1666
1667#: ../../../inc/_core/_param.funcs.php:1807
1668#, php-format
1669msgid "(Note: To get rid of the above validation warnings, you can deactivate unwanted validation rules in your <a %s>Group settings</a>.)"
1670msgstr "(Hinweis: Um diese Warnungen nicht mehr zu sehen, können Sie ungewünschte Validierungsregeln in Ihren <a %s>Gruppeneinstellungen</a> deaktivieren.)"
1671
1672#: ../../../inc/_core/_template.funcs.php:235
1673#: ../../../inc/collections/views/_coll_seo.form.php:215
1674#: ../../../inc/widgets/widgets/_menu_link.widget.php:33
1675msgid "Archive directory"
1676msgstr "Archivverzeichnis"
1677
1678#: ../../../inc/_core/_template.funcs.php:236
1679#: ../../../inc/collections/views/_coll_seo.form.php:264
1680#: ../../../inc/widgets/widgets/_menu_link.widget.php:34
1681msgid "Category directory"
1682msgstr "Kategorieverzeichnis"
1683
1684# TRANS: %s is an item title
1685#. TRANS: %s is an item title
1686#: ../../../inc/_core/_template.funcs.php:270
1687#, php-format
1688msgid "Latest comments on %s"
1689msgstr "Neueste Kommentare zu %s"
1690
1691#: ../../../inc/_core/_template.funcs.php:274
1692#: ../../../inc/comments/_comments.ctrl.php:192
1693#: ../../../inc/widgets/widgets/_common_links.widget.php:171
1694#: ../../../inc/widgets/widgets/_menu_link.widget.php:35
1695#: ../../../inc/widgets/widgets/_menu_link.widget.php:148
1696#: ../../../skins/photoblog/_body_footer.inc.php:31
1697msgid "Latest comments"
1698msgstr "Neueste Kommentare"
1699
1700# TRANS: %s is an item title
1701#. TRANS: %s is an item title
1702#: ../../../inc/_core/_template.funcs.php:282
1703#, php-format
1704msgid "Feedback on %s"
1705msgstr "Feedback zu %s"
1706
1707#: ../../../inc/_core/_template.funcs.php:292
1708#: ../../../inc/collections/views/_coll_features.form.php:156
1709#: ../../../inc/widgets/widgets/_user_tools.widget.php:90
1710msgid "Subscriptions"
1711msgstr "Abonnements"
1712
1713#: ../../../inc/_core/_template.funcs.php:297
1714msgid "Send an email message"
1715msgstr "Eine E-Mail-Nachricht verschicken"
1716
1717#: ../../../inc/_core/_template.funcs.php:305
1718msgid "PREVIEW"
1719msgstr "VORSCHAU"
1720
1721#: ../../../inc/_core/_template.funcs.php:323
1722#: ../../../inc/items/views/_item_history.view.php:60
1723#: ../../../inc/items/views/_item_list_full.view.php:353
1724#: ../../../inc/sessions/views/_stats_goalhits.view.php:136
1725#: ../../../inc/sessions/views/_stats_hit_list.view.php:100
1726#: ../../../skins/_item_comment_form.inc.php:135
1727#: ../../../skins/basic/_item_feedback.inc.php:186
1728#: ../../../skins/glossyblue/_item_feedback.inc.php:320
1729msgid "User"
1730msgstr "Benutzer"
1731
1732#: ../../../inc/_core/_template.funcs.php:585
1733#: ../../../inc/widgets/widgets.ctrl.php:398
1734msgid "Update cancelled"
1735msgstr "Update abgebrochen"
1736
1737#: ../../../inc/_core/_template.funcs.php:586
1738msgid "Update paused"
1739msgstr "Update pausiert"
1740
1741#: ../../../inc/_core/_template.funcs.php:587
1742#: ../../../inc/widgets/widgets.ctrl.php:395
1743msgid "Changes pending"
1744msgstr "Ausstehende Änderungen"
1745
1746#: ../../../inc/_core/_template.funcs.php:588
1747#: ../../../inc/widgets/widgets.ctrl.php:396
1748msgid "Saving changes"
1749msgstr "Speichere Änderungen"
1750
1751#: ../../../inc/_core/_url.funcs.php:63
1752msgid "Invalid URL $code$ format"
1753msgstr "Ungültiges URL-$code$-Format"
1754
1755#: ../../../inc/_core/_url.funcs.php:75
1756#: ../../../inc/_core/_url.funcs.php:100
1757#: ../../../inc/_core/_url.funcs.php:117
1758#: ../../../inc/_core/_url.funcs.php:152
1759#, php-format
1760msgid "URI scheme \"%s\" not allowed."
1761msgstr "URI-Schema \"%s\" nicht erlaubt."
1762
1763#: ../../../inc/_core/_url.funcs.php:76
1764#: ../../../inc/_core/_url.funcs.php:101
1765#: ../../../inc/_core/_url.funcs.php:118
1766#: ../../../inc/_core/_url.funcs.php:153
1767msgid "URI scheme not allowed."
1768msgstr "URI-Schema nicht erlaubt."
1769
1770#: ../../../inc/_core/_url.funcs.php:83
1771#, php-format
1772msgid "Invalid email link: %s."
1773msgstr "Ungültiger E-Mail-Link: %s."
1774
1775#: ../../../inc/_core/_url.funcs.php:84
1776msgid "Invalid email link."
1777msgstr "Ungültiger E-Mail-Link."
1778
1779#: ../../../inc/_core/_url.funcs.php:89
1780#, php-format
1781msgid "Supplied email address (%s) is invalid."
1782msgstr "Die angegebene E-Mail-Adresse (%s) ist ungültig."
1783
1784#: ../../../inc/_core/_url.funcs.php:90
1785msgid "Invalid email address."
1786msgstr "Ungültige E-Mail-Adresse."
1787
1788#: ../../../inc/_core/_url.funcs.php:106
1789msgid "Invalid class ID format"
1790msgstr "Ungültiges Format der Klassen-ID"
1791
1792#: ../../../inc/_core/_url.funcs.php:143
1793#, php-format
1794msgid "Invalid URL format (%s)."
1795msgstr "Ungültiges URL-Format (%s)."
1796
1797#: ../../../inc/_core/_url.funcs.php:144
1798msgid "Invalid URL format."
1799msgstr "Ungültiges URL-Format."
1800
1801#: ../../../inc/_core/_url.funcs.php:161
1802#, php-format
1803msgid "URL \"%s\" must be absolute."
1804msgstr "URL \"%s\" muss absolut sein."
1805
1806#: ../../../inc/_core/_url.funcs.php:161
1807msgid "URL must be absolute."
1808msgstr "URL muss absolut sein."
1809
1810#: ../../../inc/_core/_url.funcs.php:168
1811#, php-format
1812msgid "URL \"%s\" must be a full path starting with \"/\" or an anchor starting with \"#\"."
1813msgstr "URL \"%s\" muss ein voller Pfad sein und mit \"/\" starten oder ein Anker sein und mit \"#\" starten."
1814
1815#: ../../../inc/_core/_url.funcs.php:169
1816msgid "URL must be a full path starting with \"/\" or an anchor starting with \"#\"."
1817msgstr "URL muss ein voller Pfad sein und mit \"/\" starten oder ein Anker sein und mit \"#\" starten."
1818
1819#: ../../../inc/_core/_url.funcs.php:179
1820#, php-format
1821msgid "URL \"%s\" not allowed: blacklisted word \"%s\"."
1822msgstr "URL \"%s\" nicht erlaubt: Gebanntes Wort \"%s\"."
1823
1824#: ../../../inc/_core/_url.funcs.php:180
1825msgid "URL not allowed"
1826msgstr "URL nicht erlaubt"
1827
1828#: ../../../inc/_core/model/dataobjects/_dataobject.class.php:395
1829msgid "The following relations prevent deletion:"
1830msgstr "Die folgenden Zugehörigkeiten verhindern die Löschung:"
1831
1832#: ../../../inc/_core/model/dataobjects/_dataobject.class.php:397
1833msgid "Please delete related objects before you proceed."
1834msgstr "Bitte löschen Sie die zugehörigen Objekte, bevor Sie fortfahren."
1835
1836#: ../../../inc/_core/model/dataobjects/_dataobject.class.php:426
1837msgid "WARNING: Deleting this object will also delete:"
1838msgstr "WARNUNG: Das Löschen dieses Objektes wird auch folgendes löschen:"
1839
1840#: ../../../inc/_core/model/dataobjects/_dataobject.class.php:431
1841#: ../../../inc/_core/ui/results/_resultsel.class.php:541
1842#: ../../../inc/collections/collections.ctrl.php:397
1843#: ../../../inc/plugins/plugins.ctrl.php:940
1844msgid "THIS CANNOT BE UNDONE!"
1845msgstr "DIES KANN NICHT RÜCKGÄNGIG GEMACHT WERDEN!"
1846
1847#: ../../../inc/_core/model/dataobjects/_dataobject.class.php:439
1848#: ../../../inc/_core/ui/results/_resultsel.class.php:555
1849#: ../../../inc/collections/collections.ctrl.php:421
1850#: ../../../inc/plugins/plugins.ctrl.php:942
1851#: ../../../install/index.php:622
1852msgid "I am sure!"
1853msgstr "Ich bin mir sicher!"
1854
1855#: ../../../inc/_core/model/dataobjects/_dataobject.class.php:450
1856#: ../../../inc/_core/ui/results/_resultsel.class.php:563
1857#: ../../../inc/collections/collections.ctrl.php:429
1858#: ../../../install/index.php:627
1859msgid "CANCEL"
1860msgstr "ABBRECHEN"
1861
1862#: ../../../inc/_core/model/dataobjects/_dataobject.class.php:620
1863#, php-format
1864msgid "Created on %s by %s"
1865msgstr "Erstellt am %s von %s"
1866
1867#: ../../../inc/_core/model/dataobjects/_dataobject.class.php:625
1868#, php-format
1869msgid "Created by %s"
1870msgstr "Erstellt von %s"
1871
1872#: ../../../inc/_core/model/dataobjects/_dataobject.class.php:630
1873#, php-format
1874msgid "Created on %s"
1875msgstr "Erstellt am %s"
1876
1877#: ../../../inc/_core/model/dataobjects/_dataobject.class.php:640
1878#, php-format
1879msgid "Last mod on %s by %s"
1880msgstr "Letzte Änderung am %s von %s"
1881
1882#: ../../../inc/_core/model/dataobjects/_dataobject.class.php:645
1883#, php-format
1884msgid "Last mod by %s"
1885msgstr "Letzte Änderung von %s"
1886
1887#: ../../../inc/_core/model/dataobjects/_dataobject.class.php:650
1888#, php-format
1889msgid "Last mod on %s"
1890msgstr "Letzte Änderung am %s"
1891
1892#. TRANS: the default value for option lists where "None" is allowed
1893#: ../../../inc/_core/model/dataobjects/_dataobjectcache.class.php:152
1894#: ../../../inc/_core/ui/results/_resultsel.class.php:323
1895#: ../../../inc/collections/views/_coll_advanced.form.php:132
1896#: ../../../inc/settings/views/_features.form.php:95
1897#: ../../../inc/widgets/widgets/_item_list.widget.php:103
1898msgid "None"
1899msgstr "Kein"
1900
1901#: ../../../inc/_core/model/dataobjects/_dataobjectlist2.class.php:247
1902#: ../../../inc/_core/model/dataobjects/_dataobjectlist2.class.php:300
1903#: ../../../inc/generic/model/_genericorderedcache.class.php:67
1904#: ../../../inc/generic/model/_genericorderedcache.class.php:120
1905msgid "Cannot edit entry!"
1906msgstr "Kann Eintrag nicht ändern!"
1907
1908#: ../../../inc/_core/model/dataobjects/_dataobjectlist2.class.php:248
1909#: ../../../inc/_core/model/dataobjects/_dataobjectlist2.class.php:301
1910#: ../../../inc/generic/model/_genericorderedcache.class.php:68
1911#: ../../../inc/generic/model/_genericorderedcache.class.php:121
1912msgid "Requested entry does not exist any longer."
1913msgstr "Angeforderter Eintrag existiert nicht mehr."
1914
1915#: ../../../inc/_core/model/dataobjects/_dataobjectlist2.class.php:280
1916#: ../../../inc/generic/model/_genericorderedcache.class.php:100
1917msgid "This element is already at the top."
1918msgstr "Dieses Element ist bereits ganz oben."
1919
1920#: ../../../inc/_core/model/dataobjects/_dataobjectlist2.class.php:333
1921#: ../../../inc/generic/model/_genericorderedcache.class.php:153
1922msgid "This element is already at the bottom."
1923msgstr "Dieses Element ist bereits ganz unten."
1924
1925#: ../../../inc/_core/ui/_iconlegend.class.php:76
1926msgid "Legend"
1927msgstr "Legende"
1928
1929#: ../../../inc/_core/ui/_uiwidget.class.php:297
1930msgid "No results."
1931msgstr "Keine Ergebnisse."
1932
1933#: ../../../inc/_core/ui/_uiwidget.class.php:493
1934#: ../../../inc/files/views/_file_browse.view.php:127
1935#: ../../../inc/plugins/views/_plugin_list.view.php:184
1936msgid "Apply"
1937msgstr "Anwenden"
1938
1939#: ../../../inc/_core/ui/_uiwidget.class.php:493
1940#: ../../../inc/files/views/_file_browse_set.form.php:67
1941#: ../../../inc/widgets/widgets/_media_index.widget.php:82
1942msgid "Columns"
1943msgstr "Spalten"
1944
1945#: ../../../inc/_core/ui/_uiwidget.class.php:509
1946msgid "Filter list"
1947msgstr "Liste filtern"
1948
1949#: ../../../inc/_core/ui/_uiwidget.class.php:509
1950#: ../../../inc/items/views/_item_list_sidebar.view.php:62
1951msgid "Filters"
1952msgstr "Filter"
1953
1954#: ../../../inc/_core/ui/_uiwidget.class.php:803
1955#: ../../../inc/_core/ui/_uiwidget.class.php:836
1956#: ../../../inc/files/model/_filelist.class.php:659
1957msgid "Change Order"
1958msgstr "Sortierung ändern"
1959
1960#: ../../../inc/_core/ui/_uiwidget.class.php:809
1961#: ../../../skins_adm/_adminUI_general.class.php:768
1962#: ../../../skins_adm/_adminUI_general.class.php:770
1963#: ../../../skins_adm/_adminUI_general.class.php:853
1964#: ../../../skins_adm/_adminUI_general.class.php:855
1965#: ../../../skins_adm/chicago/_adminUI.class.php:218
1966#: ../../../skins_adm/chicago/_adminUI.class.php:220
1967msgid "Ascending order"
1968msgstr "Aufsteigende Reihenfolge"
1969
1970#: ../../../inc/_core/ui/_uiwidget.class.php:814
1971#: ../../../skins_adm/_adminUI_general.class.php:772
1972#: ../../../skins_adm/_adminUI_general.class.php:774
1973#: ../../../skins_adm/_adminUI_general.class.php:857
1974#: ../../../skins_adm/_adminUI_general.class.php:859
1975#: ../../../skins_adm/chicago/_adminUI.class.php:222
1976#: ../../../skins_adm/chicago/_adminUI.class.php:224
1977msgid "Descending order"
1978msgstr "Absteigende Reihenfolge"
1979
1980#: ../../../inc/_core/ui/forms/_form.class.php:1060
1981#: ../../../inc/collections/views/_coll_general.form.php:91
1982#: ../../../inc/cron/views/_cronjob.view.php:44
1983msgid "days"
1984msgstr "Tage"
1985
1986#: ../../../inc/_core/ui/forms/_form.class.php:1069
1987#: ../../../inc/cron/views/_cronjob.view.php:48
1988msgid "hours"
1989msgstr "Stunden"
1990
1991#: ../../../inc/_core/ui/forms/_form.class.php:1079
1992#: ../../../inc/cron/views/_cronjob.view.php:52
1993msgid "minutes"
1994msgstr "Minuten"
1995
1996#: ../../../inc/_core/ui/forms/_form.class.php:1356
1997msgid ""
1998"You have modified this form but you haven't submitted it yet.\\n"
1999"You are about to lose your edits.\\n"
2000"Are you sure?"
2001msgstr ""
2002"Sie haben dieses Formular verändert, aber noch nicht abgeschickt.\\n"
2003"Sie sind dabei, Ihre Änderungen zu verlieren.\\n"
2004"Sind Sie sicher?"
2005
2006#: ../../../inc/_core/ui/forms/_form.class.php:1360
2007#, php-format
2008msgid ""
2009"You have modified the form \\\"%s\\\"\\n"
2010"but you haven't submitted it yet.\\n"
2011"You are about to lose your edits.\\n"
2012"Are you sure?"
2013msgstr ""
2014"Sie haben das Formular \\\"%s\\\" verändert,\\n"
2015"aber noch nicht abgeschickt.\\n"
2016"Sie sind dabei, Ihre Änderungen zu verlieren.\\n"
2017"Sind Sie sicher?"
2018
2019#: ../../../inc/_core/ui/results/_results.class.php:1422
2020#: ../../../inc/widgets/views/_widget_list.view.php:147
2021msgid "Move up!"
2022msgstr "Aufwärts bewegen!"
2023
2024#: ../../../inc/_core/ui/results/_results.class.php:1427
2025msgid "Move down! (reverse sort)"
2026msgstr "Abwärts bewegen! (umgekehrte Sortierung)"
2027
2028#: ../../../inc/_core/ui/results/_results.class.php:1442
2029#: ../../../inc/widgets/views/_widget_list.view.php:155
2030msgid "Move down!"
2031msgstr "Abwärts bewegen!"
2032
2033#: ../../../inc/_core/ui/results/_results.class.php:1447
2034msgid "Move up! (reverse sort)"
2035msgstr "Aufwärts bewegen! (umgekehrte Sortierung)"
2036
2037# TRANS: Pages x _to_ y
2038#. TRANS: Pages x _to_ y
2039#: ../../../inc/_core/ui/results/_results.class.php:1739
2040#: ../../../inc/sessions/views/_stats_goalhits.view.php:113
2041#: ../../../inc/sessions/views/_stats_search_keywords.view.php:182
2042msgid "to"
2043msgstr "bis"
2044
2045#: ../../../inc/_core/ui/results/_results.class.php:1788
2046msgid "Sorry, there is nothing to display..."
2047msgstr "Entschuldigung, es gibt nichts anzuzeigen..."
2048
2049#. TRANS: abbr. for "Selection"
2050#: ../../../inc/_core/ui/results/_resultsel.class.php:99
2051msgid "Sel"
2052msgstr "Ausw."
2053
2054#: ../../../inc/_core/ui/results/_resultsel.class.php:200
2055msgid "Selection name"
2056msgstr "Auswahlname"
2057
2058#: ../../../inc/_core/ui/results/_resultsel.class.php:206
2059msgid "Update selection"
2060msgstr "Auswahl aktualisieren"
2061
2062#: ../../../inc/_core/ui/results/_resultsel.class.php:310
2063msgid "Selection"
2064msgstr "Auswahl"
2065
2066#: ../../../inc/_core/ui/results/_resultsel.class.php:319
2067msgid "New selection"
2068msgstr "Neue Auswahl"
2069
2070#: ../../../inc/_core/ui/results/_resultsel.class.php:428
2071msgid "Cannot create a selection with an empty name"
2072msgstr "Kann keine Auswahl mit leerem Namen erstellen"
2073
2074#: ../../../inc/_core/ui/results/_resultsel.class.php:460
2075msgid "Selection created."
2076msgstr "Auswahl erstellt."
2077
2078#: ../../../inc/_core/ui/results/_resultsel.class.php:472
2079msgid "Please provide a selection name."
2080msgstr "Bitte geben Sie einen Auswahlnamen an."
2081
2082#: ../../../inc/_core/ui/results/_resultsel.class.php:488
2083msgid "Obsolete selection entries deleted."
2084msgstr "Veraltete Auswahleinträge gelöscht."
2085
2086#: ../../../inc/_core/ui/results/_resultsel.class.php:503
2087msgid "New selections entries inserted."
2088msgstr "Neue Auswahleinträge eingefügt."
2089
2090#: ../../../inc/_core/ui/results/_resultsel.class.php:515
2091msgid "Selection copied."
2092msgstr "Auswahl kopiert."
2093
2094#: ../../../inc/_core/ui/results/_resultsel.class.php:524
2095msgid "Selection links copied."
2096msgstr "Auswahllinks kopiert."
2097
2098#: ../../../inc/_core/ui/results/_resultsel.class.php:537
2099#, php-format
2100msgid "Delete selection &laquo;%s&raquo;?"
2101msgstr "Auswahl &laquo;%s&raquo; löschen?"
2102
2103#: ../../../inc/_core/ui/results/_resultsel.class.php:539
2104msgid "Cascading deletes!"
2105msgstr "Kaskadierende Löschungen!"
2106
2107#: ../../../inc/_core/ui/results/_resultsel.class.php:576
2108msgid "Selection attachments deleted."
2109msgstr "Auswahlanhänge gelöscht."
2110
2111#: ../../../inc/_core/ui/results/_resultsel.class.php:580
2112msgid "Selection deleted."
2113msgstr "Auswahl gelöscht."
2114
2115#: ../../../inc/_main.inc.php:491
2116#: ../../../inc/_main.inc.php:502
2117msgid "The login window has expired. Please try again."
2118msgstr "Das Anmeldefenster ist nicht mehr gültig. Bitte versuchen Sie es erneut."
2119
2120#: ../../../inc/_main.inc.php:496
2121msgid "Either you have not enabled cookies or this login window has expired."
2122msgstr "Entweder haben Sie Cookies nicht aktiviert oder das Anmeldefenster ist nicht mehr gültig."
2123
2124#: ../../../inc/_main.inc.php:532
2125msgid "Wrong login/password."
2126msgstr "Falscher Benutzername/falsches Passwort."
2127
2128#: ../../../inc/_main.inc.php:565
2129msgid "You must log in!"
2130msgstr "Sie müssen sich anmelden!"
2131
2132#: ../../../inc/_main.inc.php:583
2133msgid "You must validate your email address before you can log in."
2134msgstr "Sie müssen Ihre E-Mail-Adresse bestätigen, bevor Sie sich anmelden können."
2135
2136#: ../../../inc/_vars.inc.php:192
2137msgid "Sunday"
2138msgstr "Sonntag"
2139
2140#: ../../../inc/_vars.inc.php:193
2141msgid "Monday"
2142msgstr "Montag"
2143
2144#: ../../../inc/_vars.inc.php:194
2145msgid "Tuesday"
2146msgstr "Dienstag"
2147
2148#: ../../../inc/_vars.inc.php:195
2149msgid "Wednesday"
2150msgstr "Mittwoch"
2151
2152#: ../../../inc/_vars.inc.php:196
2153msgid "Thursday"
2154msgstr "Donnerstag"
2155
2156#: ../../../inc/_vars.inc.php:197
2157msgid "Friday"
2158msgstr "Freitag"
2159
2160#: ../../../inc/_vars.inc.php:198
2161msgid "Saturday"
2162msgstr "Samstag"
2163
2164# TRANS: abbrev. for Sunday
2165#. TRANS: abbrev. for Sunday
2166#: ../../../inc/_vars.inc.php:202
2167#: ../../../skins_adm/_html_header.inc.php:257
2168msgid "Sun"
2169msgstr "So"
2170
2171# TRANS: abbrev. for Monday
2172#. TRANS: abbrev. for Monday
2173#: ../../../inc/_vars.inc.php:204
2174#: ../../../skins_adm/_html_header.inc.php:257
2175msgid "Mon"
2176msgstr "Mo"
2177
2178# TRANS: abbrev. for Tuesday
2179#. TRANS: abbrev. for Tuesday
2180#: ../../../inc/_vars.inc.php:206
2181#: ../../../skins_adm/_html_header.inc.php:257
2182msgid "Tue"
2183msgstr "Di"
2184
2185# TRANS: abbrev. for Wednesday
2186#. TRANS: abbrev. for Wednesday
2187#: ../../../inc/_vars.inc.php:208
2188#: ../../../skins_adm/_html_header.inc.php:257
2189msgid "Wed"
2190msgstr "Mi"
2191
2192# TRANS: abbrev. for Thursday
2193#. TRANS: abbrev. for Thursday
2194#: ../../../inc/_vars.inc.php:210
2195#: ../../../skins_adm/_html_header.inc.php:257
2196msgid "Thu"
2197msgstr "Do"
2198
2199# TRANS: abbrev. for Friday
2200#. TRANS: abbrev. for Friday
2201#: ../../../inc/_vars.inc.php:212
2202#: ../../../skins_adm/_html_header.inc.php:257
2203msgid "Fri"
2204msgstr "Fr"
2205
2206# TRANS: abbrev. for Saturday
2207#. TRANS: abbrev. for Saturday
2208#: ../../../inc/_vars.inc.php:214
2209#: ../../../skins_adm/_html_header.inc.php:257
2210msgid "Sat"
2211msgstr "Sa"
2212
2213# TRANS: abbrev. for Sunday
2214#. TRANS: abbrev. for Sunday
2215#: ../../../inc/_vars.inc.php:218
2216msgid " S "
2217msgstr " S "
2218
2219# TRANS: abbrev. for Monday
2220#. TRANS: abbrev. for Monday
2221#: ../../../inc/_vars.inc.php:220
2222msgid " M "
2223msgstr " M "
2224
2225# TRANS: short for (file)Type
2226# TRANS: abbrev. for Tuesday
2227#. TRANS: abbrev. for Tuesday
2228#. TRANS: short for (file)Type
2229#: ../../../inc/_vars.inc.php:222
2230#: ../../../inc/files/views/_file_list.inc.php:114
2231msgid " T "
2232msgstr " D "
2233
2234# TRANS: abbrev. for Wednesday
2235#. TRANS: abbrev. for Wednesday
2236#: ../../../inc/_vars.inc.php:224
2237msgid " W "
2238msgstr " M "
2239
2240# TRANS: abbrev. for Thursday
2241#. TRANS: abbrev. for Thursday
2242#: ../../../inc/_vars.inc.php:226
2243msgid " T "
2244msgstr " D "
2245
2246# TRANS: abbrev. for Friday
2247#. TRANS: abbrev. for Friday
2248#: ../../../inc/_vars.inc.php:228
2249msgid " F "
2250msgstr " F "
2251
2252# TRANS: abbrev. for Saturday
2253#. TRANS: abbrev. for Saturday
2254#: ../../../inc/_vars.inc.php:230
2255msgid " S "
2256msgstr " S "
2257
2258#: ../../../inc/_vars.inc.php:234
2259#: ../../../skins_adm/_html_header.inc.php:256
2260msgid "January"
2261msgstr "Januar"
2262
2263#: ../../../inc/_vars.inc.php:235
2264#: ../../../skins_adm/_html_header.inc.php:256
2265msgid "February"
2266msgstr "Februar"
2267
2268#: ../../../inc/_vars.inc.php:236
2269#: ../../../skins_adm/_html_header.inc.php:256
2270msgid "March"
2271msgstr "März"
2272
2273#: ../../../inc/_vars.inc.php:237
2274#: ../../../skins_adm/_html_header.inc.php:256
2275msgid "April"
2276msgstr "April"
2277
2278#. TRANS: space at the end only to differentiate from short form. You don't need to keep it in the translation.
2279#: ../../../inc/_vars.inc.php:239
2280msgid "May "
2281msgstr "Mai "
2282
2283#: ../../../inc/_vars.inc.php:240
2284#: ../../../skins_adm/_html_header.inc.php:256
2285msgid "June"
2286msgstr "Juni"
2287
2288#: ../../../inc/_vars.inc.php:241
2289#: ../../../skins_adm/_html_header.inc.php:256
2290msgid "July"
2291msgstr "Juli"
2292
2293#: ../../../inc/_vars.inc.php:242
2294#: ../../../skins_adm/_html_header.inc.php:256
2295msgid "August"
2296msgstr "August"
2297
2298#: ../../../inc/_vars.inc.php:243
2299#: ../../../skins_adm/_html_header.inc.php:256
2300msgid "September"
2301msgstr "September"
2302
2303#: ../../../inc/_vars.inc.php:244
2304#: ../../../skins_adm/_html_header.inc.php:256
2305msgid "October"
2306msgstr "Oktober"
2307
2308#: ../../../inc/_vars.inc.php:245
2309#: ../../../skins_adm/_html_header.inc.php:256
2310msgid "November"
2311msgstr "November"
2312
2313#: ../../../inc/_vars.inc.php:246
2314#: ../../../skins_adm/_html_header.inc.php:256
2315msgid "December"
2316msgstr "Dezember"
2317
2318# TRANS: abbrev. for January
2319#. TRANS: abbrev. for January
2320#: ../../../inc/_vars.inc.php:250
2321msgid "Jan"
2322msgstr "Jan"
2323
2324# TRANS: abbrev. for February
2325#. TRANS: abbrev. for February
2326#: ../../../inc/_vars.inc.php:252
2327msgid "Feb"
2328msgstr "Feb"
2329
2330# TRANS: abbrev. for March
2331#. TRANS: abbrev. for March
2332#: ../../../inc/_vars.inc.php:254
2333msgid "Mar"
2334msgstr "Mär"
2335
2336# TRANS: abbrev. for April
2337#. TRANS: abbrev. for April
2338#: ../../../inc/_vars.inc.php:256
2339msgid "Apr"
2340msgstr "Apr"
2341
2342# TRANS: abbrev. for May
2343#. TRANS: abbrev. for May
2344#: ../../../inc/_vars.inc.php:258
2345#: ../../../skins_adm/_html_header.inc.php:256
2346msgid "May"
2347msgstr "Mai"
2348
2349# TRANS: abbrev. for June
2350#. TRANS: abbrev. for June
2351#: ../../../inc/_vars.inc.php:260
2352msgid "Jun"
2353msgstr "Jun"
2354
2355# TRANS: abbrev. for July
2356#. TRANS: abbrev. for July
2357#: ../../../inc/_vars.inc.php:262
2358msgid "Jul"
2359msgstr "Jul"
2360
2361# TRANS: abbrev. for August
2362#. TRANS: abbrev. for August
2363#: ../../../inc/_vars.inc.php:264
2364msgid "Aug"
2365msgstr "Aug"
2366
2367# TRANS: abbrev. for September
2368#. TRANS: abbrev. for September
2369#: ../../../inc/_vars.inc.php:266
2370msgid "Sep"
2371msgstr "Sep"
2372
2373# TRANS: abbrev. for October
2374#. TRANS: abbrev. for October
2375#: ../../../inc/_vars.inc.php:268
2376msgid "Oct"
2377msgstr "Okt"
2378
2379# TRANS: abbrev. for November
2380#. TRANS: abbrev. for November
2381#: ../../../inc/_vars.inc.php:270
2382msgid "Nov"
2383msgstr "Nov"
2384
2385# TRANS: abbrev. for December
2386#. TRANS: abbrev. for December
2387#: ../../../inc/_vars.inc.php:272
2388msgid "Dec"
2389msgstr "Dez"
2390
2391#: ../../../inc/_vars.inc.php:276
2392#: ../../../inc/collections/views/_coll_features.form.php:91
2393#: ../../../inc/items/model/_item.funcs.php:757
2394#: ../../../inc/items/views/_item_list_sidebar.view.php:95
2395msgid "Published"
2396msgstr "Veröffentlicht"
2397
2398#: ../../../inc/_vars.inc.php:277
2399#: ../../../inc/collections/views/_coll_advanced.form.php:114
2400#: ../../../inc/collections/views/_coll_features.form.php:92
2401#: ../../../inc/items/model/_item.funcs.php:769
2402#: ../../../inc/items/views/_item_list_sidebar.view.php:107
2403msgid "Deprecated"
2404msgstr "Missbilligt"
2405
2406#: ../../../inc/_vars.inc.php:278
2407#: ../../../inc/items/model/_item.funcs.php:772
2408#: ../../../inc/items/views/_item_list_sidebar.view.php:110
2409msgid "Redirected"
2410msgstr "Umgeleitet"
2411
2412#: ../../../inc/_vars.inc.php:279
2413#: ../../../inc/items/items.ctrl.php:344
2414#: ../../../inc/items/items.ctrl.php:446
2415#: ../../../inc/items/model/_item.funcs.php:760
2416#: ../../../inc/items/views/_item_list_sidebar.view.php:98
2417msgid "Protected"
2418msgstr "Geschützt"
2419
2420#: ../../../inc/_vars.inc.php:280
2421#: ../../../inc/items/items.ctrl.php:344
2422#: ../../../inc/items/items.ctrl.php:446
2423#: ../../../inc/items/model/_item.funcs.php:763
2424#: ../../../inc/items/views/_item_list_sidebar.view.php:101
2425msgid "Private"
2426msgstr "Privat"
2427
2428#: ../../../inc/_vars.inc.php:281
2429#: ../../../inc/collections/views/_coll_features.form.php:90
2430#: ../../../inc/items/model/_item.funcs.php:766
2431#: ../../../inc/items/views/_item_list_sidebar.view.php:104
2432msgid "Draft"
2433msgstr "Entwurf"
2434
2435#: ../../../inc/antispam/antispam_list.ctrl.php:73
2436#, php-format
2437msgid "The keyword &laquo;%s&raquo; is too short, it has to be a minimum of 5 characters!"
2438msgstr "Das Stichwort &laquo;%s&raquo; ist zu kurz, es muss mindestens 5 Zeichen besitzen!"
2439
2440#: ../../../inc/antispam/antispam_list.ctrl.php:83
2441#, php-format
2442msgid "Deleted %d logged hits matching &laquo;%s&raquo;."
2443msgstr "%d auf &laquo;%s&raquo; passende Zugriffsaufzeichnungen gelöscht."
2444
2445#: ../../../inc/antispam/antispam_list.ctrl.php:93
2446#, php-format
2447msgid "Deleted %d comments matching &laquo;%s&raquo;."
2448msgstr "%d auf &laquo;%s&raquo; passende Kommentare gelöscht."
2449
2450#: ../../../inc/antispam/antispam_list.ctrl.php:100
2451#, php-format
2452msgid "The keyword &laquo;%s&raquo; has been blacklisted locally."
2453msgstr "Das Stichwort &laquo;%s&raquo; wurde lokal geblockt."
2454
2455#: ../../../inc/antispam/antispam_list.ctrl.php:123
2456#, php-format
2457msgid "Removing entry #%d from the ban list..."
2458msgstr "Entferne Eintrag #%d aus der Bannliste..."
2459
2460#: ../../../inc/antispam/antispam_settings.ctrl.php:61
2461#: ../../../inc/files/file_settings.ctrl.php:75
2462#: ../../../inc/plugins/plugins.ctrl.php:736
2463#: ../../../inc/settings/features.ctrl.php:98
2464msgid "Restored default values."
2465msgstr "Standardwerte wiederhergestellt."
2466
2467#: ../../../inc/antispam/antispam_settings.ctrl.php:65
2468#: ../../../inc/antispam/antispam_settings.ctrl.php:118
2469#: ../../../inc/files/file_settings.ctrl.php:79
2470#: ../../../inc/files/file_settings.ctrl.php:155
2471#: ../../../inc/plugins/plugins.ctrl.php:740
2472#: ../../../inc/settings/features.ctrl.php:102
2473#: ../../../inc/settings/features.ctrl.php:193
2474msgid "Settings have not changed."
2475msgstr "Einstellungen wurden nicht verändert."
2476
2477#: ../../../inc/antispam/antispam_settings.ctrl.php:70
2478#: ../../../inc/antispam/antispam_settings.ctrl.php:73
2479msgid "The threshold must be between -100 and 100."
2480msgstr "Der Grenzwert muss zwischen -100 und 100 liegen."
2481
2482#: ../../../inc/antispam/antispam_settings.ctrl.php:92
2483msgid "Spam weight has to be in the range of 0-100."
2484msgstr "Spamgewichtung muss im Bereich 0-100 liegen."
2485
2486#: ../../../inc/antispam/antispam_settings.ctrl.php:114
2487#: ../../../inc/settings/features.ctrl.php:189
2488msgid "Settings updated."
2489msgstr "Einstellungen aktualisiert."
2490
2491#: ../../../inc/antispam/model/_antispam.funcs.php:166
2492msgid "Reporting abuse to b2evolution aborted (Running on localhost)."
2493msgstr "Missbrauchsmeldung an b2evolution abgebrochen (laufe auf localhost)."
2494
2495#: ../../../inc/antispam/model/_antispam.funcs.php:191
2496#, php-format
2497msgid "Reported abuse to %s."
2498msgstr "Missbrauch an %s gemeldet."
2499
2500#: ../../../inc/antispam/model/_antispam.funcs.php:195
2501msgid "Failed to report abuse to b2evolution.net."
2502msgstr "Konnte Missbrauch nicht an b2evolution.net melden."
2503
2504#: ../../../inc/antispam/model/_antispam.funcs.php:219
2505msgid "Latest update timestamp"
2506msgstr "Zeitstempel der letzten Aktualisierung"
2507
2508#: ../../../inc/antispam/model/_antispam.funcs.php:235
2509#, php-format
2510msgid "Requesting abuse list from %s..."
2511msgstr "Fordere Missbrauchsliste von %s an..."
2512
2513#: ../../../inc/antispam/model/_antispam.funcs.php:247
2514msgid "Incomplete reponse."
2515msgstr "Unvollständige Antwort."
2516
2517#: ../../../inc/antispam/model/_antispam.funcs.php:255
2518msgid "No new blacklisted strings are available."
2519msgstr "Es sind keine neuen geblockten Zeichenketten verfügbar."
2520
2521#: ../../../inc/antispam/model/_antispam.funcs.php:259
2522msgid "Adding strings to local blacklist:"
2523msgstr "Füge Zeichenketten zur lokalen Bannliste hinzu:"
2524
2525#: ../../../inc/antispam/model/_antispam.funcs.php:264
2526#: ../../../inc/antispam/model/_antispam.funcs.php:269
2527msgid "Adding:"
2528msgstr "Füge hinzu:"
2529
2530#: ../../../inc/antispam/model/_antispam.funcs.php:265
2531msgid "OK."
2532msgstr "OK."
2533
2534#: ../../../inc/antispam/model/_antispam.funcs.php:270
2535msgid "Not necessary! (Already handled)"
2536msgstr "Nicht nötig (bereits vorhanden)!"
2537
2538#: ../../../inc/antispam/model/_antispam.funcs.php:276
2539msgid "New latest update timestamp"
2540msgstr "Neuer Zeitstempel der letzten Aktualisierung"
2541
2542#: ../../../inc/antispam/model/_antispam.funcs.php:281
2543#: ../../../inc/cron/jobs/_post_notifications.job.php:64
2544#: ../../../inc/items/model/_item.class.php:3695
2545msgid "Done."
2546msgstr "Erledigt."
2547
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches