From 46330c5d4d8fc862b61e568a0b975a8e34099ff1 Mon Sep 17 00:00:00 2001 From: Thibault Richy Date: Fri, 17 Nov 2017 16:22:31 +0100 Subject: [PATCH] Traduction --- .../plugins/polylang/admin/admin-base.php | 370 ++ .../polylang/admin/admin-filters-columns.php | 341 ++ .../polylang/admin/admin-filters-media.php | 195 + .../admin/admin-filters-post-base.php | 69 + .../polylang/admin/admin-filters-post.php | 546 +++ .../polylang/admin/admin-filters-term.php | 729 ++++ .../plugins/polylang/admin/admin-filters.php | 281 ++ .../plugins/polylang/admin/admin-links.php | 177 + .../plugins/polylang/admin/admin-model.php | 540 +++ .../plugins/polylang/admin/admin-nav-menu.php | 331 ++ .../polylang/admin/admin-static-pages.php | 165 + .../plugins/polylang/admin/admin-strings.php | 137 + .../plugins/polylang/admin/admin.php | 116 + .../admin/view-translations-media.php | 44 + .../polylang/admin/view-translations-post.php | 70 + .../polylang/admin/view-translations-term.php | 97 + .../plugins/polylang/changelog.txt | 1363 +++++++ .../plugins/polylang/css/admin.css | 400 +++ .../plugins/polylang/css/admin.min.css | 1 + .../plugins/polylang/css/selectmenu.css | 140 + .../plugins/polylang/css/selectmenu.min.css | 1 + .../plugins/polylang/flags/ad.png | Bin 0 -> 643 bytes .../plugins/polylang/flags/ae.png | Bin 0 -> 408 bytes .../plugins/polylang/flags/af.png | Bin 0 -> 604 bytes .../plugins/polylang/flags/ag.png | Bin 0 -> 591 bytes .../plugins/polylang/flags/ai.png | Bin 0 -> 643 bytes .../plugins/polylang/flags/al.png | Bin 0 -> 600 bytes .../plugins/polylang/flags/am.png | Bin 0 -> 497 bytes .../plugins/polylang/flags/an.png | Bin 0 -> 488 bytes .../plugins/polylang/flags/ao.png | Bin 0 -> 428 bytes .../plugins/polylang/flags/ar.png | Bin 0 -> 506 bytes .../plugins/polylang/flags/arab.png | Bin 0 -> 401 bytes .../plugins/polylang/flags/as.png | Bin 0 -> 647 bytes .../plugins/polylang/flags/at.png | Bin 0 -> 403 bytes .../plugins/polylang/flags/au.png | Bin 0 -> 673 bytes .../plugins/polylang/flags/aw.png | Bin 0 -> 524 bytes .../plugins/polylang/flags/ax.png | Bin 0 -> 663 bytes .../plugins/polylang/flags/az.png | Bin 0 -> 589 bytes .../plugins/polylang/flags/ba.png | Bin 0 -> 593 bytes .../plugins/polylang/flags/basque.png | Bin 0 -> 565 bytes .../plugins/polylang/flags/bb.png | Bin 0 -> 585 bytes .../plugins/polylang/flags/bd.png | Bin 0 -> 504 bytes .../plugins/polylang/flags/be.png | Bin 0 -> 449 bytes .../plugins/polylang/flags/bf.png | Bin 0 -> 497 bytes .../plugins/polylang/flags/bg.png | Bin 0 -> 462 bytes .../plugins/polylang/flags/bh.png | Bin 0 -> 457 bytes .../plugins/polylang/flags/bi.png | Bin 0 -> 675 bytes .../plugins/polylang/flags/bj.png | Bin 0 -> 486 bytes .../plugins/polylang/flags/bm.png | Bin 0 -> 611 bytes .../plugins/polylang/flags/bn.png | Bin 0 -> 639 bytes .../plugins/polylang/flags/bo.png | Bin 0 -> 500 bytes .../plugins/polylang/flags/br.png | Bin 0 -> 593 bytes .../plugins/polylang/flags/bs.png | Bin 0 -> 526 bytes .../plugins/polylang/flags/bt.png | Bin 0 -> 631 bytes .../plugins/polylang/flags/bw.png | Bin 0 -> 443 bytes .../plugins/polylang/flags/by.png | Bin 0 -> 514 bytes .../plugins/polylang/flags/bz.png | Bin 0 -> 600 bytes .../plugins/polylang/flags/ca.png | Bin 0 -> 628 bytes .../plugins/polylang/flags/catalonia.png | Bin 0 -> 398 bytes .../plugins/polylang/flags/cc.png | Bin 0 -> 625 bytes .../plugins/polylang/flags/cd.png | Bin 0 -> 528 bytes .../plugins/polylang/flags/cf.png | Bin 0 -> 614 bytes .../plugins/polylang/flags/cg.png | Bin 0 -> 521 bytes .../plugins/polylang/flags/ch.png | Bin 0 -> 367 bytes .../plugins/polylang/flags/ci.png | Bin 0 -> 453 bytes .../plugins/polylang/flags/ck.png | Bin 0 -> 586 bytes .../plugins/polylang/flags/cl.png | Bin 0 -> 450 bytes .../plugins/polylang/flags/cm.png | Bin 0 -> 525 bytes .../plugins/polylang/flags/cn.png | Bin 0 -> 472 bytes .../plugins/polylang/flags/co.png | Bin 0 -> 483 bytes .../plugins/polylang/flags/cr.png | Bin 0 -> 477 bytes .../plugins/polylang/flags/cu.png | Bin 0 -> 563 bytes .../plugins/polylang/flags/cv.png | Bin 0 -> 529 bytes .../plugins/polylang/flags/cx.png | Bin 0 -> 608 bytes .../plugins/polylang/flags/cy.png | Bin 0 -> 428 bytes .../plugins/polylang/flags/cz.png | Bin 0 -> 476 bytes .../plugins/polylang/flags/de.png | Bin 0 -> 545 bytes .../plugins/polylang/flags/dj.png | Bin 0 -> 572 bytes .../plugins/polylang/flags/dk.png | Bin 0 -> 495 bytes .../plugins/polylang/flags/dm.png | Bin 0 -> 620 bytes .../plugins/polylang/flags/do.png | Bin 0 -> 508 bytes .../plugins/polylang/flags/dz.png | Bin 0 -> 582 bytes .../plugins/polylang/flags/ec.png | Bin 0 -> 500 bytes .../plugins/polylang/flags/ee.png | Bin 0 -> 429 bytes .../plugins/polylang/flags/eg.png | Bin 0 -> 465 bytes .../plugins/polylang/flags/eh.png | Bin 0 -> 508 bytes .../plugins/polylang/flags/england.png | Bin 0 -> 496 bytes .../plugins/polylang/flags/er.png | Bin 0 -> 653 bytes .../plugins/polylang/flags/es.png | Bin 0 -> 469 bytes .../plugins/polylang/flags/esperanto.png | Bin 0 -> 319 bytes .../plugins/polylang/flags/et.png | Bin 0 -> 592 bytes .../plugins/polylang/flags/fi.png | Bin 0 -> 489 bytes .../plugins/polylang/flags/fj.png | Bin 0 -> 610 bytes .../plugins/polylang/flags/fk.png | Bin 0 -> 648 bytes .../plugins/polylang/flags/fm.png | Bin 0 -> 552 bytes .../plugins/polylang/flags/fo.png | Bin 0 -> 474 bytes .../plugins/polylang/flags/fr.png | Bin 0 -> 545 bytes .../plugins/polylang/flags/ga.png | Bin 0 -> 489 bytes .../plugins/polylang/flags/galicia.png | Bin 0 -> 589 bytes .../plugins/polylang/flags/gb.png | Bin 0 -> 599 bytes .../plugins/polylang/flags/gd.png | Bin 0 -> 637 bytes .../plugins/polylang/flags/ge.png | Bin 0 -> 594 bytes .../plugins/polylang/flags/gh.png | Bin 0 -> 490 bytes .../plugins/polylang/flags/gi.png | Bin 0 -> 463 bytes .../plugins/polylang/flags/gl.png | Bin 0 -> 470 bytes .../plugins/polylang/flags/gm.png | Bin 0 -> 493 bytes .../plugins/polylang/flags/gn.png | Bin 0 -> 480 bytes .../plugins/polylang/flags/gp.png | Bin 0 -> 488 bytes .../plugins/polylang/flags/gq.png | Bin 0 -> 537 bytes .../plugins/polylang/flags/gr.png | Bin 0 -> 487 bytes .../plugins/polylang/flags/gs.png | Bin 0 -> 630 bytes .../plugins/polylang/flags/gt.png | Bin 0 -> 493 bytes .../plugins/polylang/flags/gu.png | Bin 0 -> 509 bytes .../plugins/polylang/flags/gw.png | Bin 0 -> 516 bytes .../plugins/polylang/flags/gy.png | Bin 0 -> 645 bytes .../plugins/polylang/flags/hk.png | Bin 0 -> 527 bytes .../plugins/polylang/flags/hm.png | Bin 0 -> 673 bytes .../plugins/polylang/flags/hn.png | Bin 0 -> 537 bytes .../plugins/polylang/flags/hr.png | Bin 0 -> 524 bytes .../plugins/polylang/flags/ht.png | Bin 0 -> 487 bytes .../plugins/polylang/flags/hu.png | Bin 0 -> 432 bytes .../plugins/polylang/flags/id.png | Bin 0 -> 430 bytes .../plugins/polylang/flags/ie.png | Bin 0 -> 481 bytes .../plugins/polylang/flags/il.png | Bin 0 -> 431 bytes .../plugins/polylang/flags/in.png | Bin 0 -> 503 bytes .../plugins/polylang/flags/io.png | Bin 0 -> 658 bytes .../plugins/polylang/flags/iq.png | Bin 0 -> 515 bytes .../plugins/polylang/flags/ir.png | Bin 0 -> 512 bytes .../plugins/polylang/flags/is.png | Bin 0 -> 532 bytes .../plugins/polylang/flags/it.png | Bin 0 -> 420 bytes .../plugins/polylang/flags/jm.png | Bin 0 -> 637 bytes .../plugins/polylang/flags/jo.png | Bin 0 -> 473 bytes .../plugins/polylang/flags/jp.png | Bin 0 -> 420 bytes .../plugins/polylang/flags/ke.png | Bin 0 -> 569 bytes .../plugins/polylang/flags/kg.png | Bin 0 -> 510 bytes .../plugins/polylang/flags/kh.png | Bin 0 -> 549 bytes .../plugins/polylang/flags/ki.png | Bin 0 -> 656 bytes .../plugins/polylang/flags/km.png | Bin 0 -> 577 bytes .../plugins/polylang/flags/kn.png | Bin 0 -> 604 bytes .../plugins/polylang/flags/kp.png | Bin 0 -> 561 bytes .../plugins/polylang/flags/kr.png | Bin 0 -> 592 bytes .../plugins/polylang/flags/kurdistan.png | Bin 0 -> 337 bytes .../plugins/polylang/flags/kw.png | Bin 0 -> 486 bytes .../plugins/polylang/flags/ky.png | Bin 0 -> 643 bytes .../plugins/polylang/flags/kz.png | Bin 0 -> 616 bytes .../plugins/polylang/flags/la.png | Bin 0 -> 563 bytes .../plugins/polylang/flags/lb.png | Bin 0 -> 517 bytes .../plugins/polylang/flags/lc.png | Bin 0 -> 520 bytes .../plugins/polylang/flags/li.png | Bin 0 -> 537 bytes .../plugins/polylang/flags/lk.png | Bin 0 -> 627 bytes .../plugins/polylang/flags/lr.png | Bin 0 -> 466 bytes .../plugins/polylang/flags/ls.png | Bin 0 -> 628 bytes .../plugins/polylang/flags/lt.png | Bin 0 -> 508 bytes .../plugins/polylang/flags/lu.png | Bin 0 -> 481 bytes .../plugins/polylang/flags/lv.png | Bin 0 -> 465 bytes .../plugins/polylang/flags/ly.png | Bin 0 -> 419 bytes .../plugins/polylang/flags/ma.png | Bin 0 -> 432 bytes .../plugins/polylang/flags/mc.png | Bin 0 -> 380 bytes .../plugins/polylang/flags/md.png | Bin 0 -> 566 bytes .../plugins/polylang/flags/me.png | Bin 0 -> 448 bytes .../plugins/polylang/flags/mg.png | Bin 0 -> 453 bytes .../plugins/polylang/flags/mh.png | Bin 0 -> 628 bytes .../plugins/polylang/flags/mk.png | Bin 0 -> 664 bytes .../plugins/polylang/flags/ml.png | Bin 0 -> 474 bytes .../plugins/polylang/flags/mm.png | Bin 0 -> 369 bytes .../plugins/polylang/flags/mn.png | Bin 0 -> 492 bytes .../plugins/polylang/flags/mo.png | Bin 0 -> 588 bytes .../plugins/polylang/flags/mp.png | Bin 0 -> 597 bytes .../plugins/polylang/flags/mq.png | Bin 0 -> 655 bytes .../plugins/polylang/flags/mr.png | Bin 0 -> 569 bytes .../plugins/polylang/flags/ms.png | Bin 0 -> 614 bytes .../plugins/polylang/flags/mt.png | Bin 0 -> 420 bytes .../plugins/polylang/flags/mu.png | Bin 0 -> 496 bytes .../plugins/polylang/flags/mv.png | Bin 0 -> 542 bytes .../plugins/polylang/flags/mw.png | Bin 0 -> 529 bytes .../plugins/polylang/flags/mx.png | Bin 0 -> 574 bytes .../plugins/polylang/flags/my.png | Bin 0 -> 571 bytes .../plugins/polylang/flags/mz.png | Bin 0 -> 584 bytes .../plugins/polylang/flags/na.png | Bin 0 -> 647 bytes .../plugins/polylang/flags/nc.png | Bin 0 -> 591 bytes .../plugins/polylang/flags/ne.png | Bin 0 -> 537 bytes .../plugins/polylang/flags/nf.png | Bin 0 -> 602 bytes .../plugins/polylang/flags/ng.png | Bin 0 -> 482 bytes .../plugins/polylang/flags/ni.png | Bin 0 -> 508 bytes .../plugins/polylang/flags/nl.png | Bin 0 -> 453 bytes .../plugins/polylang/flags/no.png | Bin 0 -> 512 bytes .../plugins/polylang/flags/np.png | Bin 0 -> 443 bytes .../plugins/polylang/flags/nr.png | Bin 0 -> 527 bytes .../plugins/polylang/flags/nu.png | Bin 0 -> 572 bytes .../plugins/polylang/flags/nz.png | Bin 0 -> 639 bytes .../plugins/polylang/flags/occitania.png | Bin 0 -> 449 bytes .../plugins/polylang/flags/om.png | Bin 0 -> 478 bytes .../plugins/polylang/flags/pa.png | Bin 0 -> 519 bytes .../plugins/polylang/flags/pe.png | Bin 0 -> 397 bytes .../plugins/polylang/flags/pf.png | Bin 0 -> 498 bytes .../plugins/polylang/flags/pg.png | Bin 0 -> 593 bytes .../plugins/polylang/flags/ph.png | Bin 0 -> 538 bytes .../plugins/polylang/flags/pk.png | Bin 0 -> 569 bytes .../plugins/polylang/flags/pl.png | Bin 0 -> 374 bytes .../plugins/polylang/flags/pm.png | Bin 0 -> 689 bytes .../plugins/polylang/flags/pn.png | Bin 0 -> 657 bytes .../plugins/polylang/flags/pr.png | Bin 0 -> 556 bytes .../plugins/polylang/flags/ps.png | Bin 0 -> 472 bytes .../plugins/polylang/flags/pt.png | Bin 0 -> 554 bytes .../plugins/polylang/flags/pw.png | Bin 0 -> 550 bytes .../plugins/polylang/flags/py.png | Bin 0 -> 473 bytes .../plugins/polylang/flags/qa.png | Bin 0 -> 450 bytes .../plugins/polylang/flags/quebec.png | Bin 0 -> 359 bytes .../plugins/polylang/flags/ro.png | Bin 0 -> 495 bytes .../plugins/polylang/flags/rs.png | Bin 0 -> 423 bytes .../plugins/polylang/flags/ru.png | Bin 0 -> 420 bytes .../plugins/polylang/flags/rw.png | Bin 0 -> 533 bytes .../plugins/polylang/flags/sa.png | Bin 0 -> 551 bytes .../plugins/polylang/flags/sb.png | Bin 0 -> 624 bytes .../plugins/polylang/flags/sc.png | Bin 0 -> 608 bytes .../plugins/polylang/flags/scotland.png | Bin 0 -> 649 bytes .../plugins/polylang/flags/sd.png | Bin 0 -> 492 bytes .../plugins/polylang/flags/se.png | Bin 0 -> 542 bytes .../plugins/polylang/flags/sg.png | Bin 0 -> 468 bytes .../plugins/polylang/flags/sh.png | Bin 0 -> 645 bytes .../plugins/polylang/flags/si.png | Bin 0 -> 510 bytes .../plugins/polylang/flags/sk.png | Bin 0 -> 562 bytes .../plugins/polylang/flags/sl.png | Bin 0 -> 436 bytes .../plugins/polylang/flags/sm.png | Bin 0 -> 502 bytes .../plugins/polylang/flags/sn.png | Bin 0 -> 532 bytes .../plugins/polylang/flags/so.png | Bin 0 -> 527 bytes .../plugins/polylang/flags/sr.png | Bin 0 -> 513 bytes .../plugins/polylang/flags/ss.png | Bin 0 -> 352 bytes .../plugins/polylang/flags/st.png | Bin 0 -> 584 bytes .../plugins/polylang/flags/sv.png | Bin 0 -> 501 bytes .../plugins/polylang/flags/sy.png | Bin 0 -> 422 bytes .../plugins/polylang/flags/sz.png | Bin 0 -> 643 bytes .../plugins/polylang/flags/tc.png | Bin 0 -> 624 bytes .../plugins/polylang/flags/td.png | Bin 0 -> 570 bytes .../plugins/polylang/flags/tf.png | Bin 0 -> 527 bytes .../plugins/polylang/flags/tg.png | Bin 0 -> 562 bytes .../plugins/polylang/flags/th.png | Bin 0 -> 452 bytes .../plugins/polylang/flags/tibet.png | Bin 0 -> 675 bytes .../plugins/polylang/flags/tj.png | Bin 0 -> 496 bytes .../plugins/polylang/flags/tk.png | Bin 0 -> 638 bytes .../plugins/polylang/flags/tl.png | Bin 0 -> 514 bytes .../plugins/polylang/flags/tm.png | Bin 0 -> 593 bytes .../plugins/polylang/flags/tn.png | Bin 0 -> 495 bytes .../plugins/polylang/flags/to.png | Bin 0 -> 426 bytes .../plugins/polylang/flags/tr.png | Bin 0 -> 492 bytes .../plugins/polylang/flags/tt.png | Bin 0 -> 617 bytes .../plugins/polylang/flags/tv.png | Bin 0 -> 536 bytes .../plugins/polylang/flags/tw.png | Bin 0 -> 465 bytes .../plugins/polylang/flags/tz.png | Bin 0 -> 642 bytes .../plugins/polylang/flags/ua.png | Bin 0 -> 446 bytes .../plugins/polylang/flags/ug.png | Bin 0 -> 531 bytes .../plugins/polylang/flags/us.png | Bin 0 -> 609 bytes .../plugins/polylang/flags/uy.png | Bin 0 -> 532 bytes .../plugins/polylang/flags/uz.png | Bin 0 -> 515 bytes .../plugins/polylang/flags/va.png | Bin 0 -> 553 bytes .../plugins/polylang/flags/vc.png | Bin 0 -> 577 bytes .../plugins/polylang/flags/ve.png | Bin 0 -> 528 bytes .../plugins/polylang/flags/veneto.png | Bin 0 -> 624 bytes .../plugins/polylang/flags/vg.png | Bin 0 -> 630 bytes .../plugins/polylang/flags/vi.png | Bin 0 -> 616 bytes .../plugins/polylang/flags/vn.png | Bin 0 -> 474 bytes .../plugins/polylang/flags/vu.png | Bin 0 -> 604 bytes .../plugins/polylang/flags/wales.png | Bin 0 -> 652 bytes .../plugins/polylang/flags/wf.png | Bin 0 -> 554 bytes .../plugins/polylang/flags/ws.png | Bin 0 -> 476 bytes .../plugins/polylang/flags/ye.png | Bin 0 -> 413 bytes .../plugins/polylang/flags/yt.png | Bin 0 -> 593 bytes .../plugins/polylang/flags/za.png | Bin 0 -> 642 bytes .../plugins/polylang/flags/zm.png | Bin 0 -> 500 bytes .../plugins/polylang/flags/zw.png | Bin 0 -> 574 bytes .../polylang/frontend/choose-lang-content.php | 141 + .../polylang/frontend/choose-lang-domain.php | 36 + .../polylang/frontend/choose-lang-url.php | 102 + .../plugins/polylang/frontend/choose-lang.php | 328 ++ .../frontend/frontend-auto-translate.php | 250 ++ .../frontend/frontend-filters-links.php | 393 ++ .../frontend/frontend-filters-search.php | 129 + .../polylang/frontend/frontend-filters.php | 381 ++ .../polylang/frontend/frontend-links.php | 209 ++ .../polylang/frontend/frontend-nav-menu.php | 297 ++ .../frontend/frontend-static-pages.php | 267 ++ .../plugins/polylang/frontend/frontend.php | 185 + .../plugins/polylang/include/api.php | 379 ++ .../plugins/polylang/include/base.php | 126 + .../plugins/polylang/include/cache.php | 72 + .../polylang/include/class-polylang.php | 222 ++ .../polylang/include/filters-links.php | 167 + .../plugins/polylang/include/filters.php | 227 ++ .../plugins/polylang/include/functions.php | 84 + .../plugins/polylang/include/language.php | 245 ++ .../plugins/polylang/include/license.php | 171 + .../include/links-abstract-domain.php | 68 + .../polylang/include/links-default.php | 100 + .../polylang/include/links-directory.php | 254 ++ .../plugins/polylang/include/links-domain.php | 104 + .../plugins/polylang/include/links-model.php | 133 + .../polylang/include/links-permalinks.php | 120 + .../polylang/include/links-subdomain.php | 95 + .../plugins/polylang/include/links.php | 65 + .../plugins/polylang/include/mo.php | 105 + .../plugins/polylang/include/model.php | 608 ++++ .../plugins/polylang/include/nav-menu.php | 79 + .../plugins/polylang/include/olt-manager.php | 245 ++ .../plugins/polylang/include/pointer.php | 110 + .../plugins/polylang/include/query.php | 169 + .../plugins/polylang/include/static-pages.php | 102 + .../plugins/polylang/include/switcher.php | 216 ++ .../polylang/include/translated-object.php | 272 ++ .../polylang/include/translated-post.php | 140 + .../polylang/include/translated-term.php | 182 + .../polylang/include/walker-dropdown.php | 94 + .../plugins/polylang/include/walker-list.php | 65 + .../polylang/include/widget-calendar.php | 265 ++ .../polylang/include/widget-languages.php | 159 + .../plugins/polylang/install/install-base.php | 118 + .../plugins/polylang/install/install.php | 97 + .../polylang/install/plugin-updater.php | 482 +++ .../plugins/polylang/install/upgrade.php | 598 +++ pole-sbv-content/plugins/polylang/js/admin.js | 191 + .../plugins/polylang/js/admin.min.js | 1 + pole-sbv-content/plugins/polylang/js/media.js | 6 + .../plugins/polylang/js/media.min.js | 1 + .../plugins/polylang/js/nav-menu.js | 68 + .../plugins/polylang/js/nav-menu.min.js | 1 + pole-sbv-content/plugins/polylang/js/post.js | 252 ++ .../plugins/polylang/js/post.min.js | 1 + pole-sbv-content/plugins/polylang/js/term.js | 167 + .../plugins/polylang/js/term.min.js | 1 + pole-sbv-content/plugins/polylang/js/user.js | 20 + .../plugins/polylang/js/user.min.js | 1 + .../plugins/polylang/languages/polylang-af.mo | Bin 0 -> 10694 bytes .../plugins/polylang/languages/polylang-af.po | 584 +++ .../plugins/polylang/languages/polylang-ar.mo | Bin 0 -> 13256 bytes .../plugins/polylang/languages/polylang-ar.po | 657 ++++ .../polylang/languages/polylang-ary.mo | Bin 0 -> 14364 bytes .../polylang/languages/polylang-ary.po | 705 ++++ .../polylang/languages/polylang-bel.mo | Bin 0 -> 13974 bytes .../polylang/languages/polylang-bel.po | 733 ++++ .../polylang/languages/polylang-bg_BG.mo | Bin 0 -> 15134 bytes .../polylang/languages/polylang-bg_BG.po | 591 +++ .../polylang/languages/polylang-cs_CZ.mo | Bin 0 -> 10627 bytes .../polylang/languages/polylang-cs_CZ.po | 665 ++++ .../plugins/polylang/languages/polylang-et.mo | Bin 0 -> 10605 bytes .../plugins/polylang/languages/polylang-et.po | 668 ++++ .../polylang/languages/polylang-he_IL.mo | Bin 0 -> 12626 bytes .../polylang/languages/polylang-he_IL.po | 655 ++++ .../polylang/languages/polylang-hu_HU.mo | Bin 0 -> 11279 bytes .../polylang/languages/polylang-hu_HU.po | 586 +++ .../polylang/languages/polylang-id_ID.mo | Bin 0 -> 11467 bytes .../polylang/languages/polylang-id_ID.po | 701 ++++ .../polylang/languages/polylang-ka_GE.mo | Bin 0 -> 16888 bytes .../polylang/languages/polylang-ka_GE.po | 658 ++++ .../polylang/languages/polylang-lt_LT.mo | Bin 0 -> 11498 bytes .../polylang/languages/polylang-lt_LT.po | 589 +++ .../plugins/polylang/languages/polylang-lv.mo | Bin 0 -> 10872 bytes .../plugins/polylang/languages/polylang-lv.po | 668 ++++ .../polylang/languages/polylang-my_MM.mo | Bin 0 -> 19630 bytes .../polylang/languages/polylang-my_MM.po | 661 ++++ .../polylang/languages/polylang-nb_NO.mo | Bin 0 -> 11184 bytes .../polylang/languages/polylang-nb_NO.po | 662 ++++ .../polylang/languages/polylang-pl_PL.mo | Bin 0 -> 11202 bytes .../polylang/languages/polylang-pl_PL.po | 640 ++++ .../polylang/languages/polylang-ru_RU.mo | Bin 0 -> 10499 bytes .../polylang/languages/polylang-ru_RU.po | 654 ++++ .../polylang/languages/polylang-sr_RS.mo | Bin 0 -> 11265 bytes .../polylang/languages/polylang-sr_RS.po | 680 ++++ .../polylang/languages/polylang-tr_TR.mo | Bin 0 -> 11799 bytes .../polylang/languages/polylang-tr_TR.po | 598 +++ .../plugins/polylang/languages/polylang-uk.mo | Bin 0 -> 14444 bytes .../plugins/polylang/languages/polylang-uk.po | 661 ++++ .../polylang/languages/polylang-vec.mo | Bin 0 -> 8844 bytes .../polylang/languages/polylang-vec.po | 663 ++++ .../polylang/languages/polylang-zh_CN.mo | Bin 0 -> 10914 bytes .../polylang/languages/polylang-zh_CN.po | 545 +++ .../polylang/languages/polylang-zh_TW.mo | Bin 0 -> 10784 bytes .../polylang/languages/polylang-zh_TW.po | 652 ++++ .../plugins/polylang/lingotek/image01.gif | Bin 0 -> 357116 bytes .../plugins/polylang/lingotek/image02.png | Bin 0 -> 17824 bytes .../plugins/polylang/lingotek/image03.png | Bin 0 -> 7824 bytes .../plugins/polylang/lingotek/image04.png | Bin 0 -> 26864 bytes .../plugins/polylang/lingotek/lingotek.php | 303 ++ .../modules/plugins/plugins-compat.php | 917 +++++ .../polylang/modules/plugins/wp-import.php | 185 + .../share-slug/settings-share-slug.php | 81 + .../polylang/modules/sync/admin-sync.php | 442 +++ .../polylang/modules/sync/settings-sync.php | 102 + .../settings-translate-slugs.php | 45 + .../polylang/modules/wpml/settings-wpml.php | 35 + .../polylang/modules/wpml/wpml-api.php | 246 ++ .../polylang/modules/wpml/wpml-compat.php | 139 + .../polylang/modules/wpml/wpml-config.php | 271 ++ .../polylang/modules/wpml/wpml-legacy-api.php | 370 ++ .../plugins/polylang/polylang.php | 52 + pole-sbv-content/plugins/polylang/readme.txt | 155 + .../plugins/polylang/settings/flags.php | 273 ++ .../plugins/polylang/settings/languages.php | 145 + .../polylang/settings/settings-browser.php | 90 + .../polylang/settings/settings-cpt.php | 110 + .../polylang/settings/settings-licenses.php | 219 ++ .../polylang/settings/settings-media.php | 25 + .../polylang/settings/settings-module.php | 263 ++ .../polylang/settings/settings-tools.php | 49 + .../polylang/settings/settings-url.php | 284 ++ .../plugins/polylang/settings/settings.php | 319 ++ .../polylang/settings/table-languages.php | 269 ++ .../polylang/settings/table-settings.php | 182 + .../polylang/settings/table-string.php | 345 ++ .../plugins/polylang/settings/view-about.php | 40 + .../polylang/settings/view-languages.php | 34 + .../polylang/settings/view-tab-lang.php | 187 + .../polylang/settings/view-tab-settings.php | 18 + .../polylang/settings/view-tab-strings.php | 25 + .../plugins/polylang/uninstall.php | 141 + .../pole-sbv/actualites_en_template.php | 72 + .../themes/pole-sbv/contact_en_template.php | 108 + pole-sbv-content/themes/pole-sbv/css/main.css | 52 +- .../themes/pole-sbv/earth_en_template.php | 108 + pole-sbv-content/themes/pole-sbv/footer.php | 26 +- .../themes/pole-sbv/functions.php | 83 + pole-sbv-content/themes/pole-sbv/header.php | 19 +- .../themes/pole-sbv/homepage_en_template.php | 157 + .../pole-sbv/images/anim-slide01-en.png | Bin 0 -> 12237 bytes .../images/anim-slide01-mobile-en.png | Bin 0 -> 28663 bytes .../pole-sbv/images/anim-slide02-en.png | Bin 0 -> 67269 bytes .../images/anim-slide02-mobile-en.png | Bin 0 -> 40252 bytes .../pole-sbv/images/anim-slide03-en.png | Bin 0 -> 39500 bytes .../images/anim-slide03-mobile-en.png | Bin 0 -> 22890 bytes .../pole-sbv/images/anim-slide04-en.png | Bin 0 -> 36876 bytes .../pole-sbv/images/anim-slide05-en.png | Bin 0 -> 31962 bytes .../themes/pole-sbv/images/coeur01-en.jpg | Bin 0 -> 26084 bytes .../themes/pole-sbv/images/coeur02-en.jpg | Bin 0 -> 82058 bytes .../themes/pole-sbv/images/icon-1080-en.png | Bin 0 -> 14325 bytes .../themes/pole-sbv/images/innovation-en.png | Bin 0 -> 2143 bytes .../themes/pole-sbv/images/performance-en.png | Bin 0 -> 2272 bytes .../themes/pole-sbv/images/respect-en.jpg | Bin 0 -> 5526 bytes .../pole-sbv/images/responsabilite-en.png | Bin 0 -> 2446 bytes .../pole-sbv/images/schemadesktop2B-en.jpg | Bin 0 -> 57878 bytes .../pole-sbv/images/schemadesktop2a-en.jpg | Bin 0 -> 67482 bytes .../pole-sbv/images/schemamobile2B-en.jpg | Bin 0 -> 42791 bytes .../pole-sbv/images/schemamobile2a-en.jpg | Bin 0 -> 49966 bytes .../themes/pole-sbv/images/simplicite-en.png | Bin 0 -> 2056 bytes .../themes/pole-sbv/images/svg-scheme-en.svg | 3199 +++++++++++++++++ .../pole-sbv/images/svg-scheme-mobile-en.svg | 2555 +++++++++++++ .../themes/pole-sbv/images/travail-en.png | Bin 0 -> 2634 bytes .../themes/pole-sbv/marques_en_template.php | 138 + .../themes/pole-sbv/men_en_template.php | 148 + .../pole-sbv/savoirfaire_en_template.php | 226 ++ pole-sbv-content/themes/pole-sbv/single.php | 8 +- .../themes/pole-sbv/solutions_en_template.php | 355 ++ .../themes/pole-sbv/who_en_template.php | 145 + redis.php | 14 - 451 files changed, 44887 insertions(+), 42 deletions(-) create mode 100644 pole-sbv-content/plugins/polylang/admin/admin-base.php create mode 100644 pole-sbv-content/plugins/polylang/admin/admin-filters-columns.php create mode 100644 pole-sbv-content/plugins/polylang/admin/admin-filters-media.php create mode 100644 pole-sbv-content/plugins/polylang/admin/admin-filters-post-base.php create mode 100644 pole-sbv-content/plugins/polylang/admin/admin-filters-post.php create mode 100644 pole-sbv-content/plugins/polylang/admin/admin-filters-term.php create mode 100644 pole-sbv-content/plugins/polylang/admin/admin-filters.php create mode 100644 pole-sbv-content/plugins/polylang/admin/admin-links.php create mode 100644 pole-sbv-content/plugins/polylang/admin/admin-model.php create mode 100644 pole-sbv-content/plugins/polylang/admin/admin-nav-menu.php create mode 100644 pole-sbv-content/plugins/polylang/admin/admin-static-pages.php create mode 100644 pole-sbv-content/plugins/polylang/admin/admin-strings.php create mode 100644 pole-sbv-content/plugins/polylang/admin/admin.php create mode 100644 pole-sbv-content/plugins/polylang/admin/view-translations-media.php create mode 100644 pole-sbv-content/plugins/polylang/admin/view-translations-post.php create mode 100644 pole-sbv-content/plugins/polylang/admin/view-translations-term.php create mode 100644 pole-sbv-content/plugins/polylang/changelog.txt create mode 100644 pole-sbv-content/plugins/polylang/css/admin.css create mode 100644 pole-sbv-content/plugins/polylang/css/admin.min.css create mode 100644 pole-sbv-content/plugins/polylang/css/selectmenu.css create mode 100644 pole-sbv-content/plugins/polylang/css/selectmenu.min.css create mode 100644 pole-sbv-content/plugins/polylang/flags/ad.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ae.png create mode 100644 pole-sbv-content/plugins/polylang/flags/af.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ag.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ai.png create mode 100644 pole-sbv-content/plugins/polylang/flags/al.png create mode 100644 pole-sbv-content/plugins/polylang/flags/am.png create mode 100644 pole-sbv-content/plugins/polylang/flags/an.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ao.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ar.png create mode 100644 pole-sbv-content/plugins/polylang/flags/arab.png create mode 100644 pole-sbv-content/plugins/polylang/flags/as.png create mode 100644 pole-sbv-content/plugins/polylang/flags/at.png create mode 100644 pole-sbv-content/plugins/polylang/flags/au.png create mode 100644 pole-sbv-content/plugins/polylang/flags/aw.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ax.png create mode 100644 pole-sbv-content/plugins/polylang/flags/az.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ba.png create mode 100644 pole-sbv-content/plugins/polylang/flags/basque.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bb.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bd.png create mode 100644 pole-sbv-content/plugins/polylang/flags/be.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bf.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bg.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bh.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bi.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bj.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bm.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bn.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bo.png create mode 100644 pole-sbv-content/plugins/polylang/flags/br.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bs.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bt.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bw.png create mode 100644 pole-sbv-content/plugins/polylang/flags/by.png create mode 100644 pole-sbv-content/plugins/polylang/flags/bz.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ca.png create mode 100644 pole-sbv-content/plugins/polylang/flags/catalonia.png create mode 100644 pole-sbv-content/plugins/polylang/flags/cc.png create mode 100644 pole-sbv-content/plugins/polylang/flags/cd.png create mode 100644 pole-sbv-content/plugins/polylang/flags/cf.png create mode 100644 pole-sbv-content/plugins/polylang/flags/cg.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ch.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ci.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ck.png create mode 100644 pole-sbv-content/plugins/polylang/flags/cl.png create mode 100644 pole-sbv-content/plugins/polylang/flags/cm.png create mode 100644 pole-sbv-content/plugins/polylang/flags/cn.png create mode 100644 pole-sbv-content/plugins/polylang/flags/co.png create mode 100644 pole-sbv-content/plugins/polylang/flags/cr.png create mode 100644 pole-sbv-content/plugins/polylang/flags/cu.png create mode 100644 pole-sbv-content/plugins/polylang/flags/cv.png create mode 100644 pole-sbv-content/plugins/polylang/flags/cx.png create mode 100644 pole-sbv-content/plugins/polylang/flags/cy.png create mode 100644 pole-sbv-content/plugins/polylang/flags/cz.png create mode 100644 pole-sbv-content/plugins/polylang/flags/de.png create mode 100644 pole-sbv-content/plugins/polylang/flags/dj.png create mode 100644 pole-sbv-content/plugins/polylang/flags/dk.png create mode 100644 pole-sbv-content/plugins/polylang/flags/dm.png create mode 100644 pole-sbv-content/plugins/polylang/flags/do.png create mode 100644 pole-sbv-content/plugins/polylang/flags/dz.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ec.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ee.png create mode 100644 pole-sbv-content/plugins/polylang/flags/eg.png create mode 100644 pole-sbv-content/plugins/polylang/flags/eh.png create mode 100644 pole-sbv-content/plugins/polylang/flags/england.png create mode 100644 pole-sbv-content/plugins/polylang/flags/er.png create mode 100644 pole-sbv-content/plugins/polylang/flags/es.png create mode 100644 pole-sbv-content/plugins/polylang/flags/esperanto.png create mode 100644 pole-sbv-content/plugins/polylang/flags/et.png create mode 100644 pole-sbv-content/plugins/polylang/flags/fi.png create mode 100644 pole-sbv-content/plugins/polylang/flags/fj.png create mode 100644 pole-sbv-content/plugins/polylang/flags/fk.png create mode 100644 pole-sbv-content/plugins/polylang/flags/fm.png create mode 100644 pole-sbv-content/plugins/polylang/flags/fo.png create mode 100644 pole-sbv-content/plugins/polylang/flags/fr.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ga.png create mode 100644 pole-sbv-content/plugins/polylang/flags/galicia.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gb.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gd.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ge.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gh.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gi.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gl.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gm.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gn.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gp.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gq.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gr.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gs.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gt.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gu.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gw.png create mode 100644 pole-sbv-content/plugins/polylang/flags/gy.png create mode 100644 pole-sbv-content/plugins/polylang/flags/hk.png create mode 100644 pole-sbv-content/plugins/polylang/flags/hm.png create mode 100644 pole-sbv-content/plugins/polylang/flags/hn.png create mode 100644 pole-sbv-content/plugins/polylang/flags/hr.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ht.png create mode 100644 pole-sbv-content/plugins/polylang/flags/hu.png create mode 100644 pole-sbv-content/plugins/polylang/flags/id.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ie.png create mode 100644 pole-sbv-content/plugins/polylang/flags/il.png create mode 100644 pole-sbv-content/plugins/polylang/flags/in.png create mode 100644 pole-sbv-content/plugins/polylang/flags/io.png create mode 100644 pole-sbv-content/plugins/polylang/flags/iq.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ir.png create mode 100644 pole-sbv-content/plugins/polylang/flags/is.png create mode 100644 pole-sbv-content/plugins/polylang/flags/it.png create mode 100644 pole-sbv-content/plugins/polylang/flags/jm.png create mode 100644 pole-sbv-content/plugins/polylang/flags/jo.png create mode 100644 pole-sbv-content/plugins/polylang/flags/jp.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ke.png create mode 100644 pole-sbv-content/plugins/polylang/flags/kg.png create mode 100644 pole-sbv-content/plugins/polylang/flags/kh.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ki.png create mode 100644 pole-sbv-content/plugins/polylang/flags/km.png create mode 100644 pole-sbv-content/plugins/polylang/flags/kn.png create mode 100644 pole-sbv-content/plugins/polylang/flags/kp.png create mode 100644 pole-sbv-content/plugins/polylang/flags/kr.png create mode 100644 pole-sbv-content/plugins/polylang/flags/kurdistan.png create mode 100644 pole-sbv-content/plugins/polylang/flags/kw.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ky.png create mode 100644 pole-sbv-content/plugins/polylang/flags/kz.png create mode 100644 pole-sbv-content/plugins/polylang/flags/la.png create mode 100644 pole-sbv-content/plugins/polylang/flags/lb.png create mode 100644 pole-sbv-content/plugins/polylang/flags/lc.png create mode 100644 pole-sbv-content/plugins/polylang/flags/li.png create mode 100644 pole-sbv-content/plugins/polylang/flags/lk.png create mode 100644 pole-sbv-content/plugins/polylang/flags/lr.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ls.png create mode 100644 pole-sbv-content/plugins/polylang/flags/lt.png create mode 100644 pole-sbv-content/plugins/polylang/flags/lu.png create mode 100644 pole-sbv-content/plugins/polylang/flags/lv.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ly.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ma.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mc.png create mode 100644 pole-sbv-content/plugins/polylang/flags/md.png create mode 100644 pole-sbv-content/plugins/polylang/flags/me.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mg.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mh.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mk.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ml.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mm.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mn.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mo.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mp.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mq.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mr.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ms.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mt.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mu.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mv.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mw.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mx.png create mode 100644 pole-sbv-content/plugins/polylang/flags/my.png create mode 100644 pole-sbv-content/plugins/polylang/flags/mz.png create mode 100644 pole-sbv-content/plugins/polylang/flags/na.png create mode 100644 pole-sbv-content/plugins/polylang/flags/nc.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ne.png create mode 100644 pole-sbv-content/plugins/polylang/flags/nf.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ng.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ni.png create mode 100644 pole-sbv-content/plugins/polylang/flags/nl.png create mode 100644 pole-sbv-content/plugins/polylang/flags/no.png create mode 100644 pole-sbv-content/plugins/polylang/flags/np.png create mode 100644 pole-sbv-content/plugins/polylang/flags/nr.png create mode 100644 pole-sbv-content/plugins/polylang/flags/nu.png create mode 100644 pole-sbv-content/plugins/polylang/flags/nz.png create mode 100644 pole-sbv-content/plugins/polylang/flags/occitania.png create mode 100644 pole-sbv-content/plugins/polylang/flags/om.png create mode 100644 pole-sbv-content/plugins/polylang/flags/pa.png create mode 100644 pole-sbv-content/plugins/polylang/flags/pe.png create mode 100644 pole-sbv-content/plugins/polylang/flags/pf.png create mode 100644 pole-sbv-content/plugins/polylang/flags/pg.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ph.png create mode 100644 pole-sbv-content/plugins/polylang/flags/pk.png create mode 100644 pole-sbv-content/plugins/polylang/flags/pl.png create mode 100644 pole-sbv-content/plugins/polylang/flags/pm.png create mode 100644 pole-sbv-content/plugins/polylang/flags/pn.png create mode 100644 pole-sbv-content/plugins/polylang/flags/pr.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ps.png create mode 100644 pole-sbv-content/plugins/polylang/flags/pt.png create mode 100644 pole-sbv-content/plugins/polylang/flags/pw.png create mode 100644 pole-sbv-content/plugins/polylang/flags/py.png create mode 100644 pole-sbv-content/plugins/polylang/flags/qa.png create mode 100644 pole-sbv-content/plugins/polylang/flags/quebec.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ro.png create mode 100644 pole-sbv-content/plugins/polylang/flags/rs.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ru.png create mode 100644 pole-sbv-content/plugins/polylang/flags/rw.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sa.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sb.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sc.png create mode 100644 pole-sbv-content/plugins/polylang/flags/scotland.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sd.png create mode 100644 pole-sbv-content/plugins/polylang/flags/se.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sg.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sh.png create mode 100644 pole-sbv-content/plugins/polylang/flags/si.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sk.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sl.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sm.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sn.png create mode 100644 pole-sbv-content/plugins/polylang/flags/so.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sr.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ss.png create mode 100644 pole-sbv-content/plugins/polylang/flags/st.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sv.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sy.png create mode 100644 pole-sbv-content/plugins/polylang/flags/sz.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tc.png create mode 100644 pole-sbv-content/plugins/polylang/flags/td.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tf.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tg.png create mode 100644 pole-sbv-content/plugins/polylang/flags/th.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tibet.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tj.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tk.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tl.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tm.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tn.png create mode 100644 pole-sbv-content/plugins/polylang/flags/to.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tr.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tt.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tv.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tw.png create mode 100644 pole-sbv-content/plugins/polylang/flags/tz.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ua.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ug.png create mode 100644 pole-sbv-content/plugins/polylang/flags/us.png create mode 100644 pole-sbv-content/plugins/polylang/flags/uy.png create mode 100644 pole-sbv-content/plugins/polylang/flags/uz.png create mode 100644 pole-sbv-content/plugins/polylang/flags/va.png create mode 100644 pole-sbv-content/plugins/polylang/flags/vc.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ve.png create mode 100644 pole-sbv-content/plugins/polylang/flags/veneto.png create mode 100644 pole-sbv-content/plugins/polylang/flags/vg.png create mode 100644 pole-sbv-content/plugins/polylang/flags/vi.png create mode 100644 pole-sbv-content/plugins/polylang/flags/vn.png create mode 100644 pole-sbv-content/plugins/polylang/flags/vu.png create mode 100644 pole-sbv-content/plugins/polylang/flags/wales.png create mode 100644 pole-sbv-content/plugins/polylang/flags/wf.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ws.png create mode 100644 pole-sbv-content/plugins/polylang/flags/ye.png create mode 100644 pole-sbv-content/plugins/polylang/flags/yt.png create mode 100644 pole-sbv-content/plugins/polylang/flags/za.png create mode 100644 pole-sbv-content/plugins/polylang/flags/zm.png create mode 100644 pole-sbv-content/plugins/polylang/flags/zw.png create mode 100644 pole-sbv-content/plugins/polylang/frontend/choose-lang-content.php create mode 100644 pole-sbv-content/plugins/polylang/frontend/choose-lang-domain.php create mode 100644 pole-sbv-content/plugins/polylang/frontend/choose-lang-url.php create mode 100644 pole-sbv-content/plugins/polylang/frontend/choose-lang.php create mode 100644 pole-sbv-content/plugins/polylang/frontend/frontend-auto-translate.php create mode 100644 pole-sbv-content/plugins/polylang/frontend/frontend-filters-links.php create mode 100644 pole-sbv-content/plugins/polylang/frontend/frontend-filters-search.php create mode 100644 pole-sbv-content/plugins/polylang/frontend/frontend-filters.php create mode 100644 pole-sbv-content/plugins/polylang/frontend/frontend-links.php create mode 100644 pole-sbv-content/plugins/polylang/frontend/frontend-nav-menu.php create mode 100644 pole-sbv-content/plugins/polylang/frontend/frontend-static-pages.php create mode 100644 pole-sbv-content/plugins/polylang/frontend/frontend.php create mode 100644 pole-sbv-content/plugins/polylang/include/api.php create mode 100644 pole-sbv-content/plugins/polylang/include/base.php create mode 100644 pole-sbv-content/plugins/polylang/include/cache.php create mode 100644 pole-sbv-content/plugins/polylang/include/class-polylang.php create mode 100644 pole-sbv-content/plugins/polylang/include/filters-links.php create mode 100644 pole-sbv-content/plugins/polylang/include/filters.php create mode 100644 pole-sbv-content/plugins/polylang/include/functions.php create mode 100644 pole-sbv-content/plugins/polylang/include/language.php create mode 100644 pole-sbv-content/plugins/polylang/include/license.php create mode 100644 pole-sbv-content/plugins/polylang/include/links-abstract-domain.php create mode 100644 pole-sbv-content/plugins/polylang/include/links-default.php create mode 100644 pole-sbv-content/plugins/polylang/include/links-directory.php create mode 100644 pole-sbv-content/plugins/polylang/include/links-domain.php create mode 100644 pole-sbv-content/plugins/polylang/include/links-model.php create mode 100644 pole-sbv-content/plugins/polylang/include/links-permalinks.php create mode 100644 pole-sbv-content/plugins/polylang/include/links-subdomain.php create mode 100644 pole-sbv-content/plugins/polylang/include/links.php create mode 100644 pole-sbv-content/plugins/polylang/include/mo.php create mode 100644 pole-sbv-content/plugins/polylang/include/model.php create mode 100644 pole-sbv-content/plugins/polylang/include/nav-menu.php create mode 100644 pole-sbv-content/plugins/polylang/include/olt-manager.php create mode 100644 pole-sbv-content/plugins/polylang/include/pointer.php create mode 100644 pole-sbv-content/plugins/polylang/include/query.php create mode 100644 pole-sbv-content/plugins/polylang/include/static-pages.php create mode 100644 pole-sbv-content/plugins/polylang/include/switcher.php create mode 100644 pole-sbv-content/plugins/polylang/include/translated-object.php create mode 100644 pole-sbv-content/plugins/polylang/include/translated-post.php create mode 100644 pole-sbv-content/plugins/polylang/include/translated-term.php create mode 100644 pole-sbv-content/plugins/polylang/include/walker-dropdown.php create mode 100644 pole-sbv-content/plugins/polylang/include/walker-list.php create mode 100644 pole-sbv-content/plugins/polylang/include/widget-calendar.php create mode 100644 pole-sbv-content/plugins/polylang/include/widget-languages.php create mode 100644 pole-sbv-content/plugins/polylang/install/install-base.php create mode 100644 pole-sbv-content/plugins/polylang/install/install.php create mode 100644 pole-sbv-content/plugins/polylang/install/plugin-updater.php create mode 100644 pole-sbv-content/plugins/polylang/install/upgrade.php create mode 100644 pole-sbv-content/plugins/polylang/js/admin.js create mode 100644 pole-sbv-content/plugins/polylang/js/admin.min.js create mode 100644 pole-sbv-content/plugins/polylang/js/media.js create mode 100644 pole-sbv-content/plugins/polylang/js/media.min.js create mode 100644 pole-sbv-content/plugins/polylang/js/nav-menu.js create mode 100644 pole-sbv-content/plugins/polylang/js/nav-menu.min.js create mode 100644 pole-sbv-content/plugins/polylang/js/post.js create mode 100644 pole-sbv-content/plugins/polylang/js/post.min.js create mode 100644 pole-sbv-content/plugins/polylang/js/term.js create mode 100644 pole-sbv-content/plugins/polylang/js/term.min.js create mode 100644 pole-sbv-content/plugins/polylang/js/user.js create mode 100644 pole-sbv-content/plugins/polylang/js/user.min.js create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-af.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-af.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-ar.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-ar.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-ary.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-ary.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-bel.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-bel.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-bg_BG.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-bg_BG.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-cs_CZ.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-cs_CZ.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-et.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-et.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-he_IL.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-he_IL.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-hu_HU.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-hu_HU.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-id_ID.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-id_ID.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-ka_GE.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-ka_GE.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-lt_LT.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-lt_LT.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-lv.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-lv.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-my_MM.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-my_MM.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-nb_NO.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-nb_NO.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-pl_PL.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-pl_PL.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-ru_RU.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-ru_RU.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-sr_RS.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-sr_RS.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-tr_TR.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-tr_TR.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-uk.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-uk.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-vec.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-vec.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-zh_CN.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-zh_CN.po create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-zh_TW.mo create mode 100644 pole-sbv-content/plugins/polylang/languages/polylang-zh_TW.po create mode 100644 pole-sbv-content/plugins/polylang/lingotek/image01.gif create mode 100644 pole-sbv-content/plugins/polylang/lingotek/image02.png create mode 100644 pole-sbv-content/plugins/polylang/lingotek/image03.png create mode 100644 pole-sbv-content/plugins/polylang/lingotek/image04.png create mode 100644 pole-sbv-content/plugins/polylang/lingotek/lingotek.php create mode 100644 pole-sbv-content/plugins/polylang/modules/plugins/plugins-compat.php create mode 100644 pole-sbv-content/plugins/polylang/modules/plugins/wp-import.php create mode 100644 pole-sbv-content/plugins/polylang/modules/share-slug/settings-share-slug.php create mode 100644 pole-sbv-content/plugins/polylang/modules/sync/admin-sync.php create mode 100644 pole-sbv-content/plugins/polylang/modules/sync/settings-sync.php create mode 100644 pole-sbv-content/plugins/polylang/modules/translate-slugs/settings-translate-slugs.php create mode 100644 pole-sbv-content/plugins/polylang/modules/wpml/settings-wpml.php create mode 100644 pole-sbv-content/plugins/polylang/modules/wpml/wpml-api.php create mode 100644 pole-sbv-content/plugins/polylang/modules/wpml/wpml-compat.php create mode 100644 pole-sbv-content/plugins/polylang/modules/wpml/wpml-config.php create mode 100644 pole-sbv-content/plugins/polylang/modules/wpml/wpml-legacy-api.php create mode 100644 pole-sbv-content/plugins/polylang/polylang.php create mode 100644 pole-sbv-content/plugins/polylang/readme.txt create mode 100644 pole-sbv-content/plugins/polylang/settings/flags.php create mode 100644 pole-sbv-content/plugins/polylang/settings/languages.php create mode 100644 pole-sbv-content/plugins/polylang/settings/settings-browser.php create mode 100644 pole-sbv-content/plugins/polylang/settings/settings-cpt.php create mode 100644 pole-sbv-content/plugins/polylang/settings/settings-licenses.php create mode 100644 pole-sbv-content/plugins/polylang/settings/settings-media.php create mode 100644 pole-sbv-content/plugins/polylang/settings/settings-module.php create mode 100644 pole-sbv-content/plugins/polylang/settings/settings-tools.php create mode 100644 pole-sbv-content/plugins/polylang/settings/settings-url.php create mode 100644 pole-sbv-content/plugins/polylang/settings/settings.php create mode 100644 pole-sbv-content/plugins/polylang/settings/table-languages.php create mode 100644 pole-sbv-content/plugins/polylang/settings/table-settings.php create mode 100644 pole-sbv-content/plugins/polylang/settings/table-string.php create mode 100644 pole-sbv-content/plugins/polylang/settings/view-about.php create mode 100644 pole-sbv-content/plugins/polylang/settings/view-languages.php create mode 100644 pole-sbv-content/plugins/polylang/settings/view-tab-lang.php create mode 100644 pole-sbv-content/plugins/polylang/settings/view-tab-settings.php create mode 100644 pole-sbv-content/plugins/polylang/settings/view-tab-strings.php create mode 100644 pole-sbv-content/plugins/polylang/uninstall.php create mode 100644 pole-sbv-content/themes/pole-sbv/actualites_en_template.php create mode 100644 pole-sbv-content/themes/pole-sbv/contact_en_template.php create mode 100644 pole-sbv-content/themes/pole-sbv/earth_en_template.php create mode 100644 pole-sbv-content/themes/pole-sbv/homepage_en_template.php create mode 100644 pole-sbv-content/themes/pole-sbv/images/anim-slide01-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/images/anim-slide01-mobile-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/images/anim-slide02-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/images/anim-slide02-mobile-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/images/anim-slide03-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/images/anim-slide03-mobile-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/images/anim-slide04-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/images/anim-slide05-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/images/coeur01-en.jpg create mode 100644 pole-sbv-content/themes/pole-sbv/images/coeur02-en.jpg create mode 100644 pole-sbv-content/themes/pole-sbv/images/icon-1080-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/images/innovation-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/images/performance-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/images/respect-en.jpg create mode 100644 pole-sbv-content/themes/pole-sbv/images/responsabilite-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/images/schemadesktop2B-en.jpg create mode 100644 pole-sbv-content/themes/pole-sbv/images/schemadesktop2a-en.jpg create mode 100644 pole-sbv-content/themes/pole-sbv/images/schemamobile2B-en.jpg create mode 100644 pole-sbv-content/themes/pole-sbv/images/schemamobile2a-en.jpg create mode 100644 pole-sbv-content/themes/pole-sbv/images/simplicite-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/images/svg-scheme-en.svg create mode 100644 pole-sbv-content/themes/pole-sbv/images/svg-scheme-mobile-en.svg create mode 100644 pole-sbv-content/themes/pole-sbv/images/travail-en.png create mode 100644 pole-sbv-content/themes/pole-sbv/marques_en_template.php create mode 100644 pole-sbv-content/themes/pole-sbv/men_en_template.php create mode 100644 pole-sbv-content/themes/pole-sbv/savoirfaire_en_template.php create mode 100644 pole-sbv-content/themes/pole-sbv/solutions_en_template.php create mode 100644 pole-sbv-content/themes/pole-sbv/who_en_template.php delete mode 100755 redis.php diff --git a/pole-sbv-content/plugins/polylang/admin/admin-base.php b/pole-sbv-content/plugins/polylang/admin/admin-base.php new file mode 100644 index 00000000..0f2f8cef --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/admin-base.php @@ -0,0 +1,370 @@ +model->get_languages_list() ) { + return; + } + + $this->links = new PLL_Admin_Links( $this ); // FIXME needed here ? + $this->static_pages = new PLL_Admin_Static_Pages( $this ); // FIXME needed here ? + $this->filters_links = new PLL_Filters_Links( $this ); // FIXME needed here ? + + // Filter admin language for users + // We must not call user info before WordPress defines user roles in wp-settings.php + add_filter( 'setup_theme', array( $this, 'init_user' ) ); + add_filter( 'request', array( $this, 'request' ) ); + + // Adds the languages in admin bar + add_action( 'admin_bar_menu', array( $this, 'admin_bar_menu' ), 100 ); // 100 determines the position + } + + /** + * Adds the link to the languages panel in the WordPress admin menu + * + * @since 0.1 + */ + public function add_menus() { + // Prepare the list of tabs + $tabs = array( 'lang' => __( 'Languages','polylang' ) ); + + // Only if at least one language has been created + if ( $this->model->get_languages_list() ) { + $tabs['strings'] = __( 'Strings translations', 'polylang' ); + } + + $tabs['settings'] = __( 'Settings', 'polylang' ); + + /** + * Filter the list of tabs in Polylang settings + * + * @since 1.5.1 + * + * @param array $tabs list of tab names + */ + $tabs = apply_filters( 'pll_settings_tabs', $tabs ); + + foreach ( $tabs as $tab => $title ) { + $page = 'lang' === $tab ? 'mlang' : "mlang_$tab"; + if ( empty( $parent ) ) { + $parent = $page; + add_menu_page( $title, __( 'Languages','polylang' ), 'manage_options', $page, null , 'dashicons-translation' ); + } + + add_submenu_page( $parent, $title, $title, 'manage_options', $page , array( $this, 'languages_page' ) ); + } + } + + /** + * Setup js scripts & css styles ( only on the relevant pages ) + * + * @since 0.6 + */ + public function admin_enqueue_scripts() { + $screen = get_current_screen(); + if ( empty( $screen ) ) { + return; + } + + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; + + // For each script: + // 0 => the pages on which to load the script + // 1 => the scripts it needs to work + // 2 => 1 if loaded even if languages have not been defined yet, 0 otherwise + // 3 => 1 if loaded in footer + // FIXME: check if I can load more scripts in footer + $scripts = array( + 'post' => array( array( 'post', 'media', 'async-upload', 'edit' ), array( 'jquery', 'wp-ajax-response', 'post', 'jquery-ui-autocomplete' ), 0, 1 ), + 'media' => array( array( 'upload' ), array( 'jquery' ), 0, 1 ), + 'term' => array( array( 'edit-tags', 'term' ), array( 'jquery', 'wp-ajax-response', 'jquery-ui-autocomplete' ), 0, 1 ), + 'user' => array( array( 'profile', 'user-edit' ), array( 'jquery' ), 0, 0 ), + ); + + foreach ( $scripts as $script => $v ) { + if ( in_array( $screen->base, $v[0] ) && ( $v[2] || $this->model->get_languages_list() ) ) { + wp_enqueue_script( 'pll_' . $script, plugins_url( '/js/' . $script . $suffix . '.js', POLYLANG_FILE ), $v[1], POLYLANG_VERSION, $v[3] ); + } + } + + wp_enqueue_style( 'polylang_admin', plugins_url( '/css/admin' . $suffix . '.css', POLYLANG_FILE ), array(), POLYLANG_VERSION ); + } + + /** + * Sets pll_ajax_backend on all backend ajax request + * The final goal is to detect if an ajax request is made on admin or frontend + * + * Takes care to various situations: + * when the ajax request has no options.data thanks to ScreenfeedFr + * see: https://wordpress.org/support/topic/ajaxprefilter-may-not-work-as-expected + * when options.data is a json string + * see: https://wordpress.org/support/topic/polylang-breaking-third-party-ajax-requests-on-admin-panels + * when options.data is an empty string (GET request with the method 'load') + * see: https://wordpress.org/support/topic/invalid-url-during-wordpress-new-dashboard-widget-operation + * + * @since 1.4 + */ + public function admin_print_footer_scripts() { + global $post_ID, $tag_ID; + + $params = array( 'pll_ajax_backend' => 1 ); + if ( ! empty( $post_ID ) ) { + $params = array_merge( $params, array( 'pll_post_id' => (int) $post_ID ) ); + } + + if ( ! empty( $tag_ID ) ) { + $params = array_merge( $params, array( 'pll_term_id' => (int) $tag_ID ) ); + } + + $str = http_build_query( $params ); + $arr = json_encode( $params ); +?> + +curlang = $this->filter_lang; + + // POST + if ( isset( $_POST['post_lang_choice'] ) && $lang = $this->model->get_language( $_POST['post_lang_choice'] ) ) { + $this->curlang = $lang; + } elseif ( isset( $_POST['term_lang_choice'] ) && $lang = $this->model->get_language( $_POST['term_lang_choice'] ) ) { + $this->curlang = $lang; + } elseif ( isset( $_POST['inline_lang_choice'] ) && $lang = $this->model->get_language( $_POST['inline_lang_choice'] ) ) { + $this->curlang = $lang; + } + + // Edit Post + if ( isset( $_REQUEST['pll_post_id'] ) && $lang = $this->model->post->get_language( (int) $_REQUEST['pll_post_id'] ) ) { + $this->curlang = $lang; + } elseif ( 'post.php' === $GLOBALS['pagenow'] && isset( $_GET['post'] ) && is_numeric( $_GET['post'] ) && $lang = $this->model->post->get_language( (int) $_GET['post'] ) ) { + $this->curlang = $lang; + } elseif ( 'post-new.php' === $GLOBALS['pagenow'] && ( empty( $_GET['post_type'] ) || $this->model->is_translated_post_type( $_GET['post_type'] ) ) ) { + $this->curlang = empty( $_GET['new_lang'] ) ? $this->pref_lang : $this->model->get_language( $_GET['new_lang'] ); + } + + // Edit Term + // FIXME 'edit-tags.php' for backward compatibility with WP < 4.5 + elseif ( in_array( $GLOBALS['pagenow'], array( 'edit-tags.php', 'term.php' ) ) && isset( $_GET['tag_ID'] ) && $lang = $this->model->term->get_language( (int) $_GET['tag_ID'] ) ) { + $this->curlang = $lang; + } elseif ( isset( $_REQUEST['pll_term_id'] ) && $lang = $this->model->term->get_language( (int) $_REQUEST['pll_term_id'] ) ) { + $this->curlang = $lang; + } elseif ( 'edit-tags.php' === $GLOBALS['pagenow'] && isset( $_GET['taxonomy'] ) && $this->model->is_translated_taxonomy( $_GET['taxonomy'] ) ) { + if ( ! empty( $_GET['new_lang'] ) ) { + $this->curlang = $this->model->get_language( $_GET['new_lang'] ); + } elseif ( empty( $this->curlang ) ) { + $this->curlang = $this->pref_lang; + } + } + + // Ajax + if ( wp_doing_ajax() && ! empty( $_REQUEST['lang'] ) ) { + $this->curlang = $this->model->get_language( $_REQUEST['lang'] ); + } + } + + /** + * Defines the backend language and the admin language filter based on user preferences + * + * @since 1.2.3 + */ + public function init_user() { + // Backend locale + // FIXME: Backward compatibility with WP < 4.7 + if ( version_compare( $GLOBALS['wp_version'], '4.7alpha', '<' ) ) { + add_filter( 'locale', array( $this, 'get_locale' ) ); + } + + // Language for admin language filter: may be empty + // $_GET['lang'] is numeric when editing a language, not when selecting a new language in the filter + if ( ! wp_doing_ajax() && ! empty( $_GET['lang'] ) && ! is_numeric( $_GET['lang'] ) && current_user_can( 'edit_user', $user_id = get_current_user_id() ) ) { + update_user_meta( $user_id, 'pll_filter_content', ( $lang = $this->model->get_language( $_GET['lang'] ) ) ? $lang->slug : '' ); + } + + $this->filter_lang = $this->model->get_language( get_user_meta( get_current_user_id(), 'pll_filter_content', true ) ); + + // Set preferred language for use when saving posts and terms: must not be empty + $this->pref_lang = empty( $this->filter_lang ) ? $this->model->get_language( $this->options['default_lang'] ) : $this->filter_lang; + + /** + * Filter the preferred language on amin side + * The preferred language is used for example to determine the language of a new post + * + * @since 1.2.3 + * + * @param object $pref_lang preferred language + */ + $this->pref_lang = apply_filters( 'pll_admin_preferred_language', $this->pref_lang ); + + $this->set_current_language(); + + // Inform that the admin language has been set + // Only if the admin language is one of the Polylang defined language + // FIXME test get_user_locale for backward compatibility with WP 4.7 + if ( $curlang = $this->model->get_language( function_exists( 'get_user_locale' ) ? get_user_locale() : get_locale() ) ) { + // FIXME: Backward compatibility with WP < 4.7 + if ( version_compare( $GLOBALS['wp_version'], '4.7alpha', '<' ) ) { + $GLOBALS['text_direction'] = $curlang->is_rtl ? 'rtl' : 'ltr'; // force text direction according to language setting + } + + /** This action is documented in frontend/choose-lang.php */ + do_action( 'pll_language_defined', $curlang->slug, $curlang ); + } else { + /** This action is documented in include/class-polylang.php */ + do_action( 'pll_no_language_defined' ); // to load overriden textdomains + } + } + + /** + * Avoids parsing a tax query when all languages are requested + * Fixes https://wordpress.org/support/topic/notice-undefined-offset-0-in-wp-includesqueryphp-on-line-3877 introduced in WP 4.1 + * @see the suggestion of @boonebgorges, https://core.trac.wordpress.org/ticket/31246 + * + * @since 1.6.5 + * + * @param array $qvars + * @return array + */ + public function request( $qvars ) { + if ( isset( $qvars['lang'] ) && 'all' === $qvars['lang'] ) { + unset( $qvars['lang'] ); + } + + return $qvars; + } + + /** + * Get the locale based on user preference + * FIXME: Backward compatibility with WP < 4.7 + * + * @since 0.4 + * + * @param string $locale + * @return string modified locale + */ + public function get_locale( $locale ) { + return ( $loc = get_user_meta( get_current_user_id(), 'locale', 'true' ) ) ? $loc : $locale; + } + + /** + * Adds the languages list in admin bar for the admin languages filter + * + * @since 0.9 + * + * @param object $wp_admin_bar + */ + public function admin_bar_menu( $wp_admin_bar ) { + $url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + + $all_item = (object) array( + 'slug' => 'all', + 'name' => __( 'Show all languages', 'polylang' ), + 'flag' => '', + ); + + $selected = empty( $this->filter_lang ) ? $all_item : $this->filter_lang; + + $title = sprintf( + '%2$s%3$s', + 'all' === $selected->slug ? '' : sprintf( ' lang="%s"', esc_attr( $selected->get_locale( 'display' ) ) ), + __( 'Filters content by language', 'polylang' ), + esc_html( $selected->name ) + ); + + $wp_admin_bar->add_menu( array( + 'id' => 'languages', + 'title' => $selected->flag . $title, + 'href' => esc_url( add_query_arg( 'lang', $selected->slug, remove_query_arg( 'paged', $url ) ) ), + 'meta' => array( 'title' => __( 'Filters content by language', 'polylang' ) ), + ) ); + + foreach ( array_merge( array( $all_item ), $this->model->get_languages_list() ) as $lang ) { + if ( $selected->slug === $lang->slug ) { + continue; + } + + $wp_admin_bar->add_menu( array( + 'parent' => 'languages', + 'id' => $lang->slug, + 'title' => $lang->flag . esc_html( $lang->name ), + 'href' => esc_url( add_query_arg( 'lang', $lang->slug, remove_query_arg( 'paged', $url ) ) ), + 'meta' => 'all' === $lang->slug ? array() : array( 'lang' => esc_attr( $lang->get_locale( 'display' ) ) ), + ) ); + } + } +} diff --git a/pole-sbv-content/plugins/polylang/admin/admin-filters-columns.php b/pole-sbv-content/plugins/polylang/admin/admin-filters-columns.php new file mode 100644 index 00000000..391fab1b --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/admin-filters-columns.php @@ -0,0 +1,341 @@ +links = &$polylang->links; + $this->model = &$polylang->model; + $this->filter_lang = &$polylang->filter_lang; + + // add the language and translations columns in 'All Posts', 'All Pages' and 'Media library' panels + foreach ( $this->model->get_translated_post_types() as $type ) { + // use the latest filter late as some plugins purely overwrite what's done by others :( + // specific case for media + add_filter( 'manage_' . ( 'attachment' == $type ? 'upload' : 'edit-' . $type ) . '_columns', array( $this, 'add_post_column' ), 100 ); + add_action( 'manage_' . ( 'attachment' == $type ? 'media' : $type . '_posts' ) . '_custom_column', array( $this, 'post_column' ), 10, 2 ); + } + + // quick edit and bulk edit + add_filter( 'quick_edit_custom_box', array( $this, 'quick_edit_custom_box' ), 10, 2 ); + add_filter( 'bulk_edit_custom_box', array( $this, 'quick_edit_custom_box' ), 10, 2 ); + + // adds the language column in the 'Categories' and 'Post Tags' tables + foreach ( $this->model->get_translated_taxonomies() as $tax ) { + add_filter( 'manage_edit-' . $tax . '_columns', array( $this, 'add_term_column' ) ); + add_filter( 'manage_' . $tax . '_custom_column', array( $this, 'term_column' ), 10, 3 ); + } + + // ajax responses to update list table rows + add_action( 'wp_ajax_pll_update_post_rows', array( $this, 'ajax_update_post_rows' ) ); + add_action( 'wp_ajax_pll_update_term_rows', array( $this, 'ajax_update_term_rows' ) ); + } + + /** + * adds languages and translations columns in posts, pages, media, categories and tags tables + * + * @since 0.8.2 + * + * @param array $columns List of table columns + * @param string $before The column before which we want to add our languages + * @return array modified list of columns + */ + protected function add_column( $columns, $before ) { + if ( $n = array_search( $before, array_keys( $columns ) ) ) { + $end = array_slice( $columns, $n ); + $columns = array_slice( $columns, 0, $n ); + } + + foreach ( $this->model->get_languages_list() as $language ) { + // don't add the column for the filtered language + if ( empty( $this->filter_lang ) || $language->slug != $this->filter_lang->slug ) { + $columns[ 'language_' . $language->slug ] = $language->flag ? $language->flag . '' . esc_html( $language->name ) . '' : esc_html( $language->slug ); + } + } + + return isset( $end ) ? array_merge( $columns, $end ) : $columns; + } + + /** + * returns the first language column in the posts, pages and media library tables + * + * @since 0.9 + * + * @return string first language column name + */ + protected function get_first_language_column() { + foreach ( $this->model->get_languages_list() as $language ) { + if ( empty( $this->filter_lang ) || $language->slug != $this->filter_lang->slug ) { + $columns[] = 'language_' . $language->slug; + } + } + + return empty( $columns ) ? '' : reset( $columns ); + } + + /** + * adds the language and translations columns ( before the comments column ) in the posts, pages and media library tables + * + * @since 0.1 + * + * @param array $columns list of posts table columns + * @return array modified list of columns + */ + function add_post_column( $columns ) { + return $this->add_column( $columns, 'comments' ); + } + + /** + * fills the language and translations columns in the posts, pages and media library tables + * take care that when doing ajax inline edit, the post may not be updated in database yet + * + * @since 0.1 + * + * @param string $column Column name + * @param int $post_id + */ + public function post_column( $column, $post_id ) { + $inline = wp_doing_ajax() && isset( $_REQUEST['action'], $_POST['inline_lang_choice'] ) && 'inline-save' === $_REQUEST['action']; + $lang = $inline ? $this->model->get_language( $_POST['inline_lang_choice'] ) : $this->model->post->get_language( $post_id ); + + if ( false === strpos( $column, 'language_' ) || ! $lang ) { + return; + } + + $language = $this->model->get_language( substr( $column, 9 ) ); + + // hidden field containing the post language for quick edit + if ( $column == $this->get_first_language_column() ) { + printf( '', intval( $post_id ), esc_html( $lang->slug ) ); + } + + $post_type_object = get_post_type_object( get_post_type( $post_id ) ); + + // link to edit post ( or a translation ) + if ( $id = $this->model->post->get( $post_id, $language ) ) { + // get_edit_post_link returns nothing if the user cannot edit the post + // thanks to Solinx. See http://wordpress.org/support/topic/feature-request-incl-code-check-for-capabilities-in-admin-screens + if ( $link = get_edit_post_link( $id ) ) { + if ( $id === $post_id ) { + $class = 'pll_icon_tick'; + /* translators: accessibility text, %s is a native language name */ + $s = sprintf( __( 'Edit this item in %s', 'polylang' ), $language->name ); + } else { + $class = esc_attr( 'pll_icon_edit translation_' . $id ); + /* translators: accessibility text, %s is a native language name */ + $s = sprintf( __( 'Edit the translation in %s', 'polylang' ), $language->name ); + } + printf( + '%4$s', + esc_attr( $class ), esc_attr( get_post( $id )->post_title ), esc_url( $link ), esc_html( $s ) + ); + } elseif ( $id === $post_id ) { + printf( + '%s', + /* translators: accessibility text, %s is a native language name */ + esc_html( sprintf( __( 'This item is in %s', 'polylang' ), $language->name ) ) + ); + } + } + // link to add a new translation + else { + echo $this->links->new_post_translation_link( $post_id, $language ); + } + } + + /** + * quick edit & bulk edit + * + * @since 0.9 + * + * @param string $column column name + * @param string $type either 'edit-tags' for terms list table or post type for posts list table + * @return string unmodified $column + */ + public function quick_edit_custom_box( $column, $type ) { + if ( $column == $this->get_first_language_column() ) { + + $elements = $this->model->get_languages_list(); + if ( current_filter() == 'bulk_edit_custom_box' ) { + array_unshift( $elements, (object) array( 'slug' => -1, 'name' => __( '— No Change —' ) ) ); + } + + $dropdown = new PLL_Walker_Dropdown(); + // the hidden field 'old_lang' allows to pass the old language to ajax request + printf( + '
+
+ +
+
', + esc_html__( 'Language', 'polylang' ), + $dropdown->walk( $elements, array( 'name' => 'inline_lang_choice', 'id' => '' ) ) + ); + } + return $column; + } + + /** + * adds the language column ( before the posts column ) in the 'Categories' or 'Post Tags' table + * + * @since 0.1 + * + * @param array $columns list of terms table columns + * @return array modified list of columns + */ + public function add_term_column( $columns ) { + return $this->add_column( $columns, 'posts' ); + } + + /** + * fills the language column in the 'Categories' or 'Post Tags' table + * + * @since 0.1 + * + * @param string $out + * @param string $column Column name + * @param int $term_id + */ + public function term_column( $out, $column, $term_id ) { + $inline = wp_doing_ajax() && isset( $_REQUEST['action'], $_POST['inline_lang_choice'] ) && 'inline-save-tax' === $_REQUEST['action']; + if ( false === strpos( $column, 'language_' ) || ! ( $lang = $inline ? $this->model->get_language( $_POST['inline_lang_choice'] ) : $this->model->term->get_language( $term_id ) ) ) { + return $out; + } + + $post_type = isset( $GLOBALS['post_type'] ) ? $GLOBALS['post_type'] : $_REQUEST['post_type']; // 2nd case for quick edit + $taxonomy = isset( $GLOBALS['taxonomy'] ) ? $GLOBALS['taxonomy'] : $_REQUEST['taxonomy']; + + if ( ! post_type_exists( $post_type ) || ! taxonomy_exists( $taxonomy ) ) { + return $out; + } + + $term_id = (int) $term_id; + $language = $this->model->get_language( substr( $column, 9 ) ); + + if ( $column == $this->get_first_language_column() ) { + $out = sprintf( '', intval( $term_id ), esc_html( $lang->slug ) ); + + // identify the default categories to disable the language dropdown in js + if ( in_array( get_option( 'default_category' ), $this->model->term->get_translations( $term_id ) ) ) { + $out .= sprintf( '', intval( $term_id ) ); + } + } + + // link to edit term ( or a translation ) + if ( ( $id = $this->model->term->get( $term_id, $language ) ) && $term = get_term( $id, $taxonomy ) ) { + if ( $link = get_edit_term_link( $id, $taxonomy, $post_type ) ) { + if ( $id === $term_id ) { + $class = 'pll_icon_tick'; + /* translators: accessibility text, %s is a native language name */ + $s = sprintf( __( 'Edit this item in %s', 'polylang' ), $language->name ); + } else { + $class = esc_attr( 'pll_icon_edit translation_' . $id ); + /* translators: accessibility text, %s is a native language name */ + $s = sprintf( __( 'Edit the translation in %s', 'polylang' ), $language->name ); + } + $out .= sprintf( + '%4$s', + $class, esc_attr( $term->name ), esc_url( $link ), esc_html( $s ) + ); + } elseif ( $id === $term_id ) { + $out .= printf( + '%s', + /* translators: accessibility text, %s is a native language name */ + esc_html( sprintf( __( 'This item is in %s', 'polylang' ), $language->name ) ) + ); + } + } + + // link to add a new translation + else { + $out .= $this->links->new_term_translation_link( $term_id, $taxonomy, $post_type, $language ); + } + + return $out; + } + + /** + * update rows of translated posts when the language is modified in quick edit + * + * @since 1.7 + */ + public function ajax_update_post_rows() { + global $wp_list_table; + + if ( ! post_type_exists( $post_type = $_POST['post_type'] ) || ! $this->model->is_translated_post_type( $post_type ) ) { + die( 0 ); + } + + check_ajax_referer( 'inlineeditnonce', '_pll_nonce' ); + + $x = new WP_Ajax_Response(); + $wp_list_table = _get_list_table( 'WP_Posts_List_Table', array( 'screen' => $_POST['screen'] ) ); + + $translations = empty( $_POST['translations'] ) ? array() : explode( ',', $_POST['translations'] ); // collect old translations + $translations = array_merge( $translations, array( $_POST['post_id'] ) ); // add current post + $translations = array_map( 'intval', $translations ); + + foreach ( $translations as $post_id ) { + $level = is_post_type_hierarchical( $post_type ) ? count( get_ancestors( $post_id, $post_type ) ) : 0; + if ( $post = get_post( $post_id ) ) { + ob_start(); + $wp_list_table->single_row( $post, $level ); + $data = ob_get_clean(); + $x->add( array( 'what' => 'row', 'data' => $data, 'supplemental' => array( 'post_id' => $post_id ) ) ); + } + } + + $x->send(); + } + + /** + * update rows of translated terms when adding / deleting a translation or when the language is modified in quick edit + * + * @since 1.7 + */ + public function ajax_update_term_rows() { + global $wp_list_table; + + if ( ! taxonomy_exists( $taxonomy = $_POST['taxonomy'] ) || ! $this->model->is_translated_taxonomy( $taxonomy ) ) { + die( 0 ); + } + + check_ajax_referer( 'pll_language', '_pll_nonce' ); + + $x = new WP_Ajax_Response(); + $wp_list_table = _get_list_table( 'WP_Terms_List_Table', array( 'screen' => $_POST['screen'] ) ); + + $translations = empty( $_POST['translations'] ) ? array() : explode( ',', $_POST['translations'] ); // collect old translations + $translations = array_merge( $translations, $this->model->term->get_translations( (int) $_POST['term_id'] ) ); // add current translations + $translations = array_unique( $translations ); // remove doublons + $translations = array_map( 'intval', $translations ); + + foreach ( $translations as $term_id ) { + $level = is_taxonomy_hierarchical( $taxonomy ) ? count( get_ancestors( $term_id, $taxonomy ) ) : 0; + if ( $tag = get_term( $term_id, $taxonomy ) ) { + ob_start(); + $wp_list_table->single_row( $tag, $level ); + $data = ob_get_clean(); + $x->add( array( 'what' => 'row', 'data' => $data, 'supplemental' => array( 'term_id' => $term_id ) ) ); + } + } + + $x->send(); + } +} diff --git a/pole-sbv-content/plugins/polylang/admin/admin-filters-media.php b/pole-sbv-content/plugins/polylang/admin/admin-filters-media.php new file mode 100644 index 00000000..b76a81c4 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/admin-filters-media.php @@ -0,0 +1,195 @@ +ID; + $lang = $this->model->post->get_language( $post_id ); + + $dropdown = new PLL_Walker_Dropdown(); + $fields['language'] = array( + 'label' => __( 'Language', 'polylang' ), + 'input' => 'html', + 'html' => $dropdown->walk( $this->model->get_languages_list(), array( + 'name' => sprintf( 'attachments[%d][language]', $post_id ), + 'class' => 'media_lang_choice', + 'selected' => $lang ? $lang->slug : '', + ) ), + ); + + return $fields; + } + + /** + * Creates a media translation + * + * @since 1.8 + * + * @param int $post_id + * @param string|object $lang + * @return int id of the translated media + */ + public function create_media_translation( $post_id, $lang ) { + $post = get_post( $post_id ); + + if ( empty( $post ) ) { + return $post; + } + + $lang = $this->model->get_language( $lang ); // Make sure we get a valid language slug + + // Create a new attachment ( translate attachment parent if exists ) + $post->ID = null; // Will force the creation + $post->post_parent = ( $post->post_parent && $tr_parent = $this->model->post->get_translation( $post->post_parent, $lang->slug ) ) ? $tr_parent : 0; + $post->tax_input = array( 'language' => array( $lang->slug ) ); // Assigns the language + $tr_id = wp_insert_attachment( $post ); + + // Copy metadata, attached file and alternative text + foreach ( array( '_wp_attachment_metadata', '_wp_attached_file', '_wp_attachment_image_alt' ) as $key ) { + if ( $meta = get_post_meta( $post_id, $key , true ) ) { + add_post_meta( $tr_id, $key, $meta ); + } + } + + $this->model->post->set_language( $tr_id, $lang ); + + $translations = $this->model->post->get_translations( $post_id ); + if ( ! $translations && $src_lang = $this->model->post->get_language( $post_id ) ) { + $translations[ $src_lang->slug ] = $post_id; + } + + $translations[ $lang->slug ] = $tr_id; + $this->model->post->save_translations( $tr_id, $translations ); + + /** + * Fires after a media translation is created + * + * @since 1.6.4 + * + * @param int $post_id post id of the source media + * @param int $tr_id post id of the new media translation + * @param string $slug language code of the new translation + */ + do_action( 'pll_translate_media', $post_id, $tr_id, $lang->slug ); + return $tr_id; + } + + /** + * Creates a media translation + * + * @since 0.9 + */ + public function translate_media() { + // Security check + check_admin_referer( 'translate_media' ); + $post_id = (int) $_GET['from_media']; + + // Bails if the translations already exists + // See https://wordpress.org/support/topic/edit-translation-in-media-attachments?#post-7322303 + // Or if the source media does not exist + if ( $this->model->post->get_translation( $post_id, $_GET['new_lang'] ) || ! get_post( $post_id ) ) { + wp_safe_redirect( wp_get_referer() ); + exit; + } + + $tr_id = $this->create_media_translation( $post_id, $_GET['new_lang'] ); + wp_safe_redirect( admin_url( sprintf( 'post.php?post=%d&action=edit', $tr_id ) ) ); // WP 3.5+ + exit; + } + + /** + * Called when a media is saved + * Saves language and translations + * + * @since 0.9 + * + * @param array $post + * @param array $attachment + * @return array unmodified $post + */ + public function save_media( $post, $attachment ) { + // Language is filled in attachment by the function applying the filter 'attachment_fields_to_save' + // All security checks have been done by functions applying this filter + if ( ! empty( $attachment['language'] ) ) { + $this->model->post->set_language( $post['ID'], $attachment['language'] ); + } + + if ( isset( $_POST['media_tr_lang'] ) ) { + $this->save_translations( $post['ID'], $_POST['media_tr_lang'] ); + } + + return $post; + } + + /** + * Prevents WP deleting files when there are still media using them + * Thanks to Bruno "Aesqe" Babic and its plugin file gallery in which I took all the ideas for this function + * + * @since 0.9 + * + * @param string $file + * @return string unmodified $file + */ + public function wp_delete_file( $file ) { + global $wpdb; + + $uploadpath = wp_upload_dir(); + + $ids = $wpdb->get_col( $wpdb->prepare( " + SELECT post_id FROM $wpdb->postmeta + WHERE meta_key = '_wp_attached_file' AND meta_value = '%s'", + substr_replace( $file, '', 0, strlen( trailingslashit( $uploadpath['basedir'] ) ) ) + ) ); + + if ( ! empty( $ids ) ) { + // Regenerate intermediate sizes if it's an image ( since we could not prevent WP deleting them before ) + wp_update_attachment_metadata( $ids[0], wp_generate_attachment_metadata( $ids[0], $file ) ); + return ''; // Prevent deleting the main file + } + + return $file; + } +} diff --git a/pole-sbv-content/plugins/polylang/admin/admin-filters-post-base.php b/pole-sbv-content/plugins/polylang/admin/admin-filters-post-base.php new file mode 100644 index 00000000..b6ed5009 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/admin-filters-post-base.php @@ -0,0 +1,69 @@ +links = &$polylang->links; + $this->model = &$polylang->model; + $this->pref_lang = &$polylang->pref_lang; + } + + /** + * allows to set a language by default for posts if it has no language yet + * + * @since 1.5 + * + * @param int $post_id + */ + public function set_default_language( $post_id ) { + if ( ! $this->model->post->get_language( $post_id ) ) { + if ( isset( $_GET['new_lang'] ) && $lang = $this->model->get_language( $_GET['new_lang'] ) ) { + $this->model->post->set_language( $post_id, $lang ); + } + + elseif ( ( $parent_id = wp_get_post_parent_id( $post_id ) ) && $parent_lang = $this->model->post->get_language( $parent_id ) ) { + $this->model->post->set_language( $post_id, $parent_lang ); + } + + else { + $this->model->post->set_language( $post_id, $this->pref_lang ); + } + } + } + + /** + * save translations from language metabox + * + * @since 1.5 + * + * @param int $post_id + * @param array $arr + * @return array + */ + protected function save_translations( $post_id, $arr ) { + // security check + // as 'wp_insert_post' can be called from outside WP admin + check_admin_referer( 'pll_language', '_pll_nonce' ); + + // save translations after checking the translated post is in the right language + foreach ( $arr as $lang => $tr_id ) { + $translations[ $lang ] = ( $tr_id && $this->model->post->get_language( (int) $tr_id )->slug == $lang ) ? (int) $tr_id : 0; + } + + $this->model->post->save_translations( $post_id, $translations ); + return $translations; + } +} diff --git a/pole-sbv-content/plugins/polylang/admin/admin-filters-post.php b/pole-sbv-content/plugins/polylang/admin/admin-filters-post.php new file mode 100644 index 00000000..166dcfe6 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/admin-filters-post.php @@ -0,0 +1,546 @@ +options = &$polylang->options; + $this->curlang = &$polylang->curlang; + + add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); + + // Filters posts, pages and media by language + add_action( 'parse_query', array( $this, 'parse_query' ) ); + + // Adds the Languages box in the 'Edit Post' and 'Edit Page' panels + add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ), 10, 2 ); + + // Ajax response for changing the language in the post metabox + add_action( 'wp_ajax_post_lang_choice', array( $this, 'post_lang_choice' ) ); + add_action( 'wp_ajax_pll_posts_not_translated', array( $this, 'ajax_posts_not_translated' ) ); + + // Adds actions and filters related to languages when creating, saving or deleting posts and pages + add_action( 'save_post', array( $this, 'save_post' ), 21, 3 ); // Priority 21 to come after advanced custom fields ( 20 ) and before the event calendar which breaks everything after 25 + add_filter( 'wp_insert_post_parent', array( $this, 'wp_insert_post_parent' ), 10, 4 ); + add_action( 'before_delete_post', array( $this, 'delete_post' ) ); + if ( $this->options['media_support'] ) { + add_action( 'delete_attachment', array( $this, 'delete_post' ) ); // Action shared with media + } + + // Filters the pages by language in the parent dropdown list in the page attributes metabox + add_filter( 'page_attributes_dropdown_pages_args', array( $this, 'page_attributes_dropdown_pages_args' ), 10, 2 ); + + // Sets the language in Tiny MCE + add_filter( 'tiny_mce_before_init', array( $this, 'tiny_mce_before_init' ) ); + } + + /** + * Outputs a javascript list of terms ordered by language and hierarchical taxonomies + * to filter the category checklist per post language in quick edit + * Outputs a javascript list of pages ordered by language + * to filter the parent dropdown per post language in quick edit + * + * @since 1.7 + */ + public function admin_enqueue_scripts() { + $screen = get_current_screen(); + + // Hierarchical taxonomies + if ( 'edit' == $screen->base && $taxonomies = get_object_taxonomies( $screen->post_type, 'object' ) ) { + // Get translated hierarchical taxonomies + foreach ( $taxonomies as $taxonomy ) { + if ( $taxonomy->hierarchical && $taxonomy->show_in_quick_edit && $this->model->is_translated_taxonomy( $taxonomy->name ) ) { + $hierarchical_taxonomies[] = $taxonomy->name; + } + } + + if ( ! empty( $hierarchical_taxonomies ) ) { + $terms = get_terms( $hierarchical_taxonomies, array( 'get' => 'all' ) ); + + foreach ( $terms as $term ) { + if ( $lang = $this->model->term->get_language( $term->term_id ) ) { + $term_languages[ $lang->slug ][ $term->taxonomy ][] = $term->term_id; + } + } + + // Send all these data to javascript + if ( ! empty( $term_languages ) ) { + wp_localize_script( 'pll_post', 'pll_term_languages', $term_languages ); + } + } + } + + // Hierarchical post types + if ( 'edit' == $screen->base && is_post_type_hierarchical( $screen->post_type ) ) { + $pages = get_pages(); + + foreach ( $pages as $page ) { + if ( $lang = $this->model->post->get_language( $page->ID ) ) { + $page_languages[ $lang->slug ][] = $page->ID; + } + } + + // Send all these data to javascript + if ( ! empty( $page_languages ) ) { + wp_localize_script( 'pll_post', 'pll_page_languages', $page_languages ); + } + } + } + + /** + * Filters posts, pages and media by language + * + * @since 0.1 + * + * @param object $query a WP_Query object + */ + public function parse_query( $query ) { + $pll_query = new PLL_Query( $query, $this->model ); + $pll_query->filter_query( $this->curlang ); + } + + /** + * Adds the Language box in the 'Edit Post' and 'Edit Page' panels ( as well as in custom post types panels ) + * + * @since 0.1 + * + * @param string $post_type Current post type + * @param object $post Current post + */ + public function add_meta_boxes( $post_type, $post ) { + if ( $this->model->is_translated_post_type( $post_type ) ) { + add_meta_box( 'ml_box', __( 'Languages','polylang' ), array( $this, 'post_language' ), $post_type, 'side', 'high' ); + } + } + + /** + * Displays the Languages metabox in the 'Edit Post' and 'Edit Page' panels + * + * @since 0.1 + */ + public function post_language() { + global $post_ID; + $post_id = $post_ID; + $post_type = get_post_type( $post_ID ); + + $lang = ( $lg = $this->model->post->get_language( $post_ID ) ) ? $lg : + ( isset( $_GET['new_lang'] ) ? $this->model->get_language( $_GET['new_lang'] ) : + $this->pref_lang ); + + $dropdown = new PLL_Walker_Dropdown(); + + wp_nonce_field( 'pll_language', '_pll_nonce' ); + + // NOTE: the class "tags-input" allows to include the field in the autosave $_POST ( see autosave.js ) + printf( ' +

%1$s

+ +
%4$s
', + esc_html__( 'Language', 'polylang' ), + $id = ( 'attachment' === $post_type ) ? sprintf( 'attachments[%d][language]', $post_ID ) : 'post_lang_choice', + 'attachment' === $post_type ? 'media' : 'post', + $dropdown->walk( $this->model->get_languages_list(), array( + 'name' => $id, + 'class' => 'post_lang_choice tags-input', + 'selected' => $lang ? $lang->slug : '', + 'flag' => true, + ) ) + ); + + /** + * Fires before displaying the list of translations in the Languages metabox for posts + * + * @since 1.8 + */ + do_action( 'pll_before_post_translations', $post_type ); + + echo '
'; + if ( $lang ) { + include PLL_ADMIN_INC . '/view-translations-' . ( 'attachment' == $post_type ? 'media' : 'post' ) . '.php'; + } + echo '
' . "\n"; + } + + /** + * Ajax response for changing the language in the post metabox + * + * @since 0.2 + */ + public function post_lang_choice() { + check_ajax_referer( 'pll_language', '_pll_nonce' ); + + global $post_ID; // Obliged to use the global variable for wp_popular_terms_checklist + $post_id = $post_ID = (int) $_POST['post_id']; + $lang = $this->model->get_language( $_POST['lang'] ); + + $post_type = $_POST['post_type']; + $post_type_object = get_post_type_object( $post_type ); + if ( ! current_user_can( $post_type_object->cap->edit_post, $post_ID ) ) { + wp_die( -1 ); + } + + $this->model->post->set_language( $post_ID, $lang ); // Save language, useful to set the language when uploading media from post + + ob_start(); + if ( $lang ) { + include PLL_ADMIN_INC . '/view-translations-' . ( 'attachment' == $post_type ? 'media' : 'post' ) . '.php'; + } + $x = new WP_Ajax_Response( array( 'what' => 'translations', 'data' => ob_get_contents() ) ); + ob_end_clean(); + + // Categories + if ( isset( $_POST['taxonomies'] ) ) { + // Not set for pages + foreach ( $_POST['taxonomies'] as $taxname ) { + $taxonomy = get_taxonomy( $taxname ); + + ob_start(); + $popular_ids = wp_popular_terms_checklist( $taxonomy->name ); + $supplemental['populars'] = ob_get_contents(); + ob_end_clean(); + + ob_start(); + // Use $post_ID to remember ckecked terms in case we come back to the original language + wp_terms_checklist( $post_ID, array( 'taxonomy' => $taxonomy->name, 'popular_cats' => $popular_ids ) ); + $supplemental['all'] = ob_get_contents(); + ob_end_clean(); + + $supplemental['dropdown'] = wp_dropdown_categories( array( + 'taxonomy' => $taxonomy->name, + 'hide_empty' => 0, + 'name' => 'new' . $taxonomy->name . '_parent', + 'orderby' => 'name', + 'hierarchical' => 1, + 'show_option_none' => '— ' . $taxonomy->labels->parent_item . ' —', + 'echo' => 0, + ) ); + + $x->Add( array( 'what' => 'taxonomy', 'data' => $taxonomy->name, 'supplemental' => $supplemental ) ); + } + } + + // Parent dropdown list ( only for hierarchical post types ) + if ( in_array( $post_type, get_post_types( array( 'hierarchical' => true ) ) ) ) { + $post = get_post( $post_ID ); + + // Args and filter from 'page_attributes_meta_box' in wp-admin/includes/meta-boxes.php of WP 4.2.1 + $dropdown_args = array( + 'post_type' => $post->post_type, + 'exclude_tree' => $post->ID, + 'selected' => $post->post_parent, + 'name' => 'parent_id', + 'show_option_none' => __( '(no parent)' ), + 'sort_column' => 'menu_order, post_title', + 'echo' => 0, + ); + + /** This filter is documented in wp-admin/includes/meta-boxes.php */ + $dropdown_args = apply_filters( 'page_attributes_dropdown_pages_args', $dropdown_args, $post ); // Since WP 3.3 + + $x->Add( array( 'what' => 'pages', 'data' => wp_dropdown_pages( $dropdown_args ) ) ); + } + + // Flag + $x->Add( array( 'what' => 'flag', 'data' => empty( $lang->flag ) ? esc_html( $lang->slug ) : $lang->flag ) ); + + // Sample permalink + $x->Add( array( 'what' => 'permalink', 'data' => get_sample_permalink_html( $post_ID ) ) ); + + $x->send(); + } + + /** + * Ajax response for input in translation autocomplete input box + * + * @since 1.5 + */ + public function ajax_posts_not_translated() { + check_ajax_referer( 'pll_language', '_pll_nonce' ); + + if ( ! post_type_exists( $_GET['post_type'] ) ) { + die( 0 ); + } + + $post_language = $this->model->get_language( $_GET['post_language'] ); + $translation_language = $this->model->get_language( $_GET['translation_language'] ); + + // Don't order by title: see https://wordpress.org/support/topic/find-translated-post-when-10-is-not-enough + $args = array( + 's' => wp_unslash( $_GET['term'] ), + 'suppress_filters' => 0, // To make the post_fields filter work + 'lang' => 0, // Avoid admin language filter + 'numberposts' => 20, // Limit to 20 posts + 'post_status' => 'any', + 'post_type' => $_GET['post_type'], + 'tax_query' => array( + array( + 'taxonomy' => 'language', + 'field' => 'term_taxonomy_id', // WP 3.5+ + 'terms' => $translation_language->term_taxonomy_id, + ), + ), + ); + + /** + * Filter the query args when auto suggesting untranslated posts in the Languages metabox + * This should help plugins to fix some edge cases + * + * @see https://wordpress.org/support/topic/find-translated-post-when-10-is-not-enough + * + * @since 1.7 + * + * @param array $args WP_Query arguments + */ + $args = apply_filters( 'pll_ajax_posts_not_translated_args', $args ); + $posts = get_posts( $args ); + + $return = array(); + + foreach ( $posts as $key => $post ) { + if ( ! $this->model->post->get_translation( $post->ID, $post_language ) ) { + $return[] = array( + 'id' => $post->ID, + 'value' => $post->post_title, + 'link' => $this->links->edit_post_translation_link( $post->ID ), + ); + } + } + + // Add current translation in list + if ( $post_id = $this->model->post->get_translation( (int) $_GET['pll_post_id'], $translation_language ) ) { + $post = get_post( $post_id ); + array_unshift( $return, array( + 'id' => $post_id, + 'value' => $post->post_title, + 'link' => $this->links->edit_post_translation_link( $post_id ), + ) ); + } + + wp_die( json_encode( $return ) ); + } + + /** + * Saves language + * Checks the terms saved are in the right language + * + * @since 1.5 + * + * @param int $post_id + * @param array $post + */ + protected function save_language( $post_id, $post ) { + // Security checks are necessary to accept language modifications as 'wp_insert_post' can be called from outside WP admin + + // Edit post + if ( isset( $_POST['post_lang_choice'], $_POST['post_ID'] ) && $_POST['post_ID'] == $post_id ) { + check_admin_referer( 'pll_language', '_pll_nonce' ); + $this->model->post->set_language( $post_id, $lang = $this->model->get_language( $_POST['post_lang_choice'] ) ); + } + + // Quick edit and bulk edit + // POST for quick edit, GET for bulk edit + elseif ( isset( $_REQUEST['inline_lang_choice'] ) ) { + // Bulk edit does not modify the language + if ( isset( $_GET['bulk_edit'] ) && -1 == $_REQUEST['inline_lang_choice'] ) { + check_admin_referer( 'bulk-posts' ); + $lang = $this->model->post->get_language( $post_id ); // Get the post language for later use when saving terms + } + // A language is set in the language dropdown + else { + isset( $_GET['bulk_edit'] ) ? check_admin_referer( 'bulk-posts' ) : check_admin_referer( 'inlineeditnonce', '_inline_edit' ); + + $old_lang = $this->model->post->get_language( $post_id ); // Stores the old language + $this->model->post->set_language( $post_id, $lang = $this->model->get_language( $_REQUEST['inline_lang_choice'] ) ); // set new language + + // Checks if the new language already exists in the translation group + if ( $old_lang && $old_lang->slug != $lang->slug ) { + $translations = $this->model->post->get_translations( $post_id ); + + // If yes, separate this post from the translation group + if ( array_key_exists( $lang->slug, $translations ) ) { + $this->model->post->delete_translation( $post_id ); + } + + elseif ( array_key_exists( $old_lang->slug, $translations ) ) { + unset( $translations[ $old_lang->slug ] ); + $this->model->post->save_translations( $post_id, $translations ); + } + } + } + } + + // Quick press + // 'post-quickpress-save', 'post-quickpress-publish' = backward compatibility WP < 3.8 + elseif ( isset( $_REQUEST['action'] ) && in_array( $_REQUEST['action'], array( 'post-quickpress-save', 'post-quickpress-publish', 'post-quickdraft-save' ) ) ) { + check_admin_referer( 'add-' . $post->post_type ); + $this->model->post->set_language( $post_id, $lang = $this->pref_lang ); // Default language for Quick draft + } + + else { + $this->set_default_language( $post_id ); + } + + // Make sure we get save terms in the right language (especially tags with same name in different languages) + if ( ! empty( $lang ) ) { + // FIXME quite a lot of queries in foreach + foreach ( $this->model->get_translated_taxonomies() as $tax ) { + $terms = get_the_terms( $post_id, $tax ); + + if ( is_array( $terms ) ) { + $newterms = array(); + foreach ( $terms as $term ) { + // Check if the term is in the correct language or if a translation exist ( mainly for default category ) + if ( $newterm = $this->model->term->get( $term->term_id, $lang ) ) { + $newterms[] = (int) $newterm; + } + + // Or choose the correct language for tags ( initially defined by name ) + elseif ( $newterm = $this->model->term_exists( $term->name, $tax, $term->parent, $lang ) ) { + $newterms[] = (int) $newterm; // Cast is important otherwise we get 'numeric' tags + } + + // Or create the term in the correct language + elseif ( ! is_wp_error( $term_info = wp_insert_term( $term->name, $tax ) ) ) { + $newterms[] = (int) $term_info['term_id']; + } + } + + wp_set_object_terms( $post_id, $newterms, $tax ); + } + } + } + } + + /** + * Called when a post ( or page ) is saved, published or updated + * saves languages and translations + * + * @since 0.1 + * + * @param int $post_id + * @param object $post + * @param bool $update Whether it is an update or not + */ + public function save_post( $post_id, $post, $update ) { + // Does nothing except on post types which are filterable + if ( ! $this->model->is_translated_post_type( $post->post_type ) ) { + return; + } + + if ( $id = wp_is_post_revision( $post_id ) ) { + $post_id = $id; + } + + // Capability check + // As 'wp_insert_post' can be called from outside WP admin + $post_type_object = get_post_type_object( $post->post_type ); + if ( ( $update && current_user_can( $post_type_object->cap->edit_post, $post_id ) ) || ( ! $update && current_user_can( $post_type_object->cap->create_posts ) ) ) { + $this->save_language( $post_id, $post ); + + // Make sure we are saving translations only for the main post currently being edited + if ( isset( $_POST['post_tr_lang'], $_POST['post_ID'] ) && $_POST['post_ID'] == $post_id ) { + $translations = $this->save_translations( $post_id, $_POST['post_tr_lang'] ); + } + + /** + * Fires after the post language and translations are saved + * + * @since 1.2 + * + * @param int $post_id Post id + * @param object $post Post object + * @param array $translations The list of translations post ids + */ + do_action( 'pll_save_post', $post_id, $post, empty( $translations ) ? $this->model->post->get_translations( $post_id ) : $translations ); + } + + // Attempts to set a default language even if no capability + else { + $this->set_default_language( $post_id ); + } + } + + /** + * Make sure that the post parent is in the correct language when using bulk edit + * + * @since 1.8 + * + * @param int $post_parent Post parent ID. + * @param int $post_id Post ID. + * @param array $new_postarr Array of parsed post data. + * @param array $postarr Array of sanitized, but otherwise unmodified post data. + * @return int + */ + public function wp_insert_post_parent( $post_parent, $post_id, $new_postarr, $postarr ) { + if ( isset( $postarr['bulk_edit'] ) ) { + check_admin_referer( 'bulk-posts' ); + $lang = -1 == $postarr['inline_lang_choice'] ? + $this->model->post->get_language( $post_id ) : + $this->model->get_language( $postarr['inline_lang_choice'] ); + $post_parent = $this->model->post->get_translation( $post_parent, $lang ); + } + return $post_parent; + } + + /** + * Called when a post, page or media is deleted + * Don't delete translations if this is a post revision thanks to AndyDeGroo who catched this bug + * http://wordpress.org/support/topic/plugin-polylang-quick-edit-still-breaks-translation-linking-of-pages-in-072 + * + * @since 0.1 + * + * @param int $post_id + */ + public function delete_post( $post_id ) { + if ( ! wp_is_post_revision( $post_id ) ) { + $this->model->post->delete_translation( $post_id ); + } + } + + /** + * Filters the pages by language in the parent dropdown list in the page attributes metabox + * + * @since 0.6 + * + * @param array $dropdown_args Arguments passed to wp_dropdown_pages + * @param object $post + * @return array Modified arguments + */ + public function page_attributes_dropdown_pages_args( $dropdown_args, $post ) { + $dropdown_args['lang'] = isset( $_POST['lang'] ) ? $this->model->get_language( $_POST['lang'] ) : $this->model->post->get_language( $post->ID ); // ajax or not ? + if ( ! $dropdown_args['lang'] ) { + $dropdown_args['lang'] = $this->pref_lang; + } + + return $dropdown_args; + } + + /** + * Sets the language attribute and text direction for Tiny MCE + * + * @since 2.2 + * + * @param array $mce_init TinyMCE config + * @return array + */ + public function tiny_mce_before_init( $mce_init ) { + if ( ! empty( $this->curlang ) ) { + $mce_init['wp_lang_attr'] = $this->curlang->get_locale( 'display' ); + $mce_init['directionality'] = $this->curlang->is_rtl ? 'rtl' : 'ltr'; + } + return $mce_init; + } +} diff --git a/pole-sbv-content/plugins/polylang/admin/admin-filters-term.php b/pole-sbv-content/plugins/polylang/admin/admin-filters-term.php new file mode 100644 index 00000000..885c2e26 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/admin-filters-term.php @@ -0,0 +1,729 @@ +links = &$polylang->links; + $this->model = &$polylang->model; + $this->options = &$polylang->options; + $this->curlang = &$polylang->curlang; + $this->filter_lang = &$polylang->filter_lang; + $this->pref_lang = &$polylang->pref_lang; + + foreach ( $this->model->get_translated_taxonomies() as $tax ) { + // Adds the language field in the 'Categories' and 'Post Tags' panels + add_action( $tax . '_add_form_fields', array( $this, 'add_term_form' ) ); + + // Adds the language field and translations tables in the 'Edit Category' and 'Edit Tag' panels + add_action( $tax . '_edit_form_fields', array( $this, 'edit_term_form' ) ); + + // Adds action related to languages when deleting categories and post tags + add_action( 'delete_' . $tax, array( $this, 'delete_term' ) ); + } + + // Adds actions related to languages when creating or saving categories and post tags + add_filter( 'wp_dropdown_cats', array( $this, 'wp_dropdown_cats' ) ); + add_action( 'create_term', array( $this, 'save_term' ), 999, 3 ); + add_action( 'edit_term', array( $this, 'save_term' ), 999, 3 ); // late as it may conflict with other plugins, see http://wordpress.org/support/topic/polylang-and-wordpress-seo-by-yoast + add_action( 'pre_post_update', array( $this, 'pre_post_update' ) ); + add_filter( 'pre_term_name', array( $this, 'pre_term_name' ) ); + add_filter( 'pre_term_slug', array( $this, 'pre_term_slug' ), 10, 2 ); + + // Ajax response for edit term form + add_action( 'wp_ajax_term_lang_choice', array( $this, 'term_lang_choice' ) ); + add_action( 'wp_ajax_pll_terms_not_translated', array( $this, 'ajax_terms_not_translated' ) ); + + // Adds cache domain when querying terms + add_filter( 'get_terms_args', array( $this, 'get_terms_args' ), 10, 2 ); + + // Filters categories and post tags by language + add_filter( 'terms_clauses', array( $this, 'terms_clauses' ), 10, 3 ); + + // Allows to get the default categories in all languages + add_filter( 'option_default_category', array( $this, 'option_default_category' ) ); + add_action( 'update_option_default_category', array( $this, 'update_option_default_category' ), 10, 2 ); + + // Updates the translations term ids when splitting a shared term + add_action( 'split_shared_term', array( $this, 'split_shared_term' ), 10, 4 ); // WP 4.2 + } + + /** + * Adds the language field in the 'Categories' and 'Post Tags' panels + * + * @since 0.1 + */ + public function add_term_form() { + $taxonomy = $_GET['taxonomy']; + $post_type = isset( $GLOBALS['post_type'] ) ? $GLOBALS['post_type'] : $_REQUEST['post_type']; + + if ( ! taxonomy_exists( $taxonomy ) || ! post_type_exists( $post_type ) ) { + return; + } + + $lang = isset( $_GET['new_lang'] ) ? $this->model->get_language( $_GET['new_lang'] ) : $this->pref_lang; + $dropdown = new PLL_Walker_Dropdown(); + + wp_nonce_field( 'pll_language', '_pll_nonce' ); + + printf( ' +
+ +
%s
+

%s

+
', + esc_html__( 'Language', 'polylang' ), + $dropdown->walk( $this->model->get_languages_list(), array( + 'name' => 'term_lang_choice', + 'value' => 'term_id', + 'selected' => $lang ? $lang->term_id : '', + 'flag' => true, + ) ), + esc_html__( 'Sets the language', 'polylang' ) + ); + + if ( ! empty( $_GET['from_tag'] ) ) { + printf( '', (int) $_GET['from_tag'] ); + } + + // Adds translation fields + echo '
'; + if ( $lang ) { + include PLL_ADMIN_INC . '/view-translations-term.php'; + } + echo '
' . "\n"; + } + + /** + * Adds the language field and translations tables in the 'Edit Category' and 'Edit Tag' panels + * + * @since 0.1 + * + * @param object $tag + */ + public function edit_term_form( $tag ) { + $post_type = isset( $GLOBALS['post_type'] ) ? $GLOBALS['post_type'] : $_REQUEST['post_type']; + + if ( ! post_type_exists( $post_type ) ) { + return; + } + + $term_id = $tag->term_id; + $taxonomy = $tag->taxonomy; + + $lang = $this->model->term->get_language( $term_id ); + $lang = empty( $lang ) ? $this->pref_lang : $lang; + + $dropdown = new PLL_Walker_Dropdown(); + + // Disable the language dropdown and the translations input fields for default categories to prevent removal + $disabled = in_array( get_option( 'default_category' ), $this->model->term->get_translations( $term_id ) ); + + printf( ' + + + %s + + + + %s
+

%s

+ + ', + wp_nonce_field( 'pll_language', '_pll_nonce', true , false ), + esc_html__( 'Language', 'polylang' ), + $dropdown->walk( $this->model->get_languages_list(), array( + 'name' => 'term_lang_choice', + 'value' => 'term_id', + 'selected' => $lang ? $lang->term_id : '', + 'disabled' => $disabled, + 'flag' => true, + ) ), + esc_html__( 'Sets the language', 'polylang' ) + ); + + echo ''; + if ( $lang ) { + include PLL_ADMIN_INC . '/view-translations-term.php'; + } + echo '' . "\n"; + } + + /** + * Translates term parent if exists when using "Add new" ( translation ) + * + * @since 0.7 + * + * @param string $output html markup for dropdown list of categories + * @return string modified html + */ + public function wp_dropdown_cats( $output ) { + if ( isset( $_GET['taxonomy'], $_GET['from_tag'], $_GET['new_lang'] ) && taxonomy_exists( $_GET['taxonomy'] ) ) { + $term = get_term( (int) $_GET['from_tag'], $_GET['taxonomy'] ); + if ( $term && $id = $term->parent ) { + $lang = $this->model->get_language( $_GET['new_lang'] ); + if ( $parent = $this->model->term->get_translation( $id, $lang ) ) { + return str_replace( '"' . $parent . '"', '"' . $parent . '" selected="selected"', $output ); + } + } + } + return $output; + } + + /** + * stores the current post_id when bulk editing posts for use in save_language and pre_term_slug + * + * @since 1.7 + * + * @param int $post_id + */ + public function pre_post_update( $post_id ) { + if ( isset( $_GET['bulk_edit'] ) ) { + $this->post_id = $post_id; + } + } + + /** + * Allows to set a language by default for terms if it has no language yet + * + * @since 1.5.4 + * + * @param int $term_id + * @param string $taxonomy + */ + protected function set_default_language( $term_id, $taxonomy ) { + if ( ! $this->model->term->get_language( $term_id ) ) { + // Sets language from term parent if exists thanks to Scott Kingsley Clark + if ( ( $term = get_term( $term_id, $taxonomy ) ) && ! empty( $term->parent ) && $parent_lang = $this->model->term->get_language( $term->parent ) ) { + $this->model->term->set_language( $term_id, $parent_lang ); + } + else { + $this->model->term->set_language( $term_id, $this->pref_lang ); + } + } + } + + /** + * Saves language + * + * @since 1.5 + * + * @param int $term_id + * @param string $taxonomy + */ + protected function save_language( $term_id, $taxonomy ) { + global $wpdb; + // Security checks are necessary to accept language modifications + // as 'wp_update_term' can be called from outside WP admin + + // Edit tags + if ( isset( $_POST['term_lang_choice'] ) ) { + if ( 'add-' . $taxonomy == $_POST['action'] ) { + check_ajax_referer( $_POST['action'], '_ajax_nonce-add-' . $taxonomy ); // category metabox + } + else { + check_admin_referer( 'pll_language', '_pll_nonce' ); // edit tags or tags metabox + } + + $this->model->term->set_language( $term_id, $this->model->get_language( $_POST['term_lang_choice'] ) ); + } + + // *Post* bulk edit, in case a new term is created + elseif ( isset( $_GET['bulk_edit'], $_GET['inline_lang_choice'] ) ) { + check_admin_referer( 'bulk-posts' ); + + // Bulk edit does not modify the language + // So we possibly create a tag in several languages + if ( -1 == $_GET['inline_lang_choice'] ) { + // The language of the current term is set a according to the language of the current post + $this->model->term->set_language( $term_id, $this->model->post->get_language( $this->post_id ) ); + $term = get_term( $term_id, $taxonomy ); + + // Get all terms with the same name + // FIXME backward compatibility WP < 4.2 + // No WP function to get all terms with the exact same name so let's use a custom query + // $terms = get_terms( $taxonomy, array( 'name' => $term->name, 'hide_empty' => false, 'fields' => 'ids' ) ); should be OK in 4.2 + // I may need to rework the loop below + $terms = $wpdb->get_results( $wpdb->prepare( " + SELECT t.term_id FROM $wpdb->terms AS t + INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id + WHERE tt.taxonomy = %s AND t.name = %s", + $taxonomy, $term->name + ) ); + + // If we have several terms with the same name, they are translations of each other + if ( count( $terms ) > 1 ) { + foreach ( $terms as $term ) { + $translations[ $this->model->term->get_language( $term->term_id )->slug ] = $term->term_id; + } + + $this->model->term->save_translations( $term_id, $translations ); + } + } + + else { + $this->model->term->set_language( $term_id, $this->model->get_language( $_GET['inline_lang_choice'] ) ); + } + } + + // Quick edit + elseif ( isset( $_POST['inline_lang_choice'] ) ) { + check_ajax_referer( + isset( $_POST['action'] ) && 'inline-save' == $_POST['action'] ? 'inlineeditnonce' : 'taxinlineeditnonce', // Post quick edit or tag quick edit ? + '_inline_edit' + ); + + $old_lang = $this->model->term->get_language( $term_id ); // Stores the old language + $lang = $this->model->get_language( $_POST['inline_lang_choice'] ); // New language + $translations = $this->model->term->get_translations( $term_id ); + + // Checks if the new language already exists in the translation group + if ( $old_lang && $old_lang->slug != $lang->slug ) { + if ( array_key_exists( $lang->slug, $translations ) ) { + $this->model->term->delete_translation( $term_id ); + } + + elseif ( array_key_exists( $old_lang->slug, $translations ) ) { + unset( $translations[ $old_lang->slug ] ); + $this->model->term->save_translations( $term_id, $translations ); + } + } + + $this->model->term->set_language( $term_id, $lang ); // Set new language + } + + // Edit post + elseif ( isset( $_POST['post_lang_choice'] ) ) { // FIXME should be useless now + check_admin_referer( 'pll_language', '_pll_nonce' ); + $this->model->term->set_language( $term_id, $this->model->get_language( $_POST['post_lang_choice'] ) ); + } + + else { + $this->set_default_language( $term_id, $taxonomy ); + } + } + + /** + * Save translations from our form + * + * @since 1.5 + * + * @param int $term_id + * @return array + */ + protected function save_translations( $term_id ) { + // Security check as 'wp_update_term' can be called from outside WP admin + check_admin_referer( 'pll_language', '_pll_nonce' ); + + // Save translations after checking the translated term is in the right language ( as well as cast id to int ) + foreach ( $_POST['term_tr_lang'] as $lang => $tr_id ) { + $tr_lang = $this->model->term->get_language( (int) $tr_id ); + $translations[ $lang ] = $tr_lang && $tr_lang->slug == $lang ? (int) $tr_id : 0; + } + + $this->model->term->save_translations( $term_id, $translations ); + + return $translations; + } + + /** + * Called when a category or post tag is created or edited + * Saves language and translations + * + * @since 0.1 + * + * @param int $term_id + * @param int $tt_id term taxononomy id + * @param string $taxonomy + */ + public function save_term( $term_id, $tt_id, $taxonomy ) { + // Does nothing except on taxonomies which are filterable + if ( ! $this->model->is_translated_taxonomy( $taxonomy ) ) { + return; + } + + // Capability check + // As 'wp_update_term' can be called from outside WP admin + // 2nd test for creating tags when creating / editing a post + $tax = get_taxonomy( $taxonomy ); + if ( current_user_can( $tax->cap->edit_terms ) || ( isset( $_POST['tax_input'][ $taxonomy ] ) && current_user_can( $tax->cap->assign_terms ) ) ) { + $this->save_language( $term_id, $taxonomy ); + + if ( isset( $_POST['term_tr_lang'] ) ) { + $translations = $this->save_translations( $term_id ); + } + + /** + * Fires after the term language and translations are saved + * + * @since 1.2 + * + * @param int $term_id term id + * @param string $taxonomy taxonomy name + * @param array $translations the list of translations term ids + */ + do_action( 'pll_save_term', $term_id, $taxonomy, empty( $translations ) ? $this->model->term->get_translations( $term_id ) : $translations ); + } + + // Attempts to set a default language even if no capability + else { + $this->set_default_language( $term_id, $taxonomy ); + } + } + + /** + * Stores the term name for use in pre_term_slug + * + * @since 0.9.5 + * + * @param string $name term name + * @return string unmodified term name + */ + public function pre_term_name( $name ) { + return $this->pre_term_name = $name; + } + + /** + * Creates the term slug in case the term already exists in another language + * + * @since 0.9.5 + * + * @param string $slug + * @param string $taxonomy + * @return string + */ + public function pre_term_slug( $slug, $taxonomy ) { + $name = sanitize_title( $this->pre_term_name ); + + // If the term already exists in another language + if ( ! $slug && $this->model->is_translated_taxonomy( $taxonomy ) && term_exists( $name, $taxonomy ) ) { + if ( isset( $_POST['term_lang_choice'] ) ) { + $slug = $name . '-' . $this->model->get_language( $_POST['term_lang_choice'] )->slug; + } + + elseif ( isset( $_POST['inline_lang_choice'] ) ) { + $slug = $name . '-' . $this->model->get_language( $_POST['inline_lang_choice'] )->slug; + } + + // *Post* bulk edit, in case a new term is created + elseif ( isset( $_GET['bulk_edit'], $_GET['inline_lang_choice'] ) ) { + // Bulk edit does not modify the language + if ( -1 == $_GET['inline_lang_choice'] ) { + $slug = $name . '-' . $this->model->post->get_language( $this->post_id )->slug; + } else { + $slug = $name . '-' . $this->model->get_language( $_GET['inline_lang_choice'] )->slug; + } + } + } + + return $slug; + } + + /** + * Called when a category or post tag is deleted + * Deletes language and translations + * + * @since 0.1 + * + * @param int $term_id + */ + public function delete_term( $term_id ) { + $this->model->term->delete_translation( $term_id ); + $this->model->term->delete_language( $term_id ); + } + + /** + * Ajax response for edit term form + * + * @since 0.2 + */ + public function term_lang_choice() { + check_ajax_referer( 'pll_language', '_pll_nonce' ); + + $lang = $this->model->get_language( $_POST['lang'] ); + $term_id = isset( $_POST['term_id'] ) ? (int) $_POST['term_id'] : null; + $taxonomy = $_POST['taxonomy']; + $post_type = $_POST['post_type']; + + if ( ! post_type_exists( $post_type ) || ! taxonomy_exists( $taxonomy ) ) { + die( 0 ); + } + + ob_start(); + if ( $lang ) { + include PLL_ADMIN_INC . '/view-translations-term.php'; + } + $x = new WP_Ajax_Response( array( 'what' => 'translations', 'data' => ob_get_contents() ) ); + ob_end_clean(); + + // Parent dropdown list ( only for hierarchical taxonomies ) + // $args copied from edit_tags.php except echo + if ( is_taxonomy_hierarchical( $taxonomy ) ) { + $args = array( + 'hide_empty' => 0, + 'hide_if_empty' => false, + 'taxonomy' => $taxonomy, + 'name' => 'parent', + 'orderby' => 'name', + 'hierarchical' => true, + 'show_option_none' => __( 'None' ), + 'echo' => 0, + ); + $x->Add( array( 'what' => 'parent', 'data' => wp_dropdown_categories( $args ) ) ); + } + + // Tag cloud + // Tests copied from edit_tags.php + else { + $tax = get_taxonomy( $taxonomy ); + if ( ! is_null( $tax->labels->popular_items ) ) { + $args = array( 'taxonomy' => $taxonomy, 'echo' => false ); + if ( current_user_can( $tax->cap->edit_terms ) ) { + $args = array_merge( $args, array( 'link' => 'edit' ) ); + } + + if ( $tag_cloud = wp_tag_cloud( $args ) ) { + $html = sprintf( '

%1$s

%2$s
', esc_html( $tax->labels->popular_items ), $tag_cloud ); + $x->Add( array( 'what' => 'tag_cloud', 'data' => $html ) ); + } + } + } + + // Flag + $x->Add( array( 'what' => 'flag', 'data' => empty( $lang->flag ) ? esc_html( $lang->slug ) : $lang->flag ) ); + + $x->send(); + } + + /** + * Ajax response for input in translation autocomplete input box + * + * @since 1.5 + */ + public function ajax_terms_not_translated() { + check_ajax_referer( 'pll_language', '_pll_nonce' ); + + $s = wp_unslash( $_GET['term'] ); + $post_type = $_GET['post_type']; + $taxonomy = $_GET['taxonomy']; + + if ( ! post_type_exists( $post_type ) || ! taxonomy_exists( $taxonomy ) ) { + die( 0 ); + } + + $term_language = $this->model->get_language( $_GET['term_language'] ); + $translation_language = $this->model->get_language( $_GET['translation_language'] ); + + $return = array(); + + // It is more efficient to use one common query for all languages as soon as there are more than 2 + foreach ( get_terms( $taxonomy, 'hide_empty=0&lang=0&name__like=' . $s ) as $term ) { + $lang = $this->model->term->get_language( $term->term_id ); + + if ( $lang && $lang->slug == $translation_language->slug && ! $this->model->term->get_translation( $term->term_id, $term_language ) ) { + $return[] = array( + 'id' => $term->term_id, + 'value' => $term->name, + 'link' => $this->links->edit_term_translation_link( $term->term_id, $taxonomy, $post_type ), + ); + } + } + + // Add current translation in list + // Not in add term for as term_id is not set + if ( 'undefined' !== $_GET['term_id'] && $term_id = $this->model->term->get_translation( (int) $_GET['term_id'], $translation_language ) ) { + $term = get_term( $term_id, $taxonomy ); + array_unshift( $return, array( + 'id' => $term_id, + 'value' => $term->name, + 'link' => $this->links->edit_term_translation_link( $term->term_id, $taxonomy, $post_type ), + ) ); + } + + wp_die( json_encode( $return ) ); + } + + /** + * Get the language(s) to filter get_terms + * + * @since 1.7.6 + * + * @param array $taxonomies queried taxonomies + * @param array $args get_terms arguments + * @return object|string|bool the language(s) to use in the filter, false otherwise + */ + protected function get_queried_language( $taxonomies, $args ) { + // Does nothing except on taxonomies which are filterable + // Since WP 4.7, make sure not to filter wp_get_object_terms() + if ( ! $this->model->is_translated_taxonomy( $taxonomies ) || ! empty( $args['object_ids'] ) ) { + return false; + } + + // If get_terms is queried with a 'lang' parameter + if ( isset( $args['lang'] ) ) { + return $args['lang']; + } + + // On tags page, everything should be filtered according to the admin language filter except the parent dropdown + if ( 'edit-tags.php' === $GLOBALS['pagenow'] && empty( $args['class'] ) ) { + return $this->filter_lang; + } + + return $this->curlang; + } + + /** + * Adds language dependent cache domain when querying terms + * Useful as the 'lang' parameter is not included in cache key by WordPress + * + * @since 1.3 + * + * @param array $args + * @param array $taxonomies + * @return array modified arguments + */ + public function get_terms_args( $args, $taxonomies ) { + // don't break _get_term_hierarchy() + if ( 'all' === $args['get'] && 'id' === $args['orderby'] && 'id=>parent' === $args['fields'] ) { + $args['lang'] = ''; + } + + if ( $lang = $this->get_queried_language( $taxonomies, $args ) ) { + $key = '_' . ( is_array( $lang ) ? implode( ',', $lang ) : $this->model->get_language( $lang )->slug ); + $args['cache_domain'] = empty( $args['cache_domain'] ) ? 'pll' . $key : $args['cache_domain'] . $key; + } + return $args; + } + + /** + * Filters categories and post tags by language(s) when needed on admin side + * + * @since 0.5 + * + * @param array $clauses list of sql clauses + * @param array $taxonomies list of taxonomies + * @param array $args get_terms arguments + * @return array modified sql clauses + */ + public function terms_clauses( $clauses, $taxonomies, $args ) { + $lang = $this->get_queried_language( $taxonomies, $args ); + return ! empty( $lang ) ? $this->model->terms_clauses( $clauses, $lang ) : $clauses; // adds our clauses to filter by current language + } + + /** + * Hack to avoid displaying delete link for the default category in all languages + * Also returns the default category in the right language when called from wp_delete_term + * + * @since 1.2 + * + * @param int $value + * @return int + */ + public function option_default_category( $value ) { + // Filters the default category in note below the category list table and in settings->writing dropdown + if ( isset( $this->pref_lang ) && $tr = $this->model->term->get( $value, $this->pref_lang ) ) { + $value = $tr; + } + + // FIXME backward compatibility with WP < 4.7 + if ( version_compare( $GLOBALS['wp_version'], '4.7alpha', '<' ) ) { + $traces = debug_backtrace(); + $n = version_compare( PHP_VERSION, '7', '>=' ) ? 3 : 4; // PHP 7 does not include call_user_func_array + + if ( isset( $traces[ $n ] ) ) { + // FIXME 'column_name' for backward compatibility with WP < 4.3 + if ( in_array( $traces[ $n ]['function'], array( 'column_cb', 'column_name', 'handle_row_actions' ) ) && in_array( $traces[ $n ]['args'][0]->term_id, $this->model->term->get_translations( $value ) ) ) { + return $traces[ $n ]['args'][0]->term_id; + } + + if ( 'wp_delete_term' == $traces[ $n ]['function'] ) { + return $this->model->term->get( $value, $this->model->term->get_language( $traces[ $n ]['args'][0] ) ); + } + } + } + + return $value; + } + + /** + * Checks if the new default category is translated in all languages + * If not, create the translations + * + * @since 1.7 + * + * @param int $old_value + * @param int $value + */ + public function update_option_default_category( $old_value, $value ) { + $default_cat_lang = $this->model->term->get_language( $value ); + + // Assign a default language to default category + if ( ! $default_cat_lang ) { + $default_cat_lang = $this->model->get_language( $this->options['default_lang'] ); + $this->model->term->set_language( (int) $value, $default_cat_lang ); + } + + foreach ( $this->model->get_languages_list() as $language ) { + if ( $language->slug != $default_cat_lang->slug && ! $this->model->term->get_translation( $value, $language ) ) { + $this->model->create_default_category( $language ); + } + } + } + + /** + * Updates the translations term ids when splitting a shared term + * Splits translations if these are shared terms too + * + * @since 1.7 + * + * @param int $term_id Shared term_id + * @param int $new_term_id + * @param int $term_taxonomy_id + * @param string $taxonomy + */ + public function split_shared_term( $term_id, $new_term_id, $term_taxonomy_id, $taxonomy ) { + if ( ! $this->model->is_translated_taxonomy( $taxonomy ) ) { + return; + } + + // Avoid recursion + static $avoid_recursion = false; + if ( $avoid_recursion ) { + return; + } + + $avoid_recursion = true; + $lang = $this->model->term->get_language( $term_id ); + + foreach ( $this->model->term->get_translations( $term_id ) as $key => $tr_id ) { + if ( $lang->slug == $key ) { + $translations[ $key ] = $new_term_id; + } + else { + $tr_term = get_term( $tr_id, $taxonomy ); + $translations[ $key ] = _split_shared_term( $tr_id, $tr_term->term_taxonomy_id ); + + // Hack translation ids sent by the form to avoid overwrite in PLL_Admin_Filters_Term::save_translations + if ( isset( $_POST['term_tr_lang'][ $key ] ) && $_POST['term_tr_lang'][ $key ] == $tr_id ) { + $_POST['term_tr_lang'][ $key ] = $translations[ $key ]; + } + } + $this->model->term->set_language( $translations[ $key ], $key ); + } + + $this->model->term->save_translations( $new_term_id, $translations ); + $avoid_recursion = false; + } +} diff --git a/pole-sbv-content/plugins/polylang/admin/admin-filters.php b/pole-sbv-content/plugins/polylang/admin/admin-filters.php new file mode 100644 index 00000000..9c1ba290 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/admin-filters.php @@ -0,0 +1,281 @@ +model->get_languages_list( array( 'fields' => 'locale' ) ), $specific_locales ) ) { + add_filter( 'sanitize_title', array( $this, 'sanitize_title' ), 10, 3 ); + add_filter( 'sanitize_user', array( $this, 'sanitize_user' ), 10, 3 ); + } + + add_filter( 'admin_body_class', array( $this, 'admin_body_class' ) ); + } + + /** + * Modifies the widgets forms to add our language dropdwown list + * + * @since 0.3 + * + * @param object $widget Widget instance + * @param null $return Not used + * @param array $instance Widget settings + */ + public function in_widget_form( $widget, $return, $instance ) { + $screen = get_current_screen(); + + // Test the Widgets screen and the Customizer to avoid displaying the option in page builders + // Saving the widget reloads the form. And curiously the action is in $_REQUEST but neither in $_POST, not in $_GET. + if ( ( isset( $screen ) && 'widgets' === $screen->base ) || ( isset( $_REQUEST['action'] ) && 'save-widget' === $_REQUEST['action'] ) || isset( $GLOBALS['wp_customize'] ) ) { + $dropdown = new PLL_Walker_Dropdown(); + printf( '

', + esc_attr( $widget->id . '_lang_choice' ), + esc_html__( 'The widget is displayed for:', 'polylang' ), + $dropdown->walk( + array_merge( + array( (object) array( 'slug' => 0, 'name' => __( 'All languages', 'polylang' ) ) ), + $this->model->get_languages_list() + ), + array( + 'name' => $widget->id . '_lang_choice', + 'class' => 'tags-input', + 'selected' => empty( $instance['pll_lang'] ) ? '' : $instance['pll_lang'], + ) + ) + ); + } + } + + /** + * Called when widget options are saved + * saves the language associated to the widget + * + * @since 0.3 + * + * @param array $instance Widget options + * @param array $new_instance Not used + * @param array $old_instance Not used + * @param object $widget WP_Widget object + * @return array Widget options + */ + public function widget_update_callback( $instance, $new_instance, $old_instance, $widget ) { + if ( ! empty( $_POST[ $key = $widget->id . '_lang_choice' ] ) && in_array( $_POST[ $key ], $this->model->get_languages_list( array( 'fields' => 'slug' ) ) ) ) { + $instance['pll_lang'] = $_POST[ $key ]; + } else { + unset( $instance['pll_lang'] ); + } + + return $instance; + } + + /** + * Updates language user preference set in user profile + * + * @since 0.4 + * + * @param int $user_id + */ + public function personal_options_update( $user_id ) { + // Admin language + // FIXME Backward compatibility with WP < 4.7 + if ( version_compare( $GLOBALS['wp_version'], '4.7alpha', '<' ) ) { + $user_lang = in_array( $_POST['user_lang'], $this->model->get_languages_list( array( 'fields' => 'locale' ) ) ) ? $_POST['user_lang'] : 0; + update_user_meta( $user_id, 'locale', $user_lang ); + } + + // Biography translations + foreach ( $this->model->get_languages_list() as $lang ) { + $meta = $lang->slug == $this->options['default_lang'] ? 'description' : 'description_' . $lang->slug; + $description = empty( $_POST[ 'description_' . $lang->slug ] ) ? '' : trim( $_POST[ 'description_' . $lang->slug ] ); + + /** This filter is documented in wp-includes/user.php */ + $description = apply_filters( 'pre_user_description', $description ); // Applies WP default filter wp_filter_kses + update_user_meta( $user_id, $meta, $description ); + } + } + + /** + * Form for language user preference in user profile + * + * @since 0.4 + * + * @param object $profileuser + */ + public function personal_options( $profileuser ) { + // FIXME: Backward compatibility with WP < 4.7 + if ( version_compare( $GLOBALS['wp_version'], '4.7alpha', '<' ) ) { + $dropdown = new PLL_Walker_Dropdown(); + printf( ' + + + %s + ', + esc_html__( 'Admin language', 'polylang' ), + $dropdown->walk( + array_merge( + array( (object) array( 'locale' => 0, 'name' => __( 'WordPress default', 'polylang' ) ) ), + $this->model->get_languages_list() + ), + array( + 'name' => 'user_lang', + 'value' => 'locale', + 'selected' => get_user_meta( $profileuser->ID, 'locale', true ), + ) + ) + ); + } + + // Hidden informations to modify the biography form with js + foreach ( $this->model->get_languages_list() as $lang ) { + $meta = $lang->slug == $this->options['default_lang'] ? 'description' : 'description_' . $lang->slug; + + /** This filter is documented in wp-includes/user.php */ + $description = apply_filters( 'user_description', get_user_meta( $profileuser->ID, $meta, true ) ); // Applies WP default filter wp_kses_data + + printf( '', + esc_attr( $lang->slug ), + esc_attr( $lang->name ), + esc_attr( $description ) + ); + } + } + + /** + * Ugprades languages files after a core upgrade + * only for backward compatibility WP < 4.0 *AND* Polylang < 1.6 + * + * @since 0.6 + * + * @param string $version new WP version + */ + public function upgrade_languages( $version ) { + // $GLOBALS['wp_version'] is the old WP version + if ( version_compare( $version, '4.0', '>=' ) && version_compare( $GLOBALS['wp_version'], '4.0', '<' ) ) { + + /** This filter is documented in wp-admin/includes/update-core.php */ + apply_filters( 'update_feedback', __( 'Upgrading language files…', 'polylang' ) ); + PLL_Upgrade::download_language_packs(); + } + } + + /** + * Allows to update translations files for plugins and themes + * + * @since 1.6 + * + * @param array $locales Not used + * @return array list of locales to update + */ + function update_check_locales( $locales ) { + return $this->model->get_languages_list( array( 'fields' => 'locale' ) ); + } + + /** + * Filters the locale according to the current language instead of the language + * of the admin interface + * + * @since 2.0 + * + * @param string $locale + * @return string + */ + public function get_locale( $locale ) { + return $this->curlang->locale; + } + + /** + * Maybe fix the result of sanitize_title() in case the languages include German or Danish + * Without this filter, if language of the title being sanitized is different from the language + * used for the admin interface and if one this language is German or Danish, some specific + * characters such as ä, ö, ü, ß are incorrectly sanitized. + * + * @since 2.0 + * + * @param string $title Sanitized title. + * @param string $raw_title The title prior to sanitization. + * @param string $context The context for which the title is being sanitized. + * @return string + */ + public function sanitize_title( $title, $raw_title, $context ) { + static $once = false; + + if ( ! $once && 'save' == $context && ! empty( $this->curlang ) && ! empty( $title ) ) { + $once = true; + add_filter( 'locale', array( $this, 'get_locale' ), 20 ); // After the filter for the admin interface + $title = sanitize_title( $raw_title, '', $context ); + remove_filter( 'locale', array( $this, 'get_locale' ), 20 ); + $once = false; + } + return $title; + } + + /** + * Maybe fix the result of sanitize_user() in case the languages include German or Danish + * + * @since 2.0 + * + * @param string $username Sanitized username. + * @param string $raw_username The username prior to sanitization. + * @param bool $strict Whether to limit the sanitization to specific characters. Default false. + * @return string + */ + public function sanitize_user( $username, $raw_username, $strict ) { + static $once = false; + + if ( ! $once && ! empty( $this->curlang ) ) { + $once = true; + add_filter( 'locale', array( $this, 'get_locale' ), 20 ); // After the filter for the admin interface + $username = sanitize_user( $raw_username, '', $strict ); + remove_filter( 'locale', array( $this, 'get_locale' ), 20 ); + $once = false; + } + return $username; + } + + /** + * Adds a text direction dependent class to the body + * + * @since 2.2 + * + * @param string $classes Space-separated list of CSS classes. + * @return string + */ + public function admin_body_class( $classes ) { + if ( ! empty( $this->curlang ) ) { + $classes .= ' pll-dir-' . ( $this->curlang->is_rtl ? 'rtl' : 'ltr' ); + } + return $classes; + } +} diff --git a/pole-sbv-content/plugins/polylang/admin/admin-links.php b/pole-sbv-content/plugins/polylang/admin/admin-links.php new file mode 100644 index 00000000..7b0ddeae --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/admin-links.php @@ -0,0 +1,177 @@ +cap->create_posts ) ) { + return ''; + } + + if ( 'attachment' == $post_type ) { + $args = array( + 'action' => 'translate_media', + 'from_media' => $post_id, + 'new_lang' => $language->slug, + ); + + // add nonce for media as we will directly publish a new attachment from a clic on this link + $link = wp_nonce_url( add_query_arg( $args, admin_url( 'admin.php' ) ), 'translate_media' ); + } else { + $args = array( + 'post_type' => $post_type, + 'from_post' => $post_id, + 'new_lang' => $language->slug, + ); + + $link = add_query_arg( $args, admin_url( 'post-new.php' ) ); + } + + /** + * Filter the new post translation link + * + * @since 1.8 + * + * @param string $link the new post translation link + * @param object $language the language of the new translation + * @param int $post_id the source post id + */ + return apply_filters( 'pll_get_new_post_translation_link', $link, $language, $post_id ); + } + + /** + * returns html markup for a new post translation link + * + * @since 1.8 + * + * @param int $post_id + * @param object $language + * @return string + */ + public function new_post_translation_link( $post_id, $language ) { + $link = $this->get_new_post_translation_link( $post_id, $language ); + return $link ? sprintf( + '%2$s', + esc_url( $link ), + /* translators: accessibility text, %s is a native language name */ + esc_html( sprintf( __( 'Add a translation in %s', 'polylang' ), $language->name ) ) + ) : ''; + } + + /** + * returns html markup for a translation link + * + * @since 1.4 + * + * @param int $post_id translation post id + * @return string + */ + public function edit_post_translation_link( $post_id ) { + $link = get_edit_post_link( $post_id ); + $language = $this->model->post->get_language( $post_id ); + return $link ? sprintf( + '%2$s', + esc_url( $link ), + /* translators: accessibility text, %s is a native language name */ + esc_html( sprintf( __( 'Edit the translation in %s', 'polylang' ), $language->name ) ) + ) : ''; + } + + /** + * get the link to create a new term translation + * + * @since 1.5 + * + * @param int $term_id + * @param string $taxonomy + * @param string $post_type + * @param object $language + * @return string + */ + public function get_new_term_translation_link( $term_id, $taxonomy, $post_type, $language ) { + $tax = get_taxonomy( $taxonomy ); + if ( ! $tax || ! current_user_can( $tax->cap->edit_terms ) ) { + return ''; + } + + $args = array( + 'taxonomy' => $taxonomy, + 'post_type' => $post_type, + 'from_tag' => $term_id, + 'new_lang' => $language->slug, + ); + + $link = add_query_arg( $args, admin_url( 'edit-tags.php' ) ); + + /** + * Filter the new term translation link + * + * @since 1.8 + * + * @param string $link the new term translation link + * @param object $language the language of the new translation + * @param int $term_id the source term id + * @param string $taxonomy + * @param string $post_type + */ + return apply_filters( 'pll_get_new_term_translation_link', $link, $language, $term_id, $taxonomy, $post_type ); + } + + /** + * returns html markup for a new term translation + * + * @since 1.8 + * + * @param int $term_id + * @param string $taxonomy + * @param string $post_type + * @param object $language + * @return string + */ + public function new_term_translation_link( $term_id, $taxonomy, $post_type, $language ) { + $link = $this->get_new_term_translation_link( $term_id, $taxonomy, $post_type, $language ); + return $link ? sprintf( + '%2$s', + esc_url( $link ), + /* translators: accessibility text, %s is a native language name */ + esc_html( sprintf( __( 'Add a translation in %s', 'polylang' ), $language->name ) ) + ) : ''; + } + + /** + * returns html markup for a term translation link + * + * @since 1.4 + * + * @param object $term_id translation term id + * @param string $taxonomy + * @param string $post_type + * @return string + */ + public function edit_term_translation_link( $term_id, $taxonomy, $post_type ) { + $link = get_edit_term_link( $term_id, $taxonomy, $post_type ); + $language = $this->model->term->get_language( $term_id ); + return $link ? sprintf( + '%2$s', + esc_url( $link ), + /* translators: accessibility text, %s is a native language name */ + esc_html( sprintf( __( 'Edit the translation in %s', 'polylang' ), $language->name ) ) + ) : ''; + } +} + diff --git a/pole-sbv-content/plugins/polylang/admin/admin-model.php b/pole-sbv-content/plugins/polylang/admin/admin-model.php new file mode 100644 index 00000000..0c847645 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/admin-model.php @@ -0,0 +1,540 @@ + language name ( used only for display ) + * slug -> language code ( ideally 2-letters ISO 639-1 language code ) + * locale -> WordPress locale. If something wrong is used for the locale, the .mo files will not be loaded... + * rtl -> 1 if rtl language, 0 otherwise + * term_group -> language order when displayed + * + * Optional arguments that $args can contain: + * no_default_cat -> if set, no default category will be created for this language + * flag -> country code, see flags.php + * + * @since 1.2 + * + * @param array $args + * @return bool true if success / false if failed + */ + public function add_language( $args ) { + if ( ! $this->validate_lang( $args ) ) { + return false; + } + + // First the language taxonomy + $description = serialize( array( 'locale' => $args['locale'], 'rtl' => (int) $args['rtl'], 'flag_code' => empty( $args['flag'] ) ? '' : $args['flag'] ) ); + $r = wp_insert_term( $args['name'], 'language', array( 'slug' => $args['slug'], 'description' => $description ) ); + if ( is_wp_error( $r ) ) { + // Avoid an ugly fatal error if something went wrong ( reported once in the forum ) + add_settings_error( 'general', 'pll_add_language', __( 'Impossible to add the language.', 'polylang' ) ); + return false; + } + wp_update_term( (int) $r['term_id'], 'language', array( 'term_group' => (int) $args['term_group'] ) ); // can't set the term group directly in wp_insert_term + + // The term_language taxonomy + // Don't want shared terms so use a different slug + wp_insert_term( $args['name'], 'term_language', array( 'slug' => 'pll_' . $args['slug'] ) ); + + $this->clean_languages_cache(); // Udpate the languages list now ! + + if ( ! isset( $this->options['default_lang'] ) ) { + // If this is the first language created, set it as default language + $this->options['default_lang'] = $args['slug']; + update_option( 'polylang', $this->options ); + + // And assign default language to default category + $this->term->set_language( (int) get_option( 'default_category' ), (int) $r['term_id'] ); + } elseif ( empty( $args['no_default_cat'] ) ) { + $this->create_default_category( $args['slug'] ); + } + + // Init a mo_id for this language + $mo = new PLL_MO(); + $mo->export_to_db( $this->get_language( $args['slug'] ) ); + + /** + * Fires when a language is added + * + * @since 1.9 + * + * @param array $args arguments used to create the language + */ + do_action( 'pll_add_language', $args ); + + $this->clean_languages_cache(); // Again to set add mo_id in the cached languages list + flush_rewrite_rules(); // Refresh rewrite rules + + add_settings_error( 'general', 'pll_languages_created', __( 'Language added.', 'polylang' ), 'updated' ); + return true; + } + + /** + * Delete a language + * + * @since 1.2 + * + * @param int $lang_id language term_id + */ + public function delete_language( $lang_id ) { + $lang = $this->get_language( (int) $lang_id ); + + if ( empty( $lang ) ) { + return; + } + + // Oops ! we are deleting the default language... + // Need to do this before loosing the information for default category translations + if ( $this->options['default_lang'] == $lang->slug ) { + $slugs = $this->get_languages_list( array( 'fields' => 'slug' ) ); + $slugs = array_diff( $slugs, array( $lang->slug ) ); + + if ( ! empty( $slugs ) ) { + $this->update_default_lang( reset( $slugs ) ); // Arbitrary choice... + } else { + unset( $this->options['default_lang'] ); + } + } + + // Delete the translations + $this->update_translations( $lang->slug ); + + // Delete language option in widgets + foreach ( $GLOBALS['wp_registered_widgets'] as $widget ) { + if ( ! empty( $widget['callback'][0] ) && ! empty( $widget['params'][0]['number'] ) ) { + $obj = $widget['callback'][0]; + $number = $widget['params'][0]['number']; + if ( is_object( $obj ) && method_exists( $obj, 'get_settings' ) && method_exists( $obj, 'save_settings' ) ) { + $settings = $obj->get_settings(); + if ( isset( $settings[ $number ]['pll_lang'] ) && $settings[ $number ]['pll_lang'] == $lang->slug ) { + unset( $settings[ $number ]['pll_lang'] ); + $obj->save_settings( $settings ); + } + } + } + } + + // Delete menus locations + if ( ! empty( $this->options['nav_menus'] ) ) { + foreach ( $this->options['nav_menus'] as $theme => $locations ) { + foreach ( $locations as $location => $languages ) { + unset( $this->options['nav_menus'][ $theme ][ $location ][ $lang->slug ] ); + } + } + } + + // Delete users options + foreach ( get_users( array( 'fields' => 'ID' ) ) as $user_id ) { + delete_user_meta( $user_id, 'pll_filter_content', $lang->slug ); + delete_user_meta( $user_id, 'description_' . $lang->slug ); + } + + // Delete the string translations + $post = wpcom_vip_get_page_by_title( 'polylang_mo_' . $lang->term_id, OBJECT, 'polylang_mo' ); + if ( ! empty( $post ) ) { + wp_delete_post( $post->ID ); + } + + // Delete domain + unset( $this->options['domains'][ $lang->slug ] ); + + // Delete the language itself + wp_delete_term( $lang->term_id, 'language' ); + wp_delete_term( $lang->tl_term_id, 'term_language' ); + + // Update languages list + $this->clean_languages_cache(); + + update_option( 'polylang', $this->options ); + flush_rewrite_rules(); // refresh rewrite rules + add_settings_error( 'general', 'pll_languages_deleted', __( 'Language deleted.', 'polylang' ), 'updated' ); + } + + /** + * Update language properties + * + * List of arguments that $args must contain: + * lang_id -> term_id of the language to modify + * name -> language name ( used only for display ) + * slug -> language code ( ideally 2-letters ISO 639-1 language code + * locale -> WordPress locale. If something wrong is used for the locale, the .mo files will not be loaded... + * rtl -> 1 if rtl language, 0 otherwise + * term_group -> language order when displayed + * + * Optional arguments that $args can contain: + * flag -> country code, see flags.php + * + * @since 1.2 + * + * @param array $args + * @return bool true if success / false if failed + */ + public function update_language( $args ) { + $lang = $this->get_language( (int) $args['lang_id'] ); + if ( ! $this->validate_lang( $args, $lang ) ) { + return false; + } + + // Update links to this language in posts and terms in case the slug has been modified + $slug = $args['slug']; + $old_slug = $lang->slug; + + if ( $old_slug != $slug ) { + // Update the language slug in translations + $this->update_translations( $old_slug, $slug ); + + // Update language option in widgets + foreach ( $GLOBALS['wp_registered_widgets'] as $widget ) { + if ( ! empty( $widget['callback'][0] ) && ! empty( $widget['params'][0]['number'] ) ) { + $obj = $widget['callback'][0]; + $number = $widget['params'][0]['number']; + if ( is_object( $obj ) && method_exists( $obj, 'get_settings' ) && method_exists( $obj, 'save_settings' ) ) { + $settings = $obj->get_settings(); + if ( isset( $settings[ $number ]['pll_lang'] ) && $settings[ $number ]['pll_lang'] == $old_slug ) { + $settings[ $number ]['pll_lang'] = $slug; + $obj->save_settings( $settings ); + } + } + } + } + + // Update menus locations + if ( ! empty( $this->options['nav_menus'] ) ) { + foreach ( $this->options['nav_menus'] as $theme => $locations ) { + foreach ( $locations as $location => $languages ) { + if ( ! empty( $this->options['nav_menus'][ $theme ][ $location ][ $old_slug ] ) ) { + $this->options['nav_menus'][ $theme ][ $location ][ $slug ] = $this->options['nav_menus'][ $theme ][ $location ][ $old_slug ]; + unset( $this->options['nav_menus'][ $theme ][ $location ][ $old_slug ] ); + } + } + } + } + + // Update domains + if ( ! empty( $this->options['domains'][ $old_slug ] ) ) { + $this->options['domains'][ $slug ] = $this->options['domains'][ $old_slug ]; + unset( $this->options['domains'][ $old_slug ] ); + } + + // Update the default language option if necessary + if ( $this->options['default_lang'] == $old_slug ) { + $this->options['default_lang'] = $slug; + } + } + + update_option( 'polylang', $this->options ); + + // And finally update the language itself + $description = serialize( array( 'locale' => $args['locale'], 'rtl' => (int) $args['rtl'], 'flag_code' => empty( $args['flag'] ) ? '' : $args['flag'] ) ); + wp_update_term( (int) $lang->term_id, 'language', array( 'slug' => $slug, 'name' => $args['name'], 'description' => $description, 'term_group' => (int) $args['term_group'] ) ); + wp_update_term( (int) $lang->tl_term_id, 'term_language', array( 'slug' => 'pll_' . $slug, 'name' => $args['name'] ) ); + + /** + * Fires when a language is added + * + * @since 1.9 + * + * @param array $args arguments used to modify the language + */ + do_action( 'pll_update_language', $args ); + + $this->clean_languages_cache(); + flush_rewrite_rules(); // Refresh rewrite rules + add_settings_error( 'general', 'pll_languages_updated', __( 'Language updated.', 'polylang' ), 'updated' ); + return true; + } + + /** + * Validates data entered when creating or updating a language + * @see PLL_Admin_Model::add_language + * + * @since 0.4 + * + * @param array $args + * @param object $lang optional the language currently updated, the language is created if not set + * @return bool true if success / false if failed + */ + protected function validate_lang( $args, $lang = null ) { + // Validate locale with the same pattern as WP 4.3. See #28303 + if ( ! preg_match( '#^[a-z]{2,3}(?:_[A-Z]{2})?(?:_[a-z0-9]+)?$#', $args['locale'], $matches ) ) { + add_settings_error( 'general', 'pll_invalid_locale', __( 'Enter a valid WordPress locale', 'polylang' ) ); + } + + // Validate slug characters + if ( ! preg_match( '#^[a-z_-]+$#', $args['slug'] ) ) { + add_settings_error( 'general', 'pll_invalid_slug', __( 'The language code contains invalid characters', 'polylang' ) ); + } + + // Validate slug is unique + if ( $this->get_language( $args['slug'] ) && ( null === $lang || ( isset( $lang ) && $lang->slug != $args['slug'] ) ) ) { + add_settings_error( 'general', 'pll_non_unique_slug', __( 'The language code must be unique', 'polylang' ) ); + } + + // Validate name + // No need to sanitize it as wp_insert_term will do it for us + if ( empty( $args['name'] ) ) { + add_settings_error( 'general', 'pll_invalid_name', __( 'The language must have a name', 'polylang' ) ); + } + + // Validate flag + if ( ! empty( $args['flag'] ) && ! file_exists( POLYLANG_DIR . '/flags/' . $args['flag'] . '.png' ) ) { + add_settings_error( 'general', 'pll_invalid_flag', __( 'The flag does not exist', 'polylang' ) ); + } + + return get_settings_errors() ? false : true; + } + + /** + * Used to set the language of posts or terms in mass + * + * @since 1.2 + * + * @param string $type either 'post' or 'term' + * @param array $ids array of post ids or term ids + * @param object|string $lang object or slug + */ + public function set_language_in_mass( $type, $ids, $lang ) { + global $wpdb; + + $ids = array_map( 'intval', $ids ); + $lang = $this->get_language( $lang ); + $tt_id = 'term' === $type ? $lang->tl_term_taxonomy_id : $lang->term_taxonomy_id; + + foreach ( $ids as $id ) { + $values[] = $wpdb->prepare( '( %d, %d )', $id, $tt_id ); + } + + if ( ! empty( $values ) ) { + $values = array_unique( $values ); + $wpdb->query( "INSERT INTO $wpdb->term_relationships ( object_id, term_taxonomy_id ) VALUES " . implode( ',', $values ) ); + $lang->update_count(); // Updating term count is mandatory ( thanks to AndyDeGroo ) + } + + if ( 'term' === $type ) { + clean_term_cache( $ids, 'term_language' ); + + foreach ( $ids as $id ) { + $translations[] = array( $lang->slug => $id ); + } + + if ( ! empty( $translations ) ) { + $this->set_translation_in_mass( 'term', $translations ); + } + } else { + clean_term_cache( $ids, 'language' ); + } + } + + /** + * Used to create a translations groups in mass + * + * @since 1.6.3 + * + * @param string $type either 'post' or 'term' + * @param array $translations array of translations arrays + */ + public function set_translation_in_mass( $type, $translations ) { + global $wpdb; + + $taxonomy = $type . '_translations'; + + foreach ( $translations as $t ) { + $term = uniqid( 'pll_' ); // the term name + $terms[] = $wpdb->prepare( '( "%s", "%s" )', $term, $term ); + $slugs[] = $wpdb->prepare( '"%s"', $term ); + $description[ $term ] = serialize( $t ); + $count[ $term ] = count( $t ); + } + + // Insert terms + if ( ! empty( $terms ) ) { + $terms = array_unique( $terms ); + $wpdb->query( "INSERT INTO $wpdb->terms ( slug, name ) VALUES " . implode( ',', $terms ) ); + } + + // Get all terms with their term_id + $terms = $wpdb->get_results( "SELECT term_id, slug FROM $wpdb->terms WHERE slug IN ( " . implode( ',', $slugs ) . ' )' ); + + // Prepare terms taxonomy relationship + foreach ( $terms as $term ) { + $term_ids[] = $term->term_id; + $tts[] = $wpdb->prepare( '( %d, "%s", "%s", %d )', $term->term_id, $taxonomy, $description[ $term->slug ], $count[ $term->slug ] ); + } + + // Insert term_taxonomy + if ( ! empty( $tts ) ) { + $tts = array_unique( $tts ); + $wpdb->query( "INSERT INTO $wpdb->term_taxonomy ( term_id, taxonomy, description, count ) VALUES " . implode( ',', $tts ) ); + } + + // Get all terms with term_taxonomy_id + $terms = get_terms( $taxonomy, array( 'hide_empty' => false ) ); + + // Prepare objects relationships + foreach ( $terms as $term ) { + $t = unserialize( $term->description ); + if ( in_array( $t, $translations ) ) { + foreach ( $t as $object_id ) { + if ( ! empty( $object_id ) ) { + $trs[] = $wpdb->prepare( '( %d, %d )', $object_id, $term->term_taxonomy_id ); + } + } + } + } + + // Insert term_relationships + if ( ! empty( $trs ) ) { + $wpdb->query( "INSERT INTO $wpdb->term_relationships ( object_id, term_taxonomy_id ) VALUES " . implode( ',', $trs ) ); + $trs = array_unique( $trs ); + } + + clean_term_cache( $term_ids, $taxonomy ); + } + + /** + * Returns unstranslated posts and terms ids ( used in settings ) + * + * @since 0.9 + * + * @return array array made of an array of post ids and an array of term ids + */ + public function get_objects_with_no_lang() { + $posts = get_posts( array( + 'numberposts' => -1, + 'nopaging' => true, + 'post_type' => $this->get_translated_post_types(), + 'post_status' => 'any', + 'fields' => 'ids', + 'tax_query' => array( + array( + 'taxonomy' => 'language', + 'terms' => $this->get_languages_list( array( 'fields' => 'term_id' ) ), + 'operator' => 'NOT IN', + ), + ), + ) ); + + $terms = get_terms( $this->get_translated_taxonomies(), array( 'get' => 'all', 'fields' => 'ids' ) ); + $groups = $this->get_languages_list( array( 'fields' => 'tl_term_id' ) ); + $tr_terms = get_objects_in_term( $groups, 'term_language' ); + $terms = array_unique( array_diff( $terms, $tr_terms ) ); // array_unique to avoid duplicates if a term is in more than one taxonomy + $terms = array_map( 'intval', $terms ); + + /** + * Filter the list of untranslated posts ids and terms ids + * + * @since 0.9 + * + * @param bool|array $objects false if no ids found, list of post and/or term ids otherwise + */ + return apply_filters( 'pll_get_objects_with_no_lang', empty( $posts ) && empty( $terms ) ? false : array( 'posts' => $posts, 'terms' => $terms ) ); + } + + /** + * Used to delete translations or update the translations when a language slug has been modified in settings + * + * @since 0.5 + * + * @param string $old_slug the old language slug + * @param string $new_slug optional, the new language slug, if not set it means the correspondant has been deleted + */ + public function update_translations( $old_slug, $new_slug = '' ) { + global $wpdb; + + $terms = get_terms( array( 'post_translations', 'term_translations' ) ); + + foreach ( $terms as $term ) { + $term_ids[ $term->taxonomy ][] = $term->term_id; + $tr = unserialize( $term->description ); + if ( ! empty( $tr[ $old_slug ] ) ) { + if ( $new_slug ) { + $tr[ $new_slug ] = $tr[ $old_slug ]; // Suppress this for delete + } else { + $dr['id'][] = (int) $tr[ $old_slug ]; + $dr['tt'][] = (int) $term->term_taxonomy_id; + } + unset( $tr[ $old_slug ] ); + + if ( empty( $tr ) || 1 == count( $tr ) ) { + $dt['t'][] = (int) $term->term_id; + $dt['tt'][] = (int) $term->term_taxonomy_id; + } else { + $ut['case'][] = $wpdb->prepare( 'WHEN %d THEN %s', $term->term_id, serialize( $tr ) ); + $ut['in'][] = (int) $term->term_id; + } + } + } + + // Delete relationships + if ( ! empty( $dr ) ) { + $wpdb->query( " + DELETE FROM $wpdb->term_relationships + WHERE object_id IN ( " . implode( ',', $dr['id'] ) . ' ) + AND term_taxonomy_id IN ( ' . implode( ',', $dr['tt'] ) . ' ) + ' ); + } + + // Delete terms + if ( ! empty( $dt ) ) { + $wpdb->query( "DELETE FROM $wpdb->terms WHERE term_id IN ( " . implode( ',', $dt['t'] ) . ' )' ); + $wpdb->query( "DELETE FROM $wpdb->term_taxonomy WHERE term_taxonomy_id IN ( " . implode( ',', $dt['tt'] ) . ' )' ); + } + + // Update terms + if ( ! empty( $ut ) ) { + $wpdb->query( " + UPDATE $wpdb->term_taxonomy + SET description = ( CASE term_id " . implode( ' ', $ut['case'] ) . ' END ) + WHERE term_id IN ( ' . implode( ',', $ut['in'] ) . ' ) + ' ); + } + + if ( ! empty( $term_ids ) ) { + foreach ( $term_ids as $taxonomy => $ids ) { + clean_term_cache( $ids, $taxonomy ); + } + } + } + + /** + * Updates the default language + * taking care to update the default category & the nav menu locations + * + * @since 1.8 + * + * @param string $slug new language slug + */ + public function update_default_lang( $slug ) { + // The nav menus stored in theme locations should be in the default language + $theme = get_stylesheet(); + if ( ! empty( $this->options['nav_menus'][ $theme ] ) ) { + foreach ( $this->options['nav_menus'][ $theme ] as $key => $loc ) { + $menus[ $key ] = empty( $loc[ $slug ] ) ? 0 : $loc[ $slug ]; + } + set_theme_mod( 'nav_menu_locations', $menus ); + } + + // The default category should be in the default language + $default_cats = $this->term->get_translations( get_option( 'default_category' ) ); + if ( isset( $default_cats[ $slug ] ) ) { + update_option( 'default_category', $default_cats[ $slug ] ); + } + + // Update options + $this->options['default_lang'] = $slug; + update_option( 'polylang', $this->options ); + + $this->clean_languages_cache(); + flush_rewrite_rules(); + } +} diff --git a/pole-sbv-content/plugins/polylang/admin/admin-nav-menu.php b/pole-sbv-content/plugins/polylang/admin/admin-nav-menu.php new file mode 100644 index 00000000..a2306a54 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/admin-nav-menu.php @@ -0,0 +1,331 @@ +theme = get_option( 'stylesheet' ); + + // Populates nav menus locations + // Since WP 4.4, must be done before customize_register is fired + add_filter( 'theme_mod_nav_menu_locations', array( $this, 'theme_mod_nav_menu_locations' ), 20 ); + + // Integration in the WP menu interface + add_action( 'admin_init', array( $this, 'admin_init' ) ); // after Polylang upgrade + } + + /** + * Setups filters and terms + * adds the language switcher metabox and create new nav menu locations + * + * @since 1.1 + */ + public function admin_init() { + add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); + add_action( 'wp_update_nav_menu_item', array( $this, 'wp_update_nav_menu_item' ), 10, 2 ); + add_filter( 'wp_get_nav_menu_items', array( $this, 'translate_switcher_title' ) ); + + // Translation of menus based on chosen locations + add_filter( 'pre_update_option_theme_mods_' . $this->theme, array( $this, 'pre_update_option_theme_mods' ) ); + add_action( 'delete_nav_menu', array( $this, 'delete_nav_menu' ) ); + + // Filter _wp_auto_add_pages_to_menu by language + add_action( 'transition_post_status', array( $this, 'auto_add_pages_to_menu' ), 5, 3 ); // before _wp_auto_add_pages_to_menu + + // FIXME is it possible to choose the order ( after theme locations in WP3.5 and older ) ? + // FIXME not displayed if Polylang is activated before the first time the user goes to nav menus http://core.trac.wordpress.org/ticket/16828 + add_meta_box( 'pll_lang_switch_box', __( 'Language switcher', 'polylang' ), array( $this, 'lang_switch' ), 'nav-menus', 'side', 'high' ); + + $this->create_nav_menu_locations(); + } + + /** + * Language switcher metabox + * The checkbox and all hidden fields are important + * Thanks to John Morris for his very interesting post http://www.johnmorrisonline.com/how-to-add-a-fully-functional-custom-meta-box-to-wordpress-navigation-menus/ + * + * @since 1.1 + */ + public function lang_switch() { + global $_nav_menu_placeholder, $nav_menu_selected_id; + $_nav_menu_placeholder = 0 > $_nav_menu_placeholder ? $_nav_menu_placeholder - 1 : -1; + ?> +
+
+
    +
  • + + + + +
  • +
+
+

+ + class="button-secondary submit-add-to-menu right" value="" name="add-post-type-menu-item" id="submit-posttype-lang-switch"> + + +

+
+ base ) { + return; + } + + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; + wp_enqueue_script( 'pll_nav_menu', plugins_url( '/js/nav-menu' . $suffix . '.js', POLYLANG_FILE ), array( 'jquery' ), POLYLANG_VERSION ); + + $data['strings'] = PLL_Switcher::get_switcher_options( 'menu', 'string' ); // The strings for the options + $data['title'] = __( 'Language switcher', 'polylang' ); // The title + + // Get all language switcher menu items + $items = get_posts( array( + 'numberposts' => -1, + 'nopaging' => true, + 'post_type' => 'nav_menu_item', + 'fields' => 'ids', + 'meta_key' => '_pll_menu_item', + ) ); + + // The options values for the language switcher + $data['val'] = array(); + foreach ( $items as $item ) { + $data['val'][ $item ] = get_post_meta( $item, '_pll_menu_item', true ); + } + + // Send all these data to javascript + wp_localize_script( 'pll_nav_menu', 'pll_data', $data ); + } + + /** + * Save our menu item options + * + * @since 1.1 + * + * @param int $menu_id not used + * @param int $menu_item_db_id + */ + public function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0 ) { + if ( empty( $_POST['menu-item-url'][ $menu_item_db_id ] ) || '#pll_switcher' != $_POST['menu-item-url'][ $menu_item_db_id ] ) { + return; + } + + // Security check as 'wp_update_nav_menu_item' can be called from outside WP admin + if ( current_user_can( 'edit_theme_options' ) ) { + check_admin_referer( 'update-nav_menu', 'update-nav-menu-nonce' ); + + $options = array( 'hide_if_no_translation' => 0, 'hide_current' => 0, 'force_home' => 0, 'show_flags' => 0, 'show_names' => 1, 'dropdown' => 0 ); // Default values + // Our jQuery form has not been displayed + if ( empty( $_POST['menu-item-pll-detect'][ $menu_item_db_id ] ) ) { + if ( ! get_post_meta( $menu_item_db_id, '_pll_menu_item', true ) ) { // Our options were never saved + update_post_meta( $menu_item_db_id, '_pll_menu_item', $options ); + } + } + else { + foreach ( $options as $opt => $v ) { + $options[ $opt ] = empty( $_POST[ 'menu-item-' . $opt ][ $menu_item_db_id ] ) ? 0 : 1; + } + update_post_meta( $menu_item_db_id, '_pll_menu_item', $options ); // Allow us to easily identify our nav menu item + } + } + } + + /** + * Translates the language switcher menu items title in case the user switches the admin language + * + * @since 1.1.1 + * + * @param array $items + * @return array modified $items + */ + public function translate_switcher_title( $items ) { + foreach ( $items as $item ) { + if ( '#pll_switcher' == $item->url ) { + $item->post_title = __( 'Language switcher', 'polylang' ); + } + } + return $items; + } + + /** + * Assign menu languages and translations based on ( temporary ) locations + * + * @since 1.8 + * + * @param array $locations nav menu locations + * @return array + */ + public function update_nav_menu_locations( $locations ) { + $default = $this->options['default_lang']; + + // Extract language and menu from locations + foreach ( $locations as $loc => $menu ) { + $infos = $this->explode_location( $loc ); + $this->options['nav_menus'][ $this->theme ][ $infos['location'] ][ $infos['lang'] ] = $menu; + if ( $this->options['default_lang'] != $infos['lang'] ) { + unset( $locations[ $loc ] ); // Remove temporary locations before database update + } + } + + update_option( 'polylang', $this->options ); + return $locations; + } + + /** + * Assign menu languages and translations based on ( temporary ) locations + * + * @since 1.1 + * + * @param array $mods theme mods + * @return unmodified $mods + */ + public function pre_update_option_theme_mods( $mods ) { + if ( current_user_can( 'edit_theme_options' ) && isset( $mods['nav_menu_locations'] ) ) { + + // Manage Locations tab in Appearance -> Menus + if ( isset( $_GET['action'] ) && 'locations' == $_GET['action'] ) { + check_admin_referer( 'save-menu-locations' ); + $this->options['nav_menus'][ $this->theme ] = array(); + } + + // Edit Menus tab in Appearance -> Menus + // Add the test of $_POST['update-nav-menu-nonce'] to avoid conflict with Vantage theme + elseif ( isset( $_POST['action'], $_POST['update-nav-menu-nonce'] ) && 'update' == $_POST['action'] ) { + check_admin_referer( 'update-nav_menu', 'update-nav-menu-nonce' ); + $this->options['nav_menus'][ $this->theme ] = array(); + } + + // Customizer + // Don't reset locations in this case. + // see http://wordpress.org/support/topic/menus-doesnt-show-and-not-saved-in-theme-settings-multilingual-site + elseif ( isset( $_POST['action'] ) && 'customize_save' == $_POST['action'] ) { + check_ajax_referer( 'save-customize_' . $GLOBALS['wp_customize']->get_stylesheet(), 'nonce' ); + } + + else { + return $mods; // No modification for nav menu locations + } + + $mods['nav_menu_locations'] = $this->update_nav_menu_locations( $mods['nav_menu_locations'] ); + } + return $mods; + } + + /** + * Fills temporary menu locations based on menus translations + * + * @since 1.2 + * + * @param bool|array $menus + * @return bool|array modified list of menu locations + */ + public function theme_mod_nav_menu_locations( $menus ) { + // Prefill locations with 0 value in case a location does not exist in $menus + $locations = get_registered_nav_menus(); + if ( is_array( $locations ) ) { + $locations = array_fill_keys( array_keys( $locations ), 0 ); + $menus = is_array( $menus ) ? array_merge( $locations , $menus ) : $locations; + } + + if ( is_array( $menus ) ) { + foreach ( $menus as $loc => $menu ) { + foreach ( $this->model->get_languages_list() as $lang ) { + if ( ! empty( $this->options['nav_menus'][ $this->theme ][ $loc ][ $lang->slug ] ) && term_exists( $this->options['nav_menus'][ $this->theme ][ $loc ][ $lang->slug ], 'nav_menu' ) ) { + $menus[ $this->combine_location( $loc, $lang ) ] = $this->options['nav_menus'][ $this->theme ][ $loc ][ $lang->slug ]; + } + } + } + } + + return $menus; + } + + /** + * Removes the nav menu term_id from the locations stored in Polylang options when a nav menu is deleted + * + * @since 1.7.3 + * + * @param int $term_id nav menu id + */ + function delete_nav_menu( $term_id ) { + if ( isset( $this->options['nav_menus'] ) ) { + foreach ( $this->options['nav_menus'] as $theme => $locations ) { + foreach ( $locations as $loc => $languages ) { + foreach ( $languages as $lang => $menu_id ) { + if ( $menu_id === $term_id ) { + unset( $this->options['nav_menus'][ $theme ][ $loc ][ $lang ] ); + } + } + } + } + + update_option( 'polylang', $this->options ); + } + } + + /** + * Filters the option nav_menu_options for auto added pages to menu + * + * @since 0.9.4 + * + * @param array $options + * @return array Modified options + */ + public function nav_menu_options( $options ) { + $options['auto_add'] = array_intersect( $options['auto_add'], $this->auto_add_menus ); + return $options; + } + + /** + * Filters _wp_auto_add_pages_to_menu by language + * + * @since 0.9.4 + * + * @param string $new_status Transition to this post status. + * @param string $old_status Previous post status. + * @param object $post Post data. + */ + public function auto_add_pages_to_menu( $new_status, $old_status, $post ) { + if ( 'publish' != $new_status || 'publish' == $old_status || 'page' != $post->post_type || ! empty( $post->post_parent ) || ! ( $lang = $this->model->post->get_language( $post->ID ) ) ) { + return; + } + + if ( ! empty( $this->options['nav_menus'][ $this->theme ] ) ) { + $this->auto_add_menus = array(); + + // Get all the menus in the page language + foreach ( $this->options['nav_menus'][ $this->theme ] as $loc ) { + if ( ! empty( $loc[ $lang->slug ] ) ) { + $this->auto_add_menus[] = $loc[ $lang->slug ]; + } + } + + add_filter( 'option_nav_menu_options', array( $this, 'nav_menu_options' ) ); + } + } +} diff --git a/pole-sbv-content/plugins/polylang/admin/admin-static-pages.php b/pole-sbv-content/plugins/polylang/admin/admin-static-pages.php new file mode 100644 index 00000000..b45cb62d --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/admin-static-pages.php @@ -0,0 +1,165 @@ +ID ) && empty( $post->post_content ) ) { + add_action( 'edit_form_after_title', '_wp_posts_page_notice' ); + remove_post_type_support( $post_type, 'editor' ); + } + } + } + + /** + * Add post state for translations of the front page and posts page + * + * @since 1.8 + * + * @param array $post_states + * @param object $post + * @return array + */ + public function display_post_states( $post_states, $post ) { + if ( in_array( $post->ID, $this->model->get_languages_list( array( 'fields' => 'page_on_front' ) ) ) ) { + $post_states['page_on_front'] = __( 'Front Page' ); + } + + if ( in_array( $post->ID, $this->model->get_languages_list( array( 'fields' => 'page_for_posts' ) ) ) ) { + $post_states['page_for_posts'] = __( 'Posts Page' ); + } + + return $post_states; + } + + /** + * Refresh language cache when a static front page has been translated + * + * @since 1.8 + * + * @param int $post_id Not used + * @param object $post Not used + * @param array $translations + */ + public function pll_save_post( $post_id, $post, $translations ) { + if ( in_array( $this->page_on_front, $translations ) ) { + $this->model->clean_languages_cache(); + } + } + + /** + * Checks if a page is translted in all languages + * + * @since 2.2 + * + * @param int $page_id + * @return bool + */ + protected function is_page_translated( $page_id ) { + if ( $page_id ) { + $translations = count( $this->model->post->get_translations( $page_id ) ); + $languages = count( $this->model->get_languages_list() ); + + if ( $languages > 1 && $translations != $languages ) { + return false; + } + } + + return true; + } + + /** + * Prevents choosing an untranslated static front page + * Displays an error message + * + * @since 1.6 + * + * @param int $page_id New page on front page id + * @param int $old_id Old page on front page_id + * @return int + */ + public function update_page_on_front( $page_id, $old_id ) { + if ( ! $this->is_page_translated( $page_id ) ) { + $page_id = $old_id; + add_settings_error( 'reading', 'pll_page_on_front_error', __( 'The chosen static front page must be translated in all languages.', 'polylang' ) ); + } + + return $page_id; + } + + /** + * Displays an error message in the customizer when choosing an untranslated static front page + * + * @since 2.2 + * + * @param object $validity WP_Error object + * @param int $page_id New page on front page id + * @return object + */ + public function customize_validate_page_on_front( $validity, $page_id ) { + if ( ! $this->is_page_translated( $page_id ) ) { + return new WP_Error( 'pll_page_on_front_error', __( 'The chosen static front page must be translated in all languages.', 'polylang' ) ); + } + + return $validity; + } + + /** + * Prevents WP resetting the option if the admin language filter is active for a language with no pages + * + * @since 1.9.3 + * + * @param string $value + * @param string $old_value + * @return string + */ + public function update_show_on_front( $value, $old_value ) { + if ( ! empty( $GLOBALS['pagenow'] ) && 'options-reading.php' === $GLOBALS['pagenow'] && 'posts' === $value && ! get_pages() && get_pages( array( 'lang' => '' ) ) ) { + $value = $old_value; + } + return $value; + } +} diff --git a/pole-sbv-content/plugins/polylang/admin/admin-strings.php b/pole-sbv-content/plugins/polylang/admin/admin-strings.php new file mode 100644 index 00000000..6374ac22 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/admin-strings.php @@ -0,0 +1,137 @@ + array( + 'blogname' => __( 'Site Title' ), + 'blogdescription' => __( 'Tagline' ), + 'date_format' => __( 'Date Format' ), + 'time_format' => __( 'Time Format' ), + ), + 'widget_title' => __( 'Widget title', 'polylang' ), + 'widget_text' => __( 'Widget text', 'polylang' ), + ); + + // WP strings + foreach ( self::$default_strings['options'] as $option => $string ) { + self::register_string( $string, get_option( $option ), 'WordPress' ); + } + + // widgets titles + global $wp_registered_widgets; + $sidebars = wp_get_sidebars_widgets(); + foreach ( $sidebars as $sidebar => $widgets ) { + if ( 'wp_inactive_widgets' == $sidebar || empty( $widgets ) ) { + continue; + } + + foreach ( $widgets as $widget ) { + // nothing can be done if the widget is created using pre WP2.8 API :( + // there is no object, so we can't access it to get the widget options + if ( ! isset( $wp_registered_widgets[ $widget ]['callback'][0] ) || ! is_object( $wp_registered_widgets[ $widget ]['callback'][0] ) || ! method_exists( $wp_registered_widgets[ $widget ]['callback'][0], 'get_settings' ) ) { + continue; + } + + $widget_settings = $wp_registered_widgets[ $widget ]['callback'][0]->get_settings(); + $number = $wp_registered_widgets[ $widget ]['params'][0]['number']; + + // don't enable widget translation if the widget is visible in only one language or if there is no title + if ( empty( $widget_settings[ $number ]['pll_lang'] ) ) { + if ( isset( $widget_settings[ $number ]['title'] ) && $title = $widget_settings[ $number ]['title'] ) { + self::register_string( self::$default_strings['widget_title'], $title, 'Widget' ); + } + + if ( isset( $widget_settings[ $number ]['text'] ) && $text = $widget_settings[ $number ]['text'] ) { + self::register_string( self::$default_strings['widget_text'], $text, 'Widget', true ); + } + } + } + } + + /** + * Filter the list of strings registered for translation + * Mainly for use by our PLL_WPML_Compat class + * + * @since 1.0.2 + * + * @param array $strings list of strings + */ + self::$strings = apply_filters( 'pll_get_strings', self::$strings ); + return self::$strings; + } + + /** + * performs the sanitization ( before saving in DB ) of default strings translations + * + * @since 1.6 + * + * @param string $translation translation to sanitize + * @param string $name unique name for the string + * @return string + */ + static public function sanitize_string_translation( $translation, $name ) { + $translation = wp_unslash( trim( $translation ) ); + + if ( false !== ( $option = array_search( $name, self::$default_strings['options'], true ) ) ) { + $translation = sanitize_option( $option, $translation ); + } + + if ( $name == self::$default_strings['widget_title'] ) { + $translation = strip_tags( $translation ); + } + + if ( $name == self::$default_strings['widget_text'] && ! current_user_can( 'unfiltered_html' ) ) { + $translation = wp_unslash( wp_filter_post_kses( addslashes( $translation ) ) ); // wp_filter_post_kses() expects slashed + } + + return $translation; + } +} diff --git a/pole-sbv-content/plugins/polylang/admin/admin.php b/pole-sbv-content/plugins/polylang/admin/admin.php new file mode 100644 index 00000000..ad53080b --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/admin.php @@ -0,0 +1,116 @@ + inherited, reference to Polylang options array + * model => inherited, reference to PLL_Model object + * links_model => inherited, reference to PLL_Links_Model object + * links => inherited, reference to PLL_Admin_Links object + * static_pages => inherited, reference to PLL_Admin_Static_Pages object + * filters_links => inherited, reference to PLL_Filters_Links object + * curlang => inherited, optional, current language used to filter the content (language of the post or term being edited, equal to filter_lang otherwise) + * filter_lang => inherited, optional, current status of the admin languages filter (in the admin bar) + * pref_lang => inherited, preferred language used as default when saving posts or terms + * filters => reference to PLL_Filters object + * filters_columns => reference to PLL_Admin_Filters_Columns object + * filters_post => reference to PLL_Admin_Filters_Post object + * filters_term => reference to PLL_Admin_filters_Term object + * nav_menu => reference to PLL_Admin_Nav_Menu object + * filters_media => optional, reference to PLL_Admin_Filters_Media object + * + * @since 1.2 + */ +class PLL_Admin extends PLL_Admin_Base { + public $filters, $filters_columns, $filters_post, $filters_term, $nav_menu, $sync, $filters_media; + + /** + * loads the polylang text domain + * setups filters and action needed on all admin pages and on plugins page + * + * @since 1.2 + * + * @param object $links_model + */ + public function __construct( &$links_model ) { + parent::__construct( $links_model ); + + // adds a 'settings' link in the plugins table + add_filter( 'plugin_action_links_' . POLYLANG_BASENAME, array( $this, 'plugin_action_links' ) ); + add_action( 'in_plugin_update_message-' . POLYLANG_BASENAME, array( $this, 'plugin_update_message' ), 10, 2 ); + } + + /** + * setups filters and action needed on all admin pages and on plugins page + * loads the settings pages or the filters base on the request + * + * @since 1.2 + */ + public function init() { + parent::init(); + + // setup filters for admin pages + // priority 5 to make sure filters are there before customize_register is fired + if ( $this->model->get_languages_list() ) { + add_action( 'wp_loaded', array( $this, 'add_filters' ), 5 ); + } + } + + /** + * adds a 'settings' link in the plugins table + * + * @since 0.1 + * + * @param array $links list of links associated to the plugin + * @return array modified list of links + */ + public function plugin_action_links( $links ) { + array_unshift( $links, '' . __( 'Settings', 'polylang' ) . '' ); + return $links; + } + + /** + * adds the upgrade notice in plugins table + * + * @since 1.1.6 + * + * @param array $plugin_data Not used + * @param object $r Plugin update data + */ + function plugin_update_message( $plugin_data, $r ) { + if ( isset( $r->upgrade_notice ) ) { + printf( '

%s

', esc_html( $r->upgrade_notice ) ); + } + } + + /** + * setup filters for admin pages + * + * @since 1.2 + */ + public function add_filters() { + // all these are separated just for convenience and maintainability + $classes = array( 'Filters', 'Filters_Columns', 'Filters_Post', 'Filters_Term', 'Nav_Menu', 'Sync' ); + + // don't load media filters if option is disabled or if user has no right + if ( $this->options['media_support'] && ( $obj = get_post_type_object( 'attachment' ) ) && ( current_user_can( $obj->cap->edit_posts ) || current_user_can( $obj->cap->create_posts ) ) ) { + $classes[] = 'Filters_Media'; + } + + foreach ( $classes as $class ) { + $obj = strtolower( $class ); + + /** + * Filter the class to instantiate when loding admin filters + * + * @since 1.5 + * + * @param string $class class name + */ + $class = apply_filters( 'pll_' . $obj, 'PLL_Admin_' . $class ); + $this->$obj = new $class( $this ); + } + } +} diff --git a/pole-sbv-content/plugins/polylang/admin/view-translations-media.php b/pole-sbv-content/plugins/polylang/admin/view-translations-media.php new file mode 100644 index 00000000..a9c7509a --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/view-translations-media.php @@ -0,0 +1,44 @@ + +

+ + model->get_languages_list() as $language ) { + if ( $language->term_id == $lang->term_id ) { + continue; + } + ?> + + + + + +
flag; ?>name ); ?> + model->post->get_translation( $post_id, $language ) ) && $translation_id !== $post_id ) { + printf( + '%s', + esc_attr( $language->slug ), + esc_attr( $translation_id ), + $this->links->edit_post_translation_link( $translation_id ) + ); + } + + // No translation + else { + echo $this->links->new_post_translation_link( $post_id, $language ); + } + ?> +
diff --git a/pole-sbv-content/plugins/polylang/admin/view-translations-post.php b/pole-sbv-content/plugins/polylang/admin/view-translations-post.php new file mode 100644 index 00000000..bea394db --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/view-translations-post.php @@ -0,0 +1,70 @@ + +

+ + model->get_languages_list() as $language ) { + if ( $language->term_id == $lang->term_id ) { + continue; + } + + $value = $this->model->post->get_translation( $post_ID, $language ); + if ( ! $value || $value == $post_ID ) { // $value == $post_ID happens if the post has been ( auto )saved before changing the language + $value = ''; + } + + if ( isset( $_GET['from_post'] ) ) { + $value = $this->model->post->get( (int) $_GET['from_post'], $language ); + } + + $link = $add_link = $this->links->new_post_translation_link( $post_ID, $language ); + + if ( $value ) { + $selected = get_post( $value ); + $link = $this->links->edit_post_translation_link( $value ); + } + ?> + + + + + slug ); + ?> + + + +
flag ? $language->flag : esc_html( $language->slug ); ?> + %2$s + + ', + esc_attr( $language->slug ), + /* translators: accessibility text */ + esc_html__( 'Translation', 'polylang' ), + empty( $value ) ? 0 : esc_attr( $selected->ID ), + empty( $value ) ? '' : esc_attr( $selected->post_title ), + empty( $link ) ? ' disabled="disabled"' : '', + esc_attr( $language->get_locale( 'display' ) ), + $language->is_rtl ? 'rtl' : 'ltr' + ); + ?> +
diff --git a/pole-sbv-content/plugins/polylang/admin/view-translations-term.php b/pole-sbv-content/plugins/polylang/admin/view-translations-term.php new file mode 100644 index 00000000..9e7d8459 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/admin/view-translations-term.php @@ -0,0 +1,97 @@ + + + + +

+ + + model->get_languages_list() as $language ) { + if ( $language->term_id == $lang->term_id ) { + continue; + } + + // Look for any existing translation in this language + // Take care not to propose a self link + $translation = 0; + if ( isset( $term_id ) && ( $translation_id = $this->model->term->get_translation( $term_id, $language ) ) && $translation_id != $term_id ) { + $translation = get_term( $translation_id, $taxonomy ); + } + if ( isset( $_GET['from_tag'] ) && ( $translation_id = $this->model->term->get( (int) $_GET['from_tag'], $language ) ) && ! $this->model->term->get_translation( $translation_id, $lang ) ) { + $translation = get_term( $translation_id, $taxonomy ); + } + + if ( isset( $term_id ) ) { // Do not display the add new link in add term form ( $term_id not set !!! ) + $link = $add_link = $this->links->new_term_translation_link( $term_id, $taxonomy, $post_type, $language ); + } + + if ( $translation ) { + $link = $this->links->edit_term_translation_link( $translation->term_id, $taxonomy, $post_type ); + } + ?> + + + + + + + + + +
+ flag; ?> + %2$s', + isset( $term_id ) ? '' : ' screen-reader-text', + esc_html( $language->name ) + ); + ?> + + %2$s + + ', + esc_attr( $language->slug ), + /* translators: accessibility text */ + esc_html__( 'Translation', 'polylang' ), + empty( $translation ) ? 0 : esc_attr( $translation->term_id ), + empty( $translation ) ? '' : esc_attr( $translation->name ), + empty( $disabled ) ? '' : ' disabled="disabled"', + esc_attr( $language->get_locale( 'display' ) ), + $language->is_rtl ? 'rtl' : 'ltr' + ); + ?> +
+ + + curlang ) is now equal to the language of current post or term being edited (#19) +* The sample permalink is now updated when changing the language in the Languages metabox +* Revamp the wpml-config.xml reader to use simplexml instead of our custom xml parser +* Improve support for the WPML API (including Hook API introduced in WPML 3.2) +* Add support for translation of meta titles and descriptions of custom post types and custom taxonomies in Yoast SEO +* Replace uncached functions by WPCOM VIP functions when available +* Improve compatibility with WP 4.6 +* Fix parent category wrongly assigned to post when synchronizing children categories (#21) +* Fix custom fonts not loaded when using multiple domains or subdomains +* Fix remove_accents() not working for German and Danish (#24) +* Fix incorrect static front pages urls on backend +* Fix impossible to directly enter the page number in strings translation table (introduced in 1.9.3) +* Fix conflict with WP Sweep (needs WP Sweep 1.0.8+) +* Fix potential performance issue by querying only taxonomies to show in quick edit to filter the category checklist +* Fix conflict (database error) with ReOrder-posts-within-categories plugin +* Fix languages per page option not saved + += 1.9.3 (2016-06-28) = + +* Pro: Allow to add slashes in url slugs translations +* Pro: Fix archive links not using translated slugs +* Pro: Fix visitor being redirected to 404 if his browser preference is set to an inactive language +* Fix strings translations table always back to page 1 when submitting the form (#14) +* Fix get_pages( array( 'lang' => '' ) ) not querying all the languages +* Fix switching the admin language filter can override the static front page settings (#16) + += 1.9.2 (2016-06-06) = + +* Pro: fix unreachable hierarchical custom post type posts when they are sharing slugs across languages +* Fix missing argument 3 in icl_t +* Fix conflict with WooCommerce product variations + += 1.9.1 (2016-05-23) = + +* Pro: add compatibility with Beaver Builder +* Pro: fix media wrongly created when adding a new media translation +* Add azb, ceb, de_CH_informal, es_GT, mr, nl_NL_formal to the predefined list of languages +* Fix the language switcher not linking to media translations for anonymous visitors + += 1.9 (2016-04-27) = + +* Pro: add the possibility to translate custom post types slugs, taxonomies slugs and more +* Pro: add the possibility to share the same post or term slug across languages +* Pro: add the possibility to duplicate the content when creating a new translation +* Pro: add the possibility to create all translations at once when uploading a media +* Pro: add the possibility to disable a language +* Add license and update management +* Add inline docs for all filters and actions +* When possible, the rel alternate hreflang now display only the language code (without the country code) +* When combined with flags in the language switcher, wrap the language name inside tags +* Add customizer selective refresh support for the language switcher widget ( needs WP 4.5+ ) +* Fix dynamic options of the language switcher widget not working in the customizer +* Fix possible error 404 on page shortlink when using subdomains or multiple domains +* Fix get_adjacent_post() and wp_get_archives() for untranslated post types ( needs WP 4.4+ ) +* Fix language homepage urls not present in Yoast SEO sitemap (when the homepages display posts) + += 1.8.5 (2016-04-03) = + +* Revert from $_SERVER['PHP_SELF'] to $_SERVER['SCRIPT_FILENAME'] to detect if the user is on login/register/signup page +* Fix incompatibility introduced by WP 4.5 in Edit single taxonomy term screen +* Fix existing post overriden when creating a language and a conflicting plugin sets the global $post on languages pages + += 1.8.4 (2016-03-06) = + +* Revert canonical redirection of static front page when combining plain permalinks + default language hidden in url (introduced in 1.8.2) + += 1.8.3 (2016-03-04) = + +* fix: All pages are redirected to the home page on some installations (introduced in 1.8.2) + += 1.8.2 (2016-03-02) = + +* Add support for the 'wpml_get_default_language()' function from the WPML API +* Stop blocking saving settings when errors are detected (invalid domains) +* Use publicly_queryable => true instead of public => true for the language taxonomy (WP 4.5+) +* fix: PHP notice when pll_default_language() is called before a language is created +* fix: PHP notice undefined property PLL_Language::$page_on_front +* fix: canonical redirection of static front page when combining plain permalinks + default language hidden in url +* fix: YARPP compatibility broken in v1.8 +* fix: Remove the delete link for translations of the default category (introduced back by WP 4.3) +* fix: settings not displayed with WP 4.1 or older + += 1.8.1 (2016-01-31) = + +* Update the list of Facebook locales used for Opengraph support with Yoast SEO and Jetpack +* fix: secondary query with translated post type and untranslated taxonomy mixes languages (introduced in 1.8) +* fix: issue with paged static front page when hiding the default language in url +* fix: potential issue with cache after synchronizations +* fix: trailing slash added to canonical home url outputed by Yoast SEO when using default permalinks + += 1.8 (2016-01-19) = + +* Minimum WordPress version is now 4.0 +* Add ary, bn_BD, en_ZA, es_AR, fr_CA and fr_BE to the predefined languages list +* Adopt WordPress coding standards +* New structure for translated posts and terms (=> several methods of PLL_Model are deprecated). +* Revamp the management of the static front page and page for posts +* Improve performance for navigation menus with a lot of pages +* The Polylang and WPML API are now loaded when 'plugins_loaded' is fired (on frontend only if at least one language has been defined) +* Add 'pll_get_post_translations()' and 'pll_get_term_translations()' to the API +* Add filter 'pll_cookie_expiration' to change the cookie expiration time +* Add support for 'wpml_get_language_information()' function from the WPML API +* The default language is now managed directly from the languages list table +* Various accessibility improvements +* It is now possible to choose the languages flags from the available list (custom flags on frontend still work as previously) +* Revamp the settings page (now a list table with inline configuration) +* Add an option to remove all data when uninstalling the plugin +* Add test of subdomains and domains accessibility +* Add post state for translations of the front page and posts page +* Add better support of the customizer menus introduced in WP 4.3 +* Media taxonomies (created by 3rd party plugins) are now filtered by language when editing a media +* Synchronization of taxonomies (created by 3rd party plugins) and meta are now enabled for media +* The 'hreflang' tag now refers to the locale instead of the 2-letters language code +* Workaround for WordPress locales not being W3C valid (see #33511) +* Workaround a bug in Nextgen Gallery causing redirect on album +* Add compatibility with Duplicate Post plugin to avoid duplicated post keeping the link to translations +* Add compatibility with Jetpack Related Posts +* fix: incorrect rewrite rules after changing how the language is set (need to flush rewrite rules after this) +* fix: password protected pages don't work on multiple domains +* fix: ensure that the page parent is in the correct language when using bulk edit +* fix: is_tax set on category and post tags archives when it should not +* fix: automatically added new top-level pages to menus are not filtered by language +* fix: nav menus locations are messed when changing the default language +* fix: error 404 for untranslated taxonomies pages +* fix: single posts and pages links do not include the language code when using the default permalinks and forcing the language code in url +* fix: missing trailing slash on home url when using default permalinks or a static front page +* fix: sticky visibility is copied to new translation only if the synchronization is activated +* fix: remove "» Languages » [language name]" from the feed title +* fix: spaces are not honored when searching strings translations +* fix: default language not set and terms translations not correctly imported when using WordPress Importer +* fix: the browser language detection does not differentiate 'en_US' and 'en_GB' +* fix: non alphanumeric characters query vars values lead to an infinite redirection loop on static front pages +* fix: user profile not saved for a language when the language code contains a "-" +* fix: non translated posts page always link to the static front page even when they should not +* fix: remove hreflang="x-default" when using one domain per language +* fix: deprecated function notice in WP 4.5 alpha +* fix: wrong url for attachments when media are translated and using subdomains +* fix: wrong url for unattached attachments when using subdirectories (since WP 4.4) +* fix: wrong url scheme for custom flags + += 1.7.12 (2015-11-13) = + +* The language taxonomy is now public for compatibility with WP 4.4 +* fix: nav menus locations are not correctly populated in customizer in WP 4.4 +* fix: the termmeta table was still deleted at upgrade +* fix: fatal error when using the argument 'post_id' in 'pll_the_languages()' (introduced in 1.7.11) [props EKesty](https://wordpress.org/support/topic/bug-on) +* fix: potential notice in 'pll_the_languages()' [props mattkeys](https://wordpress.org/support/topic/bug-on) + += 1.7.11 (2015-10-15) = + +* fix: conflict with GET ajax requests sent by the jquery method load +* fix: notice in frontend-nav-menu.php at line 211 (introduced in 1.7.10) [props Jesse Graupmann](https://wordpress.org/support/topic/warning-and-notice-on-upgrade) +* fix: the parent list in page attributes metabox is not in the correct language (introduced in 1.7.10) +* fix: error 404 for attachments +* fix: the language switcher is not displayed when combining "Forces link to front page" and "Hides languages with no translation" + += 1.7.10 (2015-09-28) = + +* Add Occitan translation contributed by [Cédric Valmary](http://www.totenoc.eu/) +* Add de_DE_formal, en_NZ, es_CO, hy, oci, ps and tl to the predefined languages list +* Add the filter 'pll_predefined_languages' and the actions 'pll_language_edit_form_fields' and 'pll_language_add_form_fields' +* the termmeta table (used in Polylang < 1.2) is no more deleted when uninstalling the plugin (as it will soon be included in WP) +* fix: prevent creating a media translation if one already exists +* fix: Attempt to translate the nav menus for themes registering a theme location but not using it in wp_nav_menu() +* fix: Jetpack infinite scroll +* fix: issue with terms languages when two languages have the same name +* fix: notices when deleting a tag and Lingotek is active +* fix: the languages cache is not cleaned when updating the site home url +* fix: conflict with the theme Ambition +* fix: front page canonical url displayed by Yoast SEO +* fix: typo in options definition at install [props null.bit](https://wordpress.org/support/topic/suggestions-for-two-new-filters?replies=5#post-7466159) +* fix: error when adding a term in a non-translated taxonomy + += 1.7.9 (2015-08-17) = + +* Minimum WordPress version is now v3.9 +* Add: hreflang="x-default" on front page when the default language code is not hidden in urls +* fix: remove hreflang links in html head section of paged archives to please Google +* fix: conflict with WPSEO sitemap caching when using multiple domains. [props Junaid Bhura](https://wordpress.org/support/topic/wp-seo-sitemap-and-translation-subdomain-issue?replies=8#post-7113817) +* fix: change the order of strings translations columns for better display on mobile devices in WP 4.3 +* fix: various issues with nav menus and customizer in WP 4.3 +* fix: correctly disallow unchecking both show names and show flags in the language switcher form + += 1.7.8 (2015-07-21) = + +* fix: conflict with PHP < 5.4 introduced in 1.7.7 + += 1.7.7 (2015-07-20) = + +* Add Romanian translation contributed by uskro +* Add Japanese translation contributed by [Eiko Toda](http://www.eikotoda.com) +* Update French translation contributed by [fxbenard](http://fxbenard.com/) +* The language locale is now validated with the same pattern as in WP 4.3. See #28303 +* fix: make sure that the language switcher never finds translations for untranslated post types (could occur when the post type was previously translated) +* fix: display the default category according to the admin language filter in settings->writing +* fix: flushing rewrite rules at network activation and de-activation is back. [props RavanH](https://polylang.wordpress.com/2015/06/10/polylang-1-7-6-and-multisite/comment-page-1/#comment-1138) +* fix: avoid a conflict with WP Super Cache preloading (loading 'polylang_mo' posts which are 404). [props ecdltf](https://wordpress.org/support/topic/polylang_mo-and-404s-take-2) +* fix: customizer menus issues introduced by changes in WP 4.1 +* fix: strings translations are not saved when pressing enter +* fix: it is not possible to de-activate the translation for custom post types and taxonomies from wpml-config.xml +* fix: conflict whith plugins using stringified json in ajax requests + += 1.7.6 (2015-06-10) = + +* Add Galician translation contributed by [Toño Calo](http://fedellar.wordpress.com/) +* fix: incorrect post type archive link for untranslated post types +* fix: notices in wp-import.php +* fix: avoid flushing rewrite rules at network activation and de-activation +* fix: the note below the category list table displays the default category according to the admin language filter +* fix: wrong future posts permalinks +* fix: deleting a media translation deletes the file too +* fix: when using persistent object cache, get_terms is not always filtered by the correct language on admin side +* fix: it is possible to create two categories having the same translation +* fix: fatal error when using the dropdown language switcher in WP < 4.1 + += 1.7.5 (2015-05-11) = + +* Add 'pll_languages_list' filter +* fix: warning when a plugin calls 'icl_object_id' with an untranslated post type (seen in ACF 4.4.1) +* fix: the language is not correctly set from the url when using PATHINFO permalinks (introduced in 1.6!) +* fix: notice when a search is filtered by a taxonomy term in a different language + += 1.7.4 (2015-05-03) = + +* fix: translated taxonomies and post types from wpml-config.xml are not filtered on frontend (introduced in 1.7.2) +* fix: WPML strings translations not always loaded (introduced in 1.7) +* fix: $.ajaxPrefilter() may not work as expected [props ScreenfeedFr](https://wordpress.org/support/topic/ajaxprefilter-may-not-work-as-expected) +* fix: can't hide the language code for the default language when using subdomains +* fix: incorrect static front page url when hiding the default language information +* fix: an untranslated posts page may display posts in all languages +* fix: javascript error when changing the language of a hierarchical post type from the languages metabox in WP 4.2 +* fix: subdomains urls are malformed when the main site uses www. +* fix: suggest tags are not filtered in quick edit +* fix: parent page dropdown list not filtered in quick edit + += 1.7.3 (2015-04-11) = + +* the transient 'pll_languages_list' now stores an array of arrays instead of an array of PLL_Language objects +* fix: fatal error for users hosted at GoDaddy (due to PLL_Language objects stored in a transient) +* fix: additional query vars are removed from home page +* fix: categories are not filtered by the admin language switcher in posts list table (introduced in 1.7) +* fix: when using multiple domains, the domain url is lost when modifying the language slug +* fix: the queried object is incorrectly set for author archives (introduced in 1.6.5) +* fix: notice when a nav menu assigned to a translated nav menu location has been deleted +* fix: no canonical redirection when using pretty permalinks and querying default permalinks + += 1.7.2 (2015-03-23) = + +* fix: comments are filtered for posts in a post type not managed by Polylang +* fix: translated static front page don't work when setting PLL_CACHE_HOME_URL to false (introduced in 1.7) +* fix: the query for taxonomies on custom post types is broken (when adding the language code to the url) + += 1.7.1 (2015-03-20) = + +* fix: wrong redirection when using a static front page and replacing the page name by the language code (introduced in 1.7) + += 1.7 (2015-03-19) = + +* Minimum WordPress version is now v3.8 +* Add new languages to the predefined languages list: Swiss German, Hazaragi +* Add compatibility with nested tax queries introduced in WP 4.1 +* Add compatibility with splitting shared terms to be introduced in WP 4.2 +* Add the possibility to change the domain in the default language when using multiple domains (avoids a conflict with the domain mapping plugin) +* Add the possibility to set the language from the code in url when using default permalinks +* Adding the language code in url is now default at first activation (should improve the out of the box compatibility with other plugins and themes) +* Add new language switcher option to hide a language with no translation +* pll_the_languages() now outputs the js code to handle language change in dropdown list (as done by the widget) +* Improve performance by using base64 encoded flags + various slight optimizations +* Improve protection against chained redirects +* The find posts list is now filtered per media language when clicking on attach link in Media library +* Copy alternative text when creating a media translation +* The category checklist in quick edit is now filtered per post language instead of admin language filter +* Quick and bulk language edit don't break translations anymore if the new language is free +* Make it impossible to change the language of the default categories +* Make sure that a default category defined in settings->writing is translated in all languages +* Tweak css for mobiles in add and edit term form +* Tweak the query getting the list of available posts in the autocomplete input field in the post languages metabox +* fix: after adding a term translation, need to refresh the page before adding a new term +* fix: term translations rows are not modified in list table when a term is added / deleted or inline edited +* fix: post translations rows are not modified in list table when a post is inline edited +* fix: using brackets in language name breaks strings translations +* fix: quick edit may conflict with other plugins +* fix: impossible to use several dropdown languages widgets +* fix: pll_the_languages() may display a dropdown with empty options +* fix: the categories widget does not work correctly with dropdown +* fix: autosave post always created after manual save +* fix: tax query not filtered by language when using 'NOT IN' operator on a translated taxonomy +* fix: incorrect translation url for searches filtered by taxonomy +* fix: backward incompatibility for edited_term_taxonomy action introduced in WP 4.2 +* fix: the home link may be incorrect on MS Windows +* fix: tags in wrong language may be assigned when bulk editing posts in several languages +* fix: tags created when bulk editing posts are not assigned any language +* fix: Illegal string offset 'taxonomy' introduced in v1.6.5 +* fix: Undefined property: WP_Query::$queried_object_id when calling pll_the_languages(array('raw' => 1)) in a function hooked to 'wp'. props [KLicheR](https://wordpress.org/support/profile/klicher) +* fix: Notice in admin.php when used with MailPoet plugin + += 1.6.5 (2015-02-18) = + +* Add new correspondances between WordPress locales and Facebook locales (for WPSEO and Jetpack users) +* fix: quick draft posts are always assigned the default category in the default language +* fix: Notice: Undefined offset: 0 in wp-includes/query.php introduced in WP 4.1 +* fix: is_tax and is_archive are not correctly set when a custom taxonomy term is queried +* fix: conflict introduced by WPSEO 1.7.2+ + += 1.6.4 (2015-02-01) = + +* Add es_MX to predefined languages list +* Add compatibility with WordPress SEO sitemaps for multiple domains and subdomains +* fix: a new post is assigned the wrong (untranslated) default category if no category is assigned by the user +* fix: the home links now have the right scheme even if PLL_CACHE_HOME_URL is not set to false +* fix: fatal error when using old versions of WPSEO (I should do what I tell other to do!) +* fix: strings translations are not switched when using switch_to_blog + += 1.6.3 (2015-01-09) = + +* Add Georgian translation contributed by [Tours in Georgia](http://www.georgia-tours.eu/) +* fix: WXR export does not include the language of untranslated terms (will now work only for newly saved terms) +* fix: better cleaning of DB when translated objects are deleted +* fix: incorrect (ajax) translations links when modifying a term language +* fix: warning: Illegal string offset 'taxonomy' introduced by the combination of WP 4.1 and some plugins. + += 1.6.2 (2014-12-14) = + +* fix: bugs and inconsistencies compared to WPML in 'icl_get_languages' (should fix a conflict with Avada) +* fix: https issue +* fix: stop displaying an error when adding en_US as new language (translation not downloaded) +* fix: infinite redirect loop on (unattached) attachment links +* fix: impossible to add tags in post quick edit (introduced in 1.5) +* fix: the customizer does not land to the right page when cumulating: static front page + page name in url + default language code not hidden +* fix: read parent theme wpml-config.xml before child theme +* fix: add protection to avoid empty language +* fix: page preview link again + += 1.6.1 (2014-11-19) = + +* Add Brazilian Portuguese translation contributed by [Henrique Vianna](http://henriquevianna.com/) +* Improve compatibility with Types: allow custom fields to be populated when creating a new translation +* Make it impossible to remove the translations of the default category +* Fix: possibility to add a path when using multiple domains (same path for all languages) broken since v1.5.6 +* Fix: preview link for non default language when using multiple domains +* Fix: error displayed when setting the static front page and only one language has been defined +* Fix: revert changes on rewrite rules with front introduced in 1.6 +* Fix: conflict with WordPress SEO when no language has been created + += 1.6 (2014-10-27) = + +* Add Croatian translation contributed by Bajro +* Add new languages to predefined languages list: Azerbaijani, English (Australia), English (UK), Basque +* Add flag in front of the language select dropdown for posts and terms +* Add widget text translation +* Add opengraph support for locale and translations when WordPress SEO or Jetpack are activated +* Add error message if attempting to assign an untranslated page as static front page +* Add 'pll_sanitize_string_translation' filter to sanitize registered strings translations when saved +* Fix: change the en_US flag to US flag. The UK flag is now associated to en_GB +* Fix: change Belarussian locale from be_BY to bel to in agreement with translate.wordpress.org +* Fix home pages duplicate urls when using domains or subdomains +* Fix rewrite rules with front +* Fix: terms are always in default language when created from post bulk edit + += 1.5.6 (2014-10-11) = + +* Fix: the admin language filter is not active for paginated taxonomy in nav menu admin panel +* Fix: wrong redirection if a domain is a substring of another domain (ex: mysite.com and mysite.co) +* Fix: impossible to translate numeric values in options defined in wpml-config.xml +* Fix: call to undefined method PLL_Links::get_translation_url() with Avada theme +* Fix: manage_{$this->screen->taxonomy}_custom_icolumn is a filter and not an action + += 1.5.5 (2014-09-10) = + +* Fix: missing argument 4 in icl_translate +* Fix: conflict with Vantage theme +* Fix: possible issue with cookie domain on 'localhost' +* Fix: filtering string translations does not work when the group name contains a space +* Fix: Possible 404 error for attachments +* Fix: PHP notice when a shared term is not translated in all taxonomies + += 1.5.4 (2014-08-13) = + +* Add new API functions: pll_get_post_language, pll_get_term_language, pll_translate_string +* Add better compatibility with Jetpack 3 +* Fix: attachments don't get any language when uploaded from frontend +* Fix: authors cannot create tags +* Fix: too restrictive capability checks for some edge cases +* Fix: conflict with WPSEO: taxonomy metas cannot be saved + += 1.5.3 (2014-07-12) = + +* Add: Capability check before creating links in post list table +* Add: Possibility not to cache languages objects with option PLL_CACHE_LANGUAGES (for GoDaddy users) +* Fix: Saving a header or a background in menu Appearance resets nav menus locations (introduced in 1.5) +* Fix: sub-sub-options and deeper levels defined in wpml-config.xml are not translated +* Fix: Fatal error when creating a new site when Polylang is network activated (introduced in v1.5.1) +* Fix: Admin language forced to English when activating Polylang (before creating any new language) +* Fix: 'pll_count_posts' second parameter not taken into account +* Fix: 'edit-post' and 'create-posts' capabilities are not differentiated when saving a post + += 1.5.2 (2014-06-24) = + +* Fix: Revert post translations terms cleaning introduced in 1.5 as it seems to cause problems +* Fix: Impossible to delete a biographical info (introduced in 1.5) +* Fix: Security issue reported by [Gregory Viguier](http://www.screenfeed.fr/) + += 1.5.1 (2014-06-19) = + +* Add: filter 'pll_settings_tabs' and action 'pll_settings_active_tab_{$tab}' +* Add: possibility to add a path when using multiple domains (same path for all languages) +* Fix: Bad redirection if /language/ is added to urls (introduced in 1.5) +* Fix: Nav menu locations are not saved in customizer (introduced in 1.4) +* Fix: Unable to unset nav menu locations +* Fix: Incorrect link for date archives in language switcher (introduced in 1.5) +* Fix: Fatal error when using featured content in Twenty Fourteen +* Fix: Posts bulk edit broken (introduced in 1.5) +* Fix: Polylang does not play nice with switch_to_blog +* Fix: Warning: reset() expects parameter 1 to be array, null given in admin-filters-columns.php on line 81 + += 1.5 (2014-05-29) = + +* Add Ukrainian translation contributed by [http://getvoip.com/](http://getvoip.com/) +* Refresh translation metaboxes (again): now translated posts are chosen from an autocomplete input field +* Categories and post tags translations are also chosen in an automplete input field +* Better error management on languages pages +* Use Dashicons instead of Icomoon icons for WP 3.8+ +* Check if translated post is readable by the current user before displaying the language switcher +* Minimum Twenty Fourteen version is now 1.1 +* Code cleaning +* Add support for Quick draft introduced in WP 3.8 +* Add support for object cache plugins for recent posts and recent comments widgets +* Add support for pages with modified query in the language switcher (ex: when multiple post types queried on the same page) +* Add new API functions: pll_languages_list, pll_set_post_language, pll_set_term_language, pll_save_post_translations, pll_save_term_translations, pll_count_posts +* Add new filter pll_the_languages_args +* Add support for ICL_LANGUAGE_CODE == 'all' on admin side +* Fix: Galician flag +* Fix: static page on front pagination is broken +* Fix: search url may be broken +* Fix: PHP notice in icl_get_languages +* Fix: more robust way of detecting language in url when using directory +* Fix: delete translations terms orphans in database +* Fix: inconsistent behavior when setting page on front from customizer +* Fix: deleting a category assigns posts to wrong default category +* Fix: quick edit breaks synchronization +* Fix: some security issues + += 1.4.5 (2014-04-19) = + +* Fix: Notice when combined with WPSEO 1.5+ +* Fix: Impossible to disable a widget language filter once set (introduced in 1.4.4) +* Fix: Unexpected redirection of the homepage with language code when permalink structure has no trailing slash (introduced in 1.4.4) +* Fix: Some installs lead to wrong redirection when using domains (introduced in 1.4.4) +* Fix: Possible infinite redirection while previewing posts (introduced in 1.4.4) +* Fix: Uploaded medias don't get a language since WP 3.9 +* Fix: Compatibility with Twenty Fourteen Ephemera widget in the version shipped with WP 3.9 + += 1.4.4 (2014-04-09) = + +* Add: Compatibility with widgets customizer introduced in WP 3.9 +* Fix: No post in translation dropdown after switching the language in edit post (introduced in 1.4.3) +* Fix: No canonical redirection when there is no language code in url and the language code is not hidden for the default language +* Fix: Suppress language cookie when using multiple domains + += 1.4.3 (2014-03-22) = + +* Add: Serbian translation contributed by Sinisa +* Add: Myanmar translation contributed by Sithu Thwin +* Fix: comment form redirects to wp-admin when using multiple domains or subdomains. +* Fix: fatal error with old versions of PHP (tested on PHP 5.2.4) +* Fix: Bad gateway experienced by users hosted by wpengine.com +* Fix: links got from tiny MCE link button are filtered with admin language filter instead of current post language +* Fix: possibly wrong redirection in check_language_code_in_url when using multiple domains or subdomains + += 1.4.2 (2014-02-24) = + +* Add: check multiple post types in PLL_Model::count_posts +* Fix: error 404 on category links when setting the language by content (introduced in 1.4.1) +* Fix: PHP notices in frontend-nav-menu.php with Artisteer themes +* Fix: decrease the memory usage of untranslated posts list +* Fix: home page not correctly redirected to canonical when using page on front and page name is kept in url + += 1.4.1 (2014-02-16) = + +* Add: Czech translation contributed by [Přemysl Karbula](http://www.premyslkarbula.cz) +* Fix: the displayed language is not correct in quick edit for categories and post tags +* Fix: the language switcher does not display the correct link for translated parent categories if only children have posts +* Fix: 3rd parameter of icl_object_id is not optional +* Fix: issue when combining multiple domains and browser detection -> the combination is now forbidden +* Fix: conflict Shiba Media Library: link between media translations is lost when using media quick edit +* Fix: notice when using taxonomies in wpml-config.xml +* Fix: incorrect post format link +* Fix: Twenty Fourteen Ephemera widget strings are not translated + += 1.4 (2014-01-22) = + +* Add Traditionial Chinese translation contributed by [香腸](http://sofree.cc/) +* Minimum WordPress version is now v3.5 +* Refresh translations metaboxes: now translated posts are chosen in a dropdown list +* Check if translated archives for category, tag and post format are empty before displaying the language switcher +* Add specific management of translated featured tag in Twenty Fourteen +* Add the possibility not to cache homepage urls with option PLL_CACHE_HOME_URL (for users having several domains). +* The function get_pages is now filtered by language +* Ajax requests on frontend are now automatically detected. It is no more necessary to set 'pll_load_front' :) +* Various performance improvements +* 'pll_get_post_types' and 'pll_get_taxonomies' filters must be added *before* 'after_setup_theme' is fired +* Pre 1.2 data will be removed from DB at first upgrade at least 60 days after upgrade to 1.4 +* Removed some duplicate code between admin and frontend +* Bug correction: incorrect pagination when using domains or subdomains +* Bug correction: post format link not translated +* Bug correction: impossible to use child terms with same name in hierarchical taxonomies +* Bug correction: the terms list table is filtered according to new translation language instead of admin language filter + += 1.3.1 (2013-12-13) = + +* Bug correction: fatal error on settings page if a static front page without language is set +* Bug correction: wrong home url when using different domains per language + += 1.3 (2013-12-11) = + +* Refresh admin UI for better look in WP 3.8 and more dynamic comportment +* The "Detect browser language" option does now also controls returning visits (based on cookie). +* Improved performance by optimizing some queries for WP 3.5+ +* The user biography in default language is now stored in default WordPress usermeta +* Add language parameter in API function pll_home_url and allow to call it on admin side +* Calling 'get_terms' with the 'lang' parameter now uses a cache object per language +* Bug correction: conflict with unstranslated taxonomies +* Bug correction: possible malformed translation archive url in language switcher +* Bug correction: a wrong language may be displayed in quick edit dropdown +* Bug correction: it is possible to add multiple translations (in the same language) for a single taxonomy term +* Bug correction: non public post types and taxonomies are visible in Polylang settings +* Bug correction: the language is always chosen from cookie (or browser preferences) in some installations +* Bug correction: Firefox language preference is not recognized when comparison is made on locale (instead of ISO 639-1 language code) +* Bug correction: incorrect tax_query in PLL_Auto_Translate + += 1.2.4 (2013-11-28) = + +* Better support for theme customizer +* Bug correction: admin bar search does not filter by language +* Bug correction: possible conflict on secondary query when querying taxonomies or single page +* Bug correction: post type is not included in url when editing or adding a term translation +* Bug correction: various warnings and PHP notices + += 1.2.3 (2013-11-17) = + +* Avoid fatal error when ugrading with Nextgen Gallery active +* Bug correction: menus locations of non default language are lost at theme deactivation +* Bug correction: impossible to set menus locations of non default language in some specific cases +* Bug correction: bbpress admin is broken + += 1.2.2 (2013-11-14) = + +* Updated Polish translation thanks to [Bartosz](http://www.dfactory.eu/) +* Delay strings translations upgrade from 'wp_loaded' to 'admin_init' to avoid fatal error when wp-ecommerce is active +* Remove Jetpack infinite scroll compatibility code as it seems useless with new Polylang 1.2 code structure +* Bug correction: fatal error when doing ajax on frontend +* Bug correction: ICL_LANGUAGE_CODE incorrectly defined when doing ajax on frontend +* Bug correction: ['current_lang'] and ['no-translation'] indexes disappeared from pll_the_languages raw output +* Bug correction: invalid argument supplied for foreach() in /polylang/include/mo.php on line 57 +* Bug correction: cookie may not be correctly set +* Bug correction: languages columns may not be displayed in custom post types and custom taxonomies tables + += 1.2.1 (2013-11-11) = + +* Update badly encoded Latvian translation +* Suppress one query in PLL_WPML_Config when not in multisite +* Bug correction: strings translations are not correctly upgraded +* Bug correction: nav menus locations are not correctly upgraded for non default language + += 1.2 (2013-11-10) = + +This version does include important changes in database. More than ever, make a database backup before upgrading + +* Add Arabic translation contributed by [Anas Sulaiman](http://ahs.pw/) +* Major rewrite with new structure +* Change the language and translations model from meta to taxonomy (no extra termmeta table created anymore) +* Move the strings translations from option to a custom post type +* Add support for language code in subdomain and for one different domain per language (experimental) +* Add support of WordPress Importer plugin. Export must have been done with Polylang 1.2+ (experimental) +* Add support for theme navigation customizer (was de-activated by Polylang since WP 3.4) +* Request confirmation for deleting a language +* Better management of default category for each language +* Now check if date and post type archives are translated before displaying the language switcher +* Update management of the 'copy' action of the custom fields section in wpml-config.xml +* Add support for ICL_LANGUAGE_CODE and ICL_LANGUAGE_NAME of the WPML API on admin side +* Add support of WPSEO custom strings translations when the language is set from content +* Modify admin language filter for valid html and better visibility +* Synchronization is now disabled by default (due to too much conflicts / questions on the forum) +* Include rel="alternate" hreflang="x" selflink per google recommendation +* Improve inline documentation +* Bug correction: wrong datatype for second argument in polylang/include/auto-translate.php (introduced in 1.1.6) +* Bug correction: same id is used for all language items in menu +* Bug correction: wpml-config.xml file not loaded for sitewide active plugins on network installations +* Bug correction: page parent dropdown list (in page attributes metabox) not correctly displayed when switching from a language with empty list + += 1.1.6 (2013-10-13) = + +* Add the possibility to display the upgrade notice on plugins page +* Bug correction: Illegal string offset 'taxonomy' in polylang/include/auto-translate.php +* Bug correction: user defined strings translations are not loaded on admin side +* Bug correction: untranslated post types are auto translated +* Bug correction: tags are not added to post when the name exists in several languages and they are not translations of each other + += 1.1.5 (2013-09-15) = + +* Add compatibility with Aqua Resizer (often used in porfolio themes) +* Add support of 'icl_get_default_language' function from the WPML API +* Remove the 3 characters limitation for the language code +* Change default names for zh_CN, zh_HK, zh_TW +* Bug correction: urls are modified in search forms + += 1.1.4 (2013-08-16) = + +* Add simplified Chinese language contributed by [Changmeng Hu](http://www.wpdaxue.com) +* Add Indonesian language contributed by [ajoull](http://www.ajoull.com/) +* Bug correction: nav menu locations are lost when using the admin language filter +* Bug correction: the cookie is not set when adding the language code to all urls (introduced in 1.1.3) + += 1.1.3 (2013-07-21) = + +* Add Venetian language contributed by Michele Brunelli +* Bug correction: wrong rewrite rules for non translated custom post type archives +* Bug correction: 'post_id' parameter of pll_the_languages does not work +* Bug correction: warning in wp_nav_menu_objects with Artisteer generated themes +* Bug correction: warning when used together with theme my login plugin +* Bug correction: language slug is modified and translations are lost when creating a nav menu with the same name as a language + += 1.1.2 (2013-06-18) = + +* Posts and terms now inherit parent's language if created outside the standard WordPress ui +* Improve the compatibility with the plugins Types and The Events Calendar, and again with WordPress SEO +* Improve performance +* Improve html validation +* Add 'raw' argument to 'pll_the_languages' +* Add the filter 'pll_translation_url' +* Bug correction: no language is set for a (translated custom taxonomy) term when added from a (non tranlated) custom post type edit page +* Bug correction: warning if 'get_terms' is called with a non-array 'include' argument (introduced in 1.1.1) +* Bug correction: warning if the menu language switcher has nothing to display + += 1.1.1 (2013-05-20) = + +* Move nav menu language switcher split from 'wp_nav_menu_objects' to 'wp_get_nav_menu_items' filter +* Add the filter 'pll_redirect_home' +* Automatically translate ids in 'include' argument of 'get_terms' (useful for the menus in the Suffusion theme) +* Add compatibility with Jetpack infinite scroll +* Bug correction: rtl text direction not set when adding the language code to all urls (introduced in 1.1) +* Bug correction: hide again navigation panel in theme customizer as it still doesn't work +* Bug correction: is_home not set on translated page when searching an empty string +* Bug correction: fatal error when creating a post or term from frontend (introduced in 1.1) +* Bug correction: attachments may load a wrong language when media translation was enabled then disabled +* Bug correction: warning when querying posts before the action 'wp_loaded' has been fired (in auto-translate.php) +* Bug correction: potential issue if other plugins use the filter 'get_nav_menu' +* Bug correction: interference between language inline edit and search in admin list tables +* Bug correction: auto-translate breaks queries tax_query when the 'field' is set to 'id' +* Bug correction: search is not filtered by language for default permalinks (introduced in 1.1) +* Tests done with WP 3.6 beta 3 and Twenty thirteen + += 1.1 (2013-05-10) = + +* When adding the language to all urls, the language is now defined in (plugins_loaded, 1) for better compatibility with some plugins (WordPress SEO) +* When querying posts and terms, ids are now automatically translated +* Add the possibility to group string translations +* Add the possibility to delete strings registered with 'icl_register_string' +* Move the option 'polylang_widgets' in general polylang options +* Better integration of the multilingual nav menus (everything is now integrated in the menus page of WordPress +* The language switcher is now a menu item which can be placed everywhere in a nav menu +* Posts or terms created from frontend are now assigned the current language (or another one if specified in the variable 'lang') +* Bug correction: continents-cities-xx_XX.mo not downloaded +* Bug correction: a gzipped 404 page is downloaded when a mo file does not exist on WordPress languages files repository +* Bug correction: post_date_gmt not synchronized together with post_date +* Tests done with WP 3.6 beta 2 and Twenty thirteen + += 1.0.4 (2013-04-08) = + +* Add Estonian translation contributed by [Ahto Naris](http://profiles.wordpress.org/ahtonaris/) +* Now compatible with languages files stored in wp-content/languages/themes +* Bug correction: page preview does not work when adding the language code to all urls +* Bug correction: error when a post type or taxonomy label is not a string +* Bug correction: admin text section of wpml-config.xml (introduced in 1.0.3) +* Bug correction: infinite redirect loop when querying an unattached media and the language code is added to all urls +* Bug correction: the text direction is not set from Polylang options when the language code is added to all urls +* Bug correction: get_adjacent_post is filtered by language even for post types without language +* Bug correction: the home url is not not in the correct language in wp-login.php +* Bug correction: the language is not correctly set when using date and name permalinks (introduced in 1.0.3) + += 1.0.3 (2013-03-17) = + +* Add Catalan translation contributed by [Núria Martínez Berenguer](http://nuriamb.capa.webfactional.com) +* Add Ukrainian translation contributed by [cmd soft](http://www.cmd-soft.com/) +* Improve compatibility with WordPress SEO (sitemap for categories and tags) +* A query is no more filtered by language when setting the parameter 'lang' to an empty value +* Add the possibility to create a custom wpml-config.xml file in wp-content/polylang/ +* Bug correction: custom menus are not displayed on search page (introduced in 1.0.2) +* Bug correction: sql error when filtering terms by language (introduced in 1.0.2) +* Bug correction: SSL doesn't work properly +* Bug correction: php notice on IIS servers +* Bug correction: clicking on the radio buttons in the admin language switcher does not work in Chrome +* Bug correction: on multisite, the signup page is redirected to the home page +* Bug correction: date archives are not correctly filtered for the default language when hiding the language code and using date and name permalinks +* Bug correction: only one wpml-config.xml file is parsed + += 1.0.2 (2013-02-26) = + +* Add the possibility to query comments by language +* Add the possibility not to set a cookie by defining PLL_COOKIE to false (Polylang may not work as expected on some pages) +* Now a returning visitor is redirected to its preferred language when visiting the front page in the default language +* Add compatibility with the plugin Custom field template (copy and synchronize custom fields) +* Improve compatibility with plugins or themes which overwrite columns in posts list table +* Add the filter 'pll_get_flag' +* Add support of 'icl_unregister_string' function from the WPML API +* Bug correction: synchronizing custom fields breaks the plugin Advanced Custom Fields +* Bug correction: 'pll_default_language' broken +* Bug correction: rewrite rules are not flushed when re-activating the plugin +* Bug correction: feed urls are not correctly escaped when using default permalinks +* Bug correction: notice Undefined index: media_support +* Bug correction: custom post types and taxonomies set in wpml-config.xml are not hidden +* Bug correction: get_terms cannot query multiple languages +* Bug correction: 'icl_register_string' is now persistant as in WPML (fixes Nextgen gallery translations which were not working) + += 1.0.1 (2013-01-28) = + +* Add Swedish translation contributed by [matsii](http://wordpress.org/support/profile/matsii) +* Add 2 new API functions : 'pll_is_translated_post_type' and 'pll_is_translated_taxonomy' +* Bug correction: when using a static front page, the posts page is not filtered by language (introduced in 1.0) +* Bug correction: disable translation for hard coded menu as it creates more problems than it solves (introduced in 1.0) + += 1.0 (2013-01-24) = + +* Add Hungarian translation contributed by Csaba Erdei +* Add Norwegian translation contributed by [Tom Boersma](http://www.oransje.com/) +* Add Slovak translation contributed by [Branco (WebHostingGeeks.com)](http://webhostinggeeks.com/user-reviews/) +* Code cleaning -> remove compatibility with versions older than 0.8 +* Add search in the string translations list table +* Add options to better control the synchronization of various metas for posts +* It is now possible to synchronize sticky posts and publication dates +* Add option to disable the multilingual support of media +* Add options to better control the multilingual capability of custom post types and taxonomies +* Better integration with new media management in WP 3.5 +* Improve menu translation for themes which register a theme location but don't use it in wp_nav_menu (hard coded menu) +* Add the pll_preferred_language filter allowing plugins to modify the language set by browser preferences detection +* Add support of the WPML config file +* Add support of 'icl_get_languages' and 'icl_link_to_element' functions from the WPML API +* Add compatibility with YARPP and improve compatibility with WordPress SEO +* Change cookie name which conflicts with Quick cache and allow users to overwrite it by defining the constant PLL_COOKIE +* Bug correction: again the canonical redirection +* Bug correction: the languages are not correctly displayed after they have been modified using quick edit +* Bug correction: undefined index notice when saving strings translation when the admin language filter is active +* Bug correction: rewrite rules are not correctly flushed when adding / deleting a language (introduced in 0.9.2) +* Bug correction: the list of pages is displayed when a static font page translation is not translated (now replaced by the list of posts) +* Bug correction: permalinks are not modified when doing cron and the language code is added to all urls +* Bug correction: creating a new term with the same name as a language may modify the language code (slug) + += 0.9.8 (2012-12-05) = + +* Bug correction: ajax on frontend does not work when adding the language code to all urls +* Bug correction: search forms using the get_search_form filter do not work + += 0.9.7 (2012-12-04) = + +* Bug correction: the admin language filter does filter non translatable post types +* Bug correction: again the canonical redirection +* Bug correction: fatal error when Polylang is used together with 'Author Avatars List' +* Bug correction: widget titles uselessly appear in the strings translations table when the widget is set for only one language +* Tests done with WordPress 3.5 RC3 and Twenty Twelve + += 0.9.6 (2012-11-26) = + +* It is now possible to query the terms by language using the WordPress function 'get_terms' +* Bug correction: search for empty string in default language displays posts in all languages when hiding the URL language information for default language +* Bug correction: completely reworked the canonical redirection introduced in 0.9.5 which created more problems than it solved +* Bug correction: ajax for media translations does not work +* Started tests with WordPress 3.5 RC1 and Twenty Twelve + += 0.9.5 (2012-11-13) = + +* The user can now choose the number of languages and strings translations to display +* Add compatibility with the 'icl_object_id' function and ICL_LANGUAGE_CODE and ICL_LANGUAGE_NAME constants from the WPML API +* Add 17 languages to the predefined list (automatic download and update of language files won't work) +* Bug correction: post preview does not work when adding the language code to all urls +* Bug correction: redirect to front page in default language when posting a comment on static front page +* Bug correction: impossible to create terms with the same name in different languages +* Bug correction: query string added by other plugins is erased when adding the language code to all urls +* Bug correction: redirect erase 'POST' variables on homepage when adding the language code to all urls +* Bug correction: English (en_US) loads rtl style when using a localized WordPress package with an rtl language +* Bug correction: on some installation strings translations do not work with some special characters +* Bug correction: incoming links are not redirected to canonical url when adding the language code to all urls and hiding the code for the default language +* Bug correction: search form does not work in non default language when using permalinks without trailing slash + += 0.9.4 (2012-10-23) = + +* Add Afrikaans translation contributed by [Kobus Joubert](http://translate3d.com/) +* Add Belarusian translation contributed by [Alexander Markevitch](http://fourfeathers.by/) +* Add Afrikaans (af) and Belarusian (be_BY) to predefined languages list (automatic download and update of language files won't work) +* Add the possibility to translate the date format and time format +* Add compatibility with the 'icl_get_home_url' function from the WPML API +* Bug correction: still some issues with string translations +* Bug correction: search is not filtered by the (default) language when the language is set by content and the language code is hidden for the default language +* Bug correction: posts & pages preview urls are broken when adding the language code to all urls +* Bug correction: automatically added new top-level pages to menus are not filtered by language +* Bug correction: the admin language filter messes the categories languages when editing a post and the parent dropdown list when editing a category +* Bug correction: search form does not work when using a static front page (introduced in 0.9.2) +* Bug correction: can't set languages for categories and post tags on blogs created after polylang has been activated at network level +* Bug correction: menus don't work with catch box theme ('has_nav_menu' not correctly filtered) + += 0.9.3 (2012-10-08) = + +* Add Bulgarian translation contributed by [pavelsof](http://wordpress.org/support/profile/pavelsof) +* Add compatibility with WPML API for strings translations +* Bug correction: dates are not translated (introduced in 0.9.2) +* Bug correction: the language is lost when keeping - No change - for language in bulk edit +* Bug correction: categories and tags are duplicate (when default language is set automatically to existing content and categories and tags share the same name) + += 0.9.2 (2012-09-30) = + +* Support new WordPress (WP 3.5+) convention for js and css files naming +* Improve performance, mainly on frontend +* Bug correction: the category language is not set when creating it in the post editor (introduced in 0.9) +* Bug correction: unable to add a query string when using a static front page +* Bug correction: ajax tag suggestion in "edit post" conflicts with the admin content language filter +* Bug correction: ugly notices when trying to access a static front page which has not been translated +* Bug correction: the language code is added to custom post types and taxonomies permalinks even if they are not translatable +* Bug correction: some arrays in wp_locale mix English and other language +* Bug correction: the media language is not correctly set when uploading from post if the post has not been saved after choosing the language + += 0.9.1 (2012-09-20) = + +* Add Finnish translation contributed by [Jani Alha](http://www.wysiwyg.fi) +* Bug correction: improve the robustness of the admin content language filter +* Bug correction: the language switcher displays languages which have no posts or pages (introduced in 0.9) +* Bug correction: wrong default language when adding a new media +* Bug correction: the dropdown language switcher does not switch language when there is no post translation +* Bug correction: issue with translations when using category quick edit +* Bug correction: home redirects to 404 when combining static front page + force_lang = 1 + hide_default = 0 + += 0.9 (2012-09-12) = + +* Add Turkish translation contributed by [darchws](http://darch.ws/) +* Add media translation support +* Add a persistant content language filter on admin side (WP 3.2+ required) +* Add biographical info translation +* Add multiline support for string translations +* Add the possibility to clean the strings translation database +* Add quick edit and bulk edit support for posts and pages +* Add quick edit support for categories and tags +* The language is now loaded with 'setup_theme' action instead of 'wp' action when always adding language information url +* Search form now does use javascript only for searchform.php when pretty permalinks are not used +* Add the option PLL_SEARCH_FORM_JS to disable the js code used to modify the search form +* Suppress the option PLL_SYNC, replaced by an option in the language settings ui +* Suppress the PLL_DISPLAY_ALL option +* Suppress the template tag 'the_languages' (replaced by 'pll_the_languages' since v0.5) +* Suppress the function 'pll_is_front_page' (useless since 0.8.2) +* Bug correction: the browser language is sometimes not correctly detected by Android +* Bug correction: the rtl text direction is not correct when editing an existing language +* Bug correction: rss feed does not work if translated site title or tagline contains special characters +* Bug correction: post types and taxonomies labels are not translated on frontend +* Bug correction: the filter 'pll_copy_post_metas' does not work for metas with multiple values +* Bug correction: translations table for post and terms are uselessly serialized two times +* Bug correction: attempt to suppress conflict with themes which hardcode the name of nav menus (but do define a theme location) +* Bug correction: homepage displays all posts when the front page displays a static page and no page is selected for front page (but one is selected for posts page) +* Bug correction: widgets disappear when Polylang is enabled + += 0.8.10 (2012-08-06) = + +* Add Lithuanian (lt_LT) to predefined languages list (automatic download and update of language files won't work) +* Add Lithuanian translation contributed by [Naglis Jonaitis](http://najo.lt/) +* Bug correction: empty string translation issue +* Bug correction: 'wp_list_pages' does not filter custom post types +* Bug correction: warning if posts are queried before the action 'wp_loaded' has been fired +* Bug correction: notice in twentyten when resquesting a date archive with no posts + += 0.8.9 (2012-07-20) = + +* Add Portuguese translation contributed by [Vitor Carvalho](http://vcarvalho.com/) + += 0.8.8 (2012-07-18) = + +* Validation improvement thanks to kg69design +* Bug correction: custom post types rewrite rules are broken when registered with query_var=>false +* Bug correction: user admin language not deleted when uninstalling the plugin +* Bug correction: pll_current_language('name') returns locale instead of language name +* Bug correction: ajax on frontend does not work +* Bug correction: homepage pagination broken when redirecting the language page to a static front page +* Bug correction: taxonomies conflicts on custom post types +* Bug correction: the admin language is not updated when edited by other users + += 0.8.7 (2012-06-10) = + +* Add the possibility to load Polylang API for ajax requests on frontend +* Bug correction: search form is broken when using a static front page +* Bug correction: admin bar search does not work +* Tests done with WordPress 3.4 RC2 + += 0.8.6 (2012-05-23) = + +* Add the possibility to use a local config file to set options +* Improve robustness (less PHP notices) +* Bug correction: Menus not showing in preview mode +* Bug correction: fatal error when customizing a theme in WP 3.4 beta 4 +* Bug correction: second page of search results returns 404 when using pretty permalinks + += 0.8.5 (2012-05-14) = + +* Bug correction : sites using static front page are messed in v0.8.4 + += 0.8.4 (2012-05-13) = + +* Add a new argument 'post_id' to the function pll_the_languages to display posts translations within the loop +* Bug correction: every posts in every languages are shown on the homepage when requesting the wrong one with or without 'www.' +* Bug correction: every posts in every languages are shown when requesting /?p=string +* Bug correction: the language is not correctly set for wp-signup.php and wp-activate.php +* Bug correction: wrong home links when using permalinks with front with WP 3.3 and older +* Bug correction: wrong redirection after posting a comment when adding the language information to all urls +* Bug correction: term language may be lost in some situations +* Bug correction: post language is set to default if updated outside the edit post page +* Bug correction: javascript error in WP 3.1 +* Bug correction: can't toggle visibility of tags metabox in edit post panel +* Tests done with WordPress 3.4 beta 4 + += 0.8.3 (2012-04-10) = + +* Add Danish translation contributed by [Compute](http://wordpress.org/support/profile/compute) +* Add Spanish translation contributed by Curro +* Add the possibility to add a content in a different language than the current one by setting explicitely the lang parameter in the secondary query +* Add support of PATHINFO permalinks +* Bug correction: secondary queries not correctly filtered by language +* Bug correction: wrong archives links when using permalinks with front +* Bug correction: wrong homepage link when keeping 'language' in permalinks with front +* Bug correction: flush_rewrite_rules notice when setting up a static front page (introduced in 0.8.2) +* Bug correction: every posts in every languages are shown when hitting the homepage with a query string unknown to WP (thanks to Gonçalo Peres) +* Bug correction: every posts in every languages are shown on the homepage when PHP adds index.php to the url +* Tests done with WordPress 3.4 beta 1 + + += 0.8.2 (2012-03-20) = + +* Add Italian translation contributed by [Luca Barbetti](http://wordpress.org/support/profile/lucabarbetti) +* Improve performance on admin side +* Comment status and ping status are now copied when adding a new translation +* Deprecated API function 'pll_is_front_page' as it is now useless +* Bug correction: Wrong translation url for taxonomies when adding the language information to all urls +* Bug correction: "translation" of search page does not work if the site is only made of pages +* Bug correction: wrong language permalink structure introduced in 0.8.1 +* Bug correction: wrong language set when clicking on "add new" translation in edit category and edit tags panels +* Bug correction: site does not display if no languages are set +* Bug correction: get_author_posts_url is 404 +* Bug correction: homepage is 404 when using a static front page and adding the language information to all urls + += 0.8.1 (2012-03-11) = + +* Add Latvian translation contributed by [@AndyDeGroo](http://twitter.com/AndyDeGroo) +* It is now possible to synchronize multiple values for custom fields +* Add new API function pll_current_language +* Add the pll_rewrite_rules filter allowing plugins to filter rewrite rules by language +* WP 3.4 preparation: disable the menu section in the customize theme admin panel (unusable with Polylang) +* Bug correction: removing 'language' in permalinks does not work in WP 3.4 alpha +* Bug correction: problems with custom post type archives when 'has_archive' is set (thanks to AndyDeGroo) +* Bug correction: 404 error when combining %postname% permastructure with "Add language information to all URL" option +* Bug correction: translated custom strings are duplicated if registered several times +* Bug correction: queries with an array of post types are not correctly filtered +* Bug correction: wp-login.php always in English + += 0.8 (2012-02-29) = + +* Sticky posts are now filtered by language +* It is now possible to use the language page as home page +* Add an "About Polylang" metabox on the languages admin page +* Add the pll_the_languages filter allowing to filter the whole output of the language switcher +* Add a new argument 'display_names_as' to the function pll_the_languages +* Add pll_get_post_types & pll_get_taxonomies filters allowing to enable / disable the language filter for post types & taxonomies +* Add ckb to predefined languages list +* Completely reworked the string translation storage in the database +* Some performance improvements on admin side +* Improve compatibility with other plugins broken by the home url filter +* Add an option to disable the home url filter +* Add an option to disable synchronization of metas between translations +* Bug correction: body class 'home' is not set on translated homepage +* Bug correction: robots.txt is broken when adding the language code to all urls (including default language) +* Bug correction: bad name for the Czech flag +* Bug correction: bad language information in rss feed for WP < 3.4 +* Bug correction: signup broken on multisite +* Bug correction: the translation url is set to self when using a static front page and no page for posts and there is no translation +* Bug correction: problems with custom post type archive titles +* Bug correction: problems with custom post type if rewrite slug is different from post_type (thanks to AndyDeGroo) +* Bug correction: quick edit still breaks translation linking of pages (thanks to AndyDeGroo) +* Bug correction: bad rewrite rules for feeds (introduced in 0.7.2) +* Bug correction: the order is not saved when creating a language +* Bug correction: the categories list is not updated when adding a new category (ajax broken) + += 0.7.2 (2012-02-15) = + +* Add Polish translation contributed by [Peter Paciorkiewicz](http://www.paciorkiewicz.pl) +* Add 5 new languages to predefined list +* completely reworked rewrite rules +* WP 3.4 preparation: add new WordPress languages files to download when creating a new language +* Bug correction: custom nav menus do not work in Artisteer generated themes +* Bug correction: having a single language causes multiple warnings while saving post/page. +* Bug correction: custom nav menu broken on archives pages +* Bug correction: the language switcher does not link to translated post type archive when using pretty permalinks +* Bug correction: the tags are not saved in the right language when translated tags have the same name +* Bug correction: bad link in post preview when adding language code to all urls +* Bug correction: feed not filtered by language when adding language code to all urls +* Bug correction: duplicate canonical link when used together with WordPress SEO by Yoast +* Bug correction: the all posts admin page is messed if another plugin adds a column +* Bug correction: 404 error on static front page when adding language code to all urls (including default language) + += 0.7.1 (2012-02-06) = + +* Allow using 3 characters languages codes (ISO 639-2 or 639-3) +* The predefined languages dropdown list now displays the locale to help differentiate some languages +* Add 5 new languages to predefined list +* Bug correction: the filter 'pll_copy_post_metas' does not work +* Bug correction: impossible to add a tag in the edit post panel +* Bug correction: rewrite rules not correct +* Bug correction: cache issue with css and js files + += 0.7 (2012-01-30) = + +* Add Hebrew translation contributed by [ArielK](http://www.arielk.net) +* Add support for RTL languages for both frontend and admin +* Twenty Ten and Twenty Eleven languages files are now automatically downloaded when creating a new langage +* Improve filtering tags by language in the edit post panel +* Category parent dropdown list is now filtered by language +* Category parents are now synchronized between translations +* Add the possibility to have the language information in all URL +* Add support for post formats +* Add option allowing not to show the current language in the language switcher (for both menu and widget) +* Add a title attribute (and the possibility to personalize it with a filter) to flags +* pll_get_post and pll_get_term second parameter is now optional and defaults to current language +* Add pll_the_language_link filter allowing to filter translation links outputed by the language switcher +* The option PLL_DISPLAY_ALL is no longer supported +* Bug correction: Autosave reset to default language +* Bug correction: blog info not translated in feeds +* Bug correction: post comments feed always in default language +* Bug correction: undefined index notice when setting up a custom menu widget +* Bug correction: rewrite rules are not correctly reset when deactivating the plugin +* Bug correction: is_home not correctly set on pages 2, 3... +* Bug correction: avoid naming conflicts (in sql queries) with other themes / plugins +* Bug correction: bad language detection and url rewriting of custom post types archives + += 0.6.1 (2012-01-12) = + +* Add Dutch translation contributed by [AlbertGn](http://wordpress.org/support/profile/albertgn) +* Disable everything except the languages management panel while no language has been created +* Bug correction: can't have the same featured image in translated posts +* Bug correction: parent page dropdown does appear only after the page has been saved +* Bug correction: archives widget not working anymore +* Bug correction: string translations does not work for WP < 3.3 +* Bug correction: fix fatal error in string translations caused by widgets using the old API +* Bug correction: the strings translation panel is unable to translate strings with special characters +* Bug correction: Polylang "is_front_page" returns true on archives pages + += 0.6 (2012-01-07) = + +* Add Greek translation contributed by [theodotos](http://www.ubuntucy.org) +* WordPress languages files are now automatically downloaded when creating a new langage (and updated when updating WordPress) +* Add the possibility to change the order of the languages in the language switcher +* Add the possibility to translate the site title, tagline and widgets titles +* Categories, post tags, featured image, page parent, page template and menu order are now copied when adding a new translation +* Translations are now accessibles in the "Posts", "Pages", "Categories" and "Post tags" admin panels +* Improve the dropdown language switcher widget (sends now to translated page or home page based on options) +* Move custom flags from polylang/local_flags to wp_content/polylang +* Add two options to "pll_the_languages" ('hide_if_no_translation' and 'hide_current'). *The function does not output ul tag anymore* +* Improve API +* Bug correction: Twenty eleven custom Header problem with v0.5.1 +* Bug correction: front-page.php not loaded for translated front page + += 0.5.1 (2011-12-18) = + +* Improved German translation contributed by [Christian Ries](http://www.singbyfoot.lu) +* Bug correction: translated homepage not recognized as home page when it displays posts +* Bug correction: predefined language list does not work on IE8 +* Bug correction: on some installations, "Add New" post doesn't keep intended language +* Bug correction: fatal error when Polylang is used together with the plugin Tabbed Widgets +* Bug correction: language Switcher points sometimes to wrong places + += 0.5 (2011-12-07) = + +* Add multisite support +* Rework the Polylang admin panel. There is now a set of predefined languages +* Improve categories and tags language filter in the edit post panel +* Categories and tags created in the edit post panel are now created with the same language as the post +* The language switcher can now force the link to the front page instead of the translated page +* The nav menus can now display a language switcher +* Improved performance +* Optimized the calendar widget (less code and sql queries executed) +* Added the possibility to display posts and terms with no language set (see the documentation to know how to enable this functionnality) +* Started the creation of a small API for theme and plugin programmers +* Bug correction: when using a static front page, the page for posts does not work when using the default permalink settings +* Bug correction: the search form does not work if a static front page is used +* Bug correction: quick edit breaks translations +* Bug correction: categories and post tags translations don't work for more than 2 languages +* Bug correction: the output of wp_page_menu is not correct for non default languages + += 0.4.4 (2011-11-28) = + +* Bug correction: When using a static front page, the translated home page displays posts instead of the translated page +* Bug correction: Automatic language setting of existing categories and post tags does not work correctly + += 0.4.3 (2011-11-19) = + +* Add Russian translation contributed by [yoyurec](http://yoyurec.in.ua) +* Bug correction: impossible to suppress the language name in the language switcher widget settings +* Bug correction: post's page does not work when using a static front page +* Bug correction: flags in local_flags directory are removed after an automatic upgrade (now works for an upgrade from 0.4.3+ to a higher version) +* Bug correction: switching to default language displays a 404 Error when hiding the default language in url and displaying the language switcher as dropdown +* Other minor bug corrections +* Tests done with WordPress 3.3 beta 3 + += 0.4.2 (2011-11-16) = + +* Bug correction: language settings page is broken in v0.4.1 + += 0.4.1 (2011-11-16) = + +* Bug correction: flags shows even when you set doesn't to show +* Bug correction: custom taxonomies do not work +* Bug correction: some users get the fatal error: call to undefined function wp_get_current_user() in /wp-includes/user.php on line 227 + += 0.4 (2011-11-10) = + +* Add a documentation (in English only) +* Add the possibility to hide the url language information for the default language +* Add the possibility to set the admin language in the user profile +* Add the possibilty to fill existing posts, pages, categories & tags with the default language +* Add support for custom post types and custom taxonomies +* Add the possibility to display flags in the language switcher +* Add CSS classes to customize rendering of the language switcher +* Add the possibility to display the language switcher as a dropdown list +* Add support for calendar widget +* Improve performance: less sql queries +* Improve data validation when creating or updating languages +* Bug correction: 'wp_list_pages' page order is ignored when the plugin is enabled +* Bug correction: when using 'edit' or 'add new' (translation) for posts, the categories appear in the wrong language +* Bug correction: pages are not included in language post count +* Bug correction: the language switcher does not display languages if there are only pages +* Bug correction: the widget filter does not allow to come back to 'all languages' once a language has been set +* Other minor bug corrections + += 0.3.2 (2011-10-20) = + +* Bug correction: authors pages are not filtered by language +* Bug correction: language pages use the archive template +* Bug correction: database error for comments on posts and pages +* Bug correction: "Add new" translation for pages creates a post instead of a page +* Bug correction: the search query does not look into pages + += 0.3.1 (2011-10-16) = + +* Bug correction: the widget settings cannot be saved when activating Polylang +* Bug correction: the archives widget does not display any links +* Bug correction: ajax form for translations not working in the 'Categories' and 'Post tags' admin panels + += 0.3 (2011-10-07) = + +* Add language filter for widgets +* Improved performance for filtering pages by language +* Improved security +* Minor bug correction with versions management + += 0.2 (2011-10-05) = + +* Add language filter for nav menus +* Add German translation +* Add language filter for recent comments +* Add ajax to term edit form +* Add ajax to post metabox +* Improved performance for filtering terms by language +* Bugs correction + += 0.1 (2011-09-22) = +* Initial release + diff --git a/pole-sbv-content/plugins/polylang/css/admin.css b/pole-sbv-content/plugins/polylang/css/admin.css new file mode 100644 index 00000000..3e5c3167 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/css/admin.css @@ -0,0 +1,400 @@ +/* languages admin panel */ +#add-lang select { + width: 95%; +} + +.column-locale, +.languages .column-slug { + width : 15% +} + +.column-default_lang { + width : 5%; +} + +.column-term_group, +.column-flag, .column-count { + width : 10%; +} + +.icon-default-lang:before { + font-family: 'dashicons'; + content: "\f155"; +} + +.form-field input[type="radio"] { + width: auto; + margin-right: 2px; +} + +/* about Polylang metabox */ +#pll-about-box p, +#pll-recommended p { + text-align: justify; +} + +#pll-about-box input { + margin: 0; + padding: 0; + float: right; +} + +/* strings translation table */ +.stringstranslations .column-name, +.stringstranslations .column-context { + width: 10%; +} + +.stringstranslations .column-string { + width: 33%; +} + +.translation label { + display: inline-block; + width: 23%; + vertical-align: top; +} + +.translation input, +.translation textarea { + width: 72%; +} + +/* settings */ +.pll-settings { + margin-top: 20px; +} + +.pll-settings .plugin-title { + width: 25%; +} + +#wpbody-content .pll-settings .pll-configure tr { + display: table-row; +} + +#wpbody-content .pll-settings .pll-configure td { + display: table-cell; +} + +#wpbody-content .pll-settings .pll-configure > td { + padding: 20px 20px 20px 40px; +} + +.pll-configure legend { + font-size: 14px; + font-weight: 600; + margin-bottom: 0.5em; +} + +.pll-configure td .description { + margin-top: 2px; + margin-bottom: 0.5em; +} + +.pll-configure p.submit { + margin-top: 20px; +} + +.pll-configure .button { + margin-right: 20px; +} + +.pll-configure fieldset { + margin-bottom: 1.5em; +} + +.pll-inline-block-list { + margin: 0; +} + +.pll-inline-block-list li { + display: inline-block; + margin: 0; + width: 250px; +} + +/* settings URL modifications */ +#pll-domains-table td { + padding: 2px 2px 2px 1.5em; + -webkit-box-shadow: none; + box-shadow: none; + border: none; +} + +.pll-settings-url-col { + display: inline-block; + width: 49%; + vertical-align: top; +} + +/* settings Activation keys */ +#pll-licenses-table td { + vertical-align: top; +} + +#pll-licenses-table label { + font-size: 1em; + font-weight: 600; +} + +.pll-configure .pll-deactivate-license { + margin: 0 0 0 20px; +} + +/* language columns in edit.php and edit-tags.php */ +th[class*='column-language_'], +td[class*='column-language_'] { + width: 1.5em; +} + +/* Text direcction in post.php and edit-tags.php */ +.pll-dir-rtl textarea, +.pll-dir-rtl input[type="text"] { + direction: rtl; +} + +.pll-dir-ltr textarea, +.pll-dir-ltr input[type="text"] { + direction: ltr; +} + +.pll-dir-ltr .tr_lang, +.pll-dir-rtl .tr_lang { + direction: inherit; +} + +/* languages metabox in post.php */ +#post-translations p { + float: left; +} + +#post-translations table { + table-layout: fixed; + width: 100%; + clear: both; +} + +#post-translations a { + text-decoration: none; +} + +#post-translations .pll-language-column, +#post-translations .pll-column-icon { + width: 20px; +} + +#post-translations .tr_lang { + width: 100%; +} + +#post-translations td { + padding: 2px; +} + +#post-translations .spinner, +#term-translations .spinner { + float: none; + margin: 0; + background-position: center; + width: auto; +} + +.pll-column-icon { + text-align: center; +} + +#select-post-language .pll-select-flag { + padding: 4px; + margin-right: 32px; +} + +/* specific cases for media */ +#select-media-language .pll-select-flag { + padding: 4px; + margin-right: 10px; +} + +.pll-media-edit-column { + float: right; +} + +/* language and translations in edit-tags.php */ +.pll-translation-flag { /* also for media */ + margin-right: 14px; +} + +#select-add-term-language .pll-select-flag { + padding: 11px; + margin-right: 13px; +} + +#select-edit-term-language .pll-select-flag { + padding: 11px; + margin-right: 4px; +} + +#term-translations p { + /* same style as label */ + font-size: 12px; + font-style: normal; + padding: 2px; + color: #23282d; +} + +#add-term-translations, +#edit-term-translations { + width: 95%; +} + +#term-translations .pll-language-column { + line-height: 28px; + width: 20%; +} + +#term-translations .pll-edit-column, +#add-term-translations .pll-language-column { + width: 20px; +} + +#edit-term-translations .pll-language-column { + padding: 15px 10px; + font-weight: normal; +} + +/* icon fonts */ +.pll_icon_tick:before { + content: "\f147"; +} +.pll_icon_add:before { + content: "\f132"; +} +.pll_icon_edit:before { + content: "\f464"; +} + +[class^="pll_icon_"] { + font: 20px/1 'dashicons'; + vertical-align: middle; +} + +/* admin bar */ +#wpadminbar #wp-admin-bar-languages .ab-item img { + margin: 0 8px 0 2px; +} + +#wpadminbar #wp-admin-bar-languages #wp-admin-bar-all .ab-item .ab-icon { + float: none; + top: 4px; +} + +#wpadminbar #wp-admin-bar-languages .ab-icon:before { + content: "\f326"; + top: 1px; +} + +@media screen and ( max-width: 782px ) { + /* settings */ + #wpbody-content .pll-settings .pll-configure > td { + padding: 20px; + } + + #wpbody-content .pll-settings #cb { + padding: 20px 9px; + } + + /* settings URL modifications */ + .pll-inline-block { + width: auto; + } + + .pll-settings-url-col { + display: block; + width: 100%; + } + + /* settings licenses */ + #wpbody-content .pll-settings #pll-licenses-table td { + display: block; + } + + .pll-configure .pll-deactivate-license { + margin: 10px 0 5px; + } + + /* strings translations table */ + .stringstranslations .column-context, + .stringstranslations .column-name { + display: none; /* backward compatibility WP < 4.3 */ + } + + .translation label { + display: block; + width: 95%; + padding-left: 0; + } + + .translation input { + width: 95%; + } + + /* hide selected language flag and translations language name */ + #select-add-term-language .pll-select-flag, + #select-edit-term-language .pll-select-flag, + #edit-term-translations .pll-language-name { + display: none; + } + + #edit-term-translations { + width: 100%; + } + + #add-term-translations .pll-language-column { + line-height: 38px; + } + + #edit-term-translations td { + padding: 8px 10px; + } + + #edit-term-translations .pll-language-column, + #edit-term-translations .pll-edit-column { + width: 20px; + } + + /* translations tables should be kept as table */ + .term-translations .pll-language-column, + .term-translations .pll-edit-column, + .term-translations .pll-translation-column { + display: table-cell; + } + + .term-translations .hidden { + display: none; + } + + /* admin bar */ + #wpadminbar #wp-admin-bar-languages { + display: block; /*shows our menu on mobile devices */ + } + + #wpadminbar #wp-admin-bar-languages > .ab-item { + width: 50px; + text-align: center; + } + + #wpadminbar #wp-admin-bar-languages > .ab-item .ab-icon:before { + font: 32px/1 'dashicons'; + top: -1px; + } + + #wpadminbar #wp-admin-bar-languages > .ab-item img { + margin: 19px 0; + } + + #wpadminbar #wp-admin-bar-languages #wp-admin-bar-all .ab-item .ab-icon { + margin-right: 6px; + font-size: 20px !important; + line-height: 20px !important; + } +} diff --git a/pole-sbv-content/plugins/polylang/css/admin.min.css b/pole-sbv-content/plugins/polylang/css/admin.min.css new file mode 100644 index 00000000..bb5a7b37 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/css/admin.min.css @@ -0,0 +1 @@ +#pll-licenses-table td,.translation label{vertical-align:top}#add-lang select{width:95%}.column-locale,.languages .column-slug{width:15%}.column-default_lang{width:5%}.column-count,.column-flag,.column-term_group{width:10%}.icon-default-lang:before{font-family:dashicons;content:"\f155"}.form-field input[type=radio]{width:auto;margin-right:2px}#pll-about-box p,#pll-recommended p{text-align:justify}#pll-about-box input{margin:0;padding:0;float:right}.stringstranslations .column-context,.stringstranslations .column-name{width:10%}.stringstranslations .column-string{width:33%}.translation label{display:inline-block;width:23%}.translation input,.translation textarea{width:72%}.pll-settings{margin-top:20px}.pll-settings .plugin-title{width:25%}#wpbody-content .pll-settings .pll-configure tr{display:table-row}#wpbody-content .pll-settings .pll-configure td{display:table-cell}#wpbody-content .pll-settings .pll-configure>td{padding:20px 20px 20px 40px}.pll-configure legend{font-size:14px;font-weight:600;margin-bottom:.5em}.pll-configure td .description{margin-top:2px;margin-bottom:.5em}.pll-configure p.submit{margin-top:20px}.pll-configure .button{margin-right:20px}.pll-configure fieldset{margin-bottom:1.5em}.pll-inline-block-list{margin:0}.pll-inline-block-list li{display:inline-block;margin:0;width:250px}#pll-domains-table td{padding:2px 2px 2px 1.5em;-webkit-box-shadow:none;box-shadow:none;border:none}.pll-settings-url-col{display:inline-block;width:49%;vertical-align:top}#pll-licenses-table label{font-size:1em;font-weight:600}.pll-configure .pll-deactivate-license{margin:0 0 0 20px}td[class*=column-language_],th[class*=column-language_]{width:1.5em}.pll-dir-rtl input[type=text],.pll-dir-rtl textarea{direction:rtl}.pll-dir-ltr input[type=text],.pll-dir-ltr textarea{direction:ltr}.pll-dir-ltr .tr_lang,.pll-dir-rtl .tr_lang{direction:inherit}#post-translations p{float:left}#post-translations table{table-layout:fixed;width:100%;clear:both}#post-translations a{text-decoration:none}#post-translations .pll-column-icon,#post-translations .pll-language-column{width:20px}#post-translations .tr_lang{width:100%}#post-translations td{padding:2px}#post-translations .spinner,#term-translations .spinner{float:none;margin:0;background-position:center;width:auto}.pll-column-icon{text-align:center}#select-post-language .pll-select-flag{padding:4px;margin-right:32px}#select-media-language .pll-select-flag{padding:4px;margin-right:10px}.pll-media-edit-column{float:right}.pll-translation-flag{margin-right:14px}#select-add-term-language .pll-select-flag{padding:11px;margin-right:13px}#select-edit-term-language .pll-select-flag{padding:11px;margin-right:4px}#term-translations p{font-size:12px;font-style:normal;padding:2px;color:#23282d}#add-term-translations,#edit-term-translations{width:95%}#term-translations .pll-language-column{line-height:28px;width:20%}#add-term-translations .pll-language-column,#term-translations .pll-edit-column{width:20px}#edit-term-translations .pll-language-column{padding:15px 10px;font-weight:400}.pll_icon_tick:before{content:"\f147"}.pll_icon_add:before{content:"\f132"}.pll_icon_edit:before{content:"\f464"}[class^=pll_icon_]{font:20px/1 dashicons;vertical-align:middle}#wpadminbar #wp-admin-bar-languages .ab-item img{margin:0 8px 0 2px}#wpadminbar #wp-admin-bar-languages #wp-admin-bar-all .ab-item .ab-icon{float:none;top:4px}#wpadminbar #wp-admin-bar-languages .ab-icon:before{content:"\f326";top:1px}@media screen and (max-width:782px){#wpbody-content .pll-settings .pll-configure>td{padding:20px}#wpbody-content .pll-settings #cb{padding:20px 9px}.pll-inline-block{width:auto}.pll-settings-url-col{display:block;width:100%}#wpbody-content .pll-settings #pll-licenses-table td{display:block}.pll-configure .pll-deactivate-license{margin:10px 0 5px}.stringstranslations .column-context,.stringstranslations .column-name{display:none}.translation label{display:block;width:95%;padding-left:0}.translation input{width:95%}#edit-term-translations .pll-language-name,#select-add-term-language .pll-select-flag,#select-edit-term-language .pll-select-flag{display:none}#edit-term-translations{width:100%}#add-term-translations .pll-language-column{line-height:38px}#edit-term-translations td{padding:8px 10px}#edit-term-translations .pll-edit-column,#edit-term-translations .pll-language-column{width:20px}.term-translations .pll-edit-column,.term-translations .pll-language-column,.term-translations .pll-translation-column{display:table-cell}.term-translations .hidden{display:none}#wpadminbar #wp-admin-bar-languages{display:block}#wpadminbar #wp-admin-bar-languages>.ab-item{width:50px;text-align:center}#wpadminbar #wp-admin-bar-languages>.ab-item .ab-icon:before{font:32px/1 dashicons;top:-1px}#wpadminbar #wp-admin-bar-languages>.ab-item img{margin:19px 0}#wpadminbar #wp-admin-bar-languages #wp-admin-bar-all .ab-item .ab-icon{margin-right:6px;font-size:20px!important;line-height:20px!important}} diff --git a/pole-sbv-content/plugins/polylang/css/selectmenu.css b/pole-sbv-content/plugins/polylang/css/selectmenu.css new file mode 100644 index 00000000..9eb29261 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/css/selectmenu.css @@ -0,0 +1,140 @@ +/* Greatly modified version of the jquery-ui.css */ + +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ui-menu { + list-style: none; + padding: 0; + margin: 0; + display: block; + outline: none; +} + +.ui-menu .ui-menu { + position: absolute; +} + +.ui-menu .ui-menu-item { + position: relative; + margin: 0; + padding: 3px 1em 3px .4em; + min-height: 0; /* support: IE7 */ + /* support: IE10, see #8844 */ + list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} + +.ui-menu-icons .ui-menu-item { + padding-left: 2em; +} + +/* left-aligned */ +.ui-selectmenu-text .ui-icon, +.ui-menu .ui-icon { + position: absolute; + top: 0; + bottom: 0; + left: .2em; + margin: auto 0; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + left: auto; + right: 0; +} + +.ui-selectmenu-menu { + padding: 0; + margin: 0; + position: absolute; + top: 0; + left: 0; + display: none; +} + +.ui-selectmenu-menu .ui-menu { + overflow: auto; + /* Support: IE7 */ + overflow-x: hidden; + padding-bottom: 1px; +} + +.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { + font-size: 1em; + font-weight: bold; + line-height: 23px; + padding: 2px 0.4em; + margin: 0.5em 0 0 0; + height: auto; + border: 0; +} + +.ui-selectmenu-open { + display: block; +} + +.ui-selectmenu-button { + display: inline-block; + overflow: hidden; + position: relative; + text-decoration: none; +} + +.ui-selectmenu-button span.ui-icon { + right: 0.5em; + left: auto; + margin-top: -10px; + position: absolute; + top: 50%; +} + +.ui-selectmenu-button span.ui-selectmenu-text { + text-align: left; + padding: 0.4em 2.1em 0.4em 2em; + display: block; + line-height: 23px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.ui-widget-content, +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + background: #fff; + border: 1px solid #ddd; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07) inset; + color: #32373c; +} + +.ui-widget-content .ui-state-hover, +.ui-widget-content .ui-state-focus { + background: #f5f5f5; +} + +.ui-selectmenu-button.ui-state-focus { + border: 1px solid #5b9dd9; + box-shadow: 0 0 2px rgba(30, 140, 190, 0.8); +} + +.ui-icon-triangle-1-s:before { + content: "\f140"; + font: 20px/1 'dashicons'; +} + +.ui-widget-content { + max-height: 231px; + box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3); +} diff --git a/pole-sbv-content/plugins/polylang/css/selectmenu.min.css b/pole-sbv-content/plugins/polylang/css/selectmenu.min.css new file mode 100644 index 00000000..5527ee05 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/css/selectmenu.min.css @@ -0,0 +1 @@ +.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;min-height:0;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon,.ui-selectmenu-text .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:700;line-height:23px;padding:2px .4em;margin:.5em 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none}.ui-selectmenu-button span.ui-icon{right:.5em;left:auto;margin-top:-10px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:.4em 2.1em .4em 2em;display:block;line-height:23px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-state-default,.ui-widget-content,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{background:#fff;border:1px solid #ddd;box-shadow:0 1px 2px rgba(0,0,0,.07) inset;color:#32373c}.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover{background:#f5f5f5}.ui-selectmenu-button.ui-state-focus{border:1px solid #5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}.ui-icon-triangle-1-s:before{content:"\f140";font:20px/1 dashicons}.ui-widget-content{max-height:231px;box-shadow:0 2px 6px rgba(100,100,100,.3)} diff --git a/pole-sbv-content/plugins/polylang/flags/ad.png b/pole-sbv-content/plugins/polylang/flags/ad.png new file mode 100644 index 0000000000000000000000000000000000000000..625ca84f9ec596848d4b967b5556fda897ca7183 GIT binary patch literal 643 zcmV-}0(||6P)S}{rU-#^xW|9%5S{`_G8k=zVG=|5luWB>#JF#yj01oZa& zTu&JQ008~}|NQ&{0055x0sR95`v3p?1_t~7{`v!N`v3d-{`&g=`T6amqXIBA$0h)T zKokWRkpoMx|Go@O4FvhR>O1p+i7`B6t^3)y2dJ<#?4I?d4x-E}Az98Z`2`TmzkmP! z{`(J9{pauh-+zJD{JOYLhW+QSzkh#x`Y&wke*WLjpZ~u9`2XuCr@{^OJ|MkZb_UGR@Z=V>fB*iaq<8P{*B}2u-uMnu#J~U$KrBDL0bT$1_irEqiZcM6WEF7g<|*+% zzkjHi-TwRc=f7_t9|K*?`1?07lmG&V<)V$@{}>pUYZ(~+fDw@M3(WY1!T<=sp}f-o0K!lJ3<>Jc!&VtMslE3ph2^H3FGe(F z4|^}slF1@l1Nxc}^5hjjU=0la|37)k@b@neJ^1|l@87?_{{z(l6@kcKe}Db@_Y267 z<&g#201!YdV6*>2R0EZ*bYA%%2Vi7me5m>mAb?naPGtnD20MY__n-f`0mzg8{s9CK z*hzmtW)s%H$oS{aAAkS?JLxaT`2W9u;n%DD1Q-B%#%TuGpFSS|0000&5HW|5#c7{r(N){s9YCi84$~U|{$Glm>AD0*K|^yLU}ZO+eP) ze;~;4`#0mCzs$dX{r~-&?f370zkUTM{{OB1_1E8DKmYz*JbN)f0I>i8Q1#1Kum1f0 z{pZggpt}FRe*ORX>;JEx|9}4c_w(m__W!pfKK=atLxM{ZXbC_7vHbh@@9*EgK-ECy zzkh)Y{?EYhFEQc&-#`EN9{7Lq7*OE*@9)2U|NQmmC(vO40VtezBLF}U2%?OI(TG)& zJC>!~;SYmN-)zb6gc(7A-^Q(#z0vHb9!CJ#T#ii{@&pjek8j`pfX)5|H00+GpnLvt za{MtfWBC4qk%R63j~{=2{QLgr`wyTb*amx2hce{;{QL3a|BhWh#6A5bKmf5of*%NgdVm^$Zuo!gI_LQd|G=96g51yWl0Agf71rLE? q3XWqq@&Lw?Iyk0*94-cc00RK~MQKxxUU$F%0000= z`}|7!`YQYT5C8xIh~*yx1DgQ1_jkSr_QgN{Gn)!7=zkRT=l(yS{y%^Jd$>%yrP!)vVq~xpZ~xA{{HjZ>hB|)Z~OQoBLBm{yCqA0{k;C`&+mV~|1$jj15^wU zKukakbkF}kzkmk({q_6zmUTZaUWBOraqa5!?(V-pgMR}R{04?0&`AIR#PSE^hrdi> z;*7t4gLVFSJ$J5DTibsorq@%ai5h7B2l^1G@*gM=fUW@uAjYc<48V{DX@ijvE(11_ dg@FMezyQzuBHsGv+i3s*002ovPDHLkV1jTADB=JB literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ai.png b/pole-sbv-content/plugins/polylang/flags/ai.png new file mode 100644 index 0000000000000000000000000000000000000000..74ed29d92616c86757d3c0ec04378301c8f591b4 GIT binary patch literal 643 zcmV-}0(||6P)ocPy#thD++(+#W%SS0Qvp^`1%0+_yGC)0QUL-|M&m^ z`T_tk0M7pe&iDc7fh@K74M*k&0{8f*88BG;;GY6ve?;&4{{Q>_{{8&^`u+g@|Ns5} z|C?Nv0*Gb#mu+n4z6ZW~#qjy_|6ji&ZeIEMk16oyzH)i@Pk$MNxLARR?a#kwpMS72 zF)}cG2M8dRUN*~81wCz%$A2$f`_IL|A|w6j^RHtc7{2`lYG-KkQ{(*knSqh%3kzr7 zs%s1kKL7#%F#yj00-^B^D;pD^^AqC)4C(?1m>@q26ceiU4*2{4`u_d~@vQ*ykp&A1 z3h$o${r~^~`vQo?Pm-bY@cm79zVQG5%l!B6)Riap%L`bGemnT<@2|iAfl64!%YWS~ z`p0YY_dig_cYpw5WYAmG*lPLk!;jy8|NZ#~MF0Q%{rCG1ko^Di`(Fhkd3F{?py0c9Vg{{gA~^#>F<|Nj5KapBR^@Bf~CXSi|t;lF=C z8-4)<5DUX^V9+rDCI3RuUy#}V{s46X!}R~}@4ug&fA|+@;n!b(1zCZ900KKMX({{sIILBZE*UQbc|SngJt$+`m9Kz!<;5 dBm+Qz0RWL%NC2%sdjkLf002ovPDHLkV1lARHI@JX literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/al.png b/pole-sbv-content/plugins/polylang/flags/al.png new file mode 100644 index 0000000000000000000000000000000000000000..92354cb6e257be2cade71cb825027ce8d9efc06d GIT binary patch literal 600 zcmV-e0;m0nP)PbXFRCwBA zyv)hK@{fUmi2(>${xJOc&A`II@PmN?BKC`c;SU)710$d~Kmf4-r6niy16BY3`}g0! ze=L9h&Uybegp-Ns@87v^zGQMU|NZla@z1Y+zkdVKmFbHB0*HkH4F0@)&iwE1;&GRLuzkX(OGXMMa``@o$|Ni_2x(y(Jn3#TnHT?el|IhC;U%pHK`}6Df z@2@|9J^lXU=Z~KvfBzi*^!4A*U;lv`e*Fge3Lt=(82$q_`~m9z|ND;$!(WEqze~6o ze}X|JFO$H(U+VvX#{c{avi3L7@c;n?3L&6l7=Hix`}emN<6i~#|7+iUWBL8-&##}m zKKx5zXJr5LA80nvkwCM6egFs{po9Y?& zL6B;olm7ns#=rm&Kp-3b{RIXY(1{??Ha=$NKfkS+|9@us$Mfg+93j@fzkY#y2y!;i z&kO(o1PWH5>zPHwn7|>;0Mz;WPl13iP!Y(WKYy4&4hBXMSPugOKmaiw2gk!dq!|4J mj$lZE0R~eis zC&uN{cDQ8`!@ZNLOqwtoG6nhzPx}SV-d6yzFfcIz75{(rngJyDkKrFw8iaoThHCr$ zo8k9wMhS^O3=9AP!~%5B|9}4(ASQtkLN$m1CV&5705X362095KfLKJhW;OjWdGY7l zzrX*$DuLu*pcFC#NdEr)SL!$SY=)lz0mSm_*B_u)|AM4JP)(}33zy1Lc&_o7? zKL7y)bkd){fBym<_v`mxpbeRs`+WRVot-5A{r$IX$CJFg13u{3eX_{0R++j zR}GCkSy{&4zk!krKoTg(2n-k?g31B}5JW!NMq0d0000q< zM7LZb@rX?|r)2RP-+aO3(7q?c3+$-Vv0E)PxM3SDV%@s`#GkZvw_x^WBa~uq3^l}t zWdf(j(=(>^SgETc#5#EZT(4ObRkfxbzP9G;yza0;Ygc8-_*?EP(ca#`l6-Z6D0{tL zQ4|~MCSi!9Q9YkW=V$ix#EqZ!rc?eWA0TwdVID+3aqrYUXUhCI)Ad5!(cP!BhhW$Ayb2&r8kK!bz*2`~UE W(Ndrek0Jg50000NL7TW{{R0! zJP>i}(MpzaSkj z=eqvqa`^|6{{QbQRQ11q3~Vg_kG}Z}5I`(hw}ncX8D4$|h64jUK>or*=^r$dfI%n0 z$3MKz;!F0w91GjkkV%_X`@4 wKR^hm`X5LwD9*v?4;TUC6Bz$&3;+QJ0QLcJ=WT{TU;qFB07*qoM6N<$f>3bX%K!iX literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/arab.png b/pole-sbv-content/plugins/polylang/flags/arab.png new file mode 100644 index 0000000000000000000000000000000000000000..365172ac3f2e750d8f66a74271c6b1d9659f42dc GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!3HGD9`RZNDVAa<&kznEsNqQI0P;BtJR*yM zv^@wjx=-(X0Axs(xJHx&=ckpFCl;kLl$V$5W#(lUCnpx9>g5-u&wghk#lXPG=jq}Y zqA_vl#Is(90|ea8`xdWVc-D8ehO7396&zb1Em|j1^1Ap(+rH*^cSKnQTN{>kx#X_M z6rO#gHP7o(M8UTE{OM^d&*x65?+H`sQgKx|`uCU4K~J%pue?oIzH1B4Gn+Sm!CURV zRf>{ur|LGTPdVlno(KgRJ#_rG@_L(va%cEIEwzj+HEyjXn~TpB z9bL9i#xE*eLwmu>nf1b77BTu|Y|NCDDB`Ub*|3gfyK;A&34`TZ@tNk!3Vvh;M}NI> z?=HiGkLRAgU3qTnPrjsG3e_%*v5%Qe?;YMNvLn3d)ehI~MkiW|!x=cdImHk1F8$Om s!!Dd;t8TlRLE##!;m7sb_BgLnPgg&ebxsLQ02t$(6951J literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/as.png b/pole-sbv-content/plugins/polylang/flags/as.png new file mode 100644 index 0000000000000000000000000000000000000000..32f30e4ce4eedd22d4f09c4f3a46c52dd064f113 GIT binary patch literal 647 zcmV;20(kw2P);Rmc0RI30 z|Nj5|{Q>>`0R8>{{QLs@`vM01^D6+%Ap+Y10Qw3Sr3ED)s=c}b05Jg0{{#dC0RR60 z)z$y}`~dv>0Q&p?0Q>ne0Khr|#}EMN1`-ttJvaFq6VTDg`OMJS*4F}vg#m0fQ1$QM z42u6QTCg3Kt8+Li1J#Y_zUd>4Lw{URe1tEjLbKmY(S0M7pd(g2qsJ0|z;{R`~d z`n<6E*3bb41p*Zr{{R344LkeqyaMyV01O!W0PZ0+TjlEQ0st`p&i?@b0Q{Gi0m{n% z`T6-B``1JQx+4kM0{rp_FfRy7P6Qq%_1|&<`|JPx`Uew8u)+%h2+ zdiAI7xt}_}e|$CmbI9$2>u h*D)|iF)#oG7yty8`q2#I8zBGy002ovPDHLkV1j5VEF}N{ literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/at.png b/pole-sbv-content/plugins/polylang/flags/at.png new file mode 100644 index 0000000000000000000000000000000000000000..0f15f34f2883c4b4360fc871d7105309f1533282 GIT binary patch literal 403 zcmV;E0c`$>P)@|4`Xj5kLT%`al?B=W5I`&prl$WjwHQRjfmQ&G0jUOA z@&|Dug_Rm`2Y251|$~)1M2@@6mI}!8O6olw6y^Q z5X--d7nzS8`+x5q12kBmVFD!~j6c5_fMKno0(1^Q0I>i=is|LjXX40RRttS6cG0UZ?;7002ovPDHLkV1fxUnjZiF literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/au.png b/pole-sbv-content/plugins/polylang/flags/au.png new file mode 100644 index 0000000000000000000000000000000000000000..a01389a745d51e16b01a9dc0a707572564a17625 GIT binary patch literal 673 zcmV;S0$%-zP)>fJ3En$GhGS>sbE%%m3$AD)q?8M9y>88-}kR7#RKlk!P~Y_PLuF7~U~3`~nC7 zF#yj00ZUDdpLsm{7ajP|&HwoK0Usg|6%f4L_{`Mi{rvv-`ukf=Ed&Gs-sA7L!Q7*a zj{*QO0M7pb%?Sw^g@yy{>ihEY{`vU@3=8@G0rvO$i3mOL`~mv-`W+b$Mmr&io5dg< z5v!7q0*L95jt`TzK8Kd(Utv)OSp_aLv){6ccV+Z`{Q2+asKUU&aO3`Kpz6wW8wp`< z28M3{0mSqnB#A*-c*8%1=RD#sSOwMznKA3=e&iEzwo{cA=PgXK`2OQ}gqId83!|%* zA_Kz@fB*n70M7pdECCwp4H&@R`1|(w-}M5x*74i)0}%fAt;XafA{48))#>Z>?CD#}*e}Ret0tl$#*RMZ7}Jl7Z|M45`5*URzH9L z{rmSnPy;{!u>dsyO%meg+00000NkvXX Hu0mjfN{&}S literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/aw.png b/pole-sbv-content/plugins/polylang/flags/aw.png new file mode 100644 index 0000000000000000000000000000000000000000..a3579c2d621069c8128d7cf16440d5e45a3ab3cd GIT binary patch literal 524 zcmV+n0`vWeP)^}0h@W9fA9JOn#opKkr#VO<{LPm{QLg}EdH3Vb1Zzpp zqiZ+XNBm%5{`ViKi{bCTe}Dh~2a+HyfB%6Q|9}7eKVjxEfB<6Q<6r}-{{7;G=hB{; zLB+p+|Ni^;|DXT={s75;AoBO$f4@PDf8sps4FCQC1Q64wUw^h*hy4HZXO3U)@85qw zD*pci8U|DWQu_BVi2MUWKoOv;00M{w=;|*lY_o%kegGx^{`&*A{SSok_usF-P)oof z|A86+0*K|;FQAM6fB*FtoEI&bZG5mq328#as{}<$F zWDQ{Ffz1MH001phxCBNdC_2H6U$AI~GQbEJqg*Ti0R{kQ(yH?TRrCY^ O0000^@RCwBA zRL|V|7QjV)*ul;Rlceqc6W0{`~_8AeMg& z|LUXE8U8c=`}dziv6P|mEu%JjM}pqh@65md|Ni~w->=_)fBgZXe?Nc!ot?WGAOHX{ z0M7pe`uG9>{{ZXo`u+d?{`u+u=j#9V2j%Sc^797z|N8p+{rLO+`TP9&`u!FW2mk>3 z0#G;xDFDDQ2vg|)-@5Zw?JVTrAxNs~5&|AZ;5uWfQ`vUsMGm`>aGWoI7=P|oW>%~E z|Kk8dq@aG@HzdsB>fj@shYzX-a%=q<(frSYmfLIv5{HbzQ${~M_P_y6C&m>3uU0*DFd0+8#0#Gk)^|NLQBRAyCBeB9H+Wn{=Mr@*PJ_ZKV< zB>w@GFfafF5Ks>TBP0ZV{bBt5_ve*sKkwd`OiO#eX6=u=cfX!E#rX3NBT(umNC7Yu z0Ro8S7X#4ce?Xr63$phg)Bk64X8r&5``_O`AFf^jc>p5y?+^38KVKLa00M}`wU!~x z=I_1Fe}Df4D*yZI@1I|PfBgnRptt`0`2{iqMpRNPo|?TW>MPOFW(r1_!xlT-yep5|G*@e%^SFxf#DC32@n7=0M7pe00011 zNe=7o{FIuhzQ(sjF~t7>`T+s_0sj00{`>*}`~Uy^|Ni?^Z7Tcx|FW0O0tlpm;s5{T z+df{s^E1rDZN;v4VP>0|8GkY`{`&t1s2YfV{r~st=KUYCl59Xr00M{!Xv@F<41fPH zoWA^R$>xvtF5yd$xc~X{7o-}f=ig7DY9RXc``_>1K-c{N2q2&ahQEIq{`~z1RCDs; zw*~7zIJ!sAKj8J}&!7K)enC|K{|nUc|Mwq|27mwp*#K1f8;Jh=2byv8+}GKw-@AGz z%-rMu^XK3HKtBLA{Qvdq*I%FsKn(x^1k&&qY(LP_Uw?q)|3jz0PF?=a(?4bU?qHzN z5I+E=z&88?2q2IKpz*){`~&I%+VJc5-=Dw#?LYB#!lHLRL7BZ8-NZ5x*TXaKmf6TZ20qEQj`^F;~x-W z05U+*fBxNj@_W(7kJ(ujGnWgh$g%(Z2hso#K#U9wI~hQ+`3Dk_7z`j1tL#*2FTcgW f@C+EF009O7>dRn2w6d?H00000NkvXXu0mjfueTzu literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/basque.png b/pole-sbv-content/plugins/polylang/flags/basque.png new file mode 100644 index 0000000000000000000000000000000000000000..cb2f25e180f4b4f4730dcede234799a79e867ad3 GIT binary patch literal 565 zcmV-50?Pe~P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2i^$* z6e$MhM&p?P00Fg0L_t(2&!v)GNK%jc z2QeU$brEl<(fvr1(& zYVe`f!`bW(Pu^}4&g_)=VA)^6-DrSie+4b+0u%El#+HM4dG(weYc;Smg~87jcRuED zJMy1K+ExY6F8g?WQAf9T8DBIJyog9+>u63it5kjiI*6!6h@(bP00000NkvXXu0mjf D&{FfO literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/bb.png b/pole-sbv-content/plugins/polylang/flags/bb.png new file mode 100644 index 0000000000000000000000000000000000000000..0df19c71d20d7fdc06e1cba01028983439b2bdae GIT binary patch literal 585 zcmV-P0=E5$P) zj51&U|NhG$_=oZTA7 z0mJ{l|Ns2{|Nr-Y#^3*c{=WU_!>_-;fvROCxPdkR1P~M0Xa=C_KR`47{sXG+pY!Yf zqu=)*{%)W0>;M0szkdJy_507SKYxDz`3KYh5I`&-cY{^``2$3Z|NsB`^ZWO@y}$qd z{r%_nFQBC$4Is{6hz5WF0@(mI8^j0N`~Tl>LzQ1Ye}a&q>MtPo*RQ`|OMu4x1!@2Y zAfSdne}TsT{`c$8-(P?J0c~)w`~?J`zx?#Dg*yp^z&88=2q2IKpt(TRKniTbum8-y z1bBWi0e#F0wgIH{FVJ|Pxj-8L0tgsNfByUdJMs7b-@h3^8h-!E3i%CU{QCW$1*GB6 ze~`2PfHeF82q2&aU>N+96yg32bmdP5238q{|Gydk0=52OVEN6!@<&OA7Z~7wL16>b z@DCt>7#SFn85mf=5eY;LZ#OUe_l@D-2Zn#Y82<4v{9|E|jkRQ8_`$&N0jL_N03g5s XX0T^_9W~6o00000NkvXXu0mjfXpthO literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/bd.png b/pole-sbv-content/plugins/polylang/flags/bd.png new file mode 100644 index 0000000000000000000000000000000000000000..076a8bf87c0cedcce47099c6b74b59f2c9d1dbce GIT binary patch literal 504 zcmVCcfPV}OzZe+)fYC1)`hmpw%>WR9L@~Dk00x0r!@5ksR;+hV0>ZLfIcBS@orh;x zv}95za5W)x_7^}bV3YqpdH?h;NZnuSC%?V#{+0gl`~RQckJx{&l>NO~;@7XgzkdJz zEh{VwR0LSuiyWGR{aKQ z00-R5+27mwp+3@G@Um)kt zzdstU{yWl9SIB_0ft3II3)BD*KrA2|{``^Tm;4PDy`=a1tTre>fEI#8 u{{2z<2NVVaum*qtVq}m+iAaI~Aiw~?reC_kVQV=60000gsB+3J~Dn`pdxgmx19A{hgns>oXkhsL8>j&wfIu2Rsv+R_ zAB5T1GyoL?1Q1BWpFe+p|Nf1n;TJ-~Kd@?uhChFRHUI<=#0HS!U%!8$YJib28yLY( z0tg_G2B7i3e*FSj@aq@44gY_`jRywQ69xu=0D?FP=vyd&x*M*V6|CV8P{Uu4OBfgc z0tjNmA4y3`us8lPG6H?}8%zRafgb(Cp!5f*6oP{xAq} rF#LPR@IoIX4%E%Yz;K6w0U*EtuUcjA`-_J300000NkvXXu0mjf+>pV; literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/bf.png b/pole-sbv-content/plugins/polylang/flags/bf.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5ce8fe1237a18d6809a5570024eb108cb14a3e GIT binary patch literal 497 zcmV@|4`Xj5kLT%`al?B=W5I`(ov;U*021-Lr1*!W5(gW7O z@cTDV13&<=05Ky_HBiN$KMcQt819e>gHP`g_|Np;&&;0(C^$RHS>olZ*Q41X9v27}ar6#W9}0h{^{OajIK0?h(y z_zOe~zZd`lhy{p$|NA4!EeST}?;nUxkP49VfMx;1;V%&U|N9rH;SU2q05LM8GXV8K n(H~UyA0);fa6B_H00bBSQ>$p&WfB*UmB!B(-`wPhZ^#?@C^U5EbbPyl_g=3Hc01Sh${{P9=HB%4| z34*<3-m=C?^;L%miR{xQv2*hU;8+Y&0Dxf-W~KjsusWFAC4@j0#9_j;X5z6SjRhH> zd}sd(7FPhVFdSi!*Zj@;_Sc`kfByUdk|3A-`STmZ_yb~qxIp9o{E-p)bLt=iKmf7) z+|Ix(`{&<1pm88mK&}8g1WG~}e||Ik`OB#Cw~m1UAb?na(Zlrn4}+v6P!1@{@CT$5 z&-#|8y{IY2iKmf5omHz(^qAp)ym^JhN+jk7Vet{H$(Z8=>|AV=V zva&!M00M{!p&AHub^kXuF^G#pRQ&(-8^nMkpk@XJfB<6o_wOIv5C1P;X6Wwu|KUB< zc%X*g2-OTg#J~U$KumBafq;(A|A`a+OH08N{X($;=pP0KfB<5Fs|GR7oM!0i{{QYB zSm|$=!=N@Wf}I2qKuka<{f7YtBjf)QCj1u{`~UM7nrdKh0c`*VF+c!8{Q&j%sZ;-Z zd;dRshENS5{{S`og~Sg)05QIL^-54s5b7kL(8GuS8yfz9{>%Ui`+q-vfW*P*^_43C z0mK4S`s2qBh&}(NP5W0_$$%QQ@R)`GfB*vkck5Jby^kNv00000NkvXXu0mjfy0pt~ literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/bi.png b/pole-sbv-content/plugins/polylang/flags/bi.png new file mode 100644 index 0000000000000000000000000000000000000000..5cc2e30cfc47452d5bef949628e955a522d59e50 GIT binary patch literal 675 zcmV;U0$lxxP)$wbBBJ zMTk#;k4<3e#ePFE;{?TciOx=-NpIdg`t|#dcz^$YFqm+of7AU<7UGr+0t^5F#PsJM z(2)${Jd)SmT+KY5@!|h>po)L5-!r~>3uJux|0`&Jz~QGy6a*CiGyVtq1|Wc#zWw|0 z_y6C2|NnAvaR2)A>-NX%|3Ci{R?!hvH~jzU``ypCK7Rkq&&~h)FDNvCApj5nF#yj0 z0_X_*{{Q{_|NQXv@Av-qBMmR$teo!O*6-%u-J+8r3n~2s`s?uP{Qmp>{`~+900M{! zNC9;}eE(3IS9-C{62AZc<>Jx>%af}0@?r&05Jg0 z{{#T;0Os`NWh`ko4>SM%|Kw(60099Kad7|t0qcf^`tR-^sIP`Fhru7lkI#w#>Hq?W zkzqQ+@08y_|9v}t;{CEE%)%nTc=-MC@P)7S@!~g$((Ud|+28Q224FCZIGXF0FQ1zcbfB*dX_lJRr z;s3wCNa|2D02KoSAbE^!0Dxf-mZ69ApkCb5fP^9ydGO$cm6w`kGj(t#`M{tFlLo%j z*4%mm2&CaJSn02SzkrtfWBLcO;r%bLy5Gnoqrh)qC;VKmZT`F#yj00W%wG zw4zx17##T6*Z=hN0Tvey7!|wG?K;V)0{r{_`}_X<{Qmp<|NQ*_`}@YSvI2-@&cAgG z*R?p0?_>V(@&EVlEP?{x|1esA`||VNU68t8zyJRJ_3zg&hTp&0WMzR?0R#}s1|E|% zRV}tRkH6o2#3;(nsVMXI-pgBmh17ms`TzTu!pfBl%*_9R;OEbWDJei#0R#}sGpDd$ z96Spi@~bn7G5z{~^_!ZLy2#s;5B~o8&G`G*|6f0Ap0WS=_rFd2C(ubi4FCZEF#yj0 z1a!1=2e0}MwgDi3SU@2S4mePl{012eQ4J-3 z|Mm`933BS6zyJRJ1;ztF0D(08|NVzmQWB*4&)@%$um=Y`lmy1W-@hDx{{qQh3=9AP x#JH7#;TJ3-|G=X54_FW_j)5c_0|P*S0RT0dOSD~(4;cUe002ovPDHLkV1hfJDkcB` literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/bn.png b/pole-sbv-content/plugins/polylang/flags/bn.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb09849e9b5712e9cdd8a2c25035da201535cf5 GIT binary patch literal 639 zcmV-_0)YLAP)8n_8%|dG+hlCr-g% z|9<~wU<9iE{r}%DMphZ1Jpcj3%*DZBWo-@72DFWlk(-gj@!ngb-$#D&C_i9e{QvLY zw|{?r|NHlgiHY~?^IHG`05Jg0{{(k=dF}7->+9=cXlNG}79t%T{rC3_t(pA#`tSX# z4jKOh|NsB|;rr`({{a5__y7Wk5omBxQSrlv5B>nb??0VZ8qCZrpS+?}gatn>o%-+B zPl=+||6st##PspQ2Y>)#{Cu5(QJ~_^?faD-pMV;E|7MwLubjQ@B-gLso$mVYgECpU zxpfp2fEt*XnBKpC4-fz`0M7pb@zVeZ8g>5r-~k2r`Sbhd;{WmN02I(80QmHEv)Ik{ z>H7Nm`}_MdF)?FhWi>T50*LYBMFw`s0-y$le?J(QfB$Fr_2c8e-`_!j`0PG|ckZ*_ zzkY$-`sc5Tips@{7Xbo@1sGC5IYwrQfB%2{|MTZR!ygX*-%McG4cZmTY ZzyK0(F$K@T-Dv;-002ovPDHLkV1la=J3;^e literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/bo.png b/pole-sbv-content/plugins/polylang/flags/bo.png new file mode 100644 index 0000000000000000000000000000000000000000..ce7ba522aa7e948d581478432643c230eed1a658 GIT binary patch literal 500 zcmV^3LvnC{|x`%yaFl$ss8ha0V@6XKS=c-5cwO(_{}IL0ki=i zfLOjo{AE-9^-mn=h(G`Tfz|!{{r?|W+uz?{^yeR#!Nm9NlRN`J0I_^YV&Ikj@%Q)F z|Ns9m{0FN3^Z!3k!*8HnFvf4N5xas50L!z?-wXsAPk7$ ze<1l+iQ((fPYeJ7#KQ200VpKFA^{3Nph^G!{9^b86oDW}(Ek1R7ZiL9e}Ret0*H}e qBRB&8AR!3%7c6cef(%d+Aiw~vBYd|xMihYn0000j-HAXl7XJGjM{~r+i{r~sxzrQwG-&h#_Y&p;L z=ieV7_s^f-zyJOD{rC5(+EoAn1k&)I;s3Kw&;LT?{{2}P{Pq8T&j0^^J4?LvUd;UK z&+k8ffB*XXONL(tXahh1fi?X94^$0Q>Z$uRRO)Y4)uapmB!2(-ul(c1=C+V!kAF`) z$PCo;`_FHns{jIs3Fu;wy-Z(c2YwAz{&V4aXk?bejFO*Op&u`@i~PecqBpL@DIoojb8mb+WHGK%fG2>)a3=iVf_~v+`s?*1;!`?Kmai^I3i*ZIYtpN f{g(k500bBS@Ns{bTs^2gCr95H^s6Fo1}O2_S$Nfl}4;<}o-r{^R8Q_xtzX z|Nnu?|Ni^;2gm@D3=F@4EC#P1& zzuV{ie)#0qf2Lnh)j(~3VeG$ufPMl9Aczeh3x56n#l!R`HRQLfpFjVwfkN;%I39k( zVgne^e?jDThF>oL0*Hk{T6(^^8pGqq44*zhqZ1OZzkZ>_F(mFeH~<0+0A4S6=>Lb* QN&o-=07*qoM6N<$f&=*Yr2qf` literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/bt.png b/pole-sbv-content/plugins/polylang/flags/bt.png new file mode 100644 index 0000000000000000000000000000000000000000..1d512dfff42db1ea3e7c59fa7dd69319e789ee12 GIT binary patch literal 631 zcmV--0*L*IP)?&DC3JV7l?ccjcgB=Qq4l4w|Q;eOZ4z|IjsEI`#PYSloM|AFHF zfy)2>XZQ=$@t;lU|F1tRzpnmg{PUOLH{-8A|F{4CvUU?d0I>k|0TuuM^_1cNUy$nm zzZn?*{^!*ACzSEy$NyhHzB0Wn`TXRU=!%=n%Ci4h82|!^32gR%glZtk^6USnb00o@ z{`LDW>%U)&BK_|-y-75RkKVi&O=|xC<=6keK+72b0*D2q;Xlai|Ns9mF#h@fM(h;aV>^!x1-zNu02XV-n@ zm3imZ@&EI0hChG)|NZlafdL?Zn1I0yH26P<=DUx29QQsc%}izF;QV-S-hYOl|1V4z zX|a-<=Kf#g*Z)7i{{y|szyJ_HEKEEM|C#>$KmJzoZa)M2-~Wm-e7Cl+vi)L|kY`}} z&A$F20RV*|BkB*O Rz6SsR002ovPDHLkV1m;fPLlut literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/bw.png b/pole-sbv-content/plugins/polylang/flags/bw.png new file mode 100644 index 0000000000000000000000000000000000000000..fcb103941523e24b03726fbbd88ef213dd476577 GIT binary patch literal 443 zcmV;s0Yv_ZP)k6 zPW&$KB`I@TtA?2x@Q~7pdcWi#1>DDZ2>MuG0I@IumHuaV^&7|soAMvT0IK){RtF@1 zgH;3B;_Qq-34j1%{P^)BFE1~|NkA(gBv!!4$aw$$eSiRB1ga=2D|__l(H|iA4T2Ex z>lc`SQ9x2&UjE?0g8%`<0`lvhzd$}*14J4{IhY2@0~G@V5J82%q9;EBlXu0U&@_82I`BfBC|Yn~P8llm?myQ3_K18=`^X_ivyEfB<6p_xd%%#*GZ! z-C&_V5IGPDK|g;X*gypg3;+Sd!XPTj0Q7fK5>&$Y{sHB| zjK9DB00sa3QR4q|tc?L6fSCSm+3>HW`NxbYpP7GsX8sK%KS9yYPfWi)GJ)AFzdp14 z{>t>1fsFwmfLQ*Ci!yxq#8guv=_mQ;-(Rp{AoSPbXFRCwBA z{KboB21 z`ppP*BG3|`!vO*asNvt=e_;3gWsp&PA@E<2jYs6ilRy6-zmSku5?~OOP=5aV@4sI_ zSN#QP00zQ!JD>SpAKYgR_QStF|9~F;2M|Ck zz%U1e+FyoWe;B_0VVclq;}vp_kNy3hKMWrj7*{kqJbMcaQ;_Pve;I)x1Q0+h46j}> zeiN4E1lkA+>|e|*mzJsW^M3)l^W_^hf&c&c`Mv->`48yHFF-%s0|+3-*GLfwiRNz% m3}3(u4lrUsie?}H2rvLBbQv(L;??y40000e`b1WGV} ze#gbd^&bp=ef-GykAYc$@BhDltSqdeSy?RXJpcawy+5fJAb?mHcsPJ&{d@EF@4HtJ z)qno||1xd*zaM|Ot4f#|8A1AQ-~Pubz$7IBv;-i4SQvovfB*ge{fFVtAE4aNE7yPi z`^Eg=5yP(^Ur(Q5`TLjM%#`8#_rHuB|9}1hItd_vSpNO`#qjs<|KGp=|NIHm@MXqK z79K7}ZvOwQ9Df%s{`~lX*xI%KzW-!k{Lc96Cr|@G0I@Lq`0?-epMSr9|NHeD?&umBG}6iH(DSogJte zDERNk_kV0Zng09%Itd_vSb&=T{rt@+B*66dJ0my{fpNkvBm!jpV_;xnVgd@XDk?Dx zh=IJyzyJ_HjJJUrz)|>#fr0nRl^;KTz#|yK`2G9$BS%LzureS32rvK^u`=B;c)+&+ O0000d94tALrX!Wj0S6V-v9sr07*qoM6N<$f?*uARsaA1 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/cc.png b/pole-sbv-content/plugins/polylang/flags/cc.png new file mode 100644 index 0000000000000000000000000000000000000000..aed3d3b4e4467c33717ab3e2f61596e06113f9bb GIT binary patch literal 625 zcmV-%0*?KOP)Vbu`-)NXk-Y`p?2$B#e1 z{(buQ`}e;;zyJNd_UF(2w_nb@VUiUP2igD-Kuin_BL6vl`zgIQV*mR8|8G|2U!T7I zn`-)Ow$bxne}9LGfB5z5*XcJ*K(;aeSD>o^0st`p&i@1e@&c~g4N@7~{}B9V!5sbp z`j|K8<@Nq-&kt=P>@pAZ`T7Q#;RiPl^j;kSgdzX}05Jg0{{#R8=f>y-z~LG0`u_d< z{QLg=2?6_k)DH^)`=sFo8YTUi-v;{r`o8J{6Wj>^)c^vB2^cJY|Nnmc_5b@He}DY@ z_51JdufKoSslWR1>-W9)3`r;XfsXn0`_Fc($H!lT!V@5Xn1Igu{qOIuf50&L{qg7D z?|*(LofMGa_%_k-*{}b_0g?9mMSwvE)Bq4bEIr*1})*zF_+U)&LMdEMOb{Nb-vOh6FrNC(tkd{&4;N%g_D$&)>g> z0^hO}m?z%iIsOJ1mka;_#K>R{i_RZNQ42x8VJSe8f#Ern2@qfa%&RHCyvg>Q00000 LNkvXXu0mjf=TkSf literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/cd.png b/pole-sbv-content/plugins/polylang/flags/cd.png new file mode 100644 index 0000000000000000000000000000000000000000..5e489424884d2ec9e429f70d69af00edf242a077 GIT binary patch literal 528 zcmV+r0`L8aP)JkPqeYl28iLgD=0{><0$P44T5yOrT$dE?(KkwMFdoG^-J zGv9P)Kk|i5`lcNgUUAbboca5{hI)v&h!9!~`Yg)Ld}$VwYqqXn@gVLi>3LSVGm1W? z3qnDJAk6chH(u7f~FohUBCxfQDx8?5BQsCcprAnfVhO SHC~zk0000@|NZ~|iEi8i zh~?j3h8^dV0y&$fY|i?}`2XK;hJSzm|G$6#|L@;V)&KqZ3sU;$?>`_ZF38C6g#jRd z7@s_ODJ3Nev=9gw8UKSQhX4P)z5oCE{eQ>y|1j|H-+x9%#`EXT0R#{W1H*5i5@u$g zs{agN2m-%;fixfipeaCQpFe*F2q2cU!)f`}`5%6M06O*WzrTN({{8*;CkCkD_wPBk z=llWket~@P=ieVecEOTuB>(}$vTge|RYlbYUmpDW_v_E!KfnL|{{8n?G|>28zowm@ z_UrGj-+zAtrGTUoztWctUjPD#h2amw@BhDn5OHz(52cFPg zot=T34qlT?57Mzkg5?0ssOG0Ftp>paW8OyZ`_I07*qoM6N<$f+2k} AjsO4v literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/cg.png b/pole-sbv-content/plugins/polylang/flags/cg.png new file mode 100644 index 0000000000000000000000000000000000000000..a859792ef32a02b41503b5ab5f216191af397e02 GIT binary patch literal 521 zcmV+k0`~ohP)i@P`2b{=v9^Ktp0uZ001fLMSM)r!?%mH+B91 z=ii?+(ckX8zrd=&8g~5t-|*}I50LQ;KzRlRfB=Hn08;wv->)Q*Kc0LLgTdsU-~VfV z{r~#=|1XdRMzE6r0tlo5X#B6gzhXrG`18Y*0!g6iieLY~Kvgqz}`W zLWO>Z3Lv@r7+CdZpiy8Ae}EeP0z(_<2Y>)#Vfe-1#`njMUlORAfdMG=o8iiD#%aG9 z#Q!h|feZ$rzkeYJ=p=vuV)VVru?7U|?FE@Zm|i>fBlzF zc~M_qKf%h=bAcoS;}NE7f8|yFe%B9?;;8%o@BeG_!|(4qhyo=(h-XBmKHXpc{~y!A z`THH3fsDVeudko)ARzm9UL&JI!+~uEM*rBES1=kd6zV%LH0J*N$gIQAc0y}k9qTFv z4h1oVG?rB#zNY^8{QUp5wE>>R#S4NZQd1i@F)*?OF@6y}@zmk^!Gr7L9asuAf!ae1 z{{CbBBH^Az=(+fAb?mHzA!MjRs*H~|NF=I z{~td;@BjZG-hUVsqZ#w(|L@=b|NQ>{d(*K^00G3pzycQk`jp|{UxvSb;p*Vv_V?Sr z{{Q;@@3$6WKrBG#F*5vR z`2XiW&+Xo6{KsbP_-SF+DJF`pL$*;0gaz z7NKVhyo`U;4*0+SK#>rfFFfafF5DUYXKh;r+@n*scPQUy6`!63S zGXn!71H*qtMn-04W+o=4|487=moEST#KiEAA;m(3;Xgy1iO{3BKc9a12~-UM7^Z`) z1qdLZI~bN-c=z}J|D88K{QmR*&tHcBxB*ZDKmf5Ya0q<-!`is-{h$8~f7m(x{QZSX zH3Jv`1P}|uy*o^wIGI2G`1kie)4zYe_&EQ6|NftW0ohon1}3I|Z{7d|5aVBMp0ssVo0Ek~;W>Z#0SJsA+2j`G% zv|UVeYYs-#Sn6_J90h1VosR?LBU7{U1rQ6+R0f9sPrg3=`~UA>#=n0a|7Q67_y6zT zP{j57|G!`V{{zu)Mn+knB>(|98e;E17s>tTLaMG-~Y>h{r`!g0jL-tfS4HmF#P%V_xIo5zyJLP zk|2W%e*G8w^1X|KC618W{eAoCFX+EI literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/cn.png b/pole-sbv-content/plugins/polylang/flags/cn.png new file mode 100644 index 0000000000000000000000000000000000000000..89144146219e6fbec7eaa89e1bf4b073d299569e GIT binary patch literal 472 zcmV;}0Vn>6P)$bmtfBa_T{rmsVufH!rO2O)W0!b+P{TrwO zAb?mv&i(NBbu;G`sX*)cv$d*%>MiL-(QdhpkjakVmyu%k;sfcNRj;yhJaxT5MTg0u5&QfH8#Bf O0000XbC_7v4G9~kE;3? z$h?1GrT>4y7{3|*{r>Zd0U&@_82$jY{AFPH^Plk#hy=QU5o|Ds0oDLyFn~2M0QE2c z1P~*G;PKK9g@-SH{rUU<_aC4k|G@~v`1Kn|{`&=C|M{yZ!G37cNq_)iVfexD=MNA8 zh5p0Hf4_c1v;p<}|Ak}_F!%rh2&CcXZ-(!`82&@8$XA^gF6?xq}zd#y5N`WeVBbyB+frxZH0- literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/cu.png b/pole-sbv-content/plugins/polylang/flags/cu.png new file mode 100644 index 0000000000000000000000000000000000000000..083f1d611c94a535e02954711486da244ec3c5d0 GIT binary patch literal 563 zcmV-30?hr1P)bRVNjfdgKH->)<41fMG{Q1Z53yA)}NHF>VM86o=*Z=~EMTLRklg;&|8vY-+ zh5rBh|L@=bKM?ZoKOp1JpMQV<{rmmr|L=eQfFkpA_5cJB<7Wm2?&_*f&z|!oCH%Iq zVPN&@1^xa7gnxhi`TP6#zh6KNfByZH;9_972M|CY z4S#m*VEXjw_teQhfB)LctFzlGTKpda#8eRa1F`|=V+j!s1_l{`0AhU0z`&K2_5c3; z?|=UACdB;@3Hy%?Ffai9!1(6P8-M@;JL%7#4}bn}Wu*W1^8Nqk|9@zxfJk8Yg2Rge z5=!5G`~e6c79IwMkAMHSMfCl8%kXF6O^EHl82Alg`~}6s-@pI={`>#;Kf}J}IRF8~ zc$$I1RCFdZQi0L={}0epF!T#d{sWT?V3G+SzyRi{Q|!NXWpDrh002ovPDHLkV1m+z B7Bv6> literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/cv.png b/pole-sbv-content/plugins/polylang/flags/cv.png new file mode 100644 index 0000000000000000000000000000000000000000..a63f7eaf63c028615b2ded5878b5e14a7dbe962f GIT binary patch literal 529 zcmV+s0`C2ZP)*82p^=00=`tlmIeOf&y&dk@6oT z&CV8YCOfMzZ7b-;WHc4ffO0*K`UGc#9pHKW{n=1`s=Y4`sB0UGuD|F2(+4xFrs{6A+r|Fh*S$P>SRGs(%l z+O-QHfEa)O{tdAK=ovi517(5A-n@AO5I`)f0sl(Vm><0RZzq2;(QtLuuFT6X6;y@p zb-8u)9gSFj-3}5^z@SqUX4qfA01!aT3<}j|#!Osn3@^V(zxysO&hx#~ZN`f)vS*$d zpLlA?$HBnM&cM&k$j1o^^oKjY0t65vgZ)>ehy*ei5K#*ZyWju7F%Ll?01#jRixNU5 T4U6zw00000NkvXXu0mjf>cZT~ literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/cx.png b/pole-sbv-content/plugins/polylang/flags/cx.png new file mode 100644 index 0000000000000000000000000000000000000000..48e31adbf4cc0074f40e95f87c1f103b91fe270e GIT binary patch literal 608 zcmV-m0-ybfP)Uz~~Q*L}q{yKmai^Fs!d`Rbj9@@=xl~KZbvQ|NZ^*|L@=bfBpc` zKOp-38^rz{DEepVv)`L`Yyt=%76t}3hHqR?<~aN{I`!9n&u`}MKs~?z|Ni|Cihlk3 z1w?Q7fI4M?HUI<=3&<7!82Y{{Q;@?^mDN?|=V) z{r~^ll=rtu5CcE}F#**BRkyY(adR>Mc_H{~T5^XRV~oVFSgBv#s=t2z{grn0SJIVV z|Ni~D^5u8)5(a<(0%_pmV<{@S{pr)+Nt0E6|KyV7{&xHKulY}Z0S*2Ic2cIyuhSoY z&3*a@=p=vu0%~ALNs$10lZEA9e*W!WzkWV{%9A7hYlh}ewm<)V{rd@2{rBIm&Idr} z{RV0P2mmnv&i?}d08{q%2kh+oUtbt0DGA2L@2{yn^Xv%Q%_4hjZ2Q{KfBuh*0fWjOcoPYi>{Qk`ejtlm`TPy!Q@c0|K1n4Ay00P>u ul!4(JQe+}W>@P40kp+Sq42=5$0t^6?P(4CrvcmZQ0000s1`2Y9I{~ve$KWO@Yukru?KTxgz{s9CK3*7Y} zZC_6Qf4TJkuQ&gHzW)Di+kXz$|9k=eg(Cm|XMz~|=g%L20Ahjo4`KiVr|y5|U;qEV z`p@?NKb!P_9;^R?@o<+hfSm*oKp+h;f&YIQ*bg)L>I;A4WVP82*P-nR{;Wu@%{Vvyu7@~4txIf`R>OD+-01E zIfRil07L2S-Mat*#Q65@TRuKMWMi;}EJy%|ff@h;2;_%%@7_UT@edf{0+7H22rvMY Ws9gjvbyTka0000? z0048MLcfb{@Lpld*gfdL?Z zSQvhRtN^J#x6%GQNHxSfxHgc;AD{-1tAIKH0tl!9q}uD*5!1Kl8Kk6va!f$;fJ%WL z`2Cv^NdEc54D$xi27mx!VfgXqT8ME7!~2)OPy-`SXu#NiAkhzFFflLy1Q-A_8F>@M S6G{sJ0000h<6BFn%a z@b8~2SoNP@zd$;E{sbbRuHQd?{QCI=sNwhbA3*&Qe}GP900=;09NYi^fU@pUdVa9*13;+Sd!tjgXKhXQEMobL97(p6<{RLvMGBN!7 j!N9=G@a-1^K!5=NcXWu!7_DDe00000NkvXXu0mjfeQx^H literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/dj.png b/pole-sbv-content/plugins/polylang/flags/dj.png new file mode 100644 index 0000000000000000000000000000000000000000..582af364f8a9cb680628beae33cc9a2dbe0559f4 GIT binary patch literal 572 zcmV-C0>k}@P);we;9uK`S<6~zaM{qBL9B<0yBR7V`E_e2q4D) z|Nnpa!Ep64!{fLA8NdLj;oraifB*mg`;Xx-kn#6Fhzn-q&in!pKrBENJRA&WD*ySo z7*5@0`26EP69WTC_22)0z>5C-g{l_hVFa245I`UeKudt6h7^Mc@BgDW81BCO4-x~L z`sXhc{R3+I%fRsKA3y*x{R6rHsA1>M|6jifb2E4w{z{xB{`~z5CPC;Y7bk|9<`c2PXgjR$^CT@Hzz$KrBEfF#?VC z^aSdB^z+g5SJMxCJOGqNsQwQkfr0#&=?~CJ009Kjz|71H^!MIRd#Ajb^76;aUyQ$y z%m(TN#spBq-#`C>zGeUjAdrR+|30kwu=eoBL!3-pGMq9%bs!`E|ACMovw

4;Zk2 z8GbPU1Q5%#7t@Nb6*GKbU;u{yA29j{CVzn$|6qa)V3LCYAiw~8(_SNKujRx50000< KMNUMnLSTY(1rd4x literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/dk.png b/pole-sbv-content/plugins/polylang/flags/dk.png new file mode 100644 index 0000000000000000000000000000000000000000..e2993d3c59ae78855f777c158a6aae6c1fb5c843 GIT binary patch literal 495 zcmVh!ZNvLM`<}kPiIA3?K?Zl!VJuS0ABN12uI2v;s z000mK68GQM4oDR3?|C6;zBc4LR82Q1eETXSa+3nD0Ad8%4|Ml`Fn}2U{~ypshW{9V zk%{T!hYtV&#KHiVV*o?2zW>+&Bgm+K00G4EikX==E9>w5`yf~S`o*<00G4K6dZ++hy)_Bw{QPEdi2K7 l5H1Kw2asrHVqgFWFaQRwS@oh;XP^K8002ovPDHLkV1foV*8Tth literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/dm.png b/pole-sbv-content/plugins/polylang/flags/dm.png new file mode 100644 index 0000000000000000000000000000000000000000..5fbffcba3cb0f20016c9717614127b89db4c9664 GIT binary patch literal 620 zcmV-y0+aoTP)yt}{r~U(pZ|aU z{rk@#!dhJXj+vP`D&$&!2yPR?Jud5I`&tqo00z_V3?cpb$_)%#~li z5Bw?p&G@T5&5h~tB<;UIJ-`3_mgbQL+5iwhOdtm^{QZlh+Tg>NcGo{qR#UR9ewx4g zlzHy^uRp(j{rmOj?;oHBfB*n70M7pb{ow!s5r+W$=Kufw0RQ~_o$a1N^GPoTT-yiw z&XGVBSbe$r0&xrf|M~#~9P-zx0st`p&i?@b004Y@cH`sX`~3X;`}>j`1PlZ1WGkKd zF1~FN+w&9T}cJeJULy4V8r?0tNHM6WN&<2126ppbC05A-~q$vMCOd&N)3^rn&3WaiZo>@dB zxpL5=L>h@#UjVT%{Q39iA58Ths0J3s|NohoLF&Lt!8(8c18V>XAjZFc|1vT%{s#lF z^Kb%2CZ>-cJ^%y|<6Q;@;r#qR4;}z*|Nr|B$h_ab1b6QI%fu2>dIV_O?>~RRu82tM4=f|&Ke}8;oX5+eBw}y?G6)5=s|Nnnr@aNATAPEpaEN{Mj=m^OD z&%p5S|G&Tg{{H#<7bL;LEGj9<&cFmz{_j5mJbLs9Ab?m{m{|TZ{D1lB9Z2clKfnI{ z`ThHs^2c9)q;CF`l>Eoa3N#g>nv07INCE^93jWH3lKe}28-VENu!{qxMpm&svFOiawo%#4hT5U&FS z5Yzu(KY%Xz`RDh~-yl6N|NT~b@qz9A2lm1$Hf43G`D-AmnZXVNY5)izCWas1fbRMA z8?52ykLBVV-&q+tkKFpbbOC=r`2SzOfQo=l0_p*hfB*gk2q2IKpzD7Eo%H+Hk6%A8 za57|Q3rv;f;d1r)FDv_xg9F*eKs^8f#KQ37)2~0jMR){${rwHH2k3S7pO3`Z{#jf7 z{|`16Y&=9YkOT-IMh0&|hF9+yelRe6V}O#tcxPkSx96}BCoe=1&?OKCkOT-Y05IoG U$(*n^qyPW_07*qoM6N<$f?|9Y@c;k- literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ec.png b/pole-sbv-content/plugins/polylang/flags/ec.png new file mode 100644 index 0000000000000000000000000000000000000000..0caa0b1e785295d003869330fc4e073dce07e7f6 GIT binary patch literal 500 zcmV1sCzZm}g`N!}J$oTi?|G$4gL7*^D3`7C}Kmf5Y{CmeN)&f@km*M|^ zrvE_l-~a!AA&BAspa1{=fXIJ9!9O2vbOQts3j+fX{b%^|8m0my0Yd-4N`WN9@BjaR z=no^SIM8~400P%s(0a|A0FHhM?*o#se9Q zEZ;b|7ytr@MWm#zEz$bb`!9d~{{Q>$@1MW_!07MqKOpw+zkh)g(B$8L|49h*Ov!x= z5I`*NZ%IAX?Fbu$UUAQCA3`wxix_2=I& zAouq_SzðCcuS!~%52Kai0?gF&VORsRAR2~rJG2PFT1^!)w@)C_d-AAkU2Vc75Z z*R<@y`9z1vevIh)-p7{p`5C+7f|6l;f1_&?! X)GmJPc-xs)00000NkvXXu0mjfGFPrC literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/eg.png b/pole-sbv-content/plugins/polylang/flags/eg.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3f7a10b5757b006948ea4436fb242d02dc9a4e GIT binary patch literal 465 zcmV;?0WSWDP)LAHVtk{r`=k{y)(2e*gi*sIRYISXlV_^=qKp{(!;n-+xj9 zUjemETFMXP0$m6sfwJP_;%#kh009JYeOg-Dy?gh5gTXH_fG|KLm<2Qhs6|CZ<>JMQ z009IFR-loRl9E6vpeV=!FaTTi8)D~Q7yv2;2q2OXK!5=N{?|@pNV(X=00000NkvXX Hu0mjfG@sA` literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/eh.png b/pole-sbv-content/plugins/polylang/flags/eh.png new file mode 100644 index 0000000000000000000000000000000000000000..90a1195b47a6f12c70d06cb0bd0e4ea88d7bfb03 GIT binary patch literal 508 zcmV`hKmn*~pz%QT=MPXRKmaj;?1ifa0xhloNlE|L zuK&--1mwx?-uoV+`qwW8u#*4+i1F_GyFwg7fByafIr{%Uh)$p>Ae%w(|Nq~=m~|`# z{`_H7QhIal96$iEC^sml1*F~kc<(nb4FCQ91q_kDz!3TkBLDsd`Sky<|4qNomi`s~ z`xoeVfB<3v8uI)9A4wibp!A=AfB%5B0nwj-e?TNKsQ>@@`|oeijK3Q@{{o!^5I~F! y*$fQd7#Mzm(H|HCnf(WhfND7yc3x%x2rvM-AWsdQI)rrq0000&KpNnxA)<^73~VwoKqoOWF#%15i9uxn0tlqx)vH&?arx`ryF**H{9<5mxO9m@ mNC@PFfB*h~9RdUZ0R{j9;Y1$IN+(bN0000&(jx%j7OGE_~DVuFcQkgj@33fJv($pjj zgoNxWFM>pG#K4X+%S_Ys!f>f$mib36%ekHNec$;y5njB{!+Y`YzVGwA&4mTVh%ikU z03gD2Hn&LPeNu%hDG7PUvzrphs|^(-as$IIo1LmPya%Hc0Qn*6qc4XX3oKoa+Z)_XBQk8 znPA)XelBh#6J<)fj|w>7X+~Yun^@Bp4$+N z6L8rb{%QnJN{fql*fJH1L*2YjUlB~CXS&&LY)1V3h&68|x1_5-(4l3HUgs~3JvLXI z$_D=zL{dTnq9RK`-w~w|sCYqqA;@OoAE0!{9Gi+cF%zA>5*8OAiXWs z!A~!@Tb_6WJ;mn(q~>CYJ~Oq(|Mc`miY)G1d$)?S_lf*=dz3nd-8+hwz5w#U=!7L- z+Ve0W8Werm#o=KvYxRVVNtM9!poHk%m;Y{gxKdXC|Y{ fc0^aUlspXz7vm>S7OoCUZUIwXLGJ6E%Z+~lY(hhH literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/es.png b/pole-sbv-content/plugins/polylang/flags/es.png new file mode 100644 index 0000000000000000000000000000000000000000..c2de2d7111e3cb59cf6511dd2ab045e824bdb43e GIT binary patch literal 469 zcmV;`0V@89P)@|4`Xj5kLT%`al?B=W5I`&pe;NKW0^Ri&h`xRJ_x;0v zUa?=y?0^3M|NZ~}FE9c#{{3cP{Qd6}13&;Vf!z&M{pZWqKYu4MFm$tgedF}w=P#IQ z7-9gT-$11R0mKA$(qEu4%ok$*y!^wMRm*x;`R7|k6yu?K{s8?55I{^|9{?Tjhec2I zv+6&FhFWG_BbNVc|Ns94tNRJp!0`V!Py;{!F#$2enB#XZaohg-5%Tlk#oa&nzQW9g zl0Y{D4gK?n0U&@Fe=;yIr=|V7caH%YEYL84k`Tt9-wc2LGODP&y?7BIfLMT@X8Qey zK~fSFpuiXa$^kLK{r;B5V#`&ca zt+@_4h`63_anxmM7I1W2R?7HNXIYW(%b3mwLP1<%VY@gsH*XPSnXS1-lufWcd1-4$ zVDYNs&D9n15BGj&Ft1k@U}QLHl(=u^XWmbNXRaBy?Nww5RCa3LWs)=3waVu5)hU5? zO1ION{GD?6>4AS+{!4_JvN|XT%;-C~g||?9S!DhvZlMLzWsy8$J2pQKe_|oOIIHXN z*B?1zyB}pYCNy1NsCW10UEVdDSwfak7RCwBA zWQbH``0|MX0{;DB`1Ob3-!Fz=zZw28fY1*HhF@R=VQ?@21P}|ur+3w` z_wT=dfByab`{x&s{PXYspTB>919^Y{{Qd`I{N9v10U&@_7=ExZ{APUe{`KE~Al1MB z{rb!Jhml3<_uqeCzux)%bv7|NkFAvw@aK@N+YWG5`bsF#yj00sZ{|0ReUZ0OJ4u`~d&_lgxzd z_7grGtKje;)ax=32IqJ>VE_O6|Nr{|0Uz@6!2*a0?AgCSJ_s@V{`!jztXlEUzkg2h zOW%AK0ILQg2A~)NKmdU>0L=y=29PKt(~s@sMWK)O87MU|4G0ImPt*+y7s`{{I1L_{;G9FVHyv z0R+;(^!pEkq$JpwzYKqVGyVRp{reTr#sB4{{{Q&{G@Ah!GGGK$3=lw!Ux87Egcwk{ eXi`7`5MTfy3O%OUuKb?>0000FP2AE)Ir2{}>qlLBSs|`Qg(SfB<4)VqlOE;Q=cD|Nnn$ zna02W|Nj1E&`=Tpav_4q;M$#E00G4E4{SI@`q`VGKvVzz{r4XmU}R+c_2(Zz0I~c7 zs`v*r?Dty(;z&PFFXX zRA5t=4x{1SIibD)Vqy6A2V^D4P_SySA|L?j2ip1XFA)9%V~_%1r~w2J3=}{2Oiu1 f7(RXZ0uW#T>&I!FfdIJb00000NkvXXu0mjfj-u42 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/fj.png b/pole-sbv-content/plugins/polylang/flags/fj.png new file mode 100644 index 0000000000000000000000000000000000000000..cee998892eb316c3293ef2d52afec9218bdbbc03 GIT binary patch literal 610 zcmV-o0-gPdP)2C05Lr?a%1G+Sb3M_ z-f!*)-&mJ@lxC7weD@!u;s2li|9<}wjr{Zf&o8mqKR`Cn4*&rGF#yj01QaSLwCD}R z0w(ww8v*|PzTN}jB`Pj8{QK|!{{8;|gOCLd|L9jy6{oELG6Dcq@B)aDq496GGsCmb z5T7wXTnzN$?|=Wl{r{i6vr6{G)xV#={AXc)t!L+QBoiQjSb+Zc`=1dU2n>I~p8E|B z6OfY_{`1$ji1Pn`9_T5yZrhJfj0}g~00a;V(9A!7nZZWFG{8az7^c++|9dI@cmDl* z!Nvb)UorrL86bdIfbsI1fk}{;;V;BV|AE?oY(}v2K-{x07*6Kx`SfB<4-V2A|A=r2_C101z~ iU~vp#0R6xN5MThlzdwv9U#bcK0000}CO1*!he@c;k+ zfB*mg{rg{#hxPwIh8G{d0|o#7{Raep|AEAFCm#U_AQp((@4x;AD*Xo({rB(3@4q1y z(m>63@(hzyJPYWMEi%>@iRTXyxzU zAo>qT2S^W413&<={Q1WKlmMyz`(Hzv@8AD_R~~+N^7b200Z@m&0zc4{Q@7rNwftxJ z^$Q??fEu9g1Db8CAq;fMkDq@pJa`8*&sI~^TtyHla^%`8uswf)HUI<=3()%@Pl0^! zf8Ui?K|l%XeRX{Qd(n@juAHz(D*15I`UefB!>$cK-hRUqIf!|Kj}Y zKt+#Ue>r^ZHOMRf{y`i940V72V*2%m0pg)Q5O4ka4>U8*PAAEH2(%ZZ;ol#C0AiF(UW*)& q3=s4Oj6m#vP&UxAe?ZIt5MTgFMVEBke8_SD0000BE0lK=nzFYgc)d0A2*B+AFf z2joHok-@WP&j1351!6Wt`q9fjf1W;g`1ALFY=DuG5oiNI0I|ST{|2JJ|Ni~?`|A$_ zRt*pr0t5gt0M7pe4IJopi4@}M{rvp?{Qds``}+I+|3-D|`uqR;{Qmm<|NHy?`uqO- z{Qn;q1i_Qs0*LV@1A}N|@t-FT{{IC^{`vn0sPGp^)o&2vABgb_!eEtCyu9%!Kmf6* zGhfda5_|CT&#%8A#S0%rhKer*8VNG{57cZ3sU*g7is3Rq0I|G(Bf-nd3vr@r@vHy8 ze*OIQ@9-oMOb-A(eJ@7=Ab?mP;SCW2x*O<#U%#>Y7zqCS`2!F@APw*!ml9!S{vjhP z$_zA&0R;fLP(1(v#Q5^%OL#2G%0Af7VC%@R_vTF*lgG%);U`26kn-@hOg zU%!6+4+cOs(0HIde9xZz`}Onxub&LUB0x(30+2WcIRJn#2ut|?gWYu1Cf+!-K%B8# zdf?1WA}#uZ8oj7u>$I1i0Al&`=O0k%-@icgAIJnM0xA6maSq6BK-ECw|NZ*S`0Lj% z1_pot6puj;05Ax`F!=umqj7^frO?t|3^&I1kxUq9yECc+jQpY84SWH_0#pxl$?v~F z@*hy-KN0|X07U)z`4{NpU%#2aHUI<=%a31wK(7Du52Oc(|3O^?R1IN+RRjI-n*kVB z3=9AP#PZ|EACPLGJ%9cJNh|>9B%spYzZw7h1%?tp0I_@ndg9MNE>313@6R75NcceF zkr51-#U+7;F#`Sf7i0rK0I_`g_NQ&Zk)EZ(2O=d>QH$KN3zEi7S9u{+2K>GX4ds`2QcM z=+A$K-~a!^(JwH9Fn%*K{{Cdb01!YdV9)*qi~a#?`wdg{8%Z^Y!NB>w;@|&31~6!UgVgwp|=;r3;($dlD^8du!{+h=BW3v8WuKu0H{?g+9>GA*h`~T0+&;0%W^Y{PW>i($9{%5WJ zR;B-Otp1k1{`dO-&d$yH{Qu(Z|FF*ff3yEanEybO|9!6i!r1@j?*I7v|I5qE`~3gz z^#9S}|A@B#LX-b5hyPWU|A@5y%-{d@`v1wv$=2lmmAw90nExn$|1N$0X`cSI(Ei=& z|HsG2;o;%u@BhNr{&A)LEPMVTa{oet|8t@Ht;hBD`v1({|9PnXGkEO}%U=$P*77-PL0&xZjNhxU=Svh&AfC2-XqLQ+Ts+zin zCRjj=fn8fiS5M!-&`8}FBw)h8E+%GbW^Q3=Wo=_?CnjdkzyTC?aCCBZadmU|@D%f6 z-~?;6^Y-!e^A89N3T6m_n64Qb79J596&=IC1#>}cTzo=eQZhpdPimTYdPZh&R(4Kq bUVZ@p*WeyGLfo8-00000NkvXXu0mjfuCikM literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/gb.png b/pole-sbv-content/plugins/polylang/flags/gb.png new file mode 100644 index 0000000000000000000000000000000000000000..ff701e19f6d2c0658fb23b1d94124cba4ce60851 GIT binary patch literal 599 zcmV-d0;v6oP)U(k2*|8J(R-+sudaynhucHbwAMTnor{mwqO^w7JHzaBsT z{O^B8RYf5+LvDs&KmRKVd78=o{`1#HTiEo_OolaGleS)G+IQ#sUI`b*pv<`1zCJ=H0jd{{2S>p`ri%{LsXJ%FbMS z$#S`6f|?OG!^Jxczkf6Q`UNF{l0Sd`ad7zm>({^EzyAS6{{CgrkluOb3l1A>ZU2~A zK+FZ=zkmP!`TOVhpFbzBzFaPmD2$N3;+$pK?>zdet`f0002ovPDHLkV1gy;I?Vt8 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/gd.png b/pole-sbv-content/plugins/polylang/flags/gd.png new file mode 100644 index 0000000000000000000000000000000000000000..9ab57f5489bb9ebb6450cb27f4efe0cfb466144e GIT binary patch literal 637 zcmV-@0)qXCP)@|2i2MUNJEAGBA`g{QJZ3ub1IpEW7h{~Z4K zJ3#Qa=Q1XS-;5h0el2+U>(Te$zyAID&HDTIKad810Ad2W{jW5`@9y)AKr^5J{4Kqa z;cw*UKQW)B)-pW&@%z{RUqB7N{{H&&_Ycr?fB*vd;rG8kGw%JlqX`uK!_D~nn&&T_ z*-Q+-7;nUX=6mt$`7e;3-;BTi{QC{m01!YRC;j>JdmqEEKMa4Icz%Tm{+4F_^}h({ z_1{sye%WyRp84|E^4Gur0Kxx1e;6150*D2Oe>41%=Kmef^V^IA7&yOx!2%AYU;o*D z%dq`!;`!w)_PhDb-(PS30!;@9Adn3rpZ_$9NHVegX88Y?;V;N+#{WPzFy?-P;*ar< zJ?CFrnZE^h{{CWM00h;Fvzl@K2fHp9I6dqaaxb00=Mu XLcuQ~?TP?t00000NkvXXu0mjf`7udf literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ge.png b/pole-sbv-content/plugins/polylang/flags/ge.png new file mode 100644 index 0000000000000000000000000000000000000000..728d97078df1d07241ae605dff2f2cac463be72e GIT binary patch literal 594 zcmV-Y0^8x|9^h-OG^F+g7@$L?BC01YQ`Wbb?43;K=s|G$6#bNnb!1Cx>Qe>QfY2m>?Izi&U8 z1o&Rm*8l_%%a6%3nS?}u4*37)&;Q?l7=Q-<`}?1Z>;KQLY|KmGQ@ZWEch0Jnt zUmm{%2p|@g=ujpTGX@n^21dqzKYxO4`1a@2NuYivJ4XgKw*UYBFf%g!{qd7YP>5~& zE`R_4F#yj00OjT7{QUg;`}^~|xBB|}`T6Q!vcs262Lz;t$n|1+qbnVARhhy8{z5C(*C%JTg?tEV3%;s64O@&5h$(1-*>2%Ak`A87BFlP7^( gh&l)WvH=1N0MfQja}g1cO8@`>07*qoM6N<$g4hNuZ2$lO literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/gh.png b/pole-sbv-content/plugins/polylang/flags/gh.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2f8965914ddd3bd6be97674d2e40a9a3f7d26f GIT binary patch literal 490 zcmVRCwBA z{Lg>@|4`Xj5kLT%`al?B=W5I`(ov;U*021*0XgD3^5{teN< z@cTDV13&-@;@|`T5QYI@3O)ok?1DO<2trehc#kXh!0Z4iC6of!=I9L4Jz5Qk(jP`l zJOKo8(qFLXAF#IH8`u5XwDI@PAHNy@|4L4RsD^0x1N0+605O4m05bkR14QCiMDQ;; z>0h$aKjWi;+@CNFzZm}i25JBZAQt8_hOB_!_dovn^Y72^zrTL{{r&6TuiuWpfB*e$ zwD}j1{Ph<^0%eu?|D0`P00`k|9}4iHT+`$2p~p=WCoxfpgkZGj{YEt g{DC2GLI4Ob02tU}a;hkw5&!@I07*qoM6N<$g4!w08~^|S literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/gi.png b/pole-sbv-content/plugins/polylang/flags/gi.png new file mode 100644 index 0000000000000000000000000000000000000000..e76797f62fedcbfca8c83c51951680d6a6e9081f GIT binary patch literal 463 zcmV;=0WkiFP)VoB37QQ+R{;bN6GSUi z+kb{HA3p-oUOth}-@kwP{0U71P%%INK{Y@H82)oDp3V0Dt?T`39Pi$;RTl%zL?{P4 z2_S%&kW~Z0x6qjPzkeV9`s>}VU!Q7P|1&Wm)PrpR2q2b!5Hle5FfeebsWZ)5spT9vc*+3O2}Iw&|Nr{sqx*C2&8&?7c>c4n{QvVC zD9-TjFQbI?+i42`0*K|`>)%Y*uQL4o{r~rGhChE9{`~$Pz`@Ka$@uLpb; literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/gl.png b/pole-sbv-content/plugins/polylang/flags/gl.png new file mode 100644 index 0000000000000000000000000000000000000000..ef12a73bf9628ff5a67b81bd980d9c5d2b2c0f05 GIT binary patch literal 470 zcmV;{0V)28P)J{teTOL@z0+>00G1VRSiT77W_YWkm2*^|KGm- zfAHXcOY8ruSJ7+$Itd_vn4oTd_U!+mLkz$F{Qvdq|L@-*^6S_C%a&nk00990)`(*=-xesBS%qG0|gf?f~#iu^9N|j9|i`10Ac}ZUz>% literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/gm.png b/pole-sbv-content/plugins/polylang/flags/gm.png new file mode 100644 index 0000000000000000000000000000000000000000..0720b667aff506d7892c5c301af04e6bbf932751 GIT binary patch literal 493 zcmVwRhhvIeu00_fCKU~B)yH$s9sXS^B!W{?M(W&}hPbMwO z;*cg65E@7haJ!!XVgYOW|Le(9kkY?@fpY);{sqc`6amR!K*q2CzkUI^Y_hUI(*XjA zMdSH%VNp?r|Ns620Z1T|}fB<6Q zlw#oF`Oo_sVk+2%KTsoq3?TP6gz@)3Ki_`_=6?VI#CZSdeQ9y&f57m8xf%uh13`xW zAjrhTbmsgSfB<4-$Y)3kNW1sx-tWJ^f#}!YUqA$5fJva>FJQR-`S({vK;>fVMSuWe z0mcW=Ig;FxKxv@ppTFP`1*!N0BL9M&0|dYz`1hCL7Xv^5F*2kxF#KQuvOqEU3km&! jiTr^fV1zR<00bBS-TrJ5MX@2w00000NkvXXu0mjfGz`_@ literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/gn.png b/pole-sbv-content/plugins/polylang/flags/gn.png new file mode 100644 index 0000000000000000000000000000000000000000..ea660b01faefde01ad2527a6abcf7d1a5c1b0526 GIT binary patch literal 480 zcmV<60U!Q}P)@|A6>41A`El{SSoRd}EL3@|NdrR`1}9=ZwUJP z@AvHwzkdDu1yn7|BMY<#Ab?oFX8(t({tZ$6>;L~hU=2XVuU~(E|N0Bk07O6y00G1T zbT=bV^`Afg|NLS2{ReI~M8m&-NE-fuGynt;*hzmtW+Q3%1=j#1fvO=I{`~y|)Bq4b zU?=?r84r{KY4``%041R|`~%zYhXEjfz)k`h|LYgXRlk0r+3@c_)IERx{rUUv4^RU@ z0D&|xgN*;p0Mzyy>QQ8EKn=iP{qyfH5CNS85I`UeOuzpyNJ@hA{P_#yFfjaPWc&?| zr{By>f0X$D{QV0G@4r9|{}=!Qi18~pg5ikaD#Jf9Xfy-Svu_Nh0nj)GNi#731Q-A_ W8E1tdJ(&;y0000P)fLk0D%}*I7ff3uKv?i+N*~ULWZ>4 zW5%k%a3T{@*`z6pma6eF$JtK+F@C*&o=d^t|Ns9GOCXH@*Z?CVuP#7nB5Y|1kmu|NQ^=?>FP0zrYX%2q2aZH;)P`n*#-K1r9WbfYOYN z??RUX1P~*`M}`*mir*mb{sxCVG>rbhqT(MY2L1y54rHu+wi6(L7#SX-$0bVa{(;3h egu%oB5MTiLH(5{VMZMqv0000u-`~Ig{`~p> z=MRwl_xtx>F!}G#@4vq{&D;bKKrBFA+{}CzK0Nsg1pog2{{I_D14*DX1pWH^3y6RW zSzcL&Zwvqd#Pa7K10w^wlkmIISh(4kI3GTJhN2$mzJLD! z0*D0|DC|s(0(}1j8UFtJ4HA_S5@P=M@9)2VV#30}-~k05FvNkXnV5ck`2-L^EDTKl zn1259n3DG7^QXUm{{H**3#f!E|`n6Mz6>fhdBj29g(UfB*aM-=Dw#|NaG$fByXc1LXhxFC@THKjjKQ05P&# zA9gbr+SsEBRPB^?1!&T?30hEBFhHFGv5AR^>DH}B00G4E=NHV45I6k$@0N4rAH*g9 z{zDN+_&*OP%Y{RC0Ro8e#fvv0A_7PTA~XKMG0?q08}8kE2oOLl>koag&}IJi^WT4% zN&g{c!yE%t3}J9_Fdy0V1t5S}4xV|TB*XjR%dfvcU;YDm6wdeu;Q~GU4JP)J`S$qz^!f=A3G?{>83*rF;63vB|NHv-`~3j>`uzF%_#GV;x3_Tu z05Jg0{{&$2KZ#9J4f5RdzRdzC6Ae5p=(o+T{uB7y^ZNSwN=h$cVmJ#62-nx+ob%l!TKAE1V~I16T$|E1+i#l`u&y!03t z7ytqQF#yj01Tv_Ick58z;rzG}_y7F-%)*RRAv1X@1^f8;`}+eA4+yBm#PKA>w6y_L zQ&a!|00ICp0M7peY0>I$KneW(?7rp&{QCm?`vUdU)NRiG`uYI-`}gbY@;Dai8vP{| z4h7uY=>Px#0*Hx$0pxvffc*LW3+PFp{}_J#0ty11^n2!vLjod>mX_Jy|Cz2{eHy3% zAb?mH7=HZ$2N_TWSP@V&gaITO7A`uvc=2f<_uIFxDk_pd4FCZI)bI_+mz3lOl7E0f z{^u`PGlT&Y`3GeD{rm6lUtS;y)Bq4bz=+dkVE6#Ehk@Y-82x6z3jhKP0OI&0DF;s+ Q-T(jq07*qoM6N<$f)`^cRsaA1 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/gt.png b/pole-sbv-content/plugins/polylang/flags/gt.png new file mode 100644 index 0000000000000000000000000000000000000000..c43a70d36424b66f1627216ad988cd23a4be9285 GIT binary patch literal 493 zcmV|9}7f|M~m>&%ghRD!%{(5DNnfNcHoNKp}=7 ze;EG#|IZ9j4hBF)cVB@t{Qmo2T96TF4?qC109^ty;2+Qi2B0xObN{1)Uw^{8{`KJ4gZ0H zP(J{D2s9NSfWR7{27t^!x8NVhN&g{E`Ueb#e*ggla?+pwj3Cv27=VUhwE^V&zaVoN z82$hR5DUYve}Dck14V%vK+Z)23?LgAK*7ZT@-zbjKmf4-BkT7+CNVw+pd~+kF)%WM zL>VCz0|PT7gS-eZm>Gd?16jcE4PH%g~!@=<9&!2x_@aEGW jS9>vVD)6R*AQp(xFW-Wt{{mJ2|NHk};Jc-)O#kPzME?5A`1{ZQ-#|To{!0im{$XGM z2p}eq*?*y`{{RjC%V7Pj<(}hvo^Z>=hrJ-xK=d0#0&M^~2_S%&fR6tAp8=>2$p8C? z0q7F5H=q9h`}OesIT^OczkdG%sRkpU6i@>|0I@Lq1-k@j0La}yZU2}V|JX_T{{Q!% z>EEtDfBydd!vuBJUq+w?fB<6o2X+#W53~WS;s2M<|9d72Yseq)`11cZJHs!aS-+wF z1}X*!ASNLG{ST%Ze}QTk7ytqY@{}>p)on&BOV)*xm;om>72$%sP!HhqD7ytr@1teTu4J7{m`^Wh2AGglm{~UiA z82u;s5_9PZ|FH1)~3de={)r1*?FgUtsi`kx>?C4?qC1 zfX)8@|LZe*d2K>lZN0{{I4*^b@QIr~;(tA5`a`e}Ddhy$ldQAPvkwr9kh3`~WiS7Zcc2 zh-#qDKOj^7{QC<;3||-k0tlpm>GvN7NlB2NKYyjTe{-?^h8PLd@aHekus?tQg2Ee! zfN=^CK#X6(5e!Gd)(i|h;JEn(j5jcXFhHq*fkB7?Aiw}&uW^ngBcx#f0000J&k9ol;AaCAG*Vvs6lsG2f+AJUecp&K4&zS7@MzJZZ+RCHJO2~-cn~)8*ZB# z%#~(Seaqctb3On>xdArM!+zLfe2=iS%3k1HK82I)yo62#|&;D2*%o~N(LQ$HrxFU=@<#wgQDty7s|5?>qxBTrc>UoBZ!}1le z#)a`Pq~$aEPO=D0fO80I7h5SSMqU=q48*j9Qb*%7#+Pi|ervSf?0bSFwKsAPn1FO| zKH_&kh#AJmvOUSnl~!1AmcaNJM5awz`0DF46>zWZuCh$z(7uBp0to4w2iu-uj zV9oc#M;CkJ!OT_8;~(;r&Cw`0K3r=(%@VWyiIA#;S}+n)^}q>|)QZ|IaYyyY!;frq z6mATysX~aM!z!n$rJ$=27fpoIr3iB{q|Gr32uDRa3PcNj==OQGHve|07^1DbtUgzuEQ=j%rDF literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/hk.png b/pole-sbv-content/plugins/polylang/flags/hk.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c380ca9d84d30674f05b95c2f645b500626c07 GIT binary patch literal 527 zcmV+q0`UEbP)00;JD`K-EmLvOuK( z0R&e6?>|)a-@i;iz|8zVIqAQ;I)|_@BNM~FU%wy-s0ZjAfB<3vx(uZH&mV?Ae;64V zIcsYEzkmP#{)7J;N}0Ju0muUq%~ z^Jl0Zz)k`PASO^y0(FCg{s2v4J zf4+RlSW)rg;lp2_Kl2?q^5yYkpazCNzyJOD%k=jzP%%INf#Tuc?>~%^l1w0DfWH6z z1E^V4lvz;l%d1x`a&jQQ{ROE8h7C|LKmaj5WMKG(8n4KVKd5of#=rm&U;y%qJ?5>3 RVzdAN002ovPDHLkV1mTk^F06n literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/hm.png b/pole-sbv-content/plugins/polylang/flags/hm.png new file mode 100644 index 0000000000000000000000000000000000000000..a01389a745d51e16b01a9dc0a707572564a17625 GIT binary patch literal 673 zcmV;S0$%-zP)>fJ3En$GhGS>sbE%%m3$AD)q?8M9y>88-}kR7#RKlk!P~Y_PLuF7~U~3`~nC7 zF#yj00ZUDdpLsm{7ajP|&HwoK0Usg|6%f4L_{`Mi{rvv-`ukf=Ed&Gs-sA7L!Q7*a zj{*QO0M7pb%?Sw^g@yy{>ihEY{`vU@3=8@G0rvO$i3mOL`~mv-`W+b$Mmr&io5dg< z5v!7q0*L95jt`TzK8Kd(Utv)OSp_aLv){6ccV+Z`{Q2+asKUU&aO3`Kpz6wW8wp`< z28M3{0mSqnB#A*-c*8%1=RD#sSOwMznKA3=e&iEzwo{cA=PgXK`2OQ}gqId83!|%* zA_Kz@fB*n70M7pdECCwp4H&@R`1|(w-}M5x*74i)0}%fAt;XafA{48))#>Z>?CD#}*e}Ret0tl$#*RMZ7}Jl7Z|M45`5*URzH9L z{rmSnPy;{!u>dsyO%meg+00000NkvXX Hu0mjfN{&}S literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/hn.png b/pole-sbv-content/plugins/polylang/flags/hn.png new file mode 100644 index 0000000000000000000000000000000000000000..96f838859fd2aed975f5f4134050fdbc0486ce1e GIT binary patch literal 537 zcmV+!0_OdRP)yNpn^YtfB*U? zE6K^g@B<)#SlTBTcsfda`|@_0R#{e$UZ3l|Ic6l=B#}T zWCl5lg}RFY8S^$g{qgfJOdc2ve*glAv3c@IFK6|y-~NDH^$#cn3{a5k!L9^_5>O@B z$^W^zSlTD;0tg^R28Q0WdbfK|zW)9V43odV{`~*->+kR1AO=tbO#T4}-G3E1?u#4x z0Ro5x7#++k42m+GppXWk{}2W^;6Y*k7i(1vOT1`b$6{=&w9#5#oJ b00=Mu*}Zhb7k&Za00000NkvXXu0mjfKokPk literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/hr.png b/pole-sbv-content/plugins/polylang/flags/hr.png new file mode 100644 index 0000000000000000000000000000000000000000..696b515460ddb670acb7e9de4438aaf21fc5fb77 GIT binary patch literal 524 zcmV+n0`vWeP)@|4`Xj5kLU3fF!G{fyDoR{}_Q36Vv~H|Ns5{^Z)NZrr*Dqe*gae=g)r_`DNuw zfB*t(VEF(4$y0{Ee}M=nS{mB(NB;kxJOBSE{F_{n`2Y8>|G$0##TjK~fi?gH5EIz! z|8Uj6|NiY-l-<0|OxA@1MWlzkmOI;leLR z$De1;{4g{7^y$;LZ{NOt{rct07a;lk`E!5(f@%OM1_PkhC8`eE9egqWbga z&p;hdpFRZ$Adm)#>fe8W4*Ct02B|hR1*-n0rS<;(dx&bFRY1n$$BzL5h>;=uaC^Mc z(+@v?|NZ~x@4w%F|9yUZW7+yTpo@LH>e(bUfFghX{rmIxzpNnpimU?w0mQ=a>kp9s z8>AGffmuv7DrFgv!3yU7{`2q8f1ngFoPlxn4AoS-S!;e2821p2q{((sbfB+=MK@k8U5Cg$|VB~~? z2XKWZk_lAZtGhi{|56nPieMKY$Bq=4KgZ0muK;2JYWn}5;nka8K-GUCa!{rJenZIL z|9<}gF~mh#ftCOS5DU<%|Ns8~1)2?0{RgZLWF&|Ls)lL+iU2hL1Q5&LKMX(>AUTM^ zNU9+S#0FXN@8@rz^Zx+^5DWL07wmsTIe-5EX@IBzTJ`52%kO`z5F362$-h7b*KaNc zh6exv#P}EJiR%3Sk01R1^NZmZ(C**=fB*Xb3rzn04HN{CU^bJS()(Sf00M~R4FdxY z(0f3MKYtkh0!g5OAQFsz{e$TF`x|H}%fCO*7#IKo2o$W~FaxWA8VofRr202h8w1#j zz=!|{Ah3qte;CCj89_$={rBfLBSbS$5J>(7`GW}-*g)q41Q6q6a2)=FMdm+9l%onl dL?8elzyJ+{hsuy4pm6{I002ovPDHLkV1hP90PyYjz{{0J*12TXlP$`i71!VmC|LYf!%PK1iv=Z0I@Lq zVgLrRB#$I8Q2qeT`3KSlX8!?(3s3+U9e@9T1Mx3N13&;VGFUSJ^?=Y13Wr{r~&-|6d^ahvDC! z|G)qK`}^nrA0Ybu|2K$nd)6X=0AgWa1{?O`IRi-PU$8V7{r&w9sOb0ae<0Pr|Nr{M zEF}%J0U&@_82&N|Y=e#y>zg27mx!0Xgp5*S}vr z{r~fq0csvl>92pk!P<5VDfB!NI2#TFQ3lKnzfB%Al=06ZHfFW+c#KiRe{d<4_V)^&)A0s0pNIe5S)eu>r zF8~6F38(?TQZ#J<0R*xEXct5e0}KG|WIzExE=U%r7$AT^8h-rv@ecwRzz_$3Xaxu` Y0RLik?wUgPu>b%707*qoM6N<$f;0ZTz5oCK literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ie.png b/pole-sbv-content/plugins/polylang/flags/ie.png new file mode 100644 index 0000000000000000000000000000000000000000..26baa31e182ddd14106e67de1ac092a7da8e4899 GIT binary patch literal 481 zcmV<70UrK|P)1Ab?mHSU}=WzCQi??=KL1`SXRBmG?g! zeExSVgb4YXfjasA0Ybs`#&c5^XvcLUqDM3{{9AP00d^^H2e48-+%sM)d02u=%hct8G!N( z3;+QH((o5-_OE}xfO;@2_y=+i*h!3FCjkTyNW*WSt$#tPfB*dj3@CIxKqoQ$2DuvO z1O^6x00KJ+r1UogVe!Ksu!etsL5P6?Ab?navG)7lA4zUWkT?GPWdcP410y3N0|YR! zFo-FE!v&-P=p=vuVq_>~VE6=zV^DnmVAx)=U5ZNz6vaS)0m(NHWW2-wfs+9Q00bBS XO2cxg3=*#z00000NkvXXu0mjf|9Z^l literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/il.png b/pole-sbv-content/plugins/polylang/flags/il.png new file mode 100644 index 0000000000000000000000000000000000000000..2ca772d0b79b255872cde2fb29060bbbbad950f2 GIT binary patch literal 431 zcmV;g0Z{&lP)WlqUuh`uiUU82D1+EBLb>EWz|Nj3k zj6%@>aVJ0ku|Ql5RsEk~{?`9D9{=ZO{V&1vKX2lHHJSgJ0SFC1p8y096I?Y|?05b{XcgblKTHZ zfByjpAQrd=h&?HOAa>`R|6Hv9XB30N3RxDY7$AV4en1PH(j<7uAT&Tc4G=&q@-F{c z8i9e$01Rv(35=ybe;NM%WdxES!M~uG0dj%y@b5pvikg1_0mOLw_HE>d#AF}?ph|!M Z0{|%qc@l5wel7q2002ovPDHLkV1m6PxaI%= literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/in.png b/pole-sbv-content/plugins/polylang/flags/in.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d7e81a98d705da8d7054e77e7d311805659678 GIT binary patch literal 503 zcmVl^KlW*80IEmzVa(K3*_6 zG7fg0I9Zj&0woGah`r_&Kwu3FK=xChQigwjfh>?7kc!_h@)sEWW@MKI+5iwhEdRtz z89B8WSj7JS|MwrL=l|b3uZ7Osk^B4auaUxSRgtG4v;Y11_x}$gi|9Y8?EnG9`1|i) zCPv2p|ADsrhuF4k`@Nr^zUpfTpS$xp!A}Wj4A3Yb2~_s}<0pUsVqyY2p8>1`g1&zJ zsVvR4Yya)fUw{4wtNss>0tLxGfB<5GmnRH!zxweH8<(Mq0N7e&^ba6_ z7#WHgIs!VLeti1p-=9B!fB*jb=l8$ge}LrQ-#`%%`S%Y9{re-sFSERHIY0ohF#KVF z2*K4Ml>Ykz*ZJq)UtlmW{9*tIAQm77@e!0?Mfa}mS!7%=x2KmY(S z0M7pbTSu9imq`K?75n7n_u%3MB_szB3#hl|A07@E6$<6-<>30S5egmg@cSkZL+Ix9 z0st`p&i@3O7{&wE8wU3C1oia^`T7CwI=ckcau@Q71iA1L?!*;{7^Nm*&$?GLJd|NjPb3=0E0KfCb4 z#nAu(05Jg0{{-+tQ26`)!^rI-{P_e371QGlF%9qW_x;Sb;QRdk{r*xJJ*zy?_rWgu z&$=$1lYjzR(%pFe+p|Ni$IOoG{eTR0XemVUia$~;LXXZeDO z0096o0M7peXKyl1N+90g@dyY5ARP|N&gc{s2^<#+#>?j*9u48*^A9U5-*(6(kqBPq zC^|QM0*Gbi#3NFYyicBf1{wyk;Wx-spzFb0kX0fvuWZ`CzyHEKd)}3G%ew&r05Jg0 z{{dZPvvzMc=Kqyj=IHYZ2nGGUe(f)J7ZwZK+v5TV s=!a5B6v9X#`iH^&14cjw13-WQ0BQ>oQ(TIK+W-In07*qoM6N<$f`&OQ@|4`Xj5kLT%`al?B=W5P+gNxB&nJfgpGfTOih;e`=>T z5jZ8;?_>v5xi(~iU^udv!6f5$jpNVh2O?$m1OPDr&i?@Y{r&#_{`vm=wBfh>{Qda+ z{Pz3$!R5rm=Ee2+`0e-d?)LGV)1LD5^!4@i=jZ1F2;wA$U5|F$_;B;f&rf1p(qbG! zCte(9VPa-y5lGpbZn4ZFhzcT9$vfdqmuG z@j$ZG>u9())mkwqmYHSd7eFi*FJ3%$?AX0~_kM%HFED^GKqQ#;=g)7T_f%9=fX)F3 zAdr)QMoCIaf{X{6{|BNG$o>N%f#5F;02KoS5XlH2zyJ$0KZ{``H1_}i002ovPDHLk FV1nFR>VE(L literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ir.png b/pole-sbv-content/plugins/polylang/flags/ir.png new file mode 100644 index 0000000000000000000000000000000000000000..c5fd136aee534ecb59914e336cad18d18ead2a4a GIT binary patch literal 512 zcmV+b0{{JqP)r;gUH{1e{Y(x2_S%2fSMQ?7@vH7`tSc=xS~J*|Ni>>`_JFszyAFKs{8d9NdA)L zm1AIH00;mv0M7pew_3Ln1`-ek5ajjb8VVZW^Whu|9pCfc910uY_2L}~8{YEX9t$4Z z@!Kj9D)d(L0*LYN-@lBEj6f&-|Nox>4F7-s`Ty{t|Ns8~x3>Pz!S){pfXY67`UDU_ zOc38f#US*GW&hv2{?Eqpf6;>f$N=n5fB<4bR}BO)G5?=F{eR-b|HMQT_5c3^H2?$< zb1geNgNn-kGiMln{`!CM;{TsNL8PAke-;*?JV+Z*eYOvhv$==KunT1sF?AKYlWZiGf7_{AKv_o8k9wMiBcC z1B3*kzkfmK*Ds)AfB<6r3XWMgVnF4hNdW;sfB^vU;z%SnI0)(h00004s{hykP}!$Xp8x`g@iqg4NJaUd z$B+Mm%>4cD_iu*Zzrl=O|9^qF|9<`Y547mdFIIVlOMCYL1Q5sui18rvfj0Ph3vJwt z)dnUeruXmP0|XEYv&@95W{1bGfWG{@sKWZ+FOVO6s`df7U=M&0& zKrFzJ{`2=AL>j0Rra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrIztFq(O~IEGZ*N=lh=;=qSyMwWku z27eMOW_|f0uQeek^e_9g7KH|eq{JVG0^UaP2Jy4}|L^JL_3uCblfVD@mnS9t`~UCn z|MT(+KT|KOfz%~1cG~~^_2vEk{SFNQ?Cjg~|NsBWy<%2im{vp^YdeS=hk-Cyo6U`Hgs{l4FR(w#{P`G0;a3G2@YSmzI~fu(ZE1> L{an^LB{Ts58L6#6 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/jm.png b/pole-sbv-content/plugins/polylang/flags/jm.png new file mode 100644 index 0000000000000000000000000000000000000000..7be119e03d203695325568174b72522124bb2f12 GIT binary patch literal 637 zcmV-@0)qXCP){QLU}0{l%6`#}@@_VD{9F|q;xF#yj01gpgWJ+A*m zGUYZW{T>4SpXmF{^Zon(`}_X;`}_MY3j1pm`Wy}V&B*(tydCWT00ICp0M7pd0000m zGd#J&@cQ@tG$8vu6a54J`qTCN{{H)06Z&u*`VIU0o2UAMn)~_v4c^|~0*D2u;qTwS zKYspMz5CDEtAAp>e+Mf5)@1$t_wR2Fu3uNK{_0!&`}CDxK-+|V{{|`s2p}dP{`2SW zZ!oxe=XdSY-}fK=Qse!l!T0O_!(X}WAk`4?=MOLh7ytr@32Xz9{pZ*3U(#Z~DiVIl zOa8j^;n%JAKjo!$j^Xni)Y$z6WB&k?3JlvV7}WR}00ImE Xyv9Bjb9W)}00000NkvXXu0mjf@Xt#6 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/jo.png b/pole-sbv-content/plugins/polylang/flags/jo.png new file mode 100644 index 0000000000000000000000000000000000000000..11bd4972b6d5f134045d4e8ce134601ea9b5654f GIT binary patch literal 473 zcmV;~0Ve*5P)M00|Ni~>`!`VeZ#eh`f&K#;fdS|pfB*tJ>FU-06DIsWc#z@uumAs9{`&>~&q~MQB#;&cfB*tH z31sk|Jq+K!KjiuK-^&B5YLK~LCjkTy3s3{|pFco7yH$Tr@L>D>cm1y|D}MvS>F@7f ze}Db{_vg<)5c|)+zsmedM_Y~p1Q1BWd$vDo!X?isvq}Pk|KA^w>VH5L!1(y{_x~TD z9$-NK{r~sxzrPHB7ytr@v6F$JJdlAwh=Ji34E;f3{DCq4fk_4ifB*vkxQ1J~H9>i| P00000NkvXXu0mjf0T$ba literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/jp.png b/pole-sbv-content/plugins/polylang/flags/jp.png new file mode 100644 index 0000000000000000000000000000000000000000..325fbad3ffd3075a4a84d8d898ad26ef7d3e0d56 GIT binary patch literal 420 zcmV;V0bBlwP)9whYk?f=!Q|Ns8||JN@lTD;`{R1ZWk|EGa3dAO8ObDh3E3Cb;oH_5X#1 z|NHy@|M?558b}5Q|Cf`4hZv9q2p|@?lb|{i68>{>{ol0lx`{mi O0000=G`P)0NEt6k^VGA)9E1hT9ocRoN>wSfaWv)?-raRm?)Slj<6Po6w} z{P+i;{`~nD6~!ec29@~tkBNo($fnHz0mS%{fq}QS{_m4#|Ns2?|K~SQUHy-* z`HU>AfB)8feAoK(-@hL}|Nr_0bQ_Dj+^xMk00K}f2RQ&hFc1JYLgN3=lsJ)M+p3uR zWC5ydAM*!ly4H1hsiEFvIU^1)HH_GYz!QMsIYt5i1c4ZMLC4DfztdU-q)WGxxg;|L zi3%uAJ2fm~N8&I2%AdL;`{4^9#;e!&D=C-&Lk8;9|NlO`c*HPy9@C${KeOWnB;`P2 zATRu9VP-jSWFD-S8kh{*zoh2aO#pT8A2W0o(w3 z|5bef!~)j#|KF3RAf-U``!@sYUq;#A42-}3UHtv;%kTfcfBpOQ3nmTE<|1vNq z0ns0zZx{dq2xP;5h!=kY&G_~A;V*`-zy9<8Vi5ZI|I4p`PkusG11$kMn1KNxfWUtE z{TpHc!>?a|&i!W8{>5bQ`~TnHf3N=fz5nHq%!z>% literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/kh.png b/pole-sbv-content/plugins/polylang/flags/kh.png new file mode 100644 index 0000000000000000000000000000000000000000..30f6bb1b9b6c5bf355f67a17531fa73beafa6639 GIT binary patch literal 549 zcmV+=0^0qFP)P;@arD~1pHxO_zPr1&>t9y%wPZrAQpyS3=Ms1K-T|%K*j%o>i_=z2W0&D^Y8ax zhQELQ{rLl7|Ns5_-|C4+00M}Gf#D0s|6k8u{RAokD*W^JKSaeZAp18+HBcQ8{rdA) zTAYJ{;SE3lu^j&CtN66?*W<_k{(=kvTJiVSPc{h&pyuy)ZZrJ(`}gOM|G$0#rP$=; zY#H_d1P~L*>3>1SGXDMzbOE=49-9EaM0J&9T`emwH;=g~P!Ocy*DnU30tNVGcpOKXK;IXGH`G*aB%Pig@_cF{AXeP^XnG~{rU5QfdL?ZSim;?VE{Sy z7c(ax6CWR+s|%BWAkauYPfsQR0VXz9sPSMM00M{!7+@fO0fqklmFn#S3Nf;>{s#gU z7DjgV{|pRrOO`MKef9?wUO?vn1P~(w!@{x_lZQ{f0d@UhVEX<0FF08K{sNMJKnNIa zzrX(mdR{@6d*A9+009Ja65pra?7SkZU^!3-{)PrTC`>`Y0b%_6|LHH#J`sQb0@|>a n0T_AEh(trkF%3aX009O7j5IT?Rho+J00000NkvXXu0mjf2r}#E literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ki.png b/pole-sbv-content/plugins/polylang/flags/ki.png new file mode 100644 index 0000000000000000000000000000000000000000..2dcce4b33ffe1f40d490cb1a2e03efe22ea56155 GIT binary patch literal 656 zcmV;B0&o3^P)8t@U|NsC0_uv12fBrK4XN%za&+zB_ z{P)aXfBpaa=ii?{|9}7d|NHmt1seeZhy|?e|DWei8UFwK|L5=jKYtkh{P{kK2}m(L z`||tm?|;94|Ns5#-_IY+QnEm+00M{!r2OxHhJR4iK=k+TZ>A77)*#lue}Db^^$Tb= zko*TE|NI8J3LpSOb8Z9x2m%4nC$a{*Gqe90@enzQH`ta%tA$7d{Sv5iP&~x@8dMF~ z(;dfh&fyCHF#yj00oRR-9sTeJMNR(n^YxvS3U`G57YhIQc>VqR{rPSM@(uBDU=5F+ z{|5&5hj_*A{sI6o0M7pbe|x2IYDAmA_)R$v7XIy^!u#*~18PtP{r&xWnDPVw`hiji zey{rM^8J)$5m8%@0*JA9=57`qRaXnayHCFDJ@r1pR}vUfQ&&Fu_xE3Vu+-%{U$!58 zQy3!)avcufO?mzv0@a%gl z1HS+N7!IC&H?5`#AOHX{0M7pb00(zPR4BWp;5AJa{{8^XwcY>#`eSh{`1tyzm&^bF q{8L{tuE6I1;oe7AG|b!z0t^7P6ga05`yJ%~00001r;P)}L!W`0l>rF;|7So3KrTcC!ho;=0*Gbf0S0@;YBwbYEs=i=3_$ev|Np-X41fOr z{{tp}0~v7g%iT=?0mQ<{9!@# z-(SD~{`vL)_wRqdfBpaan?+XX#@15+0mRIp%kY{1qrJR?xs-YLhQhSVzk_f6;`sgh z57Tc3#$ODKzZsZ*F#y?2e^`Y0-&}tV5I|5HD)yDjz7nmS1pU~~aVF#A6wD&YtO00ImETIDprOD_2B P00000NkvXXu0mjfKOhx^ literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/kn.png b/pole-sbv-content/plugins/polylang/flags/kn.png new file mode 100644 index 0000000000000000000000000000000000000000..febd5b486f3f90056637b23caa26d838fbadd7d0 GIT binary patch literal 604 zcmV-i0;BzjP)h(K@ANy8uaQvQ^_nWcs z*Z-GL)eL_?t_B7*Kmf7KbznHW;LqhtK<$TZ9ej=*TGLweOZn#S|EVB#AOzI#2dDw) z)4xDJ00a;t5ND<*{rU5ogY7p9)8EGU->gS|Gwk>cG!LX2Y%nmu8NlfEl`8-N#0ZOI q248)K1w0H4M?n#d6+r+%fB^s&Q!OA|2rzyC0000Cs@aq@DuRlQczuzDZ5@KTj2q4CTH~*`MftCON|DS>3-+w6c z9|(gO{~7-O`v>9vKX&5_Kmaj*WME|P@B8=S6~kYUnG7sU|G#_z>G}QV|KC3#^7rq5 ze}4b}^_xjb^7)+E00G1Tlwy4KiiwGVIVgltUY_yi&tI!o|Jl8p;n#15-@icU*KbCk z6Mz3^`1ON{fdL?ZnEnBs@%JyYzyH5mxBfr4|7*t%=AfYeY;6C2{Q{!DKY#uG1wwy- z+}}Xm3;+QH(!lWNFN3HElfM4XRjZk-tp4-xFo=l!{|(XrbkBdVP9XXJ&!0aG3;+Sd z1adCWtuJ2w-n@w=AmGpT?F`?)|9k%Y-_M^QML&N+RfBB+Dh3E3pdT0*fp#rf!j_o$ zUs8faP3>oG?f*A#7{O)(oeuE;(0C>wVqgFWAQqr4|9E)*J$m%5y#o|bz~KAxm4S=v zKP&4$usU!k0b}RSKS4oYgaHH)%c-;9wWL`3={r0|OreK!5=N4TMk7RCwBA z{P_JV0}}Z6?;n_iu%H+Q{s1vR05Jij`8c?M=-GouSI=K${m;n9!7aeW#m~(x$j!^i z%zXLG*~fS9it_V|2?zl-00a;V#NgMjUvJ&I^~3uQB4T37ii-d5-u?gQ&wmw_XD?o^ zUAsm=P*7M%NJdr`Xazt3fo%By|Nn;%AAbM-ZD?YwEG7BBxA%WR!T-FR|8><0Vxn$d zUT@yKdH&)BP#Mq$fB<3y`hl076R7Rgt5;mSyo`Gea7>-}|M%}Nf0%y${3VbO@hKwm zAWK?W z+TGp#<;$01Vv<1pdP-ancZ!Qkd3bmLHK?nrgX5I}Ab=R3zkQ1wk#LIP517FKVgLC9 eRt>}e0R{ktF&Q^6#MUGL0000>g5(iv%?` z(D4&UY-}v-?fgqn;LlNii6%BQ5H2|mQLk{ldk$bs%ndQ&CA0H(=gof2$h>#)BE&Hc z00p_zcMtFQQG{RNA2c-VcQgbYO6vx}HE*sVte-6L8d37R<<)usekQe> za5E>Fv4)adO;|mhtDTYgNY}n-AdAeGg%nI5!1p=$worbrYYS6qZ{WL-@P)xg`upqGzh6Lx zERQVE2><~E((v!!|G%IA{@M07EI*V_ln=0RjjdN{oM|h)7EO z{{7?6U#34`ML_iD4-=RKMg|km5|FijfgS(|AV#2u+YAh13=HqUkqe1m1{eb(!T=Kl c0)PMm0G()MDW>>^I{*Lx07*qoM6N<$g4p`a`Tzg` literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ky.png b/pole-sbv-content/plugins/polylang/flags/ky.png new file mode 100644 index 0000000000000000000000000000000000000000..15c5f8e4775b2b68e0360c1f4ff1f37e61611276 GIT binary patch literal 643 zcmV-}0(||6P)0{QUt82Kj15^L?rd`uqE`oNxjFF#yj0 z1e^fI2i-9Q(8&Vs@%;Dq2on+Z{QuwM00sm0@b~}!1OzrH#hk+X+Tt}E6bb+U_yPbi z0M7pcvI;2tA|wYPA^Z*x0300&EGqR875n@A_WS?(`uvdQq*oFTSt1&p=b-!h{Qv;{ z0st`p&i?}PGCBeX39IA)-~tZg`v#`;6$Tz2`uqI%`ThF(|NnA-^wR?L!uSAshx_~g z0000205Jg0{{tif814-hz}E2g`1#%M`@GEN)${-9=jr|Z1Nim(?*qH%B39iMC&AR2 z>ggNf+PVUWW##cF5^jI~{P}h24a1+`jKBZ?zJB$|uU|aB82|la`WF`1`0wBUe?VZ- zRnf8uXahh1u`n?Z4sYX?@pO{;x_8g;0tl$# z2T+})81L`j|Nel$KOpz_zrTNegN!(Tli}h6pb7teeq#K~3=Aa(fB<4-V9 d!wLWb3;+YKCC*ol*cJc)002ovPDHLkV1loTFLeL_ literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/kz.png b/pole-sbv-content/plugins/polylang/flags/kz.png new file mode 100644 index 0000000000000000000000000000000000000000..45a8c887424cff6eb0471f5a1535139b965e241e GIT binary patch literal 616 zcmV-u0+;=XP)g01!ZoKn?Fz`<^k#?O_Q1 z`=8<8e}=z6_5c2{{QvRuAM+0emcRf01JR%V|9}7gKjGLHfB<4)U|@L0AiL;yFw=jq zasNSbGXHKG{NMlfpWxpAK41Q^gEaj6FV4=$@arEy05LIu!2gi{Gync$`1$|;-~a#q z|NCw7f0xa__4fbPn*ZDO{onuJ|3JnA^#F|o2q31v4F4ql-&_7K9cVD)|KCjiesKSP ztM&iLe}uy71TZ z|DRv){|H?Bqoe!x=x?wkfBu3(0w91`fMN3Vzue;gQUCt^|MZVr;{RRU{|DCmOS=6} z@%2BU5C8a_|1a6~&;1YB8$b;J0mKBvKpP_e^#OhS_CN2(f86)~DtrE)Yx94t!v9OT z|MTDe69TJd_zQH>zdry01PrBrQvYt3|7!q-C@@&>{!_XBPnqZ6E6@K61pYml`M2uu ze+NdW22lI}1Q5_kK)3wPV4bt}e=;a?{xkdrMUmL?|7pP3c>kYY0b~&4U$AjN34j1% zWLW#P{SRLy(>r)v0s|Y${(}_LK*N79FfcIy1Q-CnX{(%t#68R664G@6GIJN-*24NrwB3rW+v!ydOp^Ef6{n_)(btIFVjHa=pdp6)} zz^!@$h^2tpKUmc4)64h&|Ni?2LVth#{QKwk-@kwU{{Q=j;qSk{fBpc`pWlD@C4}l3 zHUR_xF#yj01d}3g9TFqw{rUX<|NZ>{`TG464+L38761SLpR(uO=J){s0Q&s>`~3bJ z6bIb^kphT`;m^O{e;I!LWBmP>@yDNkj7*H>@iN-VTtHNrD96Ue^ySz8pMMxZ=pRTg zKmaiT)&Bj@@b3@E4ZnZ>72sjw}n?8s2>T{qV)lKMV{%|NQ?241(YPff@h;hz00Cp!a_N2HF7% zr}y9gR8D)C;wJ_Sx5=xYz5MWpi4mv-=yjk&KmiL7K#aZ&_9^w5@1DH=3l15e)xUl~ z-0=7B?|)4HL4sh3f5LL21siGr0*GY=!$H*K#ZR;BJ~dv8zS`wDeeIR3;>1y|KC3hK=RLTAp0Mf zWcc&@%EC-|_DIyI;S5 zZoa(f#*3@};Q;9GfBygi2&4h78pxV*WHQhn|Nk-k{`>pa-{0-~I{v`b{|EZ(4?qC1 zz%@X;G0|`0)6dV-R;K{9rJ5v|%9;KB_nVP{8R7~c2@pVx*BKb3t8)H6dH@UxP=NgY z{qNULVEFv`^^@@rIK+N~gX`}f7I~!;+fM-m5DPFa{(t+%C?E(7W+q^;{`t)a3di3} zzd^yz010JK%>4cT^&8LzfB<5=h#HaqkRlk)Wq^@D01#jR5K~0vg#SK#00000NkvXX Hu0mjf%Ubyh literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/lc.png b/pole-sbv-content/plugins/polylang/flags/lc.png new file mode 100644 index 0000000000000000000000000000000000000000..a47d065541b0d998da832e1981b479097a9b36aa GIT binary patch literal 520 zcmV+j0{8uiP)#-NSZgwz{Qh@GSmETWyIzrrS!pkkqDDw`CEYY|A1Dxfxke?UP9EWUlaZ{K@! zXYTRdfWyFioqIm+xW_M=V(hYvbO?~5ZHkEt37xh?rY1@PqM%`P+i2w@_wXJJO#nzA zheNt~+w1B3H|fqGMx=x!lms6SMy;uqQ4R``NH&49%B_cditsDHI6DHXLNubec}E0~ zb8dy|txA`rTkZMN{rCM3FV`MqlfuwZrz$X1)+?ntF|UvTkD3M?FxSaem74ag}Vzy5sA+`s~GjvDl6>(E?=UGu{=w?r5#MJIwhn?GrT#s zeRSo}v&#TUmcjL&mxEF>2%EIxN+SI=O=izlM$T5JH;yv-C%^zTfK|9CLa`qJ0000< KMNUMnLSTZ|5$YcR literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/li.png b/pole-sbv-content/plugins/polylang/flags/li.png new file mode 100644 index 0000000000000000000000000000000000000000..6469909c013eb9b752ca001694620a229f5792c7 GIT binary patch literal 537 zcmV+!0_OdRP)sI{|q~>>TZ2$qp!tjsj_dmuxH+6SkQv+K1^Dpafp!@&+{r#8W&u@@le*a|z zk$)I|{ss9HAb?mjKkZQc#wYOgBhb-*|NQ;?=l9<~e?U(E{r5MB3DgSYf*4|4g1Z=I z0R#}sfv@v<-|;cLeDMG8um8XQ{Qv#?|LOa4L zz5|hefaLFgf557NB#8Tm`R|`M3=9AP!~zPVKOloaN+E`UP5lQo8*B+s^WVQre?jpA z5I`*dz#16EB$cmd~05Jg0{{#R40Cvt10RRAw z`u+d`{`)-+^5ON`yb$y0|Ni^@{rvm=`~3g>{0I^G8ZGb(2;2e)q~Yi9|KETAVEFqN zi2na)xwe&yo%hS1uZ%yx{Q;WF%<}W+mp@!0-yWP|m)B$h2q2(_|NnsK|6hiGKudoE zUGn9{-`6*oEmQ72y~rUb^YQPmzn@?Idwh=T>wA{p3V#3shzY3p@87?_|NZ&@_cy~| zpmRZP`1kJ@JI^@8AFa{s9OeCZO+ts{j1?4b<=-Nd5zA z`2GL?FD{9%H@9*#{QvEce@o8hC9n7wpg7QIfB<3vS^!iHvfyK-U8V5ZH#le}4S|yXQB^Nt}W|`Q?5-JjKDn&hY;a$Df~n9-WqyG5z}b zHWMS`AAkU20!9tv|KD6JO#c`e|FbePFfi-*z4`Hxjg_16|9{rM|5*PsvHt$a@%k1I zzvO#v;hz8j#Q5o)BT__yf)$AVfxHBa6HpujodJ?%_y>%AV59*A7yy`5b5c`Z!JhyC N002ovPDHLkV1l?nIh6na literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/lr.png b/pole-sbv-content/plugins/polylang/flags/lr.png new file mode 100644 index 0000000000000000000000000000000000000000..89a5bc7e70711575c1ee3b83cc2be7f0e1fb29c5 GIT binary patch literal 466 zcmV;@0WJQCP)2Y|A4{o z-@kwT`t|eY&mTX2eEM}Kp+i!_T03wQQEla((gZiC0cs^;{c3|jAkj>009Kl@aN){ zC);;k0UG-E&);Xo*&wq)roznr3pD=Ezu&)DC1p;}S_BY4jKAN$W)>8Nm;toyKW@Ot z#Ps&Y4S)b*xg;zq)7SR<*)x!NAa?^@4{|ZkY%l|8FPQu15397y$%U%{0*LYZ>zAxx z8}J(slm+_X#f@tK0mO1iR9wET{^!#tU}GSb{Q3uSG}s1+e?a74b~(9Y%Qpf95aZY9 zPuWDo(ENa58%O|%pI^NU5I`*FB&GkLM&}>Ys6}P~0YHEO0B+J}4VS0Fk^lez07*qo IM6N<$g3a05u>b%7 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ls.png b/pole-sbv-content/plugins/polylang/flags/ls.png new file mode 100644 index 0000000000000000000000000000000000000000..33fdef101f74e38e2422bb85dc8a31bbf1da326b GIT binary patch literal 628 zcmV-)0*n2LP)NT^udI6UX~&u_xA`izWBNXkIq%g^6Y%Pu{8|3yZC zlYxl^Ab?nacHcU-^!@XD|Nj5|`r(zVwkHE4BV6^xC+~{3+xxCp=yQ1PA~B|JUd6PoU1p;PCnS`uh0!`Wt}y4#)fi z@&Nb%0tn=Xmv@c{N@*}KFh0M&kIP1>YRmQG4?lbdn);9N*SEXB6{h}Te)Ie9Zy;d! z#Q+chF#yj01pfa18Ye&*C_n-K{_XVnU82h1@caA!0{i;;`V*Y{7}WX#^!xhz{Qms? z{`>&^00Ic4fsvW@|G$6Ruf6C#{P_EiKfi$f`+Dz}{FL7;Z+`vz4fMjFe?Sd?fe5Gp zAb>y`UVr&E@!c&!7K){sO`Ozkh)melY+9 z5KGUl3lpbYV0iHf6xF}JF{n*t;A3C_dhHtn&^!?O1t$N2Nj?UE00RIWZBXJNY9>Gc O0000 zKY#!H`S<7dzuzGA_xCRl`Rmu;Um!M^l;`6=xPSp5fLIuQF#P%V7sv;y25A5(1xW+7 z{Q_w~Xakza@Pz>&fLMUe`uqRSpZ|Y=>VQIE8-4+ehiC(l5cdDyKm=3_5I`(zTN!l! z|Nj0Es0O49Xx6_!5M^MM5b`fj@gGk4KbtNx00a<=83P0Vn?HYFf{Xx4|Nr&tKga?w z11|FC_y0eCSvdcCFfafF5XlYnMRN&=-B{`>{W0U03nA0WvHB!TYz`r< y{$OAL2q4DW;E4VQBmbdt8IZ(*2pDGo0R{jiB6maa(%qQ=0000! literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/lu.png b/pole-sbv-content/plugins/polylang/flags/lu.png new file mode 100644 index 0000000000000000000000000000000000000000..4cabba98ae70837922beadc41453b5f848f03854 GIT binary patch literal 481 zcmV<70UrK|P)?-#?r-wgj45C|ZESQtLMVW?~Zs{a4) zALIXj41fOq2a1uNeOQW%&E= z|DQh$fB%40fEE4z10q3;-;ClCKpOx8h=su~@}N>;ErcnO|V^hXG82+5i4Q+5aFU0|N&GK!5=N X;lz1sunOP500000NkvXXu0mjf*7env literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/lv.png b/pole-sbv-content/plugins/polylang/flags/lv.png new file mode 100644 index 0000000000000000000000000000000000000000..49b69981085ff54568907cd51a56a1e5d8b01ada GIT binary patch literal 465 zcmV;?0WSWDP)TuF);jrk;v#5jAUY900)zv`N|Ns31p}&9s{rUUv@1OsF{`>=? z-@pHYNg(_0@82^wZ2|}&78a1v|Gz$Y3Q`J0Kshi8lm?N%fQ(=Ne*FS+xn*U6mIDM3 z3(!4({{8=rtQsf{G!?8Agn$gN2Dab7KQS->1Q6rPlP7uPKoY|E^ZWmwzrbJwx)~sVSb)*-|Mwp*NlCCVfB*i0>4ZfB zFhYR-gakS;`Tzomv6O+~6D%TsAw}vh)M$o8KMw-~K!5=Nd?C`~#DJkl4QvBtQTT<=hAW5C&pkLRXaMS_oX@ePCublh%7`S0>4^BHJ{X z&jSWU1bzAnAdrUt4F8|~c=q?-U!ZD;3Wy>I`UNEa{sJFg8g4-`_wR00IcC z0c`wlknw+DNZ2$-$7NDlT|NlUo0ap!i1F~k2r~my1Y5)izkcK~h z{{rRU9);Krw*=%9uq;py&^Z7B1lI8X4~o-~jQ<6)85pKOHYf~%iU9%$qyZ=)&LIKv z04P8aRsoF!DgoLL3cdee4gVMb0*H~J5hWs_B!uw~i3^Ex1_pot0|0+0kn{N-xWWJc N002ovPDHLkV1lkWn<4-J literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ma.png b/pole-sbv-content/plugins/polylang/flags/ma.png new file mode 100644 index 0000000000000000000000000000000000000000..f386770280b92a96a02b13032e056c3adfebfa18 GIT binary patch literal 432 zcmV;h0Z;ykP)@|4`Xj5kLT%`al?B=W5I`(ov;U*0{`Ko0*gOW1x?dnY zU=0kve*-lD1P}`lGXhluRs8wG@Eb_}{{H{>S-s!?{`@vR^^5K2FR(pO4M5WY0*DFZ zqCZG(`2G8?)UU4`zrJw%x*-cw4MBhY08Ix7Ah47E{sH^x7s!U+ztwL3`tbkv-#@=J zum1jzWCJ7ENdN%^b`n?!@|4`Xj5kLT%`al?B=W5I`(ov;U*021*0XgD3^5{teN< z@cTDV13&<=05Ky_HBiN$KMcQtBo?#b8i1w)1P}`YD=UMn?0*)P|9^oV_=9jUlG7n1 zgOt?2g9iZui1GF7*Fr)<|ABx33~>V{CZ_AxuLA@S%fEmBAbhajaRP`eP%%INfiyrk z1T_G`pFe*90tjjYTn_{=GBPrt03a7C3lKmc4KH52_yY$2zyM+rgbiXafFO_o^aD@| aAix0StzUbk+v2SN0000M*00(~<{@!wBU}0eR!0_)M!#^$%c|o1wA4mpD0t66HlA)zv9Z3HD2a;wKuKxf3 zKLhV?#{Ykr|9@us&njQ==l`GI|Ns8^_xsQFIm-b82&94GKf}}4zyJRI4@Cd}JZ511 zyk#BtzrVk|eZKww|NG~I-~WGu5Q~)bF9rsH0Ad2#1T-6>`p@704FCVWdiqyE_S>%? zzn?t&`v3p0|G$6zgQ7n`R{;bN6VP4%{xkdmsRoGvjXbc2Q*ib#i+$e?>}LD_@7KRy zzyJOE_4n5=pu>QE00u!g^X8F}1){Re7)$pq2>GzRP>hz5WF0{Q`{ z7%1`&WXbP;Kox)fFb41M1d2p!76A1_RfAN3oCFX+Kn)0M$tdvjY9_8yH^9QVjn@nfZP*{rmI(|3?O9b~d@cVAX$tK?&3V z5I~F!3@gDg2t{v?r~d;6^$&1NgV7;ZP#i-L5C8-i0C2iwRaxXp%>V!Z07*qoM6N<$ Eg62#MXaE2J literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/me.png b/pole-sbv-content/plugins/polylang/flags/me.png new file mode 100644 index 0000000000000000000000000000000000000000..ac7253558ab939481a85cc06dcc4d73503afb9f0 GIT binary patch literal 448 zcmV;x0YCnUP)l$FJ^m&#tWvBA4C(n)b76qu^ z3TjKJi*u=MzAs;^(tHqT@6cZ|8AHxz+0T%zR}I9mkc`8faCz48MN^H2?$<3((yN)j;^`52o304M1f80R+|X9}Iwu*X+N)@cjDs2c+lU z?_dAGBv9wyKfl@e{~Tjr001}1@4rADVDj%Tpgtwu-=}^u z00a=o2DtG+^6#HtKYxRyQB?o^{pa7Gzs!FaUNHa!5W-0i5^f%h1nT_t=O0kRUm#-m z!vGLKP#fTS#5u+P{rv~@0nkXGhChFS;q~V)5d8o97pUPE13&;VK7Rc89~k`k^9M+( vx2Q8b0Y@nl1JFDW`UNKcfk_?)fB*vkB(P&2-J7g<00000NkvXXu0mjfGX%sy literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/mh.png b/pole-sbv-content/plugins/polylang/flags/mh.png new file mode 100644 index 0000000000000000000000000000000000000000..fb523a8c39d40401b9abcfb144a73cbb2d76b286 GIT binary patch literal 628 zcmV-)0*n2LP)qpJCu1p{#SASZ=3QjbPhlO05Jg0{{#T~{M_a8tGL(@4F<^6===Qr`uzX+`vVjI z>RSuFND|!tCprH%UjG&-`Tqfgkh}r_F#yj01OWa1_W1j+!`}P+|NQ*@_xS<*{r*D) z#ao8o+xY#_%t@QS?0~yfBW+Wj{_zyJQv%*f2f%)|)v=^uaq0&4j6{l|Ybrbh`TZ`2ITPyN!~wBya;Q+wXO z|N8qsP{n^H7N*~zApZOB??0dhfB*t%@KJoPW~Y4ZyXB%oU++J<@%!g5F#%3te)iws z==lAQ0jwGr+CT&T00a=DyL0x5XB;1||6pKv0FF^K^bd&vjBEyg00RK!=O6aq+V@KU O0000p}y_ZxVsQQo9l8qD!tQ%&&F2zEbEdU-v3mY$p-gb*;wwp?LFG<9EeNpZLj7Q z>zeacpNZ>XJG@0bcmXcALo;Ad(L@#C92p0~G#aM!FfF0T7^YIJVVFaIl|0gRpSyF_ z@0dgJ{oT}qqUk#4;-a-U9Fej5EJ`tIE9)E!qDfL@GEq>vEDI}q@P8EmenIHxu!*Cc zLK?@%1j7u0A`mPlm`kyT;5daWs;EH!+LV0IWO0Zyj4+sHxRqia#e9ki#cu?^6YQn9 zOfZ8&4uw%r9nR_}FG?tJ1sBpnAsdGMh7pA$Mlm3ABvgz9aj&GrxaT8{1^YB+UzPEM zQQ5*0;(QnblJRNh>E*%16wccXl466KPu9Lk=M%$}%9~Z3xs9na6KbZ+^U;AoQ+JVg=BO3kgY$Vuu?iP6r(sQV=EH;Iwf|hcN2Nd zPl_EfW;$kS3zh=H4ojC&X!7Bd!`~OdX{VxLp z5dC3f{KL%rhe`hT|Cm4jfB*jf2Sk3^vlaWpqpU2@27mx!VE|eEAE^2d5dHlPWd8sE>;L~hU=6?i|N8~f1J=Os z`!`SnKmdWv|I6_A575egAcQa*n+Bj_fB<3vdK75(@4vtQ{Do`yh0yRHtQw*LD9^wE z5I`Uef5B$|`u7W{2T22%M6!Vq>?D8y0%`dD|M#!IAl1MB{`!Yz!@u8fUYwuxex*z#9GlH2{4I3~mO10Ac~g+V6jVB)KI)-uUyEi4o|t-;5vAzQHhLXS5NX|iB!H{Y!{w5tv(U>cN1fC@n#RP$T9*p`GxrFef5802qi1R*FE1_R z%$@cqK+8m^(6e5atM!xm*$Ld`mf!Cjw!O3Xq-OmVjlE}!HaApOzc5bS^Ed7)-`;!7 z3@^(f^*`(>_MfgZ|A7%h!i{Q{2amPc6DI0=?4K;WFG*25?8mfr363{?y>~YXGB@T| zrX2O!=^&_)>S@y7as8uU_jSXIHjAb#%}V@}6;j3hTW_}xBk!TT-m>R+%wE}lVQ%)W z_r`T<`V2D`tG~0CeUi4iVCz}m6>Kk^+V|!hTXEWvb)yjTKgNxZT_e5LW`M$p!PC{x JWt~$(69DM(krw~} literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/mn.png b/pole-sbv-content/plugins/polylang/flags/mn.png new file mode 100644 index 0000000000000000000000000000000000000000..9396355db45a8ee040c790782209868acaad4b85 GIT binary patch literal 492 zcmV@{}>pU8D26lh`@M2^zAEy;6E4#hyVhJ1te8n&0xjw|I|OmAOC9q@qGTx`1kMs zKYtki{9$JJ&B6L7=Kt^CKt7QCvS|}Q0D(0y{Qoccl;O=^hIfA-|M~k7Bn3tPfBpOS z`}Y4|zknP@Sy`YB00G1VQttboLEtY##9yH3?>`J++5f+PL6rRiQNLgu1_potVgX{t z{eKx$|NOuHhk@zOpC3@OA=>```VZI207MK7009KDfg$woe}>=xgMa@Q`TZMV99$1f z=+7UZ=>P!)^22||KmS$!{Ac;a@cR$YT8L7JY6c`57{N{g2q3VN{s9Bw7X!l|paf9r z=TC&I7$7zP9Rm!dKY#u(FaQJ)NCWfVKmVWoW?%y` zm}dTA_#*kA1?Z>0QqoLZAnySq0pv->KTM2<4My5DUW>hHBSpkmCRUfavf4zkmMxWn=;={POe9 zpZ~vq|NHajABg<@_xGlmn*aic1*nOE;s2AbPk~B-;NSn>+$?|p{{I~>&N%tu*Drs5 zfBO0B*Z*HY)v`RYKsx~fhzW>+Cjb5S_s>6&>Le+qufKnBv&bF%YWVBlABO)w3uGC7 z{rLq%Ks`WL0R#{e(EPs)fB*akI^_5N|9=)g|N8#t9~WuY61}otf4Tqs`!(tD7m$X( zzkdG%X#fZyCZKPCW&?Et`7z=QS^~DI8Yx-=nhgK{7whGvYgWDg!B8&G1k~{7FHk81 zKmY(S0M7pd06qXVA~x>%?)v`v$?y7WENVL!I|c#<=Jn<;5-<%03=swpg4MkH|N9RH z59P$=0*D2u3CIB%01Ag+CC5rQSvY_G`T70NcNRvLcR${}{{9+hIZ*cRKadRo0R++j zv0Gk5I)>DQ+oULEUYSww-@{VeP#&z`*?j4i%tcfB<3v#u_k;CAlSmszIWE zes6rZ@!!9HKqG(r{Q)GE1e8GG4GeUkhF=T-0mR5q%E0gm7LmVTk@^EErhg$tKMw;y afB^u%K|axUkwLit0000IqP)p`2X)eQ1zd`|Kz0p8A$%R z`bTZnZKVTj3KfeK`2Ky*5B&e@&)?sFfZ#7s13&;VG5q=W=RZg_5SU54z5Mv&imk%` z|FW?#NF2HHZpKX|PKHOnfBpIO`|qDW|9~0*0*DFdzkh#$Hv9ux`j_+Xe->2}ZC)XM zHV0!dKPS0Ur}$Y}|Nr_6wBa96o`K;HKmdVl_zUt7(16dMgtTSeTz>rQ?Z?ko?mjsC zklD%d+V79-zd^=BZ2$-$7GT%`Z2%eY=kMmT9MVkp=Y%mFes6g9+4CZ|=Y~?>`*tz_ z9Sja7kOqJN0yzojravHW{k?SeQ|&okK5=fKkARLe6n%c?uEf?;0ubZ>f;9XA2p|@Q zU%!CHiwJW41sn7GB}e}J|9v$?qW1mmH(Bw2pdk4RbO%twKY##YWMEE2jz}>2 jgG53Y5Cqh~01#jRFwa04;J&RL00000NkvXXu0mjf4K^ZQ literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/mq.png b/pole-sbv-content/plugins/polylang/flags/mq.png new file mode 100644 index 0000000000000000000000000000000000000000..010143b3867f21e7791b8254e806b325c13b2895 GIT binary patch literal 655 zcmV;A0&x9_P)$g8u&g1qF5h0Q6aJN-{1Mbz`Ie0O|k$ z{sM@ZfzzR@(T$Ir&B098+eukMUeMl2+1^x^fq~&CAE%jZ{^O4ipMU-bgNM&P{`mQajg9%ivrm#DT>t+4XJGgP z5I`&pzyAFG^Do#{Ra%^vg_(hwneqG2-w+MozW@IH=Wj)-86P+6=Wo9l8G*Kb0|+3- z*{jc+=}JF+`H7W<>HmKQUT#*P1{)(8poaY?9|3*x^4(W97N$Rc|4EDS&R=&5Ab=SE z{{73y$Ox4F`Rgyx2o@H`|EK_{=f}^#%*+g|tSlctd;ka_mU(L~nd(ak@UpY9GCq0n z(2rN05Jg0{{a96b$W_S@ACL(Rxa}M z`G=gy|Nj54lTiQv|3YG^`}+MH7z}h_G^4TA+~V=RqI&{}iQ&&bpkF?J{dw&CQ*JI+ z5dlsHn4|vw{rBhJzZb8+p1k+fF;B_XE! z42<9q0s8Xa-+!garV_&3Uw`~!Vgv;%KmY+HvKbgYfiyF)F);jMVE6!x-Ip&{0DU4U p=>-f&1_my$6wo1$fFwYG0RX)13*@;vt7rfK002ovPDHLkV1lt{Hh%yB literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/mr.png b/pole-sbv-content/plugins/polylang/flags/mr.png new file mode 100644 index 0000000000000000000000000000000000000000..319546b100864f32c26f29b54b87fe1aee73af21 GIT binary patch literal 569 zcmV-90>=G`P)rBb0vs`uywH-=91j zzd+y*NDt6q00G1Vbl+cwzkmM!`SbO+m+YTk|9<^u`R%^_m*bXSzgT|#{QE0P`4>nh zQ2ZZA13&;V0loO=-(MgHX#3gMzn3`u{`KzHucyC$Kl}CT<*&8wzt6n|ss8o%*Pp+C zfTjZk5DUl#p#T2<`NjV0^vyqym4EMy|26&E??3;3WoiC?{O#A4)4zWSfZPMI0U&@t z8bCe+8UPFj-d`E(e|zZv%GLeN@c(z$rC;+8f>rHtN0D&|BIS>OtI{AOC zx$tZGDUcCBkzc|7XAeyp!)#=hy@sHz%Z8Nmi!G71?uGb{rk^vkcEsO8W!D1Ad0T=%Vj%gtVfB*vk>3V2g53(}_00000NkvXX Hu0mjfpCtxQ literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ms.png b/pole-sbv-content/plugins/polylang/flags/ms.png new file mode 100644 index 0000000000000000000000000000000000000000..d4cbb433d8f9fe49f06585dc46ee15593e3e621c GIT binary patch literal 614 zcmV-s0-61ZP)w!6%f1G{My^>{rmp(`~Up={s8&+{Qm#<{R63-jRF8M0M7pe zp74|h+7SfEy9M#{{`U3;5)b(M0y+2j#`QMv`vWF8IQ;$o{QUp?{QmLR&;S7V0*Gk~ zkHv3!H5OU9Kb*Y(q-ELEH9vC;U*%N({+r?VuV26a{F4-VqagC^H&EN}zd$De1Q633 zj~FHafsLPJA96}RV-#A)X~v?X^MOAye@1K9u&05Jg0{{zeC zH7h(V@9+2F_Xpti2mAc}=j!&)<^S{h0sZ;_Q7ob~2($C-{v8Cq(%>lF*}4LV2^e-j zV}AbzqQAd@=ogUu2Vs2v^{02G<;{1(|2aQ(EV23Z2N=G800M{wXv^O}|A7VrH9+)$ z7=NG)mcRcxm)QV402KN07wDuv009Kl@CPU%A;t|Pff9c}I{*Fo2PXf3L>PYm|M&kd z6T{yxzy1Ri0|XEw14AS%MzNxQNDQDd27mwq0OfZ^Ej7^!+W-In07*qoM6N<$g6Gg9 AMF0Q* literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/mt.png b/pole-sbv-content/plugins/polylang/flags/mt.png new file mode 100644 index 0000000000000000000000000000000000000000..00af94871de66cd0fbf0ca8e46dc436d66e2f713 GIT binary patch literal 420 zcmV;V0bBlwP)Io>l+&W2PtRx|M&0z2M_*#`0)SN z@BhDl{r~j~sG3n$7H9)N0I@K!uxMy#e*W?mp&AJO{R1fisrv=e1J=Os`!`SnKmf7) z1AD;K%nYO&458rnZ>;h=xCZfJy-Z2&4h30>ylo1|%C8 z!A=4QAQtS#|N9SD2R9xVP=6R000Ic%Boqz*|DhQF2dLpM!{5I^H2?v`f~*=Iag5B& z3^Fndyu3hzLFn&a2m+c75I`Us-n@D94+enNf~Z%o__l08i(?1?2rvLmwOi|Xk;8TX O0000wT1SlAdCl&Y)$gVg>5qW^#Y{{Qp$|KC6V{`~n5M8AIn z$$wxH$UeVm6F>m5>|$VWV&MJy|4IE<4N06-W9 zfN4+=|Nq*iiwn$Q2C&jbT&$=TD3oCSlHOGFpRx(;BY;>KBo9alsWSh04>T2o{{H<9 zq`@}){__Va_~#GM1}QP2gACgN0*LYNU!Z^U|NnpRpWzq7|3Cl#|Nj5~7gmyqN$LIj zQvdWzhA$B4g=Z%5I`U&fgJtk z_g|1x{{H;?U6oxK=&at?J**6@V8K5Oe}Dh~1#%?NbbtT?*#Hy-y7l+}Kff9N{$pgg z_WK6Ie}+7v0!uEdpa1{-Wc>4s0pu$NunhnK1op#kuysJ&8U8Z;`FH#0jm^LQ>Tv2E z__*)izhD3U{sq|pR0FmFAb=oF`osMFS8?ijP~d>v`s?4X6Tl#928Ghke_*>=zWoA* zI8ZS_0I~c5+3<%^Qj!Z4rNibE_6+kRtZU3J46>yw zfWS`r^B2emYGC;Nhw;yEHn21ZK^Q<1%m5k+3<-b$0%`dF7h*inus>j>Kov-;VIf zD*pWek$*v<0SxiK|NjEzfQkVEh>@X`f#DO--wX`DVCWAL;}4AS4@`0~00bBSj-y@M TF2~k{00000NkvXXu0mjf^ET$> literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/mx.png b/pole-sbv-content/plugins/polylang/flags/mx.png new file mode 100644 index 0000000000000000000000000000000000000000..5bc58ab3e3552b74d990d28a0f500e9eb6209dfe GIT binary patch literal 574 zcmV-E0>S->P)LFc1LT4cKmY-iGBrkbGB7ay`}g

Nzrc?B z!}RAj&|v@p#KiFL&)@$*g@6D2{reke@BjagZ=QH_|HA5tt#{7v1Ul>guV4Ru|Ni&u z_rKqNfHnXG5DUYvUm)ZE{sF26>H%tC6A=5t#K$G4Eg-G_A87rbKVS#^0WyF#00a;d z1Ca3#WHt~1jRI=eclPL04k1AU{avRH{sTG*Y{UOQAO!R;KmY+XFaVtnvEdic(+vNe zOr8IIc?-17*~$Z`|L?Eg|G`fB4^+g!01!YxCouq>54Pd=FQ6a({TC7tjr5F#2GXxz z|3N{=01TJ^fBykB00a<7!|#88#Ce2)8ovGh$;ikEv=>5x7)(s8a literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/my.png b/pole-sbv-content/plugins/polylang/flags/my.png new file mode 100644 index 0000000000000000000000000000000000000000..9034cbab2c02704b65fba6ecc4a7a1c1d053b6c5 GIT binary patch literal 571 zcmV-B0>u4^P)Z-xKO+5@Bcl`=5c~|G$6#Vc^TNX8-{JF#yj01a@w+002>mTdm0Dxpa1{C#)An)W@eTA0)PNwiNI_f1h_u_DTrb&+z}xv;{Wj zFGj0Cgf$G002ov JPDHLkV1gu%1+M@A literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/mz.png b/pole-sbv-content/plugins/polylang/flags/mz.png new file mode 100644 index 0000000000000000000000000000000000000000..76405e063d43f2f3b5b9cae4f76d9f1c73cea25b GIT binary patch literal 584 zcmV-O0=NB%P)d!0?ZO;SY>NM!#Sr3j;s^4&s;y01$=&U~zyG1R{bN8&$-J2AZUB z{O~2s*67}BSLujJh!l{(TM_&V!SLx<0I@JIFetqFAHVYHe9OP56#xDPD){#oDEIpx z82$bI>))?me}4fPvfQ#j8vp_bq~ZU+|9p&pvv&RstuJJil>ZL~|9}umff)b({bONa zxh{1bAb?oDF)-ZV`m5;k=ljw>l6BpeezVN}{rlPPKR~N~|N8X{NCKH4>bI<%?516t z00M{!=o3jd#=5m)yzyNB8Nca#eH--U&Fe3(f#?+keR}os(@P+F`}Hl*IRF8~0t}ng zTmN>%etWlrgX7)b6MtD}{$cp_8-#v?7>pqD50GU3{f7;x0U&@Fe=;yIS7rUbaG!zu z&%cJ+j{>}Z{{3SByBg&1|Nj_3~Dr2e;Gh>zZrofD5`!lF#Z7{ z2B7#~hM#}`y~Cfd!0!j9&~4{}>qlfDw=_GI6Spo7yiaSL1(R34j0qF#yj00RRApetkm@ z3-<^I`04Bn_xS?+{Qmv@{`~y?GBy}bOB@O2-v*J4|MK+z`}_2=vH}QbDjOT??*y+^ z9PHma=D0k1DE9l$Z%$6;=mbqObq>D1hX4By|NHgp|L;GHwRPtz;{gH)sDXiz;U6Qz zZ)V2dKoY20MNK$ASA+NcQ;z)f|Igq2|MmO7w9@DL!aL%O?v>U60R+_W>(dw3rWqbw zY+vs`7YYhj_p}$}TRP+a`c40T|N0L!J1pWwjPJac>kgmX!|;RwAb@}x{`~&)@5xJE z5fO>bZXLnj?>WlS|KEEGbn$;~p|4%Vx0QJ+&gI^Ic|%b^5f~5v0R*z)@87>RPSSB9 z(mdPNGA>^D|K~4|Gn`ysXGCuKcCvq8=a*k!egj?m?>8{m00Ic8fvd1cUx@iTXM5HE z^H)FyGjo2eEq-FG+;YA1)Puvn7=8hj{`vO@7;-=x00M~R?)3!82NxK-n*V?K1yZeJ z{HiGaByR2;1J+usHUNMy48Q{FH!M8N)Pwp9Y)wTFo81A^+}-HTA|tp~ zO4-IyLWKVGUAVv#KrFzpU^vb8&*4vW%&*_Sfp-5+Oa#jR{(FIy5oqwQKVTa`BqPut z3=9AP#KLU;d%N^MnR|>Uj{MoN{TEQv&!4|iQhqnS=35v13ux)DKYxDz{qyJVA7#|2T literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ne.png b/pole-sbv-content/plugins/polylang/flags/ne.png new file mode 100644 index 0000000000000000000000000000000000000000..d85f424f38da0678471ef4b3dc697675118bc7e0 GIT binary patch literal 537 zcmV+!0_OdRP)pTI(!tjlO;rIXl@1HV&)cpmDGW-GR z`3+L^2aNvy`v2$G|KGnEMPz|W00M~d>&=s#l8OvKbwEpiHvESG2>tK>|GyyO9|$ut zvpzk42q1u17-V!9I61+pfvQ08|BZwH@16Yr=jVTUlmA*S|6zcEk@1g`6+i&7`~&$E zYA%%V^7j8zTmS$3{hyirzos*?2B2bq00L=%yMh7Y5+V8jy0-s+|NJkm_8$o_f}Hjb zAb?n|yt|^zto-ZmuYW+t0)q+&<<KJ>BgrQT zRQ>1Q-#;J~AoS`6pHRCwBA zU~p!DquG0BzkdJv^XJbWKYo1u_VxSs@1MSW+P$@#L70Jomw|zm0SEvBhy{qNbE|>m zzkmO1v}^=;1(+C_zx@3C{m*wPUMbGM98Q`}5v}3B|NZ&>_xGmUO#lG|(!jv*|H=EO zfB*gc{`33)|Nj{n|Mza|{r>BFYe?(AfB!%K_3?Y%L>Z^l>!7{V2qIffI$#e zz5f4~?wt{_jNwA=k=tvV8m;04hxH1ClNsp|jaD0d_yUND;Sa;#|9^ps{`~n3bQJ?5 z!?D}Pp1*tk?A@~oJ0>vvX8@W7)C|%C)&LMdARGSt{R`y$`S<5P0|@TEy!-p_?>~S2 z1lj|1A`hhCuT1`^U1^@yK06yzfAV)~#?EnA(07*qoM6N<$f^cITh5!Hn literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ng.png b/pole-sbv-content/plugins/polylang/flags/ng.png new file mode 100644 index 0000000000000000000000000000000000000000..3eea2e020756c41abf81f765659a864c174f89db GIT binary patch literal 482 zcmV<80UiE{P)E-@kt#fq(zr{dlL|rVbPb$^K$sU||3VAQpx%4ArjH z5b1ya|A`BUvomopF#HDspdkBi_LzW}KMcQr|NHa%@9#}BHvt3?3s4hK`pMU)fB*dj z0+88E|KR{Ac>Ck+U;lpn{`Xs!M;2%gKmf4-G0FZ zKmdWv|I6_A&;LJv{(%shYM_N64Szv401;3FKmf4-Jp?oxsQb@fum%PU8~*%)I0>i# zs2CuCKpOsn%?64Bg>X9QKhy?*00Lh)xZD#`v33$e!wuw~|G$AI0?h>~ z1_&UqlR!#;Ll9OQ{s1-n2ZahyF+c#Z0Amdp#**BUAaDHn%gD$G3dPzV3};X@Gl13bFaQJ? Y0MmSSAW;3b&Hw-a07*qoM6N<$g7#LQDb&XuwlP!fzJKM z`1`}(|Np-K;|B=>MS!;cWf13KY+LvSAb?md?)rCHn)&`aU^p;VI>1V00D#b-){yc34R8!1Sqb680000@|4`Xj5kLTv#?55wQzKoX38|NjLffBpXj6#2y{D-E;(Ab?mHL=FGT z$TP6>fK>na1GWK({(upf0nrSU5*Gz(00%w4e}91F-@gjtJbOE500a;V!?RECzy5mt@dro_q~YJM-#~SLe}OeX zNT7y4|NilCvNABd0|+1%hF>6clER!2lYo}|1|zVkK=SXOfB*mf{rC6ZKVbL)odgg- vjKFAPVE6?_e~=h|kVO7~qZmRm0R$KTYszPUy89K;00000NkvXXu0mjfB$dbi literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/no.png b/pole-sbv-content/plugins/polylang/flags/no.png new file mode 100644 index 0000000000000000000000000000000000000000..160b6b5b79db15e623fa55e5774e5d160b933180 GIT binary patch literal 512 zcmV+b0{{JqP)O=a{vExMP2%`MCSoB^FIcLe_%lf;|~%E5I`(IQNh}3Ao>6Q|DFUXMn*>AqQd`w z|1kXd^B;tM|Njjl{{hM0zwd6?1Q0+hV1xeud-4=Wy?p-%sO`^#2S61Jzk!N?s)6X& zzhA%p|N6}=D+{y%Ab`Lc{sL9~1=0UN4*CD*7s%9KAf+JHKs~=eB-8KTKvw|-5R1&; zzd&a|ob(5%^Z$Q=wHy9p13+aOpFRNu5F>N&`Tk_-7w>=n{RejQzkfh&Kn{rf10?_b z{tFTZibx5v&dxav5I~H7|Ney-|DWN1$%1FyagzUW0464;_wU~W1Q5$TW@eGxtUvee z3vAf*8|igK9~@*rr66bh|NrkNM8z+V zAV?>O@ek;bKfu6d00KAO>U2WB)$@6+CBT{3ok>^7H@y{~6FRKmalQ{r8#S z4^Xx6Je&%q%J2@E@iKAb=Rv<(vO+e^|@#56B5{*~0Mg z>UitA{$OPI`~Tk`F#7!u z%=q{3H<BYX7n!%ts-g52=?&#%8AHvnDo=g*(t zU{@(f3Lcro01!Y-3_uV4{%5PNloM>zp5gQNALI8Qf4=|z|KsPsAHV+n`1$wy&wt;4 zfzU5-=mP{0FqD1)U3&iJ)0b~Q-+l7x$B&=CVSxxV`w!S3U{3%6(9;Y60R+_W0~jFx z85t(6Ir{$dcL`zMKcF!E2U7}WK$QOlX#fZyMg|5;)aZo7D4hMD0TloQ7ytwk}@P)zKX@%&%DST%gMqDF&nJ<9}^SM9e)7=i1G97Xij+!pc8>s z0}TKw06GH{9{>J;c@WiqflO8wrXNp!0t65X1H*raF>uuoM}q1_&UQ zzyE+PV}l7nR6|1@Xe}f}K_mmn5Fh~%KtLN9K+(a>4Du5*FzA2|{m;zE0Q4slD+}03 zKxJTefLQ+k0*D1@+|Oq}Kt_TL2e}yHXa<;L{(_vY&wh05Jg0 z{{*4}t^?F62l4F%@9_Wk_yrLV`1}4n_xiEzG57obO$p>A_3H5V5SZl@9UBk;0Q>>~ zF#yj00jE58tx;oDUfVAO7ZA^g)(IQ}Y8G-;ZB^s|2r!a55}@Ef&J{K=uDyPxdE3 z4FCZEF#yj011R$m=m{0X((d>7`QGgNy~*X%==~K4{m|+BO$p;F|LeE!5zX@o6aMwK z|0Cnry8?)1@m-dDW`RF^3@85Z{`vj)H~*iTuYX^D_V?HC|LG63e*OOQ`}ZH9+h%{4 zR^kLX2_S%&fc^l6#;?EsK&pTL{q^hL&)-1T|AVLlN&WsC!*d@f`}fa3pay^dVgYLS z^XKpHUw?lCNw6Z2x?f-t$o}(Zg7`(je_wy{{yg~C5U2qlfPfml0Rvc4oChck)CmlD zkWL^2sNoMV9{$c|wex0wa`2z{-@pGE82$nT5F-OaFayIEq`3SAj@ntal#g)^Rn) z%xa39#&9*2Q=jUYk90L6pS>p&U^Ww)oe|R~hw*)p*3Ag3m1F|MqC)8~B(2dENvEC(`15Nd2n*uj@=yE$JAitl>N=@600000NkvXXu0mjfk0`iS literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/om.png b/pole-sbv-content/plugins/polylang/flags/om.png new file mode 100644 index 0000000000000000000000000000000000000000..2ffba7e8c43f160bb0d9634fb9e6cb4093741340 GIT binary patch literal 478 zcmV<40U`d0P)=l%a5DE9w9oI(Q6o;?Ey zAdrT?A3yTg*!;YE_t&FGSk*xQBO~LVKYsuMhzTgoEGG70+cq{OrGLMF<5CR)KqmnN z5F^kJDrIFqfoA{t^Z)mszkh!J|NR@N^WQHZ-f!>?ZqK&!y&{zFIzP0wn(b{R37FH0BS}Z;-(ZzkW0R z`o;JgO8$qifBy!003d+C8bA*C^$+NzU%!${e*gOW>-S%fvmgwhvw&=%Tb23#oNZ?S z2p~`>{R0^fayL*XP!U2MkOb-c1#;`ZzkmMzW%$Pc5I_(c{;*0)g6#S8SB49$^)FDx zACSQydx0wd{{073{+Hno13&;Vu4Mp{AoLGRCWbOF`~tJSfrb9TxDaUu27mwq0KDvZ UcsT?Vy#N3J07*qoM6N<$f`X&bC;$Ke literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/pa.png b/pole-sbv-content/plugins/polylang/flags/pa.png new file mode 100644 index 0000000000000000000000000000000000000000..9b2ee9a780955566cc7dc2f59ce175f32d3731a0 GIT binary patch literal 519 zcmV+i0{H!jP)|lVPPN>g8sl5Km-s#EI@faK0YA%?%RKmGG2!N|AD;!zX}Teef|3X z_wWCI{=muCn>GOi5DUcMXP^GBIsf;|&;M~|Oj3M||NsC0d;h_|&!7JP`u*?sum8V( z0aY`}$^xwd2q2IKptK|}gRT_Am!FIf)j$AI2PS_*H2ec11_potVu8EfUYUvEKf`}G z`1lE^`X5*+Sm$r%-@k!200a<=Rv$}~=bu-f|Ns5_|IfewfBrH6Nrpdvs+^pde*a>f6qSrfAZn~Z?Fa+2||AuS*t4lqXH%-ra!^K00G3r z@ax~7e+)2nAoSxWko^y??$?YNza~t8coi7j009Kl08{<<|1U847wF+XP}P60U;n*# z@9*{N{$9Nb{(u|?WHSN*&{SqkP0pSkP;|=6L&63i zfEXEE-vV95@Z%rDuRkCLl>P7efnPxL{(%8d!yj-G00Mvj0{}mHT?%@XEt>!U002ov JPDHLkV1lK4=}rIu literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/pe.png b/pole-sbv-content/plugins/polylang/flags/pe.png new file mode 100644 index 0000000000000000000000000000000000000000..62a04977fb2b29b96d01ffef3b88b6bf2ff05862 GIT binary patch literal 397 zcmV;80doF{P)@|A6@UbB2E)`X3x9D*gjYK@dOyv49j-R|ARv|Nb!om5Pi12buAo@&A8j1_q}8 z|NqCt{Qv#?|DQiV^2?@8009Kn!0`Y7lcx-S{{qo}h;n3b`}Y4|zksS4Wo3aj00a;V z*zEsM)xUqEs|Es~YOn@|-@kzx00M{wh#7&Zfj0j6!|?mhe@uX+0cadR0D+zK=P$&S z1T_5l12i2VfWS`r`v>f&U-&gJf}I2qKwu{UjsNuvF#Z0+ASnqp<}V}$85tQ7(W#^a2}2+PDh3E3#;-`R r2#VqJ=b;e{^dbb<+Crtk03g5s0zF}bJ8sS=00000NkvXXu0mjfKVzU% literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/pf.png b/pole-sbv-content/plugins/polylang/flags/pf.png new file mode 100644 index 0000000000000000000000000000000000000000..771a0f652254b4e891fc73910aab38967864da54 GIT binary patch literal 498 zcmV3lobsI zohi_A`bB&J!~)dH$ngL7lczwX3_#UDxxarw>LBRX?|;94{rmL`$Yzn1{l&ll5I~Ht zU%nI;6$RPw9|VBf|1(_vbYnFmA3K-0+yDOt{~_StKSoBzkDopP1Q63dnCt(82%zd$ zpFb}6I_2!oo##J&nDhVtbEpQW0tSEpVuGrMivIupee<8UpWZS`Uj1hH_v_am-&g;K z1CTfW0R#{WvT7jw$rQ2Wy6P|4+kZd)xq2}(*g=aGrk)Yxu73al#Db(Bq?4D0-N;b? z5G()RfB&pB<@s4TkY)e;`2!F@EcYcO{->q=ymt>64xqsK^^5b@FIO-F$h{9?`~e2* zUv?FhqZcm%1P~}#|Nj2NBq_=8`#0mCzd$+0-@loGnqiRuWPl>)F9-k?0|XG`aR!E8 ou!#JF#Q1|6-w+1S#{dBa0Kx%7Vg$%BF8}}l07*qoM6N<$g2}Akn*aa+ literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/pg.png b/pole-sbv-content/plugins/polylang/flags/pg.png new file mode 100644 index 0000000000000000000000000000000000000000..10d6233496c10e52ead975c5a504459fad68ffb8 GIT binary patch literal 593 zcmV-X0Hv=@BjaQ|F{1AU+wpQ{$Kys{`!CTH>0fVKL!SX0Ad1a`1cQJ=-<7ptZmH9SAnX3 z{Q_yQ`~BbL*ME+m|K)!Dcl`DLKS&U$0U&@t8vg$M`{&P}#F!W*N5{%vzvln`{r&f^ z{||ospYrSf)?fc0{rZ3A*Z(w-2B2bq00L=XVPVP4%$zZO`i8aZ($dmav$E#>{B`Z@ zum6{R{h$5&|A}A!9e(}a_zUO_pbY>4IGm#s06-9cg3a4XeYH!D;D>_*`V5R3;NTtr z%*@^Mq=>M$LXVh`5jChqDeaf800L?F_U+sH_3M8E<^KOyQ&ao$p literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ph.png b/pole-sbv-content/plugins/polylang/flags/ph.png new file mode 100644 index 0000000000000000000000000000000000000000..b89e15935d9daf25173f89a36d8111824fda5db5 GIT binary patch literal 538 zcmV+#0_FXQP)N~0_Y@w0Al+04@f;`V3_{@|8#9F=K6XQ9UY*azdwKd1Cc)=8bAo50U&@_7#Kb? zFg*PK|H1$NTnr5Nxw#FRn^&xvtbK0f`#-;cuKxpc)t_H~fDExeq6ZmH0|XFI1NZ;` zGXMXp{AUnj_^>}zDz4B$`$1}#7U0X2MOU=aELU!7sY=Kr&1{QvMCSsj$|2dLpM12Fg)7ytqY zsKMy}yX6c^FZ@4woIyZ63`(G)I*8l(j07*qoM6N<$f~Z~XumAu6 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/pk.png b/pole-sbv-content/plugins/polylang/flags/pk.png new file mode 100644 index 0000000000000000000000000000000000000000..e9df70ca4d63a979e6bcea2399263c081ce5eaeb GIT binary patch literal 569 zcmV-90>=G`P)`{xe>ko^7oADI06=l8$gn`UeR2p|@S@&Et-|M&0Ts{jIsi2(+HrUEqpC9EW^)CAOaJl^^9-%lBC8BHP081)#ChQGgo zHUI<=3(zGH+B`^Tu)Z%{q{PpYS&%;j+KluCr=pK*_e;5D)h=t+bKO_wx|Lu6N(?HnJ zN6`lu;-7zgR^V0GaA(7wCwqWF2h;!%KrH_l5Kj8_?>EpHKuhXR);;uSzaAK9KY#yZW@T0p zQ2G1+FVF^n0AhUp{`o&J`0?k5YKbbt8;l4>j(9ExfB*vkhsr>Vq>*li00000NkvXX Hu0mjfu=^7c literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/pl.png b/pole-sbv-content/plugins/polylang/flags/pl.png new file mode 100644 index 0000000000000000000000000000000000000000..d413d010b5b097c4e0a4604eba86dad79567ed16 GIT binary patch literal 374 zcmV-+0g3*JP)Ab?mv3iQ8Nu5A{|6C_|Nk>HFfjc`0biay0|+1% z2B@O{$c+Ek03##gzdwHf0*Hl3)etG5lK=vU1?W~rxN0!OqXDP`Ab?mH`1u+7`u;zA z_W#cxhChG)!_n{G|9=A+zrl>(AX#bYe+w4^1Q6Is4VEzI_51&? zUm!LT$@u9L&^Z7B1a=Zw2xL66B2?87%l|Mi00a<712fnG3~)u5+Wr7F{AKw27w8;- z00L=X`u&GNQW9*;Uxq&*os3{386YGO{rw9;K*az7#P}5)xp2gQ%0-g`0)PMm0MPYZ UsK>Njp#T5?07*qoM6N<$g4HXSwg3PC literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/pm.png b/pole-sbv-content/plugins/polylang/flags/pm.png new file mode 100644 index 0000000000000000000000000000000000000000..ba91d2c7a0de26e554979f6351d42a1a4e22de3b GIT binary patch literal 689 zcmV;i0#5yjP)#D@XkmAv!xDMMW8-mEZ&mK%|%B2@pa*J{pUD?(_ahBqlG}*TVt; zF#yj00{;H~{{a8``T70x^5Ww5-{JLFN2dS#-{Io#@$TjE?&8zZ_V@JO>E`A8`2YX_ z`~rx{;oS`3$G61pUY_{!-0$E2{{CbX;QPSJ^3BEStfg-V`n;-q6+;t+Xyw zOy)sS^8$#8OF-b~@87@v{bTs||L?z_Zq~=&zGIaZd&b4_{m<{;|Ns5^`sL5xKflEU zUjXHSP67x3F#yj01nBVe84eEr00I90|NZ{}FelkBB-0BC^O2xB85HWz)f)HsDi#s! zMLEolpK<^Iq5=Rh0M7pb=>Px;h=2d#;^FNBZtPGJ5bKP1n*{>+?(qio_5k|){tF25 z`1Sjqtv%A&PR-7P0st`p&i?}b008M5=kFQg|M&R&{r=?U4x6PnhWa{`B$w z?CApk{rU?E^8f<&008;|hy@rKe}6M^a>=kt2+9et{QJXr>zQ5ua`W#$8JQS={rbi5 z^Ctr{)6XBj7@3%V17i>%fEb@MFnj<<;{gVSbOv{z8Q{qN1r~!u@ISB;HgNQF0R$KT X>6#2<48ze<00000NkvXXu0mjf$fQr4 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/pn.png b/pole-sbv-content/plugins/polylang/flags/pn.png new file mode 100644 index 0000000000000000000000000000000000000000..aa9344f575bc92f4c1a5043e6e7d0a8b239daa64 GIT binary patch literal 657 zcmV;C0&e|@P)$VEDzr@CQtS7ytnPF#yj0 z0a0(~eP|Fd7x&oU`XvhO+V>M05dgm54eRCe)!y3s`vCp^_5Az)`uqj_{QRhrlmY-T z0M7pd#W4OILofm6?eh2PFCO>E*7Xbx0@lgN z0st`p&i?}F01o{F1pxvB0QdR->g@pe`}O_>?Enew{R9F2_ajBO3l7@{2K78Gz9u`z z008^~05Jg0{{!Vds4FN77!dx<`5YAi^1B#F4D8&$5I)oT72fOU?&Jm;1k~m5*82ws z?b$fe$;$!&F#yj01PbEP9OVUy$0!>9?*iHF&;9=9{2wXIjNS}D{P+g={1WdM4-6DF z>gCe?_5uI^`T_tk0M7per>)2uHb&;=(#87${QNQl(a`kw{Py}Y1nctu{`UwC>ihis z2n-DS{QU(1_5c9-0*DC|aR2`P{`;Tl?{DV6zkmJy$H?%Xjq&fFKfk|zXRCbma58?r#f z00G1Tv;`<3F2eQa&)+|P|NZ&>@AqGj(m#Ly0)zk56?XydpHmj-@bfY4J_0oTA3y*x rGBBhgM-@1KAF z|M~a-&+mVKfs8*8^zZj?AObQ@tXl^VK#U9w|7)um9zFT5!1JoGnu}M2{r|uJ|AC@F z;y(;9F@d=M{=L6-3m|})KsNsS&&$bh^PO0375Ag3EPt6;7?_!X=sz3*^#j#0Gyh{@ z0SF+Vlm3Z`F-Ar(?BDbM+y#c5od5B%>y$nn=KcNZ|L>nr$AC#T8JS}%RsaMLPy>UR z34^BAe{Qb-hmSD)`~82~jewZHH;sOtVgB{~2T_Lx z^M7~ue_6TzObGu%0nl7VM#g8?t^ouP$PYjMFazDG!uzbThlgL98zlelKgeJZ;~z*Z zSPxJG!?$k$0R+;(`ulr=6P)M00|Ni~>`!`VeZ#eh`fLE8Q){QmQQ=eGY$|NqCtU}^v=1iBd@fS3^8`SJ7r@8ADF ze*C{^(f_{w|JZZ@y#o+HED**2KY#i6{~yEeU;qEJ{Pzp|pOucqNnlF=0*DFdB%s0n ze*I+l{{11(um4^iSXF}z{SS2YKY#!N`GNV*AE2Jys=p_Au>JnK{@0e3zk%WO_xG>A zzkdJw^XDIk{pa6bWqzfjEk^+Y2&CaX+n+VzlIN6JC4s^J?+-}zKcEU=eEj+Q{|`_P zFrfeb|NHmfUxq&n00G3<$-qz^$iN`P!0-!({va{_z!?9)Bm)CLfB^vHpj0t%_B3$- O0000op82)aAGO;3n0AgYI#891D4N?IF|Ns4E{L7&Dm*MXp#y@|U|NLS4 z{rmr)KmTFmmra`h0*Hly38?u0llM=#nEx6H|J4!x{U`A6pVzdvv{Rd?JIrI9L zs`Fos+0`Q4a^C}Q0+k5A1KaQ$>Lf<6lK=vUh2aka(D+|}f9<^YM_B9kC$A?0Z|}3+ z`ptao7t>dSY6f5^0o~2O01!YR8-T_G^}PA>yZ7X8cHUpx=KlJ_{+sC?ST#h$AD{+c zSpNn30U&@_7``$5{_{tYU-I{#-$2g*Lz_YNHw#c5FVJd`!65YaF9ZRd1Q0-s48{x$ s?-&?Px# literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/pw.png b/pole-sbv-content/plugins/polylang/flags/pw.png new file mode 100644 index 0000000000000000000000000000000000000000..6178b254a5dd2d91eeaa2a2adf124b6dba0af27f GIT binary patch literal 550 zcmV+>0@?kEP)~nkZ zGRMDC%7~XK0S0Tx8Wd7-QG59jKr9SQAk|O4{{Q=*0jSzY^rW5C9>)KFc0aM(`^fh9 z|Np=Kfe=u&EDs~YzkdJ$!~!z=-~YcrJO42FE6xsAYGq`2_Mbt_P-yG_e|4Mhx&31J z|LZSE!|%TgKvw|-5ED@OU$BE2n0|Z9O=M(v1mpqrFfl%gR9?uy{Oi{rkOq*RfB%6# z1PCA|pp${Bfd()#{N!P|4fj41<69Aq$E=K>;Tryc4F(7xpbZRv|AD;q^*8I6-->Vz zfB*5n`o{nM2Peo6f5F}W+3*h_fS7<7;^vxc*?8?`g7w0kCk@cHxaHDByoH$n$~K0fYN5BQR!wAqjL2Kmai^lz(OTgcO%Q oK%!9YKcr{|u^AZn7ytqc0H_5zuk@Q*SpWb407*qoM6N<$f;OS^T>t<8 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/py.png b/pole-sbv-content/plugins/polylang/flags/py.png new file mode 100644 index 0000000000000000000000000000000000000000..cb8723c06408828ce68a932ff472daabecc64139 GIT binary patch literal 473 zcmV;~0Ve*5P)@|4`Xj5kLT%`al?B=W5I`&pU%&omV`KRD53KJ$2txq_ zg7fbmh|k3I@68*40Al&@kBy(1nSq%Zss!k?M~{APS@-YvZ#JJG201x|0gQ}qez5@r z5EI0wa6>`h%cteq@9Mue|Ns2{KQdro`19u4 z9*F+^0|+3-w;#WAv9bOIX#?r_2Xj8qX@CF21pWab0}C_Lljko10*H}8@M3d^)Z>@G zf!6*0!vH4#gGo5!|DS*V{{HzdC&9L6!fAj26p=v+03Zy*=I{f8|9_}7o838uP_pBd z=z9{Sra^iHOE|+IC{ z-`~G~{{ZRVfB*dX11A6d`CYbrEkFRVK#Yg0UeQ$d`q2ZhA|Uz&)bIy{egR1#X&Imb zfB<4bR{ihazwp{dkXn!mkfPsU#_wMs1hfID1|Wb~;Esc6TU=EJGWFLlunkbN!Q9_} zL0)432p}e)sSwo=4bd$f5a~a^fBpd(3|0LbOac`E1P}{Q!+)sq|NsB}pI=e{a>g%& z)4?|U{s;0mNCQ9sG5v!Z57O~Jp}QY!5N0Be0)<>&pIsQJBL_(#?Y79Z=|tr;B5V#`)xwfSJGMGjh4KT1dw2 z|IPQS`8Tr^!E$wzlaQ76xdzIbRG)=P4>&r8bL{q0%Q z_wnCk|Nn)V6DB`NOh`&f`SJa|{b6OBHsgQ)|NpmVZf$sa@bY;ck=-noT~|d|CGzh6 zcQEL>DhgyNt!zHtw?>8EIke5Nc@d9%+;Z(x9}Gj%B#cjZeM*ozbnMib14oV=IB@V> z&vgMmz7DG}F|{}M9zIJ+{qgIsx#Rlji7_t0d_@@ozArL?Su`s;*Q{AKpRQ~TD44PX+*q00taD0I@Lq1k(S2nt`tR{g)9*1H=ZfhCe_Je;NM%1^NLXfPkU&2dGq1gcanC zzsyWb(hLmW7#V^70~+_6f#nZ_(jSmgFakOWAb=Pd7`8Gn`~pjZT=;x%FbfOAzdzu3 l1(F{a{)I#17yR-T)##NTdjqb^wzQ(`1@?t)Ix4MUXz556teM9A7Ic zq_@itH|pv>q+zrjZJ^Hx5bj=fD{5McI3ol<@^-l_@~tZGV7p>1CU&qG~{YccyC-q z$8~P)6sG{nMmQy85K$E6L33rja$x-b9$ literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ru.png b/pole-sbv-content/plugins/polylang/flags/ru.png new file mode 100644 index 0000000000000000000000000000000000000000..47da4214fd9edb383687c1d4f84fe8b42a51ceb2 GIT binary patch literal 420 zcmV;V0bBlwP)X|NRSO0LlM<{-BURBqYRGSojej zfLOL~|EH_V_~;P>Nc10*D0|Jxss< zFi1)Q<$$6LU}rIc*dU*QNFV}+9T))>0|XG`SD?F)5CbX~O$rDA0t^5@iDe$xIAIn5 O0000N_~0!B1ZtR02zJmAl3i>|Nr}+@!x-t zvcLa8?7#n*fB$3p|L;$z$Rx)9zm`4EX`B2HAb?mPX21FhQ~^@@2dMNf!=L~E|NQ+A zWdHd6KUK1c=hsc9f8Rnyezh^=0R#{e(Ek5GMIci_s{j0D`2GL?@4p}ozrlKzzsUIh zhw0@n(cNzYfer%*AeP_1{{8vS`0Fp&84w#lmi+$#)ARI~X!Y&+KyeWsW`<9n00M~d z^G^m==F0#79{mS71ZX;t`~_q%fY`tPf!Mzw;*3o4FJA8j2p|?NkT1UdXZrG=;TOYy zh@M|qNhT&CJ~jq`0Ac}pl#vl6#K7 zFA)9u_3syi0VMzY2QmHtx&Qtu@&7&0&HxaAAvs6^7=(cU7?W7&6Z-$piRe`dyDK`^ zN$WO$zWL=wEu!PO?Vu9@iVSM&8cWvf2p~p=WCn&G3_$lI&>tl77dYY}Tp)vm0U*Et X__=7oxWDB`00000NkvXXu0mjfV`BRN literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/sa.png b/pole-sbv-content/plugins/polylang/flags/sa.png new file mode 100644 index 0000000000000000000000000000000000000000..b4641c7e8b0dd79aafaa73babdb525d3d2dc6a8e GIT binary patch literal 551 zcmV+?0@(eDP)4!1u&@QJ10&`rk^HbMk8Ee|uIe&H zS+;4$DbWCt7$DsBz5oJg0IGiW@flDZ69W^F_wDDmUw?kFvatRB^XvPsAO9KtfBpI8 z%a6}8Lb5=`00G1TbjJVx|9}4ZVWnuJEUfzZ$EVZx<$*voWzTGcp~$d(=+V{_?X+ z3y#kPS_RYq5I`UeU<=TsD9Bk~@o?qi&=DPd(?v86a{(`&&3I*E&g8|Wo?Sn;v*0j086Wc~d66UYT>00&^E24DBZ$$%)DV9SRUYEY{Wn z85tspN%!Z^Q&_X+!-^Gee*b1;`1hkUW~HJ2(d(c7|`w2)m##KhU^#|s1eh2YzMVW-Z(;)C{QJl7?-Rp6DTaSP8U8UK5I_L2Ffe?nu66~hU^Xzg zV`^IR|NmbGhChsd{xGln!xZ`Z|DQkqe?!SHn>GOi5KsdU{eSZ0I}_6%bMu4$|G#2j z_zP0e_xu0e-~WI8{{Q>e|6jj=B8;-KKpOx8hy`TyKZd`5nT(9?%F2RO|M~TQ@}K{E zz)C@?e?v4d{QeEp01!YxcLP=bXJGj0<#nFn|DXSVfvSK1-v%}nhwkOu|GvKejg0<-0ptJwK&1cy1oE`H<`Z?5M+~$7{9gq& zn~(3mv&(;P@Bi|05T(EW{(k!9>4UEid{_Ab1OPDr&i@1e0Q5gX)c>UW0I2)_6d3&w~i*%}NQ0G05Jg0{{#gAwk6j%|K36Wcrx-Z zDBuV5-R-~I;@8;l*yr}=_xShx{`~y_{Td7!{r>#`1^@zxvDKIVAJ?B1c2ZXvZZlkB uU;qZ}2Vg*eW0eWa_yywvNgf7(00RJ0?>)A@UfIF`0000~{{6QA+oUi>E@sC6|Npy9I|mRz%!e*p z2Rq5%zu9WWBC0CAb^-aHZc7E^YzcK`=8X^WVaOP zAZs{XYh)0l^y~V&U!Q;f1_jw4fB*tH>G!)IzutbUPS7xun>*B|^YmYFnaxh5oFnsv|ie?b{2U7L_4Fkgm jhERtq_4+^_K!5=N1|KO))1zs%00000NkvXXu0mjf8-+Z0 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/sd.png b/pole-sbv-content/plugins/polylang/flags/sd.png new file mode 100644 index 0000000000000000000000000000000000000000..eaab69eb78776f8593b41c8fdc3fd65a86119a0a GIT binary patch literal 492 zcmV`tbb&P~tyW8d(D~GxMiUp8x`gh2bB=pZ|ZjUUI!&{yK1G;4d%$ zIuA;MS%3cg{`2Rrii*m`ix&X`h=t(`1IH^)u0vdsLXv;@{sQG7;18Jf2Mqqg05F6A i0*HaZmVqPy5MTgGElxU<64PS<0000a|fPuet^$h(7pHv_{jfB<3vn*8q{15ov!pR5qo|Ns4BVf^v!57RHO zo?l?}`yWs<(7C?=0*LYNK?X*pGKOD3v;Q#s|MUOfZxH$qCjb2cBQWFtZ$@_cPkRpn z1P}|u9|n-AAQdnT|9?TXAyk7H4FCQBl>h_~&`AvcLF)bhMS(&{8jwh^2qVzve;5D) zh>=0RIIAq+{+o}$pxEl(3%2T)`P!1-fBt~{@Pp~sA7J?W`}60ovKZgl)=2;X#KQ37 z&mWM7{{H^+4`$e}UqIEMAo>Rk|KALM|1kdh!vsX^3=B^I0*D0|DL|!?{M^6*VPKPH z00z{*-?BnHps)wJ`QKllIe-8D1EGJQNCgNWMh3}bctpOPvlbWzK!=K^+cJPc;};D5 g19O2S13-WQ0NlBGh$rR(5C8xG07*qoM6N<$f_QiWUjP6A literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/sg.png b/pole-sbv-content/plugins/polylang/flags/sg.png new file mode 100644 index 0000000000000000000000000000000000000000..dd34d6121073fffcb2fcb5b9402b3e6361cded35 GIT binary patch literal 468 zcmV;_0W1EAP)dtOYis{Le*Dj#JuDs`KNc)tl9OYUmifJZ zA4uJ=-~WIA`uFP>kj*SB3$z3vfIu4l|NYA>FaP8D^M5;ba1<8<4f|GC2UPm+H&ER# zkRGsxe?Y{*01!YRC;dKnkj2`X)zkCW_8s5b+Wvn23^5y|0jv~A0#!5q{{4%A0U&@_ zfL8pya^=_l{r?#l8F+XY{;)G~as30ko(ZTFY%s&0Ka9WsFiJ`S6$1niy`;Hnv5 zfRT}r0R;fL{~@sn5I`&p|Ni}W_wFAQ`~gBVzyJ~jk&qMs5MThRyiZo6SsHx+0000< KMNUMnLSTY6dB!#X literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/sh.png b/pole-sbv-content/plugins/polylang/flags/sh.png new file mode 100644 index 0000000000000000000000000000000000000000..4b1d2a29107be96413eb86e64a75ac7a3ba5793d GIT binary patch literal 645 zcmYL{Z%9*77>Cd9?woAXO+#E-F%m^1b0Xy*Qky9{B^@hJqB6}jOKKPc70u1CS|Ug( z7>SA^1`5-}4+VvY=3G*k2%(8O!OWTIn!4?td(P>GANugV4?p-l@2B^fCONIbD;IAODX_{rV|BCn_NC>%qlWoHrzH=l|0Y^Rhgkwr%>N3 z(d)FjlCqjgyY4&yRH!;rb)|Z-v~HjxIkvar`*JLyzxBc-B?Ix`3*qGz4q3JAd`#LY+Xw^k(ph!n`d2H7`aI`Eh(LrOLs%9g zj93;8ws%s88WHkIqXqnSf?YSjh=@dF-}4L7dS0HFB@iNj8OY*&4>%Dn8t&*i)aXz6 zSX_wQ?~e=9UcwhrAtAf8XLVoTbE5+<^|-KK=D&>)yX6u!zrPCrbEr|4Yi(XyIGTQI zFEDsraAY{)DhUd*DN;Q?!uSxvkoT|31dF#>2L0DGeRcNZNehm>xm~}-9q?gtV@Qz` zv-lB19|m}3LHcg92}TUOb+%v(0bnUhB(5rQI9?ZY)h~Hw=%2Au&~WB@t;^kVE@F0Y z%=8f1ZN}R1MniiNxkJ!a;3!XFerfimE2A;1XJChGXJ=)MAVRubE8WFo1T(1Cmhdfa ztzC{Qms6asjkstFkFp5L#maeek84Y+NtW^Wf=SRytjpC1=BCX4NH^VxnQ`+YXocAv zR?lKskkKZN7D>{S3>4;4+gPYYq0_5iq@jsB^}M0yMT0|p`lM;R_dwbVrBg^4RRbsq Y$WB%-43-yHbAJTXS^1gPjGK@C0`m$%7XSbN literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/si.png b/pole-sbv-content/plugins/polylang/flags/si.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1476ff5fe8e0d3af4fc6bd11e513d95fd9cccd GIT binary patch literal 510 zcmVm9@#;PEzrU@Gx(rNA|FHo^Mn<3|00G3vEO>ZAhtlWIf1*N!=PZ8p<;&lH z{~7-L`S<7dzu$lU0~x=8==VP$LqeQ==EOq)0mSn6{g=m2e$<)X`O9Zpu5&$Np~P9Kn=gZ0kf<1I-4a zUtk1c`~{K>fBu3(0U&^Y8d(1RW7^4V^6LZG89>!QBmXe{`pfY9FT=0Dj8O6)!|#7g zK*az7#L~(T2F*|Nr~{=Pyu%qcHbB24G}l{PX7zKmY(S0M7peLS*D^UKK~y z+6(XH|9gD^r>6bY*OZ>+`2GX^{Qmv@{`~#_{QUm>{r(dW1b1xK0st`p&i@3&%J4-( z6Giy=|7vRh4-WrbUHx`??d0*<@CX3>{QLa=`~Cm?`~Ld;{u~zu0R89!i0SVi2B1U! z{r&fU#+3gbKmA|6l!@v8=U+^J{{8>`mjUR&KfnL~{sUtC1qTg400I5L26X!4i0my} zo;{uZo#CfPX{7DT1DwDAf(-fnkMZ|^ra%9I0mS$d6bftr0mQhUfkCOfiE zM%HqlKU{maemr>kAILSo!3gZ8-+$N@WcKe}3J^dnRtyZx@9+FOdynDWy$P0%j62V; zZC)?>`}hA}zy1SB2;@n0006p>>h67sJD!pI8@uK6+#GPW%ce@CEFZM znTD)%K!F4J_qpc@AQp(ZPk%rA2T{TB=kLG2fBygZ4O9eD_xsnsUl6u5yEM=SfB<5# z6|+@gR}o|u1R4pn+XF1YrQf2oylS zAbS3(sBkhcTmc9mV6grHN=r(zLW3F{=D&YK84x>x_WT70A}|U80*H};VI?9O(a}F7 e1_Utx1Q-B;QgQb4eH!Wj0000PEol7!5I{@}e;EG$`~Mq){{FvoV+so& z6Zek;JYV*``O13q$!wq?2!V|I&+z9TKmf4-@!$W9Km&lr1Ie!(IeUNcyZo#F`{&0p z?&{CqnEw9%50U)~((nf$fIu4l{AK07*qoM6N<$g2hARp#T5? literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/sn.png b/pole-sbv-content/plugins/polylang/flags/sn.png new file mode 100644 index 0000000000000000000000000000000000000000..eabb71db4e8275a5bfb7b1b8f3a8374d50da95db GIT binary patch literal 532 zcmV+v0_**WP)6{xSen|M~Ox&!2yPfTn)={d@hr-#`EU4p90fz>J~+=oo+i0%`d3@9*!wzk#ZO z2WQUEDXOGe*gO;$t?-?1~^z5 zels!xNuY7SApXOk^arFAjDSu82p~p=WCoxfknArIdOZOgs+`19}IpFa%0{xSUi1L7diFBr+f01$veIX40Tgn<}np4MoMn3N`o$god9 zrkzn;+j{#q5F}xeh49xZuI$05IKi0v3Lq917Le*!UxBJYN`Vr8|1$jj50VD5fvSOw z-(ZF~46zx($8#~-kUKOh9u19TNY0I~dG z`1hBA5y<}g_y4cI3}({*g*gAq^Z#dL_#dnH|JmpNJMaAe2etv|3x;0|00G4G>kr86 zzYquf`+xk=e@^EAQat}9xc>97{@;He<|?3qzo3u+2q2a}APrzwf*tnl_y6c6m z5?7266~G|=0}2mdsDK;{bP_-SF*1~XW%vY(NDyK`u#uw~6h{mUJPZH<1^~BhckWKq{Jk|L6Yw|Nrm*vcLXk{sL#*k)f0!)jRF?KX6FHLLC_7zyJOQ#RJf}AnqSv4E_E0 z_d>^cfB<4-C}v>z1dGUDNRj#r9OZBkNc8hC00bBS^Nnc?6(4BA00000NkvXXu0mjf DM<>&kwggPU8BW9F=$NTASLPZ!4!jq`ISo%Lc0lsQ`ey=vwb zHFg;R#UmMlx?G(Ktx?e;P14)f)-agoRX5c1nF$MSS>by776+?s<0Qc&DbngE*#3U! zDt><8rrbI4ooo9R7%?qbRHn6j$5-x>bska~4L)_u+wUF!5t_~TRQ7I1*dZqosV6&Z ze&(!eU+5;pDZy}m?xj1j1;2xW%aiwu?Ce%O0ccjP9Hw}0KM)UW&0#W2WmRe#Zb z`-E>DTl=45eE+_&OQmPvWZKOetQ_?;W7#Nc-%N8Mr1#;aUx4tvV~ sZDUT!%(7iPbG@x_{=Mc|%dIZiKaLL9k8~@T3-maHr>mdKI;Vst0JpS>D*ylh literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/st.png b/pole-sbv-content/plugins/polylang/flags/st.png new file mode 100644 index 0000000000000000000000000000000000000000..2978557b19d7d4283aa9a00ca78dcdd2580edc7a GIT binary patch literal 584 zcmV-O0=NB%P)=x{`~^7feaw| z@9%GBrr%pd7ytr@3Fu&;D>$G0;d%9&ckUlP_FsJLznOpkI<);49~%fU|NOOg<1c>p zU%YI;<@gu?0tjRS1JJ?0e*b^_hvDg;|Nnpg`SWY#%HJzjff!!CzZWj}wP?w&U%!5b zMg95nhXEjfKpOu4{R2W=zZm2}8km@V1qJfIu3a z^ZvQT`ny}__wU`%Fad@Sg!~P3A(#OSI%WR9r+OFw0*K`e1H&7RKZ`vj#ee<&!}=E_ z2M*0Ye}N7Llfc;c2aF@2)L(`#3;+SdxR!w-xR`AxVx?>``QKoX4p z{r>$=Qj`^FFF*h>?mzuiS(feBuYdplGyMPm{~rVab^il$89+1;fd$yvm=2wM1rR`t zfB*hvWMl+7=|4yZ16bGpcem@l{$rO?srZisfXY67`UDU_ED+y9gdmKw*T0{<`x@v9 zlkZkl}Tegi}1FC>)y z`~`;fe+5al?K4jS1P}|@5C%z67NEr6KmWj?{{J^f1u*QH|Ne!BH7L;kfnp0FfEXE= rk23safJY>Z`~zeELt=n*00bBSq*!cC{}>3t00000NkvXXu0mjfg_GrH literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/sy.png b/pole-sbv-content/plugins/polylang/flags/sy.png new file mode 100644 index 0000000000000000000000000000000000000000..f5ce30dcb79b443ebc1615fe4889cc26e2d762b1 GIT binary patch literal 422 zcmV;X0a^ZuP)@|4`Xj5kLT%`al?B=W5I`)SK7Qoo3V-qKd5l^# zgv$taFhBq?zJ2?apPwJU>mjm?jEr~g+yMw6Mj$IKE$!aDd%wZp7Z^YoAQH^_^XK=U zKYvwJR4!h;2oOM^VEz63kEEm|Pzoptl!JgjVAdZn_zMF-#Q*_BG6D!N0MDLEDh$KY Qwg3PC07*qoM6N<$f z|Nj36M1Mf!|33`>e*gaqWCO|HKwFtO#a&sZ0t5gt0M7pel4t!zdFAutyc%F2ByLSib7d z-@iY8{9s{WsjaVha_-{UlG^LGvEO)A^**!$6$1ni3ljqaFhGRYPy6$qf&JG{kKey{ z|N8ae_ixs}{}``bdDhkT?#VOp#VvoBm>H#|fo1~)5aY*A1~#Xrf1jTKgW~`H-wePI z{Ri~aZw6pM{r$!84-_k)u=@Ltg1)Cf2{xiF#iKZ95W~`fDE7~ z|1pDN1{?_>vH!pR*Zxoe2p~qo;+=0k{eVOy5dHe~@Bg1a48OqWACLsaJOfY!7)!uZ dz{3I%U;rfUVNTmRI(Yy9002ovPDHLkV1m_xKPvzL literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/tc.png b/pole-sbv-content/plugins/polylang/flags/tc.png new file mode 100644 index 0000000000000000000000000000000000000000..8fc1156bec3389e54d3c5bb8339901773a881e68 GIT binary patch literal 624 zcmV-$0+0QPP)Mt z2Fbqp@bUfi_XiXZ_x%As_WHU2H1hfc9TM^w3-JC0{^0Bg`~MgK0Qv%mWs{6kqN+Cc z+b3Uc-enXLWmi^s_2~6APR{Qy8GilxQ)j#p({t5y7`^LQ4&lw9Z0Ra5^`SSP!?%<&3?fU!$2L%N9{QCa@0Qv%mW$D2m zA^~iFet$Uihac>@UpF6ozx?O#ufL4HfBpRUndtzp5U;>@#TUPR{|1KG4}bt-0)`aO z`@jDF|MM3p^6S^{zdwKf{q+mXVfa4fgq7?27ZxvH%|34Sm*EEk!#{ukVgYLS^A{)$ z3^fq>3urc&4I=;kz4MwgW4X`2zkh%J`Om=vauPrQ0X6*k{pY`=2p7%A_P)?P zUwuVdAkKe=-@h3}_C6p$AOxEwQo+UIeHT5%mg3lYGL;@HP(LjqG0$?6F}(Ht8A z0K*^*BsuTDFa|;zm9Mc;PRcq|KMMBO%8|{GkrU*a2x&r-3HS3`xnqW1|R~39RolBu`vAj19S<{HjoWK z4L}tj8-Qm20eTwfuYbROLyY(bwgDi3SQvf*HG+%>>H*pSauQI_zkmNAP67ugNCPlf z{{97O00g6G8FFbZ~XHln?_bqJeH^V)*lb;YTJ&0)m(r7ytqc06HRil3NF`RsaA107*qo IM6N<$g5!7R+W-In literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/tf.png b/pole-sbv-content/plugins/polylang/flags/tf.png new file mode 100644 index 0000000000000000000000000000000000000000..80529a4361941e01d1def5d581bf2847cf99fef6 GIT binary patch literal 527 zcmV+q0`UEbP)KfiwinSYl|od6I(APxT+{=azr6>87_{|pZw{QvzM zh#vfW|M&NwU%!FG-`~IfN=xzq?EwhD!Wi2C0Dv&)|Bp?Zs+hPi0R-LQn75%cY-O8s zAPsw;Q!9X27=Hcx_y6DDzyCn0!4P6RP{Xg^fBpb%_yyDhbQs7f8-Qku33L4cS@IvK z8OZ(n2kOgTzyGb@ek0IRW9ouaN6$P0x*s5bfH4)06qlIj4>;1{Yyp4(0|4dQTo>gF RMrQy3002ovPDHLkV1fdR=hFZH literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/tg.png b/pole-sbv-content/plugins/polylang/flags/tg.png new file mode 100644 index 0000000000000000000000000000000000000000..3aa00ad4dface0a9c23744ab451cec0443f187bf GIT binary patch literal 562 zcmV-20?qx2P)@|6mN}b_RwI3=Dr@=ogG+VE_mq7La^(HIVqv%*^=nCj$%1|9}7Uoj(8m`RC6+ zAo~61@1NiQe*Xrt|Nh=Ea}z)Sfi-Y&{FjhmFg0aZxaj}$=L~=U)(L)O`TP6-zu*7= z1Ib@N^zYwqCU)6YF9v`BVgi}{>lcH)J%gU!|J)p)>i@rg^Kt&>WCWsLoQyxgk29dnvBpN5vQb0*LYVQ3gi&tp7jnGyMMp z@*mKbe}4Uk_!#8f-w;8De}5R+mEP<>2M|CkH{LKvi2wQh{WmZi827ytqc0C8?ZF&p#S!~g&Q07*qoM6N<$g49|K A6951J literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/th.png b/pole-sbv-content/plugins/polylang/flags/th.png new file mode 100644 index 0000000000000000000000000000000000000000..dd8ba91719ba641502bc7ffda16c25dc71b2066c GIT binary patch literal 452 zcmV;#0XzPQP)@|4`Xj5kLTn#2^O%5QJf({+!S7KyMr1NSdb0?wsyYS6cNVdko7wub89?$EL;)x)00Ic8;m6; z*ldXL$Yz5{poPB}7`^}m5DPc2nu@9r4=+1782$pC1a=$HjDKJ@i17#P6G=(#Q>V-T z0*LYF&!5c9%>VxV!xcCX0F(uW(%ZLh0Ro8SA3Hl!NeKhQjeq|#{05SL7=Ql;MhF4{ ujRQ&nZP~jQAb=RZqDCa1IEDa#00RK>mSUL#9?hx%0000kbL(IvAFhx&-Rtc>NTt#gR3Rh7S)T&KZ zL{WgkRqwqm%pUYD4~N6y9Fe>iu-vI7Bw+zC zI_>BESb$X`wJ8GX8~}zX(LWTzumk{Wyz?ke?uO`%HE_t8pkB`4#-caZNYd~FaLhG8 zi!BYn<@|d3^biUr9rh6-jwvL7FNR8YF3QD)W(-Tv?Rtq%=t$B^D8lhbYV*;+8lMkP&?Z3=HVOwq|pJU6}*aTnv; zwvMzh$A&Yz@eX9@I`sm1RwGi7rcIgnvw`IHP<;3(pQ6q994eF96lLBboWn6P^_viq z%=B!Ah_{-X$8U4~{`l%a;MuW@s{UvA_jS?`sO4L3hJad%3qdZK!bHMrcTwb4ag>&E z@X8TlxAw3$=s;+R5=)qENUDkCv3^C$fWiN)=++{bSqUvQ&rhu?&eQqW{jUH3002ov JPDHLkV1l|tFZ2Ka literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/tj.png b/pole-sbv-content/plugins/polylang/flags/tj.png new file mode 100644 index 0000000000000000000000000000000000000000..617bf6455f69849b7f66f43ff36093bbcb07fc3d GIT binary patch literal 496 zcmV(5Af|u+{y|g&!S9Ft%(8imf-XR*|Ns8{XO&`< ztN44b9;zJZ^?&~W0*LYB$B#TbJpUo){|D*(`>^x>w|gKB?9z<#wQ%E^n3(S0zYh>V zEO6uD3`W^f29Wmu3`mZF`w$?27#UO<(rVJ~y}I}N&+p%VfB*XP3y6U1Uw^?QNbuL6 zzrX+d{i`Cbal7Zfib@b53s27mx! mU=U|u;Adc9XCM*)1Q-C-v^a{iiydVE0000+lNu{Qmp=|FW6D0*D1<1Ovm9m%kYQ|7p*Yo3ikU z7~kiESLFZv{{Q#iA0zqwf4<*Xu-*CD8$MYncA&8U0mQ`ckKy0n|9}7f|MB&2MbDkQ z1j{KKBL!IA2(Z7F;(zkuBe#mo9TT;SzkoLU{s(jwKmai@{QdX$=kGt?etVi7(p9*e z(|o73K&5wiaQBkXEB9so{`tH8jIplb^d$ZPi5h|uLD4*o5RnOS|{Qd{@Cr~j!0D)}y0}8T#$FHit{lE#dc*g~k_utsL zxj&Wpto`+k?f2h5mv;mM4gK>M6!-uE1hnA~P_?8O+wWh(`!4wX{Cn2j=z=is`~Uxb zzx=@K_DcEUJ7IZAUZAu8{sn~+Kmai^Fsw$4O9qB73=GeJhA}V*Ffg!yW&gnt6F`6g Y0QOrYft$MNbN~PV07*qoM6N<$f;FEW z@b~ZkKS1)&|37~i{`~p>`}cn&^2?@800G1T)Nta$zvt>t<757@uK4@^{4bCmpb7~3 z1tfp{|Md&VW|Wov$G`v(Kp+kO{{26+>+jbuf7A2+upj>Wf7$Q%RxoV1$N0e}Fas1Q1BW)@@rKJa|xATBWA`D>(WW1JFHv zzy7cP0k+{MTm!^O009K@!>LoJmn~avX#S_9;5YZ-KmTX``u`YaHjD&?*dJiPF#rS* zNW;&cKP?=87yABYZ~OCq-%n(9P{tpi22h9t6$1niNQ1e-pD1xDrvBdy@BT2zfI@>2 zY$OAO1fsuxAqeOsfB<52Wnfst00RHO2+qJn5C9Nh04p0wT74^6IRF3v07*qoM6N<$ Ef~oTCkN^Mx literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/tm.png b/pole-sbv-content/plugins/polylang/flags/tm.png new file mode 100644 index 0000000000000000000000000000000000000000..828020ecd0f6fc73348373c9e7a235fdced09de7 GIT binary patch literal 593 zcmV-X0VKiqu&g@GZ_kb&V31Gky(*8`UselaloV1SZ886W^4001!n&i@1e004Y* zk0R&!|NaLC5DIk$@CyeC@AU9ebDYiJ)zswL{Qdm<{`>p<{rmm%TMiuO{1voVt6d+$)WVk%^O){nwx0zkdJv^%rQ#Z=eQ%0Ac}Z`19}Y zkI%oqe*ekA`2WvehFzDBOo*xZ{rB(cQ`_&qdGhP`Z=jyvAOx}jAb?nae){+CFDvWc zZ(siLa{c@D=g;LQw^HX+sY@u`d-M3!$G1SGAWQ!Ifj9{ufLMTG0<_`#=U?|Ye)D|< z8pH7G?=PVA*@stt1I-4xpA0e#40jk9 f${7d%fB*vk3(!F(w2U8u00000NkvXXu0mjf+94t7 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/tn.png b/pole-sbv-content/plugins/polylang/flags/tn.png new file mode 100644 index 0000000000000000000000000000000000000000..183cdd3dc98c6957bde83f375a431e543a3ce9e4 GIT binary patch literal 495 zcmV@|4`Xj5kLT%gT|L_r@28Q3iff@h;hzaCwplYy<4FCT9KXmB7 zhQ|Nt)Bg(#gN*m^{Qvt8$Of<_K(zn?!~}BDpT8hi0uj&>pxItt|NHv>A2{&e(C|Mm zFGw7s;m;qS=>P!)((wQ9AF!W(0sZ}7M&|#9_5TYB{zpfHZ20g2t^wjCfB*tH2_nSs z8?4R7=Kq6S{f9wP5^T(0hI#XVIvK%6GC)WrB}fdh6SO{nUiXv3iAlW}aH!uJM5J&?vILH{_iZHeP0c!XQ3PuJ7 zfB*t%VEX-sK~fTI%wL8-Af1e0BN-qh5dHlNK|sX-0mS$fH6j^sMDRaYQUC}r0RA0L U-~OCsp8x;=07*qoM6N<$f)6&Rz5oCK literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/tr.png b/pole-sbv-content/plugins/polylang/flags/tr.png new file mode 100644 index 0000000000000000000000000000000000000000..be32f77e9910c0896c1ee8e7ed4f0edf815a517e GIT binary patch literal 492 zcmV@|4`Xj5kLT%yy% zCxE~j7#aURc>+`lQtjr(@bBOM9XtMi`UFz<>-YcPzyAOF1!ObI$^vZw2q2J#|6qeb zs-vSBOie-Rl$HN?bb!_U0_g#3VEFwTr~x2=m_Y6Zss`GqsL0^t^nd#F|4B*zH*EO- z_3QuT%m4H6g6)A?0#pkSKujPf{rCwIb#eU5`( z{s2t}2q2J#|9}60{Pg58FvR|AYlEDjruP5RC6KEgJ^H_IA4CJhNdN)F0>q49OBog~ z{?Etvzo-c07$As@{Qu?4|3!FoS~(Xu$ujuK&Ki|5;f$7pYF;Nfxh(xqFs zZUMDjzjMbfEbRY>5C0Dx`v3aP|JSeozj_5kj66I)?%V+g05Jg0{{w&k0RJ5w0P^!X zSy|WJ-R9=z(aMV97z{4myy=pj4$^bx3|zy{hYtY)h`Ao9!QA5iyLbPuTmkB_PfP?Vee~$j z!-o&gUAyj)n+wu&>J&%=KmU)%j{yP*q=CWA45Z=rFNTYkfO?!$Q_o+&{s0WlT)E;? zRQUhj|NkdWF!J+%fBF<4fS7B68jOwqzkLe|6QI@S&;S4b-#s()-1Y1C!Qjl5tA6F> zpisYc>&x@!00G2Y!@$5~Xb92(47=Z8{{bD%z~Ggi4>bPny?b}>+&OjWQc!g@0~6Et z-Maw-h`Ac5K~JB7o9jOp7XvpB0}lu>-nqlT$mpA&|LpDCZ{NOs`t<42?c44-IbZwx z0Rjj;B7x{N1H(%OhUW|nPgz+XA3Vr_1a9x%4G>@ep<^{rq?UTJ00000NkvXXu0mjf Doa;3l literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/tv.png b/pole-sbv-content/plugins/polylang/flags/tv.png new file mode 100644 index 0000000000000000000000000000000000000000..28274c5fb40e5d3bacd7c05d9a1b8017eeaffa6c GIT binary patch literal 536 zcmV+z0_XjSP)mzpv3Mmw05Sgm{~xFtLc$sUu>nR##!sI<0R#{WMEdpj-yJ7j ze)|0V&%b{_!~X#7`1>EofS_N0|E)GoUH&SsFy}2m05O4F@}ffYb$qvjbfSUipMQUU zgY^9U_4m&&5D8KZ)HC5u^uad<48Q&W1P~L@hOIAb7eDp_T4W)^*Xg48{r4ZBJ-_}k z{QCPJq~Q-pPnz693xQJ%zkUG(5aZwHtqd&u|9`*u&+TyOvq{_Ghd=&6oB?#w{~Yv(xYPgr|NRH*haKioowt*& z{dC`3v>70P7=Ql!$;`|Q@(GT>fdHT^FqGcDeG3pkjNS|k>E&sEfzAeo{ckY&=g(gd z`CCrwmxA8!XLtTy-uM6CzrVnM%iVPzAb=R%ks=j>et^j`MFs;Wh8c4i)_^1XKP)u> a1Q-A&>r+tW$-Nl>0000<~s!0-E7R}a|Ns2?4|9|}gs%Dgx1=;`*KrBFO{{8#+``2Fv2B6@-@8AFY{`(K80jdYk13&NH4;SYnOGgJvc0I@K9VW@Vk1}Xmk4~YK$|NH0P z-@pI<0D+Rop8&DnA}oIvEc_iD{O9-Y-=|4+U?1uFgf@9*z_zyJRJ z%fS3QR^zuR^Y0tyerNXndi(YlP_?gzto2+5fB<3vIsj-gQ0X6_*?&Q*d^>boB3^zoi8Kq^tbl{qlR!{9jwQ|Nij< z=(=A?F~8j-MSe1{Hl8Yc@zaXo%Ljk}VgUvb(2HJbe?0kqy?_3vsPXrUmq2rWE6M!I zE@4*I;Mw}vw&7&iFGdC>zW)rr{s9CK3xfnhrsi*1wqMhx{@J=6sPgxpU%z6)f4fBr zzxpd#a3tyYE8}0lKnA+|-+zWbe*glA<)R0}-=}{Pnt#7~1q_Mb;=;f3i~oshNgsS> zIr~z~(_bRL|NZ|1LO_>;A_pLVSoBpHQd9nLa7ao@{lMMx#__lBLe9Cjx?EiU z71{s)`Oon8FXP|;z>s7BItd_v7-5mj(Adb}701wVj$!S*>kNN{fN~5FV)t0eYh-DxnQ(+0I@JIfmA>F`X8wD?>`2h#NWRRzyE`zA&Pzh5tt#% z!^rUCA3y+sZ1@LM1hf`pHc0ia|NsB|1uKPX0CRu;1-SztfLMSo`wOxir1}rsY$VlC z667idh7Sw?0mQ-}a!Q0#;n&}vAb0=!_Zy@WNd5!6=O2ju7s{65Vq=gx0uVrqe;+b1 z$mIY3|KLBvF9x7j{{!v#g_UGtQhI;<6hHv607H@yECdWlR7EJN!LomVp$!l~APvkQ z4p0cL2#YobhQA>6hXEjfKpL3-19eKmL_s!=;22W8vpXP)6RGKQPvx1q)UK1Q6rb{|u}Q zRsa7#{m<~1f#L7}|GzNK{&HxZVEKJ4>jAefr9{u_M=MTegAo-i2ynN}MJ5kZm z42KRel$J95{>|{~*Z<$Y8RdVo9Ap3pAeIsa2H!t_KmPs=bot-kKnMR0GBy2s>sC=w zQFmwO;@`jj{`v(%zkl=p`BTQg01!Yd{Xp;j{qx|@pI^U!0X_En_iwRd$6{h)tX8f( zaOhC?&!0e%U%!3phy1#1%V=eK#YHXK~n$!{#(ib5I~Gyfqp{qW|y?pud`Sa)3|NY&vWd%S0u>b>P!2!lUe;6EF*#G_c zFVXVt@6Q{uX@40W{p0iY2Aa+A^Cu7i8KT+YH}2j52q4BskM2rJ$^k9;2Xxc_|Np=M z&VaLlA*IO5FlECMfB<5VUNC{tBZO(|zW*;@GJN;|bTJ71`0*d;`d`2P!x=ymOA`2> z+y@9C##^^8%gd{MW@Y91_2d742B2~OQNf=-zkmD?Vqkdk_wPTUNeuu2#KPTG{_;O4 v7C%8E5*DLB7#Kb?Fnj}}-(W6879hX?8lYRg`Y`<~00000NkvXXu0mjfD6Jtx literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/uy.png b/pole-sbv-content/plugins/polylang/flags/uy.png new file mode 100644 index 0000000000000000000000000000000000000000..31d948a067fe02d067a8c2e69f28cca446bc7c57 GIT binary patch literal 532 zcmV+v0_**WP)_vmzq~N}&z08z z0*LYY{pZr+B0$d}2MCnI@DC;m3N;oM#uMkR0R#{ugY)L9Y<*xj0QCR^`!^)W!R$Za z5CobHbl5+T3;%B|S`QFFjQ1Zt|MTw;G#Vi+hCg5i(ELAtfD|ak8UBG;ObiSF0R{lf Wla#5zB1?M!0000JMe1P}`Y1HZufM;3|NZsr4^XwNEI-g5fB<4iWtjhPj`qjL zFGT_P{{Q>;-(R370Ro7T!5$Ws$Po%5A+Zb!3j_cNFaSC{Z(fWD@s$7o002ovPDHLk FV1jsy^u+)G literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/va.png b/pole-sbv-content/plugins/polylang/flags/va.png new file mode 100644 index 0000000000000000000000000000000000000000..b31eaf225d6fd770e0557c2baf8747c91ce88983 GIT binary patch literal 553 zcmV+^0@nSBP)|05Jg_ z#sD@3Z1&&(|Ni{{_Zx)%v%Gr!NnLzkb;C z@#QWhJ{xI9$+*)bNX$S?E90e{K^EMkYok78VXhR-hjM0*K`g z$j^Tmm_>oEVgxdn{xJOg$-v0L$jHRN$OsH@P9Y&+^ne@=1^@xXcy~X;zaPM$WdOPj ri2i^{AeYDB@IM9-1r;P))4B5XW#s0WPsWLbObPT z00IbN14#96puqp%TKvBf)PA*{`~CO-uM~~n%6z|m{re4Z55!3T0R+GV5`UO(`=kK4te?c|?1P~}#f$jmC10=!0@{8gBFK@Zu z-~WJALqveC|MTzfA7GIDVE_mqkOrW8BqZ2?K4D^#WMJTBVE7%b47BbKBg1c?EHl#| zW&XdQF#ikE01!Zo3=CVrargu%_x5NZPzVyc@Ms2-@*Gr#1lu5DU{kh6%sopXB}uDxAo`@Bt_a*7F+) z{Q{%kjEu5C8vp``Wse8Lf5q7h438n|z~nEOsZga5l7ZnjPy;{!05Jg0{{a91!FF~d z;^O)I`~dv>{`>s@o}L{E2?GEB|Mm6!N=n`P`~Ld+{`>p?A0G$7!M*~B3FM_eAU;q6 zNCH*w+4I@c^Ny?Q?QPpWZQiU1R1HBuWkA0H1P}`l|NYDG=gP=Ihyj(0CItil0R{kn^jdV2 S*Eqib0000i_@%8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10qsddK~yM_b<)pH6HypI@$=n#XF4s=LJ&)!AwUTz8eA9?U6Q!r z9o*);}Rd?u&uGIVJODg*_)J3$qUfmLHM zQ-c&e@z#JOK)X92LU3;2Xo%3~`VmBAw{n}u=`hnjp^5&cv^JeS-0000< KMNUMnLSTZ3>k6F! literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/vg.png b/pole-sbv-content/plugins/polylang/flags/vg.png new file mode 100644 index 0000000000000000000000000000000000000000..415690798657a5921fd007b8ae85a5e5d414e7fa GIT binary patch literal 630 zcmX|3_-&c2+@O*Bba;fM%rBo$$qwJnuekcf#0k*RG7MM`2+5Y7dK4k?R% z*@ue~6f;u_A~T0evP6qS=VxXnGS_mt>CSmS&gmG`kLSL)e_Vf_=c&!fKB7`4C;*C(7s2O*P zOs1$U0urzb3<=a`d9ABG4Q$eK<6~5Cg~V%B8`UqrfRSN8f&?QTVICs^VT=&p*?Eut zt4Ur&-BL_ON(Z|Xfgo93lf|gRkT$Mz-7^OQoD^XMF@}g>R?uoU0094KbXv)l?aF0E zh@GXQVr04m@05R(Rjxq*p|CCIRfv;QJmH1kf!hsqX*sha?_l;f%e5i5I~4YG#H4;6sPG2&U~bv( zNr`eMXGIX9?wP^zPQP(6+&$05Jg0{{;N}{t6CR|M}we`P%>f+X)5&j)Fc04NUj< zI`HZ2Woe@k6UF22`V|Qe2MTi(6bb?WF#yj00*Hv<{QLmnFd+P z9@fS%;@9^E|H1b5`Vk8^2@Yw;#}(}C_yUN9iGkt%y>Cxm>T2lO13mifZBc!n`jhHL z!MK>$6Z_d%|GfHMapIVnqod%T-`{|q1_&S~IR%b4Z+;63vi@iI?>jBz=eJjkjQ{>J z{QUQa@gMhBW_GSe5B=V~`@+h~@c%z3lmG&V@$K8U{QUg?|NjRX|KX9x@@rf{MxIY^ z?fG>3gQ&3ruaE-Yw>fW_PfAH~0~Or8dmA8tSRg?T(ZDLQOiOw%6RWM9%$i>kkAMHu z-oH0qLBYb*loP0ck&zJ?LI42-(g0BnBsn<*tTlsx%zxbLe*S!R<%*E3>|Z7(9Y#iG zpdch>0Ro8e`Sa&!arp;m4%k`<1H=Xjf<=G;Aix0Vb{`Xo7A9K&0000@|4`Xj5kLT%B_22*h{r-RE_y1qN|Ns8=|JN^|IHRmA&<212VgZ}|A4N4# z+WpUe-rxU^{Q|504bi~x`!`SnKmf4-F(Xhl(8fQ1fG+vp^85d{-~aW0|NsB{f9tRR zg1`PJA~XO^2M8drlm7gLxRT-bpa1p0|1bLmQVm3Azy5pw{{IQ;B%q-{(*XjA3FM@| zf53hMJK)W)|CK-uK=ku}!>|93eu7kk5yVLV0R(o^Z;+)RSAk6exg_KF|98LtFaPy_ z#c#OrKtum9FaQJ)NCPuC$bbfbRI>n`@$3IHusZAC|2cmD|MKhqAD{+Mr~sV<5I`Ue zOuzpyNJ@f@0s0=KlTj9AB*>SXe;D}wK*A7+fQkVEi190GMB<5K2mlB$03I1qT8uIj Q5C8xG07*qoM6N<$f}XY6qW}N^ literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/vu.png b/pole-sbv-content/plugins/polylang/flags/vu.png new file mode 100644 index 0000000000000000000000000000000000000000..b3397bc63d718b344e604266259134e653925c9d GIT binary patch literal 604 zcmV-i0;BzjP)7(YpZ_rO%ce~L0mQ<@*ghnz= zZvXM=_iyVze?clB=ogUu_5ar|Ae&KE_8$WSKmaiTHT?Vg|MaE5OE>+VAUAUr;?j4FCZIvLVX%uQ>mocOU*NTK^}%njy93_oP3+fBpUa=kKpye|`ZO zzyE?r`Mc+5Xcyo_v6>E-#|Nl{r(LkAS94bRQz)6 z1Oq?-fi&zp{`>yDUnV+0)eJF{zWfaN_0t9DjNiZhfxY|}ME?2z=O_CghC>Vh0R+AWw znBTkss=gWN$ME*Y`(NAt{QjkN;J}02MB(&;Kdc-80mKB<@b~YZKMV}g5wYSaSzrGC z<#lj=zkTD+H$ND}dANT6R9Lq3!_gzJFJEF25d}I4Ab>y`n3$OVE?Nk3?w(!me*OA# z|pNg&$Q z5()=&no#y6=Krof_F9Achf)A{nF9v;`|P8;$Q9J(&$2e@kA>cu?oN0tdr?p!r`I00M}SAs-l}3=F@( m=nn?tAB_7COfoP41Q-C;+8YpPdg;0V0000`!~0W%8&aG{{H+4 zRPp!M??1nPG5q=k)Wabw3seITKp+kO{xLwc{r>&$?_UrCGJgGL;^k4Qujka#`tk7L zjnovNAkb9+0R(gvNCCu>f4~1QF);xde}DY=^Xr#I=|`5hhp|NZyp>({@(egUPqbabS$v+tIbNu;L>xVSv%=>ggR z5I`*V_U`A@(fj`3!N1?XfHr^}17rYw{OcFcC69Z0BvMmfELgy8V88%&5l9HrLN(5b9xs8l&q^Gm-@&XkD1Q1BW|346ee?wJ+H2_`p`^l3V z+1Wtu|3AMO{`_T8Q2{Cj2q2bUARGR$NlJo(=nv2bFrDDw2U!bb{QV0-KNuJQ0*G-b s1H(6@xcrC2{sj~H2V-zBFaQJ?0G2^Lae{Q+uK)l507*qoM6N<$f;6K8u>b%7 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/ws.png b/pole-sbv-content/plugins/polylang/flags/ws.png new file mode 100644 index 0000000000000000000000000000000000000000..c16950802ea95b40a4e024be6cce870b1991f40e GIT binary patch literal 476 zcmV<20VDp2P)>E69JA<-5ee*C|6>(%ey48MQ<`3*E1sOaY}WDP*a00a=wNxxYB{9yb2 zOU?HFZD2h;3gJl2w`NO~f5I`Ue%-|qnfGfh(_6MlpFT>xzKtBKk z5J&^l?>`KZl3-*0GW-GQWCR<@03m_s?_UT4Dh3E3#;>Rm$$$~H$WlN65MTgr(_Ikn S3@&c~00004%P)h=Z!r1m*T3JtfNUmdS)dI70mLHE z+xy?%p5eHez0mS(A>sL-rPOy{yGk_s3 zz{tq>=+Ps90Al&~?;k`pNCN|I|RMxbJV00L=%3E(v!XamT}{{RArWx|9$7Z{pWi2U{IKN}lRCnF;x&=P&!(V3Rv&T;|GP6K500a;d#1A^U zy8js%fB*jT=jRXRU*A|5K#2L*r(ZvQ{P_O!=da%umKG4l0|XG%NkAKznV4BvSbj4y zawHV~fBoj~uiyXJSQwZYIoR0QIXM3O{tc7`Dgy{0# literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/za.png b/pole-sbv-content/plugins/polylang/flags/za.png new file mode 100644 index 0000000000000000000000000000000000000000..57c58e2119f402072640ca758657798b621f3fb1 GIT binary patch literal 642 zcmV-|0)737P)Cfuwe;F7c=r;qyPX>nX3=Cfx7(O#Fd}LsF&%p4OfdL?Z7#j~W z{9>KL@b8bfkaUokt?1q(EJu$q{Qdp^&mV?AfBydlG2rBvO`8A$h{fmzgIW0J+B07s zK74uV#pQB`MAdI!SdN|k|KJ`--LK#OfB*Xb>lcvCC@cGqfdL=@05Jg0{{a910Lj6A zAt&mC*9zzO1pWQ@b1`Tn1`iV6=KuBe|Nj2}{{8>`{{Q~|0SOB6tE&PCq@k>=Oh@B| zgDu0v2b@p;u)h2C^Y4EK4rY$O|Ni{`3qc?^$?%A8m^2X}fLMSU{`~p7aqHLD@0rW| zzIWc|c>Ry-$DePXKfn0(_xG>AzksTL{re5n#{Tyw!wUw000L?F`}dEV6O*(3zu6Di z9{gne@#pKG|NpqSh1vf81DXBz&mW+Me}8zmL>PD&00Ic4!QY)xLzl7RCikV!EWdtz zoorLj&BXoYF88-DfB*gk`{Eza7yo#;S!C4G00M|*elvr*8B6X-zBgb0FtGkEHc8mM zoOScs_b*;Q0~!ksq<=swfJjA!^Ww!_00G4E&x@hvA~zQkvxU59n3VsHd7Nj?ec|R~ zkmuqAx#JHo0{#K*`TG}00$uYDAb=PdGJ(Ek5Vx?d6PS=4{E7kSFNS|$^b5xL14ayB ck_{lh0N_F{UmK66LjV8(07*qoM6N<$f>aVd=Kufz literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/flags/zm.png b/pole-sbv-content/plugins/polylang/flags/zm.png new file mode 100644 index 0000000000000000000000000000000000000000..c25b07beef894408ae11c3be294d6e0eeb28c0bb GIT binary patch literal 500 zcmVLz(k0+Rp#|Nr~{@4x^5fB>iy$Oe)U zA3pkg`SAPSuU~)vaR2(F*|!oPfLI`Azxw(Lr25~#KmY#x{rl(7|GyyW-|wp|{||Bf z=)Cuc_0O*fYWnY`7ytr@1!(pEfB(To0uBE22c#NA{{8#+_rKq)zyAFG`zKdY6euFW z2yzlY0I`6SGJqWbGV%`;{r&ytA5hcp-u`P`AAdOg`t|1D?}h2=^+y>10tjRS&?yMj zfBygt2HEouXg1LCzyJLD1w#LR1MLR}1V8|>0KE@nffPa916Bvu_V4#Epof105yNkw zzknJ50tl=DS->P)FK#X6%e&u3i|I74$@9uP0*YE!se={)r{r~?r68Z&3 zzZn^2KYiK`5I`&p3=IF7JHD>uaSofgtUAf*-w!6nU;qF7`S<(x|35&+uYZ4j|Njjl zS;T)|pU40ZKrEjoRWbQ1@P?oGFzcPCjLiCzcU8ZC{rmejNW<@6e}U*1kPT$~=Kk_~ z83O}A05QHjx|ikdd7h}_|NsB_wl9j+&d<}^`}fbEzkmP!1q4tEL@O#P9zA*#Ab?m{ zv`qe9Isj6Ah@Z*IdsTw}WYHgB8-D!*lmGvK*?)d>i2vThzyJ_HEdLn(@uk-N0|t-& z`$Yv&?#y3UfPVP*`ya#a|BS!>G5-DsFR)1c1&eHCHYDzO7ytqc0P0;>l>h9)WB>pF M07*qoM6N<$g71PE`~Uy| literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/frontend/choose-lang-content.php b/pole-sbv-content/plugins/polylang/frontend/choose-lang-content.php new file mode 100644 index 00000000..7a468e62 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/frontend/choose-lang-content.php @@ -0,0 +1,141 @@ +options['media_support'] ) ) { + return $this->get_preferred_language(); + } + + if ( $var = get_query_var( 'lang' ) ) { + $lang = explode( ',',$var ); + $lang = $this->model->get_language( reset( $lang ) ); // choose the first queried language + } + + elseif ( ( is_single() || is_page() || ( is_attachment() && $this->options['media_support'] ) ) && ( ( $var = get_queried_object_id() ) || ( $var = get_query_var( 'p' ) ) || ( $var = get_query_var( 'page_id' ) ) || ( $var = get_query_var( 'attachment_id' ) ) ) ) { + $lang = $this->model->post->get_language( $var ); + } + + else { + foreach ( $this->model->get_translated_taxonomies() as $taxonomy ) { + if ( $var = get_query_var( get_taxonomy( $taxonomy )->query_var ) ) { + $lang = $this->model->term->get_language( $var, $taxonomy ); + } + } + } + + /** + * Filter the language before it is set from the content + * + * @since 0.9 + * + * @param bool|object $lang language object or false if none was found + */ + return apply_filters( 'pll_get_current_language', isset( $lang ) ? $lang : false ); + } + + /** + * sets the language for home page + * add the lang query var when querying archives with no language code + * + * @since 1.2 + * + * @param object $query instance of WP_Query + */ + public function parse_main_query( $query ) { + if ( $query !== $GLOBALS['wp_the_query'] ) { + return; + } + + $qv = $query->query_vars; + + // homepage is requested, let's set the language + // take care to avoid posts page for which is_home = 1 + if ( empty( $query->query ) && ( is_home() || is_page() ) ) { + $this->home_language(); + $this->home_requested(); + } + + parent::parse_main_query( $query ); + + $is_archive = ( count( $query->query ) == 1 && ! empty( $qv['paged'] ) ) || + $query->is_date || + $query->is_author || + ( ! empty( $qv['post_type'] ) && $query->is_post_type_archive && $this->model->is_translated_post_type( $qv['post_type'] ) ); + + // sets the language in case we hide the default language + // use $query->query['s'] as is_search is not set when search is empty + // http://wordpress.org/support/topic/search-for-empty-string-in-default-language + if ( $this->options['hide_default'] && ! isset( $qv['lang'] ) && ( $is_archive || isset( $query->query['s'] ) || ( count( $query->query ) == 1 && ! empty( $qv['feed'] ) ) ) ) { + $this->set_language( $this->model->get_language( $this->options['default_lang'] ) ); + $this->set_curlang_in_query( $query ); + } + } + + /** + * sets the language from content + * + * @since 1.2 + */ + public function wp() { + // nothing to do if the language has already been set ( although normally the filter has been removed ) + if ( ! $this->curlang && $curlang = $this->get_language_from_content() ) { + parent::set_language( $curlang ); + } + } + + /** + * if no language found by get_language_from_content, return the preferred one + * + * @since 0.9 + * + * @param object|bool $lang Language found in get_language_from_content + * @return object Language + */ + public function pll_get_current_language( $lang ) { + return ! $lang ? $this->get_preferred_language() : $lang; + } +} diff --git a/pole-sbv-content/plugins/polylang/frontend/choose-lang-domain.php b/pole-sbv-content/plugins/polylang/frontend/choose-lang-domain.php new file mode 100644 index 00000000..74eabd0b --- /dev/null +++ b/pole-sbv-content/plugins/polylang/frontend/choose-lang-domain.php @@ -0,0 +1,36 @@ +model->get_language( $this->links_model->get_language_from_url() ); + } + + /** + * Adds query vars to query for home pages in all languages + * + * @since 1.5 + */ + public function home_requested() { + $this->set_curlang_in_query( $GLOBALS['wp_query'] ); + /** This action is documented in include/choose-lang.php */ + do_action( 'pll_home_requested' ); + } +} diff --git a/pole-sbv-content/plugins/polylang/frontend/choose-lang-url.php b/pole-sbv-content/plugins/polylang/frontend/choose-lang-url.php new file mode 100644 index 00000000..158b2e1f --- /dev/null +++ b/pole-sbv-content/plugins/polylang/frontend/choose-lang-url.php @@ -0,0 +1,102 @@ +set_language_from_url(); + } + + add_action( 'request', array( $this, 'request' ) ); + } + + /** + * finds the language according to information found in the url + * + * @since 1.2 + */ + public function set_language_from_url() { + $host = str_replace( 'www.', '', parse_url( $this->links_model->home, PHP_URL_HOST ) ); + $home_path = parse_url( $this->links_model->home, PHP_URL_PATH ); + + $requested_host = str_replace( 'www.', '', $_SERVER['HTTP_HOST'] ); + $requested_uri = rtrim( str_replace( $this->index, '', $_SERVER['REQUEST_URI'] ), '/' ); // some PHP setups turn requests for / into /index.php in REQUEST_URI + + // home is resquested + if ( $requested_host == $host && $requested_uri == $home_path && empty( $_SERVER['QUERY_STRING'] ) ) { + $this->home_language(); + add_action( 'setup_theme', array( $this, 'home_requested' ) ); + } + + // take care to post & page preview http://wordpress.org/support/topic/static-frontpage-url-parameter-url-language-information + elseif ( isset( $_GET['preview'] ) && ( ( isset( $_GET['p'] ) && $id = (int) $_GET['p'] ) || ( isset( $_GET['page_id'] ) && $id = (int) $_GET['page_id'] ) ) ) { + $curlang = ( $lg = $this->model->post->get_language( $id ) ) ? $lg : $this->model->get_language( $this->options['default_lang'] ); + } + + // take care to ( unattached ) attachments + elseif ( isset( $_GET['attachment_id'] ) && $id = (int) $_GET['attachment_id'] ) { + $curlang = ( $lg = $this->model->post->get_language( $id ) ) ? $lg : $this->get_preferred_language(); + } + + elseif ( $slug = $this->links_model->get_language_from_url() ) { + $curlang = $this->model->get_language( $slug ); + } + + elseif ( $this->options['hide_default'] ) { + $curlang = $this->model->get_language( $this->options['default_lang'] ); + } + + // if no language found, check_language_code_in_url will attempt to find one and redirect to the correct url + // otherwise 404 will be fired in the preferred language + $this->set_language( empty( $curlang ) ? $this->get_preferred_language() : $curlang ); + } + + + /** + * adds the current language in query vars + * useful for subdomains and multiple domains + * + * @since 1.8 + * + * @param array $qv main request query vars + * @return array modified query vars + */ + public function request( $qv ) { + // FIXME take care not to break untranslated content + // FIXME media ? + + // untranslated post types + if ( isset( $qv['post_type'] ) && ! $this->model->is_translated_post_type( $qv['post_type'] ) ) { + return $qv; + } + + // untranslated taxonomies + $tax_qv = array_filter( wp_list_pluck( get_taxonomies( array(), 'objects' ), 'query_var' ) ); // get all taxonomies query vars + $tax_qv = array_intersect( $tax_qv, array_keys( $qv ) ); // get all queried taxonomies query vars + + if ( ! $this->model->is_translated_taxonomy( array_keys( $tax_qv ) ) ) { + return $qv; + } + + if ( isset( $this->curlang ) && empty( $qv['lang'] ) ) { + $qv['lang'] = $this->curlang->slug; + } + + return $qv; + } +} diff --git a/pole-sbv-content/plugins/polylang/frontend/choose-lang.php b/pole-sbv-content/plugins/polylang/frontend/choose-lang.php new file mode 100644 index 00000000..c68de983 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/frontend/choose-lang.php @@ -0,0 +1,328 @@ +links_model = &$polylang->links_model; + $this->model = &$polylang->model; + $this->options = &$polylang->options; + + $this->curlang = &$polylang->curlang; + } + + /** + * sets the language for ajax requests + * and setup actions + * any child class must call this method if it overrides it + * + * @since 1.8 + */ + public function init() { + if ( PLL_AJAX_ON_FRONT || false === stripos( $_SERVER['SCRIPT_FILENAME'], 'index.php' ) ) { + $this->set_language( empty( $_REQUEST['lang'] ) ? $this->get_preferred_language() : $this->model->get_language( $_REQUEST['lang'] ) ); + } + + add_action( 'pre_comment_on_post', array( $this, 'pre_comment_on_post' ) ); // sets the language of comment + add_action( 'parse_query', array( $this, 'parse_main_query' ), 2 ); // sets the language in special cases + add_action( 'wp', array( $this, 'maybe_setcookie' ), 7 ); + } + + /** + * writes language cookie + * loads user defined translations + * fires the action 'pll_language_defined' + * + * @since 1.2 + * + * @param object $curlang current language + */ + protected function set_language( $curlang ) { + // don't set the language a second time + if ( isset( $this->curlang ) ) { + return; + } + + // final check in case $curlang has an unexpected value + // see https://wordpress.org/support/topic/detect-browser-language-sometimes-setting-null-language + $this->curlang = ( $curlang instanceof PLL_Language ) ? $curlang : $this->model->get_language( $this->options['default_lang'] ); + + $GLOBALS['text_direction'] = $this->curlang->is_rtl ? 'rtl' : 'ltr'; + + /** + * Fires when the current language is defined + * + * @since 0.9.5 + * + * @param string $slug current language code + * @param object $curlang current language object + */ + do_action( 'pll_language_defined', $this->curlang->slug, $this->curlang ); + } + + /** + * set a cookie to remember the language. + * possibility to set PLL_COOKIE to false will disable cookie although it will break some functionalities + * + * @since 1.5 + */ + public function maybe_setcookie() { + // check headers have not been sent to avoid ugly error + // cookie domain must be set to false for localhost ( default value for COOKIE_DOMAIN ) thanks to Stephen Harris. + if ( ! headers_sent() && PLL_COOKIE !== false && ! empty( $this->curlang ) && ( ! isset( $_COOKIE[ PLL_COOKIE ] ) || $_COOKIE[ PLL_COOKIE ] != $this->curlang->slug ) && ! is_404() ) { + + /** + * Filter the Polylang cookie duration + * + * @since 1.8 + * + * @param int $duration cookie duration in seconds + */ + $expiration = apply_filters( 'pll_cookie_expiration', YEAR_IN_SECONDS ); + + setcookie( + PLL_COOKIE, + $this->curlang->slug, + time() + $expiration, + COOKIEPATH, + 2 == $this->options['force_lang'] ? parse_url( $this->links_model->home, PHP_URL_HOST ) : COOKIE_DOMAIN, + is_ssl() + ); + } + } + + /** + * get the preferred language according to the browser preferences + * code adapted from http://www.thefutureoftheweb.com/blog/use-accept-language-header + * + * @since 1.8 + * + * @return string|bool the preferred language slug or false + */ + public function get_preferred_browser_language() { + $accept_langs = array(); + + if ( isset( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) ) { + // break up string into pieces ( languages and q factors ) + preg_match_all( '/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*( 1|0\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse ); + + $k = $lang_parse[1]; + $v = $lang_parse[4]; + + if ( $n = count( $k ) ) { + // set default to 1 for any without q factor + foreach ( $v as $key => $val ) { + if ( '' === $val ) { + $v[ $key ] = 1; + } + } + + // bubble sort ( need a stable sort for Android, so can't use a PHP sort function ) + if ( $n > 1 ) { + for ( $i = 2; $i <= $n; $i++ ) { + for ( $j = 0; $j <= $n - 2; $j++ ) { + if ( $v[ $j ] < $v[ $j + 1 ] ) { + // swap values + $temp = $v[ $j ]; + $v[ $j ] = $v[ $j + 1 ]; + $v[ $j + 1 ] = $temp; + // Swap keys + $temp = $k[ $j ]; + $k[ $j ] = $k[ $j + 1 ]; + $k[ $j + 1 ] = $temp; + } + } + } + } + $accept_langs = array_combine( $k,$v ); + } + } + + $languages = $this->model->get_languages_list( array( 'hide_empty' => true ) ); // hides languages with no post + + /** + * Filter the list of languages to use to match the browser preferences + * + * @since 1.9.3 + * + * @param array $languages array of PLL_Language objects + */ + $languages = apply_filters( 'pll_languages_for_browser_preferences', $languages ); + + // looks through sorted list and use first one that matches our language list + foreach ( array_keys( $accept_langs ) as $accept_lang ) { + // first loop to match the exact locale + foreach ( $languages as $language ) { + if ( 0 === strcasecmp( $accept_lang, $language->get_locale( 'display' ) ) ) { + return $language->slug; + } + } + + // second loop to match the language set + foreach ( $languages as $language ) { + if ( 0 === stripos( $accept_lang, $language->slug ) || 0 === stripos( $language->get_locale( 'display' ), $accept_lang ) ) { + return $language->slug; + } + } + } + return false; + } + + /** + * returns the language according to browser preference or the default language + * + * @since 0.1 + * + * @return object browser preferred language or default language + */ + public function get_preferred_language() { + // check first if the user was already browsing this site + if ( isset( $_COOKIE[ PLL_COOKIE ] ) ) { + return $this->model->get_language( $_COOKIE[ PLL_COOKIE ] ); + } + + /** + * Filter the visitor's preferred language (normally set first by cookie + * if this is not the first visit, then by the browser preferences). + * If no preferred language has been found or set by this filter, + * Polylang fallbacks to the default language + * + * @since 1.0 + * + * @param string $language preferred language code + */ + $slug = apply_filters( 'pll_preferred_language', $this->options['browser'] ? $this->get_preferred_browser_language() : false ); + + // return default if there is no preferences in the browser or preferences does not match our languages or it is requested not to use the browser preference + return ( $lang = $this->model->get_language( $slug ) ) ? $lang : $this->model->get_language( $this->options['default_lang'] ); + } + + /** + * sets the language when home page is resquested + * + * @since 1.2 + */ + protected function home_language() { + // test referer in case PLL_COOKIE is set to false + // thanks to Ov3rfly http://wordpress.org/support/topic/enhance-feature-when-front-page-is-visited-set-language-according-to-browser + $language = $this->options['hide_default'] && ( ( isset( $_SERVER['HTTP_REFERER'] ) && in_array( parse_url( $_SERVER['HTTP_REFERER'], PHP_URL_HOST ), $this->links_model->get_hosts() ) ) || ! $this->options['browser'] ) ? + $this->model->get_language( $this->options['default_lang'] ) : + $this->get_preferred_language(); // sets the language according to browser preference or default language + $this->set_language( $language ); + } + + /** + * to call when the home page has been requested + * make sure to call this after 'setup_theme' has been fired as we need $wp_query + * performs a redirection to the home page in the current language if needed + * + * @since 0.9 + */ + public function home_requested() { + // we are already on the right page + if ( $this->options['default_lang'] == $this->curlang->slug && $this->options['hide_default'] ) { + $this->set_curlang_in_query( $GLOBALS['wp_query'] ); + + /** + * Fires when the site root page is requested + * + * @since 1.8 + */ + do_action( 'pll_home_requested' ); + } + // redirect to the home page in the right language + // test to avoid crash if get_home_url returns something wrong + // FIXME why this happens? http://wordpress.org/support/topic/polylang-crashes-1 + // don't redirect if $_POST is not empty as it could break other plugins + // don't forget the query string which may be added by plugins + elseif ( is_string( $redirect = $this->curlang->home_url ) && empty( $_POST ) ) { + $redirect = empty( $_SERVER['QUERY_STRING'] ) ? $redirect : $redirect . ( $this->links_model->using_permalinks ? '?' : '&' ) . $_SERVER['QUERY_STRING']; + + /** + * When a visitor reaches the site home, Polylang redirects to the home page in the correct language. + * This filter allows plugins to modify the redirected url or prevent this redirection + * + * @since 1.1.1 + * + * @param string $redirect the url the visitor will be redirected to + */ + if ( $redirect = apply_filters( 'pll_redirect_home', $redirect ) ) { + wp_redirect( $redirect ); + exit; + } + } + } + + /** + * set the language when posting a comment + * + * @since 0.8.4 + * + * @param int $post_id the post beeing commented + */ + public function pre_comment_on_post( $post_id ) { + $this->set_language( $this->model->post->get_language( $post_id ) ); + } + + /** + * modifies some main query vars for home page and page for posts + * to enable one home page ( and one page for posts ) per language + * + * @since 1.2 + * + * @param object $query instance of WP_Query + */ + public function parse_main_query( $query ) { + if ( ! $query->is_main_query() ) { + return; + } + + /** + * This filter allows to set the language based on information contained in the main query + * + * @since 1.8 + * + * @param bool|object $lang false or language object + * @param object $query WP_Query object + */ + if ( $lang = apply_filters( 'pll_set_language_from_query', false, $query ) ) { + $this->set_language( $lang ); + $this->set_curlang_in_query( $query ); + } + + // sets is_home on translated home page when it displays posts + // is_home must be true on page 2, 3... too + // as well as when searching an empty string: http://wordpress.org/support/topic/plugin-polylang-polylang-breaks-search-in-spun-theme + if ( 'posts' == get_option( 'show_on_front' ) && ( count( $query->query ) == 1 || ( is_paged() && count( $query->query ) == 2 ) || ( isset( $query->query['s'] ) && ! $query->query['s'] ) ) && $lang = get_query_var( 'lang' ) ) { + $lang = $this->model->get_language( $lang ); + $this->set_language( $lang ); // sets the language now otherwise it will be too late to filter sticky posts ! + $query->is_home = true; + $query->is_archive = $query->is_tax = false; + } + } + + /** + * Sets the current language in the query + * + * @since 2.2 + * + * @param object $query + */ + protected function set_curlang_in_query( &$query ) { + $pll_query = new PLL_Query( $query, $this->model ); + $pll_query->set_language( $this->curlang ); + } +} diff --git a/pole-sbv-content/plugins/polylang/frontend/frontend-auto-translate.php b/pole-sbv-content/plugins/polylang/frontend/frontend-auto-translate.php new file mode 100644 index 00000000..3f46f714 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/frontend/frontend-auto-translate.php @@ -0,0 +1,250 @@ +model = &$polylang->model; + $this->curlang = &$polylang->curlang; + + add_action( 'pre_get_posts', array( $this, 'pre_get_posts' ) ); // after main Polylang filter + add_filter( 'get_terms_args', array( $this, 'get_terms_args' ), 10, 2 ); + } + + /** + * helper function to get the translated post in the current language + * + * since 1.8 + * + * @param int $post_id + * @return int + */ + protected function get_post( $post_id ) { + return $this->model->post->get( $post_id, $this->curlang ); + } + + /** + * helper function to get the translated term in the current language + * + * since 1.8 + * + * @param int $term_id + * @return int + */ + protected function get_term( $term_id ) { + return $this->model->term->get( $term_id, $this->curlang ); + } + + /** + * filters posts query to automatically translate included ids + * + * @since 1.1 + * + * @param object $query WP_Query object + */ + public function pre_get_posts( $query ) { + global $wpdb; + $qv = &$query->query_vars; + + if ( $query->is_main_query() || isset( $qv['lang'] ) || ( ! empty( $qv['post_type'] ) && ! $this->model->is_translated_post_type( $qv['post_type'] ) ) ) { + return; + } + + // /!\ always keep untranslated as is + + // term ids separated by a comma + $arr = array(); + if ( ! empty( $qv['cat'] ) ) { + foreach ( explode( ',', $qv['cat'] ) as $cat ) { + $tr = $this->get_term( abs( $cat ) ); + $arr[] = $cat < 0 ? -$tr : $tr; + } + + $qv['cat'] = implode( ',', $arr ); + } + + // category_name + $arr = array(); + if ( ! empty( $qv['category_name'] ) ) { + foreach ( explode( ',', $qv['category_name'] ) as $slug ) { + $arr[] = ( ( $cat = wpcom_vip_get_category_by_slug( $slug ) ) && ( $tr_id = $this->get_term( $cat->term_id ) ) && ! is_wp_error( $tr = get_category( $tr_id ) ) ) ? $tr->slug : $slug; + } + + $qv['category_name'] = implode( ',', $arr ); + } + + // array of term ids + foreach ( array( 'category__and', 'category__in', 'category__not_in', 'tag__and', 'tag__in', 'tag__not_in' ) as $key ) { + $arr = array(); + if ( ! empty( $qv[ $key ] ) ) { + foreach ( $qv[ $key ] as $cat ) { + $arr[] = ( $tr = $this->get_term( $cat ) ) ? $tr : $cat; + } + $qv[ $key ] = $arr; + } + } + + // tag + $arr = array(); + if ( ! empty( $qv['tag'] ) ) { + $sep = strpos( $qv['tag'], ',' ) !== false ? ',' : '+'; // two possible separators for tag slugs + foreach ( explode( $sep, $qv['tag'] ) as $slug ) { + $arr[] = ( ( $tag = wpcom_vip_get_term_by( 'slug', $slug, 'post_tag' ) ) && ( $tr_id = $this->get_term( $tag->term_id ) ) && ! is_wp_error( $tr = get_tag( $tr_id ) ) ) ? $tr->slug : $slug; + } + + $qv['tag'] = implode( $sep, $arr ); + } + + // tag_id can only take one id + if ( ! empty( $qv['tag_id'] ) && $tr_id = $this->get_term( $qv['tag_id'] ) ) { + $qv['tag_id'] = $tr_id; + } + + // array of tag slugs + foreach ( array( 'tag_slug__and', 'tag_slug__in' ) as $key ) { + $arr = array(); + if ( ! empty( $qv[ $key ] ) ) { + foreach ( $qv[ $key ] as $slug ) { + $arr[] = ( ( $tag = wpcom_vip_get_term_by( 'slug', $slug, 'post_tag' ) ) && ( $tr_id = $this->get_term( $tag->term_id ) ) && ! is_wp_error( $tr = get_tag( $tr_id ) ) ) ? $tr->slug : $slug; + } + + $qv[ $key ] = $arr; + } + } + + // custom taxonomies + // according to codex, this type of query is deprecated as of WP 3.1 but it does not appear in WP 3.5 source code + foreach ( array_intersect( $this->model->get_translated_taxonomies(), get_taxonomies( array( '_builtin' => false ) ) ) as $taxonomy ) { + $tax = get_taxonomy( $taxonomy ); + $arr = array(); + if ( ! empty( $qv[ $tax->query_var ] ) ) { + $sep = strpos( $qv[ $tax->query_var ], ',' ) !== false ? ',' : '+'; // two possible separators + foreach ( explode( $sep, $qv[ $tax->query_var ] ) as $slug ) { + $arr[] = ( ( $tag = wpcom_vip_get_term_by( 'slug', $slug, $taxonomy ) ) && ( $tr_id = $this->get_term( $tag->term_id ) ) && ! is_wp_error( $tr = get_term( $tr_id, $taxonomy ) ) ) ? $tr->slug : $slug; + } + + $qv[ $tax->query_var ] = implode( $sep, $arr ); + } + } + + // tax_query since WP 3.1 + if ( ! empty( $qv['tax_query'] ) && is_array( $qv['tax_query'] ) ) { + $qv['tax_query'] = $this->translate_tax_query_recursive( $qv['tax_query'] ); + } + + // p, page_id, post_parent can only take one id + foreach ( array( 'p', 'page_id', 'post_parent' ) as $key ) { + if ( ! empty( $qv[ $key ] ) && $tr_id = $this->get_post( $qv[ $key ] ) ) { + $qv[ $key ] = $tr_id; + } + } + + // name, can only take one slug + if ( ! empty( $qv['name'] ) ) { + if ( empty( $qv['post_type'] ) ) { + $post_types = array( 'post' ); + } elseif ( 'any' === $qv['post_type'] ) { + $post_types = get_post_types( array('exclude_from_search' => false) ); // May return a empty array + } else { + $post_types = (array) $qv['post_type']; + } + + if ( ! empty( $post_types ) ) { + // no function to get post by name except get_posts itself + $where = "{$wpdb->posts}.post_type IN ('" . implode( "', '", esc_sql( $post_types ) ) . "')"; + $id = $wpdb->get_var( $wpdb->prepare( "SELECT ID from {$wpdb->posts} WHERE {$where} AND post_name=%s", $qv['name'] ) ); + $qv['name'] = ( $id && ( $tr_id = $this->get_post( $id ) ) && $tr = get_post( $tr_id ) ) ? $tr->post_name : $qv['name']; + } + } + + // pagename, the page id is already available in queried_object_id + if ( ! empty( $qv['pagename'] ) && ! empty( $query->queried_object_id ) && $tr_id = $this->get_post( $query->queried_object_id ) ) { + $query->queried_object_id = $tr_id; + $qv['pagename'] = get_page_uri( $tr_id ); + } + + // array of post ids + // post_parent__in & post_parent__not_in since WP 3.6 + foreach ( array( 'post__in', 'post__not_in', 'post_parent__in', 'post_parent__not_in' ) as $key ) { + $arr = array(); + if ( ! empty( $qv[ $key ] ) ) { + // post__in used by the 2 functions below + // useless to filter them as output is already in the right language and would result in performance loss + foreach ( debug_backtrace() as $trace ) { + if ( in_array( $trace['function'], array( 'wp_nav_menu', 'gallery_shortcode' ) ) ) { + return; + } + } + + foreach ( $qv[ $key ] as $p ) { + $arr[] = ( $tr = $this->get_post( $p ) ) ? $tr : $p; + } + + $qv[ $key ] = $arr; + } + } + } + + /** + * filters terms query to automatically translate included ids + * + * @since 1.1.1 + * + * @param array $args + * @param array $taxonomies + * @return array modified $args + */ + public function get_terms_args( $args, $taxonomies ) { + if ( ! empty( $args['include'] ) && ( empty( $taxonomies ) || $this->model->is_translated_taxonomy( $taxonomies ) ) ) { + foreach ( wp_parse_id_list( $args['include'] ) as $id ) { + $arr[] = ( $tr = $this->get_term( $id ) ) ? $tr : $id; + } + + $args['include'] = $arr; + } + return $args; + } + + /** + * translates tax queries + * compatible with nested tax queries introduced in WP 4.1 + * + * @since 1.7 + * + * @param array $tax_queries + * @return array translated tax queries + */ + protected function translate_tax_query_recursive( $tax_queries ) { + foreach ( $tax_queries as $key => $q ) { + if ( isset( $q['taxonomy'], $q['terms'] ) && $this->model->is_translated_taxonomy( $q['taxonomy'] ) ) { + $arr = array(); + $field = isset( $q['field'] ) && in_array( $q['field'], array( 'slug', 'name' ) ) ? $q['field'] : 'term_id'; + foreach ( (array) $q['terms'] as $t ) { + $arr[] = ( ( $tag = wpcom_vip_get_term_by( $field, $t, $q['taxonomy'] ) ) && ( $tr_id = $this->get_term( $tag->term_id ) ) && ! is_wp_error( $tr = get_term( $tr_id, $q['taxonomy'] ) ) ) ? $tr->$field : $t; + } + + $tax_queries[ $key ]['terms'] = $arr; + } + + // nested queries + elseif ( is_array( $q ) ) { + $tax_queries[ $key ] = $this->translate_tax_query_recursive( $q ); + } + } + + return $tax_queries; + } +} diff --git a/pole-sbv-content/plugins/polylang/frontend/frontend-filters-links.php b/pole-sbv-content/plugins/polylang/frontend/frontend-filters-links.php new file mode 100644 index 00000000..6ced1e07 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/frontend/frontend-filters-links.php @@ -0,0 +1,393 @@ +curlang = &$polylang->curlang; + $this->cache = new PLL_Cache(); + + // Rewrites author and date links to filter them by language + foreach ( array( 'feed_link', 'author_link', 'search_link', 'year_link', 'month_link', 'day_link' ) as $filter ) { + add_filter( $filter, array( $this, 'archive_link' ), 20 ); + } + + // Meta in the html head section + add_action( 'wp_head', array( $this, 'wp_head' ) ); + + // Modifies the home url + if ( ! defined( 'PLL_FILTER_HOME_URL' ) || PLL_FILTER_HOME_URL ) { + add_filter( 'home_url', array( $this, 'home_url' ), 10, 2 ); + } + + if ( $this->options['force_lang'] > 1 ) { + // Rewrites next and previous post links when not automatically done by WordPress + add_filter( 'get_pagenum_link', array( $this, 'archive_link' ), 20 ); + + // Rewrites ajax url + add_filter( 'admin_url', array( $this, 'admin_url' ), 10, 2 ); + } + + // Redirects to canonical url before WordPress redirect_canonical + // but after Nextgen Gallery which hacks $_SERVER['REQUEST_URI'] !!! and restores it in 'template_redirect' with priority 1 + add_action( 'template_redirect', array( $this, 'check_canonical_url' ), 4 ); + } + + /** + * Modifies the author and date links to add the language parameter ( as well as feed link ) + * + * @since 0.4 + * + * @param string $link + * @return string modified link + */ + public function archive_link( $link ) { + return $this->links_model->switch_language_in_link( $link, $this->curlang ); + } + + /** + * Modifies page links + * and caches the result + * + * @since 1.7 + * + * @param string $link post link + * @param int $post_id post ID + * @return string modified post link + */ + public function _get_page_link( $link, $post_id ) { + $sample = false !== strpos( $link, '%pagename%' ); // To avoid a conflict with plugin Custom Permalinks + $cache_key = "post:{$post_id}:{$sample}"; + if ( false === $_link = $this->cache->get( $cache_key ) ) { + $_link = parent::_get_page_link( $link, $post_id ); + $this->cache->set( $cache_key, $_link ); + } + return $_link; + } + + /** + * Modifies attachment links + * and caches the result + * + * @since 1.6.2 + * + * @param string $link attachment link + * @param int $post_id attachment link + * @return string modified attachment link + */ + public function attachment_link( $link, $post_id ) { + $cache_key = 'post:' . $post_id; + if ( false === $_link = $this->cache->get( $cache_key ) ) { + $_link = parent::attachment_link( $link, $post_id ); + $this->cache->set( $cache_key, $_link ); + } + return $_link; + } + + /** + * Modifies custom posts links + * and caches the result + * + * @since 1.6 + * + * @param string $link post link + * @param object $post post object + * @return string modified post link + */ + public function post_type_link( $link, $post ) { + $sample = false !== strpos( $link, '%postname%' ); // To avoid a conflict with plugin Custom Permalinks + $cache_key = "post:{$post->ID}:{$sample}"; + if ( false === $_link = $this->cache->get( $cache_key ) ) { + $_link = parent::post_type_link( $link, $post ); + $this->cache->set( $cache_key, $_link ); + } + return $_link; + } + + /** + * Modifies filtered taxonomies ( post format like ) and translated taxonomies links + * and caches the result + * + * @since 0.7 + * + * @param string $link + * @param object $term term object + * @param string $tax taxonomy name + * @return string modified link + */ + public function term_link( $link, $term, $tax ) { + $cache_key = 'term:' . $term->term_id; + if ( false === $_link = $this->cache->get( $cache_key ) ) { + if ( in_array( $tax, $this->model->get_filtered_taxonomies() ) ) { + $_link = $this->links_model->switch_language_in_link( $link, $this->curlang ); + + /** This filter is documented in include/filters-links.php */ + $_link = apply_filters( 'pll_term_link', $_link, $this->curlang, $term ); + } + + else { + $_link = parent::term_link( $link, $term, $tax ); + } + $this->cache->set( $cache_key, $_link ); + } + return $_link; + } + + /** + * Outputs references to translated pages ( if exists ) in the html head section + * + * @since 0.1 + */ + public function wp_head() { + // Don't output anything on paged archives: see https://wordpress.org/support/topic/hreflang-on-page2 + // Don't output anything on paged pages and paged posts + if ( is_paged() || ( is_singular() && ( $page = get_query_var( 'page' ) ) && $page > 1 ) ) { + return; + } + + // Google recommends to include self link https://support.google.com/webmasters/answer/189077?hl=en + foreach ( $this->model->get_languages_list() as $language ) { + if ( $url = $this->links->get_translation_url( $language ) ) { + $urls[ $language->get_locale( 'display' ) ] = $url; + } + } + + // Ouptputs the section only if there are translations ( $urls always contains self link ) + if ( ! empty( $urls ) && count( $urls ) > 1 ) { + + // Prepare the list of languages to remove the country code + foreach ( array_keys( $urls ) as $locale ) { + $split = explode( '-', $locale ); + $languages[ $locale ] = reset( $split ); + } + + $count = array_count_values( $languages ); + + foreach ( $urls as $locale => $url ) { + $lang = $count[ $languages[ $locale ] ] > 1 ? $locale : $languages[ $locale ]; // Output the country code only when necessary + $hreflangs[ $lang ] = $url; + } + + // Adds the site root url when the default language code is not hidden + // See https://wordpress.org/support/topic/implementation-of-hreflangx-default + if ( is_front_page() && ! $this->options['hide_default'] && $this->options['force_lang'] < 3 ) { + $hreflangs['x-default'] = home_url( '/' ); + } + + /** + * Filters the list of rel hreflang attributes + * + * @since 2.1 + * + * @param array $hreflangs Array of urls with language codes as keys + */ + $hreflangs = apply_filters( 'pll_rel_hreflang_attributes', $hreflangs ); + + foreach ( $hreflangs as $lang => $url ) { + printf( '' . "\n", esc_url( $url ), esc_attr( $lang ) ); + } + } + } + + /** + * Filters the home url to get the right language + * + * @since 0.4 + * + * @param string $url + * @param string $path + * @return string + */ + public function home_url( $url, $path ) { + if ( ! ( did_action( 'template_redirect' ) || did_action( 'login_init' ) ) || rtrim( $url,'/' ) != $this->links_model->home ) { + return $url; + } + + static $white_list, $black_list; // Avoid evaluating this at each function call + + // We *want* to filter the home url in these cases + if ( empty( $white_list ) ) { + // On Windows get_theme_root() mixes / and \ + // We want only \ for the comparison with debug_backtrace + $theme_root = get_theme_root(); + $theme_root = ( false === strpos( $theme_root, '\\' ) ) ? $theme_root : str_replace( '/', '\\', $theme_root ); + + /** + * Filter the white list of the Polylang 'home_url' filter + * The $args contains an array of arrays each of them having + * a 'file' key and/or a 'function' key to decide which functions in + * which files using home_url() calls must be filtered + * + * @since 1.1.2 + * + * @param array $args + */ + $white_list = apply_filters( 'pll_home_url_white_list', array( + array( 'file' => $theme_root ), + array( 'function' => 'wp_nav_menu' ), + array( 'function' => 'login_footer' ), + array( 'function' => 'get_custom_logo' ), + ) ); + } + + // We don't want to filter the home url in these cases + if ( empty( $black_list ) ) { + + /** + * Filter the black list of the Polylang 'home_url' filter + * The $args contains an array of arrays each of them having + * a 'file' key and/or a 'function' key to decide which functions in + * which files using home_url() calls must be filtered + * + * @since 1.1.2 + * + * @param array $args + */ + $black_list = apply_filters( 'pll_home_url_black_list', array( + array( 'file' => 'searchform.php' ), // Since WP 3.6 searchform.php is passed through get_search_form + array( 'function' => 'get_search_form' ), + ) ); + } + + $traces = version_compare( PHP_VERSION, '5.2.5', '>=' ) ? debug_backtrace( false ) : debug_backtrace(); + unset( $traces[0], $traces[1] ); // We don't need the last 2 calls: this function + call_user_func_array (or apply_filters on PHP7+) + + foreach ( $traces as $trace ) { + // Black list first + foreach ( $black_list as $v ) { + if ( ( isset( $trace['file'], $v['file'] ) && false !== strpos( $trace['file'], $v['file'] ) ) || ( isset( $trace['function'], $v['function'] ) && $trace['function'] == $v['function'] ) ) { + return $url; + } + } + + foreach ( $white_list as $v ) { + if ( ( isset( $trace['function'], $v['function'] ) && $trace['function'] == $v['function'] ) || + ( isset( $trace['file'], $v['file'] ) && false !== strpos( $trace['file'], $v['file'] ) && in_array( $trace['function'], array( 'home_url', 'get_home_url', 'bloginfo', 'get_bloginfo' ) ) ) ) { + $ok = true; + } + } + } + + return empty( $ok ) ? $url : ( empty( $path ) ? rtrim( $this->links->get_home_url( $this->curlang ), '/' ) : $this->links->get_home_url( $this->curlang ) ); + } + + /** + * Rewrites ajax url when using domains or subdomains + * + * @since 1.5 + * + * @param string $url admin url with path evaluated by WordPress + * @param string $path admin path + * @return string + */ + public function admin_url( $url, $path ) { + return 'admin-ajax.php' === $path ? $this->links_model->switch_language_in_link( $url, $this->curlang ) : $url; + } + + /** + * If the language code is not in agreement with the language of the content + * redirects incoming links to the proper URL to avoid duplicate content + * + * @since 0.9.6 + * + * @param string $requested_url optional + * @param bool $do_redirect optional, whether to perform the redirection or not + * @return string if redirect is not performed + */ + public function check_canonical_url( $requested_url = '', $do_redirect = true ) { + global $wp_query, $post, $is_IIS; + + // Don't redirect in same cases as WP + if ( is_trackback() || is_search() || is_admin() || is_preview() || is_robots() || ( $is_IIS && ! iis7_supports_permalinks() ) ) { + return; + } + + // Don't redirect mysite.com/?attachment_id= to mysite.com/en/?attachment_id= + if ( 1 == $this->options['force_lang'] && is_attachment() && isset( $_GET['attachment_id'] ) ) { + return; + } + + // If the default language code is not hidden and the static front page url contains the page name + // the customizer lands here and the code below would redirect to the list of posts + if ( is_customize_preview() ) { + return; + } + + if ( empty( $requested_url ) ) { + $requested_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + } + + if ( is_single() || is_page() ) { + if ( isset( $post->ID ) && $this->model->is_translated_post_type( $post->post_type ) ) { + $language = $this->model->post->get_language( (int) $post->ID ); + } + } + + elseif ( is_category() || is_tag() || is_tax() ) { + $obj = $wp_query->get_queried_object(); + if ( $this->model->is_translated_taxonomy( $obj->taxonomy ) ) { + $language = $this->model->term->get_language( (int) $obj->term_id ); + } + } + + elseif ( $wp_query->is_posts_page ) { + $obj = $wp_query->get_queried_object(); + $language = $this->model->post->get_language( (int) $obj->ID ); + } + + elseif ( is_404() && ! empty( $wp_query->query['page_id'] ) && $id = get_query_var( 'page_id' ) ) { + // Special case for page shortlinks when using subdomains or multiple domains + // Needed because redirect_canonical doesn't accept to change the domain name + $language = $this->model->post->get_language( (int) $id ); + } + + if ( empty( $language ) ) { + $language = $this->curlang; + $redirect_url = $requested_url; + } else { + // First get the canonical url evaluated by WP + // Workaround a WP bug wich removes the port for some urls and get it back at second call to redirect_canonical + $_redirect_url = ( ! $_redirect_url = redirect_canonical( $requested_url, false ) ) ? $requested_url : $_redirect_url; + $redirect_url = ( ! $redirect_url = redirect_canonical( $_redirect_url, false ) ) ? $_redirect_url : $redirect_url; + + // Then get the right language code in url + $redirect_url = $this->options['force_lang'] ? + $this->links_model->switch_language_in_link( $redirect_url, $language ) : + $this->links_model->remove_language_from_link( $redirect_url ); // Works only for default permalinks + } + + /** + * Filters the canonical url detected by Polylang + * + * @since 1.6 + * + * @param bool|string $redirect_url false or the url to redirect to + * @param object $language the language detected + */ + $redirect_url = apply_filters( 'pll_check_canonical_url', $redirect_url, $language ); + + // The language is not correctly set so let's redirect to the correct url for this object + if ( $do_redirect && $redirect_url && $requested_url != $redirect_url ) { + wp_redirect( $redirect_url, 301 ); + exit; + } + + return $redirect_url; + } +} diff --git a/pole-sbv-content/plugins/polylang/frontend/frontend-filters-search.php b/pole-sbv-content/plugins/polylang/frontend/frontend-filters-search.php new file mode 100644 index 00000000..fa90546e --- /dev/null +++ b/pole-sbv-content/plugins/polylang/frontend/frontend-filters-search.php @@ -0,0 +1,129 @@ +links_model = &$polylang->links_model; + $this->curlang = &$polylang->curlang; + + // adds the language information in the search form + // low priority in case the search form is created using the same filter as described in http://codex.wordpress.org/Function_Reference/get_search_form + add_filter( 'get_search_form', array( $this, 'get_search_form' ), 99 ); + + // adds the language information in admin bar search form + add_action( 'add_admin_bar_menus', array( $this, 'add_admin_bar_menus' ) ); + + // adds javascript at the end of the document + // was used for WP < 3.6. kept just in case + if ( defined( 'PLL_SEARCH_FORM_JS' ) && PLL_SEARCH_FORM_JS ) { + add_action( 'wp_footer', array( $this, 'wp_print_footer_scripts' ) ); + } + } + + /** + * adds the language information in the search form + * does not work if searchform.php ( prior to WP 3.6 ) is used or if the search form is hardcoded in another template file + * + * @since 0.1 + * + * @param string $form search form + * @return string modified search form + */ + public function get_search_form( $form ) { + if ( $form ) { + if ( $this->links_model->using_permalinks ) { + // take care to modify only the url in the

tag + preg_match( '##', $form, $matches ); + $old = reset( $matches ); + $new = preg_replace( '#' . esc_url( $this->links_model->home ) . '\/?#', esc_url( $this->curlang->search_url ), $old ); + $form = str_replace( $old, $new, $form ); + } + else { + $form = str_replace( '', '', $form ); + } + } + + return $form; + } + + /** + * adds the language information in admin bar search form + * + * @since 1.2 + */ + function add_admin_bar_menus() { + remove_action( 'admin_bar_menu', 'wp_admin_bar_search_menu', 4 ); + add_action( 'admin_bar_menu', array( $this, 'admin_bar_search_menu' ), 4 ); + } + + /** + * rewrites the admin bar search form to pass our get_search form filter. See #21342 + * code base is WP 4.3.1 + * + * @since 0.9 + * + * @param object $wp_admin_bar + */ + public function admin_bar_search_menu( $wp_admin_bar ) { + $form = '
'; + $form .= ''; + $form .= ''; + $form .= ''; + $form .= '
'; + + $wp_admin_bar->add_menu( array( + 'parent' => 'top-secondary', + 'id' => 'search', + 'title' => $this->get_search_form( $form ), // pass the get_search_form filter + 'meta' => array( 'class' => 'admin-bar-search', 'tabindex' => -1 ), + ) ); + } + + /** + * allows modifying the search form if it does not pass get_search_form + * + * @since 0.1 + */ + public function wp_print_footer_scripts() { + // don't use directly e[0] just in case there is somewhere else an element named 's' + // check before if the hidden input has not already been introduced by get_search_form ( FIXME: is there a way to improve this ) ? + // thanks to AndyDeGroo for improving the code for compatility with old browsers + // http://wordpress.org/support/topic/development-of-polylang-version-08?replies=6#post-2645559 + $lang = esc_js( $this->curlang->slug ); + $js = "//"; + echo ''; + } +} diff --git a/pole-sbv-content/plugins/polylang/frontend/frontend-filters.php b/pole-sbv-content/plugins/polylang/frontend/frontend-filters.php new file mode 100644 index 00000000..886c5a5d --- /dev/null +++ b/pole-sbv-content/plugins/polylang/frontend/frontend-filters.php @@ -0,0 +1,381 @@ +options['media_support'] ) { + add_filter( 'widget_media_image_instance', array( $this, 'widget_media_instance' ), 1 ); // Since WP 4.8 + } + + // Strings translation ( must be applied before WordPress applies its default formatting filters ) + foreach ( array( 'widget_text', 'widget_title', 'option_blogname', 'option_blogdescription', 'option_date_format', 'option_time_format' ) as $filter ) { + add_filter( $filter, 'pll__', 1 ); + } + + // Translates biography + add_filter( 'get_user_metadata', array( $this, 'get_user_metadata' ), 10, 4 ); + + // Set posts and terms language when created from frontend ( ex with P2 theme ) + add_action( 'save_post', array( $this, 'save_post' ), 200, 2 ); + add_action( 'create_term', array( $this, 'save_term' ), 10, 3 ); + add_action( 'edit_term', array( $this, 'save_term' ), 10, 3 ); + + if ( $this->options['media_support'] ) { + add_action( 'add_attachment', array( $this, 'set_default_language' ) ); + } + + // Support theme customizer + // FIXME of course does not work if 'transport' is set to 'postMessage' + if ( isset( $_POST['wp_customize'], $_POST['customized'] ) ) { + add_filter( 'pre_option_blogname', 'pll__', 20 ); + add_filter( 'pre_option_blogdescription', 'pll__', 20 ); + } + } + + /** + * Returns the locale based on current language + * + * @since 0.1 + * + * @param string $locale + * @return string + */ + public function get_locale( $locale ) { + return $this->curlang->locale; + } + + /** + * Filters sticky posts by current language + * + * @since 0.8 + * + * @param array $posts list of sticky posts ids + * @return array modified list of sticky posts ids + */ + public function option_sticky_posts( $posts ) { + global $wpdb; + + if ( $this->curlang && ! empty( $posts ) ) { + $_posts = wp_cache_get( 'sticky_posts', 'options' ); // This option is usually cached in 'all_options' by WP + + if ( empty( $_posts ) || ! is_array( $_posts[ $this->curlang->term_taxonomy_id ] ) ) { + $posts = array_map( 'intval', $posts ); + $posts = implode( ',', $posts ); + + $languages = $this->model->get_languages_list( array( 'fields' => 'term_taxonomy_id' ) ); + $_posts = array_fill_keys( $languages, array() ); // Init with empty arrays + $languages = implode( ',', $languages ); + + $relations = $wpdb->get_results( "SELECT object_id, term_taxonomy_id FROM {$wpdb->term_relationships} WHERE object_id IN ({$posts}) AND term_taxonomy_id IN ({$languages})" ); + + foreach ( $relations as $relation ) { + $_posts[ $relation->term_taxonomy_id ][] = $relation->object_id; + } + wp_cache_add( 'sticky_posts', $_posts, 'options' ); + } + + $posts = $_posts[ $this->curlang->term_taxonomy_id ]; + } + + return $posts; + } + + /** + * Adds language dependent cache domain when querying terms + * useful as the 'lang' parameter is not included in cache key by WordPress + * + * @since 1.3 + * + * @param array $args + * @return array + */ + public function get_terms_args( $args ) { + $lang = isset( $args['lang'] ) ? $args['lang'] : $this->curlang->slug; + $key = '_' . ( is_array( $lang ) ? implode( ',', $lang ) : $lang ); + $args['cache_domain'] = empty( $args['cache_domain'] ) ? 'pll' . $key : $args['cache_domain'] . $key; + return $args; + } + + /** + * Filters categories and post tags by language when needed + * + * @since 0.2 + * + * @param array $clauses sql clauses + * @param array $taxonomies + * @param array $args get_terms arguments + * @return array modified sql clauses + */ + public function terms_clauses( $clauses, $taxonomies, $args ) { + // Does nothing except on taxonomies which are filterable + // Since WP 4.7, make sure not to filter wp_get_object_terms() + if ( ! $this->model->is_translated_taxonomy( $taxonomies ) || ! empty( $args['object_ids'] ) ) { + return $clauses; + } + + // Adds our clauses to filter by language + return $this->model->terms_clauses( $clauses, isset( $args['lang'] ) ? $args['lang'] : $this->curlang ); + } + + /** + * Modifies the sql request for wp_get_archives to filter by the current language + * + * @since 1.9 + * + * @param string $sql JOIN clause + * @param array $r wp_get_archives arguments + * @return string modified JOIN clause + */ + public function getarchives_join( $sql, $r ) { + return ! empty( $r['post_type'] ) && $this->model->is_translated_post_type( $r['post_type'] ) ? $sql . $this->model->post->join_clause() : $sql; + } + + /** + * Modifies the sql request for wp_get_archives to filter by the current language + * + * @since 1.9 + * + * @param string $sql WHERE clause + * @param array $r wp_get_archives arguments + * @return string modified WHERE clause + */ + public function getarchives_where( $sql, $r ) { + return ! empty( $r['post_type'] ) && $this->model->is_translated_post_type( $r['post_type'] ) ? $sql . $this->model->post->where_clause( $this->curlang ) : $sql; + } + + /** + * Modifies the sql request for get_adjacent_post to filter by the current language + * + * @since 0.1 + * + * @param string $sql The JOIN clause in the SQL. + * @param bool $in_same_term Whether post should be in a same taxonomy term. + * @param array $excluded_terms Array of excluded term IDs. + * @param string $taxonomy Taxonomy. Used to identify the term used when `$in_same_term` is true. + * @param WP_Post $post WP_Post object. + * @return string modified JOIN clause + */ + public function posts_join( $sql, $in_same_term, $excluded_terms, $taxonomy = '', $post = null ) { + return $this->model->is_translated_post_type( $post->post_type ) ? $sql . $this->model->post->join_clause( 'p' ) : $sql; + } + + /** + * Modifies the sql request for wp_get_archives and get_adjacent_post to filter by the current language + * + * @since 0.1 + * + * @param string $sql The WHERE clause in the SQL. + * @param bool $in_same_term Whether post should be in a same taxonomy term. + * @param array $excluded_terms Array of excluded term IDs. + * @param string $taxonomy Taxonomy. Used to identify the term used when `$in_same_term` is true. + * @param WP_Post $post WP_Post object. + * @return string modified WHERE clause + */ + public function posts_where( $sql, $in_same_term, $excluded_terms, $taxonomy = '', $post = null ) { + return $this->model->is_translated_post_type( $post->post_type ) ? $sql . $this->model->post->where_clause( $this->curlang ) : $sql; + } + + /** + * Filters the widgets according to the current language + * Don't display if a language filter is set and this is not the current one + * + * @since 0.3 + * + * @param array $instance widget settings + * @param object $widget WP_Widget object + * @return bool|array false if we hide the widget, unmodified $instance otherwise + */ + public function widget_display_callback( $instance, $widget ) { + return ! empty( $instance['pll_lang'] ) && $instance['pll_lang'] != $this->curlang->slug ? false : $instance; + } + + /** + * Remove widgets from sidebars if they are not visible in the current language + * Needed to allow is_active_sidebar() to return false if all widgets are not for the current language. See #54 + * + * @since 2.1 + * + * @param array $sidebars_widgets An associative array of sidebars and their widgets + * @return array + */ + public function sidebars_widgets( $sidebars_widgets ) { + global $wp_registered_widgets; + + foreach ( $sidebars_widgets as $sidebar => $widgets ) { + if ( 'wp_inactive_widgets' == $sidebar || empty( $widgets ) ) { + continue; + } + + foreach ( $widgets as $key => $widget ) { + // Nothing can be done if the widget is created using pre WP2.8 API :( + // There is no object, so we can't access it to get the widget options + if ( ! isset( $wp_registered_widgets[ $widget ]['callback'] ) || ! is_array( $wp_registered_widgets[ $widget ]['callback'] ) || ! isset( $wp_registered_widgets[ $widget ]['callback'][0] ) || ! is_object( $wp_registered_widgets[ $widget ]['callback'][0] ) || ! method_exists( $wp_registered_widgets[ $widget ]['callback'][0], 'get_settings' ) ) { + continue; + } + + $widget_settings = $wp_registered_widgets[ $widget ]['callback'][0]->get_settings(); + $number = $wp_registered_widgets[ $widget ]['params'][0]['number']; + + // Remove the widget if not visible in the current language + if ( ! empty( $widget_settings[ $number ]['pll_lang'] ) && $widget_settings[ $number ]['pll_lang'] !== $this->curlang->slug ) { + unset( $sidebars_widgets[ $sidebar ][ $key ] ); + } + } + } + + return $sidebars_widgets; + } + + /** + * Translates media in media widgets + * + * @since 2.1.5 + * + * @param array $instance Widget instance data + * @return array + */ + public function widget_media_instance( $instance ) { + if ( empty( $instance['pll_lang'] ) && $instance['attachment_id'] && $tr_id = pll_get_post( $instance['attachment_id'] ) ) { + $instance['attachment_id'] = $tr_id; + $attachment = get_post( $tr_id ); + + if ( $instance['caption'] && ! empty( $attachment->post_excerpt ) ) { + $instance['caption'] = $attachment->post_excerpt; + } + + if ( $instance['alt'] && $alt_text = get_post_meta( $tr_id, '_wp_attachment_image_alt', true ) ) { + $instance['alt'] = $alt_text; + } + + if ( $instance['image_title'] && ! empty( $attachment->post_title ) ) { + $instance['image_title'] = $attachment->post_title; + } + } + return $instance; + } + + /** + * Translates biography + * Makes sure that the correct locale is used for ajax calls when the user is logged in + * + * @since 0.9 + * + * @param null $return + * @param int $id User id + * @param string $meta_key + * @param bool $single Whether to return only the first value of the specified $meta_key + * @return null|string + */ + public function get_user_metadata( $return, $id, $meta_key, $single ) { + switch ( $meta_key ) { + case 'description': + if ( $this->curlang->slug !== $this->options['default_lang'] ) { + $return = get_user_meta( $id, 'description_' . $this->curlang->slug, $single ); + } + break; + case 'locale': + if ( Polylang::is_ajax_on_front() ) { + $return = get_locale(); + } + break; + } + + return $return; + } + + /** + * Allows to set a language by default for posts if it has no language yet + * + * @since 1.5.4 + * + * @param int $post_id + */ + public function set_default_language( $post_id ) { + if ( ! $this->model->post->get_language( $post_id ) ) { + if ( isset( $_REQUEST['lang'] ) ) { + $this->model->post->set_language( $post_id, $_REQUEST['lang'] ); + } elseif ( ( $parent_id = wp_get_post_parent_id( $post_id ) ) && $parent_lang = $this->model->post->get_language( $parent_id ) ) { + $this->model->post->set_language( $post_id, $parent_lang ); + } else { + $this->model->post->set_language( $post_id, $this->curlang ); + } + } + } + + /** + * Called when a post ( or page ) is saved, published or updated + * Does nothing except on post types which are filterable + * Sets the language but does not allow to modify it + * + * @since 1.1 + * + * @param int $post_id + * @param object $post + */ + public function save_post( $post_id, $post ) { + if ( $this->model->is_translated_post_type( $post->post_type ) ) { + $this->set_default_language( $post_id ); + } + } + + /** + * Called when a category or post tag is created or edited + * Does nothing except on taxonomies which are filterable + * Sets the language but does not allow to modify it + * + * @since 1.1 + * + * @param int $term_id + * @param int $tt_id Term taxonomy id + * @param string $taxonomy + */ + public function save_term( $term_id, $tt_id, $taxonomy ) { + if ( $this->model->is_translated_taxonomy( $taxonomy ) && ! $this->model->term->get_language( $term_id ) ) { + if ( isset( $_REQUEST['lang'] ) ) { + $this->model->term->set_language( $term_id, $_REQUEST['lang'] ); + } elseif ( ( $term = get_term( $term_id, $taxonomy ) ) && ! empty( $term->parent ) && $parent_lang = $this->model->term->get_language( $term->parent ) ) { + $this->model->term->set_language( $term_id, $parent_lang ); + } else { + $this->model->term->set_language( $term_id, $this->curlang ); + } + } + } +} diff --git a/pole-sbv-content/plugins/polylang/frontend/frontend-links.php b/pole-sbv-content/plugins/polylang/frontend/frontend-links.php new file mode 100644 index 00000000..866ba88c --- /dev/null +++ b/pole-sbv-content/plugins/polylang/frontend/frontend-links.php @@ -0,0 +1,209 @@ +curlang = &$polylang->curlang; + $this->cache = new PLL_Cache(); + + } + + /** + * Returns the url of the translation ( if exists ) of the current page + * + * @since 0.1 + * + * @param object $language + * @return string + */ + public function get_translation_url( $language ) { + global $wp_query; + + if ( false !== $translation_url = $this->cache->get( 'translation_url:' . $language->slug ) ) { + return $translation_url; + } + + // Make sure that we have the queried object + // See https://wordpress.org/support/topic/patch-for-fixing-a-notice + $queried_object_id = $wp_query->get_queried_object_id(); + + /** + * Filter the translation url before Polylang attempts to find one + * Internally used by Polylang for the static front page and posts page + * + * @since 1.8 + * + * @param string $url Empty or the url of the translation of teh current page + * @param object $language Language of the translation + * @param int $queried_object_id Queried object id + */ + if ( ! $url = apply_filters( 'pll_pre_translation_url', '', $language, $queried_object_id ) ) { + $qv = $wp_query->query_vars; + $hide = $this->options['default_lang'] == $language->slug && $this->options['hide_default']; + + // Post and attachment + if ( is_single() && ( $this->options['media_support'] || ! is_attachment() ) && ( $id = $this->model->post->get( $queried_object_id, $language ) ) && $this->current_user_can_read( $id ) ) { + $url = get_permalink( $id ); + } + + // Page + elseif ( is_page() && ( $id = $this->model->post->get( $queried_object_id, $language ) ) && $this->current_user_can_read( $id ) ) { + $url = get_page_link( $id ); + } + + elseif ( is_search() ) { + $url = $this->get_archive_url( $language ); + + // Special case for search filtered by translated taxonomies: taxonomy terms are translated in the translation url + if ( ! empty( $wp_query->tax_query->queries ) ) { + foreach ( $wp_query->tax_query->queries as $tax_query ) { + if ( ! empty( $tax_query['taxonomy'] ) && $this->model->is_translated_taxonomy( $tax_query['taxonomy'] ) ) { + + $tax = get_taxonomy( $tax_query['taxonomy'] ); + $terms = get_terms( $tax->name, array( 'fields' => 'id=>slug' ) ); // Filtered by current language + + foreach ( $tax_query['terms'] as $slug ) { + $term_id = array_search( $slug, $terms ); // What is the term_id corresponding to taxonomy term? + if ( $term_id && $term_id = $this->model->term->get_translation( $term_id, $language ) ) { // Get the translated term_id + $term = get_term( $term_id, $tax->name ); + $url = str_replace( $slug, $term->slug, $url ); + } + } + } + } + } + } + + // Translated taxonomy + // Take care that is_tax() is false for categories and tags + elseif ( ( is_category() || is_tag() || is_tax() ) && ( $term = get_queried_object() ) && $this->model->is_translated_taxonomy( $term->taxonomy ) ) { + $lang = $this->model->term->get_language( $term->term_id ); + + if ( ! $lang || $language->slug == $lang->slug ) { + $url = wpcom_vip_get_term_link( $term, $term->taxonomy ); // Self link + } + + elseif ( $tr_id = $this->model->term->get_translation( $term->term_id, $language ) ) { + if ( $tr_term = get_term( $tr_id, $term->taxonomy ) ) { + // Check if translated term ( or children ) have posts + $count = $tr_term->count || ( is_taxonomy_hierarchical( $term->taxonomy ) && array_sum( wp_list_pluck( get_terms( $term->taxonomy, array( 'child_of' => $tr_term->term_id, 'lang' => $language->slug ) ), 'count' ) ) ); + + /** + * Filter whether to hide an archive translation url + * + * @since 2.2.4 + * + * @param bool $hide True to hide the translation url. + * defaults to true when the translated archive is empty, false otherwise. + * @param string $lang The language code of the translation + * @param array $args Arguments used to evaluated the number of posts in the archive + */ + if ( ! apply_filters( 'pll_hide_archive_translation_url', ! $count , $language->slug, array( 'taxonomy' => $term->taxonomy ) ) ) { + $url = wpcom_vip_get_term_link( $tr_term, $term->taxonomy ); + } + } + } + } + + // Post type archive + elseif ( is_post_type_archive() ) { + if ( $this->model->is_translated_post_type( $qv['post_type'] ) ) { + $args = array( 'post_type' => $qv['post_type'] ); + $count = $this->model->count_posts( $language, $args ); + + /** This filter is documented in frontend/frontend-links.php */ + if ( ! apply_filters( 'pll_hide_archive_translation_url', ! $count , $language->slug, $args ) ) { + $url = $this->get_archive_url( $language ); + } + } + } + + // Other archives + elseif ( is_archive() ) { + $keys = array( 'post_type', 'm', 'year', 'monthnum', 'day', 'author', 'author_name' ); + $keys = array_merge( $keys, $this->model->get_filtered_taxonomies_query_vars() ); + $args = array_intersect_key( $qv, array_flip( $keys ) ); + $count = $this->model->count_posts( $language, $args ); + + /** This filter is documented in frontend/frontend-links.php */ + if ( ! apply_filters( 'pll_hide_archive_translation_url', ! $count , $language->slug, $args ) ) { + $url = $this->get_archive_url( $language ); + } + } + + // Front page when it is the list of posts + elseif ( is_front_page() ) { + $url = $this->get_home_url( $language ); + } + } + + /** + * Filter the translation url of the current page before Polylang caches it + * + * @since 1.1.2 + * + * @param null|string $url The translation url, null if none was found + * @param string $language The language code of the translation + */ + $translation_url = apply_filters( 'pll_translation_url', ( isset( $url ) && ! is_wp_error( $url ) ? $url : null ), $language->slug ); + $this->cache->set( 'translation_url:' . $language->slug, $translation_url ); + return $translation_url; + } + + /** + * Get the translation of the current archive url + * used also for search + * + * @since 1.2 + * + * @param object $language + * @return string + */ + public function get_archive_url( $language ) { + $url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + $url = $this->links_model->switch_language_in_link( $url, $language ); + $url = $this->links_model->remove_paged_from_link( $url ); + + /** + * Filter the archive url + * + * @since 1.6 + * + * @param string $url Url of the archive + * @param object $language Language of the archive + */ + return apply_filters( 'pll_get_archive_url', $url, $language ); + } + + /** + * Returns the home url in the right language + * + * @since 0.1 + * + * @param object $language Optional, defaults to current language + * @param bool $is_search Optional, whether we need the home url for a search form, defaults to false + */ + public function get_home_url( $language = '', $is_search = false ) { + if ( empty( $language ) ) { + $language = $this->curlang; + } + + return parent::get_home_url( $language, $is_search ); + } +} diff --git a/pole-sbv-content/plugins/polylang/frontend/frontend-nav-menu.php b/pole-sbv-content/plugins/polylang/frontend/frontend-nav-menu.php new file mode 100644 index 00000000..9cec1d1a --- /dev/null +++ b/pole-sbv-content/plugins/polylang/frontend/frontend-nav-menu.php @@ -0,0 +1,297 @@ +curlang = &$polylang->curlang; + + // Split the language switcher menu item in several language menu items + add_filter( 'wp_get_nav_menu_items', array( $this, 'wp_get_nav_menu_items' ), 20 ); // after the customizer menus + add_filter( 'wp_nav_menu_objects', array( $this, 'wp_nav_menu_objects' ) ); + add_filter( 'nav_menu_link_attributes', array( $this, 'nav_menu_link_attributes' ), 10, 2 ); + + // Filters menus by language + add_filter( 'theme_mod_nav_menu_locations', array( $this, 'nav_menu_locations' ), 20 ); + add_filter( 'wp_nav_menu_args', array( $this, 'wp_nav_menu_args' ) ); + + // The customizer + if ( isset( $_POST['wp_customize'], $_POST['customized'] ) ) { + add_filter( 'wp_nav_menu_args', array( $this, 'filter_args_before_customizer' ) ); + add_filter( 'wp_nav_menu_args', array( $this, 'filter_args_after_customizer' ), 2000 ); + } + } + + /** + * Sort menu items by menu order + * + * @since 1.7.9 + * + * @param object $a The first object to compare + * @param object $b The second object to compare + * @return int -1 or 1 if $a is considered to be respectively less than or greater than $b. + */ + protected function usort_menu_items( $a, $b ) { + return ( $a->menu_order < $b->menu_order ) ? -1 : 1; + } + + /** + * Splits the one item of backend in several items on frontend + * take care to menu_order as it is used later in wp_nav_menu + * + * @since 1.1.1 + * + * @param array $items menu items + * @return array modified items + */ + public function wp_get_nav_menu_items( $items ) { + if ( doing_action( 'customize_register' ) ) { // needed since WP 4.3, doing_action available since WP 3.9 + return $items; + } + + // The customizer menus does not sort the items and we need them to be sorted before splitting the language switcher + usort( $items, array( $this, 'usort_menu_items' ) ); + + $new_items = array(); + $offset = 0; + + foreach ( $items as $key => $item ) { + if ( $options = get_post_meta( $item->ID, '_pll_menu_item', true ) ) { + $i = 0; + + $switcher = new PLL_Switcher; + $args = array_merge( array( 'raw' => 1 ), $options ); + $the_languages = $switcher->the_languages( PLL()->links, $args ); + + // parent item for dropdown + if ( ! empty( $options['dropdown'] ) ) { + $item->title = $options['show_flags'] && $options['show_names'] ? $this->curlang->flag . ' ' . esc_html( $this->curlang->name ) : ( $options['show_flags'] ? $this->curlang->flag : esc_html( $this->curlang->name ) ); + $item->attr_title = ''; + $item->classes = array( 'pll-parent-menu-item' ); + $new_items[] = $item; + $offset++; + } + + foreach ( $the_languages as $lang ) { + $lang_item = clone $item; + $lang_item->ID = $lang_item->ID . '-' . $lang['slug']; // A unique ID + $lang_item->title = $options['show_flags'] && $options['show_names'] ? $lang['flag'] . '' . esc_html( $lang['name'] ) . '' : ( $options['show_flags'] ? $lang['flag'] : esc_html( $lang['name'] ) ); + $lang_item->attr_title = ''; + $lang_item->url = $lang['url']; + $lang_item->lang = $lang['locale']; // Save this for use in nav_menu_link_attributes + $lang_item->classes = $lang['classes']; + $lang_item->menu_order += $offset + $i++; + if ( ! empty( $options['dropdown'] ) ) { + $lang_item->menu_item_parent = $item->db_id; + $lang_item->db_id = 0; // to avoid recursion + } + $new_items[] = $lang_item; + } + $offset += $i - 1; + } else { + $item->menu_order += $offset; + $new_items[] = $item; + } + } + return $new_items; + } + + /** + * Returns the ancestors of a menu item + * + * @since 1.1.1 + * + * @param object $item + * @return array ancestors ids + */ + public function get_ancestors( $item ) { + $ids = array(); + $_anc_id = (int) $item->db_id; + while ( ( $_anc_id = get_post_meta( $_anc_id, '_menu_item_menu_item_parent', true ) ) && ! in_array( $_anc_id, $ids ) ) { + $ids[] = $_anc_id; + } + return $ids; + } + + /** + * Removes current-menu and current-menu-ancestor classes to lang switcher when not on the home page + * + * @since 1.1.1 + * + * @param array $items + * @return array modified menu items + */ + public function wp_nav_menu_objects( $items ) { + $r_ids = $k_ids = array(); + + foreach ( $items as $item ) { + if ( ! empty( $item->classes ) && is_array( $item->classes ) ) { + if ( in_array( 'current-lang', $item->classes ) ) { + $item->current = false; + $item->classes = array_diff( $item->classes, array( 'current-menu-item' ) ); + $r_ids = array_merge( $r_ids, $this->get_ancestors( $item ) ); // Remove the classes for these ancestors + } elseif ( in_array( 'current-menu-item', $item->classes ) ) { + $k_ids = array_merge( $k_ids, $this->get_ancestors( $item ) ); // Keep the classes for these ancestors + } + } + } + + $r_ids = array_diff( $r_ids, $k_ids ); + + foreach ( $items as $item ) { + if ( ! empty( $item->db_id ) && in_array( $item->db_id, $r_ids ) ) { + $item->classes = array_diff( $item->classes, array( 'current-menu-ancestor', 'current-menu-parent', 'current_page_parent', 'current_page_ancestor' ) ); + } + } + + return $items; + } + + /** + * Adds hreflang attribute for the language switcher menu items + * available since WP 3.6 + * + * @since 1.1 + * + * @param array $atts + * @param object $item + * @return array modified $atts + */ + public function nav_menu_link_attributes( $atts, $item ) { + if ( isset( $item->lang ) ) { + $atts['lang'] = $atts['hreflang'] = esc_attr( $item->lang ); + } + return $atts; + } + + /** + * Fills the theme nav menus locations with the right menu in the right language + * Needs to wait for the language to be defined + * + * @since 1.2 + * + * @param array|bool $menus list of nav menus locations, false if menu locations have not been filled yet + * @return array|bool modified list of nav menus locations + */ + public function nav_menu_locations( $menus ) { + if ( is_array( $menus ) && ! empty( $this->curlang ) ) { + // First get multilingual menu locations from DB + $theme = get_option( 'stylesheet' ); + + foreach ( $menus as $loc => $menu ) { + $menus[ $loc ] = empty( $this->options['nav_menus'][ $theme ][ $loc ][ $this->curlang->slug ] ) ? 0 : $this->options['nav_menus'][ $theme ][ $loc ][ $this->curlang->slug ]; + } + + // Support for theme customizer + // Let's look for multilingual menu locations directly in $_POST as there are not in customizer object + if ( isset( $_POST['wp_customize'], $_POST['customized'] ) ) { + $customized = json_decode( wp_unslash( $_POST['customized'] ) ); + + if ( is_object( $customized ) ) { + foreach ( $customized as $key => $c ) { + if ( false !== strpos( $key, 'nav_menu_locations[' ) ) { + $loc = substr( trim( $key, ']' ), 19 ); + $infos = $this->explode_location( $loc ); + if ( $infos['lang'] == $this->curlang->slug ) { + $menus[ $infos['location'] ] = $c; + } elseif ( $this->curlang->slug == $this->options['default_lang'] ) { + $menus[ $loc ] = $c; + } + } + } + } + } + } + return $menus; + } + + /** + * Attempt to translate the nav menu when it is hardcoded or when no location is defined in wp_nav_menu + * + * @since 1.7.10 + * + * @param array $args + * @return array modified $args + */ + public function wp_nav_menu_args( $args ) { + $theme = get_option( 'stylesheet' ); + + if ( empty( $this->curlang ) || empty( $this->options['nav_menus'][ $theme ] ) ) { + return $args; + } + + // Get the nav menu based on the requested menu + $menu = wp_get_nav_menu_object( $args['menu'] ); + + // Attempt to find a translation of this menu + // This obviously does not work if the nav menu has no associated theme location + if ( $menu ) { + foreach ( $this->options['nav_menus'][ $theme ] as $menus ) { + if ( in_array( $menu->term_id, $menus ) && ! empty( $menus[ $this->curlang->slug ] ) ) { + $args['menu'] = $menus[ $this->curlang->slug ]; + return $args; + } + } + } + + // Get the first menu that has items and and is in the current language if we still can't find a menu + if ( ! $menu && ! $args['theme_location'] ) { + $menus = wp_get_nav_menus(); + foreach ( $menus as $menu_maybe ) { + if ( $menu_items = wp_get_nav_menu_items( $menu_maybe->term_id, array( 'update_post_term_cache' => false ) ) ) { + foreach ( $this->options['nav_menus'][ $theme ] as $menus ) { + if ( in_array( $menu_maybe->term_id, $menus ) && ! empty( $menus[ $this->curlang->slug ] ) ) { + $args['menu'] = $menus[ $this->curlang->slug ]; + return $args; + } + } + } + } + } + + return $args; + } + + /** + * Filters the nav menu location before the customizer so that it matches the temporary location in the customizer + * + * @since 1.8 + * + * @param array $args wp_nav_menu $args + * @return array modified $args + */ + public function filter_args_before_customizer( $args ) { + if ( ! empty( $this->curlang ) ) { + $args['theme_location'] = $this->combine_location( $args['theme_location'], $this->curlang ); + } + return $args; + } + + /** + * Filters the nav menu location after the customizer to get back the true nav menu location for the theme + * + * @since 1.8 + * + * @param array $args wp_nav_menu $args + * @return array modified $args + */ + public function filter_args_after_customizer( $args ) { + $infos = $this->explode_location( $args['theme_location'] ); + $args['theme_location'] = $infos['location']; + return $args; + } +} diff --git a/pole-sbv-content/plugins/polylang/frontend/frontend-static-pages.php b/pole-sbv-content/plugins/polylang/frontend/frontend-static-pages.php new file mode 100644 index 00000000..7adf2e41 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/frontend/frontend-static-pages.php @@ -0,0 +1,267 @@ +links_model = &$polylang->links_model; + $this->links = &$polylang->links; + + add_action( 'pll_language_defined', array( $this, 'pll_language_defined' ) ); + add_action( 'pll_home_requested', array( $this, 'pll_home_requested' ) ); + + // Manages the redirection of the homepage + add_filter( 'redirect_canonical', array( $this, 'redirect_canonical' ), 10, 2 ); + + add_filter( 'pll_pre_translation_url', array( $this, 'pll_pre_translation_url' ), 10, 3 ); + add_filter( 'pll_check_canonical_url', array( $this, 'pll_check_canonical_url' ) ); + + add_filter( 'pll_set_language_from_query', array( $this, 'page_on_front_query' ), 10, 2 ); + add_filter( 'pll_set_language_from_query', array( $this, 'page_for_posts_query' ), 10, 2 ); + } + + /** + * Init the filters + * + * @since 1.8 + */ + public function pll_language_defined() { + // Translates our page on front and page for posts properties + $this->init(); + + // Translates page for posts and page on front + add_filter( 'option_page_on_front', array( $this, 'translate_page_on_front' ) ); + add_filter( 'option_page_for_posts', array( $this, 'translate_page_for_posts' ) ); + + // Support theme customizer + if ( isset( $_POST['wp_customize'], $_POST['customized'] ) ) { + add_filter( 'pre_option_page_on_front', 'pll_get_post', 20 ); + add_filter( 'pre_option_page_for_post', 'pll_get_post', 20 ); + } + } + + /** + * Translates the page_id query var when the site root page is requested + * + * @since 1.8 + */ + public function pll_home_requested() { + set_query_var( 'page_id', $this->curlang->page_on_front ); + } + + /** + * Translates page on front + * + * @since 1.8 + * + * @param int $v page on front page id + * @return int + */ + public function translate_page_on_front( $v ) { + // returns the current page if there is no translation to avoid ugly notices + return isset( $this->curlang->page_on_front ) ? $this->curlang->page_on_front : $v; + } + + /** + * Manages canonical redirection of the homepage when using page on front + * + * @since 0.1 + * + * @param string $redirect_url + * @param string $requested_url + * @return bool|string modified url, false if redirection is canceled + */ + public function redirect_canonical( $redirect_url, $requested_url ) { + global $wp_query; + if ( is_page() && ! is_feed() && isset( $wp_query->queried_object ) && $wp_query->queried_object->ID == $this->curlang->page_on_front ) { + $url = is_paged() ? $this->links_model->add_paged_to_link( $this->links->get_home_url(), $wp_query->query_vars['page'] ) : $this->links->get_home_url(); + + // Don't forget additional query vars + $query = parse_url( $redirect_url, PHP_URL_QUERY ); + if ( ! empty( $query ) ) { + parse_str( $query, $query_vars ); + $query_vars = rawurlencode_deep( $query_vars ); // WP encodes query vars values + $url = add_query_arg( $query_vars, $url ); + } + + return $url; + } + + return $redirect_url; + } + + /** + * Translates the url of the page on front and page for posts + * + * @since 1.8 + * + * @param string $url not used + * @param object $language language in which we want the translation + * @param int $queried_object_id id of the queried object + * @return string + */ + public function pll_pre_translation_url( $url, $language, $queried_object_id ) { + if ( ! empty( $queried_object_id ) ) { + // Page for posts + if ( $GLOBALS['wp_query']->is_posts_page && ( $id = $this->model->post->get( $queried_object_id, $language ) ) ) { + $url = get_permalink( $id ); + } + + // Page on front + elseif ( is_front_page() && $language->page_on_front && ( $language->page_on_front == $this->model->post->get( $queried_object_id, $language ) ) ) { + $url = $language->home_url; + } + } + + return $url; + } + + /** + * Handles canonical redirection if we are on a static front page + * + * @since 1.8 + * + * @param string $redirect_url + * @return bool|string + */ + public function pll_check_canonical_url( $redirect_url ) { + if ( ! empty( $this->curlang->page_on_front ) && is_page( $this->curlang->page_on_front ) ) { + // Redirect www.mysite.fr to mysite.fr + if ( 3 === $this->options['force_lang'] ) { + foreach ( $this->options['domains'] as $lang => $domain ) { + $host = parse_url( $domain, PHP_URL_HOST ); + if ( 'www.' . $_SERVER['HTTP_HOST'] === $host || 'www.' . $host === $_SERVER['HTTP_HOST'] ) { + $language = $this->model->get_language( $lang ); + return $language->home_url; + } + } + } + + // Prevents canonical redirection made by WP from secondary language to main language + if ( $this->options['redirect_lang'] ) { + return false; + } + } + return $redirect_url; + } + + /** + * Setups query vars when requesting a static front page + * + * @since 1.8 + * + * @param bool|object $lang + * @param object $query + * @return bool|object + */ + public function page_on_front_query( $lang, $query ) { + if ( ! empty( $lang ) || ! $this->page_on_front ) { + return $lang; + } + + // The home page is requested + if ( did_action( 'home_requested' ) ) { + $query->set( 'page_id', $lang->page_on_front ); + } + + // Redirect the language page to the homepage when using a static front page + elseif ( ( $this->options['redirect_lang'] || $this->options['hide_default'] ) && ( count( $query->query ) == 1 || ( ( is_preview() || is_paged() || ! empty( $query->query['page'] ) ) && count( $query->query ) == 2 ) || ( ( is_preview() && ( is_paged() || ! empty( $query->query['page'] ) ) ) && count( $query->query ) == 3 ) ) && is_tax( 'language' ) ) { + $lang = $this->model->get_language( get_query_var( 'lang' ) ); + $query->set( 'page_id', $lang->page_on_front ); + $query->is_singular = $query->is_page = true; + $query->is_archive = $query->is_tax = false; + unset( $query->query_vars['lang'], $query->queried_object ); // Reset queried object + } + + // Fix paged static front page in plain permalinks when Settings > Reading doesn't match the default language + elseif ( ! $this->links_model->using_permalinks && count( $query->query ) === 1 && ! empty( $query->query['page'] ) ) { + $lang = $this->model->get_language( $this->options['default_lang'] ); + $query->set( 'page_id', $lang->page_on_front ); + $query->is_singular = $query->is_page = true; + $query->is_archive = $query->is_tax = false; + unset( $query->query_vars['lang'], $query->queried_object ); // Reset queried object + } + + // Set the language when requesting a static front page + else { + $page_id = $this->get_page_id( $query ); + $languages = $this->model->get_languages_list(); + $pages = wp_list_pluck( $languages, 'page_on_front' ); + + if ( ! empty( $page_id ) && false !== $n = array_search( $page_id, $pages ) ) { + $lang = $languages[ $n ]; + } + } + + // Fix for page_on_front + if ( ( $this->options['force_lang'] < 2 || ! $this->options['redirect_lang'] ) && $this->links_model->using_permalinks && ! empty( $lang ) && isset( $query->query['paged'] ) ) { + $query->set( 'page', $query->query['paged'] ); + unset( $query->query['paged'] ); + } elseif ( ! $this->links_model->using_permalinks && ! empty( $query->query['page'] ) ) { + $query->is_paged = true; + } + + return $lang; + } + + /** + * Setups query vars when requesting a posts page + * + * @since 1.8 + * + * @param bool|object $lang + * @param object $query + * @return bool|object + */ + public function page_for_posts_query( $lang, $query ) { + if ( empty( $lang ) && $this->page_for_posts ) { + $page_id = $this->get_page_id( $query ); + + if ( ! empty( $page_id ) && in_array( $page_id, $pages = $this->model->get_languages_list( array( 'fields' => 'page_for_posts' ) ) ) ) { + // Fill the cache with all pages for posts to avoid one query per page later + // The posts_per_page limit is a trick to avoid splitting the query + get_posts( array( 'posts_per_page' => 999, 'post_type' => 'page', 'post__in' => $pages, 'lang' => '' ) ); + + $lang = $this->model->post->get_language( $page_id ); + $query->is_singular = $query->is_page = false; + $query->is_home = $query->is_posts_page = true; + } + } + return $lang; + } + + /** + * Get queried page_id ( if exists ) + * If permalinks are used, WordPress does set and use $query->queried_object_id and sets $query->query_vars['page_id'] to 0 + * and does set and use $query->query_vars['page_id'] if permalinks are not used :( + * + * @since 1.5 + * + * @param object $query instance of WP_Query + * @return int page_id + */ + protected function get_page_id( $query ) { + if ( ! empty( $query->query_vars['pagename'] ) && isset( $query->queried_object_id ) ) { + return $query->queried_object_id; + } + + if ( isset( $query->query_vars['page_id'] ) ) { + return $query->query_vars['page_id']; + } + + return 0; // No page queried + } +} diff --git a/pole-sbv-content/plugins/polylang/frontend/frontend.php b/pole-sbv-content/plugins/polylang/frontend/frontend.php new file mode 100644 index 00000000..60b3a83c --- /dev/null +++ b/pole-sbv-content/plugins/polylang/frontend/frontend.php @@ -0,0 +1,185 @@ + inherited, reference to Polylang options array + * model => inherited, reference to PLL_Model object + * links_model => inherited, reference to PLL_Links_Model object + * links => reference to PLL_Links object + * static_pages => reference to PLL_Frontend_Static_Pages object + * filters_links => inherited, reference to PLL_Frontend_Filters_Links object + * choose_lang => reference to PLL_Choose_lang object + * curlang => current language + * filters => reference to PLL_Filters object + * filters_search => reference to PLL_Frontend_Filters_Search object + * nav_menu => reference to PLL_Frontend_Nav_Menu object + * auto_translate => optional, reference to PLL_Auto_Translate object + * + * @since 1.2 + */ +class PLL_Frontend extends PLL_Base { + public $curlang; + public $links, $choose_lang, $filters, $filters_search, $nav_menu, $auto_translate; + + /** + * constructor + * + * @since 1.2 + * + * @param object $links_model + */ + public function __construct( &$links_model ) { + parent::__construct( $links_model ); + + add_action( 'pll_language_defined', array( $this, 'pll_language_defined' ), 1 ); + + // avoids the language being the queried object when querying multiple taxonomies + add_action( 'parse_tax_query', array( $this, 'parse_tax_query' ), 1 ); + + // filters posts by language + add_action( 'parse_query', array( $this, 'parse_query' ), 6 ); + + // not before 'check_canonical_url' + if ( ! defined( 'PLL_AUTO_TRANSLATE' ) || PLL_AUTO_TRANSLATE ) { + add_action( 'template_redirect', array( $this, 'auto_translate' ), 7 ); + } + } + + /** + * setups the language chooser based on options + * + * @since 1.2 + */ + public function init() { + $this->links = new PLL_Frontend_Links( $this ); + + // Static front page and page for posts + if ( 'page' === get_option( 'show_on_front' ) ) { + $this->static_pages = new PLL_Frontend_Static_Pages( $this ); + } + + // setup the language chooser + $c = array( 'Content', 'Url', 'Url', 'Domain' ); + $class = 'PLL_Choose_Lang_' . $c[ $this->options['force_lang'] ]; + $this->choose_lang = new $class( $this ); + $this->choose_lang->init(); + + // need to load nav menu class early to correctly define the locations in the customizer when the language is set from the content + $this->nav_menu = new PLL_Frontend_Nav_Menu( $this ); + } + + /** + * setups filters and nav menus once the language has been defined + * + * @since 1.2 + */ + public function pll_language_defined() { + // filters + $this->filters_links = new PLL_Frontend_Filters_Links( $this ); + $this->filters = new PLL_Frontend_Filters( $this ); + $this->filters_search = new PLL_Frontend_Filters_Search( $this ); + + // Auto translate for Ajax + if ( ( ! defined( 'PLL_AUTO_TRANSLATE' ) || PLL_AUTO_TRANSLATE ) && wp_doing_ajax() ) { + $this->auto_translate(); + } + } + + /** + * when querying multiple taxonomies, makes sure that the language is not the queried object + * + * @since 1.8 + * + * @param object $query WP_Query object + */ + public function parse_tax_query( $query ) { + $pll_query = new PLL_Query( $query, $this->model ); + $queried_taxonomies = $pll_query->get_queried_taxonomies(); + + if ( ! empty( $queried_taxonomies ) && 'language' == reset( $queried_taxonomies ) ) { + $query->tax_query->queried_terms['language'] = array_shift( $query->tax_query->queried_terms ); + } + } + + /** + * modifies some query vars to "hide" that the language is a taxonomy and avoid conflicts + * + * @since 1.2 + * + * @param object $query WP_Query object + */ + public function parse_query( $query ) { + $qv = $query->query_vars; + $pll_query = new PLL_Query( $query, $this->model ); + $taxonomies = $pll_query->get_queried_taxonomies(); + + // Allow filtering recent posts and secondary queries by the current language + if ( ! empty( $this->curlang ) ) { + $pll_query->filter_query( $this->curlang ); + } + + // modifies query vars when the language is queried + if ( ! empty( $qv['lang'] ) || ( ! empty( $taxonomies ) && array( 'language' ) == array_values( $taxonomies ) ) ) { + // do we query a custom taxonomy? + $taxonomies = array_diff( $taxonomies , array( 'language', 'category', 'post_tag' ) ); + + // remove pages query when the language is set unless we do a search + // take care not to break the single page, attachment and taxonomies queries! + if ( empty( $qv['post_type'] ) && ! $query->is_search && ! $query->is_page && ! $query->is_attachment && empty( $taxonomies ) ) { + $query->set( 'post_type', 'post' ); + } + + // unset the is_archive flag for language pages to prevent loading the archive template + // keep archive flag for comment feed otherwise the language filter does not work + if ( empty( $taxonomies ) && ! $query->is_comment_feed && ! $query->is_post_type_archive && ! $query->is_date && ! $query->is_author && ! $query->is_category && ! $query->is_tag ) { + $query->is_archive = false; + } + + // unset the is_tax flag except if another custom tax is queried + if ( empty( $taxonomies ) && ($query->is_category || $query->is_tag || $query->is_author || $query->is_post_type_archive || $query->is_date || $query->is_search || $query->is_feed ) ) { + $query->is_tax = false; + unset( $query->queried_object ); // FIXME useless? + } + } + } + + /** + * auto translate posts and terms ids + * + * @since 1.2 + */ + public function auto_translate() { + $this->auto_translate = new PLL_Frontend_Auto_Translate( $this ); + } + + /** + * resets some variables when switching blog + * overrides parent method + * + * @since 1.5.1 + * + * @param int $new_blog + * @param int $old_blog + */ + public function switch_blog( $new_blog, $old_blog ) { + // need to check that some languages are defined when user is logged in, has several blogs, some without any languages + if ( parent::switch_blog( $new_blog, $old_blog ) && did_action( 'pll_language_defined' ) && $this->model->get_languages_list() ) { + static $restore_curlang; + if ( empty( $restore_curlang ) ) { + $restore_curlang = $this->curlang->slug; // to always remember the current language through blogs + } + + $lang = $this->model->get_language( $restore_curlang ); + $this->curlang = $lang ? $lang : $this->model->get_language( $this->options['default_lang'] ); + + if ( isset( $this->static_pages ) ) { + $this->static_pages->init(); + } + + $this->load_strings_translations(); + } + } +} diff --git a/pole-sbv-content/plugins/polylang/include/api.php b/pole-sbv-content/plugins/polylang/include/api.php new file mode 100644 index 00000000..3a39de59 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/api.php @@ -0,0 +1,379 @@ + displays a dropdown if set to 1, defaults to 0 + * echo => echoes the switcher if set to 1 ( default ) + * hide_if_empty => hides languages with no posts ( or pages ) if set to 1 ( default ) + * show_flags => shows flags if set to 1, defaults to 0 + * show_names => shows languages names if set to 1 ( default ) + * display_names_as => whether to display the language name or its slug, valid options are 'slug' and 'name', defaults to name + * force_home => forces linking to the home page is set to 1, defaults to 0 + * hide_if_no_translation => hides the link if there is no translation if set to 1, defaults to 0 + * hide_current => hides the current language if set to 1, defaults to 0 + * post_id => if not null, link to translations of post defined by post_id, defaults to null + * raw => set this to true to build your own custom language switcher, defaults to 0 + * item_spacing => whether to preserve or discard whitespace between list items, valid options are 'preserve' and 'discard', defaults to preserve + * + * @since 0.5 + * + * @param array $args optional + * @return null|string|array null if displaying, array if raw is requested, string otherwise + */ +function pll_the_languages( $args = '' ) { + if ( PLL() instanceof PLL_Frontend ) { + $switcher = new PLL_Switcher; + return $switcher->the_languages( PLL()->links, $args ); + } + return ''; +} + +/** + * Returns the current language on frontend + * Returns the language set in admin language filter on backend ( false if set to all languages ) + * + * @since 0.8.1 + * + * @param string $field Optional, the language field to return ( see PLL_Language ), defaults to 'slug' + * @return string|bool The requested field for the current language + */ +function pll_current_language( $field = 'slug' ) { + return isset( PLL()->curlang->$field ) ? PLL()->curlang->$field : false; +} + +/** + * Returns the default language + * + * @since 1.0 + * + * @param string $field Optional, the language field to return ( see PLL_Language ), defaults to 'slug' + * @return string The requested field for the default language + */ +function pll_default_language( $field = 'slug' ) { + return isset( PLL()->options['default_lang'] ) && ( $lang = PLL()->model->get_language( PLL()->options['default_lang'] ) ) && isset( $lang->$field ) ? $lang->$field : false; +} + +/** + * Among the post and its translations, returns the id of the post which is in the language represented by $slug + * + * @since 0.5 + * + * @param int $post_id post id + * @param string $slug optional language code, defaults to current language + * @return int|false|null post id of the translation if exists, false otherwise, null if the current language is not defined yet + */ +function pll_get_post( $post_id, $slug = '' ) { + return ( $slug = $slug ? $slug : pll_current_language() ) ? PLL()->model->post->get( $post_id, $slug ) : null; +} + +/** + * Among the term and its translations, returns the id of the term which is in the language represented by $slug + * + * @since 0.5 + * + * @param int $term_id term id + * @param string $slug optional language code, defaults to current language + * @return int|false|null term id of the translation if exists, false otherwise, null if the current language is not defined yet + */ +function pll_get_term( $term_id, $slug = '' ) { + return ( $slug = $slug ? $slug : pll_current_language() ) ? PLL()->model->term->get( $term_id, $slug ) : null; +} + +/** + * Returns the home url in the current language + * + * @since 0.8 + * + * @param string $lang language code ( optional on frontend ) + * @return string + */ +function pll_home_url( $lang = '' ) { + if ( empty( $lang ) ) { + $lang = pll_current_language(); + } + + return empty( $lang ) ? home_url( '/' ) : PLL()->links->get_home_url( $lang ); +} + +/** + * Registers a string for translation in the "strings translation" panel + * + * @since 0.6 + * + * @param string $name a unique name for the string + * @param string $string the string to register + * @param string $context optional the group in which the string is registered, defaults to 'polylang' + * @param bool $multiline optional wether the string table should display a multiline textarea or a single line input, defaults to single line + */ +function pll_register_string( $name, $string, $context = 'polylang', $multiline = false ) { + if ( PLL() instanceof PLL_Admin_Base ) { + PLL_Admin_Strings::register_string( $name, $string, $context, $multiline ); + } +} + +/** + * Translates a string ( previously registered with pll_register_string ) + * + * @since 0.6 + * + * @param string $string the string to translate + * @return string the string translation in the current language + */ +function pll__( $string ) { + return is_scalar( $string ) ? __( $string, 'pll_string' ) : $string; +} + +/** + * Translates a string ( previously registered with pll_register_string ) and escapes it for safe use in HTML output. + * + * @since 2.1 + * + * @param string $string the string to translate + * @return string translation in the current language + */ +function pll_esc_html__( $string ) { + return esc_html( pll__( $string ) ); +} + +/** + * Translates a string ( previously registered with pll_register_string ) and escapes it for safe use in HTML attributes. + * + * @since 2.1 + * + * @param string $string The string to translate + * @return string + */ +function pll_esc_attr__( $string ) { + return esc_attr( pll__( $string ) ); +} + +/** + * Echoes a translated string ( previously registered with pll_register_string ) + * + * @since 0.6 + * + * @param string $string The string to translate + */ +function pll_e( $string ) { + echo pll__( $string ); +} + +/** + * Echoes a translated string ( previously registered with pll_register_string ) and escapes it for safe use in HTML output. + * + * @since 2.1 + * + * @param string $string The string to translate + */ +function pll_esc_html_e( $string ) { + echo pll_esc_html__( $string ); +} + +/** + * Echoes a translated a string ( previously registered with pll_register_string ) and escapes it for safe use in HTML attributes. + * + * @since 2.1 + * + * @param string $string The string to translate + */ +function pll_esc_attr_e( $string ) { + echo pll_esc_attr__( $string ); +} + +/** + * Translates a string ( previously registered with pll_register_string ) + * + * @since 1.5.4 + * + * @param string $string the string to translate + * @param string $lang language code + * @return string the string translation in the requested language + */ +function pll_translate_string( $string, $lang ) { + if ( PLL() instanceof PLL_Frontend && pll_current_language() == $lang ) { + return pll__( $string ); + } + + if ( ! is_scalar( $string ) ) { + return $string; + } + + static $cache; // Cache object to avoid loading the same translations object several times + + if ( empty( $cache ) ) { + $cache = new PLL_Cache(); + } + + if ( false === $mo = $cache->get( $lang ) ) { + $mo = new PLL_MO(); + $mo->import_from_db( PLL()->model->get_language( $lang ) ); + $cache->set( $lang, $mo ); + } + + return $mo->translate( $string ); +} + +/** + * Returns true if Polylang manages languages and translations for this post type + * + * @since 1.0.1 + * + * @param string $post_type Post type name + * @return bool + */ +function pll_is_translated_post_type( $post_type ) { + return PLL()->model->is_translated_post_type( $post_type ); +} + +/** + * Returns true if Polylang manages languages and translations for this taxonomy + * + * @since 1.0.1 + * + * @param string $tax Taxonomy name + * @return bool + */ +function pll_is_translated_taxonomy( $tax ) { + return PLL()->model->is_translated_taxonomy( $tax ); +} + +/** + * Returns the list of available languages + * + * List of parameters accepted in $args: + * + * hide_empty => hides languages with no posts if set to true ( defaults to false ) + * fields => return only that field if set ( see PLL_Language for a list of fields ) + * + * @since 1.5 + * + * @param array $args list of parameters + * @return array + */ +function pll_languages_list( $args = array() ) { + $args = wp_parse_args( $args, array( 'fields' => 'slug' ) ); + return PLL()->model->get_languages_list( $args ); +} + +/** + * Set the post language + * + * @since 1.5 + * + * @param int $id post id + * @param string $lang language code + */ +function pll_set_post_language( $id, $lang ) { + PLL()->model->post->set_language( $id, $lang ); +} + +/** + * Set the term language + * + * @since 1.5 + * + * @param int $id term id + * @param string $lang language code + */ +function pll_set_term_language( $id, $lang ) { + PLL()->model->term->set_language( $id, $lang ); +} + +/** + * Save posts translations + * + * @since 1.5 + * + * @param array $arr an associative array of translations with language code as key and post id as value + */ +function pll_save_post_translations( $arr ) { + PLL()->model->post->save_translations( reset( $arr ), $arr ); +} + +/** + * Save terms translations + * + * @since 1.5 + * + * @param array $arr an associative array of translations with language code as key and term id as value + */ +function pll_save_term_translations( $arr ) { + PLL()->model->term->save_translations( reset( $arr ), $arr ); +} + +/** + * Returns the post language + * + * @since 1.5.4 + * + * @param int $post_id + * @param string $field Optional, the language field to return ( see PLL_Language ), defaults to 'slug' + * @return bool|string The requested field for the post language, false if no language is associated to that post + */ +function pll_get_post_language( $post_id, $field = 'slug' ) { + return ( $lang = PLL()->model->post->get_language( $post_id ) ) ? $lang->$field : false; +} + +/** + * Returns the term language + * + * @since 1.5.4 + * + * @param int $term_id + * @param string $field Optional, the language field to return ( see PLL_Language ), defaults to 'slug' + * @return bool|string The requested field for the term language, false if no language is associated to that term + */ +function pll_get_term_language( $term_id, $field = 'slug' ) { + return ( $lang = PLL()->model->term->get_language( $term_id ) ) ? $lang->$field : false; +} + +/** + * Returns an array of translations of a post + * + * @since 1.8 + * + * @param int $post_id + * @return array an associative array of translations with language code as key and translation post_id as value + */ +function pll_get_post_translations( $post_id ) { + return PLL()->model->post->get_translations( $post_id ); +} + +/** + * Returns an array of translations of a term + * + * @since 1.8 + * + * @param int $term_id + * @return array an associative array of translations with language code as key and translation term_id as value + */ +function pll_get_term_translations( $term_id ) { + return PLL()->model->term->get_translations( $term_id ); +} + +/** + * Count posts in a language + * + * @since 1.5 + * + * @param string $lang language code + * @param array $args ( accepted keys: post_type, m, year, monthnum, day, author, author_name, post_format ) + * @return int posts count + */ +function pll_count_posts( $lang, $args = array() ) { + return PLL()->model->count_posts( PLL()->model->get_language( $lang ), $args ); +} + +/** + * Allows to access the Polylang instance + * It is always preferable to use API functions + * Internal methods may be changed without prior notice + * + * @since 1.8 + */ +function PLL() { + return $GLOBALS['polylang']; +} diff --git a/pole-sbv-content/plugins/polylang/include/base.php b/pole-sbv-content/plugins/polylang/include/base.php new file mode 100644 index 00000000..66ef339b --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/base.php @@ -0,0 +1,126 @@ +links_model = &$links_model; + $this->model = &$links_model->model; + $this->options = &$this->model->options; + + $GLOBALS['l10n_unloaded']['pll_string'] = true; // Short-circuit _load_textdomain_just_in_time() for 'pll_string' domain in WP 4.6+ + + add_action( 'widgets_init', array( $this, 'widgets_init' ) ); + + // User defined strings translations + add_action( 'pll_language_defined', array( $this, 'load_strings_translations' ), 5 ); + add_action( 'change_locale', array( $this, 'load_strings_translations' ) ); // Since WP 4.7 + + // Switch_to_blog + add_action( 'switch_blog', array( $this, 'switch_blog' ), 10, 2 ); + } + + /** + * Registers our widgets + * + * @since 0.1 + */ + public function widgets_init() { + register_widget( 'PLL_Widget_Languages' ); + + // Overwrites the calendar widget to filter posts by language + if ( ! defined( 'PLL_WIDGET_CALENDAR' ) || PLL_WIDGET_CALENDAR ) { + unregister_widget( 'WP_Widget_Calendar' ); + register_widget( 'PLL_Widget_Calendar' ); + } + } + + /** + * Loads user defined strings translations + * + * @since 1.2 + * @since 2.1.3 $locale parameter added. + * + * @param string $locale Locale. Defaults to current locale. + */ + public function load_strings_translations( $locale = '' ) { + if ( empty( $locale ) ) { + $locale = get_locale(); + } + + $language = $this->model->get_language( $locale ); + + if ( ! empty( $language ) ) { + $mo = new PLL_MO(); + $mo->import_from_db( $language ); + $GLOBALS['l10n']['pll_string'] = &$mo; + } else { + unset( $GLOBALS['l10n']['pll_string'] ); + } + } + + /** + * Resets some variables when switching blog + * Applies only if Polylang is active on the new blog + * + * @since 1.5.1 + * + * @param int $new_blog + * @param int $old_blog + * @return bool not used by WP but by child class + */ + public function switch_blog( $new_blog, $old_blog ) { + $plugins = ( $sitewide_plugins = get_site_option( 'active_sitewide_plugins' ) ) && is_array( $sitewide_plugins ) ? array_keys( $sitewide_plugins ) : array(); + $plugins = array_merge( $plugins, get_option( 'active_plugins', array() ) ); + + // 2nd test needed when Polylang is not networked activated + // 3rd test needed when Polylang is networked activated and a new site is created + if ( $new_blog != $old_blog && in_array( POLYLANG_BASENAME, $plugins ) && get_option( 'polylang' ) ) { + $this->options = get_option( 'polylang' ); // Needed for menus + $this->links_model = $this->model->get_links_model(); + return true; + } + return false; + } + + /** + * Some backward compatibility with Polylang < 1.2 + * Allows for example to call $polylang->get_languages_list() instead of $polylang->model->get_languages_list() + * This works but should be slower than the direct call, thus an error is triggered in debug mode + * + * @since 1.2 + * + * @param string $func function name + * @param array $args function arguments + */ + public function __call( $func, $args ) { + foreach ( $this as $prop => &$obj ) { + if ( is_object( $obj ) && method_exists( $obj, $func ) ) { + if ( WP_DEBUG ) { + $debug = debug_backtrace(); + $i = 1 + empty( $debug[1]['line'] ); // The file and line are in $debug[2] if the function was called using call_user_func + trigger_error( sprintf( + '%1$s was called incorrectly in %3$s on line %4$s: the call to $polylang->%1$s() has been deprecated in Polylang 1.2, use PLL()->%2$s->%1$s() instead.' . "\nError handler", + $func, $prop, $debug[ $i ]['file'], $debug[ $i ]['line'] + ) ); + } + return call_user_func_array( array( $obj, $func ), $args ); + } + } + + $debug = debug_backtrace(); + trigger_error( sprintf( 'Call to undefined function PLL()->%1$s() in %2$s on line %3$s' . "\nError handler", $func, $debug[0]['file'], $debug[0]['line'] ), E_USER_ERROR ); + } +} diff --git a/pole-sbv-content/plugins/polylang/include/cache.php b/pole-sbv-content/plugins/polylang/include/cache.php new file mode 100644 index 00000000..971df9c3 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/cache.php @@ -0,0 +1,72 @@ +blog_id = get_current_blog_id(); + add_action( 'switch_blog', array( $this, 'switch_blog' ) ); + } + + /** + * Called when switching blog + * + * @since 1.7 + * + * @param int $new_blog + */ + public function switch_blog( $new_blog ) { + $this->blog_id = $new_blog; + } + + /** + * Add a value in cache + * + * @since 1.7 + * + * @param string $key + * @param mixed $data + */ + public function set( $key, $data ) { + $this->cache[ $this->blog_id ][ $key ] = $data; + } + + /** + * Get value from cache + * + * @since 1.7 + * + * @param string $key + * @return mixed $data + */ + public function get( $key ) { + return isset( $this->cache[ $this->blog_id ][ $key ] ) ? $this->cache[ $this->blog_id ][ $key ] : false; + } + + /** + * Clean the cache (for this blog only) + * + * @since 1.7 + * + * @param string $key + */ + public function clean( $key = '' ) { + if ( empty( $key ) ) { + unset( $this->cache[ $this->blog_id ] ); + } + else { + unset( $this->cache[ $this->blog_id ][ $key ] ); + } + } +} diff --git a/pole-sbv-content/plugins/polylang/include/class-polylang.php b/pole-sbv-content/plugins/polylang/include/class-polylang.php new file mode 100644 index 00000000..4f5f07ce --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/class-polylang.php @@ -0,0 +1,222 @@ +is_deactivation() ) { + return; + } + + // Plugin initialization + // Take no action before all plugins are loaded + add_action( 'plugins_loaded', array( $this, 'init' ), 1 ); + + // Override load text domain waiting for the language to be defined + // Here for plugins which load text domain as soon as loaded :( + if ( ! defined( 'PLL_OLT' ) || PLL_OLT ) { + PLL_OLT_Manager::instance(); + } + + // Extra code for compatibility with some plugins + // Loaded as soon as possible as we may need to act before other plugins are loaded + if ( ! defined( 'PLL_PLUGINS_COMPAT' ) || PLL_PLUGINS_COMPAT ) { + PLL_Plugins_Compat::instance(); + } + } + + /** + * Autoload classes + * + * @since 1.2 + * + * @param string $class + */ + public function autoload( $class ) { + // Not a Polylang class + if ( 0 !== strncmp( 'PLL_', $class, 4 ) ) { + return; + } + + $class = str_replace( '_', '-', strtolower( substr( $class, 4 ) ) ); + $to_find = array( 'media', 'share', 'slug', 'slugs', 'sync', 'translate', 'wpml', 'xdata', 'rest' ); + $dir = implode( '-', array_intersect( explode( '-', $class ), $to_find ) ); + + $dirs = array( + PLL_FRONT_INC, + PLL_MODULES_INC, + PLL_MODULES_INC . "/$dir", + PLL_MODULES_INC . '/plugins', + PLL_INSTALL_INC, + PLL_ADMIN_INC, + PLL_SETTINGS_INC, + PLL_INC, + ); + + foreach ( $dirs as $dir ) { + if ( file_exists( $file = "$dir/$class.php" ) ) { + require_once $file; + return; + } + } + } + + /** + * Tells whether the current request is an ajax request on frontend or not + * + * @since 2.2 + * + * @return bool + */ + static public function is_ajax_on_front() { + // Special test for plupload which does not use jquery ajax and thus does not pass our ajax prefilter + // Special test for customize_save done in frontend but for which we want to load the admin + $in = isset( $_REQUEST['action'] ) && in_array( $_REQUEST['action'], array( 'upload-attachment', 'customize_save' ) ); + return wp_doing_ajax() && empty( $_REQUEST['pll_ajax_backend'] ) && ! $in; + } + + /** + * Defines constants + * May be overriden by a plugin if set before plugins_loaded, 1 + * + * @since 1.6 + */ + static public function define_constants() { + // Cookie name. no cookie will be used if set to false + if ( ! defined( 'PLL_COOKIE' ) ) { + define( 'PLL_COOKIE', 'pll_language' ); + } + + // Avoid loading polylang admin for frontend ajax requests + if ( ! defined( 'PLL_AJAX_ON_FRONT' ) ) { + define( 'PLL_AJAX_ON_FRONT', self::is_ajax_on_front() ); + } + + // Admin + if ( ! defined( 'PLL_ADMIN' ) ) { + define( 'PLL_ADMIN', defined( 'DOING_CRON' ) || ( is_admin() && ! PLL_AJAX_ON_FRONT ) ); + } + + // Settings page whatever the tab + if ( ! defined( 'PLL_SETTINGS' ) ) { + define( 'PLL_SETTINGS', is_admin() && ( ( isset( $_GET['page'] ) && 0 === strpos( $_GET['page'], 'mlang' ) ) || ! empty( $_REQUEST['pll_ajax_settings'] ) ) ); + } + } + + /** + * Polylang initialization + * setups models and separate admin and frontend + * + * @since 1.2 + */ + public function init() { + global $polylang; + + self::define_constants(); + $options = get_option( 'polylang' ); + + // Plugin upgrade + if ( $options && version_compare( $options['version'], POLYLANG_VERSION, '<' ) ) { + $upgrade = new PLL_Upgrade( $options ); + if ( ! $upgrade->upgrade() ) { // If the version is too old + return; + } + } + + // Make sure that this filter is *always* added before PLL_Model::get_languages_list() is called for the first time + add_filter( 'pll_languages_list', array( 'PLL_Static_Pages', 'pll_languages_list' ), 2, 2 ); // Before PLL_Links_Model + + /** + * Filter the model class to use + * /!\ this filter is fired *before* the $polylang object is available + * + * @since 1.5 + * + * @param string $class either PLL_Model or PLL_Admin_Model + */ + $class = apply_filters( 'pll_model', PLL_SETTINGS ? 'PLL_Admin_Model' : 'PLL_Model' ); + $model = new $class( $options ); + $links_model = $model->get_links_model(); + + if ( PLL_SETTINGS ) { + $polylang = new PLL_Settings( $links_model ); + } + elseif ( PLL_ADMIN ) { + $polylang = new PLL_Admin( $links_model ); + } + // Do nothing on frontend if no language is defined + elseif ( $model->get_languages_list() && empty( $_GET['deactivate-polylang'] ) ) { + $polylang = new PLL_Frontend( $links_model ); + } + + if ( ! $model->get_languages_list() ) { + /** + * Fires when no language has been defined yet + * Used to load overriden textdomains + * + * @since 1.2 + */ + do_action( 'pll_no_language_defined' ); + } + + if ( ! empty( $polylang ) ) { + /** + * Fires after the $polylang object is created and before the API is loaded + * + * @since 2.0 + * + * @param object $polylang + */ + do_action_ref_array( 'pll_pre_init', array( &$polylang ) ); + + require_once PLL_INC . '/api.php'; // Loads the API + + if ( ! defined( 'PLL_WPML_COMPAT' ) || PLL_WPML_COMPAT ) { + PLL_WPML_Compat::instance(); // WPML API + PLL_WPML_Config::instance(); // wpml-config.xml + } + + $polylang->init(); + + /** + * Fires after the $polylang object and the API is loaded + * + * @since 1.7 + * + * @param object $polylang + */ + do_action_ref_array( 'pll_init', array( &$polylang ) ); + } + } +} + +new Polylang(); diff --git a/pole-sbv-content/plugins/polylang/include/filters-links.php b/pole-sbv-content/plugins/polylang/include/filters-links.php new file mode 100644 index 00000000..e7c55013 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/filters-links.php @@ -0,0 +1,167 @@ +links = &$polylang->links; + $this->links_model = &$polylang->links_model; + $this->model = &$polylang->model; + $this->options = &$polylang->options; + $this->curlang = &$polylang->curlang; + + // Low priority on links filters to come after any other modifications + if ( $this->options['force_lang'] ) { + add_filter( 'post_link', array( $this, 'post_type_link' ), 20, 2 ); + add_filter( '_get_page_link', array( $this, '_get_page_link' ), 20, 2 ); + } + + add_filter( 'post_type_link', array( $this, 'post_type_link' ), 20, 2 ); + add_filter( 'term_link', array( $this, 'term_link' ), 20, 3 ); + + if ( $this->options['force_lang'] > 0 ) { + add_filter( 'attachment_link', array( $this, 'attachment_link' ), 20, 2 ); + } + + if ( 3 === $this->options['force_lang'] ) { + add_filter( 'preview_post_link', array( $this, 'preview_post_link' ), 20 ); + } + + // Rewrites post types archives links to filter them by language + add_filter( 'post_type_archive_link', array( $this, 'post_type_archive_link' ), 20, 2 ); + } + + /** + * Modifies page links + * + * @since 1.7 + * + * @param string $link post link + * @param int $post_id post ID + * @return string modified post link + */ + public function _get_page_link( $link, $post_id ) { + // /!\ WP does not use pretty permalinks for preview + return false !== strpos( $link, 'preview=true' ) && false !== strpos( $link, 'page_id=' ) ? $link : $this->links_model->switch_language_in_link( $link, $this->model->post->get_language( $post_id ) ); + } + + /** + * Modifies attachment links + * + * @since 1.6.2 + * + * @param string $link attachment link + * @param int $post_id attachment link + * @return string modified attachment link + */ + public function attachment_link( $link, $post_id ) { + return wp_get_post_parent_id( $post_id ) ? $link : $this->links_model->switch_language_in_link( $link, $this->model->post->get_language( $post_id ) ); + } + + /** + * Modifies custom posts links + * + * @since 1.6 + * + * @param string $link post link + * @param object $post post object + * @return string modified post link + */ + public function post_type_link( $link, $post ) { + // /!\ WP does not use pretty permalinks for preview + if ( ( false === strpos( $link, 'preview=true' ) || false === strpos( $link, 'p=' ) ) && $this->model->is_translated_post_type( $post->post_type ) ) { + $lang = $this->model->post->get_language( $post->ID ); + $link = $this->options['force_lang'] ? $this->links_model->switch_language_in_link( $link, $lang ) : $link; + + /** + * Filter a post or custom post type link + * + * @since 1.6 + * + * @param string $link the post link + * @param object $lang the current language + * @param object $post the post object + */ + $link = apply_filters( 'pll_post_type_link', $link, $lang, $post ); + } + + return $link; + } + + /** + * Modifies term link + * + * @since 0.7 + * + * @param string $link term link + * @param object $term term object + * @param string $tax taxonomy name + * @return string modified term link + */ + public function term_link( $link, $term, $tax ) { + if ( $this->model->is_translated_taxonomy( $tax ) ) { + $lang = $this->model->term->get_language( $term->term_id ); + $link = $this->options['force_lang'] ? $this->links_model->switch_language_in_link( $link, $lang ) : $link; + + /** + * Filter a term link + * + * @since 1.6 + * + * @param string $link the term link + * @param object $lang the current language + * @param object $term the term object + */ + return apply_filters( 'pll_term_link', $link, $lang, $term ); + } + + // in case someone calls get_term_link for the 'language' taxonomy + if ( 'language' === $tax ) { + return $this->links_model->home_url( $term ); + } + + return $link; + } + + /** + * FIXME: keeps the preview post link on default domain when using multiple domains + * + * @since 1.6.1 + * + * @param string $url + * @return string modified url + */ + public function preview_post_link( $url ) { + return $this->links_model->remove_language_from_link( $url ); + } + + /** + * Modifies the post type archive links to add the language parameter + * only if the post type is translated + * + * The filter was originally only on frontend but is needed on admin too for + * compatibility with the archive link of the ACF link field since ACF 5.4.0 + * + * @since 1.7.6 + * + * @param string $link + * @param string $post_type + * @return string modified link + */ + public function post_type_archive_link( $link, $post_type ) { + return $this->model->is_translated_post_type( $post_type ) && 'post' !== $post_type ? $this->links_model->switch_language_in_link( $link, $this->curlang ) : $link; + } +} + diff --git a/pole-sbv-content/plugins/polylang/include/filters.php b/pole-sbv-content/plugins/polylang/include/filters.php new file mode 100644 index 00000000..f7da7cc6 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/filters.php @@ -0,0 +1,227 @@ +links_model = &$polylang->links_model; + $this->model = &$polylang->model; + $this->options = &$polylang->options; + $this->curlang = &$polylang->curlang; + + // Filters the comments according to the current language + add_action( 'parse_comment_query', array( $this, 'parse_comment_query' ) ); + add_filter( 'comments_clauses', array( $this, 'comments_clauses' ), 10, 2 ); + + // Filters the get_pages function according to the current language + add_filter( 'get_pages', array( $this, 'get_pages' ), 10, 2 ); + + // Converts the locale to a valid W3C locale + add_filter( 'language_attributes', array( $this, 'language_attributes' ) ); + + // Prevents deleting all the translations of the default category + add_filter( 'map_meta_cap', array( $this, 'fix_delete_default_category' ), 10, 4 ); + + // Translate the site title in emails sent to users + add_filter( 'password_change_email', array( $this, 'translate_user_email' ) ); + add_filter( 'email_change_email', array( $this, 'translate_user_email' ) ); + } + + /** + * Get the language to filter a comments query + * + * @since 2.0 + * + * @param object $query + * @return object|bool the language(s) to use in the filter, false otherwise + */ + protected function get_comments_queried_language( $query ) { + // Don't filter comments if comment ids or post ids are specified + $plucked = wp_array_slice_assoc( $query->query_vars, array( 'comment__in', 'parent', 'post_id', 'post__in', 'post_parent' ) ); + $fields = array_filter( $plucked ); + if ( ! empty( $fields ) ) { + return false; + } + + // Don't filter comments if a non translated post type is specified + if ( ! empty( $query->query_vars['post_type'] ) && ! $this->model->is_translated_post_type( $query->query_vars['post_type'] ) ) { + return false; + } + + return empty( $query->query_vars['lang'] ) ? $this->curlang : $this->model->get_language( $query->query_vars['lang'] ); + } + + /** + * Adds language dependent cache domain when querying comments + * Useful as the 'lang' parameter is not included in cache key by WordPress + * Needed since WP 4.6 as comments have been added to persistent cache. See #36906, #37419 + * + * @since 2.0 + * + * @param object $query + */ + public function parse_comment_query( $query ) { + if ( $lang = $this->get_comments_queried_language( $query ) ) { + $key = '_' . ( is_array( $lang ) ? implode( ',', $lang ) : $this->model->get_language( $lang )->slug ); + $query->query_vars['cache_domain'] = empty( $query->query_vars['cache_domain'] ) ? 'pll' . $key : $query->query_vars['cache_domain'] . $key; + } + } + + /** + * Filters the comments according to the current language + * Used by the recent comments widget and admin language filter + * + * @since 0.2 + * + * @param array $clauses sql clauses + * @param object $query WP_Comment_Query object + * @return array modified $clauses + */ + public function comments_clauses( $clauses, $query ) { + global $wpdb; + + $lang = $this->get_comments_queried_language( $query ); + + if ( ! empty( $lang ) ) { + // If this clause is not already added by WP + if ( ! strpos( $clauses['join'], '.ID' ) ) { + $clauses['join'] .= " JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->comments.comment_post_ID"; + } + + $clauses['join'] .= $this->model->post->join_clause(); + $clauses['where'] .= $this->model->post->where_clause( $lang ); + } + return $clauses; + } + + /** + * Filters get_pages per language + * + * @since 1.4 + * + * @param array $pages an array of pages already queried + * @param array $args get_pages arguments + * @return array modified list of pages + */ + public function get_pages( $pages, $args ) { + if ( isset( $args['lang'] ) && empty( $args['lang'] ) ) { + return $pages; + } + + $language = empty( $args['lang'] ) ? $this->curlang : $this->model->get_language( $args['lang'] ); + + if ( empty( $language ) || empty( $pages ) || ! $this->model->is_translated_post_type( $args['post_type'] ) ) { + return $pages; + } + + static $once = false; + + // Obliged to redo the get_pages query if we want to get the right number + if ( ! empty( $args['number'] ) && ! $once ) { + $once = true; // avoid infinite loop + + $r = array( + 'lang' => 0, // So this query is not filtered + 'numberposts' => -1, + 'nopaging' => true, + 'post_type' => $args['post_type'], + 'fields' => 'ids', + 'tax_query' => array( + array( + 'taxonomy' => 'language', + 'field' => 'term_taxonomy_id', // Since WP 3.5 + 'terms' => $language->term_taxonomy_id, + 'operator' => 'NOT IN', + ), + ), + ); + + $args['exclude'] = array_merge( $args['exclude'], get_posts( $r ) ); + $pages = get_pages( $args ); + } + + $ids = wp_list_pluck( $pages, 'ID' ); + + // Filters the queried list of pages by language + if ( ! $once ) { + $ids = array_intersect( $ids, $this->model->post->get_objects_in_language( $language ) ); + + foreach ( $pages as $key => $page ) { + if ( ! in_array( $page->ID, $ids ) ) { + unset( $pages[ $key ] ); + } + } + + $pages = array_values( $pages ); // In case 3rd parties suppose the existence of $pages[0] + } + + // Not done by WP but extremely useful for performance when manipulating taxonomies + update_object_term_cache( $ids, $args['post_type'] ); + + $once = false; // In case get_pages is called another time + return $pages; + } + + /** + * Converts WordPress locale to valid W3 locale in html language attributes + * + * @since 1.8 + * + * @param string $output language attributes + * @return string + */ + public function language_attributes( $output ) { + if ( $language = $this->model->get_language( get_locale() ) ) { + $output = str_replace( '"' . get_bloginfo( 'language' ) . '"', '"' . $language->get_locale( 'display' ) . '"', $output ); + } + return $output; + } + + + /** + * Prevents deleting all the translations of the default category + * + * @since 2.1 + * + * @param array $caps The user's actual capabilities. + * @param string $cap Capability name. + * @param int $user_id The user ID. + * @param array $args Adds the context to the cap. The category id. + * @return array + */ + public function fix_delete_default_category( $caps, $cap, $user_id, $args ) { + if ( 'delete_term' === $cap && array_intersect( $args, $this->model->term->get_translations( get_option( 'default_category' ) ) ) ) { + $caps[] = 'do_not_allow'; + } + + return $caps; + } + + /** + * Translates the site title in emails sent to the user (change email, reset password) + * It is necessary to filter the email because WP evaluates the site title before calling switch_to_locale() + * + * @since 2.1.3 + * + * @param array $email + * @return array + */ + function translate_user_email( $email ) { + $blog_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ); + $email['subject'] = sprintf( $email['subject'], $blog_name ); + $email['message'] = str_replace( '###SITENAME###', $blog_name, $email['message'] ); + return $email; + } +} diff --git a/pole-sbv-content/plugins/polylang/include/functions.php b/pole-sbv-content/plugins/polylang/include/functions.php new file mode 100644 index 00000000..ab555743 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/functions.php @@ -0,0 +1,84 @@ + id of term in 'language' taxonomy + * name => language name. Ex: English + * slug => language code used in url. Ex: en + * term_group => order of the language when displayed in a list of languages + * term_taxonomy_id => term taxonomy id in 'language' taxonomy + * taxonomy => 'language' + * description => language locale for backward compatibility + * parent => 0 / not used + * count => number of posts and pages in that language + * tl_term_id => id of the term in 'term_language' taxonomy + * tl_term_taxonomy_id => term taxonomy id in 'term_language' taxonomy + * tl_count => number of terms in that language ( not used by Polylang ) + * locale => WordPress language locale. Ex: en_US + * is_rtl => 1 if the language is rtl + * flag_code => code of the flag + * flag_url => url of the flag + * flag => html img of the flag + * custom_flag_url => url of the custom flag if exists, internal use only, moves to flag_url on frontend + * custom_flag => html img of the custom flag if exists, internal use only, moves to flag on frontend + * home_url => home url in this language + * search_url => home url to use in search forms + * host => host of this language + * mo_id => id of the post storing strings translations + * page_on_front => id of the page on front in this language ( set from pll_languages_list filter ) + * page_for_posts => id of the page for posts in this language ( set from pll_languages_list filter ) + * + * @since 1.2 + */ +class PLL_Language { + public $term_id, $name, $slug, $term_group, $term_taxonomy_id, $taxonomy, $description, $parent, $count; + public $tl_term_id, $tl_term_taxonomy_id, $tl_count; + public $locale, $is_rtl; + public $flag_url, $flag; + public $home_url, $search_url; + public $host, $mo_id; + public $page_on_front, $page_for_posts; + + /** + * constructor: builds a language object given its two corresponding terms in language and term_language taxonomies + * + * @since 1.2 + * + * @param object|array $language 'language' term or language object properties stored as an array + * @param object $term_language Corresponding 'term_language' term + */ + public function __construct( $language, $term_language = null ) { + // build the object from all properties stored as an array + if ( empty( $term_language ) ) { + foreach ( $language as $prop => $value ) { + $this->$prop = $value; + } + } + + // build the object from taxonomies + else { + foreach ( $language as $prop => $value ) { + $this->$prop = in_array( $prop, array( 'term_id', 'term_taxonomy_id', 'count' ) ) ? (int) $language->$prop : $language->$prop; + } + + // although it would be convenient here, don't assume the term is shared between taxonomies as it may not be the case in future + // http://make.wordpress.org/core/2013/07/28/potential-roadmap-for-taxonomy-meta-and-post-relationships/ + $this->tl_term_id = (int) $term_language->term_id; + $this->tl_term_taxonomy_id = (int) $term_language->term_taxonomy_id; + $this->tl_count = (int) $term_language->count; + + // the description field can contain any property + // backward compatibility for is_rtl + $description = maybe_unserialize( $language->description ); + foreach ( $description as $prop => $value ) { + 'rtl' == $prop ? $this->is_rtl = $value : $this->$prop = $value; + } + + $this->description = &$this->locale; // backward compatibility with Polylang < 1.2 + + $this->mo_id = PLL_MO::get_id( $this ); + } + } + + /** + * sets flag_url and flag properties + * + * @since 1.2 + */ + public function set_flag() { + $flags['flag']['url'] = ''; + + // Polylang builtin flags + if ( ! empty( $this->flag_code ) && file_exists( POLYLANG_DIR . ( $file = '/flags/' . $this->flag_code . '.png' ) ) ) { + $flags['flag']['url'] = esc_url_raw( plugins_url( $file, POLYLANG_FILE ) ); + + // if base64 encoded flags are preferred + if ( ! defined( 'PLL_ENCODED_FLAGS' ) || PLL_ENCODED_FLAGS ) { + $flags['flag']['src'] = 'data:image/png;base64,' . base64_encode( file_get_contents( POLYLANG_DIR . $file ) ); + } else { + $flags['flag']['src'] = esc_url( plugins_url( $file, POLYLANG_FILE ) ); + } + } + + // custom flags ? + if ( file_exists( PLL_LOCAL_DIR . ( $file = '/' . $this->locale . '.png' ) ) || file_exists( PLL_LOCAL_DIR . ( $file = '/' . $this->locale . '.jpg' ) ) ) { + $url = content_url( '/polylang' . $file ); + $flags['custom_flag']['url'] = esc_url_raw( $url ); + $flags['custom_flag']['src'] = esc_url( $url ); + } + + /** + * Filter the flag title attribute + * Defaults to the language name + * + * @since 0.7 + * + * @param string $title the flag title attribute + * @param string $slug the language code + * @param string $locale the language locale + */ + $title = apply_filters( 'pll_flag_title', $this->name, $this->slug, $this->locale ); + + foreach ( $flags as $key => $flag ) { + $this->{$key . '_url'} = empty( $flag['url'] ) ? '' : $flag['url']; + + /** + * Filter the html markup of a flag + * + * @since 1.0.2 + * + * @param string $flag html markup of the flag or empty string + * @param string $slug language code + */ + $this->{$key} = apply_filters( 'pll_get_flag', empty( $flag['src'] ) ? '' : + sprintf( + '%s', + $flag['src'], + esc_attr( $title ), + esc_attr( $this->name ) + ), + $this->slug + ); + } + } + + /** + * replace flag by custom flag + * takes care of url scheme + * + * @since 1.7 + */ + public function set_custom_flag() { + // overwrite with custom flags on frontend only + if ( ! empty( $this->custom_flag ) ) { + $this->flag = $this->custom_flag; + $this->flag_url = $this->custom_flag_url; + unset( $this->custom_flag, $this->custom_flag_url ); // hide this + } + + // set url scheme, also for default flags + if ( is_ssl() ) { + $this->flag = str_replace( 'http://', 'https://', $this->flag ); + $this->flag_url = str_replace( 'http://', 'https://', $this->flag_url ); + } else { + $this->flag = str_replace( 'https://', 'http://', $this->flag ); + $this->flag_url = str_replace( 'https://', 'http://', $this->flag_url ); + } + } + + /** + * updates post and term count + * + * @since 1.2 + */ + public function update_count() { + wp_update_term_count( $this->term_taxonomy_id, 'language' ); // posts count + wp_update_term_count( $this->tl_term_taxonomy_id, 'term_language' ); // terms count + } + + /** + * set home_url and search_url properties + * + * @since 1.3 + * + * @param string $search_url + * @param string $home_url + */ + public function set_home_url( $search_url, $home_url ) { + $this->search_url = $search_url; + $this->home_url = $home_url; + } + + /** + * set home_url scheme + * this can't be cached across pages + * + * @since 1.6.4 + */ + public function set_home_url_scheme() { + if ( is_ssl() ) { + $this->home_url = str_replace( 'http://', 'https://', $this->home_url ); + $this->search_url = str_replace( 'http://', 'https://', $this->search_url ); + } + + else { + $this->home_url = str_replace( 'https://', 'http://', $this->home_url ); + $this->search_url = str_replace( 'https://', 'http://', $this->search_url ); + } + } + + /** + * returns the language locale + * converts WP locales to W3C valid locales for display + * @see #33511 + * + * @since 1.8 + * + * @param string $filter either 'display' or 'raw', defaults to raw + * @return string + */ + public function get_locale( $filter = 'raw' ) { + if ( 'display' == $filter ) { + static $valid_locales = array( + 'bel' => 'be', + 'bre' => 'br', + 'de_CH_informal' => 'de_CH', + 'de_DE_formal' => 'de_DE', + 'dzo' => 'dz', + 'ido' => 'io', + 'kin' => 'rw', + 'oci' => 'oc', + 'mri' => 'mi', + 'nl_NL_formal' => 'nl_NL', + 'roh' => 'rm', + 'srd' => 'sc', + 'tuk' => 'tk', + ); + $locale = isset( $valid_locales[ $this->locale ] ) ? $valid_locales[ $this->locale ] : $this->locale; + return str_replace( '_', '-', $locale ); + } + return $this->locale; + } +} diff --git a/pole-sbv-content/plugins/polylang/include/license.php b/pole-sbv-content/plugins/polylang/include/license.php new file mode 100644 index 00000000..80e48bb3 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/license.php @@ -0,0 +1,171 @@ +id = sanitize_title( $item_name ); + $this->file = $file; + $this->name = $item_name; + $this->version = $version; + $this->author = $author; + $this->api_url = empty( $api_url ) ? $this->api_url : $api_url; + + $licenses = get_option( 'polylang_licenses' ); + $this->license_key = empty( $licenses[ $this->id ]['key'] ) ? '' : $licenses[ $this->id ]['key']; + if ( ! empty( $licenses[ $this->id ]['data'] ) ) { + $this->license_data = $licenses[ $this->id ]['data']; + } + + // Updater + add_action( 'admin_init', array( $this, 'auto_updater' ), 0 ); + + // Register settings + add_filter( 'pll_settings_licenses', array( $this, 'settings' ) ); + + // Weekly schedule + if ( ! wp_next_scheduled( 'polylang_check_licenses' ) ) { + wp_schedule_event( time(), 'weekly', 'polylang_check_licenses' ); + } + + add_action( 'polylang_check_licenses', array( $this, 'check_license' ) ); + } + + /** + * Auto updater + * + * @since 1.9 + */ + public function auto_updater() { + $args = array( + 'version' => $this->version, + 'license' => $this->license_key, + 'author' => $this->author, + 'item_name' => $this->name, + ); + + // Setup the updater + new PLL_Plugin_Updater( $this->api_url, $this->file, $args ); + } + + /** + * Registers the licence in the Settings + * + * @since 1.9 + * + * @param array $items + * @return array + */ + public function settings( $items ) { + $items[ $this->id ] = $this; + return $items; + } + + /** + * Activate the license key + * + * @since 1.9 + * + * @param string $license_key activation key + * @return object updated $this + */ + public function activate_license( $license_key ) { + $this->license_key = $license_key; + $this->api_request( 'activate_license' ); + + // Tell WordPress to look for updates + set_site_transient( 'update_plugins', null ); + return $this; + } + + + /** + * Deactivate the license key + * + * @since 1.9 + * + * @return object updated $this + */ + public function deactivate_license() { + $this->api_request( 'deactivate_license' ); + return $this; + } + + /** + * Check if license key is valid + * + * @since 1.9 + * + * @return object updated $this + */ + public function check_license() { + $this->api_request( 'check_license' ); + return $this; + } + + /** + * Sends an api request to check, activate or deactivate the license + * Updates the licenses option according to the status + * + * @since 1.9 + * + * @param string $request check_license | activate_license | deactivate_license + */ + private function api_request( $request ) { + $licenses = get_option( 'polylang_licenses' ); + unset( $licenses[ $this->id ], $this->license_data ); + + if ( ! empty( $this->license_key ) ) { + // Data to send in our API request + $api_params = array( + 'edd_action' => $request, + 'license' => $this->license_key, + 'item_name' => urlencode( $this->name ), + 'url' => home_url(), + ); + + // Call the API + $response = wp_remote_post( + $this->api_url, + array( + 'timeout' => 15, + 'sslverify' => false, + 'body' => $api_params, + ) + ); + + // Update the option only if we got a response + if ( is_wp_error( $response ) ) { + return; + } + + // Save new license info + $licenses[ $this->id ] = array( 'key' => $this->license_key ); + $data = json_decode( wp_remote_retrieve_body( $response ) ); + + if ( 'deactivated' !== $data->license ) { + $licenses[ $this->id ]['data'] = $this->license_data = $data; + } + } + + update_option( 'polylang_licenses', $licenses ); // FIXME called multiple times when saving all licenses + } +} diff --git a/pole-sbv-content/plugins/polylang/include/links-abstract-domain.php b/pole-sbv-content/plugins/polylang/include/links-abstract-domain.php new file mode 100644 index 00000000..04404e7e --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/links-abstract-domain.php @@ -0,0 +1,68 @@ +home_url( $language ); + $language->set_home_url( $home_url, $home_url ); // Search url and home url are the same + } + + /** + * Returns the current site url + * + * @since 1.8 + * + * @param string $url + * @return string + */ + public function site_url( $url ) { + $lang = $this->get_language_from_url(); + $lang = $this->model->get_language( $lang ); + return $this->add_language_to_link( $url, $lang ); + } + + /** + * Fix the domain for upload directory + * + * @since 2.0.6 + * + * @param array $uploads + * @return array + */ + public function upload_dir( $uploads ) { + $lang = $this->get_language_from_url(); + $lang = $this->model->get_language( $lang ); + $uploads['url'] = $this->add_language_to_link( $uploads['url'], $lang ); + $uploads['baseurl'] = $this->add_language_to_link( $uploads['baseurl'], $lang ); + return $uploads; + } +} diff --git a/pole-sbv-content/plugins/polylang/include/links-default.php b/pole-sbv-content/plugins/polylang/include/links-default.php new file mode 100644 index 00000000..ba2e2175 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/links-default.php @@ -0,0 +1,100 @@ +options['hide_default'] && $this->options['default_lang'] == $lang->slug ) ? $url : add_query_arg( 'lang', $lang->slug, $url ); + } + + /** + * Removes the language information from an url + * links_model interface + * + * @since 1.2 + * + * @param string $url url to modify + * @return string modified url + */ + public function remove_language_from_link( $url ) { + return remove_query_arg( 'lang', $url ); + } + + /** + * Returns the link to the first page + * links_model interface + * + * @since 1.2 + * + * @param string $url url to modify + * @return string modified url + */ + function remove_paged_from_link( $url ) { + return remove_query_arg( 'paged', $url ); + } + + /** + * Returns the link to the paged page when using pretty permalinks + * + * @since 1.5 + * + * @param string $url url to modify + * @param int $page + * @return string modified url + */ + public function add_paged_to_link( $url, $page ) { + return add_query_arg( array( 'paged' => $page ), $url ); + } + + /** + * Gets the language slug from the url if present + * links_model interface + * + * @since 1.2 + * @since 2.0 add $url argument + * + * @param string $url optional, defaults to current url + * @return string language slug + */ + public function get_language_from_url( $url = '' ) { + if ( empty( $url ) ) { + $url = $_SERVER['REQUEST_URI']; + } + + $pattern = '#lang=(' . implode( '|', $this->model->get_languages_list( array( 'fields' => 'slug' ) ) ) . ')#'; + return preg_match( $pattern, trailingslashit( $url ), $matches ) ? $matches[1] : ''; // $matches[1] is the slug of the requested language + } + + /** + * Returns the static front page url + * + * @since 1.8 + * + * @param object $lang + * @return string + */ + public function front_page_url( $lang ) { + if ( $this->options['hide_default'] && $lang->slug == $this->options['default_lang'] ) { + return trailingslashit( $this->home ); + } + $url = home_url( '/?page_id=' . $lang->page_on_front ); + return $this->options['force_lang'] ? $this->add_language_to_link( $url, $lang ) : $url; + } +} diff --git a/pole-sbv-content/plugins/polylang/include/links-directory.php b/pole-sbv-content/plugins/polylang/include/links-directory.php new file mode 100644 index 00000000..9ac48180 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/links-directory.php @@ -0,0 +1,254 @@ +init(); + } else { + add_action( 'pll_init', array( $this, 'init' ) ); + } + } + + /** + * Called only at first object creation to avoid duplicating filters when switching blog + * + * @since 1.6 + */ + public function init() { + if ( did_action( 'setup_theme' ) ) { + $this->add_permastruct(); + } else { + add_action( 'setup_theme', array( $this, 'add_permastruct' ), 2 ); + } + + // Make sure to prepare rewrite rules when flushing + add_action( 'pre_option_rewrite_rules', array( $this, 'prepare_rewrite_rules' ) ); + } + + /** + * Adds the language code in url + * links_model interface + * + * @since 1.2 + * + * @param string $url url to modify + * @param object $lang language + * @return string modified url + */ + public function add_language_to_link( $url, $lang ) { + if ( ! empty( $lang ) ) { + $base = $this->options['rewrite'] ? '' : 'language/'; + $slug = $this->options['default_lang'] == $lang->slug && $this->options['hide_default'] ? '' : $base . $lang->slug . '/'; + if ( false === strpos( $url, $this->home . '/' . $this->root . $slug ) ) { + return str_replace( $this->home . '/' . $this->root, $this->home . '/' . $this->root . $slug, $url ); + } + } + return $url; + } + + /** + * Returns the url without language code + * links_model interface + * + * @since 1.2 + * + * @param string $url url to modify + * @return string modified url + */ + function remove_language_from_link( $url ) { + foreach ( $this->model->get_languages_list() as $language ) { + if ( ! $this->options['hide_default'] || $this->options['default_lang'] != $language->slug ) { + $languages[] = $language->slug; + } + } + + if ( ! empty( $languages ) ) { + $pattern = str_replace( '/', '\/', $this->home . '/' . $this->root ); + $pattern = '#' . $pattern . ( $this->options['rewrite'] ? '' : 'language\/' ) . '(' . implode( '|', $languages ) . ')(\/|$)#'; + $url = preg_replace( $pattern, $this->home . '/' . $this->root, $url ); + } + return $url; + } + + /** + * Returns the language based on language code in url + * links_model interface + * + * @since 1.2 + * @since 2.0 add $url argument + * + * @param string $url optional, defaults to current url + * @return string language slug + */ + public function get_language_from_url( $url = '' ) { + if ( empty( $url ) ) { + $path = $_SERVER['REQUEST_URI']; + } else { + $path = parse_url( $url, PHP_URL_PATH ); + } + + $pattern = parse_url( $this->home . '/' . $this->root . ( $this->options['rewrite'] ? '' : 'language/' ), PHP_URL_PATH ); + $pattern = str_replace( '/', '\/', $pattern ); + $pattern = '#' . $pattern . '(' . implode( '|', $this->model->get_languages_list( array( 'fields' => 'slug' ) ) ) . ')(\/|$)#'; + return preg_match( $pattern, trailingslashit( $path ), $matches ) ? $matches[1] : ''; // $matches[1] is the slug of the requested language + } + + /** + * Returns the home url + * links_model interface + * + * @since 1.3.1 + * + * @param object $lang PLL_Language object + * @return string + */ + public function home_url( $lang ) { + $base = $this->options['rewrite'] ? '' : 'language/'; + $slug = $this->options['default_lang'] == $lang->slug && $this->options['hide_default'] ? '' : '/' . $this->root . $base . $lang->slug; + return trailingslashit( $this->home . $slug ); + } + + /** + * Optionaly removes 'language' in permalinks so that we get http://www.myblog/en/ instead of http://www.myblog/language/en/ + * + * @since 1.2 + */ + function add_permastruct() { + // Language information always in front of the uri ( 'with_front' => false ) + // The 3rd parameter structure has been modified in WP 3.4 + // Leads to error 404 for pages when there is no language created yet + if ( $this->model->get_languages_list() ) { + add_permastruct( 'language', $this->options['rewrite'] ? '%language%' : 'language/%language%', array( 'with_front' => false ) ); + } + } + + /** + * Prepares rewrite rules filters + * + * @since 0.8.1 + * + * @param array $pre not used + * @return unmodified $pre + */ + public function prepare_rewrite_rules( $pre ) { + // Don't modify the rules if there is no languages created yet + // Make sure to add filter only once and if all custom post types and taxonomies have been registered + if ( $this->model->get_languages_list() && did_action( 'wp_loaded' ) && ! has_filter( 'language_rewrite_rules', '__return_empty_array' ) ) { + // Suppress the rules created by WordPress for our taxonomy + add_filter( 'language_rewrite_rules', '__return_empty_array' ); + + foreach ( $this->get_rewrite_rules_filters() as $type ) { + add_filter( $type . '_rewrite_rules', array( $this, 'rewrite_rules' ) ); + } + + add_filter( 'rewrite_rules_array', array( $this, 'rewrite_rules' ) ); // needed for post type archives + } + return $pre; + } + + /** + * The rewrite rules ! + * always make sure the default language is at the end in case the language information is hidden for default language + * thanks to brbrbr http://wordpress.org/support/topic/plugin-polylang-rewrite-rules-not-correct + * + * @since 0.8.1 + * + * @param array $rules rewrite rules + * @return array modified rewrite rules + */ + public function rewrite_rules( $rules ) { + $filter = str_replace( '_rewrite_rules', '', current_filter() ); + + global $wp_rewrite; + $newrules = array(); + + $languages = $this->model->get_languages_list( array( 'fields' => 'slug' ) ); + if ( $this->options['hide_default'] ) { + $languages = array_diff( $languages, array( $this->options['default_lang'] ) ); + } + + if ( ! empty( $languages ) ) { + $slug = $wp_rewrite->root . ( $this->options['rewrite'] ? '' : 'language/' ) . '(' . implode( '|', $languages ) . ')/'; + } + + // For custom post type archives + $cpts = array_intersect( $this->model->get_translated_post_types(), get_post_types( array( '_builtin' => false ) ) ); + $cpts = $cpts ? '#post_type=(' . implode( '|', $cpts ) . ')#' : ''; + + foreach ( $rules as $key => $rule ) { + // Special case for translated post types and taxonomies to allow canonical redirection + if ( $this->options['force_lang'] && in_array( $filter, array_merge( $this->model->get_translated_post_types(), $this->model->get_translated_taxonomies() ) ) ) { + + /** + * Filters the rewrite rules to modify + * + * @since 1.9.1 + * + * @param bool $modify whether to modify or not the rule, defaults to true + * @param array $rule original rewrite rule + * @param string $filter current set of rules being modified + * @param string|bool $archive custom post post type archive name or false if it is not a cpt archive + */ + if ( isset( $slug ) && apply_filters( 'pll_modify_rewrite_rule', true, array( $key => $rule ), $filter, false ) ) { + $newrules[ $slug . str_replace( $wp_rewrite->root, '', ltrim( $key, '^' ) ) ] = str_replace( + array( '[8]', '[7]', '[6]', '[5]', '[4]', '[3]', '[2]', '[1]', '?' ), + array( '[9]', '[8]', '[7]', '[6]', '[5]', '[4]', '[3]', '[2]', '?lang=$matches[1]&' ), + $rule + ); // Should be enough! + } + + $newrules[ $key ] = $rule; + } + + // Rewrite rules filtered by language + elseif ( in_array( $filter, $this->always_rewrite ) || in_array( $filter, $this->model->get_filtered_taxonomies() ) || ( $cpts && preg_match( $cpts, $rule, $matches ) && ! strpos( $rule, 'name=' ) ) || ( 'rewrite_rules_array' != $filter && $this->options['force_lang'] ) ) { + + /** This filter is documented in include/links-directory.php */ + if ( apply_filters( 'pll_modify_rewrite_rule', true, array( $key => $rule ), $filter, empty( $matches[1] ) ? false : $matches[1] ) ) { + if ( isset( $slug ) ) { + $newrules[ $slug . str_replace( $wp_rewrite->root, '', ltrim( $key, '^' ) ) ] = str_replace( + array( '[8]', '[7]', '[6]', '[5]', '[4]', '[3]', '[2]', '[1]', '?' ), + array( '[9]', '[8]', '[7]', '[6]', '[5]', '[4]', '[3]', '[2]', '?lang=$matches[1]&' ), + $rule + ); // Should be enough! + } + + if ( $this->options['hide_default'] ) { + $newrules[ $key ] = str_replace( '?', '?lang=' . $this->options['default_lang'] . '&', $rule ); + } + } else { + $newrules[ $key ] = $rule; + } + } + + // Unmodified rules + else { + $newrules[ $key ] = $rule; + } + } + + // The home rewrite rule + if ( 'root' == $filter && isset( $slug ) ) { + $newrules[ $slug . '?$' ] = $wp_rewrite->index . '?lang=$matches[1]'; + } + + return $newrules; + } +} diff --git a/pole-sbv-content/plugins/polylang/include/links-domain.php b/pole-sbv-content/plugins/polylang/include/links-domain.php new file mode 100644 index 00000000..7984ea7d --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/links-domain.php @@ -0,0 +1,104 @@ +hosts = $this->get_hosts(); + + // Filrer the site url ( mainly to get the correct login form ) + add_filter( 'site_url', array( $this, 'site_url' ) ); + } + + + /** + * Adds the language code in url + * links_model interface + * + * @since 1.2 + * + * @param string $url url to modify + * @param object $lang language + * @return string modified url + */ + public function add_language_to_link( $url, $lang ) { + if ( ! empty( $lang ) && ! empty( $this->hosts[ $lang->slug ] ) ) { + $url = preg_replace( '#:\/\/(' . parse_url( $this->home, PHP_URL_HOST ) . ')($|\/.*)#', '://' . $this->hosts[ $lang->slug ] . '$2', $url ); + } + return $url; + } + + /** + * Returns the url without language code + * links_model interface + * + * @since 1.2 + * + * @param string $url url to modify + * @return string modified url + */ + public function remove_language_from_link( $url ) { + if ( ! empty( $this->hosts ) ) { + $url = preg_replace( '#:\/\/(' . implode( '|', $this->hosts ) . ')($|\/.*)#', '://' . parse_url( $this->home, PHP_URL_HOST ) . '$2', $url ); + } + return $url; + } + + /** + * Returns the language based on language code in url + * links_model interface + * + * @since 1.2 + * @since 2.0 add $url argument + * + * @param string $url optional, defaults to current url + * @return string language slug + */ + public function get_language_from_url( $url = '' ) { + $host = empty( $url ) ? $_SERVER['HTTP_HOST'] : parse_url( $url, PHP_URL_HOST ); + return ( $lang = array_search( $host , $this->hosts ) ) ? $lang : ''; + } + + /** + * Returns the home url + * links_model interface + * + * @since 1.3.1 + * + * @param object $lang PLL_Language object + * @return string + */ + function home_url( $lang ) { + return trailingslashit( empty( $this->options['domains'][ $lang->slug ] ) ? $this->home : $this->options['domains'][ $lang->slug ] ); + } + + /** + * Get hosts managed on the website + * + * @since 1.5 + * + * @return array list of hosts + */ + public function get_hosts() { + $hosts = array(); + foreach ( $this->options['domains'] as $lang => $domain ) { + $hosts[ $lang ] = parse_url( $domain, PHP_URL_HOST ); + } + return $hosts; + } +} diff --git a/pole-sbv-content/plugins/polylang/include/links-model.php b/pole-sbv-content/plugins/polylang/include/links-model.php new file mode 100644 index 00000000..6e850616 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/links-model.php @@ -0,0 +1,133 @@ +model = &$model; + $this->options = &$model->options; + + $this->home = home_url(); + + add_filter( 'pll_languages_list', array( $this, 'pll_languages_list' ), 4 ); // after PLL_Static_Pages + add_filter( 'pll_after_languages_cache', array( $this, 'pll_after_languages_cache' ) ); + + // adds our domains or subdomains to allowed hosts for safe redirection + add_filter( 'allowed_redirect_hosts', array( $this, 'allowed_redirect_hosts' ) ); + } + + /** + * Changes the language code in url + * + * @since 1.5 + * + * @param string $url url to modify + * @param object $lang language + * @return string modified url + */ + public function switch_language_in_link( $url, $lang ) { + $url = $this->remove_language_from_link( $url ); + return $this->add_language_to_link( $url, $lang ); + } + + /** + * Get hosts managed on the website + * + * @since 1.5 + * + * @return array list of hosts + */ + public function get_hosts() { + return array( parse_url( $this->home, PHP_URL_HOST ) ); + } + + /** + * Returns the home url + * + * @since 1.3.1 + * + * @param object $lang PLL_Language object + * @return string + */ + public function home_url( $lang ) { + $url = trailingslashit( $this->home ); + return $this->options['hide_default'] && $lang->slug == $this->options['default_lang'] ? $url : $this->add_language_to_link( $url, $lang ); + } + + /** + * Sets the home urls + * + * @since 1.8 + * + * @param object $language + */ + protected function set_home_url( $language ) { + $search_url = $this->home_url( $language ); + $home_url = empty( $language->page_on_front ) || $this->options['redirect_lang'] ? $search_url : $this->front_page_url( $language ); + $language->set_home_url( $search_url, $home_url ); + } + + /** + * Sets the home urls and flags before the languages are persistently cached + * + * @since 1.8 + * + * @param array $languages array of PLL_Language objects + * @return array + */ + public function pll_languages_list( $languages ) { + foreach ( $languages as $language ) { + $this->set_home_url( $language ); + $language->set_flag(); + } + return $languages; + } + + /** + * Sets the home urls when not cached + * Sets the home urls scheme + * + * @since 1.8 + * + * @param array $languages array of PLL_Language objects + * @return array + */ + public function pll_after_languages_cache( $languages ) { + foreach ( $languages as $language ) { + // Get the home urls when not cached + if ( ( defined( 'PLL_CACHE_LANGUAGES' ) && ! PLL_CACHE_LANGUAGES ) || ( defined( 'PLL_CACHE_HOME_URL' ) && ! PLL_CACHE_HOME_URL ) ) { + $this->set_home_url( $language ); + } + + // Ensures that the ( possibly cached ) home url uses the right scheme http or https + $language->set_home_url_scheme(); + } + return $languages; + } + + /** + * Adds our domains or subdomains to allowed hosts for safe redirection + * + * @since 1.4.3 + * + * @param array $hosts allowed hosts + * @return array + */ + public function allowed_redirect_hosts( $hosts ) { + return array_unique( array_merge( $hosts, array_values( $this->get_hosts() ) ) ); + } +} diff --git a/pole-sbv-content/plugins/polylang/include/links-permalinks.php b/pole-sbv-content/plugins/polylang/include/links-permalinks.php new file mode 100644 index 00000000..17489e20 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/links-permalinks.php @@ -0,0 +1,120 @@ +root = preg_match( '#^/*' . $this->index . '#', $permalink_structure ) ? $this->index . '/' : ''; + $this->use_trailing_slashes = ( '/' == substr( $permalink_structure, -1, 1 ) ); + } + + /** + * Returns the link to the first page when using pretty permalinks + * + * @since 1.2 + * + * @param string $url url to modify + * @return string modified url + */ + public function remove_paged_from_link( $url ) { + /** + * Filter an url after the paged part has been removed + * + * @since 2.0.6 + * + * @param string $modified_url The link to the first page + * @param string $orginal_url The link to the original paged page + */ + return apply_filters( 'pll_remove_paged_from_link', preg_replace( '#\/page\/[0-9]+\/?#', $this->use_trailing_slashes ? '/' : '', $url ), $url ); + } + + /** + * Returns the link to the paged page when using pretty permalinks + * + * @since 1.5 + * + * @param string $url url to modify + * @param int $page + * @return string modified url + */ + public function add_paged_to_link( $url, $page ) { + /** + * Filter an url after the paged part has been added + * + * @since 2.0.6 + * + * @param string $modified_url The link to the paged page + * @param string $orginal_url The link to the original first page + * @param int $page The page number + */ + return apply_filters( 'pll_add_paged_to_link', user_trailingslashit( trailingslashit( $url ) . 'page/' . $page, 'paged' ), $url, $page ); + } + + /** + * Returns the home url + * + * @since 1.3.1 + * + * @param object $lang PLL_Language object + * @return string + */ + public function home_url( $lang ) { + return trailingslashit( parent::home_url( $lang ) ); + } + + /** + * Returns the static front page url + * + * @since 1.8 + * + * @param object $lang + * @return string + */ + public function front_page_url( $lang ) { + if ( $this->options['hide_default'] && $lang->slug == $this->options['default_lang'] ) { + return trailingslashit( $this->home ); + } + $url = home_url( $this->root . get_page_uri( $lang->page_on_front ) ); + $url = $this->use_trailing_slashes ? trailingslashit( $url ) : untrailingslashit( $url ); + return $this->options['force_lang'] ? $this->add_language_to_link( $url, $lang ) : $url; + } + + /** + * Prepares rewrite rules filters + * + * @since 1.6 + */ + public function get_rewrite_rules_filters() { + // Make sure we have the right post types and taxonomies + $types = array_values( array_merge( $this->model->get_translated_post_types(), $this->model->get_translated_taxonomies(), $this->model->get_filtered_taxonomies() ) ); + $types = array_merge( $this->always_rewrite, $types ); + + /** + * Filter the list of rewrite rules filters to be used by Polylang + * + * @since 0.8.1 + * + * @param array $types the list of filters (without '_rewrite_rules' at the end) + */ + return apply_filters( 'pll_rewrite_rules', $types ); + } +} diff --git a/pole-sbv-content/plugins/polylang/include/links-subdomain.php b/pole-sbv-content/plugins/polylang/include/links-subdomain.php new file mode 100644 index 00000000..76a467e4 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/links-subdomain.php @@ -0,0 +1,95 @@ +www = ( false === strpos( $this->home, '://www.' ) ) ? '://' : '://www.'; + } + + /** + * Adds the language code in url + * links_model interface + * + * @since 1.2 + * + * @param string $url url to modify + * @param object $lang language + * @return string modified url + */ + public function add_language_to_link( $url, $lang ) { + if ( ! empty( $lang ) && false === strpos( $url, '://' . $lang->slug . '.' ) ) { + $url = $this->options['default_lang'] == $lang->slug && $this->options['hide_default'] ? $url : str_replace( $this->www, '://' . $lang->slug . '.', $url ); + } + return $url; + } + + /** + * Returns the url without language code + * links_model interface + * + * @since 1.2 + * + * @param string $url url to modify + * @return string modified url + */ + public function remove_language_from_link( $url ) { + foreach ( $this->model->get_languages_list() as $language ) { + if ( ! $this->options['hide_default'] || $this->options['default_lang'] != $language->slug ) { + $languages[] = $language->slug; + } + } + + if ( ! empty( $languages ) ) { + $url = preg_replace( '#:\/\/(' . implode( '|', $languages ) . ')\.#', $this->www, $url ); + } + + return $url; + } + + /** + * Returns the language based on language code in url + * links_model interface + * + * @since 1.2 + * @since 2.0 add $url argument + * + * @param string $url optional, defaults to current url + * @return string language slug + */ + public function get_language_from_url( $url = '' ) { + $host = empty( $url ) ? $_SERVER['HTTP_HOST'] : parse_url( $url, PHP_URL_HOST ); + $pattern = '#(' . implode( '|', $this->model->get_languages_list( array( 'fields' => 'slug' ) ) ) . ')\.#'; + return preg_match( $pattern, trailingslashit( $host ), $matches ) ? $matches[1] : ''; // $matches[1] is the slug of the requested language + } + + /** + * Get hosts managed on the website + * + * @since 1.5 + * + * @return array list of hosts + */ + public function get_hosts() { + $hosts = array(); + foreach ( $this->model->get_languages_list() as $lang ) { + $hosts[] = parse_url( $this->home_url( $lang ), PHP_URL_HOST ); + } + return $hosts; + } +} diff --git a/pole-sbv-content/plugins/polylang/include/links.php b/pole-sbv-content/plugins/polylang/include/links.php new file mode 100644 index 00000000..879d04d8 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/links.php @@ -0,0 +1,65 @@ +links_model = &$polylang->links_model; + $this->model = &$polylang->model; + $this->options = &$polylang->options; + } + + /** + * Returns the home url in the requested language + * + * @since 1.3 + * + * @param object|string $language + * @param bool $is_search optional wether we need the home url for a search form, defaults to false + */ + public function get_home_url( $language, $is_search = false ) { + $language = is_object( $language ) ? $language : $this->model->get_language( $language ); + return $is_search ? $language->search_url : $language->home_url; + } + + /** + * Checks if the current user can read the post + * + * @since 1.5 + * + * @param int $post_id + * @return bool + */ + public function current_user_can_read( $post_id ) { + $post = get_post( $post_id ); + + if ( 'inherit' === $post->post_status && $post->post_parent ) { + $post = get_post( $post->post_parent ); + } + + if ( 'inherit' === $post->post_status || in_array( $post->post_status, get_post_stati( array( 'public' => true ) ) ) ) { + return true; + } + + // Follow WP practices, which shows links to private posts ( when readable ), but not for draft posts ( ex: get_adjacent_post_link() ) + if ( in_array( $post->post_status, get_post_stati( array( 'private' => true ) ) ) ) { + $post_type_object = get_post_type_object( $post->post_type ); + $user = wp_get_current_user(); + return is_user_logged_in() && ( current_user_can( $post_type_object->cap->read_private_posts ) || $user->ID == $post->post_author ); // Comparison must not be strict! + } + + return false; + } +} diff --git a/pole-sbv-content/plugins/polylang/include/mo.php b/pole-sbv-content/plugins/polylang/include/mo.php new file mode 100644 index 00000000..d307b30f --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/mo.php @@ -0,0 +1,105 @@ + __( 'Strings translations', 'polylang' ) ); + register_post_type( 'polylang_mo', array( 'labels' => $labels, 'rewrite' => false, 'query_var' => false, '_pll' => true ) ); + + add_action( 'pll_add_language', array( $this, 'clean_cache' ) ); + } + } + + /** + * Writes a PLL_MO object into a custom post meta + * + * @since 1.2 + * + * @param object $lang The language in which we want to export strings + */ + public function export_to_db( $lang ) { + $this->add_entry( $this->make_entry( '', '' ) ); // Empty string translation, just in case + + // Would be convenient to store the whole object but it would take a huge space in DB + // So let's keep only the strings in an array + $strings = array(); + foreach ( $this->entries as $entry ) { + $strings[] = array( $entry->singular, $this->translate( $entry->singular ) ); + } + + $strings = wp_slash( $strings ); // Avoid breaking slashed strings in update_post_meta. See https://codex.wordpress.org/Function_Reference/update_post_meta#Character_Escaping + + if ( empty( $lang->mo_id ) ) { + $post = array( + 'post_title' => 'polylang_mo_' . $lang->term_id, + 'post_status' => 'private', // To avoid a conflict with WP Super Cache. See https://wordpress.org/support/topic/polylang_mo-and-404s-take-2 + 'post_type' => 'polylang_mo', + ); + $mo_id = wp_insert_post( $post ); + update_post_meta( $mo_id, '_pll_strings_translations', $strings ); + } else { + update_post_meta( $lang->mo_id, '_pll_strings_translations', $strings ); + } + } + + /** + * Reads a PLL_MO object from a custom post meta + * + * @since 1.2 + * + * @param object $lang The language in which we want to get strings + */ + public function import_from_db( $lang ) { + if ( ! empty( $lang->mo_id ) ) { + $strings = get_post_meta( $lang->mo_id, '_pll_strings_translations', true ); + if ( is_array( $strings ) ) { + foreach ( $strings as $msg ) { + $this->add_entry( $this->make_entry( $msg[0], $msg[1] ) ); + } + } + } + } + + /** + * Returns the post id of the post storing the strings translations + * + * @since 1.4 + * + * @param object $lang + * @return int + */ + public static function get_id( $lang ) { + global $wpdb; + + $ids = wp_cache_get( 'polylang_mo_ids' ); + + if ( empty( $ids ) ) { + $ids = $wpdb->get_results( "SELECT post_title, ID FROM $wpdb->posts WHERE post_type='polylang_mo'", OBJECT_K ); + wp_cache_add( 'polylang_mo_ids', $ids ); + } + + // The mo id for a language can be transiently empty + return isset( $ids[ 'polylang_mo_' . $lang->term_id ] ) ? $ids[ 'polylang_mo_' . $lang->term_id ]->ID : null; + } + + /** + * Invalidate the cache when adding a new language + * + * @since 2.0.5 + */ + public function clean_cache() { + wp_cache_delete( 'polylang_mo_ids' ); + } +} diff --git a/pole-sbv-content/plugins/polylang/include/model.php b/pole-sbv-content/plugins/polylang/include/model.php new file mode 100644 index 00000000..14a124ad --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/model.php @@ -0,0 +1,608 @@ +options = &$options; + + $this->cache = new PLL_Cache(); + $this->post = new PLL_Translated_Post( $this ); // translated post sub model + $this->term = new PLL_Translated_Term( $this ); // translated term sub model + + // we need to clean languages cache when editing a language and when modifying the permalink structure + add_action( 'edited_term_taxonomy', array( $this, 'clean_languages_cache' ), 10, 2 ); + add_action( 'update_option_permalink_structure', array( $this, 'clean_languages_cache' ) ); + add_action( 'update_option_siteurl', array( $this, 'clean_languages_cache' ) ); + add_action( 'update_option_home', array( $this, 'clean_languages_cache' ) ); + + // just in case someone would like to display the language description ;- ) + add_filter( 'language_description', '__return_empty_string' ); + } + + /** + * Returns the list of available languages + * caches the list in a db transient ( except flags ), unless PLL_CACHE_LANGUAGES is set to false + * caches the list ( with flags ) in the private property $languages + * + * list of parameters accepted in $args: + * + * hide_empty => hides languages with no posts if set to true ( defaults to false ) + * fields => return only that field if set ( see PLL_Language for a list of fields ) + * + * @since 0.1 + * + * @param array $args + * @return array|string|int list of PLL_Language objects or PLL_Language object properties + */ + public function get_languages_list( $args = array() ) { + if ( false === $languages = $this->cache->get( 'languages' ) ) { + + // create the languages from taxonomies + if ( ( defined( 'PLL_CACHE_LANGUAGES' ) && ! PLL_CACHE_LANGUAGES ) || false === ( $languages = get_transient( 'pll_languages_list' ) ) ) { + $languages = get_terms( 'language', array( 'hide_empty' => false, 'orderby' => 'term_group' ) ); + $languages = empty( $languages ) || is_wp_error( $languages ) ? array() : $languages; + + $term_languages = get_terms( 'term_language', array( 'hide_empty' => false ) ); + $term_languages = empty( $term_languages ) || is_wp_error( $term_languages ) ? + array() : array_combine( wp_list_pluck( $term_languages, 'slug' ), $term_languages ); + + if ( ! empty( $languages ) && ! empty( $term_languages ) ) { + // don't use array_map + create_function to instantiate an autoloaded class as it breaks badly in old versions of PHP + foreach ( $languages as $k => $v ) { + $languages[ $k ] = new PLL_Language( $v, $term_languages[ 'pll_' . $v->slug ] ); + } + + // we will need the languages list to allow its access in the filter below + $this->cache->set( 'languages', $languages ); + + /** + * Filter the list of languages *before* it is stored in the persistent cache + * /!\ this filter is fired *before* the $polylang object is available + * + * @since 1.7.5 + * + * @param array $languages the list of language objects + * @param object $model PLL_Model object + */ + $languages = apply_filters( 'pll_languages_list', $languages, $this ); + + // don't store directly objects as it badly break with some hosts ( GoDaddy ) due to race conditions when using object cache + // thanks to captin411 for catching this! + // see https://wordpress.org/support/topic/fatal-error-pll_model_languages_list?replies=8#post-6782255; + set_transient( 'pll_languages_list', array_map( 'get_object_vars', $languages ) ); + } + else { + $languages = array(); // in case something went wrong + } + } + + // create the languages directly from arrays stored in transients + else { + foreach ( $languages as $k => $v ) { + $languages[ $k ] = new PLL_Language( $v ); + } + } + + // custom flags + if ( ! PLL_ADMIN ) { + foreach ( $languages as $language ) { + $language->set_custom_flag(); + } + } + + /** + * Filter the list of languages *after* it is stored in the persistent cache + * /!\ this filter is fired *before* the $polylang object is available + * + * @since 1.8 + * + * @param array $languages the list of language objects + */ + $languages = apply_filters( 'pll_after_languages_cache', $languages ); + $this->cache->set( 'languages', $languages ); + } + + $args = wp_parse_args( $args, array( 'hide_empty' => false ) ); + + // remove empty languages if requested + if ( $args['hide_empty'] ) { + $languages = wp_list_filter( $languages, array( 'count' => 0 ), 'NOT' ); + } + + return empty( $args['fields'] ) ? $languages : wp_list_pluck( $languages, $args['fields'] ); + } + + /** + * Cleans language cache + * can be called directly with no parameter + * called by the 'edited_term_taxonomy' filter with 2 parameters when count needs to be updated + * + * @since 1.2 + * + * @param int $term not used + * @param string $taxonomy taxonomy name + */ + public function clean_languages_cache( $term = 0, $taxonomy = null ) { + if ( empty( $taxonomy ) || 'language' == $taxonomy ) { + delete_transient( 'pll_languages_list' ); + $this->cache->clean(); + } + } + + /** + * Returns the language by its term_id, tl_term_id, slug or locale + * + * @since 0.1 + * + * @param int|string $value term_id, tl_term_id, slug or locale of the queried language + * @return object|bool PLL_Language object, false if no language found + */ + public function get_language( $value ) { + if ( is_object( $value ) ) { + return $value instanceof PLL_Language ? $value : $this->get_language( $value->term_id ); // will force cast to PLL_Language + } + + if ( false === $return = $this->cache->get( 'language:' . $value ) ) { + foreach ( $this->get_languages_list() as $lang ) { + $this->cache->set( 'language:' . $lang->term_id, $lang ); + $this->cache->set( 'language:' . $lang->tl_term_id, $lang ); + $this->cache->set( 'language:' . $lang->slug, $lang ); + $this->cache->set( 'language:' . $lang->locale, $lang ); + } + $return = $this->cache->get( 'language:' . $value ); + } + + return $return; + } + + /** + * Adds terms clauses to get_terms to filter them by languages - used in both frontend and admin + * + * @since 1.2 + * + * @param array $clauses the list of sql clauses in terms query + * @param object $lang PLL_Language object + * @return array modifed list of clauses + */ + public function terms_clauses( $clauses, $lang ) { + if ( ! empty( $lang ) && false === strpos( $clauses['join'], 'pll_tr' ) ) { + $clauses['join'] .= $this->term->join_clause(); + $clauses['where'] .= $this->term->where_clause( $lang ); + } + return $clauses; + } + + /** + * Returns post types that need to be translated + * the post types list is cached for better better performance + * wait for 'after_setup_theme' to apply the cache to allow themes adding the filter in functions.php + * + * @since 1.2 + * + * @param bool $filter true if we should return only valid registered post types + * @return array post type names for which Polylang manages languages and translations + */ + public function get_translated_post_types( $filter = true ) { + if ( false === $post_types = $this->cache->get( 'post_types' ) ) { + $post_types = array( 'post' => 'post', 'page' => 'page' ); + + if ( ! empty( $this->options['media_support'] ) ) { + $post_types['attachment'] = 'attachment'; + } + + if ( ! empty( $this->options['post_types'] ) && is_array( $this->options['post_types'] ) ) { + $post_types = array_merge( $post_types, array_combine( $this->options['post_types'], $this->options['post_types'] ) ); + } + + /** + * Filter the list of post types available for translation. + * The default are post types which have the parameter ‘public’ set to true. + * The filter must be added soon in the WordPress loading process: + * in a function hooked to ‘plugins_loaded’ or directly in functions.php for themes. + * + * @since 0.8 + * + * @param array $post_types list of post type names + * @param bool $is_settings true when displaying the list of custom post types in Polylang settings + */ + $post_types = apply_filters( 'pll_get_post_types', $post_types, false ); + + if ( did_action( 'after_setup_theme' ) ) { + $this->cache->set( 'post_types', $post_types ); + } + } + + return $filter ? array_intersect( $post_types, get_post_types() ) : $post_types; + } + + /** + * Returns true if Polylang manages languages and translations for this post type + * + * @since 1.2 + * + * @param string|array $post_type post type name or array of post type names + * @return bool + */ + public function is_translated_post_type( $post_type ) { + $post_types = $this->get_translated_post_types( false ); + return ( is_array( $post_type ) && array_intersect( $post_type, $post_types ) || in_array( $post_type, $post_types ) || 'any' === $post_type && ! empty( $post_types ) ); + } + + /** + * Return taxonomies that need to be translated + * + * @since 1.2 + * + * @param bool $filter true if we should return only valid registered taxonmies + * @return array array of registered taxonomy names for which Polylang manages languages and translations + */ + public function get_translated_taxonomies( $filter = true ) { + if ( false === $taxonomies = $this->cache->get( 'taxonomies' ) ) { + $taxonomies = array( 'category' => 'category', 'post_tag' => 'post_tag' ); + + if ( ! empty( $this->options['taxonomies'] ) && is_array( $this->options['taxonomies'] ) ) { + $taxonomies = array_merge( $taxonomies, array_combine( $this->options['taxonomies'], $this->options['taxonomies'] ) ); + } + + /** + * Filter the list of taxonomies available for translation. + * The default are taxonomies which have the parameter ‘public’ set to true. + * The filter must be added soon in the WordPress loading process: + * in a function hooked to ‘plugins_loaded’ or directly in functions.php for themes. + * + * @since 0.8 + * + * @param array $taxonomies list of taxonomy names + * @param bool $is_settings true when displaying the list of custom taxonomies in Polylang settings + */ + $taxonomies = apply_filters( 'pll_get_taxonomies', $taxonomies, false ); + if ( did_action( 'after_setup_theme' ) ) { + $this->cache->set( 'taxonomies', $taxonomies ); + } + } + + return $filter ? array_intersect( $taxonomies, get_taxonomies() ) : $taxonomies; + } + + /** + * Returns true if Polylang manages languages and translations for this taxonomy + * + * @since 1.2 + * + * @param string|array $tax taxonomy name or array of taxonomy names + * @return bool + */ + public function is_translated_taxonomy( $tax ) { + $taxonomies = $this->get_translated_taxonomies( false ); + return ( is_array( $tax ) && array_intersect( $tax, $taxonomies ) || in_array( $tax, $taxonomies ) ); + } + + /** + * Return taxonomies that need to be filtered ( post_format like ) + * + * @since 1.7 + * + * @param bool $filter true if we should return only valid registered taxonomies + * @return array array of registered taxonomy names + */ + public function get_filtered_taxonomies( $filter = true ) { + if ( did_action( 'after_setup_theme' ) ) { + static $taxonomies = null; + } + + if ( empty( $taxonomies ) ) { + $taxonomies = array( 'post_format' => 'post_format' ); + + /** + * Filter the list of taxonomies not translatable but filtered by language. + * Includes only the post format by default + * The filter must be added soon in the WordPress loading process: + * in a function hooked to ‘plugins_loaded’ or directly in functions.php for themes. + * + * @since 1.7 + * + * @param array $taxonomies list of taxonomy names + * @param bool $is_settings true when displaying the list of custom taxonomies in Polylang settings + */ + $taxonomies = apply_filters( 'pll_filtered_taxonomies', $taxonomies, false ); + } + + return $filter ? array_intersect( $taxonomies, get_taxonomies() ) : $taxonomies; + } + + /** + * Returns true if Polylang filters this taxonomy per language + * + * @since 1.7 + * + * @param string|array $tax taxonomy name or array of taxonomy names + * @return bool + */ + public function is_filtered_taxonomy( $tax ) { + $taxonomies = $this->get_filtered_taxonomies( false ); + return ( is_array( $tax ) && array_intersect( $tax, $taxonomies ) || in_array( $tax, $taxonomies ) ); + } + + /** + * Returns the query vars of all filtered taxonomies + * + * @since 1.7 + * + * @return array + */ + public function get_filtered_taxonomies_query_vars() { + $query_vars = array(); + foreach ( $this->get_filtered_taxonomies() as $filtered_tax ) { + $tax = get_taxonomy( $filtered_tax ); + $query_vars[] = $tax->query_var; + } + return $query_vars; + } + + /** + * Create a default category for a language + * + * @since 1.2 + * + * @param object|string|int $lang language + */ + public function create_default_category( $lang ) { + $lang = $this->get_language( $lang ); + + // create a new category + // FIXME this is translated in admin language when we would like it in $lang + $cat_name = __( 'Uncategorized' ); + $cat_slug = sanitize_title( $cat_name . '-' . $lang->slug ); + $cat = wp_insert_term( $cat_name, 'category', array( 'slug' => $cat_slug ) ); + + // check that the category was not previously created ( in case the language was deleted and recreated ) + $cat = isset( $cat->error_data['term_exists'] ) ? $cat->error_data['term_exists'] : $cat['term_id']; + + // set language + $this->term->set_language( (int) $cat, $lang ); + + // this is a translation of the default category + $default = (int) get_option( 'default_category' ); + $translations = $this->term->get_translations( $default ); + if ( empty( $translations ) ) { + if ( $lg = $this->term->get_language( $default ) ) { + $translations[ $lg->slug ] = $default; + } + else { + $translations = array(); + } + } + + $this->term->save_translations( (int) $cat, $translations ); + } + + /** + * It is possible to have several terms with the same name in the same taxonomy ( one per language ) + * but the native term_exists will return true even if only one exists + * so here the function adds the language parameter + * + * @since 1.4 + * + * @param string $term_name the term name + * @param string $taxonomy taxonomy name + * @param int $parent parent term id + * @param string|object $language the language slug or object + * @return null|int the term_id of the found term + */ + public function term_exists( $term_name, $taxonomy, $parent, $language ) { + global $wpdb; + + $term_name = trim( wp_unslash( $term_name ) ); + + $select = "SELECT t.term_id FROM $wpdb->terms AS t"; + $join = " INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id"; + $join .= $this->term->join_clause(); + $where = $wpdb->prepare( ' WHERE tt.taxonomy = %s AND t.name = %s', $taxonomy, $term_name ); + $where .= $this->term->where_clause( $this->get_language( $language ) ); + + if ( $parent > 0 ) { + $where .= $wpdb->prepare( ' AND tt.parent = %d', $parent ); + } + + return $wpdb->get_var( $select . $join . $where ); + } + + /** + * Gets the number of posts per language in a date, author or post type archive + * + * @since 1.2 + * + * @param object $lang + * @param array $q WP_Query arguments ( accepted: post_type, m, year, monthnum, day, author, author_name, post_format ) + * @return int + */ + public function count_posts( $lang, $q = array() ) { + global $wpdb; + + $q = wp_parse_args( $q, array( 'post_type' => 'post' ) ); + + if ( ! is_array( $q['post_type'] ) ) { + $q['post_type'] = array( $q['post_type'] ); + } + + foreach ( $q['post_type'] as $key => $type ) { + if ( ! post_type_exists( $type ) ) { + unset( $q['post_type'][ $key ] ); + } + } + + if ( empty( $q['post_type'] ) ) { + $q['post_type'] = array( 'post' ); // we *need* a post type + } + + $cache_key = md5( serialize( $q ) ); + $counts = wp_cache_get( $cache_key, 'pll_count_posts' ); + + if ( false === $counts ) { + $select = "SELECT pll_tr.term_taxonomy_id, COUNT( * ) AS num_posts FROM {$wpdb->posts}"; + $join = $this->post->join_clause(); + $where = " WHERE post_status = 'publish'"; + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_type IN ( '%s' )", join( "', '", $q['post_type'] ) ); + $where .= $this->post->where_clause( $this->get_languages_list() ); + $groupby = ' GROUP BY pll_tr.term_taxonomy_id'; + + if ( ! empty( $q['m'] ) ) { + $q['m'] = '' . preg_replace( '|[^0-9]|', '', $q['m'] ); + $where .= $wpdb->prepare( " AND YEAR( {$wpdb->posts}.post_date ) = %d", substr( $q['m'], 0, 4 ) ); + if ( strlen( $q['m'] ) > 5 ) { + $where .= $wpdb->prepare( " AND MONTH( {$wpdb->posts}.post_date ) = %d", substr( $q['m'], 4, 2 ) ); + } + if ( strlen( $q['m'] ) > 7 ) { + $where .= $wpdb->prepare( " AND DAYOFMONTH( {$wpdb->posts}.post_date ) = %d", substr( $q['m'], 6, 2 ) ); + } + } + + if ( ! empty( $q['year'] ) ) { + $where .= $wpdb->prepare( " AND YEAR( {$wpdb->posts}.post_date ) = %d", $q['year'] ); + } + + if ( ! empty( $q['monthnum'] ) ) { + $where .= $wpdb->prepare( " AND MONTH( {$wpdb->posts}.post_date ) = %d", $q['monthnum'] ); + } + + if ( ! empty( $q['day'] ) ) { + $where .= $wpdb->prepare( " AND DAYOFMONTH( {$wpdb->posts}.post_date ) = %d", $q['day'] ); + } + + if ( ! empty( $q['author_name'] ) ) { + $author = get_user_by( 'slug', sanitize_title_for_query( $q['author_name'] ) ); + if ( $author ) { + $q['author'] = $author->ID; + } + } + + if ( ! empty( $q['author'] ) ) { + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_author = %d", $q['author'] ); + } + + // filtered taxonomies ( post_format ) + foreach ( $this->get_filtered_taxonomies_query_vars() as $tax_qv ) { + + if ( ! empty( $q[ $tax_qv ] ) ) { + $join .= " INNER JOIN {$wpdb->term_relationships} AS tr ON tr.object_id = {$wpdb->posts}.ID"; + $join .= " INNER JOIN {$wpdb->term_taxonomy} AS tt ON tt.term_taxonomy_id = tr.term_taxonomy_id"; + $join .= " INNER JOIN {$wpdb->terms} AS t ON t.term_id = tt.term_id"; + $where .= $wpdb->prepare( ' AND t.slug = %s', $q[ $tax_qv ] ); + } + } + + $res = $wpdb->get_results( $select . $join . $where . $groupby, ARRAY_A ); + foreach ( (array) $res as $row ) { + $counts[ $row['term_taxonomy_id'] ] = $row['num_posts']; + } + + wp_cache_set( $cache_key, $counts, 'pll_count_posts' ); + } + + return empty( $counts[ $lang->term_taxonomy_id ] ) ? 0 : $counts[ $lang->term_taxonomy_id ]; + } + + /** + * Setup the links model based on options + * + * @since 1.2 + * + * @return object implementing "links_model interface" + */ + public function get_links_model() { + $c = array( 'Directory', 'Directory', 'Subdomain', 'Domain' ); + $class = get_option( 'permalink_structure' ) ? 'PLL_Links_' . $c[ $this->options['force_lang'] ] : 'PLL_Links_Default'; + + /** + * Filter the links model class to use + * /!\ this filter is fired *before* the $polylang object is available + * + * @since 2.1.1 + * + * @param string $class A class name: PLL_Links_Default, PLL_Links_Directory, PLL_Links_Subdomain, PLL_Links_Domain + */ + $class = apply_filters( 'pll_links_model', $class ); + + return new $class( $this ); + } + + /** + * Some backward compatibility with Polylang < 1.8 + * allows for example to call $polylang->model->get_post_languages( $post_id ) instead of $polylang->model->post->get_language( $post_id ) + * this works but should be slower than the direct call, thus an error is triggered in debug mode + * + * @since 1.8 + * + * @param string $func Function name + * @param array $args Function arguments + */ + public function __call( $func, $args ) { + $f = $func; + + switch ( $func ) { + case 'get_object_term': + $o = ( false === strpos( $args[1], 'term' ) ) ? 'post' : 'term'; + break; + + case 'save_translations': + case 'delete_translation': + case 'get_translations': + case 'get_translation': + case 'join_clause': + $o = ( 'post' == $args[0] || $this->is_translated_post_type( $args[0] ) ) ? 'post' : ( 'term' == $args[0] || $this->is_translated_taxonomy( $args[0] ) ? 'term' : false ); + unset( $args[0] ); + break; + + case 'set_post_language': + case 'get_post_language': + case 'set_term_language': + case 'get_term_language': + case 'delete_term_language': + case 'get_post': + case 'get_term': + $str = explode( '_', $func ); + $f = empty( $str[2] ) ? $str[0] : $str[0] . '_' . $str[2]; + $o = $str[1]; + break; + + case 'where_clause': + case 'get_objects_in_language': + $o = $args[1]; + unset( $args[1] ); + break; + } + + if ( ! empty( $o ) && is_object( $this->$o ) && method_exists( $this->$o, $f ) ) { + if ( WP_DEBUG ) { + $debug = debug_backtrace(); + $i = 1 + empty( $debug[1]['line'] ); // the file and line are in $debug[2] if the function was called using call_user_func + + trigger_error( sprintf( + '%1$s was called incorrectly in %4$s on line %5$s: the call to $polylang->model->%1$s() has been deprecated in Polylang 1.8, use PLL()->model->%2$s->%3$s() instead.' . "\nError handler", + $func, $o, $f, $debug[ $i ]['file'], $debug[ $i ]['line'] + ) ); + } + return call_user_func_array( array( $this->$o, $f ), $args ); + } + + $debug = debug_backtrace(); + trigger_error( sprintf( 'Call to undefined function PLL()->model->%1$s() in %2$s on line %3$s' . "\nError handler", $func, $debug[0]['file'], $debug[0]['line'] ), E_USER_ERROR ); + } +} diff --git a/pole-sbv-content/plugins/polylang/include/nav-menu.php b/pole-sbv-content/plugins/polylang/include/nav-menu.php new file mode 100644 index 00000000..23b80fe4 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/nav-menu.php @@ -0,0 +1,79 @@ +model = &$polylang->model; + $this->options = &$polylang->options; + + // integration with WP customizer + add_action( 'customize_register', array( $this, 'create_nav_menu_locations' ), 5 ); + } + + /** + * create temporary nav menu locations ( one per location and per language ) for all non-default language + * to do only one time + * + * @since 1.2 + */ + public function create_nav_menu_locations() { + static $once; + global $_wp_registered_nav_menus; + + if ( isset( $_wp_registered_nav_menus ) && ! $once ) { + foreach ( $_wp_registered_nav_menus as $loc => $name ) { + foreach ( $this->model->get_languages_list() as $lang ) { + $arr[ $this->combine_location( $loc, $lang ) ] = $name . ' ' . $lang->name; + } + } + + $_wp_registered_nav_menus = $arr; + $once = true; + } + } + + /** + * creates a temporary nav menu location from a location and a language + * + * @since 1.8 + * + * @param string $loc nav menu location + * @param object $lang + * @return string + */ + public function combine_location( $loc, $lang ) { + return $loc . ( strpos( $loc, '___' ) || $this->options['default_lang'] === $lang->slug ? '' : '___' . $lang->slug ); + } + + /** + * get nav menu locations and language from a temporary locaction + * + * @since 1.8 + * + * @param string $loc temporary location + * @return array + * 'location' => nav menu location + * 'lang' => language slug + */ + public function explode_location( $loc ) { + $infos = explode( '___', $loc ); + if ( 1 == count( $infos ) ) { + $infos[] = $this->options['default_lang']; + } + return array_combine( array( 'location', 'lang' ), $infos ); + } +} diff --git a/pole-sbv-content/plugins/polylang/include/olt-manager.php b/pole-sbv-content/plugins/polylang/include/olt-manager.php new file mode 100644 index 00000000..7ebf9a8d --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/olt-manager.php @@ -0,0 +1,245 @@ +default_locale = get_locale(); + + // Filters for text domain management + add_filter( 'load_textdomain_mofile', array( $this, 'load_textdomain_mofile' ), 10, 2 ); + add_filter( 'gettext', array( $this, 'gettext' ), 10, 3 ); + add_filter( 'gettext_with_context', array( $this, 'gettext_with_context' ), 10, 4 ); + + // Loads text domains + add_action( 'pll_language_defined', array( $this, 'load_textdomains' ), 2 ); // After PLL_Frontend::pll_language_defined + add_action( 'pll_no_language_defined', array( $this, 'load_textdomains' ) ); + } + + /** + * Access to the single instance of the class + * + * @since 1.7 + * + * @return object + */ + static public function instance() { + if ( empty( self::$instance ) ) { + self::$instance = new self(); + } + + return self::$instance; + } + + /** + * Loads text domains + * + * @since 0.1 + */ + public function load_textdomains() { + // Our load_textdomain_mofile filter has done its job. let's remove it before calling load_textdomain + remove_filter( 'load_textdomain_mofile', array( $this, 'load_textdomain_mofile' ), 10, 2 ); + remove_filter( 'gettext', array( $this, 'gettext' ), 10, 3 ); + remove_filter( 'gettext_with_context', array( $this, 'gettext_with_context' ), 10, 4 ); + $new_locale = get_locale(); + + // Don't try to save time for en_US as some users have theme written in another language + // Now we can load all overriden text domains with the right language + if ( ! empty( $this->list_textdomains ) ) { + + // Since WP 4.7 we need to reset the internal cache of _get_path_to_translation when switching from any locale to en_US + // See WP_Locale_Switcher::changle_locale() + // FIXME test _get_path_to_translation for backward compatibility with WP < 4.7 + if ( function_exists( '_get_path_to_translation' ) ) { + _get_path_to_translation( null, true ); + } + + foreach ( $this->list_textdomains as $textdomain ) { + // Since WP 4.6, plugins translations are first loaded from wp-content/languages + if ( ! load_textdomain( $textdomain['domain'], str_replace( "{$this->default_locale}.mo", "$new_locale.mo", $textdomain['mo'] ) ) ) { + // Since WP 3.5 themes may store languages files in /wp-content/languages/themes + if ( ! load_textdomain( $textdomain['domain'], WP_LANG_DIR . "/themes/{$textdomain['domain']}-$new_locale.mo" ) ) { + // Since WP 3.7 plugins may store languages files in /wp-content/languages/plugins + load_textdomain( $textdomain['domain'], WP_LANG_DIR . "/plugins/{$textdomain['domain']}-$new_locale.mo" ); + } + } + } + } + + // First remove taxonomies and post_types labels that we don't need to translate + $taxonomies = get_taxonomies( array( '_pll' => true ) ); + $post_types = get_post_types( array( '_pll' => true ) ); + + // We don't need to translate core taxonomies and post types labels when setting the language from the url + // As they will be translated when registered the second time + if ( ! did_action( 'setup_theme' ) ) { + $taxonomies = array_merge( get_taxonomies( array( '_builtin' => true ) ), $taxonomies ); + $post_types = array_merge( get_post_types( array( '_builtin' => true ) ), $post_types ); + } + + // Translate labels of post types and taxonomies + foreach ( array_diff_key( $GLOBALS['wp_taxonomies'], array_flip( $taxonomies ) ) as $tax ) { + $this->translate_labels( $tax ); + } + foreach ( array_diff_key( $GLOBALS['wp_post_types'], array_flip( $post_types ) ) as $pt ) { + $this->translate_labels( $pt ); + } + + // Act only if the language has not been set early ( before default textdomain loading and $wp_locale creation ) + if ( did_action( 'after_setup_theme' ) ) { + // Reinitializes wp_locale for weekdays and months + unset( $GLOBALS['wp_locale'] ); + $GLOBALS['wp_locale'] = new WP_Locale(); + } + + /** + * Fires after the post types and taxonomies labels have been translated + * This allows plugins to translate text the same way we do for post types and taxonomies labels + * + * @since 1.2 + * + * @param array $labels list of strings to trnaslate + */ + do_action_ref_array( 'pll_translate_labels', array( &$this->labels ) ); + + // Free memory + unset( $this->default_locale, $this->list_textdomains, $this->labels ); + } + + /** + * FIXME: Backward compatibility with Polylang for WooCommerce < 0.3.4 + * To remove in Polylang 2.1 + * + * @since 0.1 + * + * @param bool $bool not used + * @param string $domain text domain name + * @param string $mofile translation file name + * @return bool + */ + public function mofile( $bool, $domain, $mofile ) { + return $bool; + } + + /** + * Saves all text domains in a table for later usage + * It replaces the 'override_load_textdomain' filter used since 0.1 + * + * @since 2.0.4 + * + * @param string $mofile translation file name + * @param string $domain text domain name + * @return bool + */ + public function load_textdomain_mofile( $mofile, $domain ) { + // On multisite, 2 files are sharing the same domain so we need to distinguish them + if ( 'default' === $domain && false !== strpos( $mofile, '/ms-' ) ) { + $this->list_textdomains['ms-default'] = array( 'mo' => $mofile, 'domain' => $domain ); + } else { + $this->list_textdomains[ $domain ] = array( 'mo' => $mofile, 'domain' => $domain ); + } + return ''; // Hack to prevent WP loading text domains as we will load them all later + } + + /** + * Saves post types and taxonomies labels for a later usage + * + * @since 0.9 + * + * @param string $translation not used + * @param string $text string to translate + * @param string $domain text domain + * @return string unmodified $translation + */ + public function gettext( $translation, $text, $domain ) { + if ( is_string( $text ) ) { // Avoid a warning with some buggy plugins which pass an array + $this->labels[ $text ] = array( 'domain' => $domain ); + } + return $translation; + } + + /** + * Saves post types and taxonomies labels for a later usage + * + * @since 0.9 + * + * @param string $translation not used + * @param string $text string to translate + * @param string $context some comment to describe the context of string to translate + * @param string $domain text domain + * @return string unmodified $translation + */ + public function gettext_with_context( $translation, $text, $context, $domain ) { + $this->labels[ $text ] = array( 'domain' => $domain, 'context' => $context ); + return $translation; + } + + /** + * Translates post types and taxonomies labels once the language is known + * + * @since 0.9 + * + * @param object $type either a post type or a taxonomy + */ + public function translate_labels( $type ) { + // Use static array to avoid translating several times the same ( default ) labels + static $translated = array(); + + foreach ( $type->labels as $key => $label ) { + if ( is_string( $label ) && isset( $this->labels[ $label ] ) ) { + if ( empty( $translated[ $label ] ) ) { + $type->labels->$key = $translated[ $label ] = isset( $this->labels[ $label ]['context'] ) ? + _x( $label, $this->labels[ $label ]['context'], $this->labels[ $label ]['domain'] ) : + __( $label, $this->labels[ $label ]['domain'] ); + } + else { + $type->labels->$key = $translated[ $label ]; + } + } + } + } + + /** + * Allows Polylang to be the first plugin loaded ;- ) + * + * @since 1.2 + * + * @param array $plugins list of active plugins + * @return array list of active plugins + */ + public function make_polylang_first( $plugins ) { + if ( $key = array_search( POLYLANG_BASENAME, $plugins ) ) { + unset( $plugins[ $key ] ); + array_unshift( $plugins, POLYLANG_BASENAME ); + } + return $plugins; + } +} diff --git a/pole-sbv-content/plugins/polylang/include/pointer.php b/pole-sbv-content/plugins/polylang/include/pointer.php new file mode 100644 index 00000000..82e8442d --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/pointer.php @@ -0,0 +1,110 @@ + required, unique identifier of the pointer + * id => required, the pointer will be attached to this html id + * position => optional array, if used both sub parameters are required + * edge => 'top' or 'bottom' + * align => 'right' or 'left' + * width => optional, the width in px + * title => required, title + * content => required, content + * buttons => optional array of arrays, by default the pointer uses the standard dismiss button offered by WP + * label => the label of the button + * link => optional link for the button. By default, the button just dismisses the pointer + * + * @since 1.7.7 + * + * @param array $args + */ + public function __construct( $args ) { + $this->args = $args; + add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); + } + + /** + * enqueue javascripts and styles if the pointer has not been dismissed + * + * @since 1.7.7 + */ + public function enqueue_scripts() { + $dismissed = explode( ',', get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ); + if ( in_array( $this->args['pointer'], $dismissed ) || ! current_user_can( 'manage_options' ) ) { + return; + } + + // Add pointer javascript + add_action( 'admin_print_footer_scripts', array( $this, 'print_js' ) ); + + wp_enqueue_style( 'wp-pointer' ); + wp_enqueue_script( 'wp-pointer' ); + } + + /** + * adds the javascript of our pointer to the page + * + * @since 1.7.7 + */ + public function print_js() { + + // add optional buttons + if ( ! empty( $this->args['buttons'] ) ) { + $b = " + var widget = pointer.pointer( 'widget' ); + var buttons = $( '.wp-pointer-buttons', widget ); + $( 'a.close', widget ).remove();"; // removes the WP button + + // all the buttons use the standard WP ajax action to remember the pointer has been dismissed + foreach ( $this->args['buttons'] as $button ) { + $b .= sprintf( " + $( '' ).addClass( '%s' ).html( '%s' ).css( 'margin-left', '10px' ).click( function() { + $.post( ajaxurl, { + pointer: '%s', + action: 'dismiss-wp-pointer' + }, function( response ) { + %s + } ); + } ).appendTo( buttons );", + empty( $button['link'] ) ? 'button' : 'button button-primary', + esc_html( $button['label'] ), + $this->args['pointer'], + empty( $button['link'] ) ? "pointer.pointer( 'close' )" : sprintf( "location.href = '%s'", $button['link'] ) + ); + } + } + + $js = sprintf( " + //", + $this->args['id'], + sprintf( '

%s

%s

', esc_html( $this->args['title'] ), esc_html( $this->args['content'] ) ), + empty( $this->args['position'] ) ? '' : sprintf( 'position: {edge: "%s", align: "%s",},', $this->args['position']['edge'], $this->args['position']['align'] ), + empty( $this->args['width'] ) ? '' : sprintf( 'pointerWidth: %d,', $this->args['width'] ), + empty( $b ) ? '' : $b + ); + echo ''; + } +} diff --git a/pole-sbv-content/plugins/polylang/include/query.php b/pole-sbv-content/plugins/polylang/include/query.php new file mode 100644 index 00000000..406ffe4c --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/query.php @@ -0,0 +1,169 @@ +query = &$query; + $this->model = &$model; + } + + /** + * Check if translated taxonomy is queried + * Compatible with nested queries introduced in WP 4.1 + * @see https://wordpress.org/support/topic/tax_query-bug + * + * @since 1.7 + * + * @param array $tax_queries + * @return bool + */ + protected function have_translated_taxonomy( $tax_queries ) { + if ( is_array( $tax_queries ) ) { + foreach ( $tax_queries as $tax_query ) { + if ( isset( $tax_query['taxonomy'] ) && $this->model->is_translated_taxonomy( $tax_query['taxonomy'] ) && ! ( isset( $tax_query['operator'] ) && 'NOT IN' === $tax_query['operator'] ) ) { + return true; + } + + // Nested queries + elseif ( is_array( $tax_query ) && $this->have_translated_taxonomy( $tax_query ) ) { + return true; + } + } + } + + return false; + } + + /** + * Get queried taxonomies + * + * @since 2.2 + * + * @return array queried taxonomies + */ + public function get_queried_taxonomies() { + return isset( $this->query->tax_query->queried_terms ) ? array_keys( wp_list_filter( $this->query->tax_query->queried_terms, array( 'operator' => 'NOT IN' ), 'NOT' ) ) : array(); + } + + /** + * Sets the language in query + * Optimized for ( needs ) WP 3.5+ + * + * @since 2.2 + * + * @param object $lang + */ + public function set_language( $lang ) { + // Defining directly the tax_query ( rather than setting 'lang' avoids transforming the query by WP ) + $this->query->query_vars['tax_query'][] = array( + 'taxonomy' => 'language', + 'field' => 'term_taxonomy_id', // Since WP 3.5 + 'terms' => $lang->term_taxonomy_id, + 'operator' => 'IN', + ); + } + + /** + * Add the language in query after it has checked that it won't conflict with other query vars + * + * @since 2.2 + * + * @param object $lang Language + */ + public function filter_query( $lang ) { + $qvars = &$this->query->query_vars; + + if ( ! isset( $qvars['lang'] ) ) { + // Do not filter the query if the language is already specified in another way + foreach ( self::$excludes as $k ) { + if ( ! empty( $qvars[ $k ] ) ) { + return; + } + } + + // Specific case for 'cat' as it can contain negative values + if ( ! empty( $qvars['cat'] ) ) { + foreach ( explode( ',', $qvars['cat'] ) as $cat ) { + if ( $cat > 0 ) { + return; + } + } + } + + $taxonomies = array_intersect( $this->model->get_translated_taxonomies(), get_taxonomies( array( '_builtin' => false ) ) ); + + foreach ( $taxonomies as $tax ) { + $tax = get_taxonomy( $tax ); + if ( ! empty( $qvars[ $tax->query_var ] ) ) { + return; + } + } + + if ( ! empty( $qvars['tax_query'] ) && $this->have_translated_taxonomy( $qvars['tax_query'] ) ) { + return; + } + + // Filter queries according to the requested language + if ( ! empty( $lang ) ) { + $taxonomies = $this->get_queried_taxonomies(); + + if ( $taxonomies && ( empty( $qvars['post_type'] ) || 'any' === $qvars['post_type'] ) ) { + foreach ( $taxonomies as $taxonomy ) { + $tax_object = get_taxonomy( $taxonomy ); + if ( $this->model->is_translated_post_type( $tax_object->object_type ) ) { + $this->set_language( $lang ); + break; + } + } + } elseif ( empty( $qvars['post_type'] ) || $this->model->is_translated_post_type( $qvars['post_type'] ) ) { + $this->set_language( $lang ); + } + } + } else { + // Do not filter untranslatable post types such as nav_menu_item + if ( isset( $qvars['post_type'] ) && ! $this->model->is_translated_post_type( $qvars['post_type'] ) && ( empty( $qvars['tax_query'] ) || ! $this->have_translated_taxonomy( $qvars['tax_query'] ) ) ) { + unset( $qvars['lang'] ); + } + + // Unset 'all' query var (mainly for admin language filter). + if ( isset( $qvars['lang'] ) && 'all' === $qvars['lang'] ) { + unset( $qvars['lang'] ); + } + } + } +} diff --git a/pole-sbv-content/plugins/polylang/include/static-pages.php b/pole-sbv-content/plugins/polylang/include/static-pages.php new file mode 100644 index 00000000..f18b1298 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/static-pages.php @@ -0,0 +1,102 @@ +model = &$polylang->model; + $this->options = &$polylang->options; + $this->curlang = &$polylang->curlang; + + $this->init(); + + // Modifies the page link in case the front page is not in the default language + add_filter( 'page_link', array( $this, 'page_link' ), 20, 2 ); + + // clean the languages cache when editing page of front, page for posts + add_action( 'update_option_show_on_front', array( $this->model, 'clean_languages_cache' ) ); + add_action( 'update_option_page_on_front', array( $this->model, 'clean_languages_cache' ) ); + add_action( 'update_option_page_for_posts', array( $this->model, 'clean_languages_cache' ) ); + + // refresh rewrite rules when the page on front is modified + add_action( 'update_option_page_on_front', 'flush_rewrite_rules' ); + } + + /** + * stores the page on front and page for posts ids + * + * @since 1.8 + */ + public function init() { + if ( 'page' == get_option( 'show_on_front' ) ) { + $this->page_on_front = get_option( 'page_on_front' ); + $this->page_for_posts = get_option( 'page_for_posts' ); + } + + else { + $this->page_on_front = 0; + $this->page_for_posts = 0; + } + } + + /** + * Modifies the page link in case the front page is not in the default language + * + * @since 0.7.2 + * + * @param string $link link to the page + * @param int $id post id of the page + * @return string modified link + */ + public function page_link( $link, $id ) { + if ( ( $lang = $this->model->post->get_language( $id ) ) && $id == $lang->page_on_front ) { + return $lang->home_url; + } + return $link; + } + + /** + * adds page_on_front and page_for_posts properties to the language objects + * + * @since 1.8 + * + * @param array $languages + * @param object $model + */ + public static function pll_languages_list( $languages, $model ) { + if ( 'page' === get_option( 'show_on_front' ) ) { + foreach ( $languages as $k => $language ) { + $languages[ $k ]->page_on_front = $model->post->get( get_option( 'page_on_front' ), $language ); + $languages[ $k ]->page_for_posts = $model->post->get( get_option( 'page_for_posts' ), $language ); + } + } + + return $languages; + } + + /** + * Translates page for posts + * + * @since 1.8 + * + * @param int $v page for posts page id + * @return int + */ + public function translate_page_for_posts( $v ) { + // Returns the current page if there is no translation to avoid ugly notices + return isset( $this->curlang->page_for_posts ) ? $this->curlang->page_for_posts : $v; + } +} diff --git a/pole-sbv-content/plugins/polylang/include/switcher.php b/pole-sbv-content/plugins/polylang/include/switcher.php new file mode 100644 index 00000000..98a5cd29 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/switcher.php @@ -0,0 +1,216 @@ + array( 'string' => __( 'Displays as dropdown', 'polylang' ), 'default' => 0 ), + 'show_names' => array( 'string' => __( 'Displays language names', 'polylang' ), 'default' => 1 ), + 'show_flags' => array( 'string' => __( 'Displays flags', 'polylang' ), 'default' => 0 ), + 'force_home' => array( 'string' => __( 'Forces link to front page', 'polylang' ), 'default' => 0 ), + 'hide_current' => array( 'string' => __( 'Hides the current language', 'polylang' ), 'default' => 0 ), + 'hide_if_no_translation' => array( 'string' => __( 'Hides languages with no translation', 'polylang' ), 'default' => 0 ), + ); + + return wp_list_pluck( $options, $key ); + } + + /** + * Get the language elements for use in a walker + * + * List of parameters accepted in $args: + * @see PLL_Switcher::the_languages + * + * @since 1.2 + * + * @param object $links instance of PLL_Frontend_Links + * @param array $args + * @return array + */ + protected function get_elements( $links, $args ) { + + $first = true; + + foreach ( $links->model->get_languages_list( array( 'hide_empty' => $args['hide_if_empty'] ) ) as $language ) { + $id = (int) $language->term_id; + $order = (int) $language->term_group; + $slug = $language->slug; + $locale = $language->get_locale( 'display' ); + $classes = array( 'lang-item', 'lang-item-' . $id, 'lang-item-' . esc_attr( $slug ) ); + $url = null; // Avoids potential notice + + if ( $first ) { + $classes[] = 'lang-item-first'; + $first = false; + } + + if ( $current_lang = $links->curlang->slug == $slug ) { + if ( $args['hide_current'] && ! ( $args['dropdown'] && ! $args['raw'] ) ) { + continue; // Hide current language except for dropdown + } + else { + $classes[] = 'current-lang'; + } + } + + if ( null !== $args['post_id'] && ( $tr_id = $links->model->post->get( $args['post_id'], $language ) ) && $links->current_user_can_read( $tr_id ) ) { + $url = get_permalink( $tr_id ); + } elseif ( null === $args['post_id'] ) { + $url = $links->get_translation_url( $language ); + } + + if ( $no_translation = empty( $url ) ) { + $classes[] = 'no-translation'; + } + + /** + * Filter the link in the language switcher + * + * @since 0.7 + * + * @param string $url the link + * @param string $slug language code + * @param string $locale language locale + */ + $url = apply_filters( 'pll_the_language_link', $url, $slug, $language->locale ); + + // Hide if no translation exists + if ( empty( $url ) && $args['hide_if_no_translation'] ) { + continue; + } + + $url = empty( $url ) || $args['force_home'] ? $links->get_home_url( $language ) : $url ; // If the page is not translated, link to the home page + + $name = $args['show_names'] || ! $args['show_flags'] || $args['raw'] ? ( 'slug' == $args['display_names_as'] ? $slug : $language->name ) : ''; + $flag = $args['raw'] && ! $args['show_flags'] ? $language->flag_url : ( $args['show_flags'] ? $language->flag : '' ); + + $out[ $slug ] = compact( 'id', 'order', 'slug', 'locale', 'name', 'url', 'flag', 'current_lang', 'no_translation', 'classes' ); + } + + return empty( $out ) ? array() : $out; + } + + /** + * Displays a language switcher + * or returns the raw elements to build a custom language switcher + * + * List of parameters accepted in $args: + * + * dropdown => the list is displayed as dropdown if set, defaults to 0 + * echo => echoes the list if set to 1, defaults to 1 + * hide_if_empty => hides languages with no posts ( or pages ) if set to 1, defaults to 1 + * show_flags => displays flags if set to 1, defaults to 0 + * show_names => show language names if set to 1, defaults to 1 + * display_names_as => whether to display the language name or its slug, valid options are 'slug' and 'name', defaults to name + * force_home => will always link to home in translated language if set to 1, defaults to 0 + * hide_if_no_translation => hide the link if there is no translation if set to 1, defaults to 0 + * hide_current => hide the current language if set to 1, defaults to 0 + * post_id => returns links to translations of post defined by post_id if set, defaults not set + * raw => return a raw array instead of html markup if set to 1, defaults to 0 + * item_spacing => whether to preserve or discard whitespace between list items, valid options are 'preserve' and 'discard', defaults to preserve + * + * @since 0.1 + * + * @param object $links instance of PLL_Frontend_Links + * @param array $args + * @return string|array either the html markup of the switcher or the raw elements to build a custom language switcher + */ + public function the_languages( $links, $args = '' ) { + $defaults = array( + 'dropdown' => 0, // display as list and not as dropdown + 'echo' => 1, // echoes the list + 'hide_if_empty' => 1, // hides languages with no posts ( or pages ) + 'menu' => 0, // not for nav menu ( this argument is deprecated since v1.1.1 ) + 'show_flags' => 0, // don't show flags + 'show_names' => 1, // show language names + 'display_names_as' => 'name', // valid options are slug and name + 'force_home' => 0, // tries to find a translation + 'hide_if_no_translation' => 0, // don't hide the link if there is no translation + 'hide_current' => 0, // don't hide current language + 'post_id' => null, // if not null, link to translations of post defined by post_id + 'raw' => 0, // set this to true to build your own custom language switcher + 'item_spacing' => 'preserve', // 'preserve' or 'discard' whitespace between list items + ); + $args = wp_parse_args( $args, $defaults ); + + /** + * Filter the arguments of the 'pll_the_languages' template tag + * + * @since 1.5 + * + * @param array $args + */ + $args = apply_filters( 'pll_the_languages_args', $args ); + + // Prevents showing empty options in dropdown + if ( $args['dropdown'] ) { + $args['show_names'] = 1; + } + + $elements = $this->get_elements( $links, $args ); + + if ( $args['raw'] ) { + return $elements; + } + + if ( $args['dropdown'] ) { + $args['name'] = 'lang_choice_' . $args['dropdown']; + $walker = new PLL_Walker_Dropdown(); + $args['selected'] = $links->curlang->slug; + } + else { + $walker = new PLL_Walker_List(); + } + + /** + * Filter the whole html markup returned by the 'pll_the_languages' template tag + * + * @since 0.8 + * + * @param string $html html returned/outputed by the template tag + * @param array $args arguments passed to the template tag + */ + $out = apply_filters( 'pll_the_languages', $walker->walk( $elements, $args ), $args ); + + // Javascript to switch the language when using a dropdown list + if ( $args['dropdown'] ) { + foreach ( $links->model->get_languages_list() as $language ) { + $url = $links->get_translation_url( $language ); + $urls[ $language->slug ] = $args['force_home'] || empty( $url ) ? $links->get_home_url( $language ) : $url; + } + + // Accept only few valid characters for the urls_x variable name ( as the widget id includes '-' which is invalid ) + $out .= sprintf( ' + ', + 'urls_' . preg_replace( '#[^a-zA-Z0-9]#', '', $args['dropdown'] ), json_encode( $urls ), esc_js( $args['name'] ) + ); + } + + if ( $args['echo'] ) { + echo $out; + } + return $out; + } +} diff --git a/pole-sbv-content/plugins/polylang/include/translated-object.php b/pole-sbv-content/plugins/polylang/include/translated-object.php new file mode 100644 index 00000000..db68a4a0 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/translated-object.php @@ -0,0 +1,272 @@ +model = &$model; + + // register our taxonomies as soon as possible + // this is early registration, not ready for rewrite rules as wp_rewrite will be setup later + $args = array( 'label' => false, 'public' => false, 'query_var' => false, 'rewrite' => false, '_pll' => true ); + register_taxonomy( $this->tax_language, $this->object_type, $args ); + $args['update_count_callback'] = '_update_generic_term_count'; // count *all* posts to avoid deleting in clean_translations_terms + register_taxonomy( $this->tax_translations, $this->object_type, $args ); + } + + /** + * Wrap wp_get_object_terms to cache it and return only one object + * inspired by the function get_the_terms + * + * @since 1.2 + * + * @param int $object_id post_id or term_id + * @param string $taxonomy Polylang taxonomy depending if we are looking for a post ( or term ) language ( or translation ) + * @return bool|object the term associated to the object in the requested taxonomy if exists, false otherwise + */ + public function get_object_term( $object_id, $taxonomy ) { + if ( empty( $object_id ) || is_wp_error( $object_id ) ) { + return false; + } + + $object_id = (int) $object_id; + $term = get_object_term_cache( $object_id, $taxonomy ); + + if ( false === $term ) { + // query language and translations at the same time + $taxonomies = array( $this->tax_language, $this->tax_translations ); + + // query terms + foreach ( wp_get_object_terms( $object_id, $taxonomies, array( 'update_term_meta_cache' => false ) ) as $t ) { + $terms[ $t->taxonomy ] = $t; + if ( $t->taxonomy == $taxonomy ) { + $term = $t; + } + } + + // store it the way WP wants it + // set an empty cache if no term found in the taxonomy + foreach ( $taxonomies as $tax ) { + wp_cache_add( $object_id, empty( $terms[ $tax ] ) ? array() : array( $terms[ $tax ] ), $tax . '_relationships' ); + } + } + else { + $term = reset( $term ); + } + + return empty( $term ) ? false : $term; + } + + /** + * Tells wether to store a translation term + * + * @since 1.8 + * + * @param array $translations an associative array of translations with language code as key and translation id as value + */ + protected function keep_translation_group( $translations ) { + return count( $translations ) > 1; + } + + /** + * Saves translations for posts or terms + * + * @since 0.5 + * + * @param int $id post id or term id + * @param array $translations an associative array of translations with language code as key and translation id as value + */ + public function save_translations( $id, $translations ) { + $id = (int) $id; + + if ( ( $lang = $this->get_language( $id ) ) && isset( $translations ) && is_array( $translations ) ) { + // sanitize the translations array + $translations = array_map( 'intval', $translations ); + $translations = array_merge( array( $lang->slug => $id ), $translations ); // make sure this object is in translations + $translations = array_diff( $translations, array( 0 ) ); // don't keep non translated languages + $translations = array_intersect_key( $translations, array_flip( $this->model->get_languages_list( array( 'fields' => 'slug' ) ) ) ); // keep only valid languages slugs as keys + + // unlink removed translations + $old_translations = $this->get_translations( $id ); + foreach ( array_diff_assoc( $old_translations, $translations ) as $object_id ) { + $this->delete_translation( $object_id ); + } + + // don't create a translation group for untranslated posts as it is useless + // but we need one for terms to allow relationships remap when importing from a WXR file + if ( $this->keep_translation_group( $translations ) ) { + $terms = wp_get_object_terms( $translations, $this->tax_translations ); + $term = reset( $terms ); + + // create a new term if necessary + if ( empty( $term ) ) { + wp_insert_term( $group = uniqid( 'pll_' ), $this->tax_translations, array( 'description' => serialize( $translations ) ) ); + } + else { + // take care not to overwrite extra data stored in description field, if any + $d = unserialize( $term->description ); + $d = is_array( $d ) ? array_diff_key( $d, $old_translations ) : array(); // remove old translations + $d = array_merge( $d, $translations ); // add new one + wp_update_term( $group = (int) $term->term_id, $this->tax_translations, array( 'description' => serialize( $d ) ) ); + } + + // link all translations to the new term + foreach ( $translations as $p ) { + wp_set_object_terms( $p, $group, $this->tax_translations ); + } + + // clean now unused translation groups + foreach ( wp_list_pluck( $terms, 'term_id' ) as $term_id ) { + $term = get_term( $term_id, $this->tax_translations ); + if ( empty( $term->count ) ) { + wp_delete_term( $term_id, $this->tax_translations ); + } + } + } + } + } + + /** + * Deletes a translation of a post or term + * + * @since 0.5 + * + * @param int $id post id or term id + */ + public function delete_translation( $id ) { + $id = (int) $id; + $term = $this->get_object_term( $id, $this->tax_translations ); + + if ( ! empty( $term ) ) { + $d = unserialize( $term->description ); + $slug = array_search( $id, $this->get_translations( $id ) ); // in case some plugin stores the same value with different key + unset( $d[ $slug ] ); + + if ( empty( $d ) ) { + wp_delete_term( (int) $term->term_id, $this->tax_translations ); + } + else { + wp_update_term( (int) $term->term_id, $this->tax_translations, array( 'description' => serialize( $d ) ) ); + } + } + } + + /** + * Returns an array of translations of a post or term + * + * @since 0.5 + * + * @param int $id post id or term id + * @return array an associative array of translations with language code as key and translation id as value + */ + public function get_translations( $id ) { + $term = $this->get_object_term( $id, $this->tax_translations ); + $translations = empty( $term ) ? array() : unserialize( $term->description ); + + // make sure we return only translations ( thus we allow plugins to store other informations in the array ) + if ( is_array( $translations ) ) { + $translations = array_intersect_key( $translations, array_flip( $this->model->get_languages_list( array( 'fields' => 'slug' ) ) ) ); + } + + // make sure to return at least the passed post or term in its translation array + if ( empty( $translations ) && $lang = $this->get_language( $id ) ) { + $translations = array( $lang->slug => $id ); + } + + return $translations; + } + + /** + * Returns the id of the translation of a post or term + * + * @since 0.5 + * + * @param int $id post id or term id + * @param object|string $lang object or slug + * @return bool|int post id or term id of the translation, false if there is none + */ + public function get_translation( $id, $lang ) { + if ( ! $lang = $this->model->get_language( $lang ) ) { + return false; + } + + $translations = $this->get_translations( $id ); + + return isset( $translations[ $lang->slug ] ) ? $translations[ $lang->slug ] : false; + } + + /** + * Among the object and its translations, returns the id of the object which is in $lang + * + * @since 0.1 + * + * @param int $id post id or term id + * @param int|string|object $lang language ( term_id or slug or object ) + * @return bool|int the translation post id or term id if exists, otherwise the post id or term id, false if the post has no language + */ + public function get( $id, $lang ) { + $obj_lang = $this->get_language( $id ); // FIXME is this necessary? + if ( ! $lang || ! $obj_lang ) { + return false; + } + + $lang = $this->model->get_language( $lang ); + return $obj_lang->term_id == $lang->term_id ? $id : $this->get_translation( $id, $lang ); + } + + /** + * A where clause to add to sql queries when filtering by language is needed directly in query + * + * @since 1.2 + * + * @param object|array|string $lang a PLL_Language object or a comma separated list of languag slug or an array of language slugs + * @return string where clause + */ + public function where_clause( $lang ) { + global $wpdb; + $tt_id = $this->tax_tt; + + // $lang is an object + // generally the case if the query is coming from Polylang + if ( is_object( $lang ) ) { + return $wpdb->prepare( ' AND pll_tr.term_taxonomy_id = %d', $lang->$tt_id ); + } + + // $lang is a comma separated list of slugs ( or an array of slugs ) + // generally the case is the query is coming from outside with 'lang' parameter + $slugs = is_array( $lang ) ? $lang : explode( ',', $lang ); + foreach ( $slugs as $slug ) { + $languages[] = (int) $this->model->get_language( $slug )->$tt_id; + } + + return ' AND pll_tr.term_taxonomy_id IN ( ' . implode( ',', $languages ) . ' )'; + } + + /** + * Returns ids of objects in a language similarly to get_objects_in_term for a taxonomy + * faster than get_objects_in_term as it avoids a JOIN + * + * @since 1.4 + * + * @param object $lang a PLL_Language object + * @return array + */ + public function get_objects_in_language( $lang ) { + global $wpdb; + $tt_id = $this->tax_tt; + return $wpdb->get_col( $wpdb->prepare( "SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $lang->$tt_id ) ); + } +} diff --git a/pole-sbv-content/plugins/polylang/include/translated-post.php b/pole-sbv-content/plugins/polylang/include/translated-post.php new file mode 100644 index 00000000..785b889e --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/translated-post.php @@ -0,0 +1,140 @@ +object_type = null; + $this->tax_language = 'language'; + $this->tax_translations = 'post_translations'; + $this->tax_tt = 'term_taxonomy_id'; + + parent::__construct( $model ); + + // registers completely the language taxonomy + add_action( 'setup_theme', array( $this, 'register_taxonomy' ), 1 ); + + // setups post types to translate + add_action( 'registered_post_type', array( $this, 'registered_post_type' ) ); + + // forces updating posts cache + add_action( 'pre_get_posts', array( $this, 'pre_get_posts' ) ); + } + + /** + * Store the post language in the database + * + * @since 0.6 + * + * @param int $post_id post id + * @param int|string|object $lang language ( term_id or slug or object ) + */ + public function set_language( $post_id, $lang ) { + wp_set_post_terms( (int) $post_id, $lang ? $this->model->get_language( $lang )->slug : '', 'language' ); + } + + /** + * Returns the language of a post + * + * @since 0.1 + * + * @param int $post_id post id + * @return bool|object PLL_Language object, false if no language is associated to that post + */ + public function get_language( $post_id ) { + $lang = $this->get_object_term( $post_id, 'language' ); + return ( $lang ) ? $this->model->get_language( $lang ) : false; + } + + /** + * Deletes a translation + * + * @since 0.5 + * + * @param int $id post id + */ + public function delete_translation( $id ) { + parent::delete_translation( $id ); + wp_set_object_terms( $id, null, $this->tax_translations ); + } + + /** + * A join clause to add to sql queries when filtering by language is needed directly in query + * + * @since 1.2 + * + * @param string $alias Alias for $wpdb->posts table + * @return string join clause + */ + public function join_clause( $alias = '' ) { + global $wpdb; + if ( empty( $alias ) ) { + $alias = $wpdb->posts; + } + return " INNER JOIN $wpdb->term_relationships AS pll_tr ON pll_tr.object_id = $alias.ID"; + } + + /** + * Register the language taxonomy + * + * @since 1.2 + */ + public function register_taxonomy() { + register_taxonomy( 'language', $this->model->get_translated_post_types(), array( + 'labels' => array( + 'name' => __( 'Languages', 'polylang' ), + 'singular_name' => __( 'Language', 'polylang' ), + 'all_items' => __( 'All languages', 'polylang' ), + ), + // FIXME backward compatibility with WP 4.4.x: we must keep public to true for WP to accept our query var + 'public' => version_compare( $GLOBALS['wp_version'], '4.4', '>=' ) && version_compare( $GLOBALS['wp_version'], '4.5', '<' ), + 'show_ui' => false, // hide the taxonomy on admin side, needed for WP 4.4.x + 'show_in_nav_menus' => false, // no metabox for nav menus, needed for WP 4.4.x + 'publicly_queryable' => true, // since WP 4.5 + 'query_var' => 'lang', + 'rewrite' => $this->model->options['force_lang'] < 2, // no rewrite for domains and sub-domains + '_pll' => true, // polylang taxonomy + ) ); + } + + /** + * Check if registered post type must be translated + * + * @since 1.2 + * + * @param string $post_type post type name + */ + public function registered_post_type( $post_type ) { + if ( $this->model->is_translated_post_type( $post_type ) ) { + register_taxonomy_for_object_type( 'language', $post_type ); + register_taxonomy_for_object_type( 'post_translations', $post_type ); + } + } + + /** + * Forces calling 'update_object_term_cache' when querying posts or pages + * this is especially useful for nav menus with a lot of pages + * without doing this, we would have one query per page in the menu to get the page language for the permalink + * + * @since 1.8 + * + * @param object $query reference to the query object + */ + public function pre_get_posts( $query ) { + if ( ! empty( $query->query['post_type'] ) && $this->model->is_translated_post_type( $query->query['post_type'] ) ) { + $query->query_vars['update_post_term_cache'] = true; + } + } +} diff --git a/pole-sbv-content/plugins/polylang/include/translated-term.php b/pole-sbv-content/plugins/polylang/include/translated-term.php new file mode 100644 index 00000000..c7d5dfb6 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/translated-term.php @@ -0,0 +1,182 @@ +object_type = 'term'; + $this->tax_language = 'term_language'; + $this->tax_translations = 'term_translations'; + $this->tax_tt = 'tl_term_taxonomy_id'; + + parent::__construct( $model ); + + // Filters to prime terms cache + add_filter( 'get_terms', array( $this, '_prime_terms_cache' ), 10, 2 ); + add_filter( 'wp_get_object_terms', array( $this, 'wp_get_object_terms' ), 10, 3 ); + + add_action( 'clean_term_cache', array( $this, 'clean_term_cache' ) ); + } + + /** + * Stores the term language in the database + * + * @since 0.6 + * + * @param int $term_id term id + * @param int|string|object $lang language ( term_id or slug or object ) + */ + public function set_language( $term_id, $lang ) { + $term_id = (int) $term_id; + wp_set_object_terms( $term_id, $lang ? $this->model->get_language( $lang )->tl_term_id : '', 'term_language' ); + + // Add translation group for correct WXR export + $translations = $this->get_translations( $term_id ); + if ( $slug = array_search( $term_id, $translations ) ) { + unset( $translations[ $slug ] ); + } + + $this->save_translations( $term_id, $translations ); + } + + /** + * Removes the term language in database + * + * @since 0.5 + * + * @param int $term_id term id + */ + public function delete_language( $term_id ) { + wp_delete_object_term_relationships( $term_id, 'term_language' ); + } + + /** + * Returns the language of a term + * + * @since 0.1 + * + * @param int|string $value term id or term slug + * @param string $taxonomy optional taxonomy needed when the term slug is passed as first parameter + * @return bool|object PLL_Language object, false if no language is associated to that term + */ + public function get_language( $value, $taxonomy = '' ) { + if ( is_numeric( $value ) ) { + $term_id = $value; + } + + // get_term_by still not cached in WP 3.5.1 but internally, the function is always called by term_id + elseif ( is_string( $value ) && $taxonomy ) { + $term_id = wpcom_vip_get_term_by( 'slug', $value , $taxonomy )->term_id; + } + + // Get the language and make sure it is a PLL_Language object + return isset( $term_id ) && ( $lang = $this->get_object_term( $term_id, 'term_language' ) ) ? $this->model->get_language( $lang->term_id ) : false; + } + + /** + * Tells the parent class to always store a translation term + * + * @since 1.8 + * + * @param array $translations An associative array of translations with language code as key and translation id as value + */ + protected function keep_translation_group( $translations ) { + return true; + } + + /** + * Deletes a translation + * + * @since 0.5 + * + * @param int $id term id + */ + public function delete_translation( $id ) { + global $wpdb; + $slug = array_search( $id, $this->get_translations( $id ) ); // in case some plugin stores the same value with different key + + parent::delete_translation( $id ); + wp_delete_object_term_relationships( $id, 'term_translations' ); + + if ( $wpdb->get_var( $wpdb->prepare( "SELECT COUNT( * ) FROM $wpdb->terms WHERE term_id = %d;", $id ) ) ) { + // Always keep a group for terms to allow relationships remap when importing from a WXR file + $translations[ $slug ] = $id; + wp_insert_term( $group = uniqid( 'pll_' ), 'term_translations', array( 'description' => serialize( $translations ) ) ); + wp_set_object_terms( $id, $group, 'term_translations' ); + } + } + + /** + * A join clause to add to sql queries when filtering by language is needed directly in query + * + * @since 1.2 + * + * @return string join clause + */ + public function join_clause() { + global $wpdb; + return " INNER JOIN $wpdb->term_relationships AS pll_tr ON pll_tr.object_id = t.term_id"; + } + + /** + * Cache language and translations when terms are queried by get_terms + * + * @since 1.2 + * + * @param array $terms queried terms + * @param array $taxonomies queried taxonomies + * @return array unmodified $terms + */ + public function _prime_terms_cache( $terms, $taxonomies ) { + if ( is_array( $terms ) && $this->model->is_translated_taxonomy( $taxonomies ) ) { + foreach ( $terms as $term ) { + $term_ids[] = is_object( $term ) ? $term->term_id : (int) $term; + } + } + + if ( ! empty( $term_ids ) ) { + update_object_term_cache( array_unique( $term_ids ), 'term' ); // Adds language and translation of terms to cache + } + return $terms; + } + + /** + * When terms are found for posts, add their language and translations to cache + * + * @since 1.2 + * + * @param array $terms terms found + * @param array $object_ids not used + * @param array $taxonomies terms taxonomies + * @return array unmodified $terms + */ + public function wp_get_object_terms( $terms, $object_ids, $taxonomies ) { + $taxonomies = explode( "', '", trim( $taxonomies, "'" ) ); + if ( ! in_array( 'term_translations', $taxonomies ) ) { + $this->_prime_terms_cache( $terms, $taxonomies ); + } + return $terms; + } + + /** + * When the term cache is cleaned, clean the object term cache too + * + * @since 2.0 + * + * @param array $ids An array of term IDs. + */ + function clean_term_cache( $ids ) { + clean_object_term_cache( $ids, 'term' ); + } +} diff --git a/pole-sbv-content/plugins/polylang/include/walker-dropdown.php b/pole-sbv-content/plugins/polylang/include/walker-dropdown.php new file mode 100644 index 00000000..f85a2978 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/walker-dropdown.php @@ -0,0 +1,94 @@ + 'parent', 'id' => 'id' ); + + /** + * Outputs one element + * + * @since 1.2 + * + * @param string $output Passed by reference. Used to append additional content. + * @param object $element The data object. + * @param int $depth Depth of the item. + * @param array $args An array of additional arguments. + * @param int $current_object_id ID of the current item. + */ + function start_el( &$output, $element, $depth = 0, $args = array(), $current_object_id = 0 ) { + $value = $args['value']; + $output .= sprintf( + "\t" . '' . "\n", + esc_attr( $element->$value ), + method_exists( $element, 'get_locale' ) ? sprintf( ' lang="%s"', esc_attr( $element->get_locale( 'display' ) ) ) : '', + isset( $args['selected'] ) && $args['selected'] === $element->$value ? ' selected="selected"' : '', + esc_html( $element->name ) + ); + } + + /** + * Overrides Walker::display_element as expects an object with a parent property + * + * @since 1.2 + * + * @param object $element Data object. + * @param array $children_elements List of elements to continue traversing. + * @param int $max_depth Max depth to traverse. + * @param int $depth Depth of current element. + * @param array $args An array of arguments. + * @param string $output Passed by reference. Used to append additional content. + */ + function display_element( $element, &$children_elements, $max_depth, $depth = 0, $args, &$output ) { + $element = (object) $element; // Make sure we have an object + $element->parent = $element->id = 0; // Don't care about this + parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output ); + } + + /** + * Starts the output of the dropdown list + * + * @since 1.2 + * + * List of parameters accepted in $args: + * + * flag => display the selected language flag in front of the dropdown if set to 1, defaults to 0 + * value => the language field to use as value attribute, defaults to 'slug' + * selected => the selected value, mandatory + * name => the select name attribute, defaults to 'lang_choice' + * id => the select id attribute, defaults to $args['name'] + * class => the class attribute + * disabled => disables the dropdown if set to 1 + * + * @param array $elements elements to display + * @param array $args + * @return string + */ + function walk( $elements, $args = array() ) { + $output = ''; + $args = wp_parse_args( $args, array( 'value' => 'slug', 'name' => 'lang_choice' ) ); + + if ( ! empty( $args['flag'] ) ) { + $current = wp_list_filter( $elements, array( $args['value'] => $args['selected'] ) ); + $lang = reset( $current ); + $output = sprintf( + '%s', + empty( $lang->flag ) ? esc_html( $lang->slug ) : $lang->flag + ); + } + + $output .= sprintf( + '' . "\n", + $name = esc_attr( $args['name'] ), + isset( $args['id'] ) && ! $args['id'] ? '' : ' id="' . ( empty( $args['id'] ) ? $name : esc_attr( $args['id'] ) ) . '"', + empty( $args['class'] ) ? '' : ' class="' . esc_attr( $args['class'] ) . '"', + empty( $args['disabled'] ) ? '' : ' disabled="disabled"', + parent::walk( $elements, -1, $args ) + ); + + return $output; + } +} diff --git a/pole-sbv-content/plugins/polylang/include/walker-list.php b/pole-sbv-content/plugins/polylang/include/walker-list.php new file mode 100644 index 00000000..c2418595 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/walker-list.php @@ -0,0 +1,65 @@ + 'parent', 'id' => 'id' ); + + /** + * Outputs one element + * + * @since 1.2 + * + * @param string $output Passed by reference. Used to append additional content. + * @param object $element The data object. + * @param int $depth Depth of the item. + * @param array $args An array of additional arguments. + * @param int $current_object_id ID of the current item. + */ + function start_el( &$output, $element, $depth = 0, $args = array(), $current_object_id = 0 ) { + $output .= sprintf( + '%6$s
  • %4$s%5$s
  • %7$s', + esc_attr( implode( ' ', $element->classes ) ), + esc_attr( $element->locale ), + esc_url( $element->url ), + $element->flag, + $args['show_flags'] && $args['show_names'] ? '' . esc_html( $element->name ) . '' : esc_html( $element->name ), + 'discard' === $args['item_spacing'] ? '' : "\t", + 'discard' === $args['item_spacing'] ? '' : "\n" + ); + } + + /** + * Overrides Walker::display_element as it expects an object with a parent property + * + * @since 1.2 + * + * @param object $element Data object. + * @param array $children_elements List of elements to continue traversing. + * @param int $max_depth Max depth to traverse. + * @param int $depth Depth of current element. + * @param array $args An array of arguments. + * @param string $output Passed by reference. Used to append additional content. + */ + function display_element( $element, &$children_elements, $max_depth, $depth = 0, $args, &$output ) { + $element = (object) $element; // Make sure we have an object + $element->parent = $element->id = 0; // Don't care about this + parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output ); + } + + /** + * Overrides Walker:walk to set depth argument + * + * @since 1.2 + * + * @param array $elements elements to display + * @param array $args + * @return string + */ + function walk( $elements, $args = array() ) { + return parent::walk( $elements, -1, $args ); + } +} diff --git a/pole-sbv-content/plugins/polylang/include/widget-calendar.php b/pole-sbv-content/plugins/polylang/include/widget-calendar.php new file mode 100644 index 00000000..14b1b1d2 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/widget-calendar.php @@ -0,0 +1,265 @@ + not very efficient (add 4 to 5 sql queries) + * method used since 0.5: remove the WP widget and replace it by our own -> our language filter will not work if get_calendar is called directly by a theme + * + * @since 0.5 + */ +class PLL_Widget_Calendar extends WP_Widget_Calendar { + + /** + * displays the widget + * modified version of the parent function to call our own get_calendar function + * + * @since 0.5 + * + * @param array $args Display arguments including before_title, after_title, before_widget, and after_widget. + * @param array $instance The settings for the particular instance of the widget + */ + function widget( $args, $instance ) { + /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */ + $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? ' ' : $instance['title'], $instance, $this->id_base ); + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } + echo '
    '; + empty( PLL()->curlang ) ? get_calendar() : self::get_calendar(); #modified# + echo '
    '; + echo $args['after_widget']; + } + + /** + * modified version of WP get_calendar function to filter the query + * + * @since 0.5 + * + * @param bool $initial Optional, default is true. Use initial calendar names. + * @param bool $echo Optional, default is true. Set to false for return. + * @return string|null String when retrieving, null when displaying. + */ + static function get_calendar( $initial = true, $echo = true ) { + global $wpdb, $m, $monthnum, $year, $wp_locale, $posts; + + $join_clause = PLL()->model->post->join_clause(); #added# + $where_clause = PLL()->model->post->where_clause( PLL()->curlang ); #added# + + $key = md5( PLL()->curlang->slug . $m . $monthnum . $year ); #modified# + $cache = wp_cache_get( 'get_calendar', 'calendar' ); + + if ( $cache && is_array( $cache ) && isset( $cache[ $key ] ) ) { + /** This filter is documented in wp-includes/general-template.php */ + $output = apply_filters( 'get_calendar', $cache[ $key ] ); + + if ( $echo ) { + echo $output; + return; + } + + return $output; + } + + if ( ! is_array( $cache ) ) { + $cache = array(); + } + + // Quick check. If we have no posts at all, abort! + if ( ! $posts ) { + $gotsome = $wpdb->get_var("SELECT 1 as test FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' LIMIT 1"); + if ( ! $gotsome ) { + $cache[ $key ] = ''; + wp_cache_set( 'get_calendar', $cache, 'calendar' ); + return; + } + } + + if ( isset( $_GET['w'] ) ) { + $w = (int) $_GET['w']; + } + // week_begins = 0 stands for Sunday + $week_begins = (int) get_option( 'start_of_week' ); + $ts = current_time( 'timestamp' ); + + // Let's figure out when we are + if ( ! empty( $monthnum ) && ! empty( $year ) ) { + $thismonth = zeroise( intval( $monthnum ), 2 ); + $thisyear = (int) $year; + } elseif ( ! empty( $w ) ) { + // We need to get the month from MySQL + $thisyear = (int) substr( $m, 0, 4 ); + //it seems MySQL's weeks disagree with PHP's + $d = ( ( $w - 1 ) * 7 ) + 6; + $thismonth = $wpdb->get_var("SELECT DATE_FORMAT((DATE_ADD('{$thisyear}0101', INTERVAL $d DAY) ), '%m')"); + } elseif ( ! empty( $m ) ) { + $thisyear = (int) substr( $m, 0, 4 ); + if ( strlen( $m ) < 6 ) { + $thismonth = '01'; + } else { + $thismonth = zeroise( (int) substr( $m, 4, 2 ), 2 ); + } + } else { + $thisyear = gmdate( 'Y', $ts ); + $thismonth = gmdate( 'm', $ts ); + } + + $unixmonth = mktime( 0, 0 , 0, $thismonth, 1, $thisyear ); + $last_day = date( 't', $unixmonth ); + + // Get the next and previous month and year with at least one post + $previous = $wpdb->get_row( "SELECT MONTH( post_date ) AS month, YEAR( post_date ) AS year + FROM $wpdb->posts $join_clause + WHERE post_date < '$thisyear-$thismonth-01' + AND post_type = 'post' AND post_status = 'publish' $where_clause + ORDER BY post_date DESC + LIMIT 1" ); #modified# + $next = $wpdb->get_row( "SELECT MONTH( post_date ) AS month, YEAR( post_date ) AS year + FROM $wpdb->posts $join_clause + WHERE post_date > '$thisyear-$thismonth-{$last_day} 23:59:59' + AND post_type = 'post' AND post_status = 'publish' $where_clause + ORDER BY post_date ASC + LIMIT 1" ); #modified# + + /* translators: Calendar caption: 1: month name, 2: 4-digit year */ + $calendar_caption = _x( '%1$s %2$s', 'calendar caption' ); + $calendar_output = ' + + + '; + + $myweek = array(); + + for ( $wdcount = 0; $wdcount <= 6; $wdcount++ ) { + $myweek[] = $wp_locale->get_weekday( ( $wdcount + $week_begins ) % 7 ); + } + + foreach ( $myweek as $wd ) { + $day_name = $initial ? $wp_locale->get_weekday_initial( $wd ) : $wp_locale->get_weekday_abbrev( $wd ); + $wd = esc_attr( $wd ); + $calendar_output .= "\n\t\t"; + } + + $calendar_output .= ' + + + + + '; + + if ( $previous ) { + $calendar_output .= "\n\t\t".''; + } else { + $calendar_output .= "\n\t\t".''; + } + + $calendar_output .= "\n\t\t".''; + + if ( $next ) { + $calendar_output .= "\n\t\t".''; + } else { + $calendar_output .= "\n\t\t".''; + } + + $calendar_output .= ' + + + + + '; + + $daywithpost = array(); + + // Get days with posts + $dayswithposts = $wpdb->get_results( "SELECT DISTINCT DAYOFMONTH( post_date ) + FROM $wpdb->posts $join_clause + WHERE post_date >= '{$thisyear}-{$thismonth}-01 00:00:00' + AND post_type = 'post' AND post_status = 'publish' $where_clause + AND post_date <= '{$thisyear}-{$thismonth}-{$last_day} 23:59:59'", ARRAY_N ); #modified# + if ( $dayswithposts ) { + foreach ( (array) $dayswithposts as $daywith ) { + $daywithpost[] = $daywith[0]; + } + } + + // See how much we should pad in the beginning + $pad = calendar_week_mod( date( 'w', $unixmonth ) - $week_begins ); + if ( 0 != $pad ) { + $calendar_output .= "\n\t\t".''; + } + + $newrow = false; + $daysinmonth = (int) date( 't', $unixmonth ); + + for ( $day = 1; $day <= $daysinmonth; ++$day ) { + if ( isset($newrow) && $newrow ) { + $calendar_output .= "\n\t\n\t\n\t\t"; + } + $newrow = false; + + if ( $day == gmdate( 'j', $ts ) && + $thismonth == gmdate( 'm', $ts ) && + $thisyear == gmdate( 'Y', $ts ) ) { + $calendar_output .= ''; + + if ( 6 == calendar_week_mod( date( 'w', mktime(0, 0 , 0, $thismonth, $day, $thisyear ) ) - $week_begins ) ) { + $newrow = true; + } + } + + $pad = 7 - calendar_week_mod( date( 'w', mktime( 0, 0 , 0, $thismonth, $day, $thisyear ) ) - $week_begins ); + if ( $pad != 0 && $pad != 7 ) { + $calendar_output .= "\n\t\t".''; + } + $calendar_output .= "\n\t\n\t\n\t
    ' . sprintf( + $calendar_caption, + $wp_locale->get_month( $thismonth ), + date( 'Y', $unixmonth ) + ) . '
    $day_name
    « ' . + $wp_locale->get_month_abbrev( $wp_locale->get_month( $previous->month ) ) . + '  ' . + $wp_locale->get_month_abbrev( $wp_locale->get_month( $next->month ) ) . + ' » 
     
    '; + } else { + $calendar_output .= ''; + } + + if ( in_array( $day, $daywithpost ) ) { + // any posts today? + $date_format = date( _x( 'F j, Y', 'daily archives date format' ), strtotime( "{$thisyear}-{$thismonth}-{$day}" ) ); + $label = sprintf( __( 'Posts published on %s' ), $date_format ); + $calendar_output .= sprintf( + '%s', + get_day_link( $thisyear, $thismonth, $day ), + esc_attr( $label ), + $day + ); + } else { + $calendar_output .= $day; + } + $calendar_output .= ' 
    "; + + $cache[ $key ] = $calendar_output; + wp_cache_set( 'get_calendar', $cache, 'calendar' ); + + if ( $echo ) { + /** + * Filter the HTML calendar output. + * + * @since 3.0.0 + * + * @param string $calendar_output HTML output of the calendar. + */ + echo apply_filters( 'get_calendar', $calendar_output ); + return; + } + /** This filter is documented in wp-includes/general-template.php */ + return apply_filters( 'get_calendar', $calendar_output ); + } +} diff --git a/pole-sbv-content/plugins/polylang/include/widget-languages.php b/pole-sbv-content/plugins/polylang/include/widget-languages.php new file mode 100644 index 00000000..60a97087 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/include/widget-languages.php @@ -0,0 +1,159 @@ + __( 'Displays a language switcher', 'polylang' ), + 'customize_selective_refresh' => true, + ) + ); + } + + /** + * Displays the widget + * + * @since 0.1 + * + * @param array $args Display arguments including before_title, after_title, before_widget, and after_widget. + * @param array $instance The settings for the particular instance of the widget + */ + function widget( $args, $instance ) { + // Sets a unique id for dropdown + $instance['dropdown'] = empty( $instance['dropdown'] ) ? 0 : $args['widget_id']; + + if ( $list = pll_the_languages( array_merge( $instance, array( 'echo' => 0 ) ) ) ) { + $title = empty( $instance['title'] ) ? '' : $instance['title']; + /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */ + $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); + + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } + if ( $instance['dropdown'] ) { + echo ''; + echo $list; + } else { + echo "
      \n" . $list . "
    \n"; + } + echo $args['after_widget']; + } + } + + /** + * Updates the widget options + * + * @since 0.4 + * + * @param array $new_instance New settings for this instance as input by the user via form() + * @param array $old_instance Old settings for this instance + * @return array Settings to save or bool false to cancel saving + */ + function update( $new_instance, $old_instance ) { + $instance['title'] = strip_tags( $new_instance['title'] ); + foreach ( array_keys( PLL_Switcher::get_switcher_options( 'widget' ) ) as $key ) { + $instance[ $key ] = ! empty( $new_instance[ $key ] ) ? 1 : 0; + } + + return $instance; + } + + /** + * Displays the widget form + * + * @since 0.4 + * + * @param array $instance Current settings + */ + function form( $instance ) { + // Default values + $instance = wp_parse_args( (array) $instance, array_merge( array( 'title' => '' ), PLL_Switcher::get_switcher_options( 'widget', 'default' ) ) ); + + // Title + printf( + '

    ', + $this->get_field_id( 'title' ), + esc_html__( 'Title:', 'polylang' ), + $this->get_field_name( 'title' ), + esc_attr( $instance['title'] ) + ); + + $fields = ''; + foreach ( PLL_Switcher::get_switcher_options( 'widget' ) as $key => $str ) { + $fields .= sprintf( + '', + $this->get_field_id( $key ), + $this->get_field_name( $key ), + $instance[ $key ] ? ' checked="checked"' : '', + esc_html( $str ), + in_array( $key, array( 'show_names', 'show_flags', 'hide_current' ) ) ? ' class="no-dropdown-' . $this->id . '"' : '', + ! empty( $instance['dropdown'] ) && in_array( $key, array( 'show_names', 'show_flags', 'hide_current' ) ) ? ' style="display:none;"' : '', + 'pll-' . $key + ); + } + + echo $fields; + + // FIXME echoing script in form is not very clean + // but it does not work if enqueued properly : + // clicking save on a widget makes this code unreachable for the just saved widget ( ?! ) + $this->admin_print_script(); + } + + /** + * Add javascript to control the language switcher options + * + * @since 1.3 + */ + public function admin_print_script() { + static $done = false; + + if ( $done ) { + return; + } + + $done = true; + ?> + + plugin_basename = $plugin_basename; + + // Manages plugin activation and deactivation + register_activation_hook( $plugin_basename, array( $this, 'activate' ) ); + register_deactivation_hook( $plugin_basename, array( $this, 'deactivate' ) ); + + // Blog creation on multisite + add_action( 'wpmu_new_blog', array( $this, 'wpmu_new_blog' ), 5 ); // Before WP attempts to send mails which can break on some PHP versions + } + + /** + * Allows to detect plugin deactivation + * + * @since 1.7 + * + * @return bool true if the plugin is currently beeing deactivated + */ + public function is_deactivation() { + return isset( $_GET['action'], $_GET['plugin'] ) && 'deactivate' == $_GET['action'] && $this->plugin_basename == $_GET['plugin']; + } + + /** + * Activation or deactivation for all blogs + * + * @since 1.2 + * + * @param string $what Either 'activate' or 'deactivate' + * @param bool $networkwide + */ + protected function do_for_all_blogs( $what, $networkwide ) { + // Network + if ( is_multisite() && $networkwide ) { + global $wpdb; + + foreach ( $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" ) as $blog_id ) { + switch_to_blog( $blog_id ); + 'activate' == $what ? $this->_activate() : $this->_deactivate(); + } + restore_current_blog(); + } + + // Single blog + else { + 'activate' == $what ? $this->_activate() : $this->_deactivate(); + } + } + + /** + * Plugin activation for multisite + * + * @since 1.7 + * + * @param bool $networkwide + */ + public function activate( $networkwide ) { + $this->do_for_all_blogs( 'activate', $networkwide ); + } + + /** + * Plugin activation + * + * @since 0.5 + */ + protected function _activate() { + // Can be overriden in child class + } + + /** + * Plugin deactivation for multisite + * + * @since 0.1 + * + * @param bool $networkwide + */ + public function deactivate( $networkwide ) { + $this->do_for_all_blogs( 'deactivate', $networkwide ); + } + + /** + * Plugin deactivation + * + * @since 0.5 + */ + protected function _deactivate() { + // Can be overriden in child class + } + + /** + * Blog creation on multisite ( to set default options ) + * + * @since 0.9.4 + * + * @param int $blog_id + */ + public function wpmu_new_blog( $blog_id ) { + switch_to_blog( $blog_id ); + $this->_activate(); + restore_current_blog(); + } +} diff --git a/pole-sbv-content/plugins/polylang/install/install.php b/pole-sbv-content/plugins/polylang/install/install.php new file mode 100644 index 00000000..5279218b --- /dev/null +++ b/pole-sbv-content/plugins/polylang/install/install.php @@ -0,0 +1,97 @@ +%s

    ', + /* translators: %s are WordPress version numbers */ + sprintf( esc_html__( 'You are using WordPress %s. Polylang requires at least WordPress %s.', 'polylang' ), + esc_html( $wp_version ), + PLL_MIN_WP_VERSION + ) + ) ); + } + $this->do_for_all_blogs( 'activate', $networkwide ); + } + + /** + * Get default Polylang options + * + * @since 1.8 + * + * return array + */ + static public function get_default_options() { + return array( + 'browser' => 1, // Default language for the front page is set by browser preference + 'rewrite' => 1, // Remove /language/ in permalinks ( was the opposite before 0.7.2 ) + 'hide_default' => 1, // Remove URL language information for default language ( was the opposite before 2.1.5 ) + 'force_lang' => 1, // Add URL language information ( was 0 before 1.7 ) + 'redirect_lang' => 0, // Do not redirect the language page to the homepage + 'media_support' => 1, // Support languages and translation for media by default + 'uninstall' => 0, // Do not remove data when uninstalling Polylang + 'sync' => array(), // Synchronisation is disabled by default ( was the opposite before 1.2 ) + 'post_types' => array(), + 'taxonomies' => array(), + 'domains' => array(), + 'version' => POLYLANG_VERSION, + ); + } + + /** + * Plugin activation + * + * @since 0.5 + */ + protected function _activate() { + if ( $options = get_option( 'polylang' ) ) { + // Check if we will be able to upgrade + if ( version_compare( $options['version'], POLYLANG_VERSION, '<' ) ) { + $upgrade = new PLL_Upgrade( $options ); + $upgrade->can_activate(); + } + } + // Defines default values for options in case this is the first installation + else { + update_option( 'polylang', self::get_default_options() ); + } + + // Avoid 1 query on every pages if no wpml strings is registered + if ( ! get_option( 'polylang_wpml_strings' ) ) { + update_option( 'polylang_wpml_strings', array() ); + } + + // Don't use flush_rewrite_rules at network activation. See #32471 + // Thanks to RavanH for the trick. See https://polylang.wordpress.com/2015/06/10/polylang-1-7-6-and-multisite/ + // Rewrite rules are created at next page load :) + delete_option( 'rewrite_rules' ); + } + + /** + * Plugin deactivation + * + * @since 0.5 + */ + protected function _deactivate() { + delete_option( 'rewrite_rules' ); // Don't use flush_rewrite_rules at network activation. See #32471 + } +} diff --git a/pole-sbv-content/plugins/polylang/install/plugin-updater.php b/pole-sbv-content/plugins/polylang/install/plugin-updater.php new file mode 100644 index 00000000..5fa7ea21 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/install/plugin-updater.php @@ -0,0 +1,482 @@ +api_url = trailingslashit( $_api_url ); + $this->api_data = $_api_data; + $this->name = plugin_basename( $_plugin_file ); + $this->slug = basename( $_plugin_file, '.php' ); + $this->version = $_api_data['version']; + $this->wp_override = isset( $_api_data['wp_override'] ) ? (bool) $_api_data['wp_override'] : false; + $this->beta = ! empty( $this->api_data['beta'] ) ? true : false; + $this->cache_key = md5( serialize( $this->slug . $this->api_data['license'] . $this->beta ) ); + + $edd_plugin_data[ $this->slug ] = $this->api_data; + + // Set up hooks. + $this->init(); + + } + + /** + * Set up WordPress filters to hook into WP's update process. + * + * @uses add_filter() + * + * @return void + */ + public function init() { + + add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) ); + add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 ); + remove_action( 'after_plugin_row_' . $this->name, 'wp_plugin_update_row', 10 ); + add_action( 'after_plugin_row_' . $this->name, array( $this, 'show_update_notification' ), 10, 2 ); + add_action( 'admin_init', array( $this, 'show_changelog' ) ); + + } + + /** + * Check for Updates at the defined API endpoint and modify the update array. + * + * This function dives into the update API just when WordPress creates its update array, + * then adds a custom API call and injects the custom plugin data retrieved from the API. + * It is reassembled from parts of the native WordPress plugin update code. + * See wp-includes/update.php line 121 for the original wp_update_plugins() function. + * + * @uses api_request() + * + * @param array $_transient_data Update array build by WordPress. + * @return array Modified update array with custom plugin data. + */ + public function check_update( $_transient_data ) { + + global $pagenow; + + if ( ! is_object( $_transient_data ) ) { + $_transient_data = new stdClass; + } + + if ( 'plugins.php' == $pagenow && is_multisite() ) { + return $_transient_data; + } + + if ( ! empty( $_transient_data->response ) && ! empty( $_transient_data->response[ $this->name ] ) && false === $this->wp_override ) { + return $_transient_data; + } + + $version_info = $this->get_cached_version_info(); + + if ( false === $version_info ) { + $version_info = $this->api_request( 'plugin_latest_version', array( 'slug' => $this->slug, 'beta' => $this->beta ) ); + + $this->set_version_info_cache( $version_info ); + + } + + if ( false !== $version_info && is_object( $version_info ) && isset( $version_info->new_version ) ) { + + if ( version_compare( $this->version, $version_info->new_version, '<' ) ) { + + $_transient_data->response[ $this->name ] = $version_info; + + } + + $_transient_data->last_checked = current_time( 'timestamp' ); + $_transient_data->checked[ $this->name ] = $this->version; + + } + + return $_transient_data; + } + + /** + * show update nofication row -- needed for multisite subsites, because WP won't tell you otherwise! + * + * @param string $file + * @param array $plugin + */ + public function show_update_notification( $file, $plugin ) { + + if ( is_network_admin() ) { + return; + } + + if( ! current_user_can( 'update_plugins' ) ) { + return; + } + + if( ! is_multisite() ) { + return; + } + + if ( $this->name != $file ) { + return; + } + + // Remove our filter on the site transient + remove_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ), 10 ); + + $update_cache = get_site_transient( 'update_plugins' ); + + $update_cache = is_object( $update_cache ) ? $update_cache : new stdClass(); + + if ( empty( $update_cache->response ) || empty( $update_cache->response[ $this->name ] ) ) { + + $version_info = $this->get_cached_version_info(); + + if ( false === $version_info ) { + $version_info = $this->api_request( 'plugin_latest_version', array( 'slug' => $this->slug, 'beta' => $this->beta ) ); + + $this->set_version_info_cache( $version_info ); + } + + if ( ! is_object( $version_info ) ) { + return; + } + + if ( version_compare( $this->version, $version_info->new_version, '<' ) ) { + + $update_cache->response[ $this->name ] = $version_info; + + } + + $update_cache->last_checked = current_time( 'timestamp' ); + $update_cache->checked[ $this->name ] = $this->version; + + set_site_transient( 'update_plugins', $update_cache ); + + } else { + + $version_info = $update_cache->response[ $this->name ]; + + } + + // Restore our filter + add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) ); + + if ( ! empty( $update_cache->response[ $this->name ] ) && version_compare( $this->version, $version_info->new_version, '<' ) ) { + + // build a plugin list row, with update notification + $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' ); + # + echo ''; + echo ''; + echo '
    '; + + $changelog_link = self_admin_url( 'index.php?edd_sl_action=view_plugin_changelog&plugin=' . $this->name . '&slug=' . $this->slug . '&TB_iframe=true&width=772&height=911' ); + + if ( empty( $version_info->download_link ) ) { + printf( + /* translators: %1$s plugin name, %3$s plugin version, %2$s and %4$s are html tags */ + esc_html__( 'There is a new version of %1$s available. %2$sView version %3$s details%4$s.', 'polylang' ), + esc_html( $version_info->name ), + '', + esc_html( $version_info->new_version ), + '' + ); + } else { + printf( + /* translators: %1$s plugin name, %3$s plugin version, %2$s, %4$s, %5$s and %6$s are html tags */ + esc_html__( 'There is a new version of %1$s available. %2$sView version %3$s details%4$s or %5$supdate now%6$s.', 'polylang' ), + esc_html( $version_info->name ), + '', + esc_html( $version_info->new_version ), + '', + '', + '' + ); + } + + do_action( "in_plugin_update_message-{$file}", $plugin, $version_info ); + + echo '
    '; + } + } + + /** + * Updates information on the "View version x.x details" page with custom data. + * + * @uses api_request() + * + * @param mixed $_data + * @param string $_action + * @param object $_args + * @return object $_data + */ + public function plugins_api_filter( $_data, $_action = '', $_args = null ) { + + if ( $_action != 'plugin_information' ) { + + return $_data; + + } + + if ( ! isset( $_args->slug ) || ( $_args->slug != $this->slug ) ) { + + return $_data; + + } + + $to_send = array( + 'slug' => $this->slug, + 'is_ssl' => is_ssl(), + 'fields' => array( + 'banners' => array(), + 'reviews' => false + ) + ); + + $cache_key = 'edd_api_request_' . md5( serialize( $this->slug . $this->api_data['license'] . $this->beta ) ); + + // Get the transient where we store the api request for this plugin for 24 hours + $edd_api_request_transient = $this->get_cached_version_info( $cache_key ); + + //If we have no transient-saved value, run the API, set a fresh transient with the API value, and return that value too right now. + if ( empty( $edd_api_request_transient ) ) { + + $api_response = $this->api_request( 'plugin_information', $to_send ); + + // Expires in 3 hours + $this->set_version_info_cache( $api_response, $cache_key ); + + if ( false !== $api_response ) { + $_data = $api_response; + } + + } else { + $_data = $edd_api_request_transient; + } + + // Convert sections into an associative array, since we're getting an object, but Core expects an array. + if ( isset( $_data->sections ) && ! is_array( $_data->sections ) ) { + $new_sections = array(); + foreach ( $_data->sections as $key => $value ) { + $new_sections[ $key ] = $value; + } + + $_data->sections = $new_sections; + } + + // Convert banners into an associative array, since we're getting an object, but Core expects an array. + if ( isset( $_data->banners ) && ! is_array( $_data->banners ) ) { + $new_banners = array(); + foreach ( $_data->banners as $key => $value ) { + $new_banners[ $key ] = $value; + } + + $_data->banners = $new_banners; + } + + return $_data; + } + + /** + * Disable SSL verification in order to prevent download update failures + * + * @param array $args + * @param string $url + * @return object $array + */ + public function http_request_args( $args, $url ) { + // If it is an https request and we are performing a package download, disable ssl verification + if ( strpos( $url, 'https://' ) !== false && strpos( $url, 'edd_action=package_download' ) ) { + $args['sslverify'] = false; + } + return $args; + } + + /** + * Calls the API and, if successfull, returns the object delivered by the API. + * + * @uses get_bloginfo() + * @uses wp_remote_post() + * @uses is_wp_error() + * + * @param string $_action The requested action. + * @param array $_data Parameters for the API action. + * @return false|object + */ + private function api_request( $_action, $_data ) { + + global $wp_version; + + $data = array_merge( $this->api_data, $_data ); + + if ( $data['slug'] != $this->slug ) { + return; + } + + if( $this->api_url == trailingslashit (home_url() ) ) { + return false; // Don't allow a plugin to ping itself + } + + $api_params = array( + 'edd_action' => 'get_version', + 'license' => ! empty( $data['license'] ) ? $data['license'] : '', + 'item_name' => isset( $data['item_name'] ) ? $data['item_name'] : false, + 'item_id' => isset( $data['item_id'] ) ? $data['item_id'] : false, + 'version' => isset( $data['version'] ) ? $data['version'] : false, + 'slug' => $data['slug'], + 'author' => $data['author'], + 'url' => home_url(), + 'beta' => ! empty( $data['beta'] ), + ); + + $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) ); + + if ( ! is_wp_error( $request ) ) { + $request = json_decode( wp_remote_retrieve_body( $request ) ); + } + + if ( $request && isset( $request->sections ) ) { + $request->sections = maybe_unserialize( $request->sections ); + } else { + $request = false; + } + + if ( $request && isset( $request->banners ) ) { + $request->banners = maybe_unserialize( $request->banners ); + } + + if( ! empty( $request->sections ) ) { + foreach( $request->sections as $key => $section ) { + $request->$key = (array) $section; + } + } + + return $request; + } + + public function show_changelog() { + + global $edd_plugin_data; + + if( empty( $_REQUEST['edd_sl_action'] ) || 'view_plugin_changelog' != $_REQUEST['edd_sl_action'] ) { + return; + } + + if( empty( $_REQUEST['plugin'] ) ) { + return; + } + + if( empty( $_REQUEST['slug'] ) ) { + return; + } + + if( ! current_user_can( 'update_plugins' ) ) { + wp_die( __( 'You do not have permission to install plugin updates', 'polylang' ), __( 'Error', 'polylang' ), array( 'response' => 403 ) ); + } + + $data = $edd_plugin_data[ $_REQUEST['slug'] ]; + $beta = ! empty( $data['beta'] ) ? true : false; + $cache_key = md5( 'edd_plugin_' . sanitize_key( $_REQUEST['plugin'] ) . '_' . $beta . '_version_info' ); + $version_info = $this->get_cached_version_info( $cache_key ); + + if( false === $version_info ) { + + $api_params = array( + 'edd_action' => 'get_version', + 'item_name' => isset( $data['item_name'] ) ? $data['item_name'] : false, + 'item_id' => isset( $data['item_id'] ) ? $data['item_id'] : false, + 'slug' => $_REQUEST['slug'], + 'author' => $data['author'], + 'url' => home_url(), + 'beta' => ! empty( $data['beta'] ) + ); + + $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) ); + + if ( ! is_wp_error( $request ) ) { + $version_info = json_decode( wp_remote_retrieve_body( $request ) ); + } + + + if ( ! empty( $version_info ) && isset( $version_info->sections ) ) { + $version_info->sections = maybe_unserialize( $version_info->sections ); + } else { + $version_info = false; + } + + if( ! empty( $version_info ) ) { + foreach( $version_info->sections as $key => $section ) { + $version_info->$key = (array) $section; + } + } + + $this->set_version_info_cache( $version_info, $cache_key ); + + } + + if( ! empty( $version_info ) && isset( $version_info->sections['changelog'] ) ) { + echo '
    ' . $version_info->sections['changelog'] . '
    '; + } + + exit; + } + + public function get_cached_version_info( $cache_key = '' ) { + + if( empty( $cache_key ) ) { + $cache_key = $this->cache_key; + } + + $cache = get_option( $cache_key ); + + if( empty( $cache['timeout'] ) || current_time( 'timestamp' ) > $cache['timeout'] ) { + return false; // Cache is expired + } + + return json_decode( $cache['value'] ); + + } + + public function set_version_info_cache( $value = '', $cache_key = '' ) { + + if( empty( $cache_key ) ) { + $cache_key = $this->cache_key; + } + + $data = array( + 'timeout' => strtotime( '+3 hours', current_time( 'timestamp' ) ), + 'value' => json_encode( $value ) + ); + + update_option( $cache_key, $data ); + + } + +} diff --git a/pole-sbv-content/plugins/polylang/install/upgrade.php b/pole-sbv-content/plugins/polylang/install/upgrade.php new file mode 100644 index 00000000..fa6f7293 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/install/upgrade.php @@ -0,0 +1,598 @@ +options = &$options; + } + + /** + * Check if upgrade is possible otherwise die to avoid activation + * + * @since 1.2 + */ + public function can_activate() { + if ( ! $this->can_upgrade() ) { + ob_start(); + $this->admin_notices(); // FIXME the error message is displayed two times + die( ob_get_contents() ); + } + } + + /** + * Upgrades if possible otherwise returns false to stop Polylang loading + * + * @since 1.2 + * + * @return bool true if upgrade is possible, false otherwise + */ + public function upgrade() { + if ( ! $this->can_upgrade() ) { + add_action( 'all_admin_notices', array( $this, 'admin_notices' ) ); + return false; + } + + add_action( 'admin_init', array( $this, '_upgrade' ) ); + return true; + } + + + /** + * Check if we the previous version is not too old + * Upgrades if OK + * /!\ never start any upgrade before admin_init as it is likely to conflict with some other plugins + * + * @since 1.2 + * + * @return bool true if upgrade is possible, false otherwise + */ + public function can_upgrade() { + // Don't manage upgrade from version < 0.8 + return version_compare( $this->options['version'], '0.8', '>=' ); + } + + /** + * Displays a notice when ugrading from a too old version + * + * @since 1.0 + */ + public function admin_notices() { + load_plugin_textdomain( 'polylang', false, basename( POLYLANG_DIR ) . '/languages' ); + printf( + '

    %s

    %s

    ', + esc_html__( 'Polylang has been deactivated because you upgraded from a too old version.', 'polylang' ), + sprintf( + /* translators: %s are Polylang version numbers */ + esc_html__( 'Please upgrade first to %s before ugrading to %s.', 'polylang' ), + '0.9.8', + POLYLANG_VERSION + ) + ); + } + + /** + * Upgrades the plugin depending on the previous version + * + * @since 1.2 + */ + public function _upgrade() { + foreach ( array( '0.9', '1.0', '1.1', '1.2', '1.2.1', '1.2.3', '1.3', '1.4', '1.4.1', '1.4.4', '1.5', '1.6', '1.7.4', '1.8', '2.0.8', '2.1', '2.2' ) as $version ) { + if ( version_compare( $this->options['version'], $version, '<' ) ) { + call_user_func( array( $this, 'upgrade_' . str_replace( '.', '_', $version ) ) ); + } + } + + $delete_pre_1_2_data = get_transient( 'pll_upgrade_1_4' ); + if ( false !== $delete_pre_1_2_data && absint( $delete_pre_1_2_data ) < time() ) { + $this->delete_pre_1_2_data(); + } + + $this->options['previous_version'] = $this->options['version']; // Remember the previous version of Polylang since v1.7.7 + $this->options['version'] = POLYLANG_VERSION; + update_option( 'polylang', $this->options ); + } + + /** + * Upgrades if the previous version is < 0.9 + * + * @since 1.2 + */ + protected function upgrade_0_9() { + $this->options['sync'] = defined( 'PLL_SYNC' ) && ! PLL_SYNC ? 0 : 1; // The option replaces PLL_SYNC in 0.9 + } + + /** + * Upgrades if the previous version is < 1.0 + * + * @since 1.2 + */ + protected function upgrade_1_0() { + // The option replaces PLL_MEDIA_SUPPORT in 1.0 + $this->options['media_support'] = defined( 'PLL_MEDIA_SUPPORT' ) && ! PLL_MEDIA_SUPPORT ? 0 : 1; + + // Split the synchronization options in 1.0 + $this->options['sync'] = empty( $this->options['sync'] ) ? array() : array_keys( PLL_Settings_Sync::list_metas_to_sync() ); + + // Set default values for post types and taxonomies to translate + $this->options['post_types'] = array_values( get_post_types( array( '_builtin' => false, 'show_ui' => true ) ) ); + $this->options['taxonomies'] = array_values( get_taxonomies( array( '_builtin' => false, 'show_ui' => true ) ) ); + update_option( 'polylang', $this->options ); + + flush_rewrite_rules(); // Rewrite rules have been modified in 1.0 + } + + /** + * Upgrades if the previous version is < 1.1 + * + * @since 1.2 + */ + protected function upgrade_1_1() { + // Update strings register with icl_register_string + $strings = get_option( 'polylang_wpml_strings' ); + if ( $strings ) { + foreach ( $strings as $key => $string ) { + $strings[ $key ]['icl'] = 1; + } + update_option( 'polylang_wpml_strings', $strings ); + } + + // Move polylang_widgets options + if ( $widgets = get_option( 'polylang_widgets' ) ) { + $this->options['widgets'] = $widgets; + delete_option( 'polylang_widgets' ); + } + } + + /** + * Upgrades if the previous version is < 1.2 + * + * @since 1.2 + */ + protected function upgrade_1_2() { + $this->options['domains'] = array(); // Option added in 1.2 + + // Need to register the taxonomies + foreach ( array( 'language', 'term_language', 'post_translations', 'term_translations' ) as $taxonomy ) { + register_taxonomy( $taxonomy, null , array( 'label' => false, 'public' => false, 'query_var' => false, 'rewrite' => false ) ); + } + + // Abort if the db upgrade has already been done previously + if ( get_terms( 'term_language', array( 'hide_empty' => 0 ) ) ) { + return; + } + + set_time_limit( 0 ); // In case we upgrade a huge site + + // Upgrade old model based on metas to new model based on taxonomies + global $wpdb; + $wpdb->termmeta = $wpdb->prefix . 'termmeta'; // Registers the termmeta table in wpdb + $languages = get_terms( 'language', array( 'hide_empty' => 0 ) ); // Don't use get_languages_list which can't work with the old model + + foreach ( $languages as $lang ) { + // First update language with new storage for locale and text direction + $text_direction = get_metadata( 'term', $lang->term_id, '_rtl', true ); + $desc = serialize( array( 'locale' => $lang->description, 'rtl' => $text_direction ) ); + wp_update_term( (int) $lang->term_id, 'language', array( 'description' => $desc ) ); + + // Add language to new 'term_language' taxonomy + $term_lang = wp_insert_term( $lang->name, 'term_language', array( 'slug' => 'pll_' . $lang->slug ) ); + $lang_tt_ids[ $lang->term_id ] = $term_lang['term_taxonomy_id']; // Keep the term taxonomy id for future + } + + // Get all terms with a language defined + $terms = $wpdb->get_results( "SELECT term_id, meta_value FROM $wpdb->termmeta WHERE meta_key = '_language'" ); + foreach ( $terms as $key => $term ) { + $terms[ $key ] = $wpdb->prepare( '( %d, %d )', $term->term_id, $lang_tt_ids[ $term->meta_value ] ); + } + + $terms = array_unique( $terms ); + + // Assign language to each term + if ( ! empty( $terms ) ) { + $wpdb->query( "INSERT INTO $wpdb->term_relationships ( object_id, term_taxonomy_id ) VALUES " . implode( ',', $terms ) ); + } + + // Translations + foreach ( array( 'post', 'term' ) as $type ) { + $table = $type . 'meta'; + $terms = $slugs = $tts = $trs = array(); + + // Get all translated objects + $objects = $wpdb->get_col( "SELECT DISTINCT meta_value FROM {$wpdb->$table} WHERE meta_key = '_translations'" ); + + if ( empty( $objects ) ) { + continue; + } + + foreach ( $objects as $obj ) { + $term = uniqid( 'pll_' ); // The term name + $terms[] = $wpdb->prepare( '( "%s", "%s" )', $term, $term ); + $slugs[] = $wpdb->prepare( '"%s"', $term ); + $translations = maybe_unserialize( maybe_unserialize( $obj ) ); // 2 unserialize due to an old storage bug + $description[ $term ] = serialize( $translations ); + } + + $terms = array_unique( $terms ); + + // Insert terms + if ( ! empty( $terms ) ) { + $wpdb->query( "INSERT INTO $wpdb->terms ( slug, name ) VALUES " . implode( ',', $terms ) ); + } + + // Get all terms with their term_id + $terms = $wpdb->get_results( "SELECT term_id, slug FROM $wpdb->terms WHERE slug IN ( " . implode( ',', $slugs ) . ' )' ); + + // Prepare terms taxonomy relationship + foreach ( $terms as $term ) { + $tts[] = $wpdb->prepare( '( %d, "%s", "%s" )', $term->term_id, $type . '_translations', $description[ $term->slug ] ); + } + + $tts = array_unique( $tts ); + + // Insert term_taxonomy + if ( ! empty( $tts ) ) { + $wpdb->query( "INSERT INTO $wpdb->term_taxonomy ( term_id, taxonomy, description ) VALUES " . implode( ',', $tts ) ); + } + + // Get all terms with term_taxonomy_id + $terms = get_terms( $type . '_translations', array( 'hide_empty' => false ) ); + + // Prepare objects relationships + foreach ( $terms as $term ) { + $translations = unserialize( $term->description ); + foreach ( $translations as $object_id ) { + if ( ! empty( $object_id ) ) { + $trs[] = $wpdb->prepare( '( %d, %d )', $object_id, $term->term_taxonomy_id ); + } + } + } + + $trs = array_unique( $trs ); + + // Insert term_relationships + if ( ! empty( $trs ) ) { + $wpdb->query( "INSERT INTO $wpdb->term_relationships ( object_id, term_taxonomy_id ) VALUES " . implode( ',', $trs ) ); + } + } + + // Upgrade of string translations is now in upgrade_1_2_1 + // Upgrade of nav menus is now in upgrade_1_2_3 + } + + /** + * Upgrades if the previous version is < 1.2.1 + * + * @since 1.2.1 + */ + protected function upgrade_1_2_1() { + // Strings translations + foreach ( get_terms( 'language', array( 'hide_empty' => 0 ) ) as $lang ) { + if ( $strings = get_option( 'polylang_mo' . $lang->term_id ) ) { + $mo = new PLL_MO(); + foreach ( $strings as $msg ) { + $mo->add_entry( $mo->make_entry( $msg[0], $msg[1] ) ); + } + $mo->export_to_db( $lang ); + } + } + } + + /** + * Upgrades if the previous version is < 1.2.3 + * Uprades multilingual menus depending on the old version due to multiple changes in menus management + * + * @since 1.2.3 + */ + public function upgrade_1_2_3() { + // Old version < 1.1 + // Multilingal locations and switcher item were stored in a dedicated option + if ( version_compare( $this->options['version'], '1.1', '<' ) ) { + if ( $menu_lang = get_option( 'polylang_nav_menus' ) ) { + foreach ( $menu_lang as $location => $arr ) { + if ( ! in_array( $location, array_keys( get_registered_nav_menus() ) ) ) { + continue; + } + + $switch_options = array_slice( $arr, -5, 5 ); + $translations = array_diff_key( $arr, $switch_options ); + $has_switcher = array_shift( $switch_options ); + + foreach ( get_terms( 'language', array( 'hide_empty' => 0 ) ) as $lang ) { + // Move nav menus locations + if ( ! empty( $translations[ $lang->slug ] ) ) { + $locations[ $location ][ $lang->slug ] = $translations[ $lang->slug ]; + } + + // Create the menu items for the language switcher + if ( ! empty( $has_switcher ) ) { + $menu_item_db_id = wp_update_nav_menu_item( $translations[ $lang->slug ], 0, array( + 'menu-item-title' => __( 'Language switcher', 'polylang' ), + 'menu-item-url' => '#pll_switcher', + 'menu-item-status' => 'publish', + ) ); + + update_post_meta( $menu_item_db_id, '_pll_menu_item', $switch_options ); + } + } + } + + if ( ! empty( $locations ) ) { + $this->options['nav_menus'][ get_option( 'stylesheet' ) ] = $locations; + } + + delete_option( 'polylang_nav_menus' ); + } + } + + elseif ( empty( $this->options['nav_menus'] ) ) { + $menus = get_theme_mod( 'nav_menu_locations' ); + + if ( is_array( $menus ) ) { + // If old version < 1.2 + // Clean the WP option as it was a bad idea to pollute it + if ( version_compare( $this->options['version'], '1.2', '<' ) ) { + foreach ( $menus as $loc => $menu ) { + if ( $pos = strpos( $loc, '#' ) ) { + unset( $menus[ $loc ] ); + } + } + + set_theme_mod( 'nav_menu_locations', $menus ); + } + + // Get the multilingual locations + foreach ( $menus as $loc => $menu ) { + foreach ( get_terms( 'language', array( 'hide_empty' => 0 ) ) as $lang ) { + $arr[ $loc ][ $lang->slug ] = pll_get_term( $menu, $lang ); + } + } + + if ( ! empty( $arr ) ) { + $this->options['nav_menus'][ get_option( 'stylesheet' ) ] = $arr; + } + } + } + } + + /** + * Upgrades if the previous version is < 1.3 + * Moves the user biographies in default language to the 'description' user meta + * + * @since 1.3 + */ + protected function upgrade_1_3() { + $usermeta = 'description_' . $this->options['default_lang']; + $query = new WP_User_Query( array( 'blog_id' => $GLOBALS['blog_id'], 'meta_key' => $usermeta ) ); + + foreach ( $query->get_results() as $user ) { + $desc = get_user_meta( $user->ID, $usermeta, true ); + if ( ! empty( $desc ) ) { + update_user_meta( $user->ID, 'description', $desc ); + delete_user_meta( $user->ID, $usermeta ); + } + } + } + + /** + * Upgrades if the previous version is < 1.4 + * Sets a transient to delete old model data + * Deletes language cache (due to bug correction in home urls in 1.3.1 and added mo_id in 1.4) + * + * @since 1.4 + */ + protected function upgrade_1_4() { + set_transient( 'pll_upgrade_1_4', time() + 60 * 24 * 60 * 60 ); // 60 days + delete_transient( 'pll_languages_list' ); + } + + /** + * Old data were not deleted in 1.2, just in case... + * Delete them at first upgrade at least 60 days after upgrade to 1.4 + * + * @since 1.4 + */ + protected function delete_pre_1_2_data() { + // Suppress data of the old model < 1.2 + global $wpdb; + $wpdb->termmeta = $wpdb->prefix . 'termmeta'; // registers the termmeta table in wpdb in case WP < 4.4 + + // Do nothing if the termmeta table does not exists + if ( count( $wpdb->get_results( "SHOW TABLES LIKE '$wpdb->termmeta'" ) ) ) { + $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key = '_translations'" ); + $wpdb->query( "DELETE FROM $wpdb->termmeta WHERE meta_key = '_language'" ); + $wpdb->query( "DELETE FROM $wpdb->termmeta WHERE meta_key = '_rtl'" ); + $wpdb->query( "DELETE FROM $wpdb->termmeta WHERE meta_key = '_translations'" ); + } + + // Delete the strings translations + $languages = get_terms( 'language', array( 'hide_empty' => false ) ); + foreach ( $languages as $lang ) { + delete_option( 'polylang_mo' . $lang->term_id ); + } + + delete_transient( 'pll_upgrade_1_4' ); + } + + /** + * Upgrades if the previous version is < 1.4.1 + * Disables the browser detection when using multiple domains + * + * @since 1.4.1 + */ + protected function upgrade_1_4_1() { + if ( 3 == $this->options['force_lang'] ) { + $this->options['browser'] = $this->options['hide_default'] = 0; + } + } + + /** + * Upgrades if the previous version is < 1.4.4 + * Uprades widgets options for language filter + * + * @since 1.4.4 + */ + protected function upgrade_1_4_4() { + foreach ( $GLOBALS['wp_registered_widgets'] as $widget ) { + if ( ! empty( $this->options['widgets'][ $widget['id'] ] ) && ! empty( $widget['callback'][0] ) && ! empty( $widget['params'][0]['number'] ) ) { + $obj = $widget['callback'][0]; + if ( is_object( $obj ) && method_exists( $obj, 'get_settings' ) && method_exists( $obj, 'save_settings' ) ) { + $settings = $obj->get_settings(); + $settings[ $widget['params'][0]['number'] ]['pll_lang'] = $this->options['widgets'][ $widget['id'] ]; + $obj->save_settings( $settings ); + } + } + } + unset( $this->options['widgets'] ); + } + + /** + * Upgrades if the previous version is < 1.5 + * Deletes language cache (due to host property added and bug on search url) + * + * @since 1.5 + */ + protected function upgrade_1_5() { + delete_transient( 'pll_languages_list' ); + } + + /** + * Upgrades if the previous version is < 1.6 + * Upgrades core language files to get the .po file (only for WP 4.0+) + * + * @since 1.6 + */ + protected function upgrade_1_6() { + if ( version_compare( $GLOBALS['wp_version'], '4.0', '>=' ) ) { + self::download_language_packs(); + } + } + + /** + * Downloads language packs + * Intended to be used only one time (at upgrade to Polylang 1.6 or first upgrade of WP 4.0 or later) + * Adapted from wp_download_language_pack + * Rewritten because wp_download_language_pack checks the existence of .mo and I need to download .po + * + * @since 1.6 + */ + static function download_language_packs() { + $languages = pll_languages_list( array( 'fields' => 'locale' ) ); + + // Prevents upgrade if the .po file is already here. Let WP manage the upgrades :) + foreach ( $languages as $key => $locale ) { + if ( file_exists( WP_LANG_DIR . "/$locale.po" ) ) { + unset( $languages[ $key ] ); + } + } + + if ( empty( $languages ) ) { + return; + } + + require_once ABSPATH . 'wp-admin/includes/translation-install.php'; + $translations = wp_get_available_translations(); + if ( ! $translations ) { + return; + } + + foreach ( $translations as $translation ) { + if ( in_array( $translation['language'], $languages ) ) { + $translation['type'] = 'core'; + $translations_to_load[] = (object) $translation; + } + } + + if ( ! empty( $translations_to_load ) ) { + require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + $upgrader = new Language_Pack_Upgrader( new Automatic_Upgrader_Skin ); + $upgrader->bulk_upgrade( $translations_to_load, array( 'clear_update_cache' => false ) ); + } + } + + /** + * Upgrades if the previous version is < 1.7.4 + * + * @since 1.7.4 + */ + protected function upgrade_1_7_4() { + delete_transient( 'pll_languages_list' ); // Deletes language cache (due to flag properties added in 1.7, page on front removed in 1.7.2, home url fixes in 1.7.4) + flush_rewrite_rules(); // Flush rewrite rules due to custom taxonomy rewrite rule bug fix + } + + /** + * Upgrades if the previous version is < 1.8 + * + * @since 1.8 + */ + protected function upgrade_1_8() { + // Adds the flag code in languages stored in DB + include PLL_SETTINGS_INC . '/languages.php'; + + $terms = get_terms( 'language', array( 'hide_empty' => 0 ) ); + + foreach ( $terms as $lang ) { + $description = maybe_unserialize( $lang->description ); + if ( isset( $languages[ $description['locale'] ] ) ) { + $description['flag_code'] = $languages[ $description['locale'] ][4]; + $description = serialize( $description ); + wp_update_term( (int) $lang->term_id, 'language', array( 'description' => $description ) ); + } + } + + delete_transient( 'pll_languages_list' ); + } + + /** + * Upgrades if the previous version is < 2.0.8 + * Changes the user meta 'user_lang' to 'locale' to match WP 4.7 choice + * + * @since 2.0.8 + */ + protected function upgrade_2_0_8() { + global $wpdb; + $wpdb->update( $wpdb->usermeta, array( 'meta_key' => 'locale' ), array( 'meta_key' => 'user_lang' ) ); + } + + /** + * Upgrades if the previous version is < 2.1 + * Moves strings translations from polylang_mo post_content to post meta _pll_strings_translations + * + * @since 2.1 + */ + protected function upgrade_2_1() { + foreach ( get_terms( 'language', array( 'hide_empty' => 0 ) ) as $lang ) { + $mo_id = PLL_MO::get_id( $lang ); + $meta = get_post_meta( $mo_id, '_pll_strings_translations', true ); + + if ( empty( $meta ) ) { + $post = get_post( $mo_id, OBJECT ); + $strings = unserialize( $post->post_content ); + if ( is_array( $strings ) ) { + update_post_meta( $mo_id, '_pll_strings_translations', $strings ); + } + } + } + } + + /** + * Upgrades if the previous version is < 2.2 + * + * @since 2.2 + */ + protected function upgrade_2_2() { + delete_transient( 'pll_languages_list' ); // Deletes language cache (due to 'redirect_lang' option removed for subdomains and multiple domains) + } +} diff --git a/pole-sbv-content/plugins/polylang/js/admin.js b/pole-sbv-content/plugins/polylang/js/admin.js new file mode 100644 index 00000000..fc12c603 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/js/admin.js @@ -0,0 +1,191 @@ +jQuery( document ).ready(function( $ ) { + var transitionTimeout; + + // languages list table + // accessibility to row actions on focus + // mainly copy paste of WP code from common.js + $( 'table.languages' ).on({ // restricted to languages list table + focusin: function() { + clearTimeout( transitionTimeout ); + focusedRowActions = $( this ).find( '.row-actions' ); + // transitionTimeout is necessary for Firefox, but Chrome won't remove the CSS class without a little help. + $( '.row-actions' ).not( this ).removeClass( 'visible' ); + focusedRowActions.addClass( 'visible' ); + }, + focusout: function() { + // Tabbing between post title and .row-actions links needs a brief pause, otherwise + // the .row-actions div gets hidden in transit in some browsers ( ahem, Firefox ). + transitionTimeout = setTimeout(function() { + focusedRowActions.removeClass( 'visible' ); + }, 30 ); + } + }, 'tr' ); // acts on the whole tr instead of single td as we have actions links in several columns + + // extends selectmenu to add flags in menu items + $.widget( "custom.iconselectmenu", $.ui.selectmenu, { + _renderItem: function( ul, item ) { + var li = $( "
  • ", { text: item.label } ); + + if ( item.value ) { + $( "", { + src: pll_flag_base_url + item.value + '.png', + "class": "ui-icon" + }).appendTo( li ); + } + + return li.appendTo( ul ); + } + }); + + // allows to display the flag for the selected menu item + function add_icon( event, ui ) { + var value = $( this ).val(); + if ( value ) { + var txt = $( this ).iconselectmenu( "widget" ).children( ":last" ); + var img = $( '' ).appendTo( txt ); + img.attr( "src", pll_flag_base_url + value + '.png' ); + } + } + + // overrides the flag dropdown list with our customized jquery ui selectmenu + $( "#flag_list" ).iconselectmenu({ + create: add_icon, + select: add_icon, + }); + + // languages form + // fills the fields based on the language dropdown list choice + $( '#lang_list' ).change(function() { + var value = $( this ).val().split( ':' ); + var selected = $( "select option:selected" ).text().split( ' - ' ); + $( '#lang_slug' ).val( value[0] ); + $( '#lang_locale' ).val( value[1] ); + $( 'input[name="rtl"]' ).val( [value[2]] ); + $( '#lang_name' ).val( selected[0] ); + $( '#flag_list option[value="' + value[3] + '"]' ).attr( 'selected', 'selected' ); + + // recreate the jquery ui selectmenu + $( "#flag_list" ).iconselectmenu( 'destroy' ).iconselectmenu({ + create: add_icon, + select: add_icon, + }) + }); + + // strings translations + // save translations when pressing enter + $( '.translation input' ).keypress(function( event ){ + if ( 13 === event.keyCode ) { + event.preventDefault(); + $( '#submit' ).click(); + } + }); + + // settings page + // click on configure link + $( '#the-list' ).on( 'click', '.configure>a', function(){ + $( '.pll-configure' ).hide().prev().show(); + $( this ).closest( 'tr' ).hide().next().show(); + return false; + }); + + // cancel + $( '#the-list' ).on( 'click', '.cancel', function(){ + $( this ).closest( 'tr' ).hide().prev().show(); + }); + + // save settings + $( '#the-list' ).on( 'click', '.save', function(){ + var tr = $( this ).closest( 'tr' ); + var parts = tr.attr( 'id' ).split( '-' ); + + var data = { + action: 'pll_save_options', + pll_ajax_settings: true, + module: parts[parts.length - 1], + _pll_nonce: $( '#_pll_nonce' ).val() + } + + data = tr.find( ':input' ).serialize() + '&' + $.param( data ); + + $.post( ajaxurl, data, function( response ) { + var res = wpAjax.parseAjaxResponse( response, 'ajax-response' ); + $.each( res.responses, function() { + switch ( this.what ) { + case 'license-update': + $( '#pll-license-' + this.data ).replaceWith( this.supplemental.html ); + break; + case 'success': + tr.hide().prev().show(); // close only if there is no error + case 'error': + $( '.settings-error' ).remove(); // remove previous messages if any + $( 'h1' ).after( this.data ); + + // Make notices dismissible + // copy paste of common.js from WP 4.2.2 + $( '.notice.is-dismissible' ).each(function() { + var $this = $( this ), + $button = $( '' ), + btnText = commonL10n.dismiss || ''; + + // Ensure plain text + $button.find( '.screen-reader-text' ).text( btnText ); + + $this.append( $button ); + + $button.on( 'click.wp-dismiss-notice', function( event ) { + event.preventDefault(); + $this.fadeTo( 100 , 0, function() { + $( this ).slideUp( 100, function() { + $( this ).remove(); + }); + }); + }); + }); + break; + } + }); + }); + }); + + // act when pressing enter or esc in configurations + $( '.pll-configure' ).keypress(function( event ){ + if ( 13 === event.keyCode ) { + event.preventDefault(); + $( this ).find( '.save' ).click(); + } + + if ( 27 === event.keyCode ) { + event.preventDefault(); + $( this ).find( '.cancel' ).click(); + } + }); + + // settings URL modifications + // manages visibility of fields + $( "input[name='force_lang']" ).change(function() { + function pll_toggle( a, test ) { + test ? a.show() : a.hide(); + } + + var value = $( this ).val(); + pll_toggle( $( '#pll-domains-table' ), 3 == value ); + pll_toggle( $( "#pll-hide-default" ), 3 > value ); + pll_toggle( $( "#pll-rewrite" ), 2 > value ); + pll_toggle( $( "#pll-redirect-lang" ), 2 > value ); + }); + + // settings license + // deactivate button + $( '.pll-deactivate-license' ).on( 'click', function() { + var data = { + action: 'pll_deactivate_license', + pll_ajax_settings: true, + id: $( this ).attr( 'id' ), + _pll_nonce: $( '#_pll_nonce' ).val() + } + $.post( ajaxurl, data , function( response ){ + $( '#pll-license-' + response.id ).replaceWith( response.html ); + }); + }); + +}); diff --git a/pole-sbv-content/plugins/polylang/js/admin.min.js b/pole-sbv-content/plugins/polylang/js/admin.min.js new file mode 100644 index 00000000..5fdff77e --- /dev/null +++ b/pole-sbv-content/plugins/polylang/js/admin.min.js @@ -0,0 +1 @@ +jQuery(document).ready(function(e){function t(){var t=e(this).val();if(t){var n=e(this).iconselectmenu("widget").children(":last"),i=e('').appendTo(n);i.attr("src",pll_flag_base_url+t+".png")}}var n;e("table.languages").on({focusin:function(){clearTimeout(n),focusedRowActions=e(this).find(".row-actions"),e(".row-actions").not(this).removeClass("visible"),focusedRowActions.addClass("visible")},focusout:function(){n=setTimeout(function(){focusedRowActions.removeClass("visible")},30)}},"tr"),e.widget("custom.iconselectmenu",e.ui.selectmenu,{_renderItem:function(t,n){var i=e("
  • ",{text:n.label});return n.value&&e("",{src:pll_flag_base_url+n.value+".png","class":"ui-icon"}).appendTo(i),i.appendTo(t)}}),e("#flag_list").iconselectmenu({create:t,select:t}),e("#lang_list").change(function(){var n=e(this).val().split(":"),i=e("select option:selected").text().split(" - ");e("#lang_slug").val(n[0]),e("#lang_locale").val(n[1]),e('input[name="rtl"]').val([n[2]]),e("#lang_name").val(i[0]),e('#flag_list option[value="'+n[3]+'"]').attr("selected","selected"),e("#flag_list").iconselectmenu("destroy").iconselectmenu({create:t,select:t})}),e(".translation input").keypress(function(t){13===t.keyCode&&(t.preventDefault(),e("#submit").click())}),e("#the-list").on("click",".configure>a",function(){return e(".pll-configure").hide().prev().show(),e(this).closest("tr").hide().next().show(),!1}),e("#the-list").on("click",".cancel",function(){e(this).closest("tr").hide().prev().show()}),e("#the-list").on("click",".save",function(){var t=e(this).closest("tr"),n=t.attr("id").split("-"),i={action:"pll_save_options",pll_ajax_settings:!0,module:n[n.length-1],_pll_nonce:e("#_pll_nonce").val()};i=t.find(":input").serialize()+"&"+e.param(i),e.post(ajaxurl,i,function(n){var i=wpAjax.parseAjaxResponse(n,"ajax-response");e.each(i.responses,function(){switch(this.what){case"license-update":e("#pll-license-"+this.data).replaceWith(this.supplemental.html);break;case"success":t.hide().prev().show();case"error":e(".settings-error").remove(),e("h1").after(this.data),e(".notice.is-dismissible").each(function(){var t=e(this),n=e(''),i=commonL10n.dismiss||"";n.find(".screen-reader-text").text(i),t.append(n),n.on("click.wp-dismiss-notice",function(n){n.preventDefault(),t.fadeTo(100,0,function(){e(this).slideUp(100,function(){e(this).remove()})})})})}})})}),e(".pll-configure").keypress(function(t){13===t.keyCode&&(t.preventDefault(),e(this).find(".save").click()),27===t.keyCode&&(t.preventDefault(),e(this).find(".cancel").click())}),e("input[name='force_lang']").change(function(){function t(e,t){t?e.show():e.hide()}var n=e(this).val();t(e("#pll-domains-table"),3==n),t(e("#pll-hide-default"),3>n),t(e("#pll-rewrite"),2>n),t(e("#pll-redirect-lang"),2>n)}),e(".pll-deactivate-license").on("click",function(){var t={action:"pll_deactivate_license",pll_ajax_settings:!0,id:e(this).attr("id"),_pll_nonce:e("#_pll_nonce").val()};e.post(ajaxurl,t,function(t){e("#pll-license-"+t.id).replaceWith(t.html)})})}); diff --git a/pole-sbv-content/plugins/polylang/js/media.js b/pole-sbv-content/plugins/polylang/js/media.js new file mode 100644 index 00000000..794dedbb --- /dev/null +++ b/pole-sbv-content/plugins/polylang/js/media.js @@ -0,0 +1,6 @@ +// when clicking on attach link, filters find post list per media language +(function( $ ){ + $.ajaxPrefilter(function ( options, originalOptions, jqXHR ) { + options.data = 'pll_post_id=' + $( '#affected' ).val() + '&' + options.data; + }); +})( jQuery ) diff --git a/pole-sbv-content/plugins/polylang/js/media.min.js b/pole-sbv-content/plugins/polylang/js/media.min.js new file mode 100644 index 00000000..050f6bb7 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/js/media.min.js @@ -0,0 +1 @@ +!function(a){a.ajaxPrefilter(function(t){t.data="pll_post_id="+a("#affected").val()+"&"+t.data})}(jQuery); diff --git a/pole-sbv-content/plugins/polylang/js/nav-menu.js b/pole-sbv-content/plugins/polylang/js/nav-menu.js new file mode 100644 index 00000000..c549883f --- /dev/null +++ b/pole-sbv-content/plugins/polylang/js/nav-menu.js @@ -0,0 +1,68 @@ +jQuery( document ).ready(function( $ ) { + $( '#update-nav-menu' ).bind( 'click', function( e ) { + if ( e.target && e.target.className && -1 != e.target.className.indexOf( 'item-edit' ) ) { + $( "input[value='#pll_switcher'][type=text]" ).parent().parent().parent().each(function(){ + var item = $( this ).attr( 'id' ).substring( 19 ); + $( this ).children( 'p:not( .field-move )' ).remove(); // remove default fields we don't need + + h = $( '' ).attr({ + type: 'hidden', + id: 'edit-menu-item-title-' + item, + name: 'menu-item-title[' + item + ']', + value: pll_data.title + }); + $( this ).append( h ); + + h = $( '' ).attr({ + type: 'hidden', + id: 'edit-menu-item-url-' + item, + name: 'menu-item-url[' + item + ']', + value: '#pll_switcher' + }); + $( this ).append( h ); + + // a hidden field which exits only if our jQuery code has been executed + h = $( '' ).attr({ + type: 'hidden', + id: 'edit-menu-item-pll-detect-' + item, + name: 'menu-item-pll-detect[' + item + ']', + value: 1 + }); + $( this ).append( h ); + + ids = Array( 'hide_if_no_translation', 'hide_current', 'force_home', 'show_flags', 'show_names', 'dropdown' ); // reverse order + + // add the fields + for ( var i = 0; i < ids.length; i++ ) { + p = $( '

    ' ).attr( 'class', 'description' ); + $( this ).prepend( p ); + label = $( '

    ' + r + '

    ' ); + $( 'a', r ).click(function(){ + tagBox.flushTags( $( this ).closest( '.inside' ).children( '.tagsdiv' ), this ); + return false; + }); + + // add an if else condition to allow modifying the tags outputed when switching the language + if ( v = $( '.the-tagcloud' ).css( 'display' ) ) { + $( '.the-tagcloud' ).replaceWith( r ); + $( '.the-tagcloud' ).css( 'display', v ); + } + else { + $( '#' + id ).after( r ); + } + }); + } +})( jQuery ); + +// quick edit +(function( $ ) { + $( document ).bind( 'DOMNodeInserted', function( e ) { + var t = $( e.target ); + + // WP inserts the quick edit from + if ( 'inline-edit' == t.attr( 'id' ) ) { + var post_id = t.prev().attr( 'id' ).replace( "post-", "" ); + + if ( post_id > 0 ) { + // language dropdown + var select = t.find( ':input[name="inline_lang_choice"]' ); + var lang = $( '#lang_' + post_id ).html(); + select.val( lang ); // populates the dropdown + + filter_terms( lang ); // initial filter for category checklist + filter_pages( lang ); // initial filter for parent dropdown + + // modify category checklist an parent dropdown on language change + select.change(function() { + filter_terms( $( this ).val() ); + filter_pages( $( this ).val() ); + }); + } + } + + // filter category checklist + function filter_terms( lang ) { + if ( "undefined" != typeof( pll_term_languages ) ) { + $.each( pll_term_languages, function( lg, term_tax ) { + $.each( term_tax, function( tax, terms ) { + $.each( terms, function( i ) { + id = '#' + tax + '-' + pll_term_languages[ lg ][ tax ][ i ]; + lang == lg ? $( id ).show() : $( id ).hide(); + }); + }); + }); + } + } + + // filter parent page dropdown list + function filter_pages( lang ) { + if ( "undefined" != typeof( pll_page_languages ) ) { + $.each( pll_page_languages, function( lg, pages ) { + $.each( pages, function( i ) { + v = $( '#post_parent option[value="' + pll_page_languages[ lg ][ i ] + '"]' ); + lang == lg ? v.show() : v.hide(); + }); + }); + } + } + }); +})( jQuery ); + +// update rows of translated posts when the language is modified in quick edit +// acts on ajaxSuccess event +(function( $ ) { + $( document ).ajaxSuccess(function( event, xhr, settings ) { + function update_rows( post_id ) { + // collect old translations + var translations = new Array; + $( '.translation_' + post_id ).each(function() { + translations.push( $( this ).parent().parent().attr( 'id' ).substring( 5 ) ); + }); + + var data = { + action: 'pll_update_post_rows', + post_id: post_id, + translations: translations.join( ',' ), + post_type: $( "input[name='post_type']" ).val(), + screen: $( "input[name='screen']" ).val(), + _pll_nonce: $( "input[name='_inline_edit']" ).val() // reuse quick edit nonce + } + + // get the modified rows in ajax and update them + $.post( ajaxurl, data, function( response ) { + if ( response ) { + var res = wpAjax.parseAjaxResponse( response, 'ajax-response' ); + $.each( res.responses, function() { + if ( 'row' == this.what ) { + $( "#post-" + this.supplemental.post_id ).replaceWith( this.data ); + } + }); + } + }); + } + + var data = wpAjax.unserialize( settings.data ); // what were the data sent by the ajax request? + if ( 'undefined' != typeof( data['action'] ) && 'inline-save' == data['action'] ) { + update_rows( data['post_ID'] ); + } + }); +})( jQuery ); + +jQuery( document ).ready(function( $ ) { + // collect taxonomies - code partly copied from WordPress + var taxonomies = new Array(); + $( '.categorydiv' ).each(function(){ + var this_id = $( this ).attr( 'id' ), taxonomyParts, taxonomy; + + taxonomyParts = this_id.split( '-' ); + taxonomyParts.shift(); + taxonomy = taxonomyParts.join( '-' ); + taxonomies.push( taxonomy ); // store the taxonomy for future use + + // add our hidden field in the new category form - for each hierarchical taxonomy + // to set the language when creating a new category + $( '#' + taxonomy + '-add-submit' ).before( $( '' ) + .attr( 'type', 'hidden' ) + .attr( 'id', taxonomy + '-lang' ) + .attr( 'name', 'term_lang_choice' ) + .attr( 'value', $( '.post_lang_choice' ).val() ) + ); + }); + + // ajax for changing the post's language in the languages metabox + $( '.post_lang_choice' ).change(function() { + var value = $( this ).val(); + var lang = $( this ).children( 'option[value="' + value + '"]' ).attr( 'lang' ); + var dir = $( '.pll-translation-column > span[lang="' + lang + '"]' ).attr( 'dir' ); + + var data = { + action: 'post_lang_choice', + lang: value, + post_type: $( '#post_type' ).val(), + taxonomies: taxonomies, + post_id: $( '#post_ID' ).val(), + _pll_nonce: $( '#_pll_nonce' ).val() + } + + $.post( ajaxurl, data , function( response ) { + var res = wpAjax.parseAjaxResponse( response, 'ajax-response' ); + $.each( res.responses, function() { + switch ( this.what ) { + case 'translations': // translations fields + $( '.translations' ).html( this.data ); + init_translations(); + break; + case 'taxonomy': // categories metabox for posts + var tax = this.data; + $( '#' + tax + 'checklist' ).html( this.supplemental.all ); + $( '#' + tax + 'checklist-pop' ).html( this.supplemental.populars ); + $( '#new' + tax + '_parent' ).replaceWith( this.supplemental.dropdown ); + $( '#' + tax + '-lang' ).val( $( '.post_lang_choice' ).val() ); // hidden field + break; + case 'pages': // parent dropdown list for pages + $( '#parent_id' ).html( this.data ); + break; + case 'flag': // flag in front of the select dropdown + $( '.pll-select-flag' ).html( this.data ); + break; + case 'permalink': // Sample permalink + var div = $( '#edit-slug-box' ); + if ( '-1' != this.data && div.children().length ) { + div.html( this.data ); + } + break; + } + }); + + // modifies the language in the tag cloud + $( '.tagcloud-link' ).each(function() { + var id = $( this ).attr( 'id' ); + tagBox.get( id ); + }); + + // Modifies the text direction + $( 'body' ).removeClass( 'pll-dir-rtl' ).removeClass( 'pll-dir-ltr' ).addClass( 'pll-dir-' + dir ); + $( '#content_ifr' ).contents().find( 'html' ).attr( 'lang', lang ).attr( 'dir', dir ); + $( '#content_ifr' ).contents().find( 'body' ).attr( 'dir', dir ); + }); + }); + + // translations autocomplete input box + function init_translations() { + $( '.tr_lang' ).each(function(){ + var tr_lang = $( this ).attr( 'id' ).substring( 8 ); + var td = $( this ).parent().parent().siblings( '.pll-edit-column' ); + + $( this ).autocomplete({ + minLength: 0, + + source: ajaxurl + '?action=pll_posts_not_translated' + + '&post_language=' + $( '.post_lang_choice' ).val() + + '&translation_language=' + tr_lang + + '&post_type=' + $( '#post_type' ).val() + + '&_pll_nonce=' + $( '#_pll_nonce' ).val(), + + select: function( event, ui ) { + $( '#htr_lang_' + tr_lang ).val( ui.item.id ); + td.html( ui.item.link ); + }, + }); + + // when the input box is emptied + $( this ).blur(function() { + if ( ! $( this ).val() ) { + $( '#htr_lang_' + tr_lang ).val( 0 ); + td.html( td.siblings( '.hidden' ).children().clone() ); + } + }); + }); + } + + init_translations(); +}); diff --git a/pole-sbv-content/plugins/polylang/js/post.min.js b/pole-sbv-content/plugins/polylang/js/post.min.js new file mode 100644 index 00000000..6f10ccf6 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/js/post.min.js @@ -0,0 +1 @@ +!function(t){t.ajaxPrefilter(function(a){"string"!=typeof a.data||-1===a.url.indexOf("action=ajax-tag-search")&&-1===a.data.indexOf("action=ajax-tag-search")||!(lang=t(".post_lang_choice").val())&&!(lang=t(':input[name="inline_lang_choice"]').val())||(a.data="lang="+lang+"&"+a.data)})}(jQuery),function(t){tagBox.get=function(a){var n=a.substr(a.indexOf("-")+1),e={action:"get-tagcloud",lang:t(".post_lang_choice").val(),tax:n};t.post(ajaxurl,e,function(e,i){0!=e&&"success"==i||(e=wpAjax.broken),e=t('

    '+e+"

    "),t("a",e).click(function(){return tagBox.flushTags(t(this).closest(".inside").children(".tagsdiv"),this),!1}),(v=t(".the-tagcloud").css("display"))?(t(".the-tagcloud").replaceWith(e),t(".the-tagcloud").css("display",v)):t("#"+a).after(e)})}}(jQuery),function(t){t(document).bind("DOMNodeInserted",function(a){function n(a){"undefined"!=typeof pll_term_languages&&t.each(pll_term_languages,function(n,e){t.each(e,function(e,i){t.each(i,function(i){id="#"+e+"-"+pll_term_languages[n][e][i],a==n?t(id).show():t(id).hide()})})})}function e(a){"undefined"!=typeof pll_page_languages&&t.each(pll_page_languages,function(n,e){t.each(e,function(e){v=t('#post_parent option[value="'+pll_page_languages[n][e]+'"]'),a==n?v.show():v.hide()})})}var i=t(a.target);if("inline-edit"==i.attr("id")){var l=i.prev().attr("id").replace("post-","");if(l>0){var s=i.find(':input[name="inline_lang_choice"]'),o=t("#lang_"+l).html();s.val(o),n(o),e(o),s.change(function(){n(t(this).val()),e(t(this).val())})}}})}(jQuery),function(t){t(document).ajaxSuccess(function(a,n,e){function i(a){var n=new Array;t(".translation_"+a).each(function(){n.push(t(this).parent().parent().attr("id").substring(5))});var e={action:"pll_update_post_rows",post_id:a,translations:n.join(","),post_type:t("input[name='post_type']").val(),screen:t("input[name='screen']").val(),_pll_nonce:t("input[name='_inline_edit']").val()};t.post(ajaxurl,e,function(a){if(a){var n=wpAjax.parseAjaxResponse(a,"ajax-response");t.each(n.responses,function(){"row"==this.what&&t("#post-"+this.supplemental.post_id).replaceWith(this.data)})}})}var l=wpAjax.unserialize(e.data);"undefined"!=typeof l.action&&"inline-save"==l.action&&i(l.post_ID)})}(jQuery),jQuery(document).ready(function(t){function a(){t(".tr_lang").each(function(){var a=t(this).attr("id").substring(8),n=t(this).parent().parent().siblings(".pll-edit-column");t(this).autocomplete({minLength:0,source:ajaxurl+"?action=pll_posts_not_translated&post_language="+t(".post_lang_choice").val()+"&translation_language="+a+"&post_type="+t("#post_type").val()+"&_pll_nonce="+t("#_pll_nonce").val(),select:function(e,i){t("#htr_lang_"+a).val(i.item.id),n.html(i.item.link)}}),t(this).blur(function(){t(this).val()||(t("#htr_lang_"+a).val(0),n.html(n.siblings(".hidden").children().clone()))})})}var n=new Array;t(".categorydiv").each(function(){var a,e,i=t(this).attr("id");a=i.split("-"),a.shift(),e=a.join("-"),n.push(e),t("#"+e+"-add-submit").before(t("").attr("type","hidden").attr("id",e+"-lang").attr("name","term_lang_choice").attr("value",t(".post_lang_choice").val()))}),t(".post_lang_choice").change(function(){var e=t(this).val(),i=t(this).children('option[value="'+e+'"]').attr("lang"),l=t('.pll-translation-column > span[lang="'+i+'"]').attr("dir"),s={action:"post_lang_choice",lang:e,post_type:t("#post_type").val(),taxonomies:n,post_id:t("#post_ID").val(),_pll_nonce:t("#_pll_nonce").val()};t.post(ajaxurl,s,function(n){var e=wpAjax.parseAjaxResponse(n,"ajax-response");t.each(e.responses,function(){switch(this.what){case"translations":t(".translations").html(this.data),a();break;case"taxonomy":var n=this.data;t("#"+n+"checklist").html(this.supplemental.all),t("#"+n+"checklist-pop").html(this.supplemental.populars),t("#new"+n+"_parent").replaceWith(this.supplemental.dropdown),t("#"+n+"-lang").val(t(".post_lang_choice").val());break;case"pages":t("#parent_id").html(this.data);break;case"flag":t(".pll-select-flag").html(this.data);break;case"permalink":var e=t("#edit-slug-box");"-1"!=this.data&&e.children().length&&e.html(this.data)}}),t(".tagcloud-link").each(function(){var a=t(this).attr("id");tagBox.get(a)}),t("body").removeClass("pll-dir-rtl").removeClass("pll-dir-ltr").addClass("pll-dir-"+l),t("#content_ifr").contents().find("html").attr("lang",i).attr("dir",l),t("#content_ifr").contents().find("body").attr("dir",l)})}),a()}); diff --git a/pole-sbv-content/plugins/polylang/js/term.js b/pole-sbv-content/plugins/polylang/js/term.js new file mode 100644 index 00000000..1e080408 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/js/term.js @@ -0,0 +1,167 @@ +// quick edit +(function( $ ) { + $( document ).bind( 'DOMNodeInserted', function( e ) { + var t = $( e.target ); + + // WP inserts the quick edit from + if ( 'inline-edit' == t.attr( 'id' ) ) { + var term_id = t.prev().attr( 'id' ).replace( "tag-", "" ); + + if ( term_id > 0 ) { + // language dropdown + var select = t.find( ':input[name="inline_lang_choice"]' ); + var lang = $( '#lang_' + term_id ).html(); + select.val( lang ); // populates the dropdown + + // disable the language dropdown for default categories + var default_cat = $( '#default_cat_' + term_id ).html(); + if ( term_id == default_cat ) { + select.prop( 'disabled', true ); + } + } + } + }); +})( jQuery ); + + +// update rows of translated terms when adding / deleting a translation or when the language is modified in quick edit +// acts on ajaxSuccess event +(function( $ ) { + $( document ).ajaxSuccess(function( event, xhr, settings ) { + function update_rows( term_id ) { + // collect old translations + var translations = new Array; + $( '.translation_' + term_id ).each(function() { + translations.push( $( this ).parent().parent().attr( 'id' ).substring( 4 ) ); + }); + + var data = { + action: 'pll_update_term_rows', + term_id: term_id, + translations: translations.join( ',' ), + taxonomy: $( "input[name='taxonomy']" ).val(), + post_type: $( "input[name='post_type']" ).val(), + screen: $( "input[name='screen']" ).val(), + _pll_nonce: $( '#_pll_nonce' ).val() + } + + // get the modified rows in ajax and update them + $.post( ajaxurl, data, function( response ) { + if ( response ) { + var res = wpAjax.parseAjaxResponse( response, 'ajax-response' ); + $.each( res.responses, function() { + if ( 'row' == this.what ) { + $( "#tag-" + this.supplemental.term_id ).replaceWith( this.data ); + } + }); + } + }); + } + + var data = wpAjax.unserialize( settings.data ); // what were the data sent by the ajax request? + if ( 'undefined' != typeof( data['action'] ) ) { + switch ( data['action'] ) { + // when adding a term, the new term_id is in the ajax response + case 'add-tag': + res = wpAjax.parseAjaxResponse( xhr.responseXML, 'ajax-response' ); + $.each( res.responses, function() { + if ( 'term' == this.what ) { + update_rows( this.supplemental.term_id ); + } + }); + + // and also reset translations hidden input fields + $( '.htr_lang' ).val( 0 ); + break; + + // when deleting a term + case 'delete-tag': + update_rows( data['tag_ID'] ); + break; + + // in case the language is modified in quick edit and breaks translations + case 'inline-save-tax': + update_rows( data['tax_ID'] ); + break; + } + } + }); +})( jQuery ); + +jQuery( document ).ready(function( $ ) { + // translations autocomplete input box + function init_translations() { + $( '.tr_lang' ).each(function(){ + var tr_lang = $( this ).attr( 'id' ).substring( 8 ); + var td = $( this ).parent().parent().siblings( '.pll-edit-column' ); + + $( this ).autocomplete({ + minLength: 0, + + source: ajaxurl + '?action=pll_terms_not_translated' + + '&term_language=' + $( '#term_lang_choice' ).val() + + '&term_id=' + $( "input[name='tag_ID']" ).val() + + '&taxonomy=' + $( "input[name='taxonomy']" ).val() + + '&translation_language=' + tr_lang + + '&post_type=' + typenow + + '&_pll_nonce=' + $( '#_pll_nonce' ).val(), + + select: function( event, ui ) { + $( '#htr_lang_' + tr_lang ).val( ui.item.id ); + td.html( ui.item.link ); + }, + }); + + // when the input box is emptied + $( this ).blur(function() { + if ( ! $( this ).val() ) { + $( '#htr_lang_' + tr_lang ).val( 0 ); + td.html( td.siblings( '.hidden' ).children().clone() ); + } + }); + }); + } + + init_translations(); + + // ajax for changing the term's language + $( '#term_lang_choice' ).change(function() { + var value = $( this ).val(); + var lang = $( this ).children( 'option[value="' + value + '"]' ).attr( 'lang' ); + var dir = $( '.pll-translation-column > span[lang="' + lang + '"]' ).attr( 'dir' ); + + var data = { + action: 'term_lang_choice', + lang: value, + from_tag: $( "input[name='from_tag']" ).val(), + term_id: $( "input[name='tag_ID']" ).val(), + taxonomy: $( "input[name='taxonomy']" ).val(), + post_type: typenow, + _pll_nonce: $( '#_pll_nonce' ).val() + } + + $.post( ajaxurl, data, function( response ) { + var res = wpAjax.parseAjaxResponse( response, 'ajax-response' ); + $.each( res.responses, function() { + switch ( this.what ) { + case 'translations': // translations fields + $( "#term-translations" ).html( this.data ); + init_translations(); + break; + case 'parent': // parent dropdown list for hierarchical taxonomies + $( '#parent' ).replaceWith( this.data ); + break; + case 'tag_cloud': // popular items + $( '.tagcloud' ).replaceWith( this.data ); + break; + case 'flag': // flag in front of the select dropdown + $( '.pll-select-flag' ).html( this.data ); + break; + } + }); + + // Modifies the text direction + $( 'body' ).removeClass( 'pll-dir-rtl' ).removeClass( 'pll-dir-ltr' ).addClass( 'pll-dir-' + dir ); + }); + }); +}); diff --git a/pole-sbv-content/plugins/polylang/js/term.min.js b/pole-sbv-content/plugins/polylang/js/term.min.js new file mode 100644 index 00000000..5f62a105 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/js/term.min.js @@ -0,0 +1 @@ +!function(a){a(document).bind("DOMNodeInserted",function(t){var n=a(t.target);if("inline-edit"==n.attr("id")){var e=n.prev().attr("id").replace("tag-","");if(e>0){var l=n.find(':input[name="inline_lang_choice"]'),i=a("#lang_"+e).html();l.val(i);var r=a("#default_cat_"+e).html();e==r&&l.prop("disabled",!0)}}})}(jQuery),function(a){a(document).ajaxSuccess(function(t,n,e){function l(t){var n=new Array;a(".translation_"+t).each(function(){n.push(a(this).parent().parent().attr("id").substring(4))});var e={action:"pll_update_term_rows",term_id:t,translations:n.join(","),taxonomy:a("input[name='taxonomy']").val(),post_type:a("input[name='post_type']").val(),screen:a("input[name='screen']").val(),_pll_nonce:a("#_pll_nonce").val()};a.post(ajaxurl,e,function(t){if(t){var n=wpAjax.parseAjaxResponse(t,"ajax-response");a.each(n.responses,function(){"row"==this.what&&a("#tag-"+this.supplemental.term_id).replaceWith(this.data)})}})}var i=wpAjax.unserialize(e.data);if("undefined"!=typeof i.action)switch(i.action){case"add-tag":res=wpAjax.parseAjaxResponse(n.responseXML,"ajax-response"),a.each(res.responses,function(){"term"==this.what&&l(this.supplemental.term_id)}),a(".htr_lang").val(0);break;case"delete-tag":l(i.tag_ID);break;case"inline-save-tax":l(i.tax_ID)}})}(jQuery),jQuery(document).ready(function(a){function t(){a(".tr_lang").each(function(){var t=a(this).attr("id").substring(8),n=a(this).parent().parent().siblings(".pll-edit-column");a(this).autocomplete({minLength:0,source:ajaxurl+"?action=pll_terms_not_translated&term_language="+a("#term_lang_choice").val()+"&term_id="+a("input[name='tag_ID']").val()+"&taxonomy="+a("input[name='taxonomy']").val()+"&translation_language="+t+"&post_type="+typenow+"&_pll_nonce="+a("#_pll_nonce").val(),select:function(e,l){a("#htr_lang_"+t).val(l.item.id),n.html(l.item.link)}}),a(this).blur(function(){a(this).val()||(a("#htr_lang_"+t).val(0),n.html(n.siblings(".hidden").children().clone()))})})}t(),a("#term_lang_choice").change(function(){var n=a(this).val(),e=a(this).children('option[value="'+n+'"]').attr("lang"),l=a('.pll-translation-column > span[lang="'+e+'"]').attr("dir"),i={action:"term_lang_choice",lang:n,from_tag:a("input[name='from_tag']").val(),term_id:a("input[name='tag_ID']").val(),taxonomy:a("input[name='taxonomy']").val(),post_type:typenow,_pll_nonce:a("#_pll_nonce").val()};a.post(ajaxurl,i,function(n){var e=wpAjax.parseAjaxResponse(n,"ajax-response");a.each(e.responses,function(){switch(this.what){case"translations":a("#term-translations").html(this.data),t();break;case"parent":a("#parent").replaceWith(this.data);break;case"tag_cloud":a(".tagcloud").replaceWith(this.data);break;case"flag":a(".pll-select-flag").html(this.data)}}),a("body").removeClass("pll-dir-rtl").removeClass("pll-dir-ltr").addClass("pll-dir-"+l)})})}); diff --git a/pole-sbv-content/plugins/polylang/js/user.js b/pole-sbv-content/plugins/polylang/js/user.js new file mode 100644 index 00000000..b03dfcd6 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/js/user.js @@ -0,0 +1,20 @@ +jQuery( document ).ready(function( $ ) { + // biography + // FIXME there is probably a more efficient way to do this + var td = $( '#description' ).parent(); + var d = $( '#description' ).clone(); + var span = td.children( '.description' ).clone(); + td.children().remove(); + + $( '.biography' ).each(function(){ + lang = $( this ).attr( 'name' ).split( '___' ); + desc = d.clone(); + desc.attr( 'name', 'description_' + lang[0] ); + desc.html( $( this ).val() ); + td.append( '
    ' + lang[1] + '' ); + td.append( span ); +}); diff --git a/pole-sbv-content/plugins/polylang/js/user.min.js b/pole-sbv-content/plugins/polylang/js/user.min.js new file mode 100644 index 00000000..51c50b0c --- /dev/null +++ b/pole-sbv-content/plugins/polylang/js/user.min.js @@ -0,0 +1 @@ +jQuery(document).ready(function(e){var n=e("#description").parent(),d=e("#description").clone(),i=n.children(".description").clone();n.children().remove(),e(".biography").each(function(){lang=e(this).attr("name").split("___"),desc=d.clone(),desc.attr("name","description_"+lang[0]),desc.html(e(this).val()),n.append("
    "+lang[1]+""),n.append(i)}); diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-af.mo b/pole-sbv-content/plugins/polylang/languages/polylang-af.mo new file mode 100644 index 0000000000000000000000000000000000000000..ae8552e8c356ba81e305e3ec5b619bc45044892f GIT binary patch literal 10694 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\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2: nplural=n>1;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: _e;__;_x\n" +"X-Poedit-Basepath: .\n" +"X-Generator: Poedit 1.5.4\n" +"Language: af\n" +"X-Poedit-SearchPath-0: ..\n" +"X-Poedit-SearchPath-1: ../include\n" + +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang word voorsien met 'n uitgebreide %s dokumentasie %s (slegs in " +"Engels). Dit sluit inligting in oor hoe om jou veeltalige werf op te stel en " +"dit op 'n daaglikse basis te gebruik, 'n FAQ, sowel as 'n dokumentasie vir " +"programmeerders om hul plugins en temas aan te pas." + +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Jy sal ook nuttige inligting in die %s support forum %s vind. Maar moenie " +"vergeet om 'n soektog te maak voordat 'n nuwe onderwerp gepos word nie." + +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang is gratis en is vrygestel onder dieselfde lisensie as WordPress, " +"die %sGPL%s." + +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "As jy wonder hoe jy die projek kan help, %slees hierdie%s." + +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"Laastens as jy van hierdie plugin hou, of as dit jou besigheid help, sal " +"donasies aan die skrywer opreg waardeer word." + +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Tale" + +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Toon taal name" + +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Toon vlae" + +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Dwing skakel na voorblad" + +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Verberg die huidige taal" + +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Toon as dropdown" + +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "Filtreer inhoud volgens taal" + +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Toon alle tale" + +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Las 'n nuwe vertaling by" + +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Taal" + +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Vertalings" + +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "Stel die taal" + +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Die widget is vertoon vir:" + +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Alle tale" + +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Admin taal" + +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "WordPress default" + +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Instellings" + +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Opgradering van taal lêers…" + +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Oor Polylang" + +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "String vertalings" + +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "String vertaling" + +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "Gee 'n geldige WordPress locale" + +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "Die taal kode moet uniek wees" + +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "Die taal moet 'n naam hê" + +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"Die taal is geskep, maar die WordPress taallêer is nie afgelaai nie. " +"Installeer dit asseblief by hand." + +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Widget titel" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Taksonomieë" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Persoonlike velde" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Kommentaar status" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Ping status" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Sticky posts" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "Gepubliseer datum" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "Post formaat" + +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Bladsy ouer" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "Bladsy sjabloon" + +#: admin/settings.php:328 +msgid "Page order" +msgstr "Bladsy orde" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Featured prent" + +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Verander tale" + +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Las nuwe taal by" + +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Kies a taal" + +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "Jy kan 'n taal in die lys kies of dit direk verander hieronder." + +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Volle naam" + +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "" +"Die naam is hoe dit vertoon word op jou webwerf (byvoorbeeld: Afrikaans)." + +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Locale" + +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"WordPress Locale vir die taal (byvoorbeeld: af_ZA). Jy gaan nodig hê om die ." +"mo leêr te installeer vir die taal." + +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Taal kode" + +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Skrif rigting" + +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "links na regs" + +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "regs na links" + +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Kies die skrif rigting vir die taal" + +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Orde" + +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Posisie van die taal in die taal selektor" + +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Taal selektor" + +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Search translations" + +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Skoon stringe vertaling databasis" + +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Default taal" + +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Daar is posts, bladsye, kategorieë of tags sonder 'n taal gestel. Wil jy " +"hulle almal stel na die standaard taal?" + +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Spoor browser taal op" + +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "" +"Wanneer die voorblad besoek word, stel die taal volgens die browser se " +"voorkeur" + +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "URL veranderinge" + +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "Verberg URL taal inligting vir standaard taal" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Media" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Aktiveer tale en vertalings vir media" + +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Sinkronisering" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Persoonlike post tipes" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Aktiveer tale en vertalings vir persoonlike post tipes." + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Persoonlike taksonomieë" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Aktiveer tale en vertalings vir persoonlike taksonomieë." + +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Verander" + +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Verwyder" + +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Kode" + +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Vlag" + +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Posts" + +#: admin/table-string.php:110 +msgid "Name" +msgstr "Naam" + +#: admin/table-string.php:111 +msgid "String" +msgstr "String" + +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Maak nuwe" + +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Taal Selektor" + +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Toon 'n taal selektor" + +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Titel:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "Voeg veeltalige vermoë by WordPress" + +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "Jy gebruik WordPress %s. Polylang vereis ten minste WordPress %s." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "" +"Polylang was gedeaktiveer omdat jy van te ou weergawe af opgegradeer het." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "Gradeer asseblief eers op na %s toe voor jy opgradeer na %s toe." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "Groep" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Sien alle groepe" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "Jy is op die punt om hierdie taal permanent te verwyder. Is jy seker?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"Gebruik hierdie om ongebruikte strings te verwyder uit die databasis uit, " +"byvoorbeeld na verwydering van 'n module." + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"Die sinkronisasie opsies voorsien om presies dieselfde waardes in stand te " +"hou (of vertalings in die geval van taksonomie en bladsy ouer) van meta-" +"inhoud tussen die vertalings van 'n post of bladsy." + +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "Die taal kode bevat ongeldige karakters" + +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "Die taal word ingestel van inhoud" + +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "Posts, bladsye, kategorieë en etikette urls is nie verander nie." + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "Die taal is ingestel van die gids se naam in pretty permalinks" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "Voorbeeld:" + +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "Die taal word gestel uit die subdomein naam in pretty permalinks" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "Die taal word gestel vanuit verskillende domians" + +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "Verwyder / taal / in pretty permalinks" + +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "Hou / taal / in pretty permalinks" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "" +"Die voorblad url bevat die taal kode in plaas van die bladsy se naam of " +"bladsy id" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "Voorbeeld: %s in plaas van %s" + +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "Onmoontlik om die taal by te voeg." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "Taal bygevoeg." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "Taal verwyder." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "Taal opgedateer." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "Vertalings opgedateer." + +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "Taal-kode - verkieslik 2-letters ISO 639-1 (byvoorbeeld: af)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "" + +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "" + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "ud" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-ar.mo b/pole-sbv-content/plugins/polylang/languages/polylang-ar.mo new file mode 100644 index 0000000000000000000000000000000000000000..d317526ec4d04d6b3373d73ee1143b77549eda24 GIT binary patch literal 13256 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\n" +"Language-Team: \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: ../\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-SearchPath-0: .\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"تأتي Polylang مع %sتوثيق%s شامل (باللغة الإنكليزية فقط). يتضمن التوثيق " +"معلومات عن كيفية ضبط موقعك متعدد اللغات واستخدامه اليومي، وقسماً بالأسئلة " +"الشائعة، بالإضافة إلى توثيق خاص بالمبرمجين لضبط قوالبهم وإضافاتهم." + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"ستجد معلومات مفيدة أيضاً في %sمنتدى الدعم%s. لكن لا تنس أن تبحث قبل أن تفتح " +"موضوعاً جديداً." + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang إضافة مجانية، منشورة تحت رخصة ووردبرس نفسها، وهي رخصة %sGPL%s." + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "إذا كنت تتسائل كيف يمكنك دعم المشروع، فقط %sاقرأ هذا%s." + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"أخيراً، إن أعجبتك هذه الإضافة أو أنها مفيدة لأعمالك، تفضل بالتبرع لكاتبها ولك " +"كل التقدير." + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "اللغات" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "يعرض أسماء اللغات" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "يعرض الأعلام" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "يجبر الرابط إلى الصفحة الأمامية" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "يخفي اللغة الحالية" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "يعرض قائمة منسدلة" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "يرشح المحتوى حسب اللغة" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "اعرض كل اللغات" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "أضف ترجمة جديدة" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "اللغة" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "الترجمات" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "يضبط اللغة" + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "يعرض المربع الجانبي من أجل:" + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "كل اللغات" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "لغة لوحة الإشراف" + +# @ polylang +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "افتراضي ووردبرس" + +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "إعدادات" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "تحديث ملفات اللغة…" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "عن Polylang" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "ترجمات الجمل" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "ترجمة الجمل" + +# @ polylang +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "أدخل رمز مكان صحيح متوافق مع ووردبرس" + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "يجب أن يكون رمز اللغة فريداً" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "يجب أن يكون للغة اسم" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"تم إنشاء اللغة، لكن لم يتم تحميل ملف اللغة الخاص بووردبرس. رجاءً ثبته يدوياً." + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "عنوان المربع الجانبي" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "الفئات" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "حقول مخصصة" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "حالة التعليق" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "حالة التنبيه" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "مقالات مثبتة" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "تاريخ النشر" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "تنسيق المقالة" + +# @ polylang +#: admin/settings.php:326 +msgid "Page parent" +msgstr "أب الصفحة" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "قالب الصفحة" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "ترتيب الصفحة" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "الصورة المميزة" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "تحرير اللغة" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "أضف لغة جديدة" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "اختر لغة" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "يمكنك اختيار لغة من القائمة أو تحريرها مباشرة في الأسفل." + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "الاسم الكامل" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "الاسم كما سيظهر على موقعك (مثلاً: العربية)." + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "المكان" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"رمز المكان الموافق لووردبرس والخاص باللغة (مثلاً: ar_SA). سيتوجب عليك تثبيت " +"ملف .mo لهذه اللغة." + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "رمز اللغة" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "جهة النص" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "من اليسر إلى اليمين" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "من اليمين إلى اليسار" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "اختر جهة النص الخاصة باللغة" + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "الترتيب" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "موضع اللغة في مبدل اللغات" + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "مبدل اللغات" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "ابحث في الترجمات" + +# @ polylang +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "نظف قاعدة بيانات ترجمة الجمل" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "اللغة الافتراضية" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"هناك مقالات أو صفحات أو تصنيفات أو وسوم غير محددة اللغة. هل تريد تحديد اللغة " +"الافتراضية كلغة لهم؟" + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "اكتشف لغة المتصفح" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "عندما زيارة الصفحة الأمامية، اضبط اللغة وفقاً لتفضيلات المتصفح" + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "تعديلات الرابط" + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "اخف معلومات اللغة في الرابط من أجل اللغة الافتراضية" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "الوسائط" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "فعّل اللغات والترجمات من أجل الوسائط" + +# @ polylang +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "التزامن" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "أنواع المقالة المخصصة CPT" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "فعّل اللغات والترجمات من أجل أنواع المقالة المخصصة" + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "الفئات المخصصة" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "فعل اللغات والترجمات من أجل الفئات المخصصة" + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "تحرير" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "حذف" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "الرمز" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "العلم" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "المقالات" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "الاسم" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "الجملة" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "أضف جديد" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "مبدل اللغات" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "يعرض مبدلاً للغات" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "العنوان:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "إضافة إمكانية تعدد اللغات لووردبرس" + +# @ polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "أنت تستخدم ووردبرس %s. تتطلب Polylang ووردبرس %s على الأقل." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "تم تعطيل Polylang لأنك حدثت من إصدار قديم جداً." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "رجاء حدّث أولاً إلى الإصدار %s قبل التحديث إلى الإصدار %s." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "المجموعة" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "عرض كل المجموعات" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "أنت على وشك حذف هذه اللغة إلى الأبد. هل أنت متأكد؟" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"استخدم هذا لإزالة الجمل غير المستخدمة من قاعدة البيانات. على سبيل المثال، " +"عندما تحذف أحد الإضافات." + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"يسمح خيار المزامنة بالحفاظ على القيم نفسها (أو الترجمات في حالة الفئات وأب " +"الصفحة) للمحتوى التعريفي بين ترجمات مقالة أو صفحة." + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "يحتوي رمز اللغة على محارف خطأ" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "تضبط اللغة من المحتوى" + +# @ polylang +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "لا تعدل روابط المقالات أو الصفحات أو التصنيفات أو الوسوم." + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "تضبط اللغة من اسم الدليل في الروابط الدائمة الجميلة" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "مثال:" + +# @ polylang +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "تضبط اللغة من النطاق الفرعي في الروابط الدائمة الجميلة" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "تضبط اللغة من نطاقات مختلفة" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "احذف /language/ من الروابط الدائمة الجميلة" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "ابق على /language/ في الروابط الدائمة الجميلة" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "يتضمن رابط الصفحة الأمامية رمز اللغة بدلاً من اسم الصفحة أو رقمها" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "مثال: %s بدلاً من %s" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "من المستحيل إضافة اللغة." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "تمت إضافة اللغة." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "تم حذف اللغة." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "تم تحديث اللغة." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "تم تحديث الترجمة." + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "رمز اللغة - يفضل أن يكون حرفين حسب المعيار ISO 639-1 (مثلاً: ar)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "يجب أن تكون الصفحة الأمامية المختارة مترجمة إلى جميع اللغات." + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "نص الودجت" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "إضافات مستحسنة" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "تحدد اللغة من رمزها في الرابط" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "اخف اللغات التي ليس لها ترجمات" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-ary.mo b/pole-sbv-content/plugins/polylang/languages/polylang-ary.mo new file mode 100644 index 0000000000000000000000000000000000000000..56fa98b75a72a020a79cb2fa09c8a5ebcdf29ac9 GIT binary patch literal 14364 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 YO;b{W(i$FZktwfY9|mv?<$qxPAGr5A`2YX_ literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-ary.po b/pole-sbv-content/plugins/polylang/languages/polylang-ary.po new file mode 100644 index 00000000..1a99924e --- /dev/null +++ b/pole-sbv-content/plugins/polylang/languages/polylang-ary.po @@ -0,0 +1,705 @@ +# Translation of Stable (latest release) in Moroccan Arabic +# This file is distributed under the same license as the Stable (latest release) package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-11-12 20:53+0100\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Poedit 1.5.4\n" +"Project-Id-Version: Stable (latest release)\n" +"POT-Creation-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" + +#: lingotek/lingotek.php:85 +msgid "Activated" +msgstr "مفعّل" + +#: lingotek/lingotek.php:85 +msgid "Activate" +msgstr "تفعيل" + +#: lingotek/lingotek.php:90 +msgid "Request Translation" +msgstr "طلب الترجمة" + +#: lingotek/lingotek.php:96 +msgid "Request Services" +msgstr "طلب خدمات" + +#: lingotek/lingotek.php:103 +msgid "Polylang is now fully integrated with Lingotek, a professional translation management system!" +msgstr "" + +#: lingotek/lingotek.php:106 +msgid "Automatically Translate My Site" +msgstr "ترجمة موقعي تلقائيا" + +#: lingotek/lingotek.php:107 +msgid "Polylang is now fully integrated with Lingotek!" +msgstr "" + +#: lingotek/lingotek.php:109 lingotek/lingotek.php:120 +msgid "Access free machine translation for your site for up to 100,000 characters." +msgstr "" + +#: lingotek/lingotek.php:110 +msgid "Machine translation is an excellent option if you're on a tight budget, looking for near-instant results, and are okay with less-than-perfect quality." +msgstr "" + +#: lingotek/lingotek.php:117 +msgid "Translation Management System" +msgstr "نظام إدارة الترجمات" + +#: lingotek/lingotek.php:118 +msgid "Do you need to connect to a professional translation management system?" +msgstr "" + +#: lingotek/lingotek.php:121 +msgid "Access an online translator workbench." +msgstr "" + +#: lingotek/lingotek.php:122 +msgid "Have linguists compare side-by-side versions of original and translated text." +msgstr "" + +#: lingotek/lingotek.php:123 +msgid "Save and re-use previously translated material (leverage translation memory (TM))." +msgstr "" + +#: lingotek/lingotek.php:130 +msgid "Professionally Translate My Site" +msgstr "" + +#: lingotek/lingotek.php:131 +msgid "Do you need to professionally translate your site?" +msgstr "" + +#: lingotek/lingotek.php:133 +msgid "Start the process of getting a professional translation bid." +msgstr "" + +#: lingotek/lingotek.php:134 +msgid "Activate account so Lingotek can get an accurate count of how many words you have on your site and which languages you wish to translate into." +msgstr "" + +#: lingotek/lingotek.php:135 +msgid "Once activated click on the request translation bid and a certified translation project manager will contact you to give a no obligations translation bid." +msgstr "" + +#: lingotek/lingotek.php:142 +msgid "Need Extra Services?" +msgstr "هل تحتاج لخدمات إضافية؟" + +#: lingotek/lingotek.php:143 +msgid "Do you need help translating your site?" +msgstr "" + +#: lingotek/lingotek.php:145 +msgid "Start the process of getting extra services." +msgstr "" + +#: lingotek/lingotek.php:146 +msgid "Do you need someone to run your localization project?" +msgstr "" + +#: lingotek/lingotek.php:147 +msgid "Do you need customized workflows?" +msgstr "" + +#: lingotek/lingotek.php:148 +msgid "Do you you have existing Translation Memories you would like to use?" +msgstr "" + +#: lingotek/lingotek.php:149 +msgid "Do you need help creating glossaries and terminologies?" +msgstr "" + +#: lingotek/lingotek.php:254 +msgid "Learn more..." +msgstr "تعلم أكثر..." + +#. Plugin Name of the plugin/theme +msgid "Polylang" +msgstr "بولي لانغ" + +#. Plugin URI of the plugin/theme +msgid "http://polylang.wordpress.com/" +msgstr "http://polylang.wordpress.com/" + +#. Description of the plugin/theme +msgid "Adds multilingual capability to WordPress" +msgstr "إضافة إمكانية تعدد اللغات لووردبرس" + +#. Author of the plugin/theme +msgid "Frédéric Demarle" +msgstr "فريديريك درمل" + +#. Author URI of the plugin/theme +msgid "http://polylang.wordpress.com" +msgstr "http://polylang.wordpress.com" + +#: admin/admin-filters-columns.php:141 admin/admin-filters-columns.php:236 +msgid "Add new translation" +msgstr "أضف ترجمة جديدة" + +#: admin/admin-filters-columns.php:161 +msgid "— No Change —" +msgstr "— لا توجد تغييرات —" + +#: admin/admin-filters-columns.php:174 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:159 admin/admin-filters-term.php:85 +#: admin/admin-filters-term.php:136 include/model.php:591 +msgid "Language" +msgstr "اللغة" + +#: admin/admin-filters-post.php:133 admin/admin.php:96 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:590 +msgid "Languages" +msgstr "اللغات" + +#: admin/admin-filters-post.php:239 +msgid "(no parent)" +msgstr "" + +#: admin/admin-filters-post.php:474 admin/admin-filters-term.php:763 +#: admin/table-languages.php:65 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "تحرير" + +#: admin/admin-filters-term.php:92 admin/admin-filters-term.php:144 +msgid "Sets the language" +msgstr "يضبط اللغة" + +#: admin/admin-filters-term.php:454 +msgid "None" +msgstr "لا يوجد" + +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "يعرض المربع الجانبي من أجل:" + +#: admin/admin-filters.php:55 include/model.php:592 +msgid "All languages" +msgstr "كل اللغات" + +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "لغة لوحة الإشراف" + +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "افتراضي ووردبرس" + +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "تحديث ملفات اللغة…" + +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "يجب أن تكون الصفحة الأمامية المختارة مترجمة إلى جميع اللغات." + +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "من المستحيل إضافة اللغة." + +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "تمت إضافة اللغة." + +#: admin/admin-model.php:145 +msgid "Language deleted." +msgstr "تم حذف اللغة." + +#: admin/admin-model.php:224 +msgid "Language updated." +msgstr "تم تحديث اللغة." + +#: admin/admin-model.php:241 +msgid "Enter a valid WordPress locale" +msgstr "أدخل رمز مكان صحيح متوافق مع ووردبرس" + +#: admin/admin-model.php:245 +msgid "The language code contains invalid characters" +msgstr "يحتوي رمز اللغة على محارف خطأ" + +#: admin/admin-model.php:249 +msgid "The language code must be unique" +msgstr "يجب أن يكون رمز اللغة فريداً" + +#: admin/admin-model.php:254 +msgid "The language must have a name" +msgstr "يجب أن يكون للغة اسم" + +#: admin/admin-nav-menu.php:52 admin/admin-nav-menu.php:73 +#: admin/admin-nav-menu.php:76 admin/admin-nav-menu.php:107 +#: admin/admin-nav-menu.php:169 install/upgrade.php:302 +msgid "Language switcher" +msgstr "مبدل اللغات" + +#: admin/admin-strings.php:54 +msgid "Site Title" +msgstr "عنوان الموقع" + +#: admin/admin-strings.php:55 +msgid "Tagline" +msgstr "" + +#: admin/admin-strings.php:56 +msgid "Date Format" +msgstr "شكل التاريخ" + +#: admin/admin-strings.php:57 +msgid "Time Format" +msgstr "شكل الوقت" + +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "عنوان المربع الجانبي" + +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "نص الودجت" + +#: admin/admin.php:204 admin/settings.php:102 +msgid "Settings" +msgstr "إعدادات" + +#: admin/admin.php:312 +msgid "Show all languages" +msgstr "اعرض كل اللغات" + +#: admin/admin.php:321 +msgid "Filters content by language" +msgstr "يرشح المحتوى حسب اللغة" + +#: admin/admin.php:419 admin/settings.php:183 +msgid "The language was created, but the WordPress language file was not downloaded. Please install it manually." +msgstr "تم إنشاء اللغة، لكن لم يتم تحميل ملف اللغة الخاص بووردبرس. رجاءً ثبته يدوياً." + +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "إضافات مستحسنة" + +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "عن Polylang" + +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "ترجمات الجمل" + +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "ترجمة الجمل" + +#: admin/settings.php:242 +msgid "Translations updated." +msgstr "تم تحديث الترجمة." + +#: admin/settings.php:300 +msgid "Settings saved." +msgstr "تم حفظ الاعدادات." + +#: admin/settings.php:321 +msgid "Taxonomies" +msgstr "الفئات" + +#: admin/settings.php:322 +msgid "Custom fields" +msgstr "حقول مخصصة" + +#: admin/settings.php:323 +msgid "Comment status" +msgstr "حالة التعليق" + +#: admin/settings.php:324 +msgid "Ping status" +msgstr "حالة التنبيه" + +#: admin/settings.php:325 +msgid "Sticky posts" +msgstr "مقالات مثبتة" + +#: admin/settings.php:326 +msgid "Published date" +msgstr "تاريخ النشر" + +#: admin/settings.php:327 +msgid "Post format" +msgstr "تنسيق المقالة" + +#: admin/settings.php:328 +msgid "Page parent" +msgstr "أب الصفحة" + +#: admin/settings.php:329 +msgid "Page template" +msgstr "قالب الصفحة" + +#: admin/settings.php:330 +msgid "Page order" +msgstr "ترتيب الصفحة" + +#: admin/settings.php:331 +msgid "Featured image" +msgstr "الصورة المميزة" + +#: admin/table-languages.php:70 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "أنت على وشك حذف هذه اللغة إلى الأبد. هل أنت متأكد؟" + +#: admin/table-languages.php:71 admin/table-string.php:168 +msgid "Delete" +msgstr "حذف" + +#: admin/table-languages.php:85 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "الاسم الكامل" + +#: admin/table-languages.php:86 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "المكان" + +#: admin/table-languages.php:87 +msgid "Code" +msgstr "الرمز" + +#: admin/table-languages.php:88 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "الترتيب" + +#: admin/table-languages.php:89 +msgid "Flag" +msgstr "العلم" + +#: admin/table-languages.php:90 +msgid "Posts" +msgstr "المقالات" + +#: admin/table-string.php:109 +msgid "String" +msgstr "الجملة" + +#: admin/table-string.php:110 +msgid "Name" +msgstr "الاسم" + +#: admin/table-string.php:111 +msgid "Group" +msgstr "المجموعة" + +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "الترجمات" + +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "عرض كل المجموعات" + +#: admin/table-string.php:200 +msgid "Filter" +msgstr "تصفية" + +#: admin/view-about.php:3 +msgid "Polylang is provided with an extensive %sdocumentation%s (in English only). It includes information on how to set up your multilingual site and use it on a daily basis, a FAQ, as well as a documentation for programmers to adapt their plugins and themes." +msgstr "تأتي Polylang مع %sتوثيق%s شامل (باللغة الإنكليزية فقط). يتضمن التوثيق معلومات عن كيفية ضبط موقعك متعدد اللغات واستخدامه اليومي، وقسماً بالأسئلة الشائعة، بالإضافة إلى توثيق خاص بالمبرمجين لضبط قوالبهم وإضافاتهم." + +#: admin/view-about.php:9 +msgid "You will also find useful information in the %ssupport forum%s. However don't forget to make a search before posting a new topic." +msgstr "ستجد معلومات مفيدة أيضاً في %sمنتدى الدعم%s. لكن لا تنس أن تبحث قبل أن تفتح موضوعاً جديداً." + +#: admin/view-about.php:16 +msgid "Polylang is free of charge and is released under the same license as WordPress, the %sGPL%s." +msgstr "Polylang إضافة مجانية، منشورة تحت رخصة ووردبرس نفسها، وهي رخصة %sGPL%s." + +#: admin/view-about.php:22 +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "إذا كنت تتسائل كيف يمكنك دعم المشروع، فقط %sاقرأ هذا%s." + +#: admin/view-about.php:27 +msgid "Finally if you like this plugin or if it helps your business, donations to the author are greatly appreciated." +msgstr "أخيراً، إن أعجبتك هذه الإضافة أو أنها مفيدة لأعمالك، تفضل بالتبرع لكاتبها ولك كل التقدير." + +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "تحرير اللغة" + +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:103 +msgid "Add new language" +msgstr "أضف لغة جديدة" + +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "اختر لغة" + +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "يمكنك اختيار لغة من القائمة أو تحريرها مباشرة في الأسفل." + +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "الاسم كما سيظهر على موقعك (مثلاً: العربية)." + +#: admin/view-tab-lang.php:66 +msgid "WordPress Locale for the language (for example: en_US). You will need to install the .mo file for this language." +msgstr "رمز المكان الموافق لووردبرس والخاص باللغة (مثلاً: ar_SA). سيتوجب عليك تثبيت ملف .mo لهذه اللغة." + +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "رمز اللغة" + +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "رمز اللغة - يفضل أن يكون حرفين حسب المعيار ISO 639-1 (مثلاً: ar)" + +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "جهة النص" + +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "من اليسر إلى اليمين" + +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "من اليمين إلى اليسار" + +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "اختر جهة النص الخاصة باللغة" + +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "موضع اللغة في مبدل اللغات" + +#: admin/view-tab-lang.php:103 +msgid "Update" +msgstr "تحديث" + +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "اللغة الافتراضية" + +#: admin/view-tab-settings.php:29 +msgid "There are posts, pages, categories or tags without language set. Do you want to set them all to default language ?" +msgstr "هناك مقالات أو صفحات أو تصنيفات أو وسوم غير محددة اللغة. هل تريد تحديد اللغة الافتراضية كلغة لهم؟" + +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "تعديلات الرابط" + +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "تضبط اللغة من المحتوى" + +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "لا تعدل روابط المقالات أو الصفحات أو التصنيفات أو الوسوم." + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "تضبط اللغة من اسم الدليل في الروابط الدائمة الجميلة" + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "تحدد اللغة من رمزها في الرابط" + +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:109 admin/view-tab-settings.php:118 +msgid "Example:" +msgstr "مثال:" + +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "تضبط اللغة من النطاق الفرعي في الروابط الدائمة الجميلة" + +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "تضبط اللغة من نطاقات مختلفة" + +#: admin/view-tab-settings.php:92 +msgid "Hide URL language information for default language" +msgstr "اخف معلومات اللغة في الرابط من أجل اللغة الافتراضية" + +#: admin/view-tab-settings.php:106 +msgid "Remove /language/ in pretty permalinks" +msgstr "احذف /language/ من الروابط الدائمة الجميلة" + +#: admin/view-tab-settings.php:115 +msgid "Keep /language/ in pretty permalinks" +msgstr "ابق على /language/ في الروابط الدائمة الجميلة" + +#: admin/view-tab-settings.php:130 +msgid "The front page url contains the language code instead of the page name or page id" +msgstr "يتضمن رابط الصفحة الأمامية رمز اللغة بدلاً من اسم الصفحة أو رقمها" + +#: admin/view-tab-settings.php:138 +msgid "Example: %s instead of %s" +msgstr "مثال: %s بدلاً من %s" + +#: admin/view-tab-settings.php:148 +msgid "Detect browser language" +msgstr "اكتشف لغة المتصفح" + +#: admin/view-tab-settings.php:154 +msgid "When the front page is visited, set the language according to the browser preference" +msgstr "عندما زيارة الصفحة الأمامية، اضبط اللغة وفقاً لتفضيلات المتصفح" + +#: admin/view-tab-settings.php:161 +msgid "Media" +msgstr "الوسائط" + +#: admin/view-tab-settings.php:167 +msgid "Activate languages and translations for media" +msgstr "فعّل اللغات والترجمات من أجل الوسائط" + +#: admin/view-tab-settings.php:175 +msgid "Custom post types" +msgstr "أنواع المقالة المخصصة CPT" + +#: admin/view-tab-settings.php:188 +msgid "Activate languages and translations for custom post types." +msgstr "فعّل اللغات والترجمات من أجل أنواع المقالة المخصصة" + +#: admin/view-tab-settings.php:195 +msgid "Custom taxonomies" +msgstr "الفئات المخصصة" + +#: admin/view-tab-settings.php:208 +msgid "Activate languages and translations for custom taxonomies." +msgstr "فعل اللغات والترجمات من أجل الفئات المخصصة" + +#: admin/view-tab-settings.php:214 +msgid "Synchronization" +msgstr "التزامن" + +#: admin/view-tab-settings.php:225 +msgid "The synchronization options allow to maintain exact same values (or translations in the case of taxonomies and page parent) of meta content between the translations of a post or page." +msgstr "يسمح خيار المزامنة بالحفاظ على القيم نفسها (أو الترجمات في حالة الفئات وأب الصفحة) للمحتوى التعريفي بين ترجمات مقالة أو صفحة." + +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "ابحث في الترجمات" + +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "نظف قاعدة بيانات ترجمة الجمل" + +#: admin/view-tab-strings.php:12 +msgid "Use this to remove unused strings from database, for example after a plugin has been uninstalled." +msgstr "استخدم هذا لإزالة الجمل غير المستخدمة من قاعدة البيانات. على سبيل المثال، عندما تحذف أحد الإضافات." + +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "أضف جديد" + +#: frontend/frontend-filters-search.php:80 +msgid "Search" +msgstr "البحث" + +#: include/model.php:755 +msgid "Uncategorized" +msgstr "غير مصنّف" + +#: include/plugins-compat.php:89 +msgid "Import posts, pages, comments, custom fields, categories, and tags from a WordPress export file." +msgstr "" + +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "يعرض أسماء اللغات" + +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "يعرض الأعلام" + +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "يجبر الرابط إلى الصفحة الأمامية" + +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "يخفي اللغة الحالية" + +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "اخف اللغات التي ليس لها ترجمات" + +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "يعرض قائمة منسدلة" + +#. translators: Calendar caption: 1: month name, 2: 4-digit year +#: include/widget-calendar.php:124 +msgctxt "calendar caption" +msgid "%1$s %2$s" +msgstr "%1$s %2$s" + +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "مبدل اللغات" + +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "يعرض مبدلاً للغات" + +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "العنوان:" + +#: include/widget-recent-comments.php:46 +msgid "Recent Comments" +msgstr "آخر التعليقات" + +#. translators: comments widget: 1: comment author, 2: post link +#: include/widget-recent-comments.php:84 +msgctxt "widgets" +msgid "%1$s on %2$s" +msgstr "%1$s on %2$s" + +#: include/widget-recent-posts.php:46 +msgid "Recent Posts" +msgstr "آخر المقالات" + +#: install/install.php:24 +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "أنت تستخدم ووردبرس %s. تتطلب Polylang ووردبرس %s على الأقل." + +#: install/upgrade.php:76 +msgid "Polylang has been deactivated because you upgraded from a too old version." +msgstr "تم تعطيل Polylang لأنك حدثت من إصدار قديم جداً." + +#: install/upgrade.php:78 +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "رجاء حدّث أولاً إلى الإصدار %s قبل التحديث إلى الإصدار %s." + +#: lingotek/lingotek.php:26 +msgid "You’ve just upgraded to the latest version of Polylang! Would you like to automatically translate your website for free?" +msgstr "" + +#: lingotek/lingotek.php:30 +msgid "Close" +msgstr "" + +#: lingotek/lingotek.php:33 +msgid "Learn more" +msgstr "قراءة المزيد" + +#: lingotek/lingotek.php:39 +msgid "Click on Activate Lingotek to start translating." +msgstr "" + +#: lingotek/lingotek.php:42 +msgid "Activate Lingotek" +msgstr "" + +#: lingotek/lingotek.php:54 +msgid "Congratulations!" +msgstr "ألف مبروك!" + diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-bel.mo b/pole-sbv-content/plugins/polylang/languages/polylang-bel.mo new file mode 100644 index 0000000000000000000000000000000000000000..4b1be791cd785b386c9c8c15bba1472d8435637b GIT binary patch literal 13974 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\n" +"Language-Team: \n" +"Language: ru_RU\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: .\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-SearchPath-0: ..\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang забяспечаны шырокай %sдакументацыяй%s (толькі на англійскай мове). " +"У яе ўваходзіць інфармацыя пра наладу шматмоўнага блога і яго паўсядзённае " +"выкарыстанне, адказы на частыя пытанні і дакументацыя для праграмістаў." + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Таксама, вы можаце знайсці карысную інфармацыю на %sфоруме%s. Зрэшты, не " +"забывайце сперш шукаць адказ, а потым пытаць." + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang - бясплатны і распаўсюджваецца пад той жа ліцэнзіяй %sGPL%s, што і " +"WordPress." + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "Аб тым, як вы можаце дапамагчы праекту, вы можаце прачытаць %sтут%s." + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"І нарэшце, калі Polylang вам спадабаецца альбо дапамагае ў вашай працы, вы " +"заўседы можаце ахвяраваць грошаў аўтару праекта." + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Мовы" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Паказваць назвы моў" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Паказваць сцягі" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Прымусова пераходзіць на галоўную старонку сайта пры змене мовы" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Схаваць бягучую мову" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Паказвае як выпадальны спіс" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "Адбіраць змесціва паводле мовы" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Паказаць усе мовы" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Дадаць новы пераклад" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Мова" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Пераклады" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "Вызначае мову" + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Паказваць віджэт для" + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Усе мовы" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Мова панэлі адміністратара" + +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "Па змаўчанню" + +# @ default +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Наладкі" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Абнаўленне моўных файлаў…" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Аб Polylang" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "Пераклады радкоў" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "Пераклад радкоў" + +# @ polylang +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "Вызначце карэктную WordPress лакаль" + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "Код мовы павінны быць унікальным" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "Мова павінна мець назву" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"Мова была створана, але патрабуемые моўныя файлы не былі запампованы. Калі " +"ласка, запампуйце ды устанавіце іх самастойна." + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Назва віджэту" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Таксаноміі" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Адвольныя палі" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Стан каментара" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Адказ на запыт" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Заліпаючыя запісы" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "Дата публікацыі" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "Фармат запісу" + +# @ polylang +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Бацькоўская старонка" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "Шаблон старонкі" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "Парадак старонак" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Выбраная выява" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Рэдагаваць мову" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Дадаць новую мову" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Выбраць мову" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "Вы можаце выбраць мову са спіса альбо дадаць яе ніжэй самастойна." + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Поўная назва" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "Назва для адлюстравання на сайце (напрыклад: Беларускі)." + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Лакаль" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"Лакаль WordPress для мовы (напрыклад: be_BY). Вы павінны устанавіць файлы ." +"mo для панэлі адміністратара ды выкарыстоўваемай тэмы." + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Код мовы" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Напрамак тэксту" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "злева направа" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "справа налева" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Выберыце напрамак тэксту" + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Парадак" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Месца мовы ў пераключальніку моў" + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Выбар моў" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Пошук перакладаў" + +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Ачысціць базу дадзеных радкоў перакладу" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Мова па змаўчанню" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Былі знойдзены запісы, старонкі, катэгорыі ды тэгі без зазначанай мовы. " +"Вызначыць мову выкарыстання па змаўчанню?" + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Вызначыць мову браўзера" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "Вызначыць мову сайта паводле налад браўзера" + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "Мадыфікацыі URL" + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "Схаваць назву мовы з URL" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Медыа" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Актывіраваць мовы і пераклады для медыа-файлаў" + +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Сінхранізацыя" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Адвольны тып запісаў" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Актывіраваць мовы і пераклады для адвольных тыпаў запісаў." + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Адвольныя таксаноміі" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Актывіраваць мовы і пераклады для адвольных таксанамій." + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Рэдагаваць" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Выдаліць" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Код" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Сцяг" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Запісы" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "Імя" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "Радок" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Дадаць новую" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Пераключальнік моў" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Паказвае пераключальнік моў" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Назва:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "Дадае магчымасць падтрымкі шматмоў'я ў WordPress" + +# @ polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "" +"Вы выкарыстоўваеце WordPress %s. Polylang патрабуе не менш за WordPress %s." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "" +"Polylang быў выключаны, таму што вы аднаўляецеся з немагчыма старой версіі." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "Калі ласка, аднавіце перш да версіі %s, каб аднавіць да версіі %s." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "Група" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Прагледзець усе групы" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "Вы збіраецеся выдаліць гэтую мову. Вы ўпэўнены?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"Выкарыстоўвайце гэтую функцыю, калі вам патрэбна выдаліць невыкарастаныя " +"радкі з базы дадзеных (напрыклад, пасля таго, як плагін быў выдалены)." + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"Налады сінхранізацыі дазваляюць падтрымліваць гэткія ж самыя значэнні (альбо " +"пераклады ў выпадку таксанаміі і бацькоўскай старонкі) мета-змесціва паміж " +"перакладамі запісу альбо старонкі." + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "Код мовы ўтрымлівае нядзейныя сімвалы" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "Мова наладжана згодна са змесцівам" + +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "Спасылкі запісаў, старонак, катэгорый і тэгаў не змяняюцца." + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "Мова наладжана згодна з імём дырэкторыі pretty permalinks" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "Напрыклад:" + +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "Мова наладжана згодна з імём паддамена ў pretty permalinks" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "Мова наладжана з розных даменаў" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "Выдаліць /language/ у pretty permalinks" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "Захаваць /language/ у pretty permalinks" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "" +"Спасылка на галоўную старонку ўтрымлівае код мовы замест імя альбо id " +"старонкі" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "Прыклад: %s заместа %s" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "Немагчыма дадаць мову." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "Мова дададзена." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "Мова выдалена." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "Мова аднаўлена." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "Пераклады аднаўлены." + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "" +"Код мовы - пажадана дзвюхлітарны згодна са стандартам ISO 639-1 (напрыклад: " +"en)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "" +"Выбраная статычная галоўная старонка павінна быць перакладзена на ўсе мовы." + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "Тэкст віджэта" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "" + +# @ polylang +#~ msgid "A translation does already exist for %s" +#~ msgstr "Пераклад для %s ужо існуе" + +# @ polylang +#~ msgid "2-letters ISO 639-1 language code (for example: en)" +#~ msgstr "Дзвюхлітарны код мовы ISO 639-1 (напрыклад: en)" + +# @ polylang +#~ msgid "Translation" +#~ msgstr "Пераклад" + +# @ polylang +#~ msgid "ID of pages in other languages:" +#~ msgstr "ID старонак на другіх мовах:" + +# @ polylang +#~ msgid "Page ID" +#~ msgstr "ID старонкі" + +# @ polylang +#~ msgid "Post ID" +#~ msgstr "ID запісу" + +# @ polylang +#~ msgid "No untranslated term" +#~ msgstr "Няма неперакладзеных слоў" + +#~ msgid "" +#~ "When using static front page, redirect the language page (example: %s) to " +#~ "the front page in the right language" +#~ msgstr "" +#~ "Пры выкарыстанні статычнай старонкі, перанакіроўваць старонку (напрыклад: " +#~ "%s) на галоўную старонку на правільнай мове." + +# @ polylang +#~ msgid "" +#~ "For some reasons, Polylang could not create a table in your database." +#~ msgstr "" +#~ "Па некаторых прычынах, Polylang не мае магчымасьці стварыць табліцу ў " +#~ "базе даных." + +# @ polylang +#~ msgid "Displays a language switcher at the end of the menu" +#~ msgstr "Паказвае пераключальнік моў" + +# @ polylang +#~ msgid "Theme locations and languages" +#~ msgstr "Разьмяшчэнне тэмы ды моў" + +# @ polylang +#~ msgid "" +#~ "Please go to the %slanguages page%s to set theme locations and languages" +#~ msgstr "" +#~ "Калі ласка, перайдзіце на %slanguages page%s для таго, каб зазначыць " +#~ "разьмяшчэнне тэмы ды моў" + +# @ polylang +#~ msgid "Menus" +#~ msgstr "Меню" + +# @ polylang +#~ msgid "Error: Restore of local flags failed!" +#~ msgstr "" +#~ "Памылка: Не атрымалася ўзнавіць карыстальніцкія іконкі-сьцягі з " +#~ "рэзэрвовай копіі!" + +# @ polylang +#, fuzzy +#~ msgid "Please move your local flags from %s to %s" +#~ msgstr "Калі ласка, перамясьціце " diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-bg_BG.mo b/pole-sbv-content/plugins/polylang/languages/polylang-bg_BG.mo new file mode 100644 index 0000000000000000000000000000000000000000..01a6f375123f1c17cc3d69adc9d63215613db983 GIT binary patch literal 15134 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 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-bg_BG.po b/pole-sbv-content/plugins/polylang/languages/polylang-bg_BG.po new file mode 100644 index 00000000..b57943c9 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/languages/polylang-bg_BG.po @@ -0,0 +1,591 @@ +msgid "" +msgstr "" +"Project-Id-Version: polylang\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Pavel Sofroniev \n" +"Language-Team: Павел \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2: nplural=n>1;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: _e;__;_x\n" +"X-Poedit-Basepath: .\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-SearchPath-0: ..\n" +"X-Poedit-SearchPath-1: ../include\n" + +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang има подробна %sдокументация на английски%s, съдържаща информация за " +"първоначалното настройване и поддръжка на многоезични уебсайтове, отговори " +"на често задавани въпроси, както и документация за разработчици за " +"интегриране на Polylang с техните разширения и теми. " + +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Освен това можете да намерите полезна информация във %sфорума за поддръжка" +"%s; но не забравяйте да потърсите дали някой вече не е задал Вашия въпрос " +"преди да изпратите запитване. " + +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang е безплатно разширение, публикувано под същия лиценз като " +"WordPress, %sGPL%s." + +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "Ако се питате как можете и Вие да помогнете, %sпрочетете това%s. " + +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"Не на последно място, ако наистина харесвате това разширение и/или то помага " +"на Вашия бизнес, авторът му високо оценява всяко едно дарение." + +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Езици" + +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Показване на имената на езиците" + +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Показване на знаменца" + +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Всички връзки сочат към началната страница" + +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Скриване на текущия език" + +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Показване като падащо меню" + +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "Филтриране на съдържанието по език" + +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Показване на всички езици" + +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Добавяне на нов превод" + +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Език" + +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Преводи" + +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "Избор на език" + +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Джаджата се показва за:" + +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Всички езици" + +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Езика на администраторския панел" + +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "Езика по подразбиране" + +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Настройки" + +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Обновяване на езиковите файлове…" + +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Относно Polylang" + +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "Превод на низове" + +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "Превод на низове" + +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "Въведете валидно (WordPress) местоположение" + +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "Кодът на езика трябва да бъде уникален" + +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "Кодът на езика трябва да има наименование" + +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"Езикът беше добавен, но езиковият файл не може да бъде зареден. Моля " +"инсталирайте го ръчно. " + +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Заглавие на джаджата" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Таксономии" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Потребителски полета" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Статус на коментара" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Статус на ping-а" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Публикации, залепени на началната страница" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "Дата на публикуване" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "Формат на публикацията" + +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Родител на страницата" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "Шаблон на страницата" + +#: admin/settings.php:328 +msgid "Page order" +msgstr "Подредба на страницата" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Картинка на публикацията" + +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Редактиране на езика" + +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Добавяне на нов език" + +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Изберете език" + +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "" +"Можете да изберете език от падащото меню или да създадете нов използвайки " +"полетата по-долу. " + +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Наименование" + +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "" +"Наименованието както ще се показва в уебсайта (например: български, English)" + +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Местоположение" + +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"Местоположение според WordPress (например: bg_BG, en_GB). Ще трябва да " +"инсталирате съответния езиков файл (.mo). " + +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Код на езика" + +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Посока на писане" + +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "отляво надясно" + +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "отдясно наляво" + +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Изберете посоката на писане" + +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Подредба" + +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Кой подред ще се показва езикът в джаджата за смяна на езици" + +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Джаджа за смяна на езика" + +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Преводи за търсенето" + +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Изтриване на запазените преводи " + +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Език по подразбиране" + +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Намерени са публикации, страници, категории и етикети, за които не е посочен " +"език. Искате ли да бъдат прехвърлени към езика по подразбиране?" + +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Засичане на езика на браузъра" + +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "" +"Когато потребителят посети началната страница, езикът му да се настройва " +"според предпочитанията на браузъра. " + +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "Промени в адреса (URL)" + +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "Скриване на информацията за езика от адресите за езика по подразбиране" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Файлове" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Включване на многоезичност за файловете" + +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Синхронизация" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Потребителски типове публикации" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Включване на многоезичност за потребителските типове публикации" + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Потребителски таксономии" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Включване на многоезичност за потребителските таксономии" + +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Редактиране" + +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Изтриване" + +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Код" + +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Знаменце" + +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Публикации" + +#: admin/table-string.php:110 +msgid "Name" +msgstr "Наименование" + +#: admin/table-string.php:111 +msgid "String" +msgstr "Низ" + +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Добави нов" + +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Джаджа за смяна на езика" + +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Показване на джаджа за смяна на езика" + +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Заглавие:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "Добавя многоезична функционалност към WordPress" + +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "" +"Вие използвате WordPress %s. Минималните изисквания за Polylang включват " +"WordPress %s." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "Polylang бе изключен, защото обновихте от твърде стара версия." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "Моля първо обновете до %s, преди да обновите до %s." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "Група" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Покажи всички групи" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "Вие сте на път да изтриете необратимо този език. Сигурни ли сте?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"Използвайте, за да премахнете неупотребявани низове от базата данни, " +"например след изключване на разширение (плъгин)." + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"Чрез синхронизацията мета съдържанието (и преводите за таксономии и " +"родителски страници) е едно и също за различните преводи на публикации и " +"страници." + +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "Кодът на езика съдържа невалидни знаци" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "Езикът се определя от съдържанието" + +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "" +"URL-тата на публикациите, страниците, категориите и етикетите не се променят" + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "Езикът се определя от името на директорията в URL-то" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "Пример:" + +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "Езикът се определя от поддомейна в URL-то" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "Езикът се определя от различни домейни" + +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "Премахване на /language/ от URL-то" + +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "Добавяне на /language/ в URL-то" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "" +"Началната страница съдържа кода на езика вместо името или ID-то на страницата" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "Пример: %s вместо %s" + +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "Езикът не може да бъде добавен." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "Езикът бе добавен." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "Езикът бе изтрит." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "Езикът бе обновен." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "Преводите бяха обновени." + +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "Код на езика - за предпочитане двубуквен по ISO 639-1 (например: bg)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "" +"Избраната статична начална страница трябва да бъде преведена на всички езици." + +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "Текст на джаджата" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "Препоръчани разширения" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "Езикът се определя от кода в адреса (URL)" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "Скриване не езици без превод" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-cs_CZ.mo b/pole-sbv-content/plugins/polylang/languages/polylang-cs_CZ.mo new file mode 100644 index 0000000000000000000000000000000000000000..0947d9bec2ca0df0fb68102074ae4a495fa858f4 GIT binary patch literal 10627 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\n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: ../\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-SearchPath-0: .\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang disponuje rozsáhlou %sdokumentací%s (pouze v angličtině), která " +"obsahuje informace o nastavení vašeho vícejazyčného webu a o tom, jak jej " +"každodenně používat. Obsahuje i FAQ a dokumentaci pro programátory, kteří by " +"Polylangu chtěli přizpůsobit své pluginy a šablony." + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Užitečné informace najdete také ve %sfórech%s. Nicméně nezapomeňte problém " +"nejprve zkusit vyhledat, než o něm vytvoříte nové vlákno." + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang je k dispozici zdarma a je vydán pod stejnou %sGPL%s licencí jako " +"WordPress." + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "" +"Pokud by Vás zajímalo, jak můžete pomoci při vývoji projektu, přečtěte si " +"%stoto%s." + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"Nakonec, pokud se Vám tento plugin líbí nebo pokud Vám pomáhá při práci, " +"jeho autor velmi ocení jakoukoliv finanční podporu." + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Polylang — Jazyky" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Zobrazí názvy jazyků" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Zobrazí vlajky" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Vynutí odkaz na úvodní stránku" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Skryje aktuální jazyk" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Zobrazí jako rozbalovací seznam" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "Filtruje obsah podle jazyka" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Zobrazit všechny jazyky" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Přidat nový překlad" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Jazyk" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Překlady" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "Tímto nastavte jazyk." + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Widget zobrazí pro:" + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Všechny jazyky" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Jazyk admina" + +# @ polylang +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "Předvolené WordPress" + +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Nastavení" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Aktualizuji soubory s jazyky…" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "O Polylangu" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "Překlady textů" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "Překlady textů" + +# @ polylang +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "Zadejte platný WordPress locale" + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "Kód jazyka musí být unikátní" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "Jazyk musí mít název" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"Jazyk byl vytvořen, ale WordPress jazykový soubor nebyl stažen. Prosím, " +"nainstalujte jej manuálně." + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Titulek widgetu" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Taxonomie" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Uživatelská pole" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Stav komentáře" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Stav pingbacku" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Zvýrazněné příspěvky" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "Datum publikování" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "Formát příspěvku" + +# @ polylang +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Nadřazená stránka" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "Šablona stránky" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "Pořadí stránek" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Náhledový obrázek" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Upravit jazyk" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Přidejte nový jazyk" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Zvolte jazyk" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "Jazyk můžete vybrat ze seznamu nebo jej zde dole přímo zadat." + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Celý název" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "" +"Název jazyka, jak bude zobrazen na vašem webu (např. Čeština, English)." + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Locale" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"WordPress locale tohoto jazyka (např. cs_CZ, en_US). Pro tento jazyk bude " +"potřeba nainstalovat .mo soubor." + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Kód jazyka" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Směr textu" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "zleva doprava" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "zprava doleva" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Vyberte směr textu pro daný jazyk." + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Pořadí" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Pozice jazyka v přepínači jazyků." + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Přepínač jazyků" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Vyhledat překlady" + +# @ polylang +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Vyčistit databázi s překlady textů" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Výchozí jazyk" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Některé příspěvky, stránky, kategorie nebo štítky nemají nastavený jazyk. " +"Chcete jim všem nastavit výchozí jazyk?" + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Detekovat jazyk prohlížeče" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "Při návštěvě úvodní stránky nastavit jazyk podle předvoleb prohlížeče" + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "Modifikování URL" + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "U výchozího jazyka v URL skrýt jeho kód" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Média" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Zapnout jazyky a překlady u mediálních souborů" + +# @ polylang +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Synchronizace" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Vlastní typy obsahu" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Zapnout jazyky a překlady u vlastních typů obsahu" + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Vlastní taxonomie" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Zapnout jazyky a překlady u vlastních taxonomií" + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Upravit" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Smazat" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Kód" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Vlajka" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Příspěvky" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "Název" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "Řetězec" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Přidat nový" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Přepínač jazyků" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Zobrazí přepínač jazyků" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Název:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "Přidá možnosti vícejazyčnosti do WordPressu" + +# @ polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "Používáte WordPress %s. Polylang vyžaduje alespoň WordPress %s." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "" +"Polylang byl deaktivován, protože jste upgradovali z příliš staré verze." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "Prosím upgradujte nejdříve na %s předtím, než budete upgradovat na %s." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "Skupina" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Zobrazit všechny skupiny" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "Tímto zcela a navždy vymažete daný jazyk. Jste si jistý?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"Toto použijte, chcete-li z databáze odstranit nepoužité řetězce a překlady. " +"Například potom, co byl odinstalován nějaký plugin." + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"Sychronizační nastavení umožňuje udržovat stejné hodnoty (nebo překlady v " +"případě taxonomií a nadřazených stránek) meta obsahu mezi různými překlady " +"příspěvků či stránek." + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "Kód jazyka obsahuje nepovolené znaky" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "Jazyk nastavit podle obsahu" + +# @ polylang +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "URL příspěvků, stránek, rubrik a štítků nebudou pozměněny." + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "Jazyk bude nastaven podle adresáře v pěkných URL" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "Příklad:" + +# @ polylang +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "Jazyk je nastaven podle subdomény v pěkných URL" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "Jazyk bude nastaven podle odlišných domén" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "Odstranit /language/ v pěkných URL" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "Ponechat /language/ v pěkných URL" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "" +"Úvodní stránka bude mít v URL jen kód jazyka a ne název stránky či její ID" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "Příklad: %s namísto %s" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "" + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "" + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "" + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "" + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "" + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "" + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-et.mo b/pole-sbv-content/plugins/polylang/languages/polylang-et.mo new file mode 100644 index 0000000000000000000000000000000000000000..6e2ff94e91207daf9cc1145ac316ab8e337c08f2 GIT binary patch literal 10605 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 MniD2nKl0}P0GxJz?EnA( literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-et.po b/pole-sbv-content/plugins/polylang/languages/polylang-et.po new file mode 100644 index 00000000..fff60331 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/languages/polylang-et.po @@ -0,0 +1,668 @@ +msgid "" +msgstr "" +"Project-Id-Version: Polylang\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2015-02-14 09:17+0100\n" +"Last-Translator: Ahto Naris \n" +"Language-Team: \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: ../\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-SearchPath-0: .\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang on varustatud ulatusliku %sdokumentatsiooniga%s (ainult inglise " +"keeles). See sisaldab teavet kuidas luua ja kasutada igapäevaselt oma " +"mitmekeelset kodulehte, KKK-d ning ka dokumentatsiooni programmeerijatele " +"kuidas kohandada oma pluginad ja teemad." + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Kasulikku informatsiooni on võimalik ka leida %sfoorumist%s. Paljud teemad " +"on enne foorumis juba läbi arutatud, seega kasuta enne uue teema postitamist " +"otsingut." + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang on tasuta ja avaldatud sama litsentsi alusel nagu WordPress - %sGPL" +"%s." + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "Kui sul on isu selles projektis abiks olla alusta %ssiit%s." + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"Kui see plugin meeldib teile või aitab teie äri kaaluge autorile annetuse " +"tegemist." + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Keeled" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Näita keelte nimetusi" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Näita lippe" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Suuna viide avalehele" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Peidab hetkel kasutusel oleva keele" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Näita rippmenüüna" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "Filtreerib sisu keele järgi" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Näita kõiki keeli" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Lisa uus tõlge" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Keel" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Tõlked" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "Määrab keele" + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Moodul kuvatakse:" + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Kõik keeled" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Halduri keel" + +# @ polylang +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "WordPressi vaikimisi väärtus" + +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Sätted" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Keelefailide uuendamine…" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Polylang info" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "Sõnade tõlkimised" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "Sõnade tõlkimine" + +# @ polylang +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "Sisesta määrustepärane WordPressi locale" + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "Keelekood peab olema unikaalne" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "Keelel peab olema nimetus" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"Keel loodi, aga WordPressi keelefaili allalaadimine ebaõnnestus. Palun " +"paigalda see käsitsi." + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Mooduli pealkiri" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Taksonoomiad" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Kohandatud väli" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Kommentaari seis" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Ping-i seis" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Esilehepostitused" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "Avaldamise kuupäev" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "Postituse vorming" + +# @ polylang +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Ülemleht" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "Lehe mall" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "Lehe järjekorranr." + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Tunnuspilt" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Muuda keelt" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Lisa uus keel" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Vali keel" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "" +"Saate valida keele loendist või vahetult redigeerida allpool olevates " +"lahtrites." + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Täisnimi" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "Täisnimi kuvatakse sinu lehel (näiteks: Eesti)." + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Locale" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"WordPress Locale keelele (näiteks: en_US). Peate paigaldama .mo tõlkefaili " +"selle keele jaoks." + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Keelekood" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Teksti suund" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "vasakult paremale" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "paremalt vasakule" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Vali keele teksti suund " + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Järjekord" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Keele positsioon keele vahetajas" + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Keele vahetaja" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Otsi tõlkeid" + +# @ polylang +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Puhasta sõnade tõlkimise andmebaas" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Vaikimisi keel" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Leidub postitusi, lehti, rubriike või silte millel pole keel määratud. Kas " +"soovite neile määrata vaikimisi keele?" + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Tuvasta veebilehitseja keel" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "" +"Kui külastatakse esilehte, kasuta keele määramiseks veebilehitseja eelistusi" + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "aadressi (URL) modifikatsioon" + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "Peida keeleinfo aadressides (URL-ides), kui on kasutusel vaikekeel." + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Meedia" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Aktiveeri keeled ja tõlked meedia jaoks." + +# @ polylang +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Sünkroniseerimine" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Kohandatud postitusetüübid" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Aktiveeri keeled ja tõlked kohandatud postitusetüüpide jaoks." + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Kohandatud taksonoomiad" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Aktiveeri keeled ja tõlked kohandatud taksonoomiate jaoks." + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Muuda" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Kustuta" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Kood" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Lipp" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Postitused" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "Nimi" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "Sõna(d)" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Lisa uus" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Keele vahetaja" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Näitab keele vahetajat" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Pealkiri:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "Lisab mitmekeelsuse WordPressile" + +# @ polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "" +"Kasutusel on WordPress %s. Polylang vajab töötamiseks vähemalt WordPress " +"versiooni %s." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "Polylang on deaktiveeritud kuna uuendasite liiga vana versiooni pealt." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "" +"Palun uuendage kõigepealt versioonile %s ja alles seejärel versioonile %s." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "Grupp" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Vaata kõiki gruppe" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "Oled sa kindel, et tahad selle keele jäädavalt kustuda?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"Kasutage seda kasutamata sõnade eemaldamiseks andmebaasist, näiteks pärast " +"plugina eemaldamist." + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"Sünkroniseerimise võimalused lubavad säilitada meta seosed tõlgitud " +"postituste ja lehtede vahel. " + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "Keelekood sisaldab sobimatuid tähemärke" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "Keel on määratud sisust" + +# @ polylang +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "Postituste, lehtede, rubriikide ja siltide aadresse (URLe) ei muudeta." + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "Keel on määratud kataloogidega" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "Näide:" + +# @ polylang +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "Keel on määratud alamdomeenidega" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "Keel on määratud domeenidega" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "Eemalda /language/ ilusatest püsiviidetest" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "Säilita /language/ ilusates püsiviidetes" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "Esilehe aadress (URL) sisaldab lehe nime või lehe id asemel keelekoodi" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "Näide: %s asendab %s" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "Seda keelt pole võimalik lisada." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "Keel lisatud." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "Keel kustutatud." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "Keel uuendatud." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "Tõlked uuendatud." + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "" +"Keelekood - soovitatavalt ISO 639-1 standardile vastav 2-täheline (näiteks: " +"et)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "" + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-he_IL.mo b/pole-sbv-content/plugins/polylang/languages/polylang-he_IL.mo new file mode 100644 index 0000000000000000000000000000000000000000..1cee0a71e4f674c5f88f1b9fd576faa8fca6da01 GIT binary patch literal 12626 zcmbuEe~et!b;n;4e#LDdq-jEcrk8-RO?TJW{D@g&jPVaJ*sx$@Ab~h&2eGa?|{4$t$1hv0SKM>$02-VRE>?cinLBOptnX>beJ3D4gM_@@EC4eI=V2Bn7|g5u-9LGgJ3 z#B~3D5LHK)fv6<95)}RG!~ME%n{gW#Wmqu|wScHq4Mp91Ay&w(T08{nPbcLJ{DkYD0{3QWN-g4@6!fNy{| z{i64$?}KgbFZqb)^I1@Qe*xrC^c7I@y$Z^{Z-6n_1;zhuIOkq)Cn)_bf!eW5&22lI%0CBnKK2Xo=VgB>s{>z~3@M@U2~L3Pz%PM!fWHsk4Za16?v@*(=oN4uD1Utm{1JHTulPK>c7z(k z{T@*EzHrp%iOWI9y#rM*wt$#4dI`^d+7ADt(g zY-h;F9%nqoKqdCs7*O`!z>vK9OfkfJ??cF#&)fwj4CNtx9HU_DVaV6z4~TDd1~7jT zO3#-vFtO=Yb{l8tgBt9!o9|7G{R~3Ea^QWSbf=GWeF@`XhWtRE%!7Tum+y-ikA^wf zzV}hyS;0^|=p%pB=OV__jE5LI85c4zlYQhmua3AZYpoPTBj)UrfcOz>B_lQQjERZtz~>L&+=yaZnid)dKyPt>UEbT zvpuX>ttJMz)m-74okp29Qc2WswYU{ea#zl|GIx*U?fOJJDGF9L(`MG|ez>-uUo zldNQATy{9q>v$?n8ujX~ukqgVz9OS-$yAJ}{gbyPjigMNFX7Eiw)5E{X%9S3i&i6^ z!^YK|D`wNOHj}iYZPmlV)!TWip3i3e$*D#>UG#5zvbrp8CPlQpo|g7i(T%oeB}d2Z zK-@^{eYLwrUW*$^wEbY*Y&DYc>cXuoT$&YS64zZm#a*-`K`rg1?$RcX8SO|LP%K<6 zhca55oa-O9BhBJQW6q^hZZ7Y*M*0+1nn?@SYILTtG9JvMv~)8`qg7~4+f8$%uOrw?o~?N!+8emBjYWCVp3>lMU3E zyO;nRbnvn0z9eb6wY}rkB9B8oB_Y;IkV`r#qFsUe>cZ{m`C9LhNK2vBeNAyObmvAz zdMathlbB)sC=PCJuyfA??$(=b8(rtzYGtS-IFw7WHGK+o3y8rJDu1s|>9h#TK`vn3 zJLzuAKljU$546!_G=X_>rs}eVi)5vrE)yIYLeT_a-;3!9QUQ6S)0%F_IKfofRszlC z?2`#>^GHv$!)C{#UTStTvDPG+t0!^D(sd?kaR-9(@<6mM*J~1KWuCjdQFjN367tdj zDFR`toxu5&tIfo1WKfc4wvBq=ukJeLC^B+^v^aGw$&~+!e&mjr53DTip4cT9srXcs zwetfwY~7ig;$jkK6?dDfU)Gv;=dcu=j;kvi)M>ZN!kuMBoxM(gnTFIIatXbl@5l6B4OyhayNFAI*F*)?y~UTBbG8? zvxe(T=WXhvufU{R*J(Gn!%4Edbj`e;QXBB)iO!_7hrZ>w(L+hi3W*Hh^IgGQGe`UX zSBUOO;&yFjFsl^No}~0yrO}IDW=fT^XpgKxqOB4QQ)OCvim*3{_E^bd?roLtd~_j%aVyBSd?LYHYMuS#E}sth&nL+CaXg+@sn_QdLNf=m9ef@i}G``Z-#v zwMr6GbA~OZ6vY0j63LuO>z2_~N$e)A8^xZEpv5kgCL@?;zU(R52wt4(Jga+bce3>9 zPBOfJppwg5WQT(H&I|Ah@}mksJ#Xs#cU~%Cf`BG9Rp}=$_H9nyp7Y|LH_^*Dl_CZ? z*J(v((sT9G5-_#Q#CUJ)i|7#fS>m^*nw-=}DB%{P{T$V2V=AR~X|X~_txO{)0oTV| z$jCCVJcN|dj5GSg#+>&N)orClxjGNIs{6(WuOi;9b+Du}Ty;W5<9$)=7Q>G1@|JI< zImYKRnMtmqvPGw6Nf(#t5dEuhv7RSe{~c0FO@&11rV0{E6y}Y-4z1DSW>UuHi1LTY zq?}a=ks*d?vM~1Dd~j&b_iS39#_fiLCTERHDAJHpkwyCXvXy%T-vZ-7@X< zm>nB9Fjz7YDfvrmFPxCF&M?C(Db2nuJBNtd!g4h>1zrE46ZZ`EXV9(N3Q3 z@FGT)#NlXV%Hf4ZL~Sp%WB7fpD%2@^kjLjaSfk}502Dfe>X;EQjl_*Y;`>fxszc@& z=;1?%t}Kd9tChE{(07{R^qzb+p&`>d#wwdue4&kI%qvQa*{uMFUQn?mVM%;=PnoyU z+E~;`rff$$ot`Np`xXIBM-#q@AKh6W-RHZ$aRSu8+pl;i5i6s+i|MpJdRJ$<7~PwX zyA=};>>b^z3`(SoZX=P}+~`Aze6c^Z3uTV>;*Au5b$Bs#_wjB;X++@L<2z$bJvEjk zGSVZxT1hvCxyb)1|weSGwk%E$+vfNq^lquOcgU@7%q;&-uEs8&_=gZ+D}6 z`H^AV-n7@!Rj1iT>s*PFO%LzgF}k6@P8osfH@ZEeuA#hfw_!3ZS4=cI?YJ?zgNCaZ zcNwwDZLw+nMzu&>Zpz#>o7}pMD;^!4$Yt}J4*R>_yx(LLV%#@$>}@Z|0!z1?%%1i$C5O9{U{L|At)_vV*pM;XA*r|Q8cKb7sT|%fc z-50&EOUQk^yC|k4^=Zu>W$x_IjAUL656)RUpqaPtJI*nO(V($fDQ=1552HLNN`vT- z15fjPDl+ZD!f6zDvU|eu1$Qht5kZRk#h(5n_8#To8F6g<4b8l0`Z{d;?R2lqV-Dei z**qyk*BP&K1{Pd`rkFdz7&iM7M=xO8Lt^?ke=w^}3lVBN#vkgFpU6uPO_BtU@}`q= z@C&Veci!?Yy+Epf^LfMw%8^V9QlKs*Da;+=LTW|iut65kcv*&j4KX014JTOn)giqv z^H?I7`IgzDlThqQo!mV-uz!J7+KYeOb&%-4=k$ zT*A}aoacn8{CSoh8jsj31Nb}r_Q3i;gWuWURFQO2Qk=orLTH|XAB7v|DGj`+ixbEd z^aP`a#KIw-0!#eCq_W2%)Gh3JByEKxqRS&XgEdmMUBANmBT5`6(7>tg>w0j4vtAm} zI=oSoEhXvRE9nJYa^y09ORR+&2aZL^h>j)f>rjEF9v|;6c;XU~OV1pc$CSUs;zM#? z>F+fue-SQ19C`8Kfc(JYc}Y`6%unzw8R`^U@Hy{N7C$F+lz0l+(;ubVo}J}3(z84h z22I9Au1`uI(u0(x0M(Q!SV~iPn*QW`crn7@fL_%r3+`l6RP-Y7vVOSne2BubH>po| z=GwtxmP2giS&kL`fgcjse_9MkHrNWO!@JZx53uke$124uoteuU!3bJa5NQUz$PNqI zBGHv|7dh5)iB}yK8NB1iKu9X)j=S}814wX!6x{zka5Wqbxcf}9MyFWTK4~lv_MCEl zW^9>P^#VFO*2>dr^7EIpzBffWOZ zlMv(a^YVa`av5pJoMs?AWlu`L2@B={gH+Mj+vNR(WjfZ1dCz20+Ui~-y~d}IV$2y-VNUy=!>a^yMFofm78(1Jr!pXHGk+UOI7wsqdz zg%T+lMb*B^cxNFNIs{b^r6jDxgOGj)M5z+d5(_CcP$3wVdVHhBf!-wYCY~JTXmvWW zIt-$9S%ij;OFBG@hv3`d!@@vCq6*l7Zo|s9r%zRgjMLETVGH}84oH}eBt&?G7>h7r zfgqmjo@9jue4a4Yq&9U9KB&=$Wnu3-%P_t;=H$tT5axK7N?^Sb1YYX-caT@dD7(L= zqarRO%3<8%|C!08XbFYW_ENbl$PtThtw1#~OoKynx(U6+x!v19GXzaYrTE)WRSoGeRA-r6JmJn3U#?dKhKfzq16dWS7*e&{ zxy|*Rttuha?m*qUuxh4pNIaN}aBs>VDm*6Oxgu(zwonOV-VipD#k&G}IipNO>%g4F zN)<+uQHjdu8CLc(+(3N~$;5lt`KYTCuh={x6Y*sc7(s7|aZ)Ngrygr!fSTulWwMBO zJ<9ISvi%fsi4*utEje(wev|9fYcB-V`N~AEp`=B!0ei)M=s_gbeD~EV8JTE9iC=Dr z&E#+}Zw0mA&?r4DkjkspS&cFb4bY$W$w8V|BSF8f#?9<;uAe`NT09GH`QzS)=syp#qK%j zN8G8SN0Y$|&J*aq3RtKqp3ygD-}D;XQ$AU})}alhV&AS>DhZ4ATYzPCk${mZtD`k> zsW$xBD(4&g0qvQ~@iJm2QA@CZj0lVA^|pm*T)nLz1X-(!pc<)~fQI^kW?Gs@me9Vb zLdpNgK~~PKmsW99Tv}glUgk?Xl(f-8P;O%#`67GmU2!w@#>%GV;eJRX=iG`VYc<$` z7j<7kBkE-2<*=j5sKlzq(vq#-J19{8{Kejn(=4UBh}+OVc-QND6r9raD_#-CuT=j@ zUOuNp^mK(OrJSnW(#zT@HAIWBCfggcXn)wF2`_X2+3KZesL_&&ypyU&KDWB{-l;IK z6sXrqqoit&&x@#RN;@@BOhW!QPDJpy;w~hFU|b6lyrnXlev1h2>zY#ngt8q{`Qs|R z6IG=xIO*`@uq^_m;e0a`@%((bf9Eczc2TwO+|tlXUt_x;@XA-647{mJz=kGJ6tafR z1ecRCD{0lnENHnLLJO!TYHJjcGTo4a>$#d7h+30zM9SMNdX=d{4>~Lv3iG|aezIn@ z2-6k%RDQ<0W9V8=+Y#{d&J?QrCr;Hd&;|r?<)Vw6<(-jSW#O$C3dJ4Lcz4jHz2-Bc zj7HI5h!geJnfg%S_mRJplaWL_@-%2pysocmt{_?3kh09Kkkf~?4G xwVDoG>&~J;7}ps`pBWqBS){|opsATIy_ literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-he_IL.po b/pole-sbv-content/plugins/polylang/languages/polylang-he_IL.po new file mode 100644 index 00000000..fd189a41 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/languages/polylang-he_IL.po @@ -0,0 +1,655 @@ +msgid "" +msgstr "" +"Project-Id-Version: polylang\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Ariel Klikstein \n" +"Language-Team: Pojo Team \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: .\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.7.4\n" +"X-Poedit-SearchPath-0: ..\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"התוסף מסופק עם %sתיעוד מסודר%s (באנגלית בלבד). התיעוד כולל מידע על הקמת אתר " +"רב לשוני והשתמשות בו על בסיס יומיומי, שאלות נפוצות, וכן תיעוד עבור מפתחים " +"להתאמת תוספים וערכות נושא לתוסף." + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"תוכלו למצוא מידע שימושי ב %sפורום תמיכה%s של התוסף. רק אל תשכחו לחפש לפני " +"שאתם שואלים." + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"התוסף ללא תשלום והוא משוחרר לשימוש חופשי ברישיון %sGPL%s בדומה לוורדפרס." + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "אם הינכם מעוניינים לעזור לפרויקט הזה %sקראו כאן%s." + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"אם אתם ממש אוהבים את התוסף הזה או שזה עוזר לעסק שלכם, אני מאוד אעריך אם " +"תתמכו בי." + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "שפות" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "הצגת שם שפה" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "הצגת דגלים" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "לקשר תמיד לעמוד הבית" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "הסתרת שפה נוכחית" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "תצוגה בתפריט נפתח" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "סינון תוכן לפי שפה" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "הצגת כל השפות" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "הוספת תרגום חדש" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "שפה" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "תרגומים" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "הגדרות שפה" + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "וידגט' זה יוצג בשפה:" + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "כל השפות" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "שפת פאנל ניהול" + +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "ברירת מחדל" + +# @ default +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "הגדרות" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "עדכון קבצי שפה…" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "אודות התוסף" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "מחרוזות תרגומים" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "מחרוזות תרגום" + +# @ polylang +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "יש להזין מקום שתקף בוורדפרס" + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "קוד שפה חייב להיות ייחודי" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "שם שפה חובה" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"השפה נוצרה, אבל את הקובץ שפה של וורדפרס לא היה ניתן להוריד. יש להתקין את " +"הקבצים באופן ידני." + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "וידג'ט טקסט" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "טקסונומיות" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "שדות מיוחדים" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "סטטוס תגובה" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "סטטוס פינג" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "פוסטים דביקים" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "תאריך פרסום" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "סוג תוכן" + +# @ default +#: admin/settings.php:326 +msgid "Page parent" +msgstr "עמוד אב" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "תבנית עמוד" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "סידור עמוד" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "תמונה ראשית" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "עריכת שפה" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "הוספת שפה חדשה" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "בחירת שפה" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "אפשר לבחור שפה מהרשימה או ישירות לערוך אותה בהמשך." + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "שם מלא" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "השם שיוצג באתר שלך (לדוגמא: עברית)" + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "מיקום" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"קבצי שפה של וורדפרס (לדוגמא he_IL ). חייב להיות קובץ .MO בשביל הגדרת שפה" + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "קוד שפה" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "כיוון טקסט" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "שמאל לימין" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "ימין לשמאל" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "בחירת כיווניות טקסט עבור השפה" + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "סידור" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "מיקום שפה במחליף השפות" + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "מחליף שפות" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "חיפוש תרגומים" + +# @ polylang +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "ניקוי מחרוזות תרגום מהדטא בייס" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "שפת ברירת מחדל" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"יש הודעות, דפים, קטגוריות או תגיות שאינם מוגדרים בשפה מסויימת. האם להגדיר את " +"כולם שפת ברירת המחדל? " + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "זיהוי שפת דפדפן" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "כאשר הגולש הגיע לעמוד הבית, להציג את השפה על פי שפת הדפדפן של הגולש" + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "שינויי URL" + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "הסרת שינוי כתובת עבור שפת ברירת מחדל" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "מדיה" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "הפעלת תרגום שפות עבור מערכת המדיה" + +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "סנכרון" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "סוגי פוסטים מותאמים אישית" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "הפעלת תרגום שפות עבור סוגי פוסטים מותאמים אישית" + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "טקסונומיות מותאמות אישית" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "הפעלת תרגום שפות עבור טקסונומיות מותאמות אישית" + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "עריכה" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "מחיקה" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "קוד" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "דגל" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "פוסטים" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "שם" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "מחרוזת" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "הוספת חדש" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "מחליף שפות" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "הצגת מחליף השפות" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "כותרת:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "הוספת יכולות שפות מרובה בוורדפרס" + +# @ polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "המערכת על וורדפרס גרסה %s. התוסף דורש לכל הפחות וורדפרס גרסה %s." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "תוסף השפות (Polylang) בוטל בגלל ששדרגת מגרסה ישנה מידי" + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "אנא שדרגו ראשית כל ל %s לפני שאתם משדרגים ל %s" + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "קבוצה" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "הצגת כל הקבוצות" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "השפה עומדת להמחק לצמיתות. האם למחוק בכל זאת?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"יש להשתמש באפשרוית זו כדי להסיר מחרוזות שאינן בשימוש ממסד הנתונים, לדוגמא: " +"לאחר הסרת התוסף מהמערכת." + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"אפשרויות הסנכרון תאפשר לשמור על אותם ערכים מדויקים (או תרגומים במקרה של " +"טקסונומיות ועמודי אב) של תוכן מטא בין התרגומים של הפוסט או העמוד." + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "קוד השפה מכיל תווים לא חוקיים" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "השפה מוגדרת רק בתוכן" + +# @ polylang +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "ה URL של הפוסטים, העמודים, הקטגוריות והתגיות אינו משתנה. " + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "במבנה הקישורים השפה מופיעה כתיקיה" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "לדוגמא:" + +# @ polylang +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "במבנה הקישורים השפה מופיעה כסאב דומיין" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "השפות מופיעות בדומיינים שונים" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "למחוק /language/ לפני שם השפה במבנה הקישורים" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "לשמור /language/ לפני שם השפה במבנה הקישורים" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "כתובת עמוד הבית מכילה את קוד השפה במקום שם העמוד או ID העמוד" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "לדוגמא: %s במקום%s" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "לא ניתן להוסיף את השפה." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "שדה נוספה." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "שפה נמחקה." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "שפה מעודכנת." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "תרגומים מעודכנים." + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "קוד שפה - רצוי 2 אותיות ISO 639-1 (לדוגמא: he)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "עמוד סטטי שנבחר לעמוד בית חיב להיות מתורגם לעל השפות." + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "וידג'ט טקסט" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "תוספים מומלצים" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "השפה מוגדרת מהקוד של של ה URL" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "להסתיר שפות ללא תרגום" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-hu_HU.mo b/pole-sbv-content/plugins/polylang/languages/polylang-hu_HU.mo new file mode 100644 index 0000000000000000000000000000000000000000..5d2b0d24609e97289387acdda3ce9c422a9b3942 GIT binary patch literal 11279 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\n" +"Language-Team: Csaba Erdei \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2: nplural=n>1;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: _e;__;_x\n" +"X-Poedit-Basepath: .\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-SearchPath-0: ..\n" +"X-Poedit-SearchPath-1: ../include\n" + +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"A bővítményhez részletes %sdokumentáció%s áll rendelkezésre (angol nyelven), " +"amely tartalmazza a telepítéshez és a mindennapos használathoz szükséges " +"leírásokat, és a fejlesztők számára szükséges információkat is." + +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Továbbá a %stámogató fórumban%s is találhatók hasznos információk, de új " +"téma indítása előtt érdemes a keresést is használni." + +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang bővítmény ingyen használható és a WordPress-el azonos, %sGPL%s " +"licensz alatt lett kiadva." + +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "" +"Ha hasznosnak bizonyult a bővítmény, akkor %sfejlesztéssel, teszteléssel " +"vagy fórum válaszokkal%s is lehet segíteni folyamatos fejlődését." + +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"Vagy a lentebbi gombra kattintva adományozással is hozzá lehet járulni a " +"fejlesztéséhez, amit ez úton is köszönünk!" + +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Nyelvek" + +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Nyelvek nevének mutatása" + +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Nyelv zászlók mutatása" + +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Főoldal linkje tartalmazza a nyelvet is" + +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Aktuális nyelv elrejtése" + +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Megjelenítés legördülő menüként" + +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "Tartalom szűrése nyelv szerint" + +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Minden nyelv" + +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Új fordítás hozzáadása" + +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Nyelv" + +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Fordítások" + +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "Nyelvek beállítása" + +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Widget megjelenítése ennél a nyelvnél:" + +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Minden nyelv" + +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Adminisztrációs felület nyelve" + +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "WordPress alapértelmezett" + +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Beállítások" + +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Nyelv fájlok frissítése…" + +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Polylang bővítményről" + +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "Szöveg fordítások" + +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "Szöveg fordítások" + +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "WordPress nyelvkód (pl. hu_HU)" + +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "A nyelvkódnak egyedinek kell lennie" + +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "Nevet is kell adni a nyelvnek" + +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"A nyelv hozzá lett adva, de a WordPress fordítások (.mo fájlok) ehhez a " +"nyelvhez nem lettek letöltve, ezt kézzel kell megtenni." + +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Widget címe" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Taxonómiák (kategóriák, címkék)" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Egyedi mezők" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Hozzászólás állapot" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Értesítés (ping) állapot" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Ragadós bejegyzések" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "Közzététel időpontja" + +#: admin/settings.php:325 +msgid "Post format" +msgstr "Formátum" + +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Szülő oldal" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "Oldal sablonminta" + +#: admin/settings.php:328 +msgid "Page order" +msgstr "Oldal sorrend" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Kiemelt kép" + +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Nyelv szerkesztése" + +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Új nyelv hozzáadása" + +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Nyelv kiválasztása" + +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "Kiválasztható egy nyelv, vagy lentebb megadhatók a részletei:" + +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Nyelv teljes neve" + +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "A nyelv teljes neve, ahogy majd a honlapon is megjelenik (pl. Magyar)" + +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "WP nyelvkód" + +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"WordPress nyelvkód (pl. hu_HU). A nyelvhez tartozó .mo fordítás fájlt kézzel " +"kell telepíteni." + +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Nyelvkód" + +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Nyelv írásmódja" + +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "balról jobbra" + +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "jobbról balra" + +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Nyelv írásmódjának kiválasztása" + +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Sorrend" + +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Hányadikként jelenjen meg a nyelv" + +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Nyelv választó" + +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Fordítás keresése" + +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Szöveg fordítások törlése" + +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Alapértelmezett nyelv" + +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Vannak bejegyzések, oldalak, kategóriák és címkék, amelyekhez még nincs " +"nyelv megadva. Ezek használják az alapértelmezett nyelvet." + +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Böngésző nyelvének használata" + +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "" +"Amikor meglátogatják a honlapot, akkor a látogató böngészőjének nyelvét " +"vegyük alapul." + +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "Linkek módosítása" + +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "Nyelvkód eltávolítása a linkekből az alapértelmezett nyelv esetén" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Média" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Médiák fordításának bekapcsolása" + +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Szinkronizálás" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Egyedi bejegyzés típusok" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Egyedi bejegyzés típusok fordításának bekapcsolása." + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Egyedi taxonómiák (kategóriák, címkék)" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Egyedi taxonómiák (kategóriák, címkék) fordításának bekapcsolása." + +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Szerkesztés" + +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Törlés" + +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Nyelvkód" + +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Zászló" + +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Bejegyzések" + +#: admin/table-string.php:110 +msgid "Name" +msgstr "Név" + +#: admin/table-string.php:111 +msgid "String" +msgstr "Szöveg" + +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Új hozzáadása" + +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Nyelv választó" + +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Nyelv választó elhelyezése" + +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Cím:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "Többnyelvű tartalom, fordítások kezelése." + +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "" +"Jelenleg a WordPress %s verziója van használva. Polylang bővítmény " +"használatához legalább WordPress %s verzió szükséges." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "" +"Polylang bővítmény ki lett kapcsolva, mert túl régi verzióról lett frissítve." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "" +"Először a(z) %s verzióra kell elvégezni a frissítést, majd csak utána lehet " +"a(z) %s verzióra is." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "Csoport" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Összes csoport" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "Valóban töröljük véglegesen ezt a nyelvet?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"Már nem használt szöveg fordítások törlése adatbázisból, pl. eltávolított " +"bővítményhez tartozó szövegek fordításai." + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"A szinkronizálás segítségével az oldalakhoz vagy bejegyzésekhez tartozó " +"metadatok a fordítások esetén is ugyanazokat az értékeket veszik fel." + +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "Nyelvkód hibás karaktert tartalmaz." + +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "A nyelvet a tartalom nyelve határozza meg." + +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "Bejegyzés, oldal, kategória és címke linkek nem módosulnak." + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "A nyelvet a linkben található mappanév határozza meg." + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "Példa:" + +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "A nyelvet a linkben található aldomén határozza meg." + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "A nyelvet a linkben található domén határozza meg." + +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "/language/ eltávolítása a linkekből." + +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "/language/ megtartása a linkekben." + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "" +"A főoldal linkje a nyelv kódját tartalmazza az oldal neve vagy azonosítója " +"helyett." + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "Például: %s (%s helyett)" + +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "Nem lehetséges a nyelv hozzáadása." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "Nyelv hozzáadva." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "Nyelv törölve." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "Nyelv frissítve." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "Fordítások frissítve." + +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "Nyelvkód - 2 karakteres ISO 639-1 nyelvkód (pl. hu)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "" + +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "" + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-id_ID.mo b/pole-sbv-content/plugins/polylang/languages/polylang-id_ID.mo new file mode 100644 index 0000000000000000000000000000000000000000..fa97dcce8a83e8f5c5e0cac754f582f278cf5fef GIT binary patch literal 11467 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 1;\n" +"X-Generator: GlotPress/1.0-alpha-1100\n" +"Project-Id-Version: Stable (latest release)\n" + +#: lingotek/lingotek.php:85 +msgid "Activated" +msgstr "" + +#: lingotek/lingotek.php:85 +msgid "Activate" +msgstr "" + +#: lingotek/lingotek.php:90 +msgid "Request Translation" +msgstr "" + +#: lingotek/lingotek.php:96 +msgid "Request Services" +msgstr "" + +#: lingotek/lingotek.php:103 +msgid "Polylang is now fully integrated with Lingotek, a professional translation management system!" +msgstr "" + +#: lingotek/lingotek.php:106 +msgid "Automatically Translate My Site" +msgstr "" + +#: lingotek/lingotek.php:107 +msgid "Polylang is now fully integrated with Lingotek!" +msgstr "" + +#: lingotek/lingotek.php:109 lingotek/lingotek.php:120 +msgid "Access free machine translation for your site for up to 100,000 characters." +msgstr "" + +#: lingotek/lingotek.php:110 +msgid "Machine translation is an excellent option if you're on a tight budget, looking for near-instant results, and are okay with less-than-perfect quality." +msgstr "" + +#: lingotek/lingotek.php:117 +msgid "Translation Management System" +msgstr "" + +#: lingotek/lingotek.php:118 +msgid "Do you need to connect to a professional translation management system?" +msgstr "" + +#: lingotek/lingotek.php:121 +msgid "Access an online translator workbench." +msgstr "" + +#: lingotek/lingotek.php:122 +msgid "Have linguists compare side-by-side versions of original and translated text." +msgstr "" + +#: lingotek/lingotek.php:123 +msgid "Save and re-use previously translated material (leverage translation memory (TM))." +msgstr "" + +#: lingotek/lingotek.php:130 +msgid "Professionally Translate My Site" +msgstr "" + +#: lingotek/lingotek.php:131 +msgid "Do you need to professionally translate your site?" +msgstr "" + +#: lingotek/lingotek.php:133 +msgid "Start the process of getting a professional translation bid." +msgstr "" + +#: lingotek/lingotek.php:134 +msgid "Activate account so Lingotek can get an accurate count of how many words you have on your site and which languages you wish to translate into." +msgstr "" + +#: lingotek/lingotek.php:135 +msgid "Once activated click on the request translation bid and a certified translation project manager will contact you to give a no obligations translation bid." +msgstr "" + +#: lingotek/lingotek.php:142 +msgid "Need Extra Services?" +msgstr "" + +#: lingotek/lingotek.php:143 +msgid "Do you need help translating your site?" +msgstr "" + +#: lingotek/lingotek.php:145 +msgid "Start the process of getting extra services." +msgstr "" + +#: lingotek/lingotek.php:146 +msgid "Do you need someone to run your localization project?" +msgstr "" + +#: lingotek/lingotek.php:147 +msgid "Do you need customized workflows?" +msgstr "" + +#: lingotek/lingotek.php:148 +msgid "Do you you have existing Translation Memories you would like to use?" +msgstr "" + +#: lingotek/lingotek.php:149 +msgid "Do you need help creating glossaries and terminologies?" +msgstr "" + +#: lingotek/lingotek.php:254 +msgid "Learn more..." +msgstr "" + +#. Plugin Name of the plugin/theme +msgid "Polylang" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://polylang.wordpress.com/" +msgstr "" + +#. Description of the plugin/theme +msgid "Adds multilingual capability to WordPress" +msgstr "Tambahkan kapabilitas multi-bahasa pada WordPress" + +#. Author of the plugin/theme +msgid "Frédéric Demarle" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://polylang.wordpress.com" +msgstr "" + +#: admin/admin-filters-columns.php:141 admin/admin-filters-columns.php:236 +msgid "Add new translation" +msgstr "Tambahkan terjemahan baru" + +#: admin/admin-filters-columns.php:161 +msgid "— No Change —" +msgstr "" + +#: admin/admin-filters-columns.php:174 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:159 admin/admin-filters-term.php:85 +#: admin/admin-filters-term.php:136 include/model.php:591 +msgid "Language" +msgstr "Bahasa" + +#: admin/admin-filters-post.php:133 admin/admin.php:96 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:590 +msgid "Languages" +msgstr "Bahasa" + +#: admin/admin-filters-post.php:239 +msgid "(no parent)" +msgstr "" + +#: admin/admin-filters-post.php:474 admin/admin-filters-term.php:763 +#: admin/table-languages.php:65 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Sunting" + +#: admin/admin-filters-term.php:92 admin/admin-filters-term.php:144 +msgid "Sets the language" +msgstr "Setel bahasa" + +#: admin/admin-filters-term.php:454 +msgid "None" +msgstr "" + +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Widget tersebut ditampilkan untuk:" + +#: admin/admin-filters.php:55 include/model.php:592 +msgid "All languages" +msgstr "Semua bahasa" + +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Bahasa untuk Admin" + +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "Bawaan WordPress (default)" + +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Memperbarui berkas-berkas bahasa…" + +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "Halaman depan statis terpilih harus diterjemahkan ke dalam semua bahasa." + +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "Tidak dimungkinkan menambah bahasa." + +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "Bahasa ditambahkan." + +#: admin/admin-model.php:145 +msgid "Language deleted." +msgstr "Bahasa dihapus." + +#: admin/admin-model.php:224 +msgid "Language updated." +msgstr "Bahasa diperbarui." + +#: admin/admin-model.php:241 +msgid "Enter a valid WordPress locale" +msgstr "Masukkan lokala (locale) WordPress yang valid." + +#: admin/admin-model.php:245 +msgid "The language code contains invalid characters" +msgstr "Kode bahasa berisi karakter yang tidak valid" + +#: admin/admin-model.php:249 +msgid "The language code must be unique" +msgstr "Kode bahasa harus unik" + +#: admin/admin-model.php:254 +msgid "The language must have a name" +msgstr "Bahasa harus memiliki nama" + +#: admin/admin-nav-menu.php:52 admin/admin-nav-menu.php:73 +#: admin/admin-nav-menu.php:76 admin/admin-nav-menu.php:107 +#: admin/admin-nav-menu.php:169 install/upgrade.php:302 +msgid "Language switcher" +msgstr "Pengalih Bahasa" + +#: admin/admin-strings.php:54 +msgid "Site Title" +msgstr "" + +#: admin/admin-strings.php:55 +msgid "Tagline" +msgstr "" + +#: admin/admin-strings.php:56 +msgid "Date Format" +msgstr "" + +#: admin/admin-strings.php:57 +msgid "Time Format" +msgstr "" + +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Judul widget" + +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "Teks widget" + +#: admin/admin.php:204 admin/settings.php:102 +msgid "Settings" +msgstr "Pengaturan" + +#: admin/admin.php:312 +msgid "Show all languages" +msgstr "Tampilkan semua bahasa" + +#: admin/admin.php:321 +msgid "Filters content by language" +msgstr "Pilah konten sesuai bahasa" + +#: admin/admin.php:419 admin/settings.php:183 +msgid "The language was created, but the WordPress language file was not downloaded. Please install it manually." +msgstr "Bahasa telah dibuat, namun file bahasa untuk WordPress belum terunduh. Silahkan menginstalnya secara manual." + +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "Daftar plugin yang disarankan" + +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Tentang Polylang" + +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "Terjemahan string" + +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "Penerjemahan string" + +#: admin/settings.php:242 +msgid "Translations updated." +msgstr "Terjemahan diperbarui." + +#: admin/settings.php:300 +msgid "Settings saved." +msgstr "" + +#: admin/settings.php:321 +msgid "Taxonomies" +msgstr "Taksonomi" + +#: admin/settings.php:322 +msgid "Custom fields" +msgstr "Bidang kustom (custom fields)" + +#: admin/settings.php:323 +msgid "Comment status" +msgstr "Status komentar" + +#: admin/settings.php:324 +msgid "Ping status" +msgstr "Status ping" + +#: admin/settings.php:325 +msgid "Sticky posts" +msgstr "Tulisan-tulisan lekat (sticky posts)" + +#: admin/settings.php:326 +msgid "Published date" +msgstr "Tanggal terbit" + +#: admin/settings.php:327 +msgid "Post format" +msgstr "Format pos" + +#: admin/settings.php:328 +msgid "Page parent" +msgstr "Induk halaman" + +#: admin/settings.php:329 +msgid "Page template" +msgstr "Templet halaman" + +#: admin/settings.php:330 +msgid "Page order" +msgstr "Urutan halaman" + +#: admin/settings.php:331 +msgid "Featured image" +msgstr "Gambar fitur (featured image)" + +#: admin/table-languages.php:70 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "Anda akan menghapus permanen bahasa ini. Anda yakin?" + +#: admin/table-languages.php:71 admin/table-string.php:168 +msgid "Delete" +msgstr "Hapus" + +#: admin/table-languages.php:85 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Nama bahasa" + +#: admin/table-languages.php:86 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Lokala (locale)" + +#: admin/table-languages.php:87 +msgid "Code" +msgstr "Kode" + +#: admin/table-languages.php:88 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Urutan" + +#: admin/table-languages.php:89 +msgid "Flag" +msgstr "Bendera" + +#: admin/table-languages.php:90 +msgid "Posts" +msgstr "Tulisan (posts)" + +#: admin/table-string.php:109 +msgid "String" +msgstr "String" + +#: admin/table-string.php:110 +msgid "Name" +msgstr "Nama" + +#: admin/table-string.php:111 +msgid "Group" +msgstr "Grup" + +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Terjemahan" + +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Tampilkan semua grup" + +#: admin/table-string.php:200 +msgid "Filter" +msgstr "" + +#: admin/view-about.php:3 +msgid "Polylang is provided with an extensive %sdocumentation%s (in English only). It includes information on how to set up your multilingual site and use it on a daily basis, a FAQ, as well as a documentation for programmers to adapt their plugins and themes." +msgstr "Polylang disediakan beserta %sdokumentasi%s yang lengkap (tapi dalam Bahasa Inggris). Dokumentasi tersebut meliputi informasi tentang cara mengatur situs multi-bahasa Anda dan menggunakannya sehari-hari, sebuah FAQ, serta dokumentasi untuk para programer untuk mengadaptasi plugin dan theme buatan mereka." + +#: admin/view-about.php:9 +msgid "You will also find useful information in the %ssupport forum%s. However don't forget to make a search before posting a new topic." +msgstr "Anda juga akan menemukan informasi bermanfaat di dalam %sforum pendukung (support forum)%s. Walaupun demikian, lakukan terlebih dahulu pencarian mengenai topik Anda yang inginkan sebelum membuat topik baru di forum tersebut." + +#: admin/view-about.php:16 +msgid "Polylang is free of charge and is released under the same license as WordPress, the %sGPL%s." +msgstr "Polylang disediakan gratis dan dirilis di bawah lisensi yang sama dengan WordPress, yaitu %sGPL%s." + +#: admin/view-about.php:22 +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "Jika Anda ingin tahu bagaimana agar bisa berkontribusi dalam proyek ini, silahkan %sbaca ini%s." + +#: admin/view-about.php:27 +msgid "Finally if you like this plugin or if it helps your business, donations to the author are greatly appreciated." +msgstr "Akhir kata, jika Anda menyukai plugin ini ataupun merasa bahwa plugin ini membantu bisnis Anda, donasi kepada pengembangnya sangat dihargai." + +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Sunting bahasa" + +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:103 +msgid "Add new language" +msgstr "Tambahkan bahasa baru" + +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Pilih sebuah bahasa" + +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "Anda dapat memilih satu bahasa dari daftar yang ada atau langsung menyuntingnya di bawah ini." + +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "Sebutan tersebut sebagai nama bahasa yang akan ditampilkan pada situs Anda (contohnya: Bahasa Indonesia)" + +#: admin/view-tab-lang.php:66 +msgid "WordPress Locale for the language (for example: en_US). You will need to install the .mo file for this language." +msgstr "Lokala WordPress untuk bahasa tersebut (contohnya: id_ID). Anda harus menginstal file .mo untuk bahasa ini." + +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Kode bahasa" + +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "Kode bahasa - sebaiknya 2-letters ISO 639-1 (for example: en)" + +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Arah teks" + +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "kiri ke kanan" + +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "kanan ke kiri" + +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Pilih arah teks untuk bahasa tersebut" + +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Posisi bahasa dalam Pengalih Bahasa" + +#: admin/view-tab-lang.php:103 +msgid "Update" +msgstr "" + +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Bahasa bawaan (default)" + +#: admin/view-tab-settings.php:29 +msgid "There are posts, pages, categories or tags without language set. Do you want to set them all to default language ?" +msgstr "Terdapat tulisan, halaman, kategori atau tag tanpa set bahasa. Anda ingin menyetel semua itu ke bahasa bawaan (dafault language)?" + +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "Modifikasi URL" + +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "Bahasa disetel dari konten" + +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "URL untuk pos, halaman, kategori dan tag tidak berubah." + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "Bahasa disetel dari nama direktori pada permalink cantik" + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "Bahasa disetel dari kode pada URL" + +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:109 admin/view-tab-settings.php:118 +msgid "Example:" +msgstr "Contoh:" + +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "Bahasa disetel dari nama subdomain pada permalink cantik." + +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "Bahasa disetel dari domain yang berbeda." + +#: admin/view-tab-settings.php:92 +msgid "Hide URL language information for default language" +msgstr "Sembunyikan URL informasi bahasa untuk bahasa bawaan (default language)" + +#: admin/view-tab-settings.php:106 +msgid "Remove /language/ in pretty permalinks" +msgstr "Hilangkan /language/ pada permalink cantik" + +#: admin/view-tab-settings.php:115 +msgid "Keep /language/ in pretty permalinks" +msgstr "Biarkan /language/ pada permalink cantik" + +#: admin/view-tab-settings.php:130 +msgid "The front page url contains the language code instead of the page name or page id" +msgstr "URL halaman depan berisi kode bahasa, seharusnya nama halaman atau id halaman" + +#: admin/view-tab-settings.php:138 +msgid "Example: %s instead of %s" +msgstr "Contoh: %s dan bukan %s" + +#: admin/view-tab-settings.php:148 +msgid "Detect browser language" +msgstr "Deteksi bahasa peramban (browser language)" + +#: admin/view-tab-settings.php:154 +msgid "When the front page is visited, set the language according to the browser preference" +msgstr "Saat halaman depan dikunjungi, setel bahasa sesuai preferensi peramban (browser preference)" + +#: admin/view-tab-settings.php:161 +msgid "Media" +msgstr "Media" + +#: admin/view-tab-settings.php:167 +msgid "Activate languages and translations for media" +msgstr "Aktifkan bahasa dan terjemahan untuk media" + +#: admin/view-tab-settings.php:175 +msgid "Custom post types" +msgstr "Jenis tulisan kustom (Custom post types)" + +#: admin/view-tab-settings.php:188 +msgid "Activate languages and translations for custom post types." +msgstr "Aktifkan bahasa dan terjemahan untuk jenis tulisan kustom." + +#: admin/view-tab-settings.php:195 +msgid "Custom taxonomies" +msgstr "Taksonomi kustom" + +#: admin/view-tab-settings.php:208 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Aktifkan bahasa dan terjemahan untuk taksonomi kustom." + +#: admin/view-tab-settings.php:214 +msgid "Synchronization" +msgstr "Sinkronisasi" + +#: admin/view-tab-settings.php:225 +msgid "The synchronization options allow to maintain exact same values (or translations in the case of taxonomies and page parent) of meta content between the translations of a post or page." +msgstr "Opsi-opsi sinkronisasi memungkinkan untuk menjaga nilai (atau terjemahan, jika pada taksonomi dan induk halaman) dari isi meta agar tepat sama antara terjemahan pos atau halaman." + +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Cari terjemahan" + +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Bersihkan database terjemahan semua string" + +#: admin/view-tab-strings.php:12 +msgid "Use this to remove unused strings from database, for example after a plugin has been uninstalled." +msgstr "Gunakan ini untuk menghapus string-string dari database, misalnya setelah suatu plugin baru di-uninstall." + +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Tambah yang baru" + +#: frontend/frontend-filters-search.php:80 +msgid "Search" +msgstr "" + +#: include/model.php:755 +msgid "Uncategorized" +msgstr "" + +#: include/plugins-compat.php:89 +msgid "Import posts, pages, comments, custom fields, categories, and tags from a WordPress export file." +msgstr "" + +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Tampilkan nama-nama bahasa" + +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Tampilkan bendera" + +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Paksa tautan ke halaman depan" + +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Sembunyikan bahasa saat ini" + +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "Sembunyikan bahasa yang tak memiliki terjemahan" + +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Tampilkan sebagai dropdown" + +#. translators: Calendar caption: 1: month name, 2: 4-digit year +#: include/widget-calendar.php:124 +msgctxt "calendar caption" +msgid "%1$s %2$s" +msgstr "" + +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Pengalih Bahasa" + +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Tampilkan sebuah Pengalih Bahasa" + +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Judul:" + +#: include/widget-recent-comments.php:46 +msgid "Recent Comments" +msgstr "" + +#. translators: comments widget: 1: comment author, 2: post link +#: include/widget-recent-comments.php:84 +msgctxt "widgets" +msgid "%1$s on %2$s" +msgstr "" + +#: include/widget-recent-posts.php:46 +msgid "Recent Posts" +msgstr "" + +#: install/install.php:24 +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "Anda menggunakan WordPress %s. Polylang memerlukan setidaknya WordPress %s." + +#: install/upgrade.php:76 +msgid "Polylang has been deactivated because you upgraded from a too old version." +msgstr "Polylang telah dinonaktifkan karena Anda meningkatkannya dari versi yang sangat lama." + +#: install/upgrade.php:78 +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "Mohon tingkatkan dahulu ke %s sebelum meningkatkannya ke %s." + +#: lingotek/lingotek.php:26 +msgid "You’ve just upgraded to the latest version of Polylang! Would you like to automatically translate your website for free?" +msgstr "" + +#: lingotek/lingotek.php:30 +msgid "Close" +msgstr "Tutup" + +#: lingotek/lingotek.php:33 +msgid "Learn more" +msgstr "" + +#: lingotek/lingotek.php:39 +msgid "Click on Activate Lingotek to start translating." +msgstr "" + +#: lingotek/lingotek.php:42 +msgid "Activate Lingotek" +msgstr "" + +#: lingotek/lingotek.php:54 +msgid "Congratulations!" +msgstr "" \ No newline at end of file diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-ka_GE.mo b/pole-sbv-content/plugins/polylang/languages/polylang-ka_GE.mo new file mode 100644 index 0000000000000000000000000000000000000000..ea3fdcb87986a7a9bf1e6e84ef89b45e4e6aa6b2 GIT binary patch literal 16888 zcmchddyHIHea80|;^N&fML-@yy)G z+&f+`&{mB>MIvewAh>}zU6)rI3Y33H)lv!msnmxeDk`-SYRk6$qdZzwR4r73($Dw& z&V9^y>@*ZH^1a`C&-tC-`}aF%X8rdsIrkCAr{H=e*O$+6?j(56bGh;P+WF4C5d14} z9{gs&i?=w};{8rgr0)Y?1U?AAG z4}3fL3UCS3y7z(?gC7L@;AcRse;JEKcQJ@7+%E7r;I-gRa6fn{cnrJ7fVjk61d9Lb!}}HB9PihGH-ba(9`H}VAAuL)Y|XzMCAI!WP<-zMuLAD@5$PTQ z757hquLu7yy#E8pKldNpWbboc;vE0n3%TJ^cL^x{XF;vs1uA|AK~!+}g3`YaO3pec zzkC3^4g7Pk1-_ES5qM+3BcSr@L2w3q61)!l=YU%g@+#h!!4!NSxDWg{@JaCUU$A`o z4mjlfc`q|P-vdhT2SBFWZ-TP#Q=sDeBp8E#14{p^NzO&^ASnMm4r=`q-~fCQ)cS2N zH~r>8>G7WM{uS`ocz+g2r??#t_%N70+qvHcw=#Y{$^S+0GVlp-6Fdq&h>_dCb4d1G z;0!4KOW*_GXTVcrUkQ@G%CzY~Oo`y41ez6Rb6eiOV8yqY9^3;0R!ec(TVlDGN>i^CT| z)z|mHE5ILu%A+})DShq*bMP353huk0=w7s)7=Zgh$sK`&(7ivrKMsbs66>-z^6dze;&lR-pzuVKLkDs zeh~aqaO>sHb-?d}w}Q7}>;iZSTnE1gO0O z7P)zq`MF0@?B)F=_%h}EUT5}yV2|NfK*UrZ+K!K}e05G3 zO#{Z@+qu-o^ublWhw522l%IF<@CvT|T(b2Zt|MHeg#XAieH4G(TZ?m1}@6b zb-DDR6=29xHY%cpth?Tg`zvlwyGW15MH1<46t5(C6!$w(F^v0pH!jkwpGV8tFlvwT zBI`wiEH9#BeURj{&va=KAIth#FMTFUdr2pa-JVV->L+U@R;pG54Q(}+N4-(ENV};l z>PGE&5HImotVcx_-IWbH3&SMOq3oso2D5Irddc11)hx@CD6WRekzzH8isV=kb<$yi z^RmA8kA_PZy1m^b?niksM1#EP%cv6<@lu>8Zg1Ant=CKX1(b0yLZaF&8 zIbS={?Ms$pOsysFOS(ysFkYZrv^31t@?_YUPV+%GUMI%YSd_1&MSC?Fx_#AT9(9J< zpp&ij>%rx2ypq?irL9pv?j^a~-$@I9tN6P8{Q}W(bTsa!o!aeDH*3e;#O*&8_Xgc$ zzIuqZ=264;pCW8C$_Y&38;q@5(XUp6)eL9nY)Dn1CMM;oWqdwZzh3VOnUg+B%4To|`N$(DtAJ(#dhajwGYu+tw zvQiH4YX-yYK9Xc6x{tKO-PlRpQ_Q4)`m#0fz+?Yi%1=vjRS$9*C45G_QahG9F zgnJ4~Y>;4=e3HAHgZ9-!bg0a=a!Rb_(CWRdx)^(lT4KGN4C5uju(L&i`!qOs=+@}U z%dc+DMbS2Os3as*l=QdP96G)rni8sfucV9ylx0&3RJSC(#rL1LDU!Di@uXWIyd+cg zI3Pv(g$)-82@NB+K-rfyy+A9VkBkN@!Sdjjy@6a_7%jq_D2i zE$f$&LR*L*w4HC-7>n2Y?N$0_`fi^bZm~KexW%zO z)-9^bt+FL+Uxm2c=(lY5xORzF6`CV{APi%A&Uy}YkCtowP7<@{j7Ll@i1pP@q;RUO z`;M-i#J{8+&$09oyjZ2J$ums*w(Y6fC|;6k3U#UWsGr_HO2!E&Dy6)y?6BdTnSi{Y zKWYQ$WIf40GpURT270U6mCjCV$DC}qZst#I^a@Vph^FR}mXDT9tN$wl@0Qh=?2T;` z9b>;n{kF9yC!HC#a9^W!kE+#JPT9LetkTg@rkl}#JF`*f$O^DBgqG2Z`y{(h zx78Yz>P+&~v4as=MZNo@gKs+HyH4n6+l@&+p4d?~u%k3$te+`NN)>HeoYZ{NC1plb z|29&r%w&K54lSjvjYRFHDiYr)d^XxXv|ZD^q=Q z4?xkiZZR!%K3uF%Jmhubh5aDx+d5iVcch8RW$q5Y-)dK_v`|9iufO!FotN*}?e4&p z{(Ok&p|#3UpBOQ8-%i|J7A}1ssh;IESAENg>?Gs$ zA7ekBy-EM@9f#P6-_EgOEhQxV1Yh8svP`sgw#O+~Wu@bm_g<;&Y(rp(q!TOUOYFaJ z!pffv`(!0svmMJOm_&OZ*TE*|)PHToK*#izMu~Iyh^oWKFu8xk7cq885{{!xF;3{2 z=-A8NG5&q7+Ne|3V2|}VRO84;0jP8+)mhKLdnE4WGT%-b%Og5R;|w24bZefE27_$q zH~LXen%;BXdHZOK>~AK6o6gS0*Cy2-L%F-%uh z3+L}*pkcRQhxpdPPU}uP_08A5IXX9cB@G~++j4s%rCPV-D`}_o*3nAdTFmC7Eep3U zw)U!*QZuc6v{XOVx;;@=Rzo{?%+l1Cvf_!G`Bxi76qkea0)oJCc;n^^84*1-O;f zzvt(rI4kSYbPM%?NilxXy66>rWu}nrxr!}R6CKWFea^_XAhs5lvwgnqRTJ4O$_vy(^ zQ^>89(bb%xqH7iwQV|d$+&HO*-^5E|^E=rJMmf>!^gA1#RDEHi zt+euFl%WkvC6j@2Re%VBX=Yl=4cLVWkX8)vaqtRM$O|u)&2TWkB1x*F(kJ~B%1{JI zHuabjcbI+x64L=853*0O|WNrek(VqBCU3|YiYb@YY;KIT4KEfu|q=8IFaZalN) z0C>S6q=V^fIc)Aei5yIX0jj_riV2p$tbjtkf+H^wmI>zHA+)&27)ZWQb{U0+ zcX-RW(E2}7lx)o(tbw@&XoiLLhgXYRV}u z11&SenH9<)hK(^~&1_^Yq_UASZSCgN3`INk2Ny4*j6=!JEHzce@{RyEPblzJa8aM% zh9~|ELu*jhH-8DPkMPrbH|)?vjZILxWm8YDYUEu-TJQ^N&Pj=9mTMFw3hC>wD++N*g6ybALsL z%Dtt=Ke10ty8P>N1;)l|np=Vp6oZUp!auCy*~|`^50#~TXaL5TQ7O$@vk{5SDq$M0 zZFsgyE$Gn99LcCLRK@(Hi%2>&hIOsTbOELwGMSdTG=3b8x_Y;qBhVB9c5%maUPZ_} zYpFNnptvfH-iA2UBa_gZE6m3yv{jP&7=(4|3`$~v0WH#)-$?^O<1bt#J7$oDQV=8h zq_z?skpe4|_!vV>QRe1Ly;G`?C>s7D4B5O!A*mcM+f1z~7P#`%YP`6^H+TvrxW@9T zW)e(m6OA(p&YAqnUpRJ{TdHp{p;NKFpdEbV zDHf0Y$&FBK^Pacxp%0GLkq{-!AX5=bEZ5~@exLLjD=lsRg&HH6!!C{5Y9zyL!}Dh@ zeA916T+ZLo76T+|kh-2op451l<)*)aC_kNLam3 z@`avBJXS3icZL)to|rL~%p-*5oY|SKeIZlu9W#&C{E>-d)`T!K3mduy>rmZ6VxFxFIXB$E}bk|vnRN>r0Wj6D{>)e;Z~)hwB2Jt~^N zkPeYev*5$0?GF$mq9TBvXO@SI<7JY)MN)csQLG^T@{aebHbz(0l-VomB7ba!FXV`1 zslqrxXj+_MG`I-qCJRQD;-&wrnVX9tG;vG@#->N`=;zAyW0SS-OFfZ;eSs+Qsw=sz zSO_`VSY0V3a8A=vTxFlaK#Og2|x>QS)@4Vx7|EY;u~`p)1@i z15k!#(sKG{hMEetEw?&D6NQ$DHv38-G2V3EV4u+ z{oH$}3Wq5e+KAV`+^0^fdITsdDg{Nz^01Rx7BokghA%o`J}Mv>pPKDF2ayn&=NOVl zY z{?JNcc!nw<)-oEt6E6KJs9?UIGy==VlIjl{EfzHhr7C+YyDZKqOUzY4ItN)XTRX=| zAFq$hxFRTTXJKB*u#h6GRAvASE17v}{%A@R@Cb7ozDLcVcOwOe8n26V&;*6_>1Yv-8^e4wAJq> zD5~UVh_#^+pN)0X9cVJJ%tU>ajNHH^Wcb;> z$ubj~uWa}97HY*nzY5pq3^<$jVQ$qVgC_zKa!*0WRGbV?WHg4Y^V%4TA=&UM1riow z49Zw^IG5T)NKdADx49tRY-JP^KN8XxsVsnT_)Y~4?&6=Bua#r&^m>j>BZ5UJ7zBF? zT!V6m5}Qd?rmFqWwXXE5#mm(4Ke*cfN+N~Dh(oAZtL}ETX=Jm=R&YnJDiJGvIezQE zEqUH}nULdE`UH22L4BqgbLo^;f(d7l_)z(Op1k%oB{m@!aaATGM*&f8mA?sCBhdlE z46;QS(Okp=mSSS4K(c4Ub0!ZFQM=6)wV&3iN;TK0YVg8XLuEirOJD2f0kYO8QHO~- z(GGTZBh7P!37Q0tdS8sS3+I&|(}Wd-j(BW%A;e16QH$fnJVxx`Yr0y2C{>#o39D1; zeMYn4Cv6qB!V%tetkDa4h)$?GP5K9YDreZr6ZMIMpV=D!H?Hh0mQt|Ac|=}0Y3XJu zWr{S;E#iXYF-uJ&`|732fQQwW6{78`2!c*t!ZG%u^j1+buIN?{HBW?BCaOrI4YZcC z;shIs;He4@Buaz&IAdYh@Ra5gWvea5Mp`EHOdId9!vxca!#BYwUf>23-t|lAnT?$C zfBk&42qbb4A|KU1NSlF{g4|IMAtyq=;}P}B-=w{p&=^I6A7rX24;ie{*J5W}<=JW) Tk?3yII>1hyn6j?P_7V5Ll^X?& literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-ka_GE.po b/pole-sbv-content/plugins/polylang/languages/polylang-ka_GE.po new file mode 100644 index 00000000..20125a82 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/languages/polylang-ka_GE.po @@ -0,0 +1,658 @@ +msgid "" +msgstr "" +"Project-Id-Version: Polylang v1.6beta1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2015-02-15 11:50+0100\n" +"Last-Translator: \n" +"Language-Team: Rusudan Tsiskreli \n" +"Language: ka_GE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: ../\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-SearchPath-0: .\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang -ს მოყვება ფართო %sdocumentation%s (მხოლოდ ინგლისურად). ეს შეიცავს " +"ინფორმაციას, თუ როგორ უნდა გამართოთ მრავალენოვანი საიტი და გამოიყენოთ იგი " +"ყოველდღიურად, ხდკ და ასევე დოკუმენტაცია პროგრამისტებისთვის, თემისა და სხვა " +"პლაგინების მოსარგებად." + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"სასარგებლო ინფორმაციის ნახვა ასევე შეგიძლიათ %ssupport forum%s. თუმცა ჯერ " +"დაგუგლეთ, მერე დაპოსტეთ." + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "პოლილანგი უნასია და იგივე ლიცენზიითაა რაც WordPress %sGPL%s." + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "თუ გაინტერესებთ თუ როგორ დაეხმაროთ პროექტს, %sread this%s." + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"თუ მოგწონთ პლაგინი და ის გეხმარებათ ბიზნესში, ავტორი მადლობელი იქნება " +"შემოწირულობისთვის." + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "ენები" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "ენის სახელს ასახავს" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "დროშებს ასახავს" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "ბმულით სათაო გვერდზე გადასვლა" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "მიმდინარე ენის დამალვა" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "ჩამოსაშლელად ასახავს" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "შიგთავსის ენის მიხედვით ფილტრაცია" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "ყველა ენის ჩვენება" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "ახალი თარგმანის დამატება" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "ენა" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "თარგმანები" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "ენას აყენებს" + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "ვიდჯეტი აისახება:" + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "ყველა ენა" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "ადმინისტრატორის ენა" + +# @ polylang +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "WordPress ნაგულისხმევი" + +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "პარამეტრები" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "ენის ფაილების განახლება…" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Polylang-ის შესახებ" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "სტრიქონების თარგმნა" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "სტრიქონების თარგმნა" + +# @ polylang +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "შეიყვანეთ მართებული WordPress locale" + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "ენის კოდი უნიკალური უნდა იყოს" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "ენას სახელი უნდა ჰქონდეს" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"ენა შეიქმნა, მაგრამ WordPress-ის ფაილები არ იყო ჩამოტვირთული. გთხოვთ ხელით " +"დააყენოთ." + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "ვიჯეტის სახელი" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "ტაქსონომიები" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "დამატებითი ველები" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "კომენტარების სტატუსი" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "პინგის სტატუსი" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "მიმაგრებული პოსტი" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "გამოქვეყნების თარიღი" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "პოსტის ფორმატი" + +# @ polylang +#: admin/settings.php:326 +msgid "Page parent" +msgstr "გვერდის მშობელი" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "გვერდის თარგი" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "გვერდის მიმდევრობა" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "მთავარი გამოსახულება" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "ენის რედაქტირება" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "ახალი ენის დამატება" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "ენის არჩევა" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "ენის არჩევა შეგიძლიათ სიაში, ან პირდაპირ დაამატეთ იგი ქვემოთ." + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "სრული სახელი" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "სახელი, თუ როგორ გამოჩნდება იგი ვებ გვერდზე (მაგ. ქართული)." + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "ლოკალური" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"WordPress ლოკალური ენისთვის (მაგალითად: ka_GE). თქვენ უნდა დააყენოთ .mo ამ " +"ენისთვის." + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "ენის კოდი" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "ტექსტის მიმართულება" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "მარცხნიდან მარჯვნის" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "მარჯვნიდან მარცხნივ" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "ენისთვის აირჩიეთ ტექსტის მიმართულება" + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "თანმიმდევრობა" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "ენის მდებარეობა ენების გადამრთველში" + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "ენების გადამრთველი" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "თარგმანების ძებნა" + +# @ polylang +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "სტრიქონების თარგმნის ბაზის წაშლა" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "ნაგულისხმევი ენა" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"ჩვენ გვაქვს გვერდები, პოსტები, კატეგორიები მინიჭებული ენის გარეშე. გსურთ " +"მათთვის ყველასთვის ნაგულისხმევი ენის მინიჭება?" + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "ბრაუზერის ენის აღმოჩენა" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "სათაო გვერდზე ბრაუზერის პარამეტრებში მითითებული ენის დაყენება" + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "URL მოდიფიკაცია" + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "ენის URL დამალვა ძირითადი ენისთვის" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "მედია" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "მედიისთვის ენების და თარგმანების აქტივაცია" + +# @ polylang +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "სინქრონიზაცია" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "პოსტების დამატებითი ტიპები" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "პოსტების დამატებითი ტიპებისთვის ენების და თარგმანების აქტივაცია" + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "დამატებითი ტაქსონომიები" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "დამატებითი ტაქსონომიებისთვის ენების და თარგმანების აქტივაცია" + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "რედაქტირება" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "წაშლა" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "კოდი" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "დროშა" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "პოსტები" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "სახელი" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "სტრიქონი" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "ახლის დამატება" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "ენების გადამრთველი" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "ენების გადამრთველის ჩვენება" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "სათაური:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "WordPress-სთვის მრავალენოვანი შესაძლებლობის დამატება" + +# @ polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "თქვენ იყენებთ WordPress %s. Polylang მოითხოვს მინიმუმ WordPress %s." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "Polylang გამოირთო, რადგან თქვენ ძალიან ძველი ვერსია გაახლეთ" + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "გთხოვთ ჯერ გაახლეთ %s -მდე და მერე %s-მდე." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "ჯგუფი" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "ყველა ჯგუფის ნახვა" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "თქვენ აპირებთ ენის სამუდამოდ წაშლას. დარწმუნებული ხართ?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"ეს გამოიყენეთ ბაზიდან გამოუყენებელი სტრიქონების წასაშლელად, მაგალითად " +"პლაგინის წაშლის შემდეგ" + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"სინქრონიზაციის პარამეტრი საშუალებას ეძლევა ერთი პარამეტრი გამოიყენოთ ყველა " +"თარგმნილ ვარიანტში." + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "ენის კოდი არასწორ სიმბოლოებს შეიცავს" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "ენა შიგთავსიდანაა დაყენებული" + +# @ polylang +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "პოსტების, გვერდების, კატეგორიების და ჭდეების მისამართები არ შეცვლილა." + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "ენა დაყენებულია დირექტორიის სახელიდან pretty permalinks-ში" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "მაგალითი:" + +# @ polylang +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "ენა დაყენებულია ქვედომეინის სახელიდან pretty permalinks-ში" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "ენა სხვადასხვა დომეინებიდან არის დაყენებული" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "Pretty permalink-ებიდან /language/ წაშლა" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "Pretty permalink-ში /language/ -ის ჩვენება" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "" +"თავფურცელის მისამართი შეიცავს ენის კოდს გვერდის სახელის ან აიდის ნაცვლად" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "მაგალითი: %s %s-ს ნაცვლად" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "ენის დამატება შეუძლებელია." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "ენა დამატებულია." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "ენა წაშლილია." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "ენა განახლებულია." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "თარგმანები განახლებულია." + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "ენის კოდი - სასურველია 2 ასო ISO 639-1 (მაგალითად: ka)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "არჩეული სტატიკური თავფურცელი ყველა ენაზე უნდა ითარგმნოს" + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "ვიჯეტის ტექსტი" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "რეკომენდირებული პლაგინები" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "ენა დაყენებულია URL-ს კოდიდან" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "დამალე ენები რომლებზეც არაა თარგმანები" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-lt_LT.mo b/pole-sbv-content/plugins/polylang/languages/polylang-lt_LT.mo new file mode 100644 index 0000000000000000000000000000000000000000..39138fd5e3e5459a46f2bd6e1222d26fa25985e2 GIT binary patch literal 11498 zcmb7}Ym6mFd4}6ygS{aboWy`3P>!=^m+Tzx*w~m^ub1^+?7etBcxTr*F)THwd(PCH zKHbNCnej0og#ZyE$9 z%JWur_c^m(h9Z@t#{Vb@a9|vCtej5BK@blnq@GGGDe+&Fc@ZZ7LgZ~Y_1KjZwQS@`* z?ckN*`#`mSKdAO8sP>OH_-Rnzc@lgTcoBR9_$Q#||F_^zgU^8)CwfhIe=Vr--wtZr zJ>Xlx1@LO{Ven1hGN^tZ2Hy<+8km7!0M-9`I;-8AK|~SV4qgQw0B;44fH#4Ufj5Ak z0}p^tgKqv|y20o(i-UVuXN5E^rhd`P{1MnbNH}9Wr@UI*E7O3z42PirG5Y#;W z7t}njWH8mQ0TFd{Er>{>8$gYJb5nmOI8XgO;Bl}39|6Axz5w2Uu=W0pOj7-igBtfN zcqjM>$S0#GK!OIi=(YSH(&$D|^Y4M`e>*7s9Rry{ z^Z`)w&p>@=0!l8Q1m6q(4LAqBh0X>%-rx`vzdjA_0iOon1AeE$oqXhHsjq+z{5W_R z{66?Jc-zkeK0OB()UUoi%=1H_=KU)mucF@swZ1EDMwF&n%7gH0sj&lfZqls-xDZX_PGLTygviQ>u14p;J2Il zA&lT2>JNij*XO`f;P=3ff_JhA@$*j`{04}6x=XUAsn^vjo2RZp3reT*W4gps$wrsf z++M%LjdXZ~B3pihGNdp?e@Sk-G=FjCMpd|0C=d9%@Pi3>8`OFd$~ZiZ3|La6Kk524 z6xq@>6kYuQ-j7M9sKRqVdQ)zoYi|H=8~eGJ456r(@d+@e=#p-vr!$myQFLVi{O>FH zeKqBM&9l226iCiHD8Hx*m-wXXRg_054^oa%uA+$Ry6&Y&zq;h7bRD9I3r8sjDQ~4z z6kX6NddS~x{~1vgAKyz^q=?(?C419#E#-rh4^Zx)yp!@qimux!XZ>C9_g8YiOu2~? zQ^cwFQ%+LE&*K#NG5NY%DQlE>Q&uVWQRXQrMHiG~A;cGgz8-l`=ZC zn&)L=Z1<>rQmrPYN*=3B?1}{8<(Zd{9=9Tl4yB3BOj#Aopq!PZiEU+oBk zQIb`(v{lVFgN#>PlEz(aD)ILHRFKi(WW}=7>6Z^DX;LLTub7)zF7k~sDP~@~a-7-; zI_{pCa>G^q)uf0HcP~p57x_5OH?rx&mDCQ(X|-Le$?Pa8qa(4a{7*M-bR?_zv^DEC zb@5c}Ce8acO`;=@+0i&n7P=d=votO%tHj18U!fKqO%O|w#Kw&vW^~l0j98j}&d5k@ zc{2UjQJ2{?ofx-bCV6dAH$+RTt~BGc9-w6y%qv%!)g&F4YEziyx^x*t*kj^6Yp4!E zq)A&>t8}qNVg?1XU}QTUqi=_)#J%V!!ibLMMIUp4W}OiTB?%_Fx5(>p zbf1e8bLPR5-F#UnMm6#u_4J7^RiwHwc4w3*Y1L%RZfcl*Sm?!k`*l%BByIcXSdha; zp2a9(HQ(@J>BCA1!1oy!`5GkIW7eP@;%1%LJu=&gZ66!KyV5PEh%q-71DqvzFFKJV zV{=RUxm#F|K|B>EHcnWVWKu>ao7s0a=5))o_LYW~K)ZThcCoEy<}~z5QrKnGaO)fd z_cSjgaspanR9N1ajyLeI*>EtXGtwvJ8!0BRfvktD{XdTvV&C!GJ1xmA#V3!~bX6NKBkR_l9{4pNJQ{IkI)N102 z#)mY4aW%o;Y4vf zDK$uv<&_!bu_HFX<;8kg(nH=NZuDT%_klzT2>!0**(gW)FK42s6I=9GXT3@poldIY zRnpdec~U8qMW>|=9Bt=lcvQLm5VQ9yI_*Oq&t4SyF87SildQjr-*k_AazsmAju0(v zi?Pv?yxb}wS#g!d{TY8txJR_hxT?lEA_vs4ZJs?p!qi7gv_6tpV$ODr$pz8Bi$qeV z+`9MZiX^_`Vn1RlBgUeaLX#iRWg+az+Av;7b(z-fwCl`0S|{5ZU{s>Kx9le1y>tV3 zfqzs0i1U%Y|I$shm}Y@~)kLKq-8iH*X-3|L*`^EUOmw z+7Lvy4Znf?_7#(pcn=}m+vwCsO{cNqh+S$d(@`pu<~ZQEXBv+z1&blLjFHXA6VplH zh~lzsPN823+DYp~bX0ruRtPq(;10(6rPPC4(-sI)f;E ze#obb;415k2oiT$ySKbHUEkwFM3Z3{yAm?nCb#V3GvEfijmLLm+)0&C;_C{p6GApH9UV80hdov$wG#P0q@x}TLCqwzn zFoTtZ=8%?MGKe`yb0sz2BlXYb z9!$i=>7$bfbFQ^FT!1-cm9v@SY?erUN^@7X*4(~lfICZjWFdF&IN2l(b4!UGF>+g9 zFllw}wk(hPW2Yoy)G;v6$9{P3Ml1VwDRf!#b&!`)}K)q=?)7yRx10d-w03H#gsGbi4P) z{qytYfZ1zkPW|rvx9XK|w)d|2z2?Io4()iccQ*~^X?W}IeLLPax0s72bEnxy_LD;d zd8WBw>S~2~c5hE4lMPI`JPE}X%(-OWxpVu@JvM!R4-S27tJMY5rxxI8zpLQCaME=dZ-rUk8(>tPrW0!Qs5^a8YpsiWu%+RJ}$8g+f zw@^7^E@@5a$lHc6(AiOGHZK-->%!JkrgCHIy%%>UH@;l&&GYoG?6CCbJ!|>P_FaKJ zd;vDQc=J5d%WS>2`H4&Ge%6iP1^5ccPA>>ayAFLoU%li}&f=3H$7N<%Ovcsb#pu}9 z1!DVzg(WVnH-FtB)G%po;yPz{#LcpOeDkx>i9EI?zkbJ5=<(K<$a-z}8Lu8koT!IP zzWsRfbeqn$y_FbdbW%pA>XEG`Rle4+L9o`rpq>k4x2Fu2n ztl7GNuiU)I+>$YOwpg~l(HfPpQc`PdRQcmjFZo5qRbcp>fWmfLN2;A!~EB6A+p_D)Z@+bEg|e0 zLrB*eDJiD9fY(jP!<49K>u_qe!PZlI=n*8ejpNg1F$==oWG$caGCGdHGM0CLO)t&SrPPkgwvb zg5A5)fvnD1Aa~ITE!h8xa!IjPX9JEMu|&OShqj!2`LWF~nCVP~bE-j71RltN#n9Bm z&}xkl3+s)ByXmnNLqO17L^ zS(u75Zs^bvTLW~rb%A%`jWYi5YUa>rxn3u^+`1q+SC&qk#LkSC!v@|;6W*JXCuLAh z92fUy2AUK~mPV`|Z5bj`=W3{yHQoRd5Lv>R7Sy$kUn*vT!5kC6^jr%A#sTDsVEe(e2*oA=DiVae9g%Xx6iS%*#k^&E@g@i;g1R(Dd%X(O224+a0X*vPr zI$Jkv0~V-8SorvPPCv)cmVanjhsQl zF5M0hrcSqH3@B;qnaPMd8&u!=J`Fsg8)$JWyuP1S0Zcxa2jfu$gnn zYsQX)JPaT#5rG&v5 zVg-k4x6mH&a~w9qY`ls1Wr-%kivL2ku397|XnDWX$dzvpIx|JtkaM9WlA7Vx1&-g% zE@;-+@N8C#%6Wm&DY#MT{11_3Jz1-FBd-E4*b%(ICW0FaqisEc zVGN*6tY6Zp`MfT;wIHyB9FWtFCY25*WP6-(wAqff+iJAtf6-}RF5K~n`Q|5rnAdL+7G>gs+N;atAz2Qb3NaFEy<8PIW-)NydKy z7B)7fDBk6)GZ_jQLbof?G8FN=FPPn;@Pv(q_Hh_YqezJ3w_~=PdBTKSaeBkrW(i0$G@XcVL^J2xj70UhzLFm$SphW3(GGpQTuzX_5JmmO~_*Frt`dKU8ox z*dOsz2N8UZ3<=TgEXT|b`zPdcwn%cN`7iMqTwKN($;hz{^%Naj<(58(V=+oIeJ&L% iGl0A@8L}9OUGpZ{f^9zX#k5s!<)1f|@Wwa#Z1jKqj0{-- literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-lt_LT.po b/pole-sbv-content/plugins/polylang/languages/polylang-lt_LT.po new file mode 100644 index 00000000..af23a5c6 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/languages/polylang-lt_LT.po @@ -0,0 +1,589 @@ +msgid "" +msgstr "" +"Project-Id-Version: polylang\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Naglis Jonaitis \n" +"Language-Team: \n" +"Language: lt_LT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: _e;__;_x\n" +"X-Poedit-Basepath: .\n" +"X-Generator: Poedit 1.7.4\n" +"X-Poedit-SearchPath-0: ..\n" +"X-Poedit-SearchPath-1: ../include\n" + +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang pateikiams su išsamia %sdokumentacija%s (tik anglų kalba). Joje " +"rasite informaciją kaip sukurti kelių kalbų svetainę bei naudotis ją " +"kasdien, D.U.K. bei dokumentaciją programuotojams, aprašančią kaip " +"pritaikyti savo įskiepius bei temas." + +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Naudingos informacijos taip pat galite rasti %spalaikymo forume%s. Tiesa, " +"nepamirškite paieškoti prieš sukurdami naują temą." + +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang yra nemokamas ir leidžiamas su ta pačia licencija kaip ir WordPress " +"- %sGPL%s." + +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "Jei norite prisidėti prie šio projekto, %sskaitykite čia%s." + +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"Galiausiai, jei Jums patinka šis įskiepis arba jei jis padeda Jūsų verslui, " +"autorius labai vertintų Jūsų paramą." + +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Kalbos" + +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Rodyti kalbų pavadinimus" + +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Rodyti vėliavėles" + +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Priverstinai nukreipti į pagrindinį puslapį" + +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Nerodyti dabartinės kalbos" + +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Rodyti kaip išskleidžiamą pasirinkimą" + +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "Atrenka turinį pagal kalbą" + +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Rodyti visas kalbas" + +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Pridėti naują vertimą" + +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Kalba" + +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Vertimai" + +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "Nustatyti kalbą" + +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Valdiklį rodyti:" + +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Visoms kalboms" + +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Administravimo skydelio kalba" + +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "WordPress numatytasis" + +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Nustatymai" + +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Atnaujinami kalbų failai…" + +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Apie Polylang" + +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "Eilučių vertimas" + +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "Eilučių vertimas" + +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "Įveskite taisyklingą WordPress lokalę" + +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "Kalbos kodas privalo būti unikalus" + +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "Kalba privalo turėti vardą" + +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"Kalba buvo pridėta, tačiau jos WordPress kalbos failas nebuvo parsiųstas. " +"Prašome tai padaryti rankiniu būdu." + +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Valdiklio pavadinimas" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Taksonomijos" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Pasirinktiniai laukai" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Komentarų būsena" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Ryšio patikrinimo būsena" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Nuolat pirmame puslapyje rodomi įrašai" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "Paskelbimo data" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "Įrašo formatas" + +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Tėvinis puslapis" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "Puslapio šablonas" + +#: admin/settings.php:328 +msgid "Page order" +msgstr "Puslapio tvarka" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Spec. paveikslėlis" + +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Redaguoti kalbą" + +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Pridėti naują kalbą" + +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Pasirinkite kalbą" + +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "" +"Galite pasirinkti kalbą iš sąrašo arba tiesiogiai redaguoti ją apačioje." + +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Pilnas vardas" + +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "Vardas, kuris bus rodomas Jūsų svetainėje (pavyzdžiui: English)." + +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Lokalė" + +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"Kalbos WordPress lokalė (pavyzdžiui: lt_LT). Jums reikės įsidiegti šios " +"kalbos .mo failą." + +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Kalbos kodas" + +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Teksto kryptis" + +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "iš kairės į dešinę" + +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "iš dešinės į kairę" + +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Pasirinkite kalbos teksto kryptį" + +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Tvarka" + +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Kalbos pozicija kalbos perjungiklyje" + +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Kalbų perjungimas" + +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Ieškoti vertimuose" + +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Išvalyti eilučių vertimų duomenų bazę" + +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Numatytoji kalba" + +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Yra įrašų, puslapių, kategorijų arba žymų, kuriems nenustatyta kalba. Ar " +"norite visiems jiems priskirti numatytąją kalbą?" + +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Nustatyti naršyklės kalbą" + +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "" +"Kai aplankomas pagrindinis puslapis, nustatyti kalbą pagal naršyklės " +"pageidavimą" + +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "URL pakeitimai" + +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "Numatytajai kalbai nerodyti kalbos informacijos URL" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Failai" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Įgalinti kalbas ir vertimus failams" + +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Sinchronizavimas" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Pasirinktiniai įrašų tipai" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Įgalinti kalbas bei vertimus pasirinktiniams įrašų tipams." + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Pasirinktinės taksonomijos" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Įgalinti kalbas ir vertimus pasirinktinėms taksonomijoms." + +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Redaguoti" + +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Ištrinti" + +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Kodas" + +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Vėliava" + +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Įrašai" + +#: admin/table-string.php:110 +msgid "Name" +msgstr "Vardas" + +#: admin/table-string.php:111 +msgid "String" +msgstr "Eilutė" + +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Pridėti naują" + +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Kalbų perjungimas" + +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Leidžia pasirinkti puslapio kalbą" + +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Pavadinimas:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "Prideda daugiakalbystės funkciją WordPress sistemai" + +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "" +"Jūs naudojatės WordPress %s. Polylang reikalauja mažiausiai WordPress %s." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "Polylang buvo išjungtas, nes atsinaujinote iš per daug senos versijos." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "Prašome atsinaujinti iki %s, prieš atnaujinant iki %s." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "Grupė" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Peržiūrėti visas grupes" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "Ketinate visam laikui ištrinti šią kalbą. Ar tikrai to norite?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"Naudokite nenaudojamų eilučių pašalinimui iš duomenų bazės, pavyzdžiui po " +"įskiepio ištrynimo." + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"Sinchronizacijos parinktys leidžia išlaikyti pastovias vienodas turinio " +"reikšmes (ar vertimus taksonomijų ar tėvinių puslapių atveju) tarp puslapio " +"ar įrašo vertimų." + +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "Kalbos kode yra neleistinų simbolių" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "Kalba nustatoma pagal turinį" + +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "Įrašų, puslapių, kategorijų ir žymų adresai nekeičiami." + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "Kalba nustatoma iš aplanko pavadinimo pastoviosiose nuorodose" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "Pavyzdys:" + +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "Kalba nustatoma iš subdomeno vardo pastoviosiose nuorodose" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "Kalba nustatoma iš skirtingų domenų" + +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "Pašalinti /language/ iš pastoviųjų nuorodų" + +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "Palikti /language/ pastoviosiose nuorodose" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "" +"Pradžios puslapio adrese yra kalbos kodas vietoje puslapio pavadinimo ar id" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "Pavyzdys: %s vietoje %s" + +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "Neįmanoma pridėti kalbos." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "Kalba pridėta." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "Kalba ištrinta." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "Kalba atnaujinta." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "Vertimai atnaujinti." + +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "" +"Kalbos kodas - geriausia naudoti dviejų raidžių ISO 639-1 kodą (pvz.: lt)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "" +"Pasirinktas statinis puslapis privalo būti išverstas į visas pasirinktas " +"kalbas." + +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "Valdiklio tekstas" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "Rekomenduojami įskiepiai" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "Kalba nustatoma iš URL esančio kalbos kodo" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "Nerodyti kalbų, neturinčių vertimų" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-lv.mo b/pole-sbv-content/plugins/polylang/languages/polylang-lv.mo new file mode 100644 index 0000000000000000000000000000000000000000..43e4249a7d493a64f36ff2bc4b31eb3241bee953 GIT binary patch literal 10872 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 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-lv.po b/pole-sbv-content/plugins/polylang/languages/polylang-lv.po new file mode 100644 index 00000000..f11031c6 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/languages/polylang-lv.po @@ -0,0 +1,668 @@ +msgid "" +msgstr "" +"Project-Id-Version: Polylang 1.5.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2015-02-14 09:22+0100\n" +"Last-Translator: Andis Grosšteins \n" +"Language-Team: \n" +"Language: lv_LV\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: ../\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-SearchPath-0: .\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang tiek piedāvāts ar plašu %sdokumentāciju%s (tikai angliski). Tā " +"satur informāciju par to kā uzstādīt vietni vairākās valodās un kā to lietot " +"ikdienā, BUJ, kā arī dokumentāciju programmētājiem par spraudņu un kažociņu " +"pielāgošanu." + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Noderīgu informāciju varat atrast arī %satbalsata forumā%s. Ieteicams veikt " +"meklēšanu pirms atvērt jaunu foruma tematu." + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang ir bezmaksas un tiek piedāvāts ar to pašu licenci kā WordPress, " +"%sGPL%s." + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "Ja jūs prātojat kā varētu palīdzēt šim projektam, %sizlasiet šo%s." + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"Visbeidzot, ja jums patīk šis spraudnis vai ari tas palīdz jūsu biznesā, " +"ziedojumi autoram tiks augsti vērtēti." + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Valodas" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Rāda valodu nosaukumus" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Rāda karogus" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Valodas saite ved uz sākumlapu" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Paslēpt aktīvo valodu" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Rāda kā nolaižamo izvēlni" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "Filtrēt saturu pēc valodas" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Rādīt visas valodas" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Pievienot jaunu tulkojumu" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Valoda" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Tulkojumi" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "Nosaka valodu" + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Logdaļa tiek rādīta:" + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Visas valodas" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Vadības valoda" + +# @ polylang +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "WordPress noklusējums" + +# @ default +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Uzstādījumi" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Atjaunina valodu failus…" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Par Polylang" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "Tekstu tulkojumi" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "Tekstu tulkošana" + +# @ polylang +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "Lūdzu ievadiet derīgu WordPress lokāles kodu." + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "Valodas kodam jābūt unikālam" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "Valodai ir nepieciešams nosaukums" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"Valoda tika izveidota, bet WordPress tulkojumu fails netika lejuplādēts. " +"Lūdzu uzstādiet to manuāli." + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Logdaļas virsraksts" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Taksonomijas" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Lietotāja lauki" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Komentāru statuss" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Atpingu statuss" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Izceltie raksti" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "Publicēšanas Datums" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "Raksta formāts" + +# @ default +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Vecāka lapa" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "Lapas veidne" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "Kārtas numurs" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Satura izvēlētais attēls" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Rediģēt valodu" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Pievienot jaunu valodu" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Izvēlēties valodu" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "Jūs varat izvēlēties valodu no saraksta, vai ari rediģēt to zemāk." + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Pilns nosaukums" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "Nosaukums, kādu to attēlos lapā (piemēram: Latviešu)" + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Lokāle" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"WordPress valodas lokāle šai valodai (piemēram: en_US). Jums nāksies " +"uzstādīt .mo failu šai valodai." + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Valodas kods (piem.: lv)" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Lasīšanas virziens" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "no kreisās uz labo" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "no labās uz kreiso" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Izvēlieties lasīšanas virzienu šai valodai" + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Secība" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Valodas atrašanās vieta valodu izvēlnē" + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Valodu izvēlne" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Meklēt tulkoumos" + +# @ polylang +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Iztīrīt tulkojumu datubāzi" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Noklusētā valoda" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Ir atrasti raksti, lapas, tēmas, vai birkas bez uzstādītas valodas. Vai " +"vēlaties uzstādīt tām visām noklusēto valodu?" + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Noteikt pārlūka valodu" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "" +"Kad tiek apmeklēta sākumlapa, uzstāda valodu atkarībā no pārlūkprogrammas " +"uzstādījumiem" + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "Saišu modifikācijas" + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "Paslēpt noklusētās valodas informāciju hipersaitēs" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Datnes" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Iespējot valodas un tulkošanu datnēm" + +# @ polylang +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Sinhronizācija" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Pielāgotie rakstu tipi" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Iespējot valodas un tulkošanu pielāgotajiem rakstu tipiem." + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Pielāgotās taksonomijas" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Iespējot valodas un tulkošanu pielāgotajām taksonomijām." + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Rediģēt" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Dzēst" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Kods" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Karogs" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Raksti" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "Nosaukums" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "Teksts" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Pievienot jaunu" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Valodu Izvēlne" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Parāda valodu izvēlni" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Virsraksts:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "" + +# polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "" +"Jūs lietojat WordPress %s. Polylang nepieciešama vismaz WordPress %s versija." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "" +"Polylang tika atslēgts, jo jūs atajuninājāt to no pārāk vecas versijas." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "Lūdzu vispirms atjauniniet uz %s un tikai pēc tam uz %s." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "Grupa" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Skatīt visas grupas" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "Šī valoda tiks neatgriezeniski dzēsta. Vai esat pārliecināts?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"Šo iespēju var lietot lai izdzēstu neizmantotos tulkojums. Piemēram pēc " +"spraudņa noņemšanas." + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"Sinhronizācijas iespēja ļauj uzturēt vienādas lietotāja lauku vērtības, kā " +"arī taksonomija un lapu vecākus, starp rakstu un lapu tulkojumiem." + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "Ievadītais valodas kods satur neatļautus simbolus" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "Valoda tiek uzstādīt no satura" + +# @ polylang +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "Rakstu, lapu, kategoriju un birku saites netiek mainītas." + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "Valoda tiek uzstādīta no direktorijas nosaukuma glītajās saitēs" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "Piemērs:" + +# @ polylang +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "Valoda tiek uzstādīta no subdomēna nosaukuma" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "Valoda tiek uzstādīta dažādiem domēniem" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "Nerādīt /language/ glītajās saitēs" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "Rādīt /language/ glītajās saitēs" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "Sākumlapas adrese satur valodas kodu, nevis lapas nosaukumu vai id" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "Piemēram: %s, nevis %s" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "Neizdevās pievienot valodu." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "Valoda pievienota." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "Valoda izdzēsta." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "Valoda atjaunināta." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "Tulkojums atjaunināts." + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "Valodas kods - vēlams divu burtu ISO 639-1 (piemēram: lv)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "" + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "" + +#~ msgid "— No Change —" +#~ msgstr "— Bez izmaiņām —" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-my_MM.mo b/pole-sbv-content/plugins/polylang/languages/polylang-my_MM.mo new file mode 100644 index 0000000000000000000000000000000000000000..137120ae4be4b8389efbdf1758b5bb61fe401aef GIT binary patch literal 19630 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 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-my_MM.po b/pole-sbv-content/plugins/polylang/languages/polylang-my_MM.po new file mode 100644 index 00000000..9ae42032 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/languages/polylang-my_MM.po @@ -0,0 +1,661 @@ +msgid "" +msgstr "" +"Project-Id-Version: Polylang v1.3\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2015-02-14 09:22+0100\n" +"Last-Translator: Sithu Thwin \n" +"Language-Team: \n" +"Language: my_MM\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: ../\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-SearchPath-0: .\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"ပိုမိုပြည့်စုံသော %sလမ်းညွှန်ချက်စာတမ်း%s (အင်္ဂလိပ် ဘာသာြဖင့်သာလျှင်) အား Polylang မှ ပံ့ပိုးပေးထားသည်။ " +"ဤလမ်းညွှန်ချက်စာတမ်းတွင် ဘာသာစကားစုံ ဆိုဒ်တစ်ခုအား ပြင်ဆင်လွှင့်တင်ရန် နည်းလမ်းများနှင့် နေ့စဉ်သုံး လိုအပ်သော " +"အချက်အလက်များပါဝင်ပါသည်။ FAQ အပြင် ပရိုဂရမ် ရေးသားသူများအတွက် ၎င်းတို့၏ ပလပ်အင်များ " +"အခင်းအကျင်းများအား လိုအပ်သလို ပြုပြင်နိုင်သည့် နည်းလမ်းများလည်း ပါဝင်သည်။" + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"%sအကူအညီ ဖိုရမ်%s တွင်လည်း အသုံးဝင်သော အချက်အလက်များ ရှာဖွေနိုင်သည်။ သို့သော် ခေါင်းစဉ်အသစ်တစ်ခု ဖွင့်လှစ် " +"မမေမြန်းခင် အရင် ရှာဖွေကြည့်ရန် မမေ့ပါနှင့်။" + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "Polylang အား WordPress ၏ လိုင်စင်အတိုင်း %sGPL%s လိုင်စင်ဖြင့်သာ အခမဲ့ ဖြန့်ချိပါသည်။" + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "ပရောဂျက်အား မည်သို့ကူညီနိုင်မည်ကို သိလိုပါက %sဒါကိုဖတ်ပါ။%s " + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"ဒီပလပ်အင်ကို နှစ်သက်လျှင် သို့မဟုတ် သင့်လုပ်ငန်းအား အထောက်အကူဖြစ်လျှင် ရေးသူအား လှူဒါန်းမှုအား ကျေးဇူးအထူး " +"တင်ရှိမည်ဖြစ်သည်။" + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "ဘာသာစကားများ" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "ဘာသာစကားအမည်များ ဖော်ပြပါ" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "အလံများ ဖော်ပြပါ" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "လိပ်စာများအား ရှေ့စာမျက်နှာသို့ ညွှန်းပါ" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "ယခုအသုံးပြုထားသော ဘာသာစကားအား ဖျောက်ထားပါ" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "ဆွဲချဇယားအဖြစ်ပြပါ" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "အကြောင်းအရာများအား ဘာသာစကားဖြင့် စစ်ထုတ်ပါ" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "ဘာသာစကားအားလုံးပြပါ" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "ဘာသာစကားအသစ်ထည့်ရန်" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "ဘာသာစကား" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "ဘာသာပြန်များ" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "ဘာသာစကား သတ်မှတ်ရန်" + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "ဝစ်ဂျစ်ဖော်ပြမှု - " + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "ဘာသာစကားအားလုံး" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "ထိန်းချုပ်ခလုပ်ခုံ ဘာသာစကား" + +# @ polylang +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "WordPress မူလဘာသာစကား" + +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "သတ်မှတ်ချက်များ" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "ဘာသာစကားဖိုင်များ အသစ်ဖြည့်စွက်နေသည်…" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Polylang အကြောင်း" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "စာကြောင်းဘာသာပြန်များ" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "စာကြောင်းဘာသာပြန်" + +# @ polylang +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "သင့်လျှော်မှန်ကန်သော WordPress ဘာသာစကား သင်္ကေတကို ဖြည့်သွင်းပါ" + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "ဘာသာစကားကုတ်မှာ တစ်မျိုးစီ သီးသန့်ဖြစ်ရမည်" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "ဘာသာစကားတွင် အမည်ရှိရမည်" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"ဘာသာစကားအား ဖန်တီးပြီးပါပြီ။ သို့သော် ဘာသာစကားဖိုင်များ ဆွဲချရယူမှု မပြီးမြောက်သေးပါ။ ကိုယ်တိုင် " +"ထည့်သွင်းပေးပါ။" + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "ဝစ်ဂျက်ခေါင်းစဉ်" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "ဝေါဟာရအုပ်စုများ" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "စိတ်ကြိုက်ဖြည့်ရန်" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "မှတ်ချက် အခြေအ" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "ချိတ်ဆက်မှု အခြေအ" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "ဦးစားပေးစာမူ" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "ထုတ်ဝေခဲ့သောနေ့စွဲ" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "စာမူပုံစံ" + +# @ polylang +#: admin/settings.php:326 +msgid "Page parent" +msgstr "စာမျက်နှာပင်" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "စာမျက်နှာ စံပုံစံ" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "စာမျက်နှာ အစီအစဉ်" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "သရုပ်ဖော် ရုပ်ပုံ" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "ဘာသာစကား ပြုပြင်ရန်" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "ဘာသာစကားအသစ်ထည့်ရန်" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "ဘာသာစကားရွေးရန်" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "စာရင်းအတွင်းရှိ ဘာသာစကားတစ်ခုအားရွေးပါ သို့မဟုတ် အောက်တွင် တိုက်ရိုက် ပြုပြင်ပါ။" + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "အမည်အပြည့်အစုံ" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "သင့်ဆိုဒ်တွင် ဖော်ပြမည့်အမည်။ (ဥပမာ။ ။ အင်္ဂလိပ်)။" + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "ေဒသန္တရဘာသာစကားအုပ်စု" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"WordPress ဘာသာစကားသင်္ကေတ ( ဥပမာ။ ။ my_MM ) ။ ဤဘာသာစကားအတွက် .mo ဖိုင်အား " +"ထည့်သွင်းပေးရန်လိုအပ်ပါသည်။" + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "ဘာသာစကားကုတ်" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "စာသားဦးတည်ရာ" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "ဘယ်မှ ညာ" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "ညာမှ ဘယ်" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "ဘာသာစကားအတွက် စာသားဦးတည်ရာကို ရွေးပါ" + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "အစီအစဉ်" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "ဘာသာစကားပြောင်းခလုပ်ရှိ နေရာ" + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "ဘာသာစကားပြောင်းခလုပ်" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "ဘာသာပြန်များရှာရန်" + +# @ polylang +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "ဘာသာပြန် ဒေတာဗေ့စ်အား ရှင်းပါ" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "မူလ ဘာသာစကား" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"ဘာသာစကားသတ်မှတ်မှု မရှိသေးသော စာမူများ၊ စာမျက်နှာများ၊ ကဏ္ဍများ သို့မဟုတ် စကားစုတွဲများ " +"ရှိနေပါသည်။ မူလဘာသာစကားဖြင့် သတ်မှတ်ပေးလိုပါသလား။" + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "ဘရောက်ဇာ ဘာသာစကားအား စစ်ဆေးရန်" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "" +"ပင်မစာမျက်နှာသို့ လာရောက်လည်ပတ်သောအခါ ဘရောက်ဇာသတ်မှတ်ချက်ကို မူတည်၍ ဘာသာစကားအား သတ်မှတ်ဖော်ပြပါ" + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "URL ပြုပြင်ခြင်း" + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "မူလဘာသာစကားအတွက် URL မှ ဘာသာစကား အချက်အလက်အား ဖျောက်ထားရန်" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "မီဒီယာ" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "မီဒီယာအတွက် ဘာသာစကားနှင့် ဘာသာပြန်များ ဖွင့်ထားရန်" + +# @ polylang +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "တိုက်ရိုက်ကူးယူချိတ်ဆက်ခြင်း" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "စိတ်ကြိုက် စာမူအမျိုးအစား" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "စိတ်ကြိုက်စာမူအများအစားများအတွက် ဘာသာစကားနှင့် ဘာသာပြန်များဖွင့်ထားရန်" + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "စိတ်ကြိုက်ဝေါဟာရများ" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "စိတ်ကြိုက်ဝေါဟာရများအတွက် ဘာသာစကားနှင့် ဘာသာပြန်များဖွင့်ရန်" + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "ပြုပြင်" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "ဖျက်" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "ကုဒ်" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "အလံ" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "စာမူများ" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "အမည်" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "စာကြောင်း" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "အသစ်" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "ဘာသာစကားပြောင်းခလုပ်" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "ဘာသာစားပြောင်းခလုပ်ဖော်ပြရန်" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "ခေါင်းစဉ် :" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "ဘာသာစကားပေါင်းစုံစနစ်အား WordPress အတွင်းထည့်သွင်းရန်" + +# @ polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "သင် WordPress %s အား အသုံးပြုနေသည်။ WordPress %s အား Polylang မှ လိုအပ်ပါသည်။" + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "အလွန်ဟောင်းလွန်းသော ဗားရှင်းမှ အဆင့်မြှင့်တင်ခြင်းပြုလုပ်ခဲ့သဖြင့် Polylang အား ပိတ်ထားလိုက်သည်။" + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "%sသို့ အဆင့်မြှင့်တင်ပြီးမှ %s သို့ အဆင့်မြှင့်ပါ။" + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "အုပ်စု" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "အုပ်စုအားလုံးကိုကြည့်ရန်" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "ဒီဘာသာစကားကို အပြီးဖျက်တော့မည်။ တကယ်သေချာရဲ့လား။" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"အသုံးမပြုသောစာကြောင်းများအား ဒေတာဗေ့စ်မှ ဖျက်ရန် ဒါကိုသုံးပါ။ ဥပမာ ပလပ်အင်တစ်ခုအား " +"ဖျက်ထုတ်လိုက်သောအခါ။" + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"တိုက်ရိုက်ကူးယူချိတ်ဆက်ခြင်းကိုသုံးခြင်းဖြင့် ဘာသာပြန်ထားသော စာမူသို့မဟုတ် စာမျက်နှာတစ်ခု၏ " +"မီတာအကြောင်းအရာများ၏ တန်ဖိုးများ (သို့မဟုတ် စာမျက်နှာပင်မ နှင့် ဝေါဟာရအုပ်စုများတွင် " +"ဘာသာပြန်များ)အား တူညီမှု ရှိစေရန် ထိန်းသိမ်းဆောင်ရွက်ပေးသည်။" + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "ဘာသာစကားကုဒ်တွင် သင့်လျှော်မှုမရှိသော အက္ခရာများပါဝင်နေသည်။" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "အကြောင်းအရာအပေါ်မူတည်၍ ဘာသာစကားအား သတ်မှတ်ရန်" + +# @ polylang +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "စာမူများ၊ စာမျက်နှာများ၊ ကဏ္ဍများနှင့် စကားစုတွဲများအတွက် URL များအား မပြုပြင်ပါ။" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "ချိတ်ဆက်လိပ်စာတွင် တည်နေရာညွှန်းအမည်ဖြင့် ဘာသာစကားအား သတ်မှတ်ရန်" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "ဥပမာ။ ။" + +# @ polylang +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "ချိတ်ဆက်လိပ်စာတွင် ဒိုမိန်းခွဲအမည်ဖြင့် ဘာသာစကားအား သတ်မှတ်ရန်" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "မတူညီသော ဒိုမိန်းများမှ ဘာသာစကားအား သတ်မှတ်သည်" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "ချိတ်ဆက်လိပ်စာမှ /language/ အား ဖယ်ရှားရန်" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "ချိတ်ဆက်လိပ်စာတွင် /language/ အား ဖော်ပြထားရန်" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "ပင်မစာမျက်နှာ URL တွင် စာမျက်နှာအမည် သို့မဟုတ် စာမျက်နှာ id အစား ဘာသာစကားကုဒ်ပါဝင်သည်" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "ဥပမာ။ ။ %s သည် %s ၏ အစားဖြစ်သည်။" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "ဘာသာစကား အသစ်ထည့်ရန် မဖြစ်နိုင်ပါ။" + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "ဘာသာစကား ထည့်ပြီးပြီ။" + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "ဘာသာစကား ဖျက်ပြီးပြီ။" + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "ဘာသာစကား အသစ်ဖြည့်စွက်ပြုပြင်ပြီးပါပြီ။" + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "ဘာသာပြန် အသစ်ဖြည့်စွက်ပြုပြင်ပြီးပါပြီ။" + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "" +"ဘာသာစကား ကုဒ်သင်္ကေတ - အက္ခရာ ၂ လုံးပါဝင်သော ISO 639-1 ဘာသာစကားကုတ် ဖြစ်သင့်ပါသည် " +"( ဥပမာ။ ။ my )" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "ရွေးချယ်ထားသော ပင်မစာမျက်နှာအား ဘာသာစကားအားလံုးသို့ ဘာသာပြန်ဆိုထားရမည်။" + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "ဝစ်ဂျက်စာသား" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-nb_NO.mo b/pole-sbv-content/plugins/polylang/languages/polylang-nb_NO.mo new file mode 100644 index 0000000000000000000000000000000000000000..f05496f2211ba8810680cdfc4f0f6a08a28d635f GIT binary patch literal 11184 zcmb7}UyNMWUB^%Jrz9>kP(qU?0Zx+IvB}PO?Zl0G^0KHopbN`^EcPd`jAVv_HMsm^Z)|eu95|{`Pib-VeSF zE`a}B;l108Y0y6pYUnHAPlK<5KMTGA?gGCCYW_RmPl5ji{tWov;4gvO-e=4M;6Csc z@HtT9Uj#Ki0X6>R3SR}a&*#DSf`0_w1^x*r`riWY1iu4n9rKgn{T-mze+bmNbKoz4 z3*c?w^WcZTbx`v@3Em5S228;(gPQ+ACTrZiAgnO^z+1sX;9l?;_#k)*ya#+8JOo|_ ze-ZpX_+juaHqpLMfI8nX@DA`nI{p_Fowu-< z`nQ9y+S~!c5_1oz^>X&G{?nk=JrC{&UjW(C zyar0{Uj%o6SE~L$f&7{8@lWTy^#jK6XWq|0SZeMEMSm02{C%M0w+upp`4}krQ&9VC zf#S<=g3o~81RLOeOt#?D74|{t*Q?+hco}>W{C0)g+2rTxcfc5Y1w0D=J9rs<k=O;kX{c9kv%x{A_-tb%1~q@@ z-GROZP;`8v>VE_LH2wFWbduYzSNJ>N^EVmuyP($n0m^z1ycHuj03HElf1d*N{trNo zX8sstN%Ku`ANVhz==l)L(6}9-_`DaCeJp~K=f^?m)o*~_&Ox2;4N&X-A;^)io}uTK7dz^HWfK_+<6|74RVa z&w^*cx4@^t`yXJR_uwDF?eu>YW@*1Kf|~zTQ1iYHYW@ENCI6c^9AC{{pyY6%!qcGk zk3gL#12ykcpw|5?i0PQmfm-LQpyc!oQ0Mp?PivI#kJGJx!B7%J=Q1 zU8KoQdbFo#duRzwpE>MYq=22QCQ5k1x zVLMrFTce`P26mVgr7gFHu4um7sbzF2OS3`zZl(@gJC4j^yKPgqImVjQ`oR>ndRExM zC@JG4)`=3^iiXiTy>iQznSD0P+bg*%3Puj%bZW6AsXK)^(#x{K*{FUrep2?FE#0Nk zw&UEvye#$n(c>`-&5^`KsV&MJ3W{l7+ICb%>rvs%k*uwMgMmv+Mn>g`Jp+$Bu}j)@ zZ^H5M`w1h>QP+t$>SX7mE^(#fc?oTHJ;a)EjHt_)pNNyTE8r8 zJI{vgY%`ra>?BdQm~_WywP`ePg*n!aOaHH4*BnbrwvOyZl*H``+ijAyqQseFm!iQi zaSQbqyS=b+T9hto+pI&+EIHVcyS9x7D5hD86ILv2D`RE2w!SslY$;BoB-yfY$8KdK zo5X#j)Qbx{Oh#R#j0W>6E^W^x!$M&7p#o zqu~&F$CygHX_jDyS<3Pj=7O5_rC6ODy6n(XIzpGk7;`+&Mnm&d+;;Zd*^@QB92BD( z_)Wd~w67JUrm%KxlnAM3Q>dF5re7BIg5K6B&&87Qc(WY%u$iT8gwV@2JzH96r5NDn z4D;+FN-}3JqIR&Gb7J@KY&*8SJV5V?cs+rQnT;^OX$5bZ6V46o?(ufJIgf=sB_=j> zoJ%|@%*l%S`ios1>)QC0mKH{+vB%n- z@=&f)DC^Q)lNH+DAf|Vy^}XI@G{h{YsetsLq^G?9IW0+^$>F3~LA)qa{dI_nq-A(q zIux3P%nD{dw&@jI0e)mO?B)?l(1~+7&`ip{?jW02dZQWsY152dv+YG1<5JspQRSuE zJZMED7L=A(i?*eD11zn~GMgoByMdM9m!_7&5IVVo@{VowqMS3x$@4UaJXu98|B8v_&Uqc!UL0RJDHW;dl$GV#1`6A@UQN+593=DO4aY&-S!*OW=e3=4 z??hRSrQIYhdNxawtzAvKT%tj(WF(!RHVvGsbQjJPuH?MIaA&-G5fi+08gT^!XG(;d zjnNexZH#qCc4_e$psDgG$ zAC^v=hAd&GU#lB4O6`QzYj#1H|cF+^b8tsUhFJ(MKPN;}BfF|h$% zUKy>6d+=L|YtFis4dN3%lCk~rq*N#~tC9we zwstf;D&tlkv-c-j^&yXEKNR_{_l(I~X{(3dj9>Q3VbCh@twHsR~++* zwV0*Qw&5tcLC3qUWE2WA&AZ_zlr^}6q8+h zju7r`bmF5XWOQO;mj=spl*%L-4!GU4l}DC&}o7zacqwv}o;?OR=9=I~{iYR?pcjcx+hy*dSCIh38%~uK?=-!OmUDR&o(Df@J2o$+#k7hn*ZAMU4`E!UOY#{^s*Cs&rkXegM<%esN zj0e4*>JSgAxUJMGct@P5SZ2=oc&n&dQz3;Yc09O$?<4aE%sE);^Fy}IgR2~+M38o! zwR_7Or|WY*L{u4ujXEK-t#ZpcPGiSGspO;2$1b?au2R6lJlm_pFy(__^F}OPLX~Ch zl2T1?)M}AvREdG!jI;TW4Y{=C%(FpUx{uV~#Whpka%{+CJpD7v&uXtrFPvK?5I;{^ zu^A(h)WHjwGd2^=Z4StCWmZbJJom=LHm5eMBx$si^d<5aPL}eSVTx7~nnPN4%_4S@ z;Yw@@vi?K$0!q`nQzlOGVe8~0cQ1{&h!G`GI8vE%cA#HGX)m#3_C8k!>XA2N;32+uK=_W`)d1!Y@0ERGNDDYIeRYMR7#{ER&A_DbXbYXLnrD``f5E2f7fzqqc53<5vB?4UH0QS+375Ra8nuQ6f8pLuavi4!d;*KH96YzS z)Yv~6r|k%Wjbka{4IVDo{p)eLZ6z7yQPNlFd_Wpx*&w*{v zHC8f-zOl;Pu;q>rxY=dFj>-<()NfC?txe3bIEmUU*b5g9TyO_2Tu2eBjBsJk+};Bh z(g5|-3u%@Ot5;LsTXPrE*21H$IX~%=2DDgi{3X3qze_KLX<_Vyn8QSbVN~`OY_qwW z$I6*PtZl3YJzTI`uHemamvVtBC8}^tyQleB^U=vtArV|*vBo^hZ8K*EwIZ3tK1CvQ zxESVF-|XA0YsoFep3)_%FL-|tC&Q?~gDQ7Q6W8q)suShZiQe7pGU^whQ1oNY4Mn1p z>}V4t_N!I(s9Jk5 z!7EnZ&%2~+89v=DU7u=@D+v%Ri?<0cT}hr!`WY%kGgPIpv91=S=7g@rCqlU>VtObT ztxb5|aY;$UyuJ*kUre!=oSchOloRvla+PT|y0M{7v`j81|rs-r3SOO9c2HJ{XrCC$Ld!DGlm`3HcyQ?Lzw0^boEX6 zfKMdK!mhq*Or9I63J?KMCAhi0K$9pw1D)*qE!Z4e4e+;4nUiTitS4z(kdYFt}U^0Nsa zW6BQberSuT#s}qL602fk`#Ti*rU*jd3zmVt!ZPxFHI?{4`KeK zST4lQ_k61PsqTjvynEHR;inboiN3>(@?`zkO6 z=22j(lM5+;$l5D@#+_7o;Vp zgHle1Ccid5yox32TB=Gx=GFL#5|2U@L{_ew&J3DR#|5-s)=EPl3fzXJ8{=?ygSX@X zs3p0h^28gA86SZtLj=6Rpy_ha2KK{|Z{W8TkEaO?bt3jxT>FvJbl@HisS1H(Bf+Cl zAJNY=a?x|Rj&v$#2x8Fnl?cs1ulE?0GP_iDp^0Z5-{O7L_thbitEM>(T@3cA4M-4l z*d?@#-2@N47YSGEI($qjL$k_QNZ%CGr2g1wa0&Xsta4~6X@R_R7q6oV5gt@YL##PF zLjp2mUW(PhLv;zj*go}`THU?zqhctvf456Yp;{5D>SHZlJ;6K9uE-cp#SjJQN>O2; zbd@{5uRhQXtYGB@C6Br!^Sj!3)~p{=ft#$+XHULb8;t1p# zEgn~hj*h%Ltf`-rg+hK17&TsHx-c}BoM8!(4HslR{DrKl;_-NDNcB`NYT9EyqbX#w zd3i_+RN;7Xgqf;PKle2ke%~iini-?HN>Rl~H@T*H(eay#^5CGH{O+uK2~LsnlBA52 zaH{waB1dR^f\n" +"Language-Team: \n" +"Language: nb_NO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: ../\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.7.4\n" +"X-Poedit-SearchPath-0: .\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang er utstyrt med omfattende %sdokumentasjon%s (bare på engelsk). Den " +"inneholder informasjon om hvordan du setter opp ditt flerspråklige nettsted " +"og bruker det på en daglig basis, en FAQ, samt dokumentasjon til " +"programmerere for å tilpasse sine plugins og temaer." + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Du vil også finne nyttig informasjon i %sforumet%s. Men ikke glem å gjøre et " +"søk før du legger til et nytt emne." + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang er gratis og er utgitt under samme lisens som WordPress, %sGPL%s." + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "Hvis du lurer på hvordan du kan hjelpe prosjektet, %sles her%s." + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"Til slutt, hvis du liker denne plugin'en eller hvis det hjelper din bedrift: " +"donasjoner til forfatteren er verdsatt i høyeste grad." + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Språk" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Viser språknavn" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Viser flagg" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Tvinger lenke til forsiden" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Skjuler nåværende språk" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Vises som dropdown" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "Filtre innhold etter språk" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Vis alle språk" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Legg til ny oversettelse" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Språk" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Oversettelser" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "Bestemmer språket" + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Widgeten vises for:" + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Alle språk" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Admin språk" + +# @ polylang +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "WordPress standard" + +# @ default +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Innstillinger" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Oppgraderer språkfiler…" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Om Polylang" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "String oversettelser" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "String oversettelse" + +# @ polylang +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "Tast inn en gyldig WordPress Locale" + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "Språkkoden må være unikt" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "Språket må ha et navn" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"Språket ble opprettet, men WordPress språkfilen ble ikke lastet ned. " +"Vennligst installer den manuelt." + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Widget tittel" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Taksonomier" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Tilpassede felt" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Kommentar status" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Ping status" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Klebrige innlegg" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "Dato publisering" + +# @ default +#: admin/settings.php:325 +msgid "Post format" +msgstr "Format" + +# @ default +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Side forelder" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "Sidemal" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "Side rekkefølge" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Fremhevet bilde" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Rediger språk" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Legg til nytt språk" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Velg et språk" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "Du kan velge et språk fra listen eller redigere direkte nedenfor." + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Fullt navn" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "Navnet som det vises på nettstedet ditt (for eksempel: English)." + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Locale" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"WordPress Locale for språket (for eksempel: en_US). Du må installere .mo " +"filen for dette språket." + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Språkkode" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Tekstretning" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "venstre til høyre" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "høyre til venstre" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Velg tekstretning for språket" + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Rekkefølge" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Språkets plasering i språkskifteren" + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Språkskifter" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Søk oversettelser" + +# @ polylang +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Rens string oversettelsene i databasen" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Standard språk" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Det finnes innlegg, sider, kategorier eller tags uten et valgt språk. Vil du " +"sette dem alle til standard språk?" + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Detekter nettleserens språkpreferance" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "Når forsiden besøkes, velg språk i henhold til nettleserens preferanse" + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "URL modifikasjoner" + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "Skjul URL språkinformasjon for standard språk" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Media" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Aktiver språk og oversettelser for media" + +# @ polylang +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Synkronisering" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Tilpassede innleggstyper" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Aktiver språk og oversettelser for tilpassede innleggstyper." + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Tilpassede taksonomier" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Aktiver språk og oversettelser for tilpassede taksonomier." + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Rediger" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Slett" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Kode" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Flagg" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Innlegg" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "Navn" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "String" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Legg til ny" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Språkskifter" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Viser en språkskifter" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Tittel:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "Legger til flerspråklig funksjonalitet til WordPress" + +# @ polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "Du bruker WordPress %s. Polylang krever minst WordPress %s." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "" +"Polylang er blitt deaktivert fordi at du har oppgradert fra en for gammel " +"versjon." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "Vennligst oppgrader først til %s før du oppgraderer til %s." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "Gruppe" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Vis alle grupper" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "Du holder på å slette dette språket permanent. Er du sikkert?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"Bruk dette for å fjerne ubrukte stringer fra databasen, f.eks. når en " +"utvidelse er avinstallert." + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"Synkroniseringsvalgene tillater å ta vare på nøyaktig de samme verdiene " +"(eller oversettelser når det gjelder taksonomier og sideforelder) av " +"metainnhold mellom oversettelser av et innlegg eller en side." + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "Språkkoden inneholder ugyldige tegn" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "Språket bestemmes av innhold" + +# @ polylang +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "Innlegg, sider, kategrier og stikkord urls er ikke tilpasset." + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "Språket bestemmes av directory navnet i pene permalenker" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "Eksempel:" + +# @ polylang +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "Språket bestemmes av subdomenenavn i pene permalenker" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "Språket bestemmes av andre domener" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "Fjern /language/ i pene permalenker" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "Behold /language/ i pene permalenker" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "Forside url inneholder språkkoden i stedet for sidenavn eller side id" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "Eksempel: %s i stedet for %s" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "Ikke mulig å legge til språket." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "Språk lagt til." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "Språk slettet." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "Språk oppdatert." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "Oversettelser oppdatert." + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "Språkkode - helst 2-bokstav ISO 639-1 (for eksempel: en)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "Den valgte statiske forsiden må være oversettes for alle språk." + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "Widget tekst" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "Anbefalte utvidelser" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "Språket bestemmes av koden i URL'en" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "Gjemmer språk uten oversettelser" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-pl_PL.mo b/pole-sbv-content/plugins/polylang/languages/polylang-pl_PL.mo new file mode 100644 index 0000000000000000000000000000000000000000..0bf848347dadaebb51bde41b386bd9b57ca7ea9d GIT binary patch literal 11202 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 SPzI^6!QwR4Z)$TNz5fG!Q?x?> literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-pl_PL.po b/pole-sbv-content/plugins/polylang/languages/polylang-pl_PL.po new file mode 100644 index 00000000..c3a1eba9 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/languages/polylang-pl_PL.po @@ -0,0 +1,640 @@ +msgid "" +msgstr "" +"Project-Id-Version: polylang\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Sebastian Janus \n" +"Language-Team: \n" +"Language: pl_PL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: .\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-SearchPath-0: ..\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang jest dostarczany z obszerną %sdokumentacją%s (tylko w języku " +"angielskim), która zawiera informacje jak skonfigurować stronę wielojęzyczną " +"i korzystać z niej w codziennej pracy, dział FAQ, oraz dokumentację dla " +"programistów o tym jak adaptować wtyczki i motywy." + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Przydatne informacje znajdziesz w %sforum pomocy%s. Nie zapomnij go " +"przeszukać, zanim dodasz nowy temat." + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang jest bezpłatne i opublikowane na takiej samej licencji jak " +"WordPress, czyli %sGPL%s." + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "" +"Jeśli zastanawiasz się jak mógłbyś pomóc w tym projekcie, po prostu " +"%sprzeczytaj to%s." + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"Wreszcie, jeśli lubisz tę wtyczkę i pomaga Ci ona w prowadzeniu biznesu, " +"wsparcie dla jej autora będzie mile widziane." + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Języki" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Wyświetla nazwy języków" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Wyświetla flagi" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Wymusza link do strony głównej" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Ukrywa aktualny język" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Wyświetla się jako menu rozwijane" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "Filtrowanie treści wg języka" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Pokaż wszystkie języki" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Dodaj nowe tłumaczenie" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Język" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Tłumaczenia" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "Ustawia język" + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Widget wyświetlany jest dla:" + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Wszystkie języki" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Język administratora" + +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "Domyślny" + +# @ default +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Ustawienia" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Uaktualnianie pliku językowego…" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "O Polylang" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "Tłumaczenia ciągów tekstowych" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "Tłumaczenie fraz" + +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "Proszę podać prawidłowy kod lokalizacji" + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "Kod języka musi być unikalny" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "Język musi mieć nazwę" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"Język został dodany, ale plik językowy WordPress nie został załadowany. " +"Proszę zainstalować go ręcznie." + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Nazwa widgeta" + +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Taksonomie" + +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Własne pola" + +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Status komentarza" + +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Status ping" + +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Przyklejone wpisy" + +#: admin/settings.php:324 +msgid "Published date" +msgstr "Data publikacji" + +#: admin/settings.php:325 +msgid "Post format" +msgstr "Format wpisu" + +# @ default +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Rodzic strony" + +#: admin/settings.php:327 +msgid "Page template" +msgstr "Szablon strony" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "Kolejność stron" + +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Zdjęcie główne" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Edytuj język" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Dodaj nowy język" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Wybierz język" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "Możesz wybrać język z listy lub edytować go bezpośrednio poniżej" + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Pełna nazwa" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "Nazwa, tak jak będzie wyświetlana na stronie (np. English)" + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Lokalizacja" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"Lokalizacja WordPress dla języka (np. en_US). Dla tego języka będziesz " +"musiał zainstalować plik .mo." + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Kod języka" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Kierunek zapisu języka" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "od lewej do prawej" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "od prawej do lewej" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Wybierz kierunek zapisu języka" + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Kolejność" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Pozycja języka w przełączniku języka" + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Przełącznik języka" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Szukaj tłumaczeń" + +# @ polylang +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Wyczyść tłumaczenia fraz z bazy" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Domyślny język" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Istnieją wpisy, strony, kategorie i tagi bez określonego języka. Czy chcesz " +"ustawić dla nich domyślny język?" + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Wykryj język przeglądarki" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "" +"Przy wejściu na stronę domową, ustaw język zgodnie z ustawieniami " +"przeglądarki" + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "Modyfikacje URL" + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "Ukryj informację o języku w URL dla domyślnego języka" + +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Media" + +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Aktywuj języki i tłumaczenia dla mediów." + +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Synchronizacja" + +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Własne typy wpisów" + +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Aktywuj języki i tłumaczenia dla własnych typów wpisów." + +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Własne taksonomie" + +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Aktywuj języki i tłumaczenia dla własnych taksonomii." + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Edytuj" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Usuń" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Kod" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Flaga" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Wpisy" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "Nazwa" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "Ciąg tekstowy" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Dodaj nowy" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Przełącznik języka" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Wyświetla przełącznik języka" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Tytuł:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "Dodaje wsparcie wielojęzykowe do WordPressa" + +# @ polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "Używasz WordPress %s. Polylang wymaga przynajmniej WordPress %s." + +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "" +"Polylang został wyłączony ponieważ aktualizowałeś go ze zbyt starej wersji." + +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "Najpierw zaktualizuj do %s zanim wykonasz aktualizację do %s." + +#: admin/table-string.php:109 +msgid "Group" +msgstr "Grupa" + +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Zobacz wszystkie grupy" + +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "Zamierzasz całkowicie usunąć ten język. Czy jesteś pewny?" + +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"Użyj tego aby usunąć nieużywane frazy z bazy danych, np. po tym jak " +"odinstalowałeś wtyczkę." + +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"Ustawienia synchronizacji pozwalają zachować dokładnie takie same wartości " +"(lub tłumaczenia w przypadku taksonomii i rodziców stron) meta danych " +"pomiędzy tłumaczeniami stron i wpisów." + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "Kod języka zawiera nieprawidłowe znaki" + +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "Język jest ustawiony na podstawie zawartości" + +# @ polylang +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "Wpisy, strony, kategorie i adresy tagów nie są zmodyfikowane." + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "Język jest ustawiany ze ścieżki katalogów w bezpośrednich odnośnikach" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "Przykład:" + +# @ polylang +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "Język jest ustawiany z nazwy subdomeny w bezpośrednich odnośnikach" + +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "Język jest ustawiany z różnych domen" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "Usuń /language/ z bezpośrednich odnośników" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "Zatrzymaj /language/ w bezpośrednich odnośnikach" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "Adres strony głównej zawiera kod języka zamiast nazwy lub id strony." + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "Przykład: %s zamiast %s" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "Dodanie języka jest niemożliwe." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "Dodano język." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "Usunięto język." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "Język zaktualizowany." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "Tłumaczenia zaktualizowane." + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "" +"Kod języka - preferowane 2 litery zgodnie z ISO 639-1 (na przykład: en)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "" +"Wybrana statyczna strona główna musi być przetłumaczona we wszystkich " +"językach." + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "Tekst widgetu" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "" + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "" + +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-ru_RU.mo b/pole-sbv-content/plugins/polylang/languages/polylang-ru_RU.mo new file mode 100644 index 0000000000000000000000000000000000000000..67b31c2d00fb04ec7af994de66c167830e5e0f0d GIT binary patch literal 10499 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\n" +"Language-Team: \n" +"Language: ru_RU\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: .\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-SearchPath-0: ..\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang предоставляется с исчерпывающей %sдокументацией%s (только на " +"английском), которая включает информацию по настройке и использованию вашего " +"многоязычного сайта, ответы на частые вопросы, а также документацию для " +"программистов для адаптации их собственных плагинов и тем." + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Также вы можете найти полезную информацию на %sфоруме поддержки%s. Однако, " +"не забывайте пользоваться поиском, прежде чем создавать новые темы." + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang бесплатен и предоставляется на таких же, как и WordPress условиях, " +"%sGPL%s." + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "" +"Если вас интересует, как можно помочь проекту, просто %sпрочтите это%s." + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"Если же вам понравился этот плагин, или он помогает вам в бизнесе, автор " +"будет весьма признателен за любые добровольные пожертвования." + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Языки" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Показывать названия языков" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Показывать флаги" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Принудительно переходить на главную страницу при смене языка" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Убрать текущий язык" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Показывать как выпадающий список" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "Устанавливает язык" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Показать все языки" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Добавить новый перевод" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Язык" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Переводы" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "Устанавливает язык" + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Показывать виджет для" + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Все языки" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Язык админ.панели" + +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "По умолчанию" + +# @ default +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Настройки" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Обновление языковых файлов…" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "О Polylang" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "Переводы строк" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "Перевод строк" + +# @ polylang +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "" + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "Код языка должен быть уникальным" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "У языка должно быть название" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"Язык был успешно создан, однако отсутствует языковой файл WordPress. " +"Пожалуйста, установите его вручную." + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Название виджета" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Таксономия" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Пользовательские поля" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Статус комментария" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Статус отклика" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Прилепленные записи" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "Дата опубликования" + +#: admin/settings.php:325 +msgid "Post format" +msgstr "Формат записи" + +# @ default +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Родительская страница" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "Шаблон страницы" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "Порядок страниц" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Выбранный рисунок" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Редактировать язык" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Добавить новый язык" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Показать все языки" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "Выберите язык из списка или укажите сами." + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Полное название" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "Название для отображения на сайте (например: Русский)." + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Локаль" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"Локаль WordPress'a для языка (например: ru_RU). Вы должны установить файлы ." +"mo для админ.панели и используемой темы." + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Код языка" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Направление текста" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "слева направо" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "справа налево" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Выберите направление текста для языка" + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Порядок" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Порядок языка в переключателе языков" + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Переключатель языков" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Поиск перевода" + +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Почистить базу данных переводов строк" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Язык по умолчанию" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Найдены записи, страницы, категории или метки без указанния какого-либо " +"языка. Установить им язык по-умолчанию?" + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Определять язык в браузере" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "Установить язык сайта согласно настройкам браузера" + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "Модификации URL" + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "Спрятать название языка по-умолчанию из URL" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Медиа" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Активировать языки и переводы для мультимедиа материалов" + +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Синхронизация" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Пользовательские типы записей" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Активировать языки и переводы для пользовательских типов записей." + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Пользовательская таксономия" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Активировать языки и переводы для пользовательской таксономии." + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Редактировать" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Удалить" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Код" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Флаг" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Записи" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "Название" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "Строка" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Добавить новый" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Переключатель языков" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Показывает переключатель языков" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Название:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "" + +# @ polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "" +"Установлен WordPress %s. Для корректной работы Polylang требуется минимум " +"WordPress %s." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "" +"Polylang деактивирован, потому что вы выполнили обновление со слишком старой " +"версии." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "Пожалуйста, обновитесь сначала до %s перед обновлением до %s." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "" + +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "" + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "" + +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "" + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "" + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "" + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "" + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "" + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "" + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-sr_RS.mo b/pole-sbv-content/plugins/polylang/languages/polylang-sr_RS.mo new file mode 100644 index 0000000000000000000000000000000000000000..4986036ceb33d16b5937402ea240428c6862b83d GIT binary patch literal 11265 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 aRQ95;GMvGn1%J7g2P3&N`VCju$^0)*8RXXh literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-tr_TR.po b/pole-sbv-content/plugins/polylang/languages/polylang-tr_TR.po new file mode 100644 index 00000000..cff42a8d --- /dev/null +++ b/pole-sbv-content/plugins/polylang/languages/polylang-tr_TR.po @@ -0,0 +1,598 @@ +msgid "" +msgstr "" +"Project-Id-Version: Polylang v1.5\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2015-02-14 09:26+0100\n" +"Last-Translator: Abdullah Pazarbasi \n" +"Language-Team: \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;" +"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;" +"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;" +"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;" +"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n" +"X-Poedit-Basepath: .\n" +"X-Loco-Target-Locale: tr_TR\n" +"X-Generator: Poedit 1.5.4\n" +"X-Language: tr_TR\n" +"X-Source-Language: C\n" +"X-Poedit-SearchPath-0: ..\n" +"X-Poedit-SearchPath-1: ../include\n" + +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang geniş bir %sdocumentation%s (sadece ingilizce) temin etmektedir. " +"Belge içerisinde; çoklu dil desteğinin kendi sitenize nasıl kurulacağı ve " +"kolay kullanımı, sık sorulan sorular ve geliştiriciler için kendi temalarını " +"ve eklentilerini uyumlu hale getirmeleri için gerekli bilgiler bulunmaktadır." + +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Ayrıca %ssupport forum%s 'dan da yararlı bilgilere ulaşabilirsiniz. Ama yeni " +"bir başlık açmadan önce arama yapmayı unutmayın." + +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang'ın kullanımı ücretsizdir ve dağıtımı WordPress ile aynı lisans " +"sözleşmesi %sGPL%s altında yapılmıştır." + +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "" +"Eğer bu projeye nasıl katkıda bulunabileceğinizi merak ediyorsanız, %sbunu " +"okuyun%s." + +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"Ve son olarak bu eklentiyi beğendiyseniz veya profesyonel anlamda size " +"yararı dokunduysa, proje sahibine yapacağınız parasal destek mutlulukla " +"karşılanacaktır." + +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Dil" + +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Dil isimlerini görüntüler" + +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Bayrakları görüntüler" + +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Bağlantıyı önsayfa yapmak için zorlar" + +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Geçerli olan dili sakla" + +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Açılır menü halinde görüntüler" + +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "Dile göre içerik filtreleri" + +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Tüm dilleri göster" + +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Yeni çevri ekle" + +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Dil" + +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Çevriler" + +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "Dili geçerli dil olarak ayarlar." + +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Bu bileşenin görüntüleneceği dil:" + +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Tüm diller" + +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Yönetici dili" + +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "WordPress varsayılanı" + +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Ayarlar" + +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Dil dosyaları güncelleştiriliyor…" + +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Polylang Hakkında" + +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "Cümle çevrisi" + +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "Cümle Çevrisi" + +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "Geçerli bir WordPress adresi girin" + +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "Dil kodu daha önce kullanılmamış olmalı" + +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "Girdiğiniz dilin bir ismi olmalı" + +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"Dil oluşturuldu fakat WordPress için dil dosyası indirilemedi. Lütfen elden " +"yükleyin." + +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Bileşen başlığı" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Taksonomiler" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Özel alanlar" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Yorum durumu" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Ping durumu" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Yapışkan gönderiler" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "Yayımlanma tarihi" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "Gönderi formatı" + +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Sayfa ebeveyni" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "Sayfa şablonu" + +#: admin/settings.php:328 +msgid "Page order" +msgstr "Sayfa sırası" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Öne çıkan görsel" + +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Dili düzenle" + +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Yeni Dil Ekle" + +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Dil Seç" + +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "" +"Listeden bir dil seçebilirsiniz ya da direk aşağıdaki bölümden " +"düzenleyebilirsiniz." + +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Tam İsim" + +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "Sitede dilin gösterileceği isim (örneğin: Türkçe)." + +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Bölge Kodu" + +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"Dil için WordPress Bölge Kodu (örneğin: tr_TR). Bu dilin .mo uzantılı dil " +"dosyasını yüklemeniz gerekiyor." + +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Dil Kodu" + +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Yazma yönü" + +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "soldan sağa" + +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "sağdan sola" + +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Dil için yazma yönünü seçin" + +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Sıralama" + +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Dilin dil değiştirici listesindeki pozisyonu" + +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Dil Değiştirici" + +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Çevrilerde ara" + +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Cümle çevri veritabanını temizle" + +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Varsayılan dil" + +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Dili belirlenmemiş yazılar, sayfalar, kategoriler ve etiketler var. " +"Varsayılan dil bunların hepsinin dili olarak ayarlansın mı?" + +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Tarayıcı dilini algıla" + +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "Anasayfa açıldığında, geçerli dili tarayıcının diline ayarla" + +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "URL dönüşümleri" + +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "URL'de varsayılan dil için dil belirtecini gizle" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Medya" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Medya için diller ve çevrileri etkinleştir" + +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Senkronizasyon" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Özel gönderi tipleri" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Özel gönderi tipleri için diller ve çevrileri etkinleştir." + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Özel taksonomiler" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Özel taksonomiler için diller ve çevrileri etkinleştir." + +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Düzenle" + +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Sil" + +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Kod" + +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Bayrak" + +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Yazılar" + +#: admin/table-string.php:110 +msgid "Name" +msgstr "İsim" + +#: admin/table-string.php:111 +msgid "String" +msgstr "Cümle" + +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Yeni ekle" + +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Dil Değiştirme Ekranı" + +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Dil değiştirme ekranını görüntüler" + +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Başlık:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "WordPress'e çokludil kabiliyeti kazandırır" + +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "" +"Siz WordPress'in %s sürümünü kullanıyorsunuz. Polylang'ı kullanabilmeniz " +"için en az WordPress %s sürümüne ihtiyacınız var." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "" +"Polylang aşırı eski bir versiyondan yükseltmenizden dolayı devredışı durumda." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "Lütfen %2$s elemanını yükseltmeden önce %1$s elemanını yükseltin." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "Grup" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Tüm grupları görüntüle" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "Bu dili kalıcı olarak silmek üzeresiniz. Emin misiniz?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"Kullanılmayan cümleleri veritabanından kaldırmak için bunu kullanın. Örneğin " +"bir eklentiyi kaldırdıktan sonra." + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"Senkronizasyon seçenekleri bir yazı ya da sayfanın çevrileri arasında meta " +"içeriğin değerlerinin (veya taksonomi ve sayfa ebeveynleri çevrilerinin) tam " +"olarak aynı kalmasına izin verir." + +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "Dil kodu geçersiz karakterler içeriyor" + +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "Dil içerik üzerinden ayarlanır" + +# @ polylang +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "" +"Yazılar, sayfalar, kategoriler ve etiketlerin URL'leri dönüşüme uğramış " +"değil." + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "Dil anlaşılır kalıcı bağlantılardaki dizin adı üzerinden ayarlanır" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "Örnek:" + +# @ polylang +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "Dil anlaşılır kalıcı bağlantılardaki subdomain adı üzerinden ayarlanır" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "Dil farklı domainler üzerinden ayarlanır" + +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "/language/ kısmını anlaşılır kalıcı bağlantılardan kaldır" + +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "/language/ kısmını anlaşılır kalıcı bağlantılarda koru" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "Ön sayfa URL'si sayfa adı veya sayfa ID'si yerine dil kodunu içeriyor" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "Örnek: %2$s yerine %1$s" + +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "Dili eklemek imkansız." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "Dil eklendi." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "Dil silindi." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "Dil güncellendi." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "Çevriler güncellendi." + +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "Dil kodu - tercihen 2 harfli ISO 639-1 içinden (örneğin: tr)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "Seçilen sabit ön sayfa tüm dillere çevrilmeli." + +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "Bileşen metni" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "" + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-uk.mo b/pole-sbv-content/plugins/polylang/languages/polylang-uk.mo new file mode 100644 index 0000000000000000000000000000000000000000..56e3f01d72d2740f7b1172c35b23945272d5050a GIT binary patch literal 14444 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 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-uk.po b/pole-sbv-content/plugins/polylang/languages/polylang-uk.po new file mode 100644 index 00000000..f0c96f9f --- /dev/null +++ b/pole-sbv-content/plugins/polylang/languages/polylang-uk.po @@ -0,0 +1,661 @@ +msgid "" +msgstr "" +"Project-Id-Version: polylang\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Andrii Ryzhkov \n" +"Language-Team: \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: .\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.7.4\n" +"X-Poedit-SearchPath-0: ..\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang забезпечений обширною %sдокументацією%s (тільки англійською мовою). " +"Вона включає в себе інформацію про те, як налаштувати багатомовний сайт і " +"використовувати його на щоденній основі, запитання та відповіді, а також " +"документацію для програмістів, щоб адаптувати свої плаґіни і теми." + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Ви також знайдете корисну інформацію в %sфорумі підтримки%s. Однак не " +"забувайте зробити пошук, перш ніж додавати нову тему." + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang є безкоштовним і поширюється за тією ж ліцензією, як і WordPress, " +"%sGPL%s." + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "" +"Якщо вам цікаво, як Ви можете допомогти проекту, просто %sпрочитайте це%s." + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"Нарешті, якщо Вам подобається цей плаґін або, якщо це допоможе вашому " +"бізнесу, пожертвування автору вітаються." + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Мови" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "Відображати назви мов" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "Відображати прапорці" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "Примусовий перехід на головну сторінку" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "Приховувати поточну мову" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "Відображати як меню, що випадає" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "Фільтрує вміст за мовою" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Показати всі мови" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Додати новий переклад" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Мова" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Переклади" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "Встановити мову" + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Віджет відображається для:" + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Всі мови" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Адміністратор мови" + +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "WordPress за замовчуванням" + +# @ default +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Налаштування" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Оновлення мовних файлів…" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Про Polylang" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "Переклади рядків" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "Переклад рядків" + +# @ polylang +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "Введіть дійсну локаль WordPress " + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "Код мови повинен бути унікальним" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "Мова повинна мати ім'я" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"Мова була створена, але файл мовний файл WordPress не був завантажений. Будь " +"ласка, встановіть його вручну." + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Назва віджету" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Таксономії" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Власні поля" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Статус коментарю" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Статус пінгу" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Прикріплені публікації" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "Дата публікації" + +#: admin/settings.php:325 +msgid "Post format" +msgstr "Формат публікації" + +# @ default +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Батьківська сторінка" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "Шаблон сторінки" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "Номер сторінки" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Головне зображення" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Редагувати мову" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Додати нову мову" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Вибрати мову" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "" +"Ви можете вибрати мову зі списку або безпосередньо відредагувати її нижче." + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Повне ім'я" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "" +"Це ім'я, як воно відображається на вашому сайті (наприклад, Англійська)." + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Локаль" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"Локаль WordPress для мови (наприклад, en_US). Вам потрібно буде встановити " +"файл .mo для даної мови." + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Код мови" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Напрямок тексту" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "зліва направо" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "зправа наліво" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Виберіть напрямок тексту для мови" + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Порядок" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Положення мови в перемикачі мов" + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Перемикач мов" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Пошук перекладів" + +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Очистити базу даних перекладу строк" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Мова за замовчуванням" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Є публікації, сторінки, категорій або теґи без вибраної мови. Ви хочете " +"встановити їм мову за замовчуванням?" + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Визначати мову браузера" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "" +"Встановлювати мову відповідно до уподобань браузера, коли відвідується " +"головна сторінка" + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "Модифікації URL " + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "Приховати інформацію мови в URL для мови за замовчуванням" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Медіафайли" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Активувати мови та переклади для медіафайлів" + +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Синхронізація" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Власні типи публікації" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Активувати мови та переклади для власних типів публікацій." + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Власні таксономії" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Активувати мови та переклади для власних таксономії." + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Редагувати" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Видалити" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Код" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Прапор" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Публікації" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "Назва" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "Рядок" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Додати новий" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Перемикач мови" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "Відображає перемикач мови" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Назва:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "Додає магатомовні властивості до WordPress" + +# @ polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "" +"Ви використовуєте WordPress %s. Для Polylang потрібно принаймні WordPress %s." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "Polylang був відключений, тому що ви оновили з занадто старої версії." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "Будь ласка, оновіть спочатку до %s перед оновленням до %s." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "Група" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Переглянути всі групи" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "Ви збираєтесь остаточно видалити цю мову. Ви впевнені?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" +"Використовуйте це, щоб видалити з бази даних рядки, які не використовуються. " +"Наприклад, після видалення плаґіну." + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"Опція синхронізації дозволяє підтримувати точно таке саме значення (або " +"переклад у випадку таксономій та батьківської сторінки) метаданих вмісту між " +"всіма перекладами публікації або сторінки." + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "Код мови містить недопустимі символи" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "Мова встановлена з вмісту" + +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "URL публікацій, сторінок, категорій та теґів не змінюються." + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "Мова встановлена з назви каталогу в постійному посиланні" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "Приклад:" + +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "Мова встановлена з субдомену в постійному посиланні" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "Мова встановлена з іншого домену" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "Вилучити /language/ в акуратних постійних посиланнях" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "Залишити /language/ в акуратних постійних посиланнях" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "" +"URL головної сторінки містить код мови замість назви сторінки або ID сторінки" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "Приклад: %s замість %s" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "Неможливо додати мову." + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "Мова додана." + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "Мова видалена." + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "Мова оновлена." + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "Переклади оновлені." + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "Код мови - бажано 2-символьний ISO 639-1 (наприклад, en)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "Вибрана статична головна сторінка має бути перекладена на всі мови." + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "Текст віджету" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "Рекомендовані плаґіни" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "Мова встановлена з коду в URL" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "Приховати мови без перекладу" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-vec.mo b/pole-sbv-content/plugins/polylang/languages/polylang-vec.mo new file mode 100644 index 0000000000000000000000000000000000000000..7088188e3b3a1e4d4ff38477b62570e281628819 GIT binary patch literal 8844 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 MM>aGy^x9_gf8#T%8~^|S literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-vec.po b/pole-sbv-content/plugins/polylang/languages/polylang-vec.po new file mode 100644 index 00000000..f4867768 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/languages/polylang-vec.po @@ -0,0 +1,663 @@ +msgid "" +msgstr "" +"Project-Id-Version: Polylang v1.1dev10\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2015-02-14 09:27+0100\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: ../\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.5.4\n" +"Language: vec\n" +"X-Poedit-SearchPath-0: .\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang el vien dà fora co na %sdocumentaçion%s conpleta (sol che in " +"Ingléxe). El contien anca informaçion su come métar sù un sito multiléngue e " +"su come dopararlo tuti i di, na pàxena de FAQ (domande frecuenti) e na " +"documentaçion par programaturi parché i posa adatar i so plugin e i so tèmi." + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"Te cati anca informaçion ùtiłi nel %sfòrum de suporto%s. Parò no stà " +"desmentegarte de far na riçérca prima de postar n'argoménto nóvo." + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "" +"Polylang el xe a gràtis e 'l vien dà fora sóto ła stésa łicença de " +"WordPress, ła %sGPL%s." + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "" +"Se te si drio domandarte come che te pol jutarne, basta che te %slezi cuà%s." + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"In ùltima, se te piaxe sto plugin chì o se sto cuà el te juta a guadagnar, " +"te pol far vołentiera na donaçion a l'autor." + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "Łéngue" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "El fa védar i nomi de łe łéngue" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "El fa védar łe bandiere" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "El força łe łigadure in prima pàxena" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "El scónde ła łéngua ativa" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "El vixuałixa come menù a cascada" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "El filtra el contegnùo par łéngua" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "Fa védar tute łe łéngue" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "Zónta na traduçion nóva" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "Łéngua" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "Traduçion" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "L'inposta ła łéngua" + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "Ła widget ła vien vixuałixà par:" + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "Tute łe łéngue" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "Łéngua de l'aministrador" + +# @ polylang +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "Stàndard de WordPress" + +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "Inpostaçion" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "Agiornaménto del file de łéngua" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "Informaçion su Polylang" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "Traduçion de stringhe" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "Traduçion de stringhe" + +# @ polylang +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "Miti rento na inpostaçion locałe de WordPress vàłida" + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "Bexon che'l còdexe łéngua el sia ùnico" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "Ła łéngua ła ga da aver un nome" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "" +"Ła łéngua ła xe stà creà, ma el file de łéngua de WordPress no l'è mìa stà " +"tirà zo. Par favor, metìło sù a man." + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "Tìtoło de ła widget" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "Tasonomie" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "Canpi personałixai" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "Stato del coménto" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Stato de ping" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "Artìcoło evidençià" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "Data de publicaçion" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "Formato artìcoło" + +# @ polylang +#: admin/settings.php:326 +msgid "Page parent" +msgstr "Mare de ła pàxena" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "Modeło de pàxena" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "Órdene de pàxena" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "Imàxene in evidença" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "Cànbia łéngua" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "Zónta na łéngua nóva" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "Seji na łéngua" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "Te pol sèjer na łéngua da ła lista o modificarla diretamente chì sóto." + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "Nome intiero" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "" +"El nome l'è come che 'l vien mostrà 'ntel to sito (par exenpio: Ingléxe)" + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "Inpostaçion locałi" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "" +"Inpostaçion locałi par ła łéngua (par exenpio: en_US). Par sta łéngua cuà " +"bexon métar sú el file .mo." + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "Còdexe łéngua" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "Direçion testo" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "sinistra-destra" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "destra-sinistra" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "Seji n'altra direçion de testo par ła łéngua" + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "Órdene" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "Poxiçion de ła łéngua 'ntel sełetor de łéngua" + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "Sełetor łéngua" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "Çerca traduçion" + +# @ polylang +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "Néta fora el database de traduçion stringhe" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "Łéngua de baxe" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "" +"Ghe xe artìcołi, pàxene, categorie o tag sensa łèngua inpostà. Vuto " +"inpostarle tute a ła łéngua baxe?" + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "Cata fora ła łéngua del navigador" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "" +"Cuando che vien vixità ła prima pàxena, inposta ła łéngua conforme łe " +"preferençe del navigador." + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "Canbiaminti de URL" + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "Scundi l'informaçion lenguìstica de l'URL par ła łéngua baxe" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "Mèdia" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "Ativa łéngue e traduçion par i mèdia" + +# @ polylang +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "Sincronixaçion" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "Tipi artìcoło personałixai" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "Ativa łéngue e traduçion par tipi artìcoło personałixai" + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "Tasonomie personałixae" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "Ativa łéngue e traduçion par tasonomie personałixae" + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "Modìfica" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "Scançeła" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "Còdexe" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "Bandiera" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "Artìcoło" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "Nome" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "Stringa" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "Zónta nóvo" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "Sełetor de łéngua" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "El fa védar un sełetor de łéngua" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "Tìtoło:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "El zónta łe funçion multiłéngua a WordPress" + +# @ polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "" +"Te si drio doparar WordPress %s. Polylang el ga bixogno almanco de WordPress " +"%s." + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "" +"Polylang el xe stà dexativà parché te ghè fato n'agiornaménto da na version " +"masa vècia." + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "Par favor, agiórna prima a %s, vanti de agiornar a %s." + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "Grupo" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "Vidi tuti i grupi" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "" + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "" + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "" + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "" + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "" + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "" + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-zh_CN.mo b/pole-sbv-content/plugins/polylang/languages/polylang-zh_CN.mo new file mode 100644 index 0000000000000000000000000000000000000000..e59a1154185bb592a71e241ff2f077f36f97f098 GIT binary patch literal 10914 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\n" +"Language-Team: 倡萌@WordPress大学 \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.5\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: ..\n" + +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang 提供了一个全面的 %s帮助文档%s (英文的),它包括使用 Polylang 创建" +"你的多语言网站和如何日常使用它,以及帮助程序员如何使 Polylang 适应他们的主题" +"和插件。" + +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"你还可以在 %s支持论坛%s 获取更多有用的信息。发表新话题前,请不要忘了先搜索一" +"下。" + +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "Polylang 是免费的,它和WordPress一样基于 %sGPL%s 发布。" + +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "如果你想知道如何帮助改项目,不妨 %s阅读这里%s。" + +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"最后,如果你喜欢该插件,或者它有助于你的生意,不妨捐助作者。

    非常" +"感谢 WordPress大学 为 Polylang 提供简体中文" +"支持。" + +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "语言" + +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "显示语言名称" + +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "显示国旗" + +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "强制链接到主页" + +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "隐藏当前语言" + +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "显示下拉菜单" + +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "按语言过滤内容" + +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "显示所有语言" + +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "添加新翻译" + +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "语言" + +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "翻译" + +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "设置语言" + +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "该小工具显示为:" + +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "所有语言" + +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "管理语言" + +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "WordPress默认" + +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "设置" + +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "升级语言文件..." + +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "关于 Polylang" + +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "字符串翻译" + +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "字符串翻译" + +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "输入一个有效的 WordPress 区域" + +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "语言代码必须是唯一的" + +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "语言必须有一个名字" + +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "语言已被创建,但是没有下载到WordPress语言包,请手动安装它。" + +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "小工具标题" + +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "分类法" + +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "自定义字段" + +#: admin/settings.php:321 +msgid "Comment status" +msgstr "评论状态" + +#: admin/settings.php:322 +msgid "Ping status" +msgstr "Ping 状态" + +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "置顶文章" + +#: admin/settings.php:324 +msgid "Published date" +msgstr "发布日期" + +#: admin/settings.php:325 +msgid "Post format" +msgstr "文章格式" + +#: admin/settings.php:326 +msgid "Page parent" +msgstr "父级页面" + +#: admin/settings.php:327 +msgid "Page template" +msgstr "页面模板" + +#: admin/settings.php:328 +msgid "Page order" +msgstr "页面顺序" + +#: admin/settings.php:329 +msgid "Featured image" +msgstr "特色图像" + +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "编辑语言" + +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "添加新语言" + +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "选择语言" + +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "你可以在列表中选择一个语言或者直接在下面编辑它。" + +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "全名" + +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "这个名字是用来在网站上显示的(例如: English)" + +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "区域" + +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "WordPress 语言区域(例如:en_US)。你需要为该语言安装 .mo 文件。" + +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "语言代码" + +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "文字方向" + +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "从左到右" + +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "从右到左" + +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "选择语言的文字方向" + +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "顺序" + +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "该语言在语言切换中的排列顺序" + +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "语言切换" + +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "搜索翻译" + +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "清除未使用的字符串翻译" + +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "默认语言" + +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "有文章、页面、分类和标签没有设置语言,你要设置它们为默认语言吗?" + +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "检测浏览器语言" + +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "当主页被访问时,根据浏览器偏好设置语言" + +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "URL修改" + +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "为默认语言隐藏 URL 语言信息" + +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "多媒体" + +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "为多媒体启用语言和翻译" + +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "同步" + +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "自定义文章类型" + +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "为自定义文章类型启用语言和翻译" + +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "自定义分类法" + +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "为自定义分类法启用语言和翻译" + +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "编辑" + +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "删除" + +#: admin/table-languages.php:76 +msgid "Code" +msgstr "代码" + +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "国旗" + +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "文章" + +#: admin/table-string.php:110 +msgid "Name" +msgstr "名称" + +#: admin/table-string.php:111 +msgid "String" +msgstr "字符串" + +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "添加新的" + +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "语言切换" + +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "显示一个语言切换" + +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "标题:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "增加多语言功能到 WordPress" + +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "你现在使用的是 WordPress %s,Polylang 要求至少为 WordPress %s。" + +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "Polylang 已经停用,因为你是从太旧的版本升级的。" + +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "在升级到 %s 前,请先升级到 %s。" + +#: admin/table-string.php:109 +msgid "Group" +msgstr "分组" + +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "查看所有分组" + +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "您将要永久删除此语言。您确定吗?" + +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "使用它从数据库中删除未使用的字符串,例如一个插件被卸载以后。" + +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"同步选项允许在一篇文章或页面的翻译之间保持相同的元数据内容的值(或分类法和页" +"面的父级)。[ The synchronization options allow to maintain exact same " +"values (or translations in the case of taxonomies and page parent) of meta " +"content between the translations of a post or page. ]" + +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "语言代码包含无效字符" + +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "语言根据内容来设置" + +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "文章、页面、分类和标签的URL不会被修改。" + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "语言根据链接的目录名来设置" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "例如:" + +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "语言根据链接的二级域名来设置" + +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "语言根据不同的域名来设置" + +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "在链接中移除 /language/" + +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "在链接中保留 /language/" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "首页的URL中包含语言代码,而不是页面名称或页面ID" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "例如:%s 代替 %s" + +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "无法添加语言" + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "语言已添加" + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "语言已删除" + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "语言已更新" + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "翻译已更新" + +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "语言代码 - 最好是2个字母的ISO 639-1(例如 en)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "所选的静态首页必须翻译为所有语言。" + +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "小工具文本" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "推荐插件" + +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "语言是从URL中的代码来设置的" + +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "隐藏没有翻译的语言" diff --git a/pole-sbv-content/plugins/polylang/languages/polylang-zh_TW.mo b/pole-sbv-content/plugins/polylang/languages/polylang-zh_TW.mo new file mode 100644 index 0000000000000000000000000000000000000000..2e526a6364fda9fb3cb9a2bcace23024bbb9a46f GIT binary patch literal 10784 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\n" +"Language-Team: 香腸炒魷魚 \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: ../\n" +"X-Textdomain-Support: yes\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-SearchPath-0: .\n" + +# @ polylang +#: admin/view-about.php:3 +#, php-format +msgid "" +"Polylang is provided with an extensive %sdocumentation%s (in English only). " +"It includes information on how to set up your multilingual site and use it " +"on a daily basis, a FAQ, as well as a documentation for programmers to adapt " +"their plugins and themes." +msgstr "" +"Polylang 提供一個完整的 %s說明文件%s (僅提供英文)。這包含了如何設定多語言網站" +"並日常使用,常見問題說明,以及幫助程式設計師可快速套用到他們的外掛或是佈景主" +"題。" + +# @ polylang +#: admin/view-about.php:9 +#, php-format +msgid "" +"You will also find useful information in the %ssupport forum%s. However " +"don't forget to make a search before posting a new topic." +msgstr "" +"你也可以在%s支援論壇%s獲取更多有用的資訊。但別忘記,發新問題詢問前,要先搜尋" +"與爬文。" + +# @ polylang +#: admin/view-about.php:16 +#, php-format +msgid "" +"Polylang is free of charge and is released under the same license as " +"WordPress, the %sGPL%s." +msgstr "Polylang 是免費的,與 WordPress 一樣是基於 %sGPL%s 釋出。" + +# @ polylang +#: admin/view-about.php:22 +#, php-format +msgid "If you wonder how you can help the project, just %sread this%s." +msgstr "如果你想知道如何協助這個專案,請%s閱讀這篇%s。" + +# @ polylang +#: admin/view-about.php:27 +msgid "" +"Finally if you like this plugin or if it helps your business, donations to " +"the author are greatly appreciated." +msgstr "" +"最後,如果你喜歡這個外掛或是它有助於你的業務,不妨贊助作者。

    " +"Polylang 正體中文語系由 香腸" +"炒魷魚 與 阿腸網頁設計工作" +"室 翻譯提供。" + +# @ polylang +#: admin/admin-filters-post.php:115 admin/admin.php:90 admin/settings.php:70 +#: admin/settings.php:97 include/model.php:561 +msgid "Languages" +msgstr "語言" + +# @ polylang +#: include/switcher.php:22 +msgid "Displays language names" +msgstr "顯示語言名稱" + +# @ polylang +#: include/switcher.php:23 +msgid "Displays flags" +msgstr "顯示旗幟" + +# @ polylang +#: include/switcher.php:24 +msgid "Forces link to front page" +msgstr "強制鏈結到首頁" + +# @ polylang +#: include/switcher.php:25 +msgid "Hides the current language" +msgstr "隱藏當前語言" + +# @ polylang +#: include/switcher.php:30 +msgid "Displays as dropdown" +msgstr "顯示為下拉式選單" + +# @ polylang +#: admin/admin.php:267 +msgid "Filters content by language" +msgstr "透過語言過濾內容" + +# @ polylang +#: admin/admin.php:258 +msgid "Show all languages" +msgstr "顯示所有語言" + +# @ polylang +#: admin/admin-filters-columns.php:140 admin/admin-filters-columns.php:230 +msgid "Add new translation" +msgstr "新增翻譯" + +# @ polylang +#: admin/admin-filters-columns.php:173 admin/admin-filters-media.php:55 +#: admin/admin-filters-post.php:141 admin/admin-filters-term.php:75 +#: admin/admin-filters-term.php:122 include/model.php:562 +msgid "Language" +msgstr "語言" + +# @ polylang +#: admin/table-string.php:112 admin/view-translations-media.php:5 +#: admin/view-translations-post.php:5 admin/view-translations-term.php:6 +#: admin/view-translations-term.php:11 +msgid "Translations" +msgstr "翻譯" + +# @ polylang +#: admin/admin-filters-term.php:82 admin/admin-filters-term.php:130 +msgid "Sets the language" +msgstr "設定語言" + +# @ polylang +#: admin/admin-filters.php:52 +msgid "The widget is displayed for:" +msgstr "此小工具顯示:" + +# @ polylang +#: admin/admin-filters.php:55 include/model.php:563 +msgid "All languages" +msgstr "所有語言" + +# @ polylang +#: admin/admin-filters.php:123 +msgid "Admin language" +msgstr "管理語言" + +# @ polylang +#: admin/admin-filters.php:126 +msgid "WordPress default" +msgstr "WordPress 預設" + +# @ polylang +#: admin/admin.php:167 admin/settings.php:102 +msgid "Settings" +msgstr "設定" + +# @ polylang +#: admin/admin-filters.php:160 admin/admin-filters.php:169 +msgid "Upgrading language files…" +msgstr "升級語言檔案 …" + +# @ polylang +#: admin/settings.php:62 +msgid "About Polylang" +msgstr "關於 Polylang" + +# @ polylang +#: admin/settings.php:78 +msgid "Strings translations" +msgstr "字串翻譯" + +# @ polylang +#: admin/settings.php:101 +msgid "Strings translation" +msgstr "字串翻譯" + +# @ polylang +#: admin/admin-model.php:244 +msgid "Enter a valid WordPress locale" +msgstr "輸入一個有效的 WordPress 語言環境" + +# @ polylang +#: admin/admin-model.php:252 +msgid "The language code must be unique" +msgstr "語言代碼必須是獨一無二" + +# @ polylang +#: admin/admin-model.php:256 +msgid "The language must have a name" +msgstr "這個語言必須有一個名字" + +# @ polylang +#: admin/admin.php:367 admin/settings.php:180 +msgid "" +"The language was created, but the WordPress language file was not " +"downloaded. Please install it manually." +msgstr "語言已經被建立,但是WordPress語言包並沒有下載到,請手動安裝它。" + +# @ polylang +#: admin/admin-strings.php:59 +msgid "Widget title" +msgstr "小工具標題" + +# @ polylang +#: admin/settings.php:319 +msgid "Taxonomies" +msgstr "自訂分類" + +# @ polylang +#: admin/settings.php:320 +msgid "Custom fields" +msgstr "自訂欄位" + +# @ polylang +#: admin/settings.php:321 +msgid "Comment status" +msgstr "迴響狀態" + +# @ polylang +#: admin/settings.php:322 +msgid "Ping status" +msgstr "通知狀態" + +# @ polylang +#: admin/settings.php:323 +msgid "Sticky posts" +msgstr "置頂文章" + +# @ polylang +#: admin/settings.php:324 +msgid "Published date" +msgstr "發佈日期" + +# @ polylang +#: admin/settings.php:325 +msgid "Post format" +msgstr "文章格式" + +# @ polylang +#: admin/settings.php:326 +msgid "Page parent" +msgstr "分頁上層" + +# @ polylang +#: admin/settings.php:327 +msgid "Page template" +msgstr "分頁模板" + +# @ polylang +#: admin/settings.php:328 +msgid "Page order" +msgstr "分頁順序" + +# @ polylang +#: admin/settings.php:329 +msgid "Featured image" +msgstr "特色圖片" + +# @ polylang +#: admin/view-tab-lang.php:21 +msgid "Edit language" +msgstr "編輯語言" + +# @ polylang +#: admin/view-tab-lang.php:21 admin/view-tab-lang.php:96 +msgid "Add new language" +msgstr "新增語言" + +# @ polylang +#: admin/view-tab-lang.php:37 +msgid "Choose a language" +msgstr "選擇一個語言" + +# @ polylang +#: admin/view-tab-lang.php:51 +msgid "You can choose a language in the list or directly edit it below." +msgstr "你可以在列表內選擇一個語言或直接在這邊編輯它。" + +# @ polylang +#: admin/table-languages.php:74 admin/view-tab-lang.php:55 +msgid "Full name" +msgstr "全名" + +# @ polylang +#: admin/view-tab-lang.php:57 +msgid "The name is how it is displayed on your site (for example: English)." +msgstr "這個名字是顯示於網站上(範例: English)" + +# @ polylang +#: admin/table-languages.php:75 admin/view-tab-lang.php:61 +msgid "Locale" +msgstr "語言環境" + +# @ polylang +#: admin/view-tab-lang.php:66 +msgid "" +"WordPress Locale for the language (for example: en_US). You will need to " +"install the .mo file for this language." +msgstr "WordPress 語言環境設定(範例:en_US)。你必須安裝對應此語言的 .mo 檔案。" + +# @ polylang +#: admin/view-tab-lang.php:70 +msgid "Language code" +msgstr "語言代碼" + +# @ polylang +#: admin/view-tab-lang.php:76 +msgid "Text direction" +msgstr "文字方向" + +# @ polylang +#: admin/view-tab-lang.php:80 +msgid "left to right" +msgstr "左到右" + +# @ polylang +#: admin/view-tab-lang.php:85 +msgid "right to left" +msgstr "右到左" + +# @ polylang +#: admin/view-tab-lang.php:87 +msgid "Choose the text direction for the language" +msgstr "選擇此語言的文字方向" + +# @ polylang +#: admin/table-languages.php:77 admin/view-tab-lang.php:91 +msgid "Order" +msgstr "順序" + +# @ polylang +#: admin/view-tab-lang.php:93 +msgid "Position of the language in the language switcher" +msgstr "此語言在語言切換選項中的位置" + +# @ polylang +#: admin/admin-nav-menu.php:54 admin/admin-nav-menu.php:92 +#: admin/admin-nav-menu.php:95 admin/admin-nav-menu.php:126 +#: admin/admin-nav-menu.php:188 install/upgrade.php:301 +msgid "Language switcher" +msgstr "語言切換" + +# @ polylang +#: admin/view-tab-strings.php:8 +msgid "Search translations" +msgstr "搜尋翻譯" + +# @ polylang +#: admin/view-tab-strings.php:11 +msgid "Clean strings translation database" +msgstr "清除資料庫中翻譯的字串" + +# @ polylang +#: admin/view-tab-settings.php:14 +msgid "Default language" +msgstr "預設語言" + +# @ polylang +#: admin/view-tab-settings.php:29 +msgid "" +"There are posts, pages, categories or tags without language set. Do you want " +"to set them all to default language ?" +msgstr "有文章、頁面、分類或標籤尚未設置語言。你要將要全部設定為預設語言嗎?" + +# @ polylang +#: admin/view-tab-settings.php:149 +msgid "Detect browser language" +msgstr "偵測瀏覽器語言" + +# @ polylang +#: admin/view-tab-settings.php:155 +msgid "" +"When the front page is visited, set the language according to the browser " +"preference" +msgstr "當首頁被訪問時,根據瀏覽器的偏好設置語言" + +# @ polylang +#: admin/view-tab-settings.php:37 +msgid "URL modifications" +msgstr "URL 網址改寫" + +# @ polylang +#: admin/view-tab-settings.php:93 +msgid "Hide URL language information for default language" +msgstr "隱藏預設語言的 URL 訊息" + +# @ polylang +#: admin/view-tab-settings.php:162 +msgid "Media" +msgstr "媒體庫" + +# @ polylang +#: admin/view-tab-settings.php:168 +msgid "Activate languages and translations for media" +msgstr "為媒體庫啟用語言與翻譯功能" + +# @ polylang +#: admin/view-tab-settings.php:215 +msgid "Synchronization" +msgstr "同步" + +# @ polylang +#: admin/view-tab-settings.php:176 +msgid "Custom post types" +msgstr "自訂文章格式" + +# @ polylang +#: admin/view-tab-settings.php:189 +msgid "Activate languages and translations for custom post types." +msgstr "為自訂文章格式啟用語言與翻譯。" + +# @ polylang +#: admin/view-tab-settings.php:196 +msgid "Custom taxonomies" +msgstr "自定義分類" + +# @ polylang +#: admin/view-tab-settings.php:209 +msgid "Activate languages and translations for custom taxonomies." +msgstr "為自定義分類啟用語言與翻譯功能。" + +# @ polylang +#: admin/admin-filters-post.php:433 admin/admin-filters-term.php:642 +#: admin/table-languages.php:54 admin/view-translations-media.php:21 +msgid "Edit" +msgstr "編輯" + +# @ polylang +#: admin/table-languages.php:60 admin/table-string.php:168 +msgid "Delete" +msgstr "刪除" + +# @ polylang +#: admin/table-languages.php:76 +msgid "Code" +msgstr "代碼" + +# @ polylang +#: admin/table-languages.php:78 +msgid "Flag" +msgstr "旗幟" + +# @ polylang +#: admin/table-languages.php:79 +msgid "Posts" +msgstr "文章" + +# @ polylang +#: admin/table-string.php:110 +msgid "Name" +msgstr "名稱" + +# @ polylang +#: admin/table-string.php:111 +msgid "String" +msgstr "字串" + +# @ polylang +#: admin/view-translations-media.php:30 admin/view-translations-post.php:21 +#: admin/view-translations-term.php:30 +msgid "Add new" +msgstr "新增" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Language Switcher" +msgstr "語言切換" + +# @ polylang +#: include/widget-languages.php:16 +msgid "Displays a language switcher" +msgstr "顯示語言切換工具" + +# @ polylang +#: include/widget-languages.php:75 +msgid "Title:" +msgstr "標題:" + +# @ polylang +#. translators: plugin header field 'Description' +#: polylang.php:0 +msgid "Adds multilingual capability to WordPress" +msgstr "讓WordPress增加多語言功能" + +# @ polylang +#: install/install.php:24 +#, php-format +msgid "You are using WordPress %s. Polylang requires at least WordPress %s." +msgstr "你正在使用 WordPress %s。 Polylang 最低系統需求 WordPress %s。" + +# @ polylang +#: install/upgrade.php:76 +msgid "" +"Polylang has been deactivated because you upgraded from a too old version." +msgstr "Polylang 已經停用,因為你從太舊的版本升級。" + +# @ polylang +#: install/upgrade.php:78 +#, php-format +msgid "Please upgrade first to %s before ugrading to %s." +msgstr "在升級到 %s 之前請先升級到 %s。" + +# @ polylang +#: admin/table-string.php:109 +msgid "Group" +msgstr "群組" + +# @ polylang +#: admin/table-string.php:187 +msgid "View all groups" +msgstr "檢視全部群組" + +# @ polylang +#: admin/table-languages.php:59 +msgid "You are about to permanently delete this language. Are you sure?" +msgstr "你將永遠刪除此語言。確定刪除?" + +# @ polylang +#: admin/view-tab-strings.php:12 +msgid "" +"Use this to remove unused strings from database, for example after a plugin " +"has been uninstalled." +msgstr "使用它從資料庫中刪除未使用的字串。例如在外掛被移除後。" + +# @ polylang +#: admin/view-tab-settings.php:226 +msgid "" +"The synchronization options allow to maintain exact same values (or " +"translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page." +msgstr "" +"同步的設定允許在一篇文章或是頁面(或自定義分類、上層頁面)的翻譯保存相同內容的" +"值。
    [ The synchronization options allow to maintain exact same values " +"(or translations in the case of taxonomies and page parent) of meta content " +"between the translations of a post or page.]" + +# @ polylang +#: admin/admin-model.php:248 +msgid "The language code contains invalid characters" +msgstr "語言代碼中帶有無效的字元" + +# @ polylang +#: admin/view-tab-settings.php:43 +msgid "The language is set from content" +msgstr "只針對內容作多語言設定。(網址不變更)" + +# @ polylang +#: admin/view-tab-settings.php:46 +msgid "Posts, pages, categories and tags urls are not modified." +msgstr "文章、頁面、分類與標籤的網址並不會被改寫。" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the directory name in pretty permalinks" +msgstr "語言設置是在漂亮的固定網址中加入目錄名稱" + +# @ polylang +#: admin/view-tab-settings.php:54 admin/view-tab-settings.php:63 +#: admin/view-tab-settings.php:110 admin/view-tab-settings.php:119 +msgid "Example:" +msgstr "範例:" + +# @ polylang +#: admin/view-tab-settings.php:60 +msgid "The language is set from the subdomain name in pretty permalinks" +msgstr "語言設置是透過子網域來設定漂亮的固定網址。" + +# @ polylang +#: admin/view-tab-settings.php:69 +msgid "The language is set from different domains" +msgstr "透過不同的網域名稱來設置不同的語言。" + +# @ polylang +#: admin/view-tab-settings.php:107 +msgid "Remove /language/ in pretty permalinks" +msgstr "在漂亮的固定網址中移除「/language/」" + +# @ polylang +#: admin/view-tab-settings.php:116 +msgid "Keep /language/ in pretty permalinks" +msgstr "在漂亮的固定網址中保留「/language/」" + +# @ polylang +#: admin/view-tab-settings.php:131 +msgid "" +"The front page url contains the language code instead of the page name or " +"page id" +msgstr "首頁URL包含語言代碼而不是頁面名稱或是頁面ID" + +# @ polylang +#: admin/view-tab-settings.php:139 +#, php-format +msgid "Example: %s instead of %s" +msgstr "範例: %s 而不是 %s" + +# @ polylang +#: admin/admin-model.php:38 +msgid "Impossible to add the language." +msgstr "無法加入此語言。" + +# @ polylang +#: admin/admin-model.php:66 +msgid "Language added." +msgstr "語言已新增。" + +# @ polylang +#: admin/admin-model.php:146 +msgid "Language deleted." +msgstr "語言已刪除。" + +# @ polylang +#: admin/admin-model.php:227 +msgid "Language updated." +msgstr "語言已更新。" + +# @ polylang +#: admin/settings.php:239 +msgid "Translations updated." +msgstr "翻譯已更新。" + +# @ polylang +#: admin/view-tab-lang.php:72 +msgid "Language code - preferably 2-letters ISO 639-1 (for example: en)" +msgstr "語言代碼 - 2 字元語言代碼,依據 ISO 639-1 標準 (例如: en)" + +# @ polylang +#: admin/admin-filters.php:203 +msgid "The chosen static front page must be translated in all languages." +msgstr "" + +# @ polylang +#: admin/admin-strings.php:60 +msgid "Widget text" +msgstr "" + +# @ polylang +#: admin/settings.php:52 +msgid "Recommended plugins" +msgstr "" + +# @ polylang +#: admin/view-tab-settings.php:51 +msgid "The language is set from the code in the URL" +msgstr "" + +# @ polylang +#: include/switcher.php:26 +msgid "Hides languages with no translation" +msgstr "" diff --git a/pole-sbv-content/plugins/polylang/lingotek/image01.gif b/pole-sbv-content/plugins/polylang/lingotek/image01.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ae60ac5c43b3709ad921caed64fa7d461558140 GIT binary patch literal 357116 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

    HU6*Hjv^qI%+PAzpte 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

    CwdrR9ZQENzOuAL^2) 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
      3dk?`O!hM4*r;6q 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 Vw4o1;=tL`e(Tr}iqZu6#06P!>@s0oh literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/lingotek/image02.png b/pole-sbv-content/plugins/polylang/lingotek/image02.png new file mode 100644 index 0000000000000000000000000000000000000000..0293bb44d62ba00f665abc1b26604c213b62899b GIT binary patch literal 17824 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

      +
        + post_types as $post_type ) { + $pt = get_post_type_object( $post_type ); + if ( ! empty( $pt ) ) { + printf( + '
      • ', + esc_attr( $post_type ), + in_array( $post_type, $this->options['post_types'] ) ? 'checked="checked"' : '', + esc_html( $pt->labels->name ) + ); + } + } + ?> +
      +

      + taxonomies ) ) { + ?> +

      +
        + taxonomies as $taxonomy ) { + $tax = get_taxonomy( $taxonomy ); + if ( ! empty( $tax ) ) { + printf( + '
      • ', + esc_attr( $taxonomy ), + in_array( $taxonomy, $this->options['taxonomies'] ) ? 'checked="checked"' : '', + esc_html( $tax->labels->name ) + ); + } + } + ?> +
      +

      + 'licenses', + 'title' => __( 'License keys', 'polylang' ), + 'description' => __( 'Manage licenses for Polylang Pro or addons.', 'polylang' ), + ) ); + + $this->buttons['cancel'] = sprintf( '', __( 'Close' ) ); + + $this->items = apply_filters( 'pll_settings_licenses', array() ); + + add_action( 'wp_ajax_pll_deactivate_license', array( $this, 'deactivate_license' ) ); + } + + /** + * Tells if the module is active + * + * @since 1.9 + * + * @return bool + */ + public function is_active() { + return ! empty( $this->items ); + } + + /** + * Displays the settings form + * + * @since 1.9 + */ + protected function form() { + if ( ! empty( $this->items ) ) { ?> + + items as $item ) { + echo $this->get_row( $item ); + } + ?> +
      + license_data ) ) { + $license = $item->license_data; + } + + $class = 'license-null'; + + $out = sprintf( + '' . + '', + esc_attr( $item->id ), esc_attr( $item->name ), esc_html( $item->license_key ) + ); + + if ( ! empty( $license ) && is_object( $license ) ) { + $now = current_time( 'timestamp' ); + $expiration = strtotime( $license->expires, $now ); + + // Special case: the license expired after the last check + if ( $license->success && $expiration < $now ) { + $license->success = false; + $license->error = 'expired'; + } + + if ( false === $license->success ) { + $class = 'notice-error notice-alt'; + + switch ( $license->error ) { + case 'expired': + $message = sprintf( + /* translators: %1$s is a date, %2$s and %3$s are html tags */ + __( 'Your license key expired on %1$s. Please %2$srenew your license key%3$s.', 'polylang' ), + date_i18n( get_option( 'date_format' ), strtotime( $license->expires, current_time( 'timestamp' ) ) ), + sprintf( '', 'https://polylang.pro/checkout/?edd_license_key=' . $item->license_key ), + '' + ); + break; + + case 'missing': + $message = sprintf( + /* translators: %s are html tags */ + __( 'Invalid license. Please %svisit your account page%s and verify it.', 'polylang' ), + sprintf( '', 'https://polylang.pro/account' ), + '' + ); + break; + + case 'invalid': + case 'site_inactive': + $message = sprintf( + /* translators: %1$s is a product name, %2$s and %3$s are html tags */ + __( 'Your %1$s license key is not active for this URL. Please %2$svisit your account page%3$s to manage your license key URLs.', 'polylang' ), + $item->name, + sprintf( '', 'https://polylang.pro/account' ), + '' + ); + break; + + case 'item_name_mismatch': + /* translators: %s is a product name */ + $message = sprintf( __( 'This is not a %s license key.', 'polylang' ), $item->name ); + break; + + case 'no_activations_left': + $message = sprintf( + /* translators: %s are html tags */ + __( 'Your license key has reached its activation limit. %sView possible upgrades%s now.', 'polylang' ), + sprintf( '', 'https://polylang.pro/account' ), + '' + ); + break; + } + } else { + $class = 'license-valid'; + + $out .= sprintf( '', $item->id, __( 'Deactivate', 'polylang' ) ); + + if ( 'lifetime' === $license->expires ) { + $message = __( 'The license key never expires.', 'polylang' ); + } elseif ( $expiration > $now && $expiration - $now < ( DAY_IN_SECONDS * 30 ) ) { + $class = 'notice-warning notice-alt'; + $message = sprintf( + /* translators: %1$s is a date, %2$s and %3$s are html tags */ + __( 'Your license key expires soon! It expires on %1$s. %2$sRenew your license key%3$s.', 'polylang' ), + date_i18n( get_option( 'date_format' ), strtotime( $license->expires, $now ) ), + sprintf( '', 'https://polylang.pro/checkout/?edd_license_key=' . $item->license_key ), + '' + ); + } else { + $message = sprintf( + /* translators: %s is a date */ + __( 'Your license key expires on %s.', 'polylang' ), + date_i18n( get_option( 'date_format' ), strtotime( $license->expires, $now ) ) + ); + } + } + } + + if ( ! empty( $message ) ) { + $out .= '

      ' . $message . '

      '; + } + + return sprintf( '%s', $item->id, $class, $out ); + } + + /** + * Ajax method to save the license keys and activate the licenses at the same time + * Overrides parent's method + * + * @since 1.9 + */ + public function save_options() { + check_ajax_referer( 'pll_options', '_pll_nonce' ); + if ( ! current_user_can( 'manage_options' ) ) { + wp_die( -1 ); + } + + if ( $this->module === $_POST['module'] && ! empty( $_POST['licenses'] ) ) { + $x = new WP_Ajax_Response(); + foreach ( $this->items as $item ) { + $updated_item = $item->activate_license( sanitize_text_field( $_POST['licenses'][ $item->id ] ) ); + $x->Add( array( 'what' => 'license-update', 'data' => $item->id, 'supplemental' => array( 'html' => $this->get_row( $updated_item ) ) ) ); + } + + // Updated message + add_settings_error( 'general', 'settings_updated', __( 'Settings saved.' ), 'updated' ); + ob_start(); + settings_errors(); + $x->Add( array( 'what' => 'success', 'data' => ob_get_clean() ) ); + $x->send(); + } + } + + /** + * Ajax method to deactivate a license + * + * @since 1.9 + */ + public function deactivate_license() { + check_ajax_referer( 'pll_options', '_pll_nonce' ); + + if ( ! current_user_can( 'manage_options' ) ) { + wp_die( -1 ); + } + + $id = sanitize_text_field( substr( $_POST['id'], 11 ) ); + wp_send_json( array( + 'id' => $id, + 'html' => $this->get_row( $this->items[ $id ]->deactivate_license() ), + ) ); + } +} diff --git a/pole-sbv-content/plugins/polylang/settings/settings-media.php b/pole-sbv-content/plugins/polylang/settings/settings-media.php new file mode 100644 index 00000000..80c4261a --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/settings-media.php @@ -0,0 +1,25 @@ + 'media', + 'title' => __( 'Media' ), + 'description' => __( 'Activate languages and translations for media', 'polylang' ), + 'active_option' => 'media_support', + ) ); + } +} diff --git a/pole-sbv-content/plugins/polylang/settings/settings-module.php b/pole-sbv-content/plugins/polylang/settings/settings-module.php new file mode 100644 index 00000000..0a67e753 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/settings-module.php @@ -0,0 +1,263 @@ +options = &$polylang->options; + $this->model = &$polylang->model; + $this->links_model = &$polylang->links_model; + + $args = wp_parse_args( $args, array( + 'title' => '', + 'description' => '', + 'active_option' => false, + ) ); + + foreach ( $args as $prop => $value ) { + $this->$prop = $value; + } + + // All possible action links, even if not always a link ;-) + $this->action_links = array( + 'configure' => sprintf( + '%s', + esc_attr__( 'Configure this module', 'polylang' ), + '#', + esc_html__( 'Settings', 'polylang' ) + ), + + 'deactivate' => sprintf( + '%s', + esc_attr__( 'Deactivate this module', 'polylang' ), + wp_nonce_url( '?page=mlang&tab=modules&pll_action=deactivate&noheader=true&module=' . $this->module, 'pll_deactivate' ), + esc_html__( 'Deactivate', 'polylang' ) + ), + + 'activate' => sprintf( + '%s', + esc_attr__( 'Activate this module', 'polylang' ), + wp_nonce_url( '?page=mlang&tab=modules&pll_action=activate&noheader=true&module=' . $this->module, 'pll_activate' ), + esc_html__( 'Activate', 'polylang' ) + ), + + 'activated' => esc_html__( 'Activated', 'polylang' ), + + 'deactivated' => esc_html__( 'Deactivated', 'polylang' ), + ); + + $this->buttons = array( + 'cancel' => sprintf( '', esc_html__( 'Cancel' ) ), + 'save' => sprintf( '', esc_html__( 'Save Changes' ) ), + ); + + // Ajax action to save options + add_action( 'wp_ajax_pll_save_options', array( $this, 'save_options' ) ); + } + + /** + * Tells if the module is active + * + * @since 1.8 + * + * @return bool + */ + public function is_active() { + return empty( $this->active_option ) || ! empty( $this->options[ $this->active_option ] ); + } + + /** + * Activates the module + * + * @since 1.8 + */ + public function activate() { + if ( ! empty( $this->active_option ) ) { + $this->options[ $this->active_option ] = true; + update_option( 'polylang', $this->options ); + } + } + + /** + * Deactivates the module + * + * @since 1.8 + */ + public function deactivate() { + if ( ! empty( $this->active_option ) ) { + $this->options[ $this->active_option ] = false; + update_option( 'polylang', $this->options ); + } + } + + /** + * Protected method to display a configuration form + * + * @since 1.8 + */ + protected function form() { + // Child classes can provide a form + } + + /** + * Public method returning the form if any + * + * @since 1.8 + * + * @return string + */ + public function get_form() { + static $form = false; + + // Read the form only once + if ( false === $form ) { + ob_start(); + $this->form(); + $form = ob_get_clean(); + } + + return $form; + } + + /** + * Allows child classes to validate their options before saving + * + * @since 1.8 + * + * @param array $options Raw options + * @return array Options + */ + protected function update( $options ) { + return array(); // It's responsibility of the child class to decide what is saved + } + + /** + * Ajax method to save the options + * + * @since 1.8 + */ + public function save_options() { + check_ajax_referer( 'pll_options', '_pll_nonce' ); + if ( ! current_user_can( 'manage_options' ) ) { + wp_die( -1 ); + } + + if ( $this->module == $_POST['module'] ) { + // It's up to the child class to decide which options are saved, whether there are errors or not + $post = array_diff_key( $_POST, array_flip( array( 'action', 'module', 'pll_ajax_backend', '_pll_nonce' ) ) ); + $options = $this->update( $post ); + $this->options = array_merge( $this->options, $options ); + update_option( 'polylang', $this->options ); + + // Refresh language cache in case home urls have been modified + $this->model->clean_languages_cache(); + + // Refresh rewrite rules in case rewrite, hide_default, post types or taxonomies options have been modified + // Don't use flush_rewrite_rules as we don't have the right links model and permastruct + delete_option( 'rewrite_rules' ); + + ob_start(); + + if ( ! get_settings_errors() ) { + // Send update message + add_settings_error( 'general', 'settings_updated', __( 'Settings saved.' ), 'updated' ); + settings_errors(); + $x = new WP_Ajax_Response( array( 'what' => 'success', 'data' => ob_get_clean() ) ); + $x->send(); + } else { + // Send error messages + settings_errors(); + $x = new WP_Ajax_Response( array( 'what' => 'error', 'data' => ob_get_clean() ) ); + $x->send(); + } + } + } + + /** + * Get the row actions + * + * @since 1.8 + * + * @return array + */ + protected function get_actions() { + if ( $this->is_active() && $this->get_form() ) { + $actions[] = 'configure'; + } + + if ( $this->active_option ) { + $actions[] = $this->is_active() ? 'deactivate' : 'activate'; + } + + if ( empty( $actions ) ) { + $actions[] = $this->is_active() ? 'activated' : 'deactivated'; + } + + return $actions; + } + + /** + * Get the actions links + * + * @since 1.8 + * + * @return array + */ + public function get_action_links() { + return array_intersect_key( $this->action_links, array_flip( $this->get_actions() ) ); + } + + /** + * Default upgrade message ( to Pro version ) + * + * @since 1.9 + * + * @return string + */ + protected function default_upgrade_message() { + return sprintf( + '%s %s', + __( 'You need Polylang Pro to enable this feature.', 'polylang' ), + 'https://polylang.pro', + __( 'Upgrade now.', 'polylang' ) + ); + } + + /** + * Allows child classes to display an upgrade message + * + * @since 1.9 + * + * @return string + */ + public function get_upgrade_message() { + return ''; + } + + /** + * Get the buttons + * + * @since 1.9 + * + * @return array + */ + public function get_buttons() { + return $this->buttons; + } +} diff --git a/pole-sbv-content/plugins/polylang/settings/settings-tools.php b/pole-sbv-content/plugins/polylang/settings/settings-tools.php new file mode 100644 index 00000000..15056b9f --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/settings-tools.php @@ -0,0 +1,49 @@ + 'tools', + 'title' => __( 'Tools', 'polylang' ), + 'description' => __( 'Decide whether to remove all data when deleting Polylang.', 'polylang' ), + ) ); + } + + /** + * displays the settings form + * + * @since 1.8 + */ + protected function form() { + printf( + '', + empty( $this->options['uninstall'] ) ? '' : 'checked="checked"', + esc_html__( 'Remove all Polylang data when using the "Delete" link on the plugins screen.', 'polylang' ) + ); + } + + /** + * sanitizes the settings before saving + * + * @since 1.8 + * + * @param array $options + */ + protected function update( $options ) { + $newoptions['uninstall'] = isset( $options['uninstall'] ) ? 1 : 0; + return $newoptions; // take care to return only validated options + } +} diff --git a/pole-sbv-content/plugins/polylang/settings/settings-url.php b/pole-sbv-content/plugins/polylang/settings/settings-url.php new file mode 100644 index 00000000..9305c920 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/settings-url.php @@ -0,0 +1,284 @@ + 'url', + 'title' => __( 'URL modifications', 'polylang' ), + 'description' => __( 'Decide how your URLs will look like.', 'polylang' ), + 'configure' => true, + ) ); + + $this->links_model = &$polylang->links_model; + $this->page_on_front = &$polylang->static_pages->page_on_front; + } + + /** + * Displays the fieldset to choose how the language is set + * + * @since 1.8 + */ + protected function force_lang() {?> + +

      + +

      ' . esc_html( home_url( $this->links_model->using_permalinks ? 'en/my-post/' : '?lang=en&p=1' ) ) . ''; ?>

      + +

      ' . esc_html( str_replace( array( '://', 'www.' ), array( '://en.', '' ), home_url( 'my-post/' ) ) ) . ''; ?>

      + + options['force_lang'] ? '' : 'style="display: none;"'; ?>> + model->get_languages_list() as $lg ) { + printf( + '' . + '', + esc_attr( $lg->slug ), + esc_attr( $lg->name ), + esc_url( isset( $this->options['domains'][ $lg->slug ] ) ? $this->options['domains'][ $lg->slug ] : ( $lg->slug == $this->options['default_lang'] ? $this->links_model->home : '' ) ) + ); + } + ?> +
      + + + + +

      ' . esc_html( home_url( 'en/' ) ) . ''; ?>

      + +

      ' . esc_html( home_url( 'language/en/' ) ) . ''; ?>

      + + +

      + model->post->get_language( $this->page_on_front ); + $lang = $lang ? $lang : $this->model->get_language( $this->options['default_lang'] ); + printf( + /* translators: %s are urls */ + esc_html__( 'Example: %s instead of %s', 'polylang' ), + '' . esc_html( $this->links_model->home_url( $lang ) ) . '', + '' . esc_html( _get_page_link( $this->page_on_front ) ) . '' + ); + ?> +

      + +
      +
      + force_lang(); ?> +
      +
      + +
      +
      $this->options['force_lang'] ? '' : 'style="display: none;"'; ?>> + hide_default(); ?> +
      + links_model->using_permalinks ) { + ?> +
      $this->options['force_lang'] ? '' : 'style="display: none;"'; ?>> + rewrite(); ?> +
      + page_on_front ) { + ?> +
      $this->options['force_lang'] ? '' : 'style="display: none;"'; ?>> + redirect_lang(); ?> +
      + +
      + $domain ) { + if ( empty( $domain ) ) { + $lang = $this->model->get_language( $key ); + add_settings_error( 'general', 'pll_invalid_domain', esc_html( sprintf( + /* translators: %s is a native language name */ + __( 'Please enter a valid URL for %s.', 'polylang' ), $lang->name + ) ) ); + } + else { + $newoptions['domains'][ $key ] = esc_url_raw( trim( $domain ) ); + } + } + } + + foreach ( array( 'hide_default', 'redirect_lang' ) as $key ) { + $newoptions[ $key ] = isset( $options[ $key ] ) ? 1 : 0; + } + + if ( 3 == $options['force_lang'] ) { + if ( ! class_exists( 'PLL_Xdata_Domain', true ) ) { + $newoptions['browser'] = 0; + } + $newoptions['hide_default'] = 0; + } + + // Check if domains exist + if ( $newoptions['force_lang'] > 1 ) { + $this->check_domains( $newoptions ); + } + + return $newoptions; // Take care to return only validated options + } + + /** + * Check if subdomains or domains are accessible + * + * @since 1.8 + * + * @param array $options new set of options to test + */ + protected function check_domains( $options ) { + $options = array_merge( $this->options, $options ); + $model = new PLL_Model( $options ); + $links_model = $model->get_links_model(); + foreach ( $this->model->get_languages_list() as $lang ) { + $url = add_query_arg( 'deactivate-polylang', 1, $links_model->home_url( $lang ) ); + // Don't redefine vip_safe_wp_remote_get() as it has not the same signature as wp_remote_get() + $response = function_exists( 'vip_safe_wp_remote_get' ) ? vip_safe_wp_remote_get( esc_url_raw( $url ) ) : wp_remote_get( esc_url_raw( $url ) ); + $response_code = wp_remote_retrieve_response_code( $response ); + + if ( 200 != $response_code ) { + add_settings_error( 'general', 'pll_invalid_domain', esc_html( sprintf( + /* translators: %s is an url */ + __( 'Polylang was unable to access the URL %s. Please check that the URL is valid.', 'polylang' ), $url + ) ) ); + } + } + } +} diff --git a/pole-sbv-content/plugins/polylang/settings/settings.php b/pole-sbv-content/plugins/polylang/settings/settings.php new file mode 100644 index 00000000..2a74096c --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/settings.php @@ -0,0 +1,319 @@ + inherited, reference to Polylang options array + * model => inherited, reference to PLL_Model object + * links_model => inherited, reference to PLL_Links_Model object + * links => inherited, reference to PLL_Admin_Links object + * static_pages => inherited, reference to PLL_Admin_Static_Pages object + * filters_links => inherited, reference to PLL_Filters_Links object + * curlang => inherited, optional, current language used to filter admin content + * pref_lang => inherited, preferred language used as default when saving posts or terms + * + * @since 1.2 + */ +class PLL_Settings extends PLL_Admin_Base { + protected $active_tab, $modules; + + /** + * Constructor + * + * @since 1.2 + * + * @param object $links_model + */ + public function __construct( &$links_model ) { + parent::__construct( $links_model ); + + if ( isset( $_GET['page'] ) ) { + $this->active_tab = 'mlang' === $_GET['page'] ? 'lang' : substr( $_GET['page'], 6 ); + } + + PLL_Admin_Strings::init(); + + // FIXME put this as late as possible + add_action( 'admin_init', array( $this, 'register_settings_modules' ) ); + + // adds screen options and the about box in the languages admin panel + add_action( 'load-toplevel_page_mlang', array( $this, 'load_page' ) ); + add_action( 'load-languages_page_mlang_strings', array( $this, 'load_page_strings' ) ); + + // saves per-page value in screen option + add_filter( 'set-screen-option', array( $this, 'set_screen_option' ), 10, 3 ); + } + + /** + * Initializes the modules + * + * @since 1.8 + */ + public function register_settings_modules() { + $modules = array( + 'PLL_Settings_Tools', + 'PLL_Settings_Licenses', + ); + + if ( $this->model->get_languages_list() ) { + $modules = array_merge( array( + 'PLL_Settings_Url', + 'PLL_Settings_Browser', + 'PLL_Settings_Media', + 'PLL_Settings_CPT', + 'PLL_Settings_Sync', + 'PLL_Settings_WPML', + 'PLL_Settings_Share_Slug', + 'PLL_Settings_Translate_Slugs', + ), $modules ); + } + + /** + * Filter the list of setting modules + * + * @since 1.8 + * + * @param array $modules the list of module classes + */ + $modules = apply_filters( 'pll_settings_modules', $modules ); + + foreach ( $modules as $key => $class ) { + $key = is_numeric( $key ) ? strtolower( str_replace( 'PLL_Settings_', '', $class ) ) : $key; + $this->modules[ $key ] = new $class( $this ); + } + } + + /** + * Loads the about metabox + * + * @since 0.8 + */ + public function metabox_about() { + include PLL_SETTINGS_INC . '/view-about.php'; + } + + /** + * Adds screen options and the about box in the languages admin panel + * + * @since 0.9.5 + */ + public function load_page() { + if ( ! defined( 'PLL_DISPLAY_ABOUT' ) || PLL_DISPLAY_ABOUT ) { + add_meta_box( + 'pll-about-box', + __( 'About Polylang', 'polylang' ), + array( $this, 'metabox_about' ), + 'settings_page_mlang', // FIXME not shown in screen options + 'normal' + ); + } + + add_screen_option( 'per_page', array( + 'label' => __( 'Languages', 'polylang' ), + 'default' => 10, + 'option' => 'pll_lang_per_page', + ) ); + + add_action( 'admin_notices', array( $this, 'notice_objects_with_no_lang' ) ); + } + + /** + * Adds screen options in the strings translations admin panel + * + * @since 2.1 + */ + public function load_page_strings() { + add_screen_option( 'per_page', array( + 'label' => __( 'Strings translations', 'polylang' ), + 'default' => 10, + 'option' => 'pll_strings_per_page', + ) ); + } + + /** + * Save the "Views/Uploads per page" option set by this user + * + * @since 0.9.5 + * + * @param mixed $status false or value returned by previous filter + * @param string $option Name of the option being changed + * @param string $value Value of the option + * + * @return string New value if this is our option, otherwise nothing + */ + public function set_screen_option( $status, $option, $value ) { + return 'pll_lang_per_page' === $option || 'pll_strings_per_page' === $option ? $value : $status; + } + + /** + * Manages the user input for the languages pages + * + * @since 1.9 + * + * @param string $action + */ + public function handle_actions( $action ) { + switch ( $action ) { + case 'add': + check_admin_referer( 'add-lang', '_wpnonce_add-lang' ); + + if ( $this->model->add_language( $_POST ) && 'en_US' !== $_POST['locale'] ) { + // attempts to install the language pack + require_once ABSPATH . 'wp-admin/includes/translation-install.php'; + if ( ! wp_download_language_pack( $_POST['locale'] ) ) { + add_settings_error( 'general', 'pll_download_mo', __( 'The language was created, but the WordPress language file was not downloaded. Please install it manually.', 'polylang' ) ); + } + + // force checking for themes and plugins translations updates + wp_clean_themes_cache(); + wp_clean_plugins_cache(); + } + self::redirect(); // to refresh the page ( possible thanks to the $_GET['noheader']=true ) + break; + + case 'delete': + check_admin_referer( 'delete-lang' ); + + if ( ! empty( $_GET['lang'] ) ) { + $this->model->delete_language( (int) $_GET['lang'] ); + } + + self::redirect(); // to refresh the page ( possible thanks to the $_GET['noheader']=true ) + break; + + case 'update': + check_admin_referer( 'add-lang', '_wpnonce_add-lang' ); + $error = $this->model->update_language( $_POST ); + self::redirect(); // to refresh the page ( possible thanks to the $_GET['noheader']=true ) + break; + + case 'default-lang': + check_admin_referer( 'default-lang' ); + + if ( $lang = $this->model->get_language( (int) $_GET['lang'] ) ) { + $this->model->update_default_lang( $lang->slug ); + } + + self::redirect(); // to refresh the page ( possible thanks to the $_GET['noheader']=true ) + break; + + case 'content-default-lang': + check_admin_referer( 'content-default-lang' ); + + if ( $nolang = $this->model->get_objects_with_no_lang() ) { + if ( ! empty( $nolang['posts'] ) ) { + $this->model->set_language_in_mass( 'post', $nolang['posts'], $this->options['default_lang'] ); + } + if ( ! empty( $nolang['terms'] ) ) { + $this->model->set_language_in_mass( 'term', $nolang['terms'], $this->options['default_lang'] ); + } + } + + self::redirect(); // to refresh the page ( possible thanks to the $_GET['noheader']=true ) + break; + + case 'activate': + check_admin_referer( 'pll_activate' ); + $this->modules[ $_GET['module'] ]->activate(); + self::redirect(); + break; + + case 'deactivate': + check_admin_referer( 'pll_deactivate' ); + $this->modules[ $_GET['module'] ]->deactivate(); + self::redirect(); + break; + + default: + /** + * Fires when a non default action has been sent to Polylang settings + * + * @since 1.8 + */ + do_action( "mlang_action_$action" ); + break; + } + } + + /** + * Displays the 3 tabs pages: languages, strings translations, settings + * also manages user input for these pages + * + * @since 0.1 + */ + public function languages_page() { + switch ( $this->active_tab ) { + case 'lang': + // prepare the list table of languages + $list_table = new PLL_Table_Languages(); + $list_table->prepare_items( $this->model->get_languages_list() ); + break; + + case 'strings': + $string_table = new PLL_Table_String( $this->model->get_languages_list() ); + $string_table->prepare_items(); + break; + } + + // handle user input + $action = isset( $_REQUEST['pll_action'] ) ? $_REQUEST['pll_action'] : ''; + if ( 'edit' === $action && ! empty( $_GET['lang'] ) ) { + $edit_lang = $this->model->get_language( (int) $_GET['lang'] ); + } else { + $this->handle_actions( $action ); + } + + // displays the page + include PLL_SETTINGS_INC . '/view-languages.php'; + } + + /** + * Enqueues scripts and styles + */ + public function admin_enqueue_scripts() { + parent::admin_enqueue_scripts(); + + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; + + wp_enqueue_script( 'pll_admin', plugins_url( '/js/admin' . $suffix . '.js', POLYLANG_FILE ), array( 'jquery', 'wp-ajax-response', 'postbox', 'jquery-ui-selectmenu' ), POLYLANG_VERSION ); + wp_localize_script( 'pll_admin', 'pll_flag_base_url', plugins_url( '/flags/', POLYLANG_FILE ) ); + + wp_enqueue_style( 'pll_selectmenu', plugins_url( '/css/selectmenu' . $suffix . '.css', POLYLANG_FILE ), array(), POLYLANG_VERSION ); + } + + /** + * Displays a notice when there are objects with no language assigned + * + * @since 1.8 + */ + public function notice_objects_with_no_lang() { + if ( ! empty( $this->options['default_lang'] ) && $this->model->get_objects_with_no_lang() ) { + printf( + '

      %s %s

      ', + esc_html__( 'There are posts, pages, categories or tags without language.', 'polylang' ), + wp_nonce_url( '?page=mlang&pll_action=content-default-lang&noheader=true', 'content-default-lang' ), + esc_html__( 'You can set them all to the default language.', 'polylang' ) + ); + } + } + + /** + * Redirects to language page ( current active tab ) + * saves error messages in a transient for reuse in redirected page + * + * @since 1.5 + * + * @param array $args query arguments to add to the url + */ + static public function redirect( $args = array() ) { + if ( $errors = get_settings_errors() ) { + set_transient( 'settings_errors', $errors, 30 ); + $args['settings-updated'] = 1; + } + // remove possible 'pll_action' and 'lang' query args from the referer before redirecting + wp_safe_redirect( add_query_arg( $args, remove_query_arg( array( 'pll_action', 'lang' ), wp_get_referer() ) ) ); + exit; + } +} diff --git a/pole-sbv-content/plugins/polylang/settings/table-languages.php b/pole-sbv-content/plugins/polylang/settings/table-languages.php new file mode 100644 index 00000000..df1c20a7 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/table-languages.php @@ -0,0 +1,269 @@ + 'Languages', // Do not translate ( used for css class ) + 'ajax' => false, + ) ); + } + + /** + * Generates content for a single row of the table + * + * @since 1.8 + * + * @param object $item The current item + */ + public function single_row( $item ) { + /** + * Filter the list of classes assigned a row in the languages list table + * + * @since 1.8 + * + * @param array $classes list of class names + * @param object $item the current item + */ + $classes = apply_filters( 'pll_languages_row_classes', array(), $item ); + echo '' : ' class="' . esc_attr( implode( ' ', $classes ) ) . '">' ); + $this->single_row_columns( $item ); + echo ''; + } + + /** + * Displays the item information in a column ( default case ) + * + * @since 0.1 + * + * @param object $item + * @param string $column_name + * @return string + */ + function column_default( $item, $column_name ) { + switch ( $column_name ) { + case 'locale': + case 'slug': + return esc_html( $item->$column_name ); + + case 'term_group': + case 'count': + return (int) $item->$column_name; + + default: + return $item->$column_name; // flag + } + } + + /** + * Displays the item information in the column 'name' + * Displays the edit and delete action links + * + * @since 0.1 + * + * @param object $item + * @return string + */ + function column_name( $item ) { + return sprintf( + '%s', + esc_attr__( 'Edit this language', 'polylang' ), + esc_url( admin_url( 'admin.php?page=mlang&pll_action=edit&lang=' . $item->term_id ) ), + esc_html( $item->name ) + ); + } + + /** + * Displays the item information in the default language + * Displays the 'make default' action link + * + * @since 1.8 + * + * @param object $item + * @return string + */ + function column_default_lang( $item ) { + $options = get_option( 'polylang' ); + + if ( $options['default_lang'] != $item->slug ) { + $s = sprintf(' +
      + %3$s +
      ', + esc_attr__( 'Select as default language', 'polylang' ), + wp_nonce_url( '?page=mlang&pll_action=default-lang&noheader=true&lang=' . $item->term_id, 'default-lang' ), + /* translators: accessibility text, %s is a native language name */ + esc_html( sprintf( __( 'Choose %s as default language', 'polylang' ), $item->name ) ) + ); + + /** + * Filter the default language row action in the languages list table + * + * @since 1.8 + * + * @param string $s html markup of the action + * @param object $item + */ + $s = apply_filters( 'pll_default_lang_row_action', $s, $item ); + } else { + $s = sprintf( + '%1$s', + /* translators: accessibility text */ + esc_html__( 'Default language', 'polylang' ) + ); + $actions = array(); + } + + return $s; + } + + /** + * Gets the list of columns + * + * @since 0.1 + * + * @return array the list of column titles + */ + function get_columns() { + return array( + 'name' => esc_html__( 'Full name', 'polylang' ), + 'locale' => esc_html__( 'Locale', 'polylang' ), + 'slug' => esc_html__( 'Code', 'polylang' ), + 'default_lang' => sprintf( '%2$s', esc_attr__( 'Default language', 'polylang' ), esc_html__( 'Default language', 'polylang' ) ), + 'term_group' => esc_html__( 'Order', 'polylang' ), + 'flag' => esc_html__( 'Flag', 'polylang' ), + 'count' => esc_html__( 'Posts', 'polylang' ), + ); + } + + /** + * Gets the list of sortable columns + * + * @since 0.1 + * + * @return array + */ + function get_sortable_columns() { + return array( + 'name' => array( 'name', true ), // sorted by name by default + 'locale' => array( 'locale', false ), + 'slug' => array( 'slug', false ), + 'term_group' => array( 'term_group', false ), + 'count' => array( 'count', false ), + ); + } + + /** + * Gets the name of the default primary column. + * + * @since 2.1 + * + * @return string Name of the default primary column, in this case, 'name'. + */ + protected function get_default_primary_column_name() { + return 'name'; + } + + /** + * Generates and display row actions links for the list table. + * + * @since 1.8 + * + * @param object $item The item being acted upon. + * @param string $column_name Current column name. + * @param string $primary Primary column name. + * @return string The row actions output. + */ + protected function handle_row_actions( $item, $column_name, $primary ) { + if ( $primary !== $column_name ) { + return ''; + } + + $actions = array( + 'edit' => sprintf( + '%s', + esc_attr__( 'Edit this language', 'polylang' ), + esc_url( admin_url( 'admin.php?page=mlang&pll_action=edit&lang=' . $item->term_id ) ), + esc_html__( 'Edit','polylang' ) + ), + 'delete' => sprintf( + '%s', + esc_attr__( 'Delete this language and all its associated data', 'polylang' ), + wp_nonce_url( '?page=mlang&pll_action=delete&noheader=true&lang=' . $item->term_id, 'delete-lang' ), + esc_js( __( 'You are about to permanently delete this language. Are you sure?', 'polylang' ) ), + esc_html__( 'Delete','polylang' ) + ), + ); + + /** + * Filter the list of row actions in the languages list table + * + * @since 1.8 + * + * @param array $actions list of html markup actions + * @param object $item + */ + $actions = apply_filters( 'pll_languages_row_actions', $actions, $item ); + + return $this->row_actions( $actions ); + } + + /** + * Sort items + * + * @since 0.1 + * + * @param object $a The first object to compare + * @param object $b The second object to compare + * @return int -1 or 1 if $a is considered to be respectively less than or greater than $b. + */ + protected function usort_reorder( $a, $b ) { + $orderby = ! empty( $_GET['orderby'] ) ? $_GET['orderby'] : 'name'; + // Determine sort order + if ( is_numeric( $a->$orderby ) ) { + $result = $a->$orderby > $b->$orderby ? 1 : -1; + } else { + $result = strcmp( $a->$orderby, $b->$orderby ); + } + // Send final sort direction to usort + return ( empty( $_GET['order'] ) || 'asc' == $_GET['order'] ) ? $result : -$result; + } + + /** + * Prepares the list of items for displaying + * + * @since 0.1 + * + * @param array $data + */ + function prepare_items( $data = array() ) { + $per_page = $this->get_items_per_page( 'pll_lang_per_page' ); + $this->_column_headers = array( $this->get_columns(), array(), $this->get_sortable_columns() ); + + usort( $data, array( $this, 'usort_reorder' ) ); + + $total_items = count( $data ); + $this->items = array_slice( $data, ( $this->get_pagenum() - 1 ) * $per_page, $per_page ); + + $this->set_pagination_args( array( + 'total_items' => $total_items, + 'per_page' => $per_page, + 'total_pages' => ceil( $total_items / $per_page ), + ) ); + } +} diff --git a/pole-sbv-content/plugins/polylang/settings/table-settings.php b/pole-sbv-content/plugins/polylang/settings/table-settings.php new file mode 100644 index 00000000..30736cb0 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/table-settings.php @@ -0,0 +1,182 @@ + 'Settings', // Do not translate ( used for css class ) + 'ajax' => false, + ) ); + } + + /** + * Get the table classes for styling + * + * @since 1.8 + */ + protected function get_table_classes() { + return array( 'wp-list-table', 'widefat', 'plugins', 'pll-settings' ); // get the style of the plugins list table + one specific class + } + + /** + * Displays a single row + * + * @since 1.8 + * + * @param object $item PLL_Settings_Module object + */ + public function single_row( $item ) { + // Classes to reuse css from the plugins list table + $classes = $item->is_active() ? 'active' : 'inactive'; + if ( $message = $item->get_upgrade_message() ) { + $classes .= ' update'; + } + + // Display the columns + printf( '', esc_attr( $item->module ), esc_attr( $classes ) ); + $this->single_row_columns( $item ); + echo ''; + + // Display an upgrade message if there is any, reusing css from the plugins updates + if ( $message = $item->get_upgrade_message() ) { + printf( ' + + %s + ', + sprintf( + version_compare( $GLOBALS['wp_version'], '4.6', '<' ) ? + '
      %s
      ' : // backward compatibility with WP < 4.6 + '

      %s

      ', + $message + ) + ); + } + + // The settings if there are + // "inactive" class to reuse css from the plugins list table + if ( $form = $item->get_form() ) { + printf( ' + + + %s + %s +

      + %s +

      + + ', + esc_attr( $item->module ), esc_html( $item->title ), $form, implode( $item->get_buttons() ) + ); + } + } + + /** + * Generates the columns for a single row of the table + * + * @since 1.8 + * + * @param object $item The current item + */ + protected function single_row_columns( $item ) { + list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $classes = "$column_name column-$column_name"; + if ( $primary === $column_name ) { + $classes .= ' column-primary'; + } + + if ( in_array( $column_name, $hidden ) ) { + $classes .= ' hidden'; + } + + if ( 'cb' == $column_name ) { + echo ''; + echo $this->column_cb( $item ); + echo ''; + } + else { + printf( '', esc_attr( $classes ) ); + echo $this->column_default( $item, $column_name ); + echo ''; + } + } + } + + /** + * Displays the item information in a column ( default case ) + * + * @since 1.8 + * + * @param object $item + * @param string $column_name + * @return string + */ + protected function column_default( $item, $column_name ) { + if ( 'plugin-title' == $column_name ) { + return sprintf( '%s', esc_html( $item->title ) ) . $this->row_actions( $item->get_action_links(), true /*always visible*/ ); + } + return $item->$column_name; + } + + /** + * Gets the list of columns + * + * @since 1.8 + * + * @return array the list of column titles + */ + public function get_columns() { + return array( + 'cb' => '', // For the 4px border inherited from plugins when the module is activated + 'plugin-title' => esc_html__( 'Module', 'polylang' ), // plugin-title for styling + 'description' => esc_html__( 'Description', 'polylang' ), + ); + } + + /** + * Gets the name of the primary column. + * + * @since 1.8 + * + * @return string The name of the primary column. + */ + protected function get_primary_column_name() { + return 'plugin-title'; + } + + /** + * Prepares the list of items for displaying + * + * @since 1.8 + * + * @param array $items + */ + public function prepare_items( $items = array() ) { + $this->_column_headers = array( $this->get_columns(), array(), $this->get_sortable_columns(), $this->get_primary_column_name() ); + $this->items = $items; + } + + /** + * Avoids displaying an empty tablenav + * + * @since 2.1 + * + * @param string $which 'top' or 'bottom' + */ + protected function display_tablenav( $which ) {} +} diff --git a/pole-sbv-content/plugins/polylang/settings/table-string.php b/pole-sbv-content/plugins/polylang/settings/table-string.php new file mode 100644 index 00000000..0b3e6eab --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/table-string.php @@ -0,0 +1,345 @@ + 'Strings translations', // Do not translate ( used for css class ) + 'ajax' => false, + ) ); + + $this->languages = $languages; + $this->strings = PLL_Admin_Strings::get_strings(); + $this->groups = array_unique( wp_list_pluck( $this->strings, 'context' ) ); + $this->selected_group = empty( $_GET['group'] ) || ! in_array( $_GET['group'], $this->groups ) ? -1 : $_GET['group']; + + add_action( 'mlang_action_string-translation', array( $this, 'save_translations' ) ); + } + + /** + * Displays the item information in a column ( default case ) + * + * @since 0.6 + * + * @param array $item + * @param string $column_name + * @return string + */ + function column_default( $item, $column_name ) { + return $item[ $column_name ]; + } + + /** + * Displays the checkbox in first column + * + * @since 1.1 + * + * @param array $item + * @return string + */ + function column_cb( $item ) { + return sprintf( + '', + esc_attr( $item['row'] ), + /* translators: accessibility text, %s is a string potentially in any language */ + sprintf( __( 'Select %s' ), format_to_edit( $item['string'] ) ), + empty( $item['icl'] ) ? 'disabled' : '' // Only strings registered with WPML API can be removed + ); + } + + /** + * Displays the string to translate + * + * @since 1.0 + * + * @param array $item + * @return string + */ + function column_string( $item ) { + return format_to_edit( $item['string'] ); // Don't interpret special chars for the string column + } + + /** + * Displays the translations to edit + * + * @since 0.6 + * + * @param array $item + * @return string + */ + function column_translations( $item ) { + $languages = array_combine( wp_list_pluck( $this->languages, 'slug' ), wp_list_pluck( $this->languages, 'name' ) ); + $out = ''; + + foreach ( $item['translations'] as $key => $translation ) { + $input_type = $item['multiline'] ? + '' : + ''; + $out .= sprintf( '
      ' . $input_type . '
      ' . "\n", + esc_attr( $key ), + esc_attr( $item['row'] ), + esc_html( $languages[ $key ] ), + format_to_edit( $translation ) ); // Don't interpret special chars + } + + return $out; + } + + /** + * Gets the list of columns + * + * @since 0.6 + * + * @return array the list of column titles + */ + function get_columns() { + return array( + 'cb' => '', // Checkbox + 'string' => esc_html__( 'String', 'polylang' ), + 'name' => esc_html__( 'Name', 'polylang' ), + 'context' => esc_html__( 'Group', 'polylang' ), + 'translations' => esc_html__( 'Translations', 'polylang' ), + ); + } + + /** + * Gets the list of sortable columns + * + * @since 0.6 + * + * @return array + */ + function get_sortable_columns() { + return array( + 'string' => array( 'string', false ), + 'name' => array( 'name', false ), + 'context' => array( 'context', false ), + ); + } + + /** + * Gets the name of the default primary column. + * + * @since 2.1 + * + * @return string Name of the default primary column, in this case, 'string'. + */ + protected function get_default_primary_column_name() { + return 'string'; + } + + /** + * Sort items + * + * @since 0.6 + * + * @param object $a The first object to compare + * @param object $b The second object to compare + * @return int -1 or 1 if $a is considered to be respectively less than or greater than $b. + */ + protected function usort_reorder( $a, $b ) { + $result = strcmp( $a[ $_GET['orderby'] ], $b[ $_GET['orderby'] ] ); // determine sort order + return ( empty( $_GET['order'] ) || 'asc' === $_GET['order'] ) ? $result : -$result; // send final sort direction to usort + } + + /** + * Prepares the list of items for displaying + * + * @since 0.6 + */ + function prepare_items() { + $data = $this->strings; + + // Filter for search string + $s = empty( $_GET['s'] ) ? '' : wp_unslash( $_GET['s'] ); + foreach ( $data as $key => $row ) { + if ( ( -1 !== $this->selected_group && $row['context'] !== $this->selected_group ) || ( ! empty( $s ) && stripos( $row['name'], $s ) === false && stripos( $row['string'], $s ) === false ) ) { + unset( $data[ $key ] ); + } + } + + // Load translations + foreach ( $this->languages as $language ) { + // Filters by language if requested + if ( ( $lg = get_user_meta( get_current_user_id(), 'pll_filter_content', true ) ) && $language->slug !== $lg ) { + continue; + } + + $mo = new PLL_MO(); + $mo->import_from_db( $language ); + foreach ( $data as $key => $row ) { + $data[ $key ]['translations'][ $language->slug ] = $mo->translate( $row['string'] ); + $data[ $key ]['row'] = $key; // Store the row number for convenience + } + } + + $per_page = $this->get_items_per_page( 'pll_strings_per_page' ); + $this->_column_headers = array( $this->get_columns(), array(), $this->get_sortable_columns() ); + + if ( ! empty( $_GET['orderby'] ) ) { // No sort by default + usort( $data, array( $this, 'usort_reorder' ) ); + } + + $total_items = count( $data ); + $this->items = array_slice( $data, ( $this->get_pagenum() - 1 ) * $per_page, $per_page ); + + $this->set_pagination_args( array( + 'total_items' => $total_items, + 'per_page' => $per_page, + 'total_pages' => ceil( $total_items / $per_page ), + ) ); + } + + /** + * Get the list of possible bulk actions + * + * @since 1.1 + * + * @return array + */ + function get_bulk_actions() { + return array( 'delete' => __( 'Delete','polylang' ) ); + } + + /** + * Get the current action selected from the bulk actions dropdown. + * overrides parent function to avoid submit button to trigger bulk actions + * + * @since 1.8 + * + * @return string|false The action name or False if no action was selected + */ + public function current_action() { + return empty( $_POST['submit'] ) ? parent::current_action() : false; + } + + /** + * Displays the dropdown list to filter strings per group + * + * @since 1.1 + * + * @param string $which only 'top' is supported + */ + function extra_tablenav( $which ) { + if ( 'top' !== $which ) { + return; + } + + echo '
      '; + printf( + '', + /* translators: accessibility text */ + esc_html__( 'Filter by group', 'polylang' ) + ); + echo '' . "\n"; + + submit_button( __( 'Filter' ), 'button', 'filter_action', false, array( 'id' => 'post-query-submit' ) ); + echo '
      '; + } + + /** + * Saves the strings translations in DB + * Optionaly clean the DB + * + * @since 1.9 + */ + public function save_translations() { + check_admin_referer( 'string-translation', '_wpnonce_string-translation' ); + + if ( ! empty( $_POST['submit'] ) ) { + foreach ( $this->languages as $language ) { + if ( empty( $_POST['translation'][ $language->slug ] ) ) { // In case the language filter is active ( thanks to John P. Bloch ) + continue; + } + + $mo = new PLL_MO(); + $mo->import_from_db( $language ); + + foreach ( $_POST['translation'][ $language->slug ] as $key => $translation ) { + /** + * Filter the string translation before it is saved in DB + * Allows to sanitize strings registered with pll_register_string + * + * @since 1.6 + * + * @param string $translation the string translation + * @param string $name the name as defined in pll_register_string + * @param string $context the context as defined in pll_register_string + */ + $translation = apply_filters( 'pll_sanitize_string_translation', $translation, $this->strings[ $key ]['name'], $this->strings[ $key ]['context'] ); + $mo->add_entry( $mo->make_entry( $this->strings[ $key ]['string'], $translation ) ); + } + + // Clean database ( removes all strings which were registered some day but are no more ) + if ( ! empty( $_POST['clean'] ) ) { + $new_mo = new PLL_MO(); + + foreach ( $this->strings as $string ) { + $new_mo->add_entry( $mo->make_entry( $string['string'], $mo->translate( $string['string'] ) ) ); + } + } + + isset( $new_mo ) ? $new_mo->export_to_db( $language ) : $mo->export_to_db( $language ); + } + + add_settings_error( 'general', 'pll_strings_translations_updated', __( 'Translations updated.', 'polylang' ), 'updated' ); + + /** + * Fires after the strings translations are saved in DB + * + * @since 1.2 + */ + do_action( 'pll_save_strings_translations' ); + } + + // Unregisters strings registered through WPML API + if ( $this->current_action() === 'delete' && ! empty( $_POST['strings'] ) && function_exists( 'icl_unregister_string' ) ) { + foreach ( $_POST['strings'] as $key ) { + icl_unregister_string( $this->strings[ $key ]['context'], $this->strings[ $key ]['name'] ); + } + } + + // To refresh the page ( possible thanks to the $_GET['noheader']=true ) + $args = array_intersect_key( $_REQUEST, array_flip( array( 's', 'paged', 'group' ) ) ); + if ( ! empty( $_GET['paged'] ) && ! empty( $_POST['submit'] ) ) { + $args['paged'] = (int) $_GET['paged']; // Don't rely on $_REQUEST['paged'] or $_POST['paged']. See #14 + } + if ( ! empty( $args['s'] ) ) { + $args['s'] = urlencode( $args['s'] ); // Searched string needs to be encoded as it comes from $_POST + } + PLL_Settings::redirect( $args ); + } +} diff --git a/pole-sbv-content/plugins/polylang/settings/view-about.php b/pole-sbv-content/plugins/polylang/settings/view-about.php new file mode 100644 index 00000000..a9c62d37 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/view-about.php @@ -0,0 +1,40 @@ + +

      + ', + '' + ); + if ( ! defined( 'POLYLANG_PRO' ) ) { + echo ' '; + printf( + /* translators: %s are html tags */ + esc_html__( 'Support and extra features are available to %sPolylang Pro%s users.', 'polylang' ), + '', + '' + ); + } + ?> +

      +

      + ', + '' + ); + ?> +

      + diff --git a/pole-sbv-content/plugins/polylang/settings/view-languages.php b/pole-sbv-content/plugins/polylang/settings/view-languages.php new file mode 100644 index 00000000..c1c4db8c --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/view-languages.php @@ -0,0 +1,34 @@ + +
      +

      + active_tab ) { + case 'lang': // Languages tab + case 'strings': // String translations tab + case 'settings': // Settings tab + include PLL_SETTINGS_INC . '/view-tab-' . $this->active_tab . '.php'; + break; + + default: + /** + * Fires when loading the active Polylang settings tab + * Allows plugins to add their own tab + * + * @since 1.5.1 + */ + do_action( 'pll_settings_active_tab_' . $this->active_tab ); + break; + } + ?> +
      diff --git a/pole-sbv-content/plugins/polylang/settings/view-tab-lang.php b/pole-sbv-content/plugins/polylang/settings/view-tab-lang.php new file mode 100644 index 00000000..d4fe14e4 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/view-tab-lang.php @@ -0,0 +1,187 @@ + +
      +
      +
      + display(); + ?> +
      + +
      +
      +
      + +
      +
      + +
      +

      + +
      + + + + + + +
      + + +

      +
      + +
      + + ', + ! empty( $edit_lang ) ? esc_attr( $edit_lang->name ) : '' + ); + ?> +

      +
      + +
      + + ', + ! empty( $edit_lang ) ? esc_attr( $edit_lang->locale ) : '' + ); + ?> +

      +
      + +
      + + ', + ! empty( $edit_lang ) ? esc_attr( $edit_lang->slug ) : '' + ); + ?> +

      +
      + +
      + + %s', + ! empty( $edit_lang ) && $edit_lang->is_rtl ? '' : 'checked="checked"', + esc_html__( 'left to right', 'polylang' ) + ); + printf( + '', + ! empty( $edit_lang ) && $edit_lang->is_rtl ? 'checked="checked"' : '', + esc_html__( 'right to left', 'polylang' ) + ); + ?> +

      +
      + +
      + + +

      +
      + +
      + + ', + ! empty( $edit_lang ) ? esc_attr( $edit_lang->term_group ) : '' + ); + ?> +

      +
      + +
      +
      +
      +
      +
      + + diff --git a/pole-sbv-content/plugins/polylang/settings/view-tab-settings.php b/pole-sbv-content/plugins/polylang/settings/view-tab-settings.php new file mode 100644 index 00000000..bc56d619 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/view-tab-settings.php @@ -0,0 +1,18 @@ + +
      + prepare_items( $this->modules ); + $list_table->display(); + ?> +
      diff --git a/pole-sbv-content/plugins/polylang/settings/view-tab-strings.php b/pole-sbv-content/plugins/polylang/settings/view-tab-strings.php new file mode 100644 index 00000000..29d0cd0c --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/view-tab-strings.php @@ -0,0 +1,25 @@ + +
      +
      + + search_box( __( 'Search translations', 'polylang' ), 'translations' ); + wp_nonce_field( 'string-translation', '_wpnonce_string-translation' ); + $string_table->display(); + printf( '
      ', esc_html__( 'Clean strings translation database', 'polylang' ) ); + ?> +

      + +
      +
      diff --git a/pole-sbv-content/plugins/polylang/uninstall.php b/pole-sbv-content/plugins/polylang/uninstall.php new file mode 100644 index 00000000..4d0ebcb7 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/uninstall.php @@ -0,0 +1,141 @@ +get_col( "SELECT blog_id FROM $wpdb->blogs" ) as $blog_id ) { + switch_to_blog( $blog_id ); + $this->uninstall(); + } + restore_current_blog(); + } + else { + $this->uninstall(); + } + } + + /** + * Removes ALL plugin data + * only when the relevant option is active + * + * @since 0.5 + */ + function uninstall() { + $options = get_option( 'polylang' ); + + if ( empty( $options['uninstall'] ) ) { + return; + } + + // Suppress data of the old model < 1.2 + // FIXME: to remove when support for v1.1.6 will be dropped + global $wpdb; + $wpdb->termmeta = $wpdb->prefix . 'termmeta'; // registers the termmeta table in wpdb + + // Do nothing if the termmeta table does not exists + if ( count( $wpdb->get_results( "SHOW TABLES LIKE '$wpdb->termmeta'" ) ) ) { + $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key = '_translations'" ); + $wpdb->query( "DELETE FROM $wpdb->termmeta WHERE meta_key = '_language'" ); + $wpdb->query( "DELETE FROM $wpdb->termmeta WHERE meta_key = '_rtl'" ); + $wpdb->query( "DELETE FROM $wpdb->termmeta WHERE meta_key = '_translations'" ); + } + + // Need to register the taxonomies + $pll_taxonomies = array( 'language', 'term_language', 'post_translations', 'term_translations' ); + foreach ( $pll_taxonomies as $taxonomy ) { + register_taxonomy( $taxonomy, null , array( 'label' => false, 'public' => false, 'query_var' => false, 'rewrite' => false ) ); + } + + $languages = get_terms( 'language', array( 'hide_empty' => false ) ); + + // Delete users options + foreach ( get_users( array( 'fields' => 'ID' ) ) as $user_id ) { + delete_user_meta( $user_id, 'pll_filter_content' ); + delete_user_meta( $user_id, 'pll_duplicate_content' ); + foreach ( $languages as $lang ) { + delete_user_meta( $user_id, 'description_' . $lang->slug ); + } + } + + // Delete menu language switchers + $ids = get_posts( array( + 'post_type' => 'nav_menu_item', + 'numberposts' => -1, + 'nopaging' => true, + 'fields' => 'ids', + 'meta_key' => '_pll_menu_item', + ) ); + + foreach ( $ids as $id ) { + wp_delete_post( $id, true ); + } + + // Delete the strings translations ( <1.2 ) + // FIXME: to remove when support for v1.1.6 will be dropped + foreach ( $languages as $lang ) { + delete_option( 'polylang_mo' . $lang->term_id ); + } + + // Delete the strings translations 1.2+ + register_post_type( 'polylang_mo', array( 'rewrite' => false, 'query_var' => false ) ); + $ids = get_posts( array( + 'post_type' => 'polylang_mo', + 'post_status' => 'any', + 'numberposts' => -1, + 'nopaging' => true, + 'fields' => 'ids', + ) ); + foreach ( $ids as $id ) { + wp_delete_post( $id, true ); + } + + // Delete all what is related to languages and translations + foreach ( get_terms( $pll_taxonomies, array( 'hide_empty' => false ) ) as $term ) { + $term_ids[] = (int) $term->term_id; + $tt_ids[] = (int) $term->term_taxonomy_id; + } + + if ( ! empty( $term_ids ) ) { + $term_ids = array_unique( $term_ids ); + $wpdb->query( "DELETE FROM $wpdb->terms WHERE term_id IN ( " . implode( ',', $term_ids ) . ' )' ); + $wpdb->query( "DELETE FROM $wpdb->term_taxonomy WHERE term_id IN ( " . implode( ',', $term_ids ) . ' )' ); + } + + if ( ! empty( $tt_ids ) ) { + $tt_ids = array_unique( $tt_ids ); + $wpdb->query( "DELETE FROM $wpdb->term_relationships WHERE term_taxonomy_id IN ( " . implode( ',', $tt_ids ) . ' )' ); + } + + // Delete options + delete_option( 'polylang' ); + delete_option( 'widget_polylang' ); // Automatically created by WP + delete_option( 'polylang_wpml_strings' ); // Strings registered with icl_register_string + delete_option( 'polylang_licenses' ); + + // Delete transients + delete_transient( 'pll_languages_list' ); + delete_transient( 'pll_upgrade_1_4' ); + delete_transient( 'pll_translated_slugs' ); + } +} + +new PLL_Uninstall(); diff --git a/pole-sbv-content/themes/pole-sbv/actualites_en_template.php b/pole-sbv-content/themes/pole-sbv/actualites_en_template.php new file mode 100644 index 00000000..77e69f54 --- /dev/null +++ b/pole-sbv-content/themes/pole-sbv/actualites_en_template.php @@ -0,0 +1,72 @@ + + + + 'post', 'posts_per_page' => 4, 'paged' => $paged, ); +$loop = new WP_Query( $args ); + ?> +
      +
      + +
      + +
      +
      +
      +

      + + Our News + +

      +
      + have_posts() ) : $loop->the_post(); ?> +
      +
      + +
      +
      + Published on +
      +

      + Read more > +
      +
      +
      + +
      + +
      +
      +
      +
      + + + diff --git a/pole-sbv-content/themes/pole-sbv/contact_en_template.php b/pole-sbv-content/themes/pole-sbv/contact_en_template.php new file mode 100644 index 00000000..543a8074 --- /dev/null +++ b/pole-sbv-content/themes/pole-sbv/contact_en_template.php @@ -0,0 +1,108 @@ + + + +
      +
      + +
      +
      +
      +

      + + Contact us + +

      +
      + +
      +
      + +
      +
      + +
      +
      +

      + + Our contacts + +

      +
      + +
      +

      + Head Office +

      +

      SBV & Celvia

      +

      Z.I. du Lay CS 10014
      56 660 - Saint-Jean-Brévelay

      +

      Tel : +33 (0)2 97 60 33 88
      Fax : +33 (0)2 97 60 30 80
      contact@pole-sbv.fr

      +
      +
      +

      Procanar

      +

      Z.I. La Haie
      56 190 - Lauzach

      +

      Tel : +33 (0)2 97 48 78 00
      Fax : +33 (0)2 97 48 78 22
      contact@procanar.fr
      www.procanar.fr

      +
      +
      +

      Boscher Volailles

      +

      Z.A.C. de Guergadic
      22 530 - Mur de Bretagne

      +

      Tel : +33 (0)2 96 67 10 30
      Fax : +33 (0)2 96 67 10 32

      +
      +
      +

      LES VOLAILLES DE KERANNA

      +

      Keranna
      56 560 - Guiscriff

      +

      Tel : +33 (0)2 97 34 05 23
      Fax : +33 (0)2 97 34 00 32

      +
      +
      +

      LDC BRETAGNE

      +

      La Lande de la Forge
      22 800 - Lanfains

      +

      Tel : +33 (0)2 96 74 85 75
      Fax : +33 (0)2 96 74 05 42

      +
      +
      +

      CELTYS

      +

      Z.A. de Restavy
      56 240 - Plouay

      +

      Tel : +33 (0)2 97 02 20 20
      Fax : +33 (0)2 97 02 20 00

      +
      +
      +

      MICHEL ROBICHON

      +

      Z.I. de Kergoustard
      12, rue Joseph Quilliou
      56300 - Saint Thuriau

      +

      Tel : +33 (0)2 97 25 97 97
      Fax : +33 (0)2 97 28 99 17
      info@farmor.fr

      +
      +
      +

      FARMOR

      +

      Z.I. de Bellevue
      29, avenue de l’Hippodrome
      22 200 - Saint-Agathon

      +

      Tel : +33 (0)2 96 11 83 00
      Fax : +33 (0)2 96 11 83 20
      info@farmor.fr
      www.farmor.fr

      +
      +
      +

      +

      +

      +
      +
      +

      RVE

      +

      Les Cinq Chemins
      56 580 - Crédin

      +

      Tel : +33 (0)2 97 51 58 58
      Fax : +33 (0)2 97 38 93 79
      info@farmor.fr

      +
      + +
      +
      +
      +
      +
      + + + + diff --git a/pole-sbv-content/themes/pole-sbv/css/main.css b/pole-sbv-content/themes/pole-sbv/css/main.css index 04c44c15..d0672dea 100755 --- a/pole-sbv-content/themes/pole-sbv/css/main.css +++ b/pole-sbv-content/themes/pole-sbv/css/main.css @@ -105,6 +105,7 @@ h3 { /* Schema performences */ .desktopperf01, .desktopperf02 { display:block; + margin:auto; } .mobileperf01, .mobileperf02 { display:none; @@ -560,7 +561,7 @@ h3 { cursor: pointer; } -#ninja_forms_field_13_div_wrap::after { +#ninja_forms_field_13_div_wrap::after, #ninja_forms_field_30_div_wrap::after { content: "▼"; font-size: 1em; height: 1em; @@ -591,17 +592,25 @@ h3 { margin-bottom: 20px; } -.ninja-forms-required-items,#ninja_forms_field_5_div_wrap { +.ninja-forms-required-items,#ninja_forms_field_5_div_wrap, #ninja_forms_field_20_div_wrap{ width:100%; } #ninja_forms_field_1_div_wrap, #ninja_forms_field_6_div_wrap, #ninja_forms_field_7_div_wrap, #ninja_forms_field_2_div_wrap, #ninja_forms_field_8_div_wrap, #ninja_forms_field_9_div_wrap, #ninja_forms_field_11_div_wrap { width:48%; } +#ninja_forms_field_21_div_wrap, #ninja_forms_field_22_div_wrap, #ninja_forms_field_23_div_wrap, #ninja_forms_field_24_div_wrap, #ninja_forms_field_25_div_wrap, #ninja_forms_field_26_div_wrap, #ninja_forms_field_27_div_wrap { + width:48%; +} #ninja_forms_field_12_div_wrap, #ninja_forms_field_13_div_wrap, #ninja_forms_field_3_div_wrap { width:100%; position:relative; } + +#ninja_forms_field_28_div_wrap, #ninja_forms_field_30_div_wrap, #ninja_forms_field_31_div_wrap { + width:100%; + position:relative; +} .companies-wrapper { display:flex; flex-wrap: wrap; @@ -781,6 +790,7 @@ h3 { } .mobileperf01, .mobileperf02 { display:block; + margin:auto; } #header .header-top nav { width:175px; @@ -801,6 +811,8 @@ h3 { } #header .header-top nav a:nth-child(2){ margin-top:16px; + padding-bottom:16px; + border-bottom: 1px solid #d0ae88; } .banner .caption-title h1 { @@ -1002,3 +1014,39 @@ p { .specImg { margin-right:10px; } + +nav a:last-child { + width:30px; + overflow:hidden; + vertical-align: bottom; + margin-right:10px !important; +} + +#lang_choice_1 { + background : transparent; + color:#FFF; + border:0; + text-transform: uppercase; + font-family: 'Avenir'; + font-weight:600; +} + +@media (max-width: 768px){ + nav a:last-child { + width:26px !important; + display:block; + overflow:hidden; + vertical-align: bottom; + margin-right:10px !important; + margin-top:16px !important; + } + + #lang_choice_1 { + background : transparent; + color:#FFF; + border:0; + text-transform: uppercase; + font-family: 'Avenir'; + font-weight:600; + } +} diff --git a/pole-sbv-content/themes/pole-sbv/earth_en_template.php b/pole-sbv-content/themes/pole-sbv/earth_en_template.php new file mode 100644 index 00000000..60a7830d --- /dev/null +++ b/pole-sbv-content/themes/pole-sbv/earth_en_template.php @@ -0,0 +1,108 @@ + + + +
      +
      +
      +
      +

      + + Within our region + +

      +
      + + +
      +
      +
      +
      +
      +

      + + Brittany a poultry farming hub + +

      +
      +

      Our three subsidiaries, with 11 sites, employ 2 500 people within the LDC Group.
      + Our production sites are located near poultry farmers so that all stakeholders can benefit from an exchange of expertise.

      +
      +
      +

      + "We are constantly creating and inventing across the entire production chain." +

      + + +
      +
      +
      +
      +
      +

      + + Preserving Britanny + +

      +
      +

      Sustainable development is a key concern for SBV.

      +

      We strive to reduce our environmental impact and recycle waste and water.

      +

      Our environmental charter bears witness to our efforts in this area.

      +
      +
      +
      + +
      +
      + + + + diff --git a/pole-sbv-content/themes/pole-sbv/footer.php b/pole-sbv-content/themes/pole-sbv/footer.php index 391e9d43..799c8973 100755 --- a/pole-sbv-content/themes/pole-sbv/footer.php +++ b/pole-sbv-content/themes/pole-sbv/footer.php @@ -8,37 +8,37 @@

      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ℜ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 MuB@$uQG6QmKbr>3r2qf` literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/lingotek/image04.png b/pole-sbv-content/plugins/polylang/lingotek/image04.png new file mode 100644 index 0000000000000000000000000000000000000000..210a1f6aa2d1b7a4d971d356fb0ba6d683ce9f33 GIT binary patch literal 26864 zcmW(+b6jL^7oTiwwb^a9ZQHi(HoFZQH{055yEeNvZMJQ{_xJuW&8L~q-231>=bSI@ zPbCFOBzRnS5D0`MEhVM`ys!QDf`tbD;^|BW0dH_lQrfN{5CYnNFR;0F|2Gf_UeQ`q zR7uIo(aq7-%F&5fT2z$S$;Hva+RhvV^8A;rYN@7rjLHAFaVH`h5tt`HiFnc5gu_1*Kkz=phK83c6 zosS2TA5BXFhn2V44bw2au!t#Atjg?xh-D&#U$#Pq{|s&KF$e|0e{%w%!Zw(ZxW1Et zfu8*N_-ILcVY)$Jp7RK>pkDdRUMBqTPm~jpbUm=ZA7H(1@m#X7ffyhm?^ux%kdOpe zV0IdXDku*UWHfGSvI|n82N_WY9L$3Pv!Bv^z(Bf5BwxYu;z7jd<`H5bD_&6Lv__;j zNQ()CVIlj68?;OhVv^RhkOI}VfO@A;5$Zv(h#)5Ah)`+}qz}kwgpAA+^dlXFA#tP0 zcTHQ3dPoDTRC+yM+c$3UAYE8`XBbUQ212SSX)Ia{4r6fR3?YVouXG%iAU2e(+X)aT zFa9eq+uL`~Ddg&@DUR4?WJCIs9_UX}6O-MK{pkuPArNTW&42cTjCtp8uzhJ6$Wo$ex%KWmf_0YCk53j^Z!L`5^ejam#|a1VL%E-lH1W4=BSrg{=RepcEX?6r zQgmdCXmRL_s6G**e>lIP{S;-PZ2JW+U00+whc+iM=b%D%Ojnl4CWT9uIQq}bwjPE% ziH?|dBy=x(Z(xsg4{wj;Mi)NYM98`5Np*)xWz0qfXCHN+Z6De^jYU|!FhgbicfQ&e z_Bb7ps{Ce^8s+fc=xpCJxFt+1>ft!s|l+P|zP6Dp+6XwHovOCF^j zLEL#DB87bo8IG`|!pX#j!M4Qlz^+M?E5VtM!WmX$;$%KeJ4{DOcU0G+X{Pc08b1b~ zER#%;j7P($R#sk8zEO^#eycvN7FTAV>Q^nH&Z@dw2KP6mLcKg&=~NX@)v}EDcX+ww zZ$~x3B7g1opU~O^as!H@Map?~hP$0Z#0aK14W4u)wn!CW--FoyP}EJX_`1_{q`eb# zMDdrG<#UU&%CKrSsN5!52*T{9IX`8&DZm|4m8RbMM{ZzTQtwdXm9WXRF`MhzmZzkq zXjMp6C|5|Hc5zgnmu8oAiFatf1|bU%%TVf3N?OKEL1iDRuBfh;!k1#o^Yh$SGnCsF z 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 literal 0 HcmV?d00001 diff --git a/pole-sbv-content/plugins/polylang/lingotek/lingotek.php b/pole-sbv-content/plugins/polylang/lingotek/lingotek.php new file mode 100644 index 00000000..ea4dc21d --- /dev/null +++ b/pole-sbv-content/plugins/polylang/lingotek/lingotek.php @@ -0,0 +1,303 @@ + __( 'Close' ), + ), + array( + 'label' => __( 'Learn more', 'polylang' ), + 'link' => admin_url( 'admin.php?page=mlang&tab=lingotek' ), + ), + ); + + if ( $link = $this->get_activate_link() ) { + $content .= ' ' . __( 'Click on Activate Lingotek to start translating.', 'polylang' ); + + $buttons[] = array( + 'label' => __( 'Activate Lingotek', 'polylang' ), + 'link' => str_replace( '&', '&', $link ), // wp_nonce_url escapes the url for html display. Here we want it for js + ); + } + + $args = array( + 'pointer' => 'pll_lgt', + 'id' => empty( $options['previous_version'] ) ? 'nav-tab-lingotek' : 'wp-admin-bar-languages', + 'position' => array( + 'edge' => 'top', + 'align' => 'left', + ), + 'width' => 400, + 'title' => __( 'Congratulations!', 'polylang' ), + 'content' => $content, + 'buttons' => $buttons, + ); + + new PLL_Pointer( $args ); + } + + /** + * Adds the Lingotek tab in Polylang settings + * + * @since 1.7.7 + * + * @param array $tabs list of tabs + * @return array modified liste of tabs + */ + public function add_tab( $tabs ) { + $tabs['lingotek'] = 'Lingotek'; + return $tabs; + } + + /** + * Displays the content in the Lingotek tab + * + * @since 1.7.7 + */ + public function display_tab() { + $activate_link = $this->get_activate_link(); + + $links = array( + 'activate' => array( + 'label' => is_plugin_active( self::LINGOTEK ) ? __( 'Activated', 'polylang' ) : __( 'Activate', 'polylang' ), + 'link' => $activate_link, + 'classes' => 'button button-primary' . ( $activate_link ? '' : ' disabled' ), + ), + 'translation' => array( + 'label' => __( 'Request Translation', 'polylang' ), + 'link' => 'http://www.lingotek.com/wordpress/translation_bid', + 'new_tab' => true, + 'classes' => 'button button-primary', + ), + 'services' => array( + 'label' => __( 'Request Services', 'polylang' ), + 'link' => 'http://www.lingotek.com/wordpress/extra_services', + 'new_tab' => true, + 'classes' => 'button button-primary', + ), + ); + + printf( '

      %s

      ', esc_html__( 'Polylang is now fully integrated with Lingotek, a professional translation management system!', 'polylang' ) ); + + $this->box( + __( 'Automatically Translate My Site', 'polylang' ), + __( 'Polylang is now fully integrated with Lingotek!', 'polylang' ), + array( + __( 'Access free machine translation for your site for up to 100,000 characters.', 'polylang' ), + __( 'Machine translation is an excellent option if you\'re on a tight budget, looking for near-instant results, and are okay with less-than-perfect quality.', 'polylang' ), + ), + array_intersect_key( $links, array_flip( array( 'activate' ) ) ), + 'image01.gif' + ); + + $this->box( + __( 'Translation Management System', 'polylang' ), + __( 'Do you need to connect to a professional translation management system?', 'polylang' ), + array( + __( 'Access free machine translation for your site for up to 100,000 characters.', 'polylang' ), + __( 'Access an online translator workbench.', 'polylang' ), + __( 'Have linguists compare side-by-side versions of original and translated text.', 'polylang' ), + __( 'Save and re-use previously translated material (leverage translation memory (TM)).', 'polylang' ), + ), + array_intersect_key( $links, array_flip( array( 'activate' ) ) ), + 'image02.png' + ); + + $this->box( + __( 'Professionally Translate My Site', 'polylang' ), + __( 'Do you need to professionally translate your site?', 'polylang' ), + array( + __( 'Start the process of getting a professional translation bid.', 'polylang' ), + __( 'Activate account so Lingotek can get an accurate count of how many words you have on your site and which languages you wish to translate into.', 'polylang' ), + __( 'Once activated click on the request translation bid and a certified translation project manager will contact you to give a no obligations translation bid.', 'polylang' ), + ), + array_intersect_key( $links, array_flip( array( 'activate', 'translation' ) ) ), + 'image03.png' + ); + + $this->box( + __( 'Need Extra Services?', 'polylang' ), + __( 'Do you need help translating your site?', 'polylang' ), + array( + __( 'Start the process of getting extra services.', 'polylang' ), + __( 'Do you need someone to run your localization project?', 'polylang' ), + __( 'Do you need customized workflows?', 'polylang' ), + __( 'Do you have existing Translation Memories you would like to use?', 'polylang' ), + __( 'Do you need help creating glossaries and terminologies?', 'polylang' ), + ), + array_intersect_key( $links, array_flip( array( 'activate', 'services' ) ) ), + 'image04.png' + ); + } + + /** + * Styles the content of the Lingotek tab + * + * @since 1.7.7 + */ + public function print_css() { + ?> + + +
      +
      +
      + +
      +

      +

      + %s
      ', + esc_attr( $link_details['classes'] ), + esc_url( $link_details['link'] ), + empty( $link_details['new_tab'] ) ? '' : ' target = "_blank"', + esc_html( $link_details['label'] ) + ); + } + ?> +
      +
      +
        + %s', esc_html( $item ) ); + } + ?> +
      + +
      + +
      + getFileName() ) ) . '/languages' ); + + $GLOBALS['wp_import'] = new PLL_WP_Import(); + register_importer( 'wordpress', 'WordPress', __( 'Import posts, pages, comments, custom fields, categories, and tags from a WordPress export file.', 'wordpress-importer' ), array( $GLOBALS['wp_import'], 'dispatch' ) ); // WPCS: spelling ok. + } + + /** + * WordPress Importer + * Backward Compatibility Polylang < 1.8 + * Sets the flag when importing a language and the file has been exported with Polylang < 1.8 + * + * @since 1.8 + * + * @param array $terms an array of arrays containing terms information form the WXR file + * @return array + */ + function wp_import_terms( $terms ) { + include PLL_SETTINGS_INC . '/languages.php'; + + foreach ( $terms as $key => $term ) { + if ( 'language' === $term['term_taxonomy'] ) { + $description = maybe_unserialize( $term['term_description'] ); + if ( empty( $description['flag_code'] ) && isset( $languages[ $description['locale'] ] ) ) { + $description['flag_code'] = $languages[ $description['locale'] ][4]; + $terms[ $key ]['term_description'] = serialize( $description ); + } + } + } + return $terms; + } + + /** + * YARPP + * Just makes YARPP aware of the language taxonomy ( after Polylang registered it ) + * + * @since 1.0 + */ + public function yarpp_init() { + $GLOBALS['wp_taxonomies']['language']->yarpp_support = 1; + } + + /** + * Yoast SEO + * Translate options and add specific filters and actions + * + * @since 1.6.4 + */ + public function wpseo_init() { + if ( ! defined( 'WPSEO_VERSION' ) ) { + return; + } + + if ( ! PLL() instanceof PLL_Frontend ) { + add_action( 'admin_init', array( $this, 'wpseo_register_strings' ) ); + return; + } + + add_filter( 'option_wpseo_titles', array( $this, 'wpseo_translate_titles' ) ); + + // Reloads options once the language has been defined to enable translations + // Useful only when the language is set from content + if ( did_action( 'wp_loaded' ) ) { + if ( version_compare( WPSEO_VERSION, '1.7.2', '<' ) ) { + global $wpseo_front; + } else { + $wpseo_front = WPSEO_Frontend::get_instance(); + } + + $options = version_compare( WPSEO_VERSION, '1.5', '<' ) ? get_wpseo_options_arr() : WPSEO_Options::get_option_names(); + foreach ( $options as $opt ) { + $wpseo_front->options = array_merge( $wpseo_front->options, (array) get_option( $opt ) ); + } + } + + // Filters sitemap queries to remove inactive language or to get + // one sitemap per language when using multiple domains or subdomains + // because WPSEO does not accept several domains or subdomains in one sitemap + add_filter( 'wpseo_posts_join', array( $this, 'wpseo_posts_join' ), 10, 2 ); + add_filter( 'wpseo_posts_where', array( $this, 'wpseo_posts_where' ), 10, 2 ); + add_filter( 'wpseo_typecount_join', array( $this, 'wpseo_posts_join' ), 10, 2 ); + add_filter( 'wpseo_typecount_where', array( $this, 'wpseo_posts_where' ), 10, 2 ); + + if ( PLL()->options['force_lang'] > 1 ) { + add_filter( 'wpseo_enable_xml_sitemap_transient_caching', '__return_false' ); // Disable cache! otherwise WPSEO keeps only one domain (thanks to Junaid Bhura) + add_filter( 'home_url', array( $this, 'wpseo_home_url' ) , 10, 2 ); // Fix home_url + } else { + // Get all terms in all languages when the language is set from the content or directory name + add_filter( 'get_terms_args', array( $this, 'wpseo_remove_terms_filter' ) ); + + // Add the homepages for all languages to the sitemap when the front page displays posts + if ( ! get_option( 'page_on_front' ) ) { + add_filter( 'wpseo_sitemap_post_content', array( $this, 'add_language_home_urls' ) ); + } + } + + add_filter( 'pll_home_url_white_list', array( $this, 'wpseo_home_url_white_list' ) ); + add_action( 'wpseo_opengraph', array( $this, 'wpseo_ogp' ), 2 ); + add_filter( 'wpseo_canonical', array( $this, 'wpseo_canonical' ) ); + } + + /** + * Yoast SEO + * Helper function to register strings for custom post types and custom taxonomies titles and meta descriptions + * + * @since 2.1.6 + * + * @param array $options + * @param array $titles + * @return array + */ + protected function _wpseo_register_strings( $options, $titles ) { + foreach ( $titles as $title ) { + if ( ! empty( $options[ $title ] ) ) { + pll_register_string( $title, $options[ $title ], 'wordpress-seo' ); + } + } + return $options; + } + + /** + * Yoast SEO + * Registers strings for custom post types and custom taxonomies titles and meta descriptions + * + * @since 2.0 + */ + function wpseo_register_strings() { + $options = get_option( 'wpseo_titles' ); + foreach ( get_post_types( array( 'public' => true, '_builtin' => false ) ) as $t ) { + if ( pll_is_translated_post_type( $t ) ) { + $this->_wpseo_register_strings( $options, array( 'title-' . $t, 'metadesc-' . $t ) ); + } + } + foreach ( get_post_types( array( 'has_archive' => true, '_builtin' => false ) ) as $t ) { + if ( pll_is_translated_post_type( $t ) ) { + $this->_wpseo_register_strings( $options, array( 'title-ptarchive-' . $t, 'metadesc-ptarchive-' . $t, 'bctitle-ptarchive-' . $t ) ); + } + } + foreach ( get_taxonomies( array( 'public' => true, '_builtin' => false ) ) as $t ) { + if ( pll_is_translated_taxonomy( $t ) ) { + $this->_wpseo_register_strings( $options, array( 'title-tax-' . $t, 'metadesc-tax-' . $t ) ); + } + } + } + + /** + * Yoast SEO + * Helper function to translate custom post types and custom taxonomies titles and meta descriptions + * + * @since 2.1.6 + * + * @param array $options + * @param array $titles + * @return array + */ + protected function _wpseo_translate_titles( $options, $titles ) { + foreach ( $titles as $title ) { + if ( ! empty( $options[ $title ] ) ) { + $options[ $title ] = pll__( $options[ $title ] ); + } + } + return $options; + } + + /** + * Yoast SEO + * Translates strings for custom post types and custom taxonomies titles and meta descriptions + * + * @since 2.0 + * + * @param array $options + * @return array + */ + function wpseo_translate_titles( $options ) { + if ( PLL() instanceof PLL_Frontend ) { + foreach ( get_post_types( array( 'public' => true, '_builtin' => false ) ) as $t ) { + if ( pll_is_translated_post_type( $t ) ) { + $options = $this->_wpseo_translate_titles( $options, array( 'title-' . $t, 'metadesc-' . $t ) ); + } + } + foreach ( get_post_types( array( 'has_archive' => true, '_builtin' => false ) ) as $t ) { + if ( pll_is_translated_post_type( $t ) ) { + $options = $this->_wpseo_translate_titles( $options, array( 'title-ptarchive-' . $t, 'metadesc-ptarchive-' . $t, 'bctitle-ptarchive-' . $t ) ); + } + } + foreach ( get_taxonomies( array( 'public' => true, '_builtin' => false ) ) as $t ) { + if ( pll_is_translated_taxonomy( $t ) ) { + $options = $this->_wpseo_translate_titles( $options, array( 'title-tax-' . $t, 'metadesc-tax-' . $t ) ); + } + } + } + return $options; + } + + /** + * Yoast SEO + * Fixes the home url as well as the stylesheet url + * Only when using multiple domains or subdomains + * + * @since 1.6.4 + * + * @param string $url + * @param string $path + * @return $url + */ + public function wpseo_home_url( $url, $path ) { + $uri = empty( $path ) ? ltrim( $_SERVER['REQUEST_URI'], '/' ) : $path; + + if ( 'sitemap_index.xml' === $uri || preg_match( '#([^/]+?)-sitemap([0-9]+)?\.xml|([a-z]+)?-?sitemap\.xsl#', $uri ) ) { + $url = PLL()->links_model->switch_language_in_link( $url, PLL()->curlang ); + } + + return $url; + } + + /** + * Yoast SEO + * Get active languages for the sitemaps + * + * @since 2.0 + * + * @return array list of active language slugs, empty if all languages are active + */ + protected function wpseo_get_active_languages() { + $languages = PLL()->model->get_languages_list(); + if ( wp_list_filter( $languages, array( 'active' => false ) ) ) { + return wp_list_pluck( wp_list_filter( $languages, array( 'active' => false ), 'NOT' ), 'slug' ); + } + return array(); + } + + /** + * Yoast SEO + * Modifies the sql request for posts sitemaps + * Only when using multiple domains or subdomains or if some languages are not active + * + * @since 1.6.4 + * + * @param string $sql JOIN clause + * @param string $post_type + * @return string + */ + public function wpseo_posts_join( $sql, $post_type ) { + return pll_is_translated_post_type( $post_type ) && ( PLL()->options['force_lang'] > 1 || $this->wpseo_get_active_languages() ) ? $sql . PLL()->model->post->join_clause() : $sql; + } + + /** + * Yoast SEO + * Modifies the sql request for posts sitemaps + * Only when using multiple domains or subdomains or if some languages are not active + * + * @since 1.6.4 + * + * @param string $sql WHERE clause + * @param string $post_type + * @return string + */ + public function wpseo_posts_where( $sql, $post_type ) { + if ( pll_is_translated_post_type( $post_type ) ) { + if ( PLL()->options['force_lang'] > 1 ) { + return $sql . PLL()->model->post->where_clause( PLL()->curlang ); + } + + if ( $languages = $this->wpseo_get_active_languages() ) { + return $sql . PLL()->model->post->where_clause( $languages ); + } + } + return $sql; + } + + /** + * Yoast SEO + * Removes the language filter (and remove inactive languages) for the taxonomy sitemaps + * Only when the language is set from the content or directory name + * + * @since 1.0.3 + * + * @param array $args get_terms arguments + * @return array modified list of arguments + */ + public function wpseo_remove_terms_filter( $args ) { + if ( isset( $GLOBALS['wp_query']->query['sitemap'] ) ) { + $args['lang'] = implode( ',', $this->wpseo_get_active_languages() ); + } + return $args; + } + + /** + * Yoast SEO + * Adds the home urls for all (active) languages to the sitemap + * + * @since 1.9 + * + * @param string $str additional urls to sitemap post + * @return string + */ + public function add_language_home_urls( $str ) { + global $wpseo_sitemaps; + $renderer = version_compare( WPSEO_VERSION, '3.2', '<' ) ? $wpseo_sitemaps : $wpseo_sitemaps->renderer; + + $languages = wp_list_pluck( wp_list_filter( PLL()->model->get_languages_list() , array( 'active' => false ), 'NOT' ), 'slug' ); + + foreach ( $languages as $lang ) { + if ( empty( PLL()->options['hide_default'] ) || pll_default_language() !== $lang ) { + $str .= $renderer->sitemap_url( array( + 'loc' => pll_home_url( $lang ), + 'pri' => 1, + 'chf' => apply_filters( 'wpseo_sitemap_homepage_change_freq', 'daily', pll_home_url( $lang ) ), + ) ); + } + } + return $str; + } + + /** + * Yoast SEO + * + * @since 1.1.2 + * + * @param array $arr + * @return array + */ + public function wpseo_home_url_white_list( $arr ) { + return array_merge( $arr, array( array( 'file' => 'wordpress-seo' ) ) ); + } + + /** + * Yoast SEO + * Adds opengraph support for translations + * + * @since 1.6 + */ + public function wpseo_ogp() { + global $wpseo_og; + + // WPSEO already deals with the locale + if ( did_action( 'pll_init' ) && method_exists( $wpseo_og, 'og_tag' ) ) { + foreach ( PLL()->model->get_languages_list() as $language ) { + if ( PLL()->curlang->slug !== $language->slug && PLL()->links->get_translation_url( $language ) && $fb_locale = self::get_fb_locale( $language ) ) { + $wpseo_og->og_tag( 'og:locale:alternate', $fb_locale ); + } + } + } + } + + /** + * Yoast SEO + * Fixes the canonical front page url as unlike WP, WPSEO does not add a trailing slash to the canonical front page url + * + * @since 1.7.10 + * + * @param string $url + * @return $url + */ + public function wpseo_canonical( $url ) { + return is_front_page( $url ) && get_option( 'permalink_structure' ) ? trailingslashit( $url ) : $url; + } + + /** + * Aqua Resizer + * + * @since 1.1.5 + * + * @param array $arr + * @return array + */ + public function aq_home_url_black_list( $arr ) { + return array_merge( $arr, array( array( 'function' => 'aq_resize' ) ) ); + } + + /** + * Custom field template + * Custom field template does check $_REQUEST['post'] to populate the custom fields values + * + * @since 1.0.2 + * + * @param string $post_type unused + * @param object $post current post object + */ + public function cft_copy( $post_type, $post ) { + global $custom_field_template; + if ( isset( $custom_field_template, $_REQUEST['from_post'], $_REQUEST['new_lang'] ) && ! empty( $post ) ) { + $_REQUEST['post'] = $post->ID; + } + } + + /** + * Twenty Fourteen + * Rewrites the function Featured_Content::get_featured_post_ids() + * + * @since 1.4 + * + * @param array $featured_ids featured posts ids + * @return array modified featured posts ids ( include all languages ) + */ + public function twenty_fourteen_featured_content_ids( $featured_ids ) { + if ( 'twentyfourteen' != get_template() || ! did_action( 'pll_init' ) || false !== $featured_ids ) { + return $featured_ids; + } + + $settings = Featured_Content::get_setting(); + + if ( ! $term = wpcom_vip_get_term_by( 'name', $settings['tag-name'], 'post_tag' ) ) { + return $featured_ids; + } + + // Get featured tag translations + $tags = PLL()->model->term->get_translations( $term->term_id ); + $ids = array(); + + // Query for featured posts in all languages + // One query per language to get the correct number of posts per language + foreach ( $tags as $tag ) { + $_ids = get_posts( array( + 'lang' => 0, // avoid language filters + 'fields' => 'ids', + 'numberposts' => Featured_Content::$max_posts, + 'tax_query' => array( + array( + 'taxonomy' => 'post_tag', + 'terms' => (int) $tag, + ), + ), + ) ); + + $ids = array_merge( $ids, $_ids ); + } + + $ids = array_map( 'absint', $ids ); + set_transient( 'featured_content_ids', $ids ); + + return $ids; + } + + /** + * Twenty Fourteen + * Translates the featured tag id in featured content settings + * Mainly to allow hiding it when requested in featured content options + * Acts only on frontend + * + * @since 1.4 + * + * @param array $settings featured content settings + * @return array modified $settings + */ + public function twenty_fourteen_option_featured_content( $settings ) { + if ( 'twentyfourteen' == get_template() && PLL() instanceof PLL_Frontend && $settings['tag-id'] && $tr = pll_get_term( $settings['tag-id'] ) ) { + $settings['tag-id'] = $tr; + } + + return $settings; + } + + /** + * Duplicate Post + * Avoid duplicating the 'post_translations' taxonomy + * + * @since 1.8 + * + * @param array|string $taxonomies + * @return array + */ + function duplicate_post_taxonomies_blacklist( $taxonomies ) { + if ( empty( $taxonomies ) ) { + $taxonomies = array(); // As we get an empty string when there is no taxonomy + } + + $taxonomies[] = 'post_translations'; + return $taxonomies; + } + + /** + * Jetpack + * Add filters + * + * @since 2.1 + */ + public function jetpack_init() { + if ( ! defined( 'JETPACK__VERSION' ) ) { + return; + } + + // Infinite scroll ajax url must be on the right domain + if ( did_action( 'pll_init' ) && PLL()->options['force_lang'] > 1 ) { + add_filter( 'infinite_scroll_ajax_url', array( PLL()->links_model, 'site_url' ) ); + add_filter( 'infinite_scroll_js_settings', array( $this, 'jetpack_infinite_scroll_js_settings' ) ); + } + } + + /** + * Jetpack + * Filter the Top Posts and Pages by language. + * Adapted from the same function in jetpack-3.0.2/3rd-party/wpml.php + * + * @since 1.5.4 + * + * @param array $posts Array of the most popular posts. + * @param array $post_ids Array of Post IDs. + * @param string $count Number of Top Posts we want to display. + * @return array + */ + public function jetpack_widget_get_top_posts( $posts, $post_ids, $count ) { + foreach ( $posts as $k => $post ) { + if ( pll_current_language() !== pll_get_post_language( $post['post_id'] ) ) { + unset( $posts[ $k ] ); + } + } + + return $posts; + } + + /** + * Jetpack + * Filter the HTML of the Contact Form and output the one requested by language. + * Adapted from the same function in jetpack-3.0.2/3rd-party/wpml.php + * Keeps using 'icl_translate' as the function registers the string + * + * @since 1.5.4 + * + * @param string $r Contact Form HTML output. + * @param string $field_label Field label. + * @param int|null $id Post ID. + * @return string + */ + public function grunion_contact_form_field_html_filter( $r, $field_label, $id ) { + if ( function_exists( 'icl_translate' ) ) { + if ( pll_current_language() !== pll_default_language() ) { + $label_translation = icl_translate( 'jetpack ', $field_label . '_label', $field_label ); + $r = str_replace( $field_label, $label_translation, $r ); + } + } + + return $r; + } + + /** + * Jetpack + * Adds opengraph support for locale and translations + * + * @since 1.6 + * + * @param array $tags opengraph tags to output + * @return array + */ + public function jetpack_ogp( $tags ) { + if ( did_action( 'pll_init' ) ) { + foreach ( PLL()->model->get_languages_list() as $language ) { + if ( PLL()->curlang->slug !== $language->slug && PLL()->links->get_translation_url( $language ) && $fb_locale = self::get_fb_locale( $language ) ) { + $tags['og:locale:alternate'][] = $fb_locale; + } + if ( PLL()->curlang->slug === $language->slug && $fb_locale = self::get_fb_locale( $language ) ) { + $tags['og:locale'] = $fb_locale; + } + } + } + return $tags; + } + + /** + * Jetpack + * Allows to make sure that related posts are in the correct language + * + * @since 1.8 + * + * @param array $filters Array of ElasticSearch filters based on the post_id and args. + * @param string $post_id Post ID of the post for which we are retrieving Related Posts. + * @return array + */ + function jetpack_relatedposts_filter_filters( $filters, $post_id ) { + $slug = sanitize_title( pll_get_post_language( $post_id, 'slug' ) ); + $filters[] = array( 'term' => array( 'taxonomy.language.slug' => $slug ) ); + return $filters; + } + + /** + * Jetpack + * Fixes the settings history host for infinite scroll when using subdomains or multiple domains + * + * @since 2.1 + * + * @param array $settings + * @return array + */ + public function jetpack_infinite_scroll_js_settings( $settings ) { + $settings['history']['host'] = parse_url( pll_home_url(), PHP_URL_HOST ); // Jetpack uses get_option( 'home' ) + return $settings; + } + + /** + * WP Sweep + * Add 'term_language' and 'term_translations' to excluded taxonomies otherwise terms loose their language and translation group + * + * @since 2.0 + * + * @param array $excluded_taxonomies list of taxonomies excluded from sweeping + * @return array + */ + public function wp_sweep_excluded_taxonomies( $excluded_taxonomies ) { + return array_merge( $excluded_taxonomies, array( 'term_language', 'term_translations' ) ); + } + + /** + * Twenty Seventeen + * Translates the front page panels + * + * @since 2.0.10 + */ + public function twenty_seventeen_init() { + if ( 'twentyseventeen' === get_template() && function_exists( 'twentyseventeen_panel_count' ) && did_action( 'pll_init' ) && PLL() instanceof PLL_Frontend ) { + $num_sections = twentyseventeen_panel_count(); + for ( $i = 1; $i < ( 1 + $num_sections ); $i++ ) { + add_filter( 'theme_mod_panel_' . $i, 'pll_get_post' ); + } + } + } + + /** + * Make sure No category base plugins (including Yoast SEO) get all categories when flushing rules + * + * @since 2.1 + * + * @param array $args + * @return array + */ + public function no_category_base_get_terms_args( $args ) { + if ( doing_filter( 'category_rewrite_rules' ) ) { + $args['lang'] = ''; + } + return $args; + } + + /** + * WordPress MU Domain Mapping + * Fix primary domain check which forces only one domain per blog + * Accept only known domains/subdomains for the current blog + * + * @since 2.2 + */ + public function dm_redirect_to_mapped_domain() { + // Don't redirect the main site + if ( is_main_site() ) { + return; + } + + // Don't redirect post previews + if ( isset( $_GET['preview'] ) && 'true' === $_GET['preview'] ) { + return; + } + + // Don't redirect theme customizer + if ( isset( $_POST['customize'] ) && isset( $_POST['theme'] ) && 'on' === $_POST['customize'] ) { + return; + } + + // If we can't associate the requested domain to a language, redirect to the default domain + $options = get_option( 'polylang' ); + if ( $options['force_lang'] > 1 ) { + $hosts = PLL()->links_model->get_hosts(); + $lang = array_search( $_SERVER['HTTP_HOST'], $hosts ); + + if ( empty( $lang ) ) { + $status = get_site_option( 'dm_301_redirect' ) ? '301' : '302'; // Honor status redirect option + $redirect = ( is_ssl() ? 'https://' : 'http://' ) . $hosts[ $options['default_lang'] ] . $_SERVER['REQUEST_URI']; + wp_redirect( $redirect, $status ); + exit; + } + } + } + + /** + * Correspondance between WordPress locales and Facebook locales + * @see https://translate.wordpress.org/ + * @see https://www.facebook.com/translations/FacebookLocales.xml + * + * @since 1.8.1 Update the list of locales + * @since 1.6 + * + * @param object $language + * @return bool|string Facebook locale, false if no correspondance found + */ + static public function get_fb_locale( $language ) { + static $facebook_locales = array( + 'af' => 'af_ZA', + 'ak' => 'ak_GH', + 'am' => 'am_ET', + 'ar' => 'ar_AR', + 'arq' => 'ar_AR', + 'ary' => 'ar_AR', + 'as' => 'as_IN', + 'az' => 'az_AZ', + 'bel' => 'be_BY', + 'bg_BG' => 'bg_BG', + 'bn_BD' => 'bn_IN', + 'bre' => 'br_FR', + 'bs_BA' => 'bs_BA', + 'ca' => 'ca_ES', + 'ceb' => 'cx_PH', + 'ckb' => 'cb_IQ', + 'co' => 'co_FR', + 'cs_CZ' => 'cs_CZ', + 'cy' => 'cy_GB', + 'da_DK' => 'da_DK', + 'de_CH' => 'de_DE', + 'de_DE' => 'de_DE', + 'de_DE_formal' => 'de_DE', + 'el' => 'el_GR', + 'en_AU' => 'en_US', + 'en_CA' => 'en_US', + 'en_GB' => 'en_GB', + 'en_NZ' => 'en_US', + 'en_US' => 'en_US', + 'en_ZA' => 'en_US', + 'eo' => 'eo_EO', + 'es_AR' => 'es_LA', + 'es_CL' => 'es_CL', + 'es_CO' => 'es_CO', + 'es_MX' => 'es_MX', + 'es_PE' => 'es_LA', + 'es_ES' => 'es_ES', + 'es_VE' => 'es_VE', + 'et' => 'et_EE', + 'eu' => 'eu_ES', + 'fa_IR' => 'fa_IR', + 'fi' => 'fi_FI', + 'fo' => 'fo_FO', + 'fr_CA' => 'fr_CA', + 'fr_FR' => 'fr_FR', + 'fuc' => 'ff_NG', + 'fy' => 'fy_NL', + 'ga' => 'ga_IE', + 'gl_ES' => 'gl_ES', + 'gn' => 'gn_PY', + 'gu' => 'gu_IN', + 'he_IL' => 'he_IL', + 'hi_IN' => 'hi_IN', + 'hr' => 'hr_HR', + 'hu_HU' => 'hu_HU', + 'hy' => 'hy_AM', + 'id_ID' => 'id_ID', + 'is_IS' => 'is_IS', + 'it_IT' => 'it_IT', + 'ja' => 'ja_JP', + 'jv_ID' => 'jv_ID', + 'ka_GE' => 'ka_GE', + 'kin' => 'rw_RW', + 'kk' => 'kk_KZ', + 'km' => 'km_kH', + 'kn' => 'kn_IN', + 'ko_KR' => 'ko_KR', + 'ku' => 'ku_TR', + 'ky_KY' => 'ky_KG', + 'la' => 'la_Va', + 'li' => 'li_NL', + 'lin' => 'ln_CD', + 'lo' => 'lo_LA', + 'lt_LT' => 'lt_LT', + 'lv' => 'lv_LV', + 'mg_MG' => 'mg_MG', + 'mk_MK' => 'mk_MK', + 'ml_IN' => 'ml_IN', + 'mn' => 'mn_MN', + 'mr' => 'mr_IN', + 'mri' => 'mi_NZ', + 'ms_MY' => 'ms_MY', + 'my_MM' => 'my_MM', + 'ne_NP' => 'ne_NP', + 'nb_NO' => 'nb_NO', + 'nl_BE' => 'nl_BE', + 'nl_NL' => 'nl_NL', + 'nn_NO' => 'nn_NO', + 'ory' => 'or_IN', + 'pa_IN' => 'pa_IN', + 'pl_PL' => 'pl_PL', + 'ps' => 'ps_AF', + 'pt_BR' => 'pt_BR', + 'pt_PT' => 'pt_PT', + 'ps' => 'ps_AF', + 'ro_RO' => 'ro_RO', + 'roh' => 'rm_CH', + 'ru_RU' => 'ru_RU', + 'sa_IN' => 'sa_IN', + 'si_LK' => 'si_LK', + 'sk_SK' => 'sk_SK', + 'sl_SI' => 'sl_SI', + 'so_SO' => 'so_SO', + 'sq' => 'sq_AL', + 'sr_RS' => 'sr_RS', + 'srd' => 'sc_IT', + 'sv_SE' => 'sv_SE', + 'sw' => 'sw_KE', + 'szl' => 'sz_PL', + 'ta_LK' => 'ta_IN', + 'ta_IN' => 'ta_IN', + 'te' => 'te_IN', + 'tg' => 'tg_TJ', + 'th' => 'th_TH', + 'tl' => 'tl_PH', + 'tuk' => 'tk_TM', + 'tr_TR' => 'tr_TR', + 'tt_RU' => 'tt_RU', + 'tzm' => 'tz_MA', + 'uk' => 'uk_UA', + 'ur' => 'ur_PK', + 'uz_UZ' => 'uz_UZ', + 'vi' => 'vi_VN', + 'yor' => 'yo_NG', + 'zh_CN' => 'zh_CN', + 'zh_HK' => 'zh_HK', + 'zh_TW' => 'zh_TW', + ); + + return isset( $facebook_locales[ $language->locale ] ) ? $facebook_locales[ $language->locale ] : false; + } +} diff --git a/pole-sbv-content/plugins/polylang/modules/plugins/wp-import.php b/pole-sbv-content/plugins/polylang/modules/plugins/wp-import.php new file mode 100644 index 00000000..2fc46f71 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/modules/plugins/wp-import.php @@ -0,0 +1,185 @@ +terms + foreach ( $this->terms as $term ) { + if ( 'post_translations' == $term['term_taxonomy'] ) { + $this->post_translations[] = $term; + } + if ( 'term_translations' == $term['term_taxonomy'] ) { + $term_translations[] = $term; + } + } + + parent::process_terms(); + + // update the languages list if needed + // first reset the core terms cache as WordPress Importer calls wp_suspend_cache_invalidation( true ); + wp_cache_set( 'last_changed', microtime(), 'terms' ); + PLL()->model->clean_languages_cache(); + + if ( ( $options = get_option( 'polylang' ) ) && empty( $options['default_lang'] ) && ( $languages = PLL()->model->get_languages_list() ) ) { + // assign the default language if importer created the first language + $default_lang = reset( $languages ); + $options['default_lang'] = $default_lang->slug; + update_option( 'polylang', $options ); + } + + $this->remap_terms_relations( $term_translations ); + $this->remap_translations( $term_translations, $this->processed_terms ); + } + + /** + * overrides WP_Import::process_post to remap posts translations + * also merges strings translations from the WXR file to the existing ones + * + * @since 1.2 + */ + function process_posts() { + $menu_items = $mo_posts = array(); + + // store this for future usage as parent function unset $this->posts + foreach ( $this->posts as $post ) { + if ( 'nav_menu_item' == $post['post_type'] ) { + $menu_items[] = $post; + } + + if ( 0 === strpos( $post['post_title'], 'polylang_mo_' ) ) { + $mo_posts[] = $post; + } + } + + if ( ! empty( $mo_posts ) ) { + new PLL_MO(); // just to register the polylang_mo post type before processing posts + } + + parent::process_posts(); + + PLL()->model->clean_languages_cache(); // to update the posts count in ( cached ) languages list + + $this->remap_translations( $this->post_translations, $this->processed_posts ); + unset( $this->post_translations ); + + // language switcher menu items + foreach ( $menu_items as $item ) { + foreach ( $item['postmeta'] as $meta ) { + if ( '_pll_menu_item' == $meta['key'] ) { + update_post_meta( $this->processed_menu_items[ $item['post_id'] ], '_pll_menu_item', maybe_unserialize( $meta['value'] ) ); + } + } + } + + // merge strings translations + foreach ( $mo_posts as $post ) { + $lang_id = (int) substr( $post['post_title'], 12 ); + + if ( ! empty( $this->processed_terms[ $lang_id ] ) ) { + if ( $strings = unserialize( $post['post_content'] ) ) { + $mo = new PLL_MO(); + $mo->import_from_db( $this->processed_terms[ $lang_id ] ); + foreach ( $strings as $msg ) { + $mo->add_entry_or_merge( $mo->make_entry( $msg[0], $msg[1] ) ); + } + $mo->export_to_db( $this->processed_terms[ $lang_id ] ); + } + } + // delete the now useless imported post + wp_delete_post( $this->processed_posts[ $post['post_id'] ], true ); + } + } + + /** + * remaps terms languages + * + * @since 1.2 + * + * @param array $terms array of terms in 'term_translations' taxonomy + */ + function remap_terms_relations( &$terms ) { + global $wpdb; + + foreach ( $terms as $term ) { + $translations = unserialize( $term['term_description'] ); + foreach ( $translations as $slug => $old_id ) { + if ( $old_id && ! empty( $this->processed_terms[ $old_id ] ) && $lang = PLL()->model->get_language( $slug ) ) { + // language relationship + $trs[] = $wpdb->prepare( '( %d, %d )', $this->processed_terms[ $old_id ], $lang->tl_term_taxonomy_id ); + + // translation relationship + $trs[] = $wpdb->prepare( '( %d, %d )', $this->processed_terms[ $old_id ], get_term( $this->processed_terms[ $term['term_id'] ], 'term_translations' )->term_taxonomy_id ); + } + } + } + + // insert term_relationships + if ( ! empty( $trs ) ) { + $trs = array_unique( $trs ); + + // make sure we don't attempt to insert already existing term relationships + $existing_trs = $wpdb->get_results( " + SELECT tr.object_id, tr.term_taxonomy_id FROM $wpdb->term_relationships AS tr + INNER JOIN $wpdb->term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id + WHERE tt.taxonomy IN ( 'term_language', 'term_translations' ) + " ); + + foreach ( $existing_trs as $key => $tr ) { + $existing_trs[ $key ] = $wpdb->prepare( '( %d, %d )', $tr->object_id, $tr->term_taxonomy_id ); + } + + $trs = array_diff( $trs, $existing_trs ); + + if ( ! empty( $trs ) ) { + $wpdb->query( "INSERT INTO $wpdb->term_relationships ( object_id, term_taxonomy_id ) VALUES " . implode( ',', $trs ) ); + } + } + } + + /** + * remaps translations for both posts and terms + * + * @since 1.2 + * + * @param array $terms array of terms in 'post_translations' or 'term_translations' taxonomies + * @param array $processed_objects array of posts or terms processed by WordPress Importer + */ + function remap_translations( &$terms, &$processed_objects ) { + global $wpdb; + + foreach ( $terms as $term ) { + $translations = unserialize( $term['term_description'] ); + $new_translations = array(); + + foreach ( $translations as $slug => $old_id ) { + if ( $old_id && ! empty( $processed_objects[ $old_id ] ) ) { + $new_translations[ $slug ] = $processed_objects[ $old_id ]; + } + } + + if ( ! empty( $new_translations ) ) { + $u['case'][] = $wpdb->prepare( 'WHEN %d THEN %s', $this->processed_terms[ $term['term_id'] ], serialize( $new_translations ) ); + $u['in'][] = (int) $this->processed_terms[ $term['term_id'] ]; + } + } + + if ( ! empty( $u ) ) { + $wpdb->query( "UPDATE $wpdb->term_taxonomy + SET description = ( CASE term_id " . implode( ' ', $u['case'] ) . ' END ) + WHERE term_id IN ( ' . implode( ',', $u['in'] ) . ' )' ); + } + } +} diff --git a/pole-sbv-content/plugins/polylang/modules/share-slug/settings-share-slug.php b/pole-sbv-content/plugins/polylang/modules/share-slug/settings-share-slug.php new file mode 100644 index 00000000..5b9723ab --- /dev/null +++ b/pole-sbv-content/plugins/polylang/modules/share-slug/settings-share-slug.php @@ -0,0 +1,81 @@ + 'share-slugs', + 'title' => __( 'Share slugs', 'polylang' ), + 'description' => __( 'Allows to share the same url slug across languages for posts and terms.', 'polylang' ), + ) ); + + if ( class_exists( 'PLL_Share_Post_Slug', true ) && get_option( 'permalink_structure' ) ) { + add_action( 'admin_print_footer_scripts', array( $this, 'print_js' ) ); + } + } + + /** + * tells if the module is active + * + * @since 1.9 + * + * @return bool + */ + public function is_active() { + return class_exists( 'PLL_Share_Post_Slug', true ) && $this->options['force_lang'] && get_option( 'permalink_structure' ); + } + + /** + * displays upgrade message + * + * @since 1.9 + * + * @return string + */ + public function get_upgrade_message() { + return class_exists( 'PLL_Share_Post_Slug', true ) ? '' : $this->default_upgrade_message(); + } + + /** + * displays the javascript to handle dynamically the change in url modifications + * as sharing slugs is not possible when the language is set from the content + * + * @since 1.9 + */ + public function print_js() { + wp_enqueue_script( 'jquery' ); + + $activated = sprintf( '%s', $this->action_links['activated'] ); + $deactivated = sprintf( '%s', $this->action_links['deactivated'] ); + + ?> + + model = &$polylang->model; + $this->options = &$polylang->options; + + add_filter( 'wp_insert_post_parent', array( $this, 'wp_insert_post_parent' ), 10, 3 ); + add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ), 5, 2 ); // Before Types which populates custom fields in same hook with priority 10 + + add_action( 'pll_save_post', array( $this, 'pll_save_post' ), 10, 3 ); + add_action( 'pll_save_term', array( $this, 'pll_save_term' ), 10, 3 ); + + if ( $this->options['media_support'] ) { + add_action( 'pll_translate_media', array( $this, 'copy_taxonomies' ), 10, 3 ); + add_action( 'pll_translate_media', array( $this, 'copy_post_metas' ), 10, 3 ); + add_action( 'edit_attachment', array( $this, 'edit_attachment' ) ); + } + } + + /** + * Translate post parent if exists when using "Add new" ( translation ) + * + * @since 0.6 + * + * @param int $post_parent Post parent ID + * @param int $post_id Post ID, unused + * @param array $postarr Array of parsed post data + * @return int + */ + public function wp_insert_post_parent( $post_parent, $post_id, $postarr ) { + // Make sure not to impact media translations created at the same time + return isset( $_GET['from_post'], $_GET['new_lang'], $_GET['post_type'] ) && $_GET['post_type'] === $postarr['post_type'] && ( $id = wp_get_post_parent_id( (int) $_GET['from_post'] ) ) && ( $parent = $this->model->post->get_translation( $id, $_GET['new_lang'] ) ) ? $parent : $post_parent; + } + + /** + * Copy post metas, menu order, comment and ping status when using "Add new" ( translation ) + * formerly used dbx_post_advanced deprecated in WP 3.7 + * + * @since 1.2 + * + * @param string $post_type unused + * @param object $post current post object + */ + public function add_meta_boxes( $post_type, $post ) { + if ( 'post-new.php' == $GLOBALS['pagenow'] && isset( $_GET['from_post'], $_GET['new_lang'] ) && $this->model->is_translated_post_type( $post->post_type ) ) { + // Capability check already done in post-new.php + $from_post_id = (int) $_GET['from_post']; + $from_post = get_post( $from_post_id ); + $lang = $this->model->get_language( $_GET['new_lang'] ); + + if ( ! $from_post || ! $lang ) { + return; + } + + $this->copy_taxonomies( $from_post_id, $post->ID, $lang->slug ); + $this->copy_post_metas( $from_post_id, $post->ID, $lang->slug ); + + foreach ( array( 'menu_order', 'comment_status', 'ping_status' ) as $property ) { + $post->$property = $from_post->$property; + } + + // Copy the date only if the synchronization is activated + if ( in_array( 'post_date', $this->options['sync'] ) ) { + $post->post_date = $from_post->post_date; + $post->post_date_gmt = $from_post->post_date_gmt; + } + + if ( is_sticky( $from_post_id ) ) { + stick_post( $post->ID ); + } + } + } + + /** + * Get the list of taxonomies to copy or to synchronize + * + * @since 1.7 + * @since 2.1 The `$from`, `$to`, `$lang` parameters were added. + * + * @param bool $sync true if it is synchronization, false if it is a copy + * @param int $from id of the post from which we copy informations, optional, defaults to null + * @param int $to id of the post to which we paste informations, optional, defaults to null + * @param string $lang language slug, optional, defaults to null + * @return array list of taxonomy names + */ + public function get_taxonomies_to_copy( $sync, $from = null, $to = null, $lang = null ) { + $taxonomies = ! $sync || in_array( 'taxonomies', $this->options['sync'] ) ? $this->model->get_translated_taxonomies() : array(); + if ( ! $sync || in_array( 'post_format', $this->options['sync'] ) ) { + $taxonomies[] = 'post_format'; + } + + /** + * Filter the taxonomies to copy or synchronize + * + * @since 1.7 + * @since 2.1 The `$from`, `$to`, `$lang` parameters were added. + * + * @param array $taxonomies list of taxonomy names + * @param bool $sync true if it is synchronization, false if it is a copy + * @param int $from id of the post from which we copy informations + * @param int $to id of the post to which we paste informations + * @param string $lang language slug + */ + return array_unique( apply_filters( 'pll_copy_taxonomies', $taxonomies, $sync, $from, $to, $lang ) ); + } + + /** + * Copy or synchronize terms + * + * @since 1.8 + * + * @param int $from id of the post from which we copy informations + * @param int $to id of the post to which we paste informations + * @param string $lang language slug + * @param bool $sync true if it is synchronization, false if it is a copy, defaults to false + */ + public function copy_taxonomies( $from, $to, $lang, $sync = false ) { + // Get taxonomies to sync for this post type + $taxonomies = array_intersect( get_post_taxonomies( $from ), $this->get_taxonomies_to_copy( $sync, $from, $to, $lang ) ); + + // Update the term cache to reduce the number of queries in the loop + update_object_term_cache( $sync ? array( $from, $to ) : $from, get_post_type( $from ) ); + + // Copy or synchronize terms + // FIXME quite a lot of query in foreach + foreach ( $taxonomies as $tax ) { + $terms = get_the_terms( $from, $tax ); + + // Translated taxonomy + if ( $this->model->is_translated_taxonomy( $tax ) ) { + $newterms = array(); + if ( is_array( $terms ) ) { + foreach ( $terms as $term ) { + if ( $term_id = $this->model->term->get_translation( $term->term_id, $lang ) ) { + $newterms[] = (int) $term_id; // Cast is important otherwise we get 'numeric' tags + } + } + } + + // For some reasons, the user may have untranslated terms in the translation. don't forget them. + if ( $sync ) { + $tr_terms = get_the_terms( $to, $tax ); + if ( is_array( $tr_terms ) ) { + foreach ( $tr_terms as $term ) { + if ( ! $this->model->term->get_translation( $term->term_id, $this->model->post->get_language( $from ) ) ) { + $newterms[] = (int) $term->term_id; + } + } + } + } + + if ( ! empty( $newterms ) || $sync ) { + wp_set_object_terms( $to, $newterms, $tax ); // replace terms in translation + } + } + + // Untranslated taxonomy ( post format ) + // Don't use simple get_post_format / set_post_format to generalize the case to other taxonomies + else { + wp_set_object_terms( $to, is_array( $terms ) ? array_map( 'intval', wp_list_pluck( $terms, 'term_id' ) ) : null, $tax ); + } + } + } + + /** + * Copy or synchronize metas (custom fields) + * + * @since 0.9 + * + * @param int $from id of the post from which we copy informations + * @param int $to id of the post to which we paste informations + * @param string $lang language slug + * @param bool $sync true if it is synchronization, false if it is a copy, defaults to false + */ + public function copy_post_metas( $from, $to, $lang, $sync = false ) { + // Copy or synchronize post metas and allow plugins to do the same + $metas = get_post_custom( $from ); + $keys = array(); + + // Get public meta keys ( including from translated post in case we just deleted a custom field ) + if ( ! $sync || in_array( 'post_meta', $this->options['sync'] ) ) { + foreach ( $keys = array_unique( array_merge( array_keys( $metas ), array_keys( get_post_custom( $to ) ) ) ) as $k => $meta_key ) { + if ( is_protected_meta( $meta_key ) ) { + unset( $keys[ $k ] ); + } + } + } + + // Add page template and featured image + foreach ( array( '_wp_page_template', '_thumbnail_id' ) as $meta ) { + if ( ! $sync || in_array( $meta, $this->options['sync'] ) ) { + $keys[] = $meta; + } + } + + /** + * Filter the custom fields to copy or synchronize + * + * @since 0.6 + * @since 1.9.2 The `$from`, `$to`, `$lang` parameters were added. + * + * @param array $keys list of custom fields names + * @param bool $sync true if it is synchronization, false if it is a copy + * @param int $from id of the post from which we copy informations + * @param int $to id of the post to which we paste informations + * @param string $lang language slug + */ + $keys = array_unique( apply_filters( 'pll_copy_post_metas', $keys, $sync, $from, $to, $lang ) ); + + // And now copy / synchronize + foreach ( $keys as $key ) { + delete_post_meta( $to, $key ); // The synchronization process of multiple values custom fields is easier if we delete all metas first + if ( isset( $metas[ $key ] ) ) { + foreach ( $metas[ $key ] as $value ) { + // Important: always maybe_unserialize value coming from get_post_custom. See codex. + // Thanks to goncalveshugo http://wordpress.org/support/topic/plugin-polylang-pll_copy_post_meta + $value = maybe_unserialize( $value ); + // Special case for featured images which can be translated + add_post_meta( $to, $key, ( '_thumbnail_id' == $key && $tr_value = $this->model->post->get_translation( $value, $lang ) ) ? $tr_value : $value ); + } + } + } + } + + /** + * Synchronizes terms and metas in translations + * + * @since 1.2 + * + * @param int $post_id post id + * @param object $post post object + * @param array $translations post translations + */ + public function pll_save_post( $post_id, $post, $translations ) { + global $wpdb; + + // Prepare properties to synchronize + foreach ( array( 'comment_status', 'ping_status', 'menu_order' ) as $property ) { + if ( in_array( $property, $this->options['sync'] ) ) { + $postarr[ $property ] = $post->$property; + } + } + + if ( in_array( 'post_date', $this->options['sync'] ) ) { + // For new drafts, save the date now otherwise it is overriden by WP. Thanks to JoryHogeveen. See #32. + if ( 'post-new.php' === $GLOBALS['pagenow'] && isset( $_GET['from_post'], $_GET['new_lang'] ) ) { + $original = get_post( (int) $_GET['from_post'] ); + $wpdb->update( + $wpdb->posts, array( + 'post_date' => $original->post_date, + 'post_date_gmt' => $original->post_date_gmt, + ), + array( 'ID' => $post_id ) + ); + } else { + $postarr['post_date'] = $post->post_date; + $postarr['post_date_gmt'] = $post->post_date_gmt; + } + } + + // Synchronize terms and metas in translations + foreach ( $translations as $lang => $tr_id ) { + if ( ! $tr_id || $tr_id === $post_id ) { + continue; + } + + // Synchronize terms and metas + $this->copy_taxonomies( $post_id, $tr_id, $lang, true ); + $this->copy_post_metas( $post_id, $tr_id, $lang, true ); + + // Sticky posts + if ( in_array( 'sticky_posts', $this->options['sync'] ) ) { + isset( $_REQUEST['sticky'] ) && 'sticky' === $_REQUEST['sticky'] ? stick_post( $tr_id ) : unstick_post( $tr_id ); + } + + // Add comment status, ping status, menu order... to synchronization + $tr_arr = empty( $postarr ) ? array() : $postarr; + + if ( isset( $GLOBALS['post_type'] ) ) { + $post_type = $GLOBALS['post_type']; + } elseif ( isset( $_REQUEST['post_type'] ) ) { + $post_type = $_REQUEST['post_type']; // 2nd case for quick edit + } + + // Add post parent to synchronization + // Make sure not to impact media translations when creating them at the same time as post + // Do not udpate the translation parent if the user set a parent with no translation + if ( in_array( 'post_parent', $this->options['sync'] ) && isset( $post_type ) && $post_type === $post->post_type ) { + $post_parent = ( $parent_id = wp_get_post_parent_id( $post_id ) ) ? $this->model->post->get_translation( $parent_id, $lang ) : 0; + if ( ! ( $parent_id && ! $post_parent ) ) { + $tr_arr['post_parent'] = $post_parent; + } + } + + // Update all the row at once + // Don't use wp_update_post to avoid infinite loop + if ( ! empty( $tr_arr ) ) { + $wpdb->update( $wpdb->posts, $tr_arr, array( 'ID' => $tr_id ) ); + clean_post_cache( $tr_id ); + } + } + } + + /** + * Synchronize translations of a term in all posts + * + * @since 1.2 + * + * @param int $term_id term id + * @param string $taxonomy taxonomy name of the term + * @param array $translations translations of the term + */ + public function pll_save_term( $term_id, $taxonomy, $translations ) { + // Sync term metas + foreach ( $translations as $lang => $tr_id ) { + if ( $tr_id && $tr_id !== $term_id ) { + $this->copy_term_metas( $term_id, $tr_id, $lang, true ); + } + } + + // Check if the taxonomy is synchronized + if ( ! in_array( $taxonomy, $this->get_taxonomies_to_copy( true ) ) ) { + return; + } + + // Get all posts associated to this term + $posts = get_posts( array( + 'numberposts' => -1, + 'nopaging' => true, + 'post_type' => 'any', + 'post_status' => 'any', + 'fields' => 'ids', + 'tax_query' => array( + array( + 'taxonomy' => $taxonomy, + 'field' => 'id', + 'terms' => array_merge( array( $term_id ), array_values( $translations ) ), + 'include_children' => false, + ), + ), + ) ); + + // Associate translated term to translated post + // FIXME quite a lot of query in foreach + foreach ( $this->model->get_languages_list() as $language ) { + if ( $translated_term = $this->model->term->get( $term_id, $language ) ) { + foreach ( $posts as $post_id ) { + if ( $translated_post = $this->model->post->get( $post_id, $language ) ) { + wp_set_object_terms( $translated_post, $translated_term, $taxonomy, true ); + } + } + } + } + + // Synchronize parent in translations + // Calling clean_term_cache *after* this is mandatory otherwise the $taxonomy_children option is not correctly updated + // Before WP 3.9 clean_term_cache could be called ( efficiently ) only one time due to static array which prevented to update the option more than once + // This is the reason to use the edit_term filter and not edited_term + // Take care that $_POST contains the only valid values for the current term + // FIXME can I synchronize parent without using $_POST instead? + if ( isset( $_POST['term_tr_lang'] ) ) { + foreach ( $_POST['term_tr_lang'] as $lang => $tr_id ) { + if ( $tr_id ) { + if ( isset( $_POST['parent'] ) && -1 != $_POST['parent'] ) { // Since WP 3.1 + $term_parent = $this->model->term->get_translation( (int) $_POST['parent'], $lang ); + } + + global $wpdb; + $wpdb->update( $wpdb->term_taxonomy, + array( 'parent' => isset( $term_parent ) ? $term_parent : 0 ), + array( 'term_taxonomy_id' => get_term( (int) $tr_id, $taxonomy )->term_taxonomy_id ) + ); + + clean_term_cache( $tr_id, $taxonomy ); // OK since WP 3.9 + } + } + } + } + + /** + * Synchronizes terms and metas in translations for media + * + * @since 1.8 + * + * @param int $post_id post id + */ + public function edit_attachment( $post_id ) { + $this->pll_save_post( $post_id, get_post( $post_id ), $this->model->post->get_translations( $post_id ) ); + } + + /** + * Copy or synchronize term metas (custom fields) + * + * @since 2.2 + * + * @param int $from id of the term from which we copy informations + * @param int $to id of the term to which we paste informations + * @param string $lang language slug + * @param bool $sync true if it is synchronization, false if it is a copy, defaults to false + */ + public function copy_term_metas( $from, $to, $lang, $sync = false ) { + $metas = get_term_meta( $from ); + + /** + * Filter the term metas to copy or synchronize + * + * @since 2.2 + * + * @param array $keys list of term meta names + * @param bool $sync true if it is synchronization, false if it is a copy + * @param int $from id of the term from which we copy informations + * @param int $to id of the term to which we paste informations + * @param string $lang language slug + */ + $keys = array_unique( apply_filters( 'pll_copy_term_metas', array(), $sync, $from, $to, $lang ) ); + + // And now copy / synchronize + foreach ( $keys as $key ) { + delete_term_meta( $to, $key ); // The synchronization process of multiple values term metas is easier if we delete all metas first + if ( isset( $metas[ $key ] ) ) { + foreach ( $metas[ $key ] as $value ) { + $value = maybe_unserialize( $value ); + add_term_meta( $to, $key, $value ); + } + } + } + } +} diff --git a/pole-sbv-content/plugins/polylang/modules/sync/settings-sync.php b/pole-sbv-content/plugins/polylang/modules/sync/settings-sync.php new file mode 100644 index 00000000..291e1965 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/modules/sync/settings-sync.php @@ -0,0 +1,102 @@ + 'sync', + 'title' => __( 'Synchronization', 'polylang' ), + 'description' => __( 'The synchronization options allow to maintain exact same values (or translations in the case of taxonomies and page parent) of meta content between the translations of a post or page.', 'polylang' ), + ) ); + } + + /** + * deactivates the module + * + * @since 1.8 + */ + public function deactivate() { + $this->options['sync'] = array(); + update_option( 'polylang', $this->options ); + } + + /** + * displays the settings form + * + * @since 1.8 + */ + protected function form() { + ?> +
        + $str ) { + printf( + '
      • ', + esc_attr( $key ), + in_array( $key, $this->options['sync'] ) ? 'checked="checked"' : '', + esc_html( $str ) + ); + } + ?> +
      + options['sync'] ) ? array( 'configure' ) : array( 'configure', 'deactivate' ); + } + + /** + * list the post metas to synchronize + * + * @since 1.0 + * + * @return array + */ + static public function list_metas_to_sync() { + return array( + 'taxonomies' => __( 'Taxonomies', 'polylang' ), + 'post_meta' => __( 'Custom fields', 'polylang' ), + 'comment_status' => __( 'Comment status', 'polylang' ), + 'ping_status' => __( 'Ping status', 'polylang' ), + 'sticky_posts' => __( 'Sticky posts', 'polylang' ), + 'post_date' => __( 'Published date', 'polylang' ), + 'post_format' => __( 'Post format', 'polylang' ), + 'post_parent' => __( 'Page parent', 'polylang' ), + '_wp_page_template' => __( 'Page template', 'polylang' ), + 'menu_order' => __( 'Page order', 'polylang' ), + '_thumbnail_id' => __( 'Featured image', 'polylang' ), + ); + } +} diff --git a/pole-sbv-content/plugins/polylang/modules/translate-slugs/settings-translate-slugs.php b/pole-sbv-content/plugins/polylang/modules/translate-slugs/settings-translate-slugs.php new file mode 100644 index 00000000..7850fd61 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/modules/translate-slugs/settings-translate-slugs.php @@ -0,0 +1,45 @@ + 'translate-slugs', + 'title' => __( 'Translate slugs', 'polylang' ), + 'description' => __( 'Allows to translate custom post types and taxonomies slugs in urls.', 'polylang' ), + ) ); + } + + /** + * tells if the module is active + * + * @since 1.9 + * + * @return bool + */ + public function is_active() { + return class_exists( 'PLL_Translate_Slugs_Model', true ) && get_option( 'permalink_structure' ); + } + + /** + * displays upgrade message + * + * @since 1.9 + * + * @return string + */ + public function get_upgrade_message() { + return class_exists( 'PLL_Translate_Slugs_Model', true ) ? '' : $this->default_upgrade_message(); + } +} diff --git a/pole-sbv-content/plugins/polylang/modules/wpml/settings-wpml.php b/pole-sbv-content/plugins/polylang/modules/wpml/settings-wpml.php new file mode 100644 index 00000000..972f3fca --- /dev/null +++ b/pole-sbv-content/plugins/polylang/modules/wpml/settings-wpml.php @@ -0,0 +1,35 @@ + 'wpml', + 'title' => __( 'WPML Compatibility', 'polylang' ), + 'description' => __( 'WPML compatibility mode of Polylang', 'polylang' ), + ) ); + } + + /** + * tells if the module is active + * + * @since 1.8 + * + * @return bool + */ + public function is_active() { + return ! defined( 'PLL_WPML_COMPAT' ) || PLL_WPML_COMPAT; + } +} diff --git a/pole-sbv-content/plugins/polylang/modules/wpml/wpml-api.php b/pole-sbv-content/plugins/polylang/modules/wpml/wpml-api.php new file mode 100644 index 00000000..10b9f1ff --- /dev/null +++ b/pole-sbv-content/plugins/polylang/modules/wpml/wpml-api.php @@ -0,0 +1,246 @@ + not applicable + add_filter( 'wpml_current_language', 'pll_current_language', 10, 0 ); + add_filter( 'wpml_default_language', 'pll_default_language', 10, 0 ); + // wpml_add_language_selector => not implemented + // wpml_footer_language_selector => not applicable + add_action( 'wpml_add_language_form_field', array( $this, 'wpml_add_language_form_field' ) ); + add_filter( 'wpml_language_is_active', array( $this, 'wpml_language_is_active' ), 10, 2 ); + add_filter( 'wpml_is_rtl' , array( $this, 'wpml_is_rtl' ) ); + // wpml_language_form_input_field => See wpml_add_language_form_field + // wpml_language_has_switched => not implemented + + // Retrieving Language Information for Content + + add_filter( 'wpml_post_language_details', 'wpml_get_language_information', 10, 2 ); + // wpml_switch_language => not implemented + add_filter( 'wpml_element_language_code', array( $this, 'wpml_element_language_code' ), 10, 3 ); + // wpml_element_language_details => not applicable + + // Retrieving Localized Content + + add_filter( 'wpml_home_url', 'pll_home_url', 10, 0 ); + add_filter( 'wpml_element_link', 'icl_link_to_element' , 10, 7 ); + add_filter( 'wpml_object_id', 'icl_object_id', 10, 4 ); + add_filter( 'wpml_translate_single_string', array( $this, 'wpml_translate_single_string' ), 10, 4 ); + // wpml_translate_string => not applicable + // wpml_unfiltered_admin_string => not implemented + add_filter( 'wpml_permalink', array( $this, 'wpml_permalink' ), 10, 2 ); + // wpml_elements_without_translations => not implemented + add_filter( 'wpml_get_translated_slug', array( $this, 'wpml_get_translated_slug' ), 10, 3 ); + + // Finding the Translation State of Content + + // wpml_element_translation_type + add_filter( 'wpml_element_has_translations', array( $this, 'wpml_element_has_translations' ), 10, 3 ); + // wpml_master_post_from_duplicate => not applicable + // wpml_post_duplicates => not applicable + + // Inserting Content + + // wpml_admin_make_post_duplicates => not applicable + // wpml_make_post_duplicates => not applicable + add_action( 'wpml_register_single_string', 'icl_register_string', 10, 3 ); + // wpml_register_string => not applicable + // wpml_register_string_packages => not applicable + // wpml_delete_package_action => not applicable + // wpml_show_package_language_ui => not applicable + // wpml_set_element_language_details => not implemented + + // Miscellaneous + + // wpml_element_type => not applicable + // wpml_setting => not applicable + // wpml_sub_setting => not applicable + // wpml_editor_cf_to_display => not applicable + // wpml_tm_save_translation_cf => not implemented + // wpml_tm_xliff_export_translated_cf => not applicable + // wpml_tm_xliff_export_original_cf => not applicable + // wpml_duplicate_generic_string => not applicable + // wpml_translatable_user_meta_fields => not implemented + // wpml_cross_domain_language_data => not applicable + // wpml_get_cross_domain_language_data => not applicable + // wpml_loaded => not applicable + // wpml_st_loaded => not applicable + // wpml_tm_loaded => not applicable + // wpml_hide_management_column (3.4.1) => not applicable + } + + /** + * Get a list of the languages enabled for a site + * + * @since 2.0 + * + * @param mixed $null Not used + * @param array| string $args See arguments of icl_get_languages() + * @return array Array of arrays per language + */ + public function wpml_active_languages( $null, $args = '' ) { + return icl_get_languages( $args ); + } + + /** + * In WPML, get a language's native and translated name for display in a custom language switcher + * Since Polylang does not implement the translated name, always returns only the native name + * + * @since 2.2 + * + * @param mixed $null Not used. + * @param string $native_name The language native name. + * @param string|bool $translated_name The language translated name. Not used. + * @param bool $native_hidden Whether to hide the language native name or not. Not used. + * @param bool $translated_hidden Whether to hide the language translated name or not. Not used. + * @return string + */ + public function wpml_display_language_names( $null, $native_name, $translated_name = false, $native_hidden = false, $translated_hidden = false ) { + return $native_name; + } + + /** + * Returns an HTML hidden input field with name=”lang” and as value the current language + * + * @since 2.0 + */ + public function wpml_add_language_form_field() { + $lang = pll_current_language(); + $field = sprintf( '', esc_attr( $lang ) ); + $field = apply_filters( 'wpml_language_form_input_field', $field, $lang ); + echo $field; + } + + /** + * Find out if a specific language is enabled for the site + * + * @since 2.0 + * + * @param mixed $null Not used + * @param string $slug Language code + * @return bool + */ + public function wpml_language_is_active( $null, $slug ) { + $language = PLL()->model->get_language( $slug ); + return empty( $language->active ) || true === $language->active; + } + + /** + * Find out whether the current language text direction is RTL or not + * + * @since 2.0 + * + * @param mixed $null Not used + * @return bool + */ + public function wpml_is_rtl( $null ) { + return pll_current_language( 'is_rtl' ); + } + + /** + * Get the language code for a translatable element + * + * @since 2.0 + * + * @param mixed $language_code + * @param array $args An array with two keys element_id => post_id or term_taxonomy_id, element_type => post type or taxonomy + * @return string + */ + public function wpml_element_language_code( $language_code, $args ) { + $type = $args['element_type']; + $id = $args['element_id']; + $pll_type = ( 'post' == $type || pll_is_translated_post_type( $type ) ) ? 'post' : ( 'term' == $type || pll_is_translated_taxonomy( $type ) ? 'term' : false ); + if ( 'term' === $pll_type && $term = wpcom_vip_get_term_by( 'term_taxonomy_id', $id ) ) { + $id = $term->term_id; + } + return $pll_type ? call_user_func( "pll_get_{$pll_type}_language", $id ) : $language_code; + } + + /** + * Translates a string + * + * @since 2.0 + * + * @param string $string The string's original value + * @param string $context The string's registered context + * @param string $name The string's registered name + * @param null|string $lang Optional, return the translation in this language, defaults to current language + * @return string The translated string + */ + public function wpml_translate_single_string( $string, $context, $name, $lang = null ) { + $has_translation = null; // Passed by reference + return icl_translate( $context, $name, $string, false, $has_translation, $lang ); + } + + /** + * Converts a permalink to a language specific permalink + * + * @since 2.2 + * + * @param string $url The url to filter + * @param null|string $lang Langage code, optional, defaults to the current language + * @return string + */ + public function wpml_permalink( $url, $lang = '' ) { + $lang = PLL()->model->get_language( $lang ); + + if ( empty( $lang ) && ! empty( PLL()->curlang ) ) { + $lang = PLL()->curlang; + } + + return empty( $lang ) ? $url : PLL()->links_model->switch_language_in_link( $url, $lang ); + } + + /** + * Translates a post type slug + * + * @since 2.2 + * + * @param string $slug Post type slug + * @param string $post_type Post type name + * @param string $lang Optional language code (defaults to current language) + * @return string + */ + public function wpml_get_translated_slug( $slug, $post_type, $lang = null ) { + if ( isset( PLL()->translate_slugs ) ) { + if ( empty( $lang ) ) { + $lang = pll_current_language(); + } + + $slug = PLL()->translate_slugs->slugs_model->get_translated_slug( $post_type, $lang ); + } + return $slug; + } + + /** + * Find out whether a post type or a taxonomy term is translated + * + * @since 2.0 + * + * @param mixed $null + * @param int $id The post_id or term_id + * @param string $type The post type or taxonomy + * @return bool + */ + public function wpml_element_has_translations( $null, $id, $type ) { + $pll_type = ( 'post' == $type || pll_is_translated_post_type( $type ) ) ? 'post' : ( 'term' == $type || pll_is_translated_taxonomy( $type ) ? 'term' : false ); + return ( $pll_type && $translations = call_user_func( "pll_get_{$pll_type}_translations", $id ) ) ? count( $translations ) > 1 : false; + } +} diff --git a/pole-sbv-content/plugins/polylang/modules/wpml/wpml-compat.php b/pole-sbv-content/plugins/polylang/modules/wpml/wpml-compat.php new file mode 100644 index 00000000..07696c02 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/modules/wpml/wpml-compat.php @@ -0,0 +1,139 @@ +api = new PLL_WPML_API(); + + self::$strings = get_option( 'polylang_wpml_strings', array() ); + + add_action( 'pll_language_defined', array( $this, 'define_constants' ) ); + add_action( 'pll_no_language_defined', array( $this, 'define_constants' ) ); + add_filter( 'pll_get_strings', array( $this, 'get_strings' ) ); + } + + /** + * Access to the single instance of the class + * + * @since 1.7 + * + * @return object + */ + static public function instance() { + if ( empty( self::$instance ) ) { + self::$instance = new self(); + } + return self::$instance; + } + + /** + * Defines two WPML constants once the language has been defined + * The compatibility with WPML is not perfect on admin side as the constants are defined + * in 'setup_theme' by Polylang ( based on user info ) and 'plugins_loaded' by WPML ( based on cookie ) + * + * @since 0.9.5 + */ + public function define_constants() { + if ( ! empty( PLL()->curlang ) ) { + if ( ! defined( 'ICL_LANGUAGE_CODE' ) ) { + define( 'ICL_LANGUAGE_CODE', PLL()->curlang->slug ); + } + + if ( ! defined( 'ICL_LANGUAGE_NAME' ) ) { + define( 'ICL_LANGUAGE_NAME', PLL()->curlang->name ); + } + } elseif ( ! PLL() instanceof PLL_Frontend ) { + if ( ! defined( 'ICL_LANGUAGE_CODE' ) ) { + define( 'ICL_LANGUAGE_CODE', 'all' ); + } + + if ( ! defined( 'ICL_LANGUAGE_NAME' ) ) { + define( 'ICL_LANGUAGE_NAME', '' ); + } + } + } + + /** + * Unlike pll_register_string, icl_register_string stores the string in database + * so we need to do the same as some plugins or themes may expect this + * we use a serialized option to do this + * + * @since 1.0.2 + * + * @param string $context the group in which the string is registered, defaults to 'polylang' + * @param string $name a unique name for the string + * @param string $string the string to register + */ + public function register_string( $context, $name, $string ) { + // Registers the string if it does not exist yet (multiline as in WPML) + $to_register = array( 'context' => $context, 'name' => $name, 'string' => $string, 'multiline' => true, 'icl' => true ); + if ( ! in_array( $to_register, self::$strings ) && $to_register['string'] ) { + self::$strings[] = $to_register; + update_option( 'polylang_wpml_strings', self::$strings ); + } + } + + /** + * Removes a string from the registered strings list + * + * @since 1.0.2 + * + * @param string $context the group in which the string is registered, defaults to 'polylang' + * @param string $name a unique name for the string + */ + public function unregister_string( $context, $name ) { + foreach ( self::$strings as $key => $string ) { + if ( $string['context'] == $context && $string['name'] == $name ) { + unset( self::$strings[ $key ] ); + update_option( 'polylang_wpml_strings', self::$strings ); + } + } + } + + /** + * Adds strings registered by icl_register_string to those registered by pll_register_string + * + * @since 1.0.2 + * + * @param array $strings existing registered strings + * @return array registered strings with added strings through WPML API + */ + public function get_strings( $strings ) { + return empty( self::$strings ) ? $strings : array_merge( $strings, self::$strings ); + } + + /** + * Get a registered string by its context and name + * + * @since 2.0 + * + * @param string $context the group in which the string is registered + * @param string $name a unique name for the string + * @return bool|string the registered string, false if none was found + */ + public function get_string_by_context_and_name( $context, $name ) { + foreach ( self::$strings as $string ) { + if ( $string['context'] == $context && $string['name'] == $name ) { + return $string['string']; + } + } + return false; + } +} diff --git a/pole-sbv-content/plugins/polylang/modules/wpml/wpml-config.php b/pole-sbv-content/plugins/polylang/modules/wpml/wpml-config.php new file mode 100644 index 00000000..d6bf8bca --- /dev/null +++ b/pole-sbv-content/plugins/polylang/modules/wpml/wpml-config.php @@ -0,0 +1,271 @@ +init(); + } + } + + /** + * Access to the single instance of the class + * + * @since 1.7 + * + * @return object + */ + static public function instance() { + if ( empty( self::$instance ) ) { + self::$instance = new self(); + } + return self::$instance; + } + + /** + * Finds the wpml-config.xml files to parse and setup filters + * + * @since 1.0 + */ + public function init() { + $this->xmls = array(); + + // Plugins + // Don't forget sitewide active plugins thanks to Reactorshop http://wordpress.org/support/topic/polylang-and-yoast-seo-plugin/page/2?replies=38#post-4801829 + $plugins = ( is_multisite() && $sitewide_plugins = get_site_option( 'active_sitewide_plugins' ) ) && is_array( $sitewide_plugins ) ? array_keys( $sitewide_plugins ) : array(); + $plugins = array_merge( $plugins, get_option( 'active_plugins', array() ) ); + + foreach ( $plugins as $plugin ) { + if ( file_exists( $file = WP_PLUGIN_DIR . '/' . dirname( $plugin ) . '/wpml-config.xml' ) && false !== $xml = simplexml_load_file( $file ) ) { + $this->xmls[ dirname( $plugin ) ] = $xml; + } + } + + // Theme + if ( file_exists( $file = ( $template = get_template_directory() ) . '/wpml-config.xml' ) && false !== $xml = simplexml_load_file( $file ) ) { + $this->xmls[ get_template() ] = $xml; + } + + // Child theme + if ( ( $stylesheet = get_stylesheet_directory() ) !== $template && file_exists( $file = $stylesheet . '/wpml-config.xml' ) && false !== $xml = simplexml_load_file( $file ) ) { + $this->xmls[ get_stylesheet() ] = $xml; + } + + // Custom + if ( file_exists( $file = PLL_LOCAL_DIR . '/wpml-config.xml' ) && false !== $xml = simplexml_load_file( $file ) ) { + $this->xmls['Polylang'] = $xml; + } + + if ( ! empty( $this->xmls ) ) { + add_filter( 'pll_copy_post_metas', array( $this, 'copy_post_metas' ), 10, 2 ); + add_filter( 'pll_get_post_types', array( $this, 'translate_types' ), 10, 2 ); + add_filter( 'pll_get_taxonomies', array( $this, 'translate_taxonomies' ), 10, 2 ); + + foreach ( $this->xmls as $context => $xml ) { + foreach ( $xml->xpath( 'admin-texts/key' ) as $key ) { + $attributes = $key->attributes(); + $name = (string) $attributes['name']; + if ( PLL() instanceof PLL_Frontend ) { + $this->options[ $name ] = $key; + add_filter( 'option_' . $name, array( $this, 'translate_strings' ) ); + } else { + $this->register_string_recursive( $context, get_option( $name ), $key ); + } + } + } + } + } + + /** + * Adds custom fields to the list of metas to copy when creating a new translation + * + * @since 1.0 + * + * @param array $metas the list of custom fields to copy or synchronize + * @param bool $sync true for sync, false for copy + * @return array the list of custom fields to copy or synchronize + */ + public function copy_post_metas( $metas, $sync ) { + foreach ( $this->xmls as $xml ) { + foreach ( $xml->xpath( 'custom-fields/custom-field' ) as $cf ) { + $attributes = $cf->attributes(); + if ( 'copy' == $attributes['action'] || ( ! $sync && in_array( $attributes['action'], array( 'translate', 'copy-once' ) ) ) ) { + $metas[] = (string) $cf; + } else { + $metas = array_diff( $metas, array( (string) $cf ) ); + } + } + } + return $metas; + } + + /** + * Language and translation management for custom post types + * + * @since 1.0 + * + * @param array $types list of post type names for which Polylang manages language and translations + * @param bool $hide true when displaying the list in Polylang settings + * @return array list of post type names for which Polylang manages language and translations + */ + public function translate_types( $types, $hide ) { + foreach ( $this->xmls as $xml ) { + foreach ( $xml->xpath( 'custom-types/custom-type' ) as $pt ) { + $attributes = $pt->attributes(); + if ( 1 == $attributes['translate'] && ! $hide ) { + $types[ (string) $pt ] = (string) $pt; + } else { + unset( $types[ (string) $pt ] ); // The theme/plugin author decided what to do with the post type so don't allow the user to change this + } + } + } + return $types; + } + + /** + * Language and translation management for custom taxonomies + * + * @since 1.0 + * + * @param array $taxonomies list of taxonomy names for which Polylang manages language and translations + * @param bool $hide true when displaying the list in Polylang settings + * @return array list of taxonomy names for which Polylang manages language and translations + */ + public function translate_taxonomies( $taxonomies, $hide ) { + foreach ( $this->xmls as $xml ) { + foreach ( $xml->xpath( 'taxonomies/taxonomy' ) as $tax ) { + $attributes = $tax->attributes(); + if ( 1 == $attributes['translate'] && ! $hide ) { + $taxonomies[ (string) $tax ] = (string) $tax; + } else { + unset( $taxonomies[ (string) $tax ] ); // the theme/plugin author decided what to do with the taxonomy so don't allow the user to change this + } + } + } + return $taxonomies; + } + + /** + * Translates the strings for an option + * + * @since 1.0 + * + * @param array|string $value Either a string to translate or a list of strings to translate + * @return array|string translated string(s) + */ + public function translate_strings( $value ) { + $option = substr( current_filter(), 7 ); + return $this->translate_strings_recursive( $value, $this->options[ $option ] ); + } + + /** + * Recursively registers strings for a serialized option + * + * @since 1.0 + * + * @param string $context the group in which the strings will be registered + * @param array $options + * @param object $key XML node + */ + protected function register_string_recursive( $context, $options, $key ) { + $children = $key->children(); + if ( count( $children ) ) { + foreach ( $children as $child ) { + $attributes = $child->attributes(); + $name = (string) $attributes['name']; + if ( '*' === $name && is_array( $options ) ) { + foreach ( $options as $n => $option ) { + $this->register_wildcard_options_recursive( $context, $option, $n ); + } + } elseif ( isset( $options[ $name ] ) ) { + $this->register_string_recursive( $context, $options[ $name ], $child ); + } + } + } else { + $attributes = $key->attributes(); + pll_register_string( (string) $attributes['name'], $options, $context, true ); // Multiline as in WPML + } + } + + /** + * Recursively registers strings with a wildcard + * + * @since 2.1 + * + * @param string $context the group in which the strings will be registered + * @param array $options + * @param string $name Option name + */ + protected function register_wildcard_options_recursive( $context, $options, $name ) { + if ( is_array( $options ) ) { + foreach ( $options as $n => $option ) { + $this->register_wildcard_options_recursive( $context, $option, $n ); + } + } else { + pll_register_string( $name, $options, $context ); + } + } + + /** + * Recursively translates strings for a serialized option + * + * @since 1.0 + * + * @param array|string $values either a string to translate or a list of strings to translate + * @param object $key XML node + * @return array|string translated string(s) + */ + protected function translate_strings_recursive( $values, $key ) { + $children = $key->children(); + if ( count( $children ) ) { + foreach ( $children as $child ) { + $attributes = $child->attributes(); + $name = (string) $attributes['name']; + if ( '*' === $name && is_array( $values ) ) { + foreach ( $values as $n => $v ) { + $values[ $n ] = $this->translate_wildcard_options_recursive( $v, $n ); + } + } elseif ( isset( $values[ $name ] ) ) { + $values[ $name ] = $this->translate_strings_recursive( $values[ $name ], $child ); + } + } + } else { + $values = pll__( $values ); + } + return $values; + } + + /** + * Recursively translates strings registered by a wildcard + * + * @since 2.1 + * + * @param array|string $options Either a string to translate or a list of strings to translate + * @param string $name Option name + * @return array|string Translated string(s) + */ + protected function translate_wildcard_options_recursive( $options, $name ) { + if ( is_array( $options ) ) { + foreach ( $options as $n => $option ) { + $options[ $n ] = $this->translate_wildcard_options_recursive( $option, $n ); + } + } else { + $options = pll__( $options ); + } + return $options; + } +} diff --git a/pole-sbv-content/plugins/polylang/modules/wpml/wpml-legacy-api.php b/pole-sbv-content/plugins/polylang/modules/wpml/wpml-legacy-api.php new file mode 100644 index 00000000..eb0d28ea --- /dev/null +++ b/pole-sbv-content/plugins/polylang/modules/wpml/wpml-legacy-api.php @@ -0,0 +1,370 @@ + whether to skip missing translation or not, 0 or 1, defaults to 0 + * orderby => 'id', 'code', 'name', defaults to 'id' + * order => 'ASC' or 'DESC', defaults to 'ASC' + * link_empty_to => link to use when the translation is missing {$lang} is replaced by the language code + * + * List of parameters returned per language: + * + * id => the language id + * active => whether this is the active language or no, 0 or 1 + * native_name => the language name + * missing => wether the translation is missing or not, 0 or 1 + * translated_name => empty, does not exist in Polylang + * language_code => the language code ( slug ) + * country_flag_url => the url of the flag + * url => the url of the translation + * + * @since 1.0 + * + * @param string|array $args optional + * @return array array of arrays per language + */ + function icl_get_languages( $args = '' ) { + $args = wp_parse_args( $args, array( 'skip_missing' => 0, 'orderby' => 'id', 'order' => 'ASC' ) ); + $orderby = ( isset( $args['orderby'] ) && 'code' == $args['orderby'] ) ? 'slug' : ( isset( $args['orderby'] ) && 'name' == $args['orderby'] ? 'name' : 'id' ); + $order = ( ! empty( $args['order'] ) && 'desc' == $args['order'] ) ? 'DESC' : 'ASC'; + + $arr = array(); + + // NB: When 'skip_missing' is false, WPML returns all languages even if there is no content + $languages = PLL()->model->get_languages_list( array( 'hide_empty' => $args['skip_missing'] ) ); + + // FIXME: Backward compatibility with WP < 4.7 + if ( function_exists( 'wp_list_sort' ) ) { + $languages = wp_list_sort( $languages, $orderby, $order ); // Since WP 4.7 + } + + foreach ( $languages as $lang ) { + // We can find a translation only on frontend + if ( method_exists( PLL()->links, 'get_translation_url' ) ) { + $url = PLL()->links->get_translation_url( $lang ); + } + + // It seems that WPML does not bother of skip_missing parameter on admin side and before the $wp_query object has been filled + if ( empty( $url ) && ! empty( $args['skip_missing'] ) && ! is_admin() && did_action( 'parse_query' ) ) { + continue; + } + + $arr[ $lang->slug ] = array( + 'id' => $lang->term_id, + 'active' => isset( PLL()->curlang->slug ) && PLL()->curlang->slug == $lang->slug ? 1 : 0, + 'native_name' => $lang->name, + 'missing' => empty( $url ) ? 1 : 0, + 'translated_name' => '', // Does not exist in Polylang + 'language_code' => $lang->slug, + 'country_flag_url' => $lang->flag_url, + 'url' => ! empty( $url ) ? $url : + ( empty( $args['link_empty_to'] ) ? PLL()->links->get_home_url( $lang ) : + str_replace( '{$lang}', $lang->slug, $args['link_empty_to'] ) ), + ); + } + + // Apply undocumented WPML filter + $arr = apply_filters( 'icl_ls_languages', $arr ); + + return $arr; + } +} + +if ( ! function_exists( 'icl_link_to_element' ) ) { + /** + * Used for creating language dependent links in themes + * + * @since 1.0 + * @since 2.0 add support for arguments 6 and 7 + * + * @param int $id object id + * @param string $type optional, post type or taxonomy name of the object, defaults to 'post' + * @param string $text optional, the link text. If not specified will produce the name of the element in the current language + * @param array $args optional, an array of arguments to add to the link, defaults to empty + * @param string $anchor optional, the anchor to add to the link, defaults to empty + * @param bool $echo optional, whether to echo the link, defaults to true + * @param bool $return_original_if_missing optional, whether to return a value if the translation is missing + * @return string a language dependent link + */ + function icl_link_to_element( $id, $type = 'post', $text = '', $args = array(), $anchor = '', $echo = true, $return_original_if_missing = true ) { + if ( 'tag' == $type ) { + $type = 'post_tag'; + } + + $pll_type = ( 'post' == $type || pll_is_translated_post_type( $type ) ) ? 'post' : ( 'term' == $type || pll_is_translated_taxonomy( $type ) ? 'term' : false ); + if ( $pll_type && ( $lang = pll_current_language() ) && ( $tr_id = PLL()->model->$pll_type->get_translation( $id, $lang ) ) && PLL()->links->current_user_can_read( $tr_id ) ) { + $id = $tr_id; + } elseif ( ! $return_original_if_missing ) { + return ''; + } + + if ( post_type_exists( $type ) ) { + $link = get_permalink( $id ); + if ( empty( $text ) ) { + $text = get_the_title( $id ); + } + } elseif ( taxonomy_exists( $type ) ) { + $link = wpcom_vip_get_term_link( $id, $type ); + if ( empty( $text ) && ( $term = get_term( $id, $type ) ) && ! empty( $term ) && ! is_wp_error( $term ) ) { + $text = $term->name; + } + } + + if ( empty( $link ) || is_wp_error( $link ) ) { + return ''; + } + + if ( ! empty( $args ) ) { + $link .= ( false === strpos( $link, '?' ) ? '?' : '&' ) . http_build_query( $args ); + } + + if ( ! empty( $anchor ) ) { + $link .= '#' . $anchor; + } + + $link = sprintf( '%s', esc_url( $link ), esc_html( $text ) ); + + if ( $echo ) { + echo $link; + } + + return $link; + } +} + +if ( ! function_exists( 'icl_object_id' ) ) { + /** + * Used for calculating the IDs of objects (usually categories) in the current language + * + * @since 0.9.5 + * + * @param int $id object id + * @param string $type optional, post type or taxonomy name of the object, defaults to 'post' + * @param bool $return_original_if_missing optional, true if Polylang should return the original id if the translation is missing, defaults to false + * @param string $lang optional, language code, defaults to current language + * @return int|null the object id of the translation, null if the translation is missing and $return_original_if_missing set to false + */ + function icl_object_id( $id, $type = 'post', $return_original_if_missing = false, $lang = false ) { + $pll_type = ( 'post' === $type || pll_is_translated_post_type( $type ) ) ? 'post' : ( 'term' === $type || pll_is_translated_taxonomy( $type ) ? 'term' : false ); + return $pll_type && ( $lang = $lang ? $lang : pll_current_language() ) && ( $tr_id = PLL()->model->$pll_type->get_translation( $id, $lang ) ) ? $tr_id : + ( $return_original_if_missing ? $id : null ); + } +} + +if ( ! function_exists( 'wpml_object_id_filter' ) ) { + /** + * Undocumented alias of `icl_object_id` introduced in WPML 3.2, used by Yith WooCommerce compare + * + * @since 2.2.4 + * + * @param int $id object id + * @param string $type optional, post type or taxonomy name of the object, defaults to 'post' + * @param bool $return_original_if_missing optional, true if Polylang should return the original id if the translation is missing, defaults to false + * @param string $lang optional, language code, defaults to current language + * @return int|null the object id of the translation, null if the translation is missing and $return_original_if_missing set to false + */ + function wpml_object_id_filter( $id, $type = 'post', $return_original_if_missing = false, $lang = null ) { + return icl_object_id( $id, $type, $return_original_if_missing, $lang ); + } +} + +if ( ! function_exists( 'wpml_get_language_information' ) ) { + /** + * Undocumented function used by the theme Maya + * returns the post language + * @see original WPML code at https://wpml.org/forums/topic/canonical-urls-for-wpml-duplicated-posts/#post-52198 + * + * @since 1.8 + * + * @param null $empty optional, not used + * @param int $post_id optional, post id, defaults to current post + * @return array + */ + function wpml_get_language_information( $empty = null, $post_id = null ) { + if ( empty( $post_id ) ) { + $post_id = get_the_ID(); + } + + // FIXME WPML may return a WP_Error object + return false === ( $lang = PLL()->model->post->get_language( $post_id ) ) ? array() : array( + 'language_code' => $lang->slug, + 'locale' => $lang->locale, + 'text_direction' => (bool) $lang->is_rtl, + 'display_name' => $lang->name, // Seems to be the post language name displayed in the current language, not a feature in Polylang + 'native_name' => $lang->name, + 'different_language' => pll_current_language() !== $lang->slug, + ); + } +} + +if ( ! function_exists( 'icl_register_string' ) ) { + /** + * Registers a string for translation in the "strings translation" panel + * + * @since 0.9.3 + * + * @param string $context the group in which the string is registered, defaults to 'polylang' + * @param string $name a unique name for the string + * @param string $string the string to register + * @param bool $allow_empty_value not used + * @param string $source_lang not used by Polylang + */ + function icl_register_string( $context, $name, $string, $allow_empty_value = false, $source_lang = '' ) { + PLL_WPML_Compat::instance()->register_string( $context, $name, $string ); + } +} + +if ( ! function_exists( 'icl_unregister_string' ) ) { + /** + * Removes a string from the "strings translation" panel + * + * @since 1.0.2 + * + * @param string $context the group in which the string is registered, defaults to 'polylang' + * @param string $name a unique name for the string + */ + function icl_unregister_string( $context, $name ) { + PLL_WPML_Compat::instance()->unregister_string( $context, $name ); + } +} + +if ( ! function_exists( 'icl_t' ) ) { + /** + * Gets the translated value of a string ( previously registered with icl_register_string or pll_register_string ) + * + * @since 0.9.3 + * @since 1.9.2 argument 3 is optional + * @since 2.0 add support for arguments 4 to 6 + * + * @param string $context the group in which the string is registered + * @param string $name a unique name for the string + * @param string $string the string to translate, optional for strings registered with icl_register_string + * @param bool|null $has_translation optional, not supported in Polylang + * @param bool $bool optional, not used + * @param string|null $lang optional, return the translation in this language, defaults to current language + * @return string the translated string + */ + function icl_t( $context, $name, $string = false, &$has_translation = null, $bool = false, $lang = null ) { + return icl_translate( $context, $name, $string, false, $has_translation, $lang ); + } +} + +if ( ! function_exists( 'icl_translate' ) ) { + /** + * Undocumented function used by NextGen Gallery + * used in PLL_Plugins_Compat for Jetpack with only 3 arguments + * + * @since 1.0.2 + * @since 2.0 add support for arguments 5 and 6, strings are no more automatically registered + * + * @param string $context the group in which the string is registered + * @param string $name a unique name for the string + * @param string $string the string to translate, optional for strings registered with icl_register_string + * @param bool $bool optional, not used + * @param bool|null $has_translation optional, not supported in Polylang + * @param string|null $lang optional, return the translation in this language, defaults to current language + * @return string the translated string + */ + function icl_translate( $context, $name, $string = false, $bool = false, &$has_translation = null, $lang = null ) { + // FIXME WPML can automatically registers the string based on an option + if ( empty( $string ) ) { + $string = PLL_WPML_Compat::instance()->get_string_by_context_and_name( $context, $name ); + } + return empty( $lang ) ? pll__( $string ) : pll_translate_string( $string, $lang ); + } +} + +if ( ! function_exists( 'wpml_get_copied_fields_for_post_edit' ) ) { + /** + * Undocumented function used by Types + * FIXME: tested only with Types + * probably incomplete as Types locks the custom fields for a new post, but not when edited + * This is probably linked to the fact that WPML has always an original post in the default language and not Polylang :) + * + * @since 1.1.2 + * + * @return array + */ + function wpml_get_copied_fields_for_post_edit() { + if ( empty( $_GET['from_post'] ) ) { + return array(); + } + + // Don't know what WPML does but Polylang does copy all public meta keys by default + foreach ( $keys = array_unique( array_keys( get_post_custom( (int) $_GET['from_post'] ) ) ) as $k => $meta_key ) { + if ( is_protected_meta( $meta_key ) ) { + unset( $keys[ $k ] ); + } + } + + // Apply our filter and fill the expected output ( see /types/embedded/includes/fields-post.php ) + /** This filter is documented in modules/sync/admin-sync.php */ + $arr['fields'] = array_unique( apply_filters( 'pll_copy_post_metas', empty( $keys ) ? array() : $keys, false ) ); + $arr['original_post_id'] = (int) $_GET['from_post']; + return $arr; + } +} + +if ( ! function_exists( 'icl_get_default_language' ) ) { + /** + * Undocumented function used by Warp 6 by Yootheme + * + * @since 1.0.5 + * + * @return string default language code + */ + function icl_get_default_language() { + return pll_default_language(); + } +} + +if ( ! function_exists( 'wpml_get_default_language' ) ) { + /** + * Undocumented function reported to be used by Table Rate Shipping for WooCommerce + * @see https://wordpress.org/support/topic/add-wpml-compatibility-function + * + * @since 1.8.2 + * + * @return string default language code + */ + function wpml_get_default_language() { + return pll_default_language(); + } +} + +if ( ! function_exists( 'icl_get_current_language' ) ) { + /** + * Undocumented function used by Ultimate Member + * + * @since 2.2.4 + * + * @return string Current language code + */ + function icl_get_current_language() { + return pll_current_language(); + } +} diff --git a/pole-sbv-content/plugins/polylang/polylang.php b/pole-sbv-content/plugins/polylang/polylang.php new file mode 100644 index 00000000..ee34c83b --- /dev/null +++ b/pole-sbv-content/plugins/polylang/polylang.php @@ -0,0 +1,52 @@ + The author does not provide support on the wordpress.org forum. Support and extra features are available to [Polylang Pro](https://polylang.pro) users. + +If you wish to migrate from WPML, you can use the plugin [WPML to Polylang](https://wordpress.org/plugins/wpml-to-polylang/) + +If you wish to use a professional or automatic translation service, you can install [Lingotek Translation](https://wordpress.org/plugins/lingotek-translation/), as an addon of Polylang. Lingotek offers a complete translation management system which provides services such as translation memory or semi-automated translation processes (e.g. machine translation > human translation > legal review). + += Credits = + +Thanks a lot to all translators who [help translating Polylang](https://translate.wordpress.org/projects/wp-plugins/polylang). +Thanks a lot to [Alex Lopez](http://www.alexlopez.rocks/) for the design of the logo. +Most of the flags included with Polylang are coming from [famfamfam](http://famfamfam.com/) and are public domain. +Wherever third party code has been used, credit has been given in the code’s comments. + += Do you like Polylang? = + +Don't hesitate to [give your feedback](http://wordpress.org/support/view/plugin-reviews/polylang#postform). + +== Installation == + +1. Make sure you are using WordPress 4.0 or later and that your server is running PHP 5.2.4 or later (same requirement as WordPress itself) +1. If you tried other multilingual plugins, deactivate them before activating Polylang, otherwise, you may get unexpected results! +1. Install and activate the plugin as usual from the 'Plugins' menu in WordPress. +1. Go to the languages settings page and create the languages you need +1. Add the 'language switcher' widget to let your visitors switch the language. +1. Take care that your theme must come with the corresponding .mo files (Polylang automatically downloads them when they are available for themes and plugins in this repository). If your theme is not internationalized yet, please refer to the [Theme Handbook](https://developer.wordpress.org/themes/functionality/internationalization/) or ask the theme author to internationalize it. + +== Frequently Asked Questions == + += Where to find help ? = + +* First time users should read [Polylang - Getting started](https://polylang.pro/doc-category/getting-started/), which explains the basics with a lot of screenshots. +* Read the [documentation](https://polylang.pro/doc/). It includes a [FAQ](https://polylang.pro/doc-category/faq/) and the [documentation for developers](https://polylang.pro/doc-category/developers/). +* Search the [community support forum](https://wordpress.org/search/). You will probably find your answer here. +* Read the sticky posts in the [community support forum](http://wordpress.org/support/plugin/polylang). +* If you still have a problem, open a new thread in the [community support forum](http://wordpress.org/support/plugin/polylang). +* [Polylang Pro](https://polylang.pro) users have access to our helpdesk. + += Is Polylang compatible with WooCommerce? = + +* You need a separate addon to make Polylang and WooCommerce work together. [A Premium addon](https://polylang.pro/downloads/polylang-for-woocommerce/) is available. + += Do you need translation services? = + +* If you want to use professional or automatic translation services, install and activate the [Lingotek Translation](https://wordpress.org/plugins/lingotek-translation/) plugin. + +== Screenshots == + +1. The Polylang languages admin panel +2. The Strings translations admin panel +3. Multilingual media library +4. The Edit Post screen with the Languages metabox + +== Changelog == + += 2.2.4 (2017-10-26) = + +* Pro: Fix unknown language not redirected to default when using multiple domains +* Pro: Fix empty 'lang' query var not deactivating the language query filter +* Pro: Fix conflict with The Events Calendar and Visual Composer when used together +* Add new filter `pll_hide_archive_translation_url` #174 +* Add support for undocumented and deprecated WPML functions `wpml_object_id_filter` and `icl_get_current_language` +* Fix 'orderby' and 'order' in `wpml_active_languages`. Needs WP 4.7+ +* Fix `icl_get_languages` not returning all languages when skip_missing = 0. Props Loïc Blascos +* Fix `pll_translate_string` not working on admin #178 +* Fix PHP Warning in widget video in WP 4.9 +* Fix query using 'any' post type not filtered per language (introduced in 2.2) +* Fix untranslatable string in About metabox. Props Farhad Sakhaei +* Fix error with PHP 7.1 and Duplicate Post. Props Enea Scerba +* Fix query auto translation not active in ajax requests on frontend +* Fix query auto translation for 'postname' and 'pagename' +* Fix terms query auto translation not working for 'include' when no taxonomy is provided (WP 4.5+) + += 2.2.3 (2017-09-24) = + +* Fix editor removed on pages (introduced in 2.2.2) + += 2.2.2 (2017-09-22) = + +* Pro: Fix Duplicate post button not working when the user meta has been corrupted +* Fix PHP notice with the plugin Members #175 +* Fix page template select displayed when editing a translated page for posts +* Fix incompatibility with WP 4.8.2 (placeholder %1$s in prepare) + += 2.2.1 (2017-08-30) = + +* Pro: partially refactor REST API classes +* Pro: Fix duplicate content user meta not removed from DB when uninstalling the plugin +* Fix strings translations not removed from DB when uninstalling the plugin +* Fix incorrect translation files loaded in ajax on front when the user is logged in (WP 4.7+) +* Fix widget language dropdown removed when saving a widget (introduced in 2.2) +* Fix queries with negative values for the 'cat' parameter (introduced in 2.2 for queries made on frontend) +* Fix performance issue in combination with some plugins when the language is set from the content (introduced in 2.2) + += 2.2 (2017-08-16) = + +* Pro: Add support for the REST API +* Pro: Add integration with The Events Calendar +* Pro: Refactor ACF Pro integration for post metas and integrate term metas +* Pro: Ask confirmation if synchronizing a post overwrites an existing translation +* Pro: Separate sync post logic from interface +* Pro: Fix 'Detect browser language' option automatically deactivated +* Pro: Fix redirect to 404 when the 'page' slug translation includes non alphanumeric characters. +* Pro: Fix untranslated post type archive slug +* Pro: Fix ACF taxonomy fields not copied when the taxonomy is not translated #156 +* Pro: Fix fatal error with ACF4 +* Support a different content text direction in admin #45 +* Add support for wildcards and 'copy-once' attribute in wpml-config.xml +* Add minimal support for the filters 'wpml_display_language_names' and 'icl_ls_languages' +* Improve compatibility with the plugin WordPress MU Domain Mapping #116 +* Improve speed of the sticky posts filter #41 +* Remove redirect_lang option for multiple domains and subdomains +* Use secure cookie when using SSL +* Allow to copy/sync term metas with the filter 'pll_copy_term_metas' +* Filter ajax requests in term.php according to the term language +* Add error message in customizer when setting an untranslated static front page #47 +* Load static page class only if we are using a static front page +* Refactor parse_query filters to use the same code on frontend and admin +* Don't use add_language_to_link in filters +* Move ajaxPrefilter footer script on top +* Use wp_doing_ajax() instead of DOING_AJAX constant +* Fix queries custom tax not excluded from language filter on admin +* Fix WP translation not loaded when the language is set from the content on multisite. +* Fix the list of core post types in PLL_OLT_Manager for WP 4.7+ +* Fix post name and tag slug incorrectly sanitized for German and Danish +* Fix lang attribute in dropdowns +* Fix wpml_permalink filter #139 +* Fix WPML constants undefined on backend #151 +* Fix a conflict with the plugin Custom Permalinks #143 +* Fix menu location unexpectedly unset + +See [changelog.txt](https://plugins.svn.wordpress.org/polylang/trunk/changelog.txt) for older changelog diff --git a/pole-sbv-content/plugins/polylang/settings/flags.php b/pole-sbv-content/plugins/polylang/settings/flags.php new file mode 100644 index 00000000..affb594d --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/flags.php @@ -0,0 +1,273 @@ + __( 'Andorra', 'polylang' ), + 'ae' => __( 'United Arab Emirates', 'polylang' ), + 'af' => __( 'Afghanistan', 'polylang' ), + 'ag' => __( 'Antigua and Barbuda', 'polylang' ), + 'ai' => __( 'Anguilla', 'polylang' ), + 'al' => __( 'Albania', 'polylang' ), + 'am' => __( 'Armenia', 'polylang' ), + 'an' => __( 'Netherlands Antilles', 'polylang' ), + 'ao' => __( 'Angola', 'polylang' ), + 'ar' => __( 'Argentina', 'polylang' ), + 'arab' => __( 'Arab league', 'polylang' ), + 'as' => __( 'American Samoa', 'polylang' ), + 'at' => __( 'Austria', 'polylang' ), + 'au' => __( 'Australia', 'polylang' ), + 'aw' => __( 'Aruba', 'polylang' ), + 'ax' => __( 'Åland Islands', 'polylang' ), + 'az' => __( 'Azerbaijan', 'polylang' ), + 'ba' => __( 'Bosnia and Herzegovina', 'polylang' ), + 'basque' => __( 'Basque Country', 'polylang' ), + 'bb' => __( 'Barbados', 'polylang' ), + 'bd' => __( 'Bangladesh', 'polylang' ), + 'be' => __( 'Belgium', 'polylang' ), + 'bf' => __( 'Burkina Faso', 'polylang' ), + 'bg' => __( 'Bulgaria', 'polylang' ), + 'bh' => __( 'Bahrain', 'polylang' ), + 'bi' => __( 'Burundi', 'polylang' ), + 'bj' => __( 'Benin', 'polylang' ), + 'bm' => __( 'Bermuda', 'polylang' ), + 'bn' => __( 'Brunei', 'polylang' ), + 'bo' => __( 'Bolivia', 'polylang' ), + 'br' => __( 'Brazil', 'polylang' ), + 'bs' => __( 'Bahamas', 'polylang' ), + 'bt' => __( 'Bhutan', 'polylang' ), + 'bw' => __( 'Botswana', 'polylang' ), + 'by' => __( 'Belarus', 'polylang' ), + 'bz' => __( 'Belize', 'polylang' ), + 'ca' => __( 'Canada', 'polylang' ), + 'catalonia' => __( 'Catalonia', 'polylang' ), + 'cc' => __( 'Cocos', 'polylang' ), + 'cd' => __( 'Democratic Republic of the Congo', 'polylang' ), + 'cf' => __( 'Central African Republic', 'polylang' ), + 'cg' => __( 'Congo', 'polylang' ), + 'ch' => __( 'Switzerland', 'polylang' ), + 'ci' => __( 'Ivory Coast', 'polylang' ), + 'ck' => __( 'Cook Islands', 'polylang' ), + 'cl' => __( 'Chile', 'polylang' ), + 'cm' => __( 'Cameroon', 'polylang' ), + 'cn' => __( 'China', 'polylang' ), + 'co' => __( 'Colombia', 'polylang' ), + 'cr' => __( 'Costa Rica', 'polylang' ), + 'cu' => __( 'Cuba', 'polylang' ), + 'cv' => __( 'Cape Verde', 'polylang' ), + 'cx' => __( 'Christmas Island', 'polylang' ), + 'cy' => __( 'Cyprus', 'polylang' ), + 'cz' => __( 'Czech Republic', 'polylang' ), + 'de' => __( 'Germany', 'polylang' ), + 'dj' => __( 'Djibouti', 'polylang' ), + 'dk' => __( 'Denmark', 'polylang' ), + 'dm' => __( 'Dominica', 'polylang' ), + 'do' => __( 'Dominican Republic', 'polylang' ), + 'dz' => __( 'Algeria', 'polylang' ), + 'ec' => __( 'Ecuador', 'polylang' ), + 'ee' => __( 'Estonia', 'polylang' ), + 'eg' => __( 'Egypt', 'polylang' ), + 'eh' => __( 'Western Sahara', 'polylang' ), + 'england' => __( 'England', 'polylang' ), + 'er' => __( 'Eritrea', 'polylang' ), + 'es' => __( 'Spain', 'polylang' ), + 'esperanto' => __( 'Esperanto', 'polylang' ), + 'et' => __( 'Ethiopia', 'polylang' ), + 'fi' => __( 'Finland', 'polylang' ), + 'fj' => __( 'Fiji', 'polylang' ), + 'fk' => __( 'Falkland Islands', 'polylang' ), + 'fm' => __( 'Micronesia', 'polylang' ), + 'fo' => __( 'Faroe Islands', 'polylang' ), + 'fr' => __( 'France', 'polylang' ), + 'ga' => __( 'Gabon', 'polylang' ), + 'galicia' => __( 'Galicia', 'polylang' ), + 'gb' => __( 'United Kingdom', 'polylang' ), + 'gd' => __( 'Grenada', 'polylang' ), + 'ge' => __( 'Georgia', 'polylang' ), + 'gh' => __( 'Ghana', 'polylang' ), + 'gi' => __( 'Gibraltar', 'polylang' ), + 'gl' => __( 'Greenland', 'polylang' ), + 'gm' => __( 'Gambia', 'polylang' ), + 'gn' => __( 'Guinea', 'polylang' ), + 'gp' => __( 'Guadeloupe', 'polylang' ), + 'gq' => __( 'Equatorial Guinea', 'polylang' ), + 'gr' => __( 'Greece', 'polylang' ), + 'gs' => __( 'South Georgia and the South Sandwich Islands', 'polylang' ), + 'gt' => __( 'Guatemala', 'polylang' ), + 'gu' => __( 'Guam', 'polylang' ), + 'gw' => __( 'Guinea-Bissau', 'polylang' ), + 'gy' => __( 'Guyana', 'polylang' ), + 'hk' => __( 'Hong Kong', 'polylang' ), + 'hm' => __( 'Heard Island and McDonald Islands', 'polylang' ), + 'hn' => __( 'Honduras', 'polylang' ), + 'hr' => __( 'Croatia', 'polylang' ), + 'ht' => __( 'Haiti', 'polylang' ), + 'hu' => __( 'Hungary', 'polylang' ), + 'id' => __( 'Indonesia', 'polylang' ), + 'ie' => __( 'Republic of Ireland', 'polylang' ), + 'il' => __( 'Israel', 'polylang' ), + 'in' => __( 'India', 'polylang' ), + 'io' => __( 'British Indian Ocean Territory', 'polylang' ), + 'iq' => __( 'Iraq', 'polylang' ), + 'ir' => __( 'Iran', 'polylang' ), + 'is' => __( 'Iceland', 'polylang' ), + 'it' => __( 'Italy', 'polylang' ), + 'jm' => __( 'Jamaica', 'polylang' ), + 'jo' => __( 'Jordan', 'polylang' ), + 'jp' => __( 'Japan', 'polylang' ), + 'ke' => __( 'Kenya', 'polylang' ), + 'kg' => __( 'Kyrgyzstan', 'polylang' ), + 'kh' => __( 'Cambodia', 'polylang' ), + 'ki' => __( 'Kiribati', 'polylang' ), + 'km' => __( 'Comoros', 'polylang' ), + 'kn' => __( 'Saint Kitts and Nevis', 'polylang' ), + 'kp' => __( 'North Korea', 'polylang' ), + 'kr' => __( 'South Korea', 'polylang' ), + 'kurdistan' => __( 'Kurdistan', 'polylang' ), + 'kw' => __( 'Kuwait', 'polylang' ), + 'ky' => __( 'Cayman Islands', 'polylang' ), + 'kz' => __( 'Kazakhstan', 'polylang' ), + 'la' => __( 'Laos', 'polylang' ), + 'lb' => __( 'Lebanon', 'polylang' ), + 'lc' => __( 'Saint Lucia', 'polylang' ), + 'li' => __( 'Liechtenstein', 'polylang' ), + 'lk' => __( 'Sri Lanka', 'polylang' ), + 'lr' => __( 'Liberia', 'polylang' ), + 'ls' => __( 'Lesotho', 'polylang' ), + 'lt' => __( 'Lithuania', 'polylang' ), + 'lu' => __( 'Luxembourg', 'polylang' ), + 'lv' => __( 'Latvia', 'polylang' ), + 'ly' => __( 'Libya', 'polylang' ), + 'ma' => __( 'Morocco', 'polylang' ), + 'mc' => __( 'Monaco', 'polylang' ), + 'md' => __( 'Moldova', 'polylang' ), + 'me' => __( 'Montenegro', 'polylang' ), + 'mg' => __( 'Madagascar', 'polylang' ), + 'mh' => __( 'Marshall Islands', 'polylang' ), + 'mk' => __( 'Macedonia', 'polylang' ), + 'ml' => __( 'Mali', 'polylang' ), + 'mm' => __( 'Myanmar', 'polylang' ), + 'mn' => __( 'Mongolia', 'polylang' ), + 'mo' => __( 'Macao', 'polylang' ), + 'mp' => __( 'Northern Mariana Islands', 'polylang' ), + 'mq' => __( 'Martinique', 'polylang' ), + 'mr' => __( 'Mauritania', 'polylang' ), + 'ms' => __( 'Montserrat', 'polylang' ), + 'mt' => __( 'Malta', 'polylang' ), + 'mu' => __( 'Mauritius', 'polylang' ), + 'mv' => __( 'Maldives', 'polylang' ), + 'mw' => __( 'Malawi', 'polylang' ), + 'mx' => __( 'Mexico', 'polylang' ), + 'my' => __( 'Malaysia', 'polylang' ), + 'mz' => __( 'Mozambique', 'polylang' ), + 'na' => __( 'Namibia', 'polylang' ), + 'nc' => __( 'New Caledonia', 'polylang' ), + 'ne' => __( 'Niger', 'polylang' ), + 'nf' => __( 'Norfolk Island', 'polylang' ), + 'ng' => __( 'Nigeria', 'polylang' ), + 'ni' => __( 'Nicaragua', 'polylang' ), + 'nl' => __( 'Netherlands', 'polylang' ), + 'no' => __( 'Norway', 'polylang' ), + 'np' => __( 'Nepal', 'polylang' ), + 'nr' => __( 'Nauru', 'polylang' ), + 'nu' => __( 'Niue', 'polylang' ), + 'nz' => __( 'New Zealand', 'polylang' ), + 'occitania' => __( 'Occitania', 'polylang' ), + 'om' => __( 'Oman', 'polylang' ), + 'pa' => __( 'Panama', 'polylang' ), + 'pe' => __( 'Peru', 'polylang' ), + 'pf' => __( 'French Polynesia', 'polylang' ), + 'pg' => __( 'Papua New Guinea', 'polylang' ), + 'ph' => __( 'Philippines', 'polylang' ), + 'pk' => __( 'Pakistan', 'polylang' ), + 'pl' => __( 'Poland', 'polylang' ), + 'pm' => __( 'Saint Pierre and Miquelon', 'polylang' ), + 'pn' => __( 'Pitcairn', 'polylang' ), + 'pr' => __( 'Puerto Rico', 'polylang' ), + 'ps' => __( 'Palestinian Territory', 'polylang' ), + 'pt' => __( 'Portugal', 'polylang' ), + 'pw' => __( 'Belau', 'polylang' ), + 'py' => __( 'Paraguay', 'polylang' ), + 'qa' => __( 'Qatar', 'polylang' ), + 'quebec' => __( 'Quebec', 'polylang' ), + 'ro' => __( 'Romania', 'polylang' ), + 'rs' => __( 'Serbia', 'polylang' ), + 'ru' => __( 'Russia', 'polylang' ), + 'rw' => __( 'Rwanda', 'polylang' ), + 'sa' => __( 'Saudi Arabia', 'polylang' ), + 'sb' => __( 'Solomon Islands', 'polylang' ), + 'sc' => __( 'Seychelles', 'polylang' ), + 'scotland' => __( 'Scotland', 'polylang' ), + 'sd' => __( 'Sudan', 'polylang' ), + 'se' => __( 'Sweden', 'polylang' ), + 'sg' => __( 'Singapore', 'polylang' ), + 'sh' => __( 'Saint Helena', 'polylang' ), + 'si' => __( 'Slovenia', 'polylang' ), + 'sk' => __( 'Slovakia', 'polylang' ), + 'sl' => __( 'Sierra Leone', 'polylang' ), + 'sm' => __( 'San Marino', 'polylang' ), + 'sn' => __( 'Senegal', 'polylang' ), + 'so' => __( 'Somalia', 'polylang' ), + 'sr' => __( 'Suriname', 'polylang' ), + 'ss' => __( 'South Sudan', 'polylang' ), + 'st' => __( 'São Tomé and Príncipe', 'polylang' ), + 'sv' => __( 'El Salvador', 'polylang' ), + 'sy' => __( 'Syria', 'polylang' ), + 'sz' => __( 'Swaziland', 'polylang' ), + 'tc' => __( 'Turks and Caicos Islands', 'polylang' ), + 'td' => __( 'Chad', 'polylang' ), + 'tf' => __( 'French Southern Territories', 'polylang' ), + 'tg' => __( 'Togo', 'polylang' ), + 'th' => __( 'Thailand', 'polylang' ), + 'tibet' => __( 'Tibet', 'polylang' ), + 'tj' => __( 'Tajikistan', 'polylang' ), + 'tk' => __( 'Tokelau', 'polylang' ), + 'tl' => __( 'Timor-Leste', 'polylang' ), + 'tm' => __( 'Turkmenistan', 'polylang' ), + 'tn' => __( 'Tunisia', 'polylang' ), + 'to' => __( 'Tonga', 'polylang' ), + 'tr' => __( 'Turkey', 'polylang' ), + 'tt' => __( 'Trinidad and Tobago', 'polylang' ), + 'tv' => __( 'Tuvalu', 'polylang' ), + 'tw' => __( 'Taiwan', 'polylang' ), + 'tz' => __( 'Tanzania', 'polylang' ), + 'ua' => __( 'Ukraine', 'polylang' ), + 'ug' => __( 'Uganda', 'polylang' ), + 'us' => __( 'United States', 'polylang' ), + 'uy' => __( 'Uruguay', 'polylang' ), + 'uz' => __( 'Uzbekistan', 'polylang' ), + 'va' => __( 'Vatican', 'polylang' ), + 'vc' => __( 'Saint Vincent and the Grenadines', 'polylang' ), + 've' => __( 'Venezuela', 'polylang' ), + 'veneto' => __( 'Veneto', 'polylang' ), + 'vg' => __( 'British Virgin Islands', 'polylang' ), + 'vi' => __( 'United States Virgin Islands', 'polylang' ), + 'vn' => __( 'Vietnam', 'polylang' ), + 'vu' => __( 'Vanuatu', 'polylang' ), + 'wales' => __( 'Wales', 'polylang' ), + 'wf' => __( 'Wallis and Futuna', 'polylang' ), + 'ws' => __( 'Western Samoa', 'polylang' ), + 'ye' => __( 'Yemen', 'polylang' ), + 'yt' => __( 'Mayotte', 'polylang' ), + 'za' => __( 'South Africa', 'polylang' ), + 'zm' => __( 'Zambia', 'polylang' ), + 'zw' => __( 'Zimbabwe', 'polylang' ), +); + +/** + * Filter the list of predefined flags + * + * @since 1.8 + * + * @param array $flags + */ +$flags = apply_filters( 'pll_predefined_flags', $flags ); diff --git a/pole-sbv-content/plugins/polylang/settings/languages.php b/pole-sbv-content/plugins/polylang/settings/languages.php new file mode 100644 index 00000000..e10274ef --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/languages.php @@ -0,0 +1,145 @@ + ISO 639-1 language code + * [1] => WordPress locale + * [2] => name + * [3] => text direction + * [4] => flag code + */ +$languages = array( + 'af' => array( 'af', 'af', 'Afrikaans', 'ltr', 'za' ), + 'ar' => array( 'ar', 'ar', 'العربية', 'rtl', 'arab' ), + 'ary' => array( 'ar', 'ary', 'العربية المغربية', 'rtl', 'ma' ), + 'as' => array( 'as', 'as', 'অসমীয়া', 'ltr', 'in' ), + 'az' => array( 'az', 'az', 'Azərbaycan', 'ltr', 'az' ), + 'azb' => array( 'az', 'azb', 'گؤنئی آذربایجان', 'rtl', 'az' ), + 'bel' => array( 'be', 'bel', 'Беларуская мова', 'ltr', 'by' ), + 'bg_BG' => array( 'bg', 'bg_BG', 'български', 'ltr', 'bg' ), + 'bn_BD' => array( 'bn', 'bn_BD', 'বাংলা', 'ltr', 'bd' ), + 'bo' => array( 'bo', 'bo', 'བོད་ཡིག', 'ltr', 'tibet' ), + 'bs_BA' => array( 'bs', 'bs_BA', 'Bosanski', 'ltr', 'ba' ), + 'ca' => array( 'ca', 'ca', 'Català', 'ltr', 'catalonia' ), + 'ceb' => array( 'ceb', 'ceb', 'Cebuano', 'ltr', 'ph' ), + 'cs_CZ' => array( 'cs', 'cs_CZ', 'Čeština', 'ltr', 'cz' ), + 'cy' => array( 'cy', 'cy', 'Cymraeg', 'ltr', 'wales' ), + 'da_DK' => array( 'da', 'da_DK', 'Dansk', 'ltr', 'dk' ), + 'de_CH' => array( 'de', 'de_CH', 'Deutsch', 'ltr', 'ch' ), + 'de_CH_informal' => array( 'de', 'de_CH_informal', 'Deutsch', 'ltr', 'ch' ), + 'de_DE' => array( 'de', 'de_DE', 'Deutsch', 'ltr', 'de' ), + 'de_DE_formal' => array( 'de', 'de_DE_formal', 'Deutsch', 'ltr', 'de' ), + 'dzo' => array( 'dz', 'dzo', 'རྫོང་ཁ', 'ltr', 'bt' ), + 'el' => array( 'el', 'el', 'Ελληνικά', 'ltr', 'gr' ), + 'en_AU' => array( 'en', 'en_AU', 'English', 'ltr', 'au' ), + 'en_CA' => array( 'en', 'en_CA', 'English', 'ltr', 'ca' ), + 'en_GB' => array( 'en', 'en_GB', 'English', 'ltr', 'gb' ), + 'en_NZ' => array( 'en', 'en_NZ', 'English', 'ltr', 'nz' ), + 'en_US' => array( 'en', 'en_US', 'English', 'ltr', 'us' ), + 'en_ZA' => array( 'en', 'en_ZA', 'English', 'ltr', 'za' ), + 'eo' => array( 'eo', 'eo', 'Esperanto', 'ltr', 'esperanto' ), + 'es_AR' => array( 'es', 'es_AR', 'Español', 'ltr', 'ar' ), + 'es_CL' => array( 'es', 'es_CL', 'Español', 'ltr', 'cl' ), + 'es_CO' => array( 'es', 'es_CO', 'Español', 'ltr', 'co' ), + 'es_ES' => array( 'es', 'es_ES', 'Español', 'ltr', 'es' ), + 'es_GT' => array( 'es', 'es_GT', 'Español', 'ltr', 'gt' ), + 'es_MX' => array( 'es', 'es_MX', 'Español', 'ltr', 'mx' ), + 'es_PE' => array( 'es', 'es_PE', 'Español', 'ltr', 'pe' ), + 'es_VE' => array( 'es', 'es_VE', 'Español', 'ltr', 've' ), + 'et' => array( 'et', 'et', 'Eesti', 'ltr', 'ee' ), + 'eu' => array( 'eu', 'eu', 'Euskara', 'ltr', 'basque' ), + 'fa_AF' => array( 'fa', 'fa_AF', 'فارسی', 'rtl', 'af' ), + 'fa_IR' => array( 'fa', 'fa_IR', 'فارسی', 'rtl', 'ir' ), + 'fi' => array( 'fi', 'fi', 'Suomi', 'ltr', 'fi' ), + 'fo' => array( 'fo', 'fo', 'Føroyskt', 'ltr', 'fo' ), + 'fr_BE' => array( 'fr', 'fr_BE', 'Français', 'ltr', 'be' ), + 'fr_CA' => array( 'fr', 'fr_CA', 'Français', 'ltr', 'quebec' ), + 'fr_FR' => array( 'fr', 'fr_FR', 'Français', 'ltr', 'fr' ), + 'fy' => array( 'fy', 'fy', 'Frysk', 'ltr', 'nl' ), + 'gd' => array( 'gd', 'gd', 'Gàidhlig', 'ltr', 'scotland' ), + 'gl_ES' => array( 'gl', 'gl_ES', 'Galego', 'ltr', 'galicia' ), + 'gu' => array( 'gu', 'gu', 'ગુજરાતી', 'ltr', 'in' ), + 'haz' => array( 'haz', 'haz', 'هزاره گی', 'rtl', 'af' ), + 'he_IL' => array( 'he', 'he_IL', 'עברית', 'rtl', 'il' ), + 'hi_IN' => array( 'hi', 'hi_IN', 'हिन्दी', 'ltr', 'in' ), + 'hr' => array( 'hr', 'hr', 'Hrvatski', 'ltr', 'hr' ), + 'hu_HU' => array( 'hu', 'hu_HU', 'Magyar', 'ltr', 'hu' ), + 'hy' => array( 'hy', 'hy', 'Հայերեն', 'ltr', 'am' ), + 'id_ID' => array( 'id', 'id_ID', 'Bahasa Indonesia', 'ltr', 'id' ), + 'is_IS' => array( 'is', 'is_IS', 'Íslenska', 'ltr', 'is' ), + 'it_IT' => array( 'it', 'it_IT', 'Italiano', 'ltr', 'it' ), + 'ja' => array( 'ja', 'ja', '日本語', 'ltr', 'jp' ), + 'jv_ID' => array( 'jv', 'jv_ID', 'Basa Jawa', 'ltr', 'id' ), + 'ka_GE' => array( 'ka', 'ka_GE', 'ქართული', 'ltr', 'ge' ), + 'kab' => array( 'kab', 'kab', 'Taqbaylit', 'ltr', 'dz' ), + 'kk' => array( 'kk', 'kk', 'Қазақ тілі', 'ltr', 'kz' ), + 'km' => array( 'km', 'km', 'ភាសាខ្មែរ', 'ltr', 'kh' ), + 'ko_KR' => array( 'ko', 'ko_KR', '한국어', 'ltr', 'kr' ), + 'ckb' => array( 'ku', 'ckb', 'کوردی', 'rtl', 'kurdistan' ), + 'lo' => array( 'lo', 'lo', 'ພາສາລາວ', 'ltr', 'la' ), + 'lt_LT' => array( 'lt', 'lt_LT', 'Lietuviškai', 'ltr', 'lt' ), + 'lv' => array( 'lv', 'lv', 'Latviešu valoda', 'ltr', 'lv' ), + 'mk_MK' => array( 'mk', 'mk_MK', 'македонски јазик', 'ltr', 'mk' ), + 'ml_IN' => array( 'ml', 'ml_IN', 'മലയാളം', 'ltr', 'in' ), + 'mn' => array( 'mn', 'mn', 'Монгол хэл', 'ltr', 'mn' ), + 'mr' => array( 'mr', 'mr', 'मराठी', 'ltr', 'in' ), + 'ms_MY' => array( 'ms', 'ms_MY', 'Bahasa Melayu', 'ltr', 'my' ), + 'my_MM' => array( 'my', 'my_MM', 'ဗမာစာ', 'ltr', 'mm' ), + 'nb_NO' => array( 'nb', 'nb_NO', 'Norsk Bokmål', 'ltr', 'no' ), + 'ne_NP' => array( 'ne', 'ne_NP', 'नेपाली', 'ltr', 'np' ), + 'nl_BE' => array( 'nl', 'nl_BE', 'Nederlands', 'ltr', 'be' ), + 'nl_NL' => array( 'nl', 'nl_NL', 'Nederlands', 'ltr', 'nl' ), + 'nl_NL_formal' => array( 'nl', 'nl_NL_formal', 'Nederlands', 'ltr', 'nl' ), + 'nn_NO' => array( 'nn', 'nn_NO', 'Norsk Nynorsk', 'ltr', 'no' ), + 'oci' => array( 'oc', 'oci', 'Occitan', 'ltr', 'occitania' ), + 'pa_IN' => array( 'pa', 'pa_IN', 'ਪੰਜਾਬੀ', 'ltr', 'in' ), + 'pl_PL' => array( 'pl', 'pl_PL', 'Polski', 'ltr', 'pl' ), + 'ps' => array( 'ps', 'ps', 'پښتو', 'rtl', 'af' ), + 'pt_BR' => array( 'pt', 'pt_BR', 'Português', 'ltr', 'br' ), + 'pt_PT' => array( 'pt', 'pt_PT', 'Português', 'ltr', 'pt' ), + 'rhg' => array( 'rhg', 'rhg', 'Ruáinga', 'ltr', 'mm' ), + 'ro_RO' => array( 'ro', 'ro_RO', 'Română', 'ltr', 'ro' ), + 'ru_RU' => array( 'ru', 'ru_RU', 'Русский', 'ltr', 'ru' ), + 'sah' => array( 'sah', 'sah', 'Сахалыы', 'ltr', 'ru' ), + 'si_LK' => array( 'si', 'si_LK', 'සිංහල', 'ltr', 'lk' ), + 'sk_SK' => array( 'sk', 'sk_SK', 'Slovenčina', 'ltr', 'sk' ), + 'sl_SI' => array( 'sl', 'sl_SI', 'Slovenščina', 'ltr', 'si' ), + 'so_SO' => array( 'so', 'so_SO', 'Af-Soomaali', 'ltr', 'so' ), + 'sq' => array( 'sq', 'sq', 'Shqip', 'ltr', 'al' ), + 'sr_RS' => array( 'sr', 'sr_RS', 'Српски језик', 'ltr', 'rs' ), + 'su_ID' => array( 'su', 'su_ID', 'Basa Sunda', 'ltr', 'id' ), + 'sv_SE' => array( 'sv', 'sv_SE', 'Svenska', 'ltr', 'se' ), + 'szl' => array( 'szl', 'szl', 'Ślōnskŏ gŏdka', 'ltr', 'pl' ), + 'ta_IN' => array( 'ta', 'ta_IN', 'தமிழ்', 'ltr', 'in' ), + 'ta_LK' => array( 'ta', 'ta_LK', 'தமிழ்', 'ltr', 'lk' ), + 'tah' => array( 'ty', 'tah', 'Reo Tahiti', 'ltr', 'pf' ), + 'te' => array( 'te', 'te', 'తెలుగు', 'ltr', 'in' ), + 'th' => array( 'th', 'th', 'ไทย', 'ltr', 'th' ), + 'tl' => array( 'tl', 'tl', 'Tagalog', 'ltr', 'ph' ), + 'tr_TR' => array( 'tr', 'tr_TR', 'Türkçe', 'ltr', 'tr' ), + 'tt_RU' => array( 'tt', 'tt_RU', 'Татар теле', 'ltr', 'ru' ), + 'ug_CN' => array( 'ug', 'ug_CN', 'Uyƣurqə', 'ltr', 'cn' ), + 'uk' => array( 'uk', 'uk', 'Українська', 'ltr', 'ua' ), + 'ur' => array( 'ur', 'ur', 'اردو', 'rtl', 'pk' ), + 'uz_UZ' => array( 'uz', 'uz_UZ', 'Oʻzbek', 'ltr', 'uz' ), + 'vec' => array( 'vec', 'vec', 'Vèneto', 'ltr', 'veneto' ), + 'vi' => array( 'vi', 'vi', 'Tiếng Việt', 'ltr', 'vn' ), + 'zh_CN' => array( 'zh', 'zh_CN', '中文 (中国)', 'ltr', 'cn' ), + 'zh_HK' => array( 'zh', 'zh_HK', '中文 (香港)', 'ltr', 'hk' ), + 'zh_TW' => array( 'zh', 'zh_TW', '中文 (台灣)', 'ltr', 'tw' ), +); + +/** + * Filter the list of predefined languages + * + * @since 1.7.10 + * + * @param array $languages + */ +$languages = apply_filters( 'pll_predefined_languages', $languages ); diff --git a/pole-sbv-content/plugins/polylang/settings/settings-browser.php b/pole-sbv-content/plugins/polylang/settings/settings-browser.php new file mode 100644 index 00000000..6ac28788 --- /dev/null +++ b/pole-sbv-content/plugins/polylang/settings/settings-browser.php @@ -0,0 +1,90 @@ + 'browser', + 'title' => __( 'Detect browser language', 'polylang' ), + 'description' => __( 'When the front page is visited, set the language according to the browser preference', 'polylang' ), + 'active_option' => $this->is_available() ? 'browser' : false, + ) ); + + if ( ! class_exists( 'PLL_Xdata_Domain', true ) ) { + add_action( 'admin_print_footer_scripts', array( $this, 'print_js' ) ); + } + } + + /** + * Tells if the option is available + * + * @since 2.0 + * + * @return bool + */ + protected function is_available() { + return ( 3 > $this->options['force_lang'] ) || class_exists( 'PLL_Xdata_Domain', true ); + } + + /** + * Tells if the module is active + * + * @since 1.8 + * + * @return bool + */ + public function is_active() { + return $this->is_available() ? parent::is_active() : false; + } + + /** + * Displays the javascript to handle dynamically the change in url modifications + * as the preferred browser language is not used when the language is set from different domains + * + * @since 1.8 + */ + public function print_js() { + wp_enqueue_script( 'jquery' ); + + if ( parent::is_active() && 3 > $this->options['force_lang'] ) { + $func = 'removeClass( "inactive" ).addClass( "active" )'; + $link = sprintf( '%s', $this->action_links['deactivate'] ); + } + else { + $func = 'removeClass( "active" ).addClass( "inactive" )'; + $link = sprintf( '%s', $this->action_links['activate'] ); + } + + $deactivated = sprintf( '%s', $this->action_links['deactivated'] ); + + ?> + + 'cpt', + 'title' => __( 'Custom post types and Taxonomies', 'polylang' ), + 'description' => __( 'Activate the languages and translations management for the custom post types and taxonomies.', 'polylang' ), + ) ); + + // FIXME should be OK when the modules will be loaded from the settings page + $post_types = get_post_types( array( 'public' => true, '_builtin' => false ) ); + $post_types = array_diff( $post_types, get_post_types( array( '_pll' => true ) ) ); + /** This filter is documented in include/model.php */ + $this->post_types = array_unique( apply_filters( 'pll_get_post_types', $post_types, true ) ); + + $taxonomies = get_taxonomies( array( 'public' => true, '_builtin' => false ) ); + $taxonomies = array_diff( $taxonomies, get_taxonomies( array( '_pll' => true ) ) ); + /** This filter is documented in include/model.php */ + $this->taxonomies = array_unique( apply_filters( 'pll_get_taxonomies', $taxonomies , true ) ); + } + + /** + * Tells if the module is active + * + * @since 1.8 + * + * @return bool + */ + public function is_active() { + return ! empty( $this->post_types ) || ! empty( $this->taxonomies ); + } + + /** + * Displays the settings form + * + * @since 1.8 + */ + protected function form() { + if ( ! empty( $this->post_types ) ) {?> +