├── .github └── workflows │ └── dokuwiki.yml ├── OutdatedTranslationApiResponse.php ├── README ├── _test ├── BasicTest.php └── GeneralTest.php ├── action.php ├── admin.php ├── admin.svg ├── conf ├── default.php └── metadata.php ├── deleted.files ├── flags ├── ar.svg ├── be.svg ├── bg.svg ├── cs.svg ├── da.svg ├── de.svg ├── el.svg ├── en.svg ├── eo.svg ├── es.svg ├── et.svg ├── fi.svg ├── fr.svg ├── gd.svg ├── he.svg ├── hr.svg ├── hu.svg ├── ia.svg ├── id.svg ├── is.svg ├── it.svg ├── ja.svg ├── ko.svg ├── mt.svg ├── nl.svg ├── no.svg ├── pl.svg ├── pt-br.svg ├── pt.svg ├── ro.svg ├── ru.svg ├── sk.svg ├── sl.svg ├── sv.svg ├── tr.svg ├── uk.svg ├── uz.svg ├── vi.svg ├── zh-tw.svg └── zh.svg ├── getflags.sh ├── helper.php ├── lang ├── be │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── bn │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── ca │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── ckb │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── cs │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── cy │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── da │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── de-informal │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── de │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── el │ ├── lang.php │ └── settings.php ├── en │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── eo │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── es │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── fa │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── flags.txt ├── fr │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── hr │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── hu │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── it │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── ja │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── ko │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── langnames.txt ├── lv │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── nl │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── pl │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── pt-br │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── pt │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── ru │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── sl │ ├── lang.php │ └── settings.php ├── sv │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── tr │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── uk │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── vi │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── zh-tw │ ├── lang.php │ └── settings.php └── zh │ ├── lang.php │ ├── settings.php │ └── totranslate.txt ├── plugin.info.txt ├── print.css ├── remote.php ├── style.less └── syntax ├── notrans.php └── trans.php /.github/workflows/dokuwiki.yml: -------------------------------------------------------------------------------- 1 | name: DokuWiki Default Tasks 2 | on: 3 | push: 4 | pull_request: 5 | schedule: 6 | - cron: '50 19 21 * *' 7 | 8 | 9 | jobs: 10 | all: 11 | uses: dokuwiki/github-action/.github/workflows/all.yml@main 12 | -------------------------------------------------------------------------------- /OutdatedTranslationApiResponse.php: -------------------------------------------------------------------------------- 1 | id = $transID; 30 | $this->lang = $transLang; 31 | $this->lastModified = (int) $transMod; 32 | $this->originalID = $origPage['id']; 33 | $this->originalModified = $origPage['mtime']; 34 | $this->status = $status; 35 | } 36 | 37 | 38 | public function __toString() 39 | { 40 | return $this->id; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | translation Plugin for DokuWiki 2 | 3 | All documentation for this plugin can be found at 4 | http://www.dokuwiki.org/plugin:translation 5 | 6 | If you install this plugin manually, make sure it is installed in 7 | lib/plugins/translation/ - if the folder is called different it 8 | will not work! 9 | 10 | Please refer to http://www.dokuwiki.org/plugins for additional info 11 | on how to install plugins in DokuWiki. 12 | 13 | ---- 14 | Copyright (C) Andreas Gohr 15 | 16 | This program is free software; you can redistribute it and/or modify 17 | it under the terms of the GNU General Public License as published by 18 | the Free Software Foundation; version 2 of the License 19 | 20 | This program is distributed in the hope that it will be useful, 21 | but WITHOUT ANY WARRANTY; without even the implied warranty of 22 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 | GNU General Public License for more details. 24 | 25 | See the COPYING file in your DokuWiki folder for details 26 | -------------------------------------------------------------------------------- /_test/BasicTest.php: -------------------------------------------------------------------------------- 1 | buildTransID($inputLang, $inputID); 65 | 66 | $this->assertEquals($expected, $actual_result); 67 | } 68 | 69 | /** 70 | * Test provider 71 | * @return array[] 72 | * @see testRedirectStart 73 | */ 74 | public static function provideRedirectStart() 75 | { 76 | return [ 77 | [ 78 | 'start', 79 | 'de es', 80 | 'de,en-US;q=0.8,en;q=0.5,fr;q=0.3', 81 | 'de:start', 82 | 'redirect to translated page', 83 | ], 84 | [ 85 | 'start', 86 | 'de es', 87 | 'en-US,de;q=0.8,en;q=0.5,fr;q=0.3', 88 | [], 89 | 'do not redirect if basic namespace is correct lang', 90 | ], 91 | [ 92 | 'de:start', 93 | 'en de es', 94 | 'en-US,en;q=0.8,fr;q=0.5', 95 | [], 96 | 'do not redirect anything other than exactly $conf[\'start\']', 97 | ], 98 | ]; 99 | } 100 | 101 | /** 102 | * @dataProvider provideRedirectStart 103 | * 104 | * @param $input 105 | * @param $translationsOption 106 | * @param $httpAcceptHeader 107 | * @param $expected 108 | */ 109 | public function testRedirectStart($input, $translationsOption, $httpAcceptHeader, $expected, $msg) 110 | { 111 | global $conf; 112 | $conf['plugin']['translation']['translations'] = $translationsOption; 113 | $conf['plugin']['translation']['redirectstart'] = 1; 114 | 115 | // reset event handler (this should be done by the TestRequest, but it doesn't) 116 | global $EVENT_HANDLER; 117 | $EVENT_HANDLER = new EventHandler(); 118 | 119 | /** @var \helper_plugin_translation $helper */ 120 | $helper = plugin_load('helper', 'translation'); 121 | $helper->loadTranslationNamespaces(); 122 | 123 | $request = new TestRequest(); 124 | $request->setServer('HTTP_ACCEPT_LANGUAGE', $httpAcceptHeader); 125 | 126 | $response = $request->get(array('id' => $input)); 127 | $actual = $response->getHeader('Location'); 128 | 129 | if (is_string($actual)) { 130 | list(, $actual) = explode('doku.php?id=', $actual); 131 | } 132 | 133 | $this->assertEquals($expected, $actual, $msg); 134 | } 135 | 136 | } 137 | -------------------------------------------------------------------------------- /_test/GeneralTest.php: -------------------------------------------------------------------------------- 1 | assertFileExists($file); 23 | 24 | $info = confToHash($file); 25 | 26 | $this->assertArrayHasKey('base', $info); 27 | $this->assertArrayHasKey('author', $info); 28 | $this->assertArrayHasKey('email', $info); 29 | $this->assertArrayHasKey('date', $info); 30 | $this->assertArrayHasKey('name', $info); 31 | $this->assertArrayHasKey('desc', $info); 32 | $this->assertArrayHasKey('url', $info); 33 | 34 | $this->assertEquals('translation', $info['base']); 35 | $this->assertRegExp('/^https?:\/\//', $info['url']); 36 | $this->assertTrue(mail_isvalid($info['email'])); 37 | $this->assertRegExp('/^\d\d\d\d-\d\d-\d\d$/', $info['date']); 38 | $this->assertTrue(false !== strtotime($info['date'])); 39 | } 40 | 41 | /** 42 | * Test to ensure that every conf['...'] entry in conf/default.php has a corresponding meta['...'] entry in 43 | * conf/metadata.php. 44 | */ 45 | public function testPluginConf(): void 46 | { 47 | $conf_file = __DIR__ . '/../conf/default.php'; 48 | $meta_file = __DIR__ . '/../conf/metadata.php'; 49 | 50 | if (!file_exists($conf_file) && !file_exists($meta_file)) { 51 | self::markTestSkipped('No config files exist -> skipping test'); 52 | } 53 | 54 | if (file_exists($conf_file)) { 55 | include($conf_file); 56 | } 57 | if (file_exists($meta_file)) { 58 | include($meta_file); 59 | } 60 | 61 | $this->assertEquals( 62 | gettype($conf), 63 | gettype($meta), 64 | 'Both ' . DOKU_PLUGIN . 'translation/conf/default.php and ' . DOKU_PLUGIN . 'translation/conf/metadata.php have to exist and contain the same keys.' 65 | ); 66 | 67 | if ($conf !== null && $meta !== null) { 68 | foreach ($conf as $key => $value) { 69 | $this->assertArrayHasKey( 70 | $key, 71 | $meta, 72 | 'Key $meta[\'' . $key . '\'] missing in ' . DOKU_PLUGIN . 'translation/conf/metadata.php' 73 | ); 74 | } 75 | 76 | foreach ($meta as $key => $value) { 77 | $this->assertArrayHasKey( 78 | $key, 79 | $conf, 80 | 'Key $conf[\'' . $key . '\'] missing in ' . DOKU_PLUGIN . 'translation/conf/default.php' 81 | ); 82 | } 83 | } 84 | 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /action.php: -------------------------------------------------------------------------------- 1 | 12 | * @author Guy Brand 13 | */ 14 | class action_plugin_translation extends ActionPlugin 15 | { 16 | /** 17 | * For the helper plugin 18 | * @var helper_plugin_translation 19 | */ 20 | protected $helper; 21 | 22 | /** 23 | * Constructor. Load helper plugin 24 | */ 25 | public function __construct() 26 | { 27 | $this->helper = plugin_load('helper', 'translation'); 28 | } 29 | 30 | /** 31 | * Registers a callback function for a given event 32 | * 33 | * @param EventHandler $controller 34 | */ 35 | public function register(EventHandler $controller) 36 | { 37 | if ($this->getConf('translateui')) { 38 | $controller->register_hook('INIT_LANG_LOAD', 'BEFORE', $this, 'translateUI'); 39 | $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'translateJS'); 40 | $controller->register_hook('JS_CACHE_USE', 'BEFORE', $this, 'translateJSCache'); 41 | } else { 42 | $controller->register_hook('TPL_CONTENT_DISPLAY', 'BEFORE', $this, 'addLanguageAttributes'); 43 | } 44 | 45 | if ($this->getConf('redirectstart')) { 46 | $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'redirectStartPage'); 47 | } 48 | 49 | $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'addHrefLangAttributes'); 50 | $controller->register_hook('COMMON_PAGETPL_LOAD', 'AFTER', $this, 'handlePageTemplates'); 51 | $controller->register_hook('SEARCH_QUERY_PAGELOOKUP', 'AFTER', $this, 'sortSearchResults'); 52 | } 53 | 54 | /** 55 | * Hook Callback. Set the language for the UI 56 | * 57 | * @param Event $event INIT_LANG_LOAD 58 | */ 59 | public function translateUI(Event $event) 60 | { 61 | global $conf; 62 | global $ACT; 63 | global $INPUT; 64 | 65 | // $ID is not set yet, so we have to get it ourselves 66 | $id = getID(); 67 | 68 | // For ID based access, get the language from the ID, try request param or session otherwise 69 | if ( 70 | isset($ACT) && 71 | in_array(act_clean($ACT), ['show', 'recent', 'diff', 'edit', 'preview', 'source', 'subscribe']) 72 | ) { 73 | $locale = $this->helper->getLangPart($id ?? ''); 74 | $_SESSION[DOKU_COOKIE]['translationlc'] = $locale; // IDs always reset the language 75 | } elseif ($INPUT->has('lang')) { 76 | $locale = $INPUT->str('lang'); 77 | } else { 78 | $locale = $_SESSION[DOKU_COOKIE]['translationlc'] ?? ''; 79 | } 80 | 81 | // ensure a valid locale was given by using it as fake ID 82 | $locale = $this->helper->getLangPart("$locale:foo"); 83 | 84 | // if the language is not the default language, set the language 85 | if ($locale && $locale !== $conf['lang']) { 86 | $conf['lang_before_translation'] = $conf['lang']; //store for later access in syntax plugin 87 | $event->data = $locale; 88 | $conf['lang'] = $locale; 89 | } 90 | } 91 | 92 | /** 93 | * Hook Callback. Pass language code to JavaScript dispatcher 94 | * 95 | * @param Event $event TPL_METAHEADER_OUTPUT 96 | */ 97 | public function translateJS(Event $event) 98 | { 99 | global $conf; 100 | 101 | $count = count($event->data['script']); 102 | for ($i = 0; $i < $count; $i++) { 103 | if ( 104 | array_key_exists('src', $event->data['script'][$i]) && 105 | strpos($event->data['script'][$i]['src'], '/lib/exe/js.php') !== false 106 | ) { 107 | $event->data['script'][$i]['src'] .= '&lang=' . hsc($conf['lang']); 108 | } 109 | } 110 | } 111 | 112 | /** 113 | * Hook Callback. Cache JavaScript per language 114 | * 115 | * @param Event $event JS_CACHE_USE 116 | */ 117 | public function translateJSCache(Event $event) 118 | { 119 | global $conf; 120 | 121 | // reuse the constructor to reinitialize the cache key 122 | $event->data->__construct( 123 | $event->data->key . $conf['lang'], 124 | $event->data->ext 125 | ); 126 | } 127 | 128 | /** 129 | * Hook Callback. Add lang and dir attributes when UI isn't translated 130 | * 131 | * @param Event $event TPL_CONTENT_DISPLAY 132 | */ 133 | public function addLanguageAttributes(Event $event) 134 | { 135 | global $ID; 136 | global $conf; 137 | 138 | if (!$this->helper->istranslatable($ID)) return; 139 | $locale = $this->helper->getLangPart($ID ?? ''); 140 | 141 | if ($locale && $locale !== $conf['lang']) { 142 | if (file_exists(DOKU_INC . 'inc/lang/' . $locale . '/lang.php')) { 143 | $lang = []; 144 | include(DOKU_INC . 'inc/lang/' . $locale . '/lang.php'); 145 | $direction = $lang['direction'] ?? 'ltr'; 146 | 147 | $event->data = '
' . 148 | $event->data . 149 | '
'; 150 | } 151 | } 152 | } 153 | 154 | /** 155 | * Hook Callback. Redirect to translated start page 156 | * 157 | * @param Event $event DOKUWIKI_STARTED 158 | */ 159 | public function redirectStartPage(Event $event) 160 | { 161 | global $ID; 162 | global $ACT; 163 | global $conf; 164 | 165 | if ($ID == $conf['start'] && $ACT == 'show') { 166 | $lc = $this->helper->getBrowserLang(); 167 | 168 | [$translatedStartpage, ] = $this->helper->buildTransID($lc, $conf['start']); 169 | if (cleanID($translatedStartpage) !== cleanID($ID)) { 170 | send_redirect(wl(cleanID($translatedStartpage), '', true)); 171 | } 172 | } 173 | } 174 | 175 | /** 176 | * Hook Callback. Add hreflang attributes to the page header 177 | * 178 | * @param Event $event TPL_METAHEADER_OUTPUT 179 | */ 180 | public function addHrefLangAttributes(Event $event) 181 | { 182 | global $ID; 183 | global $conf; 184 | 185 | if (!$this->helper->istranslatable($ID)) return; 186 | 187 | $translations = $this->helper->getAvailableTranslations($ID); 188 | if ($translations) { 189 | foreach ($translations as $lc => $translation) { 190 | $event->data['link'][] = [ 191 | 'rel' => 'alternate', 192 | 'hreflang' => $lc, 193 | 'href' => wl(cleanID($translation), '', true), 194 | ]; 195 | } 196 | } 197 | 198 | $default = $conf['lang_before_translation'] ?? $conf['lang']; 199 | $defaultlink = $this->helper->buildTransID($default, ($this->helper->getTransParts($ID))[1])[0]; 200 | $event->data['link'][] = [ 201 | 'rel' => 'alternate', 202 | 'hreflang' => 'x-default', 203 | 'href' => wl(cleanID($defaultlink), '', true), 204 | ]; 205 | } 206 | 207 | /** 208 | * Hook Callback. Make current language available as page template placeholder and handle 209 | * original language copying 210 | * 211 | * @param Event $event COMMON_PAGETPL_LOAD 212 | */ 213 | public function handlePageTemplates(Event $event) 214 | { 215 | global $ID; 216 | 217 | // load orginal content as template? 218 | if ($this->getConf('copytrans') && $this->helper->istranslatable($ID, false)) { 219 | // look for existing translations 220 | $translations = $this->helper->getAvailableTranslations($ID); 221 | if ($translations) { 222 | // find original language (might've been provided via parameter or use first translation) 223 | $orig = (string)$_REQUEST['fromlang']; 224 | if (!$orig) $orig = array_key_first($translations); 225 | 226 | // load file 227 | $origfile = $translations[$orig]; 228 | $event->data['tpl'] = io_readFile(wikiFN($origfile)); 229 | 230 | // prefix with warning 231 | $warn = io_readFile($this->localFN('totranslate')); 232 | if ($warn) $warn .= "\n\n"; 233 | $event->data['tpl'] = $warn . $event->data['tpl']; 234 | 235 | // show user a choice of translations if any 236 | if (count($translations) > 1) { 237 | $links = []; 238 | foreach (array_keys($translations) as $t) { 239 | $links[] = '' . 240 | $this->helper->getLocalName($t) . 241 | ''; 242 | } 243 | 244 | msg( 245 | sprintf( 246 | $this->getLang('transloaded'), 247 | $this->helper->getLocalName($orig), 248 | implode(', ', $links) 249 | ) 250 | ); 251 | } 252 | } 253 | } 254 | 255 | // apply placeholders 256 | $event->data['tpl'] = str_replace('@LANG@', $this->helper->realLC(''), $event->data['tpl']); 257 | $event->data['tpl'] = str_replace('@TRANS@', $this->helper->getLangPart($ID), $event->data['tpl']); 258 | } 259 | 260 | /** 261 | * Hook Callback. Resort page match results so that results are ordered by translation, having the 262 | * default language first 263 | * 264 | * @param Event $event SEARCH_QUERY_PAGELOOKUP 265 | */ 266 | public function sortSearchResults(Event $event) 267 | { 268 | // sort into translation slots 269 | $res = []; 270 | foreach ($event->result as $r => $t) { 271 | $tr = $this->helper->getLangPart($r); 272 | if (!isset($res["x$tr"]) || !is_array($res["x$tr"])) { 273 | $res["x$tr"] = []; 274 | } 275 | $res["x$tr"][] = [$r, $t]; 276 | } 277 | // sort by translations 278 | ksort($res); 279 | // combine 280 | $event->result = []; 281 | foreach ($res as $r) { 282 | foreach ($r as $l) { 283 | $event->result[$l[0]] = $l[1]; 284 | } 285 | } 286 | } 287 | } 288 | -------------------------------------------------------------------------------- /admin.php: -------------------------------------------------------------------------------- 1 | 10 | */ 11 | class admin_plugin_translation extends AdminPlugin 12 | { 13 | /** @inheritdoc */ 14 | public function forAdminOnly() 15 | { 16 | return false; 17 | } 18 | 19 | /** @inheritdoc */ 20 | public function handle() 21 | { 22 | } 23 | 24 | /** @inheritdoc */ 25 | public function html() 26 | { 27 | 28 | /** @var helper_plugin_translation $helper */ 29 | $helper = plugin_load('helper', "translation"); 30 | $default_language = $helper->defaultlang; 31 | 32 | /** @var Doku_Renderer_xhtml $xhtml_renderer */ 33 | $xhtml_renderer = p_get_renderer('xhtml'); 34 | 35 | echo "

" . $this->getLang("menu") . "

