Browse Source

Merge branch 'master' of github.com:vichan-devel/Tinyboard into br-integration

pull/40/head
czaks 10 years ago
parent
commit
f0b2240b5f
  1. 4
      inc/api.php
  2. 13
      inc/config.php
  3. 70
      inc/functions.php
  4. 8
      inc/image.php
  5. BIN
      inc/lib/geoip/GeoIPv6.dat
  6. 722
      inc/lib/geoip/geoip.inc
  7. 1
      inc/locale/es_ES/LC_MESSAGES/javascript.js
  8. 533
      inc/locale/es_ES/LC_MESSAGES/javascript.po
  9. BIN
      inc/locale/es_ES/LC_MESSAGES/tinyboard.mo
  10. 1901
      inc/locale/es_ES/LC_MESSAGES/tinyboard.po
  11. 391
      inc/locale/lt_LT/LC_MESSAGES/javascript.po
  12. BIN
      inc/locale/lt_LT/LC_MESSAGES/tinyboard.mo
  13. 2603
      inc/locale/lt_LT/LC_MESSAGES/tinyboard.po
  14. 2
      inc/locale/pl_PL/LC_MESSAGES/javascript.js
  15. 259
      inc/locale/pl_PL/LC_MESSAGES/javascript.po
  16. BIN
      inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo
  17. 302
      inc/locale/pl_PL/LC_MESSAGES/tinyboard.po
  18. 1
      inc/locale/sk_SK/LC_MESSAGES/javascript.js
  19. 431
      inc/locale/sk_SK/LC_MESSAGES/javascript.po
  20. BIN
      inc/locale/sk_SK/LC_MESSAGES/tinyboard.mo
  21. 3076
      inc/locale/sk_SK/LC_MESSAGES/tinyboard.po
  22. 1
      inc/locale/tr_TR/LC_MESSAGES/javascript.js
  23. 390
      inc/locale/tr_TR/LC_MESSAGES/javascript.po
  24. BIN
      inc/locale/tr_TR/LC_MESSAGES/tinyboard.mo
  25. 1844
      inc/locale/tr_TR/LC_MESSAGES/tinyboard.po
  26. 3
      install.php
  27. 29
      js/local-time.js
  28. 3
      js/post-hover.js
  29. 8
      js/strftime.min.js
  30. 2
      js/wPaint
  31. 22
      post.php
  32. BIN
      static/blank.gif
  33. BIN
      static/flags/a1.png
  34. BIN
      static/flags/a2.png
  35. BIN
      static/flags/ac.png
  36. BIN
      static/flags/ap.png
  37. BIN
      static/flags/aq.png
  38. BIN
      static/flags/bl.png
  39. BIN
      static/flags/bq.png
  40. BIN
      static/flags/bu.png
  41. BIN
      static/flags/cat.png
  42. BIN
      static/flags/cp.png
  43. BIN
      static/flags/cw.png
  44. BIN
      static/flags/dg.png
  45. BIN
      static/flags/ea.png
  46. BIN
      static/flags/eu.png
  47. 257
      static/flags/flags.css
  48. BIN
      static/flags/flags.png
  49. BIN
      static/flags/fx.png
  50. BIN
      static/flags/gf.png
  51. BIN
      static/flags/gg.png
  52. BIN
      static/flags/hm.png
  53. BIN
      static/flags/ic.png
  54. BIN
      static/flags/im.png
  55. BIN
      static/flags/je.png
  56. BIN
      static/flags/me.png
  57. BIN
      static/flags/mf.png
  58. BIN
      static/flags/nt.png
  59. BIN
      static/flags/o1.png
  60. BIN
      static/flags/re.png
  61. BIN
      static/flags/rs.png
  62. BIN
      static/flags/sf.png
  63. BIN
      static/flags/sj.png
  64. BIN
      static/flags/ss.png
  65. BIN
      static/flags/su.png
  66. BIN
      static/flags/sx.png
  67. BIN
      static/flags/ta.png
  68. BIN
      static/flags/ti.png
  69. BIN
      static/flags/tp.png
  70. BIN
      static/flags/uk.png
  71. BIN
      static/flags/xx.png
  72. BIN
      static/flags/yu.png
  73. BIN
      static/flags/zr.png
  74. 378
      stylesheets/caffe.css
  75. BIN
      stylesheets/img/caffe_bg.png
  76. BIN
      stylesheets/img/caffe_reply.png
  77. BIN
      stylesheets/img/caffe_reply2.png
  78. BIN
      stylesheets/img/rugby_background.jpg
  79. BIN
      stylesheets/img/rugby_background2.jpg
  80. BIN
      stylesheets/img/rugby_rugbysta.png
  81. 48
      stylesheets/rugby.css
  82. 3
      templates/header.html
  83. 14
      templates/installer/check-requirements.html
  84. 6
      templates/main.js
  85. 16
      templates/post_reply.html
  86. 16
      templates/post_thread.html
  87. 5
      tools/i18n_extract.php
  88. 39
      tools/recount-bumps.php

4
inc/api.php

