PluginProbe
Bogo / 3.0.1
Bogo v3.0.1
3.9.3 trunk 1.0 1.1 2.0 2.0.1 2.1 2.1.1 2.1.2 2.1.3 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5 2.6 2.6.1 2.7 2.8 2.8.1 2.9 3.0 3.0.1 All 52 releases
bogo / includes / pomo.php

pomo.php in Bogo 3.0.1, at includes/pomo.php

158 lines 3.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 add_filter( 'bloginfo', 'bogo_bloginfo_filter', 10, 2 );
4
5 function bogo_bloginfo_filter( $output, $show ) {
6 if ( ! Bogo_POMO::is_ready() ) {
7 return $output;
8 }
9
10 if ( 'name' == $show ) {
11 $output = bogo_translate( 'blogname', 'blogname', $output );
12 } elseif ( 'description' == $show ) {
13 $output = bogo_translate( 'blogdescription', 'blogdescription', $output );
14 }
15
16 return $output;
17 }
18
19 add_filter( 'get_term', 'bogo_get_term_filter', 10, 2 );
20
21 function bogo_get_term_filter( $term, $taxonomy ) {
22 if ( ! Bogo_POMO::is_ready() ) {
23 return $term;
24 }
25
26 if ( $term instanceof WP_Term ) {
27 $term = bogo_translate_term( $term );
28 }
29
30 return $term;
31 }
32
33 add_action( 'load-edit-tags.php', 'bogo_remove_get_term_filter' );
34
35 function bogo_remove_get_term_filter() {
36 remove_filter( 'get_term', 'bogo_get_term_filter' );
37 }
38
39 function bogo_translate_term( WP_Term $term ) {
40 $term->name = bogo_translate(
41 sprintf( '%s:%d', $term->taxonomy, $term->term_id ),
42 $term->taxonomy,
43 $term->name );
44
45 return $term;
46 }
47
48 function bogo_translate( $singular, $context = '', $default = '' ) {
49 return Bogo_POMO::translate( $singular, $context, $default );
50 }
51
52 class Bogo_POMO {
53
54 private static $mo;
55
56 public static function translate( $singular, $context = '', $default = '' ) {
57 if ( ! self::$mo ) {
58 return '' !== $default ? $default : $singular;
59 }
60
61 $translated = self::$mo->translate( $singular, $context );
62
63 if ( $translated == $singular && '' !== $default ) {
64 return $default;
65 } else {
66 return $translated;
67 }
68 }
69
70 public static function export( $locale, $entries = array() ) {
71 if ( ! bogo_is_available_locale( $locale ) ) {
72 return false;
73 }
74
75 $dir = self::dir();
76
77 $headers = array(
78 'PO-Revision-Date' => current_time( 'mysql', 'gmt' ) . '+0000',
79 'MIME-Version' => '1.0',
80 'Content-Type' => 'text/plain; charset=UTF-8',
81 'Content-Transfer-Encoding' => '8bit',
82 'X-Generator' => sprintf( 'Bogo %s', BOGO_VERSION ),
83 'Language' => $locale,
84 'Project-Id-Version' =>
85 sprintf( 'WordPress %s', get_bloginfo( 'version' ) ) );
86
87 require_once ABSPATH . WPINC . '/pomo/po.php';
88 $po = new PO();
89 $po->set_headers( $headers );
90
91 foreach ( (array) $entries as $entry ) {
92 $entry = new Translation_Entry( $entry );
93 $po->add_entry( $entry );
94 }
95
96 $po_file = is_multisite()
97 ? sprintf( '%d-%s.po', get_current_blog_id(), $locale )
98 : sprintf( '%s.po', $locale );
99 $po_file = path_join( $dir, $po_file );
100 $po->export_to_file( $po_file );
101
102 $mo = new MO();
103 $mo->set_headers( $headers );
104
105 foreach ( (array) $entries as $entry ) {
106 $entry = new Translation_Entry( $entry );
107 $mo->add_entry( $entry );
108 }
109
110 $mo_file = is_multisite()
111 ? sprintf( '%d-%s.mo', get_current_blog_id(), $locale )
112 : sprintf( '%s.mo', $locale );
113 $mo_file = path_join( $dir, $mo_file );
114 return $mo->export_to_file( $mo_file );
115 }
116
117 public static function import( $locale ) {
118 if ( ! bogo_is_available_locale( $locale ) ) {
119 return false;
120 }
121
122 $dir = self::dir();
123
124 $mo_file = is_multisite()
125 ? sprintf( '%d-%s.mo', get_current_blog_id(), $locale )
126 : sprintf( '%s.mo', $locale );
127 $mo_file = path_join( $dir, $mo_file );
128
129 if ( ! is_readable( $mo_file ) ) {
130 return false;
131 }
132
133 $mo = new MO();
134
135 if ( ! $mo->import_from_file( $mo_file ) ) {
136 return false;
137 }
138
139 self::$mo = $mo;
140 return true;
141 }
142
143 public static function reset() {
144 self::$mo = null;
145 }
146
147 public static function is_ready() {
148 return (bool) self::$mo;
149 }
150
151 private static function dir() {
152 $dir = path_join( WP_LANG_DIR, 'bogo' );
153 $dir = apply_filters( 'bogo_pomo_dir', $dir );
154 wp_mkdir_p( $dir );
155 return $dir;
156 }
157 }
158