"; 36 | echo ""; 37 | echo ""; 38 | if ($this->getConf('show_path')) { 39 | echo ""; 40 | } 41 | foreach ($helper->translations as $t) { 42 | if ($t === $default_language) { 43 | continue; 44 | } 45 | echo ""; 46 | } 47 | echo ""; 48 | 49 | $pages = $helper->getAllTranslatablePages(); 50 | foreach ($pages as $page) { 51 | // We have an existing and translatable page in the default language 52 | $showRow = false; 53 | $row = ""; 54 | if ($this->getConf('show_path')) { 55 | $row .= ""; 56 | } 57 | 58 | [, $idpart] = $helper->getTransParts($page["id"]); 59 | 60 | foreach ($helper->translations as $t) { 61 | if ($t === $default_language) { 62 | continue; 63 | } 64 | 65 | [$translID, ] = $helper->buildTransID($t, $idpart); 66 | 67 | $difflink = ''; 68 | if (!page_exists($translID)) { 69 | $class = "missing"; 70 | $title = $this->getLang("missing"); 71 | $showRow = true; 72 | } else { 73 | $translfn = wikiFN($translID); 74 | if ($page['mtime'] > filemtime($translfn)) { 75 | $class = "outdated"; 76 | $difflink = " getLang('old'); 80 | $showRow = true; 81 | } else { 82 | $class = "current"; 83 | $title = $this->getLang('current'); 84 | } 85 | } 86 | $row .= ""; 92 | } 93 | $row .= ""; 94 | 95 | if ($showRow) { 96 | echo $row; 97 | } 98 | } 99 | echo "
default: $default_language" . $this->getLang('path') . "$t
" . $xhtml_renderer->internallink($page['id'], null, null, true) . "" . $xhtml_renderer->internallink($page['id'], $page['id'], null, true) . "" . $xhtml_renderer->internallink( 87 | $translID, 88 | $title, 89 | null, 90 | true 91 | ) . $difflink . "
"; 100 | } 101 | 102 | } 103 | -------------------------------------------------------------------------------- /admin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /conf/default.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | 9 | $conf['translations'] = ''; 10 | $conf['translationns'] = ''; 11 | $conf['skiptrans'] = ''; 12 | $conf['dropdown'] = 0; 13 | $conf['translateui'] = 0; 14 | $conf['redirectstart'] = 0; 15 | $conf['checkage'] = 0; 16 | $conf['about'] = ''; 17 | $conf['localabout'] = 0; 18 | $conf['display'] = 'langcode,title'; 19 | $conf['copytrans'] = 0; 20 | $conf['show_path'] = 1; 21 | -------------------------------------------------------------------------------- /conf/metadata.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | 9 | $meta['translations'] = array('string','_pattern' => '/^(|[a-zA-Z\- ,]+)$/'); 10 | //$meta['translationns'] = array('string','_pattern' => '/^(|[\w:\-]+)$/'); # currently broken 11 | $meta['skiptrans'] = array('string'); 12 | $meta['dropdown'] = array('onoff'); 13 | $meta['display'] = array('multicheckbox', 14 | '_choices' => array('langcode','name','flag','title')); 15 | $meta['translateui'] = array('onoff'); 16 | $meta['redirectstart'] = array('onoff'); 17 | $meta['checkage'] = array('onoff'); 18 | $meta['about'] = array('string','_pattern' => '/^(|[\w:\-]+)$/'); 19 | $meta['localabout'] = array('onoff'); 20 | $meta['copytrans'] = array('onoff'); 21 | $meta['show_path'] = array('onoff'); 22 | -------------------------------------------------------------------------------- /deleted.files: -------------------------------------------------------------------------------- 1 | # This is a list of files that were present in previous releases 2 | # but were removed later. They should not exist in your installation. 3 | .travis.yml 4 | _test/basic.test.php 5 | _test/general.test.php 6 | flags/ad.gif 7 | flags/ae.gif 8 | flags/af.gif 9 | flags/ag.gif 10 | flags/ai.gif 11 | flags/al.gif 12 | flags/am.gif 13 | flags/an.gif 14 | flags/ao.gif 15 | flags/ar.gif 16 | flags/as.gif 17 | flags/at.gif 18 | flags/au.gif 19 | flags/aw.gif 20 | flags/ax.gif 21 | flags/az.gif 22 | flags/ba.gif 23 | flags/bb.gif 24 | flags/bd.gif 25 | flags/be.gif 26 | flags/bf.gif 27 | flags/bg.gif 28 | flags/bh.gif 29 | flags/bi.gif 30 | flags/bj.gif 31 | flags/blankflag.gif 32 | flags/bm.gif 33 | flags/bn.gif 34 | flags/bo.gif 35 | flags/br.gif 36 | flags/bs.gif 37 | flags/bt.gif 38 | flags/bv.gif 39 | flags/bw.gif 40 | flags/by.gif 41 | flags/bz.gif 42 | flags/ca.gif 43 | flags/catalonia.gif 44 | flags/cc.gif 45 | flags/cd.gif 46 | flags/cf.gif 47 | flags/cg.gif 48 | flags/ch.gif 49 | flags/ci.gif 50 | flags/ck.gif 51 | flags/cl.gif 52 | flags/cm.gif 53 | flags/cn.gif 54 | flags/co.gif 55 | flags/cr.gif 56 | flags/cs.gif 57 | flags/cu.gif 58 | flags/cv.gif 59 | flags/cx.gif 60 | flags/cy.gif 61 | flags/cz.gif 62 | flags/da.gif 63 | flags/de.gif 64 | flags/dj.gif 65 | flags/dk.gif 66 | flags/dm.gif 67 | flags/do.gif 68 | flags/dz.gif 69 | flags/ec.gif 70 | flags/ee.gif 71 | flags/eg.gif 72 | flags/eh.gif 73 | flags/el.gif 74 | flags/en.gif 75 | flags/england.gif 76 | flags/er.gif 77 | flags/es.gif 78 | flags/et.gif 79 | flags/europeanunion.gif 80 | flags/fa.gif 81 | flags/fam.gif 82 | flags/fi.gif 83 | flags/fj.gif 84 | flags/fk.gif 85 | flags/fm.gif 86 | flags/fo.gif 87 | flags/fr.gif 88 | flags/ga.gif 89 | flags/gb.gif 90 | flags/gd.gif 91 | flags/ge.gif 92 | flags/gf.gif 93 | flags/gh.gif 94 | flags/gi.gif 95 | flags/gl.gif 96 | flags/gm.gif 97 | flags/gn.gif 98 | flags/gp.gif 99 | flags/gq.gif 100 | flags/gr.gif 101 | flags/gs.gif 102 | flags/gt.gif 103 | flags/gu.gif 104 | flags/gw.gif 105 | flags/gy.gif 106 | flags/he.gif 107 | flags/hk.gif 108 | flags/hm.gif 109 | flags/hn.gif 110 | flags/hr.gif 111 | flags/ht.gif 112 | flags/hu.gif 113 | flags/id.gif 114 | flags/ie.gif 115 | flags/il.gif 116 | flags/in.gif 117 | flags/io.gif 118 | flags/iq.gif 119 | flags/ir.gif 120 | flags/is.gif 121 | flags/it.gif 122 | flags/ja.gif 123 | flags/jm.gif 124 | flags/jo.gif 125 | flags/jp.gif 126 | flags/ke.gif 127 | flags/kg.gif 128 | flags/kh.gif 129 | flags/ki.gif 130 | flags/km.gif 131 | flags/kn.gif 132 | flags/ko.gif 133 | flags/kp.gif 134 | flags/kr.gif 135 | flags/kw.gif 136 | flags/ky.gif 137 | flags/kz.gif 138 | flags/la.gif 139 | flags/langnames.php 140 | flags/lb.gif 141 | flags/lc.gif 142 | flags/li.gif 143 | flags/lk.gif 144 | flags/lr.gif 145 | flags/ls.gif 146 | flags/lt.gif 147 | flags/lu.gif 148 | flags/lv.gif 149 | flags/ly.gif 150 | flags/ma.gif 151 | flags/mc.gif 152 | flags/md.gif 153 | flags/me.gif 154 | flags/mg.gif 155 | flags/mh.gif 156 | flags/mk.gif 157 | flags/ml.gif 158 | flags/mm.gif 159 | flags/mn.gif 160 | flags/mo.gif 161 | flags/more/ad.gif 162 | flags/more/ae.gif 163 | flags/more/ag.gif 164 | flags/more/ai.gif 165 | flags/more/al.gif 166 | flags/more/am.gif 167 | flags/more/an.gif 168 | flags/more/ao.gif 169 | flags/more/ar.gif 170 | flags/more/as.gif 171 | flags/more/at.gif 172 | flags/more/au.gif 173 | flags/more/aw.gif 174 | flags/more/ax.gif 175 | flags/more/az.gif 176 | flags/more/ba.gif 177 | flags/more/bb.gif 178 | flags/more/bd.gif 179 | flags/more/be.gif 180 | flags/more/bf.gif 181 | flags/more/bg.gif 182 | flags/more/bh.gif 183 | flags/more/bi.gif 184 | flags/more/bj.gif 185 | flags/more/blankflag.gif 186 | flags/more/bm.gif 187 | flags/more/bn.gif 188 | flags/more/bo.gif 189 | flags/more/bs.gif 190 | flags/more/bt.gif 191 | flags/more/bv.gif 192 | flags/more/bw.gif 193 | flags/more/by.gif 194 | flags/more/bz.gif 195 | flags/more/ca.gif 196 | flags/more/catalonia.gif 197 | flags/more/cc.gif 198 | flags/more/cd.gif 199 | flags/more/cf.gif 200 | flags/more/cg.gif 201 | flags/more/ch.gif 202 | flags/more/ci.gif 203 | flags/more/ck.gif 204 | flags/more/cl.gif 205 | flags/more/cm.gif 206 | flags/more/co.gif 207 | flags/more/cr.gif 208 | flags/more/cs.gif 209 | flags/more/cu.gif 210 | flags/more/cv.gif 211 | flags/more/cx.gif 212 | flags/more/cy.gif 213 | flags/more/cz.gif 214 | flags/more/dj.gif 215 | flags/more/dm.gif 216 | flags/more/do.gif 217 | flags/more/dz.gif 218 | flags/more/ec.gif 219 | flags/more/ee.gif 220 | flags/more/eg.gif 221 | flags/more/eh.gif 222 | flags/more/england.gif 223 | flags/more/er.gif 224 | flags/more/et.gif 225 | flags/more/europeanunion.gif 226 | flags/more/fam.gif 227 | flags/more/fi.gif 228 | flags/more/fj.gif 229 | flags/more/fk.gif 230 | flags/more/fm.gif 231 | flags/more/fo.gif 232 | flags/more/ga.gif 233 | flags/more/gd.gif 234 | flags/more/ge.gif 235 | flags/more/gf.gif 236 | flags/more/gh.gif 237 | flags/more/gi.gif 238 | flags/more/gl.gif 239 | flags/more/gm.gif 240 | flags/more/gn.gif 241 | flags/more/gp.gif 242 | flags/more/gq.gif 243 | flags/more/gs.gif 244 | flags/more/gt.gif 245 | flags/more/gu.gif 246 | flags/more/gw.gif 247 | flags/more/gy.gif 248 | flags/more/hk.gif 249 | flags/more/hm.gif 250 | flags/more/hn.gif 251 | flags/more/hr.gif 252 | flags/more/ht.gif 253 | flags/more/id.gif 254 | flags/more/in.gif 255 | flags/more/io.gif 256 | flags/more/iq.gif 257 | flags/more/is.gif 258 | flags/more/ja.gif 259 | flags/more/jm.gif 260 | flags/more/jo.gif 261 | flags/more/ke.gif 262 | flags/more/kg.gif 263 | flags/more/kh.gif 264 | flags/more/ki.gif 265 | flags/more/km.gif 266 | flags/more/kn.gif 267 | flags/more/ko.gif 268 | flags/more/kp.gif 269 | flags/more/kw.gif 270 | flags/more/ky.gif 271 | flags/more/kz.gif 272 | flags/more/la.gif 273 | flags/more/lb.gif 274 | flags/more/lc.gif 275 | flags/more/li.gif 276 | flags/more/lk.gif 277 | flags/more/lr.gif 278 | flags/more/ls.gif 279 | flags/more/lt.gif 280 | flags/more/lu.gif 281 | flags/more/lv.gif 282 | flags/more/ly.gif 283 | flags/more/ma.gif 284 | flags/more/mc.gif 285 | flags/more/md.gif 286 | flags/more/me.gif 287 | flags/more/mg.gif 288 | flags/more/mh.gif 289 | flags/more/mk.gif 290 | flags/more/ml.gif 291 | flags/more/mm.gif 292 | flags/more/mn.gif 293 | flags/more/mo.gif 294 | flags/more/mp.gif 295 | flags/more/mq.gif 296 | flags/more/mr.gif 297 | flags/more/ms.gif 298 | flags/more/mt.gif 299 | flags/more/mu.gif 300 | flags/more/mv.gif 301 | flags/more/mw.gif 302 | flags/more/mx.gif 303 | flags/more/my.gif 304 | flags/more/mz.gif 305 | flags/more/na.gif 306 | flags/more/nc.gif 307 | flags/more/ne.gif 308 | flags/more/nf.gif 309 | flags/more/ng.gif 310 | flags/more/ni.gif 311 | flags/more/np.gif 312 | flags/more/nr.gif 313 | flags/more/nu.gif 314 | flags/more/nz.gif 315 | flags/more/om.gif 316 | flags/more/pa.gif 317 | flags/more/pe.gif 318 | flags/more/pf.gif 319 | flags/more/pg.gif 320 | flags/more/ph.gif 321 | flags/more/pk.gif 322 | flags/more/pl.gif 323 | flags/more/pm.gif 324 | flags/more/pn.gif 325 | flags/more/pr.gif 326 | flags/more/ps.gif 327 | flags/more/pw.gif 328 | flags/more/py.gif 329 | flags/more/qa.gif 330 | flags/more/re.gif 331 | flags/more/rs.gif 332 | flags/more/rw.gif 333 | flags/more/sb.gif 334 | flags/more/sc.gif 335 | flags/more/scotland.gif 336 | flags/more/sd.gif 337 | flags/more/sg.gif 338 | flags/more/sh.gif 339 | flags/more/si.gif 340 | flags/more/sj.gif 341 | flags/more/sk.gif 342 | flags/more/sl.gif 343 | flags/more/sm.gif 344 | flags/more/sn.gif 345 | flags/more/so.gif 346 | flags/more/sr.gif 347 | flags/more/st.gif 348 | flags/more/sv.gif 349 | flags/more/sy.gif 350 | flags/more/sz.gif 351 | flags/more/tc.gif 352 | flags/more/td.gif 353 | flags/more/tf.gif 354 | flags/more/tg.gif 355 | flags/more/tj.gif 356 | flags/more/tk.gif 357 | flags/more/tl.gif 358 | flags/more/tm.gif 359 | flags/more/tn.gif 360 | flags/more/to.gif 361 | flags/more/tt.gif 362 | flags/more/tv.gif 363 | flags/more/tw.gif 364 | flags/more/tz.gif 365 | flags/more/ua.gif 366 | flags/more/ug.gif 367 | flags/more/um.gif 368 | flags/more/us.gif 369 | flags/more/uy.gif 370 | flags/more/uz.gif 371 | flags/more/va.gif 372 | flags/more/vc.gif 373 | flags/more/ve.gif 374 | flags/more/vg.gif 375 | flags/more/vi.gif 376 | flags/more/vu.gif 377 | flags/more/wales.gif 378 | flags/more/wf.gif 379 | flags/more/ws.gif 380 | flags/more/ye.gif 381 | flags/more/yt.gif 382 | flags/more/za.gif 383 | flags/more/zm.gif 384 | flags/more/zw.gif 385 | flags/mp.gif 386 | flags/mq.gif 387 | flags/mr.gif 388 | flags/ms.gif 389 | flags/mt.gif 390 | flags/mu.gif 391 | flags/mv.gif 392 | flags/mw.gif 393 | flags/mx.gif 394 | flags/my.gif 395 | flags/mz.gif 396 | flags/na.gif 397 | flags/nc.gif 398 | flags/ne.gif 399 | flags/nf.gif 400 | flags/ng.gif 401 | flags/ni.gif 402 | flags/nl.gif 403 | flags/no.gif 404 | flags/np.gif 405 | flags/nr.gif 406 | flags/nu.gif 407 | flags/nz.gif 408 | flags/om.gif 409 | flags/pa.gif 410 | flags/pe.gif 411 | flags/pf.gif 412 | flags/pg.gif 413 | flags/ph.gif 414 | flags/pk.gif 415 | flags/pl.gif 416 | flags/pm.gif 417 | flags/pn.gif 418 | flags/pr.gif 419 | flags/ps.gif 420 | flags/pt-br.gif 421 | flags/pt.gif 422 | flags/pw.gif 423 | flags/py.gif 424 | flags/qa.gif 425 | flags/re.gif 426 | flags/ro.gif 427 | flags/rs.gif 428 | flags/ru.gif 429 | flags/rw.gif 430 | flags/sa.gif 431 | flags/sb.gif 432 | flags/sc.gif 433 | flags/scotland.gif 434 | flags/sd.gif 435 | flags/se.gif 436 | flags/sg.gif 437 | flags/sh.gif 438 | flags/si.gif 439 | flags/sj.gif 440 | flags/sk.gif 441 | flags/sl.gif 442 | flags/sm.gif 443 | flags/sn.gif 444 | flags/so.gif 445 | flags/sr.gif 446 | flags/st.gif 447 | flags/sv.gif 448 | flags/sy.gif 449 | flags/sz.gif 450 | flags/tc.gif 451 | flags/td.gif 452 | flags/tf.gif 453 | flags/tg.gif 454 | flags/th.gif 455 | flags/tj.gif 456 | flags/tk.gif 457 | flags/tl.gif 458 | flags/tm.gif 459 | flags/tn.gif 460 | flags/to.gif 461 | flags/tr.gif 462 | flags/tt.gif 463 | flags/tv.gif 464 | flags/tw.gif 465 | flags/tz.gif 466 | flags/ua.gif 467 | flags/ug.gif 468 | flags/um.gif 469 | flags/us.gif 470 | flags/uy.gif 471 | flags/uz.gif 472 | flags/va.gif 473 | flags/vc.gif 474 | flags/ve.gif 475 | flags/vg.gif 476 | flags/vi.gif 477 | flags/vn.gif 478 | flags/vu.gif 479 | flags/wales.gif 480 | flags/wf.gif 481 | flags/ws.gif 482 | flags/ye.gif 483 | flags/yt.gif 484 | flags/za.gif 485 | flags/zh.gif 486 | flags/zm.gif 487 | flags/zw.gif 488 | info.txt 489 | style.css 490 | syntax.php 491 | script.js 492 | 493 | -------------------------------------------------------------------------------- /flags/ar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/be.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/bg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/cs.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/da.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/de.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/el.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/en.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/eo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/et.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/fi.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/fr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/gd.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/he.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/hu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/ia.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/id.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/is.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/it.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/ja.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/splitbrain/dokuwiki-plugin-translation/ba8059de546bc70260a67ac70b360acf8ca03a5f/flags/ja.svg -------------------------------------------------------------------------------- /flags/ko.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/mt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/nl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/no.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/pl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/pt-br.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/pt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/ro.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/ru.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/sk.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/sl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/sv.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/tr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/uk.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/uz.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/vi.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/zh-tw.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flags/zh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /getflags.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | grep -v '^#' "lang/flags.txt" | \ 4 | while read code src; do 5 | if [ ! -z "$src" ]; then 6 | wget "$src" -O "flags/$code.svg" 7 | fi 8 | done 9 | 10 | svgo flags/*.svg 11 | -------------------------------------------------------------------------------- /helper.php: -------------------------------------------------------------------------------- 1 | 11 | */ 12 | class helper_plugin_translation extends Plugin 13 | { 14 | public $translations = []; 15 | public $translationNs = ''; 16 | public $defaultlang = ''; 17 | public $LN = []; // hold native names 18 | public $opts = []; // display options 19 | 20 | /** 21 | * Initialize 22 | */ 23 | public function __construct() 24 | { 25 | global $conf; 26 | require_once(DOKU_INC . 'inc/pageutils.php'); 27 | require_once(DOKU_INC . 'inc/utf8.php'); 28 | 29 | $this->loadTranslationNamespaces(); 30 | 31 | // load language names 32 | $this->LN = confToHash(__DIR__ . '/lang/langnames.txt'); 33 | 34 | // display options 35 | $this->opts = $this->getConf('display'); 36 | $this->opts = explode(',', $this->opts); 37 | $this->opts = array_map('trim', $this->opts); 38 | $this->opts = array_fill_keys($this->opts, true); 39 | 40 | // get default translation 41 | if (empty($conf['lang_before_translation'])) { 42 | $dfl = $conf['lang']; 43 | } else { 44 | $dfl = $conf['lang_before_translation']; 45 | } 46 | if (in_array($dfl, $this->translations)) { 47 | $this->defaultlang = $dfl; 48 | } else { 49 | $this->defaultlang = ''; 50 | array_unshift($this->translations, ''); 51 | } 52 | 53 | $this->translationNs = cleanID($this->getConf('translationns')); 54 | if ($this->translationNs) $this->translationNs .= ':'; 55 | } 56 | 57 | /** 58 | * Parse 'translations'-setting into $this->translations 59 | */ 60 | public function loadTranslationNamespaces() 61 | { 62 | // load wanted translation into array 63 | $this->translations = strtolower(str_replace(',', ' ', $this->getConf('translations'))); 64 | $this->translations = array_unique(array_filter(explode(' ', $this->translations))); 65 | sort($this->translations); 66 | } 67 | 68 | /** 69 | * Check if the given ID is a translation and return the language code. 70 | * 71 | * @param string $id 72 | * @return string 73 | */ 74 | public function getLangPart($id) 75 | { 76 | [$lng] = $this->getTransParts($id); 77 | return $lng; 78 | } 79 | 80 | /** 81 | * Check if the given ID is a translation and return the language code and 82 | * the id part. 83 | * 84 | * @param string $id 85 | * @return array 86 | */ 87 | public function getTransParts($id) 88 | { 89 | $rx = '/^' . $this->translationNs . '(' . implode('|', $this->translations) . '):(.*)/'; 90 | if (preg_match($rx, $id, $match)) { 91 | return [$match[1], $match[2]]; 92 | } 93 | return ['', $id]; 94 | } 95 | 96 | /** 97 | * Returns the browser language if it matches with one of the configured 98 | * languages 99 | */ 100 | public function getBrowserLang() 101 | { 102 | global $conf; 103 | $langs = $this->translations; 104 | if (!in_array($conf['lang'], $langs)) { 105 | $langs[] = $conf['lang']; 106 | } 107 | $rx = '/(^|,|:|;|-)(' . implode('|', $langs) . ')($|,|:|;|-)/i'; 108 | if (preg_match($rx, $_SERVER['HTTP_ACCEPT_LANGUAGE'], $match)) { 109 | return strtolower($match[2]); 110 | } 111 | return false; 112 | } 113 | 114 | /** 115 | * Returns the ID and name to the wanted translation, empty 116 | * $lng is default lang 117 | * 118 | * @param string $lng 119 | * @param string $idpart 120 | * @return array 121 | */ 122 | public function buildTransID($lng, $idpart) 123 | { 124 | if ($lng && in_array($lng, $this->translations)) { 125 | $link = ':' . $this->translationNs . $lng . ':' . $idpart; 126 | $name = $lng; 127 | } else { 128 | $link = ':' . $this->translationNs . $idpart; 129 | $name = $this->realLC(''); 130 | } 131 | return [$link, $name]; 132 | } 133 | 134 | /** 135 | * Returns the real language code, even when an empty one is given 136 | * (eg. resolves th default language) 137 | * 138 | * @param string $lc 139 | * @return string 140 | */ 141 | public function realLC($lc) 142 | { 143 | global $conf; 144 | if ($lc) { 145 | return $lc; 146 | } elseif (empty($conf['lang_before_translation'])) { 147 | return $conf['lang']; 148 | } else { 149 | return $conf['lang_before_translation']; 150 | } 151 | } 152 | 153 | /** 154 | * Check if current ID should be translated and any GUI 155 | * should be shown 156 | * 157 | * @param string $id 158 | * @param bool $checkact only return true if $ACT is 'show' 159 | * @return bool 160 | */ 161 | public function istranslatable($id, $checkact = true) 162 | { 163 | global $ACT; 164 | 165 | if ($checkact && (!isset($ACT) || act_clean($ACT) != 'show')) return false; 166 | if ($this->translationNs && strpos($id, (string) $this->translationNs) !== 0) return false; 167 | $skiptrans = trim($this->getConf('skiptrans')); 168 | if ($skiptrans && preg_match('/' . $skiptrans . '/ui', ':' . $id)) return false; 169 | $meta = p_get_metadata($id); 170 | if (!empty($meta['plugin']['translation']['notrans'])) return false; 171 | 172 | return true; 173 | } 174 | 175 | /** 176 | * Return the (localized) about link 177 | */ 178 | public function showAbout() 179 | { 180 | global $ID; 181 | 182 | $curlc = $this->getLangPart($ID); 183 | 184 | $about = $this->getConf('about'); 185 | if ($this->getConf('localabout')) { 186 | [, $idpart] = $this->getTransParts($about); 187 | [$about, ] = $this->buildTransID($curlc, $idpart); 188 | $about = cleanID($about); 189 | } 190 | 191 | $out = ''; 192 | $out .= html_wikilink($about, '?'); 193 | $out .= ''; 194 | 195 | return $out; 196 | } 197 | 198 | /** 199 | * Returns a list of (lc => link) for all existing translations of a page 200 | * 201 | * @param $id 202 | * @return array 203 | */ 204 | public function getAvailableTranslations($id) 205 | { 206 | $result = []; 207 | 208 | [$lc, $idpart] = $this->getTransParts($id); 209 | 210 | foreach ($this->translations as $t) { 211 | if ($t == $lc) continue; //skip self 212 | [$link, $name] = $this->buildTransID($t, $idpart); 213 | if (page_exists($link)) { 214 | $result[$name] = $link; 215 | } 216 | } 217 | 218 | return $result; 219 | } 220 | 221 | /** 222 | * Creates an UI for linking to the available and configured translations 223 | * 224 | * Can be called from the template or via the ~~TRANS~~ syntax component. 225 | * 226 | * @param string $checkage (note that checkAge() should be called anyway at some point) 227 | */ 228 | public function showTranslations($checkage = true) 229 | { 230 | global $INFO; 231 | 232 | if (!$this->istranslatable($INFO['id'])) return ''; 233 | if ($checkage) $this->checkage(); 234 | 235 | [, $idpart] = $this->getTransParts($INFO['id']); 236 | 237 | $out = '
'; 238 | 239 | //show title and about 240 | if (isset($this->opts['title']) || $this->getConf('about')) { 241 | $out .= ''; 242 | if (isset($this->opts['title'])) $out .= $this->getLang('translations'); 243 | if ($this->getConf('about')) $out .= $this->showAbout(); 244 | if (isset($this->opts['title'])) $out .= ': '; 245 | $out .= ''; 246 | } 247 | 248 | $out .= '
    '; 249 | foreach ($this->translations as $t) { 250 | [$type, $text, $attr] = $this->prepareLanguageSelectorItem($t, $idpart, $INFO['id']); 251 | $out .= '
  • '; 252 | $out .= "<$type " . buildAttributes($attr) . ">$text"; 253 | $out .= '
  • '; 254 | } 255 | $out .= '