@ -43,9 +43,7 @@ class Api {
$this->threadsPageFields = array(
'id' => 'no',
'bump' => 'last_modified',
'replies' => 'replies',
'images' => 'images',
'bump' => 'last_modified'
);
if (isset($config['api']['extra_fields']) && gettype($config['api']['extra_fields']) == 'array'){

13
inc/config.php

@ -523,11 +523,13 @@
// When true, users are instead presented a selectbox for email. Contains, blank, noko and sage.
$config['field_email_selectbox'] = false;
// Attach country flags to posts. Requires the PHP "geoip" extension to be installed:
// http://www.php.net/manual/en/intro.geoip.php. In the future, maybe I will find and include a proper
// pure-PHP geolocation library.
// Attach country flags to posts.
$config['country_flags'] = false;
// Load all country flags from one file
$config['country_flags_condensed'] = true;
$config['country_flags_condensed_css'] = 'static/flags/flags.css';
/*
* ====================
* Ban settings
@ -1071,6 +1073,9 @@
// Home directory. Used by themes.
$config['dir']['home'] = '';
// Location of a blank 1x1 gif file. Only used when country_flags_condensed is enabled
// $config['image_blank'] = 'static/blank.gif';
// Static images. These can be URLs OR base64 (data URI scheme). These are only used if
// $config['font_awesome'] is false (default).
// $config['image_sticky'] = 'static/sticky.gif';
@ -1461,7 +1466,7 @@
// Whether or not to enable the 4chan-compatible API, disabled by default. See
// https://github.com/4chan/4chan-API for API specification.
$config['api']['enabled'] = false;
$config['api']['enabled'] = true;
// Extra fields in to be shown in the array that are not in the 4chan-API. You can get these by taking a
// look at the schema for posts_ tables. The array should be formatted as $db_column => $translated_name.

70
inc/functions.php

@ -28,8 +28,25 @@ register_shutdown_function('fatal_error_handler');
mb_internal_encoding('UTF-8');
loadConfig();
function init_locale($locale, $error='error') {
if (_setlocale(LC_ALL, $locale) === false) {
$error('The specified locale (' . $locale . ') does not exist on your platform!');
}
if (extension_loaded('gettext')) {
bindtextdomain('tinyboard', './inc/locale');
bind_textdomain_codeset('tinyboard', 'UTF-8');
textdomain('tinyboard');
} else {
_bindtextdomain('tinyboard', './inc/locale');
_bind_textdomain_codeset('tinyboard', 'UTF-8');
_textdomain('tinyboard');
}
}
$current_locale = 'en';
function loadConfig() {
global $board, $config, $__ip, $debug, $__version, $microtime_start;
global $board, $config, $__ip, $debug, $__version, $microtime_start, $current_locale;
$error = function_exists('error') ? 'error' : 'basic_error_function_because_the_other_isnt_loaded_yet';
@ -70,16 +87,43 @@ function loadConfig() {
$config[$key] = array();
}
require 'inc/config.php';
if (!file_exists('inc/instance-config.php'))
$error('Tinyboard is not configured! Create inc/instance-config.php.');
// Initialize locale as early as possible
$config['locale'] = 'en';
$configstr = file_get_contents('inc/instance-config.php');
if (isset($board['dir']) && file_exists($board['dir'] . '/config.php')) {
$configstr .= file_get_contents($board['dir'] . '/config.php');
}
$matches = array();
preg_match_all('/[^\/*#]\$config\s*\[\s*[\'"]locale[\'"]\s*\]\s*=\s*([\'"])(.*?)\1/', $configstr, $matches);
if ($matches && isset ($matches[2]) && $matches[2]) {
$matches = $matches[2];
$config['locale'] = $matches[count($matches)-1];
}
if ($config['locale'] != $current_locale) {
$current_locale = $config['locale'];
init_locale($config['locale'], $error);
}
require 'inc/config.php';
require 'inc/instance-config.php';
if (isset($board['dir']) && file_exists($board['dir'] . '/config.php')) {
require $board['dir'] . '/config.php';
}
if ($config['locale'] != $current_locale) {
$current_locale = $config['locale'];
init_locale($config['locale'], $error);
}
if (!isset($__version))
$__version = file_exists('.installed') ? trim(file_get_contents('.installed')) : false;
$config['version'] = $__version;
@ -124,6 +168,9 @@ function loadConfig() {
if (!isset($config['dir']['static']))
$config['dir']['static'] = $config['root'] . 'static/';
if (!isset($config['image_blank']))
$config['image_blank'] = $config['dir']['static'] . 'blank.gif';
if (!isset($config['image_sticky']))
$config['image_sticky'] = $config['dir']['static'] . 'sticky.gif';
if (!isset($config['image_locked']))
@ -174,21 +221,6 @@ function loadConfig() {
if (preg_match('/^\:\:(ffff\:)?(\d+\.\d+\.\d+\.\d+)$/', $__ip, $m))
$_SERVER['REMOTE_ADDR'] = $m[2];
if ($config['locale'] != 'en') {
if (_setlocale(LC_ALL, $config['locale']) === false) {
$error('The specified locale (' . $config['locale'] . ') does not exist on your platform!');
}
if (extension_loaded('gettext')) {
bindtextdomain('tinyboard', './inc/locale');
bind_textdomain_codeset('tinyboard', 'UTF-8');
textdomain('tinyboard');
} else {
_bindtextdomain('tinyboard', './inc/locale');
_bind_textdomain_codeset('tinyboard', 'UTF-8');
_textdomain('tinyboard');
}
}
if ($config['syslog'])
openlog('tinyboard', LOG_ODELAY, LOG_SYSLOG); // open a connection to sysem logger
@ -1057,7 +1089,7 @@ function clean() {
$query->execute() or error(db_error($query));
while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
deletePost($post['id']);
deletePost($post['id'], false, false);
}
}
@ -1558,7 +1590,7 @@ function markup_url($matches) {
$markup_urls[] = $url;
$link = (object) array(
'href' => $url,
'href' => $config['link_prefix'] . $url,
'text' => $url,
'rel' => 'nofollow',
'target' => '_blank',

8
inc/image.php

@ -338,10 +338,8 @@ class ImageConvert extends ImageBase {
$this->width,
$this->height,
escapeshellarg($this->temp)))) || !file_exists($this->temp)) {
//if (!preg_match ('/sBIT: invalid/', $error)) {
// $this->destroy();
// error(_('Failed to resize image!'), null, $error);
//}
$this->destroy();
error(_('Failed to resize image!'), null, $error);
}
if ($size = $this->get_size($this->temp)) {
$this->width = $size[0];
@ -363,7 +361,7 @@ class ImageConvert extends ImageBase {
$this->width,
$this->height,
escapeshellarg($this->temp)))) || !file_exists($this->temp)) {
if (!preg_match ('/sBIT: invalid/', $error)) {
if (!file_exists($this->temp)) {
$this->destroy();
error(_('Failed to resize image!'), null, $error);
}

BIN
inc/lib/geoip/GeoIPv6.dat

Binary file not shown.

722
inc/lib/geoip/geoip.inc

@ -0,0 +1,722 @@
<?php
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
/* geoip.inc
*
* Copyright (C) 2007 MaxMind LLC
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
namespace geoip;
@define("GEOIP_COUNTRY_BEGIN", 16776960);
@define("GEOIP_STATE_BEGIN_REV0", 16700000);
@define("GEOIP_STATE_BEGIN_REV1", 16000000);
@define("GEOIP_STANDARD", 0);
@define("GEOIP_MEMORY_CACHE", 1);
@define("GEOIP_SHARED_MEMORY", 2);
@define("STRUCTURE_INFO_MAX_SIZE", 20);
@define("DATABASE_INFO_MAX_SIZE", 100);
@define("GEOIP_COUNTRY_EDITION", 1);
@define("GEOIP_PROXY_EDITION", 8);
@define("GEOIP_ASNUM_EDITION", 9);
@define("GEOIP_NETSPEED_EDITION", 10);
@define("GEOIP_REGION_EDITION_REV0", 7);
@define("GEOIP_REGION_EDITION_REV1", 3);
@define("GEOIP_CITY_EDITION_REV0", 6);
@define("GEOIP_CITY_EDITION_REV1", 2);
@define("GEOIP_ORG_EDITION", 5);
@define("GEOIP_ISP_EDITION", 4);
@define("SEGMENT_RECORD_LENGTH", 3);
@define("STANDARD_RECORD_LENGTH", 3);
@define("ORG_RECORD_LENGTH", 4);
@define("MAX_RECORD_LENGTH", 4);
@define("MAX_ORG_RECORD_LENGTH", 300);
@define("GEOIP_SHM_KEY", 0x4f415401);
@define("US_OFFSET", 1);
@define("CANADA_OFFSET", 677);
@define("WORLD_OFFSET", 1353);
@define("FIPS_RANGE", 360);
@define("GEOIP_UNKNOWN_SPEED", 0);
@define("GEOIP_DIALUP_SPEED", 1);
@define("GEOIP_CABLEDSL_SPEED", 2);
@define("GEOIP_CORPORATE_SPEED", 3);
@define("GEOIP_DOMAIN_EDITION", 11);
@define("GEOIP_COUNTRY_EDITION_V6", 12);
@define("GEOIP_LOCATIONA_EDITION", 13);
@define("GEOIP_ACCURACYRADIUS_EDITION", 14);
@define("GEOIP_CITYCOMBINED_EDITION", 15);
@define("GEOIP_CITY_EDITION_REV1_V6", 30);
@define("GEOIP_CITY_EDITION_REV0_V6",31);
@define("GEOIP_NETSPEED_EDITION_REV1",32);
@define("GEOIP_NETSPEED_EDITION_REV1_V6",33);
@define("GEOIP_USERTYPE_EDITION",28);
@define("GEOIP_USERTYPE_EDITION_V6",29);
@define("GEOIP_ASNUM_EDITION_V6",21);
@define("GEOIP_ISP_EDITION_V6",22);
@define("GEOIP_ORG_EDITION_V6",23);
@define("GEOIP_DOMAIN_EDITION_V6",24);
@define("CITYCOMBINED_FIXED_RECORD", 7 );
class GeoIP {
var $flags;
var $filehandle;
var $memory_buffer;
var $databaseType;
var $databaseSegments;
var $record_length;
var $shmid;
var $GEOIP_COUNTRY_CODE_TO_NUMBER = array(
"" => 0, "AP" => 1, "EU" => 2, "AD" => 3, "AE" => 4, "AF" => 5,
"AG" => 6, "AI" => 7, "AL" => 8, "AM" => 9, "CW" => 10, "AO" => 11,
"AQ" => 12, "AR" => 13, "AS" => 14, "AT" => 15, "AU" => 16, "AW" => 17,
"AZ" => 18, "BA" => 19, "BB" => 20, "BD" => 21, "BE" => 22, "BF" => 23,
"BG" => 24, "BH" => 25, "BI" => 26, "BJ" => 27, "BM" => 28, "BN" => 29,
"BO" => 30, "BR" => 31, "BS" => 32, "BT" => 33, "BV" => 34, "BW" => 35,
"BY" => 36, "BZ" => 37, "CA" => 38, "CC" => 39, "CD" => 40, "CF" => 41,
"CG" => 42, "CH" => 43, "CI" => 44, "CK" => 45, "CL" => 46, "CM" => 47,
"CN" => 48, "CO" => 49, "CR" => 50, "CU" => 51, "CV" => 52, "CX" => 53,
"CY" => 54, "CZ" => 55, "DE" => 56, "DJ" => 57, "DK" => 58, "DM" => 59,
"DO" => 60, "DZ" => 61, "EC" => 62, "EE" => 63, "EG" => 64, "EH" => 65,
"ER" => 66, "ES" => 67, "ET" => 68, "FI" => 69, "FJ" => 70, "FK" => 71,
"FM" => 72, "FO" => 73, "FR" => 74, "SX" => 75, "GA" => 76, "GB" => 77,
"GD" => 78, "GE" => 79, "GF" => 80, "GH" => 81, "GI" => 82, "GL" => 83,
"GM" => 84, "GN" => 85, "GP" => 86, "GQ" => 87, "GR" => 88, "GS" => 89,
"GT" => 90, "GU" => 91, "GW" => 92, "GY" => 93, "HK" => 94, "HM" => 95,
"HN" => 96, "HR" => 97, "HT" => 98, "HU" => 99, "ID" => 100, "IE" => 101,
"IL" => 102, "IN" => 103, "IO" => 104, "IQ" => 105, "IR" => 106, "IS" => 107,
"IT" => 108, "JM" => 109, "JO" => 110, "JP" => 111, "KE" => 112, "KG" => 113,
"KH" => 114, "KI" => 115, "KM" => 116, "KN" => 117, "KP" => 118, "KR" => 119,
"KW" => 120, "KY" => 121, "KZ" => 122, "LA" => 123, "LB" => 124, "LC" => 125,
"LI" => 126, "LK" => 127, "LR" => 128, "LS" => 129, "LT" => 130, "LU" => 131,
"LV" => 132, "LY" => 133, "MA" => 134, "MC" => 135, "MD" => 136, "MG" => 137,
"MH" => 138, "MK" => 139, "ML" => 140, "MM" => 141, "MN" => 142, "MO" => 143,
"MP" => 144, "MQ" => 145, "MR" => 146, "MS" => 147, "MT" => 148, "MU" => 149,
"MV" => 150, "MW" => 151, "MX" => 152, "MY" => 153, "MZ" => 154, "NA" => 155,
"NC" => 156, "NE" => 157, "NF" => 158, "NG" => 159, "NI" => 160, "NL" => 161,
"NO" => 162, "NP" => 163, "NR" => 164, "NU" => 165, "NZ" => 166, "OM" => 167,
"PA" => 168, "PE" => 169, "PF" => 170, "PG" => 171, "PH" => 172, "PK" => 173,
"PL" => 174, "PM" => 175, "PN" => 176, "PR" => 177, "PS" => 178, "PT" => 179,
"PW" => 180, "PY" => 181, "QA" => 182, "RE" => 183, "RO" => 184, "RU" => 185,
"RW" => 186, "SA" => 187, "SB" => 188, "SC" => 189, "SD" => 190, "SE" => 191,
"SG" => 192, "SH" => 193, "SI" => 194, "SJ" => 195, "SK" => 196, "SL" => 197,
"SM" => 198, "SN" => 199, "SO" => 200, "SR" => 201, "ST" => 202, "SV" => 203,
"SY" => 204, "SZ" => 205, "TC" => 206, "TD" => 207, "TF" => 208, "TG" => 209,
"TH" => 210, "TJ" => 211, "TK" => 212, "TM" => 213, "TN" => 214, "TO" => 215,
"TL" => 216, "TR" => 217, "TT" => 218, "TV" => 219, "TW" => 220, "TZ" => 221,
"UA" => 222, "UG" => 223, "UM" => 224, "US" => 225, "UY" => 226, "UZ" => 227,
"VA" => 228, "VC" => 229, "VE" => 230, "VG" => 231, "VI" => 232, "VN" => 233,
"VU" => 234, "WF" => 235, "WS" => 236, "YE" => 237, "YT" => 238, "RS" => 239,
"ZA" => 240, "ZM" => 241, "ME" => 242, "ZW" => 243, "A1" => 244, "A2" => 245,
"O1" => 246, "AX" => 247, "GG" => 248, "IM" => 249, "JE" => 250, "BL" => 251,
"MF" => 252, "BQ" => 253, "SS" => 254
);
var $GEOIP_COUNTRY_CODES = array(
"","AP","EU","AD","AE","AF","AG","AI","AL","AM","CW",
"AO","AQ","AR","AS","AT","AU","AW","AZ","BA","BB",
"BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO",
"BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD",
"CF","CG","CH","CI","CK","CL","CM","CN","CO","CR",
"CU","CV","CX","CY","CZ","DE","DJ","DK","DM","DO",
"DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ",
"FK","FM","FO","FR","SX","GA","GB","GD","GE","GF",
"GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT",
"GU","GW","GY","HK","HM","HN","HR","HT","HU","ID",
"IE","IL","IN","IO","IQ","IR","IS","IT","JM","JO",
"JP","KE","KG","KH","KI","KM","KN","KP","KR","KW",
"KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT",
"LU","LV","LY","MA","MC","MD","MG","MH","MK","ML",
"MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV",
"MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI",
"NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF",
"PG","PH","PK","PL","PM","PN","PR","PS","PT","PW",
"PY","QA","RE","RO","RU","RW","SA","SB","SC","SD",
"SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO",
"SR","ST","SV","SY","SZ","TC","TD","TF","TG","TH",
"TJ","TK","TM","TN","TO","TL","TR","TT","TV","TW",
"TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE",
"VG","VI","VN","VU","WF","WS","YE","YT","RS","ZA",
"ZM","ME","ZW","A1","A2","O1","AX","GG","IM","JE",
"BL","MF", "BQ", "SS", "O1" );
var $GEOIP_COUNTRY_CODES3 = array(
"","AP","EU","AND","ARE","AFG","ATG","AIA","ALB","ARM","CUW",
"AGO","ATA","ARG","ASM","AUT","AUS","ABW","AZE","BIH","BRB",
"BGD","BEL","BFA","BGR","BHR","BDI","BEN","BMU","BRN","BOL",
"BRA","BHS","BTN","BVT","BWA","BLR","BLZ","CAN","CCK","COD",
"CAF","COG","CHE","CIV","COK","CHL","CMR","CHN","COL","CRI",
"CUB","CPV","CXR","CYP","CZE","DEU","DJI","DNK","DMA","DOM",
"DZA","ECU","EST","EGY","ESH","ERI","ESP","ETH","FIN","FJI",
"FLK","FSM","FRO","FRA","SXM","GAB","GBR","GRD","GEO","GUF",
"GHA","GIB","GRL","GMB","GIN","GLP","GNQ","GRC","SGS","GTM",
"GUM","GNB","GUY","HKG","HMD","HND","HRV","HTI","HUN","IDN",
"IRL","ISR","IND","IOT","IRQ","IRN","ISL","ITA","JAM","JOR",
"JPN","KEN","KGZ","KHM","KIR","COM","KNA","PRK","KOR","KWT",
"CYM","KAZ","LAO","LBN","LCA","LIE","LKA","LBR","LSO","LTU",
"LUX","LVA","LBY","MAR","MCO","MDA","MDG","MHL","MKD","MLI",
"MMR","MNG","MAC","MNP","MTQ","MRT","MSR","MLT","MUS","MDV",
"MWI","MEX","MYS","MOZ","NAM","NCL","NER","NFK","NGA","NIC",
"NLD","NOR","NPL","NRU","NIU","NZL","OMN","PAN","PER","PYF",
"PNG","PHL","PAK","POL","SPM","PCN","PRI","PSE","PRT","PLW",
"PRY","QAT","REU","ROU","RUS","RWA","SAU","SLB","SYC","SDN",
"SWE","SGP","SHN","SVN","SJM","SVK","SLE","SMR","SEN","SOM",
"SUR","STP","SLV","SYR","SWZ","TCA","TCD","ATF","TGO","THA",
"TJK","TKL","TKM","TUN","TON","TLS","TUR","TTO","TUV","TWN",
"TZA","UKR","UGA","UMI","USA","URY","UZB","VAT","VCT","VEN",
"VGB","VIR","VNM","VUT","WLF","WSM","YEM","MYT","SRB","ZAF",
"ZMB","MNE","ZWE","A1","A2","O1","ALA","GGY","IMN","JEY",
"BLM","MAF", "BES", "SSD", "O1"
);
var $GEOIP_COUNTRY_NAMES = array(
"","Asia/Pacific Region","Europe","Andorra","United Arab Emirates","Afghanistan","Antigua and Barbuda","Anguilla","Albania","Armenia","Curacao",
"Angola","Antarctica","Argentina","American Samoa","Austria","Australia","Aruba","Azerbaijan","Bosnia and Herzegovina","Barbados",
"Bangladesh","Belgium","Burkina Faso","Bulgaria","Bahrain","Burundi","Benin","Bermuda","Brunei Darussalam","Bolivia",
"Brazil","Bahamas","Bhutan","Bouvet Island","Botswana","Belarus","Belize","Canada","Cocos (Keeling) Islands","Congo, The Democratic Republic of the",
"Central African Republic","Congo","Switzerland","Cote D'Ivoire","Cook Islands","Chile","Cameroon","China","Colombia","Costa Rica",
"Cuba","Cape Verde","Christmas Island","Cyprus","Czech Republic","Germany","Djibouti","Denmark","Dominica","Dominican Republic",
"Algeria","Ecuador","Estonia","Egypt","Western Sahara","Eritrea","Spain","Ethiopia","Finland","Fiji",
"Falkland Islands (Malvinas)","Micronesia, Federated States of","Faroe Islands","France","Sint Maarten (Dutch part)","Gabon","United Kingdom","Grenada","Georgia","French Guiana",
"Ghana","Gibraltar","Greenland","Gambia","Guinea","Guadeloupe","Equatorial Guinea","Greece","South Georgia and the South Sandwich Islands","Guatemala",
"Guam","Guinea-Bissau","Guyana","Hong Kong","Heard Island and McDonald Islands","Honduras","Croatia","Haiti","Hungary","Indonesia",
"Ireland","Israel","India","British Indian Ocean Territory","Iraq","Iran, Islamic Republic of","Iceland","Italy","Jamaica","Jordan",
"Japan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Comoros","Saint Kitts and Nevis","Korea, Democratic People's Republic of","Korea, Republic of","Kuwait",
"Cayman Islands","Kazakhstan","Lao People's Democratic Republic","Lebanon","Saint Lucia","Liechtenstein","Sri Lanka","Liberia","Lesotho","Lithuania",
"Luxembourg","Latvia","Libya","Morocco","Monaco","Moldova, Republic of","Madagascar","Marshall Islands","Macedonia","Mali",
"Myanmar","Mongolia","Macau","Northern Mariana Islands","Martinique","Mauritania","Montserrat","Malta","Mauritius","Maldives",
"Malawi","Mexico","Malaysia","Mozambique","Namibia","New Caledonia","Niger","Norfolk Island","Nigeria","Nicaragua",
"Netherlands","Norway","Nepal","Nauru","Niue","New Zealand","Oman","Panama","Peru","French Polynesia",
"Papua New Guinea","Philippines","Pakistan","Poland","Saint Pierre and Miquelon","Pitcairn Islands","Puerto Rico","Palestinian Territory","Portugal","Palau",
"Paraguay","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saudi Arabia","Solomon Islands","Seychelles","Sudan",
"Sweden","Singapore","Saint Helena","Slovenia","Svalbard and Jan Mayen","Slovakia","Sierra Leone","San Marino","Senegal","Somalia","Suriname",
"Sao Tome and Principe","El Salvador","Syrian Arab Republic","Swaziland","Turks and Caicos Islands","Chad","French Southern Territories","Togo","Thailand",
"Tajikistan","Tokelau","Turkmenistan","Tunisia","Tonga","Timor-Leste","Turkey","Trinidad and Tobago","Tuvalu","Taiwan",
"Tanzania, United Republic of","Ukraine","Uganda","United States Minor Outlying Islands","United States","Uruguay","Uzbekistan","Holy See (Vatican City State)","Saint Vincent and the Grenadines","Venezuela",
"Virgin Islands, British","Virgin Islands, U.S.","Vietnam","Vanuatu","Wallis and Futuna","Samoa","Yemen","Mayotte","Serbia","South Africa",
"Zambia","Montenegro","Zimbabwe","Anonymous Proxy","Satellite Provider","Other","Aland Islands","Guernsey","Isle of Man","Jersey",
"Saint Barthelemy","Saint Martin", "Bonaire, Saint Eustatius and Saba",
"South Sudan", "Other"
);
var $GEOIP_CONTINENT_CODES = array(
"--", "AS","EU","EU","AS","AS","NA","NA","EU","AS","NA",
"AF","AN","SA","OC","EU","OC","NA","AS","EU","NA",
"AS","EU","AF","EU","AS","AF","AF","NA","AS","SA",
"SA","NA","AS","AN","AF","EU","NA","NA","AS","AF",
"AF","AF","EU","AF","OC","SA","AF","AS","SA","NA",
"NA","AF","AS","AS","EU","EU","AF","EU","NA","NA",
"AF","SA","EU","AF","AF","AF","EU","AF","EU","OC",
"SA","OC","EU","EU","NA","AF","EU","NA","AS","SA",
"AF","EU","NA","AF","AF","NA","AF","EU","AN","NA",
"OC","AF","SA","AS","AN","NA","EU","NA","EU","AS",
"EU","AS","AS","AS","AS","AS","EU","EU","NA","AS",
"AS","AF","AS","AS","OC","AF","NA","AS","AS","AS",
"NA","AS","AS","AS","NA","EU","AS","AF","AF","EU",
"EU","EU","AF","AF","EU","EU","AF","OC","EU","AF",
"AS","AS","AS","OC","NA","AF","NA","EU","AF","AS",
"AF","NA","AS","AF","AF","OC","AF","OC","AF","NA",
"EU","EU","AS","OC","OC","OC","AS","NA","SA","OC",
"OC","AS","AS","EU","NA","OC","NA","AS","EU","OC",
"SA","AS","AF","EU","EU","AF","AS","OC","AF","AF",
"EU","AS","AF","EU","EU","EU","AF","EU","AF","AF",
"SA","AF","NA","AS","AF","NA","AF","AN","AF","AS",
"AS","OC","AS","AF","OC","AS","EU","NA","OC","AS",
"AF","EU","AF","OC","NA","SA","AS","EU","NA","SA",
"NA","NA","AS","OC","OC","OC","AS","AF","EU","AF",
"AF","EU","AF","--","--","--","EU","EU","EU","EU",
"NA","NA","NA", "AF", "--"
);
}
function geoip_load_shared_mem ($file) {
$fp = fopen($file, "rb");
if (!$fp) {
print "error opening $file: $php_errormsg\n";
exit;
}
$s_array = fstat($fp);
$size = $s_array['size'];
if ($shmid = @shmop_open (GEOIP_SHM_KEY, "w", 0, 0)) {
shmop_delete ($shmid);
shmop_close ($shmid);
}
$shmid = shmop_open (GEOIP_SHM_KEY, "c", 0644, $size);
shmop_write ($shmid, fread($fp, $size), 0);
shmop_close ($shmid);
}
function _setup_segments($gi){
$gi->databaseType = GEOIP_COUNTRY_EDITION;
$gi->record_length = STANDARD_RECORD_LENGTH;
if ($gi->flags & GEOIP_SHARED_MEMORY) {
$offset = @shmop_size ($gi->shmid) - 3;
for ($i = 0; $i < STRUCTURE_INFO_MAX_SIZE; $i++) {
$delim = @shmop_read ($gi->shmid, $offset, 3);
$offset += 3;
if ($delim == (chr(255).chr(255).chr(255))) {
$gi->databaseType = ord(@shmop_read ($gi->shmid, $offset, 1));
if ( $gi->databaseType >= 106 ){
$gi->databaseType -= 105;
}
$offset++;
if ($gi->databaseType == GEOIP_REGION_EDITION_REV0){
$gi->databaseSegments = GEOIP_STATE_BEGIN_REV0;
} else if ($gi->databaseType == GEOIP_REGION_EDITION_REV1){
$gi->databaseSegments = GEOIP_STATE_BEGIN_REV1;
} else if (($gi->databaseType == GEOIP_CITY_EDITION_REV0)||
($gi->databaseType == GEOIP_CITY_EDITION_REV1)
|| ($gi->databaseType == GEOIP_ORG_EDITION)
|| ($gi->databaseType == GEOIP_ORG_EDITION_V6)
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION)
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6)
|| ($gi->databaseType == GEOIP_ISP_EDITION)
|| ($gi->databaseType == GEOIP_ISP_EDITION_V6)
|| ($gi->databaseType == GEOIP_USERTYPE_EDITION)
|| ($gi->databaseType == GEOIP_USERTYPE_EDITION_V6)
|| ($gi->databaseType == GEOIP_LOCATIONA_EDITION)
|| ($gi->databaseType == GEOIP_ACCURACYRADIUS_EDITION)
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6)
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6)
|| ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1)
|| ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1_V6)
|| ($gi->databaseType == GEOIP_ASNUM_EDITION)
|| ($gi->databaseType == GEOIP_ASNUM_EDITION_V6)){
$gi->databaseSegments = 0;
$buf = @shmop_read ($gi->shmid, $offset, SEGMENT_RECORD_LENGTH);
for ($j = 0;$j < SEGMENT_RECORD_LENGTH;$j++){
$gi->databaseSegments += (ord($buf[$j]) << ($j * 8));
}
if (($gi->databaseType == GEOIP_ORG_EDITION)
|| ($gi->databaseType == GEOIP_ORG_EDITION_V6)
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION)
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6)
|| ($gi->databaseType == GEOIP_ISP_EDITION)
|| ($gi->databaseType == GEOIP_ISP_EDITION_V6)) {
$gi->record_length = ORG_RECORD_LENGTH;
}
}
break;
} else {
$offset -= 4;
}
}
if (($gi->databaseType == GEOIP_COUNTRY_EDITION)||
($gi->databaseType == GEOIP_COUNTRY_EDITION_V6)||
($gi->databaseType == GEOIP_PROXY_EDITION)||
($gi->databaseType == GEOIP_NETSPEED_EDITION)){
$gi->databaseSegments = GEOIP_COUNTRY_BEGIN;
}
} else {
$filepos = ftell($gi->filehandle);
fseek($gi->filehandle, -3, SEEK_END);
for ($i = 0; $i < STRUCTURE_INFO_MAX_SIZE; $i++) {
$delim = fread($gi->filehandle,3);
if ($delim == (chr(255).chr(255).chr(255))){
$gi->databaseType = ord(fread($gi->filehandle,1));
if ( $gi->databaseType >= 106 ){
$gi->databaseType -= 105;
}
if ($gi->databaseType == GEOIP_REGION_EDITION_REV0){
$gi->databaseSegments = GEOIP_STATE_BEGIN_REV0;
}
else if ($gi->databaseType == GEOIP_REGION_EDITION_REV1){
$gi->databaseSegments = GEOIP_STATE_BEGIN_REV1;
} else if (($gi->databaseType == GEOIP_CITY_EDITION_REV0)
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV1)
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6)
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6)
|| ($gi->databaseType == GEOIP_ORG_EDITION)
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION)
|| ($gi->databaseType == GEOIP_ISP_EDITION)
|| ($gi->databaseType == GEOIP_ORG_EDITION_V6)
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6)
|| ($gi->databaseType == GEOIP_ISP_EDITION_V6)
|| ($gi->databaseType == GEOIP_LOCATIONA_EDITION)
|| ($gi->databaseType == GEOIP_ACCURACYRADIUS_EDITION)
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6)
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6)
|| ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1)
|| ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1_V6)
|| ($gi->databaseType == GEOIP_USERTYPE_EDITION)
|| ($gi->databaseType == GEOIP_USERTYPE_EDITION_V6)
|| ($gi->databaseType == GEOIP_ASNUM_EDITION)
|| ($gi->databaseType == GEOIP_ASNUM_EDITION_V6)){
$gi->databaseSegments = 0;
$buf = fread($gi->filehandle,SEGMENT_RECORD_LENGTH);
for ($j = 0;$j < SEGMENT_RECORD_LENGTH;$j++){
$gi->databaseSegments += (ord($buf[$j]) << ($j * 8));
}
if ( ( $gi->databaseType == GEOIP_ORG_EDITION )
|| ( $gi->databaseType == GEOIP_DOMAIN_EDITION )
|| ( $gi->databaseType == GEOIP_ISP_EDITION )
|| ( $gi->databaseType == GEOIP_ORG_EDITION_V6 )
|| ( $gi->databaseType == GEOIP_DOMAIN_EDITION_V6 )
|| ( $gi->databaseType == GEOIP_ISP_EDITION_V6 )) {
$gi->record_length = ORG_RECORD_LENGTH;
}
}
break;
} else {
fseek($gi->filehandle, -4, SEEK_CUR);
}
}
if (($gi->databaseType == GEOIP_COUNTRY_EDITION)||
($gi->databaseType == GEOIP_COUNTRY_EDITION_V6)||
($gi->databaseType == GEOIP_PROXY_EDITION)||
($gi->databaseType == GEOIP_NETSPEED_EDITION)){
$gi->databaseSegments = GEOIP_COUNTRY_BEGIN;
}
fseek($gi->filehandle,$filepos,SEEK_SET);
}
return $gi;
}
function geoip_open($filename, $flags) {
$gi = new GeoIP;
$gi->flags = $flags;
if ($gi->flags & GEOIP_SHARED_MEMORY) {
$gi->shmid = @shmop_open (GEOIP_SHM_KEY, "a", 0, 0);
} else {
$gi->filehandle = fopen($filename,"rb") or die( "Can not open $filename\n" );
if ($gi->flags & GEOIP_MEMORY_CACHE) {
$s_array = fstat($gi->filehandle);
$gi->memory_buffer = fread($gi->filehandle, $s_array['size']);
}
}
$gi = _setup_segments($gi);
return $gi;
}
function geoip_close($gi) {
if ($gi->flags & GEOIP_SHARED_MEMORY) {
return true;
}
return fclose($gi->filehandle);
}
function geoip_country_id_by_name_v6($gi, $name) {
$rec = dns_get_record($name, DNS_AAAA);
if ( !$rec ) {
return false;
}
$addr = $rec[0]["ipv6"];
if (!$addr || $addr == $name) {
return false;
}
return geoip_country_id_by_addr_v6($gi, $addr);
}
function geoip_country_id_by_name($gi, $name) {
$addr = gethostbyname($name);
if (!$addr || $addr == $name) {
return false;
}
return geoip_country_id_by_addr($gi, $addr);
}
function geoip_country_code_by_name_v6($gi, $name) {
$country_id = geoip_country_id_by_name_v6($gi,$name);
if ($country_id !== false) {
return $gi->GEOIP_COUNTRY_CODES[$country_id];
}
return false;
}
function geoip_country_code_by_name($gi, $name) {
$country_id = geoip_country_id_by_name($gi,$name);
if ($country_id !== false) {
return $gi->GEOIP_COUNTRY_CODES[$country_id];
}
return false;
}
function geoip_country_name_by_name_v6($gi, $name) {
$country_id = geoip_country_id_by_name_v6($gi,$name);
if ($country_id !== false) {
return $gi->GEOIP_COUNTRY_NAMES[$country_id];
}
return false;
}
function geoip_country_name_by_name($gi, $name) {
$country_id = geoip_country_id_by_name($gi,$name);
if ($country_id !== false) {
return $gi->GEOIP_COUNTRY_NAMES[$country_id];
}
return false;
}
function geoip_country_id_by_addr_v6($gi, $addr) {
$ipnum = inet_pton($addr);
return _geoip_seek_country_v6($gi, $ipnum) - GEOIP_COUNTRY_BEGIN;
}
function geoip_country_id_by_addr($gi, $addr) {
$ipnum = ip2long($addr);
return _geoip_seek_country($gi, $ipnum) - GEOIP_COUNTRY_BEGIN;
}
function geoip_country_code_by_addr_v6($gi, $addr) {
$country_id = geoip_country_id_by_addr_v6($gi,$addr);
if ($country_id !== false) {
return $gi->GEOIP_COUNTRY_CODES[$country_id];
}
return false;
}
function geoip_country_code_by_addr($gi, $addr) {
if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) {
$record = geoip_record_by_addr($gi,$addr);
if ( $record !== false ) {
return $record->country_code;
}
} else {
$country_id = geoip_country_id_by_addr($gi,$addr);
if ($country_id !== false) {
return $gi->GEOIP_COUNTRY_CODES[$country_id];
}
}
return false;
}
function geoip_country_name_by_addr_v6($gi, $addr) {
$country_id = geoip_country_id_by_addr_v6($gi,$addr);
if ($country_id !== false) {
return $gi->GEOIP_COUNTRY_NAMES[$country_id];
}
return false;
}
function geoip_country_name_by_addr($gi, $addr) {
if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) {
$record = geoip_record_by_addr($gi,$addr);
return $record->country_name;
} else {
$country_id = geoip_country_id_by_addr($gi,$addr);
if ($country_id !== false) {
return $gi->GEOIP_COUNTRY_NAMES[$country_id];
}
}
return false;
}
function _geoip_seek_country_v6($gi, $ipnum) {
# arrays from unpack start with offset 1
# yet another php mystery. array_merge work around
# this broken behaviour
$v6vec = array_merge(unpack( "C16", $ipnum));
$offset = 0;
for ($depth = 127; $depth >= 0; --$depth) {
if ($gi->flags & GEOIP_MEMORY_CACHE) {
// workaround php's broken substr, strpos, etc handling with
// mbstring.func_overload and mbstring.internal_encoding
$enc = mb_internal_encoding();
mb_internal_encoding('ISO-8859-1');
$buf = substr($gi->memory_buffer,
2 * $gi->record_length * $offset,
2 * $gi->record_length);
mb_internal_encoding($enc);
} elseif ($gi->flags & GEOIP_SHARED_MEMORY) {
$buf = @shmop_read ($gi->shmid,
2 * $gi->record_length * $offset,
2 * $gi->record_length );
} else {
fseek($gi->filehandle, 2 * $gi->record_length * $offset, SEEK_SET) == 0
or die("fseek failed");
$buf = fread($gi->filehandle, 2 * $gi->record_length);
}
$x = array(0,0);
for ($i = 0; $i < 2; ++$i) {
for ($j = 0; $j < $gi->record_length; ++$j) {
$x[$i] += ord($buf[$gi->record_length * $i + $j]) << ($j * 8);
}
}
$bnum = 127 - $depth;
$idx = $bnum >> 3;
$b_mask = 1 << ( $bnum & 7 ^ 7 );
if (($v6vec[$idx] & $b_mask) > 0) {
if ($x[1] >= $gi->databaseSegments) {
return $x[1];
}
$offset = $x[1];
} else {
if ($x[0] >= $gi->databaseSegments) {
return $x[0];
}
$offset = $x[0];
}
}
trigger_error("error traversing database - perhaps it is corrupt?", E_USER_ERROR);
return false;
}
function _geoip_seek_country($gi, $ipnum) {
$offset = 0;
for ($depth = 31; $depth >= 0; --$depth) {
if ($gi->flags & GEOIP_MEMORY_CACHE) {
// workaround php's broken substr, strpos, etc handling with
// mbstring.func_overload and mbstring.internal_encoding
$enc = mb_internal_encoding();
mb_internal_encoding('ISO-8859-1');
$buf = substr($gi->memory_buffer,
2 * $gi->record_length * $offset,
2 * $gi->record_length);
mb_internal_encoding($enc);
} elseif ($gi->flags & GEOIP_SHARED_MEMORY) {
$buf = @shmop_read ($gi->shmid,
2 * $gi->record_length * $offset,
2 * $gi->record_length );
} else {
fseek($gi->filehandle, 2 * $gi->record_length * $offset, SEEK_SET) == 0
or die("fseek failed");
$buf = fread($gi->filehandle, 2 * $gi->record_length);
}
$x = array(0,0);
for ($i = 0; $i < 2; ++$i) {
for ($j = 0; $j < $gi->record_length; ++$j) {
$x[$i] += ord($buf[$gi->record_length * $i + $j]) << ($j * 8);
}
}
if ($ipnum & (1 << $depth)) {
if ($x[1] >= $gi->databaseSegments) {
return $x[1];
}
$offset = $x[1];
} else {
if ($x[0] >= $gi->databaseSegments) {
return $x[0];
}
$offset = $x[0];
}
}
trigger_error("error traversing database - perhaps it is corrupt?", E_USER_ERROR);
return false;
}
function _common_get_org($gi, $seek_org){
$record_pointer = $seek_org + (2 * $gi->record_length - 1) * $gi->databaseSegments;
if ($gi->flags & GEOIP_SHARED_MEMORY) {
$org_buf = @shmop_read ($gi->shmid, $record_pointer, MAX_ORG_RECORD_LENGTH);
} else {
fseek($gi->filehandle, $record_pointer, SEEK_SET);
$org_buf = fread($gi->filehandle,MAX_ORG_RECORD_LENGTH);
}
// workaround php's broken substr, strpos, etc handling with
// mbstring.func_overload and mbstring.internal_encoding
$enc = mb_internal_encoding();
mb_internal_encoding('ISO-8859-1');
$org_buf = substr($org_buf, 0, strpos($org_buf, "\0"));
mb_internal_encoding($enc);
return $org_buf;
}
function _get_org_v6($gi,$ipnum){
$seek_org = _geoip_seek_country_v6($gi,$ipnum);
if ($seek_org == $gi->databaseSegments) {
return NULL;
}
return _common_get_org($gi, $seek_org);
}
function _get_org($gi,$ipnum){
$seek_org = _geoip_seek_country($gi,$ipnum);
if ($seek_org == $gi->databaseSegments) {
return NULL;
}
return _common_get_org($gi, $seek_org);
}
function geoip_name_by_addr_v6 ($gi,$addr) {
if ($addr == NULL) {
return 0;
}
$ipnum = inet_pton($addr);
return _get_org_v6($gi, $ipnum);
}
function geoip_name_by_addr ($gi,$addr) {
if ($addr == NULL) {
return 0;
}
$ipnum = ip2long($addr);
return _get_org($gi, $ipnum);
}
function geoip_org_by_addr ($gi,$addr) {
return geoip_name_by_addr($gi, $addr);
}
function _get_region($gi,$ipnum){
if ($gi->databaseType == GEOIP_REGION_EDITION_REV0){
$seek_region = _geoip_seek_country($gi,$ipnum) - GEOIP_STATE_BEGIN_REV0;
if ($seek_region >= 1000){
$country_code = "US";
$region = chr(($seek_region - 1000)/26 + 65) . chr(($seek_region - 1000)%26 + 65);
} else {
$country_code = $gi->GEOIP_COUNTRY_CODES[$seek_region];
$region = "";
}
return array ($country_code,$region);
} else if ($gi->databaseType == GEOIP_REGION_EDITION_REV1) {
$seek_region = _geoip_seek_country($gi,$ipnum) - GEOIP_STATE_BEGIN_REV1;
//print $seek_region;
if ($seek_region < US_OFFSET){
$country_code = "";
$region = "";
} else if ($seek_region < CANADA_OFFSET) {
$country_code = "US";
$region = chr(($seek_region - US_OFFSET)/26 + 65) . chr(($seek_region - US_OFFSET)%26 + 65);
} else if ($seek_region < WORLD_OFFSET) {
$country_code = "CA";
$region = chr(($seek_region - CANADA_OFFSET)/26 + 65) . chr(($seek_region - CANADA_OFFSET)%26 + 65);
} else {
$country_code = $gi->GEOIP_COUNTRY_CODES[($seek_region - WORLD_OFFSET) / FIPS_RANGE];
$region = "";
}
return array ($country_code,$region);
}
}
function geoip_region_by_addr ($gi,$addr) {
if ($addr == NULL) {
return 0;
}
$ipnum = ip2long($addr);
return _get_region($gi, $ipnum);
}
function getdnsattributes ($l,$ip){
$r = new Net_DNS_Resolver();
$r->nameservers = array("ws1.maxmind.com");
$p = $r->search($l."." . $ip .".s.maxmind.com","TXT","IN");
$str = is_object($p->answer[0])?$p->answer[0]->string():'';
$str = substr( $str, 1, -1 );
return $str;
}
?>

1
inc/locale/es_ES/LC_MESSAGES/javascript.js

@ -0,0 +1 @@
l10n = {"Style: ":"Estilo: ","File":"Archivo","hide":"ocultar","show":"mostrar","Show locked threads":"Mostrar hilos bloqueados","Hide locked threads":"Ocultar hilos bloqueados","URL":"URL","Select":"Seleccionar","Remote":"Remoto","Embed":"Incrustar","Oekaki":"Oekaki","hidden":"oculto","Show images":"Mostrar imagenes","Hide images":"Ocultar imagenes","Password":"Contrase\u00f1a","Delete file only":"Eliminar s\u00f3lo archivo","Delete":"Eliminar","Reason":"Raz\u00f3n","Report":"Reportar","Click reply to view.":"Click responder para ver.","Click to expand":"Click para expandir","Hide expanded replies":"Ocultar respuestas expandidas","Brush size":"Tama\u00f1o brush","Set text":"Establecer texto","Clear":"Limpiar","Save":"Guardar","Load":"Cargar","Toggle eraser":"Borrar marca","Get color":"Seleccionar color","Fill":"Llenar","Use oekaki instead of file?":"Usar oekaki en vez del archivo?","Edit in oekaki":"Editar en oekaki","Enter some text":"Pon alg\u00fan texto","Enter font or leave empty":"Pon una fuente o dejalo vac\u00edo","Forced anonymity":"Forzar anonimato","enabled":"activado","disabled":"desactivado","Sun":"Dom","Mon":"Lun","Tue":"Mar","Wed":"Mie","Thu":"Jue","Fri":"Vie","Sat":"S\u00e1","Catalog":"Cat\u00e1logo","Submit":"Enviar","Quick reply":"Respuesta r\u00e1pida","Posting mode: Replying to <small>&gt;&gt;{0}<\/small>":"Respondiendo a <small>&gt;&gt;{0}<\/small>","Return":"Volver","Expand all images":"Expandir todas las im\u00e1genes","Hello!":"Hola!","{0} users":"{0} usuarios","(hide threads from this board)":"(ocultar hilos de este tabl\u00f3n)","(show threads from this board)":"(mostrar hilos de este tabl\u00f3n)","No more threads to display":"No hay m\u00e1s hilos para mostrar","Loading...":"Cargando...","Save as original filename":"Guardar con el nombre original del archivo","Reported post(s).":"Post(s) reportados.","An unknown error occured!":"Ocurri\u00f3 un error desconocido!","Something went wrong... An unknown error occured!":"Algo fue mal... Ocurri\u00f3 un error desconocido!","Working...":"Trabajando...","Posting... (#%)":"Posteando... (#%)","Posted...":"Posteado...","An unknown error occured when posting!":"Ocurri\u00f3 un error desconocido mientras posteabas!","Posting...":"Posteando...","Upload URL":"Subir URL","Spoiler Image":"Imagen Spoiler","Comment":"Comentario","Quick Reply":"Respuesta r\u00e1pida","Stop watching this thread":"Para de ver este hilo","Watch this thread":"Ver este hilo","Unpin this board":"Desmarcar este hilo","Pin this board":"Marcar este hilo","Stop watching this board":"Para de ver este hilo","Watch this board":"Ver este hilo","Click on any image on this site to load it into oekaki applet":"Click en cualquier sitio para cargar el oekaki applet","Sunday":"Domingo","Monday":"Lunes","Tuesday":"Martes","Wednesday":"Mi\u00e9rcoles","Thursday":"Jueves","Friday":"Viernes","Saturday":"S\u00e1bado","January":"Enero","February":"Febrero","March":"Marzo","April":"Abril","May":"Mayo","June":"Junio","July":"Julio","August":"Agosto","September":"Septiembre","October":"Octubre","November":"Noviembre","December":"Diciembre","Jan":"Ene","Feb":"Feb","Mar":"Mar","Apr":"Abr","Jun":"Jun","Jul":"Jul","Aug":"Aug","Sep":"Sep","Oct":"Oct","Nov":"Nov","Dec":"Dic","AM":"AM","PM":"PM","am":"am","pm":"pm"};

533
inc/locale/es_ES/LC_MESSAGES/javascript.po

@ -0,0 +1,533 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-02-23 19:40+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../../../js/style-select.js:40 ../../../../js/style-select.js:41
msgid "Style: "
msgstr "Estilo: "
#: ../../../../js/hide-images.js:50 ../../../../js/upload-selection.js:51
#: ../../../../js/quick-post-controls.js:30 ../../../../js/hide-images.js:51
#: ../../../../js/quick-post-controls.js:32
#: ../../../../js/upload-selection.js:61
msgid "File"
msgstr "Archivo"
#: ../../../../js/hide-images.js:50 ../../../../js/hide-images.js:51
msgid "hide"
msgstr "ocultar"
#: ../../../../js/hide-images.js:56 ../../../../js/hide-images.js:57
msgid "show"
msgstr "mostrar"
#: ../../../../js/toggle-locked-threads.js:39
#: ../../../../js/toggle-locked-threads.js:54
#: ../../../../js/toggle-locked-threads.js:40
#: ../../../../js/toggle-locked-threads.js:55
#: ../../../../js/toggle-locked-threads.js:41
#: ../../../../js/toggle-locked-threads.js:56
msgid "Show locked threads"
msgstr "Mostrar hilos bloqueados"
#: ../../../../js/toggle-locked-threads.js:39
#: ../../../../js/toggle-locked-threads.js:54
#: ../../../../js/toggle-locked-threads.js:40
#: ../../../../js/toggle-locked-threads.js:55
#: ../../../../js/toggle-locked-threads.js:41
#: ../../../../js/toggle-locked-threads.js:56
msgid "Hide locked threads"
msgstr "Ocultar hilos bloqueados"
#: ../../../../js/upload-selection.js:32 ../../../../js/upload-selection.js:45
msgid "URL"
msgstr "URL"
#: ../../../../js/upload-selection.js:50 ../../../../js/upload-selection.js:60
msgid "Select"
msgstr "Seleccionar"
#: ../../../../js/upload-selection.js:53 ../../../../js/upload-selection.js:63
msgid "Remote"
msgstr "Remoto"
#: ../../../../js/upload-selection.js:56 ../../../../js/upload-selection.js:66
msgid "Embed"
msgstr "Incrustar"
#: ../../../../js/upload-selection.js:59 ../../../../js/upload-selection.js:69
msgid "Oekaki"
msgstr "Oekaki"
#: ../../../../js/toggle-images.js:41 ../../../../js/toggle-images.js:42
msgid "hidden"
msgstr "oculto"
#: ../../../../js/toggle-images.js:57 ../../../../js/toggle-images.js:70
#: ../../../../js/toggle-images.js:58 ../../../../js/toggle-images.js:71
msgid "Show images"
msgstr "Mostrar imagenes"
#: ../../../../js/toggle-images.js:57 ../../../../js/toggle-images.js:70
#: ../../../../js/toggle-images.js:58 ../../../../js/toggle-images.js:71
msgid "Hide images"
msgstr "Ocultar imagenes"
#: ../../../../js/quick-post-controls.js:27
#: ../../../../js/quick-post-controls.js:29
msgid "Password"
msgstr "Contraseña"
#: ../../../../js/quick-post-controls.js:29
#: ../../../../js/quick-post-controls.js:31
msgid "Delete file only"
msgstr "Eliminar sólo archivo"
#: ../../../../js/quick-post-controls.js:31
#: ../../../../js/quick-post-controls.js:33
msgid "Delete"
msgstr "Eliminar"
#: ../../../../js/quick-post-controls.js:35
#: ../../../../js/quick-post-controls.js:37
msgid "Reason"
msgstr "Razón"
#: ../../../../js/quick-post-controls.js:37
#: ../../../../js/quick-post-controls.js:39
msgid "Report"
msgstr "Reportar"
#: ../../../../js/expand.js:20 ../../../../js/expand.js:22
msgid "Click reply to view."
msgstr "Click responder para ver."
#: ../../../../js/expand.js:20 ../../../../js/expand.js:22
msgid "Click to expand"
msgstr "Click para expandir"
#: ../../../../js/expand.js:44 ../../../../js/expand.js:46
msgid "Hide expanded replies"
msgstr "Ocultar respuestas expandidas"
#: ../../../../js/oekaki.js:10
msgid "Brush size"
msgstr "Tamaño brush"
#: ../../../../js/oekaki.js:10
msgid "Set text"
msgstr "Establecer texto"
#: ../../../../js/oekaki.js:10
msgid "Clear"
msgstr "Limpiar"
#: ../../../../js/oekaki.js:10
msgid "Save"
msgstr "Guardar"
#: ../../../../js/oekaki.js:10
msgid "Load"
msgstr "Cargar"
#: ../../../../js/oekaki.js:11
msgid "Toggle eraser"
msgstr "Borrar marca"
#: ../../../../js/oekaki.js:11
msgid "Get color"
msgstr "Seleccionar color"
#: ../../../../js/oekaki.js:11
msgid "Fill"
msgstr "Llenar"
#: ../../../../js/oekaki.js:12
msgid "Use oekaki instead of file?"
msgstr "Usar oekaki en vez del archivo?"
#: ../../../../js/oekaki.js:21
msgid "Edit in oekaki"
msgstr "Editar en oekaki"
#: ../../../../js/oekaki.js:152
msgid "Enter some text"
msgstr "Pon algún texto"
#: ../../../../js/oekaki.js:153
msgid "Enter font or leave empty"
msgstr "Pon una fuente o dejalo vacío"
#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:65
#: ../../../../js/forced-anon.js:69 ../../../../js/forced-anon.js:60
#: ../../../../js/forced-anon.js:66 ../../../../js/forced-anon.js:70
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:67
#: ../../../../js/forced-anon.js:71
msgid "Forced anonymity"
msgstr "Forzar anonimato"
#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:65
#: ../../../../js/forced-anon.js:60 ../../../../js/forced-anon.js:66
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:67
msgid "enabled"
msgstr "activado"
#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:69
#: ../../../../js/forced-anon.js:60 ../../../../js/forced-anon.js:70
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:71
msgid "disabled"
msgstr "desactivado"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Sun"
msgstr "Dom"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Mon"
msgstr "Lun"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Tue"
msgstr "Mar"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Wed"
msgstr "Mie"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Thu"
msgstr "Jue"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Fri"
msgstr "Vie"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Sat"
msgstr "Sá"
#: ../../../../js/catalog-link.js:21 ../../../../js/catalog-link.js:32
#: ../../../../js/catalog-link.js:40 ../../../../js/catalog-link.js:33
#: ../../../../js/catalog-link.js:44 ../../../../js/catalog-link.js:52
msgid "Catalog"
msgstr "Catálogo"
#: ../../../../js/quick-reply.js:21 ../../../../js/quick-reply-old.js:21
#: ../../../../js/quick-reply-old.js:23
msgid "Submit"
msgstr "Enviar"
#: ../../../../js/quick-reply.js:31 ../../../../js/quick-reply-old.js:31
#: ../../../../js/quick-reply-old.js:33
msgid "Quick reply"
msgstr "Respuesta rápida"
#: ../../../../js/quick-reply.js:33 ../../../../js/quick-reply-old.js:33
#: ../../../../js/quick-reply-old.js:35
#, python-brace-format
msgid "Posting mode: Replying to <small>&gt;&gt;{0}</small>"
msgstr "Respondiendo a <small>&gt;&gt;{0}</small>"
#: ../../../../js/quick-reply.js:33 ../../../../js/quick-reply-old.js:33
#: ../../../../js/quick-reply-old.js:35
msgid "Return"
msgstr "Volver"
#: ../../../../js/expand-all-images.js:20
#: ../../../../js/expand-all-images.js:21
#: ../../../../js/expand-all-images.js:22
msgid "Expand all images"
msgstr "Expandir todas las imágenes"
#: ../../../../templates/main.js:6
msgid "Hello!"
msgstr "Hola!"
#: ../../../../templates/main.js:18
#, python-brace-format
msgid "{0} users"
msgstr "{0} usuarios"
#: ../../../../templates/themes/ukko/ukko.js:28
#: ../../../../templates/themes/ukko/ukko.js:39
#: ../../../../templates/themes/ukko/ukko.js:29
#: ../../../../templates/themes/ukko/ukko.js:40
msgid "(hide threads from this board)"
msgstr "(ocultar hilos de este tablón)"
#: ../../../../templates/themes/ukko/ukko.js:32
#: ../../../../templates/themes/ukko/ukko.js:44
#: ../../../../templates/themes/ukko/ukko.js:33
#: ../../../../templates/themes/ukko/ukko.js:45
msgid "(show threads from this board)"
msgstr "(mostrar hilos de este tablón)"
#: ../../../../templates/themes/ukko/ukko.js:57
#: ../../../../templates/themes/ukko/ukko.js:58
msgid "No more threads to display"
msgstr "No hay más hilos para mostrar"
#: ../../../../templates/themes/ukko/ukko.js:79
#: ../../../../templates/themes/ukko/ukko.js:80
msgid "Loading..."
msgstr "Cargando..."
#: ../../../../js/download-original.js:32
#: ../../../../js/download-original.js:33
msgid "Save as original filename"
msgstr "Guardar con el nombre original del archivo"
#: ../../../../js/ajax-post-controls.js:43
msgid "Reported post(s)."
msgstr "Post(s) reportados."
#: ../../../../js/ajax-post-controls.js:53
msgid "An unknown error occured!"
msgstr "Ocurrió un error desconocido!"
#: ../../../../js/ajax-post-controls.js:60
msgid "Something went wrong... An unknown error occured!"
msgstr "Algo fue mal... Ocurrió un error desconocido!"
#: ../../../../js/ajax-post-controls.js:68
msgid "Working..."
msgstr "Trabajando..."
#: ../../../../js/ajax.js:42 ../../../../js/ajax.js:45
msgid "Posting... (#%)"
msgstr "Posteando... (#%)"
#: ../../../../js/ajax.js:104 ../../../../js/ajax.js:109
msgid "Posted..."
msgstr "Posteado..."
#: ../../../../js/ajax.js:106 ../../../../js/ajax.js:111
msgid "An unknown error occured when posting!"
msgstr "Ocurrió un error desconocido mientras posteabas!"
#: ../../../../js/ajax.js:130 ../../../../js/ajax.js:135
msgid "Posting..."
msgstr "Posteando..."
#: ../../../../js/quick-reply.js:223 ../../../../js/quick-reply.js:224
msgid "Upload URL"
msgstr "Subir URL"
#: ../../../../js/quick-reply.js:266 ../../../../js/quick-reply.js:267
msgid "Spoiler Image"
msgstr "Imagen Spoiler"
#: ../../../../js/quick-reply.js:277 ../../../../js/quick-reply.js:278
msgid "Comment"
msgstr "Comentario"
#: ../../../../js/quick-reply.js:285 ../../../../js/quick-reply.js:406
#: ../../../../js/quick-reply.js:286 ../../../../js/quick-reply.js:407
msgid "Quick Reply"
msgstr "Respuesta rápida"
#: ../../../../js/watch.js:249 ../../../../js/watch.js:250
#: ../../../../js/watch.js:288 ../../../../js/watch.js:289
#: ../../../../js/watch.js:330 ../../../../js/watch.js:331
msgid "Stop watching this thread"
msgstr "Para de ver este hilo"
#: ../../../../js/watch.js:249 ../../../../js/watch.js:250
#: ../../../../js/watch.js:288 ../../../../js/watch.js:289
#: ../../../../js/watch.js:330 ../../../../js/watch.js:331
msgid "Watch this thread"
msgstr "Ver este hilo"
#: ../../../../js/watch.js:260 ../../../../js/watch.js:261
#: ../../../../js/watch.js:269 ../../../../js/watch.js:299
#: ../../../../js/watch.js:300 ../../../../js/watch.js:308
#: ../../../../js/watch.js:341 ../../../../js/watch.js:342
#: ../../../../js/watch.js:350
msgid "Unpin this board"
msgstr "Desmarcar este hilo"
#: ../../../../js/watch.js:260 ../../../../js/watch.js:261
#: ../../../../js/watch.js:269 ../../../../js/watch.js:299
#: ../../../../js/watch.js:300 ../../../../js/watch.js:308
#: ../../../../js/watch.js:341 ../../../../js/watch.js:342
#: ../../../../js/watch.js:350
msgid "Pin this board"
msgstr "Marcar este hilo"
#: ../../../../js/watch.js:262 ../../../../js/watch.js:267
#: ../../../../js/watch.js:268 ../../../../js/watch.js:301
#: ../../../../js/watch.js:306 ../../../../js/watch.js:307
#: ../../../../js/watch.js:343 ../../../../js/watch.js:348
#: ../../../../js/watch.js:349
msgid "Stop watching this board"
msgstr "Para de ver este hilo"
#: ../../../../js/watch.js:262 ../../../../js/watch.js:267
#: ../../../../js/watch.js:268 ../../../../js/watch.js:301
#: ../../../../js/watch.js:306 ../../../../js/watch.js:307
#: ../../../../js/watch.js:343 ../../../../js/watch.js:348
#: ../../../../js/watch.js:349
msgid "Watch this board"
msgstr "Ver este hilo"
#: ../../../../js/wpaint.js:113
msgid "Click on any image on this site to load it into oekaki applet"
msgstr "Click en cualquier sitio para cargar el oekaki applet"
#: ../../../../js/local-time.js:29
msgid "Sunday"
msgstr "Domingo"
#: ../../../../js/local-time.js:29
msgid "Monday"
msgstr "Lunes"
#: ../../../../js/local-time.js:29
msgid "Tuesday"
msgstr "Martes"
#: ../../../../js/local-time.js:29
msgid "Wednesday"
msgstr "Miércoles"
#: ../../../../js/local-time.js:29
msgid "Thursday"
msgstr "Jueves"
#: ../../../../js/local-time.js:29
msgid "Friday"
msgstr "Viernes"
#: ../../../../js/local-time.js:29
msgid "Saturday"
msgstr "Sábado"
#: ../../../../js/local-time.js:31
msgid "January"
msgstr "Enero"
#: ../../../../js/local-time.js:31
msgid "February"
msgstr "Febrero"
#: ../../../../js/local-time.js:31
msgid "March"
msgstr "Marzo"
#: ../../../../js/local-time.js:31
msgid "April"
msgstr "Abril"
#: ../../../../js/local-time.js:31 ../../../../js/local-time.js:32
msgid "May"
msgstr "Mayo"
#: ../../../../js/local-time.js:31
msgid "June"
msgstr "Junio"
#: ../../../../js/local-time.js:31
msgid "July"
msgstr "Julio"
#: ../../../../js/local-time.js:31
msgid "August"
msgstr "Agosto"
#: ../../../../js/local-time.js:31
msgid "September"
msgstr "Septiembre"
#: ../../../../js/local-time.js:31
msgid "October"
msgstr "Octubre"
#: ../../../../js/local-time.js:31
msgid "November"
msgstr "Noviembre"
#: ../../../../js/local-time.js:31
msgid "December"
msgstr "Diciembre"
#: ../../../../js/local-time.js:32
msgid "Jan"
msgstr "Ene"
#: ../../../../js/local-time.js:32
msgid "Feb"
msgstr "Feb"
#: ../../../../js/local-time.js:32
msgid "Mar"
msgstr "Mar"
#: ../../../../js/local-time.js:32
msgid "Apr"
msgstr "Abr"
#: ../../../../js/local-time.js:32
msgid "Jun"
msgstr "Jun"
#: ../../../../js/local-time.js:32
msgid "Jul"
msgstr "Jul"
#: ../../../../js/local-time.js:32
msgid "Aug"
msgstr "Aug"
#: ../../../../js/local-time.js:32
msgid "Sep"
msgstr "Sep"
#: ../../../../js/local-time.js:32
msgid "Oct"
msgstr "Oct"
#: ../../../../js/local-time.js:32
msgid "Nov"
msgstr "Nov"
#: ../../../../js/local-time.js:32
msgid "Dec"
msgstr "Dic"
#: ../../../../js/local-time.js:33
msgid "AM"
msgstr "AM"
#: ../../../../js/local-time.js:34
msgid "PM"
msgstr "PM"
#: ../../../../js/local-time.js:35
msgid "am"
msgstr "am"
#: ../../../../js/local-time.js:36
msgid "pm"
msgstr "pm"

BIN
inc/locale/es_ES/LC_MESSAGES/tinyboard.mo

Binary file not shown.

1901
inc/locale/es_ES/LC_MESSAGES/tinyboard.po

File diff suppressed because it is too large

391
inc/locale/lt_LT/LC_MESSAGES/javascript.po

@ -0,0 +1,391 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-02-20 20:19+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../../../js/expand.js:20 ../../../../js/expand.js:22
msgid "Click reply to view."
msgstr ""
#: ../../../../js/expand.js:20 ../../../../js/expand.js:22
msgid "Click to expand"
msgstr ""
#: ../../../../js/quick-reply.js:30 ../../../../js/quick-reply.js:31
#: ../../../../js/quick-reply-old.js:31 ../../../../js/quick-reply-old.js:33
msgid "Quick reply"
msgstr ""
#: ../../../../js/quick-reply.js:32 ../../../../js/quick-reply.js:33
#: ../../../../js/quick-reply-old.js:33 ../../../../js/quick-reply-old.js:35
#, python-brace-format
msgid "Posting mode: Replying to <small>&gt;&gt;{0}</small>"
msgstr ""
#: ../../../../js/quick-reply.js:32 ../../../../js/quick-reply.js:33
#: ../../../../js/quick-reply-old.js:33 ../../../../js/quick-reply-old.js:35
msgid "Return"
msgstr ""
#: ../../../../js/quick-reply.js:20 ../../../../js/quick-reply.js:21
#: ../../../../js/quick-reply-old.js:21 ../../../../js/quick-reply-old.js:23
msgid "Submit"
msgstr ""
#: ../../../../js/toggle-locked-threads.js:39
#: ../../../../js/toggle-locked-threads.js:54
#: ../../../../js/toggle-locked-threads.js:40
#: ../../../../js/toggle-locked-threads.js:55
#: ../../../../js/toggle-locked-threads.js:41
#: ../../../../js/toggle-locked-threads.js:56
msgid "Show locked threads"
msgstr ""
#: ../../../../js/toggle-locked-threads.js:39
#: ../../../../js/toggle-locked-threads.js:54
#: ../../../../js/toggle-locked-threads.js:40
#: ../../../../js/toggle-locked-threads.js:55
#: ../../../../js/toggle-locked-threads.js:41
#: ../../../../js/toggle-locked-threads.js:56
msgid "Hide locked threads"
msgstr ""
#: ../../../../js/quick-post-controls.js:27
#: ../../../../js/quick-post-controls.js:29
msgid "Password"
msgstr ""
#: ../../../../js/quick-post-controls.js:29
#: ../../../../js/quick-post-controls.js:31
msgid "Delete file only"
msgstr ""
#: ../../../../js/quick-post-controls.js:30 ../../../../js/hide-images.js:50
#: ../../../../js/upload-selection.js:51 ../../../../js/hide-images.js:51
#: ../../../../js/quick-post-controls.js:32
#: ../../../../js/upload-selection.js:61
msgid "File"
msgstr ""
#: ../../../../js/quick-post-controls.js:31
#: ../../../../js/quick-post-controls.js:33
msgid "Delete"
msgstr ""
#: ../../../../js/quick-post-controls.js:35
#: ../../../../js/quick-post-controls.js:37
msgid "Reason"
msgstr ""
#: ../../../../js/quick-post-controls.js:37
#: ../../../../js/quick-post-controls.js:39
msgid "Report"
msgstr ""
#: ../../../../js/expand.js:41 ../../../../js/expand.js:43
#: ../../../../js/expand.js:44 ../../../../js/expand.js:46
msgid "Hide expanded replies"
msgstr ""
#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:65
#: ../../../../js/forced-anon.js:69 ../../../../js/forced-anon.js:60
#: ../../../../js/forced-anon.js:66 ../../../../js/forced-anon.js:70
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:67
#: ../../../../js/forced-anon.js:71
msgid "Forced anonymity"
msgstr ""
#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:65
#: ../../../../js/forced-anon.js:60 ../../../../js/forced-anon.js:66
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:67
msgid "enabled"
msgstr ""
#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:69
#: ../../../../js/forced-anon.js:60 ../../../../js/forced-anon.js:70
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:71
msgid "disabled"
msgstr ""
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Sun"
msgstr ""
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Mon"
msgstr ""
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Tue"
msgstr ""
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Wed"
msgstr ""
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Thu"
msgstr ""
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Fri"
msgstr ""
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Sat"
msgstr ""
#: ../../../../js/style-select.js:40 ../../../../js/style-select.js:41
msgid "Style: "
msgstr ""
#: ../../../../js/hide-images.js:50 ../../../../js/hide-images.js:51
msgid "hide"
msgstr ""
#: ../../../../js/hide-images.js:56 ../../../../js/hide-images.js:57
msgid "show"
msgstr ""
#: ../../../../js/toggle-images.js:41 ../../../../js/toggle-images.js:42
msgid "hidden"
msgstr ""
#: ../../../../js/toggle-images.js:57 ../../../../js/toggle-images.js:70
#: ../../../../js/toggle-images.js:58 ../../../../js/toggle-images.js:71
msgid "Show images"
msgstr ""
#: ../../../../js/toggle-images.js:57 ../../../../js/toggle-images.js:70
#: ../../../../js/toggle-images.js:58 ../../../../js/toggle-images.js:71
msgid "Hide images"
msgstr ""
#: ../../../../templates/main.js:6
msgid "Hello!"
msgstr ""
#: ../../../../templates/main.js:18
#, python-brace-format
msgid "{0} users"
msgstr ""
#: ../../../../templates/themes/ukko/ukko.js:28
#: ../../../../templates/themes/ukko/ukko.js:39
#: ../../../../templates/themes/ukko/ukko.js:29
#: ../../../../templates/themes/ukko/ukko.js:40
msgid "(hide threads from this board)"
msgstr ""
#: ../../../../templates/themes/ukko/ukko.js:32
#: ../../../../templates/themes/ukko/ukko.js:44
#: ../../../../templates/themes/ukko/ukko.js:33
#: ../../../../templates/themes/ukko/ukko.js:45
msgid "(show threads from this board)"
msgstr ""
#: ../../../../templates/themes/ukko/ukko.js:57
#: ../../../../templates/themes/ukko/ukko.js:58
msgid "No more threads to display"
msgstr ""
#: ../../../../templates/themes/ukko/ukko.js:79
#: ../../../../templates/themes/ukko/ukko.js:80
msgid "Loading..."
msgstr ""
#: ../../../../js/upload-selection.js:32 ../../../../js/upload-selection.js:45
msgid "URL"
msgstr ""
#: ../../../../js/upload-selection.js:50 ../../../../js/upload-selection.js:60
msgid "Select"
msgstr ""
#: ../../../../js/upload-selection.js:53 ../../../../js/upload-selection.js:63
msgid "Remote"
msgstr ""
#: ../../../../js/upload-selection.js:56 ../../../../js/upload-selection.js:66
msgid "Embed"
msgstr ""
#: ../../../../js/upload-selection.js:59 ../../../../js/upload-selection.js:69
msgid "Oekaki"
msgstr ""
#: ../../../../js/oekaki.js:10
msgid "Brush size"
msgstr ""
#: ../../../../js/oekaki.js:10
msgid "Set text"
msgstr ""
#: ../../../../js/oekaki.js:10
msgid "Clear"
msgstr ""
#: ../../../../js/oekaki.js:10
msgid "Save"
msgstr ""
#: ../../../../js/oekaki.js:10
msgid "Load"
msgstr ""
#: ../../../../js/oekaki.js:11
msgid "Toggle eraser"
msgstr ""
#: ../../../../js/oekaki.js:11
msgid "Get color"
msgstr ""
#: ../../../../js/oekaki.js:11
msgid "Fill"
msgstr ""
#: ../../../../js/oekaki.js:12
msgid "Use oekaki instead of file?"
msgstr ""
#: ../../../../js/oekaki.js:21
msgid "Edit in oekaki"
msgstr ""
#: ../../../../js/oekaki.js:152
msgid "Enter some text"
msgstr ""
#: ../../../../js/oekaki.js:153
msgid "Enter font or leave empty"
msgstr ""
#: ../../../../js/catalog-link.js:21 ../../../../js/catalog-link.js:32
#: ../../../../js/catalog-link.js:40 ../../../../js/catalog-link.js:33
#: ../../../../js/catalog-link.js:44 ../../../../js/catalog-link.js:52
msgid "Catalog"
msgstr ""
#: ../../../../js/expand-all-images.js:20
#: ../../../../js/expand-all-images.js:21
#: ../../../../js/expand-all-images.js:22
msgid "Expand all images"
msgstr ""
#: ../../../../js/download-original.js:32
#: ../../../../js/download-original.js:33
msgid "Save as original filename"
msgstr ""
#: ../../../../js/ajax-post-controls.js:43
msgid "Reported post(s)."
msgstr ""
#: ../../../../js/ajax-post-controls.js:53
msgid "An unknown error occured!"
msgstr ""
#: ../../../../js/ajax-post-controls.js:60
msgid "Something went wrong... An unknown error occured!"
msgstr ""
#: ../../../../js/ajax-post-controls.js:68
msgid "Working..."
msgstr ""
#: ../../../../js/ajax.js:42 ../../../../js/ajax.js:45
msgid "Posting... (#%)"
msgstr ""
#: ../../../../js/ajax.js:104 ../../../../js/ajax.js:109
msgid "Posted..."
msgstr ""
#: ../../../../js/ajax.js:106 ../../../../js/ajax.js:111
msgid "An unknown error occured when posting!"
msgstr ""
#: ../../../../js/ajax.js:130 ../../../../js/ajax.js:135
msgid "Posting..."
msgstr ""
#: ../../../../js/quick-reply.js:223 ../../../../js/quick-reply.js:224
msgid "Upload URL"
msgstr ""
#: ../../../../js/quick-reply.js:266 ../../../../js/quick-reply.js:267
msgid "Spoiler Image"
msgstr ""
#: ../../../../js/quick-reply.js:277 ../../../../js/quick-reply.js:278
msgid "Comment"
msgstr ""
#: ../../../../js/quick-reply.js:285 ../../../../js/quick-reply.js:406
#: ../../../../js/quick-reply.js:286 ../../../../js/quick-reply.js:407
msgid "Quick Reply"
msgstr ""
#: ../../../../js/watch.js:249 ../../../../js/watch.js:250
#: ../../../../js/watch.js:288 ../../../../js/watch.js:289
#: ../../../../js/watch.js:330 ../../../../js/watch.js:331
msgid "Stop watching this thread"
msgstr ""
#: ../../../../js/watch.js:249 ../../../../js/watch.js:250
#: ../../../../js/watch.js:288 ../../../../js/watch.js:289
#: ../../../../js/watch.js:330 ../../../../js/watch.js:331
msgid "Watch this thread"
msgstr ""
#: ../../../../js/watch.js:260 ../../../../js/watch.js:261
#: ../../../../js/watch.js:269 ../../../../js/watch.js:299
#: ../../../../js/watch.js:300 ../../../../js/watch.js:308
#: ../../../../js/watch.js:341 ../../../../js/watch.js:342
#: ../../../../js/watch.js:350
msgid "Unpin this board"
msgstr ""
#: ../../../../js/watch.js:260 ../../../../js/watch.js:261
#: ../../../../js/watch.js:269 ../../../../js/watch.js:299
#: ../../../../js/watch.js:300 ../../../../js/watch.js:308
#: ../../../../js/watch.js:341 ../../../../js/watch.js:342
#: ../../../../js/watch.js:350
msgid "Pin this board"
msgstr ""
#: ../../../../js/watch.js:262 ../../../../js/watch.js:267
#: ../../../../js/watch.js:268 ../../../../js/watch.js:301
#: ../../../../js/watch.js:306 ../../../../js/watch.js:307
#: ../../../../js/watch.js:343 ../../../../js/watch.js:348
#: ../../../../js/watch.js:349
msgid "Stop watching this board"
msgstr ""
#: ../../../../js/watch.js:262 ../../../../js/watch.js:267
#: ../../../../js/watch.js:268 ../../../../js/watch.js:301
#: ../../../../js/watch.js:306 ../../../../js/watch.js:307
#: ../../../../js/watch.js:343 ../../../../js/watch.js:348
#: ../../../../js/watch.js:349
msgid "Watch this board"
msgstr ""
#: ../../../../js/wpaint.js:113
msgid "Click on any image on this site to load it into oekaki applet"
msgstr ""

BIN
inc/locale/lt_LT/LC_MESSAGES/tinyboard.mo

Binary file not shown.

2603
inc/locale/lt_LT/LC_MESSAGES/tinyboard.po

File diff suppressed because it is too large

2
inc/locale/pl_PL/LC_MESSAGES/javascript.js

@ -1 +1 @@
l10n = {"Submit":"Wy\u015blij","Quick reply":"Szybka odpowied\u017a","Posting mode: Replying to <small>&gt;&gt;{0}<\/small>":"Tryb postowania: Odpowied\u017a na <small>&gt;&gt;{0}<\/small>","Return":"Powr\u00f3t","Click reply to view.":"Kliknij Odpowied\u017a aby zobaczy\u0107.","Click to expand":"Kliknij aby rozwin\u0105\u0107","Hide expanded replies":"Schowaj rozwini\u0119te odpowiedzi","Mon":"pon","Tue":"wto","Wed":"\u015bro","Thu":"czw","Fri":"pi\u0105","Sat":"sob","Sun":"nie","Show locked threads":"Poka\u017c zablokowane tematy","Hide locked threads":"Schowaj zablokowane tematy","Forced anonymity":"Wymuszona anonimowo\u015b\u0107","enabled":"w\u0142\u0105czona","disabled":"wy\u0142\u0105czona","Password":"Has\u0142o","Delete file only":"Usu\u0144 tylko plik","File":"Plik","Delete":"Usu\u0144","Reason":"Pow\u00f3d","Report":"Zg\u0142oszenie","hide":"ukryj","show":"poka\u017c","hidden":"ukryte","Show images":"Poka\u017c obrazki","Hide images":"Ukryj obrazki","Style: ":"Styl: ","Hello!":"Witaj!","{0} users":"{0} u\u017cytkownik\u00f3w","(hide threads from this board)":"(schowaj w\u0105tki z tego boardu)","(show threads from this board)":"(poka\u017c w\u0105tki z tego boardu)","No more threads to display":"Nie ma wi\u0119cej w\u0105tk\u00f3w do wy\u015bwietlenia","Loading...":"\u0141adowanie...","URL":"URL","Select":"Wybierz","Remote":"Zdalny","Embed":"Osad\u017a","Oekaki":"Oekaki","Brush size":"Rozmiar p\u0119dzla","Set text":"Ustaw tekst","Clear":"Wyczy\u015b\u0107","Save":"Zapisz","Load":"Za\u0142aduj","Toggle eraser":"Prze\u0142\u0105cz gumk\u0119","Get color":"Wybierz kolor","Fill":"Wype\u0142nij","Use oekaki instead of file?":"U\u017cy\u0107 oekaki zamiast pliku?","Edit in oekaki":"Edytuj w oekaki","Enter some text":"Podaj jaki\u015b tekst","Enter font or leave empty":"Podaj czcionk\u0119, b\u0105d\u017a pozostaw puste","Catalog":"Katalog","Expand all images":"Rozwi\u0144 wszystkie obrazki","Save as original filename":"Zapisz z oryginaln\u0105 nazw\u0105 pliku","Reported post(s).":"Zaraportowano post(y).","An unknown error occured!":"Wyst\u0105pi\u0142 nieznany b\u0142\u0105d!","Something went wrong... An unknown error occured!":"Co\u015b posz\u0142o \u017ale... wyst\u0105pi\u0142 nieznany b\u0142\u0105d!","Working...":"Przetwarzanie...","Posting... (#%)":"Postowanie... (#%)","Posted...":"Zapostowano...","An unknown error occured when posting!":"Wyst\u0105pi\u0142 nieznany b\u0142\u0105d podczas postowania!","Posting...":"Postowanie...","Upload URL":"Wy\u015blij URL","Spoiler Image":"Schowaj obrazek","Comment":"Komentarz","Quick Reply":"Szybka odpowied\u017a","Stop watching this thread":"Przesta\u0144 obserwowa\u0107 ten w\u0105tek","Watch this thread":"Obserwuj ten w\u0105tek","Unpin this board":"Odepnij ten board","Pin this board":"Przypnij ten board","Stop watching this board":"Przesta\u0144 oberwowa\u0107 ten board","Watch this board":"Obserwuj ten board"};
l10n = {"Submit":"Wy\u015blij","Quick reply":"Szybka odpowied\u017a","Posting mode: Replying to <small>&gt;&gt;{0}<\/small>":"Tryb postowania: Odpowied\u017a na <small>&gt;&gt;{0}<\/small>","Return":"Powr\u00f3t","Click reply to view.":"Kliknij Odpowied\u017a aby zobaczy\u0107.","Click to expand":"Kliknij aby rozwin\u0105\u0107","Hide expanded replies":"Schowaj rozwini\u0119te odpowiedzi","Mon":"pon","Tue":"wto","Wed":"\u015bro","Thu":"czw","Fri":"pi\u0105","Sat":"sob","Sun":"nie","Show locked threads":"Poka\u017c zablokowane tematy","Hide locked threads":"Schowaj zablokowane tematy","Forced anonymity":"Wymuszona anonimowo\u015b\u0107","enabled":"w\u0142\u0105czona","disabled":"wy\u0142\u0105czona","Password":"Has\u0142o","Delete file only":"Usu\u0144 tylko plik","File":"Plik","Delete":"Usu\u0144","Reason":"Pow\u00f3d","Report":"Zg\u0142oszenie","hide":"ukryj","show":"poka\u017c","hidden":"ukryte","Show images":"Poka\u017c obrazki","Hide images":"Ukryj obrazki","Style: ":"Styl: ","Hello!":"Witaj!","{0} users":"{0} u\u017cytkownik\u00f3w","(hide threads from this board)":"(schowaj w\u0105tki z tego boardu)","(show threads from this board)":"(poka\u017c w\u0105tki z tego boardu)","No more threads to display":"Nie ma wi\u0119cej w\u0105tk\u00f3w do wy\u015bwietlenia","Loading...":"\u0141adowanie...","URL":"URL","Select":"Wybierz","Remote":"Zdalny","Embed":"Osad\u017a","Oekaki":"Oekaki","Brush size":"Rozmiar p\u0119dzla","Set text":"Ustaw tekst","Clear":"Wyczy\u015b\u0107","Save":"Zapisz","Load":"Za\u0142aduj","Toggle eraser":"Prze\u0142\u0105cz gumk\u0119","Get color":"Wybierz kolor","Fill":"Wype\u0142nij","Use oekaki instead of file?":"U\u017cy\u0107 oekaki zamiast pliku?","Edit in oekaki":"Edytuj w oekaki","Enter some text":"Podaj jaki\u015b tekst","Enter font or leave empty":"Podaj czcionk\u0119, b\u0105d\u017a pozostaw puste","Catalog":"Katalog","Expand all images":"Rozwi\u0144 wszystkie obrazki","Save as original filename":"Zapisz z oryginaln\u0105 nazw\u0105 pliku","Reported post(s).":"Zaraportowano post(y).","An unknown error occured!":"Wyst\u0105pi\u0142 nieznany b\u0142\u0105d!","Something went wrong... An unknown error occured!":"Co\u015b posz\u0142o \u017ale... wyst\u0105pi\u0142 nieznany b\u0142\u0105d!","Working...":"Przetwarzanie...","Posting... (#%)":"Postowanie... (#%)","Posted...":"Zapostowano...","An unknown error occured when posting!":"Wyst\u0105pi\u0142 nieznany b\u0142\u0105d podczas postowania!","Posting...":"Postowanie...","Upload URL":"Wy\u015blij URL","Spoiler Image":"Schowaj obrazek","Comment":"Komentarz","Quick Reply":"Szybka odpowied\u017a","Stop watching this thread":"Przesta\u0144 obserwowa\u0107 ten w\u0105tek","Watch this thread":"Obserwuj ten w\u0105tek","Unpin this board":"Odepnij ten board","Pin this board":"Przypnij ten board","Stop watching this board":"Przesta\u0144 oberwowa\u0107 ten board","Watch this board":"Obserwuj ten board","Sunday":"Niedziela","Monday":"Poniedzia\u0142ek","Tuesday":"Wtorek","Wednesday":"\u015aroda","Thursday":"Czwartek","Friday":"Pi\u0105tek","Saturday":"Sobota","January":"stycznia","February":"lutego","March":"marca","April":"kwietnia","May":"maj","June":"czerwca","July":"lipca","August":"sierpnia","September":"wrze\u015bnia","October":"pa\u017adziernika","November":"listopada","December":"grudnia","Jan":"sty","Feb":"lut","Mar":"mar","Apr":"kwi","Jun":"cze","Jul":"lip","Aug":"sie","Sep":"wrz","Oct":"pa\u017a","Nov":"lis","Dec":"gru","AM":"AM","PM":"PM","am":"am","pm":"pm"};

259
inc/locale/pl_PL/LC_MESSAGES/javascript.po

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-12-29 01:35+0100\n"
"POT-Creation-Date: 2014-02-23 19:40+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
@ -18,64 +18,72 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: ../../../../js/quick-reply.js:20 ../../../../js/quick-reply.js:21
#: ../../../../js/quick-reply-old.js:21
#: ../../../../js/quick-reply-old.js:21 ../../../../js/quick-reply-old.js:23
msgid "Submit"
msgstr "Wyślij"
#: ../../../../js/quick-reply.js:30 ../../../../js/quick-reply.js:31
#: ../../../../js/quick-reply-old.js:31
#: ../../../../js/quick-reply-old.js:31 ../../../../js/quick-reply-old.js:33
msgid "Quick reply"
msgstr "Szybka odpowiedź"
#: ../../../../js/quick-reply.js:32 ../../../../js/quick-reply.js:33
#: ../../../../js/quick-reply-old.js:33
#: ../../../../js/quick-reply-old.js:33 ../../../../js/quick-reply-old.js:35
#, python-brace-format
msgid "Posting mode: Replying to <small>&gt;&gt;{0}</small>"
msgstr "Tryb postowania: Odpowiedź na <small>&gt;&gt;{0}</small>"
#: ../../../../js/quick-reply.js:32 ../../../../js/quick-reply.js:33
#: ../../../../js/quick-reply-old.js:33
#: ../../../../js/quick-reply-old.js:33 ../../../../js/quick-reply-old.js:35
msgid "Return"
msgstr "Powrót"
#: ../../../../js/expand.js:20
#: ../../../../js/expand.js:20 ../../../../js/expand.js:22
msgid "Click reply to view."
msgstr "Kliknij Odpowiedź aby zobaczyć."
#: ../../../../js/expand.js:20
#: ../../../../js/expand.js:20 ../../../../js/expand.js:22
msgid "Click to expand"
msgstr "Kliknij aby rozwinąć"
#: ../../../../js/expand.js:41 ../../../../js/expand.js:45
#: ../../../../js/expand.js:43 ../../../../js/expand.js:44
#: ../../../../js/expand.js:46
msgid "Hide expanded replies"
msgstr "Schowaj rozwinięte odpowiedzi"
#: ../../../../js/local-time.js:40
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Mon"
msgstr "pon"
#: ../../../../js/local-time.js:40
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Tue"
msgstr "wto"
#: ../../../../js/local-time.js:40
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Wed"
msgstr "śro"
#: ../../../../js/local-time.js:40
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Thu"
msgstr "czw"
#: ../../../../js/local-time.js:40
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Fri"
msgstr "pią"
#: ../../../../js/local-time.js:40
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Sat"
msgstr "sob"
#: ../../../../js/local-time.js:40
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
#: ../../../../js/local-time.js:30
msgid "Sun"
msgstr "nie"
@ -83,6 +91,8 @@ msgstr "nie"
#: ../../../../js/toggle-locked-threads.js:54
#: ../../../../js/toggle-locked-threads.js:40
#: ../../../../js/toggle-locked-threads.js:55
#: ../../../../js/toggle-locked-threads.js:41
#: ../../../../js/toggle-locked-threads.js:56
msgid "Show locked threads"
msgstr "Pokaż zablokowane tematy"
@ -90,71 +100,86 @@ msgstr "Pokaż zablokowane tematy"
#: ../../../../js/toggle-locked-threads.js:54
#: ../../../../js/toggle-locked-threads.js:40
#: ../../../../js/toggle-locked-threads.js:55
#: ../../../../js/toggle-locked-threads.js:41
#: ../../../../js/toggle-locked-threads.js:56
msgid "Hide locked threads"
msgstr "Schowaj zablokowane tematy"
#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:65
#: ../../../../js/forced-anon.js:69 ../../../../js/forced-anon.js:60
#: ../../../../js/forced-anon.js:66 ../../../../js/forced-anon.js:70
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:67
#: ../../../../js/forced-anon.js:71
msgid "Forced anonymity"
msgstr "Wymuszona anonimowość"
#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:65
#: ../../../../js/forced-anon.js:60 ../../../../js/forced-anon.js:66
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:67
msgid "enabled"
msgstr "włączona"
#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:69
#: ../../../../js/forced-anon.js:60 ../../../../js/forced-anon.js:70
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:71
msgid "disabled"
msgstr "wyłączona"
#: ../../../../js/quick-post-controls.js:27
#: ../../../../js/quick-post-controls.js:29
msgid "Password"
msgstr "Hasło"
#: ../../../../js/quick-post-controls.js:29
#: ../../../../js/quick-post-controls.js:31
msgid "Delete file only"
msgstr "Usuń tylko plik"
#: ../../../../js/quick-post-controls.js:30 ../../../../js/hide-images.js:50
#: ../../../../js/upload-selection.js:51
#: ../../../../js/upload-selection.js:51 ../../../../js/hide-images.js:51
#: ../../../../js/quick-post-controls.js:32
#: ../../../../js/upload-selection.js:61
msgid "File"
msgstr "Plik"
#: ../../../../js/quick-post-controls.js:31
#: ../../../../js/quick-post-controls.js:33
msgid "Delete"
msgstr "Usuń"
#: ../../../../js/quick-post-controls.js:35
#: ../../../../js/quick-post-controls.js:37
msgid "Reason"
msgstr "Powód"
#: ../../../../js/quick-post-controls.js:37
#: ../../../../js/quick-post-controls.js:39
msgid "Report"
msgstr "Zgłoszenie"
#: ../../../../js/hide-images.js:50
#: ../../../../js/hide-images.js:50 ../../../../js/hide-images.js:51
msgid "hide"
msgstr "ukryj"
#: ../../../../js/hide-images.js:56
#: ../../../../js/hide-images.js:56 ../../../../js/hide-images.js:57
msgid "show"
msgstr "pokaż"
#: ../../../../js/toggle-images.js:41
#: ../../../../js/toggle-images.js:41 ../../../../js/toggle-images.js:42
msgid "hidden"
msgstr "ukryte"
#: ../../../../js/toggle-images.js:57 ../../../../js/toggle-images.js:70
#: ../../../../js/toggle-images.js:58 ../../../../js/toggle-images.js:71
msgid "Show images"
msgstr "Pokaż obrazki"
#: ../../../../js/toggle-images.js:57 ../../../../js/toggle-images.js:70
#: ../../../../js/toggle-images.js:58 ../../../../js/toggle-images.js:71
msgid "Hide images"
msgstr "Ukryj obrazki"
#: ../../../../js/style-select.js:40
#: ../../../../js/style-select.js:40 ../../../../js/style-select.js:41
msgid "Style: "
msgstr "Styl: "
@ -191,23 +216,23 @@ msgstr "Nie ma więcej wątków do wyświetlenia"
msgid "Loading..."
msgstr "Ładowanie..."
#: ../../../../js/upload-selection.js:32
#: ../../../../js/upload-selection.js:32 ../../../../js/upload-selection.js:45
msgid "URL"
msgstr "URL"
#: ../../../../js/upload-selection.js:50
#: ../../../../js/upload-selection.js:50 ../../../../js/upload-selection.js:60
msgid "Select"
msgstr "Wybierz"
#: ../../../../js/upload-selection.js:53
#: ../../../../js/upload-selection.js:53 ../../../../js/upload-selection.js:63
msgid "Remote"
msgstr "Zdalny"
#: ../../../../js/upload-selection.js:56
#: ../../../../js/upload-selection.js:56 ../../../../js/upload-selection.js:66
msgid "Embed"
msgstr "Osadź"
#: ../../../../js/upload-selection.js:59
#: ../../../../js/upload-selection.js:59 ../../../../js/upload-selection.js:69
msgid "Oekaki"
msgstr "Oekaki"
@ -260,16 +285,19 @@ msgid "Enter font or leave empty"
msgstr "Podaj czcionkę, bądź pozostaw puste"
#: ../../../../js/catalog-link.js:21 ../../../../js/catalog-link.js:32
#: ../../../../js/catalog-link.js:40
#: ../../../../js/catalog-link.js:40 ../../../../js/catalog-link.js:33
#: ../../../../js/catalog-link.js:44 ../../../../js/catalog-link.js:52
msgid "Catalog"
msgstr "Katalog"
#: ../../../../js/expand-all-images.js:20
#: ../../../../js/expand-all-images.js:21
#: ../../../../js/expand-all-images.js:22
msgid "Expand all images"
msgstr "Rozwiń wszystkie obrazki"
#: ../../../../js/download-original.js:32
#: ../../../../js/download-original.js:33
msgid "Save as original filename"
msgstr "Zapisz z oryginalną nazwą pliku"
@ -289,62 +317,221 @@ msgstr "Coś poszło źle... wystąpił nieznany błąd!"
msgid "Working..."
msgstr "Przetwarzanie..."
#: ../../../../js/ajax.js:42
#: ../../../../js/ajax.js:42 ../../../../js/ajax.js:45
msgid "Posting... (#%)"
msgstr "Postowanie... (#%)"
#: ../../../../js/ajax.js:104
#: ../../../../js/ajax.js:104 ../../../../js/ajax.js:109
msgid "Posted..."
msgstr "Zapostowano..."
#: ../../../../js/ajax.js:106
#: ../../../../js/ajax.js:106 ../../../../js/ajax.js:111
msgid "An unknown error occured when posting!"
msgstr "Wystąpił nieznany błąd podczas postowania!"
#: ../../../../js/ajax.js:130
#: ../../../../js/ajax.js:130 ../../../../js/ajax.js:135
msgid "Posting..."
msgstr "Postowanie..."
#: ../../../../js/quick-reply.js:223
#: ../../../../js/quick-reply.js:223 ../../../../js/quick-reply.js:224
msgid "Upload URL"
msgstr "Wyślij URL"
#: ../../../../js/quick-reply.js:266
#: ../../../../js/quick-reply.js:266 ../../../../js/quick-reply.js:267
msgid "Spoiler Image"
msgstr "Schowaj obrazek"
#: ../../../../js/quick-reply.js:277
#: ../../../../js/quick-reply.js:277 ../../../../js/quick-reply.js:278
msgid "Comment"
msgstr "Komentarz"
#: ../../../../js/quick-reply.js:285 ../../../../js/quick-reply.js:406
#: ../../../../js/quick-reply.js:286 ../../../../js/quick-reply.js:407
msgid "Quick Reply"
msgstr "Szybka odpowiedź"
#: ../../../../js/watch.js:249 ../../../../js/watch.js:250
#: ../../../../js/watch.js:288 ../../../../js/watch.js:289
#: ../../../../js/watch.js:330 ../../../../js/watch.js:331
msgid "Stop watching this thread"
msgstr "Przestań obserwować ten wątek"
#: ../../../../js/watch.js:249 ../../../../js/watch.js:250
#: ../../../../js/watch.js:288 ../../../../js/watch.js:289
#: ../../../../js/watch.js:330 ../../../../js/watch.js:331
msgid "Watch this thread"
msgstr "Obserwuj ten wątek"
#: ../../../../js/watch.js:260 ../../../../js/watch.js:261
#: ../../../../js/watch.js:269
#: ../../../../js/watch.js:269 ../../../../js/watch.js:299
#: ../../../../js/watch.js:300 ../../../../js/watch.js:308
#: ../../../../js/watch.js:341 ../../../../js/watch.js:342
#: ../../../../js/watch.js:350
msgid "Unpin this board"
msgstr "Odepnij ten board"
#: ../../../../js/watch.js:260 ../../../../js/watch.js:261
#: ../../../../js/watch.js:269
#: ../../../../js/watch.js:269 ../../../../js/watch.js:299
#: ../../../../js/watch.js:300 ../../../../js/watch.js:308
#: ../../../../js/watch.js:341 ../../../../js/watch.js:342
#: ../../../../js/watch.js:350
msgid "Pin this board"
msgstr "Przypnij ten board"
#: ../../../../js/watch.js:262 ../../../../js/watch.js:267
#: ../../../../js/watch.js:268
#: ../../../../js/watch.js:268 ../../../../js/watch.js:301
#: ../../../../js/watch.js:306 ../../../../js/watch.js:307
#: ../../../../js/watch.js:343 ../../../../js/watch.js:348
#: ../../../../js/watch.js:349
msgid "Stop watching this board"
msgstr "Przestań oberwować ten board"
#: ../../../../js/watch.js:262 ../../../../js/watch.js:267
#: ../../../../js/watch.js:268
#: ../../../../js/watch.js:268 ../../../../js/watch.js:301
#: ../../../../js/watch.js:306 ../../../../js/watch.js:307
#: ../../../../js/watch.js:343 ../../../../js/watch.js:348
#: ../../../../js/watch.js:349
msgid "Watch this board"
msgstr "Obserwuj ten board"
#: ../../../../js/wpaint.js:113
msgid "Click on any image on this site to load it into oekaki applet"
msgstr ""
"Kliknij w jakikolwiek obrazek na tej stronie aby załadować go do apletu "
"oekaki"
#: ../../../../js/local-time.js:29
msgid "Sunday"
msgstr "Niedziela"
#: ../../../../js/local-time.js:29
msgid "Monday"
msgstr "Poniedziałek"
#: ../../../../js/local-time.js:29
msgid "Tuesday"
msgstr "Wtorek"
#: ../../../../js/local-time.js:29
msgid "Wednesday"
msgstr "Środa"
#: ../../../../js/local-time.js:29
msgid "Thursday"
msgstr "Czwartek"
#: ../../../../js/local-time.js:29
msgid "Friday"
msgstr "Piątek"
#: ../../../../js/local-time.js:29
msgid "Saturday"
msgstr "Sobota"
#: ../../../../js/local-time.js:31
msgid "January"
msgstr "stycznia"
#: ../../../../js/local-time.js:31
msgid "February"
msgstr "lutego"
#: ../../../../js/local-time.js:31
msgid "March"
msgstr "marca"
#: ../../../../js/local-time.js:31
msgid "April"
msgstr "kwietnia"
#: ../../../../js/local-time.js:31 ../../../../js/local-time.js:32
msgid "May"
msgstr "maj"
#: ../../../../js/local-time.js:31
msgid "June"
msgstr "czerwca"
#: ../../../../js/local-time.js:31
msgid "July"
msgstr "lipca"
#: ../../../../js/local-time.js:31
msgid "August"
msgstr "sierpnia"
#: ../../../../js/local-time.js:31
msgid "September"
msgstr "września"
#: ../../../../js/local-time.js:31
msgid "October"
msgstr "października"
#: ../../../../js/local-time.js:31
msgid "November"
msgstr "listopada"
#: ../../../../js/local-time.js:31
msgid "December"
msgstr "grudnia"
#: ../../../../js/local-time.js:32
msgid "Jan"
msgstr "sty"
#: ../../../../js/local-time.js:32
msgid "Feb"
msgstr "lut"
#: ../../../../js/local-time.js:32
msgid "Mar"
msgstr "mar"
#: ../../../../js/local-time.js:32
msgid "Apr"
msgstr "kwi"
#: ../../../../js/local-time.js:32
msgid "Jun"
msgstr "cze"
#: ../../../../js/local-time.js:32
msgid "Jul"
msgstr "lip"
#: ../../../../js/local-time.js:32
msgid "Aug"
msgstr "sie"
#: ../../../../js/local-time.js:32
msgid "Sep"
msgstr "wrz"
#: ../../../../js/local-time.js:32
msgid "Oct"
msgstr "paź"
#: ../../../../js/local-time.js:32
msgid "Nov"
msgstr "lis"
#: ../../../../js/local-time.js:32
msgid "Dec"
msgstr "gru"
#: ../../../../js/local-time.js:33
msgid "AM"
msgstr "AM"
#: ../../../../js/local-time.js:34
msgid "PM"
msgstr "PM"
#: ../../../../js/local-time.js:35
msgid "am"
msgstr "am"
#: ../../../../js/local-time.js:36
msgid "pm"
msgstr "pm"

BIN
inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo

Binary file not shown.

302
inc/locale/pl_PL/LC_MESSAGES/tinyboard.po

File diff suppressed because it is too large

1
inc/locale/sk_SK/LC_MESSAGES/javascript.js

@ -0,0 +1 @@
l10n = {"Show locked threads":"Zobrazi\u0165 zamknut\u00e9 vl\u00e1kna","Hide locked threads":"Skry\u0165 zamknut\u00e9 vl\u00e1kna","File":"S\u00fabor","hide":"skry\u0165","show":"uk\u00e1za\u0165","Stop watching this thread":"Zastavi\u0165 sledovanie tohto vl\u00e1kna","Watch this thread":"Sledova\u0165 toto vl\u00e1kno","Unpin this board":"Odopn\u00fa\u0165 t\u00fato dosku","Pin this board":"Pripn\u00fa\u0165 t\u00fato dosku","Stop watching this board":"Zastavi\u0165 sledovanie tejto dosky","Watch this board":"Sledova\u0165 t\u00fato dosku","Upload URL":"Adresa s\u00faboru","Spoiler Image":"Skryt\u00fd obr\u00e1zok","Comment":"Koment\u00e1r","Quick Reply":"R\u00fdchla odpove\u010f","Style: ":"\u0160t\u00fdl:","Sun":"Ne","Mon":"Po","Tue":"Ut","Wed":"St","Thu":"\u0160t","Fri":"Pi","Sat":"So","Forced anonymity":"Vyn\u00faten\u00e1 anonymita","enabled":"zapnut\u00e1","disabled":"vypnut\u00e1","Submit":"Odosla\u0165","Quick reply":"R\u00fdchla odpove\u010f","Posting mode: Replying to <small>&gt;&gt;{0}<\/small>":"Re\u017eim prispievania: Odpove\u010f na <small>&gt;&gt;{0}<\/small>","Return":"N\u00e1vrat","Click reply to view.":"Klikni na Odpove\u010f pre ich zobrazenie.","Click to expand":"Klikni sem pre zobrazenie","Hide expanded replies":"Skry\u0165 zobrazen\u00e9 odpovede","Reported post(s).":"Pr\u00edspevok nahl\u00e1sen\u00fd.","An unknown error occured!":"Nastala nezn\u00e1ma chyba!","Something went wrong... An unknown error occured!":"Stalo sa nie\u010do zl\u00e9... Nastala nezn\u00e1ma chyba!","Working...":"Pracujem...","Posting... (#%)":"Odosielam... (#%)","Posted...":"Odoslan\u00e9...","An unknown error occured when posting!":"Pri odosielan\u00ed nastala nezn\u00e1ma chyba!","Posting...":"Odosielam...","Password":"Heslo","Delete file only":"Odstr\u00e1ni\u0165 iba s\u00fabor","Delete":"Odstr\u00e1ni\u0165","Reason":"D\u00f4vod","Report":"Nahl\u00e1si\u0165","Catalog":"Katal\u00f3g","URL":"Adresa","Select":"Vybra\u0165","Remote":"Vzdialen\u00fd","Embed":"Vlo\u017ei\u0165","Oekaki":"Oekaki","hidden":"skryt\u00fd","Show images":"Zobrazi\u0165 obr\u00e1zky","Hide images":"Skry\u0165 obr\u00e1zky","Expand all images":"Otvori\u0165 v\u0161etky obr\u00e1zky","Save as original filename":"Ulo\u017ei\u0165 s p\u00f4vodn\u00fdm n\u00e1zvom","(hide threads from this board)":"(skry\u0165 vl\u00e1kna z tejto dosky)","(show threads from this board)":"(zobrazi\u0165 vl\u00e1kna z tejto dosky)","No more threads to display":"\u017diadne \u010fal\u0161ie vl\u00e1kna na zobrazenie","Loading...":"Na\u010d\u00edtanie...","Hello!":"Ahoj!","{0} users":"{0} u\u017e\u00edvate\u013eov","Sunday":"Nede\u013ea","Monday":"Pondelok","Tuesday":"Utorok","Wednesday":"Streda","Thursday":"\u0160tvrtok","Friday":"Piatok","Saturday":"Sobota","January":"Janu\u00e1r","February":"Febru\u00e1r","March":"Marec","April":"Apr\u00edl","May":"M\u00e1j","June":"J\u00fan","July":"J\u00fal","August":"August","September":"September","October":"Okt\u00f3ber","November":"November","December":"December","Jan":"Jan","Feb":"Feb","Mar":"Mar","Apr":"Apr","Jun":"J\u00fan","Jul":"J\u00fal","Aug":"Aug","Sep":"Sep","Oct":"Okt","Nov":"Nov","Dec":"Dec","AM":"Doobeda","PM":"Poobede","am":"doobeda","pm":"poobede"};

431
inc/locale/sk_SK/LC_MESSAGES/javascript.po

@ -0,0 +1,431 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-02-23 18:52+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: dubcheck <[email protected]>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"Language: sk_SK\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../../../js/toggle-locked-threads.js:41
#: ../../../../js/toggle-locked-threads.js:56
msgid "Show locked threads"
msgstr "Zobraziť zamknuté vlákna"
#: ../../../../js/toggle-locked-threads.js:41
#: ../../../../js/toggle-locked-threads.js:56
msgid "Hide locked threads"
msgstr "Skryť zamknuté vlákna"
#: ../../../../js/hide-images.js:51 ../../../../js/quick-post-controls.js:32
#: ../../../../js/upload-selection.js:61
msgid "File"
msgstr "Súbor"
#: ../../../../js/hide-images.js:51
msgid "hide"
msgstr "skryť"
#: ../../../../js/hide-images.js:57
msgid "show"
msgstr "ukázať"
#: ../../../../js/watch.js:330 ../../../../js/watch.js:331
msgid "Stop watching this thread"
msgstr "Zastaviť sledovanie tohto vlákna"
#: ../../../../js/watch.js:330 ../../../../js/watch.js:331
msgid "Watch this thread"
msgstr "Sledovať toto vlákno"
#: ../../../../js/watch.js:341 ../../../../js/watch.js:342
#: ../../../../js/watch.js:350
msgid "Unpin this board"
msgstr "Odopnúť túto dosku"
#: ../../../../js/watch.js:341 ../../../../js/watch.js:342
#: ../../../../js/watch.js:350
msgid "Pin this board"
msgstr "Pripnúť túto dosku"
#: ../../../../js/watch.js:343 ../../../../js/watch.js:348
#: ../../../../js/watch.js:349
msgid "Stop watching this board"
msgstr "Zastaviť sledovanie tejto dosky"
#: ../../../../js/watch.js:343 ../../../../js/watch.js:348
#: ../../../../js/watch.js:349
msgid "Watch this board"
msgstr "Sledovať túto dosku"
#: ../../../../js/quick-reply.js:224
msgid "Upload URL"
msgstr "Adresa súboru"
#: ../../../../js/quick-reply.js:267
msgid "Spoiler Image"
msgstr "Skrytý obrázok"
#: ../../../../js/quick-reply.js:278
msgid "Comment"
msgstr "Komentár"
#: ../../../../js/quick-reply.js:286 ../../../../js/quick-reply.js:407
msgid "Quick Reply"
msgstr "Rýchla odpoveď"
#: ../../../../js/style-select.js:41
msgid "Style: "
msgstr "Štýl:"
#: ../../../../js/local-time.js:41 ../../../../js/local-time.js:30
#: ../../../../js/local-time.js:40
msgid "Sun"
msgstr "Ne"
#: ../../../../js/local-time.js:41 ../../../../js/local-time.js:30
#: ../../../../js/local-time.js:40
msgid "Mon"
msgstr "Po"
#: ../../../../js/local-time.js:41 ../../../../js/local-time.js:30
#: ../../../../js/local-time.js:40
msgid "Tue"
msgstr "Ut"
#: ../../../../js/local-time.js:41 ../../../../js/local-time.js:30
#: ../../../../js/local-time.js:40
msgid "Wed"
msgstr "St"
#: ../../../../js/local-time.js:41 ../../../../js/local-time.js:30
#: ../../../../js/local-time.js:40
msgid "Thu"
msgstr "Št"
#: ../../../../js/local-time.js:41 ../../../../js/local-time.js:30
#: ../../../../js/local-time.js:40
msgid "Fri"
msgstr "Pi"
#: ../../../../js/local-time.js:41 ../../../../js/local-time.js:30
#: ../../../../js/local-time.js:40
msgid "Sat"
msgstr "So"
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:67
#: ../../../../js/forced-anon.js:71
msgid "Forced anonymity"
msgstr "Vynútená anonymita"
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:67
msgid "enabled"
msgstr "zapnutá"
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:71
msgid "disabled"
msgstr "vypnutá"
#: ../../../../js/quick-reply-old.js:23
msgid "Submit"
msgstr "Odoslať"
#: ../../../../js/quick-reply-old.js:33
msgid "Quick reply"
msgstr "Rýchla odpoveď"
#: ../../../../js/quick-reply-old.js:35
#, python-brace-format
msgid "Posting mode: Replying to <small>&gt;&gt;{0}</small>"
msgstr "Režim prispievania: Odpoveď na <small>&gt;&gt;{0}</small>"
#: ../../../../js/quick-reply-old.js:35
msgid "Return"
msgstr "Návrat"
#: ../../../../js/expand.js:22
msgid "Click reply to view."
msgstr "Klikni na Odpoveď pre ich zobrazenie."
#: ../../../../js/expand.js:22
msgid "Click to expand"
msgstr "Klikni sem pre zobrazenie"
#: ../../../../js/expand.js:46
msgid "Hide expanded replies"
msgstr "Skryť zobrazené odpovede"
#: ../../../../js/ajax-post-controls.js:43
msgid "Reported post(s)."
msgstr "Príspevok nahlásený."
#: ../../../../js/ajax-post-controls.js:53
msgid "An unknown error occured!"
msgstr "Nastala neznáma chyba!"
#: ../../../../js/ajax-post-controls.js:60
msgid "Something went wrong... An unknown error occured!"
msgstr "Stalo sa niečo zlé... Nastala neznáma chyba!"
#: ../../../../js/ajax-post-controls.js:68
msgid "Working..."
msgstr "Pracujem..."
#: ../../../../js/ajax.js:45
msgid "Posting... (#%)"
msgstr "Odosielam... (#%)"
#: ../../../../js/ajax.js:109
msgid "Posted..."
msgstr "Odoslané..."
#: ../../../../js/ajax.js:111
msgid "An unknown error occured when posting!"
msgstr "Pri odosielaní nastala neznáma chyba!"
#: ../../../../js/ajax.js:135
msgid "Posting..."
msgstr "Odosielam..."
#: ../../../../js/wpaint.js:113
msgid "Click on any image on this site to load it into oekaki applet"
msgstr ""
"Klikni na akýkoľvek obrázok na tejto stránke pre jeho načítanie do Oekaki"
#: ../../../../js/quick-post-controls.js:29
msgid "Password"
msgstr "Heslo"
#: ../../../../js/quick-post-controls.js:31
msgid "Delete file only"
msgstr "Odstrániť iba súbor"
#: ../../../../js/quick-post-controls.js:33
msgid "Delete"
msgstr "Odstrániť"
#: ../../../../js/quick-post-controls.js:37
msgid "Reason"
msgstr "Dôvod"
#: ../../../../js/quick-post-controls.js:39
msgid "Report"
msgstr "Nahlásiť"
#: ../../../../js/catalog-link.js:33 ../../../../js/catalog-link.js:44
#: ../../../../js/catalog-link.js:52
msgid "Catalog"
msgstr "Katalóg"
#: ../../../../js/upload-selection.js:45
msgid "URL"
msgstr "Adresa"
#: ../../../../js/upload-selection.js:60
msgid "Select"
msgstr "Vybrať"
#: ../../../../js/upload-selection.js:63
msgid "Remote"
msgstr "Vzdialený"
#: ../../../../js/upload-selection.js:66
msgid "Embed"
msgstr "Vložiť"
#: ../../../../js/upload-selection.js:69
msgid "Oekaki"
msgstr "Oekaki"
#: ../../../../js/toggle-images.js:42
msgid "hidden"
msgstr "skrytý"
#: ../../../../js/toggle-images.js:58 ../../../../js/toggle-images.js:71
msgid "Show images"
msgstr "Zobraziť obrázky"
#: ../../../../js/toggle-images.js:58 ../../../../js/toggle-images.js:71
msgid "Hide images"
msgstr "Skryť obrázky"
#: ../../../../js/expand-all-images.js:22
msgid "Expand all images"
msgstr "Otvoriť všetky obrázky"
#: ../../../../js/download-original.js:33
msgid "Save as original filename"
msgstr "Uložiť s pôvodným názvom"
#: ../../../../templates/themes/ukko/ukko.js:29
#: ../../../../templates/themes/ukko/ukko.js:40
msgid "(hide threads from this board)"
msgstr "(skryť vlákna z tejto dosky)"
#: ../../../../templates/themes/ukko/ukko.js:33
#: ../../../../templates/themes/ukko/ukko.js:45
msgid "(show threads from this board)"
msgstr "(zobraziť vlákna z tejto dosky)"
#: ../../../../templates/themes/ukko/ukko.js:58
msgid "No more threads to display"
msgstr "Žiadne ďalšie vlákna na zobrazenie"
#: ../../../../templates/themes/ukko/ukko.js:80
msgid "Loading..."
msgstr "Načítanie..."
#: ../../../../templates/main.js:6
msgid "Hello!"
msgstr "Ahoj!"
#: ../../../../templates/main.js:18
#, python-brace-format
msgid "{0} users"
msgstr "{0} užívateľov"
#: ../../../../js/local-time.js:29
msgid "Sunday"
msgstr "Nedeľa"
#: ../../../../js/local-time.js:29
msgid "Monday"
msgstr "Pondelok"
#: ../../../../js/local-time.js:29
msgid "Tuesday"
msgstr "Utorok"
#: ../../../../js/local-time.js:29
msgid "Wednesday"
msgstr "Streda"
#: ../../../../js/local-time.js:29
msgid "Thursday"
msgstr "Štvrtok"
#: ../../../../js/local-time.js:29
msgid "Friday"
msgstr "Piatok"
#: ../../../../js/local-time.js:29
msgid "Saturday"
msgstr "Sobota"
#: ../../../../js/local-time.js:31
msgid "January"
msgstr "Január"
#: ../../../../js/local-time.js:31
msgid "February"
msgstr "Február"
#: ../../../../js/local-time.js:31
msgid "March"
msgstr "Marec"
#: ../../../../js/local-time.js:31
msgid "April"
msgstr "Apríl"
#: ../../../../js/local-time.js:31 ../../../../js/local-time.js:32
msgid "May"
msgstr "Máj"
#: ../../../../js/local-time.js:31
msgid "June"
msgstr "Jún"
#: ../../../../js/local-time.js:31
msgid "July"
msgstr "Júl"
#: ../../../../js/local-time.js:31
msgid "August"
msgstr "August"
#: ../../../../js/local-time.js:31
msgid "September"
msgstr "September"
#: ../../../../js/local-time.js:31
msgid "October"
msgstr "Október"
#: ../../../../js/local-time.js:31
msgid "November"
msgstr "November"
#: ../../../../js/local-time.js:31
msgid "December"
msgstr "December"
#: ../../../../js/local-time.js:32
msgid "Jan"
msgstr "Jan"
#: ../../../../js/local-time.js:32
msgid "Feb"
msgstr "Feb"
#: ../../../../js/local-time.js:32
msgid "Mar"
msgstr "Mar"
#: ../../../../js/local-time.js:32
msgid "Apr"
msgstr "Apr"
#: ../../../../js/local-time.js:32
msgid "Jun"
msgstr "Jún"
#: ../../../../js/local-time.js:32
msgid "Jul"
msgstr "Júl"
#: ../../../../js/local-time.js:32
msgid "Aug"
msgstr "Aug"
#: ../../../../js/local-time.js:32
msgid "Sep"
msgstr "Sep"
#: ../../../../js/local-time.js:32
msgid "Oct"
msgstr "Okt"
#: ../../../../js/local-time.js:32
msgid "Nov"
msgstr "Nov"
#: ../../../../js/local-time.js:32
msgid "Dec"
msgstr "Dec"
#: ../../../../js/local-time.js:33
msgid "AM"
msgstr "Doobeda"
#: ../../../../js/local-time.js:34
msgid "PM"
msgstr "Poobede"
#: ../../../../js/local-time.js:35
msgid "am"
msgstr "doobeda"
#: ../../../../js/local-time.js:36
msgid "pm"
msgstr "poobede"

BIN
inc/locale/sk_SK/LC_MESSAGES/tinyboard.mo

Binary file not shown.

3076
inc/locale/sk_SK/LC_MESSAGES/tinyboard.po

File diff suppressed because it is too large

1
inc/locale/tr_TR/LC_MESSAGES/javascript.js

@ -0,0 +1 @@
l10n = {"Style: ":"Stil: ","File":"Dosya","hide":"gizle","show":"g\u00f6ster","Show locked threads":"Kilitli konular\u0131 g\u00f6ster","Hide locked threads":"Gizli konular\u0131 kilitle","URL":"URL","Select":"Se\u00e7","Remote":"Uzak","Embed":"G\u00f6m","Oekaki":"Oekaki","hidden":"gizli","Show images":"Resimleri g\u00f6ster","Hide images":"Resimleri gizle","Password":"\u015eifre","Delete file only":"Sadece dosyay\u0131 sil","Delete":"Sil","Reason":"Sebep","Report":"\u015eikayet et","Click reply to view.":"G\u00f6rmek i\u00e7in cevaplaya bas\u0131n.","Click to expand":"Geni\u015fletmek i\u00e7in t\u0131klay\u0131n","Hide expanded replies":"Daralt","Brush size":"F\u0131r\u00e7a b\u00fcy\u00fckl\u00fc\u011f\u00fc","Set text":"Yaz\u0131y\u0131 ayarla","Clear":"Temizle","Save":"Kay\u0131t et","Load":"Y\u00fckle","Toggle eraser":"Silgi","Get color":"Rengi se\u00e7","Fill":"Doldur","Use oekaki instead of file?":"Dosya yerine oekaki kullan","Edit in oekaki":"oekaki'de d\u00fczenle","Enter some text":"Bir yaz\u0131 girin","Enter font or leave empty":"Font girin ya da bo\u015f b\u0131rak\u0131n","Forced anonymity":"Zorunlu anon","enabled":"etkin","disabled":"etkin de\u011fil","Sun":"Paz","Mon":"Pzt","Tue":"Sa","Wed":"\u00c7r\u015f","Thu":"Per","Fri":"Cu","Sat":"Cts","Catalog":"Katalog","Submit":"G\u00f6nder","Quick reply":"\u00c7abuk cevap","Posting mode: Replying to <small>&gt;&gt;{0}<\/small>":"G\u00f6nderme modu: <small>&gt;&gt;{0}<\/small> cevap veriyorsunuz","Return":"Geri d\u00f6n","Expand all images":"B\u00fct\u00fcn resimleri geni\u015flet","Hello!":"Merhaba!","{0} users":"{0} kullan\u0131c\u0131","(hide threads from this board)":"(bu tahtadan konular\u0131 gizle)","(show threads from this board)":"(bu tahtadan konular\u0131 g\u00f6ster)","No more threads to display":"G\u00f6sterecek ba\u015fka konu kalmad\u0131","Loading...":"Y\u00fckleniyor...","Save as original filename":"Dosya ad\u0131yla kaydet","Reported post(s).":"\u015eikayet edilen konu\/konular.","An unknown error occured!":"FATAL \u00d6R\u00d6R","Something went wrong... An unknown error occured!":"Bilemedi\u011fimiz \u00e7ok fena \u015feyler oldu!","Working...":"Yap\u0131yoruz...","Posting... (#%)":"G\u00f6nderiliyor... (#%)","Posted...":"G\u00f6nderildi...","An unknown error occured when posting!":"Hata... \u00e7ok... fena... ","Posting...":"G\u00f6nderiliyor...","Upload URL":"Y\u00fckleme linki","Spoiler Image":"Spoiler","Comment":"Yorum","Quick Reply":"\u00c7abuk Cevaplama","Stop watching this thread":"Bu konuyu takip etmeyi b\u0131rak","Watch this thread":"Bu konuyu takip et","Unpin this board":"Bu tahtan\u0131n i\u011fnesini kald\u0131r","Pin this board":"Bu tahtay\u0131 i\u011fnele","Stop watching this board":"Bu tahtay\u0131 izlemeyi b\u0131rak","Watch this board":"Bu tahtay\u0131 izle","Click on any image on this site to load it into oekaki applet":"Oekaki'ye atmak i\u00e7in website \u00fczerindeki herhangi bir resme t\u0131klay\u0131n"};

390
inc/locale/tr_TR/LC_MESSAGES/javascript.po

@ -0,0 +1,390 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Tinyboard JS Çevirisi"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-02-20 20:19+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Tunay Uyar [email protected]"
"Language-Team: Türkçe"
"Language: TR"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8"
"Content-Transfer-Encoding: 8bit\n"
#: ../../../../js/style-select.js:40 ../../../../js/style-select.js:41
msgid "Style: "
msgstr "Stil: "
#: ../../../../js/hide-images.js:50 ../../../../js/upload-selection.js:51
#: ../../../../js/quick-post-controls.js:30 ../../../../js/hide-images.js:51
#: ../../../../js/quick-post-controls.js:32
#: ../../../../js/upload-selection.js:61
msgid "File"
msgstr "Dosya"
#: ../../../../js/hide-images.js:50 ../../../../js/hide-images.js:51
msgid "hide"
msgstr "gizle"
#: ../../../../js/hide-images.js:56 ../../../../js/hide-images.js:57
msgid "show"
msgstr "göster"
#: ../../../../js/toggle-locked-threads.js:39
#: ../../../../js/toggle-locked-threads.js:54
#: ../../../../js/toggle-locked-threads.js:40
#: ../../../../js/toggle-locked-threads.js:55
#: ../../../../js/toggle-locked-threads.js:41
#: ../../../../js/toggle-locked-threads.js:56
msgid "Show locked threads"
msgstr "Kilitli konuları göster"
#: ../../../../js/toggle-locked-threads.js:39
#: ../../../../js/toggle-locked-threads.js:54
#: ../../../../js/toggle-locked-threads.js:40
#: ../../../../js/toggle-locked-threads.js:55
#: ../../../../js/toggle-locked-threads.js:41
#: ../../../../js/toggle-locked-threads.js:56
msgid "Hide locked threads"
msgstr "Gizli konuları kilitle"
#: ../../../../js/upload-selection.js:32 ../../../../js/upload-selection.js:45
msgid "URL"
msgstr "URL"
#: ../../../../js/upload-selection.js:50 ../../../../js/upload-selection.js:60
msgid "Select"
msgstr "Seç"
#: ../../../../js/upload-selection.js:53 ../../../../js/upload-selection.js:63
msgid "Remote"
msgstr "Uzak"
#: ../../../../js/upload-selection.js:56 ../../../../js/upload-selection.js:66
msgid "Embed"
msgstr "Göm"
#: ../../../../js/upload-selection.js:59 ../../../../js/upload-selection.js:69
msgid "Oekaki"
msgstr "Oekaki"
#: ../../../../js/toggle-images.js:41 ../../../../js/toggle-images.js:42
msgid "hidden"
msgstr "gizli"
#: ../../../../js/toggle-images.js:57 ../../../../js/toggle-images.js:70
#: ../../../../js/toggle-images.js:58 ../../../../js/toggle-images.js:71
msgid "Show images"
msgstr "Resimleri göster"
#: ../../../../js/toggle-images.js:57 ../../../../js/toggle-images.js:70
#: ../../../../js/toggle-images.js:58 ../../../../js/toggle-images.js:71
msgid "Hide images"
msgstr "Resimleri gizle"
#: ../../../../js/quick-post-controls.js:27
#: ../../../../js/quick-post-controls.js:29
msgid "Password"
msgstr "Şifre"
#: ../../../../js/quick-post-controls.js:29
#: ../../../../js/quick-post-controls.js:31
msgid "Delete file only"
msgstr "Sadece dosyayı sil"
#: ../../../../js/quick-post-controls.js:31
#: ../../../../js/quick-post-controls.js:33
msgid "Delete"
msgstr "Sil"
#: ../../../../js/quick-post-controls.js:35
#: ../../../../js/quick-post-controls.js:37
msgid "Reason"
msgstr "Sebep"
#: ../../../../js/quick-post-controls.js:37
#: ../../../../js/quick-post-controls.js:39
msgid "Report"
msgstr "Şikayet et"
#: ../../../../js/expand.js:20 ../../../../js/expand.js:22
msgid "Click reply to view."
msgstr "Görmek için cevaplaya basın."
#: ../../../../js/expand.js:20 ../../../../js/expand.js:22
msgid "Click to expand"
msgstr "Genişletmek için tıklayın"
#: ../../../../js/expand.js:44 ../../../../js/expand.js:46
msgid "Hide expanded replies"
msgstr "Daralt"
#: ../../../../js/oekaki.js:10
msgid "Brush size"
msgstr "Fırça büyüklüğü"
#: ../../../../js/oekaki.js:10
msgid "Set text"
msgstr "Yazıyı ayarla"
#: ../../../../js/oekaki.js:10
msgid "Clear"
msgstr "Temizle"
#: ../../../../js/oekaki.js:10
msgid "Save"
msgstr "Kayıt et"
#: ../../../../js/oekaki.js:10
msgid "Load"
msgstr "Yükle"
#: ../../../../js/oekaki.js:11
msgid "Toggle eraser"
msgstr "Silgi"
#: ../../../../js/oekaki.js:11
msgid "Get color"
msgstr "Rengi seç"
#: ../../../../js/oekaki.js:11
msgid "Fill"
msgstr "Doldur"
#: ../../../../js/oekaki.js:12
msgid "Use oekaki instead of file?"
msgstr "Dosya yerine oekaki kullan"
#: ../../../../js/oekaki.js:21
msgid "Edit in oekaki"
msgstr "oekaki'de düzenle"
#: ../../../../js/oekaki.js:152
msgid "Enter some text"
msgstr "Bir yazı girin"
#: ../../../../js/oekaki.js:153
msgid "Enter font or leave empty"
msgstr "Font girin ya da boş bırakın"
#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:65
#: ../../../../js/forced-anon.js:69 ../../../../js/forced-anon.js:60
#: ../../../../js/forced-anon.js:66 ../../../../js/forced-anon.js:70
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:67
#: ../../../../js/forced-anon.js:71
msgid "Forced anonymity"
msgstr "Zorunlu anon"
#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:65
#: ../../../../js/forced-anon.js:60 ../../../../js/forced-anon.js:66
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:67
msgid "enabled"
msgstr "etkin"
#: ../../../../js/forced-anon.js:59 ../../../../js/forced-anon.js:69
#: ../../../../js/forced-anon.js:60 ../../../../js/forced-anon.js:70
#: ../../../../js/forced-anon.js:61 ../../../../js/forced-anon.js:71
msgid "disabled"
msgstr "etkin değil"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Sun"
msgstr "Paz"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Mon"
msgstr "Pzt"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Tue"
msgstr "Sa"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Wed"
msgstr "Çrş"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Thu"
msgstr "Per"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Fri"
msgstr "Cu"
#: ../../../../js/local-time.js:40 ../../../../js/local-time.js:41
msgid "Sat"
msgstr "Cts"
#: ../../../../js/catalog-link.js:21 ../../../../js/catalog-link.js:32
#: ../../../../js/catalog-link.js:40 ../../../../js/catalog-link.js:33
#: ../../../../js/catalog-link.js:44 ../../../../js/catalog-link.js:52
msgid "Catalog"
msgstr "Katalog"
#: ../../../../js/quick-reply.js:21 ../../../../js/quick-reply-old.js:21
#: ../../../../js/quick-reply-old.js:23
msgid "Submit"
msgstr "Gönder"
#: ../../../../js/quick-reply.js:31 ../../../../js/quick-reply-old.js:31
#: ../../../../js/quick-reply-old.js:33
msgid "Quick reply"
msgstr "Çabuk cevap"
#: ../../../../js/quick-reply.js:33 ../../../../js/quick-reply-old.js:33
#: ../../../../js/quick-reply-old.js:35
#, python-brace-format
msgid "Posting mode: Replying to <small>&gt;&gt;{0}</small>"
msgstr "Gönderme modu: <small>&gt;&gt;{0}</small> cevap veriyorsunuz"
#: ../../../../js/quick-reply.js:33 ../../../../js/quick-reply-old.js:33
#: ../../../../js/quick-reply-old.js:35
msgid "Return"
msgstr "Geri dön"
#: ../../../../js/expand-all-images.js:20
#: ../../../../js/expand-all-images.js:21
#: ../../../../js/expand-all-images.js:22
msgid "Expand all images"
msgstr "Bütün resimleri genişlet"
#: ../../../../templates/main.js:6
msgid "Hello!"
msgstr "Merhaba!"
#: ../../../../templates/main.js:18
#, python-brace-format
msgid "{0} users"
msgstr "{0} kullanıcı"
#: ../../../../templates/themes/ukko/ukko.js:28
#: ../../../../templates/themes/ukko/ukko.js:39
#: ../../../../templates/themes/ukko/ukko.js:29
#: ../../../../templates/themes/ukko/ukko.js:40
msgid "(hide threads from this board)"
msgstr "(bu tahtadan konuları gizle)"
#: ../../../../templates/themes/ukko/ukko.js:32
#: ../../../../templates/themes/ukko/ukko.js:44
#: ../../../../templates/themes/ukko/ukko.js:33
#: ../../../../templates/themes/ukko/ukko.js:45
msgid "(show threads from this board)"
msgstr "(bu tahtadan konuları göster)"
#: ../../../../templates/themes/ukko/ukko.js:57
#: ../../../../templates/themes/ukko/ukko.js:58
msgid "No more threads to display"
msgstr "Gösterecek başka konu kalmadı"
#: ../../../../templates/themes/ukko/ukko.js:79
#: ../../../../templates/themes/ukko/ukko.js:80
msgid "Loading..."
msgstr "Yükleniyor..."
#: ../../../../js/download-original.js:32
#: ../../../../js/download-original.js:33
msgid "Save as original filename"
msgstr "Dosya adıyla kaydet"
#: ../../../../js/ajax-post-controls.js:43
msgid "Reported post(s)."
msgstr "Şikayet edilen konu/konular."
#: ../../../../js/ajax-post-controls.js:53
msgid "An unknown error occured!"
msgstr "FATAL ÖRÖR"
#: ../../../../js/ajax-post-controls.js:60
msgid "Something went wrong... An unknown error occured!"
msgstr "Bilemediğimiz çok fena şeyler oldu!"
#: ../../../../js/ajax-post-controls.js:68
msgid "Working..."
msgstr "Yapıyoruz..."
#: ../../../../js/ajax.js:42 ../../../../js/ajax.js:45
msgid "Posting... (#%)"
msgstr "Gönderiliyor... (#%)"
#: ../../../../js/ajax.js:104 ../../../../js/ajax.js:109
msgid "Posted..."
msgstr "Gönderildi..."
#: ../../../../js/ajax.js:106 ../../../../js/ajax.js:111
msgid "An unknown error occured when posting!"
msgstr "Hata... çok... fena... "
#: ../../../../js/ajax.js:130 ../../../../js/ajax.js:135
msgid "Posting..."
msgstr "Gönderiliyor..."
#: ../../../../js/quick-reply.js:223 ../../../../js/quick-reply.js:224
msgid "Upload URL"
msgstr "Yükleme linki"
#: ../../../../js/quick-reply.js:266 ../../../../js/quick-reply.js:267
msgid "Spoiler Image"
msgstr "Spoiler"
#: ../../../../js/quick-reply.js:277 ../../../../js/quick-reply.js:278
msgid "Comment"
msgstr "Yorum"
#: ../../../../js/quick-reply.js:285 ../../../../js/quick-reply.js:406
#: ../../../../js/quick-reply.js:286 ../../../../js/quick-reply.js:407
msgid "Quick Reply"
msgstr "Çabuk Cevaplama"
#: ../../../../js/watch.js:249 ../../../../js/watch.js:250
#: ../../../../js/watch.js:288 ../../../../js/watch.js:289
#: ../../../../js/watch.js:330 ../../../../js/watch.js:331
msgid "Stop watching this thread"
msgstr "Bu konuyu takip etmeyi bırak"
#: ../../../../js/watch.js:249 ../../../../js/watch.js:250
#: ../../../../js/watch.js:288 ../../../../js/watch.js:289
#: ../../../../js/watch.js:330 ../../../../js/watch.js:331
msgid "Watch this thread"
msgstr "Bu konuyu takip et"
#: ../../../../js/watch.js:260 ../../../../js/watch.js:261
#: ../../../../js/watch.js:269 ../../../../js/watch.js:299
#: ../../../../js/watch.js:300 ../../../../js/watch.js:308
#: ../../../../js/watch.js:341 ../../../../js/watch.js:342
#: ../../../../js/watch.js:350
msgid "Unpin this board"
msgstr "Bu tahtanın iğnesini kaldır"
#: ../../../../js/watch.js:260 ../../../../js/watch.js:261
#: ../../../../js/watch.js:269 ../../../../js/watch.js:299
#: ../../../../js/watch.js:300 ../../../../js/watch.js:308
#: ../../../../js/watch.js:341 ../../../../js/watch.js:342
#: ../../../../js/watch.js:350
msgid "Pin this board"
msgstr "Bu tahtayı iğnele"
#: ../../../../js/watch.js:262 ../../../../js/watch.js:267
#: ../../../../js/watch.js:268 ../../../../js/watch.js:301
#: ../../../../js/watch.js:306 ../../../../js/watch.js:307
#: ../../../../js/watch.js:343 ../../../../js/watch.js:348
#: ../../../../js/watch.js:349
msgid "Stop watching this board"
msgstr "Bu tahtayı izlemeyi bırak"
#: ../../../../js/watch.js:262 ../../../../js/watch.js:267
#: ../../../../js/watch.js:268 ../../../../js/watch.js:301
#: ../../../../js/watch.js:306 ../../../../js/watch.js:307
#: ../../../../js/watch.js:343 ../../../../js/watch.js:348
#: ../../../../js/watch.js:349
msgid "Watch this board"
msgstr "Bu tahtayı izle"
#: ../../../../js/wpaint.js:113
msgid "Click on any image on this site to load it into oekaki applet"
msgstr "Oekaki'ye atmak için website üzerindeki herhangi bir resme tıklayın"

BIN
inc/locale/tr_TR/LC_MESSAGES/tinyboard.mo

Binary file not shown.

1844
inc/locale/tr_TR/LC_MESSAGES/tinyboard.po

File diff suppressed because it is too large

3
install.php

@ -1,7 +1,7 @@
<?php
// Installation/upgrade file
define('VERSION', 'v0.9.6-dev-22 + <a href="https://int.vichan.net/devel/">vichan-devel-4.4.94</a>');
define('VERSION', 'v0.9.6-dev-22 + <a href="https://int.vichan.net/devel/">vichan-devel-4.4.95</a>');
require 'inc/functions.php';
@ -502,6 +502,7 @@ if (file_exists($config['has_installed'])) {
case 'v0.9.6-dev-22 + <a href="https://int.vichan.net/devel/">vichan-devel-4.4.91</a>':
case 'v0.9.6-dev-22 + <a href="https://int.vichan.net/devel/">vichan-devel-4.4.92</a>':
case 'v0.9.6-dev-22 + <a href="https://int.vichan.net/devel/">vichan-devel-4.4.93</a>':
case 'v0.9.6-dev-22 + <a href="https://int.vichan.net/devel/">vichan-devel-4.4.94</a>':
case false:
// Update version number
file_write($config['has_installed'], VERSION);

29
js/local-time.js

@ -8,6 +8,7 @@
*
* Usage:
* // $config['additional_javascript'][] = 'js/jquery.min.js';
* // $config['additional_javascript'][] = 'js/strftime.min.js';
* $config['additional_javascript'][] = 'js/local-time.js';
*
*/
@ -24,6 +25,27 @@ onready(function(){
return [Math.pow(10, count - num.toString().length), num].join('').substr(1);
};
var datelocale =
{ days: [_('Sunday'), _('Monday'), _('Tuesday'), _('Wednesday'), _('Thursday'), _('Friday'), _('Saturday')]
, shortDays: [_("Sun"), _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat")]
, months: [_('January'), _('February'), _('March'), _('April'), _('May'), _('June'), _('July'), _('August'), _('September'), _('October'), _('November'), _('December')]
, shortMonths: [_('Jan'), _('Feb'), _('Mar'), _('Apr'), _('May'), _('Jun'), _('Jul'), _('Aug'), _('Sep'), _('Oct'), _('Nov'), _('Dec')]
, AM: _('AM')
, PM: _('PM')
, am: _('am')
, pm: _('pm')
};
var dateformat = (typeof strftime === 'undefined') ? function(t) {
return zeropad(t.getMonth() + 1, 2) + "/" + zeropad(t.getDate(), 2) + "/" + t.getFullYear().toString().substring(2) +
" (" + [_("Sun"), _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun")][t.getDay()] + ") " +
// time
zeropad(t.getHours(), 2) + ":" + zeropad(t.getMinutes(), 2) + ":" + zeropad(t.getSeconds(), 2);
} : function(t) {
// post_date is defined in templates/main.js
return strftime(window.post_date, t, datelocale);
};
var do_localtime = function(elem) {
var times = elem.getElementsByTagName('time');
@ -35,12 +57,7 @@ onready(function(){
times[i].setAttribute('data-local', 'true');
times[i].innerHTML =
// date
zeropad(t.getMonth() + 1, 2) + "/" + zeropad(t.getDate(), 2) + "/" + t.getFullYear().toString().substring(2) +
" (" + [_("Sun"), _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun")][t.getDay()] + ") " +
// time
zeropad(t.getHours(), 2) + ":" + zeropad(t.getMinutes(), 2) + ":" + zeropad(t.getSeconds(), 2);
times[i].innerHTML = dateformat(t);
};
};

3
js/post-hover.js

@ -32,11 +32,8 @@ onready(function(){
}
var board = $(this);
var i = 0;
while (board.data('board') === undefined) {
board = board.parent();
i++;
if (i >= 10) return;
}
var threadid;
if ($link.is('[data-thread]')) threadid = 0;

8
js/strftime.min.js

@ -0,0 +1,8 @@
(function(){function i(c,a,b){return g(c,a,b)}function g(c,a,b,j){j=j||{};a&&!n(a)&&(b=a,a=void 0);a=a||new Date;b=b||o;b.formats=b.formats||{};var i=a.getTime(),h=j.timezone,e=typeof h;if(j.utc||e=="number"||e=="string")a=p(a);if(h){if(e=="string")var k=h[0]=="-"?-1:1,q=parseInt(h.slice(1,3),10),r=parseInt(h.slice(3,5),10),h=k*60*q+r;e&&(a=new Date(a.getTime()+h*6E4))}return c.replace(/%([-_0]?.)/g,function(c,e){var d;if(e.length==2){d=e[0];if(d=="-")d="";else if(d=="_")d=" ";else if(d=="0")d="0";
else return c;e=e[1]}switch(e){case "A":return b.days[a.getDay()];case "a":return b.shortDays[a.getDay()];case "B":return b.months[a.getMonth()];case "b":return b.shortMonths[a.getMonth()];case "C":return f(Math.floor(a.getFullYear()/100),d);case "D":return g(b.formats.D||"%m/%d/%y",a,b);case "d":return f(a.getDate(),d);case "e":return a.getDate();case "F":return g(b.formats.F||"%Y-%m-%d",a,b);case "H":return f(a.getHours(),d);case "h":return b.shortMonths[a.getMonth()];case "I":return f(l(a),d);
case "j":return d=new Date(a.getFullYear(),0,1),d=Math.ceil((a.getTime()-d.getTime())/864E5),f(d,3);case "k":return f(a.getHours(),d==null?" ":d);case "L":return f(Math.floor(i%1E3),3);case "l":return f(l(a),d==null?" ":d);case "M":return f(a.getMinutes(),d);case "m":return f(a.getMonth()+1,d);case "n":return"\n";case "o":return String(a.getDate())+s(a.getDate());case "P":return a.getHours()<12?b.am:b.pm;case "p":return a.getHours()<12?b.AM:b.PM;case "R":return g(b.formats.R||"%H:%M",a,b);case "r":return g(b.formats.r||
"%I:%M:%S %p",a,b);case "S":return f(a.getSeconds(),d);case "s":return Math.floor(i/1E3);case "T":return g(b.formats.T||"%H:%M:%S",a,b);case "t":return"\t";case "U":return f(m(a,"sunday"),d);case "u":return d=a.getDay(),d==0?7:d;case "v":return g(b.formats.v||"%e-%b-%Y",a,b);case "W":return f(m(a,"monday"),d);case "w":return a.getDay();case "Y":return a.getFullYear();case "y":return d=String(a.getFullYear()),d.slice(d.length-2);case "Z":return j.utc?"GMT":(d=a.toString().match(/\((\w+)\)/))&&d[1]||
"";case "z":return j.utc?"+0000":(d=typeof h=="number"?h:-a.getTimezoneOffset(),(d<0?"-":"+")+f(Math.abs(d/60))+f(d%60));default:return e}})}function p(c){var a=(c.getTimezoneOffset()||0)*6E4;return new Date(c.getTime()+a)}function n(c){for(var a=0,b=k.length,a=0;a<b;++a)if(typeof c[k[a]]!="function")return!1;return!0}function f(c,a,b){typeof a==="number"&&(b=a,a="0");a==null&&(a="0");b=b||2;c=String(c);if(a)for(;c.length<b;)c=a+c;return c}function l(c){c=c.getHours();c==0?c=12:c>12&&(c-=12);return c}
function s(c){var a=c%10;c%=100;if(c>=11&&c<=13||a===0||a>=4)return"th";switch(a){case 1:return"st";case 2:return"nd";case 3:return"rd"}}function m(c,a){var a=a||"sunday",b=c.getDay();a=="monday"&&(b==0?b=6:b--);var e=new Date(c.getFullYear(),0,1);return Math.floor(((c-e)/864E5+7-b)/7)}var e;e=typeof module!=="undefined"?module.exports=i:function(){return this||(0,eval)("this")}();var o={days:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),shortDays:"Sun Mon Tue Wed Thu Fri Sat".split(" "),
months:"January February March April May June July August September October November December".split(" "),shortMonths:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),AM:"AM",PM:"PM",am:"am",pm:"pm"};e.strftime=i;e.strftimeTZ=i.strftimeTZ=function(c,a,b,e){if((typeof b=="number"||typeof b=="string")&&e==null)e=b,b=void 0;return g(c,a,b,{timezone:e})};e.strftimeUTC=i.strftimeUTC=function(c,a,b){return g(c,a,b,{utc:!0})};e.localizedStrftime=i.localizedStrftime=function(c){return function(a,
b){return g(a,b,c)}};var k=["getTime","getTimezoneOffset","getDay","getDate","getMonth","getFullYear","getYear","getHours","getMinutes","getSeconds"]})();

2
js/wPaint

@ -1 +1 @@
Subproject commit ae15131585dd7c40a61d440e5a3740b5fc68780f
Subproject commit 2c272dffca0f3d7b7163bd82ba15629f54409278

22
post.php

@ -447,13 +447,25 @@ if (isset($_POST['delete'])) {
}
if ($config['country_flags']) {
if (!geoip_db_avail(GEOIP_COUNTRY_EDITION)) {
error('GeoIP not available: ' . geoip_db_filename(GEOIP_COUNTRY_EDITION));
require 'inc/lib/geoip/geoip.inc';
$gi=geoip\geoip_open('inc/lib/geoip/GeoIPv6.dat', GEOIP_STANDARD);
function ipv4to6($ip) {
if (strpos($ip, ':') !== false) {
if (strpos($ip, '.') > 0)
$ip = substr($ip, strrpos($ip, ':')+1);
else return $ip; //native ipv6
}
$iparr = array_pad(explode('.', $ip), 4, 0);
$part7 = base_convert(($iparr[0] * 256) + $iparr[1], 10, 16);
$part8 = base_convert(($iparr[2] * 256) + $iparr[3], 10, 16);
return '::ffff:'.$part7.':'.$part8;
}
if ($country_code = @geoip_country_code_by_name($_SERVER['REMOTE_ADDR'])) {
if ($country_code = geoip\geoip_country_code_by_addr_v6($gi, ipv4to6($_SERVER['REMOTE_ADDR']))) {
if (!in_array(strtolower($country_code), array('eu', 'ap', 'o1', 'a1', 'a2')))
$post['body'] .= "\n<tinyboard flag>" . strtolower($country_code) . "</tinyboard>" .
"\n<tinyboard flag alt>" . @geoip_country_name_by_name($_SERVER['REMOTE_ADDR']) . "</tinyboard>";
$post['body'] .= "\n<tinyboard flag>".strtolower($country_code)."</tinyboard>".
"\n<tinyboard flag alt>".geoip\geoip_country_name_by_addr_v6($gi, ipv4to6($_SERVER['REMOTE_ADDR']))."</tinyboard>";
}
}

BIN
static/blank.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

BIN
static/flags/a1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

BIN
static/flags/a2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

BIN
static/flags/ac.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

BIN
static/flags/ap.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

BIN
static/flags/aq.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

BIN
static/flags/bl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

BIN
static/flags/bq.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
static/flags/bu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

BIN
static/flags/cat.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

BIN
static/flags/cp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

BIN
static/flags/cw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

BIN
static/flags/dg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 B

BIN
static/flags/ea.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

BIN
static/flags/eu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 B

257
static/flags/flags.css

@ -0,0 +1,257 @@
.flag {
width: 16px;
height: 11px;
background:url(flags.png) no-repeat
}
.flag.flag-ad {background-position: -16px 0}
.flag.flag-ae {background-position: -32px 0}
.flag.flag-af {background-position: -48px 0}
.flag.flag-ag {background-position: -64px 0}
.flag.flag-ai {background-position: -80px 0}
.flag.flag-al {background-position: -96px 0}
.flag.flag-am {background-position: -112px 0}
.flag.flag-an {background-position: -128px 0}
.flag.flag-ao {background-position: -144px 0}
.flag.flag-ar {background-position: -160px 0}
.flag.flag-as {background-position: -176px 0}
.flag.flag-at {background-position: -192px 0}
.flag.flag-au {background-position: -208px 0}
.flag.flag-aw {background-position: -224px 0}
.flag.flag-az {background-position: -240px 0}
.flag.flag-ba {background-position: 0 -11px}
.flag.flag-bb {background-position: -16px -11px}
.flag.flag-bd {background-position: -32px -11px}
.flag.flag-be {background-position: -48px -11px}
.flag.flag-bf {background-position: -64px -11px}
.flag.flag-bg {background-position: -80px -11px}
.flag.flag-bh {background-position: -96px -11px}
.flag.flag-bi {background-position: -112px -11px}
.flag.flag-bj {background-position: -128px -11px}
.flag.flag-bm {background-position: -144px -11px}
.flag.flag-bn {background-position: -160px -11px}
.flag.flag-bo {background-position: -176px -11px}
.flag.flag-br {background-position: -192px -11px}
.flag.flag-bs {background-position: -208px -11px}
.flag.flag-bt {background-position: -224px -11px}
.flag.flag-bv {background-position: -240px -11px}
.flag.flag-bw {background-position: 0 -22px}
.flag.flag-by {background-position: -16px -22px}
.flag.flag-bz {background-position: -32px -22px}
.flag.flag-ca {background-position: -48px -22px}
.flag.flag-catalonia {background-position: -64px -22px}
.flag.flag-cd {background-position: -80px -22px}
.flag.flag-cf {background-position: -96px -22px}
.flag.flag-cg {background-position: -112px -22px}
.flag.flag-ch {background-position: -128px -22px}
.flag.flag-ci {background-position: -144px -22px}
.flag.flag-ck {background-position: -160px -22px}
.flag.flag-cl {background-position: -176px -22px}
.flag.flag-cm {background-position: -192px -22px}
.flag.flag-cn {background-position: -208px -22px}
.flag.flag-co {background-position: -224px -22px}
.flag.flag-cr {background-position: -240px -22px}
.flag.flag-cu {background-position: 0 -33px}
.flag.flag-cv {background-position: -16px -33px}
.flag.flag-cw {background-position: -32px -33px}
.flag.flag-cy {background-position: -48px -33px}
.flag.flag-cz {background-position: -64px -33px}
.flag.flag-de {background-position: -80px -33px}
.flag.flag-dj {background-position: -96px -33px}
.flag.flag-dk {background-position: -112px -33px}
.flag.flag-dm {background-position: -128px -33px}
.flag.flag-do {background-position: -144px -33px}
.flag.flag-dz {background-position: -160px -33px}
.flag.flag-ec {background-position: -176px -33px}
.flag.flag-ee {background-position: -192px -33px}
.flag.flag-eg {background-position: -208px -33px}
.flag.flag-eh {background-position: -224px -33px}
.flag.flag-england {background-position: -240px -33px}
.flag.flag-er {background-position: 0 -44px}
.flag.flag-es {background-position: -16px -44px}
.flag.flag-et {background-position: -32px -44px}
.flag.flag-eu {background-position: -48px -44px}
.flag.flag-fi {background-position: -64px -44px}
.flag.flag-fj {background-position: -80px -44px}
.flag.flag-fk {background-position: -96px -44px}
.flag.flag-fm {background-position: -112px -44px}
.flag.flag-fo {background-position: -128px -44px}
.flag.flag-fr {background-position: -144px -44px}
.flag.flag-ga {background-position: -160px -44px}
.flag.flag-gb {background-position: -176px -44px}
.flag.flag-gd {background-position: -192px -44px}
.flag.flag-ge {background-position: -208px -44px}
.flag.flag-gf {background-position: -224px -44px}
.flag.flag-gg {background-position: -240px -44px}
.flag.flag-gh {background-position: 0 -55px}
.flag.flag-gi {background-position: -16px -55px}
.flag.flag-gl {background-position: -32px -55px}
.flag.flag-gm {background-position: -48px -55px}
.flag.flag-gn {background-position: -64px -55px}
.flag.flag-gp {background-position: -80px -55px}
.flag.flag-gq {background-position: -96px -55px}
.flag.flag-gr {background-position: -112px -55px}
.flag.flag-gs {background-position: -128px -55px}
.flag.flag-gt {background-position: -144px -55px}
.flag.flag-gu {background-position: -160px -55px}
.flag.flag-gw {background-position: -176px -55px}
.flag.flag-gy {background-position: -192px -55px}
.flag.flag-hk {background-position: -208px -55px}
.flag.flag-hm {background-position: -224px -55px}
.flag.flag-hn {background-position: -240px -55px}
.flag.flag-hr {background-position: 0 -66px}
.flag.flag-ht {background-position: -16px -66px}
.flag.flag-hu {background-position: -32px -66px}
.flag.flag-ic {background-position: -48px -66px}
.flag.flag-id {background-position: -64px -66px}
.flag.flag-ie {background-position: -80px -66px}
.flag.flag-il {background-position: -96px -66px}
.flag.flag-im {background-position: -112px -66px}
.flag.flag-in {background-position: -128px -66px}
.flag.flag-io {background-position: -144px -66px}
.flag.flag-iq {background-position: -160px -66px}
.flag.flag-ir {background-position: -176px -66px}
.flag.flag-is {background-position: -192px -66px}
.flag.flag-it {background-position: -208px -66px}
.flag.flag-je {background-position: -224px -66px}
.flag.flag-jm {background-position: -240px -66px}
.flag.flag-jo {background-position: 0 -77px}
.flag.flag-jp {background-position: -16px -77px}
.flag.flag-ke {background-position: -32px -77px}
.flag.flag-kg {background-position: -48px -77px}
.flag.flag-kh {background-position: -64px -77px}
.flag.flag-ki {background-position: -80px -77px}
.flag.flag-km {background-position: -96px -77px}
.flag.flag-kn {background-position: -112px -77px}
.flag.flag-kp {background-position: -128px -77px}
.flag.flag-kr {background-position: -144px -77px}
.flag.flag-kurdistan {background-position: -160px -77px}
.flag.flag-kw {background-position: -176px -77px}
.flag.flag-ky {background-position: -192px -77px}
.flag.flag-kz {background-position: -208px -77px}
.flag.flag-la {background-position: -224px -77px}
.flag.flag-lb {background-position: -240px -77px}
.flag.flag-lc {background-position: 0 -88px}
.flag.flag-li {background-position: -16px -88px}
.flag.flag-lk {background-position: -32px -88px}
.flag.flag-lr {background-position: -48px -88px}
.flag.flag-ls {background-position: -64px -88px}
.flag.flag-lt {background-position: -80px -88px}
.flag.flag-lu {background-position: -96px -88px}
.flag.flag-lv {background-position: -112px -88px}
.flag.flag-ly {background-position: -128px -88px}
.flag.flag-ma {background-position: -144px -88px}
.flag.flag-mc {background-position: -160px -88px}
.flag.flag-md {background-position: -176px -88px}
.flag.flag-me {background-position: -192px -88px}
.flag.flag-mg {background-position: -208px -88px}
.flag.flag-mh {background-position: -224px -88px}
.flag.flag-mk {background-position: -240px -88px}
.flag.flag-ml {background-position: 0 -99px}
.flag.flag-mm {background-position: -16px -99px}
.flag.flag-mn {background-position: -32px -99px}
.flag.flag-mo {background-position: -48px -99px}
.flag.flag-mp {background-position: -64px -99px}
.flag.flag-mq {background-position: -80px -99px}
.flag.flag-mr {background-position: -96px -99px}
.flag.flag-ms {background-position: -112px -99px}
.flag.flag-mt {background-position: -128px -99px}
.flag.flag-mu {background-position: -144px -99px}
.flag.flag-mv {background-position: -160px -99px}
.flag.flag-mw {background-position: -176px -99px}
.flag.flag-mx {background-position: -192px -99px}
.flag.flag-my {background-position: -208px -99px}
.flag.flag-mz {background-position: -224px -99px}
.flag.flag-na {background-position: -240px -99px}
.flag.flag-nc {background-position: 0 -110px}
.flag.flag-ne {background-position: -16px -110px}
.flag.flag-nf {background-position: -32px -110px}
.flag.flag-ng {background-position: -48px -110px}
.flag.flag-ni {background-position: -64px -110px}
.flag.flag-nl {background-position: -80px -110px}
.flag.flag-no {background-position: -96px -110px}
.flag.flag-np {background-position: -112px -110px}
.flag.flag-nr {background-position: -128px -110px}
.flag.flag-nu {background-position: -144px -110px}
.flag.flag-nz {background-position: -160px -110px}
.flag.flag-om {background-position: -176px -110px}
.flag.flag-pa {background-position: -192px -110px}
.flag.flag-pe {background-position: -208px -110px}
.flag.flag-pf {background-position: -224px -110px}
.flag.flag-pg {background-position: -240px -110px}
.flag.flag-ph {background-position: 0 -121px}
.flag.flag-pk {background-position: -16px -121px}
.flag.flag-pl {background-position: -32px -121px}
.flag.flag-pm {background-position: -48px -121px}
.flag.flag-pn {background-position: -64px -121px}
.flag.flag-pr {background-position: -80px -121px}
.flag.flag-ps {background-position: -96px -121px}
.flag.flag-pt {background-position: -112px -121px}
.flag.flag-pw {background-position: -128px -121px}
.flag.flag-py {background-position: -144px -121px}
.flag.flag-qa {background-position: -160px -121px}
.flag.flag-re {background-position: -176px -121px}
.flag.flag-ro {background-position: -192px -121px}
.flag.flag-rs {background-position: -208px -121px}
.flag.flag-ru {background-position: -224px -121px}
.flag.flag-rw {background-position: -240px -121px}
.flag.flag-sa {background-position: 0 -132px}
.flag.flag-sb {background-position: -16px -132px}
.flag.flag-sc {background-position: -32px -132px}
.flag.flag-scotland {background-position: -48px -132px}
.flag.flag-sd {background-position: -64px -132px}
.flag.flag-se {background-position: -80px -132px}
.flag.flag-sg {background-position: -96px -132px}
.flag.flag-sh {background-position: -112px -132px}
.flag.flag-si {background-position: -128px -132px}
.flag.flag-sk {background-position: -144px -132px}
.flag.flag-sl {background-position: -160px -132px}
.flag.flag-sm {background-position: -176px -132px}
.flag.flag-sn {background-position: -192px -132px}
.flag.flag-so {background-position: -208px -132px}
.flag.flag-somaliland {background-position: -224px -132px}
.flag.flag-sr {background-position: -240px -132px}
.flag.flag-ss {background-position: 0 -143px}
.flag.flag-st {background-position: -16px -143px}
.flag.flag-sv {background-position: -32px -143px}
.flag.flag-sx {background-position: -48px -143px}
.flag.flag-sy {background-position: -64px -143px}
.flag.flag-sz {background-position: -80px -143px}
.flag.flag-tc {background-position: -96px -143px}
.flag.flag-td {background-position: -112px -143px}
.flag.flag-tf {background-position: -128px -143px}
.flag.flag-tg {background-position: -144px -143px}
.flag.flag-th {background-position: -160px -143px}
.flag.flag-tj {background-position: -176px -143px}
.flag.flag-tk {background-position: -192px -143px}
.flag.flag-tl {background-position: -208px -143px}
.flag.flag-tm {background-position: -224px -143px}
.flag.flag-tn {background-position: -240px -143px}
.flag.flag-to {background-position: 0 -154px}
.flag.flag-tr {background-position: -16px -154px}
.flag.flag-tt {background-position: -32px -154px}
.flag.flag-tv {background-position: -48px -154px}
.flag.flag-tw {background-position: -64px -154px}
.flag.flag-tz {background-position: -80px -154px}
.flag.flag-ua {background-position: -96px -154px}
.flag.flag-ug {background-position: -112px -154px}
.flag.flag-um {background-position: -128px -154px}
.flag.flag-us {background-position: -144px -154px}
.flag.flag-uy {background-position: -160px -154px}
.flag.flag-uz {background-position: -176px -154px}
.flag.flag-va {background-position: -192px -154px}
.flag.flag-vc {background-position: -208px -154px}
.flag.flag-ve {background-position: -224px -154px}
.flag.flag-vg {background-position: -240px -154px}
.flag.flag-vi {background-position: 0 -165px}
.flag.flag-vn {background-position: -16px -165px}
.flag.flag-vu {background-position: -32px -165px}
.flag.flag-wales {background-position: -48px -165px}
.flag.flag-wf {background-position: -64px -165px}
.flag.flag-ws {background-position: -80px -165px}
.flag.flag-ye {background-position: -96px -165px}
.flag.flag-yt {background-position: -112px -165px}
.flag.flag-za {background-position: -128px -165px}
.flag.flag-zanzibar {background-position: -144px -165px}
.flag.flag-zm {background-position: -160px -165px}
.flag.flag-zw {background-position: -176px -165px}

BIN
static/flags/flags.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
static/flags/fx.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

BIN
static/flags/gf.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

BIN
static/flags/gg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 B

BIN
static/flags/hm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

BIN
static/flags/ic.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

BIN
static/flags/im.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

BIN
static/flags/je.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 B

BIN
static/flags/me.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 B

BIN
static/flags/mf.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

BIN
static/flags/nt.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

BIN
static/flags/o1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

BIN
static/flags/re.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

BIN
static/flags/rs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

BIN
static/flags/sf.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

BIN
static/flags/sj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

BIN
static/flags/ss.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

BIN
static/flags/su.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

BIN
static/flags/sx.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

BIN
static/flags/ta.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

BIN
static/flags/ti.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 B

BIN
static/flags/tp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

BIN
static/flags/uk.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

BIN
static/flags/xx.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

BIN
static/flags/yu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

BIN
static/flags/zr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

378
stylesheets/caffe.css

@ -0,0 +1,378 @@
/*Caffe style*/
.floatiframe{
float:left;
padding:10px;
}
div.boardlist {
color: #261712;
font-size: 12pt;
margin-top: 0px;
background-color: #261712;
border: 1px solid #39241d;
margin-top: 0;
padding: 0px;
position: fixed;
top: 0;
}
div.boardlist.bottom {
margin-top: 20px;
position: inherit;
background:inherit;
}
.return1 a{
float:left;
font-size: inherit;
}
div.blotter {
background: none repeat scroll 0 0 rgba(88, 53, 41, 0.1);
border: 1px solid #39241d;
border-radius: 5px 5px 5px 5px;
clear: both;
color: #8f6658;
font-weight: bold;
margin-bottom: 0.5em;
padding: 2px;
text-align: center;
}
div.title {
margin-bottom: 0px;
clear: both;
color: #39241d;
font-size: 2em;
font-weight: bold;
}
div.ban h2 {
border-radius: 6px 6px 6px 6px;
background: none repeat scroll 0 0 #261712;
color: #8f6658;
}
div.ban {
background: none repeat scroll 0 0 #261712;
border: 1px solid #8f6658;
margin: 30px auto;
max-width: 700px;
border-radius: 7px;
}
form {
margin-bottom: 0px;
}
form {
margin-bottom: 0px;
}
span.heading {
color: #FFAB3F;
display: block;
font-size: 12pt;
font-weight: bold;
}
textarea#body{
height: 136px;
width: 518px;
}
html, body {
background:#261712 url('img/caffe_bg.png') repeat fixed center;
color: #8e6152;
font-family: "Trebuchet MS",Trebuchet,serif;
font-size: 12pt;
text-shadow: 0 0 0.9em #000000;
}
a {
color: #755144;
}
a:hover {
color: #a47a6b;
}
.adminbar {
clear:both;
float:right;
font-size: .8em;
}
.desktop-style div.boardlist:nth-child(1):hover{
background-color: #261712;
}
.adminbar a {
font-weight: bold;
}
.logo {
clear:both;
text-align:left;
font-size:2em;
font-weight: bold;
color:#a47a6b;
/*width:100%;*/
}
.theader, .passvalid {
text-align:center;
padding:2px;
color:#39241d;
clear: both;
font-weight: bold;
margin-bottom: .5em;
border: solid 1px #a47a6b;
-moz-border-radius: 5px;
border-radius: 5px;
}
.postarea {
}
.rules {
font-size:0.7em;
}
.postblock {
background:transparent;
color:#a47a6b;
font-weight:bold;
}
.footer {
text-align:center;
font-size:12px;
font-family:serif;
margin: 2em 0 0 0;
}
.dellist {
font-weight: bold;
text-align:center;
}
.delbuttons {
text-align:center;
padding-bottom:4px;
}
.managehead {
background:#8f6658;
color:#39241d;
padding:0px;
}
.postlists {
background:#8f6658;
width:100%;
padding:0px;
color:#a47a6b;
}
.row1 {
background:#8f6658;
color:#8f6658;
}
.row2 {
background:#8f6658;
color:#8f6658;
}
.unkfunc {
background:inherit;
color:#8e6152;
}
.reflink {
font-size: .8em;
font-weight: bold;
}
.filesize {
text-decoration:none;
color: #8e6152;
font-size: .8em;
}
.filetitle {
background:inherit;
font-size:1.2em;
color:#8f6658;
font-weight:bold;
}
.postername {
color:#8f6658;
font-weight:bold;
}
.postertrip {
color:#FF3300;
}
.oldpost {
color:#8f6658;
font-weight:bold;
}
.omittedposts {
color:#a47a6b;
}
.reply {
background:#a47a6b url('img/caffe_reply.png') repeat center;
border: solid 1px #a47a6b;
padding: 0;
margin: 0;
-moz-border-radius: 5px;
border-radius: 5px;
}
blockquote {
margin: .5em .5em .5em 1em;
}
blockquote p {
margin: 0;
padding: 0;
}
.reply blockquote {
margin: .5em;
}
.doubledash {
display: none;
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
font-size: 1.2em;
color:#002244;
font-weight:bold;
}
.commentpostername {
color:#8f6658;
font-weight:800;
}
.thumbnailmsg {
font-size: .8em;
color:#8e6152;
}
hr {
border-style: solid none none none;
border-width: 1px;
border-color: #8f6658;
}
table {
border-style: none;
}
table td {
border-style: none;
}
.nothumb {
background-color: #8e6152;
border-style: dotted;
margin: .3em .5em;
}
.abbrev {
color:#8e6152;
}
.highlight {
background:#261712;
color:#8e6152;
border: 2px dashed #EE6600;
}
div.banner, div.banner a {
color: inherit;
}
div.banner {
background-color: inherit;
}
form table tr th {
background: none;
}
div.post.reply {
background:#922a01 url('img/caffe_reply2.png') repeat fixed center;
color: #8e6152;
border: 1px solid rgba(88, 53, 41, 0.6);
border-radius: 5px 5px 5px 5px;
}
div.title,h1 {
color: #8e6152;
font-size: 32px;
font-weight: bold;
}
div.title p {
font-size: 26px;
margin: 0;
}
h1 {
letter-spacing: inherit;
}
.pages {
background: rgba(88, 53, 41, 0.32) !important;
width:100%;
color: #8e6152 !important;
}
div.banner {
background: none repeat scroll 0 0 #251611;
border: 1px solid #2c1b16;
clear: both;
color: #8e6152;
font-weight: bold;
margin-bottom: 0.5em;
padding: 2px;
text-align: center;
}
form table tr td div {
padding-left: 0px;
}
.recaptchatable .recaptcha_image_cell {
padding: 0px !important;
}
div.post.reply.highlighted {
background: rgba(88, 53, 41, 0.3);
}
#quick-reply table {
border-collapse: collapse;
background:#000 url('img/caffe_reply2.png') repeat fixed center;
border-style: solid;
border-width: 1px;
border-color: rgba(88, 53, 41, 0.6);
margin: 0;
width: 100%;
}
#attention_bar:hover {
background-color: rgba(88, 53, 41, 0.3);
}
p.intro a.email span.name {
color: #8e6152;
}
a.post_no:hover {
color: #755144;
}
div.post.reply div.body a {
color: #755144;
}
#quick-reply table {
border-collapse: collapse;
background:#000 url('img/caffe_reply2.png') repeat fixed center;
}
a, a:visited {
text-decoration: underline;
color: #755144;
}
.cb-menuitem span {
padding: 5px;
display: table-cell;
text-align: left;
border-top: 1px solid rgba(0, 0, 0, 1);
}
div.boardlist {
color: rgba(0, 0, 0, 1);
font-size: 9pt;
}

BIN
stylesheets/img/caffe_bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

BIN
stylesheets/img/caffe_reply.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
stylesheets/img/caffe_reply2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

BIN
stylesheets/img/rugby_background.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
stylesheets/img/rugby_background2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
stylesheets/img/rugby_rugbysta.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

48
stylesheets/rugby.css

@ -0,0 +1,48 @@
/* rugby.css */
body {
background:
url(img/rugby_rugbysta.png) no-repeat bottom right fixed,
url(img/rugby_background2.jpg) no-repeat center center fixed;
/* -moz-linear-gradient(top, #cfe7fa 0%, #6393c1 100%) fixed,
linear-gradient(to bottom, #cfe7fa 0%,#6393c1 100%) fixed; */
background-size: auto, cover;
}
.desktop-style div.boardlist:nth-child(1), div.post.reply, div.pages {
background: #ebf1f6; /* Old browsers */
background: -moz-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ebf1f6), color-stop(50%,#abd3ee), color-stop(51%,#89c3eb), color-stop(100%,#d5ebfb)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%); /* IE10+ */
background: linear-gradient(to bottom, #ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ebf1f6', endColorstr='#d5ebfb',GradientType=0 ); /* IE6-9 */
border-bottom: 1px solid #e9af32;
}
div.post.reply, div.pages {
border-radius: 20px 20px;
border: 1px solid #e9af32;
}
form table tr th {
background: #e9af32 !important;
}
hr {
border-color: #e9af32;
}
h1, header div.subtitle {
color: #ec3150;
}
.desktop-style .sub {
background: none;
}

3
templates/header.html

@ -4,7 +4,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes">
{% if config.meta_keywords %}<meta name="keywords" content="{{ config.meta_keywords }}">{% endif %}
{% if config.default_stylesheet.1 != '' %}<link rel="stylesheet" type="text/css" id="stylesheet" href="{{ config.uri_stylesheets }}{{ config.default_stylesheet.1 }}">{% endif %}
{% if config.font_awesome %}<link rel="stylesheet" media="screen" href="{{ config.root }}{{ config.font_awesome_css }}">{% endif %}
{% if config.font_awesome %}<link rel="stylesheet" href="{{ config.root }}{{ config.font_awesome_css }}">{% endif %}
{% if config.country_flags_condensed %}<link rel="stylesheet" href="{{ config.root }}{{ config.country_flags_condensed_css }}">{% endif %}
<script type="text/javascript">
var configRoot="{{ config.root }}";
var inMod = {% if mod %}true{% else %}false{% endif %};

14
templates/installer/check-requirements.html

@ -14,14 +14,14 @@
<td>{{ test.name }}</td>
<td class="minimal" style="text-align:center">
{% if test.result %}
<i style="font-size:11pt;color:#090" class="icon-check-sign"></i>
<i style="font-size:11pt;color:#090" class="fa fa-check"></i>
{% else %}
{% if test.required %}
{% set errors = errors + 1 %}
<i style="font-size:11pt;color:#d00" class="icon-exclamation-sign"></i>
<i style="font-size:11pt;color:#d00" class="fa fa-exclamation"></i>
{% else %}
{% set warnings = warnings + 1 %}
<i style="font-size:11pt;color:#f80" class="icon-warning-sign"></i>
<i style="font-size:11pt;color:#f80" class="fa fa-warning"></i>
{% endif %}
{% endif %}
</td>
@ -34,18 +34,18 @@
{% for test in tests if not test.result%}
<li style="margin-bottom:5px">
{% if test.required %}
<i style="font-size:11pt;color:#d00" class="icon-exclamation-sign"></i> <strong>Error:</strong>
<i style="font-size:11pt;color:#d00" class="fa fa-exclamation"></i> <strong>Error:</strong>
{% else %}
<i style="font-size:11pt;color:#f80" class="icon-warning-sign"></i> <strong>Warning:</strong>
<i style="font-size:11pt;color:#f80" class="fa fa-warning"></i> <strong>Warning:</strong>
{% endif %}
{{ test.message }}
</li>
{% endfor %}
</ul>
{% if errors %}
<p style="text-align:center"><a href="?step=2">Clik here to ignore errors and attempt installing anyway (not recommended).</a></p>
<p style="text-align:center"><a href="?step=2">Click here to ignore errors and attempt installing anyway (not recommended).</a></p>
{% else %}
<p style="text-align:center"><a href="?step=2">Clik here to proceed with installation.</a></p>
<p style="text-align:center"><a href="?step=2">Click here to proceed with installation.</a></p>
{% endif %}
{% else %}
<p>There were no errors or warnings. Good!</p>

6
templates/main.js

@ -288,10 +288,12 @@ function ready() {
}
}
onready(init);
{% endraw %}
var post_date = "{{ config.post_date }}";
onready(init);
{% if config.google_analytics %}{% raw %}
var _gaq = _gaq || [];_gaq.push(['_setAccount', '{% endraw %}{{ config.google_analytics }}{% raw %}']);{% endraw %}{% if config.google_analytics_domain %}{% raw %}_gaq.push(['_setDomainName', '{% endraw %}{{ config.google_analytics_domain }}{% raw %}']){% endraw %}{% endif %}{% if not config.google_analytics_domain %}{% raw %}_gaq.push(['_setDomainName', 'none']){% endraw %}{% endif %}{% raw %};_gaq.push(['_trackPageview']);(function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();{% endraw %}{% endif %}

16
templates/post_reply.html

@ -29,9 +29,19 @@
[<a class="ip-link" style="margin:0;" href="?/IP/{{ post.ip }}">{{ post.ip }}</a>]
{% endif %}
{% if config.display_flags and post.modifiers.flag %}
<img class="flag" src="{{ config.uri_flags|sprintf(post.modifiers.flag) }}"
style="{% if post.modifiers['flag style'] %}{{ post.modifiers['flag style'] }}{% else %}{{ config.flag_style }}{% endif %}"
{% if post.modifiers['flag alt'] %}alt="{{ post.modifiers['flag alt'] | e('html_attr') }}" title="{{ post.modifiers['flag alt'] | e('html_attr') }}"{% endif %}>
<img
{% if config.country_flags_condensed %}
class="flag flag-{{ post.modifiers.flag }}" src="{{ config.image_blank }}"
{% else %}
class="flag" src="{{ config.uri_flags|sprintf(post.modifiers.flag) }}"
{% endif %}
style="{% if post.modifiers['flag style'] %}
{{ post.modifiers['flag style'] }}
{% else %}
{{ config.flag_style }}
{% endif %}"
{% if post.modifiers['flag alt'] %} alt="{{ post.modifiers['flag alt'] | e('html_attr') }}"
title="{{ post.modifiers['flag alt'] | e('html_attr') }}"{% endif %}>
{% endif %}
<time datetime="{{ post.time|date('%Y-%m-%dT%H:%M:%S') }}{{ timezone() }}">{{ post.time|date(config.post_date) }}</time>
</label>

16
templates/post_thread.html

@ -83,9 +83,19 @@
[<a class="ip-link" style="margin:0;" href="?/IP/{{ post.ip }}">{{ post.ip }}</a>]
{% endif %}
{% if config.display_flags and post.modifiers.flag %}
<img class="flag" src="{{ config.uri_flags|sprintf(post.modifiers.flag) }}"
style="{% if post.modifiers['flag style'] %}{{ post.modifiers['flag style'] }}{% else %}{{ config.flag_style }}{% endif %}"
{% if post.modifiers['flag alt'] %}alt="{{ post.modifiers['flag alt'] | e('html_attr') }}" title="{{ post.modifiers['flag alt'] | e('html_attr') }}"{% endif %}>
<img
{% if config.country_flags_condensed %}
class="flag flag-{{ post.modifiers.flag }}" src="{{ config.image_blank }}"
{% else %}
class="flag" src="{{ config.uri_flags|sprintf(post.modifiers.flag) }}"
{% endif %}
style="{% if post.modifiers['flag style'] %}
{{ post.modifiers['flag style'] }}
{% else %}
{{ config.flag_style }}
{% endif %}"
{% if post.modifiers['flag alt'] %} alt="{{ post.modifiers['flag alt'] | e('html_attr') }}"
title="{{ post.modifiers['flag alt'] | e('html_attr') }}"{% endif %}>
{% endif %}
<time datetime="{{ post.time|date('%Y-%m-%dT%H:%M:%S') }}{{ timezone() }}">{{ post.time|date(config.post_date) }}</time>
</label>

5
tools/i18n_extract.php

@ -42,6 +42,7 @@ foreach ($locales as $loc) {
xgettext -d tinyboard -L php --from-code utf-8 $join -c $(find ../../../../ -name \*.php)");
// Generate javascript.po
passthru("cd $locdir/LC_MESSAGES;
xgettext -d javascript -L Python --force-po --from-code utf-8 $join -c $(find ../../../../js/ ../../../../templates/ -name \*.js)");
passthru("cd $locdir/LC_MESSAGES;".
"xgettext -d javascript -L Python --force-po --from-code utf-8 $join -c ".
"$(find ../../../../js/ ../../../../templates/ -not -path \*node_modules\* -name \*.js)");
}

39
tools/recount-bumps.php

@ -0,0 +1,39 @@
<?php
// A script to recount bumps to recover from a last-page-bump attack
// or to be run after the KusabaX Migration.
require dirname(__FILE__) . '/inc/cli.php';
if(!is_writable($config['file_script'])) {
get_httpd_privileges();
}
if (!isset ($argv[1])) {
die("Usage: tools/recount-bumps.php board_uri\n");
}
$board = $argv[1];
$q = query(sprintf("SELECT `id`, `bump`, `time` FROM ``posts_%s``
WHERE `thread` IS NULL", $board));
while ($val = $q->fetch()) {
$lc = prepare(sprintf('SELECT MAX(`time`) AS `aq` FROM ``posts_%s``
WHERE ((`thread` = :thread and
`email` != "sage" ) OR `id` = :thread', $board));
$lc->bindValue(":thread", $val['id']);
$lc->execute();
$f = $lc->fetch();
if ($val['bump'] != $f['aq']) {
$query = prepare(sprintf("UPDATE ``posts_%s`` SET `bump`=:bump
WHERE `id`=:id", $board));
$query->bindValue(":bump", $f['aq']);
$query->bindValue(":id", $val['id']);
echo("Thread $val[id] - to be $val[bump] -> $f[aq]\n");
}
else {
echo("Thread $val[id] ok\n");
}
}
echo("done\n");
Loading…
Cancel
Save