aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMario Vavti <mario@mariovavti.com>2016-03-26 18:46:07 +0100
committerMario Vavti <mario@mariovavti.com>2016-03-26 18:46:07 +0100
commitf714e97d63e61dfda77f4d4ab4eb2b5b5fb06737 (patch)
treef1c439e3ca9d01f82a29629222e1afc603d194b8
parenta50706317435d09cacb95cad0a6ccaf8ae5b5f6c (diff)
parent3caf51b0754741dac2450a492de5aaebfa1b2fe9 (diff)
downloadvolse-hubzilla-f714e97d63e61dfda77f4d4ab4eb2b5b5fb06737.tar.gz
volse-hubzilla-f714e97d63e61dfda77f4d4ab4eb2b5b5fb06737.tar.bz2
volse-hubzilla-f714e97d63e61dfda77f4d4ab4eb2b5b5fb06737.zip
Merge branch 'master' of https://github.com/redmatrix/hubzilla
-rw-r--r--include/crypto.php23
-rwxr-xr-xinclude/items.php22
-rw-r--r--include/network.php459
-rw-r--r--mod/xrd.php17
-rw-r--r--version.inc2
-rw-r--r--view/de/hmessages.po916
-rw-r--r--view/de/hstrings.php238
-rwxr-xr-xview/tpl/xrd_person.tpl5
8 files changed, 852 insertions, 830 deletions
diff --git a/include/crypto.php b/include/crypto.php
index 3cddc7581..d82ee5114 100644
--- a/include/crypto.php
+++ b/include/crypto.php
@@ -308,11 +308,33 @@ function metorsa($m,$e) {
return $key;
}
+
+
function salmon_key($pubkey) {
pemtome($pubkey,$m,$e);
return 'RSA' . '.' . base64url_encode($m,true) . '.' . base64url_encode($e,true) ;
}
+
+function convert_salmon_key($key) {
+
+ if(strstr($key,','))
+ $rawkey = substr($key,strpos($key,',')+1);
+ else
+ $rawkey = substr($key,5);
+
+ $key_info = explode('.',$rawkey);
+
+ $m = base64url_decode($key_info[1]);
+ $e = base64url_decode($key_info[2]);
+
+ logger('key details: ' . print_r($key_info,true), LOGGER_DATA);
+ $salmon_key = metopem($m,$e);
+ return $salmon_key;
+
+}
+
+
function z_obscure($s) {
return json_encode(crypto_encapsulate($s,get_config('system','pubkey')));
}
@@ -322,3 +344,4 @@ function z_unobscure($s) {
return $s;
return crypto_unencapsulate(json_decode($s,true),get_config('system','prvkey'));
}
+
diff --git a/include/items.php b/include/items.php
index c3a0b82d2..2884d8e52 100755
--- a/include/items.php
+++ b/include/items.php
@@ -3848,8 +3848,8 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) {
$datarray = get_atom_elements($feed,$item,$author);
if($contact['xchan_network'] === 'rss') {
- $res['public_policy'] = 'specific';
- $res['comment_policy'] = 'none';
+ $datarray['public_policy'] = 'specific';
+ $datarray['comment_policy'] = 'none';
}
if((! x($author,'author_name')) || ($author['author_is_feed']))
@@ -3911,8 +3911,8 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) {
$datarray = get_atom_elements($feed,$item,$author);
if($contact['xchan_network'] === 'rss') {
- $res['public_policy'] = 'specific';
- $res['comment_policy'] = 'none';
+ $datarray['public_policy'] = 'specific';
+ $datarray['comment_policy'] = 'none';
}
@@ -3932,6 +3932,16 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) {
$datarray['author_xchan'] = '';
+ if(activity_match($datarray['verb'],ACTIVITY_FOLLOW) && $datarray['obj_type'] === ACTIVITY_OBJ_PERSON) {
+ $cb = array('item' => $datarray,'channel' => $importer, 'xchan' => null, 'author' => $author, 'caught' => false);
+ call_hooks('follow_from_feed',$cb);
+ if($cb['caught']) {
+ if($cb['return_code'])
+ http_status_exit($cb['return_code']);
+ continue;
+ }
+ }
+
if($author['author_link'] != $contact['xchan_url']) {
$x = import_author_unknown(array('name' => $author['author_name'],'url' => $author['author_link'],'photo' => array('src' => $author['author_photo'])));
if($x)
@@ -4214,7 +4224,7 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) {
if(($item['parent'] != $item['id']) || ($item['parent_mid'] !== $item['mid']) || (($item['thr_parent'] !== '') && ($item['thr_parent'] !== $item['mid']))) {
$parent_item = (($item['thr_parent']) ? $item['thr_parent'] : $item['parent_mid']);
- $o .= '<thr:in-reply-to ref="' . xmlify($parent_item) . '" type="text/html" href="' . xmlify($item['plink']) . '" />' . "\r\n";
+ $o .= '<thr:in-reply-to ref="' . z_root() . '/display/' . xmlify($parent_item) . '" type="text/html" href="' . xmlify($item['plink']) . '" />' . "\r\n";
}
if(activity_match($item['obj_type'],ACTIVITY_OBJ_EVENT) && activity_match($item['verb'],ACTIVITY_POST)) {
@@ -4232,7 +4242,7 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) {
$o .= '<content type="' . $type . '" >' . xmlify(prepare_text($body,$item['mimetype'])) . '</content>' . "\r\n";
}
- $o .= '<id>' . xmlify($item['mid']) . '</id>' . "\r\n";
+ $o .= '<id>' . z_root() . '/display/' . xmlify($item['mid']) . '</id>' . "\r\n";
$o .= '<published>' . xmlify(datetime_convert('UTC','UTC',$item['created'] . '+00:00',ATOM_TIME)) . '</published>' . "\r\n";
$o .= '<updated>' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '</updated>' . "\r\n";
diff --git a/include/network.php b/include/network.php
index 3efc82447..e7d341321 100644
--- a/include/network.php
+++ b/include/network.php
@@ -1061,32 +1061,16 @@ function discover_by_url($url,$arr = null) {
}
-function convert_salmon_key($key) {
-
- if(strstr($key,','))
- $rawkey = substr($key,strpos($key,',')+1);
- else
- $rawkey = substr($key,5);
-
- $key_info = explode('.',$rawkey);
-
- $m = base64url_decode($key_info[1]);
- $e = base64url_decode($key_info[2]);
-
- logger('key details: ' . print_r($key_info,true), LOGGER_DEBUG);
- $salmon_key = metopem($m,$e);
- return $salmon_key;
-
-}
-
-
function discover_by_webbie($webbie) {
require_once('library/HTML5/Parser.php');
- $result = array();
- $network = null;
+ $result = array();
+
+ $network = null;
+
$diaspora = false;
- $gnusoc = false;
+ $gnusoc = false;
+ $dfrn = false;
$has_salmon = false;
$salmon_key = false;
@@ -1094,7 +1078,6 @@ function discover_by_webbie($webbie) {
$diaspora_base = '';
$diaspora_guid = '';
$diaspora_key = '';
- $dfrn = false;
$webbie = strtolower($webbie);
@@ -1102,6 +1085,10 @@ function discover_by_webbie($webbie) {
if($x && array_key_exists('links',$x) && $x['links']) {
foreach($x['links'] as $link) {
if(array_key_exists('rel',$link)) {
+
+ // If we discover zot - don't search further; grab the info and get out of
+ // here.
+
if($link['rel'] == 'http://purl.org/zot/protocol') {
logger('discover_by_webbie: zot found for ' . $webbie, LOGGER_DEBUG);
if(array_key_exists('zot',$x) && $x['zot']['success'])
@@ -1115,6 +1102,9 @@ function discover_by_webbie($webbie) {
}
}
}
+ if($link['rel'] == NAMESPACE_DFRN) {
+ $dfrn = $link['href'];
+ }
if($link['rel'] == 'magic-public-key') {
if(substr($link['href'],0,5) === 'data:') {
$salmon_key = convert_salmon_key($link['href']);
@@ -1131,88 +1121,40 @@ function discover_by_webbie($webbie) {
}
}
- logger('webfing: ' . print_r($x,true), LOGGER_DATA, LOG_INFO);
+ logger('webfinger: ' . print_r($x,true), LOGGER_DATA, LOG_INFO);
$arr = array('address' => $webbie, 'success' => false, 'webfinger' => $x);
call_hooks('discover_channel_webfinger', $arr);
if($arr['success'])
return true;
- if($salmon_key && $has_salmon && $atom_feed) {
-
- $gnusoc = true;
- $addr = $x['address'];
+ $aliases = array();
- $m = parse_url($x['location']);
+ // Now let's make some decisions on what we may need
+ // to obtain further info
- $k = z_fetch_url($atom_feed);
- if($k['success'])
- $feed_meta = feed_meta($k['body']);
+ $probe_atom = false;
+ $probe_old = false;
+ $probe_hcard = false;
- // stash any discovered pubsubhubbub hubs in case we need to follow them
- // this will save an expensive lookup later
+ $address = '';
+ $location = '';
+ $nickname = '';
+ $fullname = '';
+ $avatar = '';
+ $pubkey = '';
- if($feed_meta['hubs'])
- set_xconfig($addr,'system','push_hubs',$feed_meta['hubs']);
+ if(array_key_exists('address',$x))
+ $address = $x['address'];
+ if(array_key_exists('location',$x))
+ $location = $x['location'];
+ if(array_key_exists('nickname',$x))
+ $nickname = $x['nickname'];
- if($feed_meta && $feed_meta['author']) {
- $r = q("select * from xchan where xchan_hash = '%s' limit 1",
- dbesc($addr)
- );
- if($r) {
- $r = q("update xchan set xchan_name = '%s', xchan_network = '%s', xchan_name_date = '%s' where xchan_hash = '%s' limit 1",
- dbesc(($feed_meta['author']['author_name']) ? $feed_meta['author']['author_name'] : $x['nickname']),
- dbesc('gnusoc'),
- dbesc(datetime_convert()),
- dbesc($addr)
- );
- }
- else {
-
- $r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_pubkey, xchan_addr, xchan_url, xchan_name, xchan_network, xchan_name_date ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ",
- dbesc($addr),
- dbesc($x['location']),
- dbesc($salmon_key),
- dbesc($addr),
- dbesc($x['location']),
- dbesc(($feed_meta['author']['author_name']) ? $feed_meta['author']['author_name'] : $x['nickname']),
- dbesc('gnusoc'),
- dbescdate(datetime_convert())
- );
- }
-
- $r = q("select * from hubloc where hubloc_hash = '%s' limit 1",
- dbesc($addr)
- );
-
- if(! $r) {
-
- $r = q("insert into hubloc ( hubloc_guid, hubloc_hash, hubloc_addr, hubloc_network, hubloc_url, hubloc_host, hubloc_callback, hubloc_updated, hubloc_primary ) values ('%s','%s','%s','%s','%s','%s','%s','%s', 1)",
- dbesc($x['location']),
- dbesc($addr),
- dbesc($addr),
- dbesc('gnusoc'),
- dbesc($m['scheme'] . '://' . $m['host']),
- dbesc($m['host']),
- dbesc($salmon),
- dbescdate(datetime_convert())
- );
- }
- $photos = import_xchan_photo($feed_meta['author']['author_photo'],$addr);
- $r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
- dbescdate(datetime_convert()),
- dbesc($photos[0]),
- dbesc($photos[1]),
- dbesc($photos[2]),
- dbesc($photos[3]),
- dbesc($addr)
- );
- return true;
-
- }
- }
- else {
+ if(! $x)
+ $probe_old = true;
+ if($probe_old) {
$x = old_webfinger($webbie);
if($x) {
logger('old_webfinger: ' . print_r($x,true));
@@ -1245,174 +1187,195 @@ function discover_by_webbie($webbie) {
$pubkey = $diaspora_key;
$diaspora = true;
}
+ if($link['@attributes']['rel'] == 'magic-public-key') {
+ if(substr($link['@attributes']['href'],0,5) === 'data:') {
+ $salmon_key = convert_salmon_key($link['@attributes']['href']);
+ }
+ }
+ if($link['@attributes']['rel'] == 'salmon') {
+ $has_salmon = true;
+ $salmon = $link['@attributes']['href'];
+ }
+
+ if($link['@attributes']['rel'] == 'http://schemas.google.com/g/2010#updates-from') {
+ $atom_feed = $link['@attributes']['href'];
+ }
+ if($link['@attributes']['rel'] === 'alias') {
+ $aliases[] = $link['@attributes']['href'];
+ }
+ if($link['@attributes']['rel'] === 'subject') {
+ $subject = $link['@attributes']['href'];
+ }
}
}
+ }
- if($diaspora && $diaspora_base && $diaspora_guid) {
- $guid = $diaspora_guid;
- $diaspora_base = trim($diaspora_base,'/');
+ if($subject || $aliases) {
+ if(strpos($webbie,'@')) {
+ $rhs = substr($webbie,strpos($webbie,'@')+1);
+ }
+ else {
+ $m = parse_url($webbie);
+ if($m) {
+ $rhs = $m['host'] . (($m['port']) ? ':' . $m['port'] : '');
+ }
+ }
- $notify = $diaspora_base . '/receive';
+ $v = array('subject' => $subject,'aliases' => $aliases);
+ $address = find_webfinger_address($v,$rhs);
+ $location = find_webfinger_location($v,$rhs);
+ if($address)
+ $nickname = substr($address,0,strpos($address,'@'));
- if(strpos($webbie,'@')) {
- $addr = str_replace('acct:', '', $webbie);
- $hostname = substr($webbie,strpos($webbie,'@')+1);
- }
- $network = 'diaspora';
- // until we get a dfrn layer, we'll use diaspora protocols for Friendica,
- // but give it a different network so we can go back and fix these when we get proper support.
- // It really should be just 'friendica' but we also want to distinguish
- // between Friendica sites that we can use D* protocols with and those we can't.
- // Some Friendica sites will have Diaspora disabled.
- if($dfrn)
- $network = 'friendica-over-diaspora';
- if($hcard) {
- $vcard = scrape_vcard($hcard);
- $vcard['nick'] = substr($webbie,0,strpos($webbie,'@'));
- if(! $vcard['fn'])
- $vcard['fn'] = $webbie;
- }
-
- $r = q("select * from xchan where xchan_hash = '%s' limit 1",
- dbesc($addr)
- );
+ }
- // fix relative urls
- if($vcard['photo'] && (strpos($vcard['photo'],'http') !== 0))
- $vcard['photo'] = $diaspora_base . '/' . $vcard['photo'];
-
- /**
- *
- * Diaspora communications are notoriously unreliable and receiving profile update messages (indeed any messages)
- * are pretty much random luck. We'll check the timestamp of the xchan_name_date at a higher level and refresh
- * this record once a month; because if you miss a profile update message and they update their profile photo or name
- * you're otherwise stuck with stale info until they change their profile again - which could be years from now.
- *
- */
-
- if($r) {
- $r = q("update xchan set xchan_name = '%s', xchan_network = '%s', xchan_name_date = '%s' where xchan_hash = '%s' limit 1",
- dbesc($vcard['fn']),
- dbesc($network),
- dbesc(datetime_convert()),
- dbesc($addr)
- );
+ if($salmon_key && $has_salmon && $atom_feed && (! $dfrn) && (! $diaspora)) {
+ $gnusoc = true;
+ $probe_atom = true;
+ }
+
+ if(! $pubkey)
+ $pubkey = $salmon_key;
+
+ if(($dfrn || $diaspora) && $hcard)
+ $probe_hcard = true;
+
+ if(! $fullname)
+ $fullname = $nickname;
+
+ if($probe_atom) {
+ $k = z_fetch_url($atom_feed);
+ if($k['success'])
+ $feed_meta = feed_meta($k['body']);
+ if($feed_meta) {
+
+ // stash any discovered pubsubhubbub hubs in case we need to follow them
+ // this will save an expensive lookup later
+
+ if($feed_meta['hubs'] && $address) {
+ set_xconfig($address,'system','push_hubs',$feed_meta['hubs']);
+ set_xconfig($address,'system','feed_url',$atom_feed);
}
- else {
-
- $r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_pubkey, xchan_addr, xchan_url, xchan_name, xchan_network, xchan_name_date ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ",
- dbesc($addr),
- dbesc($guid),
- dbesc($pubkey),
- dbesc($addr),
- dbesc($profile),
- dbesc($vcard['fn']),
- dbesc($network),
- dbescdate(datetime_convert())
- );
+ if($feed_meta['author']['author_name']) {
+ $fullname = $feed_meta['author']['author_name'];
}
+ if(! $avatar) {
+ if($feed_meta['author']['author_photo'])
+ $avatar = $feed_meta['author']['author_photo'];
+ }
+ }
+ }
+ else {
+ if($probe_hcard) {
+ $vcard = scrape_vcard($hcard);
+ if($vcard) {
+ logger('vcard: ' . print_r($vcard,true), LOGGER_DATA);
+ if($vcard['fn'])
+ $fullname = $vcard['fn'];
+ if($vcard['photo'] && (strpos($vcard['photo'],'http') !== 0))
+ $vcard['photo'] = $diaspora_base . '/' . $vcard['photo'];
+ if(! $avatar)
+ $avatar = $vcard['photo'];
- $r = q("select * from hubloc where hubloc_hash = '%s' limit 1",
- dbesc($webbie)
- );
-
- if(! $r) {
-
- $r = q("insert into hubloc ( hubloc_guid, hubloc_hash, hubloc_addr, hubloc_network, hubloc_url, hubloc_host, hubloc_callback, hubloc_updated, hubloc_primary ) values ('%s','%s','%s','%s','%s','%s','%s','%s', 1)",
- dbesc($guid),
- dbesc($addr),
- dbesc($addr),
- dbesc($network),
- dbesc(trim($diaspora_base,'/')),
- dbesc($hostname),
- dbesc($notify),
- dbescdate(datetime_convert())
- );
}
- $photos = import_xchan_photo($vcard['photo'],$addr);
- $r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
- dbescdate(datetime_convert()),
- dbesc($photos[0]),
- dbesc($photos[1]),
- dbesc($photos[2]),
- dbesc($photos[3]),
- dbesc($addr)
- );
- return true;
+ }
+ }
+
+ if(($profile) && (! $location))
+ $location = $profile;
+
+ if($location) {
+ $m = parse_url($location);
+ $base = $m['scheme'] . '://' . $m['host'];
+ $host = $m['host'];
+ }
+
+ if($diaspora && $diaspora_base && $diaspora_guid) {
+ if($dfrn)
+ $network = 'friendica-over-diaspora';
+ else
+ $network = 'diaspora';
+
+ $base = trim($diaspora_base,'/');
+ $notify = $base . '/receive';
+
+ }
+ else {
+ if($gnusoc) {
+ $network = 'gnusoc';
+ $notify = $salmon;
}
}
- return false;
-/*
- $vcard['fn'] = notags($vcard['fn']);
- $vcard['nick'] = str_replace(' ','',notags($vcard['nick']));
-
- $result['name'] = $vcard['fn'];
- $result['nick'] = $vcard['nick'];
- $result['guid'] = $guid;
- $result['url'] = $profile;
- $result['hostname'] = $hostname;
- $result['addr'] = $addr;
- $result['batch'] = $batch;
- $result['notify'] = $notify;
- $result['poll'] = $poll;
- $result['request'] = $request;
- $result['confirm'] = $confirm;
- $result['poco'] = $poco;
- $result['photo'] = $vcard['photo'];
- $result['priority'] = $priority;
- $result['network'] = $network;
- $result['alias'] = $alias;
- $result['pubkey'] = $pubkey;
-
- logger('probe_url: ' . print_r($result,true), LOGGER_DEBUG);
-
- return $result;
-
-*/
-
-/* Sample Diaspora result.
-
-Array
-(
- [name] => Mike Macgirvin
- [nick] => macgirvin
- [guid] => a9174a618f8d269a
- [url] => https://joindiaspora.com/u/macgirvin
- [hostname] => joindiaspora.com
- [addr] => macgirvin@joindiaspora.com
- [batch] =>
- [notify] => https://joindiaspora.com/receive
- [poll] => https://joindiaspora.com/public/macgirvin.atom
- [request] =>
- [confirm] =>
- [poco] =>
- [photo] => https://joindiaspora.s3.amazonaws.com/uploads/images/thumb_large_fec4e6eef13ae5e56207.jpg
- [priority] =>
- [network] => diaspora
- [alias] =>
- [pubkey] => -----BEGIN PUBLIC KEY-----
-MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtihtyIuRDWkDpCA+I1UaQ
-jI4S7k625+A7EEJm+pL2ZVSJxeCKiFeEgHBQENjLMNNm8l8F6blxgQqE6ZJ9Spa7f
-tlaXYTRCrfxKzh02L3hR7sNA+JS/nXJaUAIo+IwpIEspmcIRbD9GB7Wv/rr+M28uH
-31EeYyDz8QL6InU/bJmnCdFvmEMBQxJOw1ih9tQp7UNJAbUMCje0WYFzBz7sfcaHL
-OyYcCOqOCBLdGucUoJzTQ9iDBVzB8j1r1JkIHoEb2moUoKUp+tkCylNfd/3IVELF9
-7w1Qjmit3m50OrJk2DQOXvCW9KQxaQNdpRPSwhvemIt98zXSeyZ1q/YjjOwG0DWDq
-AF8aLj3/oQaZndTPy/6tMiZogKaijoxj8xFLuPYDTw5VpKquriVC0z8oxyRbv4t9v
-8JZZ9BXqzmayvY3xZGGp8NulrfjW+me2bKh0/df1aHaBwpZdDTXQ6kqAiS2FfsuPN
-vg57fhfHbL1yJ4oDbNNNeI0kJTGchXqerr8C20khU/cQ2Xt31VyEZtnTB665Ceugv
-kp3t2qd8UpAVKl430S5Quqx2ymfUIdxdW08CEjnoRNEL3aOWOXfbf4gSVaXmPCR4i
-LSIeXnd14lQYK/uxW/8cTFjcmddsKxeXysoQxbSa9VdDK+KkpZdgYXYrTTofXs6v+
-4afAEhRaaY+MCAwEAAQ==
------END PUBLIC KEY-----
-
-)
-*/
+ logger('network: ' . $network);
+ logger('address: ' . $address);
+ logger('fullname: ' . $fullname);
+ logger('pubkey: ' . $pubkey);
+ logger('location: ' . $location);
+
+
+
+ // if we have everything we need, let's create the records
+
+ if($network && $address && $fullname && $pubkey && $location) {
+ $r = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($address)
+ );
+ if($r) {
+ $r = q("update xchan set xchan_name = '%s', xchan_network = '%s', xchan_name_date = '%s' where xchan_hash = '%s' limit 1",
+ dbesc($fullname),
+ dbesc($network),
+ dbesc(datetime_convert()),
+ dbesc($address)
+ );
+ }
+ else {
+ $r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_pubkey, xchan_addr, xchan_url, xchan_name, xchan_network, xchan_name_date ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ",
+ dbesc($address),
+ dbesc(($diaspora_guid) ? $diaspora_guid : $location),
+ dbesc($pubkey),
+ dbesc($address),
+ dbesc($location),
+ dbesc($fullname),
+ dbesc($network),
+ dbescdate(datetime_convert())
+ );
+ }
+
+ $r = q("select * from hubloc where hubloc_hash = '%s' limit 1",
+ dbesc($address)
+ );
+
+ if(! $r) {
+ $r = q("insert into hubloc ( hubloc_guid, hubloc_hash, hubloc_addr, hubloc_network, hubloc_url, hubloc_host, hubloc_callback, hubloc_updated, hubloc_primary ) values ('%s','%s','%s','%s','%s','%s','%s','%s', 1)",
+ dbesc(($diaspora_guid) ? $diaspora_guid : $location),
+ dbesc($address),
+ dbesc($address),
+ dbesc($network),
+ dbesc($base),
+ dbesc($host),
+ dbesc($notify),
+ dbescdate(datetime_convert())
+ );
+ }
+ $photos = import_xchan_photo($avatar,$address);
+ $r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
+ dbescdate(datetime_convert()),
+ dbesc($photos[0]),
+ dbesc($photos[1]),
+ dbesc($photos[2]),
+ dbesc($photos[3]),
+ dbesc($address)
+ );
+ return true;
+ }
+ return false;
}
+
function webfinger_rfc7033($webbie,$zot = false) {
@@ -1497,8 +1460,8 @@ function find_webfinger_location($j,$rhs) {
function match_webfinger_location($s,$h) {
- // GNU-social and the older StatusNet
- if(preg_match('|' . $h . '/user/([0-9]*?)$|',$s))
+ // GNU-social and the older StatusNet - the $host/user/123 form doesn't work
+ if(preg_match('|' . $h . '/index.php/user/([0-9]*?)$|',$s))
return $s;
// Redmatrix / hubzilla
if(preg_match('|' . $h . '/channel/|',$s))
@@ -1573,7 +1536,7 @@ function fetch_lrdd_template($host) {
function fetch_xrd_links($url) {
-logger('fetch_xrd_links: ' . $url);
+ logger('fetch_xrd_links: ' . $url, LOGGER_DEBUG);
$redirects = 0;
$x = z_fetch_url($url,false,$redirects,array('timeout' => 20));
@@ -1619,6 +1582,10 @@ logger('fetch_xrd_links: ' . $url);
}
}
+ if(isset($arr['xrd']['subject'])) {
+ $links[]['@attributes'] = array('rel' => 'subject' , 'href' => $arr['xrd']['subject']);
+ }
+
logger('fetch_xrd_links: ' . print_r($links,true), LOGGER_DATA);
return $links;
diff --git a/mod/xrd.php b/mod/xrd.php
index da4ab51a4..ed8e1eabe 100644
--- a/mod/xrd.php
+++ b/mod/xrd.php
@@ -7,8 +7,12 @@ function xrd_init(&$a) {
$uri = urldecode(notags(trim($_GET['uri'])));
logger('xrd: ' . $uri,LOGGER_DEBUG);
- if(substr($uri,0,4) === 'http')
+ $resource = $uri;
+
+ if(substr($uri,0,4) === 'http') {
+ $uri = str_replace('~','',$uri);
$name = basename($uri);
+ }
else {
$local = str_replace('acct:', '', $uri);
if(substr($local,0,2) == '//')
@@ -35,9 +39,18 @@ function xrd_init(&$a) {
header("Content-type: application/xrd+xml");
+ $aliases = array('acct:' . $r[0]['channel_address'] . '@' . $a->get_hostname(), z_root() . '/channel/' . $r[0]['channel_address'], z_root() . '/~' . $r[0]['channel_address']);
+
+ for($x = 0; $x < count($aliases); $x ++) {
+ if($aliases[$x] === $resource)
+ unset($aliases[$x]);
+ }
+
+
$o = replace_macros(get_markup_template('xrd_person.tpl'), array(
'$nick' => $r[0]['channel_address'],
- '$accturi' => $uri,
+ '$accturi' => $resource,
+ '$aliases' => $aliases,
'$profile_url' => $a->get_baseurl() . '/channel/' . $r[0]['channel_address'],
'$hcard_url' => $a->get_baseurl() . '/hcard/' . $r[0]['channel_address'],
'$atom' => $a->get_baseurl() . '/feed/' . $r[0]['channel_address'],
diff --git a/version.inc b/version.inc
index ecfd6b86e..cdcebcee4 100644
--- a/version.inc
+++ b/version.inc
@@ -1 +1 @@
-2016-03-21.1342H
+2016-03-24.1345H
diff --git a/view/de/hmessages.po b/view/de/hmessages.po
index f6a2b028e..cea1d86d3 100644
--- a/view/de/hmessages.po
+++ b/view/de/hmessages.po
@@ -23,8 +23,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-03-11 00:03-0800\n"
-"PO-Revision-Date: 2016-03-13 12:21+0000\n"
+"POT-Creation-Date: 2016-03-18 00:03-0700\n"
+"PO-Revision-Date: 2016-03-24 08:00+0000\n"
"Last-Translator: Phellmes <forum@suschka.de>\n"
"Language-Team: German (http://www.transifex.com/Friendica/red-matrix/language/de/)\n"
"MIME-Version: 1.0\n"
@@ -74,7 +74,7 @@ msgid "Schedule Outbox"
msgstr "Postausgang für überwachte Kalender"
#: ../../Zotlabs/Storage/Browser.php:164 ../../include/apps.php:360
-#: ../../include/apps.php:415 ../../include/widgets.php:1434
+#: ../../include/apps.php:415 ../../include/widgets.php:1439
#: ../../include/conversation.php:1037 ../../mod/photos.php:766
#: ../../mod/photos.php:1209
msgid "Unknown"
@@ -101,7 +101,7 @@ msgid "Create"
msgstr "Erstelle"
#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:305
-#: ../../include/widgets.php:1447 ../../mod/photos.php:793
+#: ../../include/widgets.php:1452 ../../mod/photos.php:793
#: ../../mod/photos.php:1333 ../../mod/profile_photo.php:401
#: ../../mod/cover_photo.php:353
msgid "Upload"
@@ -128,8 +128,8 @@ msgstr "Zuletzt geändert"
#: ../../Zotlabs/Storage/Browser.php:240 ../../include/apps.php:259
#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
-#: ../../include/menu.php:108 ../../include/identity.php:924
-#: ../../include/identity.php:928 ../../include/ItemObject.php:100
+#: ../../include/menu.php:108 ../../include/ItemObject.php:100
+#: ../../include/identity.php:932 ../../include/identity.php:936
#: ../../mod/blocks.php:153 ../../mod/connections.php:286
#: ../../mod/connections.php:306 ../../mod/editblock.php:135
#: ../../mod/editlayout.php:134 ../../mod/editpost.php:112
@@ -180,7 +180,7 @@ msgstr "Datei hochladen"
#: ../../include/attach.php:352 ../../include/attach.php:359
#: ../../include/attach.php:437 ../../include/attach.php:889
#: ../../include/attach.php:960 ../../include/attach.php:1112
-#: ../../include/photos.php:29 ../../include/items.php:4573
+#: ../../include/photos.php:29 ../../include/items.php:4660
#: ../../index.php:180 ../../mod/achievements.php:30 ../../mod/api.php:26
#: ../../mod/api.php:31 ../../mod/appman.php:66 ../../mod/authtest.php:13
#: ../../mod/block.php:22 ../../mod/block.php:72 ../../mod/blocks.php:69
@@ -229,8 +229,8 @@ msgid "Page not found."
msgstr "Seite nicht gefunden."
#: ../../include/Contact.php:101 ../../include/widgets.php:147
-#: ../../include/widgets.php:185 ../../include/identity.php:1003
-#: ../../include/conversation.php:961 ../../mod/directory.php:321
+#: ../../include/widgets.php:185 ../../include/conversation.php:961
+#: ../../include/identity.php:1011 ../../mod/directory.php:321
#: ../../mod/match.php:64 ../../mod/suggest.php:52
msgid "Connect"
msgstr "Verbinden"
@@ -299,7 +299,7 @@ msgid "Registration request at %s"
msgstr "Registrierungsanfrage auf %s"
#: ../../include/account.php:317 ../../include/account.php:344
-#: ../../include/account.php:404 ../../include/network.php:1660
+#: ../../include/account.php:404 ../../include/network.php:1864
msgid "Administrator"
msgstr "Administrator"
@@ -432,7 +432,7 @@ msgstr "Webseiten"
msgid "Channel Home"
msgstr "Mein Kanal"
-#: ../../include/apps.php:138 ../../include/identity.php:1387
+#: ../../include/apps.php:138 ../../include/identity.php:1395
#: ../../mod/profperm.php:112
msgid "Profile"
msgstr "Profil"
@@ -525,15 +525,15 @@ msgstr "Installieren"
msgid "Purchase"
msgstr "Kaufen"
-#: ../../include/auth.php:132
+#: ../../include/auth.php:105
msgid "Logged out."
msgstr "Ausgeloggt."
-#: ../../include/auth.php:273
+#: ../../include/auth.php:246
msgid "Failed authentication"
msgstr "Authentifizierung fehlgeschlagen"
-#: ../../include/auth.php:287 ../../mod/openid.php:189
+#: ../../include/auth.php:260 ../../mod/openid.php:189
msgid "Login failed."
msgstr "Login fehlgeschlagen."
@@ -561,7 +561,7 @@ msgid "Finishes:"
msgstr "Endet:"
#: ../../include/bb2diaspora.php:487 ../../include/event.php:52
-#: ../../include/text.php:1433 ../../include/identity.php:1018
+#: ../../include/text.php:1433 ../../include/identity.php:1026
#: ../../mod/directory.php:307
msgid "Location:"
msgstr "Ort:"
@@ -690,8 +690,9 @@ msgstr "Sicherer Modus"
#: ../../mod/filestorage.php:151 ../../mod/filestorage.php:159
#: ../../mod/menu.php:96 ../../mod/menu.php:153 ../../mod/mitem.php:154
#: ../../mod/mitem.php:155 ../../mod/mitem.php:228 ../../mod/mitem.php:229
-#: ../../mod/photos.php:634 ../../mod/admin.php:425 ../../mod/removeme.php:60
-#: ../../mod/settings.php:588 ../../view/theme/redbasic/php/config.php:105
+#: ../../mod/photos.php:634 ../../mod/admin.php:425 ../../mod/profiles.php:647
+#: ../../mod/removeme.php:60 ../../mod/settings.php:588
+#: ../../view/theme/redbasic/php/config.php:105
#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1555
msgid "No"
msgstr "Nein"
@@ -703,8 +704,9 @@ msgstr "Nein"
#: ../../mod/filestorage.php:151 ../../mod/filestorage.php:159
#: ../../mod/menu.php:96 ../../mod/menu.php:153 ../../mod/mitem.php:154
#: ../../mod/mitem.php:155 ../../mod/mitem.php:228 ../../mod/mitem.php:229
-#: ../../mod/photos.php:634 ../../mod/admin.php:427 ../../mod/removeme.php:60
-#: ../../mod/settings.php:588 ../../view/theme/redbasic/php/config.php:105
+#: ../../mod/photos.php:634 ../../mod/admin.php:427 ../../mod/profiles.php:647
+#: ../../mod/removeme.php:60 ../../mod/settings.php:588
+#: ../../view/theme/redbasic/php/config.php:105
#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1555
msgid "Yes"
msgstr "Ja"
@@ -763,7 +765,7 @@ msgstr "Antwort des entfernten Kanals war unvollständig."
msgid "Channel was deleted and no longer exists."
msgstr "Kanal wurde gelöscht und existiert nicht mehr."
-#: ../../include/follow.php:153 ../../include/follow.php:183
+#: ../../include/follow.php:153 ../../include/follow.php:185
msgid "Protocol disabled."
msgstr "Protokoll deaktiviert."
@@ -771,11 +773,11 @@ msgstr "Protokoll deaktiviert."
msgid "Channel discovery failed."
msgstr "Kanalsuche fehlgeschlagen"
-#: ../../include/follow.php:199
+#: ../../include/follow.php:201
msgid "local account not found."
msgstr "Lokales Konto nicht gefunden."
-#: ../../include/follow.php:224
+#: ../../include/follow.php:226
msgid "Cannot connect to yourself."
msgstr "Du kannst Dich nicht mit Dir selbst verbinden."
@@ -898,7 +900,8 @@ msgid "Unsaved changes. Are you sure you wish to leave this page?"
msgstr "Ungespeicherte Änderungen. Bist Du sicher, dass Du diese Seite verlassen möchtest?"
#: ../../include/js_strings.php:25 ../../mod/events.php:459
-#: ../../mod/profiles.php:472 ../../mod/pubsites.php:36
+#: ../../mod/profiles.php:472 ../../mod/profiles.php:697
+#: ../../mod/pubsites.php:36
msgid "Location"
msgstr "Ort"
@@ -1195,7 +1198,8 @@ msgstr "Profil ansehen"
msgid "Your profile page"
msgstr "Deine Profilseite"
-#: ../../include/nav.php:88 ../../include/identity.php:924
+#: ../../include/nav.php:88 ../../include/identity.php:932
+#: ../../mod/profiles.php:776
msgid "Edit Profiles"
msgstr "Profile bearbeiten"
@@ -1203,7 +1207,7 @@ msgstr "Profile bearbeiten"
msgid "Manage/Edit profiles"
msgstr "Profile verwalten"
-#: ../../include/nav.php:90 ../../include/identity.php:928
+#: ../../include/nav.php:90 ../../include/identity.php:936
msgid "Edit Profile"
msgstr "Profile bearbeiten"
@@ -1362,7 +1366,7 @@ msgstr "Verwalte Deine Kanäle"
msgid "Account/Channel Settings"
msgstr "Konto-/Kanal-Einstellungen"
-#: ../../include/nav.php:213 ../../include/widgets.php:1347
+#: ../../include/nav.php:213 ../../include/widgets.php:1350
msgid "Admin"
msgstr "Administration"
@@ -1762,7 +1766,7 @@ msgstr "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinli
msgid "Tags"
msgstr "Schlagwörter"
-#: ../../include/taxonomy.php:305 ../../mod/profiles.php:717
+#: ../../include/taxonomy.php:305
msgid "Keywords"
msgstr "Schlüsselwörter"
@@ -1798,8 +1802,8 @@ msgstr "verurteile"
msgid "dislikes"
msgstr "missfällt"
-#: ../../include/taxonomy.php:415 ../../include/identity.php:1296
-#: ../../include/conversation.php:1756 ../../include/ItemObject.php:179
+#: ../../include/taxonomy.php:415 ../../include/conversation.php:1756
+#: ../../include/ItemObject.php:179 ../../include/identity.php:1304
#: ../../mod/photos.php:1097
msgctxt "noun"
msgid "Like"
@@ -1807,92 +1811,6 @@ msgid_plural "Likes"
msgstr[0] "Gefällt mir"
msgstr[1] "Gefällt mir"
-#: ../../include/datetime.php:48
-msgid "Miscellaneous"
-msgstr "Verschiedenes"
-
-#: ../../include/datetime.php:132
-msgid "YYYY-MM-DD or MM-DD"
-msgstr "JJJJ-MM-TT oder MM-TT"
-
-#: ../../include/datetime.php:236 ../../mod/appman.php:91
-#: ../../mod/appman.php:92 ../../mod/events.php:444 ../../mod/events.php:449
-msgid "Required"
-msgstr "Benötigt"
-
-#: ../../include/datetime.php:263 ../../boot.php:2382
-msgid "never"
-msgstr "Nie"
-
-#: ../../include/datetime.php:269
-msgid "less than a second ago"
-msgstr "Vor weniger als einer Sekunde"
-
-#: ../../include/datetime.php:287
-#, php-format
-msgctxt "e.g. 22 hours ago, 1 minute ago"
-msgid "%1$d %2$s ago"
-msgstr "vor %1$d %2$s"
-
-#: ../../include/datetime.php:298
-msgctxt "relative_date"
-msgid "year"
-msgid_plural "years"
-msgstr[0] "Jahr"
-msgstr[1] "Jahre"
-
-#: ../../include/datetime.php:301
-msgctxt "relative_date"
-msgid "month"
-msgid_plural "months"
-msgstr[0] "Monat"
-msgstr[1] "Monate"
-
-#: ../../include/datetime.php:304
-msgctxt "relative_date"
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "Woche"
-msgstr[1] "Wochen"
-
-#: ../../include/datetime.php:307
-msgctxt "relative_date"
-msgid "day"
-msgid_plural "days"
-msgstr[0] "Tag"
-msgstr[1] "Tage"
-
-#: ../../include/datetime.php:310
-msgctxt "relative_date"
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "Stunde"
-msgstr[1] "Stunden"
-
-#: ../../include/datetime.php:313
-msgctxt "relative_date"
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "Minute"
-msgstr[1] "Minuten"
-
-#: ../../include/datetime.php:316
-msgctxt "relative_date"
-msgid "second"
-msgid_plural "seconds"
-msgstr[0] "Sekunde"
-msgstr[1] "Sekunden"
-
-#: ../../include/datetime.php:553
-#, php-format
-msgid "%1$s's birthday"
-msgstr "%1$ss Geburtstag"
-
-#: ../../include/datetime.php:554
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Alles Gute zum Geburtstag, %1$s"
-
#: ../../include/zot.php:680
msgid "Invalid data packet"
msgstr "Ungültiges Datenpaket"
@@ -1901,12 +1819,12 @@ msgstr "Ungültiges Datenpaket"
msgid "Unable to verify channel signature"
msgstr "Konnte die Signatur des Kanals nicht verifizieren"
-#: ../../include/zot.php:2326
+#: ../../include/zot.php:2332
#, php-format
msgid "Unable to verify site signature for %s"
msgstr "Kann die Signatur der Seite von %s nicht verifizieren"
-#: ../../include/zot.php:3661
+#: ../../include/zot.php:3667
msgid "invalid target signature"
msgstr "Ungültige Signatur des Ziels"
@@ -2042,24 +1960,24 @@ msgstr "MySpace"
msgid "view full size"
msgstr "In Vollbildansicht anschauen"
-#: ../../include/network.php:1612 ../../include/enotify.php:57
+#: ../../include/network.php:1816 ../../include/enotify.php:57
msgid "$Projectname Notification"
msgstr "$Projectname-Benachrichtigung"
-#: ../../include/network.php:1613 ../../include/enotify.php:58
+#: ../../include/network.php:1817 ../../include/enotify.php:58
msgid "$projectname"
msgstr "$projectname"
-#: ../../include/network.php:1615 ../../include/enotify.php:60
+#: ../../include/network.php:1819 ../../include/enotify.php:60
msgid "Thank You,"
msgstr "Danke."
-#: ../../include/network.php:1617 ../../include/enotify.php:62
+#: ../../include/network.php:1821 ../../include/enotify.php:62
#, php-format
msgid "%s Administrator"
msgstr "der Administrator von %s"
-#: ../../include/network.php:1674
+#: ../../include/network.php:1878
msgid "No Subject"
msgstr "Kein Betreff"
@@ -2384,6 +2302,7 @@ msgid "System"
msgstr "System"
#: ../../include/widgets.php:105 ../../include/conversation.php:1541
+#: ../../mod/profiles.php:696
msgid "Personal"
msgstr "Persönlich"
@@ -2641,6 +2560,10 @@ msgstr "Seite"
msgid "Accounts"
msgstr "Konten"
+#: ../../include/widgets.php:1317 ../../include/widgets.php:1355
+msgid "Member registrations waiting for confirmation"
+msgstr "Nutzer-Anmeldungen, die auf Bestätigung warten"
+
#: ../../include/widgets.php:1318 ../../mod/admin.php:1149
msgid "Channels"
msgstr "Kanäle"
@@ -2671,25 +2594,21 @@ msgstr "Profil Felder"
msgid "DB updates"
msgstr "DB-Aktualisierungen"
-#: ../../include/widgets.php:1343 ../../include/widgets.php:1349
+#: ../../include/widgets.php:1343 ../../include/widgets.php:1353
#: ../../mod/admin.php:1605
msgid "Logs"
msgstr "Protokolle"
-#: ../../include/widgets.php:1348
+#: ../../include/widgets.php:1351
msgid "Plugin Features"
msgstr "Plug-In Funktionen"
-#: ../../include/widgets.php:1350
-msgid "User registrations waiting for confirmation"
-msgstr "Nutzer-Anmeldungen, die auf Bestätigung warten"
-
-#: ../../include/widgets.php:1428 ../../mod/photos.php:760
+#: ../../include/widgets.php:1433 ../../mod/photos.php:760
#: ../../mod/photos.php:1300
msgid "View Photo"
msgstr "Foto ansehen"
-#: ../../include/widgets.php:1445 ../../mod/photos.php:791
+#: ../../include/widgets.php:1450 ../../mod/photos.php:791
msgid "Edit Album"
msgstr "Album bearbeiten"
@@ -3156,234 +3075,100 @@ msgstr "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen."
msgid "[Hubzilla:Notify]"
msgstr "[Hubzilla:Benachrichtigung]"
-#: ../../include/identity.php:32
-msgid "Unable to obtain identity information from database"
-msgstr "Kann keine Identitäts-Informationen aus Datenbank beziehen"
-
-#: ../../include/identity.php:66
-msgid "Empty name"
-msgstr "Namensfeld leer"
-
-#: ../../include/identity.php:69
-msgid "Name too long"
-msgstr "Name ist zu lang"
-
-#: ../../include/identity.php:181
-msgid "No account identifier"
-msgstr "Keine Account-Kennung"
-
-#: ../../include/identity.php:193
-msgid "Nickname is required."
-msgstr "Spitzname ist erforderlich."
-
-#: ../../include/identity.php:207
-msgid "Reserved nickname. Please choose another."
-msgstr "Reservierter Kurzname. Bitte wähle einen anderen."
-
-#: ../../include/identity.php:212
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt."
-
-#: ../../include/identity.php:288
-msgid "Unable to retrieve created identity"
-msgstr "Kann die erstellte Identität nicht empfangen"
-
-#: ../../include/identity.php:346
-msgid "Default Profile"
-msgstr "Standard-Profil"
-
-#: ../../include/identity.php:776
-msgid "Requested channel is not available."
-msgstr "Angeforderte Kanal nicht verfügbar."
-
-#: ../../include/identity.php:822 ../../mod/achievements.php:11
-#: ../../mod/blocks.php:29 ../../mod/connect.php:13 ../../mod/editblock.php:29
-#: ../../mod/editlayout.php:27 ../../mod/editwebpage.php:28
-#: ../../mod/filestorage.php:54 ../../mod/hcard.php:8 ../../mod/layouts.php:29
-#: ../../mod/profile.php:16 ../../mod/webpages.php:29
-msgid "Requested profile is not available."
-msgstr "Erwünschte Profil ist nicht verfügbar."
-
-#: ../../include/identity.php:917 ../../mod/profiles.php:795
-msgid "Change profile photo"
-msgstr "Profilfoto ändern"
-
-#: ../../include/identity.php:925 ../../mod/profiles.php:796
-msgid "Create New Profile"
-msgstr "Neues Profil erstellen"
-
-#: ../../include/identity.php:942 ../../mod/profiles.php:807
-msgid "Profile Image"
-msgstr "Profilfoto:"
-
-#: ../../include/identity.php:945
-msgid "Visible to everybody"
-msgstr "Für jeden sichtbar"
-
-#: ../../include/identity.php:946 ../../mod/profiles.php:689
-#: ../../mod/profiles.php:811
-msgid "Edit visibility"
-msgstr "Sichtbarkeit bearbeiten"
-
-#: ../../include/identity.php:1022 ../../include/identity.php:1280
-msgid "Gender:"
-msgstr "Geschlecht:"
-
-#: ../../include/identity.php:1023 ../../include/identity.php:1324
-msgid "Status:"
-msgstr "Status:"
-
-#: ../../include/identity.php:1024 ../../include/identity.php:1335
-msgid "Homepage:"
-msgstr "Homepage:"
-
-#: ../../include/identity.php:1025
-msgid "Online Now"
-msgstr "gerade online"
-
-#: ../../include/identity.php:1113 ../../include/identity.php:1191
-#: ../../mod/ping.php:318
-msgid "g A l F d"
-msgstr "l, d. F, G:i \\U\\h\\r"
-
-#: ../../include/identity.php:1114 ../../include/identity.php:1192
-msgid "F d"
-msgstr "d. F"
-
-#: ../../include/identity.php:1159 ../../include/identity.php:1231
-#: ../../mod/ping.php:341
-msgid "[today]"
-msgstr "[Heute]"
-
-#: ../../include/identity.php:1170
-msgid "Birthday Reminders"
-msgstr "Geburtstags Erinnerungen"
-
-#: ../../include/identity.php:1171
-msgid "Birthdays this week:"
-msgstr "Geburtstage in dieser Woche:"
-
-#: ../../include/identity.php:1224
-msgid "[No description]"
-msgstr "[Keine Beschreibung]"
-
-#: ../../include/identity.php:1242
-msgid "Event Reminders"
-msgstr "Termin-Erinnerungen"
-
-#: ../../include/identity.php:1243
-msgid "Events this week:"
-msgstr "Termine in dieser Woche:"
-
-#: ../../include/identity.php:1278 ../../mod/settings.php:1047
-msgid "Full Name:"
-msgstr "Voller Name:"
-
-#: ../../include/identity.php:1285
-msgid "Like this channel"
-msgstr "Dieser Kanal gefällt mir"
-
-#: ../../include/identity.php:1309
-msgid "j F, Y"
-msgstr "j. F Y"
-
-#: ../../include/identity.php:1310
-msgid "j F"
-msgstr "j. F"
+#: ../../include/datetime.php:48 ../../mod/profiles.php:699
+msgid "Miscellaneous"
+msgstr "Verschiedenes"
-#: ../../include/identity.php:1317
-msgid "Birthday:"
-msgstr "Geburtstag:"
+#: ../../include/datetime.php:136
+msgid "Birthday"
+msgstr "Geburtstag"
-#: ../../include/identity.php:1321 ../../mod/directory.php:302
-msgid "Age:"
+#: ../../include/datetime.php:138
+msgid "Age: "
msgstr "Alter:"
-#: ../../include/identity.php:1330
-#, php-format
-msgid "for %1$d %2$s"
-msgstr "seit %1$d %2$s"
-
-#: ../../include/identity.php:1333
-msgid "Sexual Preference:"
-msgstr "Sexuelle Orientierung:"
-
-#: ../../include/identity.php:1337 ../../mod/directory.php:318
-msgid "Hometown:"
-msgstr "Heimatstadt:"
-
-#: ../../include/identity.php:1339
-msgid "Tags:"
-msgstr "Schlagworte:"
-
-#: ../../include/identity.php:1341
-msgid "Political Views:"
-msgstr "Politische Ansichten:"
-
-#: ../../include/identity.php:1343
-msgid "Religion:"
-msgstr "Religion:"
-
-#: ../../include/identity.php:1345 ../../mod/directory.php:320
-msgid "About:"
-msgstr "Über:"
-
-#: ../../include/identity.php:1347
-msgid "Hobbies/Interests:"
-msgstr "Hobbys/Interessen:"
+#: ../../include/datetime.php:140
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "JJJJ-MM-TT oder MM-TT"
-#: ../../include/identity.php:1349
-msgid "Likes:"
-msgstr "Gefällt:"
+#: ../../include/datetime.php:246 ../../mod/appman.php:91
+#: ../../mod/appman.php:92 ../../mod/events.php:444 ../../mod/events.php:449
+#: ../../mod/profiles.php:708 ../../mod/profiles.php:712
+msgid "Required"
+msgstr "Benötigt"
-#: ../../include/identity.php:1351
-msgid "Dislikes:"
-msgstr "Gefällt nicht:"
+#: ../../include/datetime.php:273 ../../boot.php:2382
+msgid "never"
+msgstr "Nie"
-#: ../../include/identity.php:1353
-msgid "Contact information and Social Networks:"
-msgstr "Kontaktinformation und soziale Netzwerke:"
+#: ../../include/datetime.php:279
+msgid "less than a second ago"
+msgstr "Vor weniger als einer Sekunde"
-#: ../../include/identity.php:1355
-msgid "My other channels:"
-msgstr "Meine anderen Kanäle:"
+#: ../../include/datetime.php:297
+#, php-format
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
+msgstr "vor %1$d %2$s"
-#: ../../include/identity.php:1357
-msgid "Musical interests:"
-msgstr "Musikalische Interessen:"
+#: ../../include/datetime.php:308
+msgctxt "relative_date"
+msgid "year"
+msgid_plural "years"
+msgstr[0] "Jahr"
+msgstr[1] "Jahre"
-#: ../../include/identity.php:1359
-msgid "Books, literature:"
-msgstr "Bücher, Literatur:"
+#: ../../include/datetime.php:311
+msgctxt "relative_date"
+msgid "month"
+msgid_plural "months"
+msgstr[0] "Monat"
+msgstr[1] "Monate"
-#: ../../include/identity.php:1361
-msgid "Television:"
-msgstr "Fernsehen:"
+#: ../../include/datetime.php:314
+msgctxt "relative_date"
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "Woche"
+msgstr[1] "Wochen"
-#: ../../include/identity.php:1363
-msgid "Film/dance/culture/entertainment:"
-msgstr "Film/Tanz/Kultur/Unterhaltung:"
+#: ../../include/datetime.php:317
+msgctxt "relative_date"
+msgid "day"
+msgid_plural "days"
+msgstr[0] "Tag"
+msgstr[1] "Tage"
-#: ../../include/identity.php:1365
-msgid "Love/Romance:"
-msgstr "Liebe/Romantik:"
+#: ../../include/datetime.php:320
+msgctxt "relative_date"
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "Stunde"
+msgstr[1] "Stunden"
-#: ../../include/identity.php:1367
-msgid "Work/employment:"
-msgstr "Arbeit/Anstellung:"
+#: ../../include/datetime.php:323
+msgctxt "relative_date"
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "Minute"
+msgstr[1] "Minuten"
-#: ../../include/identity.php:1369
-msgid "School/education:"
-msgstr "Schule/Ausbildung:"
+#: ../../include/datetime.php:326
+msgctxt "relative_date"
+msgid "second"
+msgid_plural "seconds"
+msgstr[0] "Sekunde"
+msgstr[1] "Sekunden"
-#: ../../include/identity.php:1389
-msgid "Like this thing"
-msgstr "Gefällt mir"
+#: ../../include/datetime.php:563
+#, php-format
+msgid "%1$s's birthday"
+msgstr "%1$ss Geburtstag"
-#: ../../include/identity.php:1799 ../../mod/cover_photo.php:236
-msgid "cover photo"
-msgstr "Cover Foto"
+#: ../../include/datetime.php:564
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Alles Gute zum Geburtstag, %1$s"
#: ../../include/oembed.php:267
msgid "Embedded content"
@@ -4268,62 +4053,291 @@ msgstr "Nur für akzeptierte Verbindungen sichtbar."
msgid "Visible to specific connections."
msgstr "Sichtbar für bestimmte Verbindungen."
-#: ../../include/items.php:4494 ../../mod/display.php:36
+#: ../../include/items.php:4581 ../../mod/display.php:36
#: ../../mod/filestorage.php:27 ../../mod/admin.php:141
#: ../../mod/admin.php:1189 ../../mod/admin.php:1434 ../../mod/thing.php:85
#: ../../mod/viewsrc.php:20
msgid "Item not found."
msgstr "Element nicht gefunden."
-#: ../../include/items.php:5030 ../../mod/group.php:38 ../../mod/group.php:137
+#: ../../include/items.php:5117 ../../mod/group.php:38 ../../mod/group.php:137
msgid "Privacy group not found."
msgstr "Gruppe nicht gefunden."
-#: ../../include/items.php:5046
+#: ../../include/items.php:5133
msgid "Privacy group is empty."
msgstr "Gruppe ist leer."
-#: ../../include/items.php:5053
+#: ../../include/items.php:5140
#, php-format
msgid "Privacy group: %s"
msgstr "Gruppe: %s"
-#: ../../include/items.php:5063 ../../mod/connedit.php:701
+#: ../../include/items.php:5150 ../../mod/connedit.php:701
#, php-format
msgid "Connection: %s"
msgstr "Verbindung: %s"
-#: ../../include/items.php:5065
+#: ../../include/items.php:5152
msgid "Connection not found."
msgstr "Die Verbindung wurde nicht gefunden."
-#: ../../include/items.php:5491 ../../mod/cover_photo.php:229
+#: ../../include/items.php:5578 ../../mod/cover_photo.php:229
msgid "female"
msgstr "weiblich"
-#: ../../include/items.php:5492 ../../mod/cover_photo.php:230
+#: ../../include/items.php:5579 ../../mod/cover_photo.php:230
#, php-format
msgid "%1$s updated her %2$s"
msgstr "%1$s hat ihr %2$s aktualisiert"
-#: ../../include/items.php:5493 ../../mod/cover_photo.php:231
+#: ../../include/items.php:5580 ../../mod/cover_photo.php:231
msgid "male"
msgstr "männlich"
-#: ../../include/items.php:5494 ../../mod/cover_photo.php:232
+#: ../../include/items.php:5581 ../../mod/cover_photo.php:232
#, php-format
msgid "%1$s updated his %2$s"
msgstr "%1$s hat sein %2$s aktualisiert"
-#: ../../include/items.php:5496 ../../mod/cover_photo.php:234
+#: ../../include/items.php:5583 ../../mod/cover_photo.php:234
#, php-format
msgid "%1$s updated their %2$s"
msgstr "%1$s hat sein/ihr %2$s aktualisiert"
-#: ../../include/items.php:5498
+#: ../../include/items.php:5585
msgid "profile photo"
msgstr "Profilfoto"
+#: ../../include/identity.php:32
+msgid "Unable to obtain identity information from database"
+msgstr "Kann keine Identitäts-Informationen aus Datenbank beziehen"
+
+#: ../../include/identity.php:66
+msgid "Empty name"
+msgstr "Namensfeld leer"
+
+#: ../../include/identity.php:69
+msgid "Name too long"
+msgstr "Name ist zu lang"
+
+#: ../../include/identity.php:181
+msgid "No account identifier"
+msgstr "Keine Account-Kennung"
+
+#: ../../include/identity.php:193
+msgid "Nickname is required."
+msgstr "Spitzname ist erforderlich."
+
+#: ../../include/identity.php:207
+msgid "Reserved nickname. Please choose another."
+msgstr "Reservierter Kurzname. Bitte wähle einen anderen."
+
+#: ../../include/identity.php:212
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt."
+
+#: ../../include/identity.php:288
+msgid "Unable to retrieve created identity"
+msgstr "Kann die erstellte Identität nicht empfangen"
+
+#: ../../include/identity.php:346
+msgid "Default Profile"
+msgstr "Standard-Profil"
+
+#: ../../include/identity.php:784
+msgid "Requested channel is not available."
+msgstr "Angeforderte Kanal nicht verfügbar."
+
+#: ../../include/identity.php:830 ../../mod/achievements.php:11
+#: ../../mod/blocks.php:29 ../../mod/connect.php:13 ../../mod/editblock.php:29
+#: ../../mod/editlayout.php:27 ../../mod/editwebpage.php:28
+#: ../../mod/filestorage.php:54 ../../mod/hcard.php:8 ../../mod/layouts.php:29
+#: ../../mod/profile.php:16 ../../mod/webpages.php:29
+msgid "Requested profile is not available."
+msgstr "Erwünschte Profil ist nicht verfügbar."
+
+#: ../../include/identity.php:925 ../../mod/profiles.php:691
+msgid "Change profile photo"
+msgstr "Profilfoto ändern"
+
+#: ../../include/identity.php:933
+msgid "Create New Profile"
+msgstr "Neues Profil erstellen"
+
+#: ../../include/identity.php:950 ../../mod/profiles.php:766
+msgid "Profile Image"
+msgstr "Profilfoto:"
+
+#: ../../include/identity.php:953
+msgid "Visible to everybody"
+msgstr "Für jeden sichtbar"
+
+#: ../../include/identity.php:954 ../../mod/profiles.php:689
+#: ../../mod/profiles.php:770
+msgid "Edit visibility"
+msgstr "Sichtbarkeit bearbeiten"
+
+#: ../../include/identity.php:1030 ../../include/identity.php:1288
+msgid "Gender:"
+msgstr "Geschlecht:"
+
+#: ../../include/identity.php:1031 ../../include/identity.php:1332
+msgid "Status:"
+msgstr "Status:"
+
+#: ../../include/identity.php:1032 ../../include/identity.php:1343
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: ../../include/identity.php:1033
+msgid "Online Now"
+msgstr "gerade online"
+
+#: ../../include/identity.php:1121 ../../include/identity.php:1199
+#: ../../mod/ping.php:318
+msgid "g A l F d"
+msgstr "l, d. F, G:i \\U\\h\\r"
+
+#: ../../include/identity.php:1122 ../../include/identity.php:1200
+msgid "F d"
+msgstr "d. F"
+
+#: ../../include/identity.php:1167 ../../include/identity.php:1239
+#: ../../mod/ping.php:341
+msgid "[today]"
+msgstr "[Heute]"
+
+#: ../../include/identity.php:1178
+msgid "Birthday Reminders"
+msgstr "Geburtstags Erinnerungen"
+
+#: ../../include/identity.php:1179
+msgid "Birthdays this week:"
+msgstr "Geburtstage in dieser Woche:"
+
+#: ../../include/identity.php:1232
+msgid "[No description]"
+msgstr "[Keine Beschreibung]"
+
+#: ../../include/identity.php:1250
+msgid "Event Reminders"
+msgstr "Termin-Erinnerungen"
+
+#: ../../include/identity.php:1251
+msgid "Events this week:"
+msgstr "Termine in dieser Woche:"
+
+#: ../../include/identity.php:1286 ../../mod/settings.php:1047
+msgid "Full Name:"
+msgstr "Voller Name:"
+
+#: ../../include/identity.php:1293
+msgid "Like this channel"
+msgstr "Dieser Kanal gefällt mir"
+
+#: ../../include/identity.php:1317
+msgid "j F, Y"
+msgstr "j. F Y"
+
+#: ../../include/identity.php:1318
+msgid "j F"
+msgstr "j. F"
+
+#: ../../include/identity.php:1325
+msgid "Birthday:"
+msgstr "Geburtstag:"
+
+#: ../../include/identity.php:1329 ../../mod/directory.php:302
+msgid "Age:"
+msgstr "Alter:"
+
+#: ../../include/identity.php:1338
+#, php-format
+msgid "for %1$d %2$s"
+msgstr "seit %1$d %2$s"
+
+#: ../../include/identity.php:1341
+msgid "Sexual Preference:"
+msgstr "Sexuelle Orientierung:"
+
+#: ../../include/identity.php:1345 ../../mod/directory.php:318
+msgid "Hometown:"
+msgstr "Heimatstadt:"
+
+#: ../../include/identity.php:1347
+msgid "Tags:"
+msgstr "Schlagworte:"
+
+#: ../../include/identity.php:1349
+msgid "Political Views:"
+msgstr "Politische Ansichten:"
+
+#: ../../include/identity.php:1351
+msgid "Religion:"
+msgstr "Religion:"
+
+#: ../../include/identity.php:1353 ../../mod/directory.php:320
+msgid "About:"
+msgstr "Über:"
+
+#: ../../include/identity.php:1355
+msgid "Hobbies/Interests:"
+msgstr "Hobbys/Interessen:"
+
+#: ../../include/identity.php:1357
+msgid "Likes:"
+msgstr "Gefällt:"
+
+#: ../../include/identity.php:1359
+msgid "Dislikes:"
+msgstr "Gefällt nicht:"
+
+#: ../../include/identity.php:1361
+msgid "Contact information and Social Networks:"
+msgstr "Kontaktinformation und soziale Netzwerke:"
+
+#: ../../include/identity.php:1363
+msgid "My other channels:"
+msgstr "Meine anderen Kanäle:"
+
+#: ../../include/identity.php:1365
+msgid "Musical interests:"
+msgstr "Musikalische Interessen:"
+
+#: ../../include/identity.php:1367
+msgid "Books, literature:"
+msgstr "Bücher, Literatur:"
+
+#: ../../include/identity.php:1369
+msgid "Television:"
+msgstr "Fernsehen:"
+
+#: ../../include/identity.php:1371
+msgid "Film/dance/culture/entertainment:"
+msgstr "Film/Tanz/Kultur/Unterhaltung:"
+
+#: ../../include/identity.php:1373
+msgid "Love/Romance:"
+msgstr "Liebe/Romantik:"
+
+#: ../../include/identity.php:1375
+msgid "Work/employment:"
+msgstr "Arbeit/Anstellung:"
+
+#: ../../include/identity.php:1377
+msgid "School/education:"
+msgstr "Schule/Ausbildung:"
+
+#: ../../include/identity.php:1397
+msgid "Like this thing"
+msgstr "Gefällt mir"
+
+#: ../../include/identity.php:1807 ../../mod/cover_photo.php:236
+msgid "cover photo"
+msgstr "Cover Foto"
+
#: ../../mod/achievements.php:34
msgid "Some blurb about what to do when you're new here"
msgstr "Ein Hinweis, was man tun kann, wenn man neu hier ist"
@@ -5474,7 +5488,7 @@ msgstr "Profilfoto 128 px"
msgid "Timezone"
msgstr "Zeitzone"
-#: ../../mod/id.php:27 ../../mod/profiles.php:713
+#: ../../mod/id.php:27 ../../mod/profiles.php:730
msgid "Homepage URL"
msgstr "Homepage-URL"
@@ -7515,15 +7529,15 @@ msgstr "Familienstand"
msgid "Romantic Partner"
msgstr "Romantische Partner"
-#: ../../mod/profiles.php:430 ../../mod/profiles.php:718
+#: ../../mod/profiles.php:430 ../../mod/profiles.php:735
msgid "Likes"
msgstr "Gefällt"
-#: ../../mod/profiles.php:434 ../../mod/profiles.php:719
+#: ../../mod/profiles.php:434 ../../mod/profiles.php:736
msgid "Dislikes"
msgstr "Gefällt nicht"
-#: ../../mod/profiles.php:438
+#: ../../mod/profiles.php:438 ../../mod/profiles.php:743
msgid "Work/Employment"
msgstr "Arbeit/Anstellung"
@@ -7531,11 +7545,11 @@ msgstr "Arbeit/Anstellung"
msgid "Religion"
msgstr "Religion"
-#: ../../mod/profiles.php:445 ../../mod/profiles.php:715
+#: ../../mod/profiles.php:445
msgid "Political Views"
msgstr "Politische Ansichten"
-#: ../../mod/profiles.php:453 ../../mod/profiles.php:712
+#: ../../mod/profiles.php:453
msgid "Sexual Preference"
msgstr "Sexuelle Orientierung"
@@ -7551,9 +7565,9 @@ msgstr "Hobbys/Interessen"
msgid "Profile updated."
msgstr "Profil aktualisiert."
-#: ../../mod/profiles.php:646
-msgid "Hide your contact/friend list from viewers of this profile?"
-msgstr "Deine Kontaktliste vor Betrachtern dieses Profils verbergen?"
+#: ../../mod/profiles.php:644
+msgid "Hide your connections list from viewers of this profile"
+msgstr "Deine Verbindungen vor Betrachtern dieses Profils verbergen"
#: ../../mod/profiles.php:686
msgid "Edit Profile Details"
@@ -7564,13 +7578,9 @@ msgid "View this profile"
msgstr "Dieses Profil ansehen"
#: ../../mod/profiles.php:690
-msgid "Change Cover Photo"
+msgid "Change cover photo"
msgstr "Titelbild ändern"
-#: ../../mod/profiles.php:691
-msgid "Change Profile Photo"
-msgstr "Profilfoto ändern"
-
#: ../../mod/profiles.php:692
msgid "Create a new profile using these settings"
msgstr "Neues Profil anlegen und diese Einstellungen übernehmen"
@@ -7583,149 +7593,145 @@ msgstr "Dieses Profil klonen"
msgid "Delete this profile"
msgstr "Dieses Profil löschen"
-#: ../../mod/profiles.php:696
+#: ../../mod/profiles.php:695
+msgid "Add profile things"
+msgstr "Sachen zum Profil hinzufügen"
+
+#: ../../mod/profiles.php:698
+msgid "Relation"
+msgstr "Beziehung"
+
+#: ../../mod/profiles.php:701
msgid "Import profile from file"
msgstr "Profil aus einer Datei importieren"
-#: ../../mod/profiles.php:697
+#: ../../mod/profiles.php:702
msgid "Export profile to file"
msgstr "Profil in eine Datei exportieren"
-#: ../../mod/profiles.php:698
-msgid "Profile Name"
+#: ../../mod/profiles.php:703
+msgid "Your gender"
+msgstr "Dein Geschlecht"
+
+#: ../../mod/profiles.php:704
+msgid "Marital status"
+msgstr "Familienstand"
+
+#: ../../mod/profiles.php:705
+msgid "Sexual preference"
+msgstr "Sexuelle Orientierung"
+
+#: ../../mod/profiles.php:708
+msgid "Profile name"
msgstr "Profilname"
-#: ../../mod/profiles.php:699
-msgid "Your Full Name"
+#: ../../mod/profiles.php:710
+msgid "This is your default profile."
+msgstr "Das ist Dein Standardprofil."
+
+#: ../../mod/profiles.php:712
+msgid "Your full name"
msgstr "Dein voller Name"
-#: ../../mod/profiles.php:700
+#: ../../mod/profiles.php:713
msgid "Title/Description"
msgstr "Titel/Beschreibung"
-#: ../../mod/profiles.php:701
-msgid "Your Gender"
-msgstr "Dein Geschlecht"
-
-#: ../../mod/profiles.php:702
-msgid "Birthday"
-msgstr "Geburtstag"
-
-#: ../../mod/profiles.php:703
-msgid "Street Address"
+#: ../../mod/profiles.php:716
+msgid "Street address"
msgstr "Straße und Hausnummer"
-#: ../../mod/profiles.php:704
+#: ../../mod/profiles.php:717
msgid "Locality/City"
msgstr "Wohnort"
-#: ../../mod/profiles.php:705
-msgid "Postal/Zip Code"
+#: ../../mod/profiles.php:718
+msgid "Region/State"
+msgstr "Region/Bundesstaat"
+
+#: ../../mod/profiles.php:719
+msgid "Postal/Zip code"
msgstr "Postleitzahl"
-#: ../../mod/profiles.php:706
+#: ../../mod/profiles.php:720
msgid "Country"
msgstr "Land"
-#: ../../mod/profiles.php:707
-msgid "Region/State"
-msgstr "Region/Bundesstaat"
-
-#: ../../mod/profiles.php:708
-msgid "<span class=\"heart\">&hearts;</span> Marital Status"
-msgstr "<span class=\"heart\">&hearts;</span> Beziehungsstatus"
-
-#: ../../mod/profiles.php:709
+#: ../../mod/profiles.php:725
msgid "Who (if applicable)"
msgstr "Wer (falls anwendbar)"
-#: ../../mod/profiles.php:710
+#: ../../mod/profiles.php:725
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr "Beispiele: cathy123, Cathy Williams, cathy@example.com"
-#: ../../mod/profiles.php:711
-msgid "Since [date]"
-msgstr "Seit [Datum]"
+#: ../../mod/profiles.php:726
+msgid "Since (date)"
+msgstr "Seit (Datum)"
-#: ../../mod/profiles.php:714
+#: ../../mod/profiles.php:729
+msgid "Tell us about yourself"
+msgstr "Erzähle uns ein wenig von Dir"
+
+#: ../../mod/profiles.php:731
msgid "Hometown"
msgstr "Heimatort"
-#: ../../mod/profiles.php:716
-msgid "Religious Views"
+#: ../../mod/profiles.php:732
+msgid "Political views"
+msgstr "Politische Ansichten"
+
+#: ../../mod/profiles.php:733
+msgid "Religious views"
msgstr "Religiöse Ansichten"
-#: ../../mod/profiles.php:720
+#: ../../mod/profiles.php:734
+msgid "Keywords used in directory listings"
+msgstr "Schlüsselwörter, die in Verzeichnis-Auflistungen verwendet werden"
+
+#: ../../mod/profiles.php:734
msgid "Example: fishing photography software"
msgstr "Beispiel: Angeln Fotografie Software"
-#: ../../mod/profiles.php:721
-msgid "Used in directory listings"
-msgstr "Wird in Verzeichnis-Auflistungen verwendet"
-
-#: ../../mod/profiles.php:722
-msgid "Tell us about yourself..."
-msgstr "Erzähle uns ein wenig von Dir …"
-
-#: ../../mod/profiles.php:723
-msgid "Hobbies/Interests"
-msgstr "Hobbys/Interessen"
-
-#: ../../mod/profiles.php:724
-msgid "Contact information and Social Networks"
-msgstr "Kontaktinformation und soziale Netzwerke"
-
-#: ../../mod/profiles.php:725
-msgid "My other channels"
-msgstr "Meine anderen Kanäle"
-
-#: ../../mod/profiles.php:726
+#: ../../mod/profiles.php:737
msgid "Musical interests"
msgstr "Musikalische Interessen"
-#: ../../mod/profiles.php:727
+#: ../../mod/profiles.php:738
msgid "Books, literature"
msgstr "Bücher, Literatur"
-#: ../../mod/profiles.php:728
+#: ../../mod/profiles.php:739
msgid "Television"
msgstr "Fernsehen"
-#: ../../mod/profiles.php:729
-msgid "Film/dance/culture/entertainment"
+#: ../../mod/profiles.php:740
+msgid "Film/Dance/Culture/Entertainment"
msgstr "Film/Tanz/Kultur/Unterhaltung"
-#: ../../mod/profiles.php:730
-msgid "Love/romance"
-msgstr "Liebe/Romantik"
+#: ../../mod/profiles.php:741
+msgid "Hobbies/Interests"
+msgstr "Hobbys/Interessen"
-#: ../../mod/profiles.php:731
-msgid "Work/employment"
-msgstr "Arbeit/Anstellung"
+#: ../../mod/profiles.php:742
+msgid "Love/Romance"
+msgstr "Liebe/Romantik"
-#: ../../mod/profiles.php:732
-msgid "School/education"
+#: ../../mod/profiles.php:744
+msgid "School/Education"
msgstr "Schule/Ausbildung"
-#: ../../mod/profiles.php:738
-msgid "This is your default profile."
-msgstr "Das ist Dein Standardprofil."
-
-#: ../../mod/profiles.php:749
-msgid "Age: "
-msgstr "Alter:"
-
-#: ../../mod/profiles.php:792
-msgid "Edit/Manage Profiles"
-msgstr "Profile bearbeiten/verwalten"
+#: ../../mod/profiles.php:745
+msgid "Contact information and social networks"
+msgstr "Kontaktinformation und soziale Netzwerke"
-#: ../../mod/profiles.php:793
-msgid "Add profile things"
-msgstr "Sachen zum Profil hinzufügen"
+#: ../../mod/profiles.php:746
+msgid "My other channels"
+msgstr "Meine anderen Kanäle"
-#: ../../mod/profiles.php:794
-msgid "Include desirable objects in your profile"
-msgstr "Binde begehrenswerte Dinge in Dein Profil ein"
+#: ../../mod/profiles.php:777
+msgid "Create New"
+msgstr "Ein neues erstellen"
#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
msgid "Invalid profile identifier."
diff --git a/view/de/hstrings.php b/view/de/hstrings.php
index 8edc0ded3..1dbbd5543 100644
--- a/view/de/hstrings.php
+++ b/view/de/hstrings.php
@@ -398,42 +398,6 @@ $a->strings["__ctx:noun__ Like"] = array(
0 => "Gefällt mir",
1 => "Gefällt mir",
);
-$a->strings["Miscellaneous"] = "Verschiedenes";
-$a->strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-TT oder MM-TT";
-$a->strings["Required"] = "Benötigt";
-$a->strings["never"] = "Nie";
-$a->strings["less than a second ago"] = "Vor weniger als einer Sekunde";
-$a->strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "vor %1\$d %2\$s";
-$a->strings["__ctx:relative_date__ year"] = array(
- 0 => "Jahr",
- 1 => "Jahre",
-);
-$a->strings["__ctx:relative_date__ month"] = array(
- 0 => "Monat",
- 1 => "Monate",
-);
-$a->strings["__ctx:relative_date__ week"] = array(
- 0 => "Woche",
- 1 => "Wochen",
-);
-$a->strings["__ctx:relative_date__ day"] = array(
- 0 => "Tag",
- 1 => "Tage",
-);
-$a->strings["__ctx:relative_date__ hour"] = array(
- 0 => "Stunde",
- 1 => "Stunden",
-);
-$a->strings["__ctx:relative_date__ minute"] = array(
- 0 => "Minute",
- 1 => "Minuten",
-);
-$a->strings["__ctx:relative_date__ second"] = array(
- 0 => "Sekunde",
- 1 => "Sekunden",
-);
-$a->strings["%1\$s's birthday"] = "%1\$ss Geburtstag";
-$a->strings["Happy Birthday %1\$s"] = "Alles Gute zum Geburtstag, %1\$s";
$a->strings["Invalid data packet"] = "Ungültiges Datenpaket";
$a->strings["Unable to verify channel signature"] = "Konnte die Signatur des Kanals nicht verifizieren";
$a->strings["Unable to verify site signature for %s"] = "Kann die Signatur der Seite von %s nicht verifizieren";
@@ -614,6 +578,7 @@ $a->strings["For Administrators"] = "Für Administratoren";
$a->strings["For Developers"] = "Für Entwickler";
$a->strings["Site"] = "Seite";
$a->strings["Accounts"] = "Konten";
+$a->strings["Member registrations waiting for confirmation"] = "Nutzer-Anmeldungen, die auf Bestätigung warten";
$a->strings["Channels"] = "Kanäle";
$a->strings["Security"] = "Sicherheit";
$a->strings["Plugins"] = "Plug-Ins";
@@ -623,7 +588,6 @@ $a->strings["Profile Fields"] = "Profil Felder";
$a->strings["DB updates"] = "DB-Aktualisierungen";
$a->strings["Logs"] = "Protokolle";
$a->strings["Plugin Features"] = "Plug-In Funktionen";
-$a->strings["User registrations waiting for confirmation"] = "Nutzer-Anmeldungen, die auf Bestätigung warten";
$a->strings["View Photo"] = "Foto ansehen";
$a->strings["Edit Album"] = "Album bearbeiten";
$a->strings["prev"] = "vorherige";
@@ -731,61 +695,44 @@ $a->strings["Name:"] = "Name:";
$a->strings["Photo:"] = "Foto:";
$a->strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen.";
$a->strings["[Hubzilla:Notify]"] = "[Hubzilla:Benachrichtigung]";
-$a->strings["Unable to obtain identity information from database"] = "Kann keine Identitäts-Informationen aus Datenbank beziehen";
-$a->strings["Empty name"] = "Namensfeld leer";
-$a->strings["Name too long"] = "Name ist zu lang";
-$a->strings["No account identifier"] = "Keine Account-Kennung";
-$a->strings["Nickname is required."] = "Spitzname ist erforderlich.";
-$a->strings["Reserved nickname. Please choose another."] = "Reservierter Kurzname. Bitte wähle einen anderen.";
-$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt.";
-$a->strings["Unable to retrieve created identity"] = "Kann die erstellte Identität nicht empfangen";
-$a->strings["Default Profile"] = "Standard-Profil";
-$a->strings["Requested channel is not available."] = "Angeforderte Kanal nicht verfügbar.";
-$a->strings["Requested profile is not available."] = "Erwünschte Profil ist nicht verfügbar.";
-$a->strings["Change profile photo"] = "Profilfoto ändern";
-$a->strings["Create New Profile"] = "Neues Profil erstellen";
-$a->strings["Profile Image"] = "Profilfoto:";
-$a->strings["Visible to everybody"] = "Für jeden sichtbar";
-$a->strings["Edit visibility"] = "Sichtbarkeit bearbeiten";
-$a->strings["Gender:"] = "Geschlecht:";
-$a->strings["Status:"] = "Status:";
-$a->strings["Homepage:"] = "Homepage:";
-$a->strings["Online Now"] = "gerade online";
-$a->strings["g A l F d"] = "l, d. F, G:i \\U\\h\\r";
-$a->strings["F d"] = "d. F";
-$a->strings["[today]"] = "[Heute]";
-$a->strings["Birthday Reminders"] = "Geburtstags Erinnerungen";
-$a->strings["Birthdays this week:"] = "Geburtstage in dieser Woche:";
-$a->strings["[No description]"] = "[Keine Beschreibung]";
-$a->strings["Event Reminders"] = "Termin-Erinnerungen";
-$a->strings["Events this week:"] = "Termine in dieser Woche:";
-$a->strings["Full Name:"] = "Voller Name:";
-$a->strings["Like this channel"] = "Dieser Kanal gefällt mir";
-$a->strings["j F, Y"] = "j. F Y";
-$a->strings["j F"] = "j. F";
-$a->strings["Birthday:"] = "Geburtstag:";
-$a->strings["Age:"] = "Alter:";
-$a->strings["for %1\$d %2\$s"] = "seit %1\$d %2\$s";
-$a->strings["Sexual Preference:"] = "Sexuelle Orientierung:";
-$a->strings["Hometown:"] = "Heimatstadt:";
-$a->strings["Tags:"] = "Schlagworte:";
-$a->strings["Political Views:"] = "Politische Ansichten:";
-$a->strings["Religion:"] = "Religion:";
-$a->strings["About:"] = "Über:";
-$a->strings["Hobbies/Interests:"] = "Hobbys/Interessen:";
-$a->strings["Likes:"] = "Gefällt:";
-$a->strings["Dislikes:"] = "Gefällt nicht:";
-$a->strings["Contact information and Social Networks:"] = "Kontaktinformation und soziale Netzwerke:";
-$a->strings["My other channels:"] = "Meine anderen Kanäle:";
-$a->strings["Musical interests:"] = "Musikalische Interessen:";
-$a->strings["Books, literature:"] = "Bücher, Literatur:";
-$a->strings["Television:"] = "Fernsehen:";
-$a->strings["Film/dance/culture/entertainment:"] = "Film/Tanz/Kultur/Unterhaltung:";
-$a->strings["Love/Romance:"] = "Liebe/Romantik:";
-$a->strings["Work/employment:"] = "Arbeit/Anstellung:";
-$a->strings["School/education:"] = "Schule/Ausbildung:";
-$a->strings["Like this thing"] = "Gefällt mir";
-$a->strings["cover photo"] = "Cover Foto";
+$a->strings["Miscellaneous"] = "Verschiedenes";
+$a->strings["Birthday"] = "Geburtstag";
+$a->strings["Age: "] = "Alter:";
+$a->strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-TT oder MM-TT";
+$a->strings["Required"] = "Benötigt";
+$a->strings["never"] = "Nie";
+$a->strings["less than a second ago"] = "Vor weniger als einer Sekunde";
+$a->strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "vor %1\$d %2\$s";
+$a->strings["__ctx:relative_date__ year"] = array(
+ 0 => "Jahr",
+ 1 => "Jahre",
+);
+$a->strings["__ctx:relative_date__ month"] = array(
+ 0 => "Monat",
+ 1 => "Monate",
+);
+$a->strings["__ctx:relative_date__ week"] = array(
+ 0 => "Woche",
+ 1 => "Wochen",
+);
+$a->strings["__ctx:relative_date__ day"] = array(
+ 0 => "Tag",
+ 1 => "Tage",
+);
+$a->strings["__ctx:relative_date__ hour"] = array(
+ 0 => "Stunde",
+ 1 => "Stunden",
+);
+$a->strings["__ctx:relative_date__ minute"] = array(
+ 0 => "Minute",
+ 1 => "Minuten",
+);
+$a->strings["__ctx:relative_date__ second"] = array(
+ 0 => "Sekunde",
+ 1 => "Sekunden",
+);
+$a->strings["%1\$s's birthday"] = "%1\$ss Geburtstag";
+$a->strings["Happy Birthday %1\$s"] = "Alles Gute zum Geburtstag, %1\$s";
$a->strings["Embedded content"] = "Eingebetteter Inhalt";
$a->strings["Embedding disabled"] = "Einbetten ausgeschaltet";
$a->strings["channel"] = "Kanal";
@@ -1024,6 +971,61 @@ $a->strings["male"] = "männlich";
$a->strings["%1\$s updated his %2\$s"] = "%1\$s hat sein %2\$s aktualisiert";
$a->strings["%1\$s updated their %2\$s"] = "%1\$s hat sein/ihr %2\$s aktualisiert";
$a->strings["profile photo"] = "Profilfoto";
+$a->strings["Unable to obtain identity information from database"] = "Kann keine Identitäts-Informationen aus Datenbank beziehen";
+$a->strings["Empty name"] = "Namensfeld leer";
+$a->strings["Name too long"] = "Name ist zu lang";
+$a->strings["No account identifier"] = "Keine Account-Kennung";
+$a->strings["Nickname is required."] = "Spitzname ist erforderlich.";
+$a->strings["Reserved nickname. Please choose another."] = "Reservierter Kurzname. Bitte wähle einen anderen.";
+$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt.";
+$a->strings["Unable to retrieve created identity"] = "Kann die erstellte Identität nicht empfangen";
+$a->strings["Default Profile"] = "Standard-Profil";
+$a->strings["Requested channel is not available."] = "Angeforderte Kanal nicht verfügbar.";
+$a->strings["Requested profile is not available."] = "Erwünschte Profil ist nicht verfügbar.";
+$a->strings["Change profile photo"] = "Profilfoto ändern";
+$a->strings["Create New Profile"] = "Neues Profil erstellen";
+$a->strings["Profile Image"] = "Profilfoto:";
+$a->strings["Visible to everybody"] = "Für jeden sichtbar";
+$a->strings["Edit visibility"] = "Sichtbarkeit bearbeiten";
+$a->strings["Gender:"] = "Geschlecht:";
+$a->strings["Status:"] = "Status:";
+$a->strings["Homepage:"] = "Homepage:";
+$a->strings["Online Now"] = "gerade online";
+$a->strings["g A l F d"] = "l, d. F, G:i \\U\\h\\r";
+$a->strings["F d"] = "d. F";
+$a->strings["[today]"] = "[Heute]";
+$a->strings["Birthday Reminders"] = "Geburtstags Erinnerungen";
+$a->strings["Birthdays this week:"] = "Geburtstage in dieser Woche:";
+$a->strings["[No description]"] = "[Keine Beschreibung]";
+$a->strings["Event Reminders"] = "Termin-Erinnerungen";
+$a->strings["Events this week:"] = "Termine in dieser Woche:";
+$a->strings["Full Name:"] = "Voller Name:";
+$a->strings["Like this channel"] = "Dieser Kanal gefällt mir";
+$a->strings["j F, Y"] = "j. F Y";
+$a->strings["j F"] = "j. F";
+$a->strings["Birthday:"] = "Geburtstag:";
+$a->strings["Age:"] = "Alter:";
+$a->strings["for %1\$d %2\$s"] = "seit %1\$d %2\$s";
+$a->strings["Sexual Preference:"] = "Sexuelle Orientierung:";
+$a->strings["Hometown:"] = "Heimatstadt:";
+$a->strings["Tags:"] = "Schlagworte:";
+$a->strings["Political Views:"] = "Politische Ansichten:";
+$a->strings["Religion:"] = "Religion:";
+$a->strings["About:"] = "Über:";
+$a->strings["Hobbies/Interests:"] = "Hobbys/Interessen:";
+$a->strings["Likes:"] = "Gefällt:";
+$a->strings["Dislikes:"] = "Gefällt nicht:";
+$a->strings["Contact information and Social Networks:"] = "Kontaktinformation und soziale Netzwerke:";
+$a->strings["My other channels:"] = "Meine anderen Kanäle:";
+$a->strings["Musical interests:"] = "Musikalische Interessen:";
+$a->strings["Books, literature:"] = "Bücher, Literatur:";
+$a->strings["Television:"] = "Fernsehen:";
+$a->strings["Film/dance/culture/entertainment:"] = "Film/Tanz/Kultur/Unterhaltung:";
+$a->strings["Love/Romance:"] = "Liebe/Romantik:";
+$a->strings["Work/employment:"] = "Arbeit/Anstellung:";
+$a->strings["School/education:"] = "Schule/Ausbildung:";
+$a->strings["Like this thing"] = "Gefällt mir";
+$a->strings["cover photo"] = "Cover Foto";
$a->strings["Some blurb about what to do when you're new here"] = "Ein Hinweis, was man tun kann, wenn man neu hier ist";
$a->strings["network"] = "Netzwerk";
$a->strings["RSS"] = "RSS";
@@ -1800,50 +1802,48 @@ $a->strings["Sexual Preference"] = "Sexuelle Orientierung";
$a->strings["Homepage"] = "Webseite";
$a->strings["Interests"] = "Hobbys/Interessen";
$a->strings["Profile updated."] = "Profil aktualisiert.";
-$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Deine Kontaktliste vor Betrachtern dieses Profils verbergen?";
+$a->strings["Hide your connections list from viewers of this profile"] = "Deine Verbindungen vor Betrachtern dieses Profils verbergen";
$a->strings["Edit Profile Details"] = "Bearbeite Profil-Details";
$a->strings["View this profile"] = "Dieses Profil ansehen";
-$a->strings["Change Cover Photo"] = "Titelbild ändern";
-$a->strings["Change Profile Photo"] = "Profilfoto ändern";
+$a->strings["Change cover photo"] = "Titelbild ändern";
$a->strings["Create a new profile using these settings"] = "Neues Profil anlegen und diese Einstellungen übernehmen";
$a->strings["Clone this profile"] = "Dieses Profil klonen";
$a->strings["Delete this profile"] = "Dieses Profil löschen";
+$a->strings["Add profile things"] = "Sachen zum Profil hinzufügen";
+$a->strings["Relation"] = "Beziehung";
$a->strings["Import profile from file"] = "Profil aus einer Datei importieren";
$a->strings["Export profile to file"] = "Profil in eine Datei exportieren";
-$a->strings["Profile Name"] = "Profilname";
-$a->strings["Your Full Name"] = "Dein voller Name";
+$a->strings["Your gender"] = "Dein Geschlecht";
+$a->strings["Marital status"] = "Familienstand";
+$a->strings["Sexual preference"] = "Sexuelle Orientierung";
+$a->strings["Profile name"] = "Profilname";
+$a->strings["This is your default profile."] = "Das ist Dein Standardprofil.";
+$a->strings["Your full name"] = "Dein voller Name";
$a->strings["Title/Description"] = "Titel/Beschreibung";
-$a->strings["Your Gender"] = "Dein Geschlecht";
-$a->strings["Birthday"] = "Geburtstag";
-$a->strings["Street Address"] = "Straße und Hausnummer";
+$a->strings["Street address"] = "Straße und Hausnummer";
$a->strings["Locality/City"] = "Wohnort";
-$a->strings["Postal/Zip Code"] = "Postleitzahl";
-$a->strings["Country"] = "Land";
$a->strings["Region/State"] = "Region/Bundesstaat";
-$a->strings["<span class=\"heart\">&hearts;</span> Marital Status"] = "<span class=\"heart\">&hearts;</span> Beziehungsstatus";
+$a->strings["Postal/Zip code"] = "Postleitzahl";
+$a->strings["Country"] = "Land";
$a->strings["Who (if applicable)"] = "Wer (falls anwendbar)";
$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Beispiele: cathy123, Cathy Williams, cathy@example.com";
-$a->strings["Since [date]"] = "Seit [Datum]";
+$a->strings["Since (date)"] = "Seit (Datum)";
+$a->strings["Tell us about yourself"] = "Erzähle uns ein wenig von Dir";
$a->strings["Hometown"] = "Heimatort";
-$a->strings["Religious Views"] = "Religiöse Ansichten";
+$a->strings["Political views"] = "Politische Ansichten";
+$a->strings["Religious views"] = "Religiöse Ansichten";
+$a->strings["Keywords used in directory listings"] = "Schlüsselwörter, die in Verzeichnis-Auflistungen verwendet werden";
$a->strings["Example: fishing photography software"] = "Beispiel: Angeln Fotografie Software";
-$a->strings["Used in directory listings"] = "Wird in Verzeichnis-Auflistungen verwendet";
-$a->strings["Tell us about yourself..."] = "Erzähle uns ein wenig von Dir …";
-$a->strings["Hobbies/Interests"] = "Hobbys/Interessen";
-$a->strings["Contact information and Social Networks"] = "Kontaktinformation und soziale Netzwerke";
-$a->strings["My other channels"] = "Meine anderen Kanäle";
$a->strings["Musical interests"] = "Musikalische Interessen";
$a->strings["Books, literature"] = "Bücher, Literatur";
$a->strings["Television"] = "Fernsehen";
-$a->strings["Film/dance/culture/entertainment"] = "Film/Tanz/Kultur/Unterhaltung";
-$a->strings["Love/romance"] = "Liebe/Romantik";
-$a->strings["Work/employment"] = "Arbeit/Anstellung";
-$a->strings["School/education"] = "Schule/Ausbildung";
-$a->strings["This is your default profile."] = "Das ist Dein Standardprofil.";
-$a->strings["Age: "] = "Alter:";
-$a->strings["Edit/Manage Profiles"] = "Profile bearbeiten/verwalten";
-$a->strings["Add profile things"] = "Sachen zum Profil hinzufügen";
-$a->strings["Include desirable objects in your profile"] = "Binde begehrenswerte Dinge in Dein Profil ein";
+$a->strings["Film/Dance/Culture/Entertainment"] = "Film/Tanz/Kultur/Unterhaltung";
+$a->strings["Hobbies/Interests"] = "Hobbys/Interessen";
+$a->strings["Love/Romance"] = "Liebe/Romantik";
+$a->strings["School/Education"] = "Schule/Ausbildung";
+$a->strings["Contact information and social networks"] = "Kontaktinformation und soziale Netzwerke";
+$a->strings["My other channels"] = "Meine anderen Kanäle";
+$a->strings["Create New"] = "Ein neues erstellen";
$a->strings["Invalid profile identifier."] = "Ungültiger Profil-Identifikator";
$a->strings["Profile Visibility Editor"] = "Profil-Sichtbarkeits-Editor";
$a->strings["Click on a contact to add or remove."] = "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen.";
diff --git a/view/tpl/xrd_person.tpl b/view/tpl/xrd_person.tpl
index 754eb3944..93fdcb1df 100755
--- a/view/tpl/xrd_person.tpl
+++ b/view/tpl/xrd_person.tpl
@@ -2,7 +2,10 @@
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
<Subject>{{$accturi}}</Subject>
-
+ {{if $aliases}}{{foreach $aliases as $a}}
+ <Alias>{{$a}}</Alias>
+ {{/foreach}}{{/if}}
+
<Link rel="http://schemas.google.com/g/2010#updates-from"
type="application/atom+xml"
href="{{$atom}}" />