~canonical-sysadmins/wordpress/3.9.x

« back to all changes in this revision

Viewing changes to wp-includes/l10n.php

  • Committer: Chris Jones
  • Date: 2010-01-19 13:17:33 UTC
  • Revision ID: cmsj@tenshu.net-20100119131733-rf31jv9k1v0xzo2h
[CJ] Import wordpress 2.9.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
function get_locale() {
29
29
        global $locale;
30
30
 
31
 
        if (isset($locale))
 
31
        if ( isset( $locale ) )
32
32
                return apply_filters( 'locale', $locale );
33
33
 
34
34
        // WPLANG is defined in wp-config.
35
 
        if (defined('WPLANG'))
 
35
        if ( defined( 'WPLANG' ) )
36
36
                $locale = WPLANG;
37
37
 
38
 
        if (empty($locale))
 
38
        if ( empty( $locale ) )
39
39
                $locale = 'en_US';
40
40
 
41
 
        return apply_filters('locale', $locale);
 
41
        return apply_filters( 'locale', $locale );
42
42
}
43
43
 
44
44
/**
56
56
 */
57
57
function translate( $text, $domain = 'default' ) {
58
58
        $translations = &get_translations_for_domain( $domain );
59
 
        return apply_filters('gettext', $translations->translate($text), $text, $domain);
 
59
        return apply_filters( 'gettext', $translations->translate( $text ), $text, $domain );
60
60
}
61
61
 
