PluginProbe
Bogo / 1.0
Bogo v1.0
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 / bogo.php

bogo.php in Bogo 1.0, at bogo.php

180 lines 5.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Plugin Name: Bogo
4 Plugin URI: http://ideasilo.wordpress.com/2009/05/05/bogo/
5 Description: Bogo allows each user to choose their locale for the admin panel.
6 Author: Takayuki Miyoshi
7 Version: 1.0
8 Author URI: http://ideasilo.wordpress.com/
9 */
10
11 /* Copyright 2007-2009 Takayuki Miyoshi (email: takayukister at gmail.com)
12
13 This program is free software; you can redistribute it and/or modify
14 it under the terms of the GNU General Public License as published by
15 the Free Software Foundation; either version 2 of the License, or
16 (at your option) any later version.
17
18 This program is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU General Public License for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with this program; if not, write to the Free Software
25 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 */
27
28 add_filter( 'locale', 'bogo_locale' );
29 add_action( 'init', 'bogo_load_plugin_textdomain' );
30 add_action( 'personal_options_update', 'bogo_update_user_option' );
31 add_action( 'personal_options', 'bogo_select_own_locale' );
32
33 function bogo_locale( $locale ) {
34 $locale_option = get_user_option( 'locale' );
35
36 if ( ! empty( $locale_option ) )
37 $locale = $locale_option;
38
39 return $locale;
40 }
41
42 function bogo_load_plugin_textdomain() {
43 load_plugin_textdomain( 'bogo', 'wp-content/plugins/bogo/languages', 'bogo/languages' );
44 }
45
46 function bogo_update_user_option() {
47 global $current_user;
48
49 if ( ! isset( $_POST['own_locale'] ) || empty( $_POST['own_locale'] ) )
50 $locale = null;
51 else
52 $locale = trim( $_POST['own_locale'] );
53
54 update_user_option( $current_user->id, 'locale', $locale, true );
55 }
56
57 function bogo_select_own_locale() {
58 $languages = bogo_languages();
59
60 $installed_locales = bogo_installed_locales();
61 $installed_locales[] = 'en_US';
62 $installed_locales = array_unique( $installed_locales );
63
64 $locales = array();
65 foreach ( $installed_locales as $il ) {
66 $label = array_key_exists( $il, $languages ) ? $languages[$il] : "[$il]";
67 $locales[] = array( $il, $label );
68 }
69
70 usort( $locales, create_function( '$a, $b', 'return strnatcmp($a[1], $b[1]);' ) );
71
72 $selected = get_user_option( 'locale' );
73 if ( empty( $selected ) && defined( 'WPLANG' ) )
74 $selected = WPLANG;
75 if ( empty( $selected ) )
76 $selected = 'en_US';
77
78 ?>
79
80 <!-- Bogo plugin -->
81 <tr>
82 <th scope="row"><?php _e( 'Locale', 'bogo' ); ?></th>
83 <td>
84 <select name="own_locale">
85 <?php foreach ( $locales as $locale ) : ?>
86 <option value="<?php echo $locale[0]; ?>" <?php selected( $locale[0], $selected ); ?>><?php echo $locale[1]; ?></option>
87 <?php endforeach; ?>
88 </select>
89 </td>
90 </tr>
91
92 <?php
93 }
94
95 function bogo_installed_locales() {
96 $locales = array();
97
98 if ( $handle = opendir( WP_LANG_DIR ) ) {
99 rewinddir( $handle );
100 while ( false !== ( $file = readdir( $handle ) ) ) {
101 $filename = basename( $file );
102 if ( preg_match( '/^([^.]+)\.mo$/', $filename, $regs ) ) {
103 $locale = $regs[1];
104 $locales[] = $locale;
105 }
106 }
107 closedir( $handle );
108 }
109
110 return $locales;
111 }
112
113 function bogo_languages() {
114 $languages = array(
115 'af' => __( 'Afrikaans', 'bogo' ),
116 'ar' => __( 'Arabic', 'bogo' ),
117 'be_BY' => __( 'Belarusian', 'bogo' ),
118 'bg_BG' => __( 'Bulgarian', 'bogo' ),
119 'bn_BD' => __( 'Bengali', 'bogo' ),
120 'ca' => __( 'Catalan', 'bogo' ),
121 'cs_CZ' => __( 'Czech', 'bogo' ),
122 'cy' => __( 'Welsh', 'bogo' ),
123 'da_DK' => __( 'Danish', 'bogo' ),
124 'de_DE' => __( 'German', 'bogo' ),
125 'el' => __( 'Greek', 'bogo' ),
126 'en_US' => __( 'English', 'bogo' ),
127 'eo' => __( 'Esperanto', 'bogo' ),
128 'es_ES' => __( 'Spanish', 'bogo' ),
129 'et' => __( 'Estonian', 'bogo' ),
130 'eu' => __( 'Basque', 'bogo' ),
131 'fa_IR' => __( 'Persian', 'bogo' ),
132 'fi_FI' => __( 'Finnish', 'bogo' ),
133 'fo' => __( 'Faroese', 'bogo' ),
134 'fr_FR' => __( 'French', 'bogo' ),
135 'ge_GE' => __( 'Georgian', 'bogo' ),
136 'gl_ES' => __( 'Galician', 'bogo' ),
137 'he_IL' => __( 'Hebrew', 'bogo' ),
138 'hr' => __( 'Croatian', 'bogo' ),
139 'hu_HU' => __( 'Hungarian', 'bogo' ),
140 'id_ID' => __( 'Indonesian', 'bogo' ),
141 'is_IS' => __( 'Icelandic', 'bogo' ),
142 'it_IT' => __( 'Italian', 'bogo' ),
143 'ja' => __( 'Japanese', 'bogo' ),
144 'km_KH' => __( 'Khmer', 'bogo' ),
145 'ko_KR' => __( 'Korean', 'bogo' ),
146 'lt_LT' => __( 'Lithuanian', 'bogo' ),
147 'lv' => __( 'Latvian', 'bogo' ),
148 'mg_MG' => __( 'Malagasy', 'bogo' ),
149 'mk_MK' => __( 'Macedonian', 'bogo' ),
150 'mn_MN' => __( 'Mongolian', 'bogo' ),
151 'ms_MY' => __( 'Malay', 'bogo' ),
152 'nb_NO' => __( 'Norwegian', 'bogo' ),
153 'ni_ID' => __( 'Nias', 'bogo' ),
154 'nl_NL' => __( 'Dutch', 'bogo' ),
155 'pl_PL' => __( 'Polish', 'bogo' ),
156 'pt_BR' => __( 'Brazilian Portuguese', 'bogo' ),
157 'pt_PT' => __( 'Portuguese', 'bogo' ),
158 'ro' => __( 'Romanian', 'bogo' ),
159 'ru_RU' => __( 'Russian', 'bogo' ),
160 'si_LK' => __( 'Sinhala', 'bogo' ),
161 'sk' => __( 'Slovak', 'bogo' ),
162 'sl_SI' => __( 'Slovenian', 'bogo' ),
163 'sq' => __( 'Albanian', 'bogo' ),
164 'sr_CS' => __( 'Serbian', 'bogo' ),
165 'sv_SE' => __( 'Swedish', 'bogo' ),
166 'su_ID' => __( 'Sundanese', 'bogo' ),
167 'tg' => __( 'Tajik', 'bogo' ),
168 'th' => __( 'Thai', 'bogo' ),
169 'tr' => __( 'Turkish', 'bogo' ),
170 'uk_UA' => __( 'Ukrainian', 'bogo' ),
171 'uz_UZ' => __( 'Uzbek', 'bogo' ),
172 'vi' => __( 'Vietnamse', 'bogo' ),
173 'zh_CN' => __( 'Chinese', 'bogo' ),
174 'zh_TW' => __( 'Traditional Chinese', 'bogo' )
175 );
176
177 return $languages;
178 }
179
180 ?>