Code Styling Project

It’s not a bug, it’s always a feature.
  • Deutsch
  • English
  • rss
  • Home
  • Blog
  • Impressum
  • Entwicklungen
  • Fehlerbehebungen
  • Anleitungen

Änderungen der Sprachdateien für WordPress 3.4 Core

codestyling | 24. Mai 2012 | 07:18

Ich analysiere ja immer noch die kommende Version von WordPress, um im Vorfeld sicher zu sein, dass alles immer noch stimmig ist und meine Plugins funktionstüchtig bleiben. Deswegen laufen bei mir lokal auch Testplugins mit, die mich darauf hinweisen, dass etwas nicht stimmt.
Eines meiner Testplugins ist nun angesprungen und meint, es stimmt was mit den Sprachdateien von WordPress selbst nicht mehr. Also hab ich wieder den Code durchforstet und wieder Neuerungen gefunden, deren Bedeutung mir erstmal klar werden musste.

WordPress Sprachdateien

Im Normalfall benutzt WordPress selbst seit der Verschmelzung mit WPMU zur Multisite Version mehrere getrennte Sprachdateien. Diese sollten mittlerweile bekannt sein und sind lauten in einem deutsch installierten System wie folgt:

  • continents-cities-de_DE.mo
  • ms-de_DE.mo
  • de_DE.mo

Soweit sogut, die sollten bekannt sein. Doch mit der Version 3.4 scheint es nun noch mehr davon zu geben.

Neue Sprachdateien im Core aufgetaucht

Es hat mich schon verwundert, was der Core nun noch zusätzlich als Sprachdatei haben will. Darauf gestoßen bin ich, als mein Testplugin mir mitteilte, dass WordPress Dateien namens:

  • admin-de_DE.mo
  • admin-network-de_DE.mo

laden wollte, diese aber nicht finden konnte. Also hab ich mir die Codestellen angesehen, an denen versucht wird, diese zu laden. Dies sind folgende Stellen:

wp-admin/includes/admin.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * Includes all of the WordPress Administration API files.
 *
 * @package WordPress
 * @subpackage Administration
 */
 
if ( ! defined('WP_ADMIN') ) {
	// This file is being included from a file other than wp-admin/admin.php, so
	// some setup was skipped. Make sure the admin message catalog is loaded since
	// load_default_textdomain() will not have done so in this context.
	load_textdomain( 'default', WP_LANG_DIR . '/admin-' . get_locale() . '.mo' );
}
timing: 0.028s

wp-includes/l10n.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function load_default_textdomain() {
	$locale = get_locale();
 
	load_textdomain( 'default', WP_LANG_DIR . "/$locale.mo" );
 
	if ( ( is_multisite() || ( defined( 'WP_INSTALLING_NETWORK' ) && WP_INSTALLING_NETWORK ) ) && ! file_exists(  WP_LANG_DIR . "/admin-$locale.mo" ) ) {
		load_textdomain( 'default', WP_LANG_DIR . "/ms-$locale.mo" );
		return;
	}
 
	if ( is_admin()  )
		load_textdomain( 'default', WP_LANG_DIR . "/admin-$locale.mo" );
 
	if ( is_network_admin() || ( defined( 'WP_INSTALLING_NETWORK' ) && WP_INSTALLING_NETWORK ) )
		load_textdomain( 'default', WP_LANG_DIR . "/admin-network-$locale.mo" );
 
}
timing: 0.031s

wp-includes/load.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/**
 * Attempts an early load of translations.
 *
 * Used for errors encountered during the initial loading process, before the locale has been
 * properly detected and loaded.
 *
 * Designed for unusual load sequences (like setup-config.php) or for when the script will then
 * terminate with an error, otherwise there is a risk that a file can be double-included.
 *
 * @since 3.4.0
 * @access private
 */
function wp_load_translations_early() {
	global $text_direction, $wp_locale;
 
	static $loaded = false;
	if ( $loaded )
		return;
	$loaded = true;
 
	if ( function_exists( 'did_action' ) && did_action( 'init' ) )
		return;
 
	// We need $wp_local_package
	require ABSPATH . WPINC . '/version.php';
 
	// Translation and localization
	require_once ABSPATH . WPINC . '/pomo/mo.php';
	require_once ABSPATH . WPINC . '/l10n.php';
	require_once ABSPATH . WPINC . '/locale.php';
 
	// General libraries
	require_once ABSPATH . WPINC . '/functions.php';
	require_once ABSPATH . WPINC . '/plugin.php';
 
	$locales = $locations = array();
 
	while ( true ) {
		if ( defined( 'WPLANG' ) ) {
			if ( '' == WPLANG )
				break;
			$locales[] = WPLANG;
		}
 
		if ( isset( $wp_local_package ) )
			$locales[] = $wp_local_package;
 
		if ( ! $locales )
			break;
 
		if ( defined( 'WP_LANG_DIR' ) && @is_dir( WP_LANG_DIR ) )
			$locations[] = WP_LANG_DIR;
 
		if ( defined( 'WP_CONTENT_DIR' ) && @is_dir( WP_CONTENT_DIR . '/languages' ) )
			$locations[] = WP_CONTENT_DIR . '/languages';
 
		if ( @is_dir( ABSPATH . 'wp-content/languages' ) )
			$locations[] = ABSPATH . 'wp-content/languages';
 
		if ( @is_dir( ABSPATH . WPINC . '/languages' ) )
			$locations[] = ABSPATH . WPINC . '/languages';
 
		if ( ! $locations )
			break;
 
		$locations = array_unique( $locations );
 
		foreach ( $locales as $locale ) {
			foreach ( $locations as $location ) {
				if ( file_exists( $location . '/' . $locale . '.mo' ) ) {
					load_textdomain( 'default', $location . '/' . $locale . '.mo' );
					if ( defined( 'WP_SETUP_CONFIG' ) && file_exists( $location . '/admin-' . $locale . '.mo' ) )
						load_textdomain( 'default', $location . '/admin-' . $locale . '.mo' );
					break 2;
				}
			}
		}
 
		break;
	}
 
	$wp_locale = new WP_Locale();
}
timing: 0.041s