62
62
function before_last_bar( $string ) {
80
80
 */
81
81
function translate_with_context( $text, $domain = 'default' ) {
82
82
        return before_last_bar( translate( $text, $domain ) );
83
 
 
84
83
}
85
84
 
86
85
function translate_with_gettext_context( $text, $context, $domain = 'default' ) {
87
86
        $translations = &get_translations_for_domain( $domain );
88
 
        return apply_filters( 'gettext_with_context', $translations->translate( $text, $context ), $text, $context, $domain);
 
87
        return apply_filters( 'gettext_with_context', $translations->translate( $text, $context ), $text, $context, $domain );
89
88
}
90
89
 
91
90
/**
177
176
}
178
177
 
179
178
/**
180
 
 * Retrieve translated string with vertical bar context
 
179
 * Retrieve translated string with gettext context
181
180
 *
182
181
 * Quite a few times, there will be collisions with similar translatable text
183
182
 * found in more than two places but with different translated context.
184
183
 *
185
 
 * In order to use the separate contexts, the _c() function is used and the
186
 
 * translatable string uses a pipe ('|') which has the context the string is in.
187
 
 *
188
 
 * When the translated string is returned, it is everything before the pipe, not
189
 
 * including the pipe character. If there is no pipe in the translated text then
190
 
 * everything is returned.
191
 
 *
192
 
 * @since 2.2.0
 
184
 * By including the context in the pot file translators can translate the two
 
185
 * string differently
 
186
 *
 
187
 * @since 2.8
193
188
 *
194
189
 * @param string $text Text to translate
 
190
 * @param string $context Context information for the translators
195
191
 * @param string $domain Optional. Domain to retrieve the translated text
196
192
 * @return string Translated context string without pipe
197
193
 */
198
 
function _c($text, $domain = 'default') {
199
 
        return translate_with_context($text, $domain);
200
 
}
201
194
 
202
195
function _x( $single, $context, $domain = 'default' ) {
203
196
        return translate_with_gettext_context( $single, $context, $domain );
207
200
        return esc_attr( translate_with_gettext_context( $single, $context, $domain ) );
208
201
}
209
202
 
 
203
function esc_html_x( $single, $context, $domain = 'default' ) {
 
204
        return esc_html( translate_with_gettext_context( $single, $context, $domain ) );
 
205
}
 
206
 
210
207
function __ngettext() {
211
208
        _deprecated_function( __FUNCTION__, '2.8', '_n()' );
212
209
        $args = func_get_args();
235
232
 * @param string $domain Optional. The domain identifier the text should be retrieved in
236
233
 * @return string Either $single or $plural translated text
237
234
 */
238
 
function _n($single, $plural, $number, $domain = 'default') {
 
235
function _n( $single, $plural, $number, $domain = 'default' ) {
239
236
        $translations = &get_translations_for_domain( $domain );
240
237
        $translation = $translations->translate_plural( $single, $plural, $number );
241
238
        return apply_filters( 'ngettext', $translation, $single, $plural, $number, $domain );
253
250
function _nx($single, $plural, $number, $context, $domain = 'default') {
254
251
        $translations = &get_translations_for_domain( $domain );
255
252
        $translation = $translations->translate_plural( $single, $plural, $number, $context );
256
 
        return apply_filters( 'ngettext_with_context ', $translation, $single, $plural, $number, $context, $domain );
 
253
        return apply_filters( 'ngettext_with_context', $translation, $single, $plural, $number, $context, $domain );
257
254
}
258
255
 
259
256
/**
316
313
 * @param string $mofile Path to the .mo file
317
314
 * @return bool true on success, false on failure
318
315
 */
319
 
function load_textdomain($domain, $mofile) {
 
316
function load_textdomain( $domain, $mofile ) {
320
317
        global $l10n;
 
318
        
 
319
        $plugin_override = apply_filters( 'override_load_textdomain', false, $domain, $mofile );
 
320
        
 
321
        if ( true == $plugin_override ) {
 
322
                return true;
 
323
        }
 
324
        
 
325
        do_action( 'load_textdomain', $domain, $mofile );
 
326
                
 
327
        $mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain );
321
328
 
322
329
        if ( !is_readable( $mofile ) ) return false;
323
330
 
328
335
                $mo->merge_with( $l10n[$domain] );
329
336
 
330
337
        $l10n[$domain] = &$mo;
 
338
        
331
339
        return true;
332
340
}
333
341
 
344
352
 
345
353
        $mofile = WP_LANG_DIR . "/$locale.mo";
346
354
 
347
 
        return load_textdomain('default', $mofile);
 
355
        return load_textdomain( 'default', $mofile );
348
356
}
349
357
 
350
358
/**
360
368
 *      where the .mo file resides. Deprecated, but still functional until 2.7
361
369
 * @param string $plugin_rel_path Optional. Relative path to WP_PLUGIN_DIR. This is the preferred argument to use. It takes precendence over $abs_rel_path
362
370
 */
363
 
function load_plugin_textdomain($domain, $abs_rel_path = false, $plugin_rel_path = false) {
 
371
function load_plugin_textdomain( $domain, $abs_rel_path = false, $plugin_rel_path = false ) {
364
372
        $locale = get_locale();
365
373
 
366
374
        if ( false !== $plugin_rel_path )
367
 
                $path = WP_PLUGIN_DIR . '/' . trim( $plugin_rel_path, '/');
368
 
        else if ( false !== $abs_rel_path)
369
 
                $path = ABSPATH . trim( $abs_rel_path, '/');
 
375
                $path = WP_PLUGIN_DIR . '/' . trim( $plugin_rel_path, '/' );
 
376
        else if ( false !== $abs_rel_path )
 
377
                $path = ABSPATH . trim( $abs_rel_path, '/' );
370
378
        else
371
379
                $path = WP_PLUGIN_DIR;
372
380
 
373
381
        $mofile = $path . '/'. $domain . '-' . $locale . '.mo';
374
 
        return load_textdomain($domain, $mofile);
 
382
        return load_textdomain( $domain, $mofile );
375
383
}
376
384
 
377
385
/**
396
404
}
397
405
 
398
406
/**
 
407
 * Loads the child themes translated strings.
 
408
 *
 
409
 * If the current locale exists as a .mo file in the child themes root directory, it
 
410
 * will be included in the translated strings by the $domain.
 
411
 *
 
412
 * The .mo files must be named based on the locale exactly.
 
413
 *
 
414
 * @since 2.9.0
 
415
 *
 
416
 * @param string $domain Unique identifier for retrieving translated strings
 
417
 */
 
418
function load_child_theme_textdomain($domain, $path = false) {
 
419
        $locale = get_locale();
 
420
 
 
421
        $path = ( empty( $path ) ) ? get_stylesheet_directory() : $path;
 
422
 
 
423
        $mofile = "$path/$locale.mo";
 
424
        return load_textdomain($domain, $mofile);
 
425
}
 
426
 
 
427
/**
399
428
 * Returns the Translations instance for a domain. If there isn't one,
400
429
 * returns empty Translations instance.
401
430
 *
404
433
 */
405
434
function &get_translations_for_domain( $domain ) {
406
435
        global $l10n;
407
 
        $empty = &new Translations;
408
 
        if ( isset($l10n[$domain]) )
409
 
                return $l10n[$domain];
410
 
        else
411
 
                return $empty;
 
436
        if ( !isset( $l10n[$domain] ) ) {
 
437
                $l10n[$domain] = &new NOOP_Translations;
 
438
        }
 
439
        return $l10n[$domain];
412
440
}
413
441
 
414
442
/**