'; 256 | 257 | $out .= '
'; 258 | 259 | return $out; 260 | } 261 | 262 | /** 263 | * Return the local name 264 | * 265 | * @param $lang 266 | * @return string 267 | */ 268 | public function getLocalName($lang) 269 | { 270 | return $this->LN[$lang] ?? $lang; 271 | } 272 | 273 | /** 274 | * Create a single language selector item 275 | * 276 | * @param string $lc The language code of the item 277 | * @param string $idpart The ID part of the item 278 | * @param string $current The current ID 279 | * @return array [$type, $text, $attr] 280 | */ 281 | protected function prepareLanguageSelectorItem($lc, $idpart, $current) 282 | { 283 | [$target, $lang] = $this->buildTransID($lc, $idpart); 284 | $target = cleanID($target); 285 | $exists = page_exists($target, '', false); 286 | 287 | $text = ''; 288 | $attr = [ 289 | 'class' => $exists ? 'wikilink1' : 'wikilink2', 290 | 'title' => $this->getLocalName($lang), 291 | ]; 292 | 293 | // no link on current page 294 | if ($current === $target) { 295 | $type = 'span'; 296 | } else { 297 | $type = 'a'; 298 | $attr['href'] = wl($target); 299 | } 300 | 301 | // add flag 302 | if (isset($this->opts['flag'])) { 303 | $text .= '' . inlineSVG(DOKU_PLUGIN . 'translation/flags/' . $lang . '.svg', 1024 * 12) . ''; 304 | } 305 | 306 | // decide what to show 307 | if (isset($this->opts['name'])) { 308 | $text .= hsc($this->getLocalName($lang)); 309 | if (isset($this->opts['langcode'])) $text .= ' (' . hsc($lang) . ')'; 310 | } elseif (isset($this->opts['langcode'])) { 311 | $text .= hsc($lang); 312 | } 313 | 314 | return [$type, $text, $attr]; 315 | } 316 | 317 | /** 318 | * Checks if the current page is a translation of a page 319 | * in the default language. Displays a notice when it is 320 | * older than the original page. Tries to link to a diff 321 | * with changes on the original since the translation 322 | */ 323 | public function checkage() 324 | { 325 | global $ID; 326 | global $INFO; 327 | if (!$this->getConf('checkage')) return; 328 | if (!$INFO['exists']) return; 329 | $lng = $this->getLangPart($ID); 330 | if ($lng == $this->defaultlang) return; 331 | 332 | $rx = '/^' . $this->translationNs . '((' . implode('|', $this->translations) . '):)?/'; 333 | $idpart = preg_replace($rx, '', $ID); 334 | 335 | // compare modification times 336 | [$orig, ] = $this->buildTransID($this->defaultlang, $idpart); 337 | $origfn = wikiFN($orig); 338 | if ($INFO['lastmod'] >= @filemtime($origfn)) return; 339 | 340 | // build the message and display it 341 | $orig = cleanID($orig); 342 | $msg = sprintf($this->getLang('outdated'), wl($orig)); 343 | 344 | $difflink = $this->getOldDiffLink($orig, $INFO['lastmod']); 345 | if ($difflink) { 346 | $msg .= sprintf(' ' . $this->getLang('diff'), $difflink); 347 | } 348 | 349 | echo '
' . $msg . '
'; 350 | } 351 | 352 | /** 353 | * Get a link to a diff with changes on the original since the translation 354 | * 355 | * @param string $id 356 | * @param int $lastmod 357 | * @return false|string false id no diff can be found, link otherwise 358 | */ 359 | public function getOldDiffLink($id, $lastmod) 360 | { 361 | // get revision from before translation 362 | $orev = false; 363 | $changelog = new PageChangeLog($id); 364 | $revs = $changelog->getRevisions(0, 100); 365 | foreach ($revs as $rev) { 366 | if ($rev < $lastmod) { 367 | $orev = $rev; 368 | break; 369 | } 370 | } 371 | if ($orev && !page_exists($id, $orev)) { 372 | return false; 373 | } 374 | $id = cleanID($id); 375 | return wl($id, ['do' => 'diff', 'rev' => $orev]); 376 | } 377 | 378 | 379 | /** 380 | * Get all translatable Pages (in the default language) 381 | * 382 | * @param string $namespace 383 | * @return array 384 | */ 385 | public function getAllTranslatablePages($namespace = '') 386 | { 387 | $tns = $this->getConf("translationns"); 388 | $tdir = dirname(wikiFN("$tns:foo")); 389 | 390 | if($namespace) { 391 | $nns = cleanID($namespace); 392 | $ndir = dirname(wikiFN("$nns:foo")); 393 | } else { 394 | $ndir = $tdir; 395 | } 396 | 397 | if(!str_starts_with($ndir, $tdir)) { 398 | throw new \RuntimeException( 399 | "Given namespace $nns is not a subnamespace of the translation namespace $tns" 400 | ); 401 | } 402 | 403 | $basedir = dirname(wikiFN('foo')); 404 | $reldir = substr($ndir, strlen($basedir) + 1); 405 | 406 | 407 | $pages = []; 408 | search($pages, $basedir, 'search_allpages', [], $reldir); 409 | 410 | return array_filter($pages, function ($page) use ($namespace) { 411 | if ( 412 | $this->getLangPart($page["id"]) !== $this->defaultlang || 413 | !$this->istranslatable($page["id"], false) || 414 | !page_exists($page["id"]) 415 | ) { 416 | return false; 417 | } 418 | return true; 419 | }); 420 | } 421 | } 422 | -------------------------------------------------------------------------------- /lang/be/lang.php: -------------------------------------------------------------------------------- 1 | 9 | */ 10 | 11 | $lang['translations'] = 'Пераклад гэтай старонкі'; 12 | $lang['outdated'] = 'Гэты пераклад старэй, чым
арыгінальная старонка і можа быць не актуальным.'; 13 | $lang['diff'] = 'Глядзіце было зменена.'; 14 | $lang['transloaded'] = 'Сэнс перакладу гэтай старонкі %s быў папярэдне загружаны для зручнасці перакладу.
Таксама можаце выкарыстоўваць наступныя пераклады: %s.'; 15 | $lang['menu'] = 'састарэлыя і адсутныя пераклады'; 16 | $lang['missing'] = 'Адсутнічае!'; 17 | $lang['old'] = 'застарэлы'; 18 | $lang['current'] = 'бягучы'; 19 | $lang['path'] = 'Шлях'; 20 | -------------------------------------------------------------------------------- /lang/be/settings.php: -------------------------------------------------------------------------------- 1 | 9 | */ 10 | 11 | $lang['translations'] = 'Спіс падтрымоўваных моў перакладу (двохсимвольні коды ISO). Падзяляйце значэння коскамі або прабеламі.'; 12 | $lang['translationns'] = 'Калі вы хочаце перавесці толькі пэўны Прастору імёнаў, тады ўпішыце тут яго імя.'; 13 | $lang['skiptrans'] = 'Калі імя старонкі адпавядае гэтаму рэгулярнаму выразу, тады не адлюстроўваць меню перакладаў.'; 14 | $lang['dropdown'] = 'Выкарыстаць выпадальны спіс для адлюстравання даступных перакладаў (рэкамендуецца, калі больш за 5 перакладаў)'; 15 | $lang['translateui'] = 'Павінна мова інтэрфейсу карыстальніка таксама перамыкацца мовы Прасторы імёнаў?'; 16 | $lang['redirectstart'] = 'Павінна стартавая старонка аўтаматычна перенаправлятись на Прастору імёнаў мовы, выкарыстоўваючы детектекцію мовы аглядальніка?'; 17 | $lang['about'] = 'Калі ласка, Увядзіце імя старонкі, на якой будзе руж\'растлумачана функцыі перакладу для вашых карыстальнікаў. Яна будзе звязана з выбарам мовы.'; 18 | $lang['localabout'] = 'Выкарыстаць лакалізаваную версію старонкі руж\'тлумачэнняў (замест адной глабальнай старонкі руж\'тлумачэнняў).'; 19 | $lang['checkage'] = 'Адлюстроўваць папярэджанне аб магчымай не актуальнасць перакладу старонак?'; 20 | $lang['display'] = 'Абярыце што б вы хацелі адлюстроўваць у перамыкачы моў. Заўвага: выкарыстоўваць сцяг краіны для пераключальніка моў не рэкамендуецца экспертамі па выгодзе выкарыстання інтэрфейсу.'; 21 | 22 | $lang['copytrans'] = 'Скапіяваць тэкст на мове арыгінала да рэдактара ў пачатку новага перакладу?'; 23 | $lang['show_path'] = 'Паказаць шлях адсутнічае на старонцы перакладу?'; 24 | -------------------------------------------------------------------------------- /lang/be/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Гэтая старонка яшчэ не цалкам перакладзеная. Калі ласка, дапамажыце завяршыць пераклад.**\\ //(выдаліце гэты абзац пасля завяршэння перакладу)// -------------------------------------------------------------------------------- /lang/bn/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'এই পাতার অনুবাদ'; 9 | $lang['outdated'] = 'এই অনুবাদ মূল পাতা তুলনায় পুরোনো হয় এবং পুরান হতে পারে.'; 10 | $lang['diff'] = 'দেখুন কি পরিবর্তন হয়েছে'; 11 | -------------------------------------------------------------------------------- /lang/bn/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['about'] = 'এখানে একটি পৃষ্ঠায় নাম লিখুন যেখানে অনুবাদের বৈশিষ্ট্যটি ব্যবহারকারীদের জন্য ব্যাখ্যা করা আছে. এটা ভাষা নির্বাচক থেকে লিঙ্ক করা হবে.'; 9 | $lang['checkage'] = 'সম্ভবত পুরোনো অনুবাদের বিষয়ে সাবধান.'; 10 | $lang['copytrans'] = 'একটি নতুন অনুবাদ শুরু যখন সম্পাদক মধ্যে মূল ভাষা টেক্সট কপি করুন?'; 11 | -------------------------------------------------------------------------------- /lang/bn/totranslate.txt: -------------------------------------------------------------------------------- 1 | FixMe ** এই পাতা সম্পূর্ণরূপে এখনো অনুবাদ করা হয়নি. অনুবাদ সমাপ্তির সাহায্য করুন. ** \ \ / / (অনুবাদ সমাপ্ত হয় একবার এই অনুচ্ছেদ মুছে ফেলুন) / / -------------------------------------------------------------------------------- /lang/ca/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Traduccions d\'aquesta pàgina'; 9 | $lang['outdated'] = 'Aquesta traducció és més antiga que la pàgina original i pot estar desactualitzada.'; 10 | $lang['diff'] = 'Veure que ha canviat.'; 11 | $lang['transloaded'] = 'Els continguts de la traducció d\'aquesta pàgina a %s han sigut pre-carregats per facilitar la traducció.
Però pots basar la teva traducció en les següents traduccions: %s'; 12 | $lang['menu'] = 'traduccions desactualitzades i que falten'; 13 | $lang['missing'] = 'Falta!'; 14 | $lang['old'] = 'desactualitzat'; 15 | $lang['current'] = 'actualitzat'; 16 | $lang['path'] = 'Ruta'; 17 | -------------------------------------------------------------------------------- /lang/ca/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Llista separada per espais d\'idiomes de traducció'; 9 | $lang['translationns'] = 'Si només vols traduccions sota un cert espai de noms, posa\'l aquí.'; 10 | $lang['skiptrans'] = 'Quan el nom de la pàgina coincideix amb aquesta expressió regular, no mostris el menú de traducció.'; 11 | $lang['dropdown'] = 'Utilitzar una llista desplegable per mostrar les traduccions (recomanat per a més de 5 idiomes).'; 12 | $lang['translateui'] = 'L\'idioma de la interfície d\'usuari s\'hauria de canviar també en els espais de noms en llengües estrangeres?'; 13 | $lang['redirectstart'] = 'La pàgina d\'inici hauria de redirigir a un espai de noms d\'idioma mitjançant la detecció d\'idioma del navegador?'; 14 | $lang['about'] = 'Introdueix un nom de pàgina aquí, on la funció de traducció s\'explica als usuaris. Estarà connectat des del selector d\'idioma.'; 15 | $lang['localabout'] = 'Utilitzar versions localitzades de la pàgina \'quant a\' (en lloc d\'un \'quant a\' global).'; 16 | $lang['checkage'] = 'Advertir sobre possibles traduccions obsoletes.'; 17 | $lang['display'] = 'Selecciona el que vulguis que es mostri al seleccionador d\'idioma. Recorda que els experts en usabilitat no recomanen fer servir banderes de país.'; 18 | $lang['copytrans'] = 'Copiar el text en l\'idioma original en l\'editor quan s\'inicia una nova traducció?'; 19 | $lang['show_path'] = 'Mostrar la ruta a la pàgina de traducció que falta?'; 20 | -------------------------------------------------------------------------------- /lang/ca/totranslate.txt: -------------------------------------------------------------------------------- 1 | ARREGLA'M **Aquesta pàgina encara no està totalment traduïda. Si us plau, ajuda completant la traducció.**\\//(treu aquest paràgraf en acabar la traducció)// -------------------------------------------------------------------------------- /lang/ckb/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'وەرگێڕانەکانی ئەم لاپەڕەیە'; 9 | $lang['outdated'] = 'ئەم وەرگێڕانە کۆنترە لە پەڕەی سەرەکی و لەوانەیە کۆن بێت.'; 10 | $lang['diff'] = 'بڕوانە چی هەیە گۆڕا.'; 11 | $lang['transloaded'] = 'ناوەڕۆکی وەرگێڕانی ئەم لاپەڕەیە لە %s پێشتر بارکراوە بۆ وەرگێڕانێکی ئاسان.
بەڵام دەتوانیت وەرگێڕانەکەت بە بنەما بێنیت لەسەر ئەم وەرگێڕانەی خوارەوە: %s.'; 12 | $lang['menu'] = 'وەرگێڕانە کۆن و ونبووەکان'; 13 | $lang['missing'] = 'دیار نیە'; 14 | $lang['old'] = 'کۆن'; 15 | $lang['current'] = 'نوێکردنەوە'; 16 | $lang['path'] = 'ڕێڕەو'; 17 | -------------------------------------------------------------------------------- /lang/ckb/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'بۆشایی جیاکراوەی لیستی زمانەکانی وەرگێڕان (کۆدەکانی ISO).'; 9 | $lang['translationns'] = 'ئەگەر تەنها وەرگێڕانت دەوێت لە ژێر بۆشایی ەکی دیاریکراوی ناو، بیخەرە ئێرە.'; 10 | $lang['skiptrans'] = 'کاتێک ناوی لاپەڕەکە لەگەڵ ئەم دەربڕینە ئاساییە دا هاوچەشنە، لیستی وەرگێڕانەکە پیشان مەدە.'; 11 | $lang['dropdown'] = 'بەکارهێنانی لیستی داشکان بۆ پیشاندانی وەرگێڕانەکان (پێشنیارکراوە بۆ زیاتر لە 5 زمان).'; 12 | $lang['translateui'] = 'ئایا زمانی ڕووکاری بەکارهێنەر دەبێت لە ناوەکانی ناوی زمانی بیانیدا بگۆڕدریت؟'; 13 | $lang['redirectstart'] = 'ئایا پێویستە لاپەڕەی دەستپێک بە شێوەیەکی خۆکار دووبارە ئاڕاستە بکرێت بۆ بۆشایی ناوی زمان بە بەکارهێنانی دۆزینەوەی زمانی وێبگەڕ؟'; 14 | $lang['about'] = 'لێرە ناوی لاپەڕەیەک بنووسە کە تایبەتمەندی وەرگێڕانەکە بۆ بەکارهێنەرەکانت ڕوونکراوە. لە هەڵبژێری زمانەوە لینک دەکرێت.'; 15 | $lang['localabout'] = 'بەکارهێنانی وەشانەکانی ناوچەیی دەربارەی لاپەڕە (لەجیاتی یەک جیهانی دەربارەی لاپەڕە).'; 16 | $lang['checkage'] = 'ئاگاداری دەربارەی وەرگێڕانە کۆنەکان.'; 17 | $lang['display'] = 'دیاریکردنی ئەو شتەی کە دەتەوێت پیشانت داوە لە هەڵبژاردنی زمان. تێبینی ئەوە بکە کە بەکارهێنانی ئاڵای وڵات بۆ هەڵبژاردنی زمان لەلایەن شارەزایانی توانای بەکارهێنانەوە پێشنیار نەکراوە.'; 18 | $lang['copytrans'] = 'کۆپیکردنی دەقی زمانی ڕەسەن بۆ ناو ئێدیتەر کاتێک دەست دەکات بە وەرگێڕانێکی نوێ؟'; 19 | $lang['show_path'] = 'پیشاندانی ڕێڕەو لەسەر پەڕەی وەرگێڕانە ونبووەکان؟'; 20 | -------------------------------------------------------------------------------- /lang/ckb/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME ** ئەم لاپەڕەیە بەتەواوی وەرناگێڕدرا، هێشتا. تکایە یارمەتیت بدە لە تەواوکردنی وەرگێڕانەکە.**//(لابردنی ئەم پەرەگرافە کاتێک وەرگێڕانەکە تەواو بوو)// -------------------------------------------------------------------------------- /lang/cs/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Překlady této stránky'; 9 | $lang['outdated'] = 'Tento překlad je starší než originální stránka a nejspíše i zastaralý.'; 10 | $lang['diff'] = 'Zobrazit změny.'; 11 | $lang['transloaded'] = 'Text pro překlad této stránky do %s byl pro ulehčení překládání automaticky načten.
Můžete ale použít předešlé dostupné překlady: %s.'; 12 | $lang['menu'] = 'zastaralé a chybějící překlady'; 13 | $lang['missing'] = 'Chybí!'; 14 | $lang['old'] = 'zastaralý'; 15 | $lang['current'] = 'aktuální'; 16 | $lang['path'] = 'Cesta'; 17 | -------------------------------------------------------------------------------- /lang/cs/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Seznam přeložených jazyků (ISO kódů) oddělený mezerami. Nezahrnujte defaultní jazyk!'; 9 | $lang['translationns'] = 'Chcete-li udržovat překlad jen pro konkrétní jmenný prostor, vložte jeho jméno sem.'; 10 | $lang['skiptrans'] = 'Pokud jméno stránky obsahuje tento regulární výraz, nezobrazovat překladové menu.'; 11 | $lang['dropdown'] = 'Použít rozbalovací seznam dostupných překladů (doporučeno pro 5 a více jazyků).'; 12 | $lang['translateui'] = 'Mělo by se přeložit i uživatelské rozhraní při změně překladu stránky?'; 13 | $lang['redirectstart'] = 'Má hlavní stránka automaticky přesměrovávat na dostupnou jazykovou verzi jmenného prostoru dle nastavení jazyka prohlížeče?'; 14 | $lang['about'] = 'Vložte jméno stránky s nápovědou ohledně možnosti překládat stránky na DokuWiki s pomoci Translation pluginu. Tento odkaz bude k dispozici z výběru přeložených jazyků.'; 15 | $lang['localabout'] = 'Použít přeložené verze stran o aplikaci (namísto té globální).'; 16 | $lang['checkage'] = 'Upozorňovat na možné zastaralé překlady.'; 17 | $lang['display'] = 'Vybrat co se má zobrazovat v menu pro výběr jazyka. Experti na použitelnost webu nedoporučují zobrazování obrázků vlajek zemí pro výběr jazyka.'; 18 | $lang['copytrans'] = 'Kopírovat výchozí jazykovou verzi do editoru pro nový překlad?'; 19 | $lang['show_path'] = 'Zobrazit cestu na chybějící stránku překladu?'; 20 | -------------------------------------------------------------------------------- /lang/cs/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Tato stránka ještě není plně přeložena. Pomozte s dokončením překladu.**\\ //(odstraňte tento odstavec, jakmile je překlad dokončen)// -------------------------------------------------------------------------------- /lang/cy/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Cyfieithiadau\'r dudalen hon'; 9 | $lang['outdated'] = 'Mae\'r cyfieithiad hwn yn hŷn na\'r dudalen wreiddiol a gall fod wedi dyddio.'; 10 | $lang['diff'] = 'Gweld beth sydd wedi newid.'; 11 | $lang['transloaded'] = 'Cafodd cynnwys y dudalen hon mewn %s ei raglwytho er mwyn hwyluso\'r cyfieithu.
Er gallwch chi seilio\'ch cyfieithiad ar y cyfieithiadau canlynol sy\'n bodoli\'n barod: %s'; 12 | -------------------------------------------------------------------------------- /lang/cy/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Rhestr gwahanwyd gan goma o iaith gyfieithu (codau ISO)'; 9 | $lang['translationns'] = 'Os ydych chi am osod y cyfieithiadau o dan namespace penodol yn unig, rhowch e yma.'; 10 | $lang['skiptrans'] = 'Pan fydd enw\'r dudalen yn bodloni\'r mynegiad rheolaidd, paid dangos y dewislen cyfieithu.'; 11 | $lang['dropdown'] = 'Defnyddio cwymprestr i ddangos y cyfieithiadau (awgrymir am fwy na 5 iaith).'; 12 | $lang['translateui'] = 'A ddylai iaith rhyngwyneb y defnyddiwr gael ei newid mewn namespaces ieithoedd estron hefyd?'; 13 | $lang['redirectstart'] = 'A ddylai\'r dudalen gychwyn ailgyfeirio yn awtomatig i mewn i namespace iaith gan ddefnyddio datgeliad iaith y porwr?'; 14 | $lang['about'] = 'Rhowch enw tudalen yma lle caiff y nodwedd cyfieithu ei esbonio ar gyfer eich defnyddwyr. Caiff ei gysylltu o\'r dewisydd iaith.'; 15 | $lang['localabout'] = 'Defnyddio fersiynau lleoledig o\'r dudalen \'ynghylch\' (yn hytrach nag un dudalen \'ynghylch\' gyffredinol).'; 16 | $lang['checkage'] = 'Rhybuddio ynghylch cyfieithiadau sydd efallai wedi dyddio.'; 17 | $lang['display'] = 'Dewiswch yr hyn hoffech chi weld yn y dewisydd iaith. \'Dyw defnyddio baneri gwlad ddim i\'w awgrymu yn ôl arbenigwyr.'; 18 | $lang['copytrans'] = 'Copïo testun y iaith wreiddiol i\'r golygydd wrth ddechrau cyfieithiad newydd?'; 19 | -------------------------------------------------------------------------------- /lang/cy/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **'Dyw'r dudalen heb ei chyfieithu'n llawn eto. Cynorthwywch gan gyflawni'r cyfieithiad.**\\ //(tynnych y paragraff hwn unwaith i chi orffen y cyfieithu)// -------------------------------------------------------------------------------- /lang/da/lang.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Markus Petersen 8 | * @author Soren Birk 9 | */ 10 | $lang['translations'] = 'Oversættelser af denne side'; 11 | $lang['outdated'] = 'Denne oversættelse er ældre end den originale side og er muligvis forældet.'; 12 | $lang['diff'] = 'Se hvad der er ændret.'; 13 | $lang['transloaded'] = 'Indholdet af denne sides oversættelse i %s er blevet præ-indlæst for lettere oversættelse.
Du kan basere din oversættelse på følgende nuværende oversættelser: %s.'; 14 | $lang['menu'] = 'forældede og manglende oversættelser'; 15 | $lang['missing'] = 'Mangler!'; 16 | $lang['old'] = 'forældet'; 17 | $lang['current'] = 'opdateret'; 18 | $lang['path'] = 'Sti'; 19 | -------------------------------------------------------------------------------- /lang/da/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Markus Petersen 8 | * @author Soren Birk 9 | */ 10 | $lang['translations'] = 'Mellemrums-separeret liste a oversættelsessprog (ISO koder). Lad være med at inkludere standardsproget.'; 11 | $lang['translationns'] = 'Hvis du kun vil have oversættelser under et bestemt navnerum, indsæt det her.'; 12 | $lang['skiptrans'] = 'Hvis navnet på siden matcher dette regulære udtryk, så lad være med at vise oversættelsesmenuen.'; 13 | $lang['dropdown'] = 'Benyt en rulleliste til at vise oversættelserne (anbefales til 5 sprog eller mere).'; 14 | $lang['translateui'] = 'Skal brugerfladens sprog også skiftes i fremmedsprogets navnerum?'; 15 | $lang['redirectstart'] = 'Skal startsiden automatisk henvise til et sprog-navnerum vha browserens sprog-genkendelse?'; 16 | $lang['about'] = 'Skriv et sidenavn her hvor oversættelsesfunktionen er forklaret for dine brugere. Siden vil blive linket til fra sprogvælgeren.'; 17 | $lang['localabout'] = 'Anvend lokaliserede versions af "Om" siden (i stedet for en global "Om" side)'; 18 | $lang['checkage'] = 'Advar om mulige forældede oversættelser.'; 19 | $lang['display'] = 'Angiv hvad du ønsker der skal vises menuen til valg af sprog. Bemærk venligst, at det frarådes at benytte landeflag til sprogvalg.'; 20 | $lang['copytrans'] = 'Kopier tekst fra originalt sporg ind i editorern når en ny oversættelse påbegyndes?'; 21 | $lang['show_path'] = 'Vis sti på siden med manglende oversættelser?'; 22 | -------------------------------------------------------------------------------- /lang/da/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Denne side er endnu ikke fuldt oversat. Måske kan du hjælpe med at færdiggøre oversættelsen?**\\ //(fjern dette afsnit når siden er oversat)// -------------------------------------------------------------------------------- /lang/de-informal/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Übersetzungen dieser Seite'; 9 | $lang['outdated'] = 'Diese Übersetzung ist älter als das Original und ist eventuell veraltet.'; 10 | $lang['diff'] = 'Änderungen zeigen.'; 11 | $lang['transloaded'] = 'Der Inhalt dieser Seite auf %s wurde in den Editor geladen um die Übersetzung zu erleichtern.
Du kannst deine Arbeit auch mit einer der folgenden vorhandenen Übersetzungen beginnen: %s.'; 12 | $lang['menu'] = 'veraltete und fehlende Übersetzungen'; 13 | $lang['missing'] = 'Fehlt!'; 14 | $lang['old'] = 'veraltet'; 15 | $lang['current'] = 'aktuell'; 16 | $lang['path'] = 'Pfad'; 17 | -------------------------------------------------------------------------------- /lang/de-informal/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Liste der Sprachen (ISO codes), mittels Leerzeichen separiert. Die Default-Sprache nicht angeben.'; 9 | $lang['translationns'] = 'Wenn die Übersetzung nur unterhalb eines Namensraumes gelten soll, diesen hier angeben.'; 10 | $lang['skiptrans'] = 'Wenn der Seitennamen dem regulären Ausdruck entspricht, dann den Sprachumschalter nicht anzeigen.'; 11 | $lang['dropdown'] = 'Eine Auswahlliste benutzen, um die Übersetzungen anzuzeigen (zu bevorzugen bei mehr als fünf Sprachen).'; 12 | $lang['translateui'] = 'Soll die Sprache der Benutzerschnittstelle auch in die jeweilige Fremdspache umgeschaltet werden?'; 13 | $lang['redirectstart'] = 'Anhand des Browsers des Benutzers erkennen, welche Sprache angezeigt werden soll. (Startseite leitet in den passenden Namensraum um).'; 14 | $lang['about'] = 'Gebe hier eine Seite an, welche den Mechanismus der Übersetzung erklärt. Sie wird vom Sprachumschalter verlinkt.'; 15 | $lang['localabout'] = 'Sprachspezifische Versionen der oben angegebenen Seite (anstelle einer globalen) nutzen.'; 16 | $lang['checkage'] = 'Warnungen von möglicherweise veralteten Übersetzungen anzeigen.'; 17 | $lang['display'] = 'Gib hier an welches/r Symbol/Text im Sprachumschalter angezeigt werden soll. (Die Nutzung von länderspezifischen Flaggen wird aus Gründen der Benutzbarkeit nicht empfohlen.)'; 18 | $lang['copytrans'] = 'Original Sprachversion in den Editor kopieren wenn eine neue Übersetzung begonnen wird?'; 19 | $lang['show_path'] = 'Seitenpfad in der Übersicht der fehlenden Übersetzungen anzeigen?'; 20 | -------------------------------------------------------------------------------- /lang/de-informal/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Diese Seite wurde noch nicht vollständig übersetzt. Bitte hilf bei der Übersetzung.**\\ //(diesen Absatz entfernen, wenn die Übersetzung abgeschlossen wurde)// -------------------------------------------------------------------------------- /lang/de/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Übersetzungen dieser Seite'; 9 | $lang['outdated'] = 'Diese Übersetzung ist älter als das Original und ist eventuell veraltet.'; 10 | $lang['diff'] = 'Änderungen zeigen.'; 11 | $lang['transloaded'] = 'Der Inhalt dieser Seite auf %s wurde in den Editor geladen um die Übersetzung zu erleichtern.
Sie können Ihre Arbeit auch mit einer der folgenden vorhandenen Übersetzungen beginnen: %s.'; 12 | $lang['menu'] = "veraltete und fehlende Übersetzungen"; 13 | $lang['missing'] = 'Fehlt!'; 14 | $lang['old'] = 'veraltet'; 15 | $lang['current'] = 'aktuell'; 16 | $lang['path'] = 'Pfad'; 17 | -------------------------------------------------------------------------------- /lang/de/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Liste der Sprachen (ISO codes), mittels Leerzeichen separiert. Die Default-Sprache nicht angeben.'; 9 | $lang['translationns'] = 'Wenn die Übersetzung nur unterhalb eines Namensraumes gelten soll, diesen hier angeben.'; 10 | $lang['skiptrans'] = 'Wenn der Seitennamen dem regulären Ausdruck entspricht, dann den Sprachumschalter nicht anzeigen.'; 11 | $lang['dropdown'] = 'Eine Auswahlliste benutzen, um die Übersetzungen anzuzeigen (zu bevorzugen bei mehr als fünf Sprachen).'; 12 | $lang['translateui'] = 'Soll die Sprache der Benutzerschnittstelle auch in die jeweilige Fremdspache umgeschaltet werden?'; 13 | $lang['redirectstart'] = 'Anhand des Browsers des Benutzers erkennen, welche Sprache angezeigt werden soll. (Startseite leitet in den passenden Namensraum um).'; 14 | $lang['about'] = 'Geben Sie hier eine Seite an, welche den Mechanismus der Übersetzung erklärt. Sie wird vom Sprachumschalter verlinkt.'; 15 | $lang['localabout'] = 'Sprachspezifische Versionen der oben angegebenen Seite (anstelle einer globalen) nutzen.'; 16 | $lang['checkage'] = 'Warnungen von möglicherweise veralteten Übersetzungen anzeigen.'; 17 | $lang['display'] = 'Geben Sie an welches/r Symbol/Text im Sprachumschalter angezeigt werden soll. (Die Nutzung von länderspezifischen Flaggen wird aus Gründen der Benutzbarkeit nicht empfohlen.)'; 18 | $lang['copytrans'] = 'Original Sprachversion in den Editor kopieren wenn eine neue Übersetzung begonnen wird?'; 19 | $lang['show_path'] = 'Seitenpfad in der Übersicht der fehlenden Übersetzungen anzeigen?'; 20 | -------------------------------------------------------------------------------- /lang/de/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Diese Seite wurde noch nicht vollständig übersetzt. Bitte helfen Sie bei der Übersetzung.**\\ //(diesen Absatz entfernen, wenn die Übersetzung abgeschlossen wurde)// -------------------------------------------------------------------------------- /lang/el/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Μεταφράσεις αυτής της σελίδας'; 9 | $lang['outdated'] = 'Αυτή η μετάφραση είναι πιο παλιά από το αρχική σελίδα και μπορεί να μην ισχύει πια από πλευράς ημερομηνίας. '; 10 | $lang['diff'] = 'Δέστε ότι το έχει αλλάξει. '; 11 | $lang['transloaded'] = 'Τα περιεχόμενα της μετάφρασης αυτής της σελίδας in %s έχουν προ-φορτωθεί για εύκολη μετάφραση.
Αλλά μπορεί οι μεταφράσεις σας να βασίζονται στις ακόλουθες υπάρχουσες μεταφράσεις : %s. '; 12 | $lang['menu'] = 'ετεροχρονισμένες και ελλείπουσες μεταφράσεος'; 13 | $lang['missing'] = 'Λείπει!'; 14 | $lang['old'] = 'ετεροχρονισμένη'; 15 | $lang['current'] = 'παρούσα'; 16 | $lang['path'] = 'Τρόπος'; 17 | -------------------------------------------------------------------------------- /lang/el/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Λίστα γλωσσών προς μετάφραση χωρισμένες με διάστημα (κωδικοί ISO)'; 9 | $lang['translationns'] = 'Αν θέλετε μεταφράσεις με όνομα αρχείου, βάλτε εδώ.'; 10 | $lang['skiptrans'] = 'Όταν το όνομα της σελίδας έχει αυτό το στυλ και ταιριάζει με την έκφραση, μην προβάλετε το μενού μετάφρασης. '; 11 | $lang['dropdown'] = 'Χρησιμοποιείστε λίστα μενού για να προβάλετε τις μεταφράσεις (που συνιστώνται για πάνω από 5 γλώσσες).'; 12 | $lang['translateui'] = 'Πρέπει η γλώσσα πίνακα του χρήστη να αλλάξει και στα ονόματα αρχείων επίσης?'; 13 | -------------------------------------------------------------------------------- /lang/en/lang.php: -------------------------------------------------------------------------------- 1 | original page and might be outdated.'; 5 | $lang['diff'] = 'See what has changed.'; 6 | $lang['transloaded'] = 'The contents of this page\'s translation in %s have been pre-loaded for easy translation.
But you can base your translation on the following existing translations: %s.'; 7 | $lang['menu'] = "outdated and missing translations"; 8 | $lang['missing'] = 'Missing!'; 9 | $lang['old'] = 'outdated'; 10 | $lang['current'] = 'up-to-date'; 11 | $lang['path'] = 'Path'; 12 | -------------------------------------------------------------------------------- /lang/en/settings.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | $lang['translations'] = 'Space separated list of translation languages (ISO codes).'; 9 | $lang['translationns'] = 'If you only want translations below a certain namespace, put it here.'; 10 | $lang['skiptrans'] = 'When the pagename matches this regular expression, don\'t show the translation menu.'; 11 | $lang['dropdown'] = 'Use a dropdown list to display the translations (recommended for more than 5 languages).'; 12 | $lang['translateui'] = 'Should the language of the user interface be switched in foreign language namespaces, too?'; 13 | $lang['redirectstart'] = 'Should the start page automatically redirect into a language namespace using browser language detection?'; 14 | $lang['about'] = 'Enter a pagename here where the translation feature is explained for your users. It will be linked from the language selector.'; 15 | $lang['localabout'] = 'Use localized versions of about page (instead of one global about page).'; 16 | $lang['checkage'] = 'Warn about possibly outdated translations.'; 17 | $lang['display'] = 'Select what you\'d like to have shown in the language selector. Note that using country flags for language selection is not recommended by usability experts.'; 18 | 19 | $lang['copytrans'] = 'Copy original language text into the editor when starting a new translation?'; 20 | $lang['show_path'] = 'Show path on the missing translation page?'; -------------------------------------------------------------------------------- /lang/en/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **This page is not fully translated, yet. Please help completing the translation.**\\ //(remove this paragraph once the translation is finished)// -------------------------------------------------------------------------------- /lang/eo/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Tradukoj de tiu paĝo'; 9 | $lang['outdated'] = 'Tiu traduko estas pli malnova ol la origina paĝo kaj povus esti malaktuala.'; 10 | $lang['diff'] = 'Vidi kio ŝanĝiĝis.'; 11 | $lang['transloaded'] = 'La enhavo de la paĝtraduko en %s disponeblas por facila tradukado.
Sed vi povas bazi vian tradukon sur la sekvaj tradukoj: %s.'; 12 | -------------------------------------------------------------------------------- /lang/eo/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Spaco-disigita listo de tradukaj lingvoj (ISO-kodoj).'; 9 | $lang['translationns'] = 'Se vi volas traduki nur ene de certa nomspaco, indiku ĝin.'; 10 | $lang['skiptrans'] = 'Ne montri la tradukmenuon, kiam la paĝnomo kongruas al tiu regula esprimo.'; 11 | $lang['dropdown'] = 'Uzi falmenuon por montri la tradukojn (rekomendata por pli ol 5 lingvoj).'; 12 | $lang['translateui'] = 'Ĉu ankaŭ ŝanĝi la lingvon de la uzanto-interfaco en alilingvaj nomspacoj?'; 13 | $lang['redirectstart'] = 'Ĉu la startpaĝo aŭtomate redirektiĝu al lingva nomspaco laŭ foliumila rekonado?'; 14 | $lang['about'] = 'Paĝnomo, kie klariĝas la tradukad-funkcio al uzantoj. La lingvo-selektilo ligos tien.'; 15 | $lang['localabout'] = 'Uzi lokajn versiojn de la pri-paĝo (anstataŭ unu ĝenerala pri-paĝo).'; 16 | $lang['checkage'] = 'Averti pri eble malaktualaj tradukoj.'; 17 | $lang['display'] = 'Kion montri en la lingvo-selektilo. Notu ke uzeblec-fakuloj ne rekomendas uzi landajn flagetojn por lingvo-elekto.'; 18 | $lang['copytrans'] = 'Ĉu kopii la originlingvan tekston en la redaktokampon por komenci novan tradukon?'; 19 | -------------------------------------------------------------------------------- /lang/eo/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Tiu paĝo ankoraŭ ne plene tradukiĝis. Bv. helpi kompletigi la tradukon.**\\ //(forigu tiun alineon post fintraduko)// -------------------------------------------------------------------------------- /lang/es/lang.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Camilo Sampedro 8 | * @author carlos 9 | */ 10 | $lang['translations'] = 'Traducciones de esta página'; 11 | $lang['outdated'] = 'Esta traducción es más antigua que la página original y podría estar obsoleta.'; 12 | $lang['diff'] = 'Ver lo que ha cambiado.'; 13 | $lang['transloaded'] = 'Los contenidos de la traducción de esta página en %s han sido precargados para facilitar la traducción.
Pero puedes basar tu traducción en las siguientes traducciones existentes: %s.'; 14 | $lang['menu'] = 'traducciones obsoletas y ausentes'; 15 | $lang['missing'] = '¡Ausente!'; 16 | $lang['old'] = 'obsoleta'; 17 | $lang['current'] = 'actualizado'; 18 | $lang['path'] = 'ruta'; 19 | -------------------------------------------------------------------------------- /lang/es/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Cristina Amor 8 | * @author Camilo Sampedro 9 | * @author carlos 10 | */ 11 | $lang['translations'] = 'Lista de lenguajes para traducción (Códigos ISO), separados por espacios. No incluir el lenguaje por defecto.'; 12 | $lang['translationns'] = 'Si sólo quieres traducciones en determinados espacios de nombre, indícalos aquí.'; 13 | $lang['skiptrans'] = 'Cuando el nombre de la página concuerda con esta expresión regular, no mostrar el menú de traducción.'; 14 | $lang['dropdown'] = 'Utiliza una lista desplegable para mostrar las traducciones (recomendado para más de 5 idiomas).'; 15 | $lang['translateui'] = '¿También debería el lenguaje del interfaz de usuario cambiarse en los espacios de nombre foráneos?'; 16 | $lang['redirectstart'] = '¿Debería la página principal redireccionar automáticamente a una página de un idioma según sea detectado por el navegador?'; 17 | $lang['about'] = 'Introduce aquí un nombre de página donde se explique a tus usuarios la funcionalidad de traducción. Se enlazará desde el selector de lenguaje.'; 18 | $lang['localabout'] = 'Utiliza versiones localizadas de la página \'acerca de\' (en lugar de una página \'acerca de\' global)'; 19 | $lang['checkage'] = 'Alertar sobre posibles traducciones obsoletas.'; 20 | $lang['display'] = 'Selecciona lo que quieras que sea mostrado en el selector de idioma. Ten en cuenta que el uso de parámetros de país para la selección de idioma no está recomendada por los expertos en usabilidad.'; 21 | $lang['copytrans'] = '¿Mostrar el texto en el idioma original en el editor cuando se comienza una nueva traducción?'; 22 | $lang['show_path'] = '¿Muestra la ruta en la página de traducción ausente?'; 23 | -------------------------------------------------------------------------------- /lang/es/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Esta página no está completamente traducida, aún. Por favor, contribuye a su traducción.**\\ //(Elimina este párrafo una vez la traducción esté completa)// -------------------------------------------------------------------------------- /lang/fa/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'ترجمه‌های این صفحه'; 9 | $lang['outdated'] = 'این ترجمه از a href="%s" class="wikilink1">صفحه‌ی اصلی قدیمی‌تر است و ممکن است منسوخ شده باشد.'; 10 | $lang['diff'] = 'ببینید چه چیزی تغییر کرده.'; 11 | $lang['transloaded'] = 'محتویات این ترجمه‌ی صفحه در %s برای ترجمه‌ی آسان از قبل پر شده‌است.
اما شما می‌توانید پایه‌ی ترجمه‌هایتان را در ترجمه‌های موجود زیر ببینید: %s.'; 12 | $lang['menu'] = 'ترجمه‌های منسوخ‌ شده و پیدا نشده'; 13 | $lang['missing'] = 'پیدا نشده!'; 14 | $lang['old'] = 'منسوخ شده'; 15 | $lang['current'] = 'به روز'; 16 | $lang['path'] = 'مسیر'; 17 | -------------------------------------------------------------------------------- /lang/fa/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'فضای لیست جداشده‌ی زبان‌های ترجمه شده (کدهای آی‌اس‌او)'; 9 | $lang['translationns'] = 'اگر شما فقط می‌خواهید ترجمه‌ها زیر یک فضای‌نام خاص باشند، اینجا قرار دهید.'; 10 | $lang['skiptrans'] = 'وقتی نام‌صفحه با عبارات منظم هم‌خوانی داشت، منوی ترجمه را نشان نده.'; 11 | $lang['dropdown'] = 'استفاده از یک لیست کشویی برای نمایش ترجمه (توصیه شده برای بیشتر از ۵ زبان)'; 12 | $lang['translateui'] = 'باید زبان رابط کاربر در زبان‌های خارجی فضای‌نام تغییر یابد، همچنین؟'; 13 | $lang['redirectstart'] = 'باید صفحه‌ی آغازین به‌طور خودکار به زبانی که فضای‌نام توسط مرورگر کشف شده، تغییرمسیر کند؟'; 14 | $lang['about'] = 'وارد کردن یک نام‌صفحه جایی که '; 15 | $lang['localabout'] = 'استفاده از نسخه‌های متمرکز شده‌ی درباره صفحه (به جای یک جهانی درباره صفحه)'; 16 | $lang['checkage'] = 'هشدار درمورد ترجمه‌های احتمالا منسوخ شده.'; 17 | $lang['display'] = 'انتخاب این‌که شما چه چیزی را می‌پسندید تا در انتخابگر زبان نمایش داده شود. توجه داشته‌باشید که استفاده از پرچم کشورها برای انتخابگر زبان توسط کارشناسان توصیه نمی‌شود.'; 18 | $lang['copytrans'] = 'کپی‌کردن زبان اصلی متن داخل ویرایشگر وقتی که یک ترجمه جدید آغار می‌شود؟'; 19 | $lang['show_path'] = 'نمایش مسیر در ترجمه‌ی پیدانشده‌ی صفحه‌‌ها؟'; 20 | -------------------------------------------------------------------------------- /lang/fa/totranslate.txt: -------------------------------------------------------------------------------- 1 | تعمیرم کن **این صفحه کامل ترجمه نشده، اکنون. لطفا برای کامل‌شدنش کمک کنید.**\\ //(بعد از پایان ترجمه این بند را از ترجمه حذف کنید)// -------------------------------------------------------------------------------- /lang/flags.txt: -------------------------------------------------------------------------------- 1 | # Language to flag mapping 2 | 3 | aa 4 | ab 5 | ae 6 | af 7 | ak 8 | am 9 | an 10 | ar 11 | as 12 | av 13 | ay 14 | az 15 | ba 16 | be https://flagicons.lipis.dev/flags/4x3/by.svg 17 | bg https://flagicons.lipis.dev/flags/4x3/bg.svg 18 | bh 19 | bi 20 | bm 21 | bn 22 | bo 23 | br 24 | bs 25 | ca 26 | ce 27 | ch 28 | co 29 | cr 30 | cs https://flagicons.lipis.dev/flags/4x3/cz.svg 31 | cu 32 | cv 33 | cy 34 | da https://flagicons.lipis.dev/flags/4x3/dk.svg 35 | de https://flagicons.lipis.dev/flags/4x3/de.svg 36 | dv 37 | dz 38 | ee 39 | el https://flagicons.lipis.dev/flags/4x3/gr.svg 40 | en https://flagicons.lipis.dev/flags/4x3/gb.svg 41 | eo https://upload.wikimedia.org/wikipedia/commons/f/f5/Flag_of_Esperanto.svg 42 | es https://flagicons.lipis.dev/flags/4x3/es.svg 43 | et https://flagicons.lipis.dev/flags/4x3/ee.svg 44 | eu 45 | fa 46 | ff 47 | fi https://flagicons.lipis.dev/flags/4x3/fi.svg 48 | fj 49 | fo 50 | fr https://flagicons.lipis.dev/flags/4x3/fr.svg 51 | fy 52 | ga 53 | gd https://flagicons.lipis.dev/flags/4x3/ie.svg 54 | gl 55 | gn 56 | gu 57 | gv 58 | ha 59 | he https://flagicons.lipis.dev/flags/4x3/il.svg 60 | hi 61 | ho 62 | hr https://flagicons.lipis.dev/flags/4x3/hr.svg 63 | ht 64 | hu https://flagicons.lipis.dev/flags/4x3/hu.svg 65 | hy 66 | hz 67 | ia https://upload.wikimedia.org/wikipedia/commons/7/7e/Flag_of_Interlingua.svg 68 | id https://flagicons.lipis.dev/flags/4x3/id.svg 69 | ie 70 | ig 71 | ii 72 | ik 73 | io 74 | is https://flagicons.lipis.dev/flags/4x3/is.svg 75 | it https://flagicons.lipis.dev/flags/4x3/it.svg 76 | iu 77 | ja https://flagicons.lipis.dev/flags/4x3/ja.svg 78 | jv 79 | ka 80 | kg 81 | ki 82 | kj 83 | kk 84 | kl 85 | km 86 | kn 87 | ko https://flagicons.lipis.dev/flags/4x3/kr.svg 88 | kr 89 | ks 90 | ku 91 | kv 92 | kw 93 | ky 94 | la 95 | lb 96 | lg 97 | li 98 | ln 99 | lo 100 | lt 101 | lv 102 | mg 103 | mh 104 | mi 105 | mk 106 | ml 107 | mn 108 | mr 109 | ms 110 | mt https://flagicons.lipis.dev/flags/4x3/mt.svg 111 | my 112 | na 113 | nb 114 | nd 115 | ne 116 | ng 117 | nl https://flagicons.lipis.dev/flags/4x3/nl.svg 118 | nn 119 | no https://flagicons.lipis.dev/flags/4x3/no.svg 120 | nr 121 | nv 122 | ny 123 | oc 124 | oj 125 | om 126 | or 127 | os 128 | pa 129 | pi 130 | pl https://flagicons.lipis.dev/flags/4x3/pl.svg 131 | ps 132 | pt https://flagicons.lipis.dev/flags/4x3/pt.svg 133 | pt-br https://flagicons.lipis.dev/flags/4x3/br.svg 134 | qu 135 | rm 136 | rn 137 | ro https://flagicons.lipis.dev/flags/4x3/ro.svg 138 | ru https://flagicons.lipis.dev/flags/4x3/ru.svg 139 | rw 140 | sa 141 | sc 142 | sd 143 | se 144 | sg 145 | si 146 | sk https://flagicons.lipis.dev/flags/4x3/sk.svg 147 | sl https://flagicons.lipis.dev/flags/4x3/si.svg 148 | sm 149 | sn 150 | so 151 | sq 152 | sr 153 | ss 154 | st 155 | su 156 | sv https://flagicons.lipis.dev/flags/4x3/se.svg 157 | sw 158 | ta 159 | te 160 | tg 161 | th 162 | ti 163 | tk 164 | tl 165 | tn 166 | to 167 | tr https://flagicons.lipis.dev/flags/4x3/tk.svg 168 | ts 169 | tt 170 | tw 171 | ty 172 | ug 173 | uk https://flagicons.lipis.dev/flags/4x3/ua.svg 174 | ur 175 | uz https://flagicons.lipis.dev/flags/4x3/uz.svg 176 | ve 177 | vi https://flagicons.lipis.dev/flags/4x3/vn.svg 178 | vo 179 | wa 180 | wo 181 | xh 182 | yi 183 | yo 184 | za 185 | zh https://flagicons.lipis.dev/flags/4x3/cn.svg 186 | zh-tw https://flagicons.lipis.dev/flags/4x3/tw.svg 187 | zu 188 | 189 | -------------------------------------------------------------------------------- /lang/fr/lang.php: -------------------------------------------------------------------------------- 1 | 7 | * @author NicolasFriedli 8 | * @author Gilles-Philippe Morin 9 | * @author Schplurtz le Déboulonné 10 | */ 11 | $lang['translations'] = 'Traductions de cette page'; 12 | $lang['outdated'] = 'Cette traduction est plus ancienne que la page originale et est peut-être dépassée.'; 13 | $lang['old'] = 'dépassée'; 14 | $lang['diff'] = 'Voir ce qui a changé.'; 15 | $lang['transloaded'] = 'Le contenu de cette page en %s a été pré-chargé pour faciliter la traduction.
Mais vous pouvez baser votre traduction sur les traductions existantes: %s'; 16 | $lang['menu'] = 'traductions dépassées et manquantes'; 17 | $lang['missing'] = 'Manquante!'; 18 | $lang['current'] = 'à jour'; 19 | $lang['path'] = 'Chemin'; 20 | -------------------------------------------------------------------------------- /lang/fr/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Vincent Feltz 8 | * @author NicolasFriedli 9 | * @author Schplurtz le Déboulonné 10 | */ 11 | $lang['translations'] = 'Liste des langues disponibles séparées par des espaces (codes ISO).'; 12 | $lang['translationns'] = 'Si vous souhaitez ne traduire qu\'une certaine catégorie, indiquez-la ici.'; 13 | $lang['skiptrans'] = 'Quand le nom de la page correspond à cette expression régulière, ne pas montrer le menu de traduction.'; 14 | $lang['dropdown'] = 'Utiliser un menu déroulant pour afficher les traductions (recommandé pour plus de 5 langues).'; 15 | $lang['translateui'] = 'Faut-il changer la langue de l\'interface utilisateur dans les catégories traduites ?'; 16 | $lang['redirectstart'] = 'La page de départ devrait-elle rediriger vers une catégorie traduite en utilisant la détection de langue du navigateur ?'; 17 | $lang['about'] = 'Entrez ici un nom de page où la fonctionnalité de traduction est expliquée aux utilisateurs. Elle sera accessible depuis le sélecteur de langue.'; 18 | $lang['localabout'] = 'Utiliser des versions traduites de la page à propos (au lieu d\'une page à propos globale).'; 19 | $lang['checkage'] = 'Avertir de la possibilité de traductions dépassées.'; 20 | $lang['display'] = 'Sélectionnez ce que vous voudriez afficher dans le sélecteur de langue. Notez qu\'utiliser les drapeaux de pays pour la sélection de langue n\'est pas recommandé par les experts en ergonomie.'; 21 | $lang['copytrans'] = 'Copier le texte en langue source dans l\'éditeur quand une nouvelle traduction est lancée ?'; 22 | $lang['show_path'] = 'Montrer les chemins sur la page des traductions manquantes ?'; 23 | -------------------------------------------------------------------------------- /lang/fr/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Cette page n'est pas encore traduite entièrement. Merci de terminer la traduction**\\ //(supprimez ce paragraphe une fois la traduction terminée)// -------------------------------------------------------------------------------- /lang/hr/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Prijevodi ove stranice'; 9 | $lang['outdated'] = 'Prijevod ove stranice je stariji od originalne stranice i može biti zastario.'; 10 | $lang['diff'] = 'Pogledajte što je izmijenjeno.'; 11 | $lang['transloaded'] = 'Sadržaj ove stranice u jeziku %s je napunjeno radi lakšeg prevođenja.
Ali možete bazirati Vaš prijevod i prema slijedećim raspoloživim prijevodima: %s.'; 12 | $lang['menu'] = 'zastarjeli i nedostajući prijevodi'; 13 | $lang['missing'] = 'Nedostaje!'; 14 | $lang['old'] = 'zastarjelo'; 15 | $lang['current'] = 'ažuran'; 16 | $lang['path'] = 'Staza'; 17 | -------------------------------------------------------------------------------- /lang/hr/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Razmacima odvojena lista podržanih jezika (ISO oznake).'; 9 | $lang['translationns'] = 'Ako želite prijevode samo ispod određenog imenskog prostora, navedite ga ovdje.'; 10 | $lang['skiptrans'] = 'Kada ime stranice odgovara ovom regularnom izrazu, ne prikazujte meni za prijevode.'; 11 | $lang['dropdown'] = 'Koristi padajuću listu za prikaz prijevoda (preporučeno kada ima više od 5 jezika).'; 12 | $lang['translateui'] = 'Da li da jezik korisničkog sučelja također bude prebačen u jezik stranog imenskog prostora ?'; 13 | $lang['redirectstart'] = 'Da li da se početna strana automatski preusmjeri na imenski prostor koristeći detektirani jezik preglednika?'; 14 | $lang['about'] = 'Unesi naziv stranice gdje je korisnicima pojašnjene mogućnosti prevođenja. Ona će biti povezana na izbornik jezika.'; 15 | $lang['localabout'] = 'Koristi lokaliziranu inačicu "about" stranice (umjesto jedinstvene globalne)'; 16 | $lang['checkage'] = 'Upozori o mogućem zastarjelom prijevodu.'; 17 | $lang['display'] = 'Odaberite što želite da bude prikazano u izborniku jezika. Budite svjesni da korištenje zastava za odabir jezika nije preporučeno od strane eksperata.'; 18 | $lang['copytrans'] = 'Kopirati originalni tekst u editor kada otvorite novi prijevod ?'; 19 | $lang['show_path'] = 'Prikaži stazu do nedostajuće stranice s prijevodom?'; 20 | -------------------------------------------------------------------------------- /lang/hr/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Ova stranica još nije prevedena u cijelosti. Molimo pomognite u njenom prijevodu.**\\ //(uklonite ovaj paragraf jednom kada je prevođenje završeno)// -------------------------------------------------------------------------------- /lang/hu/lang.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Marina Vladi 8 | */ 9 | $lang['translations'] = 'Oldal fordításai'; 10 | $lang['outdated'] = 'A fordítás régebbi, mint az eredeti oldal, ezért lehet, hogy már elavult.'; 11 | $lang['diff'] = 'Módosítások megtekintése.'; 12 | $lang['transloaded'] = 'Az oldal tartalmának %s nyelvi fordítását előre betöltöttem a könnyebb módosítás érdekében.
Ugyanakkor a fordítást elvégezhetjük a már létező %s fordítás alapján is.'; 13 | $lang['menu'] = 'elavult vagy hiányzó fordítás'; 14 | $lang['missing'] = 'Hiányzik!'; 15 | $lang['old'] = 'elavult'; 16 | $lang['current'] = 'naprakész'; 17 | $lang['path'] = 'Elérési út'; 18 | -------------------------------------------------------------------------------- /lang/hu/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Marina Vladi 8 | */ 9 | $lang['translations'] = 'Szóközzel elválasztott lista a nyelvi fordításokról (ISO-kódokkal).'; 10 | $lang['translationns'] = 'Ha csak egy bizonyos névtér alatt lévő fordítást szeretnénk, tegyük ide.'; 11 | $lang['skiptrans'] = 'Ha az oldal neve illeszkedik ehhez a reguláris kifejezéshez, ne jelenjen meg a fordítások menüje.'; 12 | $lang['dropdown'] = 'Legördülő lista használata a fordításokhoz (5 nyelvnél több esetén javasolt).'; 13 | $lang['translateui'] = 'Módosuljon a felhasználói felület nyelve is idegen nyelvi névterek alatt?'; 14 | $lang['redirectstart'] = 'Átirányítsuk automatikusan a kezdőoldalt abba a nyelvi névtérbe, amely nyelv a böngészőben van beállítva?'; 15 | $lang['about'] = 'Itt adhatjuk meg annak az oldalnak a nevét, amelyen a fordítási lehetőségeket ismertetjük a felhasználókkal. Erre fog hivatkozni a nyelvkiválasztó képernyőelem.'; 16 | $lang['localabout'] = 'A névjegy oldal fordított változátanak használata (a globális névjegy oldal helyett).'; 17 | $lang['checkage'] = 'Figyelmeztetés az esetlegesen elavult fordításokra.'; 18 | $lang['display'] = 'Válasszuk ki, mi jelenjen meg a nyelvi kiválasztó képernyőelemében. Jegyezzük meg: az országzászlókat nem javasolják a használhatósági szakértők.'; 19 | $lang['copytrans'] = 'Átmásoljuk az eredeti nyelvi szöveget a szövegszerkesztőbe új fordítás indításakor?'; 20 | $lang['show_path'] = 'Mutassa az elérési utat a hiányzó fordítás oldalán?'; 21 | -------------------------------------------------------------------------------- /lang/hu/totranslate.txt: -------------------------------------------------------------------------------- 1 | JAVÍTANDÓ **Az oldal még nincs teljesen lefordítva. Kérjük, segítsen a befejezésében!**\\ //(Töröljük ezt a bekezdést a fordítás elkészültekor.)// -------------------------------------------------------------------------------- /lang/it/lang.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Torpedo 8 | */ 9 | $lang['translations'] = 'Traduzioni di questa pagina'; 10 | $lang['outdated'] = 'Questa traduzione è più vecchia di quella della pagina originale è potrebbe essere superata.'; 11 | $lang['diff'] = 'Vedi cosa è cambiato.'; 12 | $lang['transloaded'] = 'Il contenuto della traduzione di questa pagina in %s è stato precaricato per una facile traduzione.
Ma puoi basare la tua traduzione sulle seguenti traduzioni esistenti: %s.'; 13 | $lang['menu'] = 'traduzioni obsolete e mancanti'; 14 | $lang['missing'] = 'Non esistente!'; 15 | $lang['old'] = 'datato'; 16 | $lang['current'] = 'aggiornato'; 17 | $lang['path'] = 'Percorso'; 18 | -------------------------------------------------------------------------------- /lang/it/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Andreas Gohr 8 | * @author Diego Pierotto 9 | * @author Sebastiano Pistore 10 | */ 11 | $lang['translations'] = 'Elenco delle lingue di traduzione separati da spazi (codici ISO). Non includere la lingua predefinita'; 12 | $lang['translationns'] = 'Scrivi qui solo se vuoi le traduzioni all\'interno di una certa categoria.'; 13 | $lang['skiptrans'] = 'Quando i nomi delle pagine corrispondono a questa espressione regolare non mostrare il menu di traduzione.'; 14 | $lang['dropdown'] = 'Utilizza un menu a tendina per visualizzare le traduzioni (consigliato quando si lavora con più di cinque lingue).'; 15 | $lang['translateui'] = 'Vuoi che anche la lingua dell\'interfaccia utente sia modificata in categorie della stessa lingua?'; 16 | $lang['redirectstart'] = 'La pagina iniziale dovrebbe reindirizzare automaticamente nel namespace della lingua utilizzando il rilevamento della lingua del browser?'; 17 | $lang['about'] = 'Inserisci qui una pagina dove la funzione di traduzione viene spiegata agli utenti. Sarà collegata al selettore lingua.'; 18 | $lang['localabout'] = 'Mostra le versioni localizzate della pagina About.'; 19 | $lang['checkage'] = 'Avvisa della possibile presenza di traduzioni obsolete.'; 20 | $lang['display'] = 'Seleziona cosa ti piace vedere nel selettore lingua. Nota che usare il country flag per la selezione della lingua non è raccomandato dagli esperti di usabilità.'; 21 | $lang['copytrans'] = 'Copia nell\'editor il testo in lingua originale quando viene iniziata una nuova traduzione?'; 22 | $lang['show_path'] = 'Visualizzare il percorso nelle pagine senza traduzione?'; 23 | -------------------------------------------------------------------------------- /lang/it/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME ** Questa pagina non è ancora completamente tradotta. Chi può potrebbe aiutarne il completamento. ** \\ // (Rimuovere questo paragrafo a lavoro completato) // -------------------------------------------------------------------------------- /lang/ja/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'このページの翻訳'; 9 | $lang['outdated'] = 'この翻訳は元のページよりも更新日が古く、内容が古い可能性があります。'; 10 | $lang['diff'] = '変更点を参照して下さい。'; 11 | $lang['transloaded'] = '翻訳し易くするために %s にあるこのページの翻訳内容を事前に読み込みました。
以下の既存の翻訳を翻訳の基にすることができます:%s。'; 12 | $lang['menu'] = '古い翻訳と欠落している翻訳'; 13 | $lang['missing'] = '欠落'; 14 | $lang['old'] = '内容が古い'; 15 | $lang['current'] = '最新'; 16 | $lang['path'] = 'パス'; 17 | -------------------------------------------------------------------------------- /lang/ja/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = '翻訳言語(ISOコード)のスペース区切り一覧'; 9 | $lang['translationns'] = '特定の名前空間以下のみを翻訳したい場合、名前空間を記入する。'; 10 | $lang['skiptrans'] = 'ページ名がこの正規表現と一致すると、翻訳メニューが表示されません。'; 11 | $lang['dropdown'] = '翻訳を表示するためにドロップダウン一覧を使用する(5言語以上の場合推奨)。'; 12 | $lang['translateui'] = 'ユーザーインターフェイスの言語も、名前空間の言語に切り替えるか?'; 13 | $lang['redirectstart'] = 'ブラウザーの言語設定を利用して、スタートページを各言語の名前空間に自動的にリダイレクトするか?'; 14 | $lang['about'] = '翻訳機能をユーザーに説明するページ名を入力して下さい。言語セレクタからリンクされます。'; 15 | $lang['localabout'] = '(包括的な概要ページの代わりに)翻訳版の概要ページを使用する。'; 16 | $lang['checkage'] = '古い翻訳について警告する。'; 17 | $lang['display'] = '言語セレクタに何を表示するかを選択する。言語選択に国旗を使用することをユーザビリティ専門家は奨励しないので注意してください。'; 18 | $lang['copytrans'] = '新しく翻訳を開始する時、エディタに元の言語の文章をコピーしますか?'; 19 | $lang['show_path'] = '欠落している翻訳ページのパスを表示します。'; 20 | -------------------------------------------------------------------------------- /lang/ja/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **このページはまだ完全には、翻訳されません。翻訳の完了を支援して下さい。**\\ //(翻訳が完了したらこの段落を削除して下さい)// -------------------------------------------------------------------------------- /lang/ko/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = '이 문서의 번역'; 9 | $lang['outdated'] = '이 번역은 원래 문서보다 오래되었고 오래된 번역일 수 있습니다.'; 10 | $lang['diff'] = '무엇이 바뀌었는지 보세요.'; 11 | $lang['transloaded'] = '%s에 있는 이 문서의 번역의 내용을 쉽게 번역하기 위해 미리 불러왔습니다.
하지만 다음 기존 번역에 당신의 번역을 바탕으로 할 수 있습니다: %s.'; 12 | $lang['menu'] = '오래되었고 없는 번역'; 13 | $lang['missing'] = '없음!'; 14 | $lang['old'] = '오래됨'; 15 | $lang['current'] = '최신'; 16 | $lang['path'] = '경로'; 17 | -------------------------------------------------------------------------------- /lang/ko/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = '번역 언어의 공백으로 구분한 목록 (ISO 코드).'; 9 | $lang['translationns'] = '특정 이름공간에 따라 번역을 원하면, 여기에 넣으세요.'; 10 | $lang['skiptrans'] = '문서 이름이 정규 표현식과 일치하면, 번역 메뉴를 보여주지 마세요.'; 11 | $lang['dropdown'] = '번역을 표시할 드롭다운 목록을 사용합니다. (5개 이상의 언어에 권장)'; 12 | $lang['translateui'] = '사용자 인터페이스의 언어도 외국어 이름공간으로 전환해야 합니까?'; 13 | $lang['redirectstart'] = '시작 문서가 자동으로 브라우저 언어 감지를 사용해 언어 이름공간으로 넘겨줘야 합니까?'; 14 | $lang['about'] = '사용자에게 설명할 번역 기능이 어디에 있는지 여기에 문서 이름을 입력하세요.'; 15 | $lang['localabout'] = '(하나의 전역 소개 문서 대신) 소개 문서의 지역화된 버전을 사용합니다.'; 16 | $lang['checkage'] = '가능하면 오래된 번역에 대해 경고합니다.'; 17 | $lang['display'] = '언어 선택기에 보여주고 싶은 것을 선택하세요. 언어 선택에 국기를 사용하는 것은 사용성 전문가에게 권장하지 않음을 참고하세요.'; 18 | $lang['copytrans'] = '새 번역을 시작할 때 편집기에 원래 언어 문장을 복사하겠습니까?'; 19 | $lang['show_path'] = '없는 번역 문서에서의 경로를 보여줄까요?'; 20 | -------------------------------------------------------------------------------- /lang/ko/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **이 문서는 아직 완전히 번역되지 않았습니다. 번역을 완료하는 데 도와주세요.**\\ //(번역을 마치면 이 단락을 지우세요)// -------------------------------------------------------------------------------- /lang/langnames.txt: -------------------------------------------------------------------------------- 1 | # Native language names 2 | # extracted from http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes 3 | 4 | aa Afaraf 5 | ab Аҧсуа 6 | ae Avesta 7 | af Afrikaans 8 | ak Akan 9 | am አማርኛ 10 | an Aragonés 11 | ar |العربية 12 | as অসমীয়া 13 | av Авар мацӀ 14 | ay Aymar aru 15 | az Azərbaycan dili 16 | ba Башҡорт теле 17 | be Беларуская 18 | bg Български език 19 | bh भोजपुरी 20 | bi Bislama 21 | bm Bamanankan 22 | bn বাংলা 23 | bo བོད་ཡིག 24 | br Brezhoneg 25 | bs Bosanski Jezik 26 | ca Català 27 | ce Нохчийн Мотт 28 | ch Chamoru 29 | co Corsu 30 | cr ᓀᐦᐃᔭᐍᐏᐣ 31 | cs Česky 32 | cu Ѩзыкъ Словѣньскъ 33 | cv Чӑваш Чӗлхи 34 | cy Cymraeg 35 | da Dansk 36 | de Deutsch 37 | de-informal Deutsch 38 | dv ދިވެހި 39 | dz རྫོང་ཁ 40 | ee Eʋegbe 41 | el Ελληνικά 42 | en English 43 | eo Esperanto 44 | es Español 45 | et Eesti 46 | eu Euskara 47 | fa فارسی 48 | ff Fulfulde 49 | fi Suomi 50 | fj Vosa Vakaviti 51 | fo Føroyskt 52 | fr Français 53 | fy Frysk 54 | ga Gaeilge 55 | gd Gaelic 56 | gl Galego 57 | gn Avañe'ẽ 58 | gu ગુજરાતી 59 | gv Gaelg, Gailck 60 | ha هَوُسَ 61 | he עברית 62 | hi हिन्दी, हिंदी 63 | ho Hiri Motu 64 | hr Hrvatski 65 | ht Kreyòl Ayisyen 66 | hu Magyar 67 | hu-formal Magyar 68 | hy Հայերեն 69 | hz Otjiherero 70 | ia Interlingua 71 | id Bahasa Indonesia 72 | ie Interlingue 73 | ig Igbo 74 | ii ꆇꉙ 75 | ik Iñupiaq 76 | io Ido 77 | is Íslenska 78 | it Italiano 79 | iu ᐃᓄᒃᑎᑐᑦ 80 | ja 日本語 81 | jv Basa Jawa 82 | ka ქართული 83 | kg KiKongo 84 | ki Gĩkũyũ 85 | kj Kuanyama 86 | kk Қазақ тілі 87 | kl kalaallisut 88 | km ភាសាខ្មែរ 89 | kn ಕನ್ನಡ 90 | ko 한국어 91 | kr Kanuri 92 | ks कश्मीरी}} 93 | ku Kurdî 94 | kv Коми Кыв 95 | kw Kernewek 96 | ky Кыргыз Тили 97 | la Latine 98 | lb Lëtzebuergesch 99 | lg Luganda 100 | li Limburgs 101 | ln Lingála 102 | lo ພາສາລາວ 103 | lt Lietuvių Kalba 104 | lv Latviešu Valoda 105 | mg Malagasy Fiteny 106 | mh Kajin M̧ajeļ 107 | mi Te Reo Māori 108 | mk Македонски Јазик 109 | ml മലയാളം 110 | mn Монгол 111 | mr मराठी 112 | ms بهاس ملايو 113 | mt Malti 114 | my ဗမာစာ 115 | na Ekakairũ Naoero 116 | nb Norsk bokmål 117 | nd isiNdebele 118 | ne नेपाली 119 | ng Owambo 120 | nl Nederlands 121 | nn Norsk nynorsk 122 | no Norsk 123 | nr IsiNdebele 124 | nv Diné bizaad 125 | ny ChiCheŵa 126 | oc Occitan 127 | oj ᐊᓂᔑᓈᐯᒧᐎᓐ 128 | om Afaan Oromoo 129 | or ଓଡ଼ିଆ 130 | os Ирон æвзаг 131 | pa ਪੰਜਾਬੀ, 132 | pi पाऴि 133 | pl Polski 134 | ps پښتو 135 | pt Português 136 | pt-br Português 137 | qu Runa Simi 138 | rm Rumantsch Grischun 139 | rn KiRundi 140 | ro Română 141 | ru Русский 142 | rw Ikinyarwanda 143 | sa संस्कृतम् 144 | sc Sardu 145 | sd सिन्धी}} 146 | se Davvisámegiella 147 | sg Yângâ Tî Sängö 148 | si සිංහල 149 | sk Slovenčina 150 | sl Slovenščina 151 | sm Gagana fa'a Samoa 152 | sn ChiShona 153 | so Soomaaliga 154 | sq Shqip 155 | sr Српски Језик 156 | ss SiSwati 157 | st Sesotho 158 | su Basa Sunda 159 | sv Svenska 160 | sw Kiswahili 161 | ta தமிழ் 162 | te తెలుగు 163 | tg Тоҷикӣ 164 | th ไทย 165 | ti ትግርኛ 166 | tk Türkmen 167 | tl Wikang Tagalog 168 | tn Setswana 169 | to Faka Tonga 170 | tr Türkçe 171 | ts Xitsonga 172 | tt Татарча 173 | tw Twi 174 | ty Reo Mā`ohi 175 | ug Uyƣurqə 176 | uk Українська 177 | ur اردو 178 | uz O'zbek 179 | ve Tshivenḓa 180 | vi Tiếng Việt 181 | vo Volapük 182 | wa Walon 183 | wo Wollof 184 | xh IsiXhosa 185 | yi ייִדיש 186 | yo Yorùbá 187 | za Saɯ cueŋƅ 188 | zh 中文 189 | zh-tw 繁體中文 190 | zu IsiZulu 191 | -------------------------------------------------------------------------------- /lang/lv/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Citās valodās'; 9 | $lang['outdated'] = 'Šis tulkojums ir vecāks par oriģinālo lapu un varbūt ir novecojis.'; 10 | $lang['diff'] = 'Redzēt, ka ir mainījies.'; 11 | $lang['transloaded'] = 'Vieglākai tulkošanai ir ielādēts lapas saturs no %s .
Bet varat balstīties arī uz šādiem tulkojumiem: %s.'; 12 | -------------------------------------------------------------------------------- /lang/lv/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Aivars Miška 8 | */ 9 | $lang['translations'] = 'Ar atstarpēm atdalīts tulkojumu valodu saraksts (ISO kodi). Izņemot noklusēto valodu.'; 10 | $lang['translationns'] = 'Ja tulkojumus vajag tikai noteiktā nodaļā, ieraksti to šeit.'; 11 | $lang['skiptrans'] = 'Ja lapas nosaukums atbilst regulārajai izteiksmei, tulkošanas izvēlni nerādīt.'; 12 | $lang['dropdown'] = 'Lietot izkrītošo izvēlni tulkojumu parādīšanai (ieteikt, ja ir vairāk par 5 valodām). '; 13 | $lang['translateui'] = 'Vai svešvalodu nodaļās jāpārslēdz arī lietotāja sakarnes valoda?'; 14 | $lang['redirectstart'] = 'Vai sākuma lapai automātiski jāpārslēdzas atkarībā no pārlūkprogrammas noteiktās valodas?'; 15 | $lang['about'] = 'Ieraksti šeit lapu, kurā lietotājiem izskaidrotas tulkošas iespējas. Tā tiks piesaistīta valodu izvēlei.'; 16 | $lang['localabout'] = 'Lietot "par" lapas lokalizēto versiju, nevis globālo "par" lapu.'; 17 | $lang['checkage'] = 'Brīdināt pa varbūt novecojušiem tulkojumiem. '; 18 | $lang['display'] = 'Norādiet, ko lietot valodas izvēlei. Ņemiet vērā, ka valodām izmantot valstu karogus neiesaka.'; 19 | $lang['copytrans'] = 'Sākot tulkojumu, iekopēt redaktorā oriģināltekstu?'; 20 | -------------------------------------------------------------------------------- /lang/lv/totranslate.txt: -------------------------------------------------------------------------------- 1 | IZLABO **Lapa nav pilnībā pārtulkota. Lūdzu palīdzi pabeigt tulkojumu!** \\ //(Izdzēs šo rindkopu, kad tulkojums pabeigts!)// -------------------------------------------------------------------------------- /lang/nl/lang.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Marcel Bachus 8 | */ 9 | $lang['translations'] = 'Vertaling van deze pagina'; 10 | $lang['outdated'] = 'Deze vertaling is ouder dan de originele pagina en kan verouderd zijn.'; 11 | $lang['diff'] = 'Kijk wat er is veranderd.'; 12 | $lang['transloaded'] = 'De inhoud van vertaling van deze pagina in %s is al geladen om vertalen makkelijker te maken.
Maar je kunt je vertaling ook baseren op één van de volgende bestaande vertalingen: %s.'; 13 | $lang['menu'] = 'verouderde of missende vertaling'; 14 | $lang['missing'] = 'Niet gevonden!'; 15 | $lang['old'] = 'verouderd'; 16 | $lang['current'] = 'laatste stand van zaken'; 17 | $lang['path'] = 'Pad'; 18 | -------------------------------------------------------------------------------- /lang/nl/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Gerrit Uitslag 8 | * @author Marcel Bachus 9 | */ 10 | $lang['translations'] = 'Spatiegescheiden lijst van vertalingen (ISO codes).'; 11 | $lang['translationns'] = 'Als je alleen vertalingen in een bepaalde namespace wenst, plaatst die dan hier.'; 12 | $lang['skiptrans'] = 'Wanneer een paginanaam overeenstemt met deze reguliere expressie, wordt het vertaalmenu niet getoond.'; 13 | $lang['dropdown'] = 'Gebruik een dropdownlijst om vertalingen weer te geven (aanbevolen bij meer dan 5 talen).'; 14 | $lang['translateui'] = 'Moet de taal van de gebruikersinterface ook veranderen naar de taal van vertaalde namespace?'; 15 | $lang['redirectstart'] = 'Moet de startpagina automatisch doorverwijzen naar de namespace van de taal die de taaldetectie van de browser doorgeeft?'; 16 | $lang['about'] = 'Geef een paginanaam waar de vertaalfunctie wordt uitgelegd voor je gebruikers. Het zal worden gelinkt vanuit de talenkiezer.'; 17 | $lang['localabout'] = 'Gebruik vertaalde versies van bovengenoemde vertalingsuitlegpagina (in plaats van één globale uitlegpagina).'; 18 | $lang['checkage'] = 'Waarschuw voor mogelijk gedateerde vertalingen.'; 19 | $lang['display'] = 'Selecteer wat je wil zien in de talenkiezer. Let op dat het gebruik van landenvlaggen in de talenkiezer niet altijd gebruiksvriendelijkheid is.'; 20 | $lang['copytrans'] = 'De tekst in de oorspronkelijke taal naar het bewerkvenster kopiëren als er een nieuwe vertaling wordt begonnen.'; 21 | $lang['show_path'] = 'Toon het pad naar de missende vertalings pagina?'; 22 | -------------------------------------------------------------------------------- /lang/nl/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Deze pagina is nog niet volledig vertaald. Help alsjeblieft de vertaling compleet te maken.**\\ //(verwijder deze paragraaf als de vertaling is voltooid)// -------------------------------------------------------------------------------- /lang/pl/lang.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Bartek S 8 | */ 9 | $lang['translations'] = 'Tłumaczenie tej strony'; 10 | $lang['outdated'] = 'Tłumaczenie jest starsze niż oryginalna strona i może być przestarzałe.'; 11 | $lang['diff'] = 'Zobacz co się zmieniło.'; 12 | $lang['transloaded'] = 'Zawartość tłumaczenia tej strony w %s została wstępnie załadowana, aby ułatwić tłumaczenie.
Możesz jednak oprzeć swoje tłumaczenie na następujących istniejących tłumaczeniach: %s.'; 13 | $lang['menu'] = 'przestarzałe i brakujące tłumaczenia'; 14 | $lang['missing'] = 'Brakujące!'; 15 | $lang['old'] = 'przestarzałe'; 16 | $lang['current'] = 'aktualny'; 17 | $lang['path'] = 'Ścieżka'; 18 | -------------------------------------------------------------------------------- /lang/pl/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Bartek S 8 | */ 9 | $lang['translations'] = 'Lista języków tłumaczenia rozdzielona spacjami (kody ISO).'; 10 | $lang['translationns'] = 'Jeśli tylko chcesz tłumaczenia poniższej przestrzeni, umieść je tutaj.'; 11 | $lang['skiptrans'] = 'Jeśli nazwa strony pasuje do tego regular expression, nie pokazuj menu tłumaczenia.'; 12 | $lang['dropdown'] = 'Użyj listy rozwijanej, aby wyświetlić tłumaczenia (zalecane dla więcej niż 5 języków).'; 13 | $lang['translateui'] = 'Czy język interfejsu użytkownika powinien być przełączany także w obcojęzycznych przestrzeniach nazw?'; 14 | $lang['redirectstart'] = 'Czy strona startowa powinna automatycznie przekierowywać do przestrzeni nazw językowych przy użyciu wykrywania języka przeglądarki?'; 15 | $lang['about'] = 'Wpisz tutaj nazwę strony, na której wyjaśniono użytkownikom funkcję tłumaczenia. Zostanie ona powiązana z selektorem języka.'; 16 | $lang['localabout'] = 'Używaj zlokalizowanych wersji strony instruktażowej (zamiast jednej globalnej strony instruktażowej).'; 17 | $lang['checkage'] = 'Ostrzegaj o ewentualnych nieaktualnych tłumaczeniach.'; 18 | $lang['display'] = 'Wybierz, co chcesz wyświetlić w selektorze języka. Należy pamiętać, że eksperci ds. użyteczności nie zalecają używania flag krajów do wyboru języka.'; 19 | $lang['copytrans'] = 'Wkopiuj tekst w języku oryginalnym do edytora, rozpoczynając nowe tłumaczenie.'; 20 | $lang['show_path'] = 'Pokaż ścieżkę na brakującej stronie tłumaczenia.'; 21 | -------------------------------------------------------------------------------- /lang/pl/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Ta strona nie jest jeszcze kompletnie przetłumaczona. Pomoc mile widziana.**\\ //(po skompletowaniu usuń ten komentarz)// -------------------------------------------------------------------------------- /lang/pt-br/lang.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Edney Rossi 8 | */ 9 | $lang['translations'] = 'Traduções desta página'; 10 | $lang['outdated'] = 'Esta tradução é mais antiga que a página original e pode estar desatualizada.'; 11 | $lang['diff'] = 'Veja o que foi mudado.'; 12 | $lang['transloaded'] = 'O conteúdo da tradução desta página em %s foi pré-carregado para facilitar o trabalho.< br/>Mas você pode basear sua tradução nas seguintes traduções existentes: %s.'; 13 | $lang['menu'] = 'traduções desatualizadas e inexistentes'; 14 | $lang['missing'] = 'Inexistente!'; 15 | $lang['old'] = 'desatualizado'; 16 | $lang['current'] = 'atualizada'; 17 | $lang['path'] = 'Caminho'; 18 | -------------------------------------------------------------------------------- /lang/pt-br/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Felipe Castro 8 | * @author Edney Rossi 9 | */ 10 | $lang['translations'] = 'Lista de idiomas separados por espaço (códigos ISO).'; 11 | $lang['translationns'] = 'Se você deseja traduções apenas para certo idioma, coloque-o aqui.'; 12 | $lang['skiptrans'] = 'Quando o nome-de-página estiver de acordo com esta expressão regular, não mostre o menu de tradução.'; 13 | $lang['dropdown'] = 'Usar listagem desdobrada para mostrar as traduções (recomendado para mais que 5 línguas).'; 14 | $lang['translateui'] = 'A interface do usuário deve ser trocada para o idioma, também?'; 15 | $lang['redirectstart'] = 'A página inicial deve redirecionar automaticamente para o "namespace" da língua usando a detecção de idiomas no navegador?'; 16 | $lang['about'] = 'Digite um nome de página aqui onde o recurso de tradução é explicado para seus usuários. Ele será vinculado a partir do seletor de idioma.'; 17 | $lang['localabout'] = 'Usar versões localizadas da página "a respeito de" (em vez de uma página global "a respeito de").'; 18 | $lang['checkage'] = 'Avisar sobre possíveis traduções desatualizadas.'; 19 | $lang['display'] = 'Selecionar o que você gostaria de mostrar no seletor de línguas. Note que usar bandeirinhas de países para selecionar línguas não é recomendado por especialistas em usabilidade.'; 20 | $lang['copytrans'] = 'Copiar o texto da língua original no editor quando começar uma nova tradução?'; 21 | $lang['show_path'] = 'Mostrar o caminho na página com tradução inexistente?'; 22 | -------------------------------------------------------------------------------- /lang/pt-br/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME ** Esta página não está completamente traduzida ainda. Por favor ajude a completar sua tradução.**\\ //(remova este parágrafo assim que a tradução tenha terminado)// -------------------------------------------------------------------------------- /lang/pt/lang.php: -------------------------------------------------------------------------------- 1 | 7 | * @author André Neves 8 | * @author Alfredo Silva 9 | */ 10 | $lang['translations'] = 'Traduções para esta página'; 11 | $lang['outdated'] = 'Esta tradução é mais antiga do que a página original e poderá estar desatualizada.'; 12 | $lang['diff'] = 'Veja o que foi alterado.'; 13 | $lang['transloaded'] = 'O conteúdo da tradução desta página está em %s e foi pré-carregado para facilitar a tradução.
Mas você pode basear sua tradução nas seguintes traduções existentes: %s.'; 14 | $lang['menu'] = 'traduções desatualizadas e ausentes'; 15 | $lang['missing'] = 'Ausente!'; 16 | $lang['old'] = 'Desatualizado'; 17 | $lang['current'] = 'atualizado'; 18 | $lang['path'] = 'Caminho'; 19 | -------------------------------------------------------------------------------- /lang/pt/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author André Neves 8 | * @author Alfredo Silva 9 | */ 10 | $lang['translations'] = 'Lista de idiomas de tradução (códigos ISO) separada por espaço.'; 11 | $lang['translationns'] = 'Se pretender apenas as traduções abaixo de um determinado espaço de nome, coloque-as aqui.'; 12 | $lang['skiptrans'] = 'Quando o nome da página corresponder com esta expressão regular, não mostrar o menu de tradução.'; 13 | $lang['dropdown'] = 'Utilizar uma lista de menu para exibir as traduções (recomendado para mais de 5 idiomas).'; 14 | $lang['translateui'] = 'O idioma da interface do utilizador também deverá ser alterado nos espaços de nome do idioma estrangeiro?'; 15 | $lang['redirectstart'] = 'A página inicial deve redirecionar automaticamente para um espaço de nome do idioma utilizando a deteção de idioma do navegador?'; 16 | $lang['about'] = 'Insira aqui um nome de página onde a funcionalidade de tradução é explicada aos seus utilizadores. O seletor de língua terá uma ligação para lá.'; 17 | $lang['localabout'] = 'Utilizar versões localizadas da página sobre (em vez de uma página global sobre).'; 18 | $lang['checkage'] = 'Avisar sobre as possíveis traduções desatualizadas.'; 19 | $lang['display'] = 'Selecione o que gostaria de ver mostrado no seletor de linguagem. Note que usar bandeiras de países para seleção de linguagem não é recomendado por peritos de usabilidade.'; 20 | $lang['copytrans'] = 'Copiar o texto do idioma original no editor quando iniciar uma nova tradução?'; 21 | $lang['show_path'] = 'Mostrar caminho na página de tradução ausente?'; 22 | -------------------------------------------------------------------------------- /lang/pt/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME ** Esta página ainda não está totalmente traduzida. Por favor, ajude a concluir a tradução. ** \\ // (remova este parágrafo quando a tradução terminar) // -------------------------------------------------------------------------------- /lang/ru/lang.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Vasilyy Balyasnyy 8 | * @author Anotheroneuser 9 | */ 10 | $lang['translations'] = 'Перевод этой страницы'; 11 | $lang['outdated'] = 'Этот перевод старее, чем оригинальная страница, и может быть неактуальным.'; 12 | $lang['diff'] = 'Смотрите, что было изменено.'; 13 | $lang['transloaded'] = 'Содержание перевода этой страницы в %s было предварительно загружено для упрощения перевода.
Но вы можете переводить на основе следующего существующего перевода: %s.'; 14 | $lang['menu'] = 'Устаревшие или отсутствующие переводы'; 15 | $lang['missing'] = 'Отсутствует! '; 16 | $lang['old'] = 'устарело'; 17 | $lang['current'] = 'обновить (привести в актуальное состояние)'; 18 | $lang['path'] = 'Путь'; 19 | -------------------------------------------------------------------------------- /lang/ru/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Aleksandr Selivanov 8 | * @author Anotheroneuser 9 | */ 10 | $lang['translations'] = 'Список поддерживаемых языков перевода (двухсимвольные коды ISO). Разделите значения пробелами.'; 11 | $lang['translationns'] = 'Если вы хотите перевести только определённое пространство имён, тогда впишите здесь его имя.'; 12 | $lang['skiptrans'] = 'Если имя страницы соответствует этому регулярному выражению, тогда не отображать меню перевода.'; 13 | $lang['dropdown'] = 'Использовать выпадающий список для отображения доступных переводов (рекомендуется, если более 5 переводов)'; 14 | $lang['translateui'] = 'Должен ли язык интерфейса пользователя также переключаться согласно языку пространства имён?'; 15 | $lang['redirectstart'] = 'Должна ли стартовая страница автоматически перенаправляться на пространство имён языка, используя автоопределение языка браузера?'; 16 | $lang['about'] = 'Введите здесь имя страницы, на которой будут разъяснены функции перевода для ваших пользователей. Она будет связана с выбором языка.'; 17 | $lang['localabout'] = 'Использовать локализованную версию страницы разъяснений (вместо одной глобальной страницы разъяснений).'; 18 | $lang['checkage'] = 'Отображать предупреждение о возможной неактуальности перевода?'; 19 | $lang['display'] = 'Выберите, что бы вы хотели видеть в поле выбора языков. Имейте в виду, что использование изображения государственного флага в поле выбора языков не было рекомендовано экспертами в области потребительского удобства. '; 20 | $lang['copytrans'] = 'Копировать текст оригинала в окно редактирования при создании нового перевода?'; 21 | $lang['show_path'] = 'Показывать путь на непереведённых страницах? '; 22 | -------------------------------------------------------------------------------- /lang/ru/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Эта страница пока что не переведена полностью. Пожалуйста, помогите завершить перевод.**\\ //(Сотрите это сообщение по окончании перевода.)// -------------------------------------------------------------------------------- /lang/sl/lang.php: -------------------------------------------------------------------------------- 1 | izvorne strani in je zato lahko zastarel.'; 9 | $lang['diff'] = 'Oglejte si spremembe.'; 10 | -------------------------------------------------------------------------------- /lang/sl/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Matej Urbančič 8 | */ 9 | $lang['translations'] = 'Space separated list of translation languages (ISO codes).'; 10 | $lang['translationns'] = 'If you only want translations below a certain namespace, put it here.'; 11 | $lang['skiptrans'] = 'When the pagename matches this regular expression, don\'t show the translation menu.'; 12 | $lang['dropdown'] = 'Use a dropdown list to display the translations (recommended for more than 5 languages).'; 13 | $lang['translateui'] = 'Should the language of the user interface be switched in foreign language namespaces, too?'; 14 | $lang['redirectstart'] = 'Should the start page automatically redirect into a language namespace using browser language detection?'; 15 | $lang['about'] = 'Enter a pagename here where the translation feature is explained for your users. It will be linked from the language selector.'; 16 | $lang['localabout'] = 'Uporabi prevedeno različico strani o vstavku (namesto splošne strani).'; 17 | $lang['checkage'] = 'Opozori o zastarelem prevodu.'; 18 | $lang['display'] = 'Izbor možnosti za prikaz jezika v izbirniku jezika. Izbor zastave jezika v izbiri ni priporočen.'; 19 | -------------------------------------------------------------------------------- /lang/sv/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Översättningar av denna sida'; 9 | $lang['outdated'] = 'Denna översättning är äldre än orginalsidan och kan vara daterad.'; 10 | $lang['diff'] = 'Se vad som har ändrats.'; 11 | $lang['transloaded'] = 'Innehållet på denna sidas översättning på %s har blivit förinläst för enklare översättning.
Du kan dock basera din översättning på följande redan existerande översättningar: %s.'; 12 | $lang['menu'] = 'daterade och saknade översättningar'; 13 | $lang['missing'] = 'Saknas!'; 14 | $lang['old'] = 'daterad'; 15 | $lang['current'] = 'uppdaterad'; 16 | $lang['path'] = 'Sökväg'; 17 | -------------------------------------------------------------------------------- /lang/sv/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Blankstegsseparerad lista över översatta språk (ISO-koder).'; 9 | $lang['translationns'] = 'Om du bara önskar översättningar under en specifik namnrymd, placera den här.'; 10 | $lang['skiptrans'] = 'När sidnamnet matchar detta reguljära uttryck, visa ej översättningsmenyn.'; 11 | $lang['dropdown'] = 'Använd en rullista för att visa översättningarna (rekommenderat till fem eller fler språk).'; 12 | $lang['translateui'] = 'Skall språket för användargränssnittet växlas även för namnrymder på främmande språk?'; 13 | $lang['redirectstart'] = 'Skall startsidan automatiskt omdirigeras till en språkspecifik namnrymd baserat på webbläsarens språkdetektion?'; 14 | $lang['about'] = 'Fyll i ett sidnamn här där översättningsfunktionen förklaras för dina användare. Sidan kommer att länkas från språkväljaren.'; 15 | $lang['localabout'] = 'Använd översatt version av "Om"-sidan (istället för en global "Om"-sida).'; 16 | $lang['checkage'] = 'Varna för möjligt daterade översättningar.'; 17 | $lang['display'] = 'Ange vad du önskar visas i menyn för språkval. Vänligen notera att nationsfanor för språkval ej är rekommenderat.'; 18 | $lang['copytrans'] = 'Kopiera texten på originalspråket till textredigeraren när en ny översättning inleds?'; 19 | $lang['show_path'] = 'Visa sökväg på sidan för den saknade översättningen?'; 20 | -------------------------------------------------------------------------------- /lang/sv/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Denna sida är inte helt översatt än. Var god hjälp till att avsluta översättningen.**\\ //(ta bort detta stycke när översättningen är färdig)// -------------------------------------------------------------------------------- /lang/tr/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Bu sayfanın çevirileri'; 9 | $lang['outdated'] = 'Bu çeviri orjinal sayfadan daha eski tarihli. Dolayısıyla güncel olmayabilir.'; 10 | $lang['diff'] = 'Nelerin değiştiğini görmek için tıklayın.'; 11 | -------------------------------------------------------------------------------- /lang/tr/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Tercüme dillerinin listesi. (boşluk ile ayrılmış, ISO kodları)'; 9 | $lang['translationns'] = 'Eğer tercümelerin bir isim alanın (namespace) altında olmasını istiyorsanız, buraya yazın.'; 10 | $lang['skiptrans'] = 'İsim alanı (Namespace) buradaki tanıma uyduğunda, tercüme arayüzünü gösterme.'; 11 | $lang['dropdown'] = 'Dilleri listelemek için açılır arayüz kullan. (5\'ten fazla dil olduğunda kullanılması önerilir)'; 12 | $lang['localabout'] = 'Bir tane genel "hakkında" sayfası kullanmak yerine, yerelleştirilmiş "hakkında" sayfaları kullan. '; 13 | $lang['checkage'] = 'Eski tarihli tercümeler hakkında uyarı göster.'; 14 | $lang['display'] = 'Dil seçiminde görünmesini istediklerinizi seçin. Lütfen unutmayın, dil seçiminde ülke bayrağı kullanmak, erişilebilirlik uzmanları tarafından tavsiye edilmez.'; 15 | $lang['copytrans'] = 'Yeni tercümeye başlarken orjinal dildeki metin, düzenleme ekranına kopyalansın mı?'; 16 | -------------------------------------------------------------------------------- /lang/tr/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Bu sayfanın çevirisi henüz tamamlanmadı. Lütfen çevirinin tamamlanmasına yardımcı olun.**\\ //(Çeviri tamamlandığında bu paragrafı silin)// -------------------------------------------------------------------------------- /lang/uk/lang.php: -------------------------------------------------------------------------------- 1 | 7 | * @author Vitaly 8 | */ 9 | $lang['translations'] = 'Переклад цієї сторінки'; 10 | $lang['outdated'] = 'Цей переклад старіший ніж оригінальна сторінка і може бути не актуальним.'; 11 | $lang['diff'] = 'Дивіться що було змінено.'; 12 | $lang['transloaded'] = 'Зміст перекладу цієї сторінки %s був попередньо завантажений для зручності перекладу.
Також можете використовувати наступні переклади: %s.'; 13 | $lang['menu'] = 'застарілі та відсутні переклади'; 14 | $lang['missing'] = 'Відсутній!'; 15 | $lang['old'] = 'застарілий'; 16 | $lang['current'] = 'поточний'; 17 | $lang['path'] = 'Шлях'; 18 | -------------------------------------------------------------------------------- /lang/uk/settings.php: -------------------------------------------------------------------------------- 1 | 9 | * @author Vitaly 10 | * @author Oleksiy Zagorskyi 11 | */ 12 | $lang['translations'] = 'Список підтримуваних мов перекладу (двохсимвольні коди ISO). Розділіть значення комами або пробілами.'; 13 | $lang['translationns'] = 'Якщо ви хочете перекласти тільки визначений Простір імен, тоді впишіть тут його ім\'я.'; 14 | $lang['skiptrans'] = 'Якщо ім\'я сторінки відповідає цьому регулярному виразу, тоді не відображувати меню перекладів.'; 15 | $lang['dropdown'] = 'Використовувати випадаючий список для відображення доступних перекладів (рекомендується, якщо більше 5 перекладів)'; 16 | $lang['translateui'] = 'Чи повинна мова інтерфейсу користувача також перемикатись відповідно до мови Простору імен?'; 17 | $lang['redirectstart'] = 'Чи повинна стартова сторінка автоматично перенаправлятись на Простір імен мови, використовуючи детектекцію мови оглядача?'; 18 | $lang['about'] = 'Введіть тут ім\'я сторінки, на якій буде роз\'яснено функції перекладу для ваших користувачів. Вона буде пов\'язана з вибором мови.'; 19 | $lang['localabout'] = 'Використовувати локалізовану версію сторінки роз\'яснень (замість однієї глобальної сторінки роз\'яснень).'; 20 | $lang['checkage'] = 'Відображувати попередження про можливу не актуальність перекладу сторінок?'; 21 | $lang['display'] = 'Оберіть що б ви хотіли відображувати в перемикачі мов. Примітка: використовувати прапор країни для перемикача мов не рекомендується експертами по зручності використання інтерфейсу.'; 22 | $lang['copytrans'] = 'Зкопіювати текст мовою оригіналу до редактора на початку нового перекладу?'; 23 | $lang['show_path'] = 'Показати шлях на відсутній сторінці перекладу?'; 24 | -------------------------------------------------------------------------------- /lang/uk/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME ** Ця сторінка ще не повністю переведена. Будь-ласка, допоможіть завершити переклад. ** \\ //(видаліть цей абзац після завершення перекладу)// -------------------------------------------------------------------------------- /lang/vi/lang.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Bản dịch của trang này'; 9 | $lang['outdated'] = 'Bản dịch của trang này cũ hơn trang gốc và có thể đã lỗi thời.'; 10 | $lang['diff'] = 'Xem những gì đã thay đổi.'; 11 | $lang['transloaded'] = 'Nội dung bản dịch của trang này trong %s đã được tải sẵn để dịch dễ dàng.
Nhưng bạn có thể căn cứ bản dịch của mình vào các bản dịch hiện có sau đây: %s.'; 12 | $lang['menu'] = 'bản dịch còn thiếu và lỗi thời '; 13 | $lang['missing'] = 'Còn thiếu!'; 14 | $lang['old'] = 'lỗi thời'; 15 | $lang['current'] = 'cập nhật'; 16 | $lang['path'] = 'Đường dẫn'; 17 | -------------------------------------------------------------------------------- /lang/vi/settings.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | $lang['translations'] = 'Danh sách ngôn ngữ dịch được phân tách bằng khoảng cách (mã ISO).'; 9 | $lang['translationns'] = 'Nếu bạn chỉ muốn bản dịch bên dưới một không gian tên nhất định, hãy đặt nó vào đây.'; 10 | $lang['skiptrans'] = 'Khi tên trang khớp với biểu thức chính quy này, không hiển thị menu dịch.'; 11 | $lang['dropdown'] = 'Sử dụng danh sách thả xuống để hiển thị các bản dịch (khuyến nghị cho hơn 5 ngôn ngữ).'; 12 | $lang['translateui'] = 'Ngôn ngữ của giao diện người dùng cũng nên được chuyển đổi trong không gian tên tiếng nước ngoài?'; 13 | $lang['redirectstart'] = 'Trang bắt đầu có nên tự động đổi hướng đến một không gian tên ngôn ngữ bằng cách sử dụng phát hiện ngôn ngữ trình duyệt không?'; 14 | $lang['about'] = 'Nhập một tên trang ở đây chỉ đến nơi giải thích tính năng dịch cho người dùng của bạn. Nó sẽ được liên kết từ bộ chọn ngôn ngữ.'; 15 | $lang['localabout'] = 'Sử dụng phiên bản bản địa hóa của trang (thay vì một trang chính toàn cục).'; 16 | $lang['checkage'] = 'Cảnh báo các bản dịch có thể lỗi thời.'; 17 | $lang['display'] = 'Chọn những gì bạn muốn hiển thị trong bộ chọn ngôn ngữ. Lưu ý rằng việc sử dụng cờ quốc gia để lựa chọn ngôn ngữ không được khuyến nghị bởi các chuyên gia về khả năng sử dụng.'; 18 | $lang['copytrans'] = 'Sao chép văn bản ngôn ngữ gốc vào trình sửa đổi khi bắt đầu bản dịch mới?'; 19 | $lang['show_path'] = 'Hiển thị đường dẫn trên trang dịch bị thiếu?'; 20 | -------------------------------------------------------------------------------- /lang/vi/totranslate.txt: -------------------------------------------------------------------------------- 1 | FIXME **Trang này chưa được dịch đầy đủ. Xin hãy giúp hoàn thành bản dịch.**\\ //(xóa đoạn này sau khi dịch xong)// -------------------------------------------------------------------------------- /lang/zh-tw/lang.php: -------------------------------------------------------------------------------- 1 | 原始頁面舊,可能已過時。'; 5 | $lang['diff'] = '檢視變更。'; 6 | 7 | -------------------------------------------------------------------------------- /lang/zh-tw/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author oott123 8 | * @author kuma 9 | */ 10 | $lang['translations'] = '本页面的其他翻译'; 11 | $lang['outdated'] = '翻译跟原始页面比较起来显得有些陈旧,所以可能失效。'; 12 | $lang['diff'] = '查看更新'; 13 | $lang['transloaded'] = '此页面的 %s 已经由 easy translation 预翻译。
但你可以以以下现存的语言为基础翻译你的版本。%s'; 14 | $lang['menu'] = '过时的和缺失的翻译'; 15 | $lang['missing'] = '缺失!'; 16 | $lang['old'] = '过时'; 17 | $lang['current'] = '最新的'; 18 | $lang['path'] = '路径'; 19 | -------------------------------------------------------------------------------- /lang/zh/settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @author oott123 8 | * @author kuma 9 | */ 10 | $lang['translations'] = '使用空格分隔的翻译语言列表(ISO 码)。请勿填入默认语言。'; 11 | $lang['translationns'] = '如果您只希望本插件作用于某个特定的名称空间,请在这里写上其名称。'; 12 | $lang['skiptrans'] = '当页面名称与此正则匹配时,不要显示翻译菜单。'; 13 | $lang['dropdown'] = '使用下拉列表显示翻译语言(5+语言时建议启用)'; 14 | $lang['translateui'] = '整个用户界面也跟随某个页面的翻译语言而改变吗?'; 15 | $lang['redirectstart'] = '首页是否根据浏览器语言自动切换到相应语言?'; 16 | $lang['about'] = '请在此输入向用户解释翻译功能的页面的名称空间。它的链接将出现在语言选择器上。'; 17 | $lang['localabout'] = '使用本地化的关于页面(而不是一个全局关于页面)。'; 18 | $lang['checkage'] = '警告:可能过时了的翻译。'; 19 | $lang['display'] = '选择你想在选择器中显示什么。注意可用性专家并不推荐使用国旗选择语言。'; 20 | $lang['copytrans'] = '开始新翻译的时候在编辑器中复制原始语言版本?'; 21 | $lang['show_path'] = '缺失的翻译页面上显示路径?'; 22 | -------------------------------------------------------------------------------- /lang/zh/totranslate.txt: -------------------------------------------------------------------------------- 1 | 等待修复 **此页面没有被翻译完全。请帮助翻译本页。**\\ //(当全文翻译完时请移除这个段落。)// -------------------------------------------------------------------------------- /plugin.info.txt: -------------------------------------------------------------------------------- 1 | # General Plugin Info do not edit 2 | base translation 3 | author Andreas Gohr 4 | email andi@splitbrain.org 5 | date 2025-05-20 6 | name Translation Plugin 7 | desc Supports the easy setup of a multi-language wiki. 8 | url https://www.dokuwiki.org/plugin:translation 9 | -------------------------------------------------------------------------------- /print.css: -------------------------------------------------------------------------------- 1 | .dokuwiki div.plugin_translation { display: none } 2 | -------------------------------------------------------------------------------- /remote.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class remote_plugin_translation extends RemotePlugin 14 | { 15 | /** 16 | * Get outdated or missing translations 17 | * 18 | * This function returns a list of all pages that are either missing or are older than their 19 | * corresponding page in the default language. 20 | * 21 | * Only available to managers and superusers. 22 | * 23 | * @param string $namespace The namespace to check, empty for all 24 | * @return OutdatedTranslationApiResponse[] 25 | */ 26 | public function getOutdated($namespace = '') 27 | { 28 | if (!auth_ismanager()) { 29 | throw new AccessDeniedException('You are not allowed to access this endpoint', 111); 30 | } 31 | 32 | /** @var helper_plugin_translation $helper */ 33 | $helper = plugin_load('helper', 'translation'); 34 | 35 | $namespace = cleanID($namespace); 36 | $pages = $helper->getAllTranslatablePages($namespace); 37 | 38 | $result = []; 39 | foreach ($pages as $page) { 40 | [, $idpart] = $helper->getTransParts($page["id"]); 41 | foreach ($helper->translations as $t) { 42 | if ($t === $helper->defaultlang) continue; 43 | [$translID,] = $helper->buildTransID($t, $idpart); 44 | 45 | if (!page_exists($translID)) { 46 | $status = 'missing'; 47 | } else if ($page['mtime'] > filemtime(wikiFN($translID))) { 48 | $status = 'outdated'; 49 | } else { 50 | $status = ''; 51 | } 52 | 53 | if ($status) { 54 | $result[] = new OutdatedTranslationApiResponse( 55 | $page, 56 | cleanID($translID), 57 | filemtime(wikiFN($translID)), 58 | $t, 59 | $status 60 | ); 61 | } 62 | } 63 | } 64 | 65 | return $result; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /style.less: -------------------------------------------------------------------------------- 1 | // fix problem in dokuwiki template where short sidebar may clip dropdown 2 | // in the future this should be fixed in the dokuwiki template 3 | .dokuwiki.tpl_dokuwiki .aside { 4 | overflow-y: visible; 5 | overflow-x: clip; 6 | } 7 | 8 | // default styles for inline language selector 9 | .dokuwiki div.plugin_translation { 10 | position: relative; 11 | text-align: right; 12 | 13 | ul { 14 | display: inline; 15 | 16 | margin: 0; 17 | padding: 0; 18 | 19 | li { 20 | list-style-type: none; 21 | display: inline-block; 22 | 23 | margin: 0.25em; 24 | padding: 0; 25 | 26 | a:link, 27 | a:hover, 28 | a:active, 29 | a:visited, 30 | span { 31 | display: block; 32 | padding: 0.25em; 33 | background-color: #008; 34 | color: #fff; 35 | text-decoration: none; 36 | border: none; 37 | white-space: nowrap; 38 | text-align: left; 39 | 40 | &.wikilink2 { 41 | background-color: #888; 42 | 43 | svg { 44 | opacity: 0.5; 45 | } 46 | } 47 | 48 | svg { 49 | height: 1em; 50 | margin-right: 0.5em; 51 | vertical-align: middle; 52 | 53 | } 54 | } 55 | } 56 | } 57 | } 58 | 59 | 60 | // overrides for dropdown style language selector 61 | .dokuwiki div.plugin_translation.is-dropdown { 62 | padding-bottom: 2em; 63 | 64 | ul { 65 | position: absolute; 66 | right: 0; 67 | display: flex; // flex allows reordering of elements 68 | flex-direction: column; 69 | 70 | // current language is always first 71 | li.span { 72 | order: -1; 73 | cursor: default; 74 | } 75 | 76 | li { 77 | margin: 0; 78 | 79 | a { 80 | display: none; 81 | } 82 | } 83 | 84 | &:focus-within, 85 | &:hover { 86 | li { 87 | a { 88 | display: block; 89 | } 90 | } 91 | } 92 | } 93 | } 94 | 95 | table#outdated_translations { 96 | td { 97 | padding-left: 3px; 98 | padding-right: 3px; 99 | 100 | &.missing { 101 | background-color: #ff6666; 102 | } 103 | 104 | &.outdated { 105 | background-color: #ffff66; 106 | } 107 | 108 | &.current { 109 | background-color: #00CC00; 110 | } 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /syntax/notrans.php: -------------------------------------------------------------------------------- 1 | 10 | */ 11 | class syntax_plugin_translation_notrans extends SyntaxPlugin 12 | { 13 | /** @var helper_plugin_translation */ 14 | protected $hlp; 15 | 16 | /** 17 | * Constructor. Load helper plugin 18 | */ 19 | public function __construct() 20 | { 21 | $this->hlp = plugin_load('helper', 'translation'); 22 | } 23 | 24 | /** @inheritdoc */ 25 | public function getType() 26 | { 27 | return 'substition'; 28 | } 29 | 30 | /** @inheritdoc */ 31 | public function getSort() 32 | { 33 | return 155; 34 | } 35 | 36 | /** @inheritdoc */ 37 | public function connectTo($mode) 38 | { 39 | $this->Lexer->addSpecialPattern('~~NOTRANS~~', $mode, 'plugin_translation_notrans'); 40 | } 41 | 42 | /** @inheritdoc */ 43 | public function handle($match, $state, $pos, Doku_Handler $handler) 44 | { 45 | return ['notrans']; 46 | } 47 | 48 | /** @inheritdoc */ 49 | public function render($format, Doku_Renderer $renderer, $data) 50 | { 51 | // store info in metadata 52 | if ($format == 'metadata') { 53 | /** @var Doku_Renderer_metadata $renderer */ 54 | $renderer->meta['plugin']['translation']['notrans'] = true; 55 | } 56 | return false; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /syntax/trans.php: -------------------------------------------------------------------------------- 1 | 10 | */ 11 | class syntax_plugin_translation_trans extends SyntaxPlugin 12 | { 13 | /** @inheritdoc */ 14 | public function getType() 15 | { 16 | return 'substition'; 17 | } 18 | 19 | /** @inheritdoc */ 20 | public function getSort() 21 | { 22 | return 155; 23 | } 24 | 25 | /** @inheritdoc */ 26 | public function connectTo($mode) 27 | { 28 | $this->Lexer->addSpecialPattern('~~TRANS~~', $mode, 'plugin_translation_trans'); 29 | } 30 | 31 | /** @inheritdoc */ 32 | public function handle($match, $state, $pos, Doku_Handler $handler) 33 | { 34 | return []; 35 | } 36 | 37 | /** @inheritdoc */ 38 | public function render($format, Doku_Renderer $renderer, $data) 39 | { 40 | if ($format != 'xhtml') return false; 41 | // disable caching 42 | $renderer->nocache(); 43 | 44 | /** @var helper_plugin_translation $hlp */ 45 | $hlp = plugin_load('helper', 'translation'); 46 | $renderer->doc .= $hlp->showTranslations(); 47 | return true; 48 | } 49 | } 50 | --------------------------------------------------------------------------------