Merge branch '0.9.x' into private-rss
This commit is contained in:
commit
1aea598977
63
README
63
README
@ -3,7 +3,7 @@ README
|
||||
------
|
||||
|
||||
Laconica 0.8.0 ("Shiny Happy People")
|
||||
8 July 2009
|
||||
15 July 2009
|
||||
|
||||
This is the README file for Laconica, the Open Source microblogging
|
||||
platform. It includes installation instructions, descriptions of
|
||||
@ -116,6 +116,16 @@ This is a major feature release since version 0.7.4, released May 31
|
||||
as default TOS for Laconica sites.
|
||||
- Better command-line handling for scripts, including standard options
|
||||
and ability to set hostname and path from the command line.
|
||||
- An experimental plugin to use Meteor (http://www.meteorserver.org/)
|
||||
for "real-time" updates.
|
||||
- A new framework for "real-time" updates, making it easier to develop
|
||||
plugins for different browser-based update modes.
|
||||
- RSS 2.0 and Atom feeds for groups.
|
||||
- RSS 2.0 and Atom feeds for tags.
|
||||
- Attachments can be sent by email.
|
||||
- Attachments are encoded as enclosures in RSS 2.0 and Atom.
|
||||
- Notices with attachments display in Facebook as media inline.
|
||||
|
||||
- Many, many bug fixes.
|
||||
|
||||
Prerequisites
|
||||
@ -936,8 +946,6 @@ notice: A plain string that will appear on every page. A good place
|
||||
to put introductory information about your service, or info about
|
||||
upgrades and outages, or other community info. Any HTML will
|
||||
be escaped.
|
||||
dupelimit: Time in which it's not OK for the same person to post the
|
||||
same notice; default = 60 seconds.
|
||||
logo: URL of an image file to use as the logo for the site. Overrides
|
||||
the logo in the theme, if any.
|
||||
ssl: Whether to use SSL and https:// URLs for some or all pages.
|
||||
@ -953,15 +961,12 @@ sslserver: use an alternate server name for SSL URLs, like
|
||||
shorturllength: Length of URL at which URLs in a message exceeding 140
|
||||
characters will be sent to the user's chosen
|
||||
shortening service.
|
||||
<<<<<<< HEAD:README
|
||||
design: a default design (colors and background) for the site.
|
||||
Sub-items are: backgroundcolor, contentcolor, sidebarcolor,
|
||||
textcolor, linkcolor, backgroundimage, disposition.
|
||||
dupelimit: minimum time allowed for one person to say the same thing
|
||||
twice. Default 60s. Anything lower is considered a user
|
||||
or UI error.
|
||||
=======
|
||||
>>>>>>> 0.7.x:README
|
||||
|
||||
db
|
||||
--
|
||||
@ -1424,6 +1429,51 @@ notify third-party servers of updates.
|
||||
notify: an array of URLs for ping endpoints. Default is the empty
|
||||
array (no notification).
|
||||
|
||||
Plugins
|
||||
=======
|
||||
|
||||
Beginning with the 0.7.x branch, Laconica has supported a simple but
|
||||
powerful plugin architecture. Important events in the code are named,
|
||||
like 'StartNoticeSave', and other software can register interest
|
||||
in those events. When the events happen, the other software is called
|
||||
and has a choice of accepting or rejecting the events.
|
||||
|
||||
In the simplest case, you can add a function to config.php and use the
|
||||
Event::addHandler() function to hook an event:
|
||||
|
||||
function AddGoogleLink($action)
|
||||
{
|
||||
$action->menuItem('http://www.google.com/', _('Google'), _('Search engine'));
|
||||
return true;
|
||||
}
|
||||
|
||||
Event::addHandler('EndPrimaryNav', 'AddGoogleLink');
|
||||
|
||||
This adds a menu item to the end of the main navigation menu. You can
|
||||
see the list of existing events, and parameters that handlers must
|
||||
implement, in EVENTS.txt.
|
||||
|
||||
The Plugin class in lib/plugin.php makes it easier to write more
|
||||
complex plugins. Sub-classes can just create methods named
|
||||
'onEventName', where 'EventName' is the name of the event (case
|
||||
matters!). These methods will be automatically registered as event
|
||||
handlers by the Plugin constructor (which you must call from your own
|
||||
class's constructor).
|
||||
|
||||
Several example plugins are included in the plugins/ directory. You
|
||||
can enable a plugin with the following line in config.php:
|
||||
|
||||
addPlugin('Example', array('param1' => 'value1',
|
||||
'param2' => 'value2'));
|
||||
|
||||
This will look for and load files named 'ExamplePlugin.php' or
|
||||
'Example/ExamplePlugin.php' either in the plugins/ directory (for
|
||||
plugins that ship with Laconica) or in the local/ directory (for
|
||||
plugins you write yourself or that you get from somewhere else) or
|
||||
local/plugins/.
|
||||
|
||||
Plugins are documented in their own directories.
|
||||
|
||||
Troubleshooting
|
||||
===============
|
||||
|
||||
@ -1533,6 +1583,7 @@ if anyone's been overlooked in error.
|
||||
* Brenda Wallace
|
||||
* Jeffery To
|
||||
* Federico Marani
|
||||
* Craig Andrews
|
||||
|
||||
Thanks also to the developers of our upstream library code and to the
|
||||
thousands of people who have tried out Identi.ca, installed Laconi.ca,
|
||||
|
@ -127,7 +127,9 @@ class ApiAction extends Action
|
||||
'help/downtime_schedule',
|
||||
'laconica/version',
|
||||
'laconica/config',
|
||||
'laconica/wadl');
|
||||
'laconica/wadl',
|
||||
'tags/timeline',
|
||||
'groups/timeline');
|
||||
|
||||
static $bareauth = array('statuses/user_timeline',
|
||||
'statuses/friends_timeline',
|
||||
|
@ -116,6 +116,11 @@ class ConversationAction extends Action
|
||||
|
||||
$cnt = $ct->show();
|
||||
}
|
||||
|
||||
function isReadOnly()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -57,7 +57,7 @@ class FacebookhomeAction extends FacebookAction
|
||||
|
||||
// If this is the first time the user has started the app
|
||||
// prompt for Facebook status update permission
|
||||
if (!$this->facebook->api_client->users_hasAppPermission('status_update')) {
|
||||
if (!$this->facebook->api_client->users_hasAppPermission('publish_stream')) {
|
||||
|
||||
if ($this->facebook->api_client->data_getUserPreference(
|
||||
FACEBOOK_PROMPTED_UPDATE_PREF) != 'true') {
|
||||
@ -203,7 +203,7 @@ class FacebookhomeAction extends FacebookAction
|
||||
$api_key = common_config('facebook', 'apikey');
|
||||
|
||||
$auth_url = 'http://www.facebook.com/authorize.php?api_key=' .
|
||||
$api_key . '&v=1.0&ext_perm=status_update&next=' . $next .
|
||||
$api_key . '&v=1.0&ext_perm=publish_stream&next=' . $next .
|
||||
'&next_cancel=' . $next . '&submit=skip';
|
||||
|
||||
$this->elementStart('span', array('class' => 'facebook-button'));
|
||||
|
@ -31,7 +31,7 @@ class FacebookinviteAction extends FacebookAction
|
||||
$this->error = $error;
|
||||
|
||||
if ($this->flink) {
|
||||
if (!$this->facebook->api_client->users_hasAppPermission('status_update') &&
|
||||
if (!$this->facebook->api_client->users_hasAppPermission('publish_stream') &&
|
||||
$this->facebook->api_client->data_getUserPreference(
|
||||
FACEBOOK_PROMPTED_UPDATE_PREF) == 'true') {
|
||||
|
||||
@ -60,7 +60,7 @@ class FacebookinviteAction extends FacebookAction
|
||||
|
||||
// If this is the first time the user has started the app
|
||||
// prompt for Facebook status update permission
|
||||
if (!$this->facebook->api_client->users_hasAppPermission('status_update')) {
|
||||
if (!$this->facebook->api_client->users_hasAppPermission('publish_stream')) {
|
||||
|
||||
if ($this->facebook->api_client->data_getUserPreference(
|
||||
FACEBOOK_PROMPTED_UPDATE_PREF) != 'true') {
|
||||
|
@ -78,7 +78,7 @@ class FacebooksettingsAction extends FacebookAction
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->facebook->api_client->users_hasAppPermission('status_update')) {
|
||||
if ($this->facebook->api_client->users_hasAppPermission('publish_stream')) {
|
||||
|
||||
$this->elementStart('form', array('method' => 'post',
|
||||
'id' => 'facebook_settings'));
|
||||
@ -131,7 +131,7 @@ class FacebooksettingsAction extends FacebookAction
|
||||
|
||||
$this->elementStart('ul', array('id' => 'fb-permissions-list'));
|
||||
$this->elementStart('li', array('id' => 'fb-permissions-item'));
|
||||
$this->elementStart('fb:prompt-permission', array('perms' => 'status_update',
|
||||
$this->elementStart('fb:prompt-permission', array('perms' => 'publish_stream',
|
||||
'next_fbjs' => 'document.setLocation(\'' . "$this->app_uri/settings.php" . '\')'));
|
||||
$this->element('span', array('class' => 'facebook-button'),
|
||||
sprintf(_('Allow %s to update my Facebook status'), common_config('site', 'name')));
|
||||
|
@ -317,7 +317,24 @@ class ShowgroupAction extends GroupDesignAction
|
||||
common_local_url('grouprss',
|
||||
array('nickname' => $this->group->nickname));
|
||||
|
||||
return array(new Feed(Feed::RSS1, $url, sprintf(_('Notice feed for %s group'),
|
||||
return array(new Feed(Feed::RSS1,
|
||||
common_local_url('grouprss',
|
||||
array('nickname' => $this->group->nickname)),
|
||||
sprintf(_('Notice feed for %s group (RSS 1.0)'),
|
||||
$this->group->nickname)),
|
||||
new Feed(Feed::RSS2,
|
||||
common_local_url('api',
|
||||
array('apiaction' => 'groups',
|
||||
'method' => 'timeline',
|
||||
'argument' => $this->group->nickname.'.rss')),
|
||||
sprintf(_('Notice feed for %s group (RSS 2.0)'),
|
||||
$this->group->nickname)),
|
||||
new Feed(Feed::ATOM,
|
||||
common_local_url('api',
|
||||
array('apiaction' => 'groups',
|
||||
'method' => 'timeline',
|
||||
'argument' => $this->group->nickname.'.atom')),
|
||||
sprintf(_('Notice feed for %s group (Atom)'),
|
||||
$this->group->nickname)));
|
||||
}
|
||||
|
||||
|
@ -72,8 +72,24 @@ class TagAction extends Action
|
||||
function getFeeds()
|
||||
{
|
||||
return array(new Feed(Feed::RSS1,
|
||||
common_local_url('tagrss', array('tag' => $this->tag)),
|
||||
sprintf(_('Feed for tag %s'), $this->tag)));
|
||||
common_local_url('tagrss',
|
||||
array('tag' => $this->tag)),
|
||||
sprintf(_('Notice feed for tag %s (RSS 1.0)'),
|
||||
$this->tag)),
|
||||
new Feed(Feed::RSS2,
|
||||
common_local_url('api',
|
||||
array('apiaction' => 'tags',
|
||||
'method' => 'timeline',
|
||||
'argument' => $this->tag.'.rss')),
|
||||
sprintf(_('Notice feed for %s group (RSS 2.0)'),
|
||||
$this->tag)),
|
||||
new Feed(Feed::ATOM,
|
||||
common_local_url('api',
|
||||
array('apiaction' => 'tags',
|
||||
'method' => 'timeline',
|
||||
'argument' => $this->tag.'.atom')),
|
||||
sprintf(_('Notice feed for tag %s (Atom)'),
|
||||
$this->tag)));
|
||||
}
|
||||
|
||||
function showContent()
|
||||
|
114
actions/twitapigroups.php
Normal file
114
actions/twitapigroups.php
Normal file
@ -0,0 +1,114 @@
|
||||
<?php
|
||||
/**
|
||||
* Laconica, the distributed open-source microblogging tool
|
||||
*
|
||||
* Laconica extensions to the Twitter-like API for groups
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* LICENCE: This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program 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 Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @category Twitter
|
||||
* @package Laconica
|
||||
* @author Craig Andrews
|
||||
* @author Zach Copley <zach@controlyourself.ca>
|
||||
* @copyright 2009 Control Yourself, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://laconi.ca/
|
||||
*/
|
||||
|
||||
if (!defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once INSTALLDIR.'/lib/twitterapi.php';
|
||||
|
||||
/**
|
||||
* Group-specific API methods
|
||||
*
|
||||
* This class handles Laconica group API methods.
|
||||
*
|
||||
* @category Twitter
|
||||
* @package Laconica
|
||||
* @author Craig Andrews
|
||||
* @author Zach Copley <zach@controlyourself.ca>
|
||||
* @copyright 2009 Control Yourself, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://laconi.ca/
|
||||
*/
|
||||
|
||||
class TwitapigroupsAction extends TwitterapiAction
|
||||
{
|
||||
|
||||
function timeline($args, $apidata)
|
||||
{
|
||||
parent::handle($args);
|
||||
|
||||
common_debug("in groups api action");
|
||||
|
||||
$this->auth_user = $apidata['user'];
|
||||
$group = $this->get_group($apidata['api_arg'], $apidata);
|
||||
|
||||
if (empty($group)) {
|
||||
$this->clientError('Not Found', 404, $apidata['content-type']);
|
||||
return;
|
||||
}
|
||||
|
||||
$sitename = common_config('site', 'name');
|
||||
$title = sprintf(_("%s timeline"), $group->nickname);
|
||||
$taguribase = common_config('integration', 'taguri');
|
||||
$id = "tag:$taguribase:GroupTimeline:".$group->id;
|
||||
$link = common_local_url('showgroup',
|
||||
array('nickname' => $group->nickname));
|
||||
$subtitle = sprintf(_('Updates from %1$s on %2$s!'),
|
||||
$group->nickname, $sitename);
|
||||
|
||||
$page = (int)$this->arg('page', 1);
|
||||
$count = (int)$this->arg('count', 20);
|
||||
$max_id = (int)$this->arg('max_id', 0);
|
||||
$since_id = (int)$this->arg('since_id', 0);
|
||||
$since = $this->arg('since');
|
||||
|
||||
$notice = $group->getNotices(($page-1)*$count,
|
||||
$count, $since_id, $max_id, $since);
|
||||
|
||||
switch($apidata['content-type']) {
|
||||
case 'xml':
|
||||
$this->show_xml_timeline($notice);
|
||||
break;
|
||||
case 'rss':
|
||||
$this->show_rss_timeline($notice, $title, $link,
|
||||
$subtitle, $suplink);
|
||||
break;
|
||||
case 'atom':
|
||||
if (isset($apidata['api_arg'])) {
|
||||
$selfuri = common_root_url() .
|
||||
'api/laconica/groups/timeline/' .
|
||||
$apidata['api_arg'] . '.atom';
|
||||
} else {
|
||||
$selfuri = common_root_url() .
|
||||
'api/laconica/groups/timeline.atom';
|
||||
}
|
||||
$this->show_atom_timeline($notice, $title, $id, $link,
|
||||
$subtitle, $suplink, $selfuri);
|
||||
break;
|
||||
case 'json':
|
||||
$this->show_json_timeline($notice);
|
||||
break;
|
||||
default:
|
||||
$this->clientError(_('API method not found!'), $code = 404);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
114
actions/twitapitags.php
Normal file
114
actions/twitapitags.php
Normal file
@ -0,0 +1,114 @@
|
||||
<?php
|
||||
/**
|
||||
* Laconica, the distributed open-source microblogging tool
|
||||
*
|
||||
* Laconica extensions to the Twitter-like API for groups
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* LICENCE: This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program 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 Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @category Twitter
|
||||
* @package Laconica
|
||||
* @author Craig Andrews
|
||||
* @author Zach Copley <zach@controlyourself.ca>
|
||||
* @copyright 2009 Control Yourself, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://laconi.ca/
|
||||
*/
|
||||
|
||||
if (!defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once INSTALLDIR.'/lib/twitterapi.php';
|
||||
|
||||
/**
|
||||
* Group-specific API methods
|
||||
*
|
||||
* This class handles Laconica group API methods.
|
||||
*
|
||||
* @category Twitter
|
||||
* @package Laconica
|
||||
* @author Craig Andrews
|
||||
* @author Zach Copley <zach@controlyourself.ca>
|
||||
* @copyright 2009 Control Yourself, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://laconi.ca/
|
||||
*/
|
||||
|
||||
class TwitapitagsAction extends TwitterapiAction
|
||||
{
|
||||
|
||||
function timeline($args, $apidata)
|
||||
{
|
||||
parent::handle($args);
|
||||
|
||||
common_debug("in tags api action");
|
||||
|
||||
$this->auth_user = $apidata['user'];
|
||||
$tag = $apidata['api_arg'];
|
||||
|
||||
if (empty($tag)) {
|
||||
$this->clientError('Not Found', 404, $apidata['content-type']);
|
||||
return;
|
||||
}
|
||||
|
||||
$sitename = common_config('site', 'name');
|
||||
$title = sprintf(_("Notices tagged with %s"), $tag);
|
||||
$taguribase = common_config('integration', 'taguri');
|
||||
$id = "tag:$taguribase:TagTimeline:".$tag;
|
||||
$link = common_local_url('tag',
|
||||
array('tag' => $tag));
|
||||
$subtitle = sprintf(_('Updates tagged with %1$s on %2$s!'),
|
||||
$tag, $sitename);
|
||||
|
||||
$page = (int)$this->arg('page', 1);
|
||||
$count = (int)$this->arg('count', 20);
|
||||
$max_id = (int)$this->arg('max_id', 0);
|
||||
$since_id = (int)$this->arg('since_id', 0);
|
||||
$since = $this->arg('since');
|
||||
|
||||
# XXX: support max_id, since_id, and since arguments
|
||||
$notice = Notice_tag::getStream($tag, ($page-1)*$count, $count + 1);
|
||||
|
||||
switch($apidata['content-type']) {
|
||||
case 'xml':
|
||||
$this->show_xml_timeline($notice);
|
||||
break;
|
||||
case 'rss':
|
||||
$this->show_rss_timeline($notice, $title, $link,
|
||||
$subtitle, $suplink);
|
||||
break;
|
||||
case 'atom':
|
||||
if (isset($apidata['api_arg'])) {
|
||||
$selfuri = common_root_url() .
|
||||
'api/laconica/tags/timeline/' .
|
||||
$apidata['api_arg'] . '.atom';
|
||||
} else {
|
||||
$selfuri = common_root_url() .
|
||||
'api/laconica/tags/timeline.atom';
|
||||
}
|
||||
$this->show_atom_timeline($notice, $title, $id, $link,
|
||||
$subtitle, $suplink, $selfuri);
|
||||
break;
|
||||
case 'json':
|
||||
$this->show_json_timeline($notice);
|
||||
break;
|
||||
default:
|
||||
$this->clientError(_('API method not found!'), $code = 404);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -193,5 +193,18 @@ class File extends Memcached_DataObject
|
||||
|
||||
return 'http://'.$server.$path.$filename;
|
||||
}
|
||||
|
||||
function isEnclosure(){
|
||||
if(isset($this->filename)){
|
||||
return true;
|
||||
}
|
||||
$notEnclosureMimeTypes = array('text/html','application/xhtml+xml');
|
||||
$mimetype = strtolower($this->mimetype);
|
||||
$semicolon = strpos($mimetype,';');
|
||||
if($semicolon){
|
||||
$mimetype = substr($mimetype,0,$semicolon);
|
||||
}
|
||||
return(! in_array($mimetype,$notEnclosureMimeTypes));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1170,6 +1170,7 @@ class Notice extends Memcached_DataObject
|
||||
$attachments = $this->attachments();
|
||||
if($attachments){
|
||||
foreach($attachments as $attachment){
|
||||
if ($attachment->isEnclosure()) {
|
||||
$attributes = array('rel'=>'enclosure','href'=>$attachment->url,'type'=>$attachment->mimetype,'length'=>$attachment->size);
|
||||
if($attachment->title){
|
||||
$attributes['title']=$attachment->title;
|
||||
@ -1177,6 +1178,7 @@ class Notice extends Memcached_DataObject
|
||||
$xs->element('link', $attributes, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$xs->elementEnd('entry');
|
||||
|
||||
|
@ -2,11 +2,11 @@
|
||||
/**
|
||||
* Object Based Database Query Builder and data store
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
* For PHP versions 4,5 and 6
|
||||
*
|
||||
* LICENSE: This source file is subject to version 3.0 of the PHP license
|
||||
* LICENSE: This source file is subject to version 3.01 of the PHP license
|
||||
* that is available through the world-wide-web at the following URI:
|
||||
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
|
||||
* http://www.php.net/license/3_01.txt. If you did not receive a copy of
|
||||
* the PHP License and are unable to obtain it through the web, please
|
||||
* send a note to license@php.net so we can mail you a copy immediately.
|
||||
*
|
||||
@ -14,8 +14,8 @@
|
||||
* @package DB_DataObject
|
||||
* @author Alan Knowles <alan@akbkhome.com>
|
||||
* @copyright 1997-2006 The PHP Group
|
||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
||||
* @version CVS: $Id: DataObject.php,v 1.439 2008/01/30 02:14:06 alan_k Exp $
|
||||
* @license http://www.php.net/license/3_01.txt PHP License 3.01
|
||||
* @version CVS: $Id: DataObject.php 284150 2009-07-15 23:27:59Z alan_k $
|
||||
* @link http://pear.php.net/package/DB_DataObject
|
||||
*/
|
||||
|
||||
@ -235,7 +235,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
* @access private
|
||||
* @var string
|
||||
*/
|
||||
var $_DB_DataObject_version = "1.8.8";
|
||||
var $_DB_DataObject_version = "1.8.11";
|
||||
|
||||
/**
|
||||
* The Database table (used by table extends)
|
||||
@ -1027,7 +1027,13 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
if ($leftq || $useNative) {
|
||||
$table = ($quoteIdentifiers ? $DB->quoteIdentifier($this->__table) : $this->__table);
|
||||
|
||||
|
||||
if (($dbtype == 'pgsql') && empty($leftq)) {
|
||||
$r = $this->_query("INSERT INTO {$table} DEFAULT VALUES");
|
||||
} else {
|
||||
$r = $this->_query("INSERT INTO {$table} ($leftq) VALUES ($rightq) ");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1339,7 +1345,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
* build the condition only using the object parameters.
|
||||
*
|
||||
* @access public
|
||||
* @return mixed True on success, false on failure, 0 on no data affected
|
||||
* @return mixed Int (No. of rows affected) on success, false on failure, 0 on no data affected
|
||||
*/
|
||||
function delete($useWhere = false)
|
||||
{
|
||||
@ -1369,7 +1375,13 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
if (($this->_query !== false) && $this->_query['condition']) {
|
||||
|
||||
$table = ($quoteIdentifiers ? $DB->quoteIdentifier($this->__table) : $this->__table);
|
||||
$sql = "DELETE FROM {$table} {$this->_query['condition']}{$extra_cond}";
|
||||
$sql = "DELETE ";
|
||||
// using a joined delete. - with useWhere..
|
||||
$sql .= (!empty($this->_join) && $useWhere) ?
|
||||
"{$table} FROM {$table} {$this->_join} " :
|
||||
"FROM {$table} ";
|
||||
|
||||
$sql .= $this->_query['condition']. $extra_cond;
|
||||
|
||||
// add limit..
|
||||
|
||||
@ -1521,15 +1533,15 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
}
|
||||
$keys = $this->keys();
|
||||
|
||||
if (!$keys[0] && !is_string($countWhat)) {
|
||||
if (empty($keys[0]) && (!is_string($countWhat) || (strtoupper($countWhat) == 'DISTINCT'))) {
|
||||
$this->raiseError(
|
||||
"You cannot do run count without keys - use \$do->keys('id');",
|
||||
"You cannot do run count without keys - use \$do->count('id'), or use \$do->count('distinct id')';",
|
||||
DB_DATAOBJECT_ERROR_INVALIDARGS,PEAR_ERROR_DIE);
|
||||
return false;
|
||||
|
||||
}
|
||||
$table = ($quoteIdentifiers ? $DB->quoteIdentifier($this->__table) : $this->__table);
|
||||
$key_col = ($quoteIdentifiers ? $DB->quoteIdentifier($keys[0]) : $keys[0]);
|
||||
$key_col = empty($keys[0]) ? '' : (($quoteIdentifiers ? $DB->quoteIdentifier($keys[0]) : $keys[0]));
|
||||
$as = ($quoteIdentifiers ? $DB->quoteIdentifier('DATAOBJECT_NUM') : 'DATAOBJECT_NUM');
|
||||
|
||||
// support distinct on default keys.
|
||||
@ -2044,7 +2056,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
// technically postgres native here...
|
||||
// we need to get the new improved tabledata sorted out first.
|
||||
|
||||
if ( in_array($dbtype , array('psql', 'mysql', 'mysqli', 'mssql', 'ifx')) &&
|
||||
if ( in_array($dbtype , array('pgsql', 'mysql', 'mysqli', 'mssql', 'ifx')) &&
|
||||
($table[$usekey] & DB_DATAOBJECT_INT) &&
|
||||
isset($realkeys[$usekey]) && ($realkeys[$usekey] == 'N')
|
||||
) {
|
||||
@ -2125,10 +2137,13 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
$this->_loadConfig();
|
||||
}
|
||||
// Set database driver for reference
|
||||
$db_driver = empty($_DB_DATAOBJECT['CONFIG']['db_driver']) ? 'DB' : $_DB_DATAOBJECT['CONFIG']['db_driver'];
|
||||
// is it already connected ?
|
||||
$db_driver = empty($_DB_DATAOBJECT['CONFIG']['db_driver']) ?
|
||||
'DB' : $_DB_DATAOBJECT['CONFIG']['db_driver'];
|
||||
|
||||
// is it already connected ?
|
||||
if ($this->_database_dsn_md5 && !empty($_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5])) {
|
||||
|
||||
// connection is an error...
|
||||
if (PEAR::isError($_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5])) {
|
||||
return $this->raiseError(
|
||||
$_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5]->message,
|
||||
@ -2137,7 +2152,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
|
||||
}
|
||||
|
||||
if (!$this->_database) {
|
||||
if (empty($this->_database)) {
|
||||
$this->_database = $_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5]->dsn['database'];
|
||||
$hasGetDatabase = method_exists($_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5], 'getDatabase');
|
||||
|
||||
@ -2166,6 +2181,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
// try and work out what to use for the dsn !
|
||||
|
||||
$options= &$_DB_DATAOBJECT['CONFIG'];
|
||||
// if the databse dsn dis defined in the object..
|
||||
$dsn = isset($this->_database_dsn) ? $this->_database_dsn : null;
|
||||
|
||||
if (!$dsn) {
|
||||
@ -2173,14 +2189,14 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
$this->_database = isset($options["table_{$this->__table}"]) ? $options["table_{$this->__table}"] : null;
|
||||
}
|
||||
if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) {
|
||||
$this->debug("Checking for database database_{$this->_database} in options","CONNECT");
|
||||
$this->debug("Checking for database specific ini ('{$this->_database}') : database_{$this->_database} in options","CONNECT");
|
||||
}
|
||||
|
||||
if ($this->_database && !empty($options["database_{$this->_database}"])) {
|
||||
|
||||
$dsn = $options["database_{$this->_database}"];
|
||||
} else if (!empty($options['database'])) {
|
||||
$dsn = $options['database'];
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -2205,6 +2221,9 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) {
|
||||
$this->debug("USING CACHED CONNECTION", "CONNECT",3);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!$this->_database) {
|
||||
|
||||
$hasGetDatabase = method_exists($_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5], 'getDatabase');
|
||||
@ -2221,7 +2240,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
return true;
|
||||
}
|
||||
if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) {
|
||||
$this->debug("NEW CONNECTION", "CONNECT",3);
|
||||
$this->debug("NEW CONNECTION TP DATABASE :" .$this->_database , "CONNECT",3);
|
||||
/* actualy make a connection */
|
||||
$this->debug(print_r($dsn,true) ." {$this->_database_dsn_md5}", "CONNECT",3);
|
||||
}
|
||||
@ -2266,7 +2285,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
|
||||
}
|
||||
|
||||
if (!$this->_database) {
|
||||
if (empty($this->_database)) {
|
||||
$hasGetDatabase = method_exists($_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5], 'getDatabase');
|
||||
|
||||
$this->_database = ($db_driver != 'DB' && $hasGetDatabase)
|
||||
@ -2358,9 +2377,10 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
$_DB_DATAOBJECT['QUERYENDTIME'] = $time = $t[0]+$t[1];
|
||||
|
||||
|
||||
do {
|
||||
for ($tries = 0;$tries < 3;$tries++) {
|
||||
|
||||
if ($_DB_driver == 'DB') {
|
||||
|
||||
$result = $DB->query($string);
|
||||
} else {
|
||||
switch (strtolower(substr(trim($string),0,6))) {
|
||||
@ -2377,18 +2397,17 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
}
|
||||
}
|
||||
|
||||
// try to reconnect, at most 3 times
|
||||
$again = false;
|
||||
if (is_a($result, 'PEAR_Error')
|
||||
AND $result->getCode() == DB_ERROR_NODBSELECTED
|
||||
AND $cpt++<3) {
|
||||
$DB->disconnect();
|
||||
sleep(1);
|
||||
// see if we got a failure.. - try again a few times..
|
||||
if (!is_a($result,'PEAR_Error')) {
|
||||
break;
|
||||
}
|
||||
if ($result->getCode() != -14) { // *DB_ERROR_NODBSELECTED
|
||||
break; // not a connection error..
|
||||
}
|
||||
sleep(1); // wait before retyring..
|
||||
$DB->connect($DB->dsn);
|
||||
$again = true;
|
||||
}
|
||||
|
||||
} while ($again);
|
||||
|
||||
if (is_a($result,'PEAR_Error')) {
|
||||
if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) {
|
||||
@ -2556,10 +2575,12 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
* use @ to silence it (if you are sure it is acceptable)
|
||||
* eg. $do = @DB_DataObject::factory('person')
|
||||
*
|
||||
* table name will eventually be databasename/table
|
||||
* table name can bedatabasename/table
|
||||
* - and allow modular dataobjects to be written..
|
||||
* (this also helps proxy creation)
|
||||
*
|
||||
* Experimental Support for Multi-Database factory eg. mydatabase.mytable
|
||||
*
|
||||
*
|
||||
* @param string $table tablename (use blank to create a new instance of the same class.)
|
||||
* @access private
|
||||
@ -2570,9 +2591,27 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
|
||||
function factory($table = '') {
|
||||
global $_DB_DATAOBJECT;
|
||||
|
||||
|
||||
// multi-database support.. - experimental.
|
||||
$database = '';
|
||||
|
||||
if (strpos( $table,'/') !== false ) {
|
||||
list($database,$table) = explode('.',$table, 2);
|
||||
|
||||
}
|
||||
|
||||
if (empty($_DB_DATAOBJECT['CONFIG'])) {
|
||||
DB_DataObject::_loadConfig();
|
||||
}
|
||||
// no configuration available for database
|
||||
if (!empty($database) && empty($_DB_DATAOBJECT['CONFIG']['database_'.$database])) {
|
||||
return DB_DataObject::raiseError(
|
||||
"unable to find database_{$database} in Configuration, It is required for factory with database"
|
||||
, 0, PEAR_ERROR_DIE );
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($table === '') {
|
||||
if (is_a($this,'DB_DataObject') && strlen($this->__table)) {
|
||||
@ -2584,17 +2623,22 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// does this need multi db support??
|
||||
$p = isset($_DB_DATAOBJECT['CONFIG']['class_prefix']) ?
|
||||
$_DB_DATAOBJECT['CONFIG']['class_prefix'] : '';
|
||||
$class = $p . preg_replace('/[^A-Z0-9]/i','_',ucfirst($table));
|
||||
|
||||
$ce = substr(phpversion(),0,1) > 4 ? class_exists($class,false) : class_exists($class);
|
||||
|
||||
$class = $ce ? $class : DB_DataObject::_autoloadClass($class);
|
||||
|
||||
// proxy = full|light
|
||||
if (!$class && isset($_DB_DATAOBJECT['CONFIG']['proxy'])) {
|
||||
|
||||
DB_DataObject::debug("FAILED TO Autoload $database.$table - using proxy.","FACTORY",1);
|
||||
|
||||
|
||||
$proxyMethod = 'getProxy'.$_DB_DATAOBJECT['CONFIG']['proxy'];
|
||||
// if you have loaded (some other way) - dont try and load it again..
|
||||
class_exists('DB_DataObject_Generator') ? '' :
|
||||
require_once 'DB/DataObject/Generator.php';
|
||||
|
||||
@ -2614,8 +2658,12 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
"factory could not find class $class from $table",
|
||||
DB_DATAOBJECT_ERROR_INVALIDCONFIG);
|
||||
}
|
||||
|
||||
return new $class;
|
||||
$ret = new $class;
|
||||
if (!empty($database)) {
|
||||
DB_DataObject::debug("Setting database to $database","FACTORY",1);
|
||||
$ret->database($database);
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
/**
|
||||
* autoload Class
|
||||
@ -3079,7 +3127,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//echo '<PRE>'; print_r(func_get_args());
|
||||
$useWhereAsOn = false;
|
||||
// support for 2nd argument as an array of options
|
||||
if (is_array($joinType)) {
|
||||
@ -3119,8 +3167,39 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
$DB = &$_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5];
|
||||
|
||||
|
||||
/// CHANGED 26 JUN 2009 - we prefer links from our local table over the remote one.
|
||||
|
||||
/* otherwise see if there are any links from this table to the obj. */
|
||||
//print_r($this->links());
|
||||
if (($ofield === false) && ($links = $this->links())) {
|
||||
foreach ($links as $k => $v) {
|
||||
/* link contains {this column} = {linked table}:{linked column} */
|
||||
$ar = explode(':', $v);
|
||||
// Feature Request #4266 - Allow joins with multiple keys
|
||||
if (strpos($k, ',') !== false) {
|
||||
$k = explode(',', $k);
|
||||
}
|
||||
if (strpos($ar[1], ',') !== false) {
|
||||
$ar[1] = explode(',', $ar[1]);
|
||||
}
|
||||
|
||||
if ($ar[0] == $obj->__table) {
|
||||
if ($joinCol !== false) {
|
||||
if ($k == $joinCol) {
|
||||
$tfield = $k;
|
||||
$ofield = $ar[1];
|
||||
break;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
$tfield = $k;
|
||||
$ofield = $ar[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* look up the links for obj table */
|
||||
//print_r($obj->links());
|
||||
if (!$ofield && ($olinks = $obj->links())) {
|
||||
@ -3164,37 +3243,6 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
}
|
||||
}
|
||||
|
||||
/* otherwise see if there are any links from this table to the obj. */
|
||||
//print_r($this->links());
|
||||
if (($ofield === false) && ($links = $this->links())) {
|
||||
foreach ($links as $k => $v) {
|
||||
/* link contains {this column} = {linked table}:{linked column} */
|
||||
$ar = explode(':', $v);
|
||||
// Feature Request #4266 - Allow joins with multiple keys
|
||||
if (strpos($k, ',') !== false) {
|
||||
$k = explode(',', $k);
|
||||
}
|
||||
if (strpos($ar[1], ',') !== false) {
|
||||
$ar[1] = explode(',', $ar[1]);
|
||||
}
|
||||
|
||||
if ($ar[0] == $obj->__table) {
|
||||
if ($joinCol !== false) {
|
||||
if ($k == $joinCol) {
|
||||
$tfield = $k;
|
||||
$ofield = $ar[1];
|
||||
break;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
$tfield = $k;
|
||||
$ofield = $ar[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// finally if these two table have column names that match do a join by default on them
|
||||
|
||||
if (($ofield === false) && $joinCol) {
|
||||
@ -3383,22 +3431,25 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
case 'RIGHT': // others??? .. cross, left outer, right outer, natural..?
|
||||
|
||||
// Feature Request #4266 - Allow joins with multiple keys
|
||||
$this->_join .= "\n {$joinType} JOIN {$objTable} {$fullJoinAs}";
|
||||
$jadd = "\n {$joinType} JOIN {$objTable} {$fullJoinAs}";
|
||||
//$this->_join .= "\n {$joinType} JOIN {$objTable} {$fullJoinAs}";
|
||||
if (is_array($ofield)) {
|
||||
$key_count = count($ofield);
|
||||
for($i = 0; $i < $key_count; $i++) {
|
||||
if ($i == 0) {
|
||||
$this->_join .= " ON ({$joinAs}.{$ofield[$i]}={$table}.{$tfield[$i]}) ";
|
||||
$jadd .= " ON ({$joinAs}.{$ofield[$i]}={$table}.{$tfield[$i]}) ";
|
||||
}
|
||||
else {
|
||||
$this->_join .= " AND {$joinAs}.{$ofield[$i]}={$table}.{$tfield[$i]} ";
|
||||
$jadd .= " AND {$joinAs}.{$ofield[$i]}={$table}.{$tfield[$i]} ";
|
||||
}
|
||||
}
|
||||
$this->_join .= ' ' . $appendJoin . ' ';
|
||||
$jadd .= ' ' . $appendJoin . ' ';
|
||||
} else {
|
||||
$this->_join .= " ON ({$joinAs}.{$ofield}={$table}.{$tfield}) {$appendJoin} ";
|
||||
$jadd .= " ON ({$joinAs}.{$ofield}={$table}.{$tfield}) {$appendJoin} ";
|
||||
}
|
||||
|
||||
// jadd avaliable for debugging join build.
|
||||
//echo $jadd ."\n";
|
||||
$this->_join .= $jadd;
|
||||
break;
|
||||
|
||||
case '': // this is just a standard multitable select..
|
||||
@ -3459,7 +3510,7 @@ class DB_DataObject extends DB_DataObject_Overload
|
||||
continue;
|
||||
}
|
||||
|
||||
if (empty($from[$k]) && $skipEmpty) {
|
||||
if (empty($from[sprintf($format,$k)]) && $skipEmpty) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -15,9 +15,9 @@
|
||||
* @category Database
|
||||
* @package DB_DataObject
|
||||
* @author Alan Knowles <alan@akbkhome.com>
|
||||
* @copyright 1997-2006 The PHP Group
|
||||
* @copyright 1997-2008 The PHP Group
|
||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
||||
* @version CVS: $Id: Cast.php,v 1.15 2005/07/07 05:30:53 alan_k Exp $
|
||||
* @version CVS: $Id: Cast.php 264148 2008-08-04 03:44:59Z alan_k $
|
||||
* @link http://pear.php.net/package/DB_DataObject
|
||||
*/
|
||||
|
||||
@ -391,6 +391,9 @@ class DB_DataObject_Cast {
|
||||
// this is funny - the parameter order is reversed ;)
|
||||
return "'".mysqli_real_escape_string($db->connection, $this->value)."'";
|
||||
|
||||
case 'sqlite':
|
||||
// this is funny - the parameter order is reversed ;)
|
||||
return "'".sqlite_escape_string($this->value)."'";
|
||||
|
||||
|
||||
default:
|
||||
|
@ -18,7 +18,7 @@
|
||||
* @author Alan Knowles <alan@akbkhome.com>
|
||||
* @copyright 1997-2006 The PHP Group
|
||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
||||
* @version CVS: $Id: Error.php,v 1.3 2005/03/23 02:35:35 alan_k Exp $
|
||||
* @version CVS: $Id: Error.php 277015 2009-03-12 05:51:03Z alan_k $
|
||||
* @link http://pear.php.net/package/DB_DataObject
|
||||
*/
|
||||
|
||||
|
@ -4,9 +4,9 @@
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: This source file is subject to version 3.0 of the PHP license
|
||||
* LICENSE: This source file is subject to version 3.01 of the PHP license
|
||||
* that is available through the world-wide-web at the following URI:
|
||||
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
|
||||
* http://www.php.net/license/3_01.txt. If you did not receive a copy of
|
||||
* the PHP License and are unable to obtain it through the web, please
|
||||
* send a note to license@php.net so we can mail you a copy immediately.
|
||||
*
|
||||
@ -14,8 +14,8 @@
|
||||
* @package DB_DataObject
|
||||
* @author Alan Knowles <alan@akbkhome.com>
|
||||
* @copyright 1997-2006 The PHP Group
|
||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
||||
* @version CVS: $Id: Generator.php,v 1.141 2008/01/30 02:29:39 alan_k Exp $
|
||||
* @license http://www.php.net/license/3_01.txt PHP License 3.01
|
||||
* @version CVS: $Id: Generator.php 284150 2009-07-15 23:27:59Z alan_k $
|
||||
* @link http://pear.php.net/package/DB_DataObject
|
||||
*/
|
||||
|
||||
@ -193,7 +193,11 @@ class DB_DataObject_Generator extends DB_DataObject
|
||||
/**
|
||||
* set portability and some modules to fetch the informations
|
||||
*/
|
||||
$db_options = PEAR::getStaticProperty('MDB2','options');
|
||||
if (empty($db_options)) {
|
||||
$__DB->setOption('portability', MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_FIX_CASE);
|
||||
}
|
||||
|
||||
$__DB->loadModule('Manager');
|
||||
$__DB->loadModule('Reverse');
|
||||
}
|
||||
@ -265,12 +269,7 @@ class DB_DataObject_Generator extends DB_DataObject
|
||||
} else {
|
||||
$defs = $__DB->reverse->tableInfo($quotedTable);
|
||||
// rename the length value, so it matches db's return.
|
||||
foreach ($defs as $k => $v) {
|
||||
if (!isset($defs[$k]['length'])) {
|
||||
continue;
|
||||
}
|
||||
$defs[$k]['len'] = $defs[$k]['length'];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (is_a($defs,'PEAR_Error')) {
|
||||
@ -286,7 +285,10 @@ class DB_DataObject_Generator extends DB_DataObject
|
||||
if (!is_array($def)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// rename the length value, so it matches db's return.
|
||||
if (isset($def['length']) && !isset($def['len'])) {
|
||||
$def['len'] = $def['length'];
|
||||
}
|
||||
$this->_definitions[$table][] = (object) $def;
|
||||
|
||||
}
|
||||
@ -391,7 +393,10 @@ class DB_DataObject_Generator extends DB_DataObject
|
||||
$fk = array();
|
||||
|
||||
foreach($this->tables as $this->table) {
|
||||
$res =& $DB->query('SHOW CREATE TABLE ' . $this->table);
|
||||
$quotedTable = !empty($options['quote_identifiers_tableinfo']) ? $DB->quoteIdentifier($table) : $this->table;
|
||||
|
||||
$res =& $DB->query('SHOW CREATE TABLE ' . $quotedTable );
|
||||
|
||||
if (PEAR::isError($res)) {
|
||||
die($res->getMessage());
|
||||
}
|
||||
@ -467,7 +472,7 @@ class DB_DataObject_Generator extends DB_DataObject
|
||||
function _generateDefinitionsTable()
|
||||
{
|
||||
global $_DB_DATAOBJECT;
|
||||
|
||||
$options = PEAR::getStaticProperty('DB_DataObject','options');
|
||||
$defs = $this->_definitions[$this->table];
|
||||
$this->_newConfig .= "\n[{$this->table}]\n";
|
||||
$keys_out = "\n[{$this->table}__keys]\n";
|
||||
@ -551,6 +556,9 @@ class DB_DataObject_Generator extends DB_DataObject
|
||||
|
||||
case 'ENUM':
|
||||
case 'SET': // not really but oh well
|
||||
|
||||
case 'POINT': // mysql geometry stuff - not really string - but will do..
|
||||
|
||||
case 'TIMESTAMPTZ': // postgres
|
||||
case 'BPCHAR': // postgres
|
||||
case 'INTERVAL': // postgres (eg. '12 days')
|
||||
@ -595,13 +603,17 @@ class DB_DataObject_Generator extends DB_DataObject
|
||||
break;
|
||||
|
||||
|
||||
case 'TINYBLOB':
|
||||
case 'BLOB': /// these should really be ignored!!!???
|
||||
case 'TINYBLOB':
|
||||
case 'MEDIUMBLOB':
|
||||
case 'LONGBLOB':
|
||||
|
||||
case 'CLOB': // oracle character lob support
|
||||
|
||||
case 'BYTEA': // postgres blob support..
|
||||
$type = DB_DATAOBJECT_STR + DB_DATAOBJECT_BLOB;
|
||||
break;
|
||||
|
||||
default:
|
||||
echo "*****************************************************************\n".
|
||||
"** WARNING UNKNOWN TYPE **\n".
|
||||
@ -653,7 +665,9 @@ class DB_DataObject_Generator extends DB_DataObject
|
||||
// only use primary key or nextval(), cause the setFrom blocks you setting all key items...
|
||||
// if no keys exist fall back to using unique
|
||||
//echo "\n{$t->name} => {$t->flags}\n";
|
||||
if (preg_match("/(auto_increment|nextval\()/i",rawurldecode($t->flags))
|
||||
$secondary_key_match = isset($options['generator_secondary_key_match']) ? $options['generator_secondary_key_match'] : 'primary|unique';
|
||||
|
||||
if (preg_match('/(auto_increment|nextval\()/i',rawurldecode($t->flags))
|
||||
|| (isset($t->autoincrement) && ($t->autoincrement === true))) {
|
||||
|
||||
// native sequences = 2
|
||||
@ -662,7 +676,7 @@ class DB_DataObject_Generator extends DB_DataObject
|
||||
}
|
||||
$ret_keys_primary[$t->name] = 'N';
|
||||
|
||||
} else if (preg_match("/(primary|unique)/i",$t->flags)) {
|
||||
} else if ($secondary_key_match && preg_match('/('.$secondary_key_match.')/i',$t->flags)) {
|
||||
// keys.. = 1
|
||||
$key_type = 'K';
|
||||
if (!preg_match("/(primary)/i",$t->flags)) {
|
||||
@ -868,10 +882,13 @@ class DB_DataObject_Generator extends DB_DataObject
|
||||
// then we should add var $_database = here
|
||||
// as database names may not always match..
|
||||
|
||||
if (empty($GLOBALS['_DB_DATAOBJECT']['CONFIG'])) {
|
||||
DB_DataObject::_loadConfig();
|
||||
}
|
||||
|
||||
// Only include the $_database property if the omit_database_var is unset or false
|
||||
|
||||
|
||||
if (isset($options["database_{$this->_database}"])) {
|
||||
if (isset($options["database_{$this->_database}"]) && empty($GLOBALS['_DB_DATAOBJECT']['CONFIG']['generator_omit_database_var'])) {
|
||||
$body .= " {$var} \$_database = '{$this->_database}'; {$p}// database name (used with database_{*} config)\n";
|
||||
}
|
||||
|
||||
@ -905,7 +922,8 @@ class DB_DataObject_Generator extends DB_DataObject
|
||||
if ($padding < 2) $padding =2;
|
||||
$p = str_repeat(' ',$padding) ;
|
||||
|
||||
$body .=" {$var} \${$t->name}; {$p}// {$t->type}({$t->len}) {$t->flags}\n";
|
||||
$length = empty($t->len) ? '' : '('.$t->len.')';
|
||||
$body .=" {$var} \${$t->name}; {$p}// {$t->type}$length {$t->flags}\n";
|
||||
|
||||
// can not do set as PEAR::DB table info doesnt support it.
|
||||
//if (substr($t->Type,0,3) == "set")
|
||||
@ -1185,7 +1203,7 @@ class DB_DataObject_Generator extends DB_DataObject
|
||||
$__DB->loadModule('Manager');
|
||||
$__DB->loadModule('Reverse');
|
||||
}
|
||||
$quotedTable = !empty($options['quote_identifiers']) ?
|
||||
$quotedTable = !empty($options['quote_identifiers_tableinfo']) ?
|
||||
$__DB->quoteIdentifier($table) : $table;
|
||||
|
||||
if (!$is_MDB2) {
|
||||
|
2
extlib/DB/DataObject/createTables.php
Executable file → Normal file
2
extlib/DB/DataObject/createTables.php
Executable file → Normal file
@ -16,7 +16,7 @@
|
||||
// | Author: Alan Knowles <alan@akbkhome.com>
|
||||
// +----------------------------------------------------------------------+
|
||||
//
|
||||
// $Id: createTables.php,v 1.24 2006/01/13 01:27:55 alan_k Exp $
|
||||
// $Id: createTables.php 277015 2009-03-12 05:51:03Z alan_k $
|
||||
//
|
||||
|
||||
// since this version doesnt use overload,
|
||||
|
@ -283,7 +283,7 @@ function NoticeAttachments() {
|
||||
},
|
||||
timeout : 0,
|
||||
autoHide : true,
|
||||
css : {'max-width':'542px', 'top':'22.5%', 'left':'32.5%'}
|
||||
css : {'max-width':'542px', 'top':'5%', 'left':'32.5%'}
|
||||
};
|
||||
|
||||
$('#content .notice a.attachment').click(function() {
|
||||
|
@ -460,16 +460,6 @@ class FacebookAction extends Action
|
||||
}
|
||||
}
|
||||
|
||||
function updateFacebookStatus($notice)
|
||||
{
|
||||
$prefix = $this->facebook->api_client->data_getUserPreference(FACEBOOK_NOTICE_PREFIX, $this->fbuid);
|
||||
$content = "$prefix $notice->content";
|
||||
|
||||
if ($this->facebook->api_client->users_hasAppPermission('status_update', $this->fbuid)) {
|
||||
$this->facebook->api_client->users_setStatus($content, $this->fbuid, false, true);
|
||||
}
|
||||
}
|
||||
|
||||
function saveNewNotice()
|
||||
{
|
||||
|
||||
@ -504,7 +494,7 @@ class FacebookAction extends Action
|
||||
$replyto = $this->trimmed('inreplyto');
|
||||
|
||||
$notice = Notice::saveNew($user->id, $content,
|
||||
'Facebook', 1, ($replyto == 'false') ? null : $replyto);
|
||||
'web', 1, ($replyto == 'false') ? null : $replyto);
|
||||
|
||||
if (is_string($notice)) {
|
||||
$this->showPage($notice);
|
||||
@ -514,8 +504,7 @@ class FacebookAction extends Action
|
||||
common_broadcast_notice($notice);
|
||||
|
||||
// Also update the user's Facebook status
|
||||
$this->updateFacebookStatus($notice);
|
||||
$this->updateProfileBox($notice);
|
||||
facebookBroadcastNotice($notice);
|
||||
|
||||
}
|
||||
|
||||
|
@ -86,13 +86,17 @@ function isFacebookBound($notice, $flink) {
|
||||
|
||||
// Check to see if the user has given the FB app status update perms
|
||||
$result = $facebook->api_client->
|
||||
users_hasAppPermission('status_update', $fbuid);
|
||||
users_hasAppPermission('publish_stream', $fbuid);
|
||||
|
||||
if ($result != 1) {
|
||||
$result = $facebook->api_client->
|
||||
users_hasAppPermission('status_update', $fbuid);
|
||||
}
|
||||
if ($result != 1) {
|
||||
$user = $flink->getUser();
|
||||
$msg = "Not sending notice $notice->id to Facebook " .
|
||||
"because user $user->nickname hasn't given the " .
|
||||
'Facebook app \'status_update\' permission.';
|
||||
'Facebook app \'status_update\' or \'publish_stream\' permission.';
|
||||
common_debug($msg);
|
||||
$success = false;
|
||||
}
|
||||
@ -138,7 +142,56 @@ function facebookBroadcastNotice($notice)
|
||||
// Okay, we're good to go, update the FB status
|
||||
|
||||
try {
|
||||
$result = $facebook->api_client->
|
||||
users_hasAppPermission('publish_stream', $fbuid);
|
||||
if($result == 1){
|
||||
// authorized to use the stream api, so use it
|
||||
$fbattachment = null;
|
||||
$attachments = $notice->attachments();
|
||||
if($attachments){
|
||||
$fbattachment=array();
|
||||
$fbattachment['media']=array();
|
||||
//facebook only supports one attachment per item
|
||||
$attachment = $attachments[0];
|
||||
$fbmedia=array();
|
||||
if(strncmp($attachment->mimetype,'image/',strlen('image/'))==0){
|
||||
$fbmedia['type']='image';
|
||||
$fbmedia['src']=$attachment->url;
|
||||
$fbmedia['href']=$attachment->url;
|
||||
$fbattachment['media'][]=$fbmedia;
|
||||
/* Video doesn't seem to work. The notice never makes it to facebook, and no error is reported.
|
||||
}else if(strncmp($attachment->mimetype,'video/',strlen('image/'))==0 || $attachment->mimetype="application/ogg"){
|
||||
$fbmedia['type']='video';
|
||||
$fbmedia['video_src']=$attachment->url;
|
||||
// http://wiki.developers.facebook.com/index.php/Attachment_%28Streams%29
|
||||
// says that preview_img is required... but we have no value to put in it
|
||||
// $fbmedia['preview_img']=$attachment->url;
|
||||
if($attachment->title){
|
||||
$fbmedia['video_title']=$attachment->title;
|
||||
}
|
||||
$fbmedia['video_type']=$attachment->mimetype;
|
||||
$fbattachment['media'][]=$fbmedia;
|
||||
*/
|
||||
}else if($attachment->mimetype=='audio/mpeg'){
|
||||
$fbmedia['type']='mp3';
|
||||
$fbmedia['src']=$attachment->url;
|
||||
$fbattachment['media'][]=$fbmedia;
|
||||
}else if($attachment->mimetype=='application/x-shockwave-flash'){
|
||||
$fbmedia['type']='flash';
|
||||
// http://wiki.developers.facebook.com/index.php/Attachment_%28Streams%29
|
||||
// says that imgsrc is required... but we have no value to put in it
|
||||
// $fbmedia['imgsrc']='';
|
||||
$fbmedia['swfsrc']=$attachment->url;
|
||||
$fbattachment['media'][]=$fbmedia;
|
||||
}else{
|
||||
$fbattachment['name']=($attachment->title?$attachment->title:$attachment->url);
|
||||
$fbattachment['href']=$attachment->url;
|
||||
}
|
||||
}
|
||||
$facebook->api_client->stream_publish($status, $fbattachment, null, null, $fbuid);
|
||||
}else{
|
||||
$facebook->api_client->users_setStatus($status, $fbuid, false, true);
|
||||
}
|
||||
} catch(FacebookRestClientException $e) {
|
||||
common_log(LOG_ERR, $e->getMessage());
|
||||
common_log(LOG_ERR,
|
||||
@ -150,7 +203,7 @@ function facebookBroadcastNotice($notice)
|
||||
if ($code >= 200) {
|
||||
|
||||
// 200 The application does not have permission to operate on the passed in uid parameter.
|
||||
// 250 Updating status requires the extended permission status_update.
|
||||
// 250 Updating status requires the extended permission status_update or publish_stream.
|
||||
// see: http://wiki.developers.facebook.com/index.php/Users.setStatus#Example_Return_XML
|
||||
|
||||
remove_facebook_app($flink);
|
||||
|
@ -266,7 +266,7 @@ class Router
|
||||
$m->connect('api/statuses/:method/:argument',
|
||||
array('action' => 'api',
|
||||
'apiaction' => 'statuses'),
|
||||
array('method' => '(user_timeline|friends_timeline|replies|mentions|show|destroy|friends|followers)'));
|
||||
array('method' => '(|user_timeline|friends_timeline|replies|mentions|show|destroy|friends|followers)'));
|
||||
|
||||
// users
|
||||
|
||||
@ -394,6 +394,24 @@ class Router
|
||||
array('action' => 'api',
|
||||
'apiaction' => 'laconica'));
|
||||
|
||||
// Groups
|
||||
$m->connect('api/laconica/groups/:method/:argument',
|
||||
array('action' => 'api',
|
||||
'apiaction' => 'groups'));
|
||||
|
||||
$m->connect('api/laconica/groups/:method',
|
||||
array('action' => 'api',
|
||||
'apiaction' => 'groups'));
|
||||
|
||||
// Tags
|
||||
$m->connect('api/laconica/tags/:method/:argument',
|
||||
array('action' => 'api',
|
||||
'apiaction' => 'tags'));
|
||||
|
||||
$m->connect('api/laconica/tags/:method',
|
||||
array('action' => 'api',
|
||||
'apiaction' => 'tags'));
|
||||
|
||||
// search
|
||||
$m->connect('api/search.atom', array('action' => 'twitapisearchatom'));
|
||||
$m->connect('api/search.json', array('action' => 'twitapisearchjson'));
|
||||
|
@ -229,6 +229,24 @@ class Rss10Action extends Action
|
||||
}
|
||||
}
|
||||
|
||||
// XXX: Surely there should be a common function to do this?
|
||||
function extract_tags ($string)
|
||||
{
|
||||
$count = preg_match_all('/(?:^|\s)#([A-Za-z0-9_\-\.]{1,64})/', strtolower($string), $match);
|
||||
if (!count)
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
$rv = array();
|
||||
foreach ($match[1] as $tag)
|
||||
{
|
||||
$rv[] = common_canonical_tag($tag);
|
||||
}
|
||||
|
||||
return array_unique($rv);
|
||||
}
|
||||
|
||||
function showItem($notice)
|
||||
{
|
||||
$profile = Profile::staticGet($notice->profile_id);
|
||||
@ -256,10 +274,46 @@ class Rss10Action extends Action
|
||||
$attachments = $notice->attachments();
|
||||
if($attachments){
|
||||
foreach($attachments as $attachment){
|
||||
$this->element('enc:enclosure', array('rdf:resource'=>$attachment->url,'enc:type'=>$attachment->mimetype,'enc:length'=>$attachment->size), null);
|
||||
if ($attachment->isEnclosure()) {
|
||||
// DO NOT move xmlns declaration to root element. Making it
|
||||
// the default namespace here improves compatibility with
|
||||
// real-world feed readers.
|
||||
$attribs = array(
|
||||
'rdf:resource' => $attachment->url,
|
||||
'url' => $attachment->url,
|
||||
'xmlns' => 'http://purl.oclc.org/net/rss_2.0/enc#'
|
||||
);
|
||||
if ($attachment->title) {
|
||||
$attribs['dc:title'] = $attachment->title;
|
||||
}
|
||||
if ($attachment->modified) {
|
||||
$attribs['dc:date'] = common_date_w3dtf($attachment->modified);
|
||||
}
|
||||
if ($attachment->size) {
|
||||
$attribs['length'] = $attachment->size;
|
||||
}
|
||||
if ($attachment->mimetype) {
|
||||
$attribs['type'] = $attachment->mimetype;
|
||||
}
|
||||
$this->element('enclosure', $attribs);
|
||||
}
|
||||
$this->element('sioc:links_to', array('rdf:resource'=>$attachment->url));
|
||||
}
|
||||
}
|
||||
$tags = $this->extract_tags($notice->content);
|
||||
if (!empty($tags)) {
|
||||
foreach ($tags as $tag)
|
||||
{
|
||||
$tagpage = common_local_url('tag', array('tag' => $tag));
|
||||
$tagrss = common_local_url('tagrss', array('tag' => $tag));
|
||||
$this->elementStart('ctag:tagged');
|
||||
$this->elementStart('ctag:Tag', array('rdf:about'=>$tagpage.'#concept', 'ctag:label'=>$tag));
|
||||
$this->element('foaf:page', array('rdf:resource'=>$tagpage));
|
||||
$this->element('rdfs:seeAlso', array('rdf:resource'=>$tagrss));
|
||||
$this->elementEnd('ctag:Tag');
|
||||
$this->elementEnd('ctag:tagged');
|
||||
}
|
||||
}
|
||||
|
||||
$this->elementEnd('item');
|
||||
$this->creators[$creator_uri] = $profile;
|
||||
}
|
||||
@ -295,8 +349,8 @@ class Rss10Action extends Action
|
||||
'http://creativecommons.org/ns#',
|
||||
'xmlns:content' =>
|
||||
'http://purl.org/rss/1.0/modules/content/',
|
||||
'xmlns:enc' =>
|
||||
'http://purl.oclc.org/net/rss_2.0/enc#',
|
||||
'xmlns:ctag' =>
|
||||
'http://commontag.org/ns#',
|
||||
'xmlns:foaf' =>
|
||||
'http://xmlns.com/foaf/0.1/',
|
||||
'xmlns:sioc' =>
|
||||
|
@ -186,6 +186,21 @@ class TwitterapiAction extends Action
|
||||
$twitter_status['favorited'] = false;
|
||||
}
|
||||
|
||||
# Enclosures
|
||||
$attachments = $notice->attachments();
|
||||
$twitter_status['attachments']=array();
|
||||
if($attachments){
|
||||
foreach($attachments as $attachment){
|
||||
if ($attachment->isEnclosure()) {
|
||||
$enclosure=array();
|
||||
$enclosure['url']=$attachment->url;
|
||||
$enclosure['mimetype']=$attachment->mimetype;
|
||||
$enclosure['size']=$attachment->size;
|
||||
$twitter_status['attachments'][]=$enclosure;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($include_user) {
|
||||
# Don't get notice (recursive!)
|
||||
$twitter_user = $this->twitter_user_array($profile, false);
|
||||
@ -218,6 +233,7 @@ class TwitterapiAction extends Action
|
||||
if($attachments){
|
||||
$entry['enclosures']=array();
|
||||
foreach($attachments as $attachment){
|
||||
if ($attachment->isEnclosure()) {
|
||||
$enclosure=array();
|
||||
$enclosure['url']=$attachment->url;
|
||||
$enclosure['mimetype']=$attachment->mimetype;
|
||||
@ -225,6 +241,7 @@ class TwitterapiAction extends Action
|
||||
$entry['enclosures'][]=$enclosure;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# RSS Item specific
|
||||
$entry['description'] = $entry['content'];
|
||||
@ -774,6 +791,34 @@ class TwitterapiAction extends Action
|
||||
}
|
||||
}
|
||||
|
||||
function get_group($id, $apidata=null)
|
||||
{
|
||||
if (empty($id)) {
|
||||
|
||||
if (is_numeric($this->arg('id'))) {
|
||||
return User_group::staticGet($this->arg('id'));
|
||||
} else if ($this->arg('id')) {
|
||||
$nickname = common_canonical_nickname($this->arg('id'));
|
||||
return User_group::staticGet('nickname', $nickname);
|
||||
} else if ($this->arg('group_id')) {
|
||||
// This is to ensure that a non-numeric user_id still
|
||||
// overrides screen_name even if it doesn't get used
|
||||
if (is_numeric($this->arg('group_id'))) {
|
||||
return User_group::staticGet('id', $this->arg('group_id'));
|
||||
}
|
||||
} else if ($this->arg('group_name')) {
|
||||
$nickname = common_canonical_nickname($this->arg('group_name'));
|
||||
return User_group::staticGet('nickname', $nickname);
|
||||
}
|
||||
|
||||
} else if (is_numeric($id)) {
|
||||
return User_group::staticGet($id);
|
||||
} else {
|
||||
$nickname = common_canonical_nickname($id);
|
||||
return User_group::staticGet('nickname', $nickname);
|
||||
}
|
||||
}
|
||||
|
||||
function get_profile($id)
|
||||
{
|
||||
if (is_numeric($id)) {
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -3,29 +3,25 @@
|
||||
# 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: 2009-01-25 16:24+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2009-07-07 22:07+0000\n"
|
||||
"Last-Translator: Tomas Kral <tomas.kral@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"X-Generator: Pootle 1.1.0\n"
|
||||
|
||||
# jak přeložit stream?
|
||||
#: ../actions/noticesearchrss.php:64 actions/noticesearchrss.php:68
|
||||
#: actions/noticesearchrss.php:88
|
||||
#, fuzzy, php-format
|
||||
msgid " Search Stream for \"%s\""
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"Hledej ve Streamu \"%s\"\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr " Hledej \"%s\" ve Streamu"
|
||||
|
||||
#: ../actions/finishopenidlogin.php:82 ../actions/register.php:191
|
||||
#: actions/finishopenidlogin.php:88 actions/register.php:205
|
||||
@ -33,12 +29,13 @@ msgstr ""
|
||||
msgid ""
|
||||
" except this private data: password, email address, IM address, phone number."
|
||||
msgstr ""
|
||||
"až na tyto privátní data: heslo, emailová adresa, IM adresa, telefonní číslo."
|
||||
" až na tyto privátní data: heslo, emailová adresa, IM adresa, telefonní "
|
||||
"číslo."
|
||||
|
||||
#: ../actions/showstream.php:400 ../lib/stream.php:109
|
||||
#: actions/showstream.php:418 lib/mailbox.php:164 lib/stream.php:76
|
||||
msgid " from "
|
||||
msgstr ""
|
||||
msgstr " od "
|
||||
|
||||
#: ../actions/twitapistatuses.php:478 actions/twitapistatuses.php:412
|
||||
#: actions/twitapistatuses.php:347
|
||||
@ -861,20 +858,14 @@ msgstr "Nahrávání obrázku selhalo."
|
||||
#: actions/allrss.php:64 actions/all.php:75 actions/allrss.php:107
|
||||
#, fuzzy, php-format
|
||||
msgid "Feed for friends of %s"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"Feed přítel uživatele: %s\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "Feed přítel uživatele: %s"
|
||||
|
||||
#: ../actions/replies.php:65 ../actions/repliesrss.php:80
|
||||
#: actions/replies.php:65 actions/repliesrss.php:66 actions/replies.php:134
|
||||
#: actions/repliesrss.php:71
|
||||
#, fuzzy, php-format
|
||||
msgid "Feed for replies to %s"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"Feed odpovědí na %s\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "Feed odpovědí na %s"
|
||||
|
||||
#: ../actions/tag.php:55 actions/tag.php:55 actions/tag.php:61
|
||||
#, php-format
|
||||
@ -1581,10 +1572,7 @@ msgstr ""
|
||||
#: actions/showstream.php:192
|
||||
#, fuzzy, php-format
|
||||
msgid "Notice feed for %s"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"Feed sdělení pro %s\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "Feed sdělení pro %s"
|
||||
|
||||
#: ../actions/shownotice.php:39 actions/shownotice.php:39
|
||||
#: actions/shownotice.php:94
|
||||
@ -1808,10 +1796,7 @@ msgstr "Neznámý profil"
|
||||
#: ../actions/public.php:54 actions/public.php:54 actions/public.php:124
|
||||
#, fuzzy
|
||||
msgid "Public Stream Feed"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"Veřejný Stream Feed\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "Veřejný Stream Feed"
|
||||
|
||||
#: ../actions/public.php:33 actions/public.php:33 actions/public.php:109
|
||||
#: lib/publicgroupnav.php:77
|
||||
@ -1985,10 +1970,7 @@ msgstr "Hledat"
|
||||
#: actions/noticesearch.php:127
|
||||
#, fuzzy
|
||||
msgid "Search Stream Feed"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"Hledat ve Stream Feed\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "Hledat ve Stream Feed"
|
||||
|
||||
#: ../actions/noticesearch.php:30 actions/noticesearch.php:30
|
||||
#: actions/noticesearch.php:57
|
||||
@ -3602,10 +3584,7 @@ msgstr ""
|
||||
#: actions/facebookinvite.php:105
|
||||
#, fuzzy, php-format
|
||||
msgid "Invite your friends to use %s"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"Feed přítel uživatele: %s\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "Feed přítel uživatele: %s"
|
||||
|
||||
#: actions/facebookinvite.php:113
|
||||
#, php-format
|
||||
@ -4001,10 +3980,7 @@ msgstr ""
|
||||
#: actions/publictagcloud.php:57
|
||||
#, fuzzy
|
||||
msgid "Public tag cloud"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"Veřejný Stream Feed\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "Veřejný Stream Feed"
|
||||
|
||||
#: actions/publictagcloud.php:63
|
||||
#, php-format
|
||||
@ -4115,10 +4091,7 @@ msgstr ""
|
||||
#: actions/showgroup.php:323
|
||||
#, fuzzy, php-format
|
||||
msgid "Notice feed for %s group"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"Feed sdělení pro %s\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "Feed sdělení pro %s"
|
||||
|
||||
#: actions/showgroup.php:357 lib/groupnav.php:90
|
||||
#, fuzzy
|
||||
@ -4682,12 +4655,12 @@ msgstr "%1 od teď naslouchá tvým sdělením v %2"
|
||||
#: lib/mail.php:254
|
||||
#, fuzzy, php-format
|
||||
msgid "Location: %s\n"
|
||||
msgstr "Umístění"
|
||||
msgstr "Umístění %s\n"
|
||||
|
||||
#: lib/mail.php:256
|
||||
#, fuzzy, php-format
|
||||
msgid "Homepage: %s\n"
|
||||
msgstr "Moje stránky"
|
||||
msgstr "Moje stránky: %s\n"
|
||||
|
||||
#: lib/mail.php:258
|
||||
#, php-format
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-01-25 16:24+0000\n"
|
||||
"PO-Revision-Date: 2009-01-30 19:59+0000\n"
|
||||
"Last-Translator: Paula Salazar <psalazar@cmet.net>\n"
|
||||
"PO-Revision-Date: 2009-07-12 05:49+0000\n"
|
||||
"Last-Translator: Jorge <xchido@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -45,10 +45,11 @@ msgstr "%1$s / Actualizaciones en respuesta a %2$s"
|
||||
#: ../actions/invite.php:168 actions/invite.php:176 actions/invite.php:211
|
||||
#, php-format
|
||||
msgid "%1$s has invited you to join them on %2$s"
|
||||
msgstr "%1$s te ha invitado a unirte a ellos en %2$s"
|
||||
msgstr "%1$s te ha invitado a que te unas con el/ellos en %2$s"
|
||||
|
||||
#: ../actions/invite.php:170
|
||||
#, php-format
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"%1$s has invited you to join them on %2$s (%3$s).\n"
|
||||
"\n"
|
||||
@ -94,12 +95,13 @@ msgstr ""
|
||||
"\n"
|
||||
"%5$s\n"
|
||||
"\n"
|
||||
"Si quieres probar el servicio, cliquea el enlace debajo para aceptar la "
|
||||
"invitación.\n"
|
||||
"Si quieres inscribirte y probar el servicio, haz click en enlace debajo para "
|
||||
"aceptar la invitación.\n"
|
||||
"\n"
|
||||
"%6$s\n"
|
||||
"\n"
|
||||
"Si no, puedes ignorar este mensaje. Gracias por tu paciencia y tiempo.\n"
|
||||
"Si no deseas inscribirte puedes ignorar este mensaje. Gracias por tu "
|
||||
"paciencia y tiempo.\n"
|
||||
"\n"
|
||||
"Sinceramente, %2$s\n"
|
||||
|
||||
@ -147,7 +149,7 @@ msgstr "%s (%s)"
|
||||
#: actions/publicrss.php:90
|
||||
#, php-format
|
||||
msgid "%s Public Stream"
|
||||
msgstr "Corriente pública de %s"
|
||||
msgstr "Mensajes publicos de %s"
|
||||
|
||||
#: ../actions/all.php:47 ../actions/allrss.php:60
|
||||
#: ../actions/twitapistatuses.php:238 ../lib/stream.php:51 actions/all.php:47
|
||||
@ -4348,19 +4350,19 @@ msgid "These are the people who listen to "
|
||||
msgstr "Estas son las personas que escuchan"
|
||||
|
||||
#: actions/subscribers.php:67
|
||||
#, fuzzy, php-format
|
||||
#, php-format
|
||||
msgid "These are the people who "
|
||||
msgstr "Estas son las personas que "
|
||||
|
||||
#: actions/subscriptions.php:52
|
||||
#, fuzzy, php-format
|
||||
#, php-format
|
||||
msgid "%s subscriptions"
|
||||
msgstr "Suscripciones %s"
|
||||
|
||||
#: actions/subscriptions.php:54
|
||||
#, fuzzy, php-format
|
||||
msgid "%s subscriptions, page %d"
|
||||
msgstr "Suscripciones, página %d"
|
||||
msgstr "%s suscripciones, página %d"
|
||||
|
||||
#: actions/subscriptions.php:65
|
||||
#, fuzzy
|
||||
@ -4393,9 +4395,8 @@ msgid "Not logged in"
|
||||
msgstr "No conectado."
|
||||
|
||||
#: actions/tagother.php:39
|
||||
#, fuzzy
|
||||
msgid "No id argument."
|
||||
msgstr "No existe argumento de Id."
|
||||
msgstr "No existe argumento de ID."
|
||||
|
||||
#: actions/tagother.php:65
|
||||
#, php-format
|
||||
@ -4435,12 +4436,11 @@ msgstr ""
|
||||
"Usar este formulario para agregar tags a tus suscriptores o suscripciones."
|
||||
|
||||
#: actions/tagrss.php:35
|
||||
#, fuzzy
|
||||
msgid "No such tag."
|
||||
msgstr "No existe ese tag."
|
||||
|
||||
#: actions/tagrss.php:66
|
||||
#, fuzzy, php-format
|
||||
#, php-format
|
||||
msgid "Microblog tagged with %s"
|
||||
msgstr "Microblog marcado con %s"
|
||||
|
||||
@ -4466,7 +4466,6 @@ msgid "Twitter user name"
|
||||
msgstr "Nombre de usuario de Twitter"
|
||||
|
||||
#: actions/twittersettings.php:126
|
||||
#, fuzzy
|
||||
msgid "Twitter password"
|
||||
msgstr "Contraseña de Twitter"
|
||||
|
||||
@ -4494,9 +4493,8 @@ msgid "No profile id in request."
|
||||
msgstr "Ningún perfil de Id en solicitud."
|
||||
|
||||
#: actions/unsubscribe.php:57
|
||||
#, fuzzy
|
||||
msgid "No profile with that id."
|
||||
msgstr "Ninfún perfil con ese Id."
|
||||
msgstr "Ningún perfil con ese ID."
|
||||
|
||||
#: actions/unsubscribe.php:71
|
||||
#, fuzzy
|
||||
|
Binary file not shown.
@ -19,8 +19,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-01-25 16:24+0000\n"
|
||||
"PO-Revision-Date: 2009-03-07 19:21+0000\n"
|
||||
"Last-Translator: Anarcat <anarcat@anarcat.ath.cx>\n"
|
||||
"PO-Revision-Date: 2009-05-01 23:42+0000\n"
|
||||
"Last-Translator: Nicolas Ritoux <niko@vulusu.ca>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -64,7 +64,7 @@ msgstr "%1$s / Réponses à %2$s"
|
||||
#: actions/invite.php:211
|
||||
#, php-format
|
||||
msgid "%1$s has invited you to join them on %2$s"
|
||||
msgstr "%1$s vous invite à vous inscrire à %2$s"
|
||||
msgstr "%1$s vous invite à vous inscrire sur %2$s"
|
||||
|
||||
#: ../actions/invite.php:170
|
||||
#, php-format
|
||||
@ -91,11 +91,16 @@ msgid ""
|
||||
"\n"
|
||||
"Sincerely, %2$s\n"
|
||||
msgstr ""
|
||||
"%1$s vous invite à vous inscrire à %2$s (%3$s).\n"
|
||||
"%1$s vous invite à vous inscrire sur %2$s (%3$s).\n"
|
||||
"\n"
|
||||
"%2$s est un service de micro-blogging qui vous laisse garder contact avec des personnes que vous connaissez et des personnes qui vous intéressent.\n"
|
||||
"%2$s est un service de micro-blogging qui vous permet de rester en contact "
|
||||
"avec des personnes que vous connaissez et des personnes qui vous "
|
||||
"intéressent.\n"
|
||||
"\n"
|
||||
"Vous pouvez aussi partager des nouvelles à propos de vous, vos pensées, ou votre vie en ligne avec les personnes qui vous connaissent. C'est également un outil utile pour rencontrer de nouvelles personnes qui partagent vos intérêts.\n"
|
||||
"Vous pouvez aussi partager des informations sur vous, vos idées, ou votre "
|
||||
"vie en ligne avec les personnes qui vous connaissent. C'est également un "
|
||||
"outil utile pour rencontrer de nouvelles personnes qui partagent vos "
|
||||
"intérêts.\n"
|
||||
"\n"
|
||||
"%1$s dit:\n"
|
||||
"\n"
|
||||
@ -105,11 +110,13 @@ msgstr ""
|
||||
"\n"
|
||||
"%5$s\n"
|
||||
"\n"
|
||||
"Si vous souhaitez essayez ce service, cliquez sur le lien si dessous pour accepter l'invitation\n"
|
||||
"Si vous souhaitez essayez ce service, cliquez sur le lien ci-dessous pour "
|
||||
"accepter l'invitation\n"
|
||||
"\n"
|
||||
"%6$s\n"
|
||||
"\n"
|
||||
"Sinon, vous pouvez ignorer ce message. Merci pour votre patience et votre temps.\n"
|
||||
"Sinon, vous pouvez ignorer ce message. Merci pour votre patience et votre "
|
||||
"temps.\n"
|
||||
"\n"
|
||||
"Cordialement, %2$s\n"
|
||||
|
||||
@ -280,12 +287,17 @@ msgstr "Un code de confirmation a été envoyé à votre adresse de messagerie i
|
||||
#: ../actions/emailsettings.php:213
|
||||
#: actions/emailsettings.php:231
|
||||
msgid "A confirmation code was sent to the email address you added. Check your inbox (and spam box!) for the code and instructions on how to use it."
|
||||
msgstr "Un code de confirmation a été envoyé à l'adresse courriel indiquée. Vérifiez votre boite de réception pour récupérer le code et les instructions."
|
||||
msgstr ""
|
||||
"Un code de confirmation a été envoyé à l'adresse courriel indiquée. Vérifiez "
|
||||
"votre boîte de réception pour récupérer le code et les instructions."
|
||||
|
||||
#: ../actions/smssettings.php:216
|
||||
#: actions/smssettings.php:224
|
||||
msgid "A confirmation code was sent to the phone number you added. Check your inbox (and spam box!) for the code and instructions on how to use it."
|
||||
msgstr "Un code de confirmation a été envoyé au numéro de téléphone indiqué. Vérifiez votre boite de réception pour récupérer le code et les instructions."
|
||||
msgstr ""
|
||||
"Un code de confirmation a été envoyé au numéro de téléphone indiqué. "
|
||||
"Vérifiez votre boîte de réception pour récupérer le code et les "
|
||||
"instructions."
|
||||
|
||||
#: ../actions/twitapiaccount.php:49
|
||||
#: ../actions/twitapihelp.php:45
|
||||
@ -2749,7 +2761,7 @@ msgstr ""
|
||||
#: lib/util.php:346
|
||||
#: lib/action.php:574
|
||||
msgid "Source"
|
||||
msgstr "Provenance"
|
||||
msgstr "Source"
|
||||
|
||||
#: ../actions/showstream.php:296
|
||||
#: actions/showstream.php:311
|
||||
|
Binary file not shown.
@ -9,7 +9,7 @@ msgstr ""
|
||||
"Project-Id-Version: laconica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-01-25 16:24+0000\n"
|
||||
"PO-Revision-Date: 2009-02-18 12:57+0000\n"
|
||||
"PO-Revision-Date: 2009-06-04 14:09+0000\n"
|
||||
"Last-Translator: Milo Casagrande <milo@ubuntu.com>\n"
|
||||
"Language-Team: Italian <tp@lists.linux.it>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -3555,7 +3555,7 @@ msgid "Failed to save block information."
|
||||
msgstr "Salvataggio delle informazioni per il blocco non riuscito."
|
||||
|
||||
#: actions/confirmaddress.php:159
|
||||
#, fuzzy, php-format
|
||||
#, php-format
|
||||
msgid "The address \"%s\" has been "
|
||||
msgstr "L'indirizzo \"%s\" è stato "
|
||||
|
||||
@ -3624,12 +3624,10 @@ msgid "Awaiting confirmation on this address. "
|
||||
msgstr "Attesa la conferma per questo indirizzo. "
|
||||
|
||||
#: actions/emailsettings.php:139 actions/smssettings.php:150
|
||||
#, fuzzy
|
||||
msgid "Make a new email address for posting to; "
|
||||
msgstr "Crea un nuovo indirizzo email per inviare messaggi; "
|
||||
|
||||
#: actions/emailsettings.php:157
|
||||
#, fuzzy
|
||||
msgid "Send me email when someone "
|
||||
msgstr "Inviami un'email quando qualcuno "
|
||||
|
||||
@ -4134,7 +4132,7 @@ msgstr "URL della tua pagina web, blog "
|
||||
#: actions/register.php:404
|
||||
#, fuzzy
|
||||
msgid "Describe yourself and your "
|
||||
msgstr "Descriviti assieme ai tuoi "
|
||||
msgstr "Descrivi te e i tuoi "
|
||||
|
||||
#: actions/register.php:410
|
||||
#, fuzzy
|
||||
@ -4607,7 +4605,7 @@ msgstr "Blocca"
|
||||
# è un suggerimento
|
||||
#: lib/disfavorform.php:114 lib/disfavorform.php:140
|
||||
msgid "Disfavor this notice"
|
||||
msgstr "Togli questa nota dai preferiti"
|
||||
msgstr "Togli questo messaggio dai preferiti"
|
||||
|
||||
#: lib/facebookaction.php:268
|
||||
#, php-format
|
||||
|
Binary file not shown.
@ -15,8 +15,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-01-25 16:24+0000\n"
|
||||
"PO-Revision-Date: 2009-01-26 15:04+0000\n"
|
||||
"Last-Translator: JaeHo Choi <sayhi2choi@gmail.com>\n"
|
||||
"PO-Revision-Date: 2009-05-19 00:01+0000\n"
|
||||
"Last-Translator: Roberto A Tsuchiya <beto.tsuchiya@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -39,7 +39,7 @@ msgstr "個人情報を除く:パスワード、メールアドレス、IMアド
|
||||
#: ../actions/showstream.php:400 ../lib/stream.php:109
|
||||
#: actions/showstream.php:418 lib/mailbox.php:164 lib/stream.php:76
|
||||
msgid " from "
|
||||
msgstr ""
|
||||
msgstr "から"
|
||||
|
||||
#: ../actions/twitapistatuses.php:478 actions/twitapistatuses.php:412
|
||||
#: actions/twitapistatuses.php:347
|
||||
@ -142,18 +142,18 @@ msgstr "%s & ともだち"
|
||||
#: actions/twitapistatuses.php:33
|
||||
#, php-format
|
||||
msgid "%s public timeline"
|
||||
msgstr ""
|
||||
msgstr "%s パブリックタイムライン"
|
||||
|
||||
#: ../lib/mail.php:206 lib/mail.php:212 lib/mail.php:411
|
||||
#, php-format
|
||||
msgid "%s status"
|
||||
msgstr ""
|
||||
msgstr "%s ステータス"
|
||||
|
||||
#: ../actions/twitapistatuses.php:338 actions/twitapistatuses.php:265
|
||||
#: actions/twitapistatuses.php:199
|
||||
#, php-format
|
||||
msgid "%s timeline"
|
||||
msgstr ""
|
||||
msgstr "%s タイムライン"
|
||||
|
||||
#: ../actions/twitapistatuses.php:52 actions/twitapistatuses.php:52
|
||||
#: actions/twitapistatuses.php:36
|
||||
@ -194,7 +194,7 @@ msgstr "1~64字以内で、小文字アルファベット、数字、スペー
|
||||
|
||||
#: ../actions/register.php:152 actions/register.php:166
|
||||
msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required."
|
||||
msgstr ""
|
||||
msgstr "1~64字以内で、小文字アルファベット、数字、スペース(句読点を除く)が必須です"
|
||||
|
||||
#: ../actions/password.php:42 actions/profilesettings.php:181
|
||||
#: actions/passwordsettings.php:102
|
||||
@ -209,7 +209,7 @@ msgstr "6文字以上。お忘れなく!"
|
||||
#: ../actions/register.php:154 actions/register.php:168
|
||||
#: actions/register.php:373
|
||||
msgid "6 or more characters. Required."
|
||||
msgstr ""
|
||||
msgstr "6文字以上が必須です。"
|
||||
|
||||
#: ../actions/imsettings.php:197 actions/imsettings.php:205
|
||||
#, php-format
|
||||
@ -304,7 +304,7 @@ msgstr "OpenIDを追加"
|
||||
#: ../lib/settingsaction.php:97 lib/settingsaction.php:91
|
||||
#: lib/accountsettingsaction.php:117
|
||||
msgid "Add or remove OpenIDs"
|
||||
msgstr ""
|
||||
msgstr "OpenIDを追加または削除"
|
||||
|
||||
#: ../actions/emailsettings.php:38 ../actions/imsettings.php:39
|
||||
#: ../actions/smssettings.php:39 actions/emailsettings.php:39
|
||||
@ -420,7 +420,7 @@ msgstr "バイオグラフィが長すぎます。(最長140字)"
|
||||
|
||||
#: ../lib/deleteaction.php:41 lib/deleteaction.php:41 lib/deleteaction.php:69
|
||||
msgid "Can't delete this notice."
|
||||
msgstr ""
|
||||
msgstr "この通知を削除できません。"
|
||||
|
||||
#: ../actions/updateprofile.php:119 actions/updateprofile.php:120
|
||||
#: actions/updateprofile.php:123
|
||||
@ -454,7 +454,7 @@ msgstr "その Jabbar ID を正規化できません"
|
||||
#: ../actions/emailsettings.php:181 actions/emailsettings.php:199
|
||||
#: actions/emailsettings.php:311
|
||||
msgid "Cannot normalize that email address"
|
||||
msgstr ""
|
||||
msgstr "そのメールアドレスを正規化できません"
|
||||
|
||||
#: ../actions/password.php:45 actions/profilesettings.php:184
|
||||
#: actions/passwordsettings.php:110
|
||||
@ -464,7 +464,7 @@ msgstr "変更"
|
||||
#: ../lib/settingsaction.php:88 lib/settingsaction.php:88
|
||||
#: lib/accountsettingsaction.php:114
|
||||
msgid "Change email handling"
|
||||
msgstr ""
|
||||
msgstr "メールの扱いを変更"
|
||||
|
||||
#: ../actions/password.php:32 actions/profilesettings.php:36
|
||||
#: actions/passwordsettings.php:58
|
||||
@ -473,12 +473,12 @@ msgstr "パスワードの変更"
|
||||
|
||||
#: ../lib/settingsaction.php:94 lib/accountsettingsaction.php:111
|
||||
msgid "Change your password"
|
||||
msgstr ""
|
||||
msgstr "パスワードの変更"
|
||||
|
||||
#: ../lib/settingsaction.php:85 lib/settingsaction.php:85
|
||||
#: lib/accountsettingsaction.php:105
|
||||
msgid "Change your profile settings"
|
||||
msgstr ""
|
||||
msgstr "プロファイル設定の変更"
|
||||
|
||||
#: ../actions/password.php:43 ../actions/recoverpassword.php:181
|
||||
#: ../actions/register.php:155 ../actions/smssettings.php:65
|
||||
@ -505,7 +505,7 @@ msgstr "確認作業がキャンセルされました。"
|
||||
#: ../actions/smssettings.php:63 actions/smssettings.php:63
|
||||
#: actions/smssettings.php:118
|
||||
msgid "Confirmation code"
|
||||
msgstr ""
|
||||
msgstr "確認コード"
|
||||
|
||||
#: ../actions/confirmaddress.php:38 actions/confirmaddress.php:38
|
||||
#: actions/confirmaddress.php:80
|
||||
@ -739,7 +739,7 @@ msgstr ""
|
||||
#: ../actions/emailsettings.php:32 actions/emailsettings.php:32
|
||||
#: actions/emailsettings.php:60
|
||||
msgid "Email Settings"
|
||||
msgstr ""
|
||||
msgstr "メール設定"
|
||||
|
||||
#: ../actions/register.php:73 actions/register.php:80 actions/register.php:163
|
||||
msgid "Email address already exists."
|
||||
@ -756,7 +756,7 @@ msgstr ""
|
||||
|
||||
#: ../actions/invite.php:129 actions/invite.php:137 actions/invite.php:174
|
||||
msgid "Email addresses"
|
||||
msgstr ""
|
||||
msgstr "メールアドレス"
|
||||
|
||||
#: ../actions/recoverpassword.php:191 actions/recoverpassword.php:197
|
||||
#: actions/recoverpassword.php:231
|
||||
@ -1011,7 +1011,7 @@ msgstr "不正なアバターURL '%s'"
|
||||
#: ../actions/invite.php:55 actions/invite.php:62 actions/invite.php:70
|
||||
#, php-format
|
||||
msgid "Invalid email address: %s"
|
||||
msgstr ""
|
||||
msgstr "不正なメールアドレス:%s'"
|
||||
|
||||
#: ../actions/updateprofile.php:98 actions/updateprofile.php:99
|
||||
#: actions/updateprofile.php:102
|
||||
@ -4306,16 +4306,15 @@ msgstr "マイクロブログ by %s"
|
||||
|
||||
#: actions/twitapiblocks.php:47
|
||||
msgid "Block user failed."
|
||||
msgstr ""
|
||||
msgstr "ユーザのブロックに失敗しました。"
|
||||
|
||||
#: actions/twitapiblocks.php:69
|
||||
msgid "Unblock user failed."
|
||||
msgstr ""
|
||||
msgstr "ユーザのアンブロックに失敗しました。"
|
||||
|
||||
#: actions/twitapiusers.php:48
|
||||
#, fuzzy
|
||||
msgid "Not found."
|
||||
msgstr "リクエストがありません!"
|
||||
msgstr "見つかりません。"
|
||||
|
||||
#: actions/twittersettings.php:71
|
||||
msgid "Add your Twitter account to automatically send "
|
||||
@ -4326,52 +4325,47 @@ msgid "Twitter user name"
|
||||
msgstr ""
|
||||
|
||||
#: actions/twittersettings.php:126
|
||||
#, fuzzy
|
||||
msgid "Twitter password"
|
||||
msgstr "新しいパスワード"
|
||||
msgstr "Twitterパスワード"
|
||||
|
||||
#: actions/twittersettings.php:228
|
||||
msgid "Twitter Friends"
|
||||
msgstr ""
|
||||
msgstr "Twitterフレンド"
|
||||
|
||||
#: actions/twittersettings.php:327
|
||||
msgid "Username must have only numbers, "
|
||||
msgstr ""
|
||||
|
||||
#: actions/twittersettings.php:341
|
||||
#, fuzzy, php-format
|
||||
#, php-format
|
||||
msgid "Unable to retrieve account information "
|
||||
msgstr "メール承認を削除できません"
|
||||
msgstr "アカウント情報を取得できません"
|
||||
|
||||
#: actions/unblock.php:108
|
||||
#, fuzzy
|
||||
msgid "Error removing the block."
|
||||
msgstr "ユーザ保存エラー"
|
||||
msgstr "ブロックの削除エラー"
|
||||
|
||||
#: actions/unsubscribe.php:50
|
||||
#, fuzzy
|
||||
msgid "No profile id in request."
|
||||
msgstr "サーバから提供されるプロファイルURLはありません。"
|
||||
msgstr "リクエスト内にプロファイルIDがありません。"
|
||||
|
||||
#: actions/unsubscribe.php:57
|
||||
#, fuzzy
|
||||
msgid "No profile with that id."
|
||||
msgstr "リモートプロファイルと一致するものがありません"
|
||||
msgstr "そのIDはプロファイルではありません。"
|
||||
|
||||
#: actions/unsubscribe.php:71
|
||||
#, fuzzy
|
||||
msgid "Unsubscribed"
|
||||
msgstr "サブスクライブ中止"
|
||||
msgstr "サブスクライブ解除済み"
|
||||
|
||||
#: actions/usergroups.php:63
|
||||
#, php-format
|
||||
msgid "%s groups"
|
||||
msgstr ""
|
||||
msgstr "%s グループ"
|
||||
|
||||
#: actions/usergroups.php:65
|
||||
#, php-format
|
||||
msgid "%s groups, page %d"
|
||||
msgstr ""
|
||||
msgstr "%s グループ, %d ページ"
|
||||
|
||||
#: classes/Notice.php:104
|
||||
#, fuzzy
|
||||
@ -4388,17 +4382,16 @@ msgid "You are banned from posting notices on this site."
|
||||
msgstr ""
|
||||
|
||||
#: lib/accountsettingsaction.php:108
|
||||
#, fuzzy
|
||||
msgid "Upload an avatar"
|
||||
msgstr "アバターの更新に失敗しました。"
|
||||
msgstr "アバターのアップロード"
|
||||
|
||||
#: lib/accountsettingsaction.php:119
|
||||
msgid "Other"
|
||||
msgstr ""
|
||||
msgstr "その他"
|
||||
|
||||
#: lib/accountsettingsaction.php:120
|
||||
msgid "Other options"
|
||||
msgstr ""
|
||||
msgstr "その他のオプション"
|
||||
|
||||
#: lib/action.php:130
|
||||
#, php-format
|
||||
@ -4407,7 +4400,7 @@ msgstr ""
|
||||
|
||||
#: lib/action.php:145
|
||||
msgid "Untitled page"
|
||||
msgstr ""
|
||||
msgstr "名称未設定ページ"
|
||||
|
||||
#: lib/action.php:316
|
||||
msgid "Primary site navigation"
|
||||
@ -4419,43 +4412,39 @@ msgstr ""
|
||||
|
||||
#: lib/action.php:325
|
||||
msgid "Search for people or text"
|
||||
msgstr ""
|
||||
msgstr "人々かテキストを検索"
|
||||
|
||||
#: lib/action.php:328
|
||||
#, fuzzy
|
||||
msgid "Account"
|
||||
msgstr "About"
|
||||
msgstr "アカウント"
|
||||
|
||||
#: lib/action.php:328
|
||||
msgid "Change your email, avatar, password, profile"
|
||||
msgstr ""
|
||||
msgstr "メールアドレス、アバター、パスワード、プロパティの変更"
|
||||
|
||||
#: lib/action.php:330
|
||||
msgid "Connect to IM, SMS, Twitter"
|
||||
msgstr ""
|
||||
msgstr "IM、SMS、Twitterに接続"
|
||||
|
||||
#: lib/action.php:332
|
||||
msgid "Logout from the site"
|
||||
msgstr ""
|
||||
msgstr "サイトからログアウト"
|
||||
|
||||
#: lib/action.php:335
|
||||
msgid "Login to the site"
|
||||
msgstr ""
|
||||
msgstr "サイトへログイン"
|
||||
|
||||
#: lib/action.php:338
|
||||
#, fuzzy
|
||||
msgid "Create an account"
|
||||
msgstr "アカウントを作成"
|
||||
|
||||
#: lib/action.php:341
|
||||
#, fuzzy
|
||||
msgid "Login with OpenID"
|
||||
msgstr "そのようなOpenIDはありません。"
|
||||
msgstr "OpenIDでログイン"
|
||||
|
||||
#: lib/action.php:344
|
||||
#, fuzzy
|
||||
msgid "Help me!"
|
||||
msgstr "ヘルプ"
|
||||
msgstr "助けて!"
|
||||
|
||||
#: lib/action.php:362
|
||||
#, fuzzy
|
||||
@ -4486,16 +4475,15 @@ msgstr ""
|
||||
|
||||
#: lib/action.php:635
|
||||
msgid "license."
|
||||
msgstr ""
|
||||
msgstr "ライセンス。"
|
||||
|
||||
#: lib/blockform.php:123 lib/blockform.php:153
|
||||
#, fuzzy
|
||||
msgid "Block this user"
|
||||
msgstr "そのようなユーザはいません。"
|
||||
msgstr "このユーザをブロックする"
|
||||
|
||||
#: lib/blockform.php:153
|
||||
msgid "Block"
|
||||
msgstr ""
|
||||
msgstr "ブロック"
|
||||
|
||||
#: lib/disfavorform.php:114 lib/disfavorform.php:140
|
||||
msgid "Disfavor this notice"
|
||||
@ -4507,27 +4495,24 @@ msgid "To use the %s Facebook Application you need to login "
|
||||
msgstr ""
|
||||
|
||||
#: lib/facebookaction.php:271
|
||||
#, fuzzy
|
||||
msgid " a new account."
|
||||
msgstr "アカウントを作成"
|
||||
msgstr "新しいアカウント"
|
||||
|
||||
#: lib/facebookaction.php:557 lib/mailbox.php:214 lib/noticelist.php:354
|
||||
#, fuzzy
|
||||
msgid "Published"
|
||||
msgstr "パブリック"
|
||||
msgstr "発行済"
|
||||
|
||||
#: lib/favorform.php:114 lib/favorform.php:140
|
||||
#, fuzzy
|
||||
msgid "Favor this notice"
|
||||
msgstr "そのような通知はありません。"
|
||||
msgstr "この通知をお気に入りにする"
|
||||
|
||||
#: lib/feedlist.php:64
|
||||
msgid "Export data"
|
||||
msgstr ""
|
||||
msgstr "データのエクスポート"
|
||||
|
||||
#: lib/galleryaction.php:121
|
||||
msgid "Filter tags"
|
||||
msgstr ""
|
||||
msgstr "タグのフィルター"
|
||||
|
||||
#: lib/galleryaction.php:131
|
||||
msgid "All"
|
||||
@ -4535,7 +4520,7 @@ msgstr ""
|
||||
|
||||
#: lib/galleryaction.php:137
|
||||
msgid "Tag"
|
||||
msgstr ""
|
||||
msgstr "タグ"
|
||||
|
||||
#: lib/galleryaction.php:138
|
||||
msgid "Choose a tag to narrow list"
|
||||
@ -4543,22 +4528,19 @@ msgstr ""
|
||||
|
||||
#: lib/galleryaction.php:139
|
||||
msgid "Go"
|
||||
msgstr ""
|
||||
msgstr "移動"
|
||||
|
||||
#: lib/groupeditform.php:148
|
||||
#, fuzzy
|
||||
msgid "URL of the homepage or blog of the group or topic"
|
||||
msgstr "ホームページ、ブログ、プロファイル、その他サイトの URL"
|
||||
msgstr "グループやトピックのホームページやブログの URL"
|
||||
|
||||
#: lib/groupeditform.php:151
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "サブスクリプション"
|
||||
msgstr "概要"
|
||||
|
||||
#: lib/groupeditform.php:153
|
||||
#, fuzzy
|
||||
msgid "Describe the group or topic in 140 chars"
|
||||
msgstr "140字以内で自己紹介"
|
||||
msgstr "グループやトピックを140字以内記述"
|
||||
|
||||
#: lib/groupeditform.php:158
|
||||
#, fuzzy
|
||||
@ -4568,39 +4550,38 @@ msgstr "いる場所, 例えば \"City, State (or Region), Country\""
|
||||
|
||||
#: lib/groupnav.php:84 lib/searchgroupnav.php:84
|
||||
msgid "Group"
|
||||
msgstr ""
|
||||
msgstr "グループ"
|
||||
|
||||
#: lib/groupnav.php:100
|
||||
msgid "Admin"
|
||||
msgstr ""
|
||||
msgstr "管理者"
|
||||
|
||||
#: lib/groupnav.php:101
|
||||
#, php-format
|
||||
msgid "Edit %s group properties"
|
||||
msgstr ""
|
||||
msgstr "%s グループプロパティを編集"
|
||||
|
||||
#: lib/groupnav.php:106
|
||||
#, fuzzy
|
||||
msgid "Logo"
|
||||
msgstr "ログアウト"
|
||||
msgstr "ロゴ"
|
||||
|
||||
#: lib/groupnav.php:107
|
||||
#, php-format
|
||||
msgid "Add or edit %s logo"
|
||||
msgstr ""
|
||||
msgstr "%s ロゴの追加や編集"
|
||||
|
||||
#: lib/groupsbymemberssection.php:71
|
||||
msgid "Groups with most members"
|
||||
msgstr ""
|
||||
msgstr "メンバー数が多いグループ"
|
||||
|
||||
#: lib/groupsbypostssection.php:71
|
||||
msgid "Groups with most posts"
|
||||
msgstr ""
|
||||
msgstr "投稿が多いグループ"
|
||||
|
||||
#: lib/grouptagcloudsection.php:56
|
||||
#, php-format
|
||||
msgid "Tags in %s group's notices"
|
||||
msgstr ""
|
||||
msgstr "%s グループの通知にあるタグ"
|
||||
|
||||
#: lib/htmloutputter.php:104
|
||||
#, fuzzy
|
||||
@ -4608,28 +4589,24 @@ msgid "This page is not available in a "
|
||||
msgstr "このページはあなたが承認したメディアタイプでは利用できません。"
|
||||
|
||||
#: lib/joinform.php:114
|
||||
#, fuzzy
|
||||
msgid "Join"
|
||||
msgstr "ログイン"
|
||||
msgstr "参加"
|
||||
|
||||
#: lib/leaveform.php:114
|
||||
#, fuzzy
|
||||
msgid "Leave"
|
||||
msgstr "保存"
|
||||
msgstr "離れる"
|
||||
|
||||
#: lib/logingroupnav.php:76
|
||||
#, fuzzy
|
||||
msgid "Login with a username and password"
|
||||
msgstr "不正なユーザ名またはパスワード。"
|
||||
msgstr "ユーザ名とパスワードでログイン"
|
||||
|
||||
#: lib/logingroupnav.php:79
|
||||
#, fuzzy
|
||||
msgid "Sign up for a new account"
|
||||
msgstr "アカウントを作成"
|
||||
msgstr "新しいアカウントでサインアップ"
|
||||
|
||||
#: lib/logingroupnav.php:82
|
||||
msgid "Login or register with OpenID"
|
||||
msgstr ""
|
||||
msgstr "OpenIDでログインまたは登録"
|
||||
|
||||
#: lib/mail.php:175
|
||||
#, php-format
|
||||
@ -4644,14 +4621,14 @@ msgid "%1$s is now listening to "
|
||||
msgstr "%1$s は %2$s であなたの通知を聞いています。"
|
||||
|
||||
#: lib/mail.php:254
|
||||
#, fuzzy, php-format
|
||||
#, php-format
|
||||
msgid "Location: %s\n"
|
||||
msgstr "場所"
|
||||
msgstr "場所: %s\n"
|
||||
|
||||
#: lib/mail.php:256
|
||||
#, fuzzy, php-format
|
||||
#, php-format
|
||||
msgid "Homepage: %s\n"
|
||||
msgstr "ホームページ"
|
||||
msgstr "ホームページ: %s\n"
|
||||
|
||||
#: lib/mail.php:258
|
||||
#, php-format
|
||||
@ -4663,7 +4640,7 @@ msgstr ""
|
||||
#: lib/mail.php:461
|
||||
#, php-format
|
||||
msgid "You've been nudged by %s"
|
||||
msgstr ""
|
||||
msgstr "あなたは %s に突かれています"
|
||||
|
||||
#: lib/mail.php:465
|
||||
#, php-format
|
||||
@ -4681,17 +4658,15 @@ msgstr ""
|
||||
|
||||
#: lib/messageform.php:110
|
||||
msgid "Send a direct notice"
|
||||
msgstr ""
|
||||
msgstr "直接通知を送る"
|
||||
|
||||
#: lib/noticeform.php:125
|
||||
#, fuzzy
|
||||
msgid "Send a notice"
|
||||
msgstr "新しい通知"
|
||||
msgstr "通知を送る"
|
||||
|
||||
#: lib/noticeform.php:152
|
||||
#, fuzzy
|
||||
msgid "Available characters"
|
||||
msgstr "6文字以上"
|
||||
msgstr "利用可能な文字"
|
||||
|
||||
#: lib/noticelist.php:426
|
||||
#, fuzzy
|
||||
@ -4700,32 +4675,31 @@ msgstr "...に対しての返信"
|
||||
|
||||
#: lib/noticelist.php:447 lib/noticelist.php:450
|
||||
msgid "Reply to this notice"
|
||||
msgstr ""
|
||||
msgstr "この通知へ返信"
|
||||
|
||||
#: lib/noticelist.php:451
|
||||
#, fuzzy
|
||||
msgid "Reply"
|
||||
msgstr "返信"
|
||||
|
||||
#: lib/noticelist.php:471 lib/noticelist.php:474
|
||||
msgid "Delete this notice"
|
||||
msgstr ""
|
||||
msgstr "この通知を削除"
|
||||
|
||||
#: lib/noticelist.php:474
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
msgstr "削除"
|
||||
|
||||
#: lib/nudgeform.php:116
|
||||
msgid "Nudge this user"
|
||||
msgstr ""
|
||||
msgstr "このユーザを突く"
|
||||
|
||||
#: lib/nudgeform.php:128
|
||||
msgid "Nudge"
|
||||
msgstr ""
|
||||
msgstr "突く"
|
||||
|
||||
#: lib/nudgeform.php:128
|
||||
msgid "Send a nudge to this user"
|
||||
msgstr ""
|
||||
msgstr "このユーザへ突きを送る"
|
||||
|
||||
#: lib/personaltagcloudsection.php:56
|
||||
#, php-format
|
||||
@ -4734,7 +4708,7 @@ msgstr ""
|
||||
|
||||
#: lib/profilelist.php:182
|
||||
msgid "(none)"
|
||||
msgstr ""
|
||||
msgstr "(なし)"
|
||||
|
||||
#: lib/publicgroupnav.php:76
|
||||
msgid "Public"
|
||||
@ -4742,33 +4716,31 @@ msgstr "パブリック"
|
||||
|
||||
#: lib/publicgroupnav.php:80
|
||||
msgid "User groups"
|
||||
msgstr ""
|
||||
msgstr "ユーザグループ"
|
||||
|
||||
#: lib/publicgroupnav.php:82 lib/publicgroupnav.php:83
|
||||
msgid "Recent tags"
|
||||
msgstr ""
|
||||
msgstr "最近のタグ"
|
||||
|
||||
#: lib/publicgroupnav.php:86
|
||||
msgid "Featured"
|
||||
msgstr ""
|
||||
|
||||
#: lib/publicgroupnav.php:90
|
||||
#, fuzzy
|
||||
msgid "Popular"
|
||||
msgstr "ピープルサーチ"
|
||||
msgstr "人気"
|
||||
|
||||
#: lib/searchgroupnav.php:82
|
||||
#, fuzzy
|
||||
msgid "Notice"
|
||||
msgstr "通知"
|
||||
|
||||
#: lib/searchgroupnav.php:85
|
||||
msgid "Find groups on this site"
|
||||
msgstr ""
|
||||
msgstr "このサイト上のグループを検索する"
|
||||
|
||||
#: lib/section.php:89
|
||||
msgid "Untitled section"
|
||||
msgstr ""
|
||||
msgstr "名称未設定のセクション"
|
||||
|
||||
#: lib/subgroupnav.php:81
|
||||
#, fuzzy, php-format
|
||||
@ -4806,20 +4778,19 @@ msgstr ""
|
||||
|
||||
#: lib/topposterssection.php:74
|
||||
msgid "Top posters"
|
||||
msgstr ""
|
||||
msgstr "上位投稿者"
|
||||
|
||||
#: lib/unblockform.php:120 lib/unblockform.php:150
|
||||
#, fuzzy
|
||||
msgid "Unblock this user"
|
||||
msgstr "そのようなユーザはいません。"
|
||||
msgstr "このユーザをアンブロックする"
|
||||
|
||||
#: lib/unblockform.php:150
|
||||
msgid "Unblock"
|
||||
msgstr ""
|
||||
msgstr "アンブロック"
|
||||
|
||||
#: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137
|
||||
msgid "Unsubscribe from this user"
|
||||
msgstr ""
|
||||
msgstr "このユーザからのサブスクライブを解除する"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Delete my account"
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
1755
locale/laconica.po
1755
locale/laconica.po
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -9,8 +9,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-01-25 16:24+0000\n"
|
||||
"PO-Revision-Date: 2009-02-07 22:33+0000\n"
|
||||
"Last-Translator: Jimmy Volatile <spam@useful.no>\n"
|
||||
"PO-Revision-Date: 2009-04-09 22:44+0000\n"
|
||||
"Last-Translator: Charlie Ball <staselig@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -82,7 +82,7 @@ msgstr ""
|
||||
#: ../lib/mail.php:124 lib/mail.php:124 lib/mail.php:126 lib/mail.php:241
|
||||
#, php-format
|
||||
msgid "%1$s is now listening to your notices on %2$s."
|
||||
msgstr ""
|
||||
msgstr "%1$s lytter nå til dine notiser på %2$s."
|
||||
|
||||
#: ../lib/mail.php:126
|
||||
#, php-format
|
||||
@ -94,6 +94,12 @@ msgid ""
|
||||
"Faithfully yours,\n"
|
||||
"%4$s.\n"
|
||||
msgstr ""
|
||||
"%1$s lytter nå til dine notiser på %2$s.\n"
|
||||
"\n"
|
||||
"\t%3$s\n"
|
||||
"\n"
|
||||
"Mvh,\n"
|
||||
"%4$s.\n"
|
||||
|
||||
#: ../actions/twitapistatuses.php:482 actions/twitapistatuses.php:415
|
||||
#: actions/twitapistatuses.php:350
|
||||
@ -105,19 +111,19 @@ msgstr ""
|
||||
#: actions/shownotice.php:161
|
||||
#, php-format
|
||||
msgid "%1$s's status on %2$s"
|
||||
msgstr ""
|
||||
msgstr "%1$s sin status på %2$s"
|
||||
|
||||
#: ../actions/invite.php:84 ../actions/invite.php:92 actions/invite.php:91
|
||||
#: actions/invite.php:99 actions/invite.php:123 actions/invite.php:131
|
||||
#, php-format
|
||||
msgid "%s (%s)"
|
||||
msgstr ""
|
||||
msgstr "%s (%s)"
|
||||
|
||||
#: ../actions/publicrss.php:62 actions/publicrss.php:48
|
||||
#: actions/publicrss.php:90
|
||||
#, php-format
|
||||
msgid "%s Public Stream"
|
||||
msgstr ""
|
||||
msgstr "%s Offentlig Strøm"
|
||||
|
||||
#: ../actions/all.php:47 ../actions/allrss.php:60
|
||||
#: ../actions/twitapistatuses.php:238 ../lib/stream.php:51 actions/all.php:47
|
||||
@ -132,7 +138,7 @@ msgstr "%s og venner"
|
||||
#: actions/twitapistatuses.php:33
|
||||
#, php-format
|
||||
msgid "%s public timeline"
|
||||
msgstr ""
|
||||
msgstr "%s sin offentlige tidslinje"
|
||||
|
||||
#: ../lib/mail.php:206 lib/mail.php:212 lib/mail.php:411
|
||||
#, php-format
|
||||
@ -143,13 +149,13 @@ msgstr "%s status"
|
||||
#: actions/twitapistatuses.php:199
|
||||
#, php-format
|
||||
msgid "%s timeline"
|
||||
msgstr ""
|
||||
msgstr "%s tidslinje"
|
||||
|
||||
#: ../actions/twitapistatuses.php:52 actions/twitapistatuses.php:52
|
||||
#: actions/twitapistatuses.php:36
|
||||
#, php-format
|
||||
msgid "%s updates from everyone!"
|
||||
msgstr "%s oppdatering fra alle!"
|
||||
msgstr "%s oppdateringer fra alle!"
|
||||
|
||||
#: ../actions/register.php:213
|
||||
msgid ""
|
||||
@ -165,15 +171,17 @@ msgid ""
|
||||
"**%%site.name%%** is a microblogging service brought to you by [%%site."
|
||||
"broughtby%%](%%site.broughtbyurl%%). "
|
||||
msgstr ""
|
||||
"**%%site.name%%** er en mikroblogging-tjeneste av "
|
||||
"[%%site.broughtby%%](%%site.broughtbyurl%%). "
|
||||
|
||||
#: ../lib/util.php:259 lib/util.php:275 lib/action.php:607
|
||||
#, php-format
|
||||
msgid "**%%site.name%%** is a microblogging service. "
|
||||
msgstr ""
|
||||
msgstr "**%%site.name%%** er en mikroblogging-tjeneste. "
|
||||
|
||||
#: ../lib/util.php:274 lib/util.php:290
|
||||
msgid ". Contributors should be attributed by full name or nickname."
|
||||
msgstr ""
|
||||
msgstr ". Bidragsytere burde være etterfulgt av fullt navn eller brukernavn."
|
||||
|
||||
#: ../actions/finishopenidlogin.php:73 ../actions/profilesettings.php:43
|
||||
#: actions/finishopenidlogin.php:79 actions/profilesettings.php:76
|
||||
@ -181,10 +189,14 @@ msgstr ""
|
||||
#: lib/groupeditform.php:139
|
||||
msgid "1-64 lowercase letters or numbers, no punctuation or spaces"
|
||||
msgstr ""
|
||||
"1-64 småbokstaver eller nummer, ingen punktum eller mellomrom (ei heller æøå "
|
||||
"og lign.)"
|
||||
|
||||
#: ../actions/register.php:152 actions/register.php:166
|
||||
msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required."
|
||||
msgstr ""
|
||||
"1-64 småbokstaver eller nummer, ingen punktum eller mellomrom (ei heller æøå "
|
||||
"og lign.) Påkrevd."
|
||||
|
||||
#: ../actions/password.php:42 actions/profilesettings.php:181
|
||||
#: actions/passwordsettings.php:102
|
||||
@ -194,7 +206,7 @@ msgstr "6 eller flere tegn"
|
||||
#: ../actions/recoverpassword.php:180 actions/recoverpassword.php:186
|
||||
#: actions/recoverpassword.php:220
|
||||
msgid "6 or more characters, and don't forget it!"
|
||||
msgstr "6 eller flere tegn. Og ikke glem det, nå!"
|
||||
msgstr "6 eller flere tegn. Og ikke glem det!"
|
||||
|
||||
#: ../actions/register.php:154 actions/register.php:168
|
||||
#: actions/register.php:373
|
||||
@ -207,12 +219,16 @@ msgid ""
|
||||
"A confirmation code was sent to the IM address you added. You must approve %"
|
||||
"s for sending messages to you."
|
||||
msgstr ""
|
||||
"En bekreftelseskode ble sendt til lynmeldingsadressen du la til. Du må "
|
||||
"godkjenne %s for å sende meldinger til deg."
|
||||
|
||||
#: ../actions/emailsettings.php:213 actions/emailsettings.php:231
|
||||
msgid ""
|
||||
"A confirmation code was sent to the email address you added. Check your "
|
||||
"inbox (and spam box!) for the code and instructions on how to use it."
|
||||
msgstr ""
|
||||
"En bekreftelseskode ble sendt til lynmeldingsadressen du la til. Sjekk "
|
||||
"innboksen din (og søppel-posten!) for koden, og hvordan du skal bruke den."
|
||||
|
||||
#: ../actions/smssettings.php:216 actions/smssettings.php:224
|
||||
msgid ""
|
||||
@ -240,7 +256,7 @@ msgstr ""
|
||||
#: actions/twitapistatuses.php:402 actions/twitapistatuses.php:429
|
||||
#: actions/twitapiusers.php:32
|
||||
msgid "API method not found!"
|
||||
msgstr ""
|
||||
msgstr "API-metode ikke funnet!"
|
||||
|
||||
#: ../actions/twitapiaccount.php:57 ../actions/twitapiaccount.php:113
|
||||
#: ../actions/twitapiaccount.php:119 ../actions/twitapiblocks.php:28
|
||||
@ -263,7 +279,7 @@ msgstr ""
|
||||
#: actions/twitapinotifications.php:31 actions/twitapinotifications.php:37
|
||||
#: actions/twitapistatuses.php:562
|
||||
msgid "API method under construction."
|
||||
msgstr ""
|
||||
msgstr "API-metode under utvikling."
|
||||
|
||||
#: ../lib/util.php:324 lib/util.php:340 lib/action.php:568
|
||||
msgid "About"
|
||||
@ -292,7 +308,7 @@ msgstr "Legg til OpenID"
|
||||
#: ../lib/settingsaction.php:97 lib/settingsaction.php:91
|
||||
#: lib/accountsettingsaction.php:117
|
||||
msgid "Add or remove OpenIDs"
|
||||
msgstr ""
|
||||
msgstr "Legg til eller slett OpenID"
|
||||
|
||||
#: ../actions/emailsettings.php:38 ../actions/imsettings.php:39
|
||||
#: ../actions/smssettings.php:39 actions/emailsettings.php:39
|
||||
@ -304,7 +320,7 @@ msgstr "Adresse"
|
||||
|
||||
#: ../actions/invite.php:131 actions/invite.php:139 actions/invite.php:176
|
||||
msgid "Addresses of friends to invite (one per line)"
|
||||
msgstr ""
|
||||
msgstr "Adresser til venner som skal inviteres (én per linje)"
|
||||
|
||||
#: ../actions/showstream.php:273 actions/showstream.php:288
|
||||
#: actions/showstream.php:422
|
||||
@ -321,7 +337,7 @@ msgstr "Alle oppdateringer for %s"
|
||||
#: actions/noticesearchrss.php:90
|
||||
#, php-format
|
||||
msgid "All updates matching search term \"%s\""
|
||||
msgstr ""
|
||||
msgstr "Alle oppdateringer som passer søket: \"%s\""
|
||||
|
||||
#: ../actions/finishopenidlogin.php:29 ../actions/login.php:31
|
||||
#: ../actions/openidlogin.php:29 ../actions/register.php:30
|
||||
@ -330,16 +346,16 @@ msgstr ""
|
||||
#: actions/finishopenidlogin.php:34 actions/login.php:77
|
||||
#: actions/openidlogin.php:30 actions/register.php:92
|
||||
msgid "Already logged in."
|
||||
msgstr "Allerede logget inn."
|
||||
msgstr "Allerede innlogget."
|
||||
|
||||
#: ../lib/subs.php:42 lib/subs.php:42 lib/subs.php:49
|
||||
msgid "Already subscribed!."
|
||||
msgstr ""
|
||||
msgstr "Allerede abonnert!"
|
||||
|
||||
#: ../actions/deletenotice.php:54 actions/deletenotice.php:55
|
||||
#: actions/deletenotice.php:113
|
||||
msgid "Are you sure you want to delete this notice?"
|
||||
msgstr ""
|
||||
msgstr "Er du sikker på at du vil slette denne notisen?"
|
||||
|
||||
#: ../actions/userauthorization.php:77 actions/userauthorization.php:83
|
||||
#: actions/userauthorization.php:81
|
||||
@ -355,18 +371,18 @@ msgstr ""
|
||||
#: ../actions/profilesettings.php:65 actions/profilesettings.php:98
|
||||
msgid ""
|
||||
"Automatically subscribe to whoever subscribes to me (best for non-humans)"
|
||||
msgstr "Abonner "
|
||||
msgstr "Abonner automatisk på de som abonnerer på meg (best for ikke-mennesker)"
|
||||
|
||||
#: ../actions/avatar.php:32 ../lib/settingsaction.php:90
|
||||
#: actions/profilesettings.php:34 actions/avatarsettings.php:65
|
||||
#: actions/showgroup.php:209 lib/accountsettingsaction.php:107
|
||||
msgid "Avatar"
|
||||
msgstr "Avatar"
|
||||
msgstr "Brukerbilde"
|
||||
|
||||
#: ../actions/avatar.php:113 actions/profilesettings.php:350
|
||||
#: actions/avatarsettings.php:395
|
||||
msgid "Avatar updated."
|
||||
msgstr "Avataren har blitt oppdatert."
|
||||
msgstr "Brukerbildet har blitt oppdatert."
|
||||
|
||||
#: ../actions/imsettings.php:55 actions/imsettings.php:56
|
||||
#, php-format
|
||||
@ -380,6 +396,8 @@ msgid ""
|
||||
"Awaiting confirmation on this address. Check your inbox (and spam box!) for "
|
||||
"a message with further instructions."
|
||||
msgstr ""
|
||||
"Venter på bekreftelse av adressen. Sjekk innboksen din (og søppel-post!) for "
|
||||
"melding med videre veiledning."
|
||||
|
||||
#: ../actions/smssettings.php:58 actions/smssettings.php:58
|
||||
#: actions/smssettings.php:111
|
||||
@ -403,17 +421,17 @@ msgstr "Bio"
|
||||
#: actions/profilesettings.php:205 actions/register.php:174
|
||||
#: actions/updateprofile.php:107
|
||||
msgid "Bio is too long (max 140 chars)."
|
||||
msgstr "Bioen er for lang (max 140 tegn)"
|
||||
msgstr "Bioen er for lang (maks 140 tegn)."
|
||||
|
||||
#: ../lib/deleteaction.php:41 lib/deleteaction.php:41 lib/deleteaction.php:69
|
||||
msgid "Can't delete this notice."
|
||||
msgstr ""
|
||||
msgstr "Kan ikke slette notisen."
|
||||
|
||||
#: ../actions/updateprofile.php:119 actions/updateprofile.php:120
|
||||
#: actions/updateprofile.php:123
|
||||
#, php-format
|
||||
msgid "Can't read avatar URL '%s'"
|
||||
msgstr ""
|
||||
msgstr "Kan ikke lese brukerbilde URL '%s'"
|
||||
|
||||
#: ../actions/password.php:85 ../actions/recoverpassword.php:300
|
||||
#: actions/profilesettings.php:404 actions/recoverpassword.php:313
|
||||
@ -441,7 +459,7 @@ msgstr ""
|
||||
#: ../actions/emailsettings.php:181 actions/emailsettings.php:199
|
||||
#: actions/emailsettings.php:311
|
||||
msgid "Cannot normalize that email address"
|
||||
msgstr ""
|
||||
msgstr "Kan ikke normalisere den e-postadressen"
|
||||
|
||||
#: ../actions/password.php:45 actions/profilesettings.php:184
|
||||
#: actions/passwordsettings.php:110
|
||||
@ -451,7 +469,7 @@ msgstr "Endre"
|
||||
#: ../lib/settingsaction.php:88 lib/settingsaction.php:88
|
||||
#: lib/accountsettingsaction.php:114
|
||||
msgid "Change email handling"
|
||||
msgstr ""
|
||||
msgstr "Endre e-post håndtering"
|
||||
|
||||
#: ../actions/password.php:32 actions/profilesettings.php:36
|
||||
#: actions/passwordsettings.php:58
|
||||
@ -460,12 +478,12 @@ msgstr "Endre passord"
|
||||
|
||||
#: ../lib/settingsaction.php:94 lib/accountsettingsaction.php:111
|
||||
msgid "Change your password"
|
||||
msgstr ""
|
||||
msgstr "Endre passordet ditt"
|
||||
|
||||
#: ../lib/settingsaction.php:85 lib/settingsaction.php:85
|
||||
#: lib/accountsettingsaction.php:105
|
||||
msgid "Change your profile settings"
|
||||
msgstr ""
|
||||
msgstr "Endre profil instillingene dine"
|
||||
|
||||
#: ../actions/password.php:43 ../actions/recoverpassword.php:181
|
||||
#: ../actions/register.php:155 ../actions/smssettings.php:65
|
||||
@ -497,7 +515,7 @@ msgstr "Bekreftelseskode"
|
||||
#: ../actions/confirmaddress.php:38 actions/confirmaddress.php:38
|
||||
#: actions/confirmaddress.php:80
|
||||
msgid "Confirmation code not found."
|
||||
msgstr ""
|
||||
msgstr "Bekreftelseskode ikke funnet."
|
||||
|
||||
#: ../actions/register.php:202
|
||||
#, php-format
|
||||
@ -517,6 +535,19 @@ msgid ""
|
||||
"\n"
|
||||
"Thanks for signing up and we hope you enjoy using this service."
|
||||
msgstr ""
|
||||
"Gratulerer, %s! Og velkommen til %%%%site.name%%%%. Herfra vil du kanskje...\n"
|
||||
"\n"
|
||||
"* Gå til [din profil](%s) og sende din første notis.\n"
|
||||
"* Legge til en [Jabber/GTalk addresse](%%%%action.imsettings%%%%) så du kan "
|
||||
"sende notiser fra lynmeldinger.\n"
|
||||
"* [Søke etter brukere](%%%%action.peoplesearch%%%%) that you may know or "
|
||||
"that share your interests. \n"
|
||||
"* Update your [profile settings](%%%%action.profilesettings%%%%) to tell "
|
||||
"others more about you. \n"
|
||||
"* Read over the [online docs](%%%%doc.help%%%%) for features you may have "
|
||||
"missed. \n"
|
||||
"\n"
|
||||
"Thanks for signing up and we hope you enjoy using this service."
|
||||
|
||||
#: ../actions/finishopenidlogin.php:91 actions/finishopenidlogin.php:97
|
||||
#: actions/finishopenidlogin.php:119 lib/action.php:330
|
||||
@ -526,7 +557,7 @@ msgstr "Koble til"
|
||||
#: ../actions/finishopenidlogin.php:86 actions/finishopenidlogin.php:92
|
||||
#: actions/finishopenidlogin.php:114
|
||||
msgid "Connect existing account"
|
||||
msgstr ""
|
||||
msgstr "Koble til eksisterende konto"
|
||||
|
||||
#: ../lib/util.php:332 lib/util.php:348 lib/action.php:576
|
||||
msgid "Contact"
|
||||
@ -557,7 +588,7 @@ msgstr ""
|
||||
#: ../actions/updateprofile.php:162 actions/updateprofile.php:163
|
||||
#: actions/updateprofile.php:166
|
||||
msgid "Could not save avatar info"
|
||||
msgstr "Klarte ikke å lagre avatar-informasjonen"
|
||||
msgstr "Klarte ikke å lagre brukerbilde-informasjonen"
|
||||
|
||||
#: ../actions/updateprofile.php:155 actions/updateprofile.php:156
|
||||
#: actions/updateprofile.php:159
|
||||
@ -575,7 +606,7 @@ msgstr ""
|
||||
#: ../actions/recoverpassword.php:102 actions/recoverpassword.php:105
|
||||
#: actions/recoverpassword.php:111
|
||||
msgid "Could not update user with confirmed email address."
|
||||
msgstr ""
|
||||
msgstr "Klarte ikke å oppdatere bruker med bekreftet e-post."
|
||||
|
||||
#: ../actions/finishremotesubscribe.php:99
|
||||
#: actions/finishremotesubscribe.php:101 actions/finishremotesubscribe.php:114
|
||||
@ -654,7 +685,7 @@ msgstr "Klarte ikke å oppdatere bruker."
|
||||
#: ../actions/finishopenidlogin.php:84 actions/finishopenidlogin.php:90
|
||||
#: actions/finishopenidlogin.php:112
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
msgstr "Opprett"
|
||||
|
||||
#: ../actions/finishopenidlogin.php:70 actions/finishopenidlogin.php:76
|
||||
#: actions/finishopenidlogin.php:98
|
||||
@ -1603,18 +1634,12 @@ msgstr ""
|
||||
msgid "OpenID URL"
|
||||
msgstr "OpenID-URL"
|
||||
|
||||
# -#-#-#-
|
||||
# laconica.po#-#-#-#-
|
||||
# eller autentifikasjon?
|
||||
#: ../actions/finishaddopenid.php:42 ../actions/finishopenidlogin.php:103
|
||||
#: actions/finishaddopenid.php:42 actions/finishopenidlogin.php:109
|
||||
#: actions/finishaddopenid.php:88 actions/finishopenidlogin.php:130
|
||||
#, fuzzy
|
||||
msgid "OpenID authentication cancelled."
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.po #-#-#-#-#\n"
|
||||
"OpenID-autentifisering avbrutt.\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "OpenID-autentifisering avbrutt."
|
||||
|
||||
#: ../actions/finishaddopenid.php:46 ../actions/finishopenidlogin.php:107
|
||||
#: actions/finishaddopenid.php:46 actions/finishopenidlogin.php:113
|
||||
@ -4565,7 +4590,7 @@ msgstr ""
|
||||
#: lib/mail.php:256
|
||||
#, fuzzy, php-format
|
||||
msgid "Homepage: %s\n"
|
||||
msgstr "Hjemmesiden"
|
||||
msgstr "Hjemmesiden: %s\n"
|
||||
|
||||
#: lib/mail.php:258
|
||||
#, php-format
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -6,8 +6,8 @@ msgstr ""
|
||||
"Project-Id-Version: Laconica 0.6.3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-01-25 16:24+0000\n"
|
||||
"PO-Revision-Date: 2009-02-18 22:11+0000\n"
|
||||
"Last-Translator: Tor Christian <tctovsli@gmail.com>\n"
|
||||
"PO-Revision-Date: 2009-03-16 18:52+0000\n"
|
||||
"Last-Translator: Simon Hansen <simonboba@gmail.com>\n"
|
||||
"Language-Team: Norwegian/Nynorsk <i18n-nn@lister.ping.uio.no>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -100,7 +100,7 @@ msgstr ""
|
||||
#: ../lib/mail.php:124 lib/mail.php:124 lib/mail.php:126 lib/mail.php:241
|
||||
#, php-format
|
||||
msgid "%1$s is now listening to your notices on %2$s."
|
||||
msgstr "%1$s høyrar no på notisane dine på %2$s."
|
||||
msgstr "%1$s høyrer no på notisane dine på %2$s."
|
||||
|
||||
#: ../lib/mail.php:126
|
||||
#, php-format
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-01-25 16:24+0000\n"
|
||||
"PO-Revision-Date: 2009-02-02 03:45+0000\n"
|
||||
"Last-Translator: Tiago Faria <gouki@goukihq.org>\n"
|
||||
"PO-Revision-Date: 2009-05-28 14:56+0000\n"
|
||||
"Last-Translator: Rui de Brito Mendes <rbritomendes@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -40,7 +40,7 @@ msgstr "de"
|
||||
#: actions/twitapistatuses.php:347
|
||||
#, php-format
|
||||
msgid "%1$s / Updates replying to %2$s"
|
||||
msgstr "%1$s / Actualizações respondendo a %2$s"
|
||||
msgstr "%1$s / Actualizações em resposta a %2$s"
|
||||
|
||||
#: ../actions/invite.php:168 actions/invite.php:176 actions/invite.php:211
|
||||
#, php-format
|
||||
@ -79,11 +79,11 @@ msgid ""
|
||||
msgstr ""
|
||||
"%1$s convidou-o a juntar-se a ele no %2$s (%3$s).\n"
|
||||
"\n"
|
||||
"%2$s é um serviço de micro-blogging que lhe permite deixar actualizado "
|
||||
"pessoas que conheço e que lhe interessam.\n"
|
||||
"%2$s é um serviço de micro-blogging que o deixa actualizado com pessoas que "
|
||||
"conhece e que lhe interessam.\n"
|
||||
"\n"
|
||||
"Também pode partilhar notícias suas, pensamentos or a sua vida online com "
|
||||
"pessoas que conheça. É também ideal para conhecer pessoas com interesses "
|
||||
"Também pode partilhar notícias suas, pensamentos, ou a sua vida online com "
|
||||
"pessoas que o conheça. É também ideal para conhecer pessoas com interesses "
|
||||
"semelhantes aos seus.\n"
|
||||
"\n"
|
||||
"%1$s disse:\n"
|
||||
@ -187,7 +187,7 @@ msgid ""
|
||||
"to confirm your email address.)"
|
||||
msgstr ""
|
||||
"(Deverá receber uma mensagem por email dentro de momentos, com instrucções "
|
||||
"como confirmar o seu endereço de email.)"
|
||||
"sobre como confirmar o seu endereço de email.)"
|
||||
|
||||
#: ../lib/util.php:257 lib/util.php:273 lib/action.php:605
|
||||
#, php-format
|
||||
@ -212,7 +212,7 @@ msgstr ". Os colaboradores devem ser citados usando nome completo ou apelido."
|
||||
#: actions/finishopenidlogin.php:101 actions/profilesettings.php:100
|
||||
#: lib/groupeditform.php:139
|
||||
msgid "1-64 lowercase letters or numbers, no punctuation or spaces"
|
||||
msgstr "1-64 letras ou números, sem pontuação ou espaços"
|
||||
msgstr "1-64 letras minúsculas ou números, sem pontuação ou espaços"
|
||||
|
||||
#: ../actions/register.php:152 actions/register.php:166
|
||||
msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required."
|
||||
@ -248,8 +248,8 @@ msgid ""
|
||||
"inbox (and spam box!) for the code and instructions on how to use it."
|
||||
msgstr ""
|
||||
"Um código de confirmação foi enviado para o endereço de email fornecido. "
|
||||
"Procure na sua 'Caixa de Entrada' (e caixa de spam) a mensagem com o código "
|
||||
"e instrucções."
|
||||
"Procure na sua 'Caixa de Entrada' (e caixa de spam) pelo email com o código "
|
||||
"e instrucções de utilização."
|
||||
|
||||
#: ../actions/smssettings.php:216 actions/smssettings.php:224
|
||||
msgid ""
|
||||
@ -459,13 +459,13 @@ msgstr "Não é possível remover a mensagem."
|
||||
#: actions/updateprofile.php:123
|
||||
#, php-format
|
||||
msgid "Can't read avatar URL '%s'"
|
||||
msgstr "Não é possível ler o avatar URL '%s'"
|
||||
msgstr "Não é possível ler o URL do avatar '%s'"
|
||||
|
||||
#: ../actions/password.php:85 ../actions/recoverpassword.php:300
|
||||
#: actions/profilesettings.php:404 actions/recoverpassword.php:313
|
||||
#: actions/passwordsettings.php:169 actions/recoverpassword.php:347
|
||||
msgid "Can't save new password."
|
||||
msgstr "Não é possível salvar a nova password."
|
||||
msgstr "Não é possível guardar a nova password."
|
||||
|
||||
#: ../actions/emailsettings.php:57 ../actions/imsettings.php:58
|
||||
#: ../actions/smssettings.php:62 actions/emailsettings.php:58
|
||||
@ -497,7 +497,7 @@ msgstr "Modificar"
|
||||
#: ../lib/settingsaction.php:88 lib/settingsaction.php:88
|
||||
#: lib/accountsettingsaction.php:114
|
||||
msgid "Change email handling"
|
||||
msgstr ""
|
||||
msgstr "Alterar email handling"
|
||||
|
||||
#: ../actions/password.php:32 actions/profilesettings.php:36
|
||||
#: actions/passwordsettings.php:58
|
||||
@ -563,6 +563,19 @@ msgid ""
|
||||
"\n"
|
||||
"Thanks for signing up and we hope you enjoy using this service."
|
||||
msgstr ""
|
||||
"Parabéns, %s! Bemvindo ao %%%%site.name%%%%. A partir de agora deverá...\n"
|
||||
"\n"
|
||||
"* Ir ao [seu perfil](%s) e enviar a primeira mensagem.\n"
|
||||
"* Adicionar uma [Endereço Jabber/GTalk](%%%%action.imsettings%%%%) de forma "
|
||||
"a poder enviar notações através de mensagens instantâneas.\n"
|
||||
"* [Procurar por pessoas](%%%%action.peoplesearch%%%%) que conheça ou "
|
||||
"partilhem os seus interesses. \n"
|
||||
"* Actualizar o seu perfil [Opções de perfil](%%%%action.profilesettings%%%%) "
|
||||
"para contar mais acerca de si aos outros. \n"
|
||||
"* Ler os [documentos online](%%%%doc.help%%%%) para conhecer todas as "
|
||||
"funcionalidades que tenha perdido. \n"
|
||||
"\n"
|
||||
"Obrigado por se registar e esperamos que se divirta usando este serviço."
|
||||
|
||||
#: ../actions/finishopenidlogin.php:91 actions/finishopenidlogin.php:97
|
||||
#: actions/finishopenidlogin.php:119 lib/action.php:330
|
||||
@ -581,38 +594,38 @@ msgstr "Contacto"
|
||||
#: ../lib/openid.php:178 lib/openid.php:178 lib/openid.php:187
|
||||
#, php-format
|
||||
msgid "Could not create OpenID form: %s"
|
||||
msgstr ""
|
||||
msgstr "Não foi possível criar o formulário de OpenID: %s"
|
||||
|
||||
#: ../actions/twitapifriendships.php:60 ../actions/twitapifriendships.php:76
|
||||
#: actions/twitapifriendships.php:60 actions/twitapifriendships.php:76
|
||||
#: actions/twitapifriendships.php:48 actions/twitapifriendships.php:64
|
||||
#, php-format
|
||||
msgid "Could not follow user: %s is already on your list."
|
||||
msgstr ""
|
||||
msgstr "Não foi possível seguir utilizador: %s já está na sua lista."
|
||||
|
||||
#: ../actions/twitapifriendships.php:53 actions/twitapifriendships.php:53
|
||||
#: actions/twitapifriendships.php:41
|
||||
msgid "Could not follow user: User not found."
|
||||
msgstr ""
|
||||
msgstr "Não foi possível seguir utilizador: Utilizador não encontrado."
|
||||
|
||||
#: ../lib/openid.php:160 lib/openid.php:160 lib/openid.php:169
|
||||
#, php-format
|
||||
msgid "Could not redirect to server: %s"
|
||||
msgstr ""
|
||||
msgstr "Não foi possível redireccionar para o servidor: %s"
|
||||
|
||||
#: ../actions/updateprofile.php:162 actions/updateprofile.php:163
|
||||
#: actions/updateprofile.php:166
|
||||
msgid "Could not save avatar info"
|
||||
msgstr ""
|
||||
msgstr "Não foi possível guardar a info do avatar "
|
||||
|
||||
#: ../actions/updateprofile.php:155 actions/updateprofile.php:156
|
||||
#: actions/updateprofile.php:159
|
||||
msgid "Could not save new profile info"
|
||||
msgstr ""
|
||||
msgstr "Não foi possível guardar a nova info do perfil"
|
||||
|
||||
#: ../lib/subs.php:54 lib/subs.php:61 lib/subs.php:72
|
||||
msgid "Could not subscribe other to you."
|
||||
msgstr ""
|
||||
msgstr "Não foi possível subscrever outros a si."
|
||||
|
||||
#: ../lib/subs.php:46 lib/subs.php:46 lib/subs.php:57
|
||||
msgid "Could not subscribe."
|
||||
@ -622,11 +635,12 @@ msgstr "Não foi possível subscrever. "
|
||||
#: actions/recoverpassword.php:111
|
||||
msgid "Could not update user with confirmed email address."
|
||||
msgstr ""
|
||||
"Não foi possivel actualizar utilizador com endereço de email confirmado."
|
||||
|
||||
#: ../actions/finishremotesubscribe.php:99
|
||||
#: actions/finishremotesubscribe.php:101 actions/finishremotesubscribe.php:114
|
||||
msgid "Couldn't convert request tokens to access tokens."
|
||||
msgstr ""
|
||||
msgstr "Não foi possível converter os tokens de requisição em tokens de acesso."
|
||||
|
||||
#: ../actions/confirmaddress.php:84 ../actions/emailsettings.php:234
|
||||
#: ../actions/imsettings.php:218 ../actions/smssettings.php:241
|
||||
@ -635,21 +649,21 @@ msgstr ""
|
||||
#: actions/confirmaddress.php:126 actions/emailsettings.php:375
|
||||
#: actions/imsettings.php:357 actions/smssettings.php:370
|
||||
msgid "Couldn't delete email confirmation."
|
||||
msgstr ""
|
||||
msgstr "Não foi possível apagar a confirmação do email."
|
||||
|
||||
#: ../lib/subs.php:103 lib/subs.php:116 lib/subs.php:134
|
||||
msgid "Couldn't delete subscription."
|
||||
msgstr ""
|
||||
msgstr "Não foi possível apagar a subscrição."
|
||||
|
||||
#: ../actions/twitapistatuses.php:93 actions/twitapistatuses.php:98
|
||||
#: actions/twitapistatuses.php:84
|
||||
msgid "Couldn't find any statuses."
|
||||
msgstr ""
|
||||
msgstr "Não foi possivel encontrar algum estado."
|
||||
|
||||
#: ../actions/remotesubscribe.php:127 actions/remotesubscribe.php:136
|
||||
#: actions/remotesubscribe.php:178
|
||||
msgid "Couldn't get a request token."
|
||||
msgstr ""
|
||||
msgstr "Não foi possível obter um token de requisição."
|
||||
|
||||
#: ../actions/emailsettings.php:205 ../actions/imsettings.php:187
|
||||
#: ../actions/smssettings.php:206 actions/emailsettings.php:223
|
||||
@ -657,12 +671,12 @@ msgstr ""
|
||||
#: actions/emailsettings.php:337 actions/imsettings.php:311
|
||||
#: actions/smssettings.php:325
|
||||
msgid "Couldn't insert confirmation code."
|
||||
msgstr ""
|
||||
msgstr "Não foi possível inserir o código de confirmação."
|
||||
|
||||
#: ../actions/finishremotesubscribe.php:180
|
||||
#: actions/finishremotesubscribe.php:182 actions/finishremotesubscribe.php:218
|
||||
msgid "Couldn't insert new subscription."
|
||||
msgstr ""
|
||||
msgstr "Não foi possível inserir nova subscrição."
|
||||
|
||||
#: ../actions/profilesettings.php:184 ../actions/twitapiaccount.php:96
|
||||
#: actions/profilesettings.php:299 actions/twitapiaccount.php:94
|
||||
@ -673,13 +687,13 @@ msgstr "Não foi possível salvar o perfil."
|
||||
#: ../actions/profilesettings.php:161 actions/profilesettings.php:276
|
||||
#: actions/profilesettings.php:279
|
||||
msgid "Couldn't update user for autosubscribe."
|
||||
msgstr ""
|
||||
msgstr "Não foi possível actualizar o utilizador para auto-subscrição."
|
||||
|
||||
#: ../actions/emailsettings.php:280 ../actions/emailsettings.php:294
|
||||
#: actions/emailsettings.php:298 actions/emailsettings.php:312
|
||||
#: actions/emailsettings.php:440 actions/emailsettings.php:462
|
||||
msgid "Couldn't update user record."
|
||||
msgstr ""
|
||||
msgstr "Não foi possível actualizar o registo do utilizador."
|
||||
|
||||
#: ../actions/confirmaddress.php:72 ../actions/emailsettings.php:156
|
||||
#: ../actions/emailsettings.php:259 ../actions/imsettings.php:138
|
||||
@ -695,164 +709,164 @@ msgstr ""
|
||||
#: actions/profilesettings.php:259 actions/smssettings.php:266
|
||||
#: actions/smssettings.php:408
|
||||
msgid "Couldn't update user."
|
||||
msgstr ""
|
||||
msgstr "Não foi possível actualizar o utilizador."
|
||||
|
||||
#: ../actions/finishopenidlogin.php:84 actions/finishopenidlogin.php:90
|
||||
#: actions/finishopenidlogin.php:112
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
msgstr "Criar"
|
||||
|
||||
#: ../actions/finishopenidlogin.php:70 actions/finishopenidlogin.php:76
|
||||
#: actions/finishopenidlogin.php:98
|
||||
msgid "Create a new user with this nickname."
|
||||
msgstr ""
|
||||
msgstr "Criar um novo utilizador com esta alcunha."
|
||||
|
||||
#: ../actions/finishopenidlogin.php:68 actions/finishopenidlogin.php:74
|
||||
#: actions/finishopenidlogin.php:96
|
||||
msgid "Create new account"
|
||||
msgstr ""
|
||||
msgstr "Criar nova conta"
|
||||
|
||||
#: ../actions/finishopenidlogin.php:191 actions/finishopenidlogin.php:197
|
||||
#: actions/finishopenidlogin.php:231
|
||||
msgid "Creating new account for OpenID that already has a user."
|
||||
msgstr ""
|
||||
msgstr "Criar nova conta para OpenID que já possui um utilizador."
|
||||
|
||||
#: ../actions/imsettings.php:45 actions/imsettings.php:46
|
||||
#: actions/imsettings.php:100
|
||||
msgid "Current confirmed Jabber/GTalk address."
|
||||
msgstr ""
|
||||
msgstr "Endereço do Jabber/GTalk já confirmado."
|
||||
|
||||
#: ../actions/smssettings.php:46 actions/smssettings.php:46
|
||||
#: actions/smssettings.php:100
|
||||
msgid "Current confirmed SMS-enabled phone number."
|
||||
msgstr ""
|
||||
msgstr "Número de telefone com serviço SMS activo já confirmado."
|
||||
|
||||
#: ../actions/emailsettings.php:44 actions/emailsettings.php:45
|
||||
#: actions/emailsettings.php:99
|
||||
msgid "Current confirmed email address."
|
||||
msgstr ""
|
||||
msgstr "Endereço de email já confirmado."
|
||||
|
||||
#: ../actions/showstream.php:356 actions/showstream.php:367
|
||||
msgid "Currently"
|
||||
msgstr ""
|
||||
msgstr "Actualmente"
|
||||
|
||||
#: ../classes/Notice.php:72 classes/Notice.php:86 classes/Notice.php:91
|
||||
#, php-format
|
||||
msgid "DB error inserting hashtag: %s"
|
||||
msgstr ""
|
||||
msgstr "Ocorreu um erro na base de dados ao inserir a hashtag: %s"
|
||||
|
||||
#: ../lib/util.php:1061 lib/util.php:1110 classes/Notice.php:698
|
||||
#, php-format
|
||||
msgid "DB error inserting reply: %s"
|
||||
msgstr ""
|
||||
msgstr "Ocorreu um erro na base de dados ao inserir a resposta: %s"
|
||||
|
||||
#: ../actions/deletenotice.php:41 actions/deletenotice.php:41
|
||||
#: actions/deletenotice.php:79
|
||||
msgid "Delete notice"
|
||||
msgstr ""
|
||||
msgstr "Apagar mensagem"
|
||||
|
||||
#: ../actions/profilesettings.php:51 ../actions/register.php:172
|
||||
#: actions/profilesettings.php:84 actions/register.php:186
|
||||
#: actions/profilesettings.php:114
|
||||
msgid "Describe yourself and your interests in 140 chars"
|
||||
msgstr ""
|
||||
msgstr "Descreva-se e aos seus interesses em 140 caracteres"
|
||||
|
||||
#: ../actions/register.php:158 ../actions/register.php:161
|
||||
#: ../lib/settingsaction.php:87 actions/register.php:172
|
||||
#: actions/register.php:175 lib/settingsaction.php:87 actions/register.php:381
|
||||
#: actions/register.php:385 lib/accountsettingsaction.php:113
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
msgstr "Email"
|
||||
|
||||
#: ../actions/emailsettings.php:59 actions/emailsettings.php:60
|
||||
#: actions/emailsettings.php:115
|
||||
msgid "Email Address"
|
||||
msgstr ""
|
||||
msgstr "Endereço de Email"
|
||||
|
||||
#: ../actions/emailsettings.php:32 actions/emailsettings.php:32
|
||||
#: actions/emailsettings.php:60
|
||||
msgid "Email Settings"
|
||||
msgstr ""
|
||||
msgstr "Definições do Email"
|
||||
|
||||
#: ../actions/register.php:73 actions/register.php:80 actions/register.php:163
|
||||
msgid "Email address already exists."
|
||||
msgstr ""
|
||||
msgstr "Endereço de Email já existe."
|
||||
|
||||
#: ../lib/mail.php:90 lib/mail.php:90 lib/mail.php:173
|
||||
msgid "Email address confirmation"
|
||||
msgstr ""
|
||||
msgstr "Confirmação do Endereço de Email"
|
||||
|
||||
#: ../actions/emailsettings.php:61 actions/emailsettings.php:62
|
||||
#: actions/emailsettings.php:117
|
||||
msgid "Email address, like \"UserName@example.org\""
|
||||
msgstr ""
|
||||
msgstr "Endereço de Email, como \"nomedeutilizador@exemplo.org\""
|
||||
|
||||
#: ../actions/invite.php:129 actions/invite.php:137 actions/invite.php:174
|
||||
msgid "Email addresses"
|
||||
msgstr ""
|
||||
msgstr "Endereços de Email"
|
||||
|
||||
#: ../actions/recoverpassword.php:191 actions/recoverpassword.php:197
|
||||
#: actions/recoverpassword.php:231
|
||||
msgid "Enter a nickname or email address."
|
||||
msgstr ""
|
||||
msgstr "Introduza uma alcunha ou um endereço de email"
|
||||
|
||||
#: ../actions/smssettings.php:64 actions/smssettings.php:64
|
||||
#: actions/smssettings.php:119
|
||||
msgid "Enter the code you received on your phone."
|
||||
msgstr ""
|
||||
msgstr "Introduza o código que recebeu no seu telefone."
|
||||
|
||||
#: ../actions/userauthorization.php:137 actions/userauthorization.php:144
|
||||
#: actions/userauthorization.php:161
|
||||
msgid "Error authorizing token"
|
||||
msgstr ""
|
||||
msgstr "Erro ao autorizar token"
|
||||
|
||||
#: ../actions/finishopenidlogin.php:253 actions/finishopenidlogin.php:259
|
||||
#: actions/finishopenidlogin.php:297
|
||||
msgid "Error connecting user to OpenID."
|
||||
msgstr ""
|
||||
msgstr "Erro ao ligar utilizador ao OpenID."
|
||||
|
||||
#: ../actions/finishaddopenid.php:78 actions/finishaddopenid.php:78
|
||||
#: actions/finishaddopenid.php:126
|
||||
msgid "Error connecting user."
|
||||
msgstr ""
|
||||
msgstr "Erro ao ligar utilizador."
|
||||
|
||||
#: ../actions/finishremotesubscribe.php:151
|
||||
#: actions/finishremotesubscribe.php:153 actions/finishremotesubscribe.php:166
|
||||
msgid "Error inserting avatar"
|
||||
msgstr ""
|
||||
msgstr "Erro ao inserir avatar"
|
||||
|
||||
#: ../actions/finishremotesubscribe.php:143
|
||||
#: actions/finishremotesubscribe.php:145 actions/finishremotesubscribe.php:158
|
||||
msgid "Error inserting new profile"
|
||||
msgstr ""
|
||||
msgstr "Erro ao inserir novo perfil"
|
||||
|
||||
#: ../actions/finishremotesubscribe.php:167
|
||||
#: actions/finishremotesubscribe.php:169 actions/finishremotesubscribe.php:182
|
||||
msgid "Error inserting remote profile"
|
||||
msgstr ""
|
||||
msgstr "Erro ao inserir perfil remoto"
|
||||
|
||||
#: ../actions/recoverpassword.php:240 actions/recoverpassword.php:246
|
||||
#: actions/recoverpassword.php:280
|
||||
msgid "Error saving address confirmation."
|
||||
msgstr ""
|
||||
msgstr "Erro ao guardar confirmação do endereço."
|
||||
|
||||
#: ../actions/userauthorization.php:140 actions/userauthorization.php:147
|
||||
#: actions/userauthorization.php:164
|
||||
msgid "Error saving remote profile"
|
||||
msgstr ""
|
||||
msgstr "Erro ao guardar perfil remoto"
|
||||
|
||||
#: ../lib/openid.php:226 lib/openid.php:226 lib/openid.php:235
|
||||
msgid "Error saving the profile."
|
||||
msgstr ""
|
||||
msgstr "Erro ao guardar o perfil."
|
||||
|
||||
#: ../lib/openid.php:237 lib/openid.php:237 lib/openid.php:246
|
||||
msgid "Error saving the user."
|
||||
msgstr ""
|
||||
msgstr "Erro ao guardar o utilizador."
|
||||
|
||||
#: ../actions/password.php:80 actions/profilesettings.php:399
|
||||
#: actions/passwordsettings.php:164
|
||||
msgid "Error saving user; invalid."
|
||||
msgstr ""
|
||||
msgstr "Erro ao guardar utilizador; inválido."
|
||||
|
||||
#: ../actions/login.php:47 ../actions/login.php:73
|
||||
#: ../actions/recoverpassword.php:307 ../actions/register.php:98
|
||||
@ -860,70 +874,72 @@ msgstr ""
|
||||
#: actions/register.php:108 actions/login.php:112 actions/login.php:138
|
||||
#: actions/recoverpassword.php:354 actions/register.php:198
|
||||
msgid "Error setting user."
|
||||
msgstr ""
|
||||
msgstr "Erro ao configurar utilizador."
|
||||
|
||||
#: ../actions/finishaddopenid.php:83 actions/finishaddopenid.php:83
|
||||
#: actions/finishaddopenid.php:131
|
||||
msgid "Error updating profile"
|
||||
msgstr ""
|
||||
msgstr "Erro ao actualizar o perfil."
|
||||
|
||||
#: ../actions/finishremotesubscribe.php:161
|
||||
#: actions/finishremotesubscribe.php:163 actions/finishremotesubscribe.php:176
|
||||
msgid "Error updating remote profile"
|
||||
msgstr ""
|
||||
msgstr "Erro ao actualizar o perfil remoto"
|
||||
|
||||
#: ../actions/recoverpassword.php:80 actions/recoverpassword.php:80
|
||||
#: actions/recoverpassword.php:86
|
||||
msgid "Error with confirmation code."
|
||||
msgstr ""
|
||||
msgstr "Erro no código de confirmação."
|
||||
|
||||
#: ../actions/finishopenidlogin.php:89 actions/finishopenidlogin.php:95
|
||||
#: actions/finishopenidlogin.php:117
|
||||
msgid "Existing nickname"
|
||||
msgstr ""
|
||||
msgstr "Alcunha já existente"
|
||||
|
||||
#: ../lib/util.php:326 lib/util.php:342 lib/action.php:570
|
||||
msgid "FAQ"
|
||||
msgstr ""
|
||||
msgstr "FAQ"
|
||||
|
||||
#: ../actions/avatar.php:115 actions/profilesettings.php:352
|
||||
#: actions/avatarsettings.php:397
|
||||
msgid "Failed updating avatar."
|
||||
msgstr ""
|
||||
msgstr "Falha ao actualizar avatar."
|
||||
|
||||
#: ../actions/all.php:61 ../actions/allrss.php:64 actions/all.php:61
|
||||
#: actions/allrss.php:64 actions/all.php:75 actions/allrss.php:107
|
||||
#, php-format
|
||||
msgid "Feed for friends of %s"
|
||||
msgstr ""
|
||||
msgstr "Feed para os amigos de %s"
|
||||
|
||||
#: ../actions/replies.php:65 ../actions/repliesrss.php:80
|
||||
#: actions/replies.php:65 actions/repliesrss.php:66 actions/replies.php:134
|
||||
#: actions/repliesrss.php:71
|
||||
#, php-format
|
||||
msgid "Feed for replies to %s"
|
||||
msgstr ""
|
||||
msgstr "Feed para as respostas a %s"
|
||||
|
||||
#: ../actions/tag.php:55 actions/tag.php:55 actions/tag.php:61
|
||||
#, php-format
|
||||
msgid "Feed for tag %s"
|
||||
msgstr ""
|
||||
msgstr "Feed para a tag %s"
|
||||
|
||||
#: ../lib/searchaction.php:105 lib/searchaction.php:105
|
||||
#: lib/searchgroupnav.php:83
|
||||
msgid "Find content of notices"
|
||||
msgstr ""
|
||||
msgstr "Encontrar conteúdo dos mensagens"
|
||||
|
||||
#: ../lib/searchaction.php:101 lib/searchaction.php:101
|
||||
#: lib/searchgroupnav.php:81
|
||||
msgid "Find people on this site"
|
||||
msgstr ""
|
||||
msgstr "Encontrar pessoas neste site"
|
||||
|
||||
#: ../actions/login.php:122
|
||||
msgid ""
|
||||
"For security reasons, please re-enter your user name and password before "
|
||||
"changing your settings."
|
||||
msgstr ""
|
||||
"Por razões de segurança, por favor reintroduza o seu nome de utilizador e "
|
||||
"palavra-passe antes de alterar as suas configurações."
|
||||
|
||||
#: ../actions/profilesettings.php:44 ../actions/register.php:164
|
||||
#: actions/profilesettings.php:77 actions/register.php:178
|
||||
@ -931,7 +947,7 @@ msgstr ""
|
||||
#: actions/showgroup.php:235 actions/showstream.php:262
|
||||
#: actions/tagother.php:105 lib/groupeditform.php:142
|
||||
msgid "Full name"
|
||||
msgstr ""
|
||||
msgstr "Nome Completo"
|
||||
|
||||
#: ../actions/profilesettings.php:98 ../actions/register.php:79
|
||||
#: ../actions/updateprofile.php:93 actions/profilesettings.php:213
|
||||
@ -940,50 +956,50 @@ msgstr ""
|
||||
#: actions/profilesettings.php:202 actions/register.php:171
|
||||
#: actions/updateprofile.php:97
|
||||
msgid "Full name is too long (max 255 chars)."
|
||||
msgstr ""
|
||||
msgstr "Nome completo é demasiado longo (máx. 255 caracteres)."
|
||||
|
||||
#: ../lib/util.php:322 lib/util.php:338 lib/action.php:344 lib/action.php:566
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
msgstr "Ajuda"
|
||||
|
||||
#: ../lib/util.php:298 lib/util.php:314 lib/action.php:322
|
||||
#: lib/facebookaction.php:200
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
msgstr "Início"
|
||||
|
||||
#: ../actions/profilesettings.php:46 ../actions/register.php:167
|
||||
#: actions/profilesettings.php:79 actions/register.php:181
|
||||
#: actions/profilesettings.php:107 actions/register.php:396
|
||||
#: lib/groupeditform.php:146
|
||||
msgid "Homepage"
|
||||
msgstr ""
|
||||
msgstr "Página Principal"
|
||||
|
||||
#: ../actions/profilesettings.php:95 ../actions/register.php:76
|
||||
#: actions/profilesettings.php:210 actions/register.php:83
|
||||
#: actions/editgroup.php:192 actions/newgroup.php:143
|
||||
#: actions/profilesettings.php:199 actions/register.php:168
|
||||
msgid "Homepage is not a valid URL."
|
||||
msgstr ""
|
||||
msgstr "A Homepage inserida não é um URL válido."
|
||||
|
||||
#: ../actions/emailsettings.php:91 actions/emailsettings.php:98
|
||||
#: actions/emailsettings.php:173
|
||||
msgid "I want to post notices by email."
|
||||
msgstr ""
|
||||
msgstr "Quero postar mensagens por email."
|
||||
|
||||
#: ../lib/settingsaction.php:102 lib/settingsaction.php:96
|
||||
#: lib/connectsettingsaction.php:104
|
||||
msgid "IM"
|
||||
msgstr ""
|
||||
msgstr "IM"
|
||||
|
||||
#: ../actions/imsettings.php:60 actions/imsettings.php:61
|
||||
#: actions/imsettings.php:118
|
||||
msgid "IM Address"
|
||||
msgstr ""
|
||||
msgstr "Endereço IM"
|
||||
|
||||
#: ../actions/imsettings.php:33 actions/imsettings.php:33
|
||||
#: actions/imsettings.php:59
|
||||
msgid "IM Settings"
|
||||
msgstr ""
|
||||
msgstr "Definições de IM"
|
||||
|
||||
#: ../actions/finishopenidlogin.php:88 actions/finishopenidlogin.php:94
|
||||
#: actions/finishopenidlogin.php:116
|
||||
@ -991,104 +1007,113 @@ msgid ""
|
||||
"If you already have an account, login with your username and password to "
|
||||
"connect it to your OpenID."
|
||||
msgstr ""
|
||||
"Se já tem uma conta, inicie sessão com o seu nome de utilizador e palavra-"
|
||||
"passe para a ligar ao seu OpenID."
|
||||
|
||||
#: ../actions/openidsettings.php:45
|
||||
msgid ""
|
||||
"If you want to add an OpenID to your account, enter it in the box below and "
|
||||
"click \"Add\"."
|
||||
msgstr ""
|
||||
"Se quiser adicionar um OpenID à sua conta, introduza-o na caixa a baixo e "
|
||||
"clique em \"Adicionar\"."
|
||||
|
||||
#: ../actions/recoverpassword.php:137
|
||||
msgid ""
|
||||
"If you've forgotten or lost your password, you can get a new one sent to the "
|
||||
"email address you have stored in your account."
|
||||
msgstr ""
|
||||
"Se você se esqueceu ou perdeu a sua palavra-passe, você pode receber uma "
|
||||
"nova que será enviada para o endereço de email que tem configurado na sua "
|
||||
"conta."
|
||||
|
||||
#: ../actions/emailsettings.php:67 ../actions/smssettings.php:76
|
||||
#: actions/emailsettings.php:68 actions/smssettings.php:76
|
||||
#: actions/emailsettings.php:127 actions/smssettings.php:140
|
||||
msgid "Incoming email"
|
||||
msgstr ""
|
||||
msgstr "Email a receber"
|
||||
|
||||
#: ../actions/emailsettings.php:283 actions/emailsettings.php:301
|
||||
#: actions/emailsettings.php:443
|
||||
msgid "Incoming email address removed."
|
||||
msgstr ""
|
||||
msgstr "O endereço de email de recepção removido."
|
||||
|
||||
#: ../actions/password.php:69 actions/profilesettings.php:388
|
||||
#: actions/passwordsettings.php:153
|
||||
msgid "Incorrect old password"
|
||||
msgstr ""
|
||||
msgstr "Palavra-passe antiga incorrecta"
|
||||
|
||||
#: ../actions/login.php:67 actions/login.php:67 actions/facebookhome.php:131
|
||||
#: actions/login.php:132
|
||||
msgid "Incorrect username or password."
|
||||
msgstr ""
|
||||
msgstr "Nome de utilizador ou palavra-passe incorrecta"
|
||||
|
||||
#: ../actions/recoverpassword.php:265
|
||||
msgid ""
|
||||
"Instructions for recovering your password have been sent to the email "
|
||||
"address registered to your account."
|
||||
msgstr ""
|
||||
"As instruções para a recuperação da palavra-passe foram enviadas para o "
|
||||
"endereço de email registado na sua conta."
|
||||
|
||||
#: ../actions/updateprofile.php:114 actions/updateprofile.php:115
|
||||
#: actions/updateprofile.php:118
|
||||
#, php-format
|
||||
msgid "Invalid avatar URL '%s'"
|
||||
msgstr ""
|
||||
msgstr "URL do avatar inválido '%s'"
|
||||
|
||||
#: ../actions/invite.php:55 actions/invite.php:62 actions/invite.php:70
|
||||
#, php-format
|
||||
msgid "Invalid email address: %s"
|
||||
msgstr ""
|
||||
msgstr "Endereço de email inválido: %s"
|
||||
|
||||
#: ../actions/updateprofile.php:98 actions/updateprofile.php:99
|
||||
#: actions/updateprofile.php:102
|
||||
#, php-format
|
||||
msgid "Invalid homepage '%s'"
|
||||
msgstr ""
|
||||
msgstr "Página principal inválida '%s'"
|
||||
|
||||
#: ../actions/updateprofile.php:82 actions/updateprofile.php:83
|
||||
#: actions/updateprofile.php:86
|
||||
#, php-format
|
||||
msgid "Invalid license URL '%s'"
|
||||
msgstr ""
|
||||
msgstr "URL de licença inválido '%s'"
|
||||
|
||||
#: ../actions/postnotice.php:61 actions/postnotice.php:62
|
||||
#: actions/postnotice.php:66
|
||||
msgid "Invalid notice content"
|
||||
msgstr ""
|
||||
msgstr "Conteúdo da mensagem inválido"
|
||||
|
||||
#: ../actions/postnotice.php:67 actions/postnotice.php:68
|
||||
#: actions/postnotice.php:72
|
||||
msgid "Invalid notice uri"
|
||||
msgstr ""
|
||||
msgstr "URI da mensagem inválido"
|
||||
|
||||
#: ../actions/postnotice.php:72 actions/postnotice.php:73
|
||||
#: actions/postnotice.php:77
|
||||
msgid "Invalid notice url"
|
||||
msgstr ""
|
||||
msgstr "URL da mensagem inválido"
|
||||
|
||||
#: ../actions/updateprofile.php:87 actions/updateprofile.php:88
|
||||
#: actions/updateprofile.php:91
|
||||
#, php-format
|
||||
msgid "Invalid profile URL '%s'."
|
||||
msgstr ""
|
||||
msgstr "URL do perfil inválido '%s'."
|
||||
|
||||
#: ../actions/remotesubscribe.php:96 actions/remotesubscribe.php:105
|
||||
#: actions/remotesubscribe.php:135
|
||||
msgid "Invalid profile URL (bad format)"
|
||||
msgstr ""
|
||||
msgstr "URL de perfil inválido (formato incorrecto)"
|
||||
|
||||
#: ../actions/finishremotesubscribe.php:77
|
||||
#: actions/finishremotesubscribe.php:79 actions/finishremotesubscribe.php:80
|
||||
msgid "Invalid profile URL returned by server."
|
||||
msgstr ""
|
||||
msgstr "URL do perfil devolvido pelo servidor inválido."
|
||||
|
||||
#: ../actions/avatarbynickname.php:37 actions/avatarbynickname.php:37
|
||||
#: actions/avatarbynickname.php:69
|
||||
msgid "Invalid size."
|
||||
msgstr ""
|
||||
msgstr "Tamanho inválido."
|
||||
|
||||
#: ../actions/finishopenidlogin.php:235 ../actions/register.php:93
|
||||
#: ../actions/register.php:111 actions/finishopenidlogin.php:241
|
||||
@ -1096,24 +1121,24 @@ msgstr ""
|
||||
#: actions/finishopenidlogin.php:279 actions/register.php:193
|
||||
#: actions/register.php:211
|
||||
msgid "Invalid username or password."
|
||||
msgstr ""
|
||||
msgstr "Nome de utilizador ou palavra-passe inválido."
|
||||
|
||||
#: ../actions/invite.php:79 actions/invite.php:86 actions/invite.php:102
|
||||
msgid "Invitation(s) sent"
|
||||
msgstr ""
|
||||
msgstr "Contive(s) enviado(s)"
|
||||
|
||||
#: ../actions/invite.php:97 actions/invite.php:104 actions/invite.php:136
|
||||
msgid "Invitation(s) sent to the following people:"
|
||||
msgstr ""
|
||||
msgstr "Convite(s) enviado(s) para as seguintes pessoas:"
|
||||
|
||||
#: ../lib/util.php:306 lib/util.php:322 lib/facebookaction.php:207
|
||||
#: lib/subgroupnav.php:103
|
||||
msgid "Invite"
|
||||
msgstr ""
|
||||
msgstr "Convidar"
|
||||
|
||||
#: ../actions/invite.php:123 actions/invite.php:130 actions/invite.php:104
|
||||
msgid "Invite new users"
|
||||
msgstr ""
|
||||
msgstr "Convidar novos utilizadores"
|
||||
|
||||
#: ../lib/util.php:261 lib/util.php:277 lib/action.php:609
|
||||
#, php-format
|
||||
@ -1126,7 +1151,7 @@ msgstr ""
|
||||
#: ../actions/imsettings.php:173 actions/imsettings.php:181
|
||||
#: actions/imsettings.php:296
|
||||
msgid "Jabber ID already belongs to another user."
|
||||
msgstr ""
|
||||
msgstr "O Jabber ID introduzido já pertence a outro utilizador."
|
||||
|
||||
#: ../actions/imsettings.php:62 actions/imsettings.php:63
|
||||
#, php-format
|
||||
@ -1138,12 +1163,12 @@ msgstr ""
|
||||
#: ../actions/profilesettings.php:57 actions/profilesettings.php:90
|
||||
#: actions/profilesettings.php:128
|
||||
msgid "Language"
|
||||
msgstr ""
|
||||
msgstr "Linguagem"
|
||||
|
||||
#: ../actions/profilesettings.php:113 actions/profilesettings.php:228
|
||||
#: actions/profilesettings.php:217
|
||||
msgid "Language is too long (max 50 chars)."
|
||||
msgstr ""
|
||||
msgstr "Linguagem introduzida é muito longa (máx. 50 caracteres)."
|
||||
|
||||
#: ../actions/profilesettings.php:52 ../actions/register.php:173
|
||||
#: actions/profilesettings.php:85 actions/register.php:187
|
||||
@ -1152,7 +1177,7 @@ msgstr ""
|
||||
#: actions/tagother.php:113 lib/groupeditform.php:156 lib/grouplist.php:126
|
||||
#: lib/profilelist.php:125
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
msgstr "Localidade"
|
||||
|
||||
#: ../actions/profilesettings.php:104 ../actions/register.php:85
|
||||
#: ../actions/updateprofile.php:108 actions/profilesettings.php:219
|
||||
@ -1161,7 +1186,7 @@ msgstr ""
|
||||
#: actions/profilesettings.php:208 actions/register.php:177
|
||||
#: actions/updateprofile.php:112
|
||||
msgid "Location is too long (max 255 chars)."
|
||||
msgstr ""
|
||||
msgstr "Localidade é muito longa (máx. 255 caracteres)."
|
||||
|
||||
#: ../actions/login.php:97 ../actions/login.php:106
|
||||
#: ../actions/openidlogin.php:68 ../lib/util.php:310 actions/login.php:97
|
||||
@ -1171,13 +1196,13 @@ msgstr ""
|
||||
#: lib/facebookaction.php:315 lib/logingroupnav.php:75
|
||||
#, php-format
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Entrar"
|
||||
|
||||
#: ../actions/openidlogin.php:44 actions/openidlogin.php:52
|
||||
#: actions/openidlogin.php:62
|
||||
#, php-format
|
||||
msgid "Login with an [OpenID](%%doc.openid%%) account."
|
||||
msgstr ""
|
||||
msgstr "Entrar com conta [OpenID](%%doc.openid%%)"
|
||||
|
||||
#: ../actions/login.php:126
|
||||
#, php-format
|
||||
@ -1186,10 +1211,13 @@ msgid ""
|
||||
"(%%action.register%%) a new account, or try [OpenID](%%action.openidlogin%"
|
||||
"%). "
|
||||
msgstr ""
|
||||
"Entrar com o seu nome de utilizador e palavra passe. Não está registado "
|
||||
"ainda?[Registe-se](%%action.register%%), ou tente entrar com "
|
||||
"[OpenID](%%action.openidlogin%%). "
|
||||
|
||||
#: ../lib/util.php:308 lib/util.php:324 lib/action.php:332
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
msgstr "Sair"
|
||||
|
||||
#: ../actions/register.php:166 actions/register.php:180
|
||||
#: actions/register.php:393
|
||||
@ -1199,7 +1227,7 @@ msgstr ""
|
||||
#: ../actions/login.php:110 actions/login.php:110 actions/login.php:245
|
||||
#: lib/facebookaction.php:320
|
||||
msgid "Lost or forgotten password?"
|
||||
msgstr ""
|
||||
msgstr "Perdeu ou esqueceu-se da palavra-passe?"
|
||||
|
||||
#: ../actions/emailsettings.php:80 ../actions/smssettings.php:89
|
||||
#: actions/emailsettings.php:81 actions/smssettings.php:89
|
||||
@ -1215,12 +1243,12 @@ msgstr ""
|
||||
#: ../actions/showstream.php:300 actions/showstream.php:315
|
||||
#: actions/showstream.php:480
|
||||
msgid "Member since"
|
||||
msgstr ""
|
||||
msgstr "Membro desde"
|
||||
|
||||
#: ../actions/userrss.php:70 actions/userrss.php:67 actions/userrss.php:72
|
||||
#, php-format
|
||||
msgid "Microblog by %s"
|
||||
msgstr ""
|
||||
msgstr "Microblog por %s"
|
||||
|
||||
#: ../actions/smssettings.php:304
|
||||
#, php-format
|
||||
@ -1239,7 +1267,7 @@ msgstr ""
|
||||
#: actions/emailsettings.php:83 actions/smssettings.php:91
|
||||
#: actions/emailsettings.php:142 actions/smssettings.php:152
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
msgstr "Novo"
|
||||
|
||||
#: ../lib/mail.php:144 lib/mail.php:144 lib/mail.php:286
|
||||
#, php-format
|
||||
@ -1254,7 +1282,7 @@ msgstr ""
|
||||
#: ../actions/finishopenidlogin.php:71 actions/finishopenidlogin.php:77
|
||||
#: actions/finishopenidlogin.php:99
|
||||
msgid "New nickname"
|
||||
msgstr ""
|
||||
msgstr "Nova alcunha"
|
||||
|
||||
#: ../actions/newnotice.php:87 actions/newnotice.php:96
|
||||
#: actions/newnotice.php:68
|
||||
@ -1265,11 +1293,11 @@ msgstr ""
|
||||
#: actions/profilesettings.php:180 actions/recoverpassword.php:185
|
||||
#: actions/passwordsettings.php:101 actions/recoverpassword.php:219
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
msgstr "Nova palavra-passe"
|
||||
|
||||
#: ../actions/recoverpassword.php:314
|
||||
msgid "New password successfully saved. You are now logged in."
|
||||
msgstr ""
|
||||
msgstr "Nova palavra-passe foi guardada com sucesso. Está agora conectado."
|
||||
|
||||
#: ../actions/login.php:101 ../actions/profilesettings.php:41
|
||||
#: ../actions/register.php:151 actions/login.php:101
|
||||
@ -1279,7 +1307,7 @@ msgstr ""
|
||||
#: actions/showstream.php:251 actions/tagother.php:95
|
||||
#: lib/facebookaction.php:308 lib/groupeditform.php:137
|
||||
msgid "Nickname"
|
||||
msgstr ""
|
||||
msgstr "Alcunha"
|
||||
|
||||
#: ../actions/finishopenidlogin.php:175 ../actions/profilesettings.php:110
|
||||
#: ../actions/register.php:69 actions/finishopenidlogin.php:181
|
||||
@ -1288,7 +1316,7 @@ msgstr ""
|
||||
#: actions/newgroup.php:134 actions/profilesettings.php:214
|
||||
#: actions/register.php:159
|
||||
msgid "Nickname already in use. Try another one."
|
||||
msgstr ""
|
||||
msgstr "Alcunha já em uso. Tente outra diferente."
|
||||
|
||||
#: ../actions/finishopenidlogin.php:165 ../actions/profilesettings.php:88
|
||||
#: ../actions/register.php:67 ../actions/updateprofile.php:77
|
||||
@ -1297,27 +1325,27 @@ msgstr ""
|
||||
#: actions/finishopenidlogin.php:205 actions/profilesettings.php:192
|
||||
#: actions/updateprofile.php:81
|
||||
msgid "Nickname must have only lowercase letters and numbers and no spaces."
|
||||
msgstr ""
|
||||
msgstr "Alcunha só deve conter letras minúsculas e números. Sem espaços."
|
||||
|
||||
#: ../actions/finishopenidlogin.php:170 actions/finishopenidlogin.php:176
|
||||
#: actions/finishopenidlogin.php:210
|
||||
msgid "Nickname not allowed."
|
||||
msgstr ""
|
||||
msgstr "Alcunha não permitida."
|
||||
|
||||
#: ../actions/remotesubscribe.php:72 actions/remotesubscribe.php:81
|
||||
#: actions/remotesubscribe.php:106
|
||||
msgid "Nickname of the user you want to follow"
|
||||
msgstr ""
|
||||
msgstr "Alcunha do utilizador que pretende seguir"
|
||||
|
||||
#: ../actions/recoverpassword.php:162 actions/recoverpassword.php:167
|
||||
#: actions/recoverpassword.php:186
|
||||
msgid "Nickname or email"
|
||||
msgstr ""
|
||||
msgstr "Alcunha ou email"
|
||||
|
||||
#: ../actions/deletenotice.php:59 actions/deletenotice.php:60
|
||||
#: actions/block.php:147 actions/deletenotice.php:118
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
msgstr "Não"
|
||||
|
||||
#: ../actions/imsettings.php:156 actions/imsettings.php:164
|
||||
#: actions/imsettings.php:279
|
||||
@ -1337,7 +1365,7 @@ msgstr ""
|
||||
#: ../actions/smssettings.php:316 actions/smssettings.php:324
|
||||
#: actions/smssettings.php:486
|
||||
msgid "No code entered"
|
||||
msgstr ""
|
||||
msgstr "Nenhum código introduzido"
|
||||
|
||||
#: ../actions/confirmaddress.php:33 actions/confirmaddress.php:33
|
||||
#: actions/confirmaddress.php:75
|
||||
@ -1367,12 +1395,12 @@ msgstr ""
|
||||
#: ../actions/finishremotesubscribe.php:65
|
||||
#: actions/finishremotesubscribe.php:67 actions/finishremotesubscribe.php:68
|
||||
msgid "No nickname provided by remote server."
|
||||
msgstr ""
|
||||
msgstr "Nenhuma alcunha fornecida pelo servidor remoto."
|
||||
|
||||
#: ../actions/avatarbynickname.php:27 actions/avatarbynickname.php:27
|
||||
#: actions/avatarbynickname.php:59 actions/leavegroup.php:81
|
||||
msgid "No nickname."
|
||||
msgstr ""
|
||||
msgstr "Nenhuma alcunha."
|
||||
|
||||
#: ../actions/emailsettings.php:222 ../actions/imsettings.php:206
|
||||
#: ../actions/smssettings.php:229 actions/emailsettings.php:240
|
||||
@ -1380,12 +1408,12 @@ msgstr ""
|
||||
#: actions/emailsettings.php:363 actions/imsettings.php:345
|
||||
#: actions/smssettings.php:358
|
||||
msgid "No pending confirmation to cancel."
|
||||
msgstr ""
|
||||
msgstr "Nenhuma confirmação pendente para cancelar."
|
||||
|
||||
#: ../actions/smssettings.php:176 actions/smssettings.php:184
|
||||
#: actions/smssettings.php:294
|
||||
msgid "No phone number."
|
||||
msgstr ""
|
||||
msgstr "Nenhum numero de telefone."
|
||||
|
||||
#: ../actions/finishremotesubscribe.php:72
|
||||
#: actions/finishremotesubscribe.php:74 actions/finishremotesubscribe.php:75
|
||||
@ -1395,19 +1423,19 @@ msgstr ""
|
||||
#: ../actions/recoverpassword.php:226 actions/recoverpassword.php:232
|
||||
#: actions/recoverpassword.php:266
|
||||
msgid "No registered email address for that user."
|
||||
msgstr ""
|
||||
msgstr "Nenhum endereço de email registado para esse utilizador."
|
||||
|
||||
#: ../actions/userauthorization.php:49 actions/userauthorization.php:55
|
||||
#: actions/userauthorization.php:57
|
||||
msgid "No request found!"
|
||||
msgstr ""
|
||||
msgstr "Nenhum pedido encontrado!"
|
||||
|
||||
#: ../actions/noticesearch.php:64 ../actions/peoplesearch.php:64
|
||||
#: actions/noticesearch.php:69 actions/peoplesearch.php:69
|
||||
#: actions/groupsearch.php:81 actions/noticesearch.php:104
|
||||
#: actions/peoplesearch.php:85
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
msgstr "Nenhum resultado"
|
||||
|
||||
#: ../actions/avatarbynickname.php:32 actions/avatarbynickname.php:32
|
||||
#: actions/avatarbynickname.php:64
|
||||
@ -1418,12 +1446,12 @@ msgstr ""
|
||||
#: actions/twitapistatuses.php:520 actions/twitapifavorites.php:112
|
||||
#: actions/twitapistatuses.php:446
|
||||
msgid "No status found with that ID."
|
||||
msgstr ""
|
||||
msgstr "Nenhum estado encontrado com esse ID."
|
||||
|
||||
#: ../actions/twitapistatuses.php:555 actions/twitapistatuses.php:478
|
||||
#: actions/twitapistatuses.php:418
|
||||
msgid "No status with that ID found."
|
||||
msgstr ""
|
||||
msgstr "Nenhum estado com esse ID encontrado."
|
||||
|
||||
#: ../actions/openidsettings.php:135 actions/openidsettings.php:144
|
||||
#: actions/openidsettings.php:222
|
||||
@ -4710,19 +4738,19 @@ msgstr "O utilizador bloqueou-o."
|
||||
|
||||
#: lib/subscribeform.php:115 lib/subscribeform.php:139
|
||||
msgid "Subscribe to this user"
|
||||
msgstr ""
|
||||
msgstr "Subscrever este utilizador"
|
||||
|
||||
#: lib/tagcloudsection.php:56
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
msgstr "Nenhum"
|
||||
|
||||
#: lib/topposterssection.php:74
|
||||
msgid "Top posters"
|
||||
msgstr ""
|
||||
msgstr "Top posters"
|
||||
|
||||
#: lib/unblockform.php:120 lib/unblockform.php:150
|
||||
msgid "Unblock this user"
|
||||
msgstr ""
|
||||
msgstr "Desbloquear este utilizador"
|
||||
|
||||
#: lib/unblockform.php:150
|
||||
msgid "Unblock"
|
||||
@ -4730,4 +4758,4 @@ msgstr "Desbloquear"
|
||||
|
||||
#: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137
|
||||
msgid "Unsubscribe from this user"
|
||||
msgstr ""
|
||||
msgstr "Des-Subscrever deste utilizador"
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-01-25 16:24+0000\n"
|
||||
"PO-Revision-Date: 2009-02-03 18:51+0000\n"
|
||||
"Last-Translator: Håkan Eriksson <eriksson@utryckning.se>\n"
|
||||
"PO-Revision-Date: 2009-03-17 10:54+0000\n"
|
||||
"Last-Translator: Per-Olov Jernberg <possan@possan.se>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -158,7 +158,7 @@ msgstr "%s med vänner"
|
||||
#: actions/twitapistatuses.php:33
|
||||
#, php-format
|
||||
msgid "%s public timeline"
|
||||
msgstr "%s publik tidslinje"
|
||||
msgstr "%s publika tidslinje"
|
||||
|
||||
#: ../lib/mail.php:206 lib/mail.php:212 lib/mail.php:411
|
||||
#, php-format
|
||||
@ -278,7 +278,7 @@ msgstr ""
|
||||
#: actions/twitapistatuses.php:402 actions/twitapistatuses.php:429
|
||||
#: actions/twitapiusers.php:32
|
||||
msgid "API method not found!"
|
||||
msgstr "API metoden hittades inte!"
|
||||
msgstr "API-metoden hittades inte!"
|
||||
|
||||
#: ../actions/twitapiaccount.php:57 ../actions/twitapiaccount.php:113
|
||||
#: ../actions/twitapiaccount.php:119 ../actions/twitapiblocks.php:28
|
||||
@ -301,7 +301,7 @@ msgstr "API metoden hittades inte!"
|
||||
#: actions/twitapinotifications.php:31 actions/twitapinotifications.php:37
|
||||
#: actions/twitapistatuses.php:562
|
||||
msgid "API method under construction."
|
||||
msgstr "API metoden är under uppbyggnad."
|
||||
msgstr "API-metoden är under uppbyggnad."
|
||||
|
||||
#: ../lib/util.php:324 lib/util.php:340 lib/action.php:568
|
||||
msgid "About"
|
||||
@ -330,7 +330,7 @@ msgstr "Lägg till OpenID"
|
||||
#: ../lib/settingsaction.php:97 lib/settingsaction.php:91
|
||||
#: lib/accountsettingsaction.php:117
|
||||
msgid "Add or remove OpenIDs"
|
||||
msgstr "Lägg till eller tabort OpenIDs"
|
||||
msgstr "Lägg till eller ta bort OpenID"
|
||||
|
||||
#: ../actions/emailsettings.php:38 ../actions/imsettings.php:39
|
||||
#: ../actions/smssettings.php:39 actions/emailsettings.php:39
|
||||
@ -450,7 +450,7 @@ msgstr "Biografin är för lång (max 140 tecken)"
|
||||
|
||||
#: ../lib/deleteaction.php:41 lib/deleteaction.php:41 lib/deleteaction.php:69
|
||||
msgid "Can't delete this notice."
|
||||
msgstr "Kan inte tabort detta inlägg."
|
||||
msgstr "Kan inte ta bort detta inlägg."
|
||||
|
||||
#: ../actions/updateprofile.php:119 actions/updateprofile.php:120
|
||||
#: actions/updateprofile.php:123
|
||||
@ -462,7 +462,7 @@ msgstr "Kan inte läsa användarbild URL '%s'"
|
||||
#: actions/profilesettings.php:404 actions/recoverpassword.php:313
|
||||
#: actions/passwordsettings.php:169 actions/recoverpassword.php:347
|
||||
msgid "Can't save new password."
|
||||
msgstr "Kan inte spara nya lösenordet."
|
||||
msgstr "Kan inte spara det nya lösenordet."
|
||||
|
||||
#: ../actions/emailsettings.php:57 ../actions/imsettings.php:58
|
||||
#: ../actions/smssettings.php:62 actions/emailsettings.php:58
|
||||
@ -508,7 +508,7 @@ msgstr "Ändra ditt lösenord"
|
||||
#: ../lib/settingsaction.php:85 lib/settingsaction.php:85
|
||||
#: lib/accountsettingsaction.php:105
|
||||
msgid "Change your profile settings"
|
||||
msgstr "Ändra dina profil inställningar"
|
||||
msgstr "Ändra dina profilinställningar"
|
||||
|
||||
#: ../actions/password.php:43 ../actions/recoverpassword.php:181
|
||||
#: ../actions/register.php:155 ../actions/smssettings.php:65
|
||||
@ -540,7 +540,7 @@ msgstr "Bekräftelsekod"
|
||||
#: ../actions/confirmaddress.php:38 actions/confirmaddress.php:38
|
||||
#: actions/confirmaddress.php:80
|
||||
msgid "Confirmation code not found."
|
||||
msgstr "Verifikation koden finns ej."
|
||||
msgstr "Bekräftelsekoden kunde inte hittas."
|
||||
|
||||
#: ../actions/register.php:202
|
||||
#, php-format
|
||||
@ -4794,12 +4794,12 @@ msgstr "%1$s lyssnar nu på dina meddelanden i %2$s."
|
||||
#: lib/mail.php:254
|
||||
#, fuzzy, php-format
|
||||
msgid "Location: %s\n"
|
||||
msgstr "Plats: %s"
|
||||
msgstr "Plats: %s\n"
|
||||
|
||||
#: lib/mail.php:256
|
||||
#, fuzzy, php-format
|
||||
msgid "Homepage: %s\n"
|
||||
msgstr "Hemsida: %s"
|
||||
msgstr "Hemsida: %s\n"
|
||||
|
||||
#: lib/mail.php:258
|
||||
#, php-format
|
||||
@ -4821,9 +4821,7 @@ msgstr ""
|
||||
#: lib/mail.php:555
|
||||
#, fuzzy, php-format
|
||||
msgid "%1$s just added your notice from %2$s"
|
||||
msgstr ""
|
||||
"%1$s la just in ditt inlägg ifrån %2$s som en av deras favorit.\n"
|
||||
"\n"
|
||||
msgstr "%1$s la just in ditt inlägg ifrån %2$s som en av deras favorit."
|
||||
|
||||
#: lib/mailbox.php:229 lib/noticelist.php:380
|
||||
#, fuzzy
|
||||
@ -4853,7 +4851,7 @@ msgstr "svar till..."
|
||||
#: lib/noticelist.php:447 lib/noticelist.php:450
|
||||
#, fuzzy
|
||||
msgid "Reply to this notice"
|
||||
msgstr "Kan inte tabort detta inlägg."
|
||||
msgstr "Svara på detta inlägg"
|
||||
|
||||
#: lib/noticelist.php:451
|
||||
#, fuzzy
|
||||
@ -4863,12 +4861,12 @@ msgstr "svar"
|
||||
#: lib/noticelist.php:471 lib/noticelist.php:474
|
||||
#, fuzzy
|
||||
msgid "Delete this notice"
|
||||
msgstr "Tabort inlägg"
|
||||
msgstr "Ta bort inlägg"
|
||||
|
||||
#: lib/noticelist.php:474
|
||||
#, fuzzy
|
||||
msgid "Delete"
|
||||
msgstr "Tabort"
|
||||
msgstr "Ta bort"
|
||||
|
||||
#: lib/nudgeform.php:116
|
||||
msgid "Nudge this user"
|
||||
|
Binary file not shown.
@ -10,20 +10,18 @@
|
||||
# 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: 2009-01-25 16:24+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2009-04-18 06:18+0000\n"
|
||||
"Last-Translator: Veeven <veeven@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"X-Generator: Pootle 1.1.0\n"
|
||||
|
||||
#: ../actions/noticesearchrss.php:64 actions/noticesearchrss.php:68
|
||||
#: actions/noticesearchrss.php:88
|
||||
@ -41,7 +39,7 @@ msgstr "ఈ అంతరంగిక భోగట్టా తప్ప: సం
|
||||
#: ../actions/showstream.php:400 ../lib/stream.php:109
|
||||
#: actions/showstream.php:418 lib/mailbox.php:164 lib/stream.php:76
|
||||
msgid " from "
|
||||
msgstr ""
|
||||
msgstr " నుండి "
|
||||
|
||||
#: ../actions/twitapistatuses.php:478 actions/twitapistatuses.php:412
|
||||
#: actions/twitapistatuses.php:347
|
||||
@ -117,7 +115,7 @@ msgstr ""
|
||||
#: actions/invite.php:99 actions/invite.php:123 actions/invite.php:131
|
||||
#, php-format
|
||||
msgid "%s (%s)"
|
||||
msgstr ""
|
||||
msgstr "%s (%s)"
|
||||
|
||||
#: ../actions/publicrss.php:62 actions/publicrss.php:48
|
||||
#: actions/publicrss.php:90
|
||||
@ -143,13 +141,13 @@ msgstr ""
|
||||
#: ../lib/mail.php:206 lib/mail.php:212 lib/mail.php:411
|
||||
#, php-format
|
||||
msgid "%s status"
|
||||
msgstr ""
|
||||
msgstr "%s స్థితి"
|
||||
|
||||
#: ../actions/twitapistatuses.php:338 actions/twitapistatuses.php:265
|
||||
#: actions/twitapistatuses.php:199
|
||||
#, php-format
|
||||
msgid "%s timeline"
|
||||
msgstr ""
|
||||
msgstr "%s కాలరేఖ"
|
||||
|
||||
#: ../actions/twitapistatuses.php:52 actions/twitapistatuses.php:52
|
||||
#: actions/twitapistatuses.php:36
|
||||
@ -345,7 +343,7 @@ msgstr "ఇప్పటికే చేరారు!"
|
||||
#: ../actions/deletenotice.php:54 actions/deletenotice.php:55
|
||||
#: actions/deletenotice.php:113
|
||||
msgid "Are you sure you want to delete this notice?"
|
||||
msgstr ""
|
||||
msgstr "మీరు నిజంగానే ఈ నోటీసుని తొలగించాలనుకుంటున్నారా?"
|
||||
|
||||
#: ../actions/userauthorization.php:77 actions/userauthorization.php:83
|
||||
#: actions/userauthorization.php:81
|
||||
@ -412,7 +410,7 @@ msgstr "స్వపరిచయం చాలా పెద్దగా ఉంద
|
||||
|
||||
#: ../lib/deleteaction.php:41 lib/deleteaction.php:41 lib/deleteaction.php:69
|
||||
msgid "Can't delete this notice."
|
||||
msgstr ""
|
||||
msgstr "ఈ నోటీసుని తొలగించలేము."
|
||||
|
||||
#: ../actions/updateprofile.php:119 actions/updateprofile.php:120
|
||||
#: actions/updateprofile.php:123
|
||||
@ -779,10 +777,7 @@ msgstr "వాడుకరిని అనుసంధానించడంల
|
||||
#: actions/finishremotesubscribe.php:153 actions/finishremotesubscribe.php:166
|
||||
#, fuzzy
|
||||
msgid "Error inserting avatar"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"అవతారాన్ని పెట్టడంలో పొరపాటు\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "అవతారాన్ని పెట్టడంలో పొరపాటు"
|
||||
|
||||
#: ../actions/finishremotesubscribe.php:143
|
||||
#: actions/finishremotesubscribe.php:145 actions/finishremotesubscribe.php:158
|
||||
@ -848,10 +843,7 @@ msgstr "ప్రస్తుత పేరు"
|
||||
#: ../lib/util.php:326 lib/util.php:342 lib/action.php:570
|
||||
#, fuzzy
|
||||
msgid "FAQ"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"తవసం\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "తవసం"
|
||||
|
||||
#: ../actions/avatar.php:115 actions/profilesettings.php:352
|
||||
#: actions/avatarsettings.php:397
|
||||
@ -918,10 +910,7 @@ msgstr "సహాయం"
|
||||
#: lib/facebookaction.php:200
|
||||
#, fuzzy
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"వాకిలి\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "వాకిలి"
|
||||
|
||||
#: ../actions/profilesettings.php:46 ../actions/register.php:167
|
||||
#: actions/profilesettings.php:79 actions/register.php:181
|
||||
@ -929,10 +918,7 @@ msgstr ""
|
||||
#: lib/groupeditform.php:146
|
||||
#, fuzzy
|
||||
msgid "Homepage"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"హోమ్ పేజీ\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "హోమ్ పేజీ"
|
||||
|
||||
#: ../actions/profilesettings.php:95 ../actions/register.php:76
|
||||
#: actions/profilesettings.php:210 actions/register.php:83
|
||||
@ -1198,10 +1184,7 @@ msgstr "సభ్యులైన తేదీ"
|
||||
#: ../actions/userrss.php:70 actions/userrss.php:67 actions/userrss.php:72
|
||||
#, fuzzy, php-format
|
||||
msgid "Microblog by %s"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"%s యొక్క మైక్రోబ్లాగు\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "%s యొక్క మైక్రోబ్లాగు"
|
||||
|
||||
#: ../actions/smssettings.php:304
|
||||
#, php-format
|
||||
@ -1354,10 +1337,7 @@ msgstr "దూరపు సర్వర్ పేరుని ఇవ్వలే
|
||||
#: actions/avatarbynickname.php:59 actions/leavegroup.php:81
|
||||
#, fuzzy
|
||||
msgid "No nickname."
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"పేరు లేదు.\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "పేరు లేదు."
|
||||
|
||||
#: ../actions/emailsettings.php:222 ../actions/imsettings.php:206
|
||||
#: ../actions/smssettings.php:229 actions/emailsettings.php:240
|
||||
@ -1614,10 +1594,7 @@ msgstr "ఓపెన్ఐడీ"
|
||||
#: actions/finishopenidlogin.php:73
|
||||
#, fuzzy
|
||||
msgid "OpenID Account Setup"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"ఓపెన్ఐడీ ఖాతా అమర్పు\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "ఓపెన్ఐడీ ఖాతా అమర్పు"
|
||||
|
||||
#: ../lib/openid.php:180 lib/openid.php:180 lib/openid.php:266
|
||||
msgid "OpenID Auto-Submit"
|
||||
@ -3448,10 +3425,7 @@ msgstr ""
|
||||
#: actions/showgroup.php:121
|
||||
#, fuzzy
|
||||
msgid "No nickname"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"పేరు లేదు.\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "పేరు లేదు."
|
||||
|
||||
#: actions/editgroup.php:99 actions/groupbyid.php:88 actions/grouplogo.php:100
|
||||
#: actions/groupmembers.php:83 actions/joingroup.php:88
|
||||
@ -4230,10 +4204,7 @@ msgstr "Jabber ID లేదు."
|
||||
#: actions/tag.php:43
|
||||
#, fuzzy, php-format
|
||||
msgid "Notices tagged with %s, page %d"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"%s యొక్క మైక్రోబ్లాగు\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "%s యొక్క మైక్రోబ్లాగు"
|
||||
|
||||
#: actions/tag.php:66
|
||||
#, php-format
|
||||
@ -4291,10 +4262,7 @@ msgstr "అటువంటి సందేశమేమీ లేదు."
|
||||
#: actions/tagrss.php:66
|
||||
#, fuzzy, php-format
|
||||
msgid "Microblog tagged with %s"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"%s యొక్క మైక్రోబ్లాగు\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "%s యొక్క మైక్రోబ్లాగు"
|
||||
|
||||
#: actions/twitapiblocks.php:47
|
||||
msgid "Block user failed."
|
||||
@ -4638,15 +4606,12 @@ msgstr ""
|
||||
#: lib/mail.php:254
|
||||
#, fuzzy, php-format
|
||||
msgid "Location: %s\n"
|
||||
msgstr "ప్రాంతం: %s"
|
||||
msgstr "ప్రాంతం: %s\n"
|
||||
|
||||
#: lib/mail.php:256
|
||||
#, fuzzy, php-format
|
||||
msgid "Homepage: %s\n"
|
||||
msgstr ""
|
||||
"#-#-#-#-# laconica.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"హోమ్ పేజీ\n"
|
||||
"#-#-#-#-# laconica.new.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
msgstr "హోమ్ పేజీ\n"
|
||||
|
||||
#: lib/mail.php:258
|
||||
#, php-format
|
||||
|
Binary file not shown.
@ -3,8 +3,8 @@ msgstr ""
|
||||
"Project-Id-Version: laconica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-01-25 16:24+0000\n"
|
||||
"PO-Revision-Date: 2009-01-31 05:21+0000\n"
|
||||
"Last-Translator: Tuan Nguyen <group3t@gmail.com>\n"
|
||||
"PO-Revision-Date: 2009-05-10 05:27+0000\n"
|
||||
"Last-Translator: NGUYỄN Mạnh Hùng <loveleeyoungae@yahoo.com>\n"
|
||||
"Language-Team: <support@saigonica.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -30,13 +30,13 @@ msgstr " ngoại trừ thông tin riêng: mật khẩu, email, địa chỉ IM,
|
||||
#: ../actions/showstream.php:400 ../lib/stream.php:109
|
||||
#: actions/showstream.php:418 lib/mailbox.php:164 lib/stream.php:76
|
||||
msgid " from "
|
||||
msgstr " từ"
|
||||
msgstr " từ "
|
||||
|
||||
#: ../actions/twitapistatuses.php:478 actions/twitapistatuses.php:412
|
||||
#: actions/twitapistatuses.php:347
|
||||
#, php-format
|
||||
msgid "%1$s / Updates replying to %2$s"
|
||||
msgstr ""
|
||||
msgstr "%1$s / Các cập nhật đang trả lời tới %2$s"
|
||||
|
||||
#: ../actions/invite.php:168 actions/invite.php:176 actions/invite.php:211
|
||||
#, php-format
|
||||
@ -103,7 +103,7 @@ msgstr ""
|
||||
#: ../lib/mail.php:124 lib/mail.php:124 lib/mail.php:126 lib/mail.php:241
|
||||
#, php-format
|
||||
msgid "%1$s is now listening to your notices on %2$s."
|
||||
msgstr "%1$s dang theo doi tin nhan cua ban tren %2$s."
|
||||
msgstr "%1$s đang theo dõi lưu ý của bạn trên %2$s."
|
||||
|
||||
#: ../lib/mail.php:126
|
||||
#, php-format
|
||||
@ -176,7 +176,7 @@ msgstr "Dòng tin nhắn của %s"
|
||||
#: actions/twitapistatuses.php:36
|
||||
#, php-format
|
||||
msgid "%s updates from everyone!"
|
||||
msgstr ""
|
||||
msgstr "%s cập nhật từ tất cả mọi người!"
|
||||
|
||||
#: ../actions/register.php:213
|
||||
msgid ""
|
||||
@ -817,7 +817,7 @@ msgstr "Nhập biệt hiệu hoặc email."
|
||||
#: ../actions/smssettings.php:64 actions/smssettings.php:64
|
||||
#: actions/smssettings.php:119
|
||||
msgid "Enter the code you received on your phone."
|
||||
msgstr ""
|
||||
msgstr "Nhập mã mà bạn nhận được trên điện thoại của bạn."
|
||||
|
||||
#: ../actions/userauthorization.php:137 actions/userauthorization.php:144
|
||||
#: actions/userauthorization.php:161
|
||||
@ -1151,9 +1151,9 @@ msgid ""
|
||||
"s, available under the [GNU Affero General Public License](http://www.fsf."
|
||||
"org/licensing/licenses/agpl-3.0.html)."
|
||||
msgstr ""
|
||||
"Saigonica là bản sửa đổi của phiên bản [Laconica 0.6.0](http://laconi.ca/), "
|
||||
"phát hành theo bản quyền [GNU Affero General Public License](http://www.fsf."
|
||||
"org/licensing/licenses/agpl-3.0.html)."
|
||||
"Đang dùng [Laconica](http://laconi.ca/), phiên bản %s phát hành theo bản "
|
||||
"quyền [GNU Affero General Public "
|
||||
"License](http://www.fsf.org/licensing/licenses/agpl-3.0.html)."
|
||||
|
||||
#: ../actions/imsettings.php:173 actions/imsettings.php:181
|
||||
#: actions/imsettings.php:296
|
||||
@ -1178,7 +1178,7 @@ msgstr "Ngôn ngữ"
|
||||
#: actions/profilesettings.php:217
|
||||
#, fuzzy
|
||||
msgid "Language is too long (max 50 chars)."
|
||||
msgstr "Tên khu vực quá dài (không quá 255 ký tự)."
|
||||
msgstr "Ngôn ngữ quá dài (tối đa là 50 ký tự)."
|
||||
|
||||
#: ../actions/profilesettings.php:52 ../actions/register.php:173
|
||||
#: actions/profilesettings.php:85 actions/register.php:187
|
||||
@ -1280,7 +1280,7 @@ msgstr "Ghi chú và các file của tôi đã có ở phía dưới"
|
||||
#: actions/emailsettings.php:83 actions/smssettings.php:91
|
||||
#: actions/emailsettings.php:142 actions/smssettings.php:152
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
msgstr "Mới"
|
||||
|
||||
#: ../lib/mail.php:144 lib/mail.php:144 lib/mail.php:286
|
||||
#, php-format
|
||||
@ -1395,9 +1395,8 @@ msgstr "Không có nội dung!"
|
||||
|
||||
#: ../actions/emailsettings.php:174 actions/emailsettings.php:192
|
||||
#: actions/emailsettings.php:304
|
||||
#, fuzzy
|
||||
msgid "No email address."
|
||||
msgstr "Địa chỉ email của bạn"
|
||||
msgstr "Không có địa chỉ email."
|
||||
|
||||
#: ../actions/userbyid.php:32 actions/userbyid.php:32 actions/userbyid.php:70
|
||||
msgid "No id."
|
||||
@ -1429,9 +1428,8 @@ msgstr "Sự xác nhận chưa được hủy bỏ."
|
||||
|
||||
#: ../actions/smssettings.php:176 actions/smssettings.php:184
|
||||
#: actions/smssettings.php:294
|
||||
#, fuzzy
|
||||
msgid "No phone number."
|
||||
msgstr "Số điện thoại để nhắn SMS "
|
||||
msgstr "Không có số điện thoại."
|
||||
|
||||
#: ../actions/finishremotesubscribe.php:72
|
||||
#: actions/finishremotesubscribe.php:74 actions/finishremotesubscribe.php:75
|
||||
@ -1635,9 +1633,8 @@ msgstr "Chưa đăng nhận!"
|
||||
|
||||
#: ../actions/opensearch.php:35 actions/opensearch.php:35
|
||||
#: actions/opensearch.php:67
|
||||
#, fuzzy
|
||||
msgid "Notice Search"
|
||||
msgstr "Tin đã gửi"
|
||||
msgstr "Tìm kiếm thông báo"
|
||||
|
||||
#: ../actions/showstream.php:82 actions/showstream.php:82
|
||||
#: actions/showstream.php:180 actions/showstream.php:187
|
||||
@ -1659,9 +1656,9 @@ msgstr "Tin nhắn"
|
||||
|
||||
#: ../actions/tag.php:35 ../actions/tag.php:81 actions/tag.php:35
|
||||
#: actions/tag.php:81 actions/tag.php:41
|
||||
#, fuzzy, php-format
|
||||
#, php-format
|
||||
msgid "Notices tagged with %s"
|
||||
msgstr "Dòng tin nhắn cho %s"
|
||||
msgstr "Thông báo được gắn thẻ %s"
|
||||
|
||||
#: ../actions/password.php:39 actions/profilesettings.php:178
|
||||
#: actions/passwordsettings.php:97
|
||||
@ -2915,7 +2912,7 @@ msgstr "Đây là hộp thư đến của bạn, bao gồm các tin nhắn gửi
|
||||
msgid ""
|
||||
"%1$s has invited you to join them on %2$s (%3$s).\n"
|
||||
"\n"
|
||||
msgstr "%1$s moi ban tham gia vao %2$s"
|
||||
msgstr "%1$s moi ban tham gia vao %2$s (%3$s).\n"
|
||||
|
||||
#: actions/login.php:104 actions/login.php:235 actions/openidlogin.php:108
|
||||
#: actions/register.php:416
|
||||
@ -3194,7 +3191,8 @@ msgstr "%s da them tin nhan cua ban vao danh sach tin nhan ua thich"
|
||||
msgid ""
|
||||
"%1$s just added your notice from %2$s as one of their favorites.\n"
|
||||
"\n"
|
||||
msgstr "%s da them tin nhan cua ban vao danh sach tin nhan ua thich"
|
||||
msgstr "%s da them tin nhan cua ban vao danh sach tin nhan ua thich\n"
|
||||
"\n"
|
||||
|
||||
#: actions/twittersettings.php:27
|
||||
#, fuzzy
|
||||
@ -3326,7 +3324,7 @@ msgstr ""
|
||||
#: classes/Command.php:96 classes/Command.php:113
|
||||
#, fuzzy, php-format
|
||||
msgid "Subscriptions: %1$s\n"
|
||||
msgstr "Tôi theo"
|
||||
msgstr "Tôi theo: %1$s\n"
|
||||
|
||||
#: classes/Command.php:125 classes/Command.php:242 classes/Command.php:145
|
||||
#: classes/Command.php:276
|
||||
@ -3352,12 +3350,12 @@ msgstr "Tên đầy đủ"
|
||||
#: classes/Command.php:172 classes/Command.php:195
|
||||
#, fuzzy, php-format
|
||||
msgid "Location: %s"
|
||||
msgstr "Thành phố"
|
||||
msgstr "Thành phố: %s"
|
||||
|
||||
#: classes/Command.php:175 classes/Command.php:198
|
||||
#, fuzzy, php-format
|
||||
msgid "Homepage: %s"
|
||||
msgstr "Trang chủ hoặc Blog"
|
||||
msgstr "Trang chủ hoặc Blog: %s"
|
||||
|
||||
#: classes/Command.php:178 classes/Command.php:201
|
||||
#, fuzzy, php-format
|
||||
@ -4878,12 +4876,12 @@ msgstr "%1$s dang theo doi tin nhan cua ban tren %2$s."
|
||||
#: lib/mail.php:254
|
||||
#, fuzzy, php-format
|
||||
msgid "Location: %s\n"
|
||||
msgstr "Thành phố"
|
||||
msgstr "Thành phố: %s\n"
|
||||
|
||||
#: lib/mail.php:256
|
||||
#, fuzzy, php-format
|
||||
msgid "Homepage: %s\n"
|
||||
msgstr "Trang chủ hoặc Blog"
|
||||
msgstr "Trang chủ hoặc Blog: %s\n"
|
||||
|
||||
#: lib/mail.php:258
|
||||
#, php-format
|
||||
@ -5050,22 +5048,21 @@ msgid "None"
|
||||
msgstr "Không"
|
||||
|
||||
#: lib/topposterssection.php:74
|
||||
#, fuzzy
|
||||
msgid "Top posters"
|
||||
msgstr ""
|
||||
msgstr "Top posters"
|
||||
|
||||
#: lib/unblockform.php:120 lib/unblockform.php:150
|
||||
#, fuzzy
|
||||
msgid "Unblock this user"
|
||||
msgstr "Ban user"
|
||||
msgstr "Bỏ chặn người dùng này"
|
||||
|
||||
#: lib/unblockform.php:150
|
||||
msgid "Unblock"
|
||||
msgstr ""
|
||||
msgstr "Bỏ chặn"
|
||||
|
||||
#: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137
|
||||
#, fuzzy
|
||||
msgid "Unsubscribe from this user"
|
||||
msgstr "Hết theo"
|
||||
msgstr "Ngừng đăng ký từ người dùng này"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Code not yet ready."
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -31,6 +31,8 @@ if (!defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once INSTALLDIR.'/plugins/Realtime/RealtimePlugin.php';
|
||||
|
||||
/**
|
||||
* Plugin to do realtime updates using Comet
|
||||
*
|
||||
@ -41,165 +43,65 @@ if (!defined('LACONICA')) {
|
||||
* @link http://laconi.ca/
|
||||
*/
|
||||
|
||||
class CometPlugin extends Plugin
|
||||
class CometPlugin extends RealtimePlugin
|
||||
{
|
||||
var $server = null;
|
||||
public $server = null;
|
||||
public $username = null;
|
||||
public $password = null;
|
||||
public $prefix = null;
|
||||
protected $bay = null;
|
||||
|
||||
function __construct($server=null, $username=null, $password=null)
|
||||
function __construct($server=null, $username=null, $password=null, $prefix=null)
|
||||
{
|
||||
$this->server = $server;
|
||||
$this->username = $username;
|
||||
$this->password = $password;
|
||||
$this->prefix = $prefix;
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
function onEndShowScripts($action)
|
||||
function _getScripts()
|
||||
{
|
||||
$timeline = null;
|
||||
$scripts = parent::_getScripts();
|
||||
|
||||
$this->log(LOG_DEBUG, 'got action ' . $action->trimmed('action'));
|
||||
$ours = array('jquery.comet.js', 'cometupdate.js');
|
||||
|
||||
switch ($action->trimmed('action')) {
|
||||
case 'public':
|
||||
$timeline = '/timelines/public';
|
||||
break;
|
||||
case 'tag':
|
||||
$tag = $action->trimmed('tag');
|
||||
if (!empty($tag)) {
|
||||
$timeline = '/timelines/tag/'.$tag;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return true;
|
||||
foreach ($ours as $script) {
|
||||
$scripts[] = common_path('plugins/Comet/'.$script);
|
||||
}
|
||||
|
||||
$scripts = array('jquery.comet.js', 'json2.js', 'updatetimeline.js');
|
||||
|
||||
foreach ($scripts as $script) {
|
||||
$action->element('script', array('type' => 'text/javascript',
|
||||
'src' => common_path('plugins/Comet/'.$script)),
|
||||
' ');
|
||||
return $scripts;
|
||||
}
|
||||
|
||||
$user = common_current_user();
|
||||
|
||||
if (!empty($user->id)) {
|
||||
$user_id = $user->id;
|
||||
} else {
|
||||
$user_id = 0;
|
||||
}
|
||||
|
||||
$replyurl = common_local_url('newnotice');
|
||||
$favorurl = common_local_url('favor');
|
||||
// FIXME: need to find a better way to pass this pattern in
|
||||
$deleteurl = common_local_url('deletenotice',
|
||||
array('notice' => '0000000000'));
|
||||
|
||||
$action->elementStart('script', array('type' => 'text/javascript'));
|
||||
$action->raw("$(document).ready(function() { updater.init(\"$this->server\", \"$timeline\", $user_id, \"$replyurl\", \"$favorurl\", \"$deleteurl\"); });");
|
||||
$action->elementEnd('script');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function onEndNoticeSave($notice)
|
||||
function _updateInitialize($timeline, $user_id)
|
||||
{
|
||||
$this->log(LOG_INFO, "Called for save notice.");
|
||||
|
||||
$timelines = array();
|
||||
|
||||
// XXX: Add other timelines; this is just for the public one
|
||||
|
||||
if ($notice->is_local ||
|
||||
($notice->is_local == 0 && !common_config('public', 'localonly'))) {
|
||||
$timelines[] = '/timelines/public';
|
||||
$script = parent::_updateInitialize($timeline, $user_id);
|
||||
return $script." CometUpdate.init(\"$this->server\", \"$timeline\", $user_id, \"$this->replyurl\", \"$this->favorurl\", \"$this->deleteurl\");";
|
||||
}
|
||||
|
||||
$tags = $this->getNoticeTags($notice);
|
||||
|
||||
if (!empty($tags)) {
|
||||
foreach ($tags as $tag) {
|
||||
$timelines[] = '/timelines/tag/' . $tag;
|
||||
}
|
||||
}
|
||||
|
||||
if (count($timelines) > 0) {
|
||||
// Require this, since we need it
|
||||
require_once(INSTALLDIR.'/plugins/Comet/bayeux.class.inc.php');
|
||||
|
||||
$json = $this->noticeAsJson($notice);
|
||||
|
||||
function _connect()
|
||||
{
|
||||
require_once INSTALLDIR.'/plugins/Comet/bayeux.class.inc.php';
|
||||
// Bayeux? Comet? Huh? These terms confuse me
|
||||
$bay = new Bayeux($this->server, $this->user, $this->password);
|
||||
|
||||
foreach ($timelines as $timeline) {
|
||||
$this->log(LOG_INFO, "Posting notice $notice->id to '$timeline'.");
|
||||
$bay->publish($timeline, $json);
|
||||
$this->bay = new Bayeux($this->server, $this->user, $this->password);
|
||||
}
|
||||
|
||||
$bay = NULL;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function noticeAsJson($notice)
|
||||
function _publish($timeline, $json)
|
||||
{
|
||||
// FIXME: this code should be abstracted to a neutral third
|
||||
// party, like Notice::asJson(). I'm not sure of the ethics
|
||||
// of refactoring from within a plugin, so I'm just abusing
|
||||
// the TwitterApiAction method. Don't do this unless you're me!
|
||||
|
||||
require_once(INSTALLDIR.'/lib/twitterapi.php');
|
||||
|
||||
$act = new TwitterApiAction('/dev/null');
|
||||
|
||||
$arr = $act->twitter_status_array($notice, true);
|
||||
$arr['url'] = $notice->bestUrl();
|
||||
$arr['html'] = htmlspecialchars($notice->rendered);
|
||||
$arr['source'] = htmlspecialchars($arr['source']);
|
||||
|
||||
if (!empty($notice->reply_to)) {
|
||||
$reply_to = Notice::staticGet('id', $notice->reply_to);
|
||||
if (!empty($reply_to)) {
|
||||
$arr['in_reply_to_status_url'] = $reply_to->bestUrl();
|
||||
}
|
||||
$reply_to = null;
|
||||
$this->bay->publish($timeline, $json);
|
||||
}
|
||||
|
||||
$profile = $notice->getProfile();
|
||||
$arr['user']['profile_url'] = $profile->profileurl;
|
||||
|
||||
return $arr;
|
||||
}
|
||||
|
||||
function getNoticeTags($notice)
|
||||
function _disconnect()
|
||||
{
|
||||
$tags = null;
|
||||
|
||||
$nt = new Notice_tag();
|
||||
$nt->notice_id = $notice->id;
|
||||
|
||||
if ($nt->find()) {
|
||||
$tags = array();
|
||||
while ($nt->fetch()) {
|
||||
$tags[] = $nt->tag;
|
||||
}
|
||||
unset($this->bay);
|
||||
}
|
||||
|
||||
$nt->free();
|
||||
$nt = null;
|
||||
|
||||
return $tags;
|
||||
}
|
||||
|
||||
// Push this up to Plugin
|
||||
|
||||
function log($level, $msg)
|
||||
function _pathToChannel($path)
|
||||
{
|
||||
common_log($level, get_class($this) . ': '.$msg);
|
||||
if (!empty($this->prefix)) {
|
||||
array_unshift($path, $this->prefix);
|
||||
}
|
||||
return '/' . implode('/', $path);
|
||||
}
|
||||
}
|
||||
|
30
plugins/Comet/cometupdate.js
Normal file
30
plugins/Comet/cometupdate.js
Normal file
@ -0,0 +1,30 @@
|
||||
// update the local timeline from a Comet server
|
||||
//
|
||||
|
||||
var CometUpdate = function()
|
||||
{
|
||||
var _server;
|
||||
var _timeline;
|
||||
var _userid;
|
||||
var _replyurl;
|
||||
var _favorurl;
|
||||
var _deleteurl;
|
||||
var _cometd;
|
||||
|
||||
return {
|
||||
init: function(server, timeline, userid, replyurl, favorurl, deleteurl)
|
||||
{
|
||||
_cometd = $.cometd; // Uses the default Comet object
|
||||
_cometd.init(server);
|
||||
_server = server;
|
||||
_timeline = timeline;
|
||||
_userid = userid;
|
||||
_favorurl = favorurl;
|
||||
_replyurl = replyurl;
|
||||
_deleteurl = deleteurl;
|
||||
_cometd.subscribe(timeline, function(message) { RealtimeUpdate.receive(message.data) });
|
||||
$(window).unload(function() { _cometd.disconnect(); } );
|
||||
}
|
||||
}
|
||||
}();
|
||||
|
120
plugins/Meteor/MeteorPlugin.php
Normal file
120
plugins/Meteor/MeteorPlugin.php
Normal file
@ -0,0 +1,120 @@
|
||||
<?php
|
||||
/**
|
||||
* Laconica, the distributed open-source microblogging tool
|
||||
*
|
||||
* Plugin to do "real time" updates using Comet/Bayeux
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* LICENCE: This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program 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 Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @category Plugin
|
||||
* @package Laconica
|
||||
* @author Evan Prodromou <evan@controlyourself.ca>
|
||||
* @copyright 2009 Control Yourself, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://laconi.ca/
|
||||
*/
|
||||
|
||||
if (!defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once INSTALLDIR.'/plugins/Realtime/RealtimePlugin.php';
|
||||
|
||||
/**
|
||||
* Plugin to do realtime updates using Meteor
|
||||
*
|
||||
* @category Plugin
|
||||
* @package Laconica
|
||||
* @author Evan Prodromou <evan@controlyourself.ca>
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://laconi.ca/
|
||||
*/
|
||||
|
||||
class MeteorPlugin extends RealtimePlugin
|
||||
{
|
||||
public $webserver = null;
|
||||
public $webport = null;
|
||||
public $controlport = null;
|
||||
public $controlserver = null;
|
||||
public $channelbase = null;
|
||||
protected $_socket = null;
|
||||
|
||||
function __construct($webserver=null, $webport=4670, $controlport=4671, $controlserver=null, $channelbase='')
|
||||
{
|
||||
global $config;
|
||||
|
||||
$this->webserver = (empty($webserver)) ? $config['site']['server'] : $webserver;
|
||||
$this->webport = $webport;
|
||||
$this->controlport = $controlport;
|
||||
$this->controlserver = (empty($controlserver)) ? $webserver : $controlserver;
|
||||
$this->channelbase = $channelbase;
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
function _getScripts()
|
||||
{
|
||||
$scripts = parent::_getScripts();
|
||||
$scripts[] = 'http://'.$this->webserver.(($this->webport == 80) ? '':':'.$this->webport).'/meteor.js';
|
||||
$scripts[] = common_path('plugins/Meteor/meteorupdater.js');
|
||||
return $scripts;
|
||||
}
|
||||
|
||||
function _updateInitialize($timeline, $user_id)
|
||||
{
|
||||
$script = parent::_updateInitialize($timeline, $user_id);
|
||||
return $script." MeteorUpdater.init(\"$this->webserver\", $this->webport, \"{$timeline}\");";
|
||||
}
|
||||
|
||||
function _connect()
|
||||
{
|
||||
$controlserver = (empty($this->controlserver)) ? $this->webserver : $this->controlserver;
|
||||
// May throw an exception.
|
||||
$this->_socket = stream_socket_client("tcp://{$controlserver}:{$this->controlport}");
|
||||
if (!$this->_socket) {
|
||||
throw new Exception("Couldn't connect to {$controlserver} on {$this->controlport}");
|
||||
}
|
||||
}
|
||||
|
||||
function _publish($channel, $message)
|
||||
{
|
||||
$message = json_encode($message);
|
||||
$message = addslashes($message);
|
||||
$cmd = "ADDMESSAGE $channel $message\n";
|
||||
$cnt = fwrite($this->_socket, $cmd);
|
||||
$result = fgets($this->_socket);
|
||||
if (preg_match('/^ERR (.*)$/', $result, $matches)) {
|
||||
throw new Exception('Error adding meteor message "'.$matches[1].'"');
|
||||
}
|
||||
// TODO: parse and deal with result
|
||||
}
|
||||
|
||||
function _disconnect()
|
||||
{
|
||||
$cnt = fwrite($this->_socket, "QUIT\n");
|
||||
@fclose($this->_socket);
|
||||
}
|
||||
|
||||
// Meteord flips out with default '/' separator
|
||||
|
||||
function _pathToChannel($path)
|
||||
{
|
||||
if (!empty($this->channelbase)) {
|
||||
array_unshift($path, $this->channelbase);
|
||||
}
|
||||
return implode('-', $path);
|
||||
}
|
||||
}
|
27
plugins/Meteor/README
Normal file
27
plugins/Meteor/README
Normal file
@ -0,0 +1,27 @@
|
||||
This is a plugin to automatically load notices in the browser no
|
||||
matter who creates them -- the kind of thing we see with
|
||||
search.twitter.com, rejaw.com, or FriendFeed's "real time" news.
|
||||
|
||||
It requires a meteor server.
|
||||
|
||||
http://meteorserver.org/
|
||||
|
||||
Note that the controller interface needs to be accessible by the Web
|
||||
server, and the subscriber interface needs to be accessible by your
|
||||
Web users. You MUST firewall the controller interface from users;
|
||||
otherwise anyone will be able to push any message to your subscribers.
|
||||
Not good!
|
||||
|
||||
You can enable the plugin with this line in config.php:
|
||||
|
||||
addPlugin('Meteor', array('webserver' => 'meteor server address'));
|
||||
|
||||
Available parameters:
|
||||
|
||||
* webserver: Web server address. Defaults to site server.
|
||||
* webport: port to connect to for Web access. Defaults to 4670.
|
||||
* controlserver: Control server address. Defaults to webserver.
|
||||
* controlport: port to connect to for control. Defaults to 4671.
|
||||
* channelbase: a base string to use for channels. Good if you have
|
||||
multiple sites using the same meteor server.
|
||||
|
21
plugins/Meteor/meteorupdater.js
Normal file
21
plugins/Meteor/meteorupdater.js
Normal file
@ -0,0 +1,21 @@
|
||||
// update the local timeline from a Meteor server
|
||||
//
|
||||
|
||||
var MeteorUpdater = function()
|
||||
{
|
||||
return {
|
||||
|
||||
init: function(server, port, timeline)
|
||||
{
|
||||
Meteor.callbacks["process"] = function(data) {
|
||||
RealtimeUpdate.receive(JSON.parse(data));
|
||||
};
|
||||
|
||||
Meteor.host = server;
|
||||
Meteor.port = port;
|
||||
Meteor.joinChannel(timeline, 0);
|
||||
Meteor.connect();
|
||||
}
|
||||
}
|
||||
}();
|
||||
|
229
plugins/Realtime/RealtimePlugin.php
Normal file
229
plugins/Realtime/RealtimePlugin.php
Normal file
@ -0,0 +1,229 @@
|
||||
<?php
|
||||
/**
|
||||
* Laconica, the distributed open-source microblogging tool
|
||||
*
|
||||
* Superclass for plugins that do "real time" updates of timelines using Ajax
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* LICENCE: This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program 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 Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @category Plugin
|
||||
* @package Laconica
|
||||
* @author Evan Prodromou <evan@controlyourself.ca>
|
||||
* @copyright 2009 Control Yourself, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://laconi.ca/
|
||||
*/
|
||||
|
||||
if (!defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Superclass for plugin to do realtime updates
|
||||
*
|
||||
* Based on experience with the Comet and Meteor plugins,
|
||||
* this superclass extracts out some of the common functionality
|
||||
*
|
||||
* @category Plugin
|
||||
* @package Laconica
|
||||
* @author Evan Prodromou <evan@controlyourself.ca>
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://laconi.ca/
|
||||
*/
|
||||
|
||||
class RealtimePlugin extends Plugin
|
||||
{
|
||||
protected $replyurl = null;
|
||||
protected $favorurl = null;
|
||||
protected $deleteurl = null;
|
||||
|
||||
function onInitializePlugin()
|
||||
{
|
||||
$this->replyurl = common_local_url('newnotice');
|
||||
$this->favorurl = common_local_url('favor');
|
||||
// FIXME: need to find a better way to pass this pattern in
|
||||
$this->deleteurl = common_local_url('deletenotice',
|
||||
array('notice' => '0000000000'));
|
||||
}
|
||||
|
||||
function onEndShowScripts($action)
|
||||
{
|
||||
$path = null;
|
||||
|
||||
switch ($action->trimmed('action')) {
|
||||
case 'public':
|
||||
$path = array('public');
|
||||
break;
|
||||
case 'tag':
|
||||
$tag = $action->trimmed('tag');
|
||||
if (!empty($tag)) {
|
||||
$path = array('tag', $tag);
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
|
||||
$timeline = $this->_pathToChannel($path);
|
||||
|
||||
$scripts = $this->_getScripts();
|
||||
|
||||
foreach ($scripts as $script) {
|
||||
$action->element('script', array('type' => 'text/javascript',
|
||||
'src' => $script),
|
||||
' ');
|
||||
}
|
||||
|
||||
$user = common_current_user();
|
||||
|
||||
if (!empty($user->id)) {
|
||||
$user_id = $user->id;
|
||||
} else {
|
||||
$user_id = 0;
|
||||
}
|
||||
|
||||
$action->elementStart('script', array('type' => 'text/javascript'));
|
||||
$action->raw("$(document).ready(function() { ");
|
||||
$action->raw($this->_updateInitialize($timeline, $user_id));
|
||||
$action->raw(" });");
|
||||
$action->elementEnd('script');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function onEndNoticeSave($notice)
|
||||
{
|
||||
$paths = array();
|
||||
|
||||
// XXX: Add other timelines; this is just for the public one
|
||||
|
||||
if ($notice->is_local ||
|
||||
($notice->is_local == 0 && !common_config('public', 'localonly'))) {
|
||||
$paths[] = array('public');
|
||||
}
|
||||
|
||||
$tags = $this->getNoticeTags($notice);
|
||||
|
||||
if (!empty($tags)) {
|
||||
foreach ($tags as $tag) {
|
||||
$paths[] = array('tag', $tag);
|
||||
}
|
||||
}
|
||||
|
||||
if (count($paths) > 0) {
|
||||
|
||||
$json = $this->noticeAsJson($notice);
|
||||
|
||||
$this->_connect();
|
||||
|
||||
foreach ($paths as $path) {
|
||||
$timeline = $this->_pathToChannel($path);
|
||||
$this->_publish($timeline, $json);
|
||||
}
|
||||
|
||||
$this->_disconnect();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function noticeAsJson($notice)
|
||||
{
|
||||
// FIXME: this code should be abstracted to a neutral third
|
||||
// party, like Notice::asJson(). I'm not sure of the ethics
|
||||
// of refactoring from within a plugin, so I'm just abusing
|
||||
// the TwitterApiAction method. Don't do this unless you're me!
|
||||
|
||||
require_once(INSTALLDIR.'/lib/twitterapi.php');
|
||||
|
||||
$act = new TwitterApiAction('/dev/null');
|
||||
|
||||
$arr = $act->twitter_status_array($notice, true);
|
||||
$arr['url'] = $notice->bestUrl();
|
||||
$arr['html'] = htmlspecialchars($notice->rendered);
|
||||
$arr['source'] = htmlspecialchars($arr['source']);
|
||||
|
||||
if (!empty($notice->reply_to)) {
|
||||
$reply_to = Notice::staticGet('id', $notice->reply_to);
|
||||
if (!empty($reply_to)) {
|
||||
$arr['in_reply_to_status_url'] = $reply_to->bestUrl();
|
||||
}
|
||||
$reply_to = null;
|
||||
}
|
||||
|
||||
$profile = $notice->getProfile();
|
||||
$arr['user']['profile_url'] = $profile->profileurl;
|
||||
|
||||
return $arr;
|
||||
}
|
||||
|
||||
function getNoticeTags($notice)
|
||||
{
|
||||
$tags = null;
|
||||
|
||||
$nt = new Notice_tag();
|
||||
$nt->notice_id = $notice->id;
|
||||
|
||||
if ($nt->find()) {
|
||||
$tags = array();
|
||||
while ($nt->fetch()) {
|
||||
$tags[] = $nt->tag;
|
||||
}
|
||||
}
|
||||
|
||||
$nt->free();
|
||||
$nt = null;
|
||||
|
||||
return $tags;
|
||||
}
|
||||
|
||||
// Push this up to Plugin
|
||||
|
||||
function log($level, $msg)
|
||||
{
|
||||
common_log($level, get_class($this) . ': '.$msg);
|
||||
}
|
||||
|
||||
function _getScripts()
|
||||
{
|
||||
return array(common_path('plugins/Realtime/realtimeupdate.js'),
|
||||
common_path('plugins/Realtime/json2.js'));
|
||||
}
|
||||
|
||||
function _updateInitialize($timeline, $user_id)
|
||||
{
|
||||
return "RealtimeUpdate.init($user_id, \"$this->replyurl\", \"$this->favorurl\", \"$this->deleteurl\"); ";
|
||||
}
|
||||
|
||||
function _connect()
|
||||
{
|
||||
}
|
||||
|
||||
function _publish($timeline, $json)
|
||||
{
|
||||
}
|
||||
|
||||
function _disconnect()
|
||||
{
|
||||
}
|
||||
|
||||
function _pathToChannel($path)
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
@ -1,41 +1,24 @@
|
||||
// update the local timeline from a Comet server
|
||||
// add a notice encoded as JSON into the current timeline
|
||||
//
|
||||
|
||||
var updater = function()
|
||||
{
|
||||
var _server;
|
||||
var _timeline;
|
||||
var _userid;
|
||||
var _replyurl;
|
||||
var _favorurl;
|
||||
var _deleteurl;
|
||||
var _cometd;
|
||||
RealtimeUpdate = {
|
||||
|
||||
return {
|
||||
init: function(server, timeline, userid, replyurl, favorurl, deleteurl)
|
||||
{
|
||||
_cometd = $.cometd; // Uses the default Comet object
|
||||
_cometd.setLogLevel('debug');
|
||||
_cometd.init(server);
|
||||
_server = server;
|
||||
_timeline = timeline;
|
||||
_userid = userid;
|
||||
_favorurl = favorurl;
|
||||
_replyurl = replyurl;
|
||||
_deleteurl = deleteurl;
|
||||
_cometd.subscribe(timeline, receive);
|
||||
$(window).unload(leave);
|
||||
}
|
||||
}
|
||||
_userid: 0,
|
||||
_replyurl: '',
|
||||
_favorurl: '',
|
||||
_deleteurl: '',
|
||||
|
||||
function leave()
|
||||
init: function(userid, replyurl, favorurl, deleteurl)
|
||||
{
|
||||
_cometd.disconnect();
|
||||
}
|
||||
RealtimeUpdate._userid = userid;
|
||||
RealtimeUpdate._replyurl = replyurl;
|
||||
RealtimeUpdate._favorurl = favorurl;
|
||||
RealtimeUpdate._deleteurl = deleteurl;
|
||||
},
|
||||
|
||||
function receive(message)
|
||||
receive: function(data)
|
||||
{
|
||||
id = message.data.id;
|
||||
id = data.id;
|
||||
|
||||
// Don't add it if it already exists
|
||||
|
||||
@ -43,15 +26,14 @@ var updater = function()
|
||||
return;
|
||||
}
|
||||
|
||||
var noticeItem = makeNoticeItem(message.data);
|
||||
var noticeItem = RealtimeUpdate.makeNoticeItem(data);
|
||||
$("#notices_primary .notices").prepend(noticeItem, true);
|
||||
$("#notices_primary .notice:first").css({display:"none"});
|
||||
$("#notices_primary .notice:first").fadeIn(1000);
|
||||
NoticeHover();
|
||||
NoticeReply();
|
||||
}
|
||||
},
|
||||
|
||||
function makeNoticeItem(data)
|
||||
makeNoticeItem: function(data)
|
||||
{
|
||||
user = data['user'];
|
||||
html = data['html'].replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"');
|
||||
@ -93,26 +75,26 @@ var updater = function()
|
||||
ni = ni+"</div>"+
|
||||
"<div class=\"notice-options\">";
|
||||
|
||||
if (_userid != 0) {
|
||||
if (RealtimeUpdate._userid != 0) {
|
||||
var input = $("form#form_notice fieldset input#token");
|
||||
var session_key = input.val();
|
||||
ni = ni+makeFavoriteForm(data['id'], session_key);
|
||||
ni = ni+makeReplyLink(data['id'], data['user']['screen_name']);
|
||||
if (_userid == data['user']['id']) {
|
||||
ni = ni+makeDeleteLink(data['id']);
|
||||
ni = ni+RealtimeUpdate.makeFavoriteForm(data['id'], session_key);
|
||||
ni = ni+RealtimeUpdate.makeReplyLink(data['id'], data['user']['screen_name']);
|
||||
if (RealtimeUpdate._userid == data['user']['id']) {
|
||||
ni = ni+RealtimeUpdate.makeDeleteLink(data['id']);
|
||||
}
|
||||
}
|
||||
|
||||
ni = ni+"</div>"+
|
||||
"</li>";
|
||||
return ni;
|
||||
}
|
||||
},
|
||||
|
||||
function makeFavoriteForm(id, session_key)
|
||||
makeFavoriteForm: function(id, session_key)
|
||||
{
|
||||
var ff;
|
||||
|
||||
ff = "<form id=\"favor-"+id+"\" class=\"form_favor\" method=\"post\" action=\""+_favorurl+"\">"+
|
||||
ff = "<form id=\"favor-"+id+"\" class=\"form_favor\" method=\"post\" action=\""+RealtimeUpdate._favorurl+"\">"+
|
||||
"<fieldset>"+
|
||||
"<legend>Favor this notice</legend>"+ // XXX: i18n
|
||||
"<input name=\"token-"+id+"\" type=\"hidden\" id=\"token-"+id+"\" value=\""+session_key+"\"/>"+
|
||||
@ -121,25 +103,25 @@ var updater = function()
|
||||
"</fieldset>"+
|
||||
"</form>";
|
||||
return ff;
|
||||
}
|
||||
},
|
||||
|
||||
function makeReplyLink(id, nickname)
|
||||
makeReplyLink: function(id, nickname)
|
||||
{
|
||||
var rl;
|
||||
rl = "<dl class=\"notice_reply\">"+
|
||||
"<dt>Reply to this notice</dt>"+
|
||||
"<dd>"+
|
||||
"<a href=\""+_replyurl+"?replyto="+nickname+"\" title=\"Reply to this notice\">Reply <span class=\"notice_id\">"+id+"</span>"+
|
||||
"<a href=\""+RealtimeUpdate._replyurl+"?replyto="+nickname+"\" title=\"Reply to this notice\">Reply <span class=\"notice_id\">"+id+"</span>"+
|
||||
"</a>"+
|
||||
"</dd>"+
|
||||
"</dl>";
|
||||
return rl;
|
||||
}
|
||||
},
|
||||
|
||||
function makeDeleteLink(id)
|
||||
makeDeleteLink: function(id)
|
||||
{
|
||||
var dl, delurl;
|
||||
delurl = _deleteurl.replace("0000000000", id);
|
||||
delurl = RealtimeUpdate._deleteurl.replace("0000000000", id);
|
||||
|
||||
dl = "<dl class=\"notice_delete\">"+
|
||||
"<dt>Delete this notice</dt>"+
|
||||
@ -149,6 +131,5 @@ var updater = function()
|
||||
"</dl>";
|
||||
|
||||
return dl;
|
||||
}
|
||||
}();
|
||||
|
||||
},
|
||||
}
|
@ -1028,7 +1028,7 @@ border-radius:7px;
|
||||
-webkit-border-radius:7px;
|
||||
}
|
||||
#jOverlayLoading {
|
||||
top:22.5%;
|
||||
top:5%;
|
||||
left:40%;
|
||||
}
|
||||
#attachment_view img {
|
||||
|
Loading…
Reference in New Issue
Block a user