Also kommen jetzt zu jeder WordPress Übersetzung noch 2 Sprachdateien dazu. Nur deren Bedeutung ist mir nicht ganz klar. Es sieht im Moment so aus, als würde man bei WordPress versuchen, eine Art Trennung von reinen Backend Texten und Frontend Texten hinzubekommen.

Allerdings wäre es hier interessant, wie genau diese Trennung erfolgt und was dann die Bestandteile jeder einzelnen Sprachdatei sein soll. Ich habe bisher keine offizielle Erläuterung dazu gefunden, was genau diese neuen Sprachdateien machen sollen.

Das wiederum wirft Fragen auf, wie ich das im meinem Übersetzungsplugin handhaben soll, wenn unklar ist, welche Datei welchen Inhalt bekommt. Das betrifft auch die vielen freiwilligen Übersetzer von WordPress, die sich die Mühe machen, WordPress ihre Muttersprache beizubringen. Somit zwingt man die Übersetzung darauf zu warten, welche Vorlagedateien wordpress.org rausrückt, wenn übersetzt werden soll. Denn wenn es vorher keine Erläuterung gibt, kann man das bestenfalls ins Blaue tippen.

vorläufiges Fazit

Ich weiss nicht, ob das nun gut oder schlecht ist. Eines ist aber sicher, auch hier versagt wieder die Informationspolitik. Ich würde darüber ein frühzeitige Information erwarten, damit man darauf reagieren kann. Aber wie so oft muß man erstmal wieder darüber stolpern und mitzubekommen, das etwas anders ist als vorher.

Ich würde mir eine offensivere Bekanntgabe von Änderungen wünschen und nicht diese Hase & Igel Prinzip, womit man in die Probleme erstmal reinlaufen muß, bevor man sie anpassen kann.

Kategorien
Deutsch, WordPress (DE)
RSS Kommentare
RSS Kommentare

« WordPress 3.4 - Theme Core Änderungen und weiße Seiten Scripting Guard - ein WordPress Plugin schützt sich selbst »

4 Antworten    Schreib einen Kommentar

Dominik

Dominik

24.05.2012 | 09:06

Eines ist aber sicher, auch hier versagt wieder die Informationspolitik.

Dann solltest du deine Quellen mal aktualisieren. ;) Diese, sowie die Theme Änderungen wurden frühzeitig angekündigt.
Die Änderungen zu den Sprachdateien können zum Beispiel hier nachgelesen werden:
http://wppolyglots.wordpress.com/important-changes-for-wordpress-3-4/

Antworten »

Torsten

Torsten

24.05.2012 | 09:09

Ich will hier niemanden verteidigen, aber auf der offiziellen Übersetzungsseite (translate.wordpress.org) steht es ja explizit drin:
http://translate.wordpress.org/projects/wp/dev
Da gibt es den Punkt “Admin” und der hat als Unterpunkt “Network-Admin”.

Und auf WP Plyglots wurde es ebenfalls angekündigt:
http://wppolyglots.wordpress.com/important-changes-for-wordpress-3-4/
(Überschrift: POT files are now split differently)

Gruß, Torsten

Antworten »

codestyling

codestyling

24.05.2012 | 09:24

Die Ankündigung ist das eine, die Beschreibung was von wo genau wie genommen wird, was in welchen Dateien doppelt ist und wonach das gruppiert wird, fehlt leider gänzlich.
Ebenfalls ist mit keiner Silbe erwährt, dass der aktuelle Code Kompatibilitäts-Loads mit den ms-… Teilen macht. Zu den continent-cities gibt es auch keine Aussage, werden die nun in einer oder beiden neuen aufgehen oder doch parallel bleiben?

Versteht mich nicht falsch, aber eine Aussage: “das wird anders sein” ohne zu sagen, wie es techenisch funktioniert ( information cloacking ) gefällt mir einfach nicht.

Antworten »

Dominik

Dominik

24.05.2012 | 17:36

Da WordPress Open Source ist, kann dies ja jeder selbst nachlesen bzw. sollte derjenige nachlesen, wenn er sich dafür interessieren sollte. Ist ja alles kein Geheimnis.

Hilfreiche Infos gab/gibt es im Ticket #19852. Wie die einzelnen POT Dateien erstellt werden, kann man hier nachvollziehen.

Antworten »

Du kannst diese Tags verwenden : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Navigation

  • Allgemein
  • jQuery in WordPress
  • Politik
  • WordPress (DE)

Suche

Neuere Beiträge ...

  • Scripting Guard - ein WordPress Plugin schützt sich selbst

Ältere Beiträge ...

  • WordPress 3.4 - Theme Core Änderungen und weiße Seiten
  • Übersetzungen in WordPress - Google & Microsoft Translate API’s
  • “Na Zauberer, was hast du diesmal gebaut ?”
  • Kundensupport bei 1und1 - das Wunder beim Memory Limit
  • BuddyPress, die Adminbar und die RTL Sprachen
rss RSS Kommentare valid xhtml 1.0 design by jide powered by Wordpress get firefox