aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Case <kahotep@bunda.dreamhost.com>2011-05-21 21:40:16 -0700
committerChris Case <kahotep@bunda.dreamhost.com>2011-05-21 21:40:16 -0700
commit4cff911939b263993eb41682ca558c975e2db01f (patch)
tree78f58e08d04413827744689d0f5df7660bee6caa
parent2cf696d0b5d647e1741d2f94ee379aa19b25ae1b (diff)
parentf3f063c0dd7fd8b706987b856d79c7b58924acbb (diff)
downloadvolse-hubzilla-4cff911939b263993eb41682ca558c975e2db01f.tar.gz
volse-hubzilla-4cff911939b263993eb41682ca558c975e2db01f.tar.bz2
volse-hubzilla-4cff911939b263993eb41682ca558c975e2db01f.zip
merged multipart email changes
-rw-r--r--.gitignore2
-rw-r--r--.htaccess1
-rw-r--r--README198
-rw-r--r--addon/facebook/facebook.php597
-rw-r--r--addon/oembed/oembed.php8
-rw-r--r--addon/statusnet/statusnet.css19
-rw-r--r--addon/statusnet/statusnet.php62
-rw-r--r--addon/twitter/twitter.php2
-rw-r--r--addon/widgets/widget_friends.php32
-rw-r--r--addon/widgets/widget_like.php22
-rw-r--r--addon/widgets/widgets.js64
-rw-r--r--addon/widgets/widgets.php168
-rw-r--r--boot.php481
-rw-r--r--database.sql61
-rw-r--r--doc/Account-Basics.md66
-rw-r--r--doc/Bugs-and-Issues.md30
-rw-r--r--doc/Connectors.md63
-rw-r--r--doc/Developers.md22
-rw-r--r--doc/Groups-and-Privacy.md36
-rw-r--r--doc/Home.md36
-rw-r--r--doc/Install.md97
-rw-r--r--doc/Installing-Connectors.md154
-rw-r--r--doc/Making-Friends.md50
-rw-r--r--doc/Message-Flow.md54
-rw-r--r--doc/Pages.md28
-rw-r--r--doc/Plugins.md289
-rw-r--r--doc/Profiles.md51
-rw-r--r--doc/Remove-Account.md13
-rw-r--r--doc/Settings.md237
-rw-r--r--doc/Sites-running-Friendika-you-can-join.md7
-rw-r--r--doc/Tags-and-Mentions.md37
-rw-r--r--doc/developer18
-rw-r--r--htconfig.php2
-rw-r--r--images/article.gifbin0 -> 1060 bytes
-rw-r--r--images/audio.gifbin0 -> 559 bytes
-rw-r--r--images/friendika-1600.pngbin0 -> 286517 bytes
-rw-r--r--images/icons.pngbin0 -> 8426 bytes
-rw-r--r--images/pencil.gifbin0 -> 553 bytes
-rw-r--r--images/recycle.gifbin0 -> 612 bytes
-rw-r--r--images/remote-link.gifbin357 -> 237 bytes
-rw-r--r--images/share.gifbin0 -> 155 bytes
-rw-r--r--images/spencil.gifbin0 -> 497 bytes
-rw-r--r--images/tools.pngbin0 -> 490 bytes
-rw-r--r--images/video.gifbin0 -> 257 bytes
-rw-r--r--include/Contact.php5
-rw-r--r--include/Photo.php12
-rw-r--r--include/Scrape.php288
-rw-r--r--include/acl_selectors.php13
-rw-r--r--include/api.php431
-rw-r--r--include/auth.php21
-rw-r--r--include/bbcode.php17
-rw-r--r--include/conversation.php755
-rw-r--r--include/dba.php19
-rw-r--r--include/email.php201
-rw-r--r--include/expire.php44
-rw-r--r--include/fcontact.php41
-rw-r--r--include/group.php24
-rw-r--r--include/hostxrd.php4
-rw-r--r--include/items.php288
-rw-r--r--include/main.js103
-rw-r--r--include/nav.php68
-rw-r--r--include/notifier.php137
-rw-r--r--include/pgettext.php46
-rw-r--r--include/poller.php217
-rw-r--r--include/profile_advanced.php (renamed from view/it/profile_advanced.php)106
-rw-r--r--include/salmon.php2
-rw-r--r--include/security.php2
-rw-r--r--include/template_processor.php137
-rw-r--r--index.php25
-rw-r--r--library/markdown.php3042
-rw-r--r--mod/api.php11
-rw-r--r--mod/apps.php3
-rw-r--r--mod/contacts.php47
-rw-r--r--mod/crepair.php105
-rw-r--r--mod/dfrn_confirm.php29
-rw-r--r--mod/dfrn_notify.php69
-rw-r--r--mod/dfrn_poll.php148
-rw-r--r--mod/dfrn_request.php52
-rw-r--r--mod/directory.php41
-rw-r--r--mod/display.php199
-rw-r--r--mod/editpost.php120
-rw-r--r--mod/follow.php208
-rw-r--r--mod/friendika.php68
-rw-r--r--mod/group.php127
-rw-r--r--mod/help.php37
-rw-r--r--mod/home.php2
-rw-r--r--mod/install.php76
-rw-r--r--mod/invite.php18
-rw-r--r--mod/item.php185
-rw-r--r--mod/like.php16
-rw-r--r--mod/lostpass.php41
-rw-r--r--mod/manage.php2
-rw-r--r--mod/match.php57
-rw-r--r--mod/message.php23
-rw-r--r--mod/network.php438
-rw-r--r--mod/notes.php129
-rw-r--r--mod/notifications.php31
-rw-r--r--mod/oexchange.php53
-rw-r--r--mod/openid.php11
-rw-r--r--mod/opensearch.php18
-rw-r--r--mod/parse_url.php12
-rw-r--r--mod/photo.php11
-rw-r--r--mod/photos.php176
-rw-r--r--mod/ping.php2
-rw-r--r--mod/profile.php294
-rw-r--r--mod/profile_photo.php37
-rw-r--r--mod/profiles.php78
-rw-r--r--mod/profperm.php141
-rw-r--r--mod/redir.php5
-rw-r--r--mod/register.php52
-rw-r--r--mod/regmod.php11
-rw-r--r--mod/removeme.php2
-rw-r--r--mod/rsd_xml.php24
-rw-r--r--mod/salmon.php2
-rw-r--r--mod/search.php89
-rw-r--r--mod/settings.php175
-rw-r--r--mod/share.php23
-rw-r--r--mod/uexport.php72
-rw-r--r--mod/update_network.php11
-rw-r--r--mod/update_profile.php10
-rw-r--r--mod/viewcontacts.php15
-rw-r--r--mod/wall_upload.php2
-rw-r--r--mod/xrd.php2
-rw-r--r--update.php105
-rw-r--r--util/.htaccess5
-rw-r--r--util/README78
-rw-r--r--util/extract.php47
-rw-r--r--util/messages.po3429
-rw-r--r--util/php2po.php71
-rw-r--r--util/po2php.php115
-rwxr-xr-xutil/run_xgettext.sh37
-rw-r--r--util/string_translator.php2
-rw-r--r--util/strings.php444
-rw-r--r--util/typo.php11
-rw-r--r--util/typohelper.php11
-rw-r--r--view/api_timeline_atom.tpl39
-rw-r--r--view/api_timeline_rss.tpl21
-rw-r--r--view/api_timeline_xml.tpl21
-rw-r--r--view/api_user_xml.tpl46
-rw-r--r--view/comment_item.tpl4
-rw-r--r--view/contact_edit.tpl (renamed from view/en/contact_edit.tpl)30
-rw-r--r--view/contact_template.tpl2
-rw-r--r--view/crepair.tpl34
-rw-r--r--view/cropbody.tpl (renamed from view/en/cropbody.tpl)9
-rw-r--r--view/de/contact_edit.tpl86
-rw-r--r--view/de/cropbody.tpl58
-rw-r--r--view/de/dfrn_req_confirm.tpl17
-rw-r--r--view/de/directory_header.tpl14
-rw-r--r--view/de/group_edit.tpl24
-rw-r--r--view/de/group_new.tpl23
-rw-r--r--view/de/head.tpl31
-rw-r--r--view/de/htconfig.tpl2
-rw-r--r--view/de/insecure_net.tpl8
-rw-r--r--view/de/install_db.tpl40
-rw-r--r--view/de/intros-top.tpl7
-rw-r--r--view/de/lostpass.tpl18
-rw-r--r--view/de/messages.po3600
-rw-r--r--view/de/msg-header.tpl104
-rw-r--r--view/de/pagetypes.tpl25
-rw-r--r--view/de/profile-hide-friends.tpl16
-rw-r--r--view/de/profile-in-directory.tpl16
-rw-r--r--view/de/profile-in-netdir.tpl16
-rw-r--r--view/de/profile.php72
-rw-r--r--view/de/profile_advanced.php226
-rw-r--r--view/de/profile_entry_default.tpl9
-rw-r--r--view/de/profile_listing_header.tpl8
-rw-r--r--view/de/profile_photo.tpl18
-rw-r--r--view/de/profile_tabs.tpl7
-rw-r--r--view/de/pwdreset.tpl16
-rw-r--r--view/de/registrations-top.tpl3
-rw-r--r--view/de/settings.tpl163
-rw-r--r--view/de/settings_nick_set.tpl9
-rw-r--r--view/de/settings_nick_subdir.tpl9
-rw-r--r--view/de/settings_nick_unset.tpl16
-rw-r--r--view/de/strings.php1924
-rw-r--r--view/dfrn_req_confirm.tpl (renamed from view/en/dfrn_req_confirm.tpl)6
-rw-r--r--view/dfrn_request.tpl1
-rw-r--r--view/directory_header.tpl (renamed from view/it/directory_header.tpl)5
-rw-r--r--view/en/directory_header.tpl14
-rw-r--r--view/en/htconfig.tpl2
-rw-r--r--view/en/insecure_net.tpl6
-rw-r--r--view/en/install_db.tpl40
-rw-r--r--view/en/intros-top.tpl7
-rw-r--r--view/en/lostpass.tpl18
-rw-r--r--view/en/msg-header.tpl104
-rw-r--r--view/en/profile-in-directory.tpl16
-rw-r--r--view/en/profile-in-netdir.tpl16
-rw-r--r--view/en/profile.php72
-rw-r--r--view/en/profile_advanced.php225
-rw-r--r--view/en/profile_edit.tpl293
-rw-r--r--view/en/profile_entry_default.tpl9
-rw-r--r--view/en/profile_listing_header.tpl8
-rw-r--r--view/en/profile_photo.tpl18
-rw-r--r--view/en/pwdreset.tpl16
-rw-r--r--view/en/register_open_eml.tpl15
-rw-r--r--view/en/registrations-top.tpl3
-rw-r--r--view/en/registrations.tpl1
-rw-r--r--view/en/settings.tpl163
-rw-r--r--view/en/settings_nick_set.tpl9
-rw-r--r--view/en/settings_nick_unset.tpl14
-rw-r--r--view/es/cmnt_received_eml.tpl18
-rw-r--r--view/es/follow_notify_eml.tpl13
-rw-r--r--view/es/friend_complete_eml.tpl19
-rw-r--r--view/es/htconfig.tpl73
-rw-r--r--view/es/intro_complete_eml.tpl21
-rw-r--r--view/es/lostpass_eml.tpl34
-rw-r--r--view/es/mail_received_html_body_eml.tpl24
-rw-r--r--view/es/mail_received_text_body_eml.tpl9
-rw-r--r--view/es/messages.po2636
-rw-r--r--view/es/passchanged_eml.tpl19
-rw-r--r--view/es/register_open_eml.tpl21
-rw-r--r--view/es/register_verify_eml.tpl22
-rw-r--r--view/es/request_notify_eml.tpl13
-rw-r--r--view/es/strings.php579
-rw-r--r--view/es/wall_received_eml.tpl18
-rw-r--r--view/fr/contact_edit.tpl83
-rw-r--r--view/fr/cropbody.tpl57
-rw-r--r--view/fr/dfrn_req_confirm.tpl17
-rw-r--r--view/fr/directory_header.tpl14
-rw-r--r--view/fr/group_edit.tpl24
-rw-r--r--view/fr/group_new.tpl23
-rw-r--r--view/fr/head.tpl32
-rw-r--r--view/fr/htconfig.tpl2
-rw-r--r--view/fr/insecure_net.tpl6
-rw-r--r--view/fr/install_db.tpl40
-rw-r--r--view/fr/intro_complete_eml.tpl26
-rw-r--r--view/fr/intros-top.tpl7
-rw-r--r--view/fr/jot-header.tpl141
-rw-r--r--view/fr/lostpass_eml.tpl35
-rw-r--r--view/fr/messages.po4049
-rw-r--r--view/fr/pagetypes.tpl25
-rw-r--r--view/fr/passchanged_eml.tpl25
-rw-r--r--view/fr/profile-hide-friends.tpl16
-rw-r--r--view/fr/profile.php72
-rw-r--r--view/fr/profile_advanced.php226
-rw-r--r--view/fr/profile_edit.tpl293
-rw-r--r--view/fr/profile_entry_default.tpl9
-rw-r--r--view/fr/profile_listing_header.tpl8
-rw-r--r--view/fr/profile_tabs.tpl7
-rw-r--r--view/fr/pwdreset.tpl16
-rw-r--r--view/fr/register_open_eml.tpl26
-rw-r--r--view/fr/register_verify_eml.tpl21
-rw-r--r--view/fr/registrations-top.tpl3
-rw-r--r--view/fr/registrations.tpl1
-rw-r--r--view/fr/request_notify_eml.tpl16
-rw-r--r--view/fr/settings.tpl163
-rw-r--r--view/fr/settings_nick_subdir.tpl6
-rw-r--r--view/fr/settings_nick_unset.tpl14
-rw-r--r--view/fr/strings.php1815
-rw-r--r--view/fr/wall_received_eml.tpl10
-rw-r--r--view/group_drop.tpl11
-rw-r--r--view/group_edit.tpl (renamed from view/en/group_edit.tpl)14
-rw-r--r--view/group_new.tpl (renamed from view/en/group_new.tpl)6
-rw-r--r--view/head.tpl (renamed from view/en/head.tpl)12
-rw-r--r--view/install_db.tpl (renamed from view/it/install_db.tpl)16
-rw-r--r--view/it/contact_edit.tpl80
-rw-r--r--view/it/cropbody.tpl57
-rw-r--r--view/it/dfrn_req_confirm.tpl17
-rw-r--r--view/it/group_edit.tpl24
-rw-r--r--view/it/group_new.tpl23
-rw-r--r--view/it/head.tpl32
-rw-r--r--view/it/htconfig.tpl2
-rw-r--r--view/it/insecure_net.tpl6
-rw-r--r--view/it/intros-top.tpl7
-rw-r--r--view/it/jot-header.tpl142
-rw-r--r--view/it/lostpass.tpl18
-rw-r--r--view/it/messages.po3667
-rw-r--r--view/it/msg-header.tpl104
-rw-r--r--view/it/pagetypes.tpl25
-rw-r--r--view/it/profile-hide-friends.tpl16
-rw-r--r--view/it/profile-in-directory.tpl16
-rw-r--r--view/it/profile-in-netdir.tpl16
-rw-r--r--view/it/profile.php72
-rw-r--r--view/it/profile_edit.tpl293
-rw-r--r--view/it/profile_entry_default.tpl9
-rw-r--r--view/it/profile_listing_header.tpl8
-rw-r--r--view/it/profile_photo.tpl18
-rw-r--r--view/it/profile_tabs.tpl7
-rw-r--r--view/it/pwdreset.tpl16
-rw-r--r--view/it/registrations-top.tpl3
-rw-r--r--view/it/registrations.tpl1
-rw-r--r--view/it/settings.tpl164
-rw-r--r--view/it/settings_nick_set.tpl9
-rw-r--r--view/it/settings_nick_subdir.tpl7
-rw-r--r--view/it/settings_nick_unset.tpl15
-rw-r--r--view/it/strings.php1917
-rw-r--r--view/jot-header.tpl (renamed from view/en/jot-header.tpl)64
-rw-r--r--view/jot.tpl34
-rw-r--r--view/like.tpl5
-rw-r--r--view/like_noshare.tpl5
-rw-r--r--view/lostpass.tpl (renamed from view/fr/lostpass.tpl)8
-rw-r--r--view/mail_list.tpl5
-rw-r--r--view/msg-header.tpl (renamed from view/fr/msg-header.tpl)2
-rw-r--r--view/nav.tpl44
-rw-r--r--view/oexchange_xrd.tpl33
-rw-r--r--view/opensearch.tpl13
-rw-r--r--view/pagetypes.tpl (renamed from view/en/pagetypes.tpl)16
-rw-r--r--view/photo_item.tpl2
-rw-r--r--view/photo_view.tpl37
-rw-r--r--view/profed_head.tpl17
-rw-r--r--view/profile-hide-friends.tpl (renamed from view/en/profile-hide-friends.tpl)6
-rw-r--r--view/profile-in-directory.tpl (renamed from view/fr/profile-in-directory.tpl)6
-rw-r--r--view/profile-in-netdir.tpl (renamed from view/fr/profile-in-netdir.tpl)6
-rw-r--r--view/profile_edit.tpl (renamed from view/de/profile_edit.tpl)90
-rw-r--r--view/profile_entry.tpl1
-rw-r--r--view/profile_listing_header.tpl8
-rw-r--r--view/profile_photo.tpl (renamed from view/fr/profile_photo.tpl)8
-rw-r--r--view/profile_tabs.tpl (renamed from view/en/profile_tabs.tpl)6
-rw-r--r--view/prv_message.tpl6
-rw-r--r--view/pwdreset.tpl17
-rw-r--r--view/register.tpl2
-rw-r--r--view/search_item.tpl22
-rw-r--r--view/settings.tpl207
-rw-r--r--view/settings_nick_set.tpl (renamed from view/fr/settings_nick_set.tpl)4
-rw-r--r--view/settings_nick_subdir.tpl (renamed from view/en/settings_nick_subdir.tpl)0
-rw-r--r--view/sv/cmnt_received_eml.tpl7
-rw-r--r--view/sv/contact_edit.tpl81
-rw-r--r--view/sv/follow_notify_eml.tpl12
-rw-r--r--view/sv/friend_complete_eml.tpl17
-rw-r--r--view/sv/htconfig.tpl74
-rw-r--r--view/sv/intro_complete_eml.tpl19
-rw-r--r--view/sv/lostpass_eml.tpl29
-rw-r--r--view/sv/mail_received_html_body_eml.tpl25
-rw-r--r--view/sv/mail_received_text_body_eml.tpl10
-rw-r--r--view/sv/passchanged_eml.tpl18
-rw-r--r--view/sv/register_open_eml.tpl17
-rw-r--r--view/sv/register_verify_eml.tpl17
-rw-r--r--view/sv/request_notify_eml.tpl13
-rw-r--r--view/sv/strings.php901
-rw-r--r--view/sv/wall_received_eml.tpl16
-rw-r--r--view/theme/darkzero/border.jpgbin0 -> 521 bytes
-rw-r--r--view/theme/darkzero/head.jpgbin0 -> 1269 bytes
-rw-r--r--view/theme/darkzero/sectionend.jpgbin0 -> 355 bytes
-rw-r--r--view/theme/darkzero/shiny.pngbin0 -> 362 bytes
-rw-r--r--view/theme/darkzero/style.css64
-rw-r--r--view/theme/dispy/connect.pngbin0 -> 443 bytes
-rw-r--r--view/theme/dispy/icons.pngbin0 -> 16306 bytes
-rw-r--r--view/theme/dispy/jot-header.tpl (renamed from view/de/jot-header.tpl)68
-rw-r--r--view/theme/dispy/jot.tpl72
-rw-r--r--view/theme/dispy/mail_head.tpl7
-rw-r--r--view/theme/dispy/menu-user-pin.jpgbin0 -> 385 bytes
-rw-r--r--view/theme/dispy/nav.tpl51
-rw-r--r--view/theme/dispy/next.pngbin0 -> 891 bytes
-rw-r--r--view/theme/dispy/notifications.pngbin0 -> 2253 bytes
-rw-r--r--view/theme/dispy/photo_view.tpl40
-rw-r--r--view/theme/dispy/prev.pngbin0 -> 853 bytes
-rw-r--r--view/theme/dispy/profile_tabs.tpl7
-rw-r--r--view/theme/dispy/search_item.tpl40
-rw-r--r--view/theme/dispy/settings.tpl212
-rw-r--r--view/theme/dispy/style.css797
-rw-r--r--view/theme/dispy/wall_item.tpl47
-rw-r--r--view/theme/dispy/wallwall_item.tpl51
-rw-r--r--view/theme/duepuntozero/photo-menu.jpgbin0 -> 459 bytes
-rw-r--r--view/theme/duepuntozero/style.css363
-rw-r--r--view/theme/greenzero/style.css2
-rw-r--r--view/theme/loozah/photo-menu.jpgbin0 -> 464 bytes
-rw-r--r--view/theme/loozah/style.css336
-rw-r--r--view/wall_item.tpl20
-rw-r--r--view/wall_item_drop.tpl6
-rw-r--r--view/wallwall_item.tpl18
-rw-r--r--view/xrd_host.tpl9
361 files changed, 35985 insertions, 10744 deletions
diff --git a/.gitignore b/.gitignore
index 10a7187cf..9b3b23a00 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+favicon.*
.htconfig.php
\#*
wip/*
@@ -6,4 +7,5 @@ include/jquery-1.4.2.min.js
*.out
*.version*
push*
+langup
home.html
diff --git a/.htaccess b/.htaccess
index b06dd8bdc..fe09fc522 100644
--- a/.htaccess
+++ b/.htaccess
@@ -1,4 +1,3 @@
-
Options -Indexes
AddType application/x-java-archive .jar
AddType audio/ogg .oga
diff --git a/README b/README
index 36bd01792..dc5a176d2 100644
--- a/README
+++ b/README
@@ -1,132 +1,74 @@
- *********
- Friendika
- *********
-
- Distributed Social Network
-
- http://friendika.com
-
-
- Since the dawn of the world-wide-web, the internet has been a battleground
-between the "big boys" with all their resources, and a bunch of upstarts whose
-goal is to topple the status quo - and bring the same powers of global reach
-to anybody with a computer and an internet connection.
-
- The latest battleground is social networking. Many of your friends would
-have you believe that the world (and all the information in it) belongs to
-Facebook.
-
- Friendika is here to rock that boat.
-
- Granted, all your friends aren't here - yet. The people who made fun of you
-in high school (yet curiously wanted to be friends with you now) are still
-"poking" each other and managing their virtual farms and telling you all about
-their virtual gang wars. Would you miss them?
-
- I wouldn't.
-
- You probably have a handful of friends that are truly special. Tell those
-friends that the world has changed - because it has. It's time to move on. A
-year ago, if you had left Facebook, there was no place to go - at least a
-place which offered the same kind of social interaction (and wasn't just
-another huge company trying to make money off of all of your private
-information).
-
- Today you have options.
-
- What if there was a social network which provided some of the same
-interaction you've grown to love, *and* was free to use, *and* was open source,
-*and* where your privacy is always under your control?
-
- And what if this social network could scale to encompass the entire
-internet, and *not* require a central organisation to provide servers?
-(In exchange for peddling your private information behind your back.)
-
- Look no further.
-
- Friendika is a social network without boundaries, and without ownership.
-Friendika installations can link together into a global social network which
-is free from central control. Besides the Friendika network (which is privacy
-enhanced); you can also connect with and communicate with friends on identi.ca,
-Status.Net and many other sites and social networks *today*.
-
- Welcome to the federated social web. If you choose not to use Friendika
-(though we think you'd be foolish not to), you can choose any of 20-30 other
-providers of federated social networking software and still be a part of this
-vast new social network. This is going to be bigger than Facebook.
-
- Much bigger.
-
- We are currently developing connectors to seamlessly communicate with many
-other open social networks and providers - like Diaspora, GNU-Social,
-OneSocialWeb, and even some of the larger closed services such as Facebook and
-Twitter.
-
- Over the coming months, the boundaries between these networks will start
-to become indistinguishable as they all become part of your social circle.
-
- Our core belief is that your personal thoughts and conversations belong to
-you - and are only meant to be shared with those you wish to share them with.
-
- Period.
-
- Friendika is secure, and as private as you wish it to be. Our privacy
-settings are straight-forward and simple, because we know that relationships
-rarely are (straight-forward and simple). Whether you're communicating with
-drinking buddies or potential employers, you can rest assured that each is
-only able to see the side of you that you wish to present. If you send a
-private message to your aunt Mary, we will encrypt it with military grade
-encryption.
-
- Other distributed social network projects talk about privacy and offering
-a feature-rich social networking alternative, but all they can deliver is
-vapour and vague promises. Things like "Private mail will be in the next
-release".
-
- Friendika delivers. We've got an incredibly rich social communications
-interface you can make use of *right now*.
-
- And lest you think we're just trying to copy Facebook feature-for-feature,
-you couldn't be further from the truth. We like the conversational style
-because it feels natural, and that's why Facebook grew to be what it is today.
-But we're creating something completely different.
-
- Something better.
-
- A single instance of Friendika can easily support hundreds of (and up to
-several thousand) people using commodity hosting hardware. You could even run
-Friendika on an old PC in your closet or garage. Each of these people are able
-to connect with potentially hundreds or thousands of friends and associates
-on any other supported network anywhere in the world and share photos, links,
-status updates, etc.
-
- But maybe you don't want to be connected to the world... and that's OK
-too. Friendika may be closed off from the global community and used to support
-social networking amongst corporate, educational, religious, and other private
-communities. This makes it an excellent choice for the social networking needs
-of young teenagers and especially k-12 organisations.
-
- Every person on Friendika has unlimited profiles available to them. There
-is a "public profile" which can be seen by anybody. Additional profiles may be
-tailored to specific groups or individuals. Try doing that on Twitter.
-
- Groups may be created and used for closed conversations. In this way your
-conversations with one group of friends is completely isolated from other
-friends or groups of friends.
-
- You may also create interactive band/celebrity pages, special interest
-groups, and even organisational 'soapboxes' - for social communications that
-require the ability to scale to global levels. Friendika provides for automatic
-relationship management in these extreme cases so that you can concentrate on
-your message and public persona - and not worry about being swamped by friend
-requests. You can even maintain private social contact with your closest
-friends and public updates to your hordes of fans - using the same interface.
-
- No other social network offers this ability.
-
-
- Join us.
+ *************
+ * Friendika *
+ *************
+
+ Friendika Communications Server
+
+ http://project.friendika.com
+
+
+ Friendika is a web application for managing social communications. Some
+would call it a "social network" or "distributed social network". We think
+both terms have been over-used, and don't adequately describe Friendika's
+capabilities - though Friendika can also fill those roles.
+
+ At its essence, Friendika is a web application which can monitor various
+information and social activity streams, and which also lets you participate
+in online conversations with friends and associates, using a variety of network
+protocols. These are combined into an overview of your various communications
+and activities - regardless of network origin.
+
+ Friendika also manages your personal profiles and photo albums and lets
+you securely present each of these to specific audiences. Your communications
+can be either open and public, or closed and private. You can easily create
+"groups" of contacts with which you can partition your conversations into
+private social circles, and which cannot be seen outside the circle.
+
+ Friendika is decentralised. Any account on any Friendika server can connect
+with any account on any other Friendika server. You can also connect to and
+interact directly with friends on Status.Net and other federated social web
+services (e.g. identi.ca, GNU-Social, etc.).
+
+ Outgoing communications can be directed at these networks and also
+existing accounts on Facebook and Twitter - or even delivered to email
+contacts.
+
+ Incoming data streams aren't limited to traditional social networks.
+They may include most any service which provides a syndication feed (both RSS
+and Atom). This allows you to view communications from friends in other
+diverse social networks - such as Diaspora, Google Buzz, and millions of
+blogs, news services, and other websites. You can also import
+contacts from (and write to) anybody that is accessible from your email
+INBOX and view them in your social stream. Over time we will try to
+build two-way bridges to other services so that you can freely
+interact in both directions with anybody on an accessible network that
+allows it.
+
+ Communications between Friendika servers are private and encrypted,
+using military grade encryption - and require mutual identity provenance
+before any data is exchanged. These same crypto mechanisms provide remote
+password-less authentication; allowing you to post to profiles and view private
+photo collections on other servers - without encountering any login and/or
+authorisation dialogues when visiting these sites.
+
+ Friendika has no boundaries and no central ownership of the data generated
+within the network. Anybody with a commodity PHP/MySQL web server or hosting
+account can provide a server, and each individual server can then support
+up to several thousand participating members - each with their own unique
+communication and privacy needs. This allows Friendika to scale to global
+levels and mimics the decentralised architecture of the web itself.
+
+ If you are creating a website which requires social interaction, Friendika
+can also take the place of blog software, forum software and feed readers, and
+also provide individualised communications and content management - or
+simply be used as an alternative to traditional "monolithic" social networks.
+
+ Friendika is also free - in every sense of the word.
+
+ Choose freedom - join us.
+
+ Find out more about the project at http://project.friendika.com
*******************
Friendika Demo Site
diff --git a/addon/facebook/facebook.php b/addon/facebook/facebook.php
index edfc5a374..667b2ce6f 100644
--- a/addon/facebook/facebook.php
+++ b/addon/facebook/facebook.php
@@ -1,17 +1,13 @@
<?php
/**
- * This module still needs a lot of work, but is functional today.
- * Please review this section if you upgrade because things will change.
- * If you have issues upgrading, remove facebook from the addon list,
- * view a page on your site, then add it back to the list. This will reset
- * all of the plugin 'hooks'.
+ * Installing the Friendika/Facebook connector
*
* 1. register an API key for your site from developer.facebook.com
* a. We'd be very happy if you include "Friendika" in the application name
* to increase name recognition. The Friendika icons are also present
* in the images directory and may be uploaded as a Facebook app icon.
- * Use images/ff-16.jpg for the Icon and images/ff-128.jpg for the Logo.
+ * Use images/friendika-16.jpg for the Icon and images/friendika-128.jpg for the Logo.
* b. The url should be your site URL with a trailing slash.
* You may use http://portal.friendika.com/privacy as the privacy policy
* URL unless your site has different requirements, and
@@ -24,20 +20,20 @@
* Replace with the settings Facebook gives you.
* 2. Enable the facebook plugin by including it in .htconfig.php - e.g.
* $a->config['system']['addon'] = 'plugin1,plugin2,facebook';
- * 3. Visit your site url + '/facebook' (e.g. http://example.com/facebook)
- * and click 'Install Facebook posting'.
+ * 3. Visit the Facebook Settings section of the "Settings->Plugin Settings" page.
+ * and click 'Install Facebook Connector'.
* 4. This will ask you to login to Facebook and grant permission to the
* plugin to do its stuff. Allow it to do so.
- * 5. You're done. To turn it off visit your site's /facebook page again and
+ * 5. You're done. To turn it off visit the Plugin Settings page again and
* 'Remove Facebook posting'.
*
- * Turn logging on (see the github Friendika wiki page 'Settings') and
- * repeat these steps if you have trouble.
* Vidoes and embeds will not be posted if there is no other content. Links
- * and images will be converted to text and long posts truncated - with a link
- * to view the full post. Posts with permission settings and comments will
- * not be posted to Facebook.
+ * and images will be converted to a format suitable for the Facebook API and
+ * long posts truncated - with a link to view the full post.
*
+ * Facebook contacts will not be able to view private photos, as they are not able to
+ * authenticate to your site to establish identity. We will address this
+ * in a future release.
*/
define('FACEBOOK_MAXPOSTLEN', 420);
@@ -88,6 +84,10 @@ function facebook_init(&$a) {
$token = substr($token,0,strpos($token,'&'));
set_pconfig($uid,'facebook','access_token',$token);
set_pconfig($uid,'facebook','post','1');
+ fb_get_self($uid);
+ fb_get_friends($uid);
+ fb_consume_all($uid);
+
}
// todo: is this a browser session or a server session? where do we go?
@@ -95,6 +95,138 @@ function facebook_init(&$a) {
}
+
+function fb_get_self($uid) {
+ $access_token = get_pconfig($uid,'facebook','access_token');
+ if(! $access_token)
+ return;
+ $s = fetch_url('https://graph.facebook.com/me/?access_token=' . $access_token);
+ if($s) {
+ $j = json_decode($s);
+ set_pconfig($uid,'facebook','self_id',(string) $j->id);
+ }
+}
+
+
+
+function fb_get_friends($uid) {
+
+ $access_token = get_pconfig($uid,'facebook','access_token');
+ if(! $access_token)
+ return;
+ $s = fetch_url('https://graph.facebook.com/me/friends?access_token=' . $access_token);
+ if($s) {
+ logger('facebook: fb_get_friends: ' . $s, LOGGER_DATA);
+ $j = json_decode($s);
+ logger('facebook: fb_get_friends: json: ' . print_r($j,true), LOGGER_DATA);
+ foreach($j->data as $person) {
+ $s = fetch_url('https://graph.facebook.com/' . $person->id . '?access_token=' . $access_token);
+ if($s) {
+ $jp = json_decode($s);
+ logger('fb_get_friends: info: ' . print_r($jp,true), LOGGER_DATA);
+
+ // always use numeric link for consistency
+
+ $jp->link = 'http://facebook.com/profile.php?id=' . $person->id;
+
+ // check if we already have a contact
+
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' LIMIT 1",
+ intval($uid),
+ dbesc($jp->link)
+ );
+
+ if(count($r)) {
+
+ // check that we have all the photos, this has been known to fail on occasion
+
+ if((! $r[0]['photo']) || (! $r[0]['thumb']) || (! $r[0]['micro'])) {
+ require_once("Photo.php");
+
+ $photos = import_profile_photo('https://graph.facebook.com/' . $jp->id . '/picture', $uid, $r[0]['id']);
+
+ $r = q("UPDATE `contact` SET `photo` = '%s',
+ `thumb` = '%s',
+ `micro` = '%s',
+ `name-date` = '%s',
+ `uri-date` = '%s',
+ `avatar-date` = '%s'
+ WHERE `id` = %d LIMIT 1
+ ",
+ dbesc($photos[0]),
+ dbesc($photos[1]),
+ dbesc($photos[2]),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ intval($r[0]['id'])
+ );
+ }
+ continue;
+ }
+ else {
+
+ // create contact record
+ $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `addr`, `alias`, `notify`, `poll`,
+ `name`, `nick`, `photo`, `network`, `rel`, `priority`,
+ `writable`, `blocked`, `readonly`, `pending` )
+ VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, 0, 0, 0 ) ",
+ intval($uid),
+ dbesc(datetime_convert()),
+ dbesc($jp->link),
+ dbesc(''),
+ dbesc(''),
+ dbesc($jp->id),
+ dbesc('facebook ' . $jp->id),
+ dbesc($jp->name),
+ dbesc(($jp->nickname) ? $jp->nickname : strtolower($jp->first_name)),
+ dbesc('https://graph.facebook.com/' . $jp->id . '/picture'),
+ dbesc(NETWORK_FACEBOOK),
+ intval(REL_BUD),
+ intval(1),
+ intval(1)
+ );
+ }
+
+ $r = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1",
+ dbesc($jp->link),
+ intval($uid)
+ );
+
+ if(! count($r)) {
+ continue;
+ }
+
+ $contact = $r[0];
+ $contact_id = $r[0]['id'];
+
+ require_once("Photo.php");
+
+ $photos = import_profile_photo($r[0]['photo'],$uid,$contact_id);
+
+ $r = q("UPDATE `contact` SET `photo` = '%s',
+ `thumb` = '%s',
+ `micro` = '%s',
+ `name-date` = '%s',
+ `uri-date` = '%s',
+ `avatar-date` = '%s'
+ WHERE `id` = %d LIMIT 1
+ ",
+ dbesc($photos[0]),
+ dbesc($photos[1]),
+ dbesc($photos[2]),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ intval($contact_id)
+ );
+
+ }
+ }
+ }
+}
+
+
function facebook_post(&$a) {
if(local_user()){
@@ -116,6 +248,12 @@ function facebook_content(&$a) {
notice( t('Facebook disabled') . EOL);
}
+ if($a->argc > 1 && $a->argv[1] === 'friends') {
+ fb_get_friends(local_user());
+ notice( t('Updating contacts') . EOL);
+ }
+
+
$fb_installed = get_pconfig(local_user(),'facebook','post');
$appid = get_config('facebook','appid');
@@ -134,14 +272,14 @@ function facebook_content(&$a) {
$o .= '<div id="facebook-enable-wrapper">';
$o .= '<a href="https://www.facebook.com/dialog/oauth?client_id=' . $appid . '&redirect_uri='
- . $a->get_baseurl() . '/facebook/' . $a->user['nickname'] . '&scope=publish_stream,read_stream,offline_access">' . t('Install Facebook post connector') . '</a>';
+ . $a->get_baseurl() . '/facebook/' . $a->user['nickname'] . '&scope=publish_stream,read_stream,offline_access">' . t('Install Facebook connector for this account.') . '</a>';
$o .= '</div>';
}
if($fb_installed) {
$o .= '<div id="facebook-disable-wrapper">';
- $o .= '<a href="' . $a->get_baseurl() . '/facebook/remove' . '">' . t('Remove Facebook post connector') . '</a></div>';
+ $o .= '<a href="' . $a->get_baseurl() . '/facebook/remove' . '">' . t('Remove Facebook connector') . '</a></div>';
$o .= '<div id="facebook-post-default-form">';
$o .= '<form action="facebook" method="post" >';
@@ -158,6 +296,7 @@ function facebook_install() {
register_hook('post_local_end', 'addon/facebook/facebook.php', 'facebook_post_hook');
register_hook('jot_networks', 'addon/facebook/facebook.php', 'facebook_jot_nets');
register_hook('plugin_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings');
+ register_hook('cron', 'addon/facebook/facebook.php', 'facebook_cron');
}
@@ -165,9 +304,46 @@ function facebook_uninstall() {
unregister_hook('post_local_end', 'addon/facebook/facebook.php', 'facebook_post_hook');
unregister_hook('jot_networks', 'addon/facebook/facebook.php', 'facebook_jot_nets');
unregister_hook('plugin_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings');
+ unregister_hook('cron', 'addon/facebook/facebook.php', 'facebook_cron');
}
+function facebook_cron($a,$b) {
+
+ $last = get_config('facebook','last_poll');
+
+ $poll_interval = intval(get_config('facebook','poll_interval'));
+ if(! $poll_interval)
+ $poll_interval = 3600;
+
+ if($last) {
+ $next = $last + $poll_interval;
+ if($next > time())
+ return;
+ }
+
+ logger('facebook_cron');
+
+ set_config('facebook','last_poll', time());
+
+ $r = q("SELECT * FROM `pconfig` WHERE `cat` = 'facebook' AND `k` = 'post' AND `v` = '1' ");
+ if(count($r)) {
+ foreach($r as $rr) {
+ // check for new friends once a day
+ $last_friend_check = get_pconfig($rr['uid'],'facebook','friend_check');
+ if($last_friend_check)
+ $next_friend_check = $last_friend_check + 86400;
+ if($next_friend_check <= time()) {
+ fb_get_friends($rr['uid']);
+ set_pconfig($rr['uid'],'facebook','friend_check',time());
+ }
+ fb_consume_all($rr['uid']);
+ }
+ }
+}
+
+
+
function facebook_plugin_settings(&$a,&$b) {
$b .= '<div class="settings-block">';
@@ -197,9 +373,77 @@ function facebook_post_hook(&$a,&$b) {
* Post to Facebook stream
*/
+ require_once('include/group.php');
+
logger('Facebook post');
- if((local_user()) && (local_user() == $b['uid']) && (! $b['private']) && (! $b['parent'])) {
+ $reply = false;
+ $likes = false;
+
+ if((local_user()) && (local_user() == $b['uid'])) {
+
+ if($b['parent']) {
+ $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval($b['parent']),
+ intval(local_user())
+ );
+ if(count($r) && substr($r[0]['uri'],0,4) === 'fb::')
+ $reply = substr($r[0]['uri'],4);
+ elseif(count($r) && substr($r[0]['extid'],0,4) === 'fb::')
+ $reply = substr($r[0]['extid'],4);
+ else
+ return;
+ logger('facebook reply id=' . $reply);
+ }
+
+ if($b['private'] && $reply == false) {
+ $allow_people = expand_acl($b['allow_cid']);
+ $allow_groups = expand_groups(expand_acl($b['allow_gid']));
+ $deny_people = expand_acl($b['deny_cid']);
+ $deny_groups = expand_groups(expand_acl($b['deny_gid']));
+
+ $recipients = array_unique(array_merge($allow_people,$allow_groups));
+ $deny = array_unique(array_merge($deny_people,$deny_groups));
+
+ $allow_str = dbesc(implode(', ',$recipients));
+ if($allow_str) {
+ $r = q("SELECT `notify` FROM `contact` WHERE `id` IN ( $allow_str ) AND `network` = 'face'");
+ $allow_arr = array();
+ if(count($r))
+ foreach($r as $rr)
+ $allow_arr[] = $rr['notify'];
+ }
+
+ $deny_str = dbesc(implode(', ',$deny));
+ if($deny_str) {
+ $r = q("SELECT `notify` FROM `contact` WHERE `id` IN ( $deny_str ) AND `network` = 'face'");
+ $deny_arr = array();
+ if(count($r))
+ foreach($r as $rr)
+ $deny_arr[] = $rr['notify'];
+ }
+
+ if(count($deny_arr) && (! count($allow_arr))) {
+
+ // One or more FB folks were denied access but nobody on FB was specifically allowed access.
+ // This might cause the post to be open to public on Facebook, but only to selected members
+ // on another network. Since this could potentially leak a post to somebody who was denied,
+ // we will skip posting it to Facebook with a slightly vague but relevant message that will
+ // hopefully lead somebody to this code comment for a better explanation of what went wrong.
+
+ notice( t('Post to Facebook cancelled because of multi-network access permission conflict.') . EOL);
+ return;
+ }
+
+
+ // if it's a private message but no Facebook members are allowed or denied, skip Facebook post
+
+ if((! count($allow_arr)) && (! count($deny_arr)))
+ return;
+ }
+
+ if($b['verb'] == ACTIVITY_LIKE)
+ $likes = true;
$appid = get_config('facebook', 'appid' );
@@ -214,7 +458,12 @@ function facebook_post_hook(&$a,&$b) {
$fb_token = get_pconfig(local_user(),'facebook','access_token');
logger('facebook: $fb_post: ' . $fb_post . ' $fb_enable: ' . $fb_enable . ' $fb_token: ' . $fb_token,LOGGER_DEBUG);
- if($fb_post && $fb_token && $fb_enable) {
+
+ // post to facebook if it's a public post and we've ticked the 'post to Facebook' box,
+ // or it's a private message with facebook participants
+ // or it's a reply or likes action to an existing facebook post
+
+ if($fb_post && $fb_token && ($fb_enable || $b['private'] || $reply)) {
logger('facebook: able to post');
require_once('library/facebook.php');
require_once('include/bbcode.php');
@@ -225,9 +474,32 @@ function facebook_post_hook(&$a,&$b) {
// make links readable before we strip the code
- $msg = preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/is",'$2 [$1]',$msg);
+ // unless it's a dislike - just send the text as a comment
+
+ if($b['verb'] == ACTIVITY_DISLIKE)
+ $msg = trim(strip_tags(bbcode($msg)));
+
+ $search_str = $a->get_baseurl() . '/search';
+
+ if(preg_match("/\[url=(.+?)\](.+?)\[\/url\]/is",$msg,$matches)) {
+
+ // don't use hashtags for message link
+
+ if(strpos($matches[2],$search_str) === false) {
+ $link = $matches[1];
+ if(substr($matches[2],0,5) != '[img]')
+ $linkname = $matches[2];
+ }
+ }
+
+ $msg = preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/is",'$2 $1',$msg);
+
+ if(preg_match("/\[img\](.+?)\[\/img\]/is",$msg,$matches))
+ $image = $matches[1];
+
+ $msg = preg_replace("/\[img\](.+?)\[\/img\]/is", t('Image: ') . '$1', $msg);
+
- $msg = preg_replace("/\[img\](.+?)\[\/img\]/is", t('Image: ') . '$1',$msg);
$msg = trim(strip_tags(bbcode($msg)));
$msg = html_entity_decode($msg,ENT_QUOTES,'UTF-8');
@@ -237,7 +509,7 @@ function facebook_post_hook(&$a,&$b) {
require_once('library/slinky.php');
$display_url = $a->get_baseurl() . '/display/' . $a->user['nickname'] . '/' . $b['id'];
- $slinky = new Slinky( $posturl );
+ $slinky = new Slinky( $display_url );
// setup a cascade of shortening services
// try to get a short link from these services
// in the order ur1.ca, trim, id.gd, tinyurl
@@ -253,9 +525,57 @@ function facebook_post_hook(&$a,&$b) {
logger('Facebook post: msg=' . $msg, LOGGER_DATA);
- $postvars = array('access_token' => $fb_token, 'message' => $msg);
+ if($likes) {
+ $postvars = array('access_token' => $fb_token);
+ }
+ else {
+ $postvars = array(
+ 'access_token' => $fb_token,
+ 'message' => $msg
+ );
+ if(isset($image))
+ $postvars['picture'] = $image;
+ if(isset($link))
+ $postvars['link'] = $link;
+ if(isset($linkname))
+ $postvars['name'] = $linkname;
+ }
+
+ if(($b['private']) && (! $b['parent'])) {
+ $postvars['privacy'] = '{"value": "CUSTOM", "friends": "SOME_FRIENDS"';
+ if(count($allow_arr))
+ $postvars['privacy'] .= ',"allow": "' . implode(',',$allow_arr) . '"';
+ if(count($deny_arr))
+ $postvars['privacy'] .= ',"deny": "' . implode(',',$deny_arr) . '"';
+ $postvars['privacy'] .= '}';
+
+ }
+
+ if($reply) {
+ $url = 'https://graph.facebook.com/' . $reply . '/' . (($likes) ? 'likes' : 'comments');
+ }
+ else {
+ $url = 'https://graph.facebook.com/me/feed';
+ if($b['plink'])
+ $postvars['actions'] = '{"name": "' . t('View on Friendika') . '", "link": "' . $b['plink'] . '"}';
+ }
+
+ logger('facebook: post to ' . $url);
+ logger('facebook: postvars: ' . print_r($postvars,true));
- $x = post_url('https://graph.facebook.com/me/feed', $postvars);
+ // "test_mode" prevents anything from actually being posted.
+ // Otherwise, let's do it.
+
+ if(! get_config('facebook','test_mode'))
+ $x = post_url($url, $postvars);
+
+ $retj = json_decode($x);
+ if($retj->id) {
+ q("UPDATE `item` SET `extid` = '%s' WHERE `id` = %d LIMIT 1",
+ dbesc('fb::' . $retj->id),
+ intval($b['id'])
+ );
+ }
logger('Facebook post returns: ' . $x, LOGGER_DEBUG);
@@ -264,3 +584,234 @@ function facebook_post_hook(&$a,&$b) {
}
}
+
+function fb_consume_all($uid) {
+
+ require_once('include/items.php');
+
+ $access_token = get_pconfig($uid,'facebook','access_token');
+ if(! $access_token)
+ return;
+ $s = fetch_url('https://graph.facebook.com/me/feed?access_token=' . $access_token);
+ if($s) {
+ $j = json_decode($s);
+ logger('fb_consume_stream: wall: ' . print_r($j,true), LOGGER_DATA);
+ fb_consume_stream($uid,$j,true);
+ }
+ $s = fetch_url('https://graph.facebook.com/me/home?access_token=' . $access_token);
+ if($s) {
+ $j = json_decode($s);
+ logger('fb_consume_stream: feed: ' . print_r($j,true), LOGGER_DATA);
+ fb_consume_stream($uid,$j,false);
+ }
+
+}
+
+function fb_consume_stream($uid,$j,$wall = false) {
+ $a = get_app();
+
+ $self = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
+ intval($uid)
+ );
+
+ $user = q("SELECT `nickname` FROM `user` WHERE `uid` = %d LIMIT 1",
+ intval($uid)
+ );
+ if(count($user))
+ $my_local_url = $a->get_baseurl() . '/profile/' . $user[0]['nickname'];
+
+
+ $self_id = get_pconfig($uid,'facebook','self_id');
+ if(! count($j->data) || (! strlen($self_id)))
+ return;
+
+ foreach($j->data as $entry) {
+ logger('fb_consume: entry: ' . print_r($entry,true), LOGGER_DATA);
+ $datarray = array();
+ $we_posted = false;
+ $app = $entry->application;
+ if($app->id == get_config('facebook','appid') && $wall)
+ $we_posted = true;
+
+ $r = q("SELECT * FROM `item` WHERE ( `uri` = '%s' OR `extid` = '%s') AND `uid` = %d LIMIT 1",
+ dbesc('fb::' . $entry->id),
+ dbesc('fb::' . $entry->id),
+ intval($uid)
+ );
+ if(count($r)) {
+ $post_exists = true;
+ $orig_post = $r[0];
+ $top_item = $r[0]['id'];
+ }
+ else {
+ $post_exists = false;
+ $orig_post = null;
+ }
+
+ if(! $orig_post) {
+ $datarray['gravity'] = 0;
+ $datarray['uid'] = $uid;
+ $datarray['wall'] = (($wall) ? 1 : 0);
+ $datarray['uri'] = $datarray['parent-uri'] = 'fb::' . $entry->id;
+ $from = $entry->from;
+ if($from->id == $self_id)
+ $datarray['contact-id'] = $self[0]['id'];
+ else {
+ $r = q("SELECT * FROM `contact` WHERE `notify` = '%s' AND `uid` = %d AND `blocked` = 0 AND `readonly` = 0 LIMIT 1",
+ dbesc($from->id),
+ intval($uid)
+ );
+ if(count($r))
+ $datarray['contact-id'] = $r[0]['id'];
+ }
+
+ // don't store post if we don't have a contact
+
+ if(! x($datarray,'contact-id'))
+ continue;
+
+ $datarray['verb'] = ACTIVITY_POST;
+ if($wall) {
+ $datarray['owner-name'] = $self[0]['name'];
+ $datarray['owner-link'] = $self[0]['url'];
+ $datarray['owner-avatar'] = $self[0]['thumb'];
+ }
+ $datarray['author-name'] = $from->name;
+ $datarray['author-link'] = 'http://facebook.com/profile.php?id=' . $from->id;
+ $datarray['author-avatar'] = 'https://graph.facebook.com/' . $from->id . '/picture';
+ $datarray['plink'] = $datarray['author-link'] . '&v=wall&story_fbid=' . substr($entry->id,strpos($entry->id,'_') + 1);
+
+ $datarray['body'] = $entry->message;
+ if($entry->picture)
+ $datarray['body'] .= "\n\n" . '[img]' . $entry->picture . '[/img]';
+ if($entry->link)
+ $datarray['body'] .= "\n" . linkify($entry->link);
+ if($entry->name)
+ $datarray['body'] .= "\n" . $entry->name;
+ if($entry->caption)
+ $datarray['body'] .= "\n" . $entry->caption;
+ if($entry->description)
+ $datarray['body'] .= "\n" . $entry->description;
+ $datarray['created'] = datetime_convert('UTC','UTC',$entry->created_time);
+ $datarray['edited'] = datetime_convert('UTC','UTC',$entry->updated_time);
+ if($entry->privacy && $entry->privacy->value !== 'EVERYONE')
+ $datarray['private'] = 1;
+ $top_item = item_store($datarray);
+ $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval($top_item),
+ intval($uid)
+ );
+ if(count($r))
+ $orig_post = $r[0];
+
+ }
+ $likers = $entry->likes->data;
+ $comments = $entry->comments->data;
+
+ if(is_array($likers)) {
+ foreach($likers as $likes) {
+
+ if(! $orig_post)
+ continue;
+
+ $r = q("SELECT * FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `verb` = '%s' AND `author-link` = '%s' LIMIT 1",
+ dbesc($orig_post['uri']),
+ intval($uid),
+ dbesc(ACTIVITY_LIKE),
+ dbesc('http://facebook.com/profile.php?id=' . $likes->id)
+ );
+
+ if(count($r))
+ continue;
+
+ $likedata = array();
+ $likedata['parent'] = $top_item;
+ $likedata['verb'] = ACTIVITY_LIKE;
+ $likedata['gravity'] = 3;
+ $likedata['uid'] = $uid;
+ $likedata['wall'] = (($wall) ? 1 : 0);
+ $likedata['uri'] = item_new_uri($a->get_baseurl(), $uid);
+ $likedata['parent-uri'] = $orig_post['uri'];
+ if($likes->id == $self_id)
+ $likedata['contact-id'] = $self[0]['id'];
+ else {
+ $r = q("SELECT * FROM `contact` WHERE `notify` = '%s' AND `uid` = %d AND `blocked` = 0 AND `readonly` = 0 LIMIT 1",
+ dbesc($likes->id),
+ intval($uid)
+ );
+ if(count($r))
+ $likedata['contact-id'] = $r[0]['id'];
+ }
+ if(! x($likedata,'contact-id'))
+ $likedata['contact-id'] = $orig_post['contact-id'];
+
+ $likedata['verb'] = ACTIVITY_LIKE;
+ $likedata['author-name'] = $likes->name;
+ $likedata['author-link'] = 'http://facebook.com/profile.php?id=' . $likes->id;
+ $likedata['author-avatar'] = 'https://graph.facebook.com/' . $likes->id . '/picture';
+
+ $author = '[url=' . $likedata['author-link'] . ']' . $likedata['author-name'] . '[/url]';
+ $objauthor = '[url=' . $orig_post['author-link'] . ']' . $orig_post['author-name'] . '[/url]';
+ $post_type = t('status');
+ $plink = '[url=' . $orig_post['plink'] . ']' . $post_type . '[/url]';
+ $likedata['object-type'] = ACTIVITY_OBJ_NOTE;
+
+ $likedata['body'] = sprintf( t('%1$s likes %2$s\'s %3$s'), $author, $objauthor, $plink);
+ $likedata['object'] = '<object><type>' . ACTIVITY_OBJ_NOTE . '</type><local>1</local>' .
+ '<id>' . $orig_post['uri'] . '</id><link>' . xmlify('<link rel="alternate" type="text/html" href="' . $orig_post['plink'] . '">') . '</link><title>' . $orig_post['title'] . '</title><content>' . $orig_post['body'] . '</content></object>';
+
+ $item = item_store($likedata);
+ }
+ }
+ if(is_array($comments)) {
+ foreach($comments as $cmnt) {
+
+ if(! $orig_post)
+ continue;
+
+ $r = q("SELECT * FROM `item` WHERE `uid` = %d AND ( `uri` = '%s' OR `extid` = '%s' ) LIMIT 1",
+ intval($uid),
+ dbesc('fb::' . $cmnt->id),
+ dbesc('fb::' . $cmnt->id)
+ );
+ if(count($r))
+ continue;
+
+ $cmntdata = array();
+ $cmntdata['parent'] = $top_item;
+ $cmntdata['verb'] = ACTIVITY_POST;
+ $cmntdata['gravity'] = 6;
+ $cmntdata['uid'] = $uid;
+ $cmntdata['wall'] = (($wall) ? 1 : 0);
+ $cmntdata['uri'] = 'fb::' . $cmnt->id;
+ $cmntdata['parent-uri'] = $orig_post['uri'];
+ if($cmnt->from->id == $self_id) {
+ $cmntdata['contact-id'] = $self[0]['id'];
+ }
+ else {
+ $r = q("SELECT * FROM `contact` WHERE `notify` = '%s' AND `uid` = %d LIMIT 1",
+ dbesc($cmnt->from->id),
+ intval($uid)
+ );
+ if(count($r)) {
+ $cmntdata['contact-id'] = $r[0]['id'];
+ if($r[0]['blocked'] || $r[0]['readonly'])
+ continue;
+ }
+ }
+ if(! x($cmntdata,'contact-id'))
+ $cmntdata['contact-id'] = $orig_post['contact-id'];
+
+ $cmntdata['created'] = datetime_convert('UTC','UTC',$cmnt->created_time);
+ $cmntdata['edited'] = datetime_convert('UTC','UTC',$cmnt->created_time);
+ $cmntdata['verb'] = ACTIVITY_POST;
+ $cmntdata['author-name'] = $cmnt->from->name;
+ $cmntdata['author-link'] = 'http://facebook.com/profile.php?id=' . $cmnt->from->id;
+ $cmntdata['author-avatar'] = 'https://graph.facebook.com/' . $cmnt->from->id . '/picture';
+ $cmntdata['body'] = $cmnt->message;
+ $item = item_store($cmntdata);
+ }
+ }
+ }
+}
+
diff --git a/addon/oembed/oembed.php b/addon/oembed/oembed.php
index 4bbd75387..d9b205a3a 100644
--- a/addon/oembed/oembed.php
+++ b/addon/oembed/oembed.php
@@ -18,6 +18,10 @@ function oembed_uninstall() {
}
function oembed_hook_page_header($a, &$b){
+
+ if(($a->module !== 'network') && ($a->module !== 'profile'))
+ return;
+
$b .= '<script src="addon/oembed/oembed.js"></script>
<style>#oembed.hide { display: none }
#oembed {
@@ -33,11 +37,11 @@ function oembed_hook_page_header($a, &$b){
<div id="oembed" class="hide"><input id="oembed_url">&nbsp;
<input type="button" value="Embed" onclick="oembed_do()" style="float:left;">
<a onclick="oembed(); return false;" style="float:right;"><img onmouseout="imgdull(this);" onmouseover="imgbright(this);" class="wall-item-delete-icon" src="images/b_drophide.gif" style="width: 16px; height: 16px;"></a>
- <p style="clear:both">Paste a link from 5min.com, Amazon Product Image, blip.tv, Clikthrough, CollegeHumor Video,
+ <div style="clear:both">Paste a link from 5min.com, Amazon Product Image, blip.tv, Clikthrough, CollegeHumor Video,
Daily Show with Jon Stewart, Dailymotion, dotSUB.com, Flickr Photos, Funny or Die Video,
Google Video, Hulu, Kinomap, LiveJournal UserPic, Metacafe, National Film Board of Canada,
Phodroid Photos, Photobucket, Qik Video, Revision3, Scribd, SlideShare, TwitPic, Twitter Status,
- Viddler Video, Vimeo, Wikipedia, Wordpress.com, XKCD Comic, YFrog, YouTube</p>
+ Viddler Video, Vimeo, Wikipedia, Wordpress.com, XKCD Comic, YFrog, YouTube</div>
</div>
';
}
diff --git a/addon/statusnet/statusnet.css b/addon/statusnet/statusnet.css
index 4e27b0938..6c1347fc7 100644
--- a/addon/statusnet/statusnet.css
+++ b/addon/statusnet/statusnet.css
@@ -12,25 +12,32 @@
}
#statusnet-disconnect-label {
float: left;
- width: 200px;
+ width: 250px;
+ margin-bottom: 25px;
+}
+#statusnet-default-label {
+ float: left;
+ width: 250px;
margin-bottom: 25px;
}
#statusnet-disconnect {
float: left;
}
+
#statusnet-enable-label {
float: left;
- width: 200px;
+ width: 250px;
margin-bottom: 5px;
}
#statusnet-checkbox {
float: left;
}
+
#statusnet-pin-label {
float: left;
- width: 200px;
+ width: 250px;
margin-bottom: 25px;
}
#statusnet-pin {
@@ -40,7 +47,7 @@
#statusnet-consumerkey-label {
float: left;
- width: 200px;
+ width: 250px;
margin-bottom: 8px;
}
#statusnet-consumerkey {
@@ -49,7 +56,7 @@
}
#statusnet-consumersecret-label {
float: left;
- width: 200px;
+ width: 250px;
margin-bottom: 8px;
}
#statusnet-consumersecret {
@@ -58,7 +65,7 @@
}
#statusnet-baseapi-label {
float: left;
- width: 200px;
+ width: 250px;
margin-bottom: 25px;
}
#statusnet-baseapi {
diff --git a/addon/statusnet/statusnet.php b/addon/statusnet/statusnet.php
index f763cd0c3..1d12292c8 100644
--- a/addon/statusnet/statusnet.php
+++ b/addon/statusnet/statusnet.php
@@ -90,18 +90,40 @@ function statusnet_settings_post ($a,$post) {
* if the statusnet-disconnect checkbox is set, clear the statusnet configuration
* TODO can we revoke the access tokens at Twitter and do we need to do so?
*/
- del_pconfig( local_user(), 'statusnet', 'consumerkey' );
- del_pconfig( local_user(), 'statusnet', 'consumersecret' );
- del_pconfig( local_user(), 'statusnet', 'post' );
- del_pconfig( local_user(), 'statusnet', 'oauthtoken' );
+ del_pconfig( local_user(), 'statusnet', 'consumerkey' );
+ del_pconfig( local_user(), 'statusnet', 'consumersecret' );
+ del_pconfig( local_user(), 'statusnet', 'post' );
+ del_pconfig( local_user(), 'statusnet', 'post_by_default' );
+ del_pconfig( local_user(), 'statusnet', 'oauthtoken' );
del_pconfig( local_user(), 'statusnet', 'oauthsecret' );
del_pconfig( local_user(), 'statusnet', 'baseapi' );
} else {
if (isset($_POST['statusnet-consumersecret'])) {
- set_pconfig(local_user(), 'statusnet', 'consumerkey', $_POST['statusnet-consumerkey']);
- set_pconfig(local_user(), 'statusnet', 'consumersecret', $_POST['statusnet-consumersecret']);
- set_pconfig(local_user(), 'statusnet', 'baseapi', $_POST['statusnet-baseapi']);
- header('Location: '.$a->get_baseurl().'/settings/addon');
+ // check if we can reach the API of the StatusNet server
+ // we'll check the API Version for that, if we don't get one we'll try to fix the path but will
+ // resign quickly after this one try to fix the path ;-)
+ $apibase = $_POST['statusnet-baseapi'];
+ $c = fetch_url( $apibase . 'statusnet/version.xml' );
+ if (strlen($c) > 0) {
+ // ok the API path is correct, let's save the settings
+ set_pconfig(local_user(), 'statusnet', 'consumerkey', $_POST['statusnet-consumerkey']);
+ set_pconfig(local_user(), 'statusnet', 'consumersecret', $_POST['statusnet-consumersecret']);
+ set_pconfig(local_user(), 'statusnet', 'baseapi', $apibase );
+ } else {
+ // the API path is not correct, maybe missing trailing / ?
+ $apibase = $apibase . '/';
+ $c = fetch_url( $apibase . 'statusnet/version.xml' );
+ if (strlen($c) > 0) {
+ // ok the API path is now correct, let's save the settings
+ set_pconfig(local_user(), 'statusnet', 'consumerkey', $_POST['statusnet-consumerkey']);
+ set_pconfig(local_user(), 'statusnet', 'consumersecret', $_POST['statusnet-consumersecret']);
+ set_pconfig(local_user(), 'statusnet', 'baseapi', $apibase );
+ } else {
+ // still not the correct API base, let's do noting
+ notice( t('We could not contact the StatusNet API with the Path you entered.').EOL );
+ }
+ }
+ goaway($a->get_baseurl().'/settings/addon');
} else {
if (isset($_POST['statusnet-pin'])) {
// if the user supplied us with a PIN from Twitter, let the magic of OAuth happen
@@ -119,11 +141,13 @@ function statusnet_settings_post ($a,$post) {
set_pconfig(local_user(),'statusnet', 'oauthsecret', $token['oauth_token_secret']);
set_pconfig(local_user(),'statusnet', 'post', 1);
// reload the Addon Settings page, if we don't do it see Bug #42
- header('Location: '.$a->get_baseurl().'/settings/addon');
+ goaway($a->get_baseurl().'/settings/addon');
} else {
// if no PIN is supplied in the POST variables, the user has changed the setting
// to post a tweet for every new __public__ posting to the wall
set_pconfig(local_user(),'statusnet','post',intval($_POST['statusnet-enable']));
+ set_pconfig(local_user(),'statusnet','post_by_default',intval($_POST['statusnet-default']));
+ notice( t('StatusNet settings updated.') . EOL);
}}}
}
function statusnet_settings(&$a,&$s) {
@@ -133,6 +157,7 @@ function statusnet_settings(&$a,&$s) {
/***
* 1) Check that we have a base api url and a consumer key & secret
* 2) If no OAuthtoken & stuff is present, generate button to get some
+ * allow the user to cancel the connection process at this step
* 3) Checkbox for "Send public notices (respect size limitation)
*/
$api = get_pconfig(local_user(), 'statusnet', 'baseapi');
@@ -140,8 +165,10 @@ function statusnet_settings(&$a,&$s) {
$csecret = get_pconfig(local_user(), 'statusnet', 'consumersecret' );
$otoken = get_pconfig(local_user(), 'statusnet', 'oauthtoken' );
$osecret = get_pconfig(local_user(), 'statusnet', 'oauthsecret' );
- $enabled = get_pconfig(local_user(), 'statusnet', 'post');
+ $enabled = get_pconfig(local_user(), 'statusnet', 'post');
$checked = (($enabled) ? ' checked="checked" ' : '');
+ $defenabled = get_pconfig(local_user(),'statusnet','post_by_default');
+ $defchecked = (($defenabled) ? ' checked="checked" ' : '');
$s .= '<div class="settings-block">';
$s .= '<h3>'. t('StatusNet Posting Settings').'</h3>';
@@ -187,6 +214,13 @@ function statusnet_settings(&$a,&$s) {
$s .= '<input id="statusnet-token2" type="hidden" name="statusnet-token2" value="'.$request_token['oauth_token_secret'].'" />';
$s .= '</div><div class="clear"></div>';
$s .= '<div class="settings-submit-wrapper" ><input type="submit" name="submit" class="settings-submit" value="' . t('Submit') . '" /></div>';
+ $s .= '<h4>'.t('Cancel Connection Process').'</h4>';
+ $s .= '<div id="statusnet-cancel-wrapper">';
+ $s .= '<p>'.t('Current StatusNet API is').': '.$api.'</p>';
+ $s .= '<label id="statusnet-cancel-label" for="statusnet-cancel">'. t('Cancel StatusNet Connection') . '</label>';
+ $s .= '<input id="statusnet-cancel" type="checkbox" name="statusnet-disconnect" value="1" />';
+ $s .= '</div><div class="clear"></div>';
+ $s .= '<div class="settings-submit-wrapper" ><input type="submit" name="submit" class="settings-submit" value="' . t('Submit') . '" /></div>';
} else {
/***
* we have an OAuth key / secret pair for the user
@@ -195,11 +229,15 @@ function statusnet_settings(&$a,&$s) {
$connection = new StatusNetOAuth($api,$ckey,$csecret,$otoken,$osecret);
$details = $connection->get('account/verify_credentials');
$s .= '<div id="statusnet-info" ><img id="statusnet-avatar" src="'.$details->profile_image_url.'" /><p id="statusnet-info-block">'. t('Currently connected to: ') .'<a href="'.$details->statusnet_profile_url.'" target="_statusnet">'.$details->screen_name.'</a><br /><em>'.$details->description.'</em></p></div>';
- $s .= '<p>'. t('If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well.') .'</p>';
+ $s .= '<p>'. t('If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account.') .'</p>';
$s .= '<div id="statusnet-enable-wrapper">';
- $s .= '<label id="statusnet-enable-label" for="statusnet-checkbox">'. t('Send public postings to StatusNet') .'</label>';
+ $s .= '<label id="statusnet-enable-label" for="statusnet-checkbox">'. t('Allow posting to StatusNet') .'</label>';
$s .= '<input id="statusnet-checkbox" type="checkbox" name="statusnet-enable" value="1" ' . $checked . '/>';
+ $s .= '<div class="clear"></div>';
+ $s .= '<label id="statusnet-default-label" for="statusnet-default">'. t('Send public postings to StatusNet by default') .'</label>';
+ $s .= '<input id="statusnet-default" type="checkbox" name="statusnet-default" value="1" ' . $defchecked . '/>';
$s .= '</div><div class="clear"></div>';
+
$s .= '<div id="statusnet-disconnect-wrapper">';
$s .= '<label id="statusnet-disconnect-label" for="statusnet-disconnect">'. t('Clear OAuth configuration') .'</label>';
$s .= '<input id="statusnet-disconnect" type="checkbox" name="statusnet-disconnect" value="1" />';
diff --git a/addon/twitter/twitter.php b/addon/twitter/twitter.php
index bb424fb65..c59d1b9e5 100644
--- a/addon/twitter/twitter.php
+++ b/addon/twitter/twitter.php
@@ -138,7 +138,7 @@ function twitter_settings(&$a,&$s) {
* which the user can request a PIN to connect the account to a
* account at Twitter.
*/
- require_once('library/twitteroauth.php');
+ require_once('library/twitteroauth.php');
$connection = new TwitterOAuth($ckey, $csecret);
$request_token = $connection->getRequestToken();
$token = $request_token['oauth_token'];
diff --git a/addon/widgets/widget_friends.php b/addon/widgets/widget_friends.php
new file mode 100644
index 000000000..2286f68ca
--- /dev/null
+++ b/addon/widgets/widget_friends.php
@@ -0,0 +1,32 @@
+<?php
+
+function friends_widget_name() {
+ return "Shows profile contacts";
+}
+function friends_widget_help() {
+ return "";
+}
+
+function friends_widget_args(){
+ return Array();
+}
+
+function friends_widget_content(&$a, $conf){
+
+ $r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.* FROM `profile`
+ LEFT JOIN `user` ON `profile`.`uid` = `user`.`uid`
+ WHERE `user`.`uid` = %s AND `profile`.`is-default` = 1 LIMIT 1",
+ intval($conf['uid'])
+ );
+ if(!count($r)) return;
+ $a->profile = $r[0];
+
+ $o = "";
+ $o .= "<style>
+ .f9k_widget .contact-block-div { display: block !important; float: left!important; width: 50px!important; height: 50px!important; margin: 2px!important;}
+ .f9k_widget #contact-block-end { clear: left; }
+ </style>";
+ $o .= _abs_url(contact_block());
+ $o .= "<a href='".$a->get_baseurl().'/profile/'.$a->profile['nickname']."'>". t('Connect on Friendika!') ."</a>";
+ return $o;
+}
diff --git a/addon/widgets/widget_like.php b/addon/widgets/widget_like.php
new file mode 100644
index 000000000..9b54212a8
--- /dev/null
+++ b/addon/widgets/widget_like.php
@@ -0,0 +1,22 @@
+<?php
+
+function like_widget_name() {
+ return "Shows likes";
+}
+function like_widget_help() {
+ return "Search first item wich contains <em>KEY</em> and print like/dislike count";
+}
+
+function like_widget_args(){
+ return Array("KEY");
+}
+
+function like_widget_content(&$a, $conf){
+ $args = explode(",",$_GET['a']);
+
+ if ($args[0]!=""){
+ return " #TODO like/dislike count for item with <em>" .$args[0]. "</em> # ";
+ } else {
+ return " #TODO# ";
+ }
+}
diff --git a/addon/widgets/widgets.js b/addon/widgets/widgets.js
new file mode 100644
index 000000000..45d36c4d7
--- /dev/null
+++ b/addon/widgets/widgets.js
@@ -0,0 +1,64 @@
+/**
+ * @author Fabio Comuni
+ */
+
+var f9a_widget_$widget_id = {
+ entrypoint : "$entrypoint",
+ key : "$key",
+ widgetid: "$widget_id",
+ argstr: "$args",
+ xmlhttp : null,
+
+ getXHRObj : function(){
+ if (window.XMLHttpRequest) {
+ // code for IE7+, Firefox, Chrome, Opera, Safari
+ this.xmlhttp = new XMLHttpRequest();
+ } else {
+ // code for IE6, IE5
+ this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+ }
+ },
+
+ dorequest : function(args, cb) {
+ if (args===null) args = new Array();
+ args['k']=this.key;
+ args['s']=window.location;
+ args['a']=this.argstr;
+ var urlencodedargs = new Array();
+ for(k in args){ urlencodedargs.push( encodeURIComponent(k)+"="+encodeURIComponent(args[k]) ); }
+
+ var url = this.entrypoint + "?"+ urlencodedargs.join("&");
+
+ this.xmlhttp.open("GET", url ,true);
+ this.xmlhttp.send();
+ this.xmlhttp.obj = this;
+ this.xmlhttp.onreadystatechange=function(){
+ if (this.readyState==4){
+ if (this.status==200) {
+ cb(this.obj, this.responseText);
+ } else {
+ document.getElementById(this.obj.widgetid).innerHTML="Error loading widget.";
+ }
+ }
+ }
+
+ },
+
+ requestcb: function(obj, responseText) {
+ document.getElementById(obj.widgetid).innerHTML=responseText;
+ },
+
+ load : function (){
+ this.getXHRObj();
+ this.dorequest(null, this.requestcb);
+ }
+
+};
+
+(function() {
+ f9a_widget_$widget_id.load();
+})();
+
+document.writeln("<div id='$widget_id' class='f9k_widget'>");
+document.writeln("<img id='$widget_id_ld' src='$loader'>");
+document.writeln("</div>");
diff --git a/addon/widgets/widgets.php b/addon/widgets/widgets.php
new file mode 100644
index 000000000..6bd7a73d1
--- /dev/null
+++ b/addon/widgets/widgets.php
@@ -0,0 +1,168 @@
+<?php
+ /**
+ * widgets from friendika
+ *
+ * allow to embed info from friendika into another site
+ */
+
+
+function widgets_install() {
+ // we need some hooks, for the configuration and for sending tweets
+ register_hook('plugin_settings', 'addon/widgets/widgets.php', 'widgets_settings');
+ register_hook('plugin_settings_post', 'addon/widgets/widgets.php', 'widgets_settings_post');
+
+ logger("installed widgets");
+}
+
+function widgets_settings_post(){
+
+ if (isset($_POST['widgets-submit'])){
+ del_pconfig(local_user(), 'widgets', 'key');
+
+ }
+}
+
+function widgets_settings(&$a,&$o) {
+ if(! local_user())
+ return;
+
+
+ $key = get_pconfig(local_user(), 'widgets', 'key' );
+ if ($key=='') { $key = mt_rand(); set_pconfig(local_user(), 'widgets', 'key', $key); }
+
+ $o .='<h3 class="settings-heading">Widgets</h3>';
+
+
+ $o.='
+ <div id="settings-username-wrapper">
+ '. t('Widgets key: ') .'<strong>'.$key.'</strong>
+ </div>
+ <div id="settings-username-end"></div>
+ <div class="settings-submit-wrapper">
+ <input type="submit" value="'.t('Generate new key').'" class="settings-submit" name="widgets-submit">
+ </div>';
+
+
+ $o.='<h4>Widgets:</h4>';
+ $o .= '<ul>';
+ $d = dir(dirname(__file__));
+ while(false !== ($f = $d->read())) {
+ if(substr($f,0,7)=="widget_") {
+ preg_match("|widget_([^.]+).php|", $f, $m);
+ $w=$m[1];
+ require_once($f);
+ $o.='<li><a href="'.$a->get_baseurl().'/widgets/'.$w.'/?k='.$key.'&p=1">'. call_user_func($w."_widget_name") .'</a></li>';
+ }
+ }
+
+ $o .= '</ul>';
+
+}
+
+function widgets_module() {
+ return;
+}
+
+function _abs_url($s){
+ $a = get_app();
+ return preg_replace("|href=(['\"])([^h][^t][^t][^p])|", "href=\$1".$a->get_baseurl()."/\$2", $s);
+}
+
+
+function widgets_content(&$a) {
+
+ if (!isset($_GET['k'])) {
+ if($a->argv[2]=="cb"){header('HTTP/1.0 400 Bad Request'); killme();}
+ return;
+ }
+
+ $r = q("SELECT * FROM pconfig WHERE uid IN (SELECT uid FROM pconfig WHERE v='%s')AND cat='widgets'",
+ dbesc($_GET['k'])
+ );
+ if (!count($r)){
+ if($a->argv[2]=="cb"){header('HTTP/1.0 400 Bad Request'); killme();}
+ return;
+ }
+ $conf = array();
+ $conf['uid'] = $r[0]['uid'];
+ foreach($r as $e) { $conf[$e['k']]=$e['v']; }
+
+ $o = "";
+
+ $widgetfile =dirname(__file__)."/widget_".$a->argv[1].".php";
+ if (file_exists($widgetfile)){
+ require_once($widgetfile);
+ } else {
+ if($a->argv[2]=="cb"){header('HTTP/1.0 400 Bad Request'); killme();}
+ return;
+ }
+
+
+
+
+ //echo "<pre>"; var_dump($a->argv); die();
+ if ($a->argv[2]=="cb"){
+ /*if (!local_user()){
+ if (!isset($_GET['s']))
+ {header('HTTP/1.0 400 Bad Request'); killme();}
+
+ if (substr($_GET['s'],0,strlen($conf['site'])) !== $conf['site'])
+ {header('HTTP/1.0 400 Bad Request'); killme();}
+ } */
+ $o .= call_user_func($a->argv[1].'_widget_content',$a, $conf);
+
+ } else {
+
+
+ if (isset($_GET['p']) && local_user()==$conf['uid'] ) {
+ $o .= "<style>.f9k_widget { float: left;border:1px solid black; }</style>";
+ $o .= "<h1>Preview Widget</h1>";
+ $o .= '<a href="'.$a->get_baseurl().'/settings/addon">'. t("Plugin Settings") .'</a>';
+
+ $o .= "<h4>".call_user_func($a->argv[1].'_widget_name')."</h4>";
+ $o .= call_user_func($a->argv[1].'_widget_help');
+ $o .= "<br style='clear:left'/><br/>";
+ $o .= "<script>";
+ } else {
+ header("content-type: application/x-javascript");
+ }
+
+
+
+
+ $script = file_get_contents(dirname(__file__)."/widgets.js");
+ $o .= replace_macros($script, array(
+ '$entrypoint' => $a->get_baseurl()."/widgets/".$a->argv[1]."/cb/",
+ '$key' => $conf['key'],
+ '$widget_id' => 'f9k_'.$a->argv[1]."_".time(),
+ '$loader' => $a->get_baseurl()."/images/rotator.gif",
+ '$args' => (isset($_GET['a'])?$_GET['a']:''),
+ ));
+
+
+ if (isset($_GET['p'])) {
+ $jsargs = implode("</em>,<em>", call_user_func($a->argv[1].'_widget_args'));
+ if ($jsargs!='') $jsargs = "&a=<em>".$jsargs."</em>";
+
+ $o .= "</script>
+ <br style='clear:left'/><br/>
+ <h4>Copy and paste this code</h4>
+ <code>"
+
+ .htmlspecialchars('<script src="'.$a->get_baseurl().'/widgets/'.$a->argv[1].'?k='.$conf['key'])
+ .$jsargs
+ .htmlspecialchars('"></script>')
+ ."</code>";
+ return $o;
+ }
+
+ }
+
+ echo $o;
+ killme();
+}
+
+
+
+
+?>
diff --git a/boot.php b/boot.php
index bbaa8324d..0704c2305 100644
--- a/boot.php
+++ b/boot.php
@@ -1,15 +1,27 @@
<?php
set_time_limit(0);
+ini_set('pcre.backtrack_limit', 250000);
-define ( 'FRIENDIKA_VERSION', '2.1.915' );
-define ( 'DFRN_PROTOCOL_VERSION', '2.1' );
-define ( 'DB_UPDATE_VERSION', 1040 );
+
+define ( 'FRIENDIKA_VERSION', '2.2.987' );
+define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
+define ( 'DB_UPDATE_VERSION', 1054 );
define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
define ( 'DOWN_ARROW', '&#x21e9;' );
-
+
+/**
+ *
+ * Image storage quality. Lower numbers save space at cost of image detail.
+ * For ease of upgrade, please do not change here. Change jpeg quality with
+ * set_config('system','jpeg_quality',n) in .htconfig.php
+ * where n is netween 1 and 100, and with very poor results below about 50
+ *
+ */
+
+define ( 'JPEG_QUALITY', 100 );
/**
* SSL redirection policies
@@ -74,6 +86,18 @@ define ( 'PAGE_COMMUNITY', 2 );
define ( 'PAGE_FREELOVE', 3 );
/**
+ * Network and protocol family types
+ */
+
+define ( 'NETWORK_DFRN', 'dfrn'); // Friendika, Mistpark, other DFRN implementations
+define ( 'NETWORK_OSTATUS', 'stat'); // status.net, identi.ca, GNU-social, other OStatus implementations
+define ( 'NETWORK_FEED', 'feed'); // RSS/Atom feeds with no known "post/notify" protocol
+define ( 'NETWORK_DIASPORA', 'dspr'); // Diaspora
+define ( 'NETWORK_MAIL', 'mail'); // IMAP/POP
+define ( 'NETWORK_FACEBOOK', 'face'); // Facebook API
+
+
+/**
* Maximum number of "people who like (or don't like) this" that we will list by name
*/
@@ -159,6 +183,11 @@ if (get_magic_quotes_gpc()) {
unset($process);
}
+/*
+ * translation system
+ */
+require_once("include/pgettext.php");
+
/**
*
@@ -184,6 +213,8 @@ class App {
public $user;
public $cid;
public $contact;
+ public $contacts;
+ public $page_contact;
public $content;
public $data;
public $error = false;
@@ -259,7 +290,7 @@ class App {
$this->argv = explode('/',$this->cmd);
$this->argc = count($this->argv);
if((array_key_exists('0',$this->argv)) && strlen($this->argv[0])) {
- $this->module = $this->argv[0];
+ $this->module = str_replace(".", "_", $this->argv[0]);
}
else {
$this->module = 'home';
@@ -272,7 +303,7 @@ class App {
if($this->cmd === '.well-known/host-meta') {
require_once('include/hostxrd.php');
- hostxrd($this->hostname);
+ hostxrd($this->get_baseurl());
// NOTREACHED
}
@@ -347,10 +378,12 @@ class App {
function init_pagehead() {
$this->page['title'] = $this->config['sitename'];
- $tpl = load_view_file("view/head.tpl");
+ $tpl = file_get_contents('view/head.tpl');
$this->page['htmlhead'] = replace_macros($tpl,array(
- '$baseurl' => $this->get_baseurl() . '/',
- '$generator' => 'Friendika' . ' ' . FRIENDIKA_VERSION
+ '$baseurl' => $this->get_baseurl(),
+ '$generator' => 'Friendika' . ' ' . FRIENDIKA_VERSION,
+ '$delitem' => t('Delete this item?'),
+ '$comment' => t('Comment')
));
}
@@ -430,15 +463,18 @@ function check_config(&$a) {
load_config('system');
- if(! x($_SERVER,'SERVER_NAME'))
- return;
-
$build = get_config('system','build');
if(! x($build))
$build = set_config('system','build',DB_UPDATE_VERSION);
$url = get_config('system','url');
- if(! x($url))
+
+ // if the url isn't set or the stored url is radically different
+ // than the currently visited url, store the current value accordingly.
+ // "Radically different" ignores common variations such as http vs https
+ // and www.example.com vs example.com.
+
+ if((! x($url)) || (! link_compare($url,$a->get_baseurl())))
$url = set_config('system','url',$a->get_baseurl());
if($build != DB_UPDATE_VERSION) {
@@ -585,43 +621,16 @@ function reload_plugins() {
// For instance if 'test' => "foo" and 'testing' => "bar", testing could become either bar or fooing,
// depending on the order in which they were declared in the array.
+require_once("include/template_processor.php");
+
if(! function_exists('replace_macros')) {
function replace_macros($s,$r) {
+ global $t;
+
+ return $t->replace($s,$r);
- $search = array();
- $replace = array();
-
- if(is_array($r) && count($r)) {
- foreach ($r as $k => $v ) {
- $search[] = $k;
- $replace[] = $v;
- }
- }
- return str_replace($search,$replace,$s);
-}}
-
-
-// load string translation table for alternate language
-
-if(! function_exists('load_translation_table')) {
-function load_translation_table($lang) {
- global $a;
-
- if(file_exists("view/$lang/strings.php"))
- include("view/$lang/strings.php");
}}
-// translate string if translation exists
-
-if(! function_exists('t')) {
-function t($s) {
-
- $a = get_app();
-
- if(x($a->strings,$s))
- return $a->strings[$s];
- return $s;
-}}
// curl wrapper. If binary flag is true, return binary
// results.
@@ -819,7 +828,7 @@ function escape_tags($string) {
if(! function_exists('login')) {
function login($register = false) {
$o = "";
- $register_tpl = (($register) ? load_view_file("view/register-link.tpl") : "");
+ $register_tpl = (($register) ? get_markup_template("register-link.tpl") : "");
$register_html = replace_macros($register_tpl,array(
'$title' => t('Create a New Account'),
@@ -843,14 +852,16 @@ function login($register = false) {
$lostlink = t('Password Reset');
if(local_user()) {
- $tpl = load_view_file("view/logout.tpl");
+ $tpl = get_markup_template("logout.tpl");
}
else {
- $tpl = load_view_file("view/login.tpl");
+ $tpl = get_markup_template("login.tpl");
}
-
- $o = replace_macros($tpl,array(
+
+ $o = '<script type="text/javascript"> $(document).ready(function() { $("#login-name").focus();} );</script>';
+
+ $o .= replace_macros($tpl,array(
'$logout' => t('Logout'),
'$register_html' => $register_html,
'$classname' => $classname,
@@ -1085,6 +1096,7 @@ function paginate(&$a) {
$stripped = preg_replace('/(&page=[0-9]*)/','',$a->query_string);
$stripped = str_replace('q=','',$stripped);
$stripped = trim($stripped,'/');
+ $pagenum = $a->pager['page'];
$url = $a->get_baseurl() . '/' . $stripped;
@@ -1097,7 +1109,7 @@ function paginate(&$a) {
$numpages = $a->pager['total'] / $a->pager['itemspage'];
- $numstart = 1;
+ $numstart = 1;
$numstop = $numpages;
if($numpages > 14) {
@@ -1221,6 +1233,7 @@ function set_config($family,$key,$value) {
global $a;
if(get_config($family,$key,true) === false) {
+ $a->config[$family][$key] = $value;
$ret = q("INSERT INTO `config` ( `cat`, `k`, `v` ) VALUES ( '%s', '%s', '%s' ) ",
dbesc($family),
dbesc($key),
@@ -1315,6 +1328,7 @@ function set_pconfig($uid,$family,$key,$value) {
global $a;
if(get_pconfig($uid,$family,$key,true) === false) {
+ $a->config[$uid][$family][$key] = $value;
$ret = q("INSERT INTO `pconfig` ( `uid`, `cat`, `k`, `v` ) VALUES ( %d, '%s', '%s', '%s' ) ",
intval($uid),
dbesc($family),
@@ -1492,7 +1506,9 @@ function lrdd($uri) {
return array();
logger('lrdd: host_meta: ' . $xml, LOGGER_DATA);
- $h = simplexml_load_string($xml);
+
+ $h = parse_xml_string($xml);
+
$arr = convert_xml_element_to_array($h);
if(isset($arr['xrd']['property'])) {
@@ -1564,16 +1580,19 @@ function lrdd($uri) {
$headers = $a->get_curl_headers();
logger('lrdd: headers=' . $headers, LOGGER_DEBUG);
- require_once('library/HTML5/Parser.php');
- $dom = @HTML5_Parser::parse($html);
-
- if($dom) {
- $items = $dom->getElementsByTagName('link');
- foreach($items as $item) {
- $x = $item->getAttribute('rel');
- if($x == "lrdd") {
- $pagelink = $item->getAttribute('href');
- break;
+ // don't try and parse raw xml as html
+ if(! strstr($html,'<?xml')) {
+ require_once('library/HTML5/Parser.php');
+ $dom = @HTML5_Parser::parse($html);
+
+ if($dom) {
+ $items = $dom->getElementsByTagName('link');
+ foreach($items as $item) {
+ $x = $item->getAttribute('rel');
+ if($x == "lrdd") {
+ $pagelink = $item->getAttribute('href');
+ break;
+ }
}
}
}
@@ -1620,9 +1639,15 @@ function lrdd($uri) {
if(! function_exists('fetch_lrdd_template')) {
function fetch_lrdd_template($host) {
$tpl = '';
- $url = 'http://' . $host . '/.well-known/host-meta' ;
- $links = fetch_xrd_links($url);
-logger('template: ' . print_r($links,true));
+
+ $url1 = 'https://' . $host . '/.well-known/host-meta' ;
+ $url2 = 'http://' . $host . '/.well-known/host-meta' ;
+ $links = fetch_xrd_links($url1);
+ logger('template (https): ' . print_r($links,true));
+ if(! count($links)) {
+ $links = fetch_xrd_links($url2);
+ logger('template (http): ' . print_r($links,true));
+ }
if(count($links)) {
foreach($links as $link)
if($link['@attributes']['rel'] && $link['@attributes']['rel'] === 'lrdd')
@@ -1646,7 +1671,7 @@ function fetch_xrd_links($url) {
return array();
logger('fetch_xrd_links: ' . $xml, LOGGER_DATA);
- $h = simplexml_load_string($xml);
+ $h = parse_xml_string($xml);
$arr = convert_xml_element_to_array($h);
$links = array();
@@ -1834,51 +1859,62 @@ function allowed_email($email) {
return $found;
}}
-// Format the like/dislike text for a profile item
-// $cnt = number of people who like/dislike the item
-// $arr = array of pre-linked names of likers/dislikers
-// $type = one of 'like, 'dislike'
-// $id = item id
-// returns formatted text
-
-if(! function_exists('format_like')) {
-function format_like($cnt,$arr,$type,$id) {
- $o = '';
- if($cnt == 1)
- $o .= $arr[0] . (($type === 'like') ? t(' likes this.') : t(' doesn\'t like this.')) . EOL ;
- else {
- $o .= '<span class="fakelink" onclick="openClose(\'' . $type . 'list-' . $id . '\');" >'
- . $cnt . ' ' . t('people') . '</span> ' . (($type === 'like') ? t('like this.') : t('don\'t like this.')) . EOL ;
- $total = count($arr);
- if($total >= MAX_LIKERS)
- $arr = array_slice($arr, 0, MAX_LIKERS - 1);
- if($total < MAX_LIKERS)
- $arr[count($arr)-1] = t('and') . ' ' . $arr[count($arr)-1];
- $str = implode(', ', $arr);
- if($total >= MAX_LIKERS)
- $str .= t(', and ') . $total - MAX_LIKERS . t(' other people');
- $str .= (($type === 'like') ? t(' like this.') : t(' don\'t like this.'));
- $o .= "\t" . '<div id="' . $type . 'list-' . $id . '" style="display: none;" >' . $str . '</div>';
- }
- return $o;
-}}
// wrapper to load a view template, checking for alternate
// languages before falling back to the default
+// obsolete, deprecated.
+
if(! function_exists('load_view_file')) {
function load_view_file($s) {
+ global $lang, $a;
+ if(! isset($lang))
+ $lang = 'en';
$b = basename($s);
$d = dirname($s);
- $lang = get_config('system','language');
- if($lang === false)
- $lang = 'en';
if(file_exists("$d/$lang/$b"))
return file_get_contents("$d/$lang/$b");
+
+ $theme = current_theme();
+
+ if(file_exists("$d/theme/$theme/$b"))
+ return file_get_contents("$d/theme/$theme/$b");
+
return file_get_contents($s);
}}
+if(! function_exists('get_intltext_template')) {
+function get_intltext_template($s) {
+ global $lang;
+
+ if(! isset($lang))
+ $lang = 'en';
+
+ if(file_exists("view/$lang/$s"))
+ return file_get_contents("view/$lang/$s");
+ elseif(file_exists("view/en/$s"))
+ return file_get_contents("view/en/$s");
+ else
+ return file_get_contents("view/$s");
+}}
+
+if(! function_exists('get_markup_template')) {
+function get_markup_template($s) {
+
+ $theme = current_theme();
+
+ if(file_exists("view/theme/$theme/$s"))
+ return file_get_contents("view/theme/$theme/$s");
+ else
+ return file_get_contents("view/$s");
+
+}}
+
+
+
+
+
// for html,xml parsing - let's say you've got
// an attribute foobar="class1 class2 class3"
// and you want to find out if it contains 'class3'.
@@ -1959,29 +1995,6 @@ return str_replace ("%","=",rawurlencode($s));
}}
-if(! function_exists('like_puller')) {
-function like_puller($a,$item,&$arr,$mode) {
-
- $url = '';
- $sparkle = '';
- $verb = (($mode === 'like') ? ACTIVITY_LIKE : ACTIVITY_DISLIKE);
-
- if((activity_match($item['verb'],$verb)) && ($item['id'] != $item['parent'])) {
- $url = $item['author-link'];
- if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === 'dfrn') && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) {
- $url = $a->get_baseurl() . '/redir/' . $item['contact-id'];
- $sparkle = ' class="sparkle" ';
- }
- if(! ((isset($arr[$item['parent'] . '-l'])) && (is_array($arr[$item['parent'] . '-l']))))
- $arr[$item['parent'] . '-l'] = array();
- if(! isset($arr[$item['parent']]))
- $arr[$item['parent']] = 1;
- else
- $arr[$item['parent']] ++;
- $arr[$item['parent'] . '-l'][] = '<a href="'. $url . '"'. $sparkle .'>' . $item['author-name'] . '</a>';
- }
- return;
-}}
if(! function_exists('get_mentions')) {
function get_mentions($item) {
@@ -2026,20 +2039,9 @@ function contact_block() {
intval($shown)
);
if(count($r)) {
- $o .= '<h4 class="contact-h4">' . $total . ' ' . t('Contacts') . '</h4><div id="contact-block">';
+ $o .= '<h4 class="contact-h4">' . sprintf( tt('%d Contact','%d Contacts', $total),$total) . '</h4><div id="contact-block">';
foreach($r as $rr) {
- $redirect_url = $a->get_baseurl() . '/redir/' . $rr['id'];
- if(local_user() && ($rr['uid'] == local_user())
- && ($rr['network'] === 'dfrn')) {
- $url = $redirect_url;
- $sparkle = ' sparkle';
- }
- else {
- $url = $rr['url'];
- $sparkle = '';
- }
-
- $o .= '<div class="contact-block-div"><a class="contact-block-link' . $sparkle . '" href="' . $url . '" ><img class="contact-block-img' . $sparkle . '" src="' . $rr['micro'] . '" title="' . $rr['name'] . ' [' . $rr['url'] . ']" alt="' . $rr['name'] . '" /></a></div>' . "\r\n";
+ $o .= micropro($rr,true,'mpfriend');
}
$o .= '</div><div id="contact-block-end"></div>';
$o .= '<div id="viewcontacts"><a id="viewcontacts-link" href="viewcontacts/' . $a->profile['nickname'] . '">' . t('View Contacts') . '</a></div>';
@@ -2053,6 +2055,44 @@ function contact_block() {
}}
+if(! function_exists('micropro')) {
+function micropro($contact, $redirect = false, $class = '', $textmode = false) {
+
+ if($class)
+ $class = ' ' . $class;
+
+ $url = $contact['url'];
+ $sparkle = '';
+
+ if($redirect) {
+ $a = get_app();
+ $redirect_url = $a->get_baseurl() . '/redir/' . $contact['id'];
+ if(local_user() && ($contact['uid'] == local_user()) && ($contact['network'] === 'dfrn')) {
+ $url = $redirect_url;
+ $sparkle = ' sparkle';
+ }
+ }
+ $click = ((x($contact,'click')) ? ' onclick="' . $contact['click'] . '" ' : '');
+ if($click)
+ $url = '';
+ if($textmode) {
+ return '<div class="contact-block-textdiv' . $class . '"><a class="contact-block-link' . $class . $sparkle
+ . (($click) ? ' fakelink' : '') . '" '
+ . (($url) ? ' href="' . $url . '"' : '') . $click
+ . '" title="' . $contact['name'] . ' [' . $contact['url'] . ']" alt="' . $contact['name']
+ . '" >'. $contact['name'] . '</a></div>' . "\r\n";
+ }
+ else {
+ return '<div class="contact-block-div' . $class . '"><a class="contact-block-link' . $class . $sparkle
+ . (($click) ? ' fakelink' : '') . '" '
+ . (($url) ? ' href="' . $url . '"' : '') . $click . ' ><img class="contact-block-img' . $class . $sparkle . '" src="'
+ . $contact['micro'] . '" title="' . $contact['name'] . ' [' . $contact['url'] . ']" alt="' . $contact['name']
+ . '" /></a></div>' . "\r\n";
+ }
+}}
+
+
+
if(! function_exists('search')) {
function search($s) {
$a = get_app();
@@ -2144,7 +2184,7 @@ function smilies($s) {
$a = get_app();
return str_replace(
- array( '&lt;3', '&lt;/3', '&lt;\\3', ':-)', ';-)', ':-(', ':(', ':-P', ':-"', ':-x', ':-X', ':-D', '8-|', '8-O'),
+ array( '&lt;3', '&lt;/3', '&lt;\\3', ':-)', ';-)', ':-(', ':(', ':-P', ':P', ':-"', ':-x', ':-X', ':-D', '8-|', '8-O'),
array(
'<img src="' . $a->get_baseurl() . '/images/smiley-heart.gif" alt="<3" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-brokenheart.gif" alt="</3" />',
@@ -2154,6 +2194,7 @@ function smilies($s) {
'<img src="' . $a->get_baseurl() . '/images/smiley-frown.gif" alt=":-(" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-frown.gif" alt=":(" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-tongue-out.gif" alt=":-P" />',
+ '<img src="' . $a->get_baseurl() . '/images/smiley-tongue-out.gif" alt=":P" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-kiss.gif" alt=":-\"" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-kiss.gif" alt=":-x" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-kiss.gif" alt=":-X" />',
@@ -2271,8 +2312,15 @@ function profile_sidebar($profile) {
$photo = '<div id="profile-photo-wrapper"><img class="photo" src="' . $profile['photo'] . '" alt="' . $profile['name'] . '" /></div>';
+ // don't show connect link to yourself
+
$connect = (($profile['uid'] != local_user()) ? '<li><a id="dfrn-request-link" href="dfrn_request/' . $profile['nickname'] . '">' . t('Connect') . '</a></li>' : '');
-
+
+ // don't show connect link to authenticated visitors either
+
+ if((remote_user()) && ($_SESSION['visitor_visiting'] == $profile['uid']))
+ $connect = '';
+
if((x($profile,'address') == 1)
|| (x($profile,'locality') == 1)
|| (x($profile,'region') == 1)
@@ -2297,11 +2345,11 @@ function profile_sidebar($profile) {
$pubkey = ((x($profile,'pubkey') == 1) ? '<div class="key" style="display:none;">' . $profile['pubkey'] . '</div>' : '');
- $marital = ((x($profile,'marital') == 1) ? '<div class="marital"><span class="marital-label"><span class="heart">&hearts;</span> ' . t('Status:') . ' </span><span class="marital-text">' . $profile['marital'] . '</span></div></div><div class="profile-clear"></div>' : '');
+ $marital = ((x($profile,'marital') == 1) ? '<div class="marital"><span class="marital-label"><span class="heart">&hearts;</span> ' . t('Status:') . ' </span><span class="marital-text">' . $profile['marital'] . '</span></div><div class="profile-clear"></div>' : '');
- $homepage = ((x($profile,'homepage') == 1) ? '<div class="homepage"><span class="homepage-label">' . t('Homepage:') . ' </span><span class="homepage-url">' . linkify($profile['homepage']) . '</span></div></div><div class="profile-clear"></div>' : '');
+ $homepage = ((x($profile,'homepage') == 1) ? '<div class="homepage"><span class="homepage-label">' . t('Homepage:') . ' </span><span class="homepage-url">' . linkify($profile['homepage']) . '</span></div><div class="profile-clear"></div>' : '');
- $tpl = load_view_file('view/profile_vcard.tpl');
+ $tpl = get_markup_template('profile_vcard.tpl');
$o .= replace_macros($tpl, array(
'$fullname' => $fullname,
@@ -2409,9 +2457,7 @@ function get_birthdays() {
if(! local_user())
return $o;
- $bd_format = get_config('system','birthday_format');
- if(! $bd_format)
- $bd_format = 'g A l F d' ; // 8 AM Friday January 18
+ $bd_format = t('g A l F d') ; // 8 AM Friday January 18
$r = q("SELECT `event`.*, `event`.`id` AS `eid`, `contact`.* FROM `event`
LEFT JOIN `contact` ON `contact`.`id` = `event`.`cid`
@@ -2423,25 +2469,39 @@ function get_birthdays() {
);
if($r && count($r)) {
- $o .= '<div id="birthday-wrapper"><div id="birthday-title">' . t('Birthdays this week:') . '</div>';
- $o .= '<div id="birthday-adjust">' . t("\x28Adjusted for local time\x29") . '</div>';
- $o .= '<div id="birthday-title-end"></div>';
-
- foreach($r as $rr) {
- $now = strtotime('now');
- $today = (((strtotime($rr['start'] . ' +00:00') < $now) && (strtotime($rr['finish'] . ' +00:00') > $now)) ? true : false);
-
- $o .= '<div class="birthday-list" id="birthday-' . $rr['eid'] . '"><a class="sparkle" href="'
- . $a->get_baseurl() . '/redir/' . $rr['cid'] . '">' . $rr['name'] . '</a> '
- . day_translate(datetime_convert('UTC', $a->timezone, $rr['start'], $bd_format)) . (($today) ? ' ' . t('[today]') : '')
- . '</div>' ;
+ $total = 0;
+ foreach($r as $rr)
+ if(strlen($rr['name']))
+ $total ++;
+
+ if($total) {
+ $o .= '<div id="birthday-notice" class="birthday-notice fakelink" onclick=openClose(\'birthday-wrapper\'); >' . t('Birthday Reminders') . ' ' . '(' . $total . ')' . '</div>';
+ $o .= '<div id="birthday-wrapper" style="display: none;" ><div id="birthday-title">' . t('Birthdays this week:') . '</div>';
+ $o .= '<div id="birthday-adjust">' . t("\x28Adjusted for local time\x29") . '</div>';
+ $o .= '<div id="birthday-title-end"></div>';
+
+ foreach($r as $rr) {
+ if(! strlen($rr['name']))
+ continue;
+ $now = strtotime('now');
+ $today = (((strtotime($rr['start'] . ' +00:00') < $now) && (strtotime($rr['finish'] . ' +00:00') > $now)) ? true : false);
+
+ $o .= '<div class="birthday-list" id="birthday-' . $rr['eid'] . '"><a class="sparkle" href="'
+ . $a->get_baseurl() . '/redir/' . $rr['cid'] . '">' . $rr['name'] . '</a> '
+ . day_translate(datetime_convert('UTC', $a->timezone, $rr['start'], $bd_format)) . (($today) ? ' ' . t('[today]') : '')
+ . '</div>' ;
+ }
+ $o .= '</div></div>';
}
-
- $o .= '</div>';
}
+ return $o;
+}}
- return $o;
+if(! function_exists('normalise_link')) {
+function normalise_link($url) {
+ $ret = str_replace(array('https:','//www.'), array('http:','//'), $url);
+ return(rtrim($ret,'/'));
}}
/**
@@ -2457,9 +2517,7 @@ function get_birthdays() {
if(! function_exists('link_compare')) {
function link_compare($a,$b) {
- $a1 = str_replace(array('https:','//www.'), array('http:','//'), $a);
- $b1 = str_replace(array('https:','//www.'), array('http:','//'), $b);
- if(strcasecmp($a1,$b1) === 0)
+ if(strcasecmp(normalise_link($a),normalise_link($b)) === 0)
return true;
return false;
}}
@@ -2512,34 +2570,38 @@ function proc_run($cmd){
proc_close(proc_open($cmdline." &",array(),$foo));
}}
-/*
- * Return full URL to theme which is currently in effect.
- * Provide a sane default if nothing is chosen or the specified theme does not exist.
- */
-
-if(! function_exists('current_theme_url')) {
-function current_theme_url() {
-
+if(! function_exists('current_theme')) {
+function current_theme(){
$app_base_themes = array('duepuntozero', 'loozah');
-
+
$a = get_app();
-
+
$system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : '');
- $theme_name = ((x($_SESSION,'theme')) ? $_SESSION['theme'] : $system_theme);
-
+ $theme_name = ((is_array($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $system_theme);
+
if($theme_name && file_exists('view/theme/' . $theme_name . '/style.css'))
- return($a->get_baseurl() . '/view/theme/' . $theme_name . '/style.css');
-
+ return($theme_name);
+
foreach($app_base_themes as $t) {
if(file_exists('view/theme/' . $t . '/style.css'))
- return($a->get_baseurl() . '/view/theme/' . $t . '/style.css');
- }
-
+ return($t);
+ }
+
$fallback = glob('view/theme/*/style.css');
if(count($fallback))
- return($a->get_baseurl() . $fallback[0]);
+ return (str_replace('view/theme/','', str_replace("/style.css","",$fallback[0])));
-
+}}
+
+/*
+* Return full URL to theme which is currently in effect.
+* Provide a sane default if nothing is chosen or the specified theme does not exist.
+*/
+if(! function_exists('current_theme_url')) {
+function current_theme_url() {
+ global $a;
+ $t = current_theme();
+ return($a->get_baseurl() . '/view/theme/' . $t . '/style.css');
}}
if(! function_exists('feed_birthday')) {
@@ -2630,7 +2692,7 @@ if(! function_exists('get_plink')) {
function get_plink($item) {
$a = get_app();
$plink = (((x($item,'plink')) && (! $item['private'])) ? '<div class="wall-item-links-wrapper"><a href="'
- . $item['plink'] . '" title="' . t('link to source') . '" target="external-link" ><img src="' . $a->get_baseurl() . '/images/remote-link.gif" alt="' . t('link to source') . '" /></a></div>' : '');
+ . $item['plink'] . '" title="' . t('link to source') . '" target="external-link" class="icon remote-link"></a></div>' : '');
return $plink;
}}
@@ -2639,29 +2701,46 @@ function unamp($s) {
return str_replace('&amp;', '&', $s);
}}
-if(! function_exists('extract_item_authors')) {
-function extract_item_authors($arr,$uid) {
- if((! $uid) || (! is_array($arr)) || (! count($arr)))
- return array();
- $urls = array();
- foreach($arr as $rr) {
- if(! in_array("'" . dbesc($rr['author-link']) . "'",$urls))
- $urls[] = "'" . dbesc($rr['author-link']) . "'";
- }
-
- // pre-quoted, don't put quotes on %s
- if(count($urls)) {
- $r = q("SELECT `id`,`url` FROM `contact` WHERE `uid` = %d AND `url` IN ( %s ) AND `network` = 'dfrn' AND `self` = 0 AND `blocked` = 0 ",
- intval($uid),
- implode(',',$urls)
- );
- if(count($r)) {
- $ret = array();
- foreach($r as $rr)
- $ret[$rr['url']] = $rr['id'];
- return $ret;
+if(! function_exists('lang_selector')) {
+function lang_selector() {
+ global $lang;
+ $o .= '<div id="language-selector" style="display: none;" >';
+ $o .= '<form action="" method="post" ><select name="system_language" onchange="this.form.submit();" >';
+ $langs = glob('view/*/strings.php');
+ if(is_array($langs) && count($langs)) {
+ if(! in_array('view/en/strings.php',$langs))
+ $langs[] = 'view/en/';
+ foreach($langs as $l) {
+ $ll = substr($l,5);
+ $ll = substr($ll,0,strrpos($ll,'/'));
+ $selected = (($ll === $lang) ? ' selected="selected" ' : '');
+ $o .= '<option value="' . $ll . '"' . $selected . '>' . $ll . '</option>';
}
}
- return array();
+ $o .= '</select></form></div>';
+ return $o;
+}}
+
+
+if(! function_exists('parse_xml_string')) {
+function parse_xml_string($s) {
+ if(! strstr($s,'<?xml'))
+ return false;
+ $s2 = substr($s,strpos($s,'<?xml'));
+ libxml_use_internal_errors(true);
+ $x = @simplexml_load_string($s2);
+ if(count(libxml_get_errors()))
+ foreach(libxml_get_errors() as $err)
+ logger('libxml: parse: ' . $err->code." at ".$err->line.":".$err->column." : ".$err->message, LOGGER_DATA);
+ libxml_clear_errors();
+ return $x;
+}}
+
+if(! function_exists('is_site_admin')) {
+function is_site_admin() {
+ $a = get_app();
+ if(local_user() && x($a->user,'email') && x($a->config,'admin_email') && ($a->user['email'] === $a->config['admin_email']))
+ return true;
+ return false;
}} \ No newline at end of file
diff --git a/database.sql b/database.sql
index f47a5967e..c15a9ad9c 100644
--- a/database.sql
+++ b/database.sql
@@ -64,6 +64,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
`issued-id` char(255) NOT NULL,
`dfrn-id` char(255) NOT NULL,
`url` char(255) NOT NULL,
+ `addr` char(255) NOT NULL,
`alias` char(255) NOT NULL,
`pubkey` text NOT NULL,
`prvkey` text NOT NULL,
@@ -85,6 +86,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
`priority` tinyint(3) NOT NULL,
`blocked` tinyint(1) NOT NULL DEFAULT '1',
`readonly` tinyint(1) NOT NULL DEFAULT '0',
+ `writable` tinyint(1) NOT NULL DEFAULT '0',
`pending` tinyint(1) NOT NULL DEFAULT '1',
`rating` tinyint(1) NOT NULL DEFAULT '0',
`reason` text NOT NULL,
@@ -164,6 +166,7 @@ CREATE TABLE IF NOT EXISTS `item` (
`gravity` tinyint(1) NOT NULL DEFAULT '0',
`parent` int(10) unsigned NOT NULL DEFAULT '0',
`parent-uri` char(255) NOT NULL,
+ `extid` char(255) NOT NULL,
`thr-parent` char(255) NOT NULL,
`created` datetime NOT NULL,
`edited` datetime NOT NULL,
@@ -184,6 +187,7 @@ CREATE TABLE IF NOT EXISTS `item` (
`plink` char(255) NOT NULL,
`resource-id` char(255) NOT NULL,
`tag` mediumtext NOT NULL,
+ `attach` mediumtext NOT NULL,
`inform` mediumtext NOT NULL,
`location` char(255) NOT NULL,
`coord` char(255) NOT NULL,
@@ -192,6 +196,7 @@ CREATE TABLE IF NOT EXISTS `item` (
`deny_cid` mediumtext NOT NULL,
`deny_gid` mediumtext NOT NULL,
`private` tinyint(1) NOT NULL DEFAULT '0',
+ `pubmail` tinyint(1) NOT NULL DEFAULT '0',
`visible` tinyint(1) NOT NULL DEFAULT '0',
`unseen` tinyint(1) NOT NULL DEFAULT '1',
`deleted` tinyint(1) NOT NULL DEFAULT '0',
@@ -204,6 +209,7 @@ CREATE TABLE IF NOT EXISTS `item` (
KEY `wall` (`wall`),
KEY `parent` (`parent`),
KEY `parent-uri` (`parent-uri`),
+ KEY `extid` (`extid`),
KEY `created` (`created`),
KEY `edited` (`edited`),
KEY `visible` (`visible`),
@@ -297,7 +303,8 @@ CREATE TABLE IF NOT EXISTS `profile` (
`sexual` char(255) NOT NULL,
`politic` char(255) NOT NULL,
`religion` char(255) NOT NULL,
- `keywords` text NOT NULL,
+ `pub_keywords` text NOT NULL,
+ `prv_keywords` text NOT NULL,
`about` text NOT NULL,
`summary` char(255) NOT NULL,
`music` text NOT NULL,
@@ -314,7 +321,9 @@ CREATE TABLE IF NOT EXISTS `profile` (
`thumb` char(255) NOT NULL,
`publish` tinyint(1) NOT NULL DEFAULT '0',
`net-publish` tinyint(1) NOT NULL DEFAULT '0',
- PRIMARY KEY (`id`)
+ PRIMARY KEY (`id`),
+ FULLTEXT KEY `pub_keywords` (`pub_keywords`),
+ FULLTEXT KEY `prv_keywords` (`prv_keywords`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
@@ -363,6 +372,7 @@ CREATE TABLE IF NOT EXISTS `user` (
`email` char(255) NOT NULL,
`openid` char(255) NOT NULL,
`timezone` char(128) NOT NULL,
+ `language` char(32) NOT NULL DEFAULT 'en',
`register_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`login_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`default-location` char(255) NOT NULL,
@@ -374,10 +384,12 @@ CREATE TABLE IF NOT EXISTS `user` (
`sprvkey` text NOT NULL,
`verified` tinyint(1) unsigned NOT NULL DEFAULT '0',
`blocked` tinyint(1) unsigned NOT NULL DEFAULT '0',
+ `blockwall` tinyint(1) unsigned NOT NULL DEFAULT '0',
`notify-flags` int(11) unsigned NOT NULL DEFAULT '65535',
`page-flags` int(11) unsigned NOT NULL DEFAULT '0',
`pwdreset` char(255) NOT NULL,
`maxreq` int(11) NOT NULL DEFAULT '10',
+ `expire` int(11) unsigned NOT NULL DEFAULT '0',
`allow_cid` mediumtext NOT NULL,
`allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL,
@@ -479,3 +491,48 @@ CREATE TABLE IF NOT EXISTS `cache` (
`v` TEXT NOT NULL,
`updated` DATETIME NOT NULL
) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+
+
+CREATE TABLE IF NOT EXISTS `fcontact` (
+`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`url` CHAR( 255 ) NOT NULL ,
+`name` CHAR( 255 ) NOT NULL ,
+`photo` CHAR( 255 ) NOT NULL
+) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `ffinder` (
+`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`uid` INT UNSIGNED NOT NULL ,
+`cid` INT UNSIGNED NOT NULL ,
+`fid` INT UNSIGNED NOT NULL
+) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+
+
+CREATE TABLE IF NOT EXISTS `mailacct` (
+`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`uid` INT NOT NULL,
+`server` CHAR( 255 ) NOT NULL ,
+`port` INT NOT NULL,
+`ssltype` CHAR( 16 ) NOT NULL,
+`mailbox` CHAR( 255 ) NOT NULL,
+`user` CHAR( 255 ) NOT NULL ,
+`pass` TEXT NOT NULL ,
+`reply_to` CHAR( 255 ) NOT NULL ,
+`pubmail` TINYINT(1) NOT NULL DEFAULT '0',
+`last_check` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
+) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `attach` (
+`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`uid` INT NOT NULL ,
+`filetype` CHAR( 64 ) NOT NULL ,
+`filesize` INT NOT NULL ,
+`data` LONGBLOB NOT NULL ,
+`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
+`edited` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
+`allow_cid` MEDIUMTEXT NOT NULL ,
+`allow_gid` MEDIUMTEXT NOT NULL ,
+`deny_cid` MEDIUMTEXT NOT NULL ,
+`deny_gid` MEDIUMTEXT NOT NULL
+) ENGINE = MYISAM DEFAULT CHARSET=utf8;
+
diff --git a/doc/Account-Basics.md b/doc/Account-Basics.md
new file mode 100644
index 000000000..9c6548430
--- /dev/null
+++ b/doc/Account-Basics.md
@@ -0,0 +1,66 @@
+Account Basics
+==============
+
+* [Home](help)
+
+
+**Registration**
+
+Not all Friendika sites allow open registration. If registration is allowed, you will see a "Register" link immediately below the login prompts on the site home page. Following this link will take you to the site Registration page.
+
+*OpenID*
+
+The first field on the Registration page is for an OpenID address. If you do not have an OpenID address or do not wish to use OpenID, leave this field blank. If you have an OpenID account elsewhere and wish to use it, enter the address into this field and click 'Register'. Friendika will attempt to extract as much information as possible from your OpenID provider and return to this page with those items already filled in.
+
+*Your Full Name*
+
+Please provide your full name as you would like it to be displayed on this system.
+
+*Email Address*
+
+Please provide a valid email address. Your email address is **never** published. We need this to send you account information and your login details. You may also occasionally receive notifications of incoming messages or items requiring your attention, but you have the ability to completely disable these once from your Settings page once you have logged in.
+
+*Nickname*
+
+A nickname is used to generate web addresses for many of your personal pages, and is also treated like an email address when establishing communications with others. Due to the way that the nickname is used, it has some limitations. It must contain only US-ASCII text characters and numbers, and must also start with a text character. It also must be unique on this system. This is used in many places to identify your account, and once set - cannot be changed.
+
+
+
+*Directory Publishing*
+
+The Registration form also allows you to choose whether or not to list your account in the online directory. This is like a "phone book" and you may choose to be unlisted. We recommend that you select 'Yes' so that other people (friends, family, etc.) will be able to find you. If you choose 'No', you will essentially be invisible and have few opportunities for interaction. Whichever you choose, this can be changed any time from your Settings page after you login.
+
+
+*Register*
+
+Once you have provided the necessary details, click the 'Register' button. An email will be sent to you providing your account login details. Some sites may require administrator approval before the registration is processed, and you will be alerted if this is the case. Please watch your email (including spam folders) for your registration approval.
+
+
+
+
+**Login Page**
+
+On the 'Login' page, please enter your login information that was provided during registration. You may use either your nickname or email address as a Login Name.
+
+If you use your account to manage multiple '[Pages](help/Pages)' and these all have the same email address, please enter the nickname for the account you wish to manage.
+
+*If* your account has been OpenID enabled, you may use your OpenID address as a login name and leave the password blank. You will be redirected to your OpenID provider to complete your authorisation.
+
+Otherwise, enter your password. This will have been initially provided in your registration email message. Your password is case-sensitive, so please check your 'Caps Lock' key if you are having difficulty logging in.
+
+
+**Changing Your Password**
+
+After your first login, please visit the 'Settings' page from the top menu bar and change your password to something that you will remember.
+
+
+
+**See Also**
+
+* [Profiles](help/Profiles)
+
+* [Groups and Privacy](help/Groups-and-Privacy)
+
+* [Remove Account](help/Remove-Account)
+
+ \ No newline at end of file
diff --git a/doc/Bugs-and-Issues.md b/doc/Bugs-and-Issues.md
new file mode 100644
index 000000000..ed2be00c8
--- /dev/null
+++ b/doc/Bugs-and-Issues.md
@@ -0,0 +1,30 @@
+Bugs and Issues
+===============
+
+* [Home](help)
+
+
+Please report any bugs/issues you encounter using our bug tracker at [[http://bugs.friendika.com]]
+
+Try to provide as much information as you can about the bug (including the full text of any error messages or notices), and if possible your Friendika version.
+
+Your Friendika version may be found in newer releases by visiting http://YOURFRIENDIKASITE/friendika
+
+For older versions, view the HTML source of your profile page. The Friendika version is in the HTML header, 5-10 lines from the top of the page.
+
+For really old versions which don't have a version number in the HTML header - please upgrade. Your bug was probably fixed a long time ago.
+
+**Bug Sponsorship**
+
+The bug/issue database allows you to sponsor issues. This provides an incentive for developers to work on your issue. This isn't necessary - we don't like bugs and will try to fix them. This has more importance for future development projects and feature requests.
+
+Bug sponsorship works on the honour system. If you agree to pay $10 to fix a bug, when the fix has been checked in and verified you should send a paypal payment to the developer assigned to the bug. Don't ever think you can get away with not paying a developer for work performed. Some of these guys could hack into your credit card account if you make them mad.
+
+At the present time, one has to be approved as a "developer" to be able to assign themselves to a sponsored bug. This requires the developer to have some history fixing Friendika bugs. This is for everybody's assurance that the bug fix will work well with Friendika. If you wish to become approved as a developer, work on and check in some non-sponsored issues or your own projects and we will move you up the ladder.
+
+If you truly feel you have the solution to a sponsored bug but aren't an approved developer, you risk a sponsored developer assigning the bug to themselves before you check it in, but if they haven't done so - include a short note with your pull request. Assuming that it meets our code standards, we'll see that you get credit.
+
+If you sponsor a project at greater than a $50 level, you may be requested by the developer for payment up front before work has begun (typically half). Again this is on the honour system - and is mostly to avoid payment issues and disagreements later. You should also expect to see some progress updates or demonstrations if the work takes more than a week or two. If the work is not completed within a reasonable time (as decided by those involved), you are entitled to get your money back.
+
+Friendika is not involved in these transactions. It is purely a personal agreement between sponsors and developers. If there are any issues, the parties will need to work it out between themselves. We're just providing some guidelines to help avoid potential problems.
+
diff --git a/doc/Connectors.md b/doc/Connectors.md
new file mode 100644
index 000000000..45bce8d9a
--- /dev/null
+++ b/doc/Connectors.md
@@ -0,0 +1,63 @@
+Connectors
+==========
+
+* [Home](help)
+
+Connectors allow you to connect with external social networks and services. Connectors are only required for posting to existing accounts on Facebook, Twitter, and StatusNet. There is also a connector for accessing your email INBOX.
+
+If the following network connectors are installed on your system, select the following links to visit the appropriate settings page and configure them for your account:
+
+* [Facebook](/settings/addon)
+* [Twitter](/settings/addon)
+* [StatusNet](/settings/addon)
+* [Email](/settings)
+
+Instructions For Connecting To People On Specific Services
+==========================================================
+
+**Friendika**
+
+
+You may connect by providing your Identity Address on the 'Connect' page of any Friendika member. You may also put their Identity Address into the Connect box on your [Contacts](contacts) page.
+
+**Identi.ca/StatusNet/GNU-Social**
+
+These are described as the "federated social web" or OStatus contacts.
+
+Please note that there are **no** privacy provisions on the OStatus network. Any message which is delivered to **any** OStatus member is visible to anybody in the world and will negate any privacy settings that you have in effect. These messages will also turn up in public searches.
+
+To connect with an OStatus member insert their profile URL or Identity address into the Connect box on your [Contacts](contacts) page.
+
+The StatusNet connector may be used if you wish posts to appear on an OStatus site using an existing OStatus account.
+
+It is not necessary to do this, as you may 'follow' OStatus members from Friendika and they may follow you (by placing their own Identity Address into your 'Connect' page).
+
+**Blogger, Wordpress, RSS feeds, arbitrary web pages**
+
+Put the URL into the Connect box on your [Contacts](contacts) page. You will not be able to reply to these contacts.
+
+This will allow you to _connect_ with millions of pages on the internet. All that we require to do this is that the page use a discoverable feed using either the RSS or Atom syndication format, and which provides an author name and a site image in a form which we can extract.
+
+
+**Twitter**
+
+To follow a Twitter member, put the URL of the Twitter member's main page into the Connect box on your [Contacts](contacts) page. To reply, you must have the Twitter connector installed, and reply using your own status editor. Begin the message with @twitterperson replacing with the Twitter username.
+
+**Diaspora**
+
+To follow a Diaspora member, put either the URL or the pod address (Identity Address) of the Diaspora member into the Connect box on your [Contacts](contacts) page. It is not currently possible to reply to Diaspora members. This will be provided in a future release (once the Diaspora communication protocols stabilise and are published).
+
+**Email**
+
+Configure the email connector from your [Settings](settings) page. Once this has been done, you may enter an email addres to connect with using the Connect box on your [Contacts](contacts) page. They must be the sender of a message which is currently in your INBOX for the connect to succeed. You may include email contacts in private conversations.
+
+**Facebook**
+
+The Facebook connector is a plugin/addon which allows you to interact with friends on Facebook from within Friendika. If enabled, your Facebook friend list will be imported, and you will see and be able to respond to Facebook posts. Facebook members may also be added to private conversation groups. You will not be able to connect with individual Facebook accounts - but will have your entire friend list imported and updated if new friends are added.
+
+Assuming the Facebook plugin/addon has been installed on your system, it can be enabled by going to your [Plugin Settings](settings/addon) page, and then select "Facebook Connector Settings" on that page. This will only appear if the Facebook plugin/addon has been installed. Follow the instruction to install or remove the Facebook connector.
+
+You may also choose whether your public postings are posted to Facebook by default. You may toggle this setting at any time from the Permissions settings of the status post editor (click the lock icon). This setting has no effect on private conversations - which will always be delivered to Facebook friends who are included in the permissions.
+
+(Note: At this time, Facebook contacts will not be able to view any private photos. This will be resolved in a future release. Facebook contacts may however see any public photos you have uploaded.)
+
diff --git a/doc/Developers.md b/doc/Developers.md
new file mode 100644
index 000000000..ebfaf97c3
--- /dev/null
+++ b/doc/Developers.md
@@ -0,0 +1,22 @@
+Friendika Developer Guide
+
+Here is how you can join us.
+
+First, get yourself a working git package on the system where you will be
+doing development.
+
+Create your own github account.
+
+You may fork/clone the Friendika repository from [https://github.com/friendika/friendika.git](https://github.com/friendika/friendika.git).
+
+Follow the instructions provided here: [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/)
+to create and use your own tracking fork on github
+
+Then go to your github page and create a "Pull request" when you are ready
+to notify us to merge your work.
+
+**Important**
+
+Please pull in any changes from the project repository and merge them with your work **before** issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions.
+
+Also - **test your changes**. Don't assume that a simple fix won't break something else. If possible get an experienced Friendika developer to review the code. \ No newline at end of file
diff --git a/doc/Groups-and-Privacy.md b/doc/Groups-and-Privacy.md
new file mode 100644
index 000000000..7ff76906f
--- /dev/null
+++ b/doc/Groups-and-Privacy.md
@@ -0,0 +1,36 @@
+Groups and Privacy
+==================
+
+* [Home](help)
+
+
+Groups are merely collections of friends. But Friendika uses these to unlock some very powerful features.
+
+To create a group, visit your Friendika "Contacts" page and select "Create a new group". Give the group a name.
+
+This brings you to a page where you can select the group members.
+
+You will have two boxes on this page. The top box is the roster of current group members. Below that is another box containing all of your friends who are *not* members of the group.
+
+If you click on a photo of a person who isn't in the group, they will be put into the group. If you click on a photo of a person who is in the group, they will be removed from it.
+
+Once you have created a group, you may use it in any access control list. This is the little lock icon beneath the status update box on your home page. If you click this you can select who can see and who can *not* see the post you are about to make. These can be individual people or groups.
+
+On your "Network" page you will find posts and conversation from everybody in your network. You may select an individual group on this page to show conversations pertaining only to members of that group.
+
+But wait, there's more...
+
+If you look carefully when visiting a group from your Network page, the lock icon under the status update box has an exclamation mark next to it. This is meant to draw attention to that lock. Click the lock. You will see that since you are only viewing a certain group of people, your status updates while on that screen default to only being seen by that same group of people. This is how you keep your future employers from seeing what you write to your drinking buddies. You can over-ride this setting, but this makes it easy to separate your conversations into different friend circles.
+
+These private conversations work best when your friends are Freindika members. We know who else can see the conversations - nobody, *unless* your friends cut and paste the messages and send them to others.
+
+This is a trust issue you need to be aware of. No software in the world can prevent your friends from leaking your confidential and trusted communications. Only a wise choice of friends.
+
+But it isn't as clear cut when dealing with status.net, identi.ca and other network providers. You are encouraged to be **very** cautious when other network members are in a group because it's entirely possible for your private messages to end up in a public newsfeed. If you look at the Contact Edit page for any person, we will tell you whether or not they are members of an insecure network where you should exercise caution.
+
+On your "Settings" page, you may create a set of default permissions which apply to every post that you create.
+
+Once you have created a post, you can not change the permissions assigned. Within seconds it has been delivered to lots of people - and perhaps everybody it was addressed to. If you mistakenly created a message and wish you could take it back, the best you can do is to delete it. We will send out a delete notification to everybody who received the message - and this should wipe out the message with the same speed it was initially propagated. In most cases it will be completely wiped from the Internet - in under a minute. Again, this applies to Friendika networks. Once a message spreads to other networks, it may not be removed quickly and in some cases it may not be removed at all.
+
+In case you haven't yet figured this out, we are encouraging you to encourage your friends to use Friendika - because all these privacy features work much better within a privacy-aware network. Many of the other social networks Friendika can connect to have no privacy controls.
+
diff --git a/doc/Home.md b/doc/Home.md
new file mode 100644
index 000000000..f91895620
--- /dev/null
+++ b/doc/Home.md
@@ -0,0 +1,36 @@
+Friendika Documentation and Resources
+=====================================
+
+
+**Contents**
+
+* [Account Basics](help/Account-Basics)
+* [Profiles](help/Profiles)
+* [Connectors](help/Connectors)
+* [Making Friends](help/Making-Friends)
+* [Groups and Privacy](help/Groups-and-Privacy)
+* [Tags and Mentions](help/Tags-and-Mentions)
+* [Pages](help/Pages)
+* [Remove Account](help/Remove-Account)
+* [Bugs and Issues](help/Bugs-and-Issues)
+
+**Technical Documentation**
+
+* [Install](help/Install)
+* [Settings](help/Settings)
+* [Plugins](help/Plugins)
+* [Installing Connectors (Facebook/Twitter/StatusNet)](help/Installing-Connectors)
+* [Message Flow](help/Message-Flow)
+* [Developers](help/Developers)
+
+
+**External Resources**
+
+* [Main Website](http://friendika.com)
+* [Forums](http://groups.google.com/group/friendika)
+* [Developer Forums](http://groups.google.com/group/friendika-dev)
+
+**About**
+
+* [Site/Version Info](friendika)
+
diff --git a/doc/Install.md b/doc/Install.md
new file mode 100644
index 000000000..3538d7bfa
--- /dev/null
+++ b/doc/Install.md
@@ -0,0 +1,97 @@
+Friendika Installation
+
+We've tried very hard to ensure that Friendika will run on commodity hosting platforms - such as those used to host Wordpress blogs and Drupal websites. But be aware that Friendika is more than a simple web application. It is a complex communications system which more closely resembles an email server than a web server. For reliability and performance, messages are delivered in the background and are queued for later delivery when sites are down. This kind of functionality requires a bit more of the host system than the typical blog. Not every PHP/MySQL hosting provider will be able to support Friendika. Many will. But **please** review the requirements and confirm these with your hosting provider prior to installation.
+
+Also if you encounter installation issues, please let us know via the forums at http://groups.google.com/group/friendika or file an issue at http://bugs.friendika.com . Please be as clear as you can about your operating environment and provide as much detail as possible about any error messages you may see, so that we can prevent it from happening in the future. Due to the large variety of operating systems and PHP platforms in existence we may have only limited ability to debug your PHP installation or acquire any missing modules - but we will do our best to solve any general code issues.
+
+Before you begin: Choose a domain name or subdomain name for your server. Put some thought into this - because changing it after installation is currently not-supported. Things will break, and some of your friends may have difficulty communicating with you. We plan to address this limitation in a future release.
+
+
+1. Requirements
+ - Apache with mod-rewrite enabled and "Options All" so you can use a
+local .htaccess file
+
+ - PHP 5.2+. The later the better. You'll need 5.3 for encryption of key exchange conversations. On a Windows environment, 5.2+ might not work as the function dns_get_record() is only available with version 5.3.
+ - PHP *command line* access with register_argc_argv set to true in the
+php.ini file
+ - curl, gd, mysql, and openssl extensions
+ - some form of email server or email gateway such that PHP mail() works
+ - mcrypt (optional; used for server-to-server message encryption)
+
+ - Mysql 5.x
+
+ - ability to schedule jobs with cron (Linux/Mac) or Scheduled Tasks
+(Windows) [Note: other options are presented in Section 7 of this document]
+
+ - Installation into a top-level domain or sub-domain (without a
+directory/path component in the URL) is preferred. Directory paths will
+not be as convenient to use and have not been thoroughly tested.
+
+
+ [Dreamhost.com offers all of the necessary hosting features at a
+reasonable price. If your hosting provider doesn't allow Unix shell access,
+you might have trouble getting everything to work.]
+
+2. Unpack the Friendika files into the root of your web server document area.
+
+ - If you are able to do so, we recommend using git to clone the source repository rather than to use a packaged tar or zip file. This makes the software much easier to update. The Linux command to clone the repository into a directory "mywebsite" would be
+
+ `git clone http://github.com/friendika/friendika.git mywebsite`
+
+ and then you can pick up the latest changes at any time with
+
+ `git pull`
+
+
+
+ - If you copy the directory tree to your webserver, make sure
+ that you also copy .htaccess - as "dot" files are often hidden
+ and aren't normally copied.
+
+
+3. Create an empty database and note the access details (hostname, username, password, database name).
+
+4. Visit your website with a web browser and follow the instructions. Please note any error messages and correct these before continuing.
+
+5. *If* the automated installation fails for any reason, check the following:
+
+ - ".htconfig.php" exists ... If not, edit htconfig.php and change system settings. Rename
+to .htconfig.php
+ - Database is populated. ... If not, import the contents of "database.sql" with phpmyadmin
+or mysql command line
+
+6. At this point visit your website again, and register your personal account.
+Registration errors should all be recoverable automatically.
+If you get any *critical* failure at this point, it generally indicates the
+database was not installed correctly. You might wish to move/rename
+.htconfig.php to another name and empty (called 'dropping') the database
+tables, so that you can start fresh.
+
+7. Set up a cron job or scheduled task to run the poller once every 5-10
+minutes in order to perform background processing. Example:
+
+ `cd /base/directory; /path/to/php include/poller.php`
+
+Change "/base/directory", and "/path/to/php" as appropriate for your situation.
+
+If you are using a Linux server, run "crontab -e" and add a line like the
+one shown, substituting for your unique paths and settings:
+
+`*/10 * * * * cd /home/myname/mywebsite; /usr/bin/php include/poller.php`
+
+You can generally find the location of PHP by executing "which php". If you
+have troubles with this section please contact your hosting provider for
+assistance. Friendika will not work correctly if you cannot perform this step.
+
+Alternative: You may be able to use the 'poormancron' plugin to perform this step
+if you are using a recent Friendika release. To do this, edit the file ".htconfig.php"
+and look for a line describing your plugins. On a fresh installation, it will look like
+
+`$a->config['system']['addon'] = 'js_upload';`
+
+This indicates the "js_upload" addon module is enabled. You may add additional
+addons/plugins using this same line in the configuration file. Change it to read
+
+`$a->config['system']['addon'] = 'js_upload,poormancron';`
+
+and save your changes.
diff --git a/doc/Installing-Connectors.md b/doc/Installing-Connectors.md
new file mode 100644
index 000000000..e43f17fe3
--- /dev/null
+++ b/doc/Installing-Connectors.md
@@ -0,0 +1,154 @@
+Installing Connectors (Facebook/Twitter/StatusNet)
+==================================================
+
+* [Home](help)
+
+
+Friendika uses plugins to provide connectivity to some networks, such as Facebook and Twitter.
+
+There is also a plugin to post through to an existing account on a Status.Net service. You do not require this to communicate with Status.Net members from Friendika - only if you wish to post to an existing account.
+
+All three of these plugins require an account on the target network. In addition you (or typically the server administrator) will need to obtain an API key to provide authenticated access to your Friendika server.
+
+**Site Configuration**
+
+Plugins must be installed by the site administrator before they can be use. This is accomplished through the site
+configuration file ".htconfig.php".
+
+The configuration directive looks like:
+
+```
+$a->config['system']['addon'] = ' ... list of plugins separated by commas ... ';
+```
+
+Example:
+To install all of the connector addons in addition to the default Javascript photo uploader this line would look like:
+
+```
+$a->config['system']['addon'] = 'js_upload,facebook,twitter,statusnet';
+```
+
+You may also add other plugins/addons as your needs require.
+
+
+Each of the connectors also requires an "API key" from the service you wish to connect with. This is also installed in the
+configuration file. The method for obtaining these keys varies greatly - but almost always requires an existing account on the target service. Once installed, these API keys can usually be shared by all site members.
+
+
+The details of configuring each service follows (much of this information comes directly from the plugin source files):
+
+**Twitter Plugin for Friendika**
+
+* Author: Tobias Diekershoff
+* tobias.diekershoff@gmx.net
+
+* License:3-clause BSD license (same as Friendika)
+
+Configuration:
+To use this plugin you need a OAuth Consumer key pair (key & secret)
+you can get it from Twitter at https://twitter.com/apps
+
+Register your Friendika site as "Client" application with "Read & Write" access.
+We do not need "Twitter as login". When you've registered the app you get the
+OAuth Consumer key and secret pair for your application/site.
+
+Add this key pair to your global .htconfig.php
+
+```
+$a->config['twitter']['consumerkey'] = 'your consumer_key here';
+$a->config['twitter']['consumersecret'] = 'your consumer_secret here';
+```
+
+After this, your user can configure their Twitter account settings
+from "Settings -> Plugin Settings".
+
+Documentation: http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/Twitter_Plugin
+
+
+**StatusNet Plugin for Friendika**
+
+* Author: Tobias Diekershoff
+* tobias.diekershoff@gmx.net
+
+* License:3-clause BSD license (same as Friendika)
+
+Configuration
+
+When the addon is activated the user has to aquire the following in order to connect to the StatusNet account of choice.
+
+* The base URL for the StatusNet API, for identi.ca this is https://identi.ca/api/
+* OAuth Consumer key & secret
+
+To get the OAuth Consumer key pair the user has to
+
+(a) ask her Friendika admin if a pair already exists or
+(b) has to register the Friendika server as a client application on the StatusNet server.
+
+This can be done from the account settings under "Settings -> Connections -> Register an OAuth client application -> Register new application".
+
+During the registration of the OAuth client remember the following:
+
+* Application names must be unique on the StatusNet site, so we recommend a Name of 'friendika-nnnn', replace 'nnnn' with a random number or your website name.
+* there is no callback url
+* register a desktop client
+* with read & write access
+* the Source URL should be the URL of your Friendika server
+
+After the required credentials for the application are stored in the configuration you have to actually connect your Friendika account with StatusNet. This is done from the Settings -> Plugin Settings page. Follow the Sign in with StatusNet button, allow access and then copy the security code into the box provided. Friendika will then try to acquire the final OAuth credentials from the API.
+
+If successful the addon settings will allow you to select to post your public messages to your StatusNet account (have a look behind the little lock symbol beneath the status "editor" on your Home or Network pages).
+
+Documentation: http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/StatusNet_Plugin
+
+
+
+**Installing the Friendika/Facebook connector**
+
+* register an API key for your site from developer.facebook.com
+
+This requires a Facebook account, and may require additional authentication in the form of credit card or mobile phone verification.
+
+a. We'd be very happy if you include "Friendika" in the application name
+to increase name recognition. The Friendika icons are also present
+in the images directory and may be uploaded as a Facebook app icon.
+Use images/friendika-16.jpg for the Icon and images/friendika-128.jpg for the Logo.
+
+b. The url should be your site URL with a trailing slash.
+You may use http://portal.friendika.com/privacy as the privacy policy
+URL unless your site has different requirements, and
+http://portal.friendika.com as the Terms of Service URL unless
+you have different requirements. (Friendika is a software application
+and does not require Terms of Service, though your installation of it might).
+
+c. Set the following values in your .htconfig.php file
+
+```
+$a->config['facebook']['appid'] = 'xxxxxxxxxxx';
+$a->config['facebook']['appsecret'] = 'xxxxxxxxxxxxxxx';
+```
+
+Replace with the settings Facebook gives you.
+
+Visit the Facebook Settings section of the "Settings->Plugin Settings" page.
+and click 'Install Facebook Connector'.
+
+This will ask you to login to Facebook and grant permission to the
+plugin to do its stuff. Allow it to do so.
+
+You're done. To turn it off visit the Plugin Settings page again and
+'Remove Facebook posting'.
+
+Videos and embeds will not be posted if there is no other content. Links
+and images will be converted to a format suitable for the Facebook API and
+long posts truncated - with a link to view the full post.
+
+Facebook contacts will also not be able to view "private" photos, as they are not able to
+authenticate to your site to establish identity. We will address this
+in a future release.
+
+
+
+
+
+
+
diff --git a/doc/Making-Friends.md b/doc/Making-Friends.md
new file mode 100644
index 000000000..4bb05872e
--- /dev/null
+++ b/doc/Making-Friends.md
@@ -0,0 +1,50 @@
+Making Friends
+==============
+
+* [Home](help)
+
+Friendship in Friendika can take on a great many different meanings. But let's keep it simple, you want to be friends with somebody. How do you do it?
+
+The first thing you can do is look at the Directory for somebody you would like to connect with. Visit their profile. Just beneath their profile picture will be the word 'Connect' (we're assuming this is an English language profile).
+
+Click that. It will take you to a "Connect" form.
+
+This is going to ask you for your Identity Address. This is necessary so that this person's website can find yours.
+
+What do you put in the box?
+
+If your Friendika site is called "demo.friendika.com" and your username/nickname on that site is "bob", you would put in "bob@demo.friendika.com".
+
+Notice this looks just like an email address. It was meant to be that way. It's easy for people to remember.
+
+You *could* also put in the URL of your "home" page, such as "http://demo.friendika.com/profile/bob", but the email-style address is certainly easier.
+
+When you've submitted the connection page, it will take you back to your own site where you must then login (if necessary) and verify the connection request on *your* site. Once you've done this, the two websites can communicate with each other to complete the process (after your new friend has approved the request).
+
+If you already know somebody's Identity Address, you can enter it in the "connect" box on your "Contacts" page. This will take you through a similar process.
+
+**Alternate Networks**
+
+You can also use your Identity Address or other people's Identity Addresses to become friends across networks. The list of possible networks is growing all the time. If you know (for instance) "bob" on identi.ca (a Status.Net site) you could put bob@identi.ca into your Contact page and become friends across networks. (Or you can put in the URL to Bob's identi.ca page if you wish). You can also be "partial" friends with somebody on Google Buzz by putting in their gmail address. Google Buzz does not yet support all the protocols we need for direct messaging, but you should be able to follow status updates from within Friendika. You can do the same for Twitter accounts and Diaspora accounts. In fact you can "follow" most anybody or any website that produces a syndication feed (RSS/Atom,etc.). If we can find an information stream and a name to attach to the contact, we'll try to connect with them.
+
+If you have supplied your mailbox connection information on your Settings page, you can enter the email address of anybody that has sent you a message recently and have their email messages show up in your social stream. You can also reply to them from within Friendika.
+
+People can also become friends with you from other networks. If a friend of yours has an identi.ca account, they can become friends with you by putting your Friendika Identity Address into their identi.ca subscription dialog box.
+
+If this happens you will receive a notification. You will need to approve this before the friendship is complete.
+
+Some networks allow people to send you messages without being friends and without your approval. Friendika does not allow this by default, as it would open a gateway for spam. So when you've approved a friend request from one of these networks, look at your contact page for that person (this will be displayed as soon as you approve the relationship). They might be marked as an "Ignored" contact.
+
+This means they can see some of your posts (your public posts), but they aren't permitted to send you anything. You can "Un-ignore" them if you desire to allow them to contact you directly and to have their status updates appear in your Network feed.
+
+When you receive a friendship notification from another Friendika member, you will have the option of allowing them as a "fan" or as a "friend". If they are a fan, they can see what you have to say, including private communications that you send to them, but not vice versa. As a friend, you can both communicate with each other.
+
+Once you have become friends, if you find the person constantly sends you spam or worthless information, you can "Ignore" them - without breaking off the friendship or even alerting them to the fact that you aren't interested in anything they are saying. In many ways they are like a "fan" - but they don't know this. They think they are a friend.
+
+You can also "block" a person. This completely blocks communications with that person. They may still be able to see your public posts, as can anybody in the world, but they cannot communicate with you directly in any way. They will know or be able to discover that they have been blocked but there's nothing they can do about it.
+
+You can also delete a friend no matter what the friendship status - which complete removes everything relating to that person from your website.
+
+
+
+
diff --git a/doc/Message-Flow.md b/doc/Message-Flow.md
new file mode 100644
index 000000000..be2045f79
--- /dev/null
+++ b/doc/Message-Flow.md
@@ -0,0 +1,54 @@
+Friendika Message Flow
+
+This page attempts to document some of the details of how messages get from one person to another in the Friendika network. There are multiple paths, using multiple protocols and message formats.
+
+Those attempting to understand these message flows should become familiar with (at the minimum) the DFRN protocol document (http://dfrn.org/dfrn.pdf) and the message passing elements of the OStatus stack (salmon and Pubsubhubbub).
+
+
+Most message passing involves the file include/items.php, which has functions for several feed-related import/export activities.
+
+When a message is posted, all immediate deliveries to all networks are made using include/notifier.php, which chooses how (and to whom) to deliver the message. This file also invokes the local side of all deliveries including DFRN-notify.
+
+mod/dfrn_notify.php handles the remote side of DFRN-notify.
+
+Local feeds are generated by mod/dfrn_poll.php - which also handles the remote side of DFRN-poll protocol.
+
+Salmon notifications arrive via mod/salmon.php.
+
+Push (pubsubhubbub) feeds arrive via mod/pubsub.php
+
+DFRN-poll feed imports arrive via include/poller.php as a scheduled task, this implements the local side of the DFRN-poll protocol.
+
+
+
+
+Scenario #1. Bob posts a public status message
+
+This is a public message with no conversation members so no private transport is used. There are two paths it can take - as a bbcode path to DFRN clients, and converted to HTML with the server's PuSH (pubsubhubbub) hubs notified. When a PuSH hub is operational, dfrn-poll clients prefer to receive their information through the PuSH channel. They will fall back on a daily poll in case the hub has delivery issues (this is quite common when using the default Google reference hub). If there is no specified hub or hubs, DFRN clients will poll at a configurable (per-contact) rate at up to 5-minute intervals. Feeds retrieved via dfrn-poll are bbcode and may also contain private conversations which the poller has permissions to see.
+
+Scenario #2. Jack replies to Bob's public message. Jack is on the Friendika/DFRN network.
+
+Jack uses dfrn-notify to send a direct reply to Bob. Bob then creates a feed of the conversation and sends it to everybody involved in the conversation using dfrn-notify. PuSH hubs are notified that new content is available. The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks).
+
+Scenario #3. Mary replies to Bob's public message. Mary is on the Friendika/DFRN network.
+
+Mary uses dfrn-notify to send a direct reply to Bob. Bob then creates a feed of the conversation and sends it to everybody involved in the conversation (excluding himself, the conversation is now sent to both Jack and Mary). Messages are sent using dfrn-notify. Push hubs are also notified that new content is available. The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks).
+
+Scenario #4. William replies to Bob's public message. William is on the OStatus network.
+
+William uses salmon to notify Bob of the reply. Content is html embedded in salmon magic envelope. Bob then creates a feed of the conversation and sends it to all Friendika participants involved in the conversation using dfrn-notify (excluding himself, the conversation is sent to both Jack and Mary). Push hubs are notified that new content is available. The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks).
+
+Scenario #5. Bob posts a private message to Mary and Jack.
+
+Message is delivered immediately to Mary and Jack using dfrn_notify. Public hubs are not notified. Requeueing is attempted in case of timeout. Replies follow the same flow as the public replies except that hubs are not notified and message is never made available in the public feed. The entire conversation is also made available to Mary and Jack (and nobody else) through their dfrn-poll personalised feed.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/Pages.md b/doc/Pages.md
new file mode 100644
index 000000000..6f4322b13
--- /dev/null
+++ b/doc/Pages.md
@@ -0,0 +1,28 @@
+Pages
+=====
+
+* [Home](help)
+
+
+Friendika also lets you create group and/or celebrity pages.
+
+Every page in Friendika has a nickname and these must all be unique. This applies to all pages, whether they are normal profiles or group pages.
+
+Therefore the first thing you need to do to create a new page is to register a new account for the page. Please note that the site administrator can restrict and/or regulate the registration of new accounts.
+
+If you create a second account on a system and use the same email address or OpenID account, you will no longer be able to use the email address (or OpenID) to login to the account. You should login using the account nickname instead.
+
+On the new account, visit the 'Settings' page. Towards the end of the page are "Advanced Page Settings". Typically you would use "Normal Account" for a normal personal account. This is the default selection. Group pages provide the ability for people to become friends/fans of the page without requiring approval.
+
+The exact setting you would use depends on how you wish to interact with people who join the page. The "Soapbox" setting let's the page owner control all communications. Everything you post will go out to the page members, but there will be no opportunity for interaction. This setting would typically be used for announcements or corporate communications.
+
+The most common setting is the "Community Account". This creates a group page where all members can freely interact.
+
+The "Automatic Friend Account" is typically used for personal profile pages where you wish to automatically approve any friendship/connection requests.
+
+**Managing Multiple Pages**
+
+We recommend that you create group pages with the same email address and password as your normal account. If you do this, you will find a new "Manage" tab on the menu bar which lets you toggle identities easily and manage your pages. You are not required to do this, but the alternative is to logout and log back into the other account to manage alternate pages - and this could get cumbersome if you manage several different pages/identities.
+
+
+
diff --git a/doc/Plugins.md b/doc/Plugins.md
new file mode 100644
index 000000000..42c04cb26
--- /dev/null
+++ b/doc/Plugins.md
@@ -0,0 +1,289 @@
+**Friendika Addon/Plugin development**
+
+This is an early specification and hook details may be subject to change.
+
+Please see the sample addon 'randplace' for a working example of using some of these features. The facebook addon provides an example of integrating both "addon" and "module" functionality. Addons work by intercepting event hooks - which must be registered. Modules work by intercepting specific page requests (by URL path).
+
+You must register all addons/plugins with the system in the .htconfig.php file.
+
+ $a->config['system']['addon'] = 'plugin1name, plugin2name, another_name';
+
+Plugin names cannot contain spaces and are used as filenames. Each addon must contain both an install and an uninstall function based on the addon/plugin name. For instance "plugin1name_install()". These two functions take no arguments and are usually responsible for registering (and unregistering) event hooks that your plugin will require. The install and uninstall functions will also be called (i.e. re-installed) if the plugin changes after installation - therefore your uninstall should not destroy data and install should consider that data may already exist. Future extensions may provide for "setup" amd "remove".
+
+
+
+Register your plugin hooks during installation.
+
+ register_hook($hookname, $file, $function);
+
+$hookname is a string and corresponds to a known Friendika hook.
+
+$file is a pathname relative to the top-level Friendika directory. This *should* be 'addon/plugin_name/plugin_name.php' in most cases.
+
+$function is a string and is the name of the function which will be executed when the hook is called.
+
+
+Your hook callback functions will be called with at least one and possibly two arguments
+
+
+ function myhook_function(&$a, &$b) {
+
+
+ }
+
+
+If you wish to make changes to the calling data, you must declare them as
+reference variables (with '&') during function declaration.
+
+$a is the Friendika 'App' class - which contains a wealth of information
+about the current state of Friendika, such as which module has been called,
+configuration info, the page contents at the point the hook was invoked, profile
+and user information, etc. It is recommeded you call this '$a' to match its usage
+elsewhere.
+
+$b can be called anything you like. This is information which is specific to the hook
+currently being processed, and generally contains information that is being immediately
+processed or acted on that you can use, display, or alter. Remember to declare it with
+'&' if you wish to alter it.
+
+**Modules**
+
+Plugins/addons may also act as "modules" and intercept all page requests for a given URL path. In order for a plugin to act as a module it needs to define a function "plugin_name_module()" which takes no arguments and need not do anything.
+
+If this function exists, you will now receive all page requests for "http://my.web.site/plugin_name" - with any number of URL components as additional arguments. These are parsed into an array $a->argv, with a corresponding $a->argc indicating the number of URL components. So http://my.web.site/plugin/arg1/arg2 would look for a module named "plugin" and pass its module functions the $a App structure (which is available to many components). This will include:
+ $a->argc = 3
+ $a->argv = array(0 => 'plugin', 1 => 'arg1', 2 => 'arg2');
+
+Your module functions will often contain the function plugin_name_content(&$a), which defines and returns the page body content. They may also contain plugin_name_post(&$a) which is called before the _content function and typically handles the results of POST forms. You may also have plugin_name_init(&$a) which is called very early on and often does module initialisation.
+
+
+
+**Current hooks:**
+
+**'authenticate'** - called when a user attempts to login.
+ $b is an array
+ 'username' => the supplied username
+ 'password' => the supplied password
+ 'authenticated' => set this to non-zero to authenticate the user.
+ 'user_record' => successful authentication must also return a valid user record from the database
+
+**'logged_in'** - called after a user has successfully logged in.
+ $b contains the $a->user array
+
+
+**'display_item'** - called when formatting a post for display.
+ $b is an array
+ 'item' => The item (array) details pulled from the database
+ 'output' => the (string) HTML representation of this item prior to adding it to the page
+
+**'post_local'** - called when a status post or comment is entered on the local system
+ $b is the item array of the information to be stored in the database
+ {Please note: body contents are bbcode - not HTML)
+
+**'post_local_end'** - called when a local status post or comment has been stored on the local system
+ $b is the item array of the information which has just been stored in the database
+ {Please note: body contents are bbcode - not HTML)
+
+**'post_remote'** - called when receiving a post from another source. This may also be used to post local activity or system generated messages.
+ $b is the item array of information to be stored in the database and the item
+ body is bbcode.
+
+**'settings_form'** - called when generating the HTML for the user Settings page
+ $b is the (string) HTML of the settings page before the final '</form>' tag.
+
+**'settings_post'** - called when the Settings pages are submitted.
+ $b is the $_POST array
+
+**'plugin_settings'** - called when generating the HTML for the addon settings page
+ $b is the (string) HTML of the addon settings page before the final '</form>' tag.
+
+**'plugin_settings_post'** - called when the Addon Settings pages are submitted.
+ $b is the $_POST array
+
+**'profile_post'** - called when posting a profile page.
+ $b is the $_POST array
+
+**'profile_edit'** - called prior to output of profile edit page
+ $b is array
+ 'profile' => profile (array) record from the database
+ 'entry' => the (string) HTML of the generated entry
+
+
+**'profile_advanced'** - called when the HTML is generated for the 'Advanced profile', corresponding to the 'Profile' tab within a person's profile page.
+ $b is the (string) HTML representation of the generated profile
+ (The profile array details are in $a->profile)
+
+**'directory_item'** - called from the Directory page when formatting an item for display
+ $b is an array
+ 'contact' => contact (array) record for the person from the database
+ 'entry' => the (string) HTML of the generated entry
+
+**'profile_sidebar_enter'** - called prior to generating the sidebar "short" profile for a page
+ $b is (array) the person's profile array
+
+**'profile_sidebar'** - called when generating the sidebar "short" profile for a page
+ $b is an array
+ 'profile' => profile (array) record for the person from the database
+ 'entry' => the (string) HTML of the generated entry
+
+**'contact_block_end'** - called when formatting the block of contacts/friends on a profile sidebar has completed
+ $b is an array
+ 'contacts' => array of contacts
+ 'output' => the (string) generated HTML of the contact block
+
+**'bbcode'** - called during conversion of bbcode to html
+ $b is (string) converted text
+
+**'html2bbcode'** - called during conversion of html to bbcode (e.g. remote message posting)
+ $b is (string) converted text
+
+**'page_header'** - called after building the page navigation section
+ $b is (string) HTML of nav region
+
+**'personal_xrd'** - called prior to output of personal XRD file.
+ $b is an array
+ 'user' => the user record for the person
+ 'xml' => the complete XML to be output
+
+**'home_content'** - called prior to output home page content, shown to unlogged users
+ $b is (string) HTML of section region
+
+**'contact_edit'** - called when editing contact details on an individual from the Contacts page
+ $b is (array)
+ 'contact' => contact record (array) of target contact
+ 'output' => the (string) generated HTML of the contact edit page
+
+**'contact_edit_post'** - called when posting the contact edit page
+ $b is the $_POST array
+
+**'init_1'** - called just after DB has been opened and before session start
+ $b is not used or passed
+
+
+**'page_end'** - called after HTML content functions have completed
+ $b is (string) HTML of content div
+
+
+*** = subject to change
+
+Not yet documented (you may view these within the source code):
+
+**'atom_feed'** ***
+
+**'atom_feed_end'** ***
+
+**'parse_atom'** ***
+
+**'atom_author'** ***
+
+**'atom_entry'** ***
+
+A complete list of all hook callbacks with file locations (generated 22-Feb-2011): Please see the source for details of any hooks not documented above.
+
+boot.php: call_hooks('contact_block_end', $arr);
+
+boot.php: call_hooks('profile_sidebar_enter', $profile);
+
+boot.php: call_hooks('profile_sidebar', $arr);
+
+boot.php: call_hooks("proc_run", $args);
+
+include/nav.php: call_hooks('page_header', $a->page['nav']);
+
+include/auth.php: call_hooks('authenticate', $addon_auth);
+
+include/auth.php: call_hooks('logged_in', $a->user);
+
+include/bbcode.php: call_hooks('bbcode',$Text);
+
+include/acl_selectors.php: call_hooks($a->module . '_pre_' . $selname, $arr);
+
+include/acl_selectors.php: call_hooks($a->module . '_post_' . $selname, $o);
+
+include/acl_selectors.php: call_hooks($a->module . '_pre_' . $selname, $arr);
+
+include/acl_selectors.php: call_hooks($a->module . '_post_' . $selname, $o);
+
+include/items.php: call_hooks('atom_feed', $atom);
+
+include/items.php: call_hooks('atom_feed_end', $atom);
+
+include/items.php: call_hooks('atom_feed_end', $atom);
+
+include/items.php: call_hooks('parse_atom', $arr);
+
+include/items.php: call_hooks('post_remote',$arr);
+
+include/items.php: call_hooks('atom_author', $o);
+
+include/items.php: call_hooks('atom_entry', $o);
+
+include/html2bbcode.php: call_hooks('html2bbcode', $text);
+
+index.php: call_hooks('init_1');
+
+index.php:call_hooks('app_menu', $arr);
+
+index.php:call_hooks('page_end', $a->page['content']);
+
+mod/photos.php: call_hooks('photo_post_init', $_POST);
+
+mod/photos.php: call_hooks('photo_post_file',$ret);
+
+mod/photos.php: call_hooks('photo_post_end',intval($item_id));
+
+mod/photos.php: call_hooks('photo_upload_form',$ret);
+
+mod/parse_url.php: call_hooks('parse_link', $arr);
+
+mod/home.php: call_hooks("home_content",$o);
+
+mod/contacts.php: call_hooks('contact_edit_post', $_POST);
+
+mod/contacts.php: call_hooks('contact_edit', $arr);
+
+mod/settings.php: call_hooks('plugin_settings_post', $_POST);
+
+mod/settings.php: call_hooks('settings_post', $_POST);
+
+mod/settings.php: call_hooks('plugin_settings', $o);
+
+mod/settings.php: call_hooks('settings_form',$o);
+
+mod/network.php: call_hooks('jot_tool', $jotplugins);
+
+mod/network.php: call_hooks('jot_networks', $jotnets);
+
+mod/network.php: call_hooks('display_item', $arr);
+
+mod/xrd.php: call_hooks('personal_xrd', $arr);
+
+mod/item.php: call_hooks('post_local_start', $_POST);
+
+mod/item.php: call_hooks('post_local',$datarray);
+
+mod/item.php: call_hooks('post_local_end', $datarray);
+
+mod/profile.php: call_hooks('profile_advanced',$o);
+
+mod/profile.php: call_hooks('jot_tool', $jotplugins);
+
+mod/profile.php: call_hooks('jot_networks', $jotnets);
+
+mod/profile.php: call_hooks('display_item', $arr);
+
+mod/display.php: call_hooks('display_item', $arr);
+
+mod/profiles.php: call_hooks('profile_post', $_POST);
+
+mod/profiles.php: call_hooks('profile_edit', $arr);
+
+mod/cb.php: call_hooks('cb_init');
+
+mod/cb.php: call_hooks('cb_post', $_POST);
+
+mod/cb.php: call_hooks('cb_afterpost');
+
+mod/cb.php: call_hooks('cb_content', $o);
+
+mod/directory.php: call_hooks('directory_item', $arr);
diff --git a/doc/Profiles.md b/doc/Profiles.md
new file mode 100644
index 000000000..631a4331b
--- /dev/null
+++ b/doc/Profiles.md
@@ -0,0 +1,51 @@
+Profiles
+========
+
+* [Home](help)
+
+Friendika has unlimited profiles. You may use different profiles to show different "sides of yourself" to different audiences.
+
+You always have a profile known as your "default" or "public" profile. This profile is always available to the general public and cannot be hidden (there may be rare exceptions on privately run or disconnected sites). You may, and probably should restrict the information you make available on your public profile.
+
+That said, if you want other friends to be able to find you, it helps to have the following information in your public profile...
+
+* Your real name
+* A photo of **you**
+* Your location on the planet, at least to a country level.
+
+Without this basic information, you could get very lonely here. Most people (even your best friends) will not try and connect with somebody that has a fake name or doesn't contain a real photo.
+
+In addition, if you'd like to meet people that share some general interests with you, please take a moment and add some "Public Keywords" to your profile. Such as "music, linux, photography" or whatever. You can add as many keywords as you like.
+
+
+Your default or public profile is also shown to contacts on other networks, since they do not have the ability to view your private profiles. Only members of the Friendika network can see alternate/private profiles.
+
+
+To create an alternate profile, select "Profiles" from the menu of your Friendika site. You may edit an existing profile, change the profile photo, or create a new profile. You may also create a "clone" of an existing profile if you only wish to change a few items but don't wish to enter all the information again.
+
+To assign a profile to specific persons, select the person from your "Contacts" page and click the pencil "Edit" icon. You will find a dropdown box listing the various profiles available. If this box is not selectable, the person is not in a supported network and cannot be assigned a specific profile.
+
+Once a profile has been selected, when the person views your profile from one of the "magic profile links" on their site, they will see the private profile you have assigned. If they are not logged into their site or view your profile from elsewhere, they will see your public profile.
+
+A magic profile link is indicated by a special cursor when hovering over a contact's name or photo. Currently this cursor is a hand next to a small padlock. These magic cursors indicate that by following the link, you are able to access special areas of the other person's pages which are only available to friends and may not be available to the general public.
+
+You may also discover that (assuming you have the proper permissions) you may be able to post directly on the other person's profile (often called a "wall-to-wall" post). You may also be able to comment directly on posts from while visiting the other person's profile page.
+
+There are two settings which allow you to publish your profile to a directory and ensure that it can be found by others. You can change these through settings on the "Settings" page. One setting allows you to publish your profile in the site directory of this Friendika server. Another option (this may have been disabled by the site creator) allows you to publish your profile in the "Global Directory". This is a mega directory which contains people from many other Friendika installations world-wide.
+
+If you do not wish to be visible to any of these sites, you may leave your profile unpublished.
+
+Although you may have multiple profiles, you only have one profile photo. This is intentional. In early tests we experimented with different photos for each profile and found it was very confusing for people. They might see a different picture depending on what website they visited or what conversation they were in, and often alerted them to the fact that other people might be able to see different profiles of you than they could see.
+
+(But you can use the rich-text information boxes within a profile such as "Tell us about yourself" and link other photos onto the page.)
+
+**Keywords and Directory Search**
+
+On the site Directory page, you may search for people with published profiles who are on this site. The search is typically for your nickname or part of your full name. However this search will also match against other profile fields - such as gender, location, "about", work, and education. You may also include "Keywords" in your default profile - which may be used to search for common interests with other members. You have two sets of keywords available - public and private. Private keywords are *not* visible to anybody. You could use these keywords to locate people who share membership in secret societies, or that share a love of fishing (for example) - without making this information visible on your public profile. Public keywords are used in the friend suggestion tool and although they aren't readily visible, they may be seen by viewing the HTML of your profile page.
+
+Directory searches are also able to use "boolean" logic so that you can search for "+lesbian +Florida" and find those who's sexual preference (or keywords) contain the world "lesbian" and that live in Florida. See the section on "Topical Tags" on the [[Tags-and-Mentions]] page for more information on performing boolean searches.
+
+On your Contacts page is a link to "Find People with Shared Interests" (unless your site administrator has disabled the global directory). This will combine both your public and private keywords, and find people in the global directory who have matching and/or similar keywords. (Your private keywords are not identified or stored on the global directory). The more keywords you provide, the more relevant the search results that are returned. These are sorted by relevance. You may discover that you are the first person on the list - because you are very likely the most relevant match for your keywords in the directory.
+
+
+ \ No newline at end of file
diff --git a/doc/Remove-Account.md b/doc/Remove-Account.md
new file mode 100644
index 000000000..10c5d5cfe
--- /dev/null
+++ b/doc/Remove-Account.md
@@ -0,0 +1,13 @@
+Remove Account
+==============
+
+* [Home](help)
+
+We don't like to see people leave Friendika, but if you need to remove your account, you should visit the URL
+
+http://friendika-site/removeme
+
+with your web browser. You will need to be logged in at the time. (Replace "friendika-site" with the hostname of your Friendika server)
+
+You will be asked for your password to confirm the request. If this matches your stored password, your account will immediately be removed. Unlike some social networks we do **not** hold onto it for a grace period in case you change your mind. Your user details, your conversations, your photos, your friends - everything; will be removed immediately and you will be logged out.
+
diff --git a/doc/Settings.md b/doc/Settings.md
new file mode 100644
index 000000000..8abb8a567
--- /dev/null
+++ b/doc/Settings.md
@@ -0,0 +1,237 @@
+Here are some of the built-in features which don't have an exposed interface or are otherwise undocumented. Configuration settings are stored in the file ".htconfig.php". Edit this file with a text editor to make the desired changes. Several system settings are already documented in that file and will not be covered here.
+
+**Hot Keys**
+
+Friendika traps the following keyboard events:
+
+* [Pause] - Pauses "Ajax" update activity. This is the process that provides updates without reloading the page. You may wish to pause it to reduce network usage and/or as a debugging aid for javascript developers. A pause indicator will appear at the lower right hand corner of the page. Hit the [pause] key once again to resume.
+
+* [F8] - Displays a language selector
+
+
+**Birthday Notifications**
+
+Birthday events are published on your Home page for any friends having a birthday in the coming 6 days. In order for your birthday to be discoverable by all of your friends, you must set your birthday (at least the month and day) in your default profile. You are not required to provide the year.
+
+**Configuration settings**
+
+
+**Language**
+
+System Setting
+
+Please see util/README for information on creating language translations.
+
+Config:
+```
+$a->config['system']['language'] = 'name';
+```
+
+
+**System Theme**
+
+System Setting
+
+Choose a named theme to be the default system theme (which may be over-ridden by user profiles). Default theme is "default".
+
+Config:
+```
+$a->config['system']['theme'] = 'theme-name';
+```
+
+
+**Verify SSL Certitificates**
+
+Security setting
+
+By default Friendika allows SSL communication between websites that have "self-signed" SSL certificates. For the widest compatibility with browsers and other networks we do not recommend using self-signed certificates, but we will not prevent you from using them. SSL encrypts all the data transmitted between sites (and to your browser) and this allows you to have completely encrypted communications, and also protect your login session from hijacking. Self-signed certificates can be generated for free, without paying top-dollar for a website SSL certificate - however these aren't looked upon favourably in the security community because they can be subject to so-called "man-in-the-middle" attacks. If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites.
+
+Config:
+```
+$a->config['system']['verifyssl'] = true;
+```
+
+
+**Allowed Friend Domains**
+
+Corporate/Edu enhancement
+
+Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. (Wildcard support on Windows platforms requires PHP5.3). By default, any (valid) domain may establish friendships with this site.
+
+Config:
+```
+$a->config['system']['allowed_sites'] = "sitea.com, *siteb.com";
+```
+
+
+**Allowed Email Domains**
+
+Corporate/Edu enhancement
+
+Comma separated list of domains which are allowed in email addresses for registrations to this site. This can lockout those who are not part of this organisation from registering here. Wildcards are accepted. (Wildcard support on Windows platforms requires PHP5.3). By default, any (valid) email address is allowed in registrations.
+
+Config:
+```
+$a->config['system']['allowed_email'] = "sitea.com, *siteb.com";
+```
+
+**Block Public**
+
+Corporate/Edu enhancement
+
+Set to true to block public access to all otherwise public personal pages on this site unless you are currently logged in. This blocks the viewing of profiles, friends, photos, the site directory and search pages to unauthorised persons. A side effect is that entries from this site will not appear in the global directory. We recommend specifically disabling that also (setting is described elsewhere on this page). Note: this is specifically for sites that desire to be "standalone" and do not wish to be connected to any other Friendika sites. Unauthorised persons will also not be able to request friendship with site members. Default is false. Available in version 2.2 or greater.
+
+Config:
+```
+$a->config['system']['block_public'] = true;
+```
+
+
+**Force Publish**
+
+Corporate/Edu enhancement
+
+By default, each user can choose on their Settings page whether or not to have their profile published in the site directory. This setting forces all
+profiles on this site to be listed in the site directory and there is no option provided to the user to change it. Default is false.
+
+Config:
+```
+$a->config['system']['publish_all'] = true;
+```
+
+
+**Global Directory**
+
+Corporate/Edu enhancement
+
+This configures the URL to update the global directory, and is supplied in the default configuration. The undocumented part is that if this is not set, the global directory is completely unavailable to the application. This allows a private community to be completely isolated from the global mistpark network.
+
+```
+$a->config['system']['directory_submit_url'] = 'http://dir.friendika.com/submit';
+```
+
+
+**Proxy Configuration Settings**
+
+If your site uses a proxy to connect to the internet, you may use these settings to communicate with the outside world (the outside world still needs to be able to see your website, or this will not be very useful).
+
+Config:
+```
+$a->config['system']['proxy'] = "http://proxyserver.domain:port";
+$a->config['system']['proxyuser'] = "username:password";
+```
+
+
+**Network Timeout**
+
+How long to wait on a network communication before timing out. Value is in seconds. Default is 60 seconds. Set to 0 for unlimited (not recommended).
+
+Config:
+```
+$a->config['system']['curl_timeout'] = 60;
+```
+
+
+**Banner/Logo**
+
+Set the content for the site banner. Default is the Friendika logo and name. You may wish to provide HTML/CSS to style and/or position this content, as it may not be themed by default.
+
+Config:
+```
+$a->config['system']['banner'] = '<span id="logo-text">My Great Website</span>';
+```
+
+
+**Maximum Image Size**
+
+Maximum size in bytes of uploaded images. Default is 0, which means no limits.
+
+Config:
+```
+$a->config['system']['maximagesize'] = 1000000;
+```
+
+
+**UTF-8 Regular Expressions**
+
+During registrations, full names are checked using UTF-8 regular expressions. This requires PHP to have been compiled with a special setting to allow UTF-8 expressions. If you are completely unable to register accounts, set no_utf to true. Default is false (meaning UTF8 regular expressions are supported and working).
+
+Config:
+```
+$a->config['system']['no_utf'] = true;
+```
+
+
+**Check Full Names**
+
+You may find a lot of spammers trying to register on your site. During testing we discovered that since these registrations were automatic, the "Full Name" field was often set to just an account name with no space between first and last name. If you would like to support people with only one name as their full name, you may change this setting to true. Default is false.
+
+Config:
+```
+$a->config['system']['no_regfullname'] = true;
+```
+
+
+**Gravatars**
+
+During registration, we will try to automatically find a user photo for you on the web using the gravatar service. You may turn this off by setting 'no_gravatar' to true. Default is false.
+
+Config:
+```
+$a->config['system']['no_gravatar'] = true;
+```
+
+
+**OpenID**
+
+By default, OpenID may be used for both registration and logins. If you do not wish to make OpenID facilities available on your system (at all), set 'no_openid' to true. Default is false.
+
+Config:
+```
+$a->config['system']['no_openid'] = true;
+```
+
+
+**Multiple Registrations**
+
+The ability to create "Pages" requires a person to register more than once. Your site configuration can block registration (or require approval to register). By default logged in users can register additional accounts for use as pages. These will still require approval if REGISTER_APPROVE is selected. You may prohibit logged in users from creating additional accounts by setting 'block_extended_register' to true. Default is false.
+
+Config:
+```
+$a->config['system']['block_extended_register'] = true;
+```
+
+
+**Developer Settings**
+
+Most useful when debugging protocol exchanges and tracking down other communications issues.
+
+Config:
+
+```
+$a->config['system']['debugging'] = true;
+$a->config['system']['logfile'] = 'logfile.out';
+$a->config['system']['loglevel'] = LOGGER_DEBUG;
+```
+Turns on detailed debugging logs which will be stored in 'logfile.out' (which must be writeable by the webserver). LOGGER_DEBUG will show a good deal of information about system activity but will not include detailed data. You may also select LOGGER_ALL but due to the volume of information we recommend only enabling this when you are tracking down a specific problem. Other log levels are possible but are not being used at the present time.
+
+
+**PHP error logging**
+
+Use the following settings to redirect PHP errors to a file.
+
+Config:
+
+```
+error_reporting(E_ERROR | E_WARNING | E_PARSE );
+ini_set('error_log','php.out');
+ini_set('log_errors','1');
+ini_set('display_errors', '0');
+```
+
+This will put all PHP errors in the file php.out (which must be writeable by the webserver). Undeclared variables are occasionally referenced in the program and therefore we do not recommend using E_NOTICE or E_ALL. The vast majority of issues reported at these levels are completely harmless. Please report to the developers any errors you encounter in the logs using the recommended settings above. They generally indicate issues which need to be resolved.
+
+If you encounter a blank (white) page when using the application, view the PHP logs - as this almost always indicates an error has occurred.
+
+
+
diff --git a/doc/Sites-running-Friendika-you-can-join.md b/doc/Sites-running-Friendika-you-can-join.md
new file mode 100644
index 000000000..8127a5b9c
--- /dev/null
+++ b/doc/Sites-running-Friendika-you-can-join.md
@@ -0,0 +1,7 @@
+Here is a list of Friendika installations free for everybody to join:
+
+* [friendika.com](http://demo.friendika.com)
+* [friendika.net](http://www.friendika.net)
+* [aphasi.cc](https://friendika.aphasi.cc)
+* [openmindspace.org](http://friendika.openmindspace.org)
+* [dfrn.net](http://dfrn.net/) \ No newline at end of file
diff --git a/doc/Tags-and-Mentions.md b/doc/Tags-and-Mentions.md
new file mode 100644
index 000000000..404da7465
--- /dev/null
+++ b/doc/Tags-and-Mentions.md
@@ -0,0 +1,37 @@
+Tags and Mentions
+=================
+
+
+* [Home](help)
+
+
+Like many other modern social networks, Friendika uses a special notation inside messages to indicate "tags" or contextual links to other entities.
+
+**Mentions**
+
+People are tagged by preceding their name with the @ character.
+
+The following are various ways of indicating a person:
+
+* @mike - indicates a known contact in your social circle whose nickname is "mike"
+* @mike_macgirvin - indicates a known contact in your social circle whose full name is "Mike Macgirvin". Note that spaces cannot be used inside tags.
+* @mike@macgirvin.com - indicates the Identity Address of a person on a different network, or one that is *not* in your social circle. This can only be an email-style locator, not a web URL.
+
+Unless their system blocks unsolicited "mentions", the person tagged will likely receive a "Mention" post/activity or become a direct participant in the conversation in the case of public posts. Please note that Friendika often blocks incoming "mentions" from other networks and especially from people with no relationship to you. This is a spam prevention measure.
+
+Friendika makes no distinction between people and groups for the purpose of tagging. (Some other networks use !group to indicate a group.)
+
+**Topical Tags**
+
+Topical tags are indicated by preceding the tag name with the # character. This will create a link in the post to a generalised site search for the term provided. For example, #cars will provide a search link for all posts mentioning 'cars' on your site. Topical tags are generally a minimum of three characters in length. Shorter search terms are not likely to yield any search results, although this depends on the database configuration. The same rules apply as with names that spaces within tags are represented by the underscore character. It is therefore not possible to create a tag whose target contains an underscore.
+
+Tag searches may also use "boolean" logic.
+
+* \#bike - creates a search for "bike"
+* \#bike_red - creates a search for posts that contain either the word "bike" OR the word "red".
+* \#+bike_+red - creates a search for posts that contain both the word "bike" AND the word "red"
+* \#+bike_-blue - creates a search for posts that contain the word "bike" but do *not* contain the word "blue"
+
+
+
+
diff --git a/doc/developer b/doc/developer
new file mode 100644
index 000000000..1dfd0503b
--- /dev/null
+++ b/doc/developer
@@ -0,0 +1,18 @@
+Friendika Developer Guide
+
+Here is how you can join us.
+
+First, get yourself a working git package on the system where you will be
+doing development.
+
+Create your own github account.
+
+Follow the instructions provided here: [[http://help.github.com/fork-a-repo/]]
+to create and use your own tracking fork on github
+
+Then go to your github page and create a "Pull request" when you are ready
+to notify us to merge your work.
+
+**Important**
+
+Please pull in any changes from the project repository and merge them with your work **before** issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions. \ No newline at end of file
diff --git a/htconfig.php b/htconfig.php
index fb62245d2..0f9222ac5 100644
--- a/htconfig.php
+++ b/htconfig.php
@@ -38,7 +38,7 @@ $a->config['admin_email'] = '';
// Maximum size of an imported message, 0 is unlimited
-$a->config['max_import_size'] = 10000;
+$a->config['max_import_size'] = 200000;
// maximum size of uploaded photos
diff --git a/images/article.gif b/images/article.gif
new file mode 100644
index 000000000..91aeef000
--- /dev/null
+++ b/images/article.gif
Binary files differ
diff --git a/images/audio.gif b/images/audio.gif
new file mode 100644
index 000000000..4be977116
--- /dev/null
+++ b/images/audio.gif
Binary files differ
diff --git a/images/friendika-1600.png b/images/friendika-1600.png
new file mode 100644
index 000000000..615a81dd9
--- /dev/null
+++ b/images/friendika-1600.png
Binary files differ
diff --git a/images/icons.png b/images/icons.png
new file mode 100644
index 000000000..734c75f73
--- /dev/null
+++ b/images/icons.png
Binary files differ
diff --git a/images/pencil.gif b/images/pencil.gif
new file mode 100644
index 000000000..26bfb0c9a
--- /dev/null
+++ b/images/pencil.gif
Binary files differ
diff --git a/images/recycle.gif b/images/recycle.gif
new file mode 100644
index 000000000..01b3e13b4
--- /dev/null
+++ b/images/recycle.gif
Binary files differ
diff --git a/images/remote-link.gif b/images/remote-link.gif
index 008397fe8..64de29aee 100644
--- a/images/remote-link.gif
+++ b/images/remote-link.gif
Binary files differ
diff --git a/images/share.gif b/images/share.gif
new file mode 100644
index 000000000..035fa2e38
--- /dev/null
+++ b/images/share.gif
Binary files differ
diff --git a/images/spencil.gif b/images/spencil.gif
new file mode 100644
index 000000000..0a2551ac0
--- /dev/null
+++ b/images/spencil.gif
Binary files differ
diff --git a/images/tools.png b/images/tools.png
new file mode 100644
index 000000000..c17094a81
--- /dev/null
+++ b/images/tools.png
Binary files differ
diff --git a/images/video.gif b/images/video.gif
new file mode 100644
index 000000000..e4d5e8cdd
--- /dev/null
+++ b/images/video.gif
Binary files differ
diff --git a/include/Contact.php b/include/Contact.php
index 7cac3c0e0..4ca77d065 100644
--- a/include/Contact.php
+++ b/include/Contact.php
@@ -14,11 +14,13 @@ function user_remove($uid) {
q("DELETE FROM `group` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `group_member` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `intro` WHERE `uid` = %d", intval($uid));
+ q("DELETE FROM `event` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `item` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `mail` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `photo` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `profile` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `profile_check` WHERE `uid` = %d", intval($uid));
+ q("DELETE FROM `pconfig` WHERE `uid` = %d", intval($uid));
q("DELETE FROM `user` WHERE `uid` = %d", intval($uid));
if($uid == local_user()) {
unset($_SESSION['authenticated']);
@@ -41,6 +43,9 @@ function contact_remove($id) {
q("DELETE FROM `mail` WHERE `contact-id` = %d ",
intval($id)
);
+ q("DELETE FROM `event` WHERE `cid` = %d ",
+ intval($id)
+ );
}
diff --git a/include/Photo.php b/include/Photo.php
index 9934b9a39..707b0de5d 100644
--- a/include/Photo.php
+++ b/include/Photo.php
@@ -162,12 +162,20 @@ class Photo {
}
public function saveImage($path) {
- imagejpeg($this->image,$path,100);
+ $quality = get_config('system','jpeg_quality');
+ if((! $quality) || ($quality > 100))
+ $quality = JPEG_QUALITY;
+ imagejpeg($this->image,$path,$quality);
}
public function imageString() {
ob_start();
- imagejpeg($this->image,NULL,100);
+
+ $quality = get_config('system','jpeg_quality');
+ if((! $quality) || ($quality > 100))
+ $quality = JPEG_QUALITY;
+
+ imagejpeg($this->image,NULL,$quality);
$s = ob_get_contents();
ob_end_clean();
return $s;
diff --git a/include/Scrape.php b/include/Scrape.php
index ff9899252..7fc0c964b 100644
--- a/include/Scrape.php
+++ b/include/Scrape.php
@@ -216,7 +216,7 @@ function scrape_feed($url) {
}
if(stristr($line,'application/rss+xml') || stristr($s,'<rss')) {
$ret['feed_rss'] = $url;
- return ret;
+ return $ret;
}
}
}
@@ -227,17 +227,287 @@ function scrape_feed($url) {
if(! $dom)
return $ret;
+
+ $items = $dom->getElementsByTagName('img');
+
+ // get img elements (twitter)
+
+ if($items) {
+ foreach($items as $item) {
+ $x = $item->getAttribute('id');
+ if($x === 'profile-image') {
+ $ret['photo'] = $item->getAttribute('src');
+ }
+ }
+ }
+
+
+ $head = $dom->getElementsByTagName('base');
+ if($head) {
+ foreach($head as $head0) {
+ $basename = $head0->getAttribute('href');
+ break;
+ }
+ }
+ if(! $basename)
+ $basename = substr($url,0,strrpos($url,'/')) . '/';
+
$items = $dom->getElementsByTagName('link');
- // get Atom link elements
+ // get Atom/RSS link elements, take the first one of either.
- foreach($items as $item) {
- $x = $item->getAttribute('rel');
- if(($x === 'alternate') && ($item->getAttribute('type') === 'application/atom+xml'))
- $ret['feed_atom'] = $item->getAttribute('href');
- if(($x === 'alternate') && ($item->getAttribute('type') === 'application/rss+xml'))
- $ret['feed_rss'] = $item->getAttribute('href');
+ if($items) {
+ foreach($items as $item) {
+ $x = $item->getAttribute('rel');
+ if(($x === 'alternate') && ($item->getAttribute('type') === 'application/atom+xml')) {
+ if(! x($ret,'feed_atom'))
+ $ret['feed_atom'] = $item->getAttribute('href');
+ }
+ if(($x === 'alternate') && ($item->getAttribute('type') === 'application/rss+xml')) {
+ if(! x($ret,'feed_rss'))
+ $ret['feed_rss'] = $item->getAttribute('href');
+ }
+ }
}
+ // Drupal and perhaps others only provide relative URL's. Turn them into absolute.
+
+ if(x($ret,'feed_atom') && (! strstr($ret['feed_atom'],'://')))
+ $ret['feed_atom'] = $basename . $ret['feed_atom'];
+ if(x($ret,'feed_rss') && (! strstr($ret['feed_rss'],'://')))
+ $ret['feed_rss'] = $basename . $ret['feed_rss'];
+
return $ret;
-}} \ No newline at end of file
+}}
+
+
+function probe_url($url) {
+ require_once('include/email.php');
+
+ $result = array();
+
+ if(! $url)
+ return $result;
+
+ $diaspora = false;
+ $email_conversant = false;
+
+ if($url) {
+ $links = lrdd($url);
+
+ if(count($links)) {
+ logger('probe_url: found lrdd links: ' . print_r($links,true), LOGGER_DATA);
+ foreach($links as $link) {
+ if($link['@attributes']['rel'] === NAMESPACE_DFRN)
+ $dfrn = unamp($link['@attributes']['href']);
+ if($link['@attributes']['rel'] === 'salmon')
+ $notify = unamp($link['@attributes']['href']);
+ if($link['@attributes']['rel'] === NAMESPACE_FEED)
+ $poll = unamp($link['@attributes']['href']);
+ if($link['@attributes']['rel'] === 'http://microformats.org/profile/hcard')
+ $hcard = unamp($link['@attributes']['href']);
+ if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page')
+ $profile = unamp($link['@attributes']['href']);
+ if($link['@attributes']['rel'] === 'http://joindiaspora.com/seed_location')
+ $diaspora = true;
+ }
+
+ // Status.Net can have more than one profile URL. We need to match the profile URL
+ // to a contact on incoming messages to prevent spam, and we won't know which one
+ // to match. So in case of two, one of them is stored as an alias. Only store URL's
+ // and not webfinger user@host aliases. If they've got more than two non-email style
+ // aliases, let's hope we're lucky and get one that matches the feed author-uri because
+ // otherwise we're screwed.
+
+ foreach($links as $link) {
+ if($link['@attributes']['rel'] === 'alias') {
+ if(strpos($link['@attributes']['href'],'@') === false) {
+ if(isset($profile)) {
+ if($link['@attributes']['href'] !== $profile)
+ $alias = unamp($link['@attributes']['href']);
+ }
+ else
+ $profile = unamp($link['@attributes']['href']);
+ }
+ }
+ }
+ }
+ else {
+
+ // Check email
+
+ $orig_url = $url;
+ if((strpos($orig_url,'@')) && validate_email($orig_url)) {
+ $x = q("SELECT `prvkey` FROM `user` WHERE `uid` = %d LIMIT 1",
+ intval(local_user())
+ );
+ $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1",
+ intval(local_user())
+ );
+ if(count($x) && count($r)) {
+ $mailbox = construct_mailbox_name($r[0]);
+ $password = '';
+ openssl_private_decrypt(hex2bin($r[0]['pass']),$password,$x[0]['prvkey']);
+ $mbox = email_connect($mailbox,$r[0]['user'],$password);
+ unset($password);
+ }
+ if($mbox) {
+ $msgs = email_poll($mbox,$orig_url);
+ if(count($msgs)) {
+ $addr = $orig_url;
+ $network = NETWORK_MAIL;
+ $name = substr($url,0,strpos($url,'@'));
+ $profile = 'http://' . substr($url,strpos($url,'@')+1);
+ // fix nick character range
+ $vcard = array('fn' => $name, 'nick' => $name, 'photo' => gravatar_img($url));
+ $notify = 'smtp ' . random_string();
+ $poll = 'email ' . random_string();
+ $priority = 0;
+ $x = email_msg_meta($mbox,$msgs[0]);
+ if(stristr($x->from,$orig_url))
+ $adr = imap_rfc822_parse_adrlist($x->from,'');
+ elseif(stristr($x->to,$orig_url))
+ $adr = imap_rfc822_parse_adrlist($x->to,'');
+ if(isset($adr) && strlen($adr[0]->personal))
+ $vcard['fn'] = notags($adr[0]->personal);
+ }
+ imap_close($mbox);
+ }
+ }
+ }
+ }
+
+ if(strlen($dfrn)) {
+ $ret = scrape_dfrn($dfrn);
+ if(is_array($ret) && x($ret,'dfrn-request')) {
+ $network = NETWORK_DFRN;
+ $request = $ret['dfrn-request'];
+ $confirm = $ret['dfrn-confirm'];
+ $notify = $ret['dfrn-notify'];
+ $poll = $ret['dfrn-poll'];
+ }
+ }
+
+ if($network !== NETWORK_DFRN && $network !== NETWORK_MAIL) {
+ $network = NETWORK_OSTATUS;
+ $priority = 0;
+
+ if($hcard) {
+ $vcard = scrape_vcard($hcard);
+
+ // Google doesn't use absolute url in profile photos
+
+ if((x($vcard,'photo')) && substr($vcard['photo'],0,1) == '/') {
+ $h = @parse_url($hcard);
+ if($h)
+ $vcard['photo'] = $h['scheme'] . '://' . $h['host'] . $vcard['photo'];
+ }
+
+ logger('probe_url: scrape_vcard: ' . print_r($vcard,true), LOGGER_DATA);
+ }
+
+ if(! $profile) {
+ if($diaspora)
+ $profile = $hcard;
+ else
+ $profile = $url;
+ }
+
+ if(! x($vcard,'fn'))
+ if(x($vcard,'nick'))
+ $vcard['fn'] = $vcard['nick'];
+
+ if((! isset($vcard)) && (! $poll)) {
+
+ $ret = scrape_feed($url);
+ logger('probe_url: scrape_feed returns: ' . print_r($ret,true), LOGGER_DATA);
+ if(count($ret) && ($ret['feed_atom'] || $ret['feed_rss'])) {
+ $poll = ((x($ret,'feed_atom')) ? unamp($ret['feed_atom']) : unamp($ret['feed_rss']));
+ $vcard = array();
+ if(x($ret,'photo'))
+ $vcard['photo'] = $ret['photo'];
+ require_once('simplepie/simplepie.inc');
+ $feed = new SimplePie();
+ $xml = fetch_url($poll);
+
+ $feed->set_raw_data($xml);
+
+ $feed->init();
+
+ if(! x($vcard,'photo'))
+ $vcard['photo'] = $feed->get_image_url();
+ $author = $feed->get_author();
+ if($author) {
+ $vcard['fn'] = unxmlify(trim($author->get_name()));
+ if(! $vcard['fn'])
+ $vcard['fn'] = trim(unxmlify($author->get_email()));
+ if(strpos($vcard['fn'],'@') !== false)
+ $vcard['fn'] = substr($vcard['fn'],0,strpos($vcard['fn'],'@'));
+ $vcard['nick'] = strtolower(notags(unxmlify($vcard['fn'])));
+ if(strpos($vcard['nick'],' '))
+ $vcard['nick'] = trim(substr($vcard['nick'],0,strpos($vcard['nick'],' ')));
+ $email = unxmlify($author->get_email());
+ }
+ else {
+ $item = $feed->get_item(0);
+ if($item) {
+ $author = $item->get_author();
+ if($author) {
+ $vcard['fn'] = trim(unxmlify($author->get_name()));
+ if(! $vcard['fn'])
+ $vcard['fn'] = trim(unxmlify($author->get_email()));
+ if(strpos($vcard['fn'],'@') !== false)
+ $vcard['fn'] = substr($vcard['fn'],0,strpos($vcard['fn'],'@'));
+ $vcard['nick'] = strtolower(unxmlify($vcard['fn']));
+ if(strpos($vcard['nick'],' '))
+ $vcard['nick'] = trim(substr($vcard['nick'],0,strpos($vcard['nick'],' ')));
+ $email = unxmlify($author->get_email());
+ }
+ if(! $vcard['photo']) {
+ $rawmedia = $item->get_item_tags('http://search.yahoo.com/mrss/','thumbnail');
+ if($rawmedia && $rawmedia[0]['attribs']['']['url'])
+ $vcard['photo'] = unxmlify($rawmedia[0]['attribs']['']['url']);
+ }
+ }
+ }
+ if((! $vcard['photo']) && strlen($email))
+ $vcard['photo'] = gravatar_img($email);
+ if($poll === $profile)
+ $lnk = $feed->get_permalink();
+ if(isset($lnk) && strlen($lnk))
+ $profile = $lnk;
+ if(! (x($vcard,'fn')))
+ $vcard['fn'] = notags($feed->get_title());
+ if(! (x($vcard,'fn')))
+ $vcard['fn'] = notags($feed->get_description());
+ $network = 'feed';
+ $priority = 2;
+ }
+ }
+ }
+
+ if(! x($vcard,'photo')) {
+ $a = get_app();
+ $vcard['photo'] = $a->get_baseurl() . '/images/default-profile.jpg' ;
+ }
+ $vcard['fn'] = notags($vcard['fn']);
+ $vcard['nick'] = notags($vcard['nick']);
+
+
+ $result['name'] = $vcard['fn'];
+ $result['nick'] = $vcard['nick'];
+ $result['url'] = $profile;
+ $result['addr'] = $addr;
+ $result['notify'] = $notify;
+ $result['poll'] = $poll;
+ $result['request'] = $request;
+ $result['confirm'] = $confirm;
+ $result['photo'] = $vcard['photo'];
+ $result['priority'] = $priority;
+ $result['network'] = $network;
+ $result['alias'] = $alias;
+
+ logger('probe_url: ' . print_r($result,true), LOGGER_DEBUG);
+
+ return $result;
+}
diff --git a/include/acl_selectors.php b/include/acl_selectors.php
index fa700818f..b1bcf5108 100644
--- a/include/acl_selectors.php
+++ b/include/acl_selectors.php
@@ -48,7 +48,7 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
$o = '';
- // When used for private messages, we limit correspondence to mutual friends and the selector
+ // When used for private messages, we limit correspondence to mutual DFRN/Friendika friends and the selector
// to one recipient. By default our selector allows multiple selects amongst all contacts.
$sql_extra = '';
@@ -57,9 +57,12 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
$sql_extra .= sprintf(" AND `rel` = %d ", intval(REL_BUD));
}
- if($privmail || $privatenet) {
+ if($privmail) {
$sql_extra .= " AND `network` IN ( 'dfrn' ) ";
- }
+ }
+ elseif($privatenet) {
+ $sql_extra .= " AND `network` IN ( 'dfrn', 'mail', 'face' ) ";
+ }
if($privmail)
$o .= "<select name=\"$selname\" id=\"$selclass\" class=\"$selclass\" size=\"$size\" >\r\n";
@@ -80,8 +83,6 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
call_hooks($a->module . '_pre_' . $selname, $arr);
-
-
if(count($r)) {
foreach($r as $rr) {
if((is_array($preselected)) && in_array($rr['id'], $preselected))
@@ -129,7 +130,7 @@ function populate_acl($user = null,$celeb = false) {
$o = '';
$o .= '<div id="acl-wrapper">';
$o .= '<div id="acl-permit-outer-wrapper">';
- $o .= '<div id="acl-permit-text">' . t('Visible To:') . '</div>';
+ $o .= '<div id="acl-permit-text">' . t('Visible To:') . '</div><div id="jot-public">' . t('everybody') . '</div>';
$o .= '<div id="acl-permit-text-end"></div>';
$o .= '<div id="acl-permit-wrapper">';
$o .= '<div id="group_allow_wrapper">';
diff --git a/include/api.php b/include/api.php
new file mode 100644
index 000000000..84cb7b38f
--- /dev/null
+++ b/include/api.php
@@ -0,0 +1,431 @@
+<?php
+ require_once("bbcode.php");
+ require_once("datetime.php");
+
+ /*
+ * Twitter-Like API
+ *
+ */
+
+ $API = Array();
+
+
+
+ function api_date($str){
+ //Wed May 23 06:01:13 +0000 2007
+ return datetime_convert('UTC', 'UTC', $str, "D M d h:i:s +0000 Y" );
+ }
+
+
+ function api_register_func($path, $func, $auth=false){
+ global $API;
+ $API[$path] = array('func'=>$func,
+ 'auth'=>$auth);
+ }
+
+ /**
+ * Simple HTTP Login
+ */
+ function api_login(&$a){
+ if (!isset($_SERVER['PHP_AUTH_USER'])) {
+ header('WWW-Authenticate: Basic realm="Friendika"');
+ header('HTTP/1.0 401 Unauthorized');
+ die('This api require login');
+ }
+
+ $user = $_SERVER['PHP_AUTH_USER'];
+ $encrypted = hash('whirlpool',trim($_SERVER['PHP_AUTH_PW']));
+
+
+ /**
+ * next code from mod/auth.php. needs better solution
+ */
+
+ // process normal login request
+
+ $r = q("SELECT * FROM `user` WHERE ( `email` = '%s' OR `nickname` = '%s' )
+ AND `password` = '%s' AND `blocked` = 0 AND `verified` = 1 LIMIT 1",
+ dbesc(trim($user)),
+ dbesc(trim($user)),
+ dbesc($encrypted)
+ );
+ if(count($r)){
+ $record = $r[0];
+ } else {
+ header('WWW-Authenticate: Basic realm="Friendika"');
+ header('HTTP/1.0 401 Unauthorized');
+ die('This api require login');
+ }
+ $_SESSION['uid'] = $record['uid'];
+ $_SESSION['theme'] = $record['theme'];
+ $_SESSION['authenticated'] = 1;
+ $_SESSION['page_flags'] = $record['page-flags'];
+ $_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $record['nickname'];
+ $_SESSION['addr'] = $_SERVER['REMOTE_ADDR'];
+
+ //notice( t("Welcome back ") . $record['username'] . EOL);
+ $a->user = $record;
+
+ if(strlen($a->user['timezone'])) {
+ date_default_timezone_set($a->user['timezone']);
+ $a->timezone = $a->user['timezone'];
+ }
+
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %s AND `self` = 1 LIMIT 1",
+ intval($_SESSION['uid']));
+ if(count($r)) {
+ $a->contact = $r[0];
+ $a->cid = $r[0]['id'];
+ $_SESSION['cid'] = $a->cid;
+ }
+ q("UPDATE `user` SET `login_date` = '%s' WHERE `uid` = %d LIMIT 1",
+ dbesc(datetime_convert()),
+ intval($_SESSION['uid'])
+ );
+
+ call_hooks('logged_in', $a->user);
+
+ header('X-Account-Management-Status: active; name="' . $a->user['username'] . '"; id="' . $a->user['nickname'] .'"');
+ }
+
+ /**************************
+ * MAIN API ENTRY POINT *
+ **************************/
+ function api_call(&$a){
+ GLOBAL $API;
+ foreach ($API as $p=>$info){
+ if (strpos($a->query_string, $p)===0){
+ #unset($_SERVER['PHP_AUTH_USER']);
+ if ($info['auth']===true && local_user()===false) {
+ api_login($a);
+ }
+
+ $type="json";
+ if (strpos($a->query_string, ".xml")>0) $type="xml";
+ if (strpos($a->query_string, ".json")>0) $type="json";
+ if (strpos($a->query_string, ".rss")>0) $type="rss";
+ if (strpos($a->query_string, ".atom")>0) $type="atom";
+
+ $r = call_user_func($info['func'], $a, $type);
+ if ($r===false) return;
+
+ switch($type){
+ case "xml":
+ $r = mb_convert_encoding($r, "UTF-8",mb_detect_encoding($r));
+ header ("Content-Type: text/xml");
+ return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
+ break;
+ case "json":
+ header ("Content-Type: application/json");
+ return json_encode($r);
+ break;
+ case "rss":
+ header ("Content-Type: application/rss+xml");
+ return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
+ break;
+ case "atom":
+ #header ("Content-Type: application/atom+xml");
+ return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
+ break;
+
+ }
+ //echo "<pre>"; var_dump($r); die();
+ }
+ }
+ return false;
+ }
+
+ /**
+ * RSS extra info
+ */
+ function api_rss_extra(&$a, $arr, $user_info){
+ if (is_null($user_info)) $user_info = api_get_user($a);
+ $arr['$rss'] = array(
+ 'alternate' => $user_info['url'],
+ 'self' => $a->get_baseurl(). "/". $a->query_string,
+ 'updated' => api_date(null),
+ 'language' => $user_info['language'],
+ 'logo' => $a->get_baseurl()."/images/friendika-32.png",
+ );
+
+ return $arr;
+ }
+
+ /**
+ * Returns user info array.
+ */
+ function api_get_user(&$a){
+ $user = null;
+ $extra_query = "";
+ if(x($_GET, 'user_id')) {
+ $user = intval($_GET['user_id']);
+ $extra_query = "AND `contact`.`id` = %d ";
+ }
+ if(x($_GET, 'screen_name')) {
+ $user = dbesc($_GET['screen_name']);
+ $extra_query = "AND `contact`.`nick` = '%s' ";
+ }
+
+ if ($user===null){
+ list($user, $null) = explode(".",$a->argv[3]);
+ if(is_numeric($user)){
+ $user = intval($user);
+ $extra_query = "AND `contact`.`id` = %d ";
+ } else {
+ $user = dbesc($user);
+ $extra_query = "AND `contact`.`nick` = '%s' ";
+ }
+ }
+
+ if ($user==='') {
+ if (local_user()===false) {
+ api_login($a); return False;
+ } else {
+ $user = $_SESSION['uid'];
+ $extra_query = "AND `user`.`uid` = %d ";
+ }
+
+ }
+
+
+ // user info
+ $uinfo = q("SELECT *, `contact`.`id` as `cid` FROM `user`, `contact`
+ WHERE `user`.`uid`=`contact`.`uid` AND `contact`.`self`=1
+ $extra_query",
+ $user
+ );
+ if (count($uinfo)==0) {
+ return False;
+ }
+
+ // count public wall messages
+ $r = q("SELECT COUNT(`id`) as `count` FROM `item`
+ WHERE `uid` = %d
+ AND `type`='wall'
+ AND `allow_cid`='' AND `allow_gid`='' AND `deny_cid`='' AND `deny_gid`=''",
+ intval($uinfo[0]['uid'])
+ );
+ $countitms = $r[0]['count'];
+
+ // count friends
+ $r = q("SELECT COUNT(`id`) as `count` FROM `contact`
+ WHERE `uid` = %d
+ AND `self`=0 AND `blocked`=0",
+ intval($uinfo[0]['uid'])
+ );
+ $countfriends = $r[0]['count'];
+
+
+ $ret = Array(
+ 'id' => $uinfo[0]['cid'],
+ 'name' => $uinfo[0]['username'],
+ 'screen_name' => $uinfo[0]['nickname'],
+ 'location' => $uinfo[0]['default-location'],
+ 'profile_image_url' => $uinfo[0]['micro'],
+ 'url' => $uinfo[0]['url'],
+ 'protected' => false, #
+ 'friends_count' => $countfriends,
+ 'created_at' => api_date($uinfo[0]['created']),
+ 'utc_offset' => 0, #XXX: fix me
+ 'time_zone' => $uinfo[0]['timezone'],
+ 'geo_enabled' => false,
+ 'statuses_count' => $countitms, #XXX: fix me
+ 'lang' => 'en', #XXX: fix me
+ 'description' => '',
+ 'followers_count' => $countfriends, #XXX: fix me
+ 'lang' => 'en', #XXX: fix me
+ 'favourites_count' => 0,
+ 'contributors_enabled' => false,
+ 'follow_request_sent' => false,
+ 'profile_background_color' => 'cfe8f6',
+ 'profile_text_color' => '000000',
+ 'profile_link_color' => 'FF8500',
+ 'profile_sidebar_fill_color' =>'AD0066',
+ 'profile_sidebar_border_color' => 'AD0066',
+ 'profile_background_image_url' => '',
+ 'profile_background_tile' => false,
+ 'profile_use_background_image' => false,
+ 'notifications' => false,
+ 'verified' => true, #XXX: fix me
+ 'followers' => '', #XXX: fix me
+ #'status' => null
+ );
+
+ return $ret;
+
+ }
+
+ /**
+ * apply xmlify() to all values of array $val, recursively
+ */
+ function api_xmlify($val){
+ if (is_bool($val)) return $val?"true":"false";
+ if (is_array($val)) return array_map('api_xmlify', $val);
+ return xmlify($val);
+ }
+
+ /**
+ * load api $templatename for $type and replace $data array
+ */
+ function api_apply_template($templatename, $type, $data){
+ switch($type){
+ case "rss":
+ case "atom":
+ case "xml":
+ $data = api_xmlify($data);
+ $tpl = get_markup_template("api_".$templatename."_".$type.".tpl");
+ $ret = replace_macros($tpl, $data);
+ break;
+ case "json":
+ $ret = $data;
+ break;
+ }
+ return $ret;
+ }
+
+ /**
+ ** TWITTER API
+ */
+
+ /**
+ * Returns an HTTP 200 OK response code and a representation of the requesting user if authentication was successful;
+ * returns a 401 status code and an error message if not.
+ * http://developer.twitter.com/doc/get/account/verify_credentials
+ */
+ function api_account_verify_credentials(&$a, $type){
+ if (local_user()===false) return false;
+ $user_info = api_get_user($a);
+
+ return api_apply_template("user", $type, array('$user' => $user_info));
+
+ }
+ api_register_func('api/account/verify_credentials','api_account_verify_credentials', true);
+
+
+
+ /**
+ * Returns extended information of a given user, specified by ID or screen name as per the required id parameter.
+ * The author's most recent status will be returned inline.
+ * http://developer.twitter.com/doc/get/users/show
+ */
+ function api_users_show(&$a, $type){
+ $user_info = api_get_user($a);
+ // get last public wall message
+ $lastwall = q("SELECT `item`.*, `i`.`contact-id` as `reply_uid`, `i`.`nick` as `reply_author`
+ FROM `item`, `contact`,
+ (SELECT `item`.`id`, `item`.`contact-id`, `contact`.`nick` FROM `item`,`contact` WHERE `contact`.`id`=`item`.`contact-id`) as `i`
+ WHERE `item`.`contact-id` = %d
+ AND `i`.`id` = `item`.`parent`
+ AND `contact`.`id`=`item`.`contact-id` AND `contact`.`self`=1
+ AND `type`!='activity'
+ AND `item`.`allow_cid`='' AND `item`.`allow_gid`='' AND `item`.`deny_cid`='' AND `item`.`deny_gid`=''
+ ORDER BY `created` DESC
+ LIMIT 1",
+ intval($user_info['id'])
+ );
+
+ if (count($lastwall)>0){
+ $lastwall = $lastwall[0];
+
+ $in_reply_to_status_id = '';
+ $in_reply_to_user_id = '';
+ $in_reply_to_screen_name = '';
+ if ($lastwall['parent']!=$lastwall['id']) {
+ $in_reply_to_status_id=$lastwall['parent'];
+ $in_reply_to_user_id = $lastwall['reply_uid'];
+ $in_reply_to_screen_name = $lastwall['reply_author'];
+ }
+ $user_info['status'] = array(
+ 'created_at' => api_date($lastwall['created']),
+ 'id' => $lastwall['contact-id'],
+ 'text' => strip_tags(bbcode($lastwall['body'])),
+ 'source' => 'web',
+ 'truncated' => false,
+ 'in_reply_to_status_id' => $in_reply_to_status_id,
+ 'in_reply_to_user_id' => $in_reply_to_user_id,
+ 'favorited' => false,
+ 'in_reply_to_screen_name' => $in_reply_to_screen_name,
+ 'geo' => '',
+ 'coordinates' => $lastwall['coord'],
+ 'place' => $lastwall['location'],
+ 'contributors' => ''
+ );
+ }
+ return api_apply_template("user", $type, array('$user' => $user_info));
+
+ }
+ api_register_func('api/users/show','api_users_show');
+
+ /**
+ *
+ * http://developer.twitter.com/doc/get/statuses/home_timeline
+ *
+ * TODO: Optional parameters
+ * TODO: Add reply info
+ */
+ function api_statuses_home_timeline(&$a, $type){
+ if (local_user()===false) return false;
+
+ $user_info = api_get_user($a);
+
+ // get last newtork messages
+ $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` ) ";
+
+ $r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
+ `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
+ `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
+ `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
+ FROM `item`, `contact`, `user`
+ WHERE `item`.`contact-id` = %d AND `user`.`uid` = `item`.`uid`
+ AND `item`.`visible` = 1 AND `item`.`deleted` = 0
+ AND `contact`.`id` = `item`.`contact-id`
+ AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+ $sql_extra
+ ORDER BY `item`.`created` DESC LIMIT %d ,%d ",
+ intval($user_info['id']),
+ 0,20
+ );
+ $ret = Array();
+
+ foreach($r as $item) {
+ $status = array(
+ 'created_at'=> api_date($item['created']),
+ 'id' => $item['id'],
+ 'text' => strip_tags(bbcode($item['body'])),
+ 'html' => bbcode($item['body']),
+ 'source' => 'web',
+ 'url' => ($item['plink']!=''?$item['plink']:$item['author-link']),
+ 'truncated' => False,
+ 'in_reply_to_status_id' => ($item['parent']!=$item['id']?$item['id']:''),
+ 'in_reply_to_user_id' => '',
+ 'favorited' => false,
+ 'in_reply_to_screen_name' => '',
+ 'geo' => '',
+ 'coordinates' => $item['coord'],
+ 'place' => $item['location'],
+ 'contributors' => '',
+ 'annotations' => '',
+ 'entities' => '',
+ 'user' => $user_info,
+ 'objecttype' => $item['object-type'],
+ 'verb' => $item['verb'],
+ 'self' => $a->get_baseurl()."/api/statuses/show/".$ite['id'].".".$type,
+ 'edit' => $a->get_baseurl()."/api/statuses/show/".$ite['id'].".".$type,
+ );
+ $ret[]=$status;
+ };
+
+ $data = array('$statuses' => $ret);
+ switch($type){
+ case "atom":
+ case "rss":
+ $data = api_rss_extra($a, $data, $user_info);
+ }
+
+ return api_apply_template("timeline", $type, $data);
+ }
+ api_register_func('api/statuses/home_timeline','api_statuses_home_timeline', true);
+ api_register_func('api/statuses/friends_timeline','api_statuses_home_timeline', true);
+ api_register_func('api/statuses/user_timeline','api_statuses_home_timeline', true);
+ # TODO: user_timeline should be profile view
+
diff --git a/include/auth.php b/include/auth.php
index e8cee3918..1c430406e 100644
--- a/include/auth.php
+++ b/include/auth.php
@@ -28,6 +28,15 @@ if((isset($_SESSION)) && (x($_SESSION,'authenticated')) && ((! (x($_POST,'auth-p
goaway($a->get_baseurl());
}
+ if(x($_SESSION,'visitor_id') && (! x($_SESSION,'uid'))) {
+ $r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1",
+ intval($_SESSION['visitor_id'])
+ );
+ if(count($r)) {
+ $a->contact = $r[0];
+ }
+ }
+
if(x($_SESSION,'uid')) {
// already logged in user returning
@@ -191,9 +200,17 @@ else {
$_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $record['nickname'];
$_SESSION['addr'] = $_SERVER['REMOTE_ADDR'];
- notice( t("Welcome back ") . $record['username'] . EOL);
$a->user = $record;
+ if($a->user['login_date'] === '0000-00-00 00:00:00') {
+ $_SESSION['return_url'] = 'profile_photo/new';
+ $a->module = 'profile_photo';
+ notice( t("Welcome ") . $a->user['username'] . EOL);
+ notice( t('Please upload a profile photo.') . EOL);
+ }
+ else
+ notice( t("Welcome back ") . $a->user['username'] . EOL);
+
if(strlen($a->user['timezone'])) {
date_default_timezone_set($a->user['timezone']);
$a->timezone = $a->user['timezone'];
@@ -214,6 +231,8 @@ else {
$a->cid = $r[0]['id'];
$_SESSION['cid'] = $a->cid;
}
+
+
q("UPDATE `user` SET `login_date` = '%s' WHERE `uid` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($_SESSION['uid'])
diff --git a/include/bbcode.php b/include/bbcode.php
index 978b4af69..195fc9181 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -3,7 +3,7 @@ require_once("include/oembed.php");
// BBcode 2 HTML was written by WAY2WEB.net
// extended to work with Mistpark/Friendika - Mike Macgirvin
-function bbcode($Text) {
+function bbcode($Text,$preserve_nl = false) {
// Replace any html brackets with HTML Entities to prevent executing HTML or script
// Don't use strip_tags here because it breaks [url] search by replacing & with amp
@@ -12,7 +12,10 @@ function bbcode($Text) {
$Text = str_replace(">", "&gt;", $Text);
// Convert new line chars to html <br /> tags
+
$Text = nl2br($Text);
+ if($preserve_nl)
+ $Text = str_replace(array("\n","\r"), array('',''),$Text);
// Set up the parameters for a URL search string
$URLSearchString = "^\[\]";
@@ -22,7 +25,7 @@ function bbcode($Text) {
// Perform URL Search
- $Text = preg_replace("/([^\]\=]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\'\%\$\!\+]+)/", ' <a href="$2" target="external-link">$2</a>', $Text);
+ $Text = preg_replace("/([^\]\=]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\'\%\$\!\+\,]+)/", ' <a href="$2" target="external-link">$2</a>', $Text);
$Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/", '<a href="$1" target="external-link">$1</a>', $Text);
$Text = preg_replace("(\[url\=([$URLSearchString]*)\](.+?)\[/url\])", '<a href="$1" target="external-link">$2</a>', $Text);
@@ -77,7 +80,7 @@ function bbcode($Text) {
// Images
// [img]pathtoimage[/img]
- $Text = preg_replace("/\[img\](.+?)\[\/img\]/", '<img src="$1">', $Text);
+ $Text = preg_replace("/\[img\](.+?)\[\/img\]/", '<img src="$1" alt="' . t('Image/photo') . '" />', $Text);
// html5 video and audio
@@ -90,8 +93,12 @@ function bbcode($Text) {
$Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.+?)\[\/img\]/", '<img src="$3" height="$2" width="$1">', $Text);
// Youtube extensions
- $Text = preg_replace("/\[youtube\]http:\/\/www.youtube.com\/watch\?v\=(.+?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text);
- $Text = preg_replace("/\[youtube\](.+?)\[\/youtube\]/", '<object width="425" height="350" type="application/x-shockwave-flash" data="http://www.youtube.com/v/$1" ><param name="movie" value="http://www.youtube.com/v/$1"></param><!--[if IE]><embed src="http://www.youtube.com/v/$1" type="application/x-shockwave-flash" width="425" height="350" /><![endif]--></object>', $Text);
+ $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/watch\?v\=(.+?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text);
+ $Text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.+?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text);
+
+ $Text = preg_replace("/\[youtube\](.+?)\[\/youtube\]/", '<iframe width="425" height="349" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>', $Text);
+
+// $Text = preg_replace("/\[youtube\](.+?)\[\/youtube\]/", '<object width="425" height="350" type="application/x-shockwave-flash" data="http://www.youtube.com/v/$1" ><param name="movie" value="http://www.youtube.com/v/$1"></param><!--[if IE]><embed src="http://www.youtube.com/v/$1" type="application/x-shockwave-flash" width="425" height="350" /><![endif]--></object>', $Text);
// oembed tag
$Text = oembed_bbcode2html($Text);
diff --git a/include/conversation.php b/include/conversation.php
new file mode 100644
index 000000000..5f761ccf0
--- /dev/null
+++ b/include/conversation.php
@@ -0,0 +1,755 @@
+<?php
+
+/**
+ * Render actions localized
+ */
+function localize_item(&$item){
+
+ if ($item['verb']=="http://activitystrea.ms/schema/1.0/like" ||
+ $item['verb']=="http://activitystrea.ms/schema/1.0/dislike"){
+
+ $r = q("SELECT * from `item`,`contact` WHERE
+ `item`.`contact-id`=`contact`.`id` AND `item`.`uri`='%s';",
+ dbesc($item['parent-uri']));
+ if(count($r)==0) return;
+ $obj=$r[0];
+
+ $author = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]';
+ $objauthor = '[url=' . $obj['author-link'] . ']' . $obj['author-name'] . '[/url]';
+
+ $post_type = (($obj['resource-id']) ? t('photo') : t('status'));
+ $plink = '[url=' . $obj['plink'] . ']' . $post_type . '[/url]';
+
+ switch($item['verb']){
+ case "http://activitystrea.ms/schema/1.0/like":
+ $bodyverb = t('%1$s likes %2$s\'s %3$s');
+ break;
+ case "http://activitystrea.ms/schema/1.0/dislike":
+ $bodyverb = t('%1$s doesn\'t like %2$s\'s %3$s');
+ break;
+ }
+ $item['body'] = sprintf($bodyverb, $author, $objauthor, $plink);
+
+ }
+ if ($item['verb']=='http://activitystrea.ms/schema/1.0/make-friend'){
+
+ if ($item['object-type']=="" || $item['object-type']!='http://activitystrea.ms/schema/1.0/person') return;
+
+ $Aname = $item['author-name'];
+ $Alink = $item['author-link'];
+
+ $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
+
+ $obj = parse_xml_string($xmlhead.$item['object']);
+ $links = parse_xml_string($xmlhead."<links>".unxmlify($obj->link)."</links>");
+
+ $Bname = $obj->title;
+ $Blink = ""; $Bphoto = "";
+ foreach ($links->link as $l){
+ $atts = $l->attributes();
+ switch($atts['rel']){
+ case "alternate": $Blink = $atts['href'];
+ case "photo": $Bphoto = $atts['href'];
+ }
+
+ }
+
+ $A = '[url=' . $Alink . ']' . $Aname . '[/url]';
+ $B = '[url=' . $Blink . ']' . $Bname . '[/url]';
+ if ($Bphoto!="") $Bphoto = '[url=' . $Blink . '][img]' . $Bphoto . '[/img][/url]';
+
+ $item['body'] = sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$Bphoto;
+
+ }
+
+}
+
+/**
+ * "Render" a conversation or list of items for HTML display.
+ * There are two major forms of display:
+ * - Sequential or unthreaded ("New Item View" or search results)
+ * - conversation view
+ * The $mode parameter decides between the various renderings and also
+ * figures out how to determine page owner and other contextual items
+ * that are based on unique features of the calling module.
+ *
+ */
+function conversation(&$a, $items, $mode, $update) {
+
+ require_once('bbcode.php');
+
+ $profile_owner = 0;
+ $page_writeable = false;
+
+ if($mode === 'network') {
+ $profile_owner = local_user();
+ $page_writeable = true;
+ }
+
+ if($mode === 'profile') {
+ $profile_owner = $a->profile['profile_uid'];
+ $page_writeable = can_write_wall($a,$profile_owner);
+ }
+
+ if($mode === 'notes') {
+ $profile_owner = $a->profile['profile_uid'];
+ $page_writeable = true;
+ }
+
+ if($mode === 'display') {
+ $profile_owner = $a->profile['uid'];
+ $page_writeable = can_write_wall($a,$profile_owner);
+ }
+
+ if($update)
+ $return_url = $_SESSION['return_url'];
+ else
+ $return_url = $_SESSION['return_url'] = $a->cmd;
+
+ load_contact_links(local_user());
+
+
+ $cmnt_tpl = get_markup_template('comment_item.tpl');
+ $like_tpl = get_markup_template('like.tpl');
+ $noshare_tpl = get_markup_template('like_noshare.tpl');
+ $tpl = get_markup_template('wall_item.tpl');
+ $wallwall = get_markup_template('wallwall_item.tpl');
+
+ $alike = array();
+ $dlike = array();
+
+ if(count($items)) {
+
+ if($mode === 'network-new' || $mode === 'search') {
+
+ // "New Item View" on network page or search page results
+ // - just loop through the items and format them minimally for display
+
+ $tpl = get_markup_template('search_item.tpl');
+ $droptpl = get_markup_template('wall_fake_drop.tpl');
+
+ foreach($items as $item) {
+
+ $comment = '';
+ $owner_url = '';
+ $owner_photo = '';
+ $owner_name = '';
+ $sparkle = '';
+
+ if($mode === 'search') {
+ if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE)))
+ && ($item['id'] != $item['parent']))
+ continue;
+ $nickname = $item['nickname'];
+ }
+ else
+ $nickname = $a->user['nickname'];
+
+ $profile_name = ((strlen($item['author-name'])) ? $item['author-name'] : $item['name']);
+
+ $sp = false;
+ $profile_link = best_link_url($item,$sp);
+ if($sp)
+ $sparkle = ' sparkle';
+ if($profile_link === 'mailbox')
+ $profile_link = '';
+
+
+ $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
+ if(($normalised != 'mailbox') && (x($a->contacts[$normalised])))
+ $profile_avatar = $a->contacts[$normalised]['thumb'];
+ else
+ $profile_avatar = ((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']);
+
+ $location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
+ $coord = (($item['coord']) ? '<a target="map" title="' . $item['coord'] . '" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
+ if($coord) {
+ if($location)
+ $location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
+ else
+ $location = '<span class="smalltext">' . $coord . '</span>';
+ }
+
+ $drop = '';
+ $dropping = false;
+
+ if((intval($item['contact-id']) && $item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
+ $dropping = true;
+
+ $drop = replace_macros((($dropping)? $droptpl : $fakedrop), array('$id' => $item['id'], '$delete' => t('Delete')));
+
+ //
+ localize_item($item);
+
+ $drop = replace_macros($droptpl,array('$id' => $item['id']));
+ $lock = '<div class="wall-item-lock"></div>';
+
+ $o .= replace_macros($tpl,array(
+ '$id' => $item['item_id'],
+ '$linktitle' => sprintf( t('View %s\'s profile'), $profile_name),
+ '$profile_url' => $profile_link,
+ '$item_photo_menu' => item_photo_menu($item),
+ '$name' => $profile_name,
+ '$sparkle' => $sparkle,
+ '$lock' => $lock,
+ '$thumb' => $profile_avatar,
+ '$title' => $item['title'],
+ '$body' => smilies(bbcode($item['body'])),
+ '$ago' => relative_date($item['created']),
+ '$location' => $location,
+ '$indent' => '',
+ '$owner_url' => $owner_url,
+ '$owner_photo' => $owner_photo,
+ '$owner_name' => $owner_name,
+ '$drop' => $drop,
+ '$conv' => '<a href="' . $a->get_baseurl() . '/display/' . $nickname . '/' . $item['id'] . '">' . t('View in context') . '</a>'
+ ));
+
+ }
+
+ return $o;
+ }
+
+
+
+
+ // Normal View
+
+
+ // Figure out how many comments each parent has
+ // (Comments all have gravity of 6)
+ // Store the result in the $comments array
+
+ $comments = array();
+ foreach($items as $item) {
+ if((intval($item['gravity']) == 6) && ($item['id'] != $item['parent'])) {
+ if(! x($comments,$item['parent']))
+ $comments[$item['parent']] = 1;
+ else
+ $comments[$item['parent']] += 1;
+ }
+ }
+
+ // map all the like/dislike activities for each parent item
+ // Store these in the $alike and $dlike arrays
+
+ foreach($items as $item) {
+ like_puller($a,$item,$alike,'like');
+ like_puller($a,$item,$dlike,'dislike');
+ }
+
+ $comments_collapsed = false;
+ $blowhard = 0;
+ $blowhard_count = 0;
+
+ foreach($items as $item) {
+
+ $comment = '';
+ $template = $tpl;
+ $commentww = '';
+ $sparkle = '';
+ $owner_url = $owner_photo = $owner_name = '';
+
+ // We've already parsed out like/dislike for special treatment. We can ignore them now
+
+ if(((activity_match($item['verb'],ACTIVITY_LIKE))
+ || (activity_match($item['verb'],ACTIVITY_DISLIKE)))
+ && ($item['id'] != $item['parent']))
+ continue;
+
+ $toplevelpost = (($item['id'] == $item['parent']) ? true : false);
+
+
+ // Take care of author collapsing and comment collapsing
+ // If a single author has more than 3 consecutive top-level posts, squash the remaining ones.
+ // If there are more than two comments, squash all but the last 2.
+
+ if($toplevelpost) {
+
+ $item_writeable = (($item['writable'] || $item['self']) ? true : false);
+
+ if($blowhard == $item['cid'] && (! $item['self']) && ($mode != 'profile') && ($mode != 'notes')) {
+ $blowhard_count ++;
+ if($blowhard_count == 3) {
+ $o .= '<div class="icollapse-wrapper fakelink" id="icollapse-wrapper-' . $item['parent']
+ . '" onclick="openClose(' . '\'icollapse-' . $item['parent'] . '\'); $(\'#icollapse-wrapper-' . $item['parent'] . '\').hide();" >'
+ . t('See more posts like this') . '</div>' . '<div class="icollapse" id="icollapse-'
+ . $item['parent'] . '" style="display: none;" >';
+ }
+ }
+ else {
+ $blowhard = $item['cid'];
+ if($blowhard_count >= 3)
+ $o .= '</div>';
+ $blowhard_count = 0;
+ }
+
+ $comments_seen = 0;
+ $comments_collapsed = false;
+ }
+ else
+ $comments_seen ++;
+
+
+ $override_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false);
+ $show_comment_box = ((($page_writeable) && ($item_writeable) && ($comments_seen == $comments[$item['parent']])) ? true : false);
+
+ if(($comments[$item['parent']] > 2) && ($comments_seen <= ($comments[$item['parent']] - 2)) && ($item['gravity'] == 6)) {
+ if(! $comments_collapsed) {
+ $o .= '<div class="ccollapse-wrapper fakelink" id="ccollapse-wrapper-' . $item['parent']
+ . '" onclick="openClose(' . '\'ccollapse-' . $item['parent'] . '\'); $(\'#ccollapse-wrapper-' . $item['parent'] . '\').hide();" >'
+ . sprintf( t('See all %d comments'), $comments[$item['parent']]) . '</div>'
+ . '<div class="ccollapse" id="ccollapse-' . $item['parent'] . '" style="display: none;" >';
+ $comments_collapsed = true;
+ }
+ }
+ if(($comments[$item['parent']] > 2) && ($comments_seen == ($comments[$item['parent']] - 1))) {
+ $o .= '</div>';
+ }
+
+ $redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
+
+ $lock = ((($item['private']) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
+ || strlen($item['deny_cid']) || strlen($item['deny_gid']))))
+ ? '<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="' . t('Private Message') . '" onclick="lockview(event,' . $item['id'] . ');" /></div>'
+ : '<div class="wall-item-lock"></div>');
+
+
+ // Top-level wall post not written by the wall owner (wall-to-wall)
+ // First figure out who owns it.
+
+ $osparkle = '';
+
+ if(($toplevelpost) && (! $item['self']) && ($mode !== 'profile')) {
+
+ if($item['type'] === 'wall') {
+
+ // On the network page, I am the owner. On the display page it will be the profile owner.
+ // This will have been stored in $a->page_contact by our calling page.
+ // Put this person on the left of the wall-to-wall notice.
+
+ $owner_url = $a->page_contact['url'];
+ $owner_photo = $a->page_contact['thumb'];
+ $owner_name = $a->page_contact['name'];
+ $template = $wallwall;
+ $commentww = 'ww';
+ }
+ if(($item['type'] === 'remote') && (strlen($item['owner-link'])) && ($item['owner-link'] != $item['author-link'])) {
+
+ // Could be anybody.
+
+ $owner_url = $item['owner-link'];
+ $owner_photo = $item['owner-avatar'];
+ $owner_name = $item['owner-name'];
+ $template = $wallwall;
+ $commentww = 'ww';
+ // If it is our contact, use a friendly redirect link
+ if((link_compare($item['owner-link'],$item['url']))
+ && ($item['network'] === 'dfrn')) {
+ $owner_url = $redirect_url;
+ $osparkle = ' sparkle';
+ }
+ }
+ }
+
+
+ $likebuttons = '';
+
+ if($page_writeable) {
+ if($toplevelpost) {
+ $likebuttons = replace_macros((($item['private']) ? $noshare_tpl : $like_tpl),array(
+ '$id' => $item['id'],
+ '$likethis' => t("I like this \x28toggle\x29"),
+ '$nolike' => t("I don't like this \x28toggle\x29"),
+ '$share' => t('Share'),
+ '$wait' => t('Please wait')
+ ));
+ }
+
+ if(($show_comment_box) || (($show_comment_box == false) && ($override_comment_box == false) && ($item['last-child']))) {
+ $comment = replace_macros($cmnt_tpl,array(
+ '$return_path' => '',
+ '$jsreload' => (($mode === 'display') ? $_SESSION['return_url'] : ''),
+ '$type' => (($mode === 'profile') ? 'wall-comment' : 'net-comment'),
+ '$id' => $item['item_id'],
+ '$parent' => $item['parent'],
+ '$profile_uid' => $profile_owner,
+ '$mylink' => $a->contact['url'],
+ '$mytitle' => t('This is you'),
+ '$myphoto' => $a->contact['thumb'],
+ '$comment' => t('Comment'),
+ '$submit' => t('Submit'),
+ '$ww' => (($mode === 'network') ? $commentww : '')
+ ));
+ }
+ }
+
+ $edpost = (((($profile_owner == local_user()) && ($toplevelpost) && (intval($item['wall']) == 1)) || ($mode === 'notes'))
+ ? '<a class="editpost" href="' . $a->get_baseurl() . '/editpost/' . $item['id']
+ . '" title="' . t('Edit') . '"><img src="images/pencil.gif" /></a>'
+ : '');
+ $drop = replace_macros(get_markup_template('wall_item_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));
+
+ $photo = $item['photo'];
+ $thumb = $item['thumb'];
+
+ // Post was remotely authored.
+
+ $diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true);
+
+ $profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']);
+
+ $sp = false;
+ $profile_link = best_link_url($item,$sp);
+ if($sp)
+ $sparkle = ' sparkle';
+
+ if($profile_link === 'mailbox')
+ $profile_link = '';
+
+ $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
+ if(($normalised != 'mailbox') && (x($a->contacts[$normalised])))
+ $profile_avatar = $a->contacts[$normalised]['thumb'];
+ else
+ $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $thumb);
+
+
+
+
+
+ $like = ((x($alike,$item['id'])) ? format_like($alike[$item['id']],$alike[$item['id'] . '-l'],'like',$item['id']) : '');
+ $dislike = ((x($dlike,$item['id'])) ? format_like($dlike[$item['id']],$dlike[$item['id'] . '-l'],'dislike',$item['id']) : '');
+
+ $location = (($item['location']) ? '<a target="map" title="' . $item['location']
+ . '" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
+ $coord = (($item['coord']) ? '<a target="map" title="' . $item['coord']
+ . '" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
+ if($coord) {
+ if($location)
+ $location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
+ else
+ $location = '<span class="smalltext">' . $coord . '</span>';
+ }
+
+ $indent = (($toplevelpost) ? '' : ' comment');
+
+ if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
+ $indent .= ' shiny';
+
+ //
+ localize_item($item);
+
+ // Build the HTML
+
+ $tmp_item = replace_macros($template,array(
+ '$id' => $item['item_id'],
+ '$linktitle' => sprintf( t('View %s\'s profile'), $profile_name),
+ '$olinktitle' => sprintf( t('View %s\'s profile'), $owner_name),
+ '$to' => t('to'),
+ '$wall' => t('Wall-to-Wall'),
+ '$vwall' => t('via Wall-To-Wall:'),
+ '$profile_url' => $profile_link,
+ '$item_photo_menu' => item_photo_menu($item),
+ '$name' => $profile_name,
+ '$thumb' => $profile_avatar,
+ '$osparkle' => $osparkle,
+ '$sparkle' => $sparkle,
+ '$title' => $item['title'],
+ '$body' => smilies(bbcode($item['body'])),
+ '$ago' => relative_date($item['created']),
+ '$lock' => $lock,
+ '$location' => $location,
+ '$indent' => $indent,
+ '$owner_url' => $owner_url,
+ '$owner_photo' => $owner_photo,
+ '$owner_name' => $owner_name,
+ '$plink' => get_plink($item),
+ '$edpost' => $edpost,
+ '$drop' => $drop,
+ '$vote' => $likebuttons,
+ '$like' => $like,
+ '$dislike' => $dislike,
+ '$comment' => $comment
+ ));
+
+ $arr = array('item' => $item, 'output' => $tmp_item);
+ call_hooks('display_item', $arr);
+
+ $o .= $arr['output'];
+
+ }
+ }
+
+
+ // if author collapsing is in force but didn't get closed, close it off now.
+
+ if($blowhard_count >= 3)
+ $o .= '</div>';
+
+ return $o;
+}
+
+
+if(! function_exists('load_contact_links')) {
+function load_contact_links($uid) {
+
+ $a = get_app();
+
+ $ret = array();
+
+ if(! $uid || x($a->contacts,'empty'))
+ return;
+
+ $r = q("SELECT `id`,`network`,`url`,`thumb` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 ",
+ intval($uid)
+ );
+ if(count($r)) {
+ foreach($r as $rr){
+ $url = normalise_link($rr['url']);
+ $ret[$url] = $rr;
+ }
+ }
+ else
+ $ret['empty'] = true;
+ $a->contacts = $ret;
+ return;
+}}
+
+
+function best_link_url($item,&$sparkle) {
+
+ $a = get_app();
+
+ $best_url = '';
+ $sparkle = false;
+
+ $clean_url = normalise_link($item['author-link']);
+
+ if((local_user()) && (local_user() == $item['uid'])) {
+ if(isset($a->contacts) && x($a->contacts,$clean_url)) {
+ if($a->contacts[$clean_url]['network'] === NETWORK_DFRN) {
+ $best_url = $a->get_baseurl() . '/redir/' . $a->contacts[$clean_url]['id'];
+ $sparkle = true;
+ }
+ else
+ $best_url = $a->contacts[$clean_url]['url'];
+ }
+ }
+ if(! $best_url) {
+ if(strlen($item['author-link']))
+ $best_url = $item['author-link'];
+ else
+ $best_url = $item['url'];
+ }
+
+ return $best_url;
+}
+
+
+if(! function_exists('item_photo_menu')){
+function item_photo_menu($item){
+ $a = get_app();
+
+ if (local_user() && (! count($a->contacts)))
+ load_contact_links(local_user());
+
+ $contact_url="";
+ $pm_url="";
+ $status_link="";
+ $photos_link="";
+ $posts_link="";
+
+ $sparkle = false;
+ $profile_link = best_link_url($item,$sparkle);
+ if($profile_link === 'mailbox')
+ $profile_link = '';
+
+ if($sparkle) {
+ $cid = intval(basename($profile_link));
+ $status_link = $profile_link . "?url=status";
+ $photos_link = $profile_link . "?url=photos";
+ $profile_link = $profile_link . "?url=profile";
+ $pm_url = $a->get_baseurl() . '/message/new/' . $cid;
+ }
+ else {
+ if(local_user() && local_user() == $item['uid'] && link_compare($item['url'],$item['author-link'])) {
+ $cid = $item['contact-id'];
+ }
+ else {
+ $cid = 0;
+ }
+ }
+ if(($cid) && (! $item['self'])) {
+ $contact_url = $a->get_baseurl() . '/contacts/' . $cid;
+ $posts_link = $a->get_baseurl() . '/network/?cid=' . $cid;
+ }
+
+ $menu = Array(
+ t("View status") => $status_link,
+ t("View profile") => $profile_link,
+ t("View photos") => $photos_link,
+ t("View recent") => $posts_link,
+ t("Edit contact") => $contact_url,
+ t("Send PM") => $pm_url,
+ );
+
+
+ $args = array($item, &$menu);
+
+ call_hooks('item_photo_menu', $args);
+
+ $o = "";
+ foreach($menu as $k=>$v){
+ if ($v!="") $o .= "<li><a href='$v'>$k</a></li>\n";
+ }
+ return $o;
+}}
+
+if(! function_exists('like_puller')) {
+function like_puller($a,$item,&$arr,$mode) {
+
+ $url = '';
+ $sparkle = '';
+ $verb = (($mode === 'like') ? ACTIVITY_LIKE : ACTIVITY_DISLIKE);
+
+ if((activity_match($item['verb'],$verb)) && ($item['id'] != $item['parent'])) {
+ $url = $item['author-link'];
+ if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === 'dfrn') && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) {
+ $url = $a->get_baseurl() . '/redir/' . $item['contact-id'];
+ $sparkle = ' class="sparkle" ';
+ }
+ if(! ((isset($arr[$item['parent'] . '-l'])) && (is_array($arr[$item['parent'] . '-l']))))
+ $arr[$item['parent'] . '-l'] = array();
+ if(! isset($arr[$item['parent']]))
+ $arr[$item['parent']] = 1;
+ else
+ $arr[$item['parent']] ++;
+ $arr[$item['parent'] . '-l'][] = '<a href="'. $url . '"'. $sparkle .'>' . $item['author-name'] . '</a>';
+ }
+ return;
+}}
+
+// Format the like/dislike text for a profile item
+// $cnt = number of people who like/dislike the item
+// $arr = array of pre-linked names of likers/dislikers
+// $type = one of 'like, 'dislike'
+// $id = item id
+// returns formatted text
+
+if(! function_exists('format_like')) {
+function format_like($cnt,$arr,$type,$id) {
+ $o = '';
+ if($cnt == 1)
+ $o .= (($type === 'like') ? sprintf( t('%s likes this.'), $arr[0]) : sprintf( t('%s doesn\'t like this.'), $arr[0])) . EOL ;
+ else {
+ $spanatts = 'class="fakelink" onclick="openClose(\'' . $type . 'list-' . $id . '\');"';
+ $o .= (($type === 'like') ?
+ sprintf( t('<span %1$s>%2$d people</span> like this.'), $spanatts, $cnt)
+ :
+ sprintf( t('<span %1$s>%2$d people</span> don\'t like this.'), $spanatts, $cnt) );
+ $o .= EOL ;
+ $total = count($arr);
+ if($total >= MAX_LIKERS)
+ $arr = array_slice($arr, 0, MAX_LIKERS - 1);
+ if($total < MAX_LIKERS)
+ $arr[count($arr)-1] = t('and') . ' ' . $arr[count($arr)-1];
+ $str = implode(', ', $arr);
+ if($total >= MAX_LIKERS)
+ $str .= sprintf( t(', and %d other people'), $total - MAX_LIKERS );
+ $str = (($type === 'like') ? sprintf( t('%s like this.'), $str) : sprintf( t('%s don\'t like this.'), $str));
+ $o .= "\t" . '<div id="' . $type . 'list-' . $id . '" style="display: none;" >' . $str . '</div>';
+ }
+ return $o;
+}}
+
+
+function status_editor($a,$x, $notes_cid = 0) {
+
+ $o = '';
+
+ $geotag = (($x['allow_location']) ? get_markup_template('jot_geotag.tpl') : '');
+
+ $tpl = get_markup_template('jot-header.tpl');
+
+ $a->page['htmlhead'] .= replace_macros($tpl, array(
+ '$baseurl' => $a->get_baseurl(),
+ '$geotag' => $geotag,
+ '$nickname' => $x['nickname'],
+ '$ispublic' => t('Visible to <strong>everybody</strong>'),
+ '$linkurl' => t('Please enter a link URL:'),
+ '$utubeurl' => t('Please enter a YouTube link:'),
+ '$vidurl' => t("Please enter a video\x28.ogg\x29 link/URL:"),
+ '$audurl' => t("Please enter an audio\x28.ogg\x29 link/URL:"),
+ '$whereareu' => t('Where are you right now?'),
+ '$title' => t('Enter a title for this item')
+ ));
+
+
+ $tpl = get_markup_template("jot.tpl");
+
+ $jotplugins = '';
+ $jotnets = '';
+
+ $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
+
+ $mail_enabled = false;
+ $pubmail_enabled = false;
+
+ if(($x['is_owner']) && (! $mail_disabled)) {
+ $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1",
+ intval(local_user())
+ );
+ if(count($r)) {
+ $mail_enabled = true;
+ if(intval($r[0]['pubmail']))
+ $pubmail_enabled = true;
+ }
+ }
+
+ if($mail_enabled) {
+ $selected = (($pubmail_enabled) ? ' checked="checked" ' : '');
+ $jotnets .= '<div class="profile-jot-net"><input type="checkbox" name="pubmail_enable"' . $selected . 'value="1" /> '
+ . t("Post to Email") . '</div>';
+ }
+
+ call_hooks('jot_tool', $jotplugins);
+ call_hooks('jot_networks', $jotnets);
+
+ if($notes_cid)
+ $jotnets .= '<input type="hidden" name="contact_allow[]" value="' . $notes_cid .'" />';
+
+ $tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
+
+ $o .= replace_macros($tpl,array(
+ '$return_path' => $a->cmd,
+ '$action' => 'item',
+ '$share' => (($x['button']) ? $x['button'] : t('Share')),
+ '$upload' => t('Upload photo'),
+ '$weblink' => t('Insert web link'),
+ '$youtube' => t('Insert YouTube video'),
+ '$video' => t('Insert Vorbis [.ogg] video'),
+ '$audio' => t('Insert Vorbis [.ogg] audio'),
+ '$setloc' => t('Set your location'),
+ '$noloc' => t('Clear browser location'),
+ '$title' => t('Set title'),
+ '$wait' => t('Please wait'),
+ '$permset' => t('Permission settings'),
+ '$ptyp' => (($notes_cid) ? 'note' : 'wall'),
+ '$content' => '',
+ '$post_id' => '',
+ '$baseurl' => $a->get_baseurl(),
+ '$defloc' => $x['default_location'],
+ '$visitor' => $x['visitor'],
+ '$pvisit' => (($notes_cid) ? 'none' : $x['visitor']),
+ '$emailcc' => t('CC: email addresses'),
+ '$public' => t('Public post'),
+ '$jotnets' => $jotnets,
+ '$emtitle' => t('Example: bob@example.com, mary@example.com'),
+ '$lockstate' => $x['lockstate'],
+ '$acl' => $x['acl'],
+ '$bang' => $x['bang'],
+ '$profile_uid' => $x['profile_uid'],
+ ));
+
+ return $o;
+} \ No newline at end of file
diff --git a/include/dba.php b/include/dba.php
index d75ed560a..49b325cf7 100644
--- a/include/dba.php
+++ b/include/dba.php
@@ -19,6 +19,23 @@ class dba {
public $connected = false;
function __construct($server,$user,$pass,$db,$install = false) {
+
+ $server = trim($server);
+ $user = trim($user);
+ $pass = trim($pass);
+ $db = trim($db);
+
+ if($install) {
+ if(strlen($server) && ($server !== 'localhost') && ($server !== '127.0.0.1')) {
+ if(! dns_get_record($server, DNS_A + DNS_CNAME + DNS_PTR)) {
+ notice( sprintf( t('Cannot locate DNS info for database server \'%s\''), $server));
+ $this->connected = false;
+ $this->db = null;
+ return;
+ }
+ }
+ }
+
$this->db = @new mysqli($server,$user,$pass,$db);
if(! mysqli_connect_errno()) {
$this->connected = true;
@@ -61,7 +78,7 @@ class dba {
}
else {
- /*
+ /**
* If dbfail.out exists, we will write any failed calls directly to it,
* regardless of any logging that may or may nor be in effect.
* These usually indicate SQL syntax errors that need to be resolved.
diff --git a/include/email.php b/include/email.php
new file mode 100644
index 000000000..7e0351e94
--- /dev/null
+++ b/include/email.php
@@ -0,0 +1,201 @@
+<?php
+
+function email_connect($mailbox,$username,$password) {
+ if(! function_exists('imap_open'))
+ return false;
+
+ $mbox = imap_open($mailbox,$username,$password);
+
+ return $mbox;
+}
+
+function email_poll($mbox,$email_addr) {
+
+ if(! ($mbox && $email_addr))
+ return array();;
+
+ $search = imap_search($mbox,'FROM "' . $email_addr . '"', SE_UID);
+
+ $search2 = imap_search($mbox,'TO "' . $email_addr . '"', SE_UID);
+
+ if($search && $search2)
+ $res = array_merge($search,$search2);
+ elseif($search)
+ $res = $search;
+ else
+ $res = $search2;
+
+ return (($res) ? $res : array());
+}
+
+
+function construct_mailbox_name($mailacct) {
+ $ret = '{' . $mailacct['server'] . ((intval($mailacct['port'])) ? ':' . $mailacct['port'] : '');
+ $ret .= (($mailacct['ssltype']) ? '/' . $mailacct['ssltype'] . '/novalidate-cert' : '');
+ $ret .= '}' . $mailacct['mailbox'];
+ return $ret;
+}
+
+
+function email_msg_meta($mbox,$uid) {
+ $ret = (($mbox && $uid) ? imap_fetch_overview($mbox,$uid,FT_UID) : array(array()));
+ return ((count($ret)) ? $ret[0] : array());
+}
+
+function email_msg_headers($mbox,$uid) {
+ $raw_header = (($mbox && $uid) ? imap_fetchheader($mbox,$uid,FT_UID) : '');
+ $raw_header = str_replace("\r",'',$raw_header);
+ $ret = array();
+ $h = split("\n",$raw_header);
+ if(count($h))
+ foreach($h as $line ) {
+ if (preg_match("/^[a-zA-Z]/", $line)) {
+ $key = substr($line,0,strpos($line,':'));
+ $value = substr($line,strpos($line,':')+1);
+
+ $last_entry = strtolower($key);
+ $ret[$last_entry] = trim($value);
+ }
+ else {
+ $ret[$last_entry] .= ' ' . trim($line);
+ }
+ }
+ return $ret;
+}
+
+
+function email_get_msg($mbox,$uid) {
+ $ret = array();
+
+ $struc = (($mbox && $uid) ? imap_fetchstructure($mbox,$uid,FT_UID) : null);
+
+ if(! $struc)
+ return $ret;
+
+ if(! $struc->parts) {
+ $ret['body'] = email_get_part($mbox,$uid,$struc,0);
+ }
+ else {
+ foreach($struc->parts as $ptop => $p) {
+ $x = email_get_part($mbox,$uid,$p,$ptop + 1);
+ if($x)
+ $ret['body'] = $x;
+ }
+ }
+ return $ret;
+}
+
+// At the moment - only return plain/text.
+// Later we'll repackage inline images as data url's and make the HTML safe
+
+function email_get_part($mbox,$uid,$p,$partno) {
+ // $partno = '1', '2', '2.1', '2.1.3', etc for multipart, 0 if simple
+ global $htmlmsg,$plainmsg,$charset,$attachments;
+
+ echo $partno;
+
+ // DECODE DATA
+ $data = ($partno)
+ ? imap_fetchbody($mbox,$uid,$partno, FT_UID|FT_PEEK)
+ : imap_body($mbox,$uid,FT_UID|FT_PEEK);
+
+ // Any part may be encoded, even plain text messages, so check everything.
+ if ($p->encoding==4)
+ $data = quoted_printable_decode($data);
+ elseif ($p->encoding==3)
+ $data = base64_decode($data);
+
+ // PARAMETERS
+ // get all parameters, like charset, filenames of attachments, etc.
+ $params = array();
+ if ($p->parameters)
+ foreach ($p->parameters as $x)
+ $params[strtolower($x->attribute)] = $x->value;
+ if ($p->dparameters)
+ foreach ($p->dparameters as $x)
+ $params[strtolower($x->attribute)] = $x->value;
+
+ // ATTACHMENT
+ // Any part with a filename is an attachment,
+ // so an attached text file (type 0) is not mistaken as the message.
+
+ if ($params['filename'] || $params['name']) {
+ // filename may be given as 'Filename' or 'Name' or both
+ $filename = ($params['filename'])? $params['filename'] : $params['name'];
+ // filename may be encoded, so see imap_mime_header_decode()
+ $attachments[$filename] = $data; // this is a problem if two files have same name
+ }
+
+ // TEXT
+ if ($p->type == 0 && $data) {
+ // Messages may be split in different parts because of inline attachments,
+ // so append parts together with blank row.
+ if (strtolower($p->subtype)=='plain')
+ return (trim($data) ."\n\n");
+ else
+ $data = '';
+
+ // $htmlmsg .= $data ."<br><br>";
+ $charset = $params['charset']; // assume all parts are same charset
+ }
+
+ // EMBEDDED MESSAGE
+ // Many bounce notifications embed the original message as type 2,
+ // but AOL uses type 1 (multipart), which is not handled here.
+ // There are no PHP functions to parse embedded messages,
+ // so this just appends the raw source to the main message.
+// elseif ($p->type==2 && $data) {
+// $plainmsg .= $data."\n\n";
+// }
+
+ // SUBPART RECURSION
+ if ($p->parts) {
+ foreach ($p->parts as $partno0=>$p2) {
+ $x = email_get_part($mbox,$uid,$p2,$partno . '.' . ($partno0+1)); // 1.2, 1.2.1, etc.
+ if($x)
+ return $x;
+ }
+ }
+}
+
+
+
+function email_header_encode($in_str, $charset) {
+ $out_str = $in_str;
+ if ($out_str && $charset) {
+
+ // define start delimimter, end delimiter and spacer
+ $end = "?=";
+ $start = "=?" . $charset . "?B?";
+ $spacer = $end . "\r\n " . $start;
+
+ // determine length of encoded text within chunks
+ // and ensure length is even
+ $length = 75 - strlen($start) - strlen($end);
+
+ /*
+ [EDIT BY danbrown AT php DOT net: The following
+ is a bugfix provided by (gardan AT gmx DOT de)
+ on 31-MAR-2005 with the following note:
+ "This means: $length should not be even,
+ but divisible by 4. The reason is that in
+ base64-encoding 3 8-bit-chars are represented
+ by 4 6-bit-chars. These 4 chars must not be
+ split between two encoded words, according
+ to RFC-2047.
+ */
+ $length = $length - ($length % 4);
+
+ // encode the string and split it into chunks
+ // with spacers after each chunk
+ $out_str = base64_encode($out_str);
+ $out_str = chunk_split($out_str, $length, $spacer);
+
+ // remove trailing spacer and
+ // add start and end delimiters
+ $spacer = preg_quote($spacer);
+ $out_str = preg_replace("/" . $spacer . "$/", "", $out_str);
+ $out_str = $start . $out_str . $end;
+ }
+ return $out_str;
+} \ No newline at end of file
diff --git a/include/expire.php b/include/expire.php
new file mode 100644
index 000000000..3c30e01c1
--- /dev/null
+++ b/include/expire.php
@@ -0,0 +1,44 @@
+<?php
+
+require_once("boot.php");
+
+function expire_run($argv, $argc){
+ global $a, $db;
+
+ if(is_null($a)) {
+ $a = new App;
+ }
+
+ if(is_null($db)) {
+ @include(".htconfig.php");
+ require_once("dba.php");
+ $db = new dba($db_host, $db_user, $db_pass, $db_data);
+ unset($db_host, $db_user, $db_pass, $db_data);
+ };
+
+ require_once('session.php');
+ require_once('datetime.php');
+ require_once('simplepie/simplepie.inc');
+ require_once('include/items.php');
+ require_once('include/Contact.php');
+
+ $a->set_baseurl(get_config('system','url'));
+
+
+ logger('expire: start');
+
+ $r = q("SELECT `uid`,`username`,`expire` FROM `user` WHERE `expire` != 0");
+ if(count($r)) {
+ foreach($r as $rr) {
+ logger('Expire: ' . $rr['username'] . ' interval: ' . $rr['expire'], LOGGER_DEBUG);
+ item_expire($rr['uid'],$rr['expire']);
+ }
+ }
+
+ return;
+}
+
+if (array_search(__file__,get_included_files())===0){
+ expire_run($argv,$argc);
+ killme();
+}
diff --git a/include/fcontact.php b/include/fcontact.php
new file mode 100644
index 000000000..8821a985f
--- /dev/null
+++ b/include/fcontact.php
@@ -0,0 +1,41 @@
+<?php
+
+
+
+function fcontact_store($url,$name,$photo) {
+
+ $nurl = str_replace(array('https:','//www.'), array('http:','//'), $url);
+
+ $r = q("SELECT `id` FROM `fcontact` WHERE `url` = '%s' LIMIT 1",
+ dbesc($nurl)
+ );
+
+ if(count($r))
+ return $r[0]['id'];
+
+ $r = q("INSERT INTO `fcontact` ( `url`, `name`, `photo` ) VALUES ( '%s', '%s', '%s' ) ",
+ dbesc($nurl),
+ dbesc($name),
+ dbesc($photo)
+ );
+
+ if($r) {
+ $r = q("SELECT `id` FROM `fcontact` WHERE `url` = '%s' LIMIT 1",
+ dbesc($nurl)
+ );
+ if(count($r))
+ return $r[0]['id'];
+ }
+
+ return 0;
+}
+
+function ffinder_store($uid,$cid,$fid) {
+ $r = q("INSERT INTO `ffinder` ( `uid`, `cid`, `fid` ) VALUES ( %d, %d, %d ) ",
+ intval($uid),
+ intval($cid),
+ intval($fid)
+ );
+ return $r;
+}
+
diff --git a/include/group.php b/include/group.php
index 793e854be..8866104fc 100644
--- a/include/group.php
+++ b/include/group.php
@@ -108,9 +108,9 @@ function group_get_members($gid) {
if(intval($gid)) {
$r = q("SELECT `group_member`.`contact-id`, `contact`.* FROM `group_member`
LEFT JOIN `contact` ON `contact`.`id` = `group_member`.`contact-id`
- WHERE `gid` = %d AND `group_member`.`uid` = %d",
+ WHERE `gid` = %d AND `group_member`.`uid` = %d ORDER BY `contact`.`name` ASC ",
intval($gid),
- intval($_SESSION['uid'])
+ intval(local_user())
);
if(count($r))
$ret = $r;
@@ -118,9 +118,25 @@ function group_get_members($gid) {
return $ret;
}
+function group_public_members($gid) {
+ $ret = 0;
+ if(intval($gid)) {
+ $r = q("SELECT `contact`.`id` AS `contact-id` FROM `group_member`
+ LEFT JOIN `contact` ON `contact`.`id` = `group_member`.`contact-id`
+ WHERE `gid` = %d AND `group_member`.`uid` = %d
+ AND `contact`.`network` != 'dfrn' AND `contact`.`network` != 'mail' AND `contact`.`network` != 'face' ",
+ intval($gid),
+ intval(local_user())
+ );
+ if(count($r))
+ $ret = count($r);
+ }
+ return $ret;
+}
+
-function group_side($every="contacts",$each="group") {
+function group_side($every="contacts",$each="group",$edit = false) {
$o = '';
@@ -150,7 +166,7 @@ EOT;
);
if(count($r)) {
foreach($r as $rr)
- $o .= " <li class=\"sidebar-group-li\"><a href=\"$each/{$rr['id']}\">{$rr['name']}</a></li>\r\n";
+ $o .= ' <li class="sidebar-group-li">' . (($edit) ? "<a href=\"group/{$rr['id']}\" title=\"" . t('Edit') . "\" ><img src=\"images/spencil.gif\" alt=\"" . t('Edit') . "\"></a> " : "") . "<a href=\"$each/{$rr['id']}\">{$rr['name']}</a></li>\r\n";
}
$o .= " </ul>\r\n </div>\r\n</div>";
diff --git a/include/hostxrd.php b/include/hostxrd.php
index 9161b265c..987175c33 100644
--- a/include/hostxrd.php
+++ b/include/hostxrd.php
@@ -1,10 +1,10 @@
<?php
-function hostxrd($hostname) {
+function hostxrd($baseurl) {
header("Content-type: text/xml");
$tpl = file_get_contents('view/xrd_host.tpl');
- echo str_replace('$domain',$hostname,$tpl);
+ echo str_replace('$domain',$baseurl,$tpl);
session_write_close();
exit();
diff --git a/include/items.php b/include/items.php
index e930ab5d2..55b17158a 100644
--- a/include/items.php
+++ b/include/items.php
@@ -113,7 +113,7 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0)
$items = $r;
- $feed_template = load_view_file('view/atom_feed.tpl');
+ $feed_template = get_markup_template('atom_feed.tpl');
$atom = '';
@@ -180,7 +180,7 @@ function construct_activity_object($item) {
if($item['object']) {
$o = '<as:object>' . "\r\n";
- $r = @simplexml_load_string($item['object']);
+ $r = parse_xml_string($item['object']);
if($r->type)
$o .= '<as:object-type>' . xmlify($r->type) . '</as:object-type>' . "\r\n";
if($r->id)
@@ -206,7 +206,7 @@ function construct_activity_target($item) {
if($item['target']) {
$o = '<as:target>' . "\r\n";
- $r = @simplexml_load_string($item['target']);
+ $r = parse_xml_string($item['target']);
if($r->type)
$o .= '<as:object-type>' . xmlify($r->type) . '</as:object-type>' . "\r\n";
if($r->id)
@@ -241,8 +241,14 @@ function get_atom_elements($feed,$item) {
$res = array();
$author = $item->get_author();
- $res['author-name'] = unxmlify($author->get_name());
- $res['author-link'] = unxmlify($author->get_link());
+ if($author) {
+ $res['author-name'] = unxmlify($author->get_name());
+ $res['author-link'] = unxmlify($author->get_link());
+ }
+ else {
+ $res['author-name'] = unxmlify($feed->get_title());
+ $res['author-link'] = unxmlify($feed->get_permalink());
+ }
$res['uri'] = unxmlify($item->get_id());
$res['title'] = unxmlify($item->get_title());
$res['body'] = unxmlify($item->get_content());
@@ -343,12 +349,14 @@ function get_atom_elements($feed,$item) {
// the wild, by sanitising it and converting supported tags to bbcode before we rip out any remaining
// html.
-
if((strpos($res['body'],'<') !== false) || (strpos($res['body'],'>') !== false)) {
$res['body'] = preg_replace('#<object[^>]+>.+?' . 'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?</object>#s',
'[youtube]$1[/youtube]', $res['body']);
+ $res['body'] = preg_replace('#<iframe[^>].+?' . 'http://www.youtube.com/embed/([A-Za-z0-9\-_=]+).+?</iframe>#s',
+ '[youtube]$1[/youtube]', $res['body']);
+
$res['body'] = oembed_html2bbcode($res['body']);
$config = HTMLPurifier_Config::createDefault();
@@ -401,6 +409,17 @@ function get_atom_elements($feed,$item) {
$res['edited'] = $item->get_date('c');
+ // Disallow time travelling posts
+
+ $d1 = strtotime($res['created']);
+ $d2 = strtotime($res['edited']);
+ $d3 = strtotime('now');
+
+ if($d1 > $d3)
+ $res['created'] = datetime_convert();
+ if($d2 > $d3)
+ $res['edited'] = datetime_convert();
+
$rawowner = $item->get_item_tags(NAMESPACE_DFRN, 'owner');
if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])
$res['owner-name'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']);
@@ -440,7 +459,45 @@ function get_atom_elements($feed,$item) {
if((x($res,'verb')) && ($res['verb'] === 'http://ostatus.org/schema/1.0/unfollow'))
$res['verb'] = ACTIVITY_UNFOLLOW;
-
+
+ $cats = $item->get_categories();
+ if($cats) {
+ $tag_arr = array();
+ foreach($cats as $cat) {
+ $term = $cat->get_term();
+ if(! $term)
+ $term = $cat->get_label();
+ $scheme = $cat->get_scheme();
+ if($scheme && $term && stristr($scheme,'X-DFRN:'))
+ $tag_arr[] = substr($scheme,7,1) . '[url=' . unxmlify(substr($scheme,9)) . ']' . unxmlify($term) . '[/url]';
+ elseif($term)
+ $tag_arr[] = notags(trim($term));
+ }
+ $res['tag'] = implode(',', $tag_arr);
+ }
+
+ $attach = $item->get_enclosures();
+ if($attach) {
+ $att_arr = array();
+ foreach($attach as $att) {
+ $len = intval($att->get_length());
+ $link = str_replace(array(',','"'),array('%2D','%22'),notags(trim(unxmlify($att->get_link()))));
+ $title = str_replace(array(',','"'),array('%2D','%22'),notags(trim(unxmlify($att->get_title()))));
+ $type = str_replace(array(',','"'),array('%2D','%22'),notags(trim(unxmlify($att->get_type()))));
+ if(strpos($type,';'))
+ $type = substr($type,0,strpos($type,';'));
+ if((! $link) || (strpos($link,'http') !== 0))
+ continue;
+
+ if(! $title)
+ $title = ' ';
+ if(! $type)
+ $type = 'application/octet-stream';
+
+ $att_arr[] = '[attach]href="' . $link . '" size="' . $len . '" type="' . $type . '" title="' . $title . '"[/attach]';
+ }
+ $res['attach'] = implode(',', $att_arr);
+ }
$rawobj = $item->get_item_tags(NAMESPACE_ACTIVITY, 'object');
@@ -467,6 +524,10 @@ function get_atom_elements($feed,$item) {
$body = preg_replace('#<object[^>]+>.+?' . 'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?</object>#s',
'[youtube]$1[/youtube]', $body);
+ $res['body'] = preg_replace('#<iframe[^>].+?' . 'http://www.youtube.com/embed/([A-Za-z0-9\-_=]+).+?</iframe>#s',
+ '[youtube]$1[/youtube]', $res['body']);
+
+
$config = HTMLPurifier_Config::createDefault();
$config->set('Cache.DefinitionImpl', null);
@@ -506,6 +567,9 @@ function get_atom_elements($feed,$item) {
$body = preg_replace('#<object[^>]+>.+?' . 'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?</object>#s',
'[youtube]$1[/youtube]', $body);
+ $res['body'] = preg_replace('#<iframe[^>].+?' . 'http://www.youtube.com/embed/([A-Za-z0-9\-_=]+).+?</iframe>#s',
+ '[youtube]$1[/youtube]', $res['body']);
+
$config = HTMLPurifier_Config::createDefault();
$config->set('Cache.DefinitionImpl', null);
@@ -598,6 +662,8 @@ function item_store($arr,$force_parent = false) {
$arr['deny_gid'] = ((x($arr,'deny_gid')) ? trim($arr['deny_gid']) : '');
$arr['private'] = ((x($arr,'private')) ? intval($arr['private']) : 0 );
$arr['body'] = ((x($arr,'body')) ? trim($arr['body']) : '');
+ $arr['tag'] = ((x($arr,'tag')) ? notags(trim($arr['tag'])) : '');
+ $arr['attach'] = ((x($arr,'attach')) ? notags(trim($arr['attach'])) : '');
if($arr['parent-uri'] === $arr['uri']) {
$parent_id = 0;
@@ -645,6 +711,7 @@ function item_store($arr,$force_parent = false) {
$parent_id = 0;
$arr['thr-parent'] = $arr['parent-uri'];
$arr['parent-uri'] = $arr['uri'];
+ $arr['gravity'] = 0;
}
else {
logger('item_store: item parent was not found - ignoring item');
@@ -702,6 +769,18 @@ function item_store($arr,$force_parent = false) {
intval($current_post)
);
+ /**
+ * If this is now the last-child, force all _other_ children of this parent to *not* be last-child
+ */
+
+ if($arr['last-child']) {
+ $r = q("UPDATE `item` SET `last-child` = 0 WHERE `parent-uri` = '%s' AND `uid` = %d AND `id` != %d",
+ dbesc($arr['uri']),
+ intval($arr['uid']),
+ intval($current_post)
+ );
+ }
+
return $current_post;
}
@@ -739,7 +818,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
if(! $rino_enable)
$rino = 0;
- $url = $contact['notify'] . '?dfrn_id=' . $idtosend . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . (($rino) ? '&rino=1' : '');
+ $url = $contact['notify'] . '&dfrn_id=' . $idtosend . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . (($rino) ? '&rino=1' : '');
logger('dfrn_deliver: ' . $url);
@@ -760,7 +839,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
return 3;
}
- $res = simplexml_load_string($xml);
+ $res = parse_xml_string($xml);
if((intval($res->status) != 0) || (! strlen($res->challenge)) || (! strlen($res->dfrn_id)))
return (($res->status) ? $res->status : 3);
@@ -799,14 +878,14 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
if($dissolve)
$postvars['dissolve'] = '1';
- if(($contact['rel']) && ($contact['rel'] != REL_FAN) && (! $contact['blocked']) && (! $contact['readonly'])) {
- $postvars['data'] = $atom;
- }
- elseif($owner['page-flags'] == PAGE_COMMUNITY) {
+
+ if((($contact['rel']) && ($contact['rel'] != REL_FAN) && (! $contact['blocked'])) || ($owner['page-flags'] == PAGE_COMMUNITY)) {
$postvars['data'] = $atom;
+ $postvars['perm'] = 'rw';
}
else {
$postvars['data'] = str_replace('<dfrn:comment-allow>1','<dfrn:comment-allow>0',$atom);
+ $postvars['perm'] = 'r';
}
if($rino && $rino_allowed && (! $dissolve)) {
@@ -848,17 +927,15 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
if((! $curl_stat) || (! strlen($xml)))
return(-1); // timed out
-
if(strpos($xml,'<?xml') === false) {
logger('dfrn_deliver: phase 2: no valid XML returned');
logger('dfrn_deliver: phase 2: returned XML: ' . $xml, LOGGER_DATA);
return 3;
}
- $res = simplexml_load_string($xml);
+ $res = parse_xml_string($xml);
- return $res->status;
-
+ return $res->status;
}
@@ -878,7 +955,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
*
*/
-function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
+function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $secure_feed = false) {
require_once('simplepie/simplepie.inc');
@@ -893,6 +970,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
if($feed->error())
logger('consume_feed: Error parsing XML: ' . $feed->error());
+ $permalink = $feed->get_permalink();
// Check at the feed level for updated contact name and/or photo
@@ -1137,6 +1215,13 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
$item_id = $item->get_id();
$datarray = get_atom_elements($feed,$item);
+ if(! x($datarray,'author-name'))
+ $datarray['author-name'] = $contact['name'];
+ if(! x($datarray,'author-link'))
+ $datarray['author-link'] = $contact['url'];
+ if(! x($datarray,'author-avatar'))
+ $datarray['author-avatar'] = $contact['thumb'];
+
$r = q("SELECT `uid`, `last-child`, `edited`, `body` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
dbesc($item_id),
intval($importer['uid'])
@@ -1207,8 +1292,18 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
// Head post of a conversation. Have we seen it? If not, import it.
$item_id = $item->get_id();
+
$datarray = get_atom_elements($feed,$item);
+ if(is_array($contact)) {
+ if(! x($datarray,'author-name'))
+ $datarray['author-name'] = $contact['name'];
+ if(! x($datarray,'author-link'))
+ $datarray['author-link'] = $contact['url'];
+ if(! x($datarray,'author-avatar'))
+ $datarray['author-avatar'] = $contact['thumb'];
+ }
+
$r = q("SELECT `uid`, `last-child`, `edited`, `body` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
dbesc($item_id),
intval($importer['uid'])
@@ -1252,7 +1347,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
if(! is_array($contact))
return;
- if($contact['network'] === 'stat') {
+ if($contact['network'] === 'stat' || stristr($permalink,'twitter.com')) {
if(strlen($datarray['title']))
unset($datarray['title']);
$datarray['last-child'] = 1;
@@ -1299,8 +1394,8 @@ function new_follower($importer,$contact,$datarray,$item) {
// create contact record - set to readonly
$r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `name`, `nick`, `photo`, `network`, `rel`,
- `blocked`, `readonly`, `pending` )
- VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, 0, 1, 1 ) ",
+ `blocked`, `readonly`, `pending`, `writable` )
+ VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, 0, 1, 1, 1 ) ",
intval($importer['uid']),
dbesc(datetime_convert()),
dbesc($url),
@@ -1336,7 +1431,7 @@ function new_follower($importer,$contact,$datarray,$item) {
$a = get_app();
if(count($r)) {
if(($r[0]['notify-flags'] & NOTIFY_INTRO) && ($r[0]['page-flags'] == PAGE_NORMAL)) {
- $email_tpl = load_view_file('view/follow_notify_eml.tpl');
+ $email_tpl = get_intltext_template('follow_notify_eml.tpl');
$email = replace_macros($email_tpl, array(
'$requestor' => ((strlen($name)) ? $name : t('[Name Withheld]')),
'$url' => $url,
@@ -1347,7 +1442,9 @@ function new_follower($importer,$contact,$datarray,$item) {
$res = mail($r[0]['email'],
t("You have a new follower at ") . $a->config['sitename'],
$email,
- 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] );
+ 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
+ . 'Content-type: text/plain; charset=UTF-8' . "\n"
+ . 'Content-transfer-encoding: 8bit' );
}
}
@@ -1426,17 +1523,24 @@ function atom_author($tag,$name,$uri,$h,$w,$photo) {
function atom_entry($item,$type,$author,$owner,$comment = false) {
+ $a = get_app();
+
if($item['deleted'])
return '<at:deleted-entry ref="' . xmlify($item['uri']) . '" when="' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '" />' . "\r\n";
- $a = get_app();
+
+ if($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid'])
+ $body = fix_private_photos($item['body'],$owner['uid']);
+ else
+ $body = $item['body'];
+
$o = "\r\n\r\n<entry>\r\n";
if(is_array($author))
$o .= atom_author('author',$author['name'],$author['url'],80,80,$author['thumb']);
else
- $o .= atom_author('author',$item['name'],$item['url'],80,80,$item['thumb']);
+ $o .= atom_author('author',(($item['author-name']) ? $item['author-name'] : $item['name']),(($item['author-link']) ? $item['author-link'] : $item['url']),80,80,(($item['author-avatar']) ? $item['author-avatar'] : $item['thumb']));
if(strlen($item['owner-name']))
$o .= atom_author('dfrn:owner',$item['owner-name'],$item['owner-link'],80,80,$item['owner-avatar']);
@@ -1447,8 +1551,8 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
$o .= '<title>' . xmlify($item['title']) . '</title>' . "\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";
- $o .= '<dfrn:env>' . base64url_encode($item['body'], true) . '</dfrn:env>' . "\r\n";
- $o .= '<content type="' . $type . '" >' . xmlify(($type === 'html') ? bbcode($item['body']) : $item['body']) . '</content>' . "\r\n";
+ $o .= '<dfrn:env>' . base64url_encode($body, true) . '</dfrn:env>' . "\r\n";
+ $o .= '<content type="' . $type . '" >' . xmlify(($type === 'html') ? bbcode($body) : $body) . '</content>' . "\r\n";
$o .= '<link rel="alternate" type="text/html" href="' . xmlify($a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id']) . '" />' . "\r\n";
if($comment)
$o .= '<dfrn:comment-allow>' . intval($item['last-child']) . '</dfrn:comment-allow>' . "\r\n";
@@ -1473,6 +1577,15 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
if(strlen($actarg))
$o .= $actarg;
+ $tags = item_getfeedtags($item);
+ if(count($tags)) {
+ foreach($tags as $t) {
+ $o .= '<category scheme="X-DFRN:' . xmlify($t[0]) . ':' . xmlify($t[1]) . '" term="' . xmlify($t[2]) . '" />' . "\r\n";
+ }
+ }
+
+ $o .= item_getfeedattach($item);
+
$mentioned = get_mentions($item);
if($mentioned)
$o .= $mentioned;
@@ -1483,4 +1596,125 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
return $o;
}
+
+function fix_private_photos($s,$uid) {
+ $a = get_app();
+ logger('fix_private_photos');
+
+ if(preg_match("/\[img\](.+?)\[\/img\]/is",$s,$matches)) {
+ $image = $matches[1];
+ logger('fix_private_photos: found photo ' . $image);
+ if(stristr($image ,$a->get_baseurl() . '/photo/')) {
+ $i = basename($image);
+ $i = str_replace('.jpg','',$i);
+ $x = strpos($i,'-');
+ if($x) {
+ $res = substr($i,$x+1);
+ $i = substr($i,0,$x);
+ $r = q("SELECT * FROM `photo` WHERE `resource-id` = '%s' AND `scale` = %d AND `uid` = %d",
+ dbesc($i),
+ intval($res),
+ intval($uid)
+ );
+ if(count($r)) {
+ logger('replacing photo');
+ $s = str_replace($image, 'data:image/jpg;base64,' . base64_encode($r[0]['data']), $s);
+ }
+ }
+ logger('fix_private_photos: replaced: ' . $s, LOGGER_DATA);
+ }
+ }
+ return($s);
+}
+
+
+
+function item_getfeedtags($item) {
+ $ret = array();
+ $matches = false;
+ $cnt = preg_match_all('|\#\[url\=(.+?)\](.+?)\[\/url\]|',$item['tag'],$matches);
+ if($cnt) {
+ for($x = 0; $x < count($matches); $x ++) {
+ if($matches[1][$x])
+ $ret[] = array('#',$matches[1][$x], $matches[2][$x]);
+ }
+ }
+ $matches = false;
+ $cnt = preg_match_all('|\@\[url\=(.+?)\](.+?)\[\/url\]|',$item['tag'],$matches);
+ if($cnt) {
+ for($x = 0; $x < count($matches); $x ++) {
+ if($matches[1][$x])
+ $ret[] = array('#',$matches[1][$x], $matches[2][$x]);
+ }
+ }
+ return $ret;
+}
+
+function item_getfeedattach($item) {
+ $ret = '';
+ $arr = explode(',',$item['attach']);
+ if(count($arr)) {
+ foreach($arr as $r) {
+ $matches = false;
+ $cnt = preg_match('|\[attach\]href=\"(.+?)\" size=\"(.+?)\" type=\"(.+?)\" title=\"(.+?)\"\[\/attach\]|',$r,$matches);
+ if($cnt) {
+ $ret .= '<link rel="enclosure" href="' . xmlify($matches[1]) . '" type="' . xmlify($matches[3]) . '" ';
+ if(intval($matches[2]))
+ $ret .= 'size="' . intval($matches[2]) . '" ';
+ if($matches[4] !== ' ')
+ $ret .= 'title="' . xmlify(trim($matches[4])) . '" ';
+ $ret .= ' />' . "\r\n";
+ }
+ }
+ }
+ return $ret;
+}
+
+
+function item_expire($uid,$days) {
+
+ if((! $uid) || (! $days))
+ return;
+
+ $r = q("SELECT * FROM `item`
+ WHERE `uid` = %d
+ AND `created` < UTC_TIMESTAMP() - INTERVAL %d DAY
+ AND `id` = `parent`
+ AND `deleted` = 0",
+ intval($uid),
+ intval($days)
+ );
+
+ if(! count($r))
+ return;
+
+ logger('expire: # items=' . count($r) );
+
+ foreach($r as $item) {
+
+ // Only expire posts, not photos and photo comments
+
+ if(strlen($item['resource-id']))
+ continue;
+
+ $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s' WHERE `id` = %d LIMIT 1",
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ intval($item['id'])
+ );
+
+ // kill the kids
+
+ $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d ",
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc($item['parent-uri']),
+ intval($item['uid'])
+ );
+
+ }
+
+ proc_run('php',"include/notifier.php","expire","$uid");
+
+} \ No newline at end of file
diff --git a/include/main.js b/include/main.js
index 824f2dfdf..0d68c2b2b 100644
--- a/include/main.js
+++ b/include/main.js
@@ -26,6 +26,8 @@
var pr = 0;
var liking = 0;
var in_progress = false;
+ var langSelect = false;
+ var commentBusy = false;
$(document).ready(function() {
$.ajaxSetup({cache: false});
@@ -45,6 +47,18 @@
$('#pause').html('');
}
}
+ // F8 - show/hide language selector
+ if(event.keyCode == '119') {
+ if(langSelect) {
+ langSelect = false;
+ $('#language-selector').hide();
+ }
+ else {
+ langSelect = true;
+ $('#language-selector').show();
+ }
+ }
+
// this is shift-home on FF, but $ on IE, disabling until I figure out why the diff.
// update: incompatible usage of onKeyDown vs onKeyPress
// if(event.keyCode == '36' && event.shiftKey == true) {
@@ -77,26 +91,26 @@
$.get("ping",function(data) {
$(data).find('result').each(function() {
var net = $(this).find('net').text();
- if(net == 0) { net = ''; }
+ if(net == 0) { net = ''; $('#net-update').hide() } else { $('#net-update').show() }
$('#net-update').html(net);
var home = $(this).find('home').text();
- if(home == 0) { home = ''; }
+ if(home == 0) { home = ''; $('#home-update').hide() } else { $('#home-update').show() }
$('#home-update').html(home);
var mail = $(this).find('mail').text();
- if(mail == 0) { mail = ''; }
+ if(mail == 0) { mail = ''; $('#mail-update').hide() } else { $('#mail-update').show() }
$('#mail-update').html(mail);
var intro = $(this).find('intro').text();
var register = $(this).find('register').text();
if(intro == 0) { intro = ''; }
if(register != 0 && intro != '') { intro = intro+'/'+register; }
if(register != 0 && intro == '') { intro = '0/'+register; }
+ if (intro == '') { $('#notify-update').hide() } else { $('#notify-update').show() }
$('#notify-update').html(intro);
});
}) ;
}
timer = setTimeout(NavUpdate,30000);
-
}
function liveUpdate() {
@@ -113,12 +127,21 @@
$.get(update_url,function(data) {
in_progress = false;
+ $('.ccollapse-wrapper',data).each(function() {
+ var ident = $(this).attr('id');
+ var is_hidden = $('#' + ident).is(':hidden');
+ if($('#' + ident).length) {
+ $('#' + ident).replaceWith($(this));
+ if(is_hidden)
+ $('#' + ident).hide();
+ }
+ });
$('.wall-item-outside-wrapper',data).each(function() {
var ident = $(this).attr('id');
- if($('#' + ident).length == 0) {
- $('img',this).each(function() {
- $(this).attr('src',$(this).attr('dst'));
- });
+ if($('#' + ident).length == 0) {
+ $('img',this).each(function() {
+ $(this).attr('src',$(this).attr('dst'));
+ });
$('#' + prev).after($(this));
}
else {
@@ -127,29 +150,26 @@
$('#' + ident + ' ' + '.wall-item-comment-wrapper').replaceWith($(this).find('.wall-item-comment-wrapper'));
$('#' + ident + ' ' + '.wall-item-like').replaceWith($(this).find('.wall-item-like'));
$('#' + ident + ' ' + '.wall-item-dislike').replaceWith($(this).find('.wall-item-dislike'));
- $('#' + ident + ' ' + '.my-comment-photo').each(function() {
- $(this).attr('src',$(this).attr('dst'));
- });
-
-
+ $('#' + ident + ' ' + '.my-comment-photo').each(function() {
+ $(this).attr('src',$(this).attr('dst'));
+ });
}
prev = ident;
});
$('.like-rotator').hide();
+ if(commentBusy) {
+ commentBusy = false;
+ $('body').css('cursor', 'auto');
+ }
});
-
}
function imgbright(node) {
- $(node).attr("src",$(node).attr("src").replace('hide','show'));
- $(node).css('width',24);
- $(node).css('height',24);
+ $(node).removeClass("drophide").addClass("drop");
}
function imgdull(node) {
- $(node).attr("src",$(node).attr("src").replace('show','hide'));
- $(node).css('width',16);
- $(node).css('height',16);
+ $(node).removeClass("drop").addClass("drophide");
}
// Since our ajax calls are asynchronous, we will give a few
@@ -215,6 +235,8 @@
}
function post_comment(id) {
+ commentBusy = true;
+ $('body').css('cursor', 'wait');
$.post(
"item",
$("#comment-edit-form-" + id).serialize(),
@@ -231,10 +253,49 @@
if(data.reload) {
window.location.href=data.reload;
}
-
},
"json"
);
return false;
}
+
+ function bin2hex(s){
+ // Converts the binary representation of data to hex
+ //
+ // version: 812.316
+ // discuss at: http://phpjs.org/functions/bin2hex
+ // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+ // + bugfixed by: Onno Marsman
+ // + bugfixed by: Linuxworld
+ // * example 1: bin2hex('Kev');
+ // * returns 1: '4b6576'
+ // * example 2: bin2hex(String.fromCharCode(0x00));
+ // * returns 2: '00'
+ var v,i, f = 0, a = [];
+ s += '';
+ f = s.length;
+
+ for (i = 0; i<f; i++) {
+ a[i] = s.charCodeAt(i).toString(16).replace(/^([\da-f])$/,"0$1");
+ }
+
+ return a.join('');
+ }
+
+ function groupChangeMember(gid,cid) {
+ $('body .fakelink').css('cursor', 'wait');
+ $.get('group/' + gid + '/' + cid, function(data) {
+ $('#group-update-wrapper').html(data);
+ $('body .fakelink').css('cursor', 'auto');
+ });
+ }
+
+ function profChangeMember(gid,cid) {
+ $('body .fakelink').css('cursor', 'wait');
+ $.get('profperm/' + gid + '/' + cid, function(data) {
+ $('#prof-update-wrapper').html(data);
+ $('body .fakelink').css('cursor', 'auto');
+ });
+ }
+
diff --git a/include/nav.php b/include/nav.php
index 4104cf3cf..66fdbc49b 100644
--- a/include/nav.php
+++ b/include/nav.php
@@ -27,24 +27,23 @@ function nav(&$a) {
$myident = ((is_array($a->user) && isset($a->user['nickname'])) ? $a->user['nickname'] . '@' : '');
- $a->page['nav'] .= '<div id="site-location">' . $myident . substr($a->get_baseurl(),strpos($a->get_baseurl(),'//') + 2 ) . '</div>';
+ $sitelocation = $myident . substr($a->get_baseurl(),strpos($a->get_baseurl(),'//') + 2 );
+ // nav links: array of array('href', 'text', 'extra css classes')
+ $nav = Array();
+
/**
* Display login or logout
*/
if(local_user()) {
- $a->page['nav'] .= '<a id="nav-logout-link" class="nav-link" href="logout">' . t('Logout') . "</a>\r\n";
+ $nav['logout'] = Array('logout',t('Logout'), "");
}
else {
- $a->page['nav'] .= '<a id="nav-login-link" class="nav-login-link';
- if ($a->module == 'login') { $a->page['nav'] .= ' nav-selected'; }
-
- $a->page['nav'] .= '" href="login">' . t('Login') . "</a>\r\n";
+ $nav['login'] = Array('login',t('Login'), ($a->module == 'login'?'nav-selected':''));
}
- $a->page['nav'] .= "<span id=\"nav-link-wrapper\" >\r\n";
/**
* "Home" should also take you home from an authenticated remote profile connection
@@ -53,18 +52,22 @@ function nav(&$a) {
$homelink = ((x($_SESSION,'visitor_home')) ? $_SESSION['visitor_home'] : '');
if(($a->module != 'home') && (! (local_user())))
- $a->page['nav'] .= '<a id="nav-home-link" class="nav-commlink" href="' . $homelink . '">' . t('Home') . "</a>\r\n";
+ $nav['home'] = array($homelink, t('Home'), "");
if(($a->config['register_policy'] == REGISTER_OPEN) && (! local_user()) && (! remote_user()))
- $a->page['nav'] .= '<a id="nav-register-link" class="nav-commlink" href="register" >'
- . t('Register') . "</a>\r\n";
+ $nav['register'] = array('register',t('Register'), "");
+
+ $help_url = $a->get_baseurl() . '/help';
+
+ if(! get_config('system','hide-help'))
+ $nav['help'] = array($help_url, t('Help'), "");
+
- if(strlen($a->apps)) {
- $a->page['nav'] .= '<a id="nav-apps-link" class="nav-link" href="apps">' . t('Apps') . "</a>\r\n";
- }
- $a->page['nav'] .= '<a id="nav-search-link" class="nav-link" href="search">' . t('Search') . "</a>\r\n";
+ $nav['apps'] = array('apps', t('Apps'), "");
+
+ $nav['search'] = array('search', t('Search'), "");
$gdirpath = 'directory';
@@ -74,7 +77,7 @@ function nav(&$a) {
$gdirpath = $gdir;
}
- $a->page['nav'] .= '<a id="nav-directory-link" class="nav-link" href="' . $gdirpath . '">' . t('Directory') . "</a>\r\n";
+ $nav['directory'] = array($gdirpath, t('Directory'), "");
/**
*
@@ -84,36 +87,30 @@ function nav(&$a) {
if(local_user()) {
- $a->page['nav'] .= '<a id="nav-network-link" class="nav-commlink" href="network">' . t('Network')
- . '</a><span id="net-update" class="nav-ajax-left"></span>' . "\r\n";
+ $nav['network'] = array('network', t('Network'), "");
+
+ $nav['home'] = array('profile/' . $a->user['nickname'], t('Home'), "");
- $a->page['nav'] .= '<a id="nav-home-link" class="nav-commlink" href="profile/' . $a->user['nickname'] . '">'
- . t('Home') . '</a><span id="home-update" class="nav-ajax-left"></span>' . "\r\n";
/* only show friend requests for normal pages. Other page types have automatic friendship. */
if($_SESSION['page_flags'] == PAGE_NORMAL) {
- $a->page['nav'] .= '<a id="nav-notify-link" class="nav-commlink" href="notifications">' . t('Notifications')
- . '</a><span id="notify-update" class="nav-ajax-left"></span>' . "\r\n";
+ $nav['notifications'] = array('notifications', t('Notifications'), "");
}
- $a->page['nav'] .= '<a id="nav-messages-link" class="nav-commlink" href="message">' . t('Messages')
- . '</a><span id="mail-update" class="nav-ajax-left"></span>' . "\r\n";
+ $nav['messages'] = array('message', t('Messages'), "");
if(is_array($a->identities) && count($a->identities) > 1) {
- $a->page['nav'] .= '<a id="nav-manage-link" class="nav-commlink" href="manage">' . t('Manage') . '</a>' . "\r\n";
+ $nav['manage'] = array('manage', t('Manage'), "");
}
- $a->page['nav'] .= '<a id="nav-settings-link" class="nav-link" href="settings">' . t('Settings') . "</a>\r\n";
-
- $a->page['nav'] .= '<a id="nav-profiles-link" class="nav-link" href="profiles">' . t('Profiles') . "</a>\r\n";
-
- $a->page['nav'] .= '<a id="nav-contacts-link" class="nav-link" href="contacts">' . t('Contacts') . "</a>\r\n";
+ $nav['settings'] = array('settings', t('Settings'),"");
+ $nav['profiles'] = array('profiles', t('Profiles'),"");
+ $nav['contacts'] = array('contacts', t('Contacts'),"");
}
- $a->page['nav'] .= "</span>\r\n<span id=\"nav-end\"></span>\r\n";
/**
*
@@ -124,10 +121,17 @@ function nav(&$a) {
$banner = get_config('system','banner');
if($banner === false)
- $banner .= '<a href="http://friendika.com"><img id="logo-img" src="images/friendika-32.png" alt="logo" /></a><span id="logo-text"><a href="http://friendika.com">Friendika</a></span>';
+ $banner .= '<a href="http://project.friendika.com"><img id="logo-img" src="images/friendika-32.png" alt="logo" /></a><span id="logo-text"><a href="http://project.friendika.com">Friendika</a></span>';
+
+ $tpl = get_markup_template('nav.tpl');
- $a->page['nav'] .= '<span id="banner">' . $banner . '</span>';
+ $a->page['nav'] .= replace_macros($tpl, array(
+ '$langselector' => lang_selector(),
+ '$sitelocation' => $sitelocation,
+ '$nav' => $nav,
+ '$banner' => $banner,
+ ));
call_hooks('page_header', $a->page['nav']);
diff --git a/include/notifier.php b/include/notifier.php
index 648a07062..db2542849 100644
--- a/include/notifier.php
+++ b/include/notifier.php
@@ -20,6 +20,8 @@ function notifier_run($argv, $argc){
require_once('include/items.php');
require_once('include/bbcode.php');
+ load_hooks();
+
if($argc < 3)
return;
@@ -40,6 +42,7 @@ function notifier_run($argv, $argc){
break;
}
+ $expire = false;
$top_level = false;
$recipients = array();
$url_recipients = array();
@@ -57,10 +60,21 @@ function notifier_run($argv, $argc){
$item = $message[0];
}
+ elseif($cmd === 'expire') {
+ $expire = true;
+ $items = q("SELECT * FROM `item` WHERE `uid` = %d AND `wall` = 1
+ AND `deleted` = 1 AND `changed` > UTC_TIMESTAMP - INTERVAL 10 MINUTE",
+ intval($item_id)
+ );
+ $uid = $item_id;
+ $item_id = 0;
+ if(! count($items))
+ return;
+ }
else {
// find ancestors
- $r = q("SELECT `parent`, `uid`, `edited` FROM `item` WHERE `id` = %d LIMIT 1",
+ $r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1",
intval($item_id)
);
@@ -68,6 +82,7 @@ function notifier_run($argv, $argc){
return;
}
+ $parent_item = $r[0];
$parent_id = intval($r[0]['parent']);
$uid = $r[0]['uid'];
$updated = $r[0]['edited'];
@@ -76,11 +91,10 @@ function notifier_run($argv, $argc){
intval($parent_id)
);
- if(! count($items)){
+ if(! count($items)) {
return;
}
-
// avoid race condition with deleting entries
if($items[0]['deleted']) {
@@ -98,11 +112,11 @@ function notifier_run($argv, $argc){
intval($uid)
);
- if(count($r))
- $owner = $r[0];
- else {
+ if(! count($r))
return;
- }
+
+ $owner = $r[0];
+
$hub = get_config('system','huburl');
// If this is a public conversation, notify the feed hub
@@ -117,7 +131,7 @@ function notifier_run($argv, $argc){
$parent = $items[0];
- if($parent['type'] === 'remote') {
+ if($parent['type'] === 'remote' && (! $expire)) {
// local followup to remote post
$followup = true;
$notify_hub = false; // not public
@@ -177,8 +191,8 @@ function notifier_run($argv, $argc){
$contacts = $r;
}
- $feed_template = load_view_file('view/atom_feed.tpl');
- $mail_template = load_view_file('view/atom_mail.tpl');
+ $feed_template = get_markup_template('atom_feed.tpl');
+ $mail_template = get_markup_template('atom_mail.tpl');
$atom = '';
$slaps = array();
@@ -235,6 +249,7 @@ function notifier_run($argv, $argc){
}
else {
foreach($items as $item) {
+
if(! $item['parent'])
continue;
@@ -242,9 +257,9 @@ function notifier_run($argv, $argc){
if(! $contact)
continue;
- $atom .= atom_entry($item,'text',$contact,$owner,true);
+ $atom .= atom_entry($item,'text',$contact,$owner,true);
- if(($top_level) && ($notify_hub) && ($item['author-link'] === $item['owner-link']))
+ if(($top_level) && ($notify_hub) && ($item['author-link'] === $item['owner-link']) && (! $expire))
$slaps[] = atom_entry($item,'html',$contact,$owner,true);
}
}
@@ -255,12 +270,30 @@ function notifier_run($argv, $argc){
logger('notifier: slaps: ' . print_r($slaps,true), LOGGER_DATA);
+ // If this is a public message and pubmail is set on the parent, include all your email contacts
+
+ $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
+
+ if(! $mail_disabled) {
+ if((! strlen($parent_item['allow_cid'])) && (! strlen($parent_item['allow_gid']))
+ && (! strlen($parent_item['deny_cid'])) && (! strlen($parent_item['deny_gid']))
+ && (intval($parent_item['pubmail']))) {
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `network` = '%s'",
+ intval($uid),
+ dbesc(NETWORK_MAIL)
+ );
+ if(count($r)) {
+ foreach($r as $rr)
+ $recipients[] = $rr['id'];
+ }
+ }
+ }
+
if($followup)
$recip_str = $parent['contact-id'];
else
$recip_str = implode(', ', $recipients);
-
$r = q("SELECT * FROM `contact` WHERE `id` IN ( %s ) AND `blocked` = 0 AND `pending` = 0 ",
dbesc($recip_str)
);
@@ -319,7 +352,7 @@ function notifier_run($argv, $argc){
// only send salmon if public - e.g. if it's ok to notify
// a public hub, it's ok to send a salmon
- if(count($slaps) && $notify_hub) {
+ if((count($slaps)) && ($notify_hub) && (! $expire)) {
logger('notifier: slapdelivery: ' . $contact['name']);
foreach($slaps as $slappy) {
if($contact['notify']) {
@@ -340,8 +373,82 @@ function notifier_run($argv, $argc){
}
break;
case 'mail':
+
+ // WARNING: does not currently convert to RFC2047 header encodings, etc.
+
+ $addr = $contact['addr'];
+ if(! strlen($addr))
+ break;
+
+ if($cmd === 'wall-new' || $cmd === 'comment-new') {
+
+ $it = null;
+ if($cmd === 'wall-new')
+ $it = $items[0];
+ else {
+ $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval($argv[2]),
+ intval($uid)
+ );
+ if(count($r))
+ $it = $r[0];
+ }
+ if(! $it)
+ break;
+
+
+
+ $local_user = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
+ intval($uid)
+ );
+ if(! count($local_user))
+ break;
+
+ $reply_to = '';
+ $r1 = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
+ intval($uid)
+ );
+ if($r1 && $r1[0]['reply_to'])
+ $reply_to = $r1[0]['reply_to'];
+
+ $subject = (($it['title']) ? $it['title'] : t("\x28no subject\x29")) ;
+ $headers = 'From: ' . $local_user[0]['username'] . ' <' . $local_user[0]['email'] . '>' . "\n";
+
+ if($reply_to)
+ $headers .= 'Reply-to: ' . $reply_to . "\n";
+
+ $headers .= 'Message-id: <' . $it['uri'] . '>' . "\n";
+
+ if($it['uri'] !== $it['parent-uri']) {
+ $header .= 'References: <' . $it['parent-uri'] . '>' . "\n";
+ if(! strlen($it['title'])) {
+ $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1",
+ dbesc($it['parent-uri'])
+ );
+ if(count($r)) {
+ $subtitle = $r[0]['title'];
+ if($subtitle) {
+ if(strncasecmp($subtitle,'RE:',3))
+ $subject = $subtitle;
+ else
+ $subject = 'Re: ' . $subtitle;
+ }
+ }
+ }
+ }
+
+ $headers .= 'MIME-Version: 1.0' . "\n";
+ $headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
+ $headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n";
+ $html = prepare_body($it);
+ $message = '<html><body>' . $html . '</body></html>';
+ logger('notifier: email delivery to ' . $addr);
+ mail($addr, $subject, $message, $headers);
+ }
+ break;
case 'dspr':
case 'feed':
+ case 'face':
default:
break;
}
@@ -350,7 +457,7 @@ function notifier_run($argv, $argc){
// send additional slaps to mentioned remote tags (@foo@example.com)
- if($slap && count($url_recipients) && $followup && $notify_hub) {
+ if($slap && count($url_recipients) && $followup && $notify_hub && (! $expire)) {
foreach($url_recipients as $url) {
if($url) {
logger('notifier: urldelivery: ' . $url);
diff --git a/include/pgettext.php b/include/pgettext.php
new file mode 100644
index 000000000..2ffee70bc
--- /dev/null
+++ b/include/pgettext.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * translation support
+ */
+
+// load string translation table for alternate language
+
+if(! function_exists('load_translation_table')) {
+function load_translation_table($lang) {
+ global $a;
+
+ if(file_exists("view/$lang/strings.php"))
+ include("view/$lang/strings.php");
+}}
+
+// translate string if translation exists
+
+if(! function_exists('t')) {
+function t($s) {
+
+ $a = get_app();
+
+ if(x($a->strings,$s)) {
+ $t = $a->strings[$s];
+ return is_array($t)?$t[0]:$t;
+ }
+ return $s;
+}}
+
+if(! function_exists('tt')){
+function tt($singular, $plural, $count){
+
+ $a = get_app();
+
+ if(x($a->strings,$singular)) {
+ $t = $a->strings[$singular];
+ $k = string_plural_select($count);
+ return is_array($t)?$t[$k]:$t;
+ }
+
+ if ($count!=1){
+ return $plural;
+ } else {
+ return $singular;
+ }
+}} \ No newline at end of file
diff --git a/include/poller.php b/include/poller.php
index a093190a6..7490bfa81 100644
--- a/include/poller.php
+++ b/include/poller.php
@@ -1,4 +1,5 @@
<?php
+
require_once("boot.php");
function poller_run($argv, $argc){
@@ -15,20 +16,35 @@ function poller_run($argv, $argc){
unset($db_host, $db_user, $db_pass, $db_data);
};
+
require_once('session.php');
require_once('datetime.php');
require_once('simplepie/simplepie.inc');
require_once('include/items.php');
require_once('include/Contact.php');
+ require_once('include/email.php');
$a->set_baseurl(get_config('system','url'));
+ load_hooks();
+
logger('poller: start');
// run queue delivery process in the background
proc_run('php',"include/queue.php");
+ // once daily run expire in background
+
+ $d1 = get_config('system','last_expire_day');
+ $d2 = intval(datetime_convert('UTC','UTC','now','d'));
+
+ if($d2 != intval($d1)) {
+ set_config('system','last_expire_day',$d2);
+ proc_run('php','include/expire.php');
+ }
+
+
// clear old cache
q("DELETE FROM `cache` WHERE `updated` < '%s'",
dbesc(datetime_convert('UTC','UTC',"now - 30 days")));
@@ -47,10 +63,12 @@ function poller_run($argv, $argc){
$sql_extra = (($manual_id) ? " AND `id` = $manual_id " : "");
+ reload_plugins();
+
$d = datetime_convert();
+
call_hooks('cron', $d);
- reload_plugins();
$contacts = q("SELECT `id` FROM `contact`
WHERE ( `rel` = %d OR `rel` = %d ) AND `poll` != ''
@@ -74,6 +92,9 @@ function poller_run($argv, $argc){
continue;
foreach($res as $contact) {
+
+ $xml = false;
+
if($manual_id)
$contact['last-update'] = '0000-00-00 00:00:00';
@@ -147,25 +168,29 @@ function poller_run($argv, $argc){
: datetime_convert('UTC','UTC',$contact['last-update'], ATOM_TIME)
);
- if($contact['network'] === 'dfrn') {
+ if($contact['network'] === NETWORK_DFRN) {
$idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
if(intval($contact['duplex']) && $contact['dfrn-id'])
$idtosend = '0:' . $orig_id;
if(intval($contact['duplex']) && $contact['issued-id'])
- $idtosend = '1:' . $orig_id;
+ $idtosend = '1:' . $orig_id;
+
+ // they have permission to write to us. We already filtered this in the contact query.
+ $perm = 'rw';
$url = $contact['poll'] . '?dfrn_id=' . $idtosend
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION
- . '&type=data&last_update=' . $last_update ;
+ . '&type=data&last_update=' . $last_update
+ . '&perm=' . $perm ;
- $xml = fetch_url($url);
+ $handshake_xml = fetch_url($url);
- logger('poller: handshake with url ' . $url . ' returns xml: ' . $xml, LOGGER_DATA);
+ logger('poller: handshake with url ' . $url . ' returns xml: ' . $handshake_xml, LOGGER_DATA);
- if(! $xml) {
+ if(! $handshake_xml) {
logger("poller: $url appears to be dead - marking for death ");
// dead connection - might be a transient event, or this might
// mean the software was uninstalled or the domain expired.
@@ -182,7 +207,7 @@ function poller_run($argv, $argc){
continue;
}
- if(! strstr($xml,'<?xml')) {
+ if(! strstr($handshake_xml,'<?xml')) {
logger('poller: response from ' . $url . ' did not contain XML.');
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
@@ -192,7 +217,7 @@ function poller_run($argv, $argc){
}
- $res = simplexml_load_string($xml);
+ $res = parse_xml_string($handshake_xml);
if(intval($res->status) == 1) {
logger("poller: $url replied status 1 - marking for death ");
@@ -239,56 +264,181 @@ function poller_run($argv, $argc){
$final_dfrn_id = substr($final_dfrn_id,2);
if($final_dfrn_id != $orig_id) {
-
+ logger('poller: ID did not decode: ' . $contact['id'] . ' orig: ' . $orig_id . ' final: ' . $final_dfrn_id);
// did not decode properly - cannot trust this site
continue;
}
$postvars['dfrn_id'] = $idtosend;
$postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION;
+ $postvars['perm'] = 'rw';
$xml = post_url($contact['poll'],$postvars);
}
- else {
+ elseif(($contact['network'] === NETWORK_OSTATUS)
+ || ($contact['network'] === NETWORK_DIASPORA)
+ || ($contact['network'] === NETWORK_FEED) ) {
+
+ // Upgrading DB fields from an older Friendika version
+ // Will only do this once per notify-enabled OStatus contact
- // $contact['network'] !== 'dfrn'
+ if(($contact['notify']) && (! $contact['writable'])) {
+ q("UPDATE `contact` SET `writable` = 1 WHERE `id` = %d LIMIT 1",
+ intval($contact['id'])
+ );
+ }
$xml = fetch_url($contact['poll']);
}
+ elseif($contact['network'] === NETWORK_MAIL) {
- logger('poller: received xml : ' . $xml, LOGGER_DATA);
+ $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
+ if($mail_disabled)
+ continue;
- if(! strstr($xml,'<?xml')) {
- logger('poller: post_handshake: response from ' . $url . ' did not contain XML.');
- $r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
- dbesc(datetime_convert()),
- intval($contact['id'])
+ $mbox = null;
+ $x = q("SELECT `prvkey` FROM `user` WHERE `uid` = %d LIMIT 1",
+ intval($importer_uid)
);
- continue;
+ $mailconf = q("SELECT * FROM `mailacct` WHERE `server` != '' AND `uid` = %d LIMIT 1",
+ intval($importer_uid)
+ );
+ if(count($x) && count($mailconf)) {
+ $mailbox = construct_mailbox_name($mailconf[0]);
+ $password = '';
+ openssl_private_decrypt(hex2bin($mailconf[0]['pass']),$password,$x[0]['prvkey']);
+ $mbox = email_connect($mailbox,$mailconf[0]['user'],$password);
+ unset($password);
+ if($mbox) {
+ q("UPDATE `mailacct` SET `last_check` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ dbesc(datetime_convert()),
+ intval($mailconf[0]['id']),
+ intval($importer_uid)
+ );
+ }
+ }
+ if($mbox) {
+
+ $msgs = email_poll($mbox,$contact['addr']);
+
+ if(count($msgs)) {
+ foreach($msgs as $msg_uid) {
+ $datarray = array();
+ $meta = email_msg_meta($mbox,$msg_uid);
+ $headers = email_msg_headers($mbox,$msg_uid);
+
+ // look for a 'references' header and try and match with a parent item we have locally.
+
+ $raw_refs = ((x($headers,'references')) ? str_replace("\t",'',$headers['references']) : '');
+ $datarray['uri'] = trim($meta->message_id,'<>');
+
+ if($raw_refs) {
+ $refs_arr = explode(' ', $raw_refs);
+ if(count($refs_arr)) {
+ for($x = 0; $x < count($refs_arr); $x ++)
+ $refs_arr[$x] = "'" . str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x])) . "'";
+ }
+ $qstr = implode(',',$refs_arr);
+ $r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `uri` IN ( $qstr ) AND `uid` = %d LIMIT 1",
+ intval($importer_uid)
+ );
+ if(count($r))
+ $datarray['parent-uri'] = $r[0]['uri'];
+ }
+
+
+ if(! x($datarray,'parent-uri'))
+ $datarray['parent-uri'] = $datarray['uri'];
+
+ // Have we seen it before?
+ $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
+ intval($importer_uid),
+ dbesc($datarray['uri'])
+ );
+
+ if(count($r)) {
+ if($meta->deleted && ! $r[0]['deleted']) {
+ q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d LIMIT 1",
+ dbesc(datetime_convert()),
+ intval($r[0]['id'])
+ );
+ }
+ continue;
+ }
+ $datarray['title'] = notags(trim($meta->subject));
+ $datarray['created'] = datetime_convert('UTC','UTC',$meta->date);
+
+ $r = email_get_msg($mbox,$msg_uid);
+ if(! $r)
+ continue;
+ $datarray['body'] = escape_tags($r['body']);
+
+ // some mailing lists have the original author as 'from' - add this sender info to msg body.
+ // todo: adding a gravatar for the original author would be cool
+
+ if(! stristr($meta->from,$contact['addr']))
+ $datarray['body'] = t('From: ') . escape_tags($meta->from) . "\n\n" . $datarray['body'];
+
+ $datarray['uid'] = $importer_uid;
+ $datarray['contact-id'] = $contact['id'];
+ if($datarray['parent-uri'] === $datarray['uri'])
+ $datarray['private'] = 1;
+ $datarray['author-name'] = $contact['name'];
+ $datarray['author-link'] = 'mailbox';
+ $datarray['author-avatar'] = $contact['photo'];
+
+ $stored_item = item_store($datarray);
+ q("UPDATE `item` SET `last-child` = 0 WHERE `parent-uri` = '%s' AND `uid` = %d",
+ dbesc($datarray['parent-uri']),
+ intval($importer_uid)
+ );
+ q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
+ intval($stored_item)
+ );
+ }
+ }
+
+ imap_close($mbox);
+ }
+ }
+ elseif($contact['network'] === NETWORK_FACEBOOK) {
+ // TODO: work in progress
}
- consume_feed($xml,$importer,$contact,$hub,1);
+ if($xml) {
+ logger('poller: received xml : ' . $xml, LOGGER_DATA);
- // do it twice. Ensures that children of parents which may be later in the stream aren't tossed
+ if(! strstr($xml,'<?xml')) {
+ logger('poller: post_handshake: response from ' . $url . ' did not contain XML.');
+ $r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
+ dbesc(datetime_convert()),
+ intval($contact['id'])
+ );
+ continue;
+ }
- consume_feed($xml,$importer,$contact,$hub,1);
+ consume_feed($xml,$importer,$contact,$hub,1, true);
- if((strlen($hub)) && ($hub_update)
- && (($contact['rel'] == REL_BUD) || (($contact['network'] === 'stat') && (! $contact['readonly'])))) {
- logger('poller: subscribing to hub(s) : ' . $hub . ' contact name : ' . $contact['name'] . ' local user : ' . $importer['name']);
- $hubs = explode(',', $hub);
- if(count($hubs)) {
- foreach($hubs as $h) {
- $h = trim($h);
- if(! strlen($h))
- continue;
- subscribe_to_hub($h,$importer,$contact);
+ // do it twice. Ensures that children of parents which may be later in the stream aren't tossed
+
+ consume_feed($xml,$importer,$contact,$hub,1);
+
+
+ if((strlen($hub)) && ($hub_update) && (($contact['rel'] == REL_BUD) || (($contact['network'] === NETWORK_OSTATUS) && (! $contact['readonly'])))) {
+ logger('poller: subscribing to hub(s) : ' . $hub . ' contact name : ' . $contact['name'] . ' local user : ' . $importer['name']);
+ $hubs = explode(',', $hub);
+ if(count($hubs)) {
+ foreach($hubs as $h) {
+ $h = trim($h);
+ if(! strlen($h))
+ continue;
+ subscribe_to_hub($h,$importer,$contact);
+ }
}
}
}
-
$updated = datetime_convert();
$r = q("UPDATE `contact` SET `last-update` = '%s', `success_update` = '%s' WHERE `id` = %d LIMIT 1",
@@ -300,6 +450,7 @@ function poller_run($argv, $argc){
// loop - next contact
}
}
+
return;
}
diff --git a/view/it/profile_advanced.php b/include/profile_advanced.php
index fe065d46f..c1dfad66f 100644
--- a/view/it/profile_advanced.php
+++ b/include/profile_advanced.php
@@ -1,46 +1,54 @@
<?php
-$o .= '';
-
-$o .= <<< EOT
-
-<h2>Profilo</h2>
+function advanced_profile(&$a) {
+$o .= '';
-EOT;
+$o .= '<h2>' . t('Profile') . '</h2>';
if($a->profile['name']) {
+ $lbl_fullname = t('Full Name:');
+ $fullname = $a->profile['name'];
+
$o .= <<< EOT
<div id="advanced-profile-name-wrapper" >
-<div id="advanced-profile-name-text">Nome Completo:</div>
-<div id="advanced-profile-name">{$a->profile['name']}</div>
+<div id="advanced-profile-name-text">$lbl_fullname</div>
+<div id="advanced-profile-name">$fullname</div>
</div>
<div id="advanced-profile-name-end"></div>
EOT;
}
if($a->profile['gender']) {
+ $lbl_gender = t('Gender:');
+ $gender = $a->profile['gender'];
+
$o .= <<< EOT
<div id="advanced-profile-gender-wrapper" >
-<div id="advanced-profile-gender-text">Genere:</div>
-<div id="advanced-profile-gender">{$a->profile['gender']}</div>
+<div id="advanced-profile-gender-text">$lbl_gender</div>
+<div id="advanced-profile-gender">$gender</div>
</div>
<div id="advanced-profile-gender-end"></div>
EOT;
}
if(($a->profile['dob']) && ($a->profile['dob'] != '0000-00-00')) {
+ $lbl_birthday = t('Birthday:');
+
$o .= <<< EOT
<div id="advanced-profile-dob-wrapper" >
-<div id="advanced-profile-dob-text">Compleanno:</div>
+<div id="advanced-profile-dob-text">$lbl_birthday</div>
EOT;
// If no year, add an arbitrary one so just we can parse the month and day.
+$year_bd_format = t('j F, Y');
+$short_bd_format = t('j F');
+
$o .= '<div id="advanced-profile-dob">'
. ((intval($a->profile['dob']))
- ? day_translate(datetime_convert('UTC','UTC',$a->profile['dob'] . ' 00:00 +00:00','j F, Y'))
- : day_translate(datetime_convert('UTC','UTC','2001-' . substr($a->profile['dob'],6) . ' 00:00 +00:00','j F')))
+ ? day_translate(datetime_convert('UTC','UTC',$a->profile['dob'] . ' 00:00 +00:00',$year_bd_format))
+ : day_translate(datetime_convert('UTC','UTC','2001-' . substr($a->profile['dob'],6) . ' 00:00 +00:00',$short_bd_format)))
. "</div>\r\n</div>";
$o .= '<div id="advanced-profile-dob-end"></div>';
@@ -48,9 +56,10 @@ $o .= '<div id="advanced-profile-dob-end"></div>';
}
if($age = age($a->profile['dob'],$a->profile['timezone'],'')) {
+ $lbl_age = t('Age:');
$o .= <<< EOT
<div id="advanced-profile-age-wrapper" >
-<div id="advanced-profile-age-text">Et&agrave;:</div>
+<div id="advanced-profile-age-text">$lbl_age</div>
<div id="advanced-profile-age">$age</div>
</div>
<div id="advanced-profile-age-end"></div>
@@ -58,14 +67,19 @@ EOT;
}
if($a->profile['marital']) {
+ $lbl_marital = t('<span class="heart">&hearts;</span> Status:');
+ $marital = $a->profile['marital'];
+
$o .= <<< EOT
<div id="advanced-profile-marital-wrapper" >
-<div id="advanced-profile-marital-text"><span class="heart">&hearts;</span> Stato:</div>
-<div id="advanced-profile-marital">{$a->profile['marital']}</div>
+<div id="advanced-profile-marital-text">$lbl_marital</div>
+<div id="advanced-profile-marital">$marital</div>
EOT;
-if($a->profile['with'])
- $o .= "<div id=\"advanced-profile-with\">({$a->profile['with']})</div>";
+if($a->profile['with']) {
+ $with = $a->profile['with'];
+ $o .= "<div id=\"advanced-profile-with\">($with)</div>";
+}
$o .= <<< EOT
</div>
<div id="advanced-profile-marital-end"></div>
@@ -73,20 +87,24 @@ EOT;
}
if($a->profile['sexual']) {
+ $lbl_sexual = t('Sexual Preference:');
+ $sexual = $a->profile['sexual'];
+
$o .= <<< EOT
<div id="advanced-profile-sexual-wrapper" >
-<div id="advanced-profile-sexual-text">Preferenze sessuali:</div>
-<div id="advanced-profile-sexual">{$a->profile['sexual']}</div>
+<div id="advanced-profile-sexual-text">$lbl_sexual</div>
+<div id="advanced-profile-sexual">$sexual</div>
</div>
<div id="advanced-profile-sexual-end"></div>
EOT;
}
if($a->profile['homepage']) {
+ $lbl_homepage = t('Homepage:');
$homepage = linkify($a->profile['homepage']);
$o .= <<< EOT
<div id="advanced-profile-homepage-wrapper" >
-<div id="advanced-profile-homepage-text">Homepage:</div>
+<div id="advanced-profile-homepage-text">$lbl_homepage</div>
<div id="advanced-profile-homepage">$homepage</div>
</div>
<div id="advanced-profile-homepage-end"></div>
@@ -94,29 +112,33 @@ EOT;
}
if($a->profile['politic']) {
+ $lbl_politic = t('Political Views:');
+ $politic = $a->profile['politic'];
$o .= <<< EOT
<div id="advanced-profile-politic-wrapper" >
-<div id="advanced-profile-politic-text">Orientamento politico:</div>
-<div id="advanced-profile-politic">{$a->profile['politic']}</div>
+<div id="advanced-profile-politic-text">$lbl_politic</div>
+<div id="advanced-profile-politic">$politic</div>
</div>
<div id="advanced-profile-politic-end"></div>
EOT;
}
if($a->profile['religion']) {
+ $lbl_religion = t('Religion:');
+ $religion = $a->profile['religion'];
$o .= <<< EOT
<div id="advanced-profile-religion-wrapper" >
-<div id="advanced-profile-religion-text">Religione:</div>
-<div id="advanced-profile-religion">{$a->profile['religion']}</div>
+<div id="advanced-profile-religion-text">$lbl_religion</div>
+<div id="advanced-profile-religion">$religion</div>
</div>
<div id="advanced-profile-religion-end"></div>
EOT;
}
-
if($txt = prepare_text($a->profile['about'])) {
+ $lbl_about = t('About:');
$o .= <<< EOT
<div id="advanced-profile-about-wrapper" >
-<div id="advanced-profile-about-text">Informazioni varie:</div>
+<div id="advanced-profile-about-text">$lbl_about</div>
<br />
<div id="advanced-profile-about">$txt</div>
</div>
@@ -125,9 +147,10 @@ EOT;
}
if($txt = prepare_text($a->profile['interest'])) {
+ $lbl_interests = t('Hobbies/Interests:');
$o .= <<< EOT
<div id="advanced-profile-interest-wrapper" >
-<div id="advanced-profile-interest-text">Hobbie/Interessi:</div>
+<div id="advanced-profile-interest-text">$lbl_interests</div>
<br />
<div id="advanced-profile-interest">$txt</div>
</div>
@@ -136,9 +159,10 @@ EOT;
}
if($txt = prepare_text($a->profile['contact'])) {
+ $lbl_contact = t('Contact information and Social Networks:');
$o .= <<< EOT
<div id="advanced-profile-contact-wrapper" >
-<div id="advanced-profile-contact-text">Informazioni su contatti e Social Networks:</div>
+<div id="advanced-profile-contact-text">$lbl_contact</div>
<br />
<div id="advanced-profile-contact">$txt</div>
</div>
@@ -147,9 +171,10 @@ EOT;
}
if($txt = prepare_text($a->profile['music'])) {
+ $lbl_music = t('Musical interests:');
$o .= <<< EOT
<div id="advanced-profile-music-wrapper" >
-<div id="advanced-profile-music-text">Interessi musicali:</div>
+<div id="advanced-profile-music-text">$lbl_music</div>
<br />
<div id="advanced-profile-music">$txt</div>
</div>
@@ -158,9 +183,10 @@ EOT;
}
if($txt = prepare_text($a->profile['book'])) {
+ $lbl_book = t('Books, literature:');
$o .= <<< EOT
<div id="advanced-profile-book-wrapper" >
-<div id="advanced-profile-book-text">Libri, letteratura:</div>
+<div id="advanced-profile-book-text">$lbl_book</div>
<br />
<div id="advanced-profile-book">$txt</div>
</div>
@@ -169,9 +195,10 @@ EOT;
}
if($txt = prepare_text($a->profile['tv'])) {
+ $lbl_tv = t('Television:');
$o .= <<< EOT
<div id="advanced-profile-tv-wrapper" >
-<div id="advanced-profile-tv-text">Televisione:</div>
+<div id="advanced-profile-tv-text">$lbl_tv</div>
<br />
<div id="advanced-profile-tv">$txt</div>
</div>
@@ -180,9 +207,10 @@ EOT;
}
if($txt = prepare_text($a->profile['film'])) {
+ $lbl_film = t('Film/dance/culture/entertainment:');
$o .= <<< EOT
<div id="advanced-profile-film-wrapper" >
-<div id="advanced-profile-film-text">Film/danza/cultura/intrattenimento:</div>
+<div id="advanced-profile-film-text">$lbl_film</div>
<br />
<div id="advanced-profile-film">$txt</div>
</div>
@@ -191,9 +219,10 @@ EOT;
}
if($txt = prepare_text($a->profile['romance'])) {
+ $lbl_romance = t('Love/Romance:');
$o .= <<< EOT
<div id="advanced-profile-romance-wrapper" >
-<div id="advanced-profile-romance-text">Amore/romanticismo:</div>
+<div id="advanced-profile-romance-text">$lbl_romance</div>
<br />
<div id="advanced-profile-romance">$txt</div>
</div>
@@ -202,9 +231,10 @@ EOT;
}
if($txt = prepare_text($a->profile['work'])) {
+ $lbl_work = t('Work/employment:');
$o .= <<< EOT
<div id="advanced-profile-work-wrapper" >
-<div id="advanced-profile-work-text">Lavoro/impiego:</div>
+<div id="advanced-profile-work-text">$lbl_work</div>
<br />
<div id="advanced-profile-work">$txt</div>
</div>
@@ -213,9 +243,10 @@ EOT;
}
if($txt = prepare_text($a->profile['education'])) {
+ $lbl_education = t('School/education:');
$o .= <<< EOT
<div id="advanced-profile-education-wrapper" >
-<div id="advanced-profile-education-text">Scuola/educazione:</div>
+<div id="advanced-profile-education-text">$lbl_education</div>
<br />
<div id="advanced-profile-education">$txt</div>
</div>
@@ -223,4 +254,5 @@ $o .= <<< EOT
EOT;
}
-
+return $o;
+}
diff --git a/include/salmon.php b/include/salmon.php
index b5c21a87b..d7060b0f7 100644
--- a/include/salmon.php
+++ b/include/salmon.php
@@ -161,7 +161,7 @@ EOT;
$signature2 = base64url_encode($rsa->sign($data));
- $salmon_tpl = load_view_file('view/magicsig.tpl');
+ $salmon_tpl = get_markup_template('magicsig.tpl');
$salmon = replace_macros($salmon_tpl,array(
'$data' => $data,
'$encoding' => $encoding,
diff --git a/include/security.php b/include/security.php
index 5e79e1edd..c74a9b4a3 100644
--- a/include/security.php
+++ b/include/security.php
@@ -25,7 +25,7 @@ function can_write_wall(&$a,$owner) {
else {
$r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` LEFT JOIN `user` on `user`.`uid` = `contact`.`uid`
WHERE `contact`.`uid` = %d AND `contact`.`id` = %d AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
- AND `readonly` = 0 AND ( `contact`.`rel` IN ( %d , %d ) OR `user`.`page-flags` = %d ) LIMIT 1",
+ AND `user`.`blockwall` = 0 AND `readonly` = 0 AND ( `contact`.`rel` IN ( %d , %d ) OR `user`.`page-flags` = %d ) LIMIT 1",
intval($owner),
intval(remote_user()),
intval(REL_VIP),
diff --git a/include/template_processor.php b/include/template_processor.php
new file mode 100644
index 000000000..efdfbaecb
--- /dev/null
+++ b/include/template_processor.php
@@ -0,0 +1,137 @@
+<?php
+
+ class Template {
+ var $r;
+ var $search;
+ var $replace;
+ var $stack = array();
+ var $nodes = array();
+ var $done = false;
+
+ private function _build_replace($r, $prefix){
+
+ if(is_array($r) && count($r)) {
+ foreach ($r as $k => $v ) {
+ if (is_array($v))
+ $this->_build_replace($v, "$prefix$k.");
+
+ $this->search[] = $prefix . $k;
+ $this->replace[] = $v;
+ }
+ }
+ }
+
+ private function _push_stack(){
+ $this->stack[] = array($this->r, $this->search, $this->replace, $this->nodes);
+ }
+ private function _pop_stack(){
+ list($this->r, $this->search, $this->replace, $this->nodes) = array_pop($this->stack);
+ }
+
+ private function _get_var($name){
+ $keys = array_map('trim',explode(".",$name));
+ $val = $this->r;
+ foreach($keys as $k) {
+ $val = $val[$k];
+ }
+ return $val;
+ }
+
+ /**
+ * IF node
+ *
+ * {{ if <$var> }}...{{ endif }}
+ */
+ private function _replcb_if($args){
+ $val = $this->_get_var($args[2]);
+ return ($val?$args[3]:"");
+ }
+
+ /**
+ * FOR node
+ *
+ * {{ for <$var> as $name }}...{{ endfor }}
+ * {{ for <$var> as $key=>$name }}...{{ endfor }}
+ */
+ private function _replcb_for($args){
+ $m = array_map('trim', explode(" as ", $args[2]));
+ list($keyname, $varname) = explode("=>",$m[1]);
+ if (is_null($varname)) { $varname=$keyname; $keyname=""; }
+ if ($m[0]=="" || $varname=="" || is_null($varname)) die("template error: 'for ".$m[0]." as ".$varname."'") ;
+ $vals = $this->r[$m[0]];
+ $ret="";
+ if (!is_array($vals)) return $ret;
+ foreach ($vals as $k=>$v){
+ $this->_push_stack();
+ $r = $this->r;
+ $r[$varname] = $v;
+ if ($keyname!='') $r[$keyname] = $k;
+ $ret .= $this->replace($args[3], $r);
+ $this->_pop_stack();
+ }
+ return $ret;
+ }
+
+ /**
+ * INC node
+ *
+ * {{ inc <templatefile> [with $var1=$var2] }}{{ endinc }}
+ */
+ private function _replcb_inc($args){
+ list($tplfile, $newctx) = array_map('trim', explode("with",$args[2]));
+ $this->_push_stack();
+ $r = $this->r;
+ if (!is_null($newctx)) {
+ list($a,$b) = array_map('trim', explode("=",$newctx));
+ $r[$a] = $this->_get_var($b);
+ }
+ $this->nodes = Array();
+ $tpl = get_markup_template($tplfile);
+ $ret = $this->replace($tpl, $r);
+ $this->_pop_stack();
+ return $ret;
+
+ }
+
+ private function _replcb_node($m) {
+ $node = $this->nodes[$m[1]];
+ if (method_exists($this, "_replcb_".$node[1])){
+ return call_user_func(array($this, "_replcb_".$node[1]), $node);
+ } else {
+ return "";
+ }
+ }
+
+ private function _replcb($m){
+ $this->done = false;
+ $this->nodes[] = (array) $m;
+ return "||". (count($this->nodes)-1) ."||";
+ }
+
+ private function _build_nodes($s){
+ $this->done = false;
+ while (!$this->done){
+ $this->done=true;
+ $s = preg_replace_callback('|{{ *([a-z]*) *([^}]*)}}([^{]*){{ *end\1 *}}|', array($this, "_replcb"), $s);
+ }
+ krsort($this->nodes);
+ return $s;
+ }
+
+ public function replace($s, $r) {
+ $this->r = $r;
+ $this->search = array();
+ $this->replace = array();
+
+ $this->_build_replace($r, "");
+
+ #$s = str_replace(array("\n","\r"),array("§n§","§r§"),$s);
+ $s = $this->_build_nodes($s);
+ $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s);
+ $s = str_replace($this->search,$this->replace, (string) $s);
+
+ return $s;
+ }
+ }
+
+ $t = new Template;
diff --git a/index.php b/index.php
index cc17119b6..05eef6c6e 100644
--- a/index.php
+++ b/index.php
@@ -1,5 +1,7 @@
<?php
+
error_reporting(E_ERROR | E_WARNING | E_PARSE);
+
/**
*
* Friendika
@@ -31,10 +33,18 @@ $install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false
*
* Get the language setting directly from system variables, bypassing get_config()
* as database may not yet be configured.
+ *
+ * If possible, we use the value from the browser.
*
*/
-$lang = ((isset($a->config['system']['language'])) ? $a->config['system']['language'] : 'en');
+if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
+ $langs = preg_split("/[,-]/",$_SERVER['HTTP_ACCEPT_LANGUAGE'],2);
+ $lang = $langs[0];
+} else {
+ $lang = ((isset($a->config['system']['language'])) ? $a->config['system']['language'] : 'en');
+}
+
load_translation_table($lang);
@@ -80,6 +90,19 @@ $a->init_pagehead();
session_start();
/**
+ * Language was set earlier, but we can over-ride it in the session.
+ * We have to do it here because the session was just now opened.
+ */
+
+if(x($_POST,'system_language'))
+ $_SESSION['language'] = $_POST['system_language'];
+if((x($_SESSION,'language')) && ($_SESSION['language'] !== $lang)) {
+ $lang = $_SESSION['language'];
+ load_translation_table($lang);
+}
+
+
+/**
*
* For Mozilla auth manager - still needs sorting, and this might conflict with LRDD header.
* Apache/PHP lumps the Link: headers into one - and other services might not be able to parse it
diff --git a/library/markdown.php b/library/markdown.php
new file mode 100644
index 000000000..d51dceeca
--- /dev/null
+++ b/library/markdown.php
@@ -0,0 +1,3042 @@
+<?php
+#
+# Markdown Extra - A text-to-HTML conversion tool for web writers
+#
+# PHP Markdown & Extra
+# Copyright (c) 2004-2008 Michel Fortin
+# <http://www.michelf.com/projects/php-markdown/>
+#
+# Original Markdown
+# Copyright (c) 2004-2006 John Gruber
+# <http://daringfireball.net/projects/markdown/>
+#
+
+
+define( 'MARKDOWN_VERSION', "1.0.1m" ); # Sat 21 Jun 2008
+define( 'MARKDOWNEXTRA_VERSION', "1.2.3" ); # Wed 31 Dec 2008
+
+
+#
+# Global default settings:
+#
+
+# Change to ">" for HTML output
+@define( 'MARKDOWN_EMPTY_ELEMENT_SUFFIX', " />");
+
+# Define the width of a tab for code blocks.
+@define( 'MARKDOWN_TAB_WIDTH', 4 );
+
+# Optional title attribute for footnote links and backlinks.
+@define( 'MARKDOWN_FN_LINK_TITLE', "" );
+@define( 'MARKDOWN_FN_BACKLINK_TITLE', "" );
+
+# Optional class attribute for footnote links and backlinks.
+@define( 'MARKDOWN_FN_LINK_CLASS', "" );
+@define( 'MARKDOWN_FN_BACKLINK_CLASS', "" );
+
+# Enables special handling for links pointing outside of the current domain.
+@define( 'MARKDOWN_EL_ENABLE', true); # Use this feature at all?
+@define( 'MARKDOWN_EL_LOCAL_DOMAIN', null); # Leave as null to autodetect
+@define( 'MARKDOWN_EL_NEW_WINDOW', true); # Open link in a new browser?
+@define( 'MARKDOWN_EL_CSS_CLASS', 'external'); # Leave as null for no class
+
+# Enables header auto-self-linking.
+@define( 'MARKDOWN_HA_ENABLE', true ); # Use this feature at all?
+@define( 'MARKDOWN_HA_CLASS', 'hidden-selflink' ); # Leave as null for no class
+@define( 'MARKDOWN_HA_TEXT', '&larr;' ); # The text to use as the link
+
+
+#
+# WordPress settings:
+#
+
+# Change to false to remove Markdown from posts and/or comments.
+@define( 'MARKDOWN_WP_POSTS', true );
+@define( 'MARKDOWN_WP_COMMENTS', true );
+
+
+
+### Standard Function Interface ###
+
+@define( 'MARKDOWN_PARSER_CLASS', 'MarkdownExtra_Parser' );
+
+function Markdown($text) {
+#
+# Initialize the parser and return the result of its transform method.
+#
+ # Setup static parser variable.
+ static $parser;
+ if (!isset($parser)) {
+ $parser_class = MARKDOWN_PARSER_CLASS;
+ $parser = new $parser_class;
+ }
+
+ # Transform text using parser.
+ return $parser->transform($text);
+}
+
+
+### WordPress Plugin Interface ###
+
+/*
+Plugin Name: Markdown Extra
+Plugin URI: http://www.michelf.com/projects/php-markdown/
+Description: <a href="http://daringfireball.net/projects/markdown/syntax">Markdown syntax</a> allows you to write using an easy-to-read, easy-to-write plain text format. Based on the original Perl version by <a href="http://daringfireball.net/">John Gruber</a>. <a href="http://www.michelf.com/projects/php-markdown/">More...</a>
+Version: 1.2.2
+Author: Michel Fortin
+Author URI: http://www.michelf.com/
+*/
+
+if (isset($wp_version)) {
+ # More details about how it works here:
+ # <http://www.michelf.com/weblog/2005/wordpress-text-flow-vs-markdown/>
+
+ # Post content and excerpts
+ # - Remove WordPress paragraph generator.
+ # - Run Markdown on excerpt, then remove all tags.
+ # - Add paragraph tag around the excerpt, but remove it for the excerpt rss.
+ if (MARKDOWN_WP_POSTS) {
+ remove_filter('the_content', 'wpautop');
+ remove_filter('the_content_rss', 'wpautop');
+ remove_filter('the_excerpt', 'wpautop');
+ add_filter('the_content', 'mdwp_MarkdownPost', 6);
+ add_filter('the_content_rss', 'mdwp_MarkdownPost', 6);
+ add_filter('get_the_excerpt', 'mdwp_MarkdownPost', 6);
+ add_filter('get_the_excerpt', 'trim', 7);
+ add_filter('the_excerpt', 'mdwp_add_p');
+ add_filter('the_excerpt_rss', 'mdwp_strip_p');
+
+ remove_filter('content_save_pre', 'balanceTags', 50);
+ remove_filter('excerpt_save_pre', 'balanceTags', 50);
+ add_filter('the_content', 'balanceTags', 50);
+ add_filter('get_the_excerpt', 'balanceTags', 9);
+ }
+
+ # Add a footnote id prefix to posts when inside a loop.
+ function mdwp_MarkdownPost($text) {
+ static $parser;
+ if (!$parser) {
+ $parser_class = MARKDOWN_PARSER_CLASS;
+ $parser = new $parser_class;
+ }
+ if (is_single() || is_page() || is_feed()) {
+ $parser->fn_id_prefix = "";
+ } else {
+ $parser->fn_id_prefix = get_the_ID() . ".";
+ }
+ return $parser->transform($text);
+ }
+
+ # Comments
+ # - Remove WordPress paragraph generator.
+ # - Remove WordPress auto-link generator.
+ # - Scramble important tags before passing them to the kses filter.
+ # - Run Markdown on excerpt then remove paragraph tags.
+ if (MARKDOWN_WP_COMMENTS) {
+ remove_filter('comment_text', 'wpautop', 30);
+ remove_filter('comment_text', 'make_clickable');
+ add_filter('pre_comment_content', 'Markdown', 6);
+ add_filter('pre_comment_content', 'mdwp_hide_tags', 8);
+ add_filter('pre_comment_content', 'mdwp_show_tags', 12);
+ add_filter('get_comment_text', 'Markdown', 6);
+ add_filter('get_comment_excerpt', 'Markdown', 6);
+ add_filter('get_comment_excerpt', 'mdwp_strip_p', 7);
+
+ global $mdwp_hidden_tags, $mdwp_placeholders;
+ $mdwp_hidden_tags = explode(' ',
+ '<p> </p> <pre> </pre> <ol> </ol> <ul> </ul> <li> </li>');
+ $mdwp_placeholders = explode(' ', str_rot13(
+ 'pEj07ZbbBZ U1kqgh4w4p pre2zmeN6K QTi31t9pre ol0MP1jzJR '.
+ 'ML5IjmbRol ulANi1NsGY J7zRLJqPul liA8ctl16T K9nhooUHli'));
+ }
+
+ function mdwp_add_p($text) {
+ if (!preg_match('{^$|^<(p|ul|ol|dl|pre|blockquote)>}i', $text)) {
+ $text = '<p>'.$text.'</p>';
+ $text = preg_replace('{\n{2,}}', "</p>\n\n<p>", $text);
+ }
+ return $text;
+ }
+
+ function mdwp_strip_p($t) { return preg_replace('{</?p>}i', '', $t); }
+
+ function mdwp_hide_tags($text) {
+ global $mdwp_hidden_tags, $mdwp_placeholders;
+ return str_replace($mdwp_hidden_tags, $mdwp_placeholders, $text);
+ }
+ function mdwp_show_tags($text) {
+ global $mdwp_hidden_tags, $mdwp_placeholders;
+ return str_replace($mdwp_placeholders, $mdwp_hidden_tags, $text);
+ }
+}
+
+
+### bBlog Plugin Info ###
+
+function identify_modifier_markdown() {
+ return array(
+ 'name' => 'markdown',
+ 'type' => 'modifier',
+ 'nicename' => 'PHP Markdown Extra',
+ 'description' => 'A text-to-HTML conversion tool for web writers',
+ 'authors' => 'Michel Fortin and John Gruber',
+ 'licence' => 'GPL',
+ 'version' => MARKDOWNEXTRA_VERSION,
+ 'help' => '<a href="http://daringfireball.net/projects/markdown/syntax">Markdown syntax</a> allows you to write using an easy-to-read, easy-to-write plain text format. Based on the original Perl version by <a href="http://daringfireball.net/">John Gruber</a>. <a href="http://www.michelf.com/projects/php-markdown/">More...</a>',
+ );
+}
+
+
+### Smarty Modifier Interface ###
+
+function smarty_modifier_markdown($text) {
+ return Markdown($text);
+}
+
+
+### Textile Compatibility Mode ###
+
+# Rename this file to "classTextile.php" and it can replace Textile everywhere.
+
+if (strcasecmp(substr(__FILE__, -16), "classTextile.php") == 0) {
+ # Try to include PHP SmartyPants. Should be in the same directory.
+ @include_once 'smartypants.php';
+ # Fake Textile class. It calls Markdown instead.
+ class Textile {
+ function TextileThis($text, $lite='', $encode='') {
+ if ($lite == '' && $encode == '') $text = Markdown($text);
+ if (function_exists('SmartyPants')) $text = SmartyPants($text);
+ return $text;
+ }
+ # Fake restricted version: restrictions are not supported for now.
+ function TextileRestricted($text, $lite='', $noimage='') {
+ return $this->TextileThis($text, $lite);
+ }
+ # Workaround to ensure compatibility with TextPattern 4.0.3.
+ function blockLite($text) { return $text; }
+ }
+}
+
+
+
+#
+# Markdown Parser Class
+#
+
+class Markdown_Parser {
+
+ # Regex to match balanced [brackets].
+ # Needed to insert a maximum bracked depth while converting to PHP.
+ var $nested_brackets_depth = 6;
+ var $nested_brackets_re;
+
+ var $nested_url_parenthesis_depth = 4;
+ var $nested_url_parenthesis_re;
+
+ # Table of hash values for escaped characters:
+ var $escape_chars = '\`*_{}[]()>#+-.!';
+ var $escape_chars_re;
+
+ # Change to ">" for HTML output.
+ var $empty_element_suffix = MARKDOWN_EMPTY_ELEMENT_SUFFIX;
+ var $tab_width = MARKDOWN_TAB_WIDTH;
+
+ # Change to `true` to disallow markup or entities.
+ var $no_markup = false;
+ var $no_entities = false;
+
+ # Predefined urls and titles for reference links and images.
+ var $predef_urls = array();
+ var $predef_titles = array();
+
+
+ function Markdown_Parser() {
+ #
+ # Constructor function. Initialize appropriate member variables.
+ #
+ $this->_initDetab();
+ $this->prepareItalicsAndBold();
+
+ $this->nested_brackets_re =
+ str_repeat('(?>[^\[\]]+|\[', $this->nested_brackets_depth).
+ str_repeat('\])*', $this->nested_brackets_depth);
+
+ $this->nested_url_parenthesis_re =
+ str_repeat('(?>[^()\s]+|\(', $this->nested_url_parenthesis_depth).
+ str_repeat('(?>\)))*', $this->nested_url_parenthesis_depth);
+
+ $this->escape_chars_re = '['.preg_quote($this->escape_chars).']';
+
+ # Sort document, block, and span gamut in ascendent priority order.
+ asort($this->document_gamut);
+ asort($this->block_gamut);
+ asort($this->span_gamut);
+ }
+
+
+ # Internal hashes used during transformation.
+ var $urls = array();
+ var $titles = array();
+ var $html_hashes = array();
+
+ # Status flag to avoid invalid nesting.
+ var $in_anchor = false;
+
+
+ function setup() {
+ #
+ # Called before the transformation process starts to setup parser
+ # states.
+ #
+ # Clear global hashes.
+ $this->urls = $this->predef_urls;
+ $this->titles = $this->predef_titles;
+ $this->html_hashes = array();
+
+ $in_anchor = false;
+ }
+
+ function teardown() {
+ #
+ # Called after the transformation process to clear any variable
+ # which may be taking up memory unnecessarly.
+ #
+ $this->urls = array();
+ $this->titles = array();
+ $this->html_hashes = array();
+ }
+
+
+ function transform($text) {
+ #
+ # Main function. Performs some preprocessing on the input text
+ # and pass it through the document gamut.
+ #
+ $this->setup();
+
+ # Remove UTF-8 BOM and marker character in input, if present.
+ $text = preg_replace('{^\xEF\xBB\xBF|\x1A}', '', $text);
+
+ # Standardize line endings:
+ # DOS to Unix and Mac to Unix
+ $text = preg_replace('{\r\n?}', "\n", $text);
+
+ # Make sure $text ends with a couple of newlines:
+ $text .= "\n\n";
+
+ # Convert all tabs to spaces.
+ $text = $this->detab($text);
+
+ # Turn block-level HTML blocks into hash entries
+ $text = $this->hashHTMLBlocks($text);
+
+ # Strip any lines consisting only of spaces and tabs.
+ # This makes subsequent regexen easier to write, because we can
+ # match consecutive blank lines with /\n+/ instead of something
+ # contorted like /[ ]*\n+/ .
+ $text = preg_replace('/^[ ]+$/m', '', $text);
+
+ # Run document gamut methods.
+ foreach ($this->document_gamut as $method => $priority) {
+ $text = $this->$method($text);
+ }
+
+ $this->teardown();
+
+ return $text . "\n";
+ }
+
+ var $document_gamut = array(
+ # Strip link definitions, store in hashes.
+ "stripLinkDefinitions" => 20,
+
+ "runBasicBlockGamut" => 30,
+ );
+
+
+ function stripLinkDefinitions($text) {
+ #
+ # Strips link definitions from text, stores the URLs and titles in
+ # hash references.
+ #
+ $less_than_tab = $this->tab_width - 1;
+
+ # Link defs are in the form: ^[id]: url "optional title"
+ $text = preg_replace_callback('{
+ ^[ ]{0,'.$less_than_tab.'}\[(.+)\][ ]?: # id = $1
+ [ ]*
+ \n? # maybe *one* newline
+ [ ]*
+ <?(\S+?)>? # url = $2
+ [ ]*
+ \n? # maybe one newline
+ [ ]*
+ (?:
+ (?<=\s) # lookbehind for whitespace
+ ["(]
+ (.*?) # title = $3
+ [")]
+ [ ]*
+ )? # title is optional
+ (?:\n+|\Z)
+ }xm',
+ array(&$this, '_stripLinkDefinitions_callback'),
+ $text);
+ return $text;
+ }
+ function _stripLinkDefinitions_callback($matches) {
+ $link_id = strtolower($matches[1]);
+ $this->urls[$link_id] = $matches[2];
+ $this->titles[$link_id] =& $matches[3];
+ return ''; # String that will replace the block
+ }
+
+
+ function hashHTMLBlocks($text) {
+ if ($this->no_markup) return $text;
+
+ $less_than_tab = $this->tab_width - 1;
+
+ # Hashify HTML blocks:
+ # We only want to do this for block-level HTML tags, such as headers,
+ # lists, and tables. That's because we still want to wrap <p>s around
+ # "paragraphs" that are wrapped in non-block-level tags, such as anchors,
+ # phrase emphasis, and spans. The list of tags we're looking for is
+ # hard-coded:
+ #
+ # * List "a" is made of tags which can be both inline or block-level.
+ # These will be treated block-level when the start tag is alone on
+ # its line, otherwise they're not matched here and will be taken as
+ # inline later.
+ # * List "b" is made of tags which are always block-level;
+ #
+ $block_tags_a_re = 'ins|del';
+ $block_tags_b_re = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|'.
+ 'script|noscript|form|fieldset|iframe|math|textarea';
+
+ # Regular expression for the content of a block tag.
+ $nested_tags_level = 4;
+ $attr = '
+ (?> # optional tag attributes
+ \s # starts with whitespace
+ (?>
+ [^>"/]+ # text outside quotes
+ |
+ /+(?!>) # slash not followed by ">"
+ |
+ "[^"]*" # text inside double quotes (tolerate ">")
+ |
+ \'[^\']*\' # text inside single quotes (tolerate ">")
+ )*
+ )?
+ ';
+ $content =
+ str_repeat('
+ (?>
+ [^<]+ # content without tag
+ |
+ <\2 # nested opening tag
+ '.$attr.' # attributes
+ (?>
+ />
+ |
+ >', $nested_tags_level). # end of opening tag
+ '.*?'. # last level nested tag content
+ str_repeat('
+ </\2\s*> # closing nested tag
+ )
+ |
+ <(?!/\2\s*> # other tags with a different name
+ )
+ )*',
+ $nested_tags_level);
+ $content2 = str_replace('\2', '\3', $content);
+
+ # First, look for nested blocks, e.g.:
+ # <div>
+ # <div>
+ # tags for inner block must be indented.
+ # </div>
+ # </div>
+ #
+ # The outermost tags must start at the left margin for this to match, and
+ # the inner nested divs must be indented.
+ # We need to do this before the next, more liberal match, because the next
+ # match will start at the first `<div>` and stop at the first `</div>`.
+ $text = preg_replace_callback('{(?>
+ (?>
+ (?<=\n\n) # Starting after a blank line
+ | # or
+ \A\n? # the beginning of the doc
+ )
+ ( # save in $1
+
+ # Match from `\n<tag>` to `</tag>\n`, handling nested tags
+ # in between.
+
+ [ ]{0,'.$less_than_tab.'}
+ <('.$block_tags_b_re.')# start tag = $2
+ '.$attr.'> # attributes followed by > and \n
+ '.$content.' # content, support nesting
+ </\2> # the matching end tag
+ [ ]* # trailing spaces/tabs
+ (?=\n+|\Z) # followed by a newline or end of document
+
+ | # Special version for tags of group a.
+
+ [ ]{0,'.$less_than_tab.'}
+ <('.$block_tags_a_re.')# start tag = $3
+ '.$attr.'>[ ]*\n # attributes followed by >
+ '.$content2.' # content, support nesting
+ </\3> # the matching end tag
+ [ ]* # trailing spaces/tabs
+ (?=\n+|\Z) # followed by a newline or end of document
+
+ | # Special case just for <hr />. It was easier to make a special
+ # case than to make the other regex more complicated.
+
+ [ ]{0,'.$less_than_tab.'}
+ <(hr) # start tag = $2
+ '.$attr.' # attributes
+ /?> # the matching end tag
+ [ ]*
+ (?=\n{2,}|\Z) # followed by a blank line or end of document
+
+ | # Special case for standalone HTML comments:
+
+ [ ]{0,'.$less_than_tab.'}
+ (?s:
+ <!-- .*? -->
+ )
+ [ ]*
+ (?=\n{2,}|\Z) # followed by a blank line or end of document
+
+ | # PHP and ASP-style processor instructions (<? and <%)
+
+ [ ]{0,'.$less_than_tab.'}
+ (?s:
+ <([?%]) # $2
+ .*?
+ \2>
+ )
+ [ ]*
+ (?=\n{2,}|\Z) # followed by a blank line or end of document
+
+ )
+ )}Sxmi',
+ array(&$this, '_hashHTMLBlocks_callback'),
+ $text);
+
+ return $text;
+ }
+ function _hashHTMLBlocks_callback($matches) {
+ $text = $matches[1];
+ $key = $this->hashBlock($text);
+ return "\n\n$key\n\n";
+ }
+
+
+ function hashPart($text, $boundary = 'X') {
+ #
+ # Called whenever a tag must be hashed when a function insert an atomic
+ # element in the text stream. Passing $text to through this function gives
+ # a unique text-token which will be reverted back when calling unhash.
+ #
+ # The $boundary argument specify what character should be used to surround
+ # the token. By convension, "B" is used for block elements that needs not
+ # to be wrapped into paragraph tags at the end, ":" is used for elements
+ # that are word separators and "X" is used in the general case.
+ #
+ # Swap back any tag hash found in $text so we do not have to `unhash`
+ # multiple times at the end.
+ $text = $this->unhash($text);
+
+ # Then hash the block.
+ static $i = 0;
+ $key = "$boundary\x1A" . ++$i . $boundary;
+ $this->html_hashes[$key] = $text;
+ return $key; # String that will replace the tag.
+ }
+
+
+ function hashBlock($text) {
+ #
+ # Shortcut function for hashPart with block-level boundaries.
+ #
+ return $this->hashPart($text, 'B');
+ }
+
+
+ var $block_gamut = array(
+ #
+ # These are all the transformations that form block-level
+ # tags like paragraphs, headers, and list items.
+ #
+ "doHeaders" => 10,
+ "doHorizontalRules" => 20,
+
+ "doLists" => 40,
+ "doCodeBlocks" => 50,
+ "doBlockQuotes" => 60,
+ );
+
+ function runBlockGamut($text) {
+ #
+ # Run block gamut tranformations.
+ #
+ # We need to escape raw HTML in Markdown source before doing anything
+ # else. This need to be done for each block, and not only at the
+ # begining in the Markdown function since hashed blocks can be part of
+ # list items and could have been indented. Indented blocks would have
+ # been seen as a code block in a previous pass of hashHTMLBlocks.
+ $text = $this->hashHTMLBlocks($text);
+
+ return $this->runBasicBlockGamut($text);
+ }
+
+ function runBasicBlockGamut($text) {
+ #
+ # Run block gamut tranformations, without hashing HTML blocks. This is
+ # useful when HTML blocks are known to be already hashed, like in the first
+ # whole-document pass.
+ #
+ foreach ($this->block_gamut as $method => $priority) {
+ $text = $this->$method($text);
+ }
+
+ # Finally form paragraph and restore hashed blocks.
+ $text = $this->formParagraphs($text);
+
+ return $text;
+ }
+
+
+ function doHorizontalRules($text) {
+ # Do Horizontal Rules:
+ return preg_replace(
+ '{
+ ^[ ]{0,3} # Leading space
+ ([-*_]) # $1: First marker
+ (?> # Repeated marker group
+ [ ]{0,2} # Zero, one, or two spaces.
+ \1 # Marker character
+ ){2,} # Group repeated at least twice
+ [ ]* # Tailing spaces
+ $ # End of line.
+ }mx',
+ "\n".$this->hashBlock("<hr$this->empty_element_suffix")."\n",
+ $text);
+ }
+
+
+ var $span_gamut = array(
+ #
+ # These are all the transformations that occur *within* block-level
+ # tags like paragraphs, headers, and list items.
+ #
+ # Process character escapes, code spans, and inline HTML
+ # in one shot.
+ "parseSpan" => -30,
+
+ # Process anchor and image tags. Images must come first,
+ # because ![foo][f] looks like an anchor.
+ "doImages" => 10,
+ "doAnchors" => 20,
+
+ # Make links out of things like `<http://example.com/>`
+ # Must come after doAnchors, because you can use < and >
+ # delimiters in inline links like [this](<url>).
+ "doAutoLinks" => 30,
+ "encodeAmpsAndAngles" => 40,
+
+ "doItalicsAndBold" => 50,
+ "doHardBreaks" => 60,
+ );
+
+ function runSpanGamut($text) {
+ #
+ # Run span gamut tranformations.
+ #
+ foreach ($this->span_gamut as $method => $priority) {
+ $text = $this->$method($text);
+ }
+
+ return $text;
+ }
+
+
+ function doHardBreaks($text) {
+ # Do hard breaks:
+ return preg_replace_callback('/ {2,}\n/',
+ array(&$this, '_doHardBreaks_callback'), $text);
+ }
+ function _doHardBreaks_callback($matches) {
+ return $this->hashPart("<br$this->empty_element_suffix\n");
+ }
+
+
+ function doAnchors($text) {
+ #
+ # Turn Markdown link shortcuts into XHTML <a> tags.
+ #
+ if ($this->in_anchor) return $text;
+ $this->in_anchor = true;
+
+ #
+ # First, handle reference-style links: [link text] [id]
+ #
+ $text = preg_replace_callback('{
+ ( # wrap whole match in $1
+ \[
+ ('.$this->nested_brackets_re.') # link text = $2
+ \]
+
+ [ ]? # one optional space
+ (?:\n[ ]*)? # one optional newline followed by spaces
+
+ \[
+ (.*?) # id = $3
+ \]
+ )
+ }xs',
+ array(&$this, '_doAnchors_reference_callback'), $text);
+
+ #
+ # Next, inline-style links: [link text](url "optional title")
+ #
+ $text = preg_replace_callback('{
+ ( # wrap whole match in $1
+ \[
+ ('.$this->nested_brackets_re.') # link text = $2
+ \]
+ \( # literal paren
+ [ ]*
+ (?:
+ <(\S*)> # href = $3
+ |
+ ('.$this->nested_url_parenthesis_re.') # href = $4
+ )
+ [ ]*
+ ( # $5
+ ([\'"]) # quote char = $6
+ (.*?) # Title = $7
+ \6 # matching quote
+ [ ]* # ignore any spaces/tabs between closing quote and )
+ )? # title is optional
+ \)
+ )
+ }xs',
+ array(&$this, '_DoAnchors_inline_callback'), $text);
+
+ #
+ # Last, handle reference-style shortcuts: [link text]
+ # These must come last in case you've also got [link test][1]
+ # or [link test](/foo)
+ #
+// $text = preg_replace_callback('{
+// ( # wrap whole match in $1
+// \[
+// ([^\[\]]+) # link text = $2; can\'t contain [ or ]
+// \]
+// )
+// }xs',
+// array(&$this, '_doAnchors_reference_callback'), $text);
+
+ $this->in_anchor = false;
+ return $text;
+ }
+ function _doAnchors_reference_callback($matches) {
+ $whole_match = $matches[1];
+ $link_text = $matches[2];
+ $link_id =& $matches[3];
+
+ if ($link_id == "") {
+ # for shortcut links like [this][] or [this].
+ $link_id = $link_text;
+ }
+
+ # lower-case and turn embedded newlines into spaces
+ $link_id = strtolower($link_id);
+ $link_id = preg_replace('{[ ]?\n}', ' ', $link_id);
+
+ if (isset($this->urls[$link_id])) {
+ $url = $this->urls[$link_id];
+ $url = $this->encodeAttribute($url);
+
+ $result = "<a href=\"$url\"";
+ if ( isset( $this->titles[$link_id] ) ) {
+ $title = $this->titles[$link_id];
+ $title = $this->encodeAttribute($title);
+ $result .= " title=\"$title\"";
+ }
+
+ $link_text = $this->runSpanGamut($link_text);
+ $result .= ">$link_text</a>";
+ $result = $this->hashPart($result);
+ }
+ else {
+ $result = $whole_match;
+ }
+ return $result;
+ }
+ function _doAnchors_inline_callback($matches) {
+ $whole_match = $matches[1];
+ $link_text = $this->runSpanGamut($matches[2]);
+ $url = $matches[3] == '' ? $matches[4] : $matches[3];
+ $title =& $matches[7];
+
+ $url = $this->encodeAttribute($url);
+
+ $result = "<a href=\"$url\"";
+ if (isset($title)) {
+ $title = $this->encodeAttribute($title);
+ $result .= " title=\"$title\"";
+ }
+
+ $link_text = $this->runSpanGamut($link_text);
+ $result .= ">$link_text</a>";
+
+ return $this->hashPart($result);
+ }
+
+
+ function doImages($text) {
+ #
+ # Turn Markdown image shortcuts into <img> tags.
+ #
+ #
+ # First, handle reference-style labeled images: ![alt text][id]
+ #
+ $text = preg_replace_callback('{
+ ( # wrap whole match in $1
+ !\[
+ ('.$this->nested_brackets_re.') # alt text = $2
+ \]
+
+ [ ]? # one optional space
+ (?:\n[ ]*)? # one optional newline followed by spaces
+
+ \[
+ (.*?) # id = $3
+ \]
+
+ )
+ }xs',
+ array(&$this, '_doImages_reference_callback'), $text);
+
+ #
+ # Next, handle inline images: ![alt text](url "optional title")
+ # Don't forget: encode * and _
+ #
+ $text = preg_replace_callback('{
+ ( # wrap whole match in $1
+ !\[
+ ('.$this->nested_brackets_re.') # alt text = $2
+ \]
+ \s? # One optional whitespace character
+ \( # literal paren
+ [ ]*
+ (?:
+ <(\S*)> # src url = $3
+ |
+ ('.$this->nested_url_parenthesis_re.') # src url = $4
+ )
+ [ ]*
+ ( # $5
+ ([\'"]) # quote char = $6
+ (.*?) # title = $7
+ \6 # matching quote
+ [ ]*
+ )? # title is optional
+ \)
+ )
+ }xs',
+ array(&$this, '_doImages_inline_callback'), $text);
+
+ return $text;
+ }
+ function _doImages_reference_callback($matches) {
+ $whole_match = $matches[1];
+ $alt_text = $matches[2];
+ $link_id = strtolower($matches[3]);
+
+ if ($link_id == "") {
+ $link_id = strtolower($alt_text); # for shortcut links like ![this][].
+ }
+
+ $alt_text = $this->encodeAttribute($alt_text);
+ if (isset($this->urls[$link_id])) {
+ $url = $this->encodeAttribute($this->urls[$link_id]);
+ $result = "<img src=\"$url\" alt=\"$alt_text\"";
+ if (isset($this->titles[$link_id])) {
+ $title = $this->titles[$link_id];
+ $title = $this->encodeAttribute($title);
+ $result .= " title=\"$title\"";
+ }
+ $result .= $this->empty_element_suffix;
+ $result = $this->hashPart($result);
+ }
+ else {
+ # If there's no such link ID, leave intact:
+ $result = $whole_match;
+ }
+
+ return $result;
+ }
+ function _doImages_inline_callback($matches) {
+ $whole_match = $matches[1];
+ $alt_text = $matches[2];
+ $url = $matches[3] == '' ? $matches[4] : $matches[3];
+ $title =& $matches[7];
+
+ $alt_text = $this->encodeAttribute($alt_text);
+ $url = $this->encodeAttribute($url);
+ $result = "<img src=\"$url\" alt=\"$alt_text\"";
+ if (isset($title)) {
+ $title = $this->encodeAttribute($title);
+ $result .= " title=\"$title\""; # $title already quoted
+ }
+ $result .= $this->empty_element_suffix;
+
+ return $this->hashPart($result);
+ }
+
+
+ function doHeaders($text) {
+ # Setext-style headers:
+ # Header 1
+ # ========
+ #
+ # Header 2
+ # --------
+ #
+ $text = preg_replace_callback('{ ^(.+?)[ ]*\n(=+|-+)[ ]*\n+ }mx',
+ array(&$this, '_doHeaders_callback_setext'), $text);
+
+ # atx-style headers:
+ # # Header 1
+ # ## Header 2
+ # ## Header 2 with closing hashes ##
+ # ...
+ # ###### Header 6
+ #
+ $text = preg_replace_callback('{
+ ^(\#{1,6}) # $1 = string of #\'s
+ [ ]*
+ (.+?) # $2 = Header text
+ [ ]*
+ \#* # optional closing #\'s (not counted)
+ \n+
+ }xm',
+ array(&$this, '_doHeaders_callback_atx'), $text);
+
+ return $text;
+ }
+ function _doHeaders_callback_setext($matches) {
+ # Terrible hack to check we haven't found an empty list item.
+ if ($matches[2] == '-' && preg_match('{^-(?: |$)}', $matches[1]))
+ return $matches[0];
+
+ $level = $matches[2]{0} == '=' ? 1 : 2;
+ $block = "<h$level>".$this->runSpanGamut($matches[1])."</h$level>";
+ return "\n" . $this->hashBlock($block) . "\n\n";
+ }
+ function _doHeaders_callback_atx($matches) {
+ $level = strlen($matches[1]);
+ $block = "<h$level>".$this->runSpanGamut($matches[2])."</h$level>";
+ return "\n" . $this->hashBlock($block) . "\n\n";
+ }
+
+
+ function doLists($text) {
+ #
+ # Form HTML ordered (numbered) and unordered (bulleted) lists.
+ #
+ $less_than_tab = $this->tab_width - 1;
+
+ # Re-usable patterns to match list item bullets and number markers:
+ $marker_ul_re = '[*+-]';
+ $marker_ol_re = '\d+[.]';
+ $marker_any_re = "(?:$marker_ul_re|$marker_ol_re)";
+
+ $markers_relist = array($marker_ul_re, $marker_ol_re);
+
+ foreach ($markers_relist as $marker_re) {
+ # Re-usable pattern to match any entirel ul or ol list:
+ $whole_list_re = '
+ ( # $1 = whole list
+ ( # $2
+ [ ]{0,'.$less_than_tab.'}
+ ('.$marker_re.') # $3 = first list item marker
+ [ ]+
+ )
+ (?s:.+?)
+ ( # $4
+ \z
+ |
+ \n{2,}
+ (?=\S)
+ (?! # Negative lookahead for another list item marker
+ [ ]*
+ '.$marker_re.'[ ]+
+ )
+ )
+ )
+ '; // mx
+
+ # We use a different prefix before nested lists than top-level lists.
+ # See extended comment in _ProcessListItems().
+
+ if ($this->list_level) {
+ $text = preg_replace_callback('{
+ ^
+ '.$whole_list_re.'
+ }mx',
+ array(&$this, '_doLists_callback'), $text);
+ }
+ else {
+ $text = preg_replace_callback('{
+ (?:(?<=\n)\n|\A\n?) # Must eat the newline
+ '.$whole_list_re.'
+ }mx',
+ array(&$this, '_doLists_callback'), $text);
+ }
+ }
+
+ return $text;
+ }
+ function _doLists_callback($matches) {
+ # Re-usable patterns to match list item bullets and number markers:
+ $marker_ul_re = '[*+-]';
+ $marker_ol_re = '\d+[.]';
+ $marker_any_re = "(?:$marker_ul_re|$marker_ol_re)";
+
+ $list = $matches[1];
+ $list_type = preg_match("/$marker_ul_re/", $matches[3]) ? "ul" : "ol";
+
+ $marker_any_re = ( $list_type == "ul" ? $marker_ul_re : $marker_ol_re );
+
+ $list .= "\n";
+ $result = $this->processListItems($list, $marker_any_re);
+
+ $result = $this->hashBlock("<$list_type>\n" . $result . "</$list_type>");
+ return "\n". $result ."\n\n";
+ }
+
+ var $list_level = 0;
+
+ function processListItems($list_str, $marker_any_re) {
+ #
+ # Process the contents of a single ordered or unordered list, splitting it
+ # into individual list items.
+ #
+ # The $this->list_level global keeps track of when we're inside a list.
+ # Each time we enter a list, we increment it; when we leave a list,
+ # we decrement. If it's zero, we're not in a list anymore.
+ #
+ # We do this because when we're not inside a list, we want to treat
+ # something like this:
+ #
+ # I recommend upgrading to version
+ # 8. Oops, now this line is treated
+ # as a sub-list.
+ #
+ # As a single paragraph, despite the fact that the second line starts
+ # with a digit-period-space sequence.
+ #
+ # Whereas when we're inside a list (or sub-list), that line will be
+ # treated as the start of a sub-list. What a kludge, huh? This is
+ # an aspect of Markdown's syntax that's hard to parse perfectly
+ # without resorting to mind-reading. Perhaps the solution is to
+ # change the syntax rules such that sub-lists must start with a
+ # starting cardinal number; e.g. "1." or "a.".
+
+ $this->list_level++;
+
+ # trim trailing blank lines:
+ $list_str = preg_replace("/\n{2,}\\z/", "\n", $list_str);
+
+ $list_str = preg_replace_callback('{
+ (\n)? # leading line = $1
+ (^[ ]*) # leading whitespace = $2
+ ('.$marker_any_re.' # list marker and space = $3
+ (?:[ ]+|(?=\n)) # space only required if item is not empty
+ )
+ ((?s:.*?)) # list item text = $4
+ (?:(\n+(?=\n))|\n) # tailing blank line = $5
+ (?= \n* (\z | \2 ('.$marker_any_re.') (?:[ ]+|(?=\n))))
+ }xm',
+ array(&$this, '_processListItems_callback'), $list_str);
+
+ $this->list_level--;
+ return $list_str;
+ }
+ function _processListItems_callback($matches) {
+ $item = $matches[4];
+ $leading_line =& $matches[1];
+ $leading_space =& $matches[2];
+ $marker_space = $matches[3];
+ $tailing_blank_line =& $matches[5];
+
+ if ($leading_line || $tailing_blank_line ||
+ preg_match('/\n{2,}/', $item))
+ {
+ # Replace marker with the appropriate whitespace indentation
+ $item = $leading_space . str_repeat(' ', strlen($marker_space)) . $item;
+ $item = $this->runBlockGamut($this->outdent($item)."\n");
+ }
+ else {
+ # Recursion for sub-lists:
+ $item = $this->doLists($this->outdent($item));
+ $item = preg_replace('/\n+$/', '', $item);
+ $item = $this->runSpanGamut($item);
+ }
+
+ return "<li>" . $item . "</li>\n";
+ }
+
+
+ function doCodeBlocks($text) {
+ #
+ # Process Markdown `<pre><code>` blocks.
+ #
+ $text = preg_replace_callback('{
+ (?:\n\n|\A\n?)
+ ( # $1 = the code block -- one or more lines, starting with a space/tab
+ (?>
+ [ ]{'.$this->tab_width.'} # Lines must start with a tab or a tab-width of spaces
+ .*\n+
+ )+
+ )
+ ((?=^[ ]{0,'.$this->tab_width.'}\S)|\Z) # Lookahead for non-space at line-start, or end of doc
+ }xm',
+ array(&$this, '_doCodeBlocks_callback'), $text);
+
+ return $text;
+ }
+ function _doCodeBlocks_callback($matches) {
+ $codeblock = $matches[1];
+
+ $codeblock = $this->outdent($codeblock);
+ $codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES);
+
+ # trim leading newlines and trailing newlines
+ $codeblock = preg_replace('/\A\n+|\n+\z/', '', $codeblock);
+
+ $codeblock = "<pre><code>$codeblock\n</code></pre>";
+ return "\n\n".$this->hashBlock($codeblock)."\n\n";
+ }
+
+
+ function makeCodeSpan($code) {
+ #
+ # Create a code span markup for $code. Called from handleSpanToken.
+ #
+ $code = htmlspecialchars(trim($code), ENT_NOQUOTES);
+ return $this->hashPart("<code>$code</code>");
+ }
+
+
+ var $em_relist = array(
+ '' => '(?:(?<!\*)\*(?!\*)|(?<!_)_(?!_))(?=\S)(?![.,:;]\s)',
+ '*' => '(?<=\S)(?<!\*)\*(?!\*)',
+ '_' => '(?<=\S)(?<!_)_(?!_)',
+ );
+ var $strong_relist = array(
+ '' => '(?:(?<!\*)\*\*(?!\*)|(?<!_)__(?!_))(?=\S)(?![.,:;]\s)',
+ '**' => '(?<=\S)(?<!\*)\*\*(?!\*)',
+ '__' => '(?<=\S)(?<!_)__(?!_)',
+ );
+ var $em_strong_relist = array(
+ '' => '(?:(?<!\*)\*\*\*(?!\*)|(?<!_)___(?!_))(?=\S)(?![.,:;]\s)',
+ '***' => '(?<=\S)(?<!\*)\*\*\*(?!\*)',
+ '___' => '(?<=\S)(?<!_)___(?!_)',
+ );
+ var $em_strong_prepared_relist;
+
+ function prepareItalicsAndBold() {
+ #
+ # Prepare regular expressions for seraching emphasis tokens in any
+ # context.
+ #
+ foreach ($this->em_relist as $em => $em_re) {
+ foreach ($this->strong_relist as $strong => $strong_re) {
+ # Construct list of allowed token expressions.
+ $token_relist = array();
+ if (isset($this->em_strong_relist["$em$strong"])) {
+ $token_relist[] = $this->em_strong_relist["$em$strong"];
+ }
+ $token_relist[] = $em_re;
+ $token_relist[] = $strong_re;
+
+ # Construct master expression from list.
+ $token_re = '{('. implode('|', $token_relist) .')}';
+ $this->em_strong_prepared_relist["$em$strong"] = $token_re;
+ }
+ }
+ }
+
+ function doItalicsAndBold($text) {
+ $token_stack = array('');
+ $text_stack = array('');
+ $em = '';
+ $strong = '';
+ $tree_char_em = false;
+
+ while (1) {
+ #
+ # Get prepared regular expression for seraching emphasis tokens
+ # in current context.
+ #
+ $token_re = $this->em_strong_prepared_relist["$em$strong"];
+
+ #
+ # Each loop iteration seach for the next emphasis token.
+ # Each token is then passed to handleSpanToken.
+ #
+ $parts = preg_split($token_re, $text, 2, PREG_SPLIT_DELIM_CAPTURE);
+ $text_stack[0] .= $parts[0];
+ $token =& $parts[1];
+ $text =& $parts[2];
+
+ if (empty($token)) {
+ # Reached end of text span: empty stack without emitting.
+ # any more emphasis.
+ while ($token_stack[0]) {
+ $text_stack[1] .= array_shift($token_stack);
+ $text_stack[0] .= array_shift($text_stack);
+ }
+ break;
+ }
+
+ $token_len = strlen($token);
+ if ($tree_char_em) {
+ # Reached closing marker while inside a three-char emphasis.
+ if ($token_len == 3) {
+ # Three-char closing marker, close em and strong.
+ array_shift($token_stack);
+ $span = array_shift($text_stack);
+ $span = $this->runSpanGamut($span);
+ $span = "<strong><em>$span</em></strong>";
+ $text_stack[0] .= $this->hashPart($span);
+ $em = '';
+ $strong = '';
+ } else {
+ # Other closing marker: close one em or strong and
+ # change current token state to match the other
+ $token_stack[0] = str_repeat($token{0}, 3-$token_len);
+ $tag = $token_len == 2 ? "strong" : "em";
+ $span = $text_stack[0];
+ $span = $this->runSpanGamut($span);
+ $span = "<$tag>$span</$tag>";
+ $text_stack[0] = $this->hashPart($span);
+ $$tag = ''; # $$tag stands for $em or $strong
+ }
+ $tree_char_em = false;
+ } else if ($token_len == 3) {
+ if ($em) {
+ # Reached closing marker for both em and strong.
+ # Closing strong marker:
+ for ($i = 0; $i < 2; ++$i) {
+ $shifted_token = array_shift($token_stack);
+ $tag = strlen($shifted_token) == 2 ? "strong" : "em";
+ $span = array_shift($text_stack);
+ $span = $this->runSpanGamut($span);
+ $span = "<$tag>$span</$tag>";
+ $text_stack[0] .= $this->hashPart($span);
+ $$tag = ''; # $$tag stands for $em or $strong
+ }
+ } else {
+ # Reached opening three-char emphasis marker. Push on token
+ # stack; will be handled by the special condition above.
+ $em = $token{0};
+ $strong = "$em$em";
+ array_unshift($token_stack, $token);
+ array_unshift($text_stack, '');
+ $tree_char_em = true;
+ }
+ } else if ($token_len == 2) {
+ if ($strong) {
+ # Unwind any dangling emphasis marker:
+ if (strlen($token_stack[0]) == 1) {
+ $text_stack[1] .= array_shift($token_stack);
+ $text_stack[0] .= array_shift($text_stack);
+ }
+ # Closing strong marker:
+ array_shift($token_stack);
+ $span = array_shift($text_stack);
+ $span = $this->runSpanGamut($span);
+ $span = "<strong>$span</strong>";
+ $text_stack[0] .= $this->hashPart($span);
+ $strong = '';
+ } else {
+ array_unshift($token_stack, $token);
+ array_unshift($text_stack, '');
+ $strong = $token;
+ }
+ } else {
+ # Here $token_len == 1
+ if ($em) {
+ if (strlen($token_stack[0]) == 1) {
+ # Closing emphasis marker:
+ array_shift($token_stack);
+ $span = array_shift($text_stack);
+ $span = $this->runSpanGamut($span);
+ $span = "<em>$span</em>";
+ $text_stack[0] .= $this->hashPart($span);
+ $em = '';
+ } else {
+ $text_stack[0] .= $token;
+ }
+ } else {
+ array_unshift($token_stack, $token);
+ array_unshift($text_stack, '');
+ $em = $token;
+ }
+ }
+ }
+ return $text_stack[0];
+ }
+
+
+ function doBlockQuotes($text) {
+ $text = preg_replace_callback('/
+ ( # Wrap whole match in $1
+ (?>
+ ^[ ]*>[ ]? # ">" at the start of a line
+ .+\n # rest of the first line
+ (.+\n)* # subsequent consecutive lines
+ \n* # blanks
+ )+
+ )
+ /xm',
+ array(&$this, '_doBlockQuotes_callback'), $text);
+
+ return $text;
+ }
+ function _doBlockQuotes_callback($matches) {
+ $bq = $matches[1];
+ # trim one level of quoting - trim whitespace-only lines
+ $bq = preg_replace('/^[ ]*>[ ]?|^[ ]+$/m', '', $bq);
+ $bq = $this->runBlockGamut($bq); # recurse
+
+ $bq = preg_replace('/^/m', " ", $bq);
+ # These leading spaces cause problem with <pre> content,
+ # so we need to fix that:
+ $bq = preg_replace_callback('{(\s*<pre>.+?</pre>)}sx',
+ array(&$this, '_DoBlockQuotes_callback2'), $bq);
+
+ return "\n". $this->hashBlock("<blockquote>\n$bq\n</blockquote>")."\n\n";
+ }
+ function _doBlockQuotes_callback2($matches) {
+ $pre = $matches[1];
+ $pre = preg_replace('/^ /m', '', $pre);
+ return $pre;
+ }
+
+
+ function formParagraphs($text) {
+ #
+ # Params:
+ # $text - string to process with html <p> tags
+ #
+ # Strip leading and trailing lines:
+ $text = preg_replace('/\A\n+|\n+\z/', '', $text);
+
+ $grafs = preg_split('/\n{2,}/', $text, -1, PREG_SPLIT_NO_EMPTY);
+
+ #
+ # Wrap <p> tags and unhashify HTML blocks
+ #
+ foreach ($grafs as $key => $value) {
+ if (!preg_match('/^B\x1A[0-9]+B$/', $value)) {
+ # Is a paragraph.
+ $value = $this->runSpanGamut($value);
+ $value = preg_replace('/^([ ]*)/', "<p>", $value);
+ $value .= "</p>";
+ $grafs[$key] = $this->unhash($value);
+ }
+ else {
+ # Is a block.
+ # Modify elements of @grafs in-place...
+ $graf = $value;
+ $block = $this->html_hashes[$graf];
+ $graf = $block;
+// if (preg_match('{
+// \A
+// ( # $1 = <div> tag
+// <div \s+
+// [^>]*
+// \b
+// markdown\s*=\s* ([\'"]) # $2 = attr quote char
+// 1
+// \2
+// [^>]*
+// >
+// )
+// ( # $3 = contents
+// .*
+// )
+// (</div>) # $4 = closing tag
+// \z
+// }xs', $block, $matches))
+// {
+// list(, $div_open, , $div_content, $div_close) = $matches;
+//
+// # We can't call Markdown(), because that resets the hash;
+// # that initialization code should be pulled into its own sub, though.
+// $div_content = $this->hashHTMLBlocks($div_content);
+//
+// # Run document gamut methods on the content.
+// foreach ($this->document_gamut as $method => $priority) {
+// $div_content = $this->$method($div_content);
+// }
+//
+// $div_open = preg_replace(
+// '{\smarkdown\s*=\s*([\'"]).+?\1}', '', $div_open);
+//
+// $graf = $div_open . "\n" . $div_content . "\n" . $div_close;
+// }
+ $grafs[$key] = $graf;
+ }
+ }
+
+ return implode("\n\n", $grafs);
+ }
+
+
+ function encodeAttribute($text) {
+ #
+ # Encode text for a double-quoted HTML attribute. This function
+ # is *not* suitable for attributes enclosed in single quotes.
+ #
+ $text = $this->encodeAmpsAndAngles($text);
+ $text = str_replace('"', '&quot;', $text);
+ return $text;
+ }
+
+
+ function encodeAmpsAndAngles($text) {
+ #
+ # Smart processing for ampersands and angle brackets that need to
+ # be encoded. Valid character entities are left alone unless the
+ # no-entities mode is set.
+ #
+ if ($this->no_entities) {
+ $text = str_replace('&', '&amp;', $text);
+ } else {
+ # Ampersand-encoding based entirely on Nat Irons's Amputator
+ # MT plugin: <http://bumppo.net/projects/amputator/>
+ $text = preg_replace('/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/',
+ '&amp;', $text);;
+ }
+ # Encode remaining <'s
+ $text = str_replace('<', '&lt;', $text);
+
+ return $text;
+ }
+
+
+ function doAutoLinks($text) {
+ $text = preg_replace_callback('{<((https?|ftp|dict):[^\'">\s]+)>}i',
+ array(&$this, '_doAutoLinks_url_callback'), $text);
+
+ # Email addresses: <address@domain.foo>
+ $text = preg_replace_callback('{
+ <
+ (?:mailto:)?
+ (
+ [-.\w\x80-\xFF]+
+ \@
+ [-a-z0-9\x80-\xFF]+(\.[-a-z0-9\x80-\xFF]+)*\.[a-z]+
+ )
+ >
+ }xi',
+ array(&$this, '_doAutoLinks_email_callback'), $text);
+
+ return $text;
+ }
+ function _doAutoLinks_url_callback($matches) {
+ $url = $this->encodeAttribute($matches[1]);
+ $link = "<a href=\"$url\">$url</a>";
+ return $this->hashPart($link);
+ }
+ function _doAutoLinks_email_callback($matches) {
+ $address = $matches[1];
+ $link = $this->encodeEmailAddress($address);
+ return $this->hashPart($link);
+ }
+
+
+ function encodeEmailAddress($addr) {
+ #
+ # Input: an email address, e.g. "foo@example.com"
+ #
+ # Output: the email address as a mailto link, with each character
+ # of the address encoded as either a decimal or hex entity, in
+ # the hopes of foiling most address harvesting spam bots. E.g.:
+ #
+ # <p><a href="&#109;&#x61;&#105;&#x6c;&#116;&#x6f;&#58;&#x66;o&#111;
+ # &#x40;&#101;&#x78;&#97;&#x6d;&#112;&#x6c;&#101;&#46;&#x63;&#111;
+ # &#x6d;">&#x66;o&#111;&#x40;&#101;&#x78;&#97;&#x6d;&#112;&#x6c;
+ # &#101;&#46;&#x63;&#111;&#x6d;</a></p>
+ #
+ # Based by a filter by Matthew Wickline, posted to BBEdit-Talk.
+ # With some optimizations by Milian Wolff.
+ #
+ $addr = "mailto:" . $addr;
+ $chars = preg_split('/(?<!^)(?!$)/', $addr);
+ $seed = (int)abs(crc32($addr) / strlen($addr)); # Deterministic seed.
+
+ foreach ($chars as $key => $char) {
+ $ord = ord($char);
+ # Ignore non-ascii chars.
+ if ($ord < 128) {
+ $r = ($seed * (1 + $key)) % 100; # Pseudo-random function.
+ # roughly 10% raw, 45% hex, 45% dec
+ # '@' *must* be encoded. I insist.
+ if ($r > 90 && $char != '@') /* do nothing */;
+ else if ($r < 45) $chars[$key] = '&#x'.dechex($ord).';';
+ else $chars[$key] = '&#'.$ord.';';
+ }
+ }
+
+ $addr = implode('', $chars);
+ $text = implode('', array_slice($chars, 7)); # text without `mailto:`
+ $addr = "<a href=\"$addr\">$text</a>";
+
+ return $addr;
+ }
+
+
+ function parseSpan($str) {
+ #
+ # Take the string $str and parse it into tokens, hashing embeded HTML,
+ # escaped characters and handling code spans.
+ #
+ $output = '';
+
+ $span_re = '{
+ (
+ \\\\'.$this->escape_chars_re.'
+ |
+ (?<![`\\\\])
+ `+ # code span marker
+ '.( $this->no_markup ? '' : '
+ |
+ <!-- .*? --> # comment
+ |
+ <\?.*?\?> | <%.*?%> # processing instruction
+ |
+ <[/!$]?[-a-zA-Z0-9:]+ # regular tags
+ (?>
+ \s
+ (?>[^"\'>]+|"[^"]*"|\'[^\']*\')*
+ )?
+ >
+ ').'
+ )
+ }xs';
+
+ while (1) {
+ #
+ # Each loop iteration seach for either the next tag, the next
+ # openning code span marker, or the next escaped character.
+ # Each token is then passed to handleSpanToken.
+ #
+ $parts = preg_split($span_re, $str, 2, PREG_SPLIT_DELIM_CAPTURE);
+
+ # Create token from text preceding tag.
+ if ($parts[0] != "") {
+ $output .= $parts[0];
+ }
+
+ # Check if we reach the end.
+ if (isset($parts[1])) {
+ $output .= $this->handleSpanToken($parts[1], $parts[2]);
+ $str = $parts[2];
+ }
+ else {
+ break;
+ }
+ }
+
+ return $output;
+ }
+
+
+ function handleSpanToken($token, &$str) {
+ #
+ # Handle $token provided by parseSpan by determining its nature and
+ # returning the corresponding value that should replace it.
+ #
+ switch ($token{0}) {
+ case "\\":
+ return $this->hashPart("&#". ord($token{1}). ";");
+ case "`":
+ # Search for end marker in remaining text.
+ if (preg_match('/^(.*?[^`])'.preg_quote($token).'(?!`)(.*)$/sm',
+ $str, $matches))
+ {
+ $str = $matches[2];
+ $codespan = $this->makeCodeSpan($matches[1]);
+ return $this->hashPart($codespan);
+ }
+ return $token; // return as text since no ending marker found.
+ default:
+ return $this->hashPart($token);
+ }
+ }
+
+
+ function outdent($text) {
+ #
+ # Remove one level of line-leading tabs or spaces
+ #
+ return preg_replace('/^(\t|[ ]{1,'.$this->tab_width.'})/m', '', $text);
+ }
+
+
+ # String length function for detab. `_initDetab` will create a function to
+ # hanlde UTF-8 if the default function does not exist.
+ var $utf8_strlen = 'mb_strlen';
+
+ function detab($text) {
+ #
+ # Replace tabs with the appropriate amount of space.
+ #
+ # For each line we separate the line in blocks delemited by
+ # tab characters. Then we reconstruct every line by adding the
+ # appropriate number of space between each blocks.
+
+ $text = preg_replace_callback('/^.*\t.*$/m',
+ array(&$this, '_detab_callback'), $text);
+
+ return $text;
+ }
+ function _detab_callback($matches) {
+ $line = $matches[0];
+ $strlen = $this->utf8_strlen; # strlen function for UTF-8.
+
+ # Split in blocks.
+ $blocks = explode("\t", $line);
+ # Add each blocks to the line.
+ $line = $blocks[0];
+ unset($blocks[0]); # Do not add first block twice.
+ foreach ($blocks as $block) {
+ # Calculate amount of space, insert spaces, insert block.
+ $amount = $this->tab_width -
+ $strlen($line, 'UTF-8') % $this->tab_width;
+ $line .= str_repeat(" ", $amount) . $block;
+ }
+ return $line;
+ }
+ function _initDetab() {
+ #
+ # Check for the availability of the function in the `utf8_strlen` property
+ # (initially `mb_strlen`). If the function is not available, create a
+ # function that will loosely count the number of UTF-8 characters with a
+ # regular expression.
+ #
+ if (function_exists($this->utf8_strlen)) return;
+ $this->utf8_strlen = create_function('$text', 'return preg_match_all(
+ "/[\\\\x00-\\\\xBF]|[\\\\xC0-\\\\xFF][\\\\x80-\\\\xBF]*/",
+ $text, $m);');
+ }
+
+
+ function unhash($text) {
+ #
+ # Swap back in all the tags hashed by _HashHTMLBlocks.
+ #
+ return preg_replace_callback('/(.)\x1A[0-9]+\1/',
+ array(&$this, '_unhash_callback'), $text);
+ }
+ function _unhash_callback($matches) {
+ return $this->html_hashes[$matches[0]];
+ }
+
+}
+
+
+#
+# Markdown Extra Parser Class
+#
+
+class MarkdownExtra_Parser extends Markdown_Parser {
+
+ # Prefix for footnote ids.
+ var $fn_id_prefix = "";
+
+ # Optional title attribute for footnote links and backlinks.
+ var $fn_link_title = MARKDOWN_FN_LINK_TITLE;
+ var $fn_backlink_title = MARKDOWN_FN_BACKLINK_TITLE;
+
+ # Optional class attribute for footnote links and backlinks.
+ var $fn_link_class = MARKDOWN_FN_LINK_CLASS;
+ var $fn_backlink_class = MARKDOWN_FN_BACKLINK_CLASS;
+
+ var $el_enable = MARKDOWN_EL_ENABLE;
+ var $el_local_domain = MARKDOWN_EL_LOCAL_DOMAIN;
+ var $el_new_window = MARKDOWN_EL_NEW_WINDOW;
+ var $el_css_class = MARKDOWN_EL_CSS_CLASS;
+
+ var $ha_enable = MARKDOWN_HA_ENABLE;
+ var $ha_class = MARKDOWN_HA_CLASS;
+ var $ha_text = MARKDOWN_HA_TEXT;
+
+ # Predefined abbreviations.
+ var $predef_abbr = array();
+
+
+ function MarkdownExtra_Parser() {
+ #
+ # Constructor function. Initialize the parser object.
+ #
+ # Add extra escapable characters before parent constructor
+ # initialize the table.
+ $this->escape_chars .= ':|';
+
+ if ($this->el_local_domain === null) {
+ $this->el_local_domain = $_SERVER['SERVER_NAME'];
+ }
+
+ # Insert extra document, block, and span transformations.
+ # Parent constructor will do the sorting.
+ $this->document_gamut += array(
+ "doFencedCodeBlocks" => 5,
+ "stripFootnotes" => 15,
+ "stripAbbreviations" => 25,
+ "appendFootnotes" => 50,
+ );
+ $this->block_gamut += array(
+ "doFencedCodeBlocks" => 5,
+ "doTables" => 15,
+ "doDefLists" => 45,
+ );
+ $this->span_gamut += array(
+ "doFootnotes" => 5,
+ "doAbbreviations" => 70,
+ );
+
+ parent::Markdown_Parser();
+ }
+
+
+ # Extra variables used during extra transformations.
+ var $footnotes = array();
+ var $footnotes_ordered = array();
+ var $abbr_desciptions = array();
+ var $abbr_word_re = '';
+
+ # Give the current footnote number.
+ var $footnote_counter = 1;
+
+
+ function setup() {
+ #
+ # Setting up Extra-specific variables.
+ #
+ parent::setup();
+
+ $this->footnotes = array();
+ $this->footnotes_ordered = array();
+ $this->abbr_desciptions = array();
+ $this->abbr_word_re = '';
+ $this->footnote_counter = 1;
+
+ foreach ($this->predef_abbr as $abbr_word => $abbr_desc) {
+ if ($this->abbr_word_re)
+ $this->abbr_word_re .= '|';
+ $this->abbr_word_re .= preg_quote($abbr_word);
+ $this->abbr_desciptions[$abbr_word] = trim($abbr_desc);
+ }
+ }
+
+ function teardown() {
+ #
+ # Clearing Extra-specific variables.
+ #
+ $this->footnotes = array();
+ $this->footnotes_ordered = array();
+ $this->abbr_desciptions = array();
+ $this->abbr_word_re = '';
+
+ parent::teardown();
+ }
+
+
+ ### HTML Block Parser ###
+
+ # Tags that are always treated as block tags:
+ var $block_tags_re = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|form|fieldset|iframe|hr|legend';
+
+ # Tags treated as block tags only if the opening tag is alone on it's line:
+ var $context_block_tags_re = 'script|noscript|math|ins|del';
+
+ # Tags where markdown="1" default to span mode:
+ var $contain_span_tags_re = 'p|h[1-6]|li|dd|dt|td|th|legend|address';
+
+ # Tags which must not have their contents modified, no matter where
+ # they appear:
+ var $clean_tags_re = 'script|math';
+
+ # Tags that do not need to be closed.
+ var $auto_close_tags_re = 'hr|img';
+
+
+ function hashHTMLBlocks($text) {
+ #
+ # Hashify HTML Blocks and "clean tags".
+ #
+ # We only want to do this for block-level HTML tags, such as headers,
+ # lists, and tables. That's because we still want to wrap <p>s around
+ # "paragraphs" that are wrapped in non-block-level tags, such as anchors,
+ # phrase emphasis, and spans. The list of tags we're looking for is
+ # hard-coded.
+ #
+ # This works by calling _HashHTMLBlocks_InMarkdown, which then calls
+ # _HashHTMLBlocks_InHTML when it encounter block tags. When the markdown="1"
+ # attribute is found whitin a tag, _HashHTMLBlocks_InHTML calls back
+ # _HashHTMLBlocks_InMarkdown to handle the Markdown syntax within the tag.
+ # These two functions are calling each other. It's recursive!
+ #
+ #
+ # Call the HTML-in-Markdown hasher.
+ #
+ list($text, ) = $this->_hashHTMLBlocks_inMarkdown($text);
+
+ return $text;
+ }
+ function _hashHTMLBlocks_inMarkdown($text, $indent = 0,
+ $enclosing_tag_re = '', $span = false)
+ {
+ #
+ # Parse markdown text, calling _HashHTMLBlocks_InHTML for block tags.
+ #
+ # * $indent is the number of space to be ignored when checking for code
+ # blocks. This is important because if we don't take the indent into
+ # account, something like this (which looks right) won't work as expected:
+ #
+ # <div>
+ # <div markdown="1">
+ # Hello World. <-- Is this a Markdown code block or text?
+ # </div> <-- Is this a Markdown code block or a real tag?
+ # <div>
+ #
+ # If you don't like this, just don't indent the tag on which
+ # you apply the markdown="1" attribute.
+ #
+ # * If $enclosing_tag_re is not empty, stops at the first unmatched closing
+ # tag with that name. Nested tags supported.
+ #
+ # * If $span is true, text inside must treated as span. So any double
+ # newline will be replaced by a single newline so that it does not create
+ # paragraphs.
+ #
+ # Returns an array of that form: ( processed text , remaining text )
+ #
+ if ($text === '') return array('', '');
+
+ # Regex to check for the presense of newlines around a block tag.
+ $newline_before_re = '/(?:^\n?|\n\n)*$/';
+ $newline_after_re =
+ '{
+ ^ # Start of text following the tag.
+ (?>[ ]*<!--.*?-->)? # Optional comment.
+ [ ]*\n # Must be followed by newline.
+ }xs';
+
+ # Regex to match any tag.
+ $block_tag_re =
+ '{
+ ( # $2: Capture hole tag.
+ </? # Any opening or closing tag.
+ (?> # Tag name.
+ '.$this->block_tags_re.' |
+ '.$this->context_block_tags_re.' |
+ '.$this->clean_tags_re.' |
+ (?!\s)'.$enclosing_tag_re.'
+ )
+ (?:
+ (?=[\s"\'/a-zA-Z0-9]) # Allowed characters after tag name.
+ (?>
+ ".*?" | # Double quotes (can contain `>`)
+ \'.*?\' | # Single quotes (can contain `>`)
+ .+? # Anything but quotes and `>`.
+ )*?
+ )?
+ > # End of tag.
+ |
+ <!-- .*? --> # HTML Comment
+ |
+ <\?.*?\?> | <%.*?%> # Processing instruction
+ |
+ <!\[CDATA\[.*?\]\]> # CData Block
+ |
+ # Code span marker
+ `+
+ '. ( !$span ? ' # If not in span.
+ |
+ # Indented code block
+ (?> ^[ ]*\n? | \n[ ]*\n )
+ [ ]{'.($indent+4).'}[^\n]* \n
+ (?>
+ (?: [ ]{'.($indent+4).'}[^\n]* | [ ]* ) \n
+ )*
+ |
+ # Fenced code block marker
+ (?> ^ | \n )
+ [ ]{'.($indent).'}~~~+[ ]*\n
+ ' : '' ). ' # End (if not is span).
+ )
+ }xs';
+
+
+ $depth = 0; # Current depth inside the tag tree.
+ $parsed = ""; # Parsed text that will be returned.
+
+ #
+ # Loop through every tag until we find the closing tag of the parent
+ # or loop until reaching the end of text if no parent tag specified.
+ #
+ do {
+ #
+ # Split the text using the first $tag_match pattern found.
+ # Text before pattern will be first in the array, text after
+ # pattern will be at the end, and between will be any catches made
+ # by the pattern.
+ #
+ $parts = preg_split($block_tag_re, $text, 2,
+ PREG_SPLIT_DELIM_CAPTURE);
+
+ # If in Markdown span mode, add a empty-string span-level hash
+ # after each newline to prevent triggering any block element.
+ if ($span) {
+ $void = $this->hashPart("", ':');
+ $newline = "$void\n";
+ $parts[0] = $void . str_replace("\n", $newline, $parts[0]) . $void;
+ }
+
+ $parsed .= $parts[0]; # Text before current tag.
+
+ # If end of $text has been reached. Stop loop.
+ if (count($parts) < 3) {
+ $text = "";
+ break;
+ }
+
+ $tag = $parts[1]; # Tag to handle.
+ $text = $parts[2]; # Remaining text after current tag.
+ $tag_re = preg_quote($tag); # For use in a regular expression.
+
+ #
+ # Check for: Code span marker
+ #
+ if ($tag{0} == "`") {
+ # Find corresponding end marker.
+ $tag_re = preg_quote($tag);
+ if (preg_match('{^(?>.+?|\n(?!\n))*?(?<!`)'.$tag_re.'(?!`)}',
+ $text, $matches))
+ {
+ # End marker found: pass text unchanged until marker.
+ $parsed .= $tag . $matches[0];
+ $text = substr($text, strlen($matches[0]));
+ }
+ else {
+ # Unmatched marker: just skip it.
+ $parsed .= $tag;
+ }
+ }
+ #
+ # Check for: Indented code block or fenced code block marker.
+ #
+ else if ($tag{0} == "\n" || $tag{0} == "~") {
+ if ($tag{1} == "\n" || $tag{1} == " ") {
+ # Indented code block: pass it unchanged, will be handled
+ # later.
+ $parsed .= $tag;
+ }
+ else {
+ # Fenced code block marker: find matching end marker.
+ $tag_re = preg_quote(trim($tag));
+ if (preg_match('{^(?>.*\n)+?'.$tag_re.' *\n}', $text,
+ $matches))
+ {
+ # End marker found: pass text unchanged until marker.
+ $parsed .= $tag . $matches[0];
+ $text = substr($text, strlen($matches[0]));
+ }
+ else {
+ # No end marker: just skip it.
+ $parsed .= $tag;
+ }
+ }
+ }
+ #
+ # Check for: Opening Block level tag or
+ # Opening Context Block tag (like ins and del)
+ # used as a block tag (tag is alone on it's line).
+ #
+ else if (preg_match('{^<(?:'.$this->block_tags_re.')\b}', $tag) ||
+ ( preg_match('{^<(?:'.$this->context_block_tags_re.')\b}', $tag) &&
+ preg_match($newline_before_re, $parsed) &&
+ preg_match($newline_after_re, $text) )
+ )
+ {
+ # Need to parse tag and following text using the HTML parser.
+ list($block_text, $text) =
+ $this->_hashHTMLBlocks_inHTML($tag . $text, "hashBlock", true);
+
+ # Make sure it stays outside of any paragraph by adding newlines.
+ $parsed .= "\n\n$block_text\n\n";
+ }
+ #
+ # Check for: Clean tag (like script, math)
+ # HTML Comments, processing instructions.
+ #
+ else if (preg_match('{^<(?:'.$this->clean_tags_re.')\b}', $tag) ||
+ $tag{1} == '!' || $tag{1} == '?')
+ {
+ # Need to parse tag and following text using the HTML parser.
+ # (don't check for markdown attribute)
+ list($block_text, $text) =
+ $this->_hashHTMLBlocks_inHTML($tag . $text, "hashClean", false);
+
+ $parsed .= $block_text;
+ }
+ #
+ # Check for: Tag with same name as enclosing tag.
+ #
+ else if ($enclosing_tag_re !== '' &&
+ # Same name as enclosing tag.
+ preg_match('{^</?(?:'.$enclosing_tag_re.')\b}', $tag))
+ {
+ #
+ # Increase/decrease nested tag count.
+ #
+ if ($tag{1} == '/') $depth--;
+ else if ($tag{strlen($tag)-2} != '/') $depth++;
+
+ if ($depth < 0) {
+ #
+ # Going out of parent element. Clean up and break so we
+ # return to the calling function.
+ #
+ $text = $tag . $text;
+ break;
+ }
+
+ $parsed .= $tag;
+ }
+ else {
+ $parsed .= $tag;
+ }
+ } while ($depth >= 0);
+
+ return array($parsed, $text);
+ }
+ function _hashHTMLBlocks_inHTML($text, $hash_method, $md_attr) {
+ #
+ # Parse HTML, calling _HashHTMLBlocks_InMarkdown for block tags.
+ #
+ # * Calls $hash_method to convert any blocks.
+ # * Stops when the first opening tag closes.
+ # * $md_attr indicate if the use of the `markdown="1"` attribute is allowed.
+ # (it is not inside clean tags)
+ #
+ # Returns an array of that form: ( processed text , remaining text )
+ #
+ if ($text === '') return array('', '');
+
+ # Regex to match `markdown` attribute inside of a tag.
+ $markdown_attr_re = '
+ {
+ \s* # Eat whitespace before the `markdown` attribute
+ markdown
+ \s*=\s*
+ (?>
+ (["\']) # $1: quote delimiter
+ (.*?) # $2: attribute value
+ \1 # matching delimiter
+ |
+ ([^\s>]*) # $3: unquoted attribute value
+ )
+ () # $4: make $3 always defined (avoid warnings)
+ }xs';
+
+ # Regex to match any tag.
+ $tag_re = '{
+ ( # $2: Capture hole tag.
+ </? # Any opening or closing tag.
+ [\w:$]+ # Tag name.
+ (?:
+ (?=[\s"\'/a-zA-Z0-9]) # Allowed characters after tag name.
+ (?>
+ ".*?" | # Double quotes (can contain `>`)
+ \'.*?\' | # Single quotes (can contain `>`)
+ .+? # Anything but quotes and `>`.
+ )*?
+ )?
+ > # End of tag.
+ |
+ <!-- .*? --> # HTML Comment
+ |
+ <\?.*?\?> | <%.*?%> # Processing instruction
+ |
+ <!\[CDATA\[.*?\]\]> # CData Block
+ )
+ }xs';
+
+ $original_text = $text; # Save original text in case of faliure.
+
+ $depth = 0; # Current depth inside the tag tree.
+ $block_text = ""; # Temporary text holder for current text.
+ $parsed = ""; # Parsed text that will be returned.
+
+ #
+ # Get the name of the starting tag.
+ # (This pattern makes $base_tag_name_re safe without quoting.)
+ #
+ if (preg_match('/^<([\w:$]*)\b/', $text, $matches))
+ $base_tag_name_re = $matches[1];
+
+ #
+ # Loop through every tag until we find the corresponding closing tag.
+ #
+ do {
+ #
+ # Split the text using the first $tag_match pattern found.
+ # Text before pattern will be first in the array, text after
+ # pattern will be at the end, and between will be any catches made
+ # by the pattern.
+ #
+ $parts = preg_split($tag_re, $text, 2, PREG_SPLIT_DELIM_CAPTURE);
+
+ if (count($parts) < 3) {
+ #
+ # End of $text reached with unbalenced tag(s).
+ # In that case, we return original text unchanged and pass the
+ # first character as filtered to prevent an infinite loop in the
+ # parent function.
+ #
+ return array($original_text{0}, substr($original_text, 1));
+ }
+
+ $block_text .= $parts[0]; # Text before current tag.
+ $tag = $parts[1]; # Tag to handle.
+ $text = $parts[2]; # Remaining text after current tag.
+
+ #
+ # Check for: Auto-close tag (like <hr/>)
+ # Comments and Processing Instructions.
+ #
+ if (preg_match('{^</?(?:'.$this->auto_close_tags_re.')\b}', $tag) ||
+ $tag{1} == '!' || $tag{1} == '?')
+ {
+ # Just add the tag to the block as if it was text.
+ $block_text .= $tag;
+ }
+ else {
+ #
+ # Increase/decrease nested tag count. Only do so if
+ # the tag's name match base tag's.
+ #
+ if (preg_match('{^</?'.$base_tag_name_re.'\b}', $tag)) {
+ if ($tag{1} == '/') $depth--;
+ else if ($tag{strlen($tag)-2} != '/') $depth++;
+ }
+
+ #
+ # Check for `markdown="1"` attribute and handle it.
+ #
+ if ($md_attr &&
+ preg_match($markdown_attr_re, $tag, $attr_m) &&
+ preg_match('/^1|block|span$/', $attr_m[2] . $attr_m[3]))
+ {
+ # Remove `markdown` attribute from opening tag.
+ $tag = preg_replace($markdown_attr_re, '', $tag);
+
+ # Check if text inside this tag must be parsed in span mode.
+ $this->mode = $attr_m[2] . $attr_m[3];
+ $span_mode = $this->mode == 'span' || $this->mode != 'block' &&
+ preg_match('{^<(?:'.$this->contain_span_tags_re.')\b}', $tag);
+
+ # Calculate indent before tag.
+ if (preg_match('/(?:^|\n)( *?)(?! ).*?$/', $block_text, $matches)) {
+ $strlen = $this->utf8_strlen;
+ $indent = $strlen($matches[1], 'UTF-8');
+ } else {
+ $indent = 0;
+ }
+
+ # End preceding block with this tag.
+ $block_text .= $tag;
+ $parsed .= $this->$hash_method($block_text);
+
+ # Get enclosing tag name for the ParseMarkdown function.
+ # (This pattern makes $tag_name_re safe without quoting.)
+ preg_match('/^<([\w:$]*)\b/', $tag, $matches);
+ $tag_name_re = $matches[1];
+
+ # Parse the content using the HTML-in-Markdown parser.
+ list ($block_text, $text)
+ = $this->_hashHTMLBlocks_inMarkdown($text, $indent,
+ $tag_name_re, $span_mode);
+
+ # Outdent markdown text.
+ if ($indent > 0) {
+ $block_text = preg_replace("/^[ ]{1,$indent}/m", "",
+ $block_text);
+ }
+
+ # Append tag content to parsed text.
+ if (!$span_mode) $parsed .= "\n\n$block_text\n\n";
+ else $parsed .= "$block_text";
+
+ # Start over a new block.
+ $block_text = "";
+ }
+ else $block_text .= $tag;
+ }
+
+ } while ($depth > 0);
+
+ #
+ # Hash last block text that wasn't processed inside the loop.
+ #
+ $parsed .= $this->$hash_method($block_text);
+
+ return array($parsed, $text);
+ }
+
+
+ function hashClean($text) {
+ #
+ # Called whenever a tag must be hashed when a function insert a "clean" tag
+ # in $text, it pass through this function and is automaticaly escaped,
+ # blocking invalid nested overlap.
+ #
+ return $this->hashPart($text, 'C');
+ }
+
+ function _doAnchors_inline_callback($matches) {
+ // $whole_match = $matches[1];
+ $link_text = $this->runSpanGamut($matches[2]);
+ $url = $matches[3] == '' ? $matches[4] : $matches[3];
+ $title =& $matches[7];
+
+ $url = $this->encodeAttribute($url);
+
+ $result = "<a href=\"$url\"";
+ if (isset($title)) {
+ $title = $this->encodeAttribute($title);
+ $result .= " title=\"$title\"";
+ }
+
+ if ($this->el_enable && preg_match('/^https?\:\/\//', $url) && !preg_match('/^https?\:\/\/'.$this->el_local_domain.'/', $url)) {
+ if ($this->el_new_window) {
+ $result .= ' target="_blank"';
+ }
+
+ if ($this->el_css_class) {
+ $result .= ' class="'.$this->el_css_class.'"';
+ }
+ }
+
+ $link_text = $this->runSpanGamut($link_text);
+ $result .= ">$link_text</a>";
+
+ return $this->hashPart($result);
+ }
+
+ function _doAnchors_reference_callback($matches) {
+ $whole_match = $matches[1];
+ $link_text = $matches[2];
+ $link_id =& $matches[3];
+ $result = '';
+
+ if ($link_id == "") {
+ # for shortcut links like [this][] or [this].
+ $link_id = $link_text;
+ }
+
+ # lower-case and turn embedded newlines into spaces
+ $link_id = strtolower($link_id);
+ $link_id = preg_replace('{[ ]?\n}', ' ', $link_id);
+
+ if (isset($this->urls[$link_id])) {
+ $url = $this->urls[$link_id];
+ $url = $this->encodeAttribute($url);
+
+ $result = "<a href=\"$url\"";
+ if ( isset( $this->titles[$link_id] ) ) {
+ $title = $this->titles[$link_id];
+ $title = $this->encodeAttribute($title);
+ $result .= " title=\"$title\"";
+ }
+
+ if ($this->el_enable && preg_match('/^https?\:\/\//', $url) && !preg_match('/^https?\:\/\/'.$this->el_local_domain.'/', $url)) {
+ if ($this->el_new_window) {
+ $result .= ' target="_blank"';
+ }
+
+ if ($this->el_css_class) {
+ $result .= ' class="'.$this->el_css_class.'"';
+ }
+ }
+
+ $link_text = $this->runSpanGamut($link_text);
+ $result .= ">$link_text</a>";
+ $result = $this->hashPart($result);
+ }
+ else {
+ $result = $whole_match;
+ }
+ return $result;
+ }
+
+ function doHeaders($text) {
+ #
+ # Redefined to add id attribute support.
+ #
+ # Setext-style headers:
+ # Header 1 {#header1}
+ # ========
+ #
+ # Header 2 {#header2}
+ # --------
+ #
+ $text = preg_replace_callback(
+ '{
+ (^.+?) # $1: Header text
+ (?:[ ]+\{\#([-_:a-zA-Z0-9]+)\})? # $2: Id attribute
+ [ ]*\n(=+|-+)[ ]*\n+ # $3: Header footer
+ }mx',
+ array(&$this, '_doHeaders_callback_setext'), $text);
+
+ # atx-style headers:
+ # # Header 1 {#header1}
+ # ## Header 2 {#header2}
+ # ## Header 2 with closing hashes ## {#header3}
+ # ...
+ # ###### Header 6 {#header2}
+ #
+ $text = preg_replace_callback('{
+ ^(\#{1,6}) # $1 = string of #\'s
+ [ ]*
+ (.+?) # $2 = Header text
+ [ ]*
+ \#* # optional closing #\'s (not counted)
+ (?:[ ]+\{\#([-_:a-zA-Z0-9]+)\})? # id attribute
+ [ ]*
+ \n+
+ }xm',
+ array(&$this, '_doHeaders_callback_atx'), $text);
+
+ return $text;
+ }
+ function _doHeaders_attr($attr) {
+ if (empty($attr)) return "";
+ return " id=\"$attr\"";
+ }
+ function _doHeaders_callback_setext($matches) {
+ if ($matches[3] == '-' && preg_match('{^- }', $matches[1]))
+ return $matches[0];
+ $level = $matches[3]{0} == '=' ? 1 : 2;
+ $attr = $this->_doHeaders_attr($id =& $matches[2]);
+ $body = $this->runSpanGamut($matches[1]);
+ $body = $this->_doHeaders_selflink($id, $body);
+
+ $block = "<h$level$attr>$body</h$level>";
+ return "\n" . $this->hashBlock($block) . "\n\n";
+ }
+ function _doHeaders_callback_atx($matches) {
+ $level = strlen($matches[1]);
+ $attr = $this->_doHeaders_attr($id =& $matches[3]);
+ $body = $this->runSpanGamut($matches[2]);
+ $body = $this->_doHeaders_selflink($id, $body);
+
+ $block = "<h$level$attr>$body</h$level>";
+ return "\n" . $this->hashBlock($block) . "\n\n";
+ }
+ function _doHeaders_selflink($id, $body) {
+ if (!empty($id)) {
+ $link = '<a href="#'.$id.'"';
+
+ if ($this->ha_class) {
+ $link .= ' class="'.$this->ha_class.'"';
+ }
+
+ $link .= '>'.$this->ha_text.'</a>';
+
+ $body .= $link;
+ }
+
+ return $body;
+ }
+
+
+ function doTables($text) {
+ #
+ # Form HTML tables.
+ #
+ $less_than_tab = $this->tab_width - 1;
+ #
+ # Find tables with leading pipe.
+ #
+ # | Header 1 | Header 2
+ # | -------- | --------
+ # | Cell 1 | Cell 2
+ # | Cell 3 | Cell 4
+ #
+ $text = preg_replace_callback('
+ {
+ ^ # Start of a line
+ [ ]{0,'.$less_than_tab.'} # Allowed whitespace.
+ [|] # Optional leading pipe (present)
+ (.+) \n # $1: Header row (at least one pipe)
+
+ [ ]{0,'.$less_than_tab.'} # Allowed whitespace.
+ [|] ([ ]*[-:]+[-| :]*) \n # $2: Header underline
+
+ ( # $3: Cells
+ (?>
+ [ ]* # Allowed whitespace.
+ [|] .* \n # Row content.
+ )*
+ )
+ (?=\n|\Z) # Stop at final double newline.
+ }xm',
+ array(&$this, '_doTable_leadingPipe_callback'), $text);
+
+ #
+ # Find tables without leading pipe.
+ #
+ # Header 1 | Header 2
+ # -------- | --------
+ # Cell 1 | Cell 2
+ # Cell 3 | Cell 4
+ #
+ $text = preg_replace_callback('
+ {
+ ^ # Start of a line
+ [ ]{0,'.$less_than_tab.'} # Allowed whitespace.
+ (\S.*[|].*) \n # $1: Header row (at least one pipe)
+
+ [ ]{0,'.$less_than_tab.'} # Allowed whitespace.
+ ([-:]+[ ]*[|][-| :]*) \n # $2: Header underline
+
+ ( # $3: Cells
+ (?>
+ .* [|] .* \n # Row content
+ )*
+ )
+ (?=\n|\Z) # Stop at final double newline.
+ }xm',
+ array(&$this, '_DoTable_callback'), $text);
+
+ return $text;
+ }
+ function _doTable_leadingPipe_callback($matches) {
+ $head = $matches[1];
+ $underline = $matches[2];
+ $content = $matches[3];
+
+ # Remove leading pipe for each row.
+ $content = preg_replace('/^ *[|]/m', '', $content);
+
+ return $this->_doTable_callback(array($matches[0], $head, $underline, $content));
+ }
+ function _doTable_callback($matches) {
+ $head = $matches[1];
+ $underline = $matches[2];
+ $content = $matches[3];
+
+ # Remove any tailing pipes for each line.
+ $head = preg_replace('/[|] *$/m', '', $head);
+ $underline = preg_replace('/[|] *$/m', '', $underline);
+ $content = preg_replace('/[|] *$/m', '', $content);
+
+ # Reading alignement from header underline.
+ $separators = preg_split('/ *[|] */', $underline);
+ foreach ($separators as $n => $s) {
+ if (preg_match('/^ *-+: *$/', $s)) $attr[$n] = ' align="right"';
+ else if (preg_match('/^ *:-+: *$/', $s))$attr[$n] = ' align="center"';
+ else if (preg_match('/^ *:-+ *$/', $s)) $attr[$n] = ' align="left"';
+ else $attr[$n] = '';
+ }
+
+ # Parsing span elements, including code spans, character escapes,
+ # and inline HTML tags, so that pipes inside those gets ignored.
+ $head = $this->parseSpan($head);
+ $headers = preg_split('/ *[|] */', $head);
+ $col_count = count($headers);
+
+ # Write column headers.
+ $text = "<table>\n";
+ $text .= "<thead>\n";
+ $text .= "<tr>\n";
+ foreach ($headers as $n => $header)
+ $text .= " <th$attr[$n]>".$this->runSpanGamut(trim($header))."</th>\n";
+ $text .= "</tr>\n";
+ $text .= "</thead>\n";
+
+ # Split content by row.
+ $rows = explode("\n", trim($content, "\n"));
+
+ $text .= "<tbody>\n";
+ foreach ($rows as $row) {
+ # Parsing span elements, including code spans, character escapes,
+ # and inline HTML tags, so that pipes inside those gets ignored.
+ $row = $this->parseSpan($row);
+
+ # Split row by cell.
+ $row_cells = preg_split('/ *[|] */', $row, $col_count);
+ $row_cells = array_pad($row_cells, $col_count, '');
+
+ $text .= "<tr>\n";
+ foreach ($row_cells as $n => $cell)
+ $text .= " <td$attr[$n]>".$this->runSpanGamut(trim($cell))."</td>\n";
+ $text .= "</tr>\n";
+ }
+ $text .= "</tbody>\n";
+ $text .= "</table>";
+
+ return $this->hashBlock($text) . "\n";
+ }
+
+
+ function doDefLists($text) {
+ #
+ # Form HTML definition lists.
+ #
+ $less_than_tab = $this->tab_width - 1;
+
+ # Re-usable pattern to match any entire dl list:
+ $whole_list_re = '(?>
+ ( # $1 = whole list
+ ( # $2
+ [ ]{0,'.$less_than_tab.'}
+ ((?>.*\S.*\n)+) # $3 = defined term
+ \n?
+ [ ]{0,'.$less_than_tab.'}:[ ]+ # colon starting definition
+ )
+ (?s:.+?)
+ ( # $4
+ \z
+ |
+ \n{2,}
+ (?=\S)
+ (?! # Negative lookahead for another term
+ [ ]{0,'.$less_than_tab.'}
+ (?: \S.*\n )+? # defined term
+ \n?
+ [ ]{0,'.$less_than_tab.'}:[ ]+ # colon starting definition
+ )
+ (?! # Negative lookahead for another definition
+ [ ]{0,'.$less_than_tab.'}:[ ]+ # colon starting definition
+ )
+ )
+ )
+ )'; // mx
+
+ $text = preg_replace_callback('{
+ (?>\A\n?|(?<=\n\n))
+ '.$whole_list_re.'
+ }mx',
+ array(&$this, '_doDefLists_callback'), $text);
+
+ return $text;
+ }
+ function _doDefLists_callback($matches) {
+ # Re-usable patterns to match list item bullets and number markers:
+ $list = $matches[1];
+
+ # Turn double returns into triple returns, so that we can make a
+ # paragraph for the last item in a list, if necessary:
+ $result = trim($this->processDefListItems($list));
+ $result = "<dl>\n" . $result . "\n</dl>";
+ return $this->hashBlock($result) . "\n\n";
+ }
+
+
+ function processDefListItems($list_str) {
+ #
+ # Process the contents of a single definition list, splitting it
+ # into individual term and definition list items.
+ #
+ $less_than_tab = $this->tab_width - 1;
+
+ # trim trailing blank lines:
+ $list_str = preg_replace("/\n{2,}\\z/", "\n", $list_str);
+
+ # Process definition terms.
+ $list_str = preg_replace_callback('{
+ (?>\A\n?|\n\n+) # leading line
+ ( # definition terms = $1
+ [ ]{0,'.$less_than_tab.'} # leading whitespace
+ (?![:][ ]|[ ]) # negative lookahead for a definition
+ # mark (colon) or more whitespace.
+ (?> \S.* \n)+? # actual term (not whitespace).
+ )
+ (?=\n?[ ]{0,3}:[ ]) # lookahead for following line feed
+ # with a definition mark.
+ }xm',
+ array(&$this, '_processDefListItems_callback_dt'), $list_str);
+
+ # Process actual definitions.
+ $list_str = preg_replace_callback('{
+ \n(\n+)? # leading line = $1
+ ( # marker space = $2
+ [ ]{0,'.$less_than_tab.'} # whitespace before colon
+ [:][ ]+ # definition mark (colon)
+ )
+ ((?s:.+?)) # definition text = $3
+ (?= \n+ # stop at next definition mark,
+ (?: # next term or end of text
+ [ ]{0,'.$less_than_tab.'} [:][ ] |
+ <dt | \z
+ )
+ )
+ }xm',
+ array(&$this, '_processDefListItems_callback_dd'), $list_str);
+
+ return $list_str;
+ }
+ function _processDefListItems_callback_dt($matches) {
+ $anchor_regexp = '/\{\#([-_:a-zA-Z0-9]+)\}/';
+ $terms = explode("\n", trim($matches[1]));
+ $text = '';
+ $id = array();
+
+ foreach ($terms as $term) {
+ $id = '';
+ if (preg_match($anchor_regexp, $term, $id) > 0) {
+ $term = preg_replace($anchor_regexp, '', $term);
+ $id = ' id="'.trim($id[1]).'"';
+ }
+
+ if (count($id) === 0) {
+ $id = '';
+ }
+
+ $term = $this->runSpanGamut(trim($term));
+ $text .= "\n<dt$id>" . $term . "</dt>";
+ }
+ return $text . "\n";
+ }
+ function _processDefListItems_callback_dd($matches) {
+ $leading_line = $matches[1];
+ $marker_space = $matches[2];
+ $def = $matches[3];
+
+ if ($leading_line || preg_match('/\n{2,}/', $def)) {
+ # Replace marker with the appropriate whitespace indentation
+ $def = str_repeat(' ', strlen($marker_space)) . $def;
+ $def = $this->runBlockGamut($this->outdent($def . "\n\n"));
+ $def = "\n". $def ."\n";
+ }
+ else {
+ $def = rtrim($def);
+ $def = $this->runSpanGamut($this->outdent($def));
+ }
+
+ return "\n<dd>" . $def . "</dd>\n";
+ }
+
+
+ function doFencedCodeBlocks($text) {
+ #
+ # Adding the fenced code block syntax to regular Markdown:
+ #
+ # ~~~
+ # Code block
+ # ~~~
+ #
+ $less_than_tab = $this->tab_width;
+
+ $text = preg_replace_callback('{
+ (?:\n|\A)
+ # 1: Opening marker
+ (
+ ~{3,} # Marker: three tilde or more.
+ )
+ [ ]* \n # Whitespace and newline following marker.
+
+ # 2: Content
+ (
+ (?>
+ (?!\1 [ ]* \n) # Not a closing marker.
+ .*\n+
+ )+
+ )
+
+ # Closing marker.
+ \1 [ ]* \n
+ }xm',
+ array(&$this, '_doFencedCodeBlocks_callback'), $text);
+
+ return $text;
+ }
+ function _doFencedCodeBlocks_callback($matches) {
+ $codeblock = $matches[2];
+ $codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES);
+ $codeblock = preg_replace_callback('/^\n+/',
+ array(&$this, '_doFencedCodeBlocks_newlines'), $codeblock);
+ $codeblock = "<pre><code>$codeblock</code></pre>";
+ return "\n\n".$this->hashBlock($codeblock)."\n\n";
+ }
+ function _doFencedCodeBlocks_newlines($matches) {
+ return str_repeat("<br$this->empty_element_suffix",
+ strlen($matches[0]));
+ }
+
+
+ #
+ # Redefining emphasis markers so that emphasis by underscore does not
+ # work in the middle of a word.
+ #
+ var $em_relist = array(
+ '' => '(?:(?<!\*)\*(?!\*)|(?<![a-zA-Z0-9_])_(?!_))(?=\S)(?![.,:;]\s)',
+ '*' => '(?<=\S)(?<!\*)\*(?!\*)',
+ '_' => '(?<=\S)(?<!_)_(?![a-zA-Z0-9_])',
+ );
+ var $strong_relist = array(
+ '' => '(?:(?<!\*)\*\*(?!\*)|(?<![a-zA-Z0-9_])__(?!_))(?=\S)(?![.,:;]\s)',
+ '**' => '(?<=\S)(?<!\*)\*\*(?!\*)',
+ '__' => '(?<=\S)(?<!_)__(?![a-zA-Z0-9_])',
+ );
+ var $em_strong_relist = array(
+ '' => '(?:(?<!\*)\*\*\*(?!\*)|(?<![a-zA-Z0-9_])___(?!_))(?=\S)(?![.,:;]\s)',
+ '***' => '(?<=\S)(?<!\*)\*\*\*(?!\*)',
+ '___' => '(?<=\S)(?<!_)___(?![a-zA-Z0-9_])',
+ );
+
+
+ function formParagraphs($text) {
+ #
+ # Params:
+ # $text - string to process with html <p> tags
+ #
+ # Strip leading and trailing lines:
+ $text = preg_replace('/\A\n+|\n+\z/', '', $text);
+
+ $grafs = preg_split('/\n{2,}/', $text, -1, PREG_SPLIT_NO_EMPTY);
+
+ #
+ # Wrap <p> tags and unhashify HTML blocks
+ #
+ foreach ($grafs as $key => $value) {
+ $value = trim($this->runSpanGamut($value));
+
+ # Check if this should be enclosed in a paragraph.
+ # Clean tag hashes & block tag hashes are left alone.
+ $is_p = !preg_match('/^B\x1A[0-9]+B|^C\x1A[0-9]+C$/', $value);
+
+ if ($is_p) {
+ $value = "<p>$value</p>";
+ }
+ $grafs[$key] = $value;
+ }
+
+ # Join grafs in one text, then unhash HTML tags.
+ $text = implode("\n\n", $grafs);
+
+ # Finish by removing any tag hashes still present in $text.
+ $text = $this->unhash($text);
+
+ return $text;
+ }
+
+
+ ### Footnotes
+
+ function stripFootnotes($text) {
+ #
+ # Strips link definitions from text, stores the URLs and titles in
+ # hash references.
+ #
+ $less_than_tab = $this->tab_width - 1;
+
+ # Link defs are in the form: [^id]: url "optional title"
+ $text = preg_replace_callback('{
+ ^[ ]{0,'.$less_than_tab.'}\[\^(.+?)\][ ]?: # note_id = $1
+ [ ]*
+ \n? # maybe *one* newline
+ ( # text = $2 (no blank lines allowed)
+ (?:
+ .+ # actual text
+ |
+ \n # newlines but
+ (?!\[\^.+?\]:\s)# negative lookahead for footnote marker.
+ (?!\n+[ ]{0,3}\S)# ensure line is not blank and followed
+ # by non-indented content
+ )*
+ )
+ }xm',
+ array(&$this, '_stripFootnotes_callback'),
+ $text);
+ return $text;
+ }
+ function _stripFootnotes_callback($matches) {
+ $note_id = $this->fn_id_prefix . $matches[1];
+ $this->footnotes[$note_id] = $this->outdent($matches[2]);
+ return ''; # String that will replace the block
+ }
+
+
+ function doFootnotes($text) {
+ #
+ # Replace footnote references in $text [^id] with a special text-token
+ # which will be replaced by the actual footnote marker in appendFootnotes.
+ #
+ if (!$this->in_anchor) {
+ $text = preg_replace('{\[\^(.+?)\]}', "F\x1Afn:\\1\x1A:", $text);
+ }
+ return $text;
+ }
+
+
+ function appendFootnotes($text) {
+ #
+ # Append footnote list to text.
+ #
+ $text = preg_replace_callback('{F\x1Afn:(.*?)\x1A:}',
+ array(&$this, '_appendFootnotes_callback'), $text);
+
+ if (!empty($this->footnotes_ordered)) {
+ $text .= "\n\n";
+ $text .= "<div class=\"footnotes\">\n";
+ $text .= "<hr". MARKDOWN_EMPTY_ELEMENT_SUFFIX ."\n";
+ $text .= "<ol>\n\n";
+
+ $attr = " rev=\"footnote\"";
+ if ($this->fn_backlink_class != "") {
+ $class = $this->fn_backlink_class;
+ $class = $this->encodeAttribute($class);
+ $attr .= " class=\"$class\"";
+ }
+ if ($this->fn_backlink_title != "") {
+ $title = $this->fn_backlink_title;
+ $title = $this->encodeAttribute($title);
+ $attr .= " title=\"$title\"";
+ }
+ $num = 0;
+
+ while (!empty($this->footnotes_ordered)) {
+ $footnote = reset($this->footnotes_ordered);
+ $note_id = key($this->footnotes_ordered);
+ unset($this->footnotes_ordered[$note_id]);
+
+ $footnote .= "\n"; # Need to append newline before parsing.
+ $footnote = $this->runBlockGamut("$footnote\n");
+ $footnote = preg_replace_callback('{F\x1Afn:(.*?)\x1A:}',
+ array(&$this, '_appendFootnotes_callback'), $footnote);
+
+ $attr = str_replace("%%", ++$num, $attr);
+ $note_id = $this->encodeAttribute($note_id);
+
+ # Add backlink to last paragraph; create new paragraph if needed.
+ $backlink = "<a href=\"#fnref:$note_id\"$attr>&#8617;</a>";
+ if (preg_match('{</p>$}', $footnote)) {
+ $footnote = substr($footnote, 0, -4) . "&#160;$backlink</p>";
+ } else {
+ $footnote .= "\n\n<p>$backlink</p>";
+ }
+
+ $text .= "<li id=\"fn:$note_id\">\n";
+ $text .= $footnote . "\n";
+ $text .= "</li>\n\n";
+ }
+
+ $text .= "</ol>\n";
+ $text .= "</div>";
+ }
+ return $text;
+ }
+ function _appendFootnotes_callback($matches) {
+ $node_id = $this->fn_id_prefix . $matches[1];
+
+ # Create footnote marker only if it has a corresponding footnote *and*
+ # the footnote hasn't been used by another marker.
+ if (isset($this->footnotes[$node_id])) {
+ # Transfert footnote content to the ordered list.
+ $this->footnotes_ordered[$node_id] = $this->footnotes[$node_id];
+ unset($this->footnotes[$node_id]);
+
+ $num = $this->footnote_counter++;
+ $attr = " rel=\"footnote\"";
+ if ($this->fn_link_class != "") {
+ $class = $this->fn_link_class;
+ $class = $this->encodeAttribute($class);
+ $attr .= " class=\"$class\"";
+ }
+ if ($this->fn_link_title != "") {
+ $title = $this->fn_link_title;
+ $title = $this->encodeAttribute($title);
+ $attr .= " title=\"$title\"";
+ }
+
+ $attr = str_replace("%%", $num, $attr);
+ $node_id = $this->encodeAttribute($node_id);
+
+ return
+ "<sup id=\"fnref:$node_id\">".
+ "<a href=\"#fn:$node_id\"$attr>$num</a>".
+ "</sup>";
+ }
+
+ return "[^".$matches[1]."]";
+ }
+
+
+ ### Abbreviations ###
+
+ function stripAbbreviations($text) {
+ #
+ # Strips abbreviations from text, stores titles in hash references.
+ #
+ $less_than_tab = $this->tab_width - 1;
+
+ # Link defs are in the form: [id]*: url "optional title"
+ $text = preg_replace_callback('{
+ ^[ ]{0,'.$less_than_tab.'}\*\[(.+?)\][ ]?: # abbr_id = $1
+ (.*) # text = $2 (no blank lines allowed)
+ }xm',
+ array(&$this, '_stripAbbreviations_callback'),
+ $text);
+ return $text;
+ }
+ function _stripAbbreviations_callback($matches) {
+ $abbr_word = $matches[1];
+ $abbr_desc = $matches[2];
+ if ($this->abbr_word_re)
+ $this->abbr_word_re .= '|';
+ $this->abbr_word_re .= preg_quote($abbr_word);
+ $this->abbr_desciptions[$abbr_word] = trim($abbr_desc);
+ return ''; # String that will replace the block
+ }
+
+
+ function doAbbreviations($text) {
+ #
+ # Find defined abbreviations in text and wrap them in <abbr> elements.
+ #
+ if ($this->abbr_word_re) {
+ // cannot use the /x modifier because abbr_word_re may
+ // contain significant spaces:
+ $text = preg_replace_callback('{'.
+ '(?<![\w\x1A])'.
+ '(?:'.$this->abbr_word_re.')'.
+ '(?![\w\x1A])'.
+ '}',
+ array(&$this, '_doAbbreviations_callback'), $text);
+ }
+ return $text;
+ }
+ function _doAbbreviations_callback($matches) {
+ $abbr = $matches[0];
+ if (isset($this->abbr_desciptions[$abbr])) {
+ $desc = $this->abbr_desciptions[$abbr];
+ if (empty($desc)) {
+ return $this->hashPart("<abbr>$abbr</abbr>");
+ } else {
+ $desc = $this->encodeAttribute($desc);
+ return $this->hashPart("<abbr title=\"$desc\">$abbr</abbr>");
+ }
+ } else {
+ return $matches[0];
+ }
+ }
+
+}
+
+
+/*
+
+PHP Markdown Extra
+==================
+
+Description
+-----------
+
+This is a PHP port of the original Markdown formatter written in Perl
+by John Gruber. This special "Extra" version of PHP Markdown features
+further enhancements to the syntax for making additional constructs
+such as tables and definition list.
+
+Markdown is a text-to-HTML filter; it translates an easy-to-read /
+easy-to-write structured text format into HTML. Markdown's text format
+is most similar to that of plain text email, and supports features such
+as headers, *emphasis*, code blocks, blockquotes, and links.
+
+Markdown's syntax is designed not as a generic markup language, but
+specifically to serve as a front-end to (X)HTML. You can use span-level
+HTML tags anywhere in a Markdown document, and you can use block level
+HTML tags (like <div> and <table> as well).
+
+For more information about Markdown's syntax, see:
+
+<http://daringfireball.net/projects/markdown/>
+
+
+Bugs
+----
+
+To file bug reports please send email to:
+
+<michel.fortin@michelf.com>
+
+Please include with your report: (1) the example input; (2) the output you
+expected; (3) the output Markdown actually produced.
+
+
+Version History
+---------------
+
+See the readme file for detailed release notes for this version.
+
+
+Copyright and License
+---------------------
+
+PHP Markdown & Extra
+Copyright (c) 2004-2008 Michel Fortin
+<http://www.michelf.com/>
+All rights reserved.
+
+Based on Markdown
+Copyright (c) 2003-2006 John Gruber
+<http://daringfireball.net/>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+* Neither the name "Markdown" nor the names of its contributors may
+ be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+This software is provided by the copyright holders and contributors "as
+is" and any express or implied warranties, including, but not limited
+to, the implied warranties of merchantability and fitness for a
+particular purpose are disclaimed. In no event shall the copyright owner
+or contributors be liable for any direct, indirect, incidental, special,
+exemplary, or consequential damages (including, but not limited to,
+procurement of substitute goods or services; loss of use, data, or
+profits; or business interruption) however caused and on any theory of
+liability, whether in contract, strict liability, or tort (including
+negligence or otherwise) arising in any way out of the use of this
+software, even if advised of the possibility of such damage.
+
+*/
+?>
diff --git a/mod/api.php b/mod/api.php
new file mode 100644
index 000000000..fa5e43de9
--- /dev/null
+++ b/mod/api.php
@@ -0,0 +1,11 @@
+<?php
+
+require_once('include/api.php');
+
+function api_content(&$a) {
+ echo api_call($a);
+ killme();
+}
+
+
+
diff --git a/mod/apps.php b/mod/apps.php
index 1d08d2e7f..58752de32 100644
--- a/mod/apps.php
+++ b/mod/apps.php
@@ -5,10 +5,11 @@ function apps_content(&$a) {
$o .= '<h3>' . t('Applications') . '</h3>';
+ $o .= '<div class="app-title"><a href="notes">' . t('Private Notes') . '</a></div>';
+
if($a->apps)
$o .= $a->apps;
-
return $o;
} \ No newline at end of file
diff --git a/mod/contacts.php b/mod/contacts.php
index c2d28dc1f..0ad0d217f 100644
--- a/mod/contacts.php
+++ b/mod/contacts.php
@@ -9,15 +9,20 @@ function contacts_init(&$a) {
$a->page['aside'] .= group_side();
if($a->config['register_policy'] != REGISTER_CLOSED)
- $a->page['aside'] .= '<div class="side-invite-link-wrapper" id="side-invite-link-wrapper" ><a href="invite" class="side-invite-link" id="side-invite-link">' . t("Invite Friends") . '</a></div>';
+ $a->page['aside'] .= '<div class="side-link" id="side-invite-link" ><a href="invite" >' . t("Invite Friends") . '</a></div>';
- $tpl = load_view_file('view/follow.tpl');
+ if(strlen(get_config('system','directory_submit_url')))
+ $a->page['aside'] .= '<div class="side-link" id="side-match-link"><a href="match" >' . t('Find People With Shared Interests') . '</a></div>';
+
+ $tpl = get_markup_template('follow.tpl');
$a->page['aside'] .= replace_macros($tpl,array(
'$label' => t('Connect/Follow'),
'$hint' => t('Example: bob@example.com, http://example.com/barbara'),
'$follow' => t('Follow')
));
+
+
}
function contacts_post(&$a) {
@@ -137,7 +142,8 @@ function contacts_content(&$a) {
intval(local_user())
);
if($r) {
- notice( t('Contact has been ') . (($blocked) ? t('blocked') : t('unblocked')) . EOL );
+ //notice( t('Contact has been ') . (($blocked) ? t('blocked') : t('unblocked')) . EOL );
+ notice( (($blocked) ? t('Contact has been blocked') : t('Contact has been unblocked')) . EOL );
}
goaway($a->get_baseurl() . '/contacts/' . $contact_id);
return; // NOTREACHED
@@ -151,7 +157,7 @@ function contacts_content(&$a) {
intval(local_user())
);
if($r) {
- notice( t('Contact has been ') . (($readonly) ? t('ignored') : t('unignored')) . EOL );
+ notice( (($readonly) ? t('Contact has been ignored') : t('Contact has been unignored')) . EOL );
}
goaway($a->get_baseurl() . '/contacts/' . $contact_id);
return; // NOTREACHED
@@ -162,7 +168,7 @@ function contacts_content(&$a) {
// create an unfollow slap
if($orig_record[0]['network'] === 'stat') {
- $tpl = load_view_file('view/follow_slap.tpl');
+ $tpl = get_markup_template('follow_slap.tpl');
$slap = replace_macros($tpl, array(
'$name' => $a->user['username'],
'$profile_page' => $a->get_baseurl() . '/profile/' . $a->user['nickname'],
@@ -174,8 +180,8 @@ function contacts_content(&$a) {
'$type' => 'text',
'$content' => t('stopped following'),
'$nick' => $a->user['nickname'],
- '$verb' => ACTIVITY_UNFOLLOW,
- '$ostat_follow' => '<as:verb>http://ostatus.org/schema/1.0/unfollow</as:verb>' . "\r\n"
+ '$verb' => 'http://ostatus.org/schema/1.0/unfollow', // ACTIVITY_UNFOLLOW,
+ '$ostat_follow' => '' // '<as:verb>http://ostatus.org/schema/1.0/unfollow</as:verb>' . "\r\n"
));
if((x($orig_record[0],'notify')) && (strlen($orig_record[0]['notify']))) {
@@ -209,12 +215,12 @@ function contacts_content(&$a) {
return;
}
- $tpl = load_view_file('view/contact_head.tpl');
+ $tpl = get_markup_template('contact_head.tpl');
$a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl()));
require_once('include/contact_selectors.php');
- $tpl = load_view_file("view/contact_edit.tpl");
+ $tpl = get_markup_template("contact_edit.tpl");
switch($r[0]['rel']) {
case REL_BUD:
@@ -243,6 +249,9 @@ function contacts_content(&$a) {
$sparkle = '';
}
+ $insecure = '<div id="profile-edit-insecure"><p><img src="images/unlock_icon.gif" alt="' . t('Privacy Unavailable') . '" />&nbsp;'
+ . t('Private communications are not available for this contact.') . '</p></div>';
+
$last_update = (($r[0]['last-update'] == '0000-00-00 00:00:00')
? t('Never')
: datetime_convert('UTC',date_default_timezone_get(),$r[0]['last-update'],'D, j M Y, g:i A'));
@@ -252,9 +261,20 @@ function contacts_content(&$a) {
$o .= replace_macros($tpl,array(
'$header' => t('Contact Editor'),
+ '$submit' => t('Submit'),
+ '$lbl_vis1' => t('Profile Visibility'),
+ '$lbl_vis2' => sprintf( t('Please choose the profile you would like to display to %s when viewing your profile securely.'), $r[0]['name']),
+ '$lbl_info1' => t('Contact Information / Notes'),
+ '$lbl_rep1' => t('Online Reputation'),
+ '$lbl_rep2' => t('Occasionally your friends may wish to inquire about this person\'s online legitimacy.'),
+ '$lbl_rep3' => t('You may help them choose whether or not to interact with this person by providing a <em>reputation</em> to guide them.'),
+ '$lbl_rep4' => t('Please take a moment to elaborate on this selection if you feel it could be helpful to others.'),
'$visit' => t('Visit $name\'s profile'),
'$blockunblock' => t('Block/Unblock contact'),
'$ignorecont' => t('Ignore contact'),
+ '$altcrepair' => t('Repair contact URL settings'),
+ '$lblcrepair' => t("Repair contact URL settings \x28WARNING: Advanced\x29"),
+ '$lblrecent' => t('View conversations'),
'$delete' => t('Delete contact'),
'$poll_interval' => contact_poll_interval($r[0]['priority']),
'$lastupdtext' => t('Last updated: '),
@@ -265,7 +285,7 @@ function contacts_content(&$a) {
'$contact_id' => $r[0]['id'],
'$block_text' => (($r[0]['blocked']) ? t('Unblock this contact') : t('Block this contact') ),
'$ignore_text' => (($r[0]['readonly']) ? t('Unignore this contact') : t('Ignore this contact') ),
- '$insecure' => (($r[0]['network'] === 'stat') ? load_view_file('view/insecure_net.tpl') : ''),
+ '$insecure' => (($r[0]['network'] !== NETWORK_DFRN && $r[0]['network'] !== NETWORK_MAIL && $r[0]['network'] !== NETWORK_FACEBOOK) ? $insecure : ''),
'$info' => $r[0]['info'],
'$blocked' => (($r[0]['blocked']) ? '<div id="block-message">' . t('Currently blocked') . '</div>' : ''),
'$ignored' => (($r[0]['readonly']) ? '<div id="ignore-message">' . t('Currently ignored') . '</div>' : ''),
@@ -297,7 +317,7 @@ function contacts_content(&$a) {
$search = ((x($_GET,'search')) ? notags(trim($_GET['search'])) : '');
- $tpl = load_view_file("view/contacts-top.tpl");
+ $tpl = get_markup_template("contacts-top.tpl");
$o .= replace_macros($tpl,array(
'$header' => t('Contacts'),
'$hide_url' => ((strlen($sql_extra)) ? 'contacts/all' : 'contacts' ),
@@ -331,7 +351,7 @@ function contacts_content(&$a) {
if(count($r)) {
- $tpl = load_view_file("view/contact_template.tpl");
+ $tpl = get_markup_template("contact_template.tpl");
foreach($r as $rr) {
if($rr['self'])
@@ -364,13 +384,14 @@ function contacts_content(&$a) {
$o .= replace_macros($tpl, array(
- '$img_hover' => t('Visit ') . $rr['name'] . t('\'s profile'),
+ '$img_hover' => t('Visit $username\'s profile'),
'$edit_hover' => t('Edit contact'),
'$id' => $rr['id'],
'$alt_text' => $alt_text,
'$dir_icon' => $dir_icon,
'$thumb' => $rr['thumb'],
'$name' => substr($rr['name'],0,20),
+ '$username' => $rr['name'],
'$sparkle' => $sparkle,
'$url' => $url
));
diff --git a/mod/crepair.php b/mod/crepair.php
new file mode 100644
index 000000000..01b88d37a
--- /dev/null
+++ b/mod/crepair.php
@@ -0,0 +1,105 @@
+<?php
+
+function crepair_post(&$a) {
+ if(! local_user())
+ return;
+
+ $cid = (($a->argc > 1) ? intval($a->argv[1]) : 0);
+
+ if($cid) {
+ $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval($cid),
+ intval(local_user())
+ );
+ }
+
+ if(! count($r))
+ return;
+
+ $contact = $r[0];
+
+ $nick = ((x($_POST,'nick')) ? $_POST['nick'] : null);
+ $url = ((x($_POST,'url')) ? $_POST['url'] : null);
+ $request = ((x($_POST,'request')) ? $_POST['request'] : null);
+ $confirm = ((x($_POST,'confirm')) ? $_POST['confirm'] : null);
+ $notify = ((x($_POST,'notify')) ? $_POST['notify'] : null);
+ $poll = ((x($_POST,'poll')) ? $_POST['poll'] : null);
+
+
+ $r = q("UPDATE `contact` SET `nick` = '%s', `url` = '%s', `request` = '%s', `confirm` = '%s', `notify` = '%s', `poll` = '%s'
+ WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ dbesc($nick),
+ dbesc($url),
+ dbesc($request),
+ dbesc($confirm),
+ dbesc($notify),
+ dbesc($poll),
+ intval($contact['id']),
+ local_user()
+ );
+
+ if($r)
+ notice( t('Contact settings applied.') . EOL);
+ else
+ notice( t('Contact update failed.') . EOL);
+
+ return;
+}
+
+
+
+function crepair_content(&$a) {
+
+ if(! local_user()) {
+ notice( t('Permission denied.') . EOL);
+ return;
+ }
+
+ $cid = (($a->argc > 1) ? intval($a->argv[1]) : 0);
+
+ if($cid) {
+ $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval($cid),
+ intval(local_user())
+ );
+ }
+
+ if(! count($r)) {
+ notice( t('Contact not found.') . EOL);
+ return;
+ }
+
+ $contact = $r[0];
+
+ $msg1 = t('Repair Contact Settings');
+
+ $msg2 = t('<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact will stop working.');
+ $msg3 = t('Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.');
+
+ $o .= '<h2>' . $msg1 . '</h2>';
+
+ $o .= '<div class="error-message">' . $msg2 . EOL . EOL. $msg3 . '</div>';
+
+ $tpl = get_markup_template('crepair.tpl');
+ $o .= replace_macros($tpl, array(
+ '$label_name' => t('Name'),
+ '$label_nick' => t('Account Nickname'),
+ '$label_url' => t('Account URL'),
+ '$label_request' => t('Friend Request URL'),
+ '$label_confirm' => t('Friend Confirm URL'),
+ '$label_notify' => t('Notification Endpoint URL'),
+ '$label_poll' => t('Poll/Feed URL'),
+ '$contact_name' => $contact['name'],
+ '$contact_nick' => $contact['nick'],
+ '$contact_id' => $contact['id'],
+ '$contact_url' => $contact['url'],
+ '$request' => $contact['request'],
+ '$confirm' => $contact['confirm'],
+ '$notify' => $contact['notify'],
+ '$poll' => $contact['poll'],
+ '$lbl_submit' => t('Submit')
+ ));
+
+ return $o;
+
+} \ No newline at end of file
diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php
index 1b42c13b8..4e2a70e04 100644
--- a/mod/dfrn_confirm.php
+++ b/mod/dfrn_confirm.php
@@ -240,7 +240,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
notice( t('Unexpected response from remote site: ') . EOL . $leading_junk . EOL );
}
- $xml = simplexml_load_string($res);
+ $xml = parse_xml_string($res);
$status = (int) $xml->status;
$message = unxmlify($xml->message); // human readable text of what may have gone wrong.
switch($status) {
@@ -423,9 +423,11 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
$arr['author-avatar'] = $arr['owner-avatar'] = $self[0]['thumb'];
$arr['verb'] = ACTIVITY_FRIEND;
$arr['object-type'] = ACTIVITY_OBJ_PERSON;
- $arr['body'] = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url] ' . t('is now friends with')
- . ' [url=' . $contact['url'] . ']' . $contact['name'] . '[/url]' . "\n\n\n"
- . ' [url=' . $contact['url'] . ']' . '[img]' . $contact['thumb'] . '[/img][/url]';
+
+ $A = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url]';
+ $B = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]';
+ $BPhoto = '[url=' . $contact['url'] . ']' . '[img]' . $contact['thumb'] . '[/img][/url]';
+ $arr['body'] = sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$Bphoto;
$arr['object'] = '<object><type>' . ACTIVITY_OBJ_PERSON . '</type><title>' . $contact['name'] . '</title>'
. '<id>' . $contact['url'] . '/' . $contact['name'] . '</id>';
@@ -434,6 +436,11 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
$arr['object'] .= '</link></object>' . "\n";
$arr['last-child'] = 1;
+ $arr['allow_cid'] = $user[0]['allow_cid'];
+ $arr['allow_gid'] = $user[0]['allow_gid'];
+ $arr['deny_cid'] = $user[0]['deny_cid'];
+ $arr['deny_gid'] = $user[0]['deny_gid'];
+
$i = item_store($arr);
if($i)
proc_run('php',"include/notifier.php","activity","$i");
@@ -491,7 +498,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
dbesc($node));
if(! count($r)) {
- $message = t('No user record found for ') . '\'' . $node . '\'';
+ $message = sprintf(t('No user record found for \'%s\' '), $node);
xml_status(3,$message); // failure
// NOTREACHED
}
@@ -632,8 +639,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
if((count($r)) && ($r[0]['notify-flags'] & NOTIFY_CONFIRM)) {
$tpl = (($new_relation == REL_BUD)
- ? load_view_file('view/friend_complete_eml.tpl')
- : load_view_file('view/intro_complete_eml.tpl'));
+ ? get_intltext_template('friend_complete_eml.tpl')
+ : get_intltext_template('intro_complete_eml.tpl'));
$email_tpl = replace_macros($tpl, array(
'$sitename' => $a->config['sitename'],
@@ -645,8 +652,12 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
'$uid' => $newuid )
);
- $res = mail($r[0]['email'], t("Connection accepted at ") . $a->config['sitename'],
- $email_tpl, 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] );
+ $res = mail($r[0]['email'], sprintf( t("Connection accepted at %s") , $a->config['sitename']),
+ $email_tpl,
+ 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
+ . 'Content-type: text/plain; charset=UTF-8' . "\n"
+ . 'Content-transfer-encoding: 8bit' );
+
if(!$res) {
// pointless throwing an error here and confusing the person at the other end of the wire.
}
diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php
index 3ceb4b3fc..6709ed275 100644
--- a/mod/dfrn_notify.php
+++ b/mod/dfrn_notify.php
@@ -10,6 +10,12 @@ function dfrn_notify_post(&$a) {
$data = ((x($_POST,'data')) ? $_POST['data'] : '');
$key = ((x($_POST,'key')) ? $_POST['key'] : '');
$dissolve = ((x($_POST,'dissolve')) ? intval($_POST['dissolve']) : 0);
+ $perm = ((x($_POST,'perm')) ? notags(trim($_POST['perm'])) : 'r');
+
+ $writable = (-1);
+ if($dfrn_version >= 2.21) {
+ $writable = (($perm === 'rw') ? 1 : 0);
+ }
$direction = (-1);
if(strpos($dfrn_id,':') == 1) {
@@ -74,6 +80,14 @@ function dfrn_notify_post(&$a) {
$importer = $r[0];
+ if(($writable != (-1)) && ($writable != $importer['writable'])) {
+ q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d LIMIT 1",
+ intval($writable),
+ intval($importer['id'])
+ );
+ $importer['writable'] = $writable;
+ }
+
logger('dfrn_notify: received notify from ' . $importer['name'] . ' for ' . $importer['username']);
logger('dfrn_notify: data: ' . $data, LOGGER_DATA);
@@ -118,8 +132,6 @@ function dfrn_notify_post(&$a) {
}
-
-
if($importer['readonly']) {
// We aren't receiving stuff from this person. But we will quietly ignore them
// rather than a blatant "go away" message.
@@ -198,7 +210,7 @@ function dfrn_notify_post(&$a) {
= html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r","\\n\\n" ,"\\n"), "<br />\n",$msg['body']))));
// load the template for private message notifications
- $tpl = load_view_file('view/mail_received_html_body_eml.tpl');
+ $tpl = get_intltext_template('mail_received_html_body_eml.tpl');
$email_html_body_tpl = replace_macros($tpl,array(
'$siteName' => $a->config['sitename'], // name of this site
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
@@ -213,7 +225,7 @@ function dfrn_notify_post(&$a) {
));
// load the template for private message notifications
- $tpl = load_view_file('view/mail_received_text_body_eml.tpl');
+ $tpl = get_intltext_template('mail_received_text_body_eml.tpl');
$email_text_body_tpl = replace_macros($tpl,array(
'$siteName' => $a->config['sitename'], // name of this site
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
@@ -262,10 +274,13 @@ function dfrn_notify_post(&$a) {
$when = datetime_convert('UTC','UTC','now','Y-m-d H:i:s');
}
if($deleted) {
- $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
+
+ $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d AND `contact-id` = %d LIMIT 1",
dbesc($uri),
- intval($importer['importer_uid'])
+ intval($importer['importer_uid']),
+ intval($importer['id'])
);
+
if(count($r)) {
$item = $r[0];
@@ -374,21 +389,7 @@ function dfrn_notify_post(&$a) {
if((! $is_like) && ($importer['notify-flags'] & NOTIFY_COMMENT) && (! $importer['self'])) {
require_once('bbcode.php');
$from = stripslashes($datarray['author-name']);
- /*
- $tpl = load_view_file('view/cmnt_received_eml.tpl');
- $email_tpl = replace_macros($tpl, array(
- '$sitename' => $a->config['sitename'],
- '$siteurl' => $a->get_baseurl(),
- '$username' => $importer['username'],
- '$email' => $importer['email'],
- '$display' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id,
- '$from' => $from,
- '$body' => html_entity_decode(strip_tags(bbcode(stripslashes($datarray['body']))), ENT_QUOTES, 'UTF-8')
- ));
-
- $res = mail($importer['email'], $from . t(' commented on an item at ') . $a->config['sitename'],
- $email_tpl, "From: " . t('Administrator') . '@' . $a->get_hostname() );
- */
+
// name of the automated email sender
$msg['notificationfromname'] = stripslashes($datarray['author-name']);;
// noreply address to send from
@@ -405,7 +406,7 @@ function dfrn_notify_post(&$a) {
= html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r","\\n\\n" ,"\\n"), "<br />\n",$datarray['body']))));
// load the template for private message notifications
- $tpl = load_view_file('view/cmnt_received_html_body_eml.tpl');
+ $tpl = get_intltext_template('cmnt_received_html_body_eml.tpl');
$email_html_body_tpl = replace_macros($tpl,array(
'$sitename' => $a->config['sitename'], // name of this site
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
@@ -418,7 +419,7 @@ function dfrn_notify_post(&$a) {
));
// load the template for private message notifications
- $tpl = load_view_file('view/cmnt_received_text_body_eml.tpl');
+ $tpl = get_intltext_template('cmnt_received_text_body_eml.tpl');
$email_text_body_tpl = replace_macros($tpl,array(
'$sitename' => $a->config['sitename'], // name of this site
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
@@ -515,24 +516,6 @@ function dfrn_notify_post(&$a) {
continue;
require_once('bbcode.php');
$from = stripslashes($datarray['author-name']);
- /*
- $tpl = load_view_file('view/cmnt_received_eml.tpl');
- $email_tpl = replace_macros($tpl, array(
- '$sitename' => $a->config['sitename'],
- '$siteurl' => $a->get_baseurl(),
- '$username' => $importer['username'],
- '$email' => $importer['email'],
- '$from' => $from,
- '$display' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $r,
- '$body' => html_entity_decode(strip_tags(bbcode(stripslashes($datarray['body']))), ENT_QUOTES, 'UTF-8')
- ));
-
- $res = mail($importer['email'], $from . t(" commented on an item at ")
- . $a->config['sitename'],
- $email_tpl,t("From: Administrator@") . $a->get_hostname() );
- */
-
-
// name of the automated email sender
$msg['notificationfromname'] = stripslashes($datarray['author-name']);;
@@ -550,7 +533,7 @@ function dfrn_notify_post(&$a) {
= html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r","\\n\\n" ,"\\n"), "<br />\n",$datarray['body']))));
// load the template for private message notifications
- $tpl = load_view_file('view/cmnt_received_html_body_eml.tpl');
+ $tpl = get_intltext_template('cmnt_received_html_body_eml.tpl');
$email_html_body_tpl = replace_macros($tpl,array(
'$sitename' => $a->config['sitename'], // name of this site
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
@@ -562,7 +545,7 @@ function dfrn_notify_post(&$a) {
));
// load the template for private message notifications
- $tpl = load_view_file('view/cmnt_received_text_body_eml.tpl');
+ $tpl = get_intltext_template('cmnt_received_text_body_eml.tpl');
$email_text_body_tpl = replace_macros($tpl,array(
'$sitename' => $a->config['sitename'], // name of this site
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php
index 334e10307..718aa165c 100644
--- a/mod/dfrn_poll.php
+++ b/mod/dfrn_poll.php
@@ -16,6 +16,7 @@ function dfrn_poll_init(&$a) {
$challenge = ((x($_GET,'challenge')) ? $_GET['challenge'] : '');
$sec = ((x($_GET,'sec')) ? $_GET['sec'] : '');
$dfrn_version = ((x($_GET,'dfrn_version')) ? (float) $_GET['dfrn_version'] : 2.0);
+ $perm = ((x($_GET,'perm')) ? $_GET['perm'] : 'r');
$direction = (-1);
@@ -26,6 +27,10 @@ function dfrn_poll_init(&$a) {
}
if(($dfrn_id === '') && (! x($_POST,'dfrn_id')) && ($a->argc > 1)) {
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ killme();
+ }
+
logger('dfrn_poll: public feed request from ' . $_SERVER['REMOTE_ADDR'] );
header("Content-type: application/atom+xml");
$o = get_feed_for($a, '', $a->argv[1],$last_update);
@@ -69,13 +74,14 @@ function dfrn_poll_init(&$a) {
if(strlen($s)) {
- $xml = simplexml_load_string($s);
+ $xml = parse_xml_string($s);
if((int) $xml->status == 1) {
$_SESSION['authenticated'] = 1;
$_SESSION['visitor_id'] = $r[0]['id'];
$_SESSION['visitor_home'] = $r[0]['url'];
- notice( $r[0]['username'] . t(' welcomes ') . $r[0]['name'] . EOL);
+ $_SESSION['visitor_visiting'] = $r[0]['uid'];
+ notice( sprintf(t('%s welcomes %s'), $r[0]['username'] , $r[0]['name']) . EOL);
// Visitors get 1 day session.
$session_id = session_id();
$expire = time() + 86400;
@@ -92,7 +98,7 @@ function dfrn_poll_init(&$a) {
}
- if($type === 'profile-check') {
+ if($type === 'profile-check' && $dfrn_version < 2.2 ) {
if((strlen($challenge)) && (strlen($sec))) {
@@ -182,7 +188,69 @@ function dfrn_poll_post(&$a) {
$dfrn_id = ((x($_POST,'dfrn_id')) ? $_POST['dfrn_id'] : '');
$challenge = ((x($_POST,'challenge')) ? $_POST['challenge'] : '');
$url = ((x($_POST,'url')) ? $_POST['url'] : '');
+ $sec = ((x($_POST,'sec')) ? $_POST['sec'] : '');
+ $ptype = ((x($_POST,'type')) ? $_POST['type'] : '');
$dfrn_version = ((x($_POST,'dfrn_version')) ? (float) $_POST['dfrn_version'] : 2.0);
+ $perm = ((x($_POST,'perm')) ? $_POST['perm'] : 'r');
+
+ if($ptype === 'profile-check') {
+
+ if((strlen($challenge)) && (strlen($sec))) {
+
+ logger('dfrn_poll: POST: profile-check');
+
+ q("DELETE FROM `profile_check` WHERE `expire` < " . intval(time()));
+ $r = q("SELECT * FROM `profile_check` WHERE `sec` = '%s' ORDER BY `expire` DESC LIMIT 1",
+ dbesc($sec)
+ );
+ if(! count($r)) {
+ xml_status(3, 'No ticket');
+ // NOTREACHED
+ }
+ $orig_id = $r[0]['dfrn_id'];
+ if(strpos($orig_id, ':'))
+ $orig_id = substr($orig_id,2);
+
+ $c = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1",
+ intval($r[0]['cid'])
+ );
+ if(! count($c)) {
+ xml_status(3, 'No profile');
+ }
+ $contact = $c[0];
+
+ $sent_dfrn_id = hex2bin($dfrn_id);
+ $challenge = hex2bin($challenge);
+
+ $final_dfrn_id = '';
+
+ if(($contact['duplex']) && strlen($contact['prvkey'])) {
+ openssl_private_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['prvkey']);
+ openssl_private_decrypt($challenge,$decoded_challenge,$contact['prvkey']);
+ }
+ else {
+ openssl_public_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['pubkey']);
+ openssl_public_decrypt($challenge,$decoded_challenge,$contact['pubkey']);
+ }
+
+ $final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.'));
+
+ if(strpos($final_dfrn_id,':') == 1)
+ $final_dfrn_id = substr($final_dfrn_id,2);
+
+ if($final_dfrn_id != $orig_id) {
+ logger('profile_check: ' . $final_dfrn_id . ' != ' . $orig_id, LOGGER_DEBUG);
+ // did not decode properly - cannot trust this site
+ xml_status(3, 'Bad decryption');
+ }
+
+ header("Content-type: text/xml");
+ echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?><dfrn_poll><status>0</status><challenge>$decoded_challenge</challenge><sec>$sec</sec></dfrn_poll>";
+ killme();
+ // NOTREACHED
+ }
+
+ }
$direction = (-1);
if(strpos($dfrn_id,':') == 1) {
@@ -234,6 +302,7 @@ function dfrn_poll_post(&$a) {
if(! count($r))
killme();
+ $contact = $r[0];
$owner_uid = $r[0]['uid'];
$contact_id = $r[0]['id'];
@@ -267,6 +336,23 @@ function dfrn_poll_post(&$a) {
// NOTREACHED
}
else {
+
+ // Update the writable flag if it changed
+ logger('dfrn_poll: post request feed: ' . print_r($_POST,true),LOGGER_DATA);
+ if($dfrn_version >= 2.21) {
+ if($perm === 'rw')
+ $writable = 1;
+ else
+ $writable = 0;
+
+ if($writable != $contact['writable']) {
+ q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d LIMIT 1",
+ intval($writable),
+ intval($contact_id)
+ );
+ }
+ }
+
header("Content-type: application/atom+xml");
$o = get_feed_for($a,$dfrn_id, $a->argv[1], $last_update, $direction);
echo $o;
@@ -283,6 +369,7 @@ function dfrn_poll_content(&$a) {
$destination_url = ((x($_GET,'destination_url')) ? $_GET['destination_url'] : '');
$sec = ((x($_GET,'sec')) ? $_GET['sec'] : '');
$dfrn_version = ((x($_GET,'dfrn_version')) ? (float) $_GET['dfrn_version'] : 2.0);
+ $perm = ((x($_GET,'perm')) ? $_GET['perm'] : 'r');
$direction = (-1);
if(strpos($dfrn_id,':') == 1) {
@@ -363,21 +450,51 @@ function dfrn_poll_content(&$a) {
}
if(($type === 'profile') && (strlen($sec))) {
+
// URL reply
- $s = fetch_url($r[0]['poll']
- . '?dfrn_id=' . $encrypted_id
- . '&type=profile-check'
- . '&dfrn_version=' . DFRN_PROTOCOL_VERSION
- . '&challenge=' . $challenge
- . '&sec=' . $sec
- );
+ if($dfrn_version < 2.2) {
+ $s = fetch_url($r[0]['poll']
+ . '?dfrn_id=' . $encrypted_id
+ . '&type=profile-check'
+ . '&dfrn_version=' . DFRN_PROTOCOL_VERSION
+ . '&challenge=' . $challenge
+ . '&sec=' . $sec
+ );
+ }
+ else {
+ $s = post_url($r[0]['poll'], array(
+ 'dfrn_id' => $encrypted_id,
+ 'type' => 'profile-check',
+ 'dfrn_version' => DFRN_PROTOCOL_VERSION,
+ 'challenge' => $challenge,
+ 'sec' => $sec
+ ));
+ }
+
+ $profile = $r[0]['nickname'];
+
+ switch($destination_url) {
+ case 'profile':
+ $dest = $a->get_baseurl() . '/profile/' . $profile . '?tab=profile';
+ break;
+ case 'photos':
+ $dest = $a->get_baseurl() . '/photos/' . $profile;
+ break;
+ case 'status':
+ case '':
+ $dest = $a->get_baseurl() . '/profile/' . $profile;
+ break;
+ default:
+ $dest = $destination_url;
+ break;
+ }
logger("dfrn_poll: sec profile: " . $s, LOGGER_DATA);
if(strlen($s) && strstr($s,'<?xml')) {
- $xml = simplexml_load_string($s);
+ $xml = parse_xml_string($s);
logger('dfrn_poll: profile: parsed xml: ' . print_r($xml,true), LOGGER_DATA);
@@ -389,7 +506,8 @@ function dfrn_poll_content(&$a) {
$_SESSION['authenticated'] = 1;
$_SESSION['visitor_id'] = $r[0]['id'];
$_SESSION['visitor_home'] = $r[0]['url'];
- notice( $r[0]['username'] . t(' welcomes ') . $r[0]['name'] . EOL);
+ $_SESSION['visitor_visiting'] = $r[0]['uid'];
+ notice( sprintf(t('%s welcomes %s'), $r[0]['username'] , $r[0]['name']) . EOL);
// Visitors get 1 day session.
$session_id = session_id();
$expire = time() + 86400;
@@ -398,10 +516,10 @@ function dfrn_poll_content(&$a) {
dbesc($session_id)
);
}
- $profile = $r[0]['nickname'];
- goaway((strlen($destination_url)) ? $destination_url : $a->get_baseurl() . '/profile/' . $profile);
+
+ goaway($dest);
}
- goaway($a->get_baseurl());
+ goaway($dest);
// NOTREACHED
}
diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php
index 24c466bba..8b44d22ba 100644
--- a/mod/dfrn_request.php
+++ b/mod/dfrn_request.php
@@ -12,6 +12,10 @@
if(! function_exists('dfrn_request_init')) {
function dfrn_request_init(&$a) {
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ return;
+ }
+
if($a->argc > 1)
$which = $a->argv[1];
@@ -123,9 +127,9 @@ function dfrn_request_post(&$a) {
notice( t('Warning: profile location has no profile photo.') . EOL );
$invalid = validate_dfrn($parms);
if($invalid) {
- notice( $invalid . t(' required parameter')
- . (($invalid == 1) ? t(" was ") : t("s were ") )
- . t("not found at the given location.") . EOL ) ;
+ notice( sprintf( tt("%d required parameter was not found at the given location",
+ "%d required parameters were not found at the given location",
+ $invalid), $invalid) . EOL );
return;
}
}
@@ -238,7 +242,7 @@ function dfrn_request_post(&$a) {
intval($uid)
);
if(count($r) > $maxreq) {
- notice( $a->profile['name'] . t(' has received too many connection requests today.') . EOL);
+ notice( sprintf( t('%s has received too many connection requests today.'), $a->profile['name']) . EOL);
notice( t('Spam protection measures have been invoked.') . EOL);
notice( t('Friends are advised to please try again in 24 hours.') . EOL);
return;
@@ -306,7 +310,7 @@ function dfrn_request_post(&$a) {
return;
}
elseif($ret[0]['rel'] == REL_BUD) {
- notice( t('Apparently you are already friends with .') . $a->profile['name'] . EOL);
+ notice( sprintf( t('Apparently you are already friends with %s.'), $a->profile['name']) . EOL);
return;
}
else {
@@ -354,9 +358,9 @@ function dfrn_request_post(&$a) {
notice( t('Warning: profile location has no profile photo.') . EOL );
$invalid = validate_dfrn($parms);
if($invalid) {
- notice( $invalid . t(' required parameter')
- . (($invalid == 1) ? t(" was ") : t("s were ") )
- . t("not found at the given location.") . EOL ) ;
+ notice( sprintf( tt("%d required parameter was not found at the given location",
+ "%d required parameters were not found at the given location",
+ $invalid), $invalid) . EOL );
return;
}
@@ -495,12 +499,14 @@ function dfrn_request_content(&$a) {
$dfrn_url = notags(trim(hex2bin($_GET['dfrn_url'])));
$aes_allow = (((x($_GET,'aes_allow')) && ($_GET['aes_allow'] == 1)) ? 1 : 0);
$confirm_key = (x($_GET,'confirm_key') ? $_GET['confirm_key'] : "");
- $o .= load_view_file("view/dfrn_req_confirm.tpl");
- $o = replace_macros($o,array(
+ $tpl = get_markup_template("dfrn_req_confirm.tpl");
+ $o = replace_macros($tpl,array(
'$dfrn_url' => $dfrn_url,
'$aes_allow' => (($aes_allow) ? '<input type="hidden" name="aes_allow" value="1" />' : "" ),
'$confirm_key' => $confirm_key,
- '$username' => $a->user['username'],
+ '$welcome' => sprintf( t('Welcome home %s.'), $a->user['username']),
+ '$please' => sprintf( t('Please confirm your introduction/connection request to %s.'), $dfrn_url),
+ '$submit' => t('Confirm'),
'$uid' => $_SESSION['uid'],
'$nickname' => $a->user['nickname'],
'dfrn_rawurl' => $_GET['dfrn_url']
@@ -531,7 +537,7 @@ function dfrn_request_content(&$a) {
if($r[0]['page-flags'] != PAGE_NORMAL)
$auto_confirm = true;
if(($r[0]['notify-flags'] & NOTIFY_INTRO) && (! $auto_confirm)) {
- $email_tpl = load_view_file('view/request_notify_eml.tpl');
+ $email_tpl = get_intltext_template('request_notify_eml.tpl');
$email = replace_macros($email_tpl, array(
'$requestor' => ((strlen(stripslashes($r[0]['name']))) ? stripslashes($r[0]['name']) : t('[Name Withheld]')),
'$url' => stripslashes($r[0]['url']),
@@ -540,9 +546,12 @@ function dfrn_request_content(&$a) {
'$sitename' => $a->config['sitename']
));
$res = mail($r[0]['email'],
- t("Introduction received at ") . $a->config['sitename'],
+ t("Introduction received at ") . $a->config['sitename'],
$email,
- 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] );
+ 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
+ . 'Content-type: text/plain; charset=UTF-8' . "\n"
+ . 'Content-transfer-encoding: 8bit' );
+
// This is a redundant notification - no point throwing errors if it fails.
}
if($auto_confirm) {
@@ -578,6 +587,12 @@ function dfrn_request_content(&$a) {
* Normal web request. Display our user's introduction form.
*/
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ notice( t('Public access denied.') . EOL);
+ return;
+ }
+
+
/**
* Try to auto-fill the profile address
*/
@@ -607,23 +622,24 @@ function dfrn_request_content(&$a) {
*/
if($a->profile['page-flags'] == PAGE_NORMAL)
- $tpl = load_view_file('view/dfrn_request.tpl');
+ $tpl = get_markup_template('dfrn_request.tpl');
else
- $tpl = load_view_file('view/auto_request.tpl');
+ $tpl = get_markup_template('auto_request.tpl');
$o .= replace_macros($tpl,array(
'$header' => t('Friend/Connection Request'),
+ '$desc' => t('Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca'),
'$pls_answer' => t('Please answer the following:'),
'$does_know' => t('Does $name know you?'),
'$yes' => t('Yes'),
'$no' => t('No'),
'$add_note' => t('Add a personal note:'),
- '$page_desc' => t('Please enter your profile address from one of the following supported social networks:'),
+ '$page_desc' => t("Please enter your 'Identity Address' from one of the following supported social networks:"),
'$friendika' => t('Friendika'),
'$statusnet' => t('StatusNet/Federated Social Web'),
'$private_net' => t("Private \x28secure\x29 network"),
'$public_net' => t("Public \x28insecure\x29 network"),
- '$your_address' => t('Your profile address:'),
+ '$your_address' => t('Your Identity Address:'),
'$submit' => t('Submit Request'),
'$cancel' => t('Cancel'),
'$nickname' => $a->argv[1],
diff --git a/mod/directory.php b/mod/directory.php
index 0504ac321..dfe8ec0d9 100644
--- a/mod/directory.php
+++ b/mod/directory.php
@@ -13,6 +13,14 @@ function directory_post(&$a) {
function directory_content(&$a) {
+
+ $everything = (($a->argc > 1 && $a->argv[1] === 'all' && is_site_admin()) ? true : false);
+
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ notice( t('Public access denied.') . EOL);
+ return;
+ }
+
$o = '';
$o .= '<script> $(document).ready(function() { $(\'#nav-directory-link\').addClass(\'nav-selected\'); });</script>';
if(x($_SESSION,'theme'))
@@ -23,7 +31,7 @@ function directory_content(&$a) {
else
$search = ((x($_GET,'search')) ? notags(trim(rawurldecode($_GET['search']))) : '');
- $tpl = load_view_file('view/directory_header.tpl');
+ $tpl = get_markup_template('directory_header.tpl');
$globaldir = '';
$gdirpath = dirname(get_config('system','directory_submit_url'));
@@ -32,32 +40,47 @@ function directory_content(&$a) {
. $gdirpath . '">' . t('Global Directory') . '</a></div></li></ul>';
}
+ $admin = '';
+ if(is_site_admin()) {
+ if($everything)
+ $admin = '<ul><li><div id="directory-admin-link"><a href="' . $a->get_baseurl() . '/directory' . '">' . t('Normal site view') . '</a></div></li></ul>';
+ else
+ $admin = '<ul><li><div id="directory-admin-link"><a href="' . $a->get_baseurl() . '/directory/all' . '">' . t('View all site entries') . '</a></div></li></ul>';
+ }
+
$o .= replace_macros($tpl, array(
'$search' => $search,
'$globaldir' => $globaldir,
- '$finding' => (strlen($search) ? '<h4>' . t('Finding: ') . "'" . $search . "'" . '</h4>' : "")
+ '$admin' => $admin,
+ '$finding' => (strlen($search) ? '<h4>' . t('Finding: ') . "'" . $search . "'" . '</h4>' : ""),
+ '$sitedir' => t('Site Directory'),
+ '$submit' => t('Find')
));
if($search)
$search = dbesc($search);
- $sql_extra = ((strlen($search)) ? " AND MATCH (`profile`.`name`, `user`.`nickname`, `pdesc`, `locality`,`region`,`country-name`,`gender`,`marital`,`sexual`,`about`,`romance`,`work`,`education`,`keywords` ) AGAINST ('$search' IN BOOLEAN MODE) " : "");
+ $sql_extra = ((strlen($search)) ? " AND MATCH (`profile`.`name`, `user`.`nickname`, `pdesc`, `locality`,`region`,`country-name`,`gender`,`marital`,`sexual`,`about`,`romance`,`work`,`education`,`pub_keywords`,`prv_keywords` ) AGAINST ('$search' IN BOOLEAN MODE) " : "");
- $publish = ((get_config('system','publish_all')) ? '' : " AND `publish` = 1 " );
+ $publish = ((get_config('system','publish_all') || $everything) ? '' : " AND `publish` = 1 " );
$r = q("SELECT COUNT(*) AS `total` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra ");
if(count($r))
$a->set_pager_total($r[0]['total']);
+ if($everything)
+ $order = " ORDER BY `register_date` DESC ";
+ else
+ $order = " ORDER BY `name` ASC ";
- $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra ORDER BY `name` ASC LIMIT %d , %d ",
+ $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ",
intval($a->pager['start']),
intval($a->pager['itemspage'])
);
if(count($r)) {
- $tpl = load_view_file('view/directory_item.tpl');
+ $tpl = get_markup_template('directory_item.tpl');
if(in_array('small', $a->argv))
$photo = 'thumb';
@@ -86,10 +109,10 @@ function directory_content(&$a) {
}
if(strlen($rr['dob'])) {
if(($years = age($rr['dob'],$rr['timezone'],'')) != 0)
- $details .= "<br />Age: $years" ;
+ $details .= '<br />' . t('Age: ') . $years ;
}
if(strlen($rr['gender']))
- $details .= '<br />Gender: ' . $rr['gender'];
+ $details .= '<br />' . t('Gender: ') . $rr['gender'];
$entry = replace_macros($tpl,array(
'$id' => $rr['id'],
@@ -115,7 +138,7 @@ function directory_content(&$a) {
}
else
- notice("No entries (some entries may be hidden).");
+ notice( t("No entries \x28some entries may be hidden\x29.") . EOL);
return $o;
} \ No newline at end of file
diff --git a/mod/display.php b/mod/display.php
index 096ea16c9..fdb93e480 100644
--- a/mod/display.php
+++ b/mod/display.php
@@ -3,6 +3,16 @@
function display_content(&$a) {
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ notice( t('Public access denied.') . EOL);
+ return;
+ }
+
+ require_once("include/bbcode.php");
+ require_once('include/security.php');
+ require_once('include/conversation.php');
+
+
$o = '<div id="live-display"></div>' . "\r\n";
$nick = (($a->argc > 1) ? $a->argv[1] : '');
@@ -16,15 +26,10 @@ function display_content(&$a) {
return;
}
- require_once("include/bbcode.php");
- require_once('include/security.php');
$groups = array();
- $tab = 'posts';
-
-
$contact = null;
$remote_contact = false;
@@ -48,6 +53,11 @@ function display_content(&$a) {
}
}
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
+ intval($a->profile['uid'])
+ );
+ if(count($r))
+ $a->page_contact = $r[0];
$sql_extra = "
AND `allow_cid` = ''
@@ -88,7 +98,7 @@ function display_content(&$a) {
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
- `contact`.`network`, `contact`.`thumb`, `contact`.`self`,
+ `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
@@ -102,17 +112,6 @@ function display_content(&$a) {
);
-
- $cmnt_tpl = load_view_file('view/comment_item.tpl');
- $like_tpl = load_view_file('view/like.tpl');
- $tpl = load_view_file('view/wall_item.tpl');
- $wallwall = load_view_file('view/wallwall_item.tpl');
-
- $return_url = $_SESSION['return_url'] = $a->cmd;
-
- $alike = array();
- $dlike = array();
-
if(count($r)) {
if((local_user()) && (local_user() == $a->profile['uid'])) {
@@ -122,173 +121,9 @@ function display_content(&$a) {
);
}
- foreach($r as $item) {
- like_puller($a,$item,$alike,'like');
- like_puller($a,$item,$dlike,'dislike');
- }
-
- $author_contacts = extract_item_authors($r,$a->profile['uid']);
-
- foreach($r as $item) {
-
- $template = $tpl;
-
- $comment = '';
- $owner_url = '';
- $owner_photo = '';
- $owner_name = '';
-
- $redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
-
- if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE)))
- && ($item['id'] != $item['parent']))
- continue;
-
- $lock = ((($item['private']) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
- || strlen($item['deny_cid']) || strlen($item['deny_gid']))))
- ? '<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="' . t('Private Message') . '" onclick="lockview(event,' . $item['id'] . ');" /></div>'
- : '<div class="wall-item-lock"></div>');
-
- if(can_write_wall($a,$a->profile['uid'])) {
- if($item['id'] == $item['parent']) {
- $likebuttons = replace_macros($like_tpl,array(
- '$id' => $item['id'],
- '$likethis' => t("I like this \x28toggle\x29"),
- '$nolike' => t("I don't like this \x28toggle\x29"),
- '$wait' => t('Please wait')
- ));
- }
- if($item['last-child']) {
- $comment = replace_macros($cmnt_tpl,array(
- '$return_path' => '',
- '$jsreload' => $_SESSION['return_url'],
- '$type' => 'wall-comment',
- '$id' => $item['item_id'],
- '$parent' => $item['parent'],
- '$profile_uid' => $a->profile['uid'],
- '$mylink' => $contact['url'],
- '$mytitle' => t('This is you'),
- '$myphoto' => $contact['thumb'],
- '$ww' => ''
- ));
- }
- }
-
-
- $profile_url = $item['url'];
- $sparkle = '';
-
-
- // Top-level wall post not written by the wall owner (wall-to-wall)
- // First figure out who owns it.
-
- $osparkle = '';
-
- if(($item['parent'] == $item['item_id']) && (! $item['self'])) {
-
- if($item['type'] === 'wall') {
- // I do. Put me on the left of the wall-to-wall notice.
- $owner_url = $a->contact['url'];
- $owner_photo = $a->contact['thumb'];
- $owner_name = $a->contact['name'];
- $template = $wallwall;
- $commentww = 'ww';
- }
- if($item['type'] === 'remote' && ($item['owner-link'] != $item['author-link'])) {
- // Could be anybody.
- $owner_url = $item['owner-link'];
- $owner_photo = $item['owner-avatar'];
- $owner_name = $item['owner-name'];
- $template = $wallwall;
- $commentww = 'ww';
- // If it is our contact, use a friendly redirect link
- if((link_compare($item['owner-link'],$item['url'])) && ($item['network'] === 'dfrn')) {
- $owner_url = $redirect_url;
- $osparkle = ' sparkle';
- }
-
-
- }
- }
-
- $diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true);
-
- $profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']);
- $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $item['thumb']);
- // Can we use our special contact URL for this author?
+ $o .= conversation($a,$r,'display', false);
- if(strlen($item['author-link'])) {
- $profile_link = $item['author-link'];
- if(link_compare($item['author-link'],$item['url']) && ($item['network'] === 'dfrn') && (! $item['self'])) {
- $profile_link = $redirect_url;
- $sparkle = ' sparkle';
- }
- elseif(isset($author_contacts[$item['author-link']])) {
- $profile_link = $a->get_baseurl() . '/redir/' . $author_contacts[$item['author-link']];
- $sparkle = ' sparkle';
- }
- }
-
- if(($item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
- $drop = replace_macros(load_view_file('view/wall_item_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));
- else
- $drop = replace_macros(load_view_file('view/wall_fake_drop.tpl'), array('$id' => $item['id']));
-
- $like = ((isset($alike[$item['id']])) ? format_like($alike[$item['id']],$alike[$item['id'] . '-l'],'like',$item['id']) : '');
- $dislike = ((isset($dlike[$item['id']])) ? format_like($dlike[$item['id']],$dlike[$item['id'] . '-l'],'dislike',$item['id']) : '');
-
- $location = (($item['location']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
- $coord = (($item['coord']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
- if($coord) {
- if($location)
- $location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
- else
- $location = '<span class="smalltext">' . $coord . '</span>';
- }
-
- $indent = (($item['parent'] != $item['item_id']) ? ' comment' : '');
-
- if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
- $indent .= ' shiny';
-
-
- $tmp_item = replace_macros($template,array(
- '$id' => $item['item_id'],
- '$linktitle' => t('View $name\'s profile'),
- '$olinktitle' => t('View $owner_name\'s profile'),
- '$to' => t('to'),
- '$wall' => t('Wall-to-Wall'),
- '$vwall' => t('via Wall-To-Wall:'),
- '$profile_url' => $profile_link,
- '$name' => $profile_name,
- '$sparkle' => $sparkle,
- '$osparkle' => $osparkle,
- '$thumb' => $profile_avatar,
- '$title' => $item['title'],
- '$body' => smilies(bbcode($item['body'])),
- '$ago' => relative_date($item['created']),
- '$lock' => $lock,
- '$location' => $location,
- '$indent' => $indent,
- '$owner_url' => $owner_url,
- '$owner_photo' => $owner_photo,
- '$owner_name' => $owner_name,
- '$plink' => get_plink($item),
- '$drop' => $drop,
- '$vote' => $likebuttons,
- '$like' => $like,
- '$dislike' => $dislike,
- '$comment' => $comment
- ));
-
- $arr = array('item' => $item, 'output' => $tmp_item);
- call_hooks('display_item', $arr);
-
- $o .= $arr['output'];
-
-
- }
}
else {
$r = q("SELECT `id` FROM `item` WHERE `id` = '%s' OR `uri` = '%s' LIMIT 1",
diff --git a/mod/editpost.php b/mod/editpost.php
new file mode 100644
index 000000000..d211074c9
--- /dev/null
+++ b/mod/editpost.php
@@ -0,0 +1,120 @@
+<?php
+
+require_once('acl_selectors.php');
+
+function editpost_content(&$a) {
+
+ $o = '';
+
+ if(! local_user()) {
+ notice( t('Permission denied.') . EOL);
+ return;
+ }
+
+ $post_id = (($a->argc > 1) ? intval($a->argv[1]) : 0);
+
+ if(! $post_id) {
+ notice( t('Item not found') . EOL);
+ return;
+ }
+
+ $itm = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval($post_id),
+ intval(local_user())
+ );
+
+ if(! count($itm)) {
+ notice( t('Item not found') . EOL);
+ return;
+ }
+
+
+ $o .= '<h2>' . t('Edit post') . '</h2>';
+
+ $tpl = get_markup_template('jot-header.tpl');
+
+ $a->page['htmlhead'] .= replace_macros($tpl, array(
+ '$baseurl' => $a->get_baseurl(),
+ '$ispublic' => '&nbsp;', // t('Visible to <strong>everybody</strong>'),
+ '$geotag' => $geotag,
+ '$nickname' => $a->user['nickname']
+ ));
+
+
+ $tpl = get_markup_template("jot.tpl");
+
+ if(($group) || (is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid'])))))
+ $lockstate = 'lock';
+ else
+ $lockstate = 'unlock';
+
+ $celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false);
+
+ $jotplugins = '';
+ $jotnets = '';
+
+ $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
+
+ $mail_enabled = false;
+ $pubmail_enabled = false;
+
+ if(! $mail_disabled) {
+ $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1",
+ intval(local_user())
+ );
+ if(count($r)) {
+ $mail_enabled = true;
+ if(intval($r[0]['pubmail']))
+ $pubmail_enabled = true;
+ }
+ }
+
+ if($mail_enabled) {
+ $selected = (($pubmail_enabled) ? ' checked="checked" ' : '');
+ $jotnets .= '<div class="profile-jot-net"><input type="checkbox" name="pubmail_enable"' . $selected . 'value="1" /> '
+ . t("Post to Email") . '</div>';
+ }
+
+
+
+ call_hooks('jot_tool', $jotplugins);
+ call_hooks('jot_networks', $jotnets);
+
+ $tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
+
+ $o .= replace_macros($tpl,array(
+ '$return_path' => $_SESSION['return_url'],
+ '$action' => 'item',
+ '$share' => t('Edit'),
+ '$upload' => t('Upload photo'),
+ '$weblink' => t('Insert web link'),
+ '$youtube' => t('Insert YouTube video'),
+ '$video' => t('Insert Vorbis [.ogg] video'),
+ '$audio' => t('Insert Vorbis [.ogg] audio'),
+ '$setloc' => t('Set your location'),
+ '$noloc' => t('Clear browser location'),
+ '$wait' => t('Please wait'),
+ '$permset' => t('Permission settings'),
+ '$ptyp' => $itm[0]['type'],
+ '$content' => $itm[0]['body'],
+ '$post_id' => $post_id,
+ '$baseurl' => $a->get_baseurl(),
+ '$defloc' => $a->user['default-location'],
+ '$visitor' => 'none',
+ '$pvisit' => 'none',
+ '$emailcc' => t('CC: email addresses'),
+ '$public' => t('Public post'),
+ '$jotnets' => $jotnets,
+ '$emtitle' => t('Example: bob@example.com, mary@example.com'),
+ '$lockstate' => $lockstate,
+ '$acl' => '', // populate_acl((($group) ? $group_acl : $a->user), $celeb),
+ '$bang' => (($group) ? '!' : ''),
+ '$profile_uid' => $_SESSION['uid']
+ ));
+
+
+ return $o;
+
+}
+
+
diff --git a/mod/follow.php b/mod/follow.php
index 689ae8232..6786e9039 100644
--- a/mod/follow.php
+++ b/mod/follow.php
@@ -11,178 +11,56 @@ function follow_post(&$a) {
}
$url = $orig_url = notags(trim($_POST['url']));
-
- $email_conversant = false;
-
- if($url) {
- $links = @lrdd($url);
- if(count($links)) {
- foreach($links as $link) {
- if($link['@attributes']['rel'] === NAMESPACE_DFRN)
- $dfrn = unamp($link['@attributes']['href']);
- if($link['@attributes']['rel'] === 'salmon')
- $notify = unamp($link['@attributes']['href']);
- if($link['@attributes']['rel'] === NAMESPACE_FEED)
- $poll = unamp($link['@attributes']['href']);
- if($link['@attributes']['rel'] === 'http://microformats.org/profile/hcard')
- $hcard = unamp($link['@attributes']['href']);
- if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page')
- $profile = unamp($link['@attributes']['href']);
-
- }
-
- // Status.Net can have more than one profile URL. We need to match the profile URL
- // to a contact on incoming messages to prevent spam, and we won't know which one
- // to match. So in case of two, one of them is stored as an alias. Only store URL's
- // and not webfinger user@host aliases. If they've got more than two non-email style
- // aliases, let's hope we're lucky and get one that matches the feed author-uri because
- // otherwise we're screwed.
-
- foreach($links as $link) {
- if($link['@attributes']['rel'] === 'alias') {
- if(strpos($link['@attributes']['href'],'@') === false) {
- if(isset($profile)) {
- if($link['@attributes']['href'] !== $profile)
- $alias = unamp($link['@attributes']['href']);
- }
- else
- $profile = unamp($link['@attributes']['href']);
- }
- }
- }
- }
- else {
- if((strpos($orig_url,'@')) && validate_email($orig_url)) {
- $email_conversant = true;
- }
- }
- }
-
- // If we find a DFRN site, send our subscriber to the other person's
- // dfrn_request page and all the other details will get sorted.
-
- if(strlen($dfrn)) {
- $ret = scrape_dfrn($dfrn);
- if(is_array($ret) && x($ret,'dfrn-request')) {
- if(strlen($a->path))
- $myaddr = bin2hex($a->get_baseurl() . '/profile/' . $a->user['nickname']);
- else
- $myaddr = bin2hex($a->user['nickname'] . '@' . $a->get_hostname());
-
- goaway($ret['dfrn-request'] . "&addr=$myaddr");
-
- // NOTREACHED
- }
- }
-
- $network = 'stat';
- $priority = 0;
- if($hcard) {
- $vcard = scrape_vcard($hcard);
+ // remove ajax junk
- // Google doesn't use absolute url in profile photos
+ $url = str_replace('/#!/','/',$url);
- if((x($vcard,'photo')) && substr($vcard['photo'],0,1) == '/') {
- $h = @parse_url($hcard);
- if($h)
- $vcard['photo'] = $h['scheme'] . '://' . $h['host'] . $vcard['photo'];
- }
+ if(! allowed_url($url)) {
+ notice( t('Disallowed profile URL.') . EOL);
+ goaway($_SESSION['return_url']);
+ // NOTREACHED
}
- if(! $profile)
- $profile = $url;
-
-
- if(! x($vcard,'fn'))
- if(x($vcard,'nick'))
- $vcard['fn'] = $vcard['nick'];
-
- if((! isset($vcard)) && (! $poll)) {
-
- $ret = scrape_feed($url);
-
- if(count($ret) && ($ret['feed_atom'] || $ret['feed_rss'])) {
- $poll = ((x($ret,'feed_atom')) ? unamp($ret['feed_atom']) : unamp($ret['feed_rss']));
- $vcard = array();
- require_once('simplepie/simplepie.inc');
- $feed = new SimplePie();
- $xml = fetch_url($poll);
-
- $feed->set_raw_data($xml);
-
- $feed->init();
-
- $vcard['photo'] = $feed->get_image_url();
- $author = $feed->get_author();
- if($author) {
- $vcard['fn'] = unxmlify(trim($author->get_name()));
- if(! $vcard['fn'])
- $vcard['fn'] = trim(unxmlify($author->get_email()));
- if(strpos($vcard['fn'],'@') !== false)
- $vcard['fn'] = substr($vcard['fn'],0,strpos($vcard['fn'],'@'));
- $vcard['nick'] = strtolower(notags(unxmlify($vcard['fn'])));
- if(strpos($vcard['nick'],' '))
- $vcard['nick'] = trim(substr($vcard['nick'],0,strpos($vcard['nick'],' ')));
- $email = unxmlify($author->get_email());
- }
- else {
- $item = $feed->get_item(0);
- if($item) {
- $author = $item->get_author();
- if($author) {
- $vcard['fn'] = trim(unxmlify($author->get_name()));
- if(! $vcard['fn'])
- $vcard['fn'] = trim(unxmlify($author->get_email()));
- if(strpos($vcard['fn'],'@') !== false)
- $vcard['fn'] = substr($vcard['fn'],0,strpos($vcard['fn'],'@'));
- $vcard['nick'] = strtolower(unxmlify($vcard['fn']));
- if(strpos($vcard['nick'],' '))
- $vcard['nick'] = trim(substr($vcard['nick'],0,strpos($vcard['nick'],' ')));
- $email = unxmlify($author->get_email());
- }
- if(! $vcard['photo']) {
- $rawmedia = $item->get_item_tags('http://search.yahoo.com/mrss/','thumbnail');
- if($rawmedia && $rawmedia[0]['attribs']['']['url'])
- $vcard['photo'] = unxmlify($rawmedia[0]['attribs']['']['url']);
- }
- }
- }
- if((! $vcard['photo']) && strlen($email))
- $vcard['photo'] = gravatar_img($email);
-
- $network = 'feed';
- $priority = 2;
- }
- }
- logger('follow: poll=' . $poll . ' notify=' . $notify . ' profile=' . $profile . ' vcard=' . print_r($vcard,true));
+ $ret = probe_url($url);
+
- $vcard['fn'] = notags($vcard['fn']);
- $vcard['nick'] = notags($vcard['nick']);
+ if($ret['network'] === NETWORK_DFRN) {
+ if(strlen($a->path))
+ $myaddr = bin2hex($a->get_baseurl() . '/profile/' . $a->user['nickname']);
+ else
+ $myaddr = bin2hex($a->user['nickname'] . '@' . $a->get_hostname());
+
+ goaway($ret['request'] . "&addr=$myaddr");
+
+ // NOTREACHED
+ }
// do we have enough information?
- if(! ((x($vcard['fn'])) && ($poll) && ($profile))) {
+ if(! ((x($ret,'name')) && (x($ret,'poll')) && ((x($ret,'url')) || (x($ret,'addr'))))) {
notice( t('The profile address specified does not provide adequate information.') . EOL);
goaway($_SESSION['return_url']);
}
- if(! $notify) {
+ if(! $ret['notify']) {
notice( t('Limited profile. This person will be unable to receive direct/personal notifications from you.') . EOL);
}
- if(! x($vcard,'photo'))
- $vcard['photo'] = $a->get_baseurl() . '/images/default-profile.jpg' ;
-
+ $writeable = ((($ret['network'] === NETWORK_OSTATUS) && ($ret['notify'])) ? 1 : 0);
+ if($ret['network'] === NETWORK_MAIL) {
+ $writeable = 1;
+
+ }
// check if we already have a contact
// the poll url is more reliable than the profile url, as we may have
// indirect links or webfinger links
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `poll` = '%s' LIMIT 1",
intval(local_user()),
- dbesc($poll)
+ dbesc($ret['poll'])
);
if(count($r)) {
@@ -197,26 +75,28 @@ function follow_post(&$a) {
}
else {
// create contact record
- $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `alias`, `notify`, `poll`, `name`, `nick`, `photo`, `network`, `rel`, `priority`,
- `blocked`, `readonly`, `pending` )
- VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, 0, 0, 0 ) ",
+ $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `addr`, `alias`, `notify`, `poll`, `name`, `nick`, `photo`, `network`, `rel`, `priority`,
+ `writable`, `blocked`, `readonly`, `pending` )
+ VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, 0, 0, 0 ) ",
intval(local_user()),
dbesc(datetime_convert()),
- dbesc($profile),
- dbesc($alias),
- dbesc($notify),
- dbesc($poll),
- dbesc($vcard['fn']),
- dbesc($vcard['nick']),
- dbesc($vcard['photo']),
- dbesc($network),
- intval(REL_FAN),
- intval($priority)
+ dbesc($ret['url']),
+ dbesc($ret['addr']),
+ dbesc($ret['alias']),
+ dbesc($ret['notify']),
+ dbesc($ret['poll']),
+ dbesc($ret['name']),
+ dbesc($ret['nick']),
+ dbesc($ret['photo']),
+ dbesc($ret['network']),
+ intval(($ret['network'] === NETWORK_MAIL) ? REL_BUD : REL_FAN),
+ intval($ret['priority']),
+ intval($writeable)
);
}
$r = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1",
- dbesc($profile),
+ dbesc($ret['url']),
intval(local_user())
);
@@ -231,7 +111,7 @@ function follow_post(&$a) {
require_once("Photo.php");
- $photos = import_profile_photo($vcard['photo'],local_user(),$contact_id);
+ $photos = import_profile_photo($ret['photo'],local_user(),$contact_id);
$r = q("UPDATE `contact` SET `photo` = '%s',
`thumb` = '%s',
@@ -257,7 +137,7 @@ function follow_post(&$a) {
// create a follow slap
- $tpl = load_view_file('view/follow_slap.tpl');
+ $tpl = get_markup_template('follow_slap.tpl');
$slap = replace_macros($tpl, array(
'$name' => $a->user['username'],
'$profile_page' => $a->get_baseurl() . '/profile/' . $a->user['nickname'],
diff --git a/mod/friendika.php b/mod/friendika.php
new file mode 100644
index 000000000..c7d8b5b81
--- /dev/null
+++ b/mod/friendika.php
@@ -0,0 +1,68 @@
+<?php
+
+function friendika_init(&$a) {
+ if ($a->argv[1]=="json"){
+ $register_policy = Array('REGISTER_CLOSED', 'REGISTER_APPROVE', 'REGISTER_OPEN');
+
+ if (isset($a->config['admin_email']) && $a->config['admin_email']!=''){
+ $r = q("SELECT username, nickname FROM user WHERE email='%s'", $a->config['admin_email']);
+ $admin = array(
+ 'name' => $r[0]['username'],
+ 'profile'=> $a->get_baseurl().'/profile/'.$r[0]['nickname'],
+ );
+ } else {
+ $admin = false;
+ }
+
+ $data = Array(
+ 'version' => FRIENDIKA_VERSION,
+ 'url' => $a->get_baseurl(),
+ 'plugins' => $a->plugins,
+ 'register_policy' => $register_policy[$a->config['register_policy']],
+ 'admin' => $admin,
+ 'site_name' => $a->config['sitename'],
+
+ );
+
+ echo str_replace('\\/','/',json_encode($data));
+ killme();
+ }
+}
+
+
+
+function friendika_content(&$a) {
+
+ $o = '';
+ $o .= '<h3>Friendika</h3>';
+
+
+ $o .= '<p></p><p>';
+
+ $o .= 'View <a href="LICENSE">License</a>' . '<br /><br />';
+ $o .= t('This is Friendika version') . ' ' . FRIENDIKA_VERSION . ' ';
+ $o .= t('running at web location') . ' ' . $a->get_baseurl() . '</p><p>';
+
+ $o .= t('Shared content within the Friendika network is provided under the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 license</a>') . '</p><p>';
+
+ $o .= t('Please visit <a href="http://project.friendika.com">Project.Friendika.com</a> to learn more about the Friendika project.') . '</p><p>';
+
+ $o .= t('Bug reports and issues: please visit') . ' ' . '<a href="http://bugs.friendika.com">Bugs.Friendika.com</a></p><p>';
+ $o .= t('Suggestions, praise, donations, etc. - please email "Info" at Friendika - dot com') . '</p>';
+
+ $o .= '<p></p>';
+
+ if(count($a->plugins)) {
+ $o .= '<p>' . t('Installed plugins/addons/apps') . '</p>';
+ $o .= '<ul>';
+ foreach($a->plugins as $p)
+ if(strlen($p))
+ $o .= '<li>' . $p . '</li>';
+ $o .= '</ul>';
+ }
+ else
+ $o .= '<p>' . t('No installed plugins/addons/apps');
+
+ return $o;
+
+}
diff --git a/mod/group.php b/mod/group.php
index fcdc6a758..3da633edf 100644
--- a/mod/group.php
+++ b/mod/group.php
@@ -55,28 +55,7 @@ function group_post(&$a) {
if($r)
notice( t('Group name changed.') . EOL );
}
- $members = $_POST['group_members_select'];
- if(is_array($members))
- array_walk($members,'validate_members');
- $r = q("DELETE FROM `group_member` WHERE `gid` = %d AND `uid` = %d",
- intval($a->argv[1]),
- intval(local_user())
- );
- $result = true;
- if(is_array($members) && count($members)) {
- foreach($members as $member) {
- $r = q("INSERT INTO `group_member` ( `uid`, `gid`, `contact-id`)
- VALUES ( %d, %d, %d )",
- intval(local_user()),
- intval($group['id']),
- intval($member)
- );
- if(! $r)
- $result = false;
- }
- }
- if($result)
- notice( t('Membership list updated.') . EOL);
+
$a->page['aside'] = group_side();
}
return;
@@ -90,8 +69,12 @@ function group_content(&$a) {
}
if(($a->argc == 2) && ($a->argv[1] === 'new')) {
- $tpl = load_view_file('view/group_new.tpl');
- $o .= replace_macros($tpl,array());
+ $tpl = get_markup_template('group_new.tpl');
+ $o .= replace_macros($tpl,array(
+ '$desc' => t('Create a group of contacts/friends.'),
+ '$name' => t('Group Name: '),
+ '$submit' => t('Submit')
+ ));
return $o;
}
@@ -109,13 +92,22 @@ function group_content(&$a) {
notice( t('Unable to remove group.') . EOL);
}
goaway($a->get_baseurl() . '/group');
- return; // NOTREACHED
+ // NOTREACHED
+ }
+
+ if(($a->argc > 2) && intval($a->argv[1]) && intval($a->argv[2])) {
+ $r = q("SELECT `id` FROM `contact` WHERE `id` = %d AND `uid` = %d and `self` = 0 and `blocked` = 0 AND `pending` = 0 LIMIT 1",
+ intval($a->argv[2]),
+ intval(local_user())
+ );
+ if(count($r))
+ $change = intval($a->argv[2]);
}
+ if(($a->argc > 1) && (intval($a->argv[1]))) {
- if(($a->argc == 2) && (intval($a->argv[1]))) {
require_once('include/acl_selectors.php');
- $r = q("SELECT * FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ $r = q("SELECT * FROM `group` WHERE `id` = %d AND `uid` = %d AND `deleted` = 0 LIMIT 1",
intval($a->argv[1]),
intval(local_user())
);
@@ -124,14 +116,31 @@ function group_content(&$a) {
goaway($a->get_baseurl() . '/contacts');
}
$group = $r[0];
- $ret = group_get_members($group['id']);
+ $members = group_get_members($group['id']);
$preselected = array();
- if(count($ret)) {
- foreach($ret as $p)
- $preselected[] = $p['id'];
+ if(count($members)) {
+ foreach($members as $member)
+ $preselected[] = $member['id'];
+ }
+
+ if($change) {
+ if(in_array($change,$preselected)) {
+ group_rmv_member(local_user(),$group['name'],$change);
+ }
+ else {
+ group_add_member(local_user(),$group['name'],$change);
+ }
+
+ $members = group_get_members($group['id']);
+ $preselected = array();
+ if(count($members)) {
+ foreach($members as $member)
+ $preselected[] = $member['id'];
+ }
}
- $drop_tpl = load_view_file('view/group_drop.tpl');
+
+ $drop_tpl = get_markup_template('group_drop.tpl');
$drop_txt = replace_macros($drop_tpl, array(
'$id' => $group['id'],
'$delete' => t('Delete')
@@ -139,15 +148,63 @@ function group_content(&$a) {
$celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false);
- $tpl = load_view_file('view/group_edit.tpl');
+ $tpl = get_markup_template('group_edit.tpl');
$o .= replace_macros($tpl, array(
'$gid' => $group['id'],
'$name' => $group['name'],
'$drop' => $drop_txt,
- '$selector' => contact_select('group_members_select','group_members_select',$preselected,25,false,$celeb)
+ '$desc' => t('Click on a contact to add or remove.'),
+ '$title' => t('Group Editor'),
+ '$gname' => t('Group Name: '),
+ '$submit' => t('Submit')
));
}
+
+ if(! isset($group))
+ return;
+
+ $o .= '<div id="group-update-wrapper">';
+ if($change)
+ $o = '';
+
+ $o .= '<div id="group-members">';
+ $o .= '<h3>' . t('Members') . '</h3>';
+ foreach($members as $member) {
+ if($member['url']) {
+ $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;';
+ $o .= micropro($member,true,'mpgroup');
+ }
+ else
+ group_rmv_member(local_user(),$group['name'],$member['id']);
+ }
+
+ $o .= '</div><div id="group-members-end"></div>';
+ $o .= '<hr id="group-separator" />';
+ $o .= '<div id="group-all-contacts">';
+
+ $o .= '<h3>' . t('All Contacts') . '</h3>';
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0 ORDER BY `name` ASC",
+ intval(local_user())
+ );
+
+ if(count($r)) {
+ foreach($r as $member) {
+ if(! in_array($member['id'],$preselected)) {
+ $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;';
+ $o .= micropro($member,true,'mpall');
+ }
+ }
+ }
+
+ $o .= '</div><div id="group-all-contacts-end"></div>';
+
+ if($change) {
+ echo $o;
+ killme();
+ }
+ $o .= '</div>';
return $o;
-} \ No newline at end of file
+}
+
diff --git a/mod/help.php b/mod/help.php
new file mode 100644
index 000000000..561f5381f
--- /dev/null
+++ b/mod/help.php
@@ -0,0 +1,37 @@
+<?php
+
+if(! function_exists('load_doc_file')) {
+function load_doc_file($s) {
+ global $lang;
+ if(! isset($lang))
+ $lang = 'en';
+ $b = basename($s);
+ $d = dirname($s);
+ if(file_exists("$d/$lang/$b"))
+ return file_get_contents("$d/$lang/$b");
+ return file_get_contents($s);
+}}
+
+
+
+function help_content(&$a) {
+
+ global $lang;
+
+ require_once('library/markdown.php');
+
+ $text = '';
+
+ if($a->argc > 1) {
+ $text = load_doc_file('doc/' . $a->argv[1] . '.md');
+ $a->page['title'] = t('Help:') . ' ' . str_replace('-',' ',notags($a->argv[1]));
+ }
+ if(! $text) {
+ $text = load_doc_file('doc/Home.md');
+ $a->page['title'] = t('Help');
+ }
+
+
+ return Markdown($text);
+
+} \ No newline at end of file
diff --git a/mod/home.php b/mod/home.php
index 20d38cfca..225bd294d 100644
--- a/mod/home.php
+++ b/mod/home.php
@@ -20,7 +20,7 @@ function home_content(&$a) {
if(x($_SESSION,'theme'))
unset($_SESSION['theme']);
- $o .= '<h1>' . ((x($a->config,'sitename')) ? t("Welcome to ").$a->config['sitename'] : "" ) . '</h1>';
+ $o .= '<h1>' . ((x($a->config,'sitename')) ? sprintf( t("Welcome to %s") ,$a->config['sitename']) : "" ) . '</h1>';
if(file_exists('home.html'))
$o .= file_get_contents('home.html');
diff --git a/mod/install.php b/mod/install.php
index dc91f848e..b5f056df7 100644
--- a/mod/install.php
+++ b/mod/install.php
@@ -14,17 +14,20 @@ function install_post(&$a) {
$phpath = notags(trim($_POST['phpath']));
require_once("dba.php");
-
+ unset($db);
$db = new dba($dbhost, $dbuser, $dbpass, $dbdata, true);
if(mysqli_connect_errno()) {
+ unset($db);
$db = new dba($dbhost, $dbuser, $dbpass, '', true);
if(! mysqli_connect_errno()) {
$r = q("CREATE DATABASE '%s'",
dbesc($dbdata)
);
- if($r)
+ if($r) {
+ unset($db);
$db = new dba($dbhost, $dbuser, $dbpass, $dbdata, true);
+ }
}
if(mysqli_connect_errno()) {
notice( t('Could not create/connect to database.') . EOL);
@@ -34,7 +37,7 @@ function install_post(&$a) {
notice( t('Connected to database.') . EOL);
- $tpl = load_view_file('view/htconfig.tpl');
+ $tpl = get_intltext_template('htconfig.tpl');
$txt = replace_macros($tpl,array(
'$dbhost' => $dbhost,
'$dbuser' => $dbuser,
@@ -50,36 +53,47 @@ function install_post(&$a) {
}
$errors = load_database($db);
- if(! $errors) {
- // Our sessions normally are stored in the database. But as we have only managed
- // to get it bootstrapped milliseconds ago, we have to apply a bit of trickery so
- // that you'll see the following important notice (which is stored in the session).
-
- session_write_close();
-
- require_once('session.php');
- session_start();
- session_regenerate_id();
- $_SESSION['sysmsg'] = '';
+ if($errors)
+ $a->data['db_failed'] = true;
+ else
+ $a->data['db_installed'] = true;
- notice( t('Database import succeeded.') . EOL
- . t('IMPORTANT: You will need to [manually] setup a scheduled task for the poller.') . EOL
- . t('Please see the file "INSTALL.txt".') . EOL );
- goaway($a->get_baseurl() . '/register' );
- }
- else {
- $db = null; // start fresh
- notice( t('Database import failed.') . EOL
- . t('You may need to import the file "database.sql" manually using phpmyadmin or mysql.') . EOL
- . t('Please see the file "INSTALL.txt".') . EOL );
- }
+ return;
}
function install_content(&$a) {
+ global $db;
$o = '';
+
+ if(x($a->data,'db_installed')) {
+ $o .= '<h2>' . t('Proceed with Installation') . '</h2>';
+ $o .= '<p style="font-size: 130%;">';
+ $o .= t('Your Friendika site database has been installed.') . EOL;
+ $o .= t('IMPORTANT: You will need to [manually] setup a scheduled task for the poller.') . EOL ;
+ $o .= t('Please see the file "INSTALL.txt".') . EOL ;
+ $o .= '<br />';
+ $o .= '<a href="' . $a->get_baseurl() . '/register' . '">' . t('Proceed to registration') . '</a>' ;
+ $o .= '</p>';
+ return $o;
+ }
+
+ if(x($a->data,'db_failed')) {
+ $o .= t('Database import failed.') . EOL;
+ $o .= t('You may need to import the file "database.sql" manually using phpmyadmin or mysql.') . EOL;
+ $o .= t('Please see the file "INSTALL.txt".') . EOL ;
+ return $o;
+ }
+
+ if($db && $db->connected) {
+ $r = q("SELECT COUNT(*) as `total` FROM `user`");
+ if($r && count($r) && $r[0]['total']) {
+ notice( t('Permission denied.') . EOL);
+ return '';
+ }
+ }
notice( t('Welcome to Friendika.') . EOL);
@@ -102,8 +116,18 @@ function install_content(&$a) {
require_once('datetime.php');
- $tpl = load_view_file('view/install_db.tpl');
+ $tpl = get_markup_template('install_db.tpl');
$o .= replace_macros($tpl, array(
+ '$lbl_01' => t('Friendika Social Network'),
+ '$lbl_02' => t('Installation'),
+ '$lbl_03' => t('In order to install Friendika we need to know how to contact your database.'),
+ '$lbl_04' => t('Please contact your hosting provider or site administrator if you have questions about these settings.'),
+ '$lbl_05' => t('The database you specify below must already exist. If it does not, please create it before continuing.'),
+ '$lbl_06' => t('Database Server Name'),
+ '$lbl_07' => t('Database Login Name'),
+ '$lbl_08' => t('Database Login Password'),
+ '$lbl_09' => t('Database Name'),
+ '$lbl_10' => t('Please select a default timezone for your website'),
'$baseurl' => $a->get_baseurl(),
'$tzselect' => ((x($_POST,'timezone')) ? select_timezone($_POST['timezone']) : select_timezone()),
'$submit' => t('Submit'),
diff --git a/mod/invite.php b/mod/invite.php
index f67432746..b34bb7d74 100644
--- a/mod/invite.php
+++ b/mod/invite.php
@@ -25,21 +25,25 @@ function invite_post(&$a) {
$recip = trim($recip);
if(! valid_email($recip)) {
- notice( $recip . t(' : ') . t('Not a valid email address.') . EOL);
+ notice( sprintf( t('%s : Not a valid email address.'), $recip) . EOL);
continue;
}
- $res = mail($recip, t('Please join my network on ') . $a->config['sitename'],
- $message, "From: " . $a->user['email']);
+ $res = mail($recip, sprintf(t('Please join my network on %s'), $a->config['sitename']),
+ $message,
+ "From: " . $a->user['email'] . "\n"
+ . 'Content-type: text/plain; charset=UTF-8' . "\n"
+ . 'Content-transfer-encoding: 8bit' );
+
if($res) {
$total ++;
}
else {
- notice( $recip . t(' : ') . t('Message delivery failed.') . EOL);
+ notice( sprintf( t('%s : Message delivery failed.'), $recip) . EOL);
}
}
- notice( $total . t(' messages sent.') . EOL);
+ notice( sprintf( tt("%d message sent.", "%d messages sent.", $total) , $total) . EOL);
return;
}
@@ -51,13 +55,13 @@ function invite_content(&$a) {
return;
}
- $tpl = load_view_file('view/invite.tpl');
+ $tpl = get_markup_template('invite.tpl');
$o = replace_macros($tpl, array(
'$invite' => t('Send invitations'),
'$addr_text' => t('Enter email addresses, one per line:'),
'$msg_text' => t('Your message:'),
- '$default_message' => t('Please join my social network on ') . $a->config['sitename'] . "\r\n" . "\r\n"
+ '$default_message' => sprintf(t('Please join my social network on %s'), $a->config['sitename']) . "\r\n" . "\r\n"
. t('To accept this invitation, please visit:') . "\r\n" . "\r\n" . $a->get_baseurl()
. "\r\n" . "\r\n" . t('Once you have registered, please connect with me via my profile page at:')
. "\r\n" . "\r\n" . $a->get_baseurl() . '/profile/' . $a->user['nickname'] ,
diff --git a/mod/item.php b/mod/item.php
index ad3298592..0b5e32e88 100644
--- a/mod/item.php
+++ b/mod/item.php
@@ -51,7 +51,7 @@ function item_post(&$a) {
}
$profile_uid = ((x($_POST,'profile_uid')) ? intval($_POST['profile_uid']) : 0);
-
+ $post_id = ((x($_POST['post_id'])) ? intval($_POST['post_id']) : 0);
if(! can_write_wall($a,$profile_uid)) {
notice( t('Permission denied.') . EOL) ;
@@ -60,6 +60,21 @@ function item_post(&$a) {
killme();
}
+
+ // is this an edited post?
+
+ $orig_post = null;
+
+ if($post_id) {
+ $i = q("SELECT * FROM `item` WHERE `uid` = %d AND `id` = %d LIMIT 1",
+ intval($profile_uid),
+ intval($post_id)
+ );
+ if(! count($i))
+ killme();
+ $orig_post = $i[0];
+ }
+
$user = null;
$r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
@@ -68,37 +83,53 @@ function item_post(&$a) {
if(count($r))
$user = $r[0];
-
- $str_group_allow = perms2str($_POST['group_allow']);
- $str_contact_allow = perms2str($_POST['contact_allow']);
- $str_group_deny = perms2str($_POST['group_deny']);
- $str_contact_deny = perms2str($_POST['contact_deny']);
-
- $private = ((strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny)) ? 1 : 0);
-
- if(($parent_item) &&
- (($parent_item['private'])
- || strlen($parent_item['allow_cid'])
- || strlen($parent_item['allow_gid'])
- || strlen($parent_item['deny_cid'])
- || strlen($parent_item['deny_gid'])
- )
- ) {
- $private = 1;
+ if($orig_post) {
+ $str_group_allow = $orig_post['allow_gid'];
+ $str_contact_allow = $orig_post['allow_cid'];
+ $str_group_deny = $orig_post['deny_gid'];
+ $str_contact_deny = $orig_post['deny_cid'];
+ $title = $orig_post['title'];
+ $location = $orig_post['location'];
+ $coord = $orig_post['coord'];
+ $verb = $orig_post['verb'];
+ $emailcc = $orig_post['emailcc'];
+
+ $body = escape_tags(trim($_POST['body']));
+ $private = $orig_post['private'];
+ $pubmail_enable = $orig_post['pubmail'];
}
+ else {
+ $str_group_allow = perms2str($_POST['group_allow']);
+ $str_contact_allow = perms2str($_POST['contact_allow']);
+ $str_group_deny = perms2str($_POST['group_deny']);
+ $str_contact_deny = perms2str($_POST['contact_deny']);
+ $title = notags(trim($_POST['title']));
+ $location = notags(trim($_POST['location']));
+ $coord = notags(trim($_POST['coord']));
+ $verb = notags(trim($_POST['verb']));
+ $emailcc = notags(trim($_POST['emailcc']));
+
+ $body = escape_tags(trim($_POST['body']));
+ $private = ((strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny)) ? 1 : 0);
+
+ if(($parent_item) &&
+ (($parent_item['private'])
+ || strlen($parent_item['allow_cid'])
+ || strlen($parent_item['allow_gid'])
+ || strlen($parent_item['deny_cid'])
+ || strlen($parent_item['deny_gid'])
+ )) {
+ $private = 1;
+ }
+
+ $pubmail_enable = ((x($_POST,'pubmail_enable') && intval($_POST['pubmail_enable']) && (! $private)) ? 1 : 0);
- $title = notags(trim($_POST['title']));
- $body = escape_tags(trim($_POST['body']));
- $location = notags(trim($_POST['location']));
- $coord = notags(trim($_POST['coord']));
- $verb = notags(trim($_POST['verb']));
- $emailcc = notags(trim($_POST['emailcc']));
-
- if(! strlen($body)) {
- notice( t('Empty post discarded.') . EOL );
- if(x($_POST,'return'))
- goaway($a->get_baseurl() . "/" . $_POST['return'] );
- killme();
+ if(! strlen($body)) {
+ notice( t('Empty post discarded.') . EOL );
+ if(x($_POST,'return'))
+ goaway($a->get_baseurl() . "/" . $_POST['return'] );
+ killme();
+ }
}
// get contact info for poster
@@ -151,7 +182,6 @@ function item_post(&$a) {
}
}
-
/**
*
* When a photo was uploaded into the message using the (profile wall) ajax
@@ -212,6 +242,8 @@ function item_post(&$a) {
if(count($tags)) {
foreach($tags as $tag) {
if(strpos($tag,'#') === 0) {
+ if(strpos($tag,'[url='))
+ continue;
$basetag = str_replace('_',' ',substr($tag,1));
$body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body);
if(strlen($str_tags))
@@ -220,6 +252,8 @@ function item_post(&$a) {
continue;
}
if(strpos($tag,'@') === 0) {
+ if(strpos($tag,'[url='))
+ continue;
$stat = false;
$name = substr($tag,1);
if((strpos($name,'@')) || (strpos($name,'http://'))) {
@@ -283,15 +317,13 @@ function item_post(&$a) {
$str_tags .= ',';
$str_tags .= '@[url=' . $alias . ']' . $newname . '[/url]';
}
-
}
}
}
}
-
-
$wall = 0;
+
if($post_type === 'wall' || $post_type === 'wall-comment')
$wall = 1;
@@ -332,6 +364,7 @@ function item_post(&$a) {
$datarray['deny_cid'] = $str_contact_deny;
$datarray['deny_gid'] = $str_group_deny;
$datarray['private'] = $private;
+ $datarray['pubmail'] = $pubmail_enable;
/**
* These fields are for the convenience of plugins...
@@ -342,13 +375,35 @@ function item_post(&$a) {
$datarray['parent'] = $parent;
$datarray['self'] = $self;
+ if($orig_post)
+ $datarray['edit'] = true;
call_hooks('post_local',$datarray);
+
+ if($orig_post) {
+ $r = q("UPDATE `item` SET `body` = '%s', `edited` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ dbesc($body),
+ dbesc(datetime_convert()),
+ intval($post_id),
+ intval($profile_uid)
+ );
+
+ proc_run('php', "include/notifier.php", 'edit_post', "$post_id");
+ if((x($_POST,'return')) && strlen($_POST['return'])) {
+ logger('return: ' . $_POST['return']);
+ goaway($a->get_baseurl() . "/" . $_POST['return'] );
+ }
+ killme();
+ }
+ else
+ $post_id = 0;
+
+
$r = q("INSERT INTO `item` (`uid`,`type`,`wall`,`gravity`,`contact-id`,`owner-name`,`owner-link`,`owner-avatar`,
`author-name`, `author-link`, `author-avatar`, `created`, `edited`, `changed`, `uri`, `title`, `body`, `location`, `coord`,
- `tag`, `inform`, `verb`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private` )
- VALUES( %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d )",
+ `tag`, `inform`, `verb`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`, `pubmail` )
+ VALUES( %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )",
intval($datarray['uid']),
dbesc($datarray['type']),
intval($datarray['wall']),
@@ -375,7 +430,8 @@ function item_post(&$a) {
dbesc($datarray['allow_gid']),
dbesc($datarray['deny_cid']),
dbesc($datarray['deny_gid']),
- intval($datarray['private'])
+ intval($datarray['private']),
+ intval($datarray['pubmail'])
);
$r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' LIMIT 1",
@@ -408,21 +464,7 @@ function item_post(&$a) {
if(($user['notify-flags'] & NOTIFY_COMMENT) && ($contact_record != $author)) {
require_once('bbcode.php');
$from = $author['name'];
- /*
- $tpl = load_view_file('view/cmnt_received_eml.tpl');
- $email_tpl = replace_macros($tpl, array(
- '$sitename' => $a->config['sitename'],
- '$siteurl' => $a->get_baseurl(),
- '$username' => $user['username'],
- '$email' => $user['email'],
- '$from' => $from,
- '$display' => $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id,
- '$body' => strip_tags(bbcode($datarray['body']))
- ));
- $res = mail($user['email'], $from . t(" commented on your item at ") . $a->config['sitename'],
- $email_tpl,t("From: Administrator@") . $a->get_hostname() );
- */
// name of the automated email sender
$msg['notificationfromname'] = stripslashes($datarray['author-name']);;
// noreply address to send from
@@ -439,7 +481,7 @@ function item_post(&$a) {
= html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r","\\n\\n" ,"\\n"), "<br />\n",$datarray['body']))));
// load the template for private message notifications
- $tpl = load_view_file('view/cmnt_received_html_body_eml.tpl');
+ $tpl = get_intltext_template('cmnt_received_html_body_eml.tpl');
$email_html_body_tpl = replace_macros($tpl,array(
'$sitename' => $a->config['sitename'], // name of this site
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
@@ -452,7 +494,7 @@ function item_post(&$a) {
));
// load the template for private message notifications
- $tpl = load_view_file('view/cmnt_received_text_body_eml.tpl');
+ $tpl = get_intltext_template('cmnt_received_text_body_eml.tpl');
$email_text_body_tpl = replace_macros($tpl,array(
'$sitename' => $a->config['sitename'], // name of this site
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
@@ -485,22 +527,6 @@ function item_post(&$a) {
if(($user['notify-flags'] & NOTIFY_WALL) && ($contact_record != $author)) {
require_once('bbcode.php');
$from = $author['name'];
- /*
- $tpl = load_view_file('view/wall_received_eml.tpl');
- $email_tpl = replace_macros($tpl, array(
- '$sitename' => $a->config['sitename'],
- '$siteurl' => $a->get_baseurl(),
- '$username' => $user['username'],
- '$email' => $user['email'],
- '$from' => $from,
- '$display' => $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id,
- '$body' => strip_tags(bbcode($datarray['body']))
- ));
-
- $res = mail($user['email'], $from . t(" posted on your profile wall at ") . $a->config['sitename'],
- $email_tpl,t("From: Administrator@") . $a->get_hostname() );
- */
-
// name of the automated email sender
$msg['notificationfromname'] = $from;
@@ -583,7 +609,8 @@ function item_post(&$a) {
proc_run('php', "include/notifier.php", $notify_type, "$post_id");
- $datarray['id'] = $post_id;
+ $datarray['id'] = $post_id;
+ $datarray['plink'] = $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id;
call_hooks('post_local_end', $datarray);
@@ -594,13 +621,12 @@ function item_post(&$a) {
$addr = trim($recip);
if(! strlen($addr))
continue;
- $disclaimer = '<hr />' . t('This message was sent to you by ') . $a->user['username']
- . t(', a member of the Friendika social network.') . '<br />';
- $disclaimer .= t('You may visit them online at') . ' '
- . $a->get_baseurl() . '/profile/' . $a->user['nickname'] . '<br />';
- $disclaimer .= t('Please contact the sender by replying to this post if you do not wish to receive these messages.') . '<br />';
+ $disclaimer = '<hr />' . sprintf( t('This message was sent to you by %s, a member of the Friendika social network.'),$a->user['username'])
+ . '<br />';
+ $disclaimer .= sprintf( t('You may visit them online at %s'), $a->get_baseurl() . '/profile/' . $a->user['nickname']) . EOL;
+ $disclaimer .= t('Please contact the sender by replying to this post if you do not wish to receive these messages.') . EOL;
- $subject = '[Friendika]' . ' ' . $a->user['username'] . ' ' . t('posted an update.');
+ $subject = '[Friendika]' . ' ' . sprintf( t('%s posted an update.'),$a->user['username']);
$headers = 'From: ' . $a->user['username'] . ' <' . $a->user['email'] . '>' . "\n";
$headers .= 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
@@ -640,7 +666,7 @@ function item_content(&$a) {
require_once('include/security.php');
- $uid = $_SESSION['uid'];
+ $uid = local_user();
if(($a->argc == 3) && ($a->argv[1] === 'drop') && intval($a->argv[2])) {
@@ -716,7 +742,8 @@ function item_content(&$a) {
// send the notification upstream/downstream as the case may be
proc_run('php',"include/notifier.php","drop","$drop_id");
-
+// We seem to lose the return url occasionally. Have not been able to reliably duplicate
+// logger('drop_return_url: ' . $_SESSION['return_url']);
goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
//NOTREACHED
}
@@ -726,4 +753,4 @@ function item_content(&$a) {
//NOTREACHED
}
}
-} \ No newline at end of file
+}
diff --git a/mod/like.php b/mod/like.php
index 3a8ca4b7d..966fe500b 100644
--- a/mod/like.php
+++ b/mod/like.php
@@ -124,9 +124,9 @@ function like_content(&$a) {
</object>
EOT;
if($verb === 'like')
- $bodyverb = t('likes');
+ $bodyverb = t('%1$s likes %2$s\'s %3$s');
if($verb === 'dislike')
- $bodyverb = t('doesn\'t like');
+ $bodyverb = t('%1$s doesn\'t like %2$s\'s %3$s');
if(! isset($bodyverb))
return;
@@ -147,9 +147,11 @@ EOT;
$arr['author-name'] = $contact['name'];
$arr['author-link'] = $contact['url'];
$arr['author-avatar'] = $contact['thumb'];
- $arr['body'] = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]' . ' ' . $bodyverb . ' '
- . '[url=' . $item['author-link'] . ']' . $item['author-name'] . t('\'s') . '[/url]' . ' '
- . '[url=' . $a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . ']' . $post_type . '[/url]' ;
+
+ $ulink = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]';
+ $alink = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]';
+ $plink = '[url=' . $a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . ']' . $post_type . '[/url]';
+ $arr['body'] = sprintf( $bodyverb, $ulink, $alink, $plink );
$arr['verb'] = $activity;
$arr['object-type'] = $objtype;
@@ -171,6 +173,10 @@ EOT;
);
}
+ $arr['id'] = $post_id;
+
+ call_hooks('post_local_end', $arr);
+
proc_run('php',"include/notifier.php","like","$post_id");
return; // NOTREACHED
diff --git a/mod/lostpass.php b/mod/lostpass.php
index 30bdc059c..530619bc4 100644
--- a/mod/lostpass.php
+++ b/mod/lostpass.php
@@ -24,9 +24,9 @@ function lostpass_post(&$a) {
intval($uid)
);
if($r)
- notice("Password reset request issued. Check your email.");
+ notice( t('Password reset request issued. Check your email.') . EOL);
- $email_tpl = load_view_file("view/lostpass_eml.tpl");
+ $email_tpl = get_intltext_template("lostpass_eml.tpl");
$email_tpl = replace_macros($email_tpl, array(
'$sitename' => $a->config['sitename'],
'$siteurl' => $a->get_baseurl(),
@@ -35,8 +35,12 @@ function lostpass_post(&$a) {
'$reset_link' => $a->get_baseurl() . '/lostpass?verify=' . $new_password
));
- $res = mail($email, t('Password reset requested at ') . $a->config['sitename'],
- $email_tpl, 'From: ' . t('Administrator') . '@' . $_SERVER[SERVER_NAME]);
+ $res = mail($email, sprintf( t('Password reset requested at %s'),$a->config['sitename']),
+ $email_tpl,
+ 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
+ . 'Content-type: text/plain; charset=UTF-8' . "\n"
+ . 'Content-transfer-encoding: 8bit' );
+
goaway($a->get_baseurl());
}
@@ -53,7 +57,7 @@ function lostpass_content(&$a) {
dbesc($hash)
);
if(! count($r)) {
- notice("Request could not be verified. (You may have previously submitted it.) Password reset failed." . EOL);
+ notice( t("Request could not be verified. \x28You may have previously submitted it.\x29 Password reset failed.") . EOL);
goaway($a->get_baseurl());
return;
}
@@ -69,16 +73,23 @@ function lostpass_content(&$a) {
intval($uid)
);
if($r) {
- $tpl = load_view_file('view/pwdreset.tpl');
+ $tpl = get_markup_template('pwdreset.tpl');
$o .= replace_macros($tpl,array(
+ '$lbl1' => t('Password Reset'),
+ '$lbl2' => t('Your password has been reset as requested.'),
+ '$lbl3' => t('Your new password is'),
+ '$lbl4' => t('Save or copy your new password - and then'),
+ '$lbl5' => '<a href="' . $a->get_baseurl() . '">' . t('click here to login') . '</a>.',
+ '$lbl6' => t('Your password may be changed from the <em>Settings</em> page after successful login.'),
'$newpass' => $new_password,
'$baseurl' => $a->get_baseurl()
+
));
notice("Your password has been reset." . EOL);
- $email_tpl = load_view_file("view/passchanged_eml.tpl");
+ $email_tpl = get_intltext_template("passchanged_eml.tpl");
$email_tpl = replace_macros($email_tpl, array(
'$sitename' => $a->config['sitename'],
'$siteurl' => $a->get_baseurl(),
@@ -87,16 +98,24 @@ function lostpass_content(&$a) {
'$new_password' => $new_password,
'$uid' => $newuid ));
- $res = mail($email,"Your password has changed at {$a->config['sitename']}",$email_tpl,"From: Administrator@{$_SERVER[SERVER_NAME]}");
+ $res = mail($email,"Your password has changed at {$a->config['sitename']}",$email_tpl,
+ 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
+ . 'Content-type: text/plain; charset=UTF-8' . "\n"
+ . 'Content-transfer-encoding: 8bit' );
return $o;
}
}
else {
- $tpl = load_view_file('view/lostpass.tpl');
-
- $o .= $tpl;
+ $tpl = get_markup_template('lostpass.tpl');
+
+ $o .= replace_macros($tpl,array(
+ '$title' => t('Forgot your Password?'),
+ '$desc' => t('Enter your email address and submit to have your password reset. Then check your email for further instructions.'),
+ '$name' => t('Nickname or Email: '),
+ '$submit' => t('Reset')
+ ));
return $o;
}
diff --git a/mod/manage.php b/mod/manage.php
index 9981a0446..26f7315c3 100644
--- a/mod/manage.php
+++ b/mod/manage.php
@@ -34,7 +34,7 @@ function manage_post(&$a) {
$_SESSION['page_flags'] = $r[0]['page-flags'];
$_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $r[0]['nickname'];
- notice( t("Welcome back ") . $r[0]['username'] . EOL);
+ notice( sprintf( t("Welcome back %s") , $r[0]['username']) . EOL);
$a->user = $r[0];
if(strlen($a->user['timezone'])) {
diff --git a/mod/match.php b/mod/match.php
new file mode 100644
index 000000000..092595a09
--- /dev/null
+++ b/mod/match.php
@@ -0,0 +1,57 @@
+<?php
+
+
+function match_content(&$a) {
+
+ $o = '';
+ if(! local_user())
+ return;
+
+ $o .= '<h2>' . t('Profile Match') . '</h2>';
+
+ $r = q("SELECT `pub_keywords`, `prv_keywords` FROM `profile` WHERE `is-default` = 1 AND `uid` = %d LIMIT 1",
+ intval(local_user())
+ );
+ if(! count($r))
+ return;
+ if(! $r[0]['pub_keywords'] && (! $r[0]['prv_keywords'])) {
+ notice('No keywords to match. Please add keywords to your default profile.');
+ return;
+
+ }
+
+ $params = array();
+ $tags = trim($r[0]['pub_keywords'] . ' ' . $r[0]['prv_keywords']);
+ if($tags) {
+ $params['s'] = $tags;
+ if($a->pager['page'] != 1)
+ $params['p'] = $a->pager['page'];
+
+ $x = post_url('http://dir.friendika.com/msearch', $params);
+
+ $j = json_decode($x);
+
+ if($j->total) {
+ $a->set_pager_total($j->total);
+ $a->set_pager_itemspage($j->items_page);
+ }
+
+ if(count($j->results)) {
+ foreach($j->results as $jj) {
+ $o .= '<div class="profile-match-wrapper"><div class="profile-match-photo">';
+ $o .= '<a href="' . $jj->url . '">' . '<img src="' . $jj->photo . '" alt="' . $jj->name . '" title="' . $jj->name . '[' . $jj->url . ']' . '" /></a></div>';
+ $o .= '<div class="profile-match-break"></div>';
+ $o .= '<div class="profile-match-name"><a href="' . $jj->url . '" title="' . $jj->name . '[' . $jj->url .']' . '">' . $jj->name . '</a></div>';
+ $o .= '<div class="profile-match-end"></div></div>';
+ }
+ $o .= '<div id="profile-match-wrapper-end"></div>';
+ }
+ else {
+ notice( t('No matches') . EOL);
+ }
+
+ }
+
+ $o .= paginate($a);
+ return $o;
+} \ No newline at end of file
diff --git a/mod/message.php b/mod/message.php
index 4821a45d2..c9ff3bb8e 100644
--- a/mod/message.php
+++ b/mod/message.php
@@ -120,7 +120,7 @@ function message_content(&$a) {
$myprofile = $a->get_baseurl() . '/profile/' . $a->user['nickname'];
- $tpl = load_view_file('view/mail_head.tpl');
+ $tpl = get_markup_template('mail_head.tpl');
$header = replace_macros($tpl, array(
'$messages' => t('Messages'),
'$inbox' => t('Inbox'),
@@ -164,15 +164,18 @@ function message_content(&$a) {
if(($a->argc > 1) && ($a->argv[1] === 'new')) {
- $tpl = load_view_file('view/msg-header.tpl');
+ $tpl = get_markup_template('msg-header.tpl');
$a->page['htmlhead'] .= replace_macros($tpl, array(
'$baseurl' => $a->get_baseurl(),
- '$nickname' => $a->user['nickname']
+ '$nickname' => $a->user['nickname'],
+ '$linkurl' => t('Please enter a link URL:')
));
- $select = contact_select('messageto','message-to-select', false, 4, true);
- $tpl = load_view_file('view/prv_message.tpl');
+ $preselect = (isset($a->argv[2])?array($a->argv[2]):false);
+
+ $select = contact_select('messageto','message-to-select', $preselect, 4, true);
+ $tpl = get_markup_template('prv_message.tpl');
$o .= replace_macros($tpl,array(
'$header' => t('Send Private Message'),
'$to' => t('To:'),
@@ -222,7 +225,7 @@ function message_content(&$a) {
return $o;
}
- $tpl = load_view_file('view/mail_list.tpl');
+ $tpl = get_markup_template('mail_list.tpl');
foreach($r as $rr) {
$o .= replace_macros($tpl, array(
'$id' => $rr['id'],
@@ -234,7 +237,7 @@ function message_content(&$a) {
'$delete' => t('Delete conversation'),
'$body' => $rr['body'],
'$to_name' => $rr['name'],
- '$date' => datetime_convert('UTC',date_default_timezone_get(),$rr['mailcreated'],'D, d M Y - g:i A')
+ '$date' => datetime_convert('UTC',date_default_timezone_get(),$rr['mailcreated'], t('D, d M Y - g:i A'))
));
}
$o .= paginate($a);
@@ -272,7 +275,7 @@ function message_content(&$a) {
require_once("include/bbcode.php");
- $tpl = load_view_file('view/msg-header.tpl');
+ $tpl = get_markup_template('msg-header.tpl');
$a->page['htmlhead'] .= replace_macros($tpl, array(
'$nickname' => $a->user['nickname'],
@@ -280,7 +283,7 @@ function message_content(&$a) {
));
- $tpl = load_view_file('view/mail_conv.tpl');
+ $tpl = get_markup_template('mail_conv.tpl');
foreach($messages as $message) {
if($message['from-url'] == $myprofile) {
$from_url = $myprofile;
@@ -306,7 +309,7 @@ function message_content(&$a) {
}
$select = $message['name'] . '<input type="hidden" name="messageto" value="' . $contact_id . '" />';
$parent = '<input type="hidden" name="replyto" value="' . $message['parent-uri'] . '" />';
- $tpl = load_view_file('view/prv_message.tpl');
+ $tpl = get_markup_template('prv_message.tpl');
$o .= replace_macros($tpl,array(
'$header' => t('Send Reply'),
'$to' => t('To:'),
diff --git a/mod/network.php b/mod/network.php
index 32c7216d4..16739b434 100644
--- a/mod/network.php
+++ b/mod/network.php
@@ -15,25 +15,25 @@ function network_init(&$a) {
$a->page['aside'] .= '<div id="network-new-link">';
if(($a->argc > 1 && $a->argv[1] === 'new') || ($a->argc > 2 && $a->argv[2] === 'new'))
- $a->page['aside'] .= '<a href="' . $a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . '">' . t('Normal View') . '</a>';
+ $a->page['aside'] .= '<a href="' . $a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?cid=' . $_GET['cid'] : '') . '">' . t('Normal View') . '</a>';
else
- $a->page['aside'] .= '<a href="' . $a->get_baseurl() . '/' . $a->cmd . '/new' . '">' . t('New Item View') . '</a>';
+ $a->page['aside'] .= '<a href="' . $a->get_baseurl() . '/' . $a->cmd . '/new' . ((x($_GET,'cid')) ? '/?cid=' . $_GET['cid'] : '') . '">' . t('New Item View') . '</a>';
$a->page['aside'] .= '</div>';
- $a->page['aside'] .= group_side('network','network');
+ $a->page['aside'] .= group_side('network','network',true);
}
function network_content(&$a, $update = 0) {
+ require_once('include/conversation.php');
+
if(! local_user())
return login(false);
$o = '';
- require_once("include/bbcode.php");
-
$contact_id = $a->cid;
$group = 0;
@@ -41,6 +41,8 @@ function network_content(&$a, $update = 0) {
$nouveau = false;
require_once('include/acl_selectors.php');
+ $cid = ((x($_GET['cid'])) ? intval($_GET['cid']) : 0);
+
if(($a->argc > 2) && $a->argv[2] === 'new')
$nouveau = true;
@@ -49,67 +51,41 @@ function network_content(&$a, $update = 0) {
$nouveau = true;
else {
$group = intval($a->argv[1]);
- $group_acl = array('allow_gid' => '<' . $group . '>');
+ $def_acl = array('allow_gid' => '<' . $group . '>');
}
}
+ if($cid)
+ $def_acl = array('allow_cid' => '<' . intval($cid) . '>');
+
if(! $update) {
+ if(group) {
+ if(($t = group_public_members($group)) && (! get_pconfig(local_user(),'system','nowarn_insecure'))) {
+ $plural_form = sprintf( tt('%d member', '%d members', $t), $t);
+ notice( sprintf( t('Warning: This group contains %s from an insecure network.'), $plural_form ) . EOL);
+ notice( t('Private messages to this group are at risk of public disclosure.') . EOL);
+ }
+ }
+
$o .= '<script> $(document).ready(function() { $(\'#nav-network-link\').addClass(\'nav-selected\'); });</script>';
$_SESSION['return_url'] = $a->cmd;
- $geotag = (($a->user['allow_location']) ? load_view_file('view/jot_geotag.tpl') : '');
-
- $tpl = load_view_file('view/jot-header.tpl');
-
- $a->page['htmlhead'] .= replace_macros($tpl, array(
- '$baseurl' => $a->get_baseurl(),
- '$geotag' => $geotag,
- '$nickname' => $a->user['nickname']
- ));
-
-
- $tpl = load_view_file("view/jot.tpl");
-
- if(($group) || (is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid'])))))
- $lockstate = 'lock';
- else
- $lockstate = 'unlock';
-
$celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false);
- $jotplugins = '';
- $jotnets = '';
- call_hooks('jot_tool', $jotplugins);
- call_hooks('jot_networks', $jotnets);
-
- $tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
-
- $o .= replace_macros($tpl,array(
- '$return_path' => $a->cmd,
- '$action' => 'item',
- '$share' => t('Share'),
- '$upload' => t('Upload photo'),
- '$weblink' => t('Insert web link'),
- '$youtube' => t('Insert YouTube video'),
- '$setloc' => t('Set your location'),
- '$noloc' => t('Clear browser location'),
- '$wait' => t('Please wait'),
- '$permset' => t('Permission settings'),
- '$content' => '',
- '$post_id' => '',
- '$baseurl' => $a->get_baseurl(),
- '$defloc' => $a->user['default-location'],
- '$visitor' => 'block',
- '$emailcc' => t('CC: email addresses'),
- '$jotnets' => $jotnets,
- '$emtitle' => t('Example: bob@example.com, mary@example.com'),
- '$lockstate' => $lockstate,
- '$acl' => populate_acl((($group) ? $group_acl : $a->user), $celeb),
- '$bang' => (($group) ? '!' : ''),
- '$profile_uid' => $_SESSION['uid']
- ));
+ $x = array(
+ 'is_owner' => true,
+ 'allow_location' => $a->user['allow_location'],
+ 'default_location' => $a->user['default_location'],
+ 'nickname' => $a->user['nickname'],
+ 'lockstate' => ((($group) || (is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))))) ? 'lock' : 'unlock'),
+ 'acl' => populate_acl((($group || $cid) ? $def_acl : $a->user), $celeb),
+ 'bang' => (($group || $cid) ? '!' : ''),
+ 'visitor' => 'block',
+ 'profile_uid' => local_user()
+ );
+ $o .= status_editor($a,$x);
// The special div is needed for liveUpdate to kick in for this page.
// We only launch liveUpdate if you are on the front page, you aren't
@@ -119,18 +95,21 @@ function network_content(&$a, $update = 0) {
$o .= '<div id="live-network"></div>' . "\r\n";
$o .= "<script> var profile_uid = " . $_SESSION['uid']
. "; var netargs = '" . substr($a->cmd,8)
+ . ((x($_GET,'cid')) ? '/?cid=' . $_GET['cid'] : '')
. "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
}
- // We aren't going to try and figure out at the item, group, and page level
- // which items you've seen and which you haven't. You're looking at some
- // subset of items, so just mark everything seen.
+ // We aren't going to try and figure out at the item, group, and page
+ // level which items you've seen and which you haven't. If you're looking
+ // at the top level network page just mark everything seen.
- $r = q("UPDATE `item` SET `unseen` = 0
- WHERE `unseen` = 1 AND `uid` = %d",
- intval($_SESSION['uid'])
- );
+ if((! $group) && (! $cid)) {
+ $r = q("UPDATE `item` SET `unseen` = 0
+ WHERE `unseen` = 1 AND `uid` = %d",
+ intval($_SESSION['uid'])
+ );
+ }
// We don't have to deal with ACL's on this page. You're looking at everything
// that belongs to you, hence you can see all of it. We will filter by group if
@@ -148,7 +127,7 @@ function network_content(&$a, $update = 0) {
killme();
notice( t('No such group') . EOL );
goaway($a->get_baseurl() . '/network');
- return; // NOTREACHED
+ // NOTREACHED
}
$contacts = expand_groups(array($group));
@@ -160,28 +139,56 @@ function network_content(&$a, $update = 0) {
notice( t('Group is empty'));
}
- $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND `contact-id` IN ( $contact_str )) ";
+ $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND ( `contact-id` IN ( $contact_str ) OR `allow_gid` REGEXP '<" . intval($group) . ">' )) ";
$o = '<h2>' . t('Group: ') . $r[0]['name'] . '</h2>' . $o;
}
+ elseif($cid) {
+
+ $r = q("SELECT `id`,`name`,`network`,`writable` FROM `contact` WHERE `id` = %d
+ AND `blocked` = 0 AND `pending` = 0 LIMIT 1",
+ intval($cid)
+ );
+ if(count($r)) {
+ $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND `contact-id` IN ( " . intval($cid) . " )) ";
+ $o = '<h2>' . t('Contact: ') . $r[0]['name'] . '</h2>' . $o;
+ if($r[0]['network'] !== NETWORK_MAIL && $r[0]['network'] !== NETWORK_DFRN && $r[0]['network'] !== NETWORK_FACEBOOK && $r[0]['writable'] && (! get_pconfig(local_user(),'system','nowarn_insecure'))) {
+ notice( t('Private messages to this person are at risk of public disclosure.') . EOL);
+ }
+
+ }
+ else {
+ notice( t('Invalid contact.') . EOL);
+ goaway($a->get_baseurl() . '/network');
+ // NOTREACHED
+ }
+ }
- if((! $group) && (! $update))
+ if((! $group) && (! $cid) && (! $update))
$o .= get_birthdays();
+ $sql_extra2 = (($nouveau) ? '' : " AND `item`.`parent` = `item`.`id` ");
$r = q("SELECT COUNT(*) AS `total`
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+ $sql_extra2
$sql_extra ",
intval($_SESSION['uid'])
);
- if(count($r))
+ if(count($r)) {
$a->set_pager_total($r[0]['total']);
+ $a->set_pager_itemspage(40);
+ }
+
if($nouveau) {
+
+ // "New Item View" - show all items unthreaded in reverse created date order
+
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
- `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
+ `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`writable`,
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
FROM `item`, `contact`
@@ -194,282 +201,65 @@ function network_content(&$a, $update = 0) {
intval($a->pager['start']),
intval($a->pager['itemspage'])
);
+
}
else {
- $r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
- `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
- `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
- `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
- FROM `item`, (SELECT `p`.`id`,`p`.`created` FROM `item` AS `p` WHERE `p`.`parent`=`p`.`id`) as `parentitem`, `contact`
+
+ // Normal conversation view
+ // First fetch a known number of parent items
+
+ $r = q("SELECT `item`.`id` AS `item_id`, `contact`.`uid` AS `contact_uid`
+ FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
- AND `contact`.`id` = `item`.`contact-id`
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
- AND `item`.`parent` = `parentitem`.`id`
+ AND `item`.`parent` = `item`.`id`
$sql_extra
- ORDER BY `parentitem`.`created` DESC, `item`.`gravity` ASC, `item`.`created` ASC LIMIT %d ,%d ",
+ ORDER BY `item`.`created` DESC LIMIT %d ,%d ",
intval(local_user()),
intval($a->pager['start']),
intval($a->pager['itemspage'])
);
- }
-
- $author_contacts = extract_item_authors($r,local_user());
- $cmnt_tpl = load_view_file('view/comment_item.tpl');
- $like_tpl = load_view_file('view/like.tpl');
- $tpl = load_view_file('view/wall_item.tpl');
- $wallwall = load_view_file('view/wallwall_item.tpl');
- $alike = array();
- $dlike = array();
-
- if(count($r)) {
-
- if($nouveau) {
-
- $tpl = load_view_file('view/search_item.tpl');
- $droptpl = load_view_file('view/wall_fake_drop.tpl');
-
- foreach($r as $item) {
-
- $comment = '';
- $owner_url = '';
- $owner_photo = '';
- $owner_name = '';
- $sparkle = '';
-
- $profile_name = ((strlen($item['author-name'])) ? $item['author-name'] : $item['name']);
- $profile_avatar = ((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']);
- $profile_link = ((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
-
- $redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
-
- if(strlen($item['author-link'])) {
- if(link_compare($item['author-link'],$item['url']) && ($item['network'] === 'dfrn') && (! $item['self'])) {
- $profile_link = $redirect_url;
- $sparkle = ' sparkle';
- }
- elseif(isset($author_contacts[$item['author-link']])) {
- $profile_link = $a->get_baseurl() . '/redir/' . $author_contacts[$item['author-link']];
- $sparkle = ' sparkle';
- }
- }
-
- $location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
- $coord = (($item['coord']) ? '<a target="map" title="' . $item['coord'] . '" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
- if($coord) {
- if($location)
- $location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
- else
- $location = '<span class="smalltext">' . $coord . '</span>';
- }
-
- $drop = replace_macros($droptpl,array('$id' => $item['id']));
- $lock = '<div class="wall-item-lock"></div>';
-
- $o .= replace_macros($tpl,array(
- '$id' => $item['item_id'],
- '$linktitle' => t('View $name\'s profile'),
- '$profile_url' => $profile_link,
- '$name' => $profile_name,
- '$sparkle' => $sparkle,
- '$lock' => $lock,
- '$thumb' => $profile_avatar,
- '$title' => $item['title'],
- '$body' => smilies(bbcode($item['body'])),
- '$ago' => relative_date($item['created']),
- '$location' => $location,
- '$indent' => '',
- '$owner_url' => $owner_url,
- '$owner_photo' => $owner_photo,
- '$owner_name' => $owner_name,
- '$drop' => $drop,
- '$conv' => '<a href="' . $a->get_baseurl() . '/display/' . $a->user['nickname'] . '/' . $item['id'] . '">' . t('View in context') . '</a>'
- ));
-
- }
- $o .= paginate($a);
-
- return $o;
-
- }
-
-
-
- foreach($r as $item) {
- like_puller($a,$item,$alike,'like');
- like_puller($a,$item,$dlike,'dislike');
+ // Then fetch all the children of the parents that are on this page
+
+ $parents_arr = array();
+ $parents_str = '';
+
+ if(count($r)) {
+ foreach($r as $rr)
+ $parents_arr[] = $rr['item_id'];
+ $parents_str = implode(', ', $parents_arr);
+
+ $r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
+ `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`writable`,
+ `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
+ `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
+ FROM `item`, (SELECT `p`.`id`,`p`.`created` FROM `item` AS `p` WHERE `p`.`parent`=`p`.`id`) as `parentitem`, `contact`
+ WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
+ AND `contact`.`id` = `item`.`contact-id`
+ AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+ AND `item`.`parent` = `parentitem`.`id` AND `item`.`parent` IN ( %s )
+ $sql_extra
+ ORDER BY `parentitem`.`created` DESC, `item`.`gravity` ASC, `item`.`created` ASC ",
+ intval(local_user()),
+ dbesc($parents_str)
+ );
}
+ }
- foreach($r as $item) {
-
- $comment = '';
- $template = $tpl;
- $commentww = '';
- $sparkle = '';
- $owner_url = $owner_photo = $owner_name = '';
-
- if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE))) && ($item['id'] != $item['parent']))
- continue;
-
- $redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
-
-
-
- $lock = ((($item['private']) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
- || strlen($item['deny_cid']) || strlen($item['deny_gid']))))
- ? '<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="' . t('Private Message') . '" onclick="lockview(event,' . $item['id'] . ');" /></div>'
- : '<div class="wall-item-lock"></div>');
-
-
- // Top-level wall post not written by the wall owner (wall-to-wall)
- // First figure out who owns it.
-
- $osparkle = '';
-
- if(($item['parent'] == $item['item_id']) && (! $item['self'])) {
-
- if($item['type'] === 'wall') {
- // I do. Put me on the left of the wall-to-wall notice.
- $owner_url = $a->contact['url'];
- $owner_photo = $a->contact['thumb'];
- $owner_name = $a->contact['name'];
- $template = $wallwall;
- $commentww = 'ww';
- }
- if(($item['type'] === 'remote') && (strlen($item['owner-link'])) && ($item['owner-link'] != $item['author-link'])) {
- // Could be anybody.
- $owner_url = $item['owner-link'];
- $owner_photo = $item['owner-avatar'];
- $owner_name = $item['owner-name'];
- $template = $wallwall;
- $commentww = 'ww';
- // If it is our contact, use a friendly redirect link
- if((link_compare($item['owner-link'],$item['url']))
- && ($item['network'] === 'dfrn')) {
- $owner_url = $redirect_url;
- $osparkle = ' sparkle';
- }
- }
- }
-
- if($update)
- $return_url = $_SESSION['return_url'];
- else
- $return_url = $_SESSION['return_url'] = $a->cmd;
-
- $likebuttons = '';
- if($item['id'] == $item['parent']) {
- $likebuttons = replace_macros($like_tpl,array(
- '$id' => $item['id'],
- '$likethis' => t("I like this \x28toggle\x29"),
- '$nolike' => t("I don't like this \x28toggle\x29"),
- '$wait' => t('Please wait')
- ));
- }
-
- if($item['last-child']) {
- $comment = replace_macros($cmnt_tpl,array(
- '$return_path' => '',
- '$jsreload' => '', // $_SESSION['return_url'],
- '$type' => 'net-comment',
- '$id' => $item['item_id'],
- '$parent' => $item['parent'],
- '$profile_uid' => $_SESSION['uid'],
- '$mylink' => $a->contact['url'],
- '$mytitle' => t('This is you'),
- '$myphoto' => $a->contact['thumb'],
- '$ww' => $commentww
- ));
- }
-
- $drop = replace_macros(load_view_file('view/wall_item_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));
-
- $photo = $item['photo'];
- $thumb = $item['thumb'];
-
- // Post was remotely authored.
-
- $diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true);
-
- $profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']);
- $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $thumb);
-
- if(strlen($item['author-link'])) {
- $profile_link = $item['author-link'];
- if(link_compare($item['author-link'],$item['url']) && ($item['network'] === 'dfrn') && (! $item['self'])) {
- $profile_link = $redirect_url;
- $sparkle = ' sparkle';
- }
- elseif(isset($author_contacts[$item['author-link']])) {
- $profile_link = $a->get_baseurl() . '/redir/' . $author_contacts[$item['author-link']];
- $sparkle = ' sparkle';
- }
- }
- else
- $profile_link = $item['url'];
-
- $like = ((x($alike,$item['id'])) ? format_like($alike[$item['id']],$alike[$item['id'] . '-l'],'like',$item['id']) : '');
- $dislike = ((x($dlike,$item['id'])) ? format_like($dlike[$item['id']],$dlike[$item['id'] . '-l'],'dislike',$item['id']) : '');
-
- $location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
- $coord = (($item['coord']) ? '<a target="map" title="' . $item['coord'] . '" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
- if($coord) {
- if($location)
- $location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
- else
- $location = '<span class="smalltext">' . $coord . '</span>';
- }
+ // Set this so that the conversation function can find out contact info for our wall-wall items
+ $a->page_contact = $a->contact;
- $indent = (($item['parent'] != $item['item_id']) ? ' comment' : '');
-
- if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
- $indent .= ' shiny';
-
-
- // Build the HTML
-
- $tmp_item = replace_macros($template,array(
- '$id' => $item['item_id'],
- '$linktitle' => t('View $name\'s profile'),
- '$olinktitle' => t('View $owner_name\'s profile'),
- '$to' => t('to'),
- '$wall' => t('Wall-to-Wall'),
- '$vwall' => t('via Wall-To-Wall:'),
- '$profile_url' => $profile_link,
- '$name' => $profile_name,
- '$thumb' => $profile_avatar,
- '$osparkle' => $osparkle,
- '$sparkle' => $sparkle,
- '$title' => $item['title'],
- '$body' => smilies(bbcode($item['body'])),
- '$ago' => relative_date($item['created']),
- '$lock' => $lock,
- '$location' => $location,
- '$indent' => $indent,
- '$owner_url' => $owner_url,
- '$owner_photo' => $owner_photo,
- '$owner_name' => $owner_name,
- '$plink' => get_plink($item),
- '$drop' => $drop,
- '$vote' => $likebuttons,
- '$like' => $like,
- '$dislike' => $dislike,
- '$comment' => $comment
- ));
-
- $arr = array('item' => $item, 'output' => $tmp_item);
- call_hooks('display_item', $arr);
-
- $o .= $arr['output'];
+ $mode = (($nouveau) ? 'network-new' : 'network');
- }
- }
+ $o .= conversation($a,$r,$mode,$update);
if(! $update) {
+
$o .= paginate($a);
$o .= '<div class="cc-license">' . t('Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.') . '</div>';
}
return $o;
-} \ No newline at end of file
+}
diff --git a/mod/notes.php b/mod/notes.php
new file mode 100644
index 000000000..7a826bf61
--- /dev/null
+++ b/mod/notes.php
@@ -0,0 +1,129 @@
+<?php
+
+function notes_init(&$a) {
+
+ if(! local_user())
+ return;
+
+ $profile = 0;
+
+ $which = $a->user['nickname'];
+
+// profile_load($a,$which,$profile);
+
+}
+
+
+function notes_content(&$a) {
+
+ if(! local_user()) {
+ notice( t('Permission denied.') . EOL);
+ return;
+ }
+
+ require_once("include/bbcode.php");
+ require_once('include/security.php');
+ require_once('include/conversation.php');
+ require_once('include/acl_selectors.php');
+ $groups = array();
+
+
+ $o = '';
+
+ $remote_contact = false;
+
+ $contact_id = $_SESSION['cid'];
+ $contact = $a->contact;
+
+ $is_owner = true;
+
+
+ $o .= '<h3>' . t('Private Notes') . '</h3>';
+
+ $commpage = false;
+ $commvisitor = false;
+
+ $celeb = false;
+
+
+
+ $x = array(
+ 'is_owner' => $is_owner,
+ 'allow_location' => (($a->user['allow_location']) ? true : false),
+ 'default_location' => $a->user['default-location'],
+ 'nickname' => $a->user['nickname'],
+ 'lockstate' => 'lock',
+ 'acl' => '',
+ 'bang' => '',
+ 'visitor' => 'block',
+ 'profile_uid' => local_user(),
+ 'button' => t('Save')
+
+ );
+
+ $o .= status_editor($a,$x,$a->contact['id']);
+
+
+ // Construct permissions
+
+ // default permissions - anonymous user
+
+ $sql_extra = " AND `allow_cid` = '<" . $a->contact['id'] . ">' ";
+
+ $r = q("SELECT COUNT(*) AS `total`
+ FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+ WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
+ AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+ AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 0
+ $sql_extra ",
+ intval(local_user())
+
+ );
+
+ if(count($r)) {
+ $a->set_pager_total($r[0]['total']);
+ $a->set_pager_itemspage(40);
+ }
+
+ $r = q("SELECT `item`.`id` AS `item_id`, `contact`.`uid` AS `contact-uid`
+ FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+ WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
+ AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+ AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 0
+ $sql_extra
+ ORDER BY `item`.`created` DESC LIMIT %d ,%d ",
+ intval(local_user()),
+ intval($a->pager['start']),
+ intval($a->pager['itemspage'])
+
+ );
+
+ $parents_arr = array();
+ $parents_str = '';
+
+ if(count($r)) {
+ foreach($r as $rr)
+ $parents_arr[] = $rr['item_id'];
+ $parents_str = implode(', ', $parents_arr);
+
+ $r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
+ `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`network`, `contact`.`rel`,
+ `contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
+ `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
+ FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+ WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
+ AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+ AND `item`.`parent` IN ( %s )
+ $sql_extra
+ ORDER BY `parent` DESC, `gravity` ASC, `item`.`id` ASC ",
+ intval(local_user()),
+ dbesc($parents_str)
+ );
+ }
+
+ $o .= conversation($a,$r,'notes',$update);
+
+
+ $o .= paginate($a);
+ return $o;
+}
diff --git a/mod/notifications.php b/mod/notifications.php
index 93ca82bb0..b860f6018 100644
--- a/mod/notifications.php
+++ b/mod/notifications.php
@@ -65,12 +65,11 @@ function notifications_content(&$a) {
else
$sql_extra = " AND `ignore` = 0 ";
-
- $tpl = load_view_file('view/intros-top.tpl');
- $o .= replace_macros($tpl,array(
- '$hide_url' => ((strlen($sql_extra)) ? 'notifications/all' : 'notifications' ),
- '$hide_text' => ((strlen($sql_extra)) ? t('Show Ignored Requests') : t('Hide Ignored Requests'))
- ));
+ $o .= '<h1>' . t('Pending Friend/Connect Notifications') . '</h1>' . "\r\n";
+
+ $o .= '<div id="notification-show-hide-wrapper" >';
+ $o .= '<a href="' . ((strlen($sql_extra)) ? 'notifications/all' : 'notifications' ) . '" id="notifications-show-hide-link" >'
+ . ((strlen($sql_extra)) ? t('Show Ignored Requests') : t('Hide Ignored Requests')) . '</a></div>' . "\r\n";
$r = q("SELECT COUNT(*) AS `total` FROM `intro`
@@ -90,13 +89,13 @@ function notifications_content(&$a) {
if(($r !== false) && (count($r))) {
- $tpl = load_view_file("view/intros.tpl");
+ $tpl = get_markup_template("intros.tpl");
foreach($r as $rr) {
$friend_selected = (($rr['network'] !== 'stat') ? ' checked="checked" ' : ' disabled ');
$fan_selected = (($rr['network'] === 'stat') ? ' checked="checked" disabled ' : '');
- $dfrn_tpl = load_view_file('view/netfriend.tpl');
+ $dfrn_tpl = get_markup_template('netfriend.tpl');
$knowyou = '';
$dfrn_text = '';
@@ -141,24 +140,20 @@ function notifications_content(&$a) {
if ($a->config['register_policy'] == REGISTER_APPROVE &&
$a->config['admin_email'] === $a->user['email']){
- $o .= load_view_file('view/registrations-top.tpl');
+ $o .= '<h1>' . t('User registrations waiting for confirm') . '</h1>' . "\r\n";
$r = q("SELECT `register`.*, `contact`.`name`, `user`.`email`
FROM `register`
LEFT JOIN `contact` ON `register`.`uid` = `contact`.`uid`
LEFT JOIN `user` ON `register`.`uid` = `user`.`uid`;");
if(($r !== false) && (count($r))) {
- $tpl = load_view_file("view/registrations.tpl");
+ $o .= '<ul>';
foreach($r as $rr) {
- $o .= "<ul>";
- $o .= replace_macros($tpl, array(
- '$fullname' => $rr['name'],
- '$email' => $rr['email'],
- '$approvelink' => "regmod/allow/".$rr['hash'],
- '$denylink' => "regmod/deny/".$rr['hash'],
- ));
- $o .= "</ul>";
+ $o .= '<li>' . sprintf('%s (%s) : ', $rr['name'],$rr['email'])
+ . '<a href="regmod/allow/' . $rr['hash'] .'">' . t('Approve')
+ . '</a> - <a href="regmod/deny/' . $rr['hash'] . '">' . t('Deny') . '</a></li>' . "\r\n";
}
+ $o .= "</ul>";
}
else
notice( t('No registrations.') . EOL);
diff --git a/mod/oexchange.php b/mod/oexchange.php
new file mode 100644
index 000000000..d5af4813b
--- /dev/null
+++ b/mod/oexchange.php
@@ -0,0 +1,53 @@
+<?php
+
+
+function oexchange_init(&$a) {
+
+ if(($a->argc > 1) && ($a->argv[1] === 'xrd')) {
+ $tpl = get_markup_template('oexchange_xrd.tpl');
+
+ $o = replace_macros($tpl, array('$base' => $a->get_baseurl()));
+ echo $o;
+ killme();
+ }
+
+
+
+
+}
+
+function oexchange_content(&$a) {
+
+ if(! local_user()) {
+ $o = login(false);
+ return $o;
+ }
+
+ if(($a->argc > 1) && $a->argv[1] === 'done') {
+ notice( t('Post successful.') . EOL);
+ return;
+ }
+
+ $url = (((x($_GET,'url')) && strlen($_GET['url'])) ? notags(trim($_GET['url'])) : '');
+
+ $s = fetch_url($a->get_baseurl() . '/parse_url&url=' . $url);
+
+ if(! strlen($s))
+ return;
+
+ require_once('include/html2bbcode.php');
+
+ $post = array();
+
+ $post['profile_uid'] = local_user();
+ $post['return'] = '/oexchange/done' ;
+ $post['body'] = html2bbcode($s);
+ $post['type'] = 'wall';
+
+ $_POST = $post;
+ require_once('mod/item.php');
+ item_post($a);
+
+}
+
+
diff --git a/mod/openid.php b/mod/openid.php
index 6ccd28e5b..c3c6c11e9 100644
--- a/mod/openid.php
+++ b/mod/openid.php
@@ -70,9 +70,18 @@ function openid_content(&$a) {
$_SESSION['page_flags'] = $r[0]['page-flags'];
$_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $r[0]['nickname'];
- notice( t("Welcome back ") . $r[0]['username'] . EOL);
$a->user = $r[0];
+ if($a->user['login_date'] === '0000-00-00 00:00:00') {
+ $_SESSION['return_url'] = 'profile_photo/new';
+ $a->module = 'profile_photo';
+ notice( t("Welcome ") . $a->user['username'] . EOL);
+ notice( t('Please upload a profile photo.') . EOL);
+ }
+ else
+ notice( t("Welcome back ") . $a->user['username'] . EOL);
+
+
if(strlen($a->user['timezone'])) {
date_default_timezone_set($a->user['timezone']);
$a->timezone = $a->user['timezone'];
diff --git a/mod/opensearch.php b/mod/opensearch.php
new file mode 100644
index 000000000..ff748d1c5
--- /dev/null
+++ b/mod/opensearch.php
@@ -0,0 +1,18 @@
+<?php
+ function opensearch_content(&$a) {
+
+ $tpl = get_markup_template('opensearch.tpl');
+
+ header("Content-type: application/opensearchdescription+xml");
+
+ $o = replace_macros($tpl, array(
+ '$baseurl' => $a->get_baseurl(),
+ '$nodename' => $a->get_hostname(),
+ ));
+
+ echo $o;
+
+ killme();
+
+ }
+?> \ No newline at end of file
diff --git a/mod/parse_url.php b/mod/parse_url.php
index b3b42b6cb..30371e9f6 100644
--- a/mod/parse_url.php
+++ b/mod/parse_url.php
@@ -5,11 +5,15 @@ require_once('library/HTML5/Parser.php');
function parse_url_content(&$a) {
- $url = trim($_GET['url']);
+ logger('parse_url: ' . $_GET['url']);
+
+ $url = trim(hex2bin($_GET['url']));
+
+ logger('parse_url: ' . $url);
$text = null;
- $template = "<a href=\"%s\" >%s</a>%s";
+ $template = "<a href=\"%s\" >%s</a>\n%s";
$arr = array('url' => $url, 'text' => '');
@@ -57,6 +61,8 @@ function parse_url_content(&$a) {
$items = $div->getElementsByTagName('p');
if($items) {
foreach($items as $item) {
+ if($item->getElementsByTagName('script'))
+ continue;
$text = $item->textContent;
$text = strip_tags($text);
if(strlen($text) < 100)
@@ -73,6 +79,8 @@ function parse_url_content(&$a) {
$items = $dom->getElementsByTagName('p');
if($items) {
foreach($items as $item) {
+ if($item->getElementsByTagName('script'))
+ continue;
$text = $item->textContent;
$text = strip_tags($text);
if(strlen($text) < 100)
diff --git a/mod/photo.php b/mod/photo.php
index 2f8d180fd..3bea7e72d 100644
--- a/mod/photo.php
+++ b/mod/photo.php
@@ -19,6 +19,11 @@ function photo_init(&$a) {
$default = 'images/default-profile.jpg';
if(isset($type)) {
+
+ /**
+ * Profile photos
+ */
+
switch($type) {
case 'profile':
@@ -50,6 +55,10 @@ function photo_init(&$a) {
}
else {
+ /**
+ * Other photos
+ */
+
$resolution = 0;
$photo = str_replace('.jpg','',$photo);
@@ -114,7 +123,7 @@ function photo_init(&$a) {
// but who should otherwise be able to view it. Show a default image to let
// them know permissions was denied. It may be possible to view the image
// through an authenticated profile visit.
- // There won't be many complete unauthorised people seeing this because
+ // There won't be many completely unauthorised people seeing this because
// they won't have the photo link, so there's a reasonable chance that the person
// might be able to obtain permission to view it.
diff --git a/mod/photos.php b/mod/photos.php
index 929d1c971..89fef2ee8 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -6,6 +6,10 @@ require_once('include/bbcode.php');
function photos_init(&$a) {
+
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ return;
+ }
$o = '';
if($a->argc > 1) {
@@ -310,6 +314,7 @@ foreach($_FILES AS $key => $val) {
$arr['deny_gid'] = $p[0]['deny_gid'];
$arr['last-child'] = 1;
$arr['visible'] = $visibility;
+
$arr['body'] = '[url=' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $p[0]['resource-id'] . ']'
. '[img]' . $a->get_baseurl() . '/photo/' . $p[0]['resource-id'] . '-' . $p[0]['scale'] . '.jpg' . '[/img]'
. '[/url]';
@@ -557,6 +562,8 @@ foreach($_FILES AS $key => $val) {
if(($maximagesize) && ($filesize > $maximagesize)) {
notice( t('Image exceeds size limit of ') . $maximagesize . EOL);
@unlink($src);
+ $foo = 0;
+ call_hooks('photo_post_end',$foo);
return;
}
@@ -569,6 +576,8 @@ foreach($_FILES AS $key => $val) {
logger('mod/photos.php: photos_post(): unable to process image' , 'LOGGER_DEBUG');
notice( t('Unable to process image.') . EOL );
@unlink($src);
+ $foo = 0;
+ call_hooks('photo_post_end',$foo);
killme();
}
@@ -634,6 +643,17 @@ foreach($_FILES AS $key => $val) {
$item_id = item_store($arr);
+ if($item_id) {
+ q("UPDATE `item` SET `plink` = '%s' WHERE `uid` = %d AND `id` = %d LIMIT 1",
+ dbesc($a->get_baseurl() . '/display/' . $owner_record['nickname'] . '/' . $item_id),
+ intval($page_owner_uid),
+ intval($item_id)
+ );
+ }
+
+ if($visible)
+ proc_run('php', "include/notifier.php", 'wall-new', $item_id);
+
call_hooks('photo_post_end',intval($item_id));
// addon uploaders should call "killme()" [e.g. exit] within the photo_post_end hook
@@ -656,6 +676,16 @@ function photos_content(&$a) {
// photos/name/image/xxxxx/edit
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ notice( t('Public access denied.') . EOL);
+ return;
+ }
+
+
+ require_once('include/bbcode.php');
+ require_once('include/security.php');
+ require_once('include/conversation.php');
+
if(! x($a->data,'user')) {
notice( t('No photos selected') . EOL );
return;
@@ -802,7 +832,7 @@ function photos_content(&$a) {
- $tpl = load_view_file('view/photos_upload.tpl');
+ $tpl = get_markup_template('photos_upload.tpl');
$o .= replace_macros($tpl,array(
'$pagename' => t('Upload Photos'),
'$sessid' => session_id(),
@@ -848,7 +878,7 @@ function photos_content(&$a) {
if($cmd === 'edit') {
if(($album != t('Profile Photos')) && ($album != t('Contact Photos'))) {
if($can_post) {
- $edit_tpl = load_view_file('view/album_edit.tpl');
+ $edit_tpl = get_markup_template('album_edit.tpl');
$o .= replace_macros($edit_tpl,array(
'$nametext' => t('New album name: '),
'$nickname' => $a->data['user']['nickname'],
@@ -869,7 +899,7 @@ function photos_content(&$a) {
}
}
}
- $tpl = load_view_file('view/photo_album.tpl');
+ $tpl = get_markup_template('photo_album.tpl');
if(count($r))
foreach($r as $rr) {
$o .= replace_macros($tpl,array(
@@ -892,10 +922,9 @@ function photos_content(&$a) {
if($datatype === 'image') {
- require_once('security.php');
- require_once('bbcode.php');
- $o = '<div id="live-display"></div>' . "\r\n";
+
+ $o = '';
// fetch image, item containing image, then comments
$ph = q("SELECT * FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s'
@@ -948,34 +977,36 @@ function photos_content(&$a) {
}
}
-
- $o .= '<h3>' . '<a href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($ph[0]['album']) . '">' . $ph[0]['album'] . '</a></h3>';
+ $album_link = $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($ph[0]['album']);
+ $tools = Null;
+ $lock = Null;
if($can_post && ($ph[0]['uid'] == $owner_uid)) {
- $o .= '<div id="photo-edit-link-wrap" ><a id="photo-edit-link" href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $datum . '/edit' . '">' . t('Edit photo') . '</a>';
-
- $o .= ' - <a id="photo-toprofile-link" href="' . $a->get_baseurl() . '/profile_photo/use/'.$ph[0]['resource-id'].'">'.t('Use as profile photo').'</a>';
+ $tools = array(
+ 'edit' => array($a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $datum . '/edit', t('Edit photo')),
+ 'profile'=>array($a->get_baseurl() . '/profile_photo/use/'.$ph[0]['resource-id'], t('Use as profile photo')),
+ );
+
// lock
- $o .= ( ( ($ph[0]['uid'] == local_user()) && (strlen($ph[0]['allow_cid']) || strlen($ph[0]['allow_gid'])
+ $lock = ( ( ($ph[0]['uid'] == local_user()) && (strlen($ph[0]['allow_cid']) || strlen($ph[0]['allow_gid'])
|| strlen($ph[0]['deny_cid']) || strlen($ph[0]['deny_gid'])) )
- ? ' - <img src="images/lock_icon.gif" class="lockview" alt="' . t('Private Message') . '" onclick="lockview(event,\'photo/' . $ph[0]['id'] . '\');" />'
- : '');
+ ? t('Private Message')
+ : Null);
- $o .= '</div>';
+
}
if($prevlink)
- $o .= '<div id="photo-prev-link"><a href="' . $prevlink .'">' . t('<< Prev') . '</a></div>' ;
+ $prevlink = array($prevlink, t('<< Prev')) ;
- $o .= '<div id="photo-photo"><a href="' . $a->get_baseurl() . '/photo/'
- . $hires['resource-id'] . '-' . $hires['scale'] . '.jpg" title="'
- . t('View Full Size') . '" ><img src="' . $a->get_baseurl() . '/photo/'
- . $lores['resource-id'] . '-' . $lores['scale'] . '.jpg' . '" /></a></div>';
+ $photo = array(
+ 'href' => $a->get_baseurl() . '/photo/' . $hires['resource-id'] . '-' . $hires['scale'] . '.jpg',
+ 'title'=> t('View Full Size'),
+ 'src' => $a->get_baseurl() . '/photo/' . $lores['resource-id'] . '-' . $lores['scale'] . '.jpg'
+ );
if($nextlink)
- $o .= '<div id="photo-next-link"><a href="' . $nextlink .'">' . t('Next >>') . '</a></div>';
-
- $o .= '<div id="photo-photo-end"></div>';
+ $nextlink = array($nextlink, t('Next >>'));
// Do we have an item for this photo?
@@ -1027,28 +1058,27 @@ function photos_content(&$a) {
}
}
- $o .= '<div id="photo-caption" >' . $ph[0]['desc'] . '</div>';
-
+ $tags=Null;
if(count($linked_items) && strlen($link_item['tag'])) {
$arr = explode(',',$link_item['tag']);
- // parse tags and add links
- $o .= '<div id="in-this-photo-text">' . t('Tags: ') . '</div>';
- $o .= '<div id="in-this-photo">';
+ // parse tags and add links
$tag_str = '';
foreach($arr as $t) {
if(strlen($tag_str))
$tag_str .= ', ';
$tag_str .= bbcode($t);
}
- $o .= $tag_str . '</div>';
+ $tags = array(t('Tags: '), $tag_str);
if($cmd === 'edit')
- $o .= '<div id="tag-remove"><a href="' . $a->get_baseurl() . '/tagrm/' . $link_item['id'] . '">' . t('[Remove any tag]') . '</a></div>';
+ $tags[] = $a->get_baseurl() . '/tagrm/' . $link_item['id'];
+ $tags[] = t('[Remove any tag]');
}
+ $edit = Null;
if(($cmd === 'edit') && ($can_post)) {
- $edit_tpl = load_view_file('view/photo_edit.tpl');
- $o .= replace_macros($edit_tpl, array(
+ $edit_tpl = get_markup_template('photo_edit.tpl');
+ $edit = replace_macros($edit_tpl, array(
'$id' => $ph[0]['id'],
'$album' => $ph[0]['album'],
'$newalbum' => t('New album name'),
@@ -1069,31 +1099,29 @@ function photos_content(&$a) {
if(count($linked_items)) {
- $cmnt_tpl = load_view_file('view/comment_item.tpl');
- $tpl = load_view_file('view/photo_item.tpl');
+ $cmnt_tpl = get_markup_template('comment_item.tpl');
+ $tpl = get_markup_template('photo_item.tpl');
$return_url = $a->cmd;
- $like_tpl = load_view_file('view/like.tpl');
+ $like_tpl = get_markup_template('like_noshare.tpl');
$likebuttons = '';
if($can_post || can_write_wall($a,$owner_uid)) {
$likebuttons = replace_macros($like_tpl,array(
- '$id' => $item['id'],
+ '$id' => $link_item['id'],
'$likethis' => t("I like this \x28toggle\x29"),
'$nolike' => t("I don't like this \x28toggle\x29"),
- '$wait' => t('Please wait')
+ '$share' => t('Share'),
+ '$wait' => t('Please wait')
));
}
+ $comments = '';
if(! count($r)) {
- $o .= '<div id="photo-like-div">';
- $o .= $likebuttons;
- $o .= '</div>';
-
if($can_post || can_write_wall($a,$owner_uid)) {
if($link_item['last-child']) {
- $o .= replace_macros($cmnt_tpl,array(
+ $comments .= replace_macros($cmnt_tpl,array(
'$return_path' => '',
'$jsreload' => $return_url,
'$type' => 'wall-comment',
@@ -1103,6 +1131,8 @@ function photos_content(&$a) {
'$mylink' => $contact['url'],
'$mytitle' => t('This is you'),
'$myphoto' => $contact['thumb'],
+ '$comment' => t('Comment'),
+ '$submit' => t('Submit'),
'$ww' => ''
));
}
@@ -1111,6 +1141,9 @@ function photos_content(&$a) {
$alike = array();
$dlike = array();
+
+ $like = '';
+ $dislike = '';
// display comments
if(count($r)) {
@@ -1123,17 +1156,11 @@ function photos_content(&$a) {
$like = ((isset($alike[$link_item['id']])) ? format_like($alike[$link_item['id']],$alike[$link_item['id'] . '-l'],'like',$link_item['id']) : '');
$dislike = ((isset($dlike[$link_item['id']])) ? format_like($dlike[$link_item['id']],$dlike[$link_item['id'] . '-l'],'dislike',$link_item['id']) : '');
- $o .= '<div id="photo-like-div">';
- $o .= $likebuttons;
- $o .= $like;
- $o .= $dislike;
- $o .= '</div>';
-
if($can_post || can_write_wall($a,$owner_uid)) {
if($link_item['last-child']) {
- $o .= replace_macros($cmnt_tpl,array(
+ $comments .= replace_macros($cmnt_tpl,array(
'$return_path' => '',
'$jsreload' => $return_url,
'$type' => 'wall-comment',
@@ -1143,6 +1170,8 @@ function photos_content(&$a) {
'$mylink' => $contact['url'],
'$mytitle' => t('This is you'),
'$myphoto' => $contact['thumb'],
+ '$comment' => t('Comment'),
+ '$submit' => t('Submit'),
'$ww' => ''
));
}
@@ -1162,7 +1191,7 @@ function photos_content(&$a) {
if($can_post || can_write_wall($a,$owner_uid)) {
if($item['last-child']) {
- $comment = replace_macros($cmnt_tpl,array(
+ $comments .= replace_macros($cmnt_tpl,array(
'$return_path' => '',
'$jsreload' => $return_url,
'$type' => 'wall-comment',
@@ -1172,6 +1201,8 @@ function photos_content(&$a) {
'$mylink' => $contact['url'],
'$mytitle' => t('This is you'),
'$myphoto' => $contact['thumb'],
+ '$comment' => t('Comment'),
+ '$submit' => t('Submit'),
'$ww' => ''
));
}
@@ -1198,10 +1229,10 @@ function photos_content(&$a) {
$drop = '';
if(($item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
- $drop = replace_macros(load_view_file('view/wall_item_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));
+ $drop = replace_macros(get_markup_template('wall_item_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));
- $o .= replace_macros($template,array(
+ $comments .= replace_macros($template,array(
'$id' => $item['item_id'],
'$profile_url' => $profile_link,
'$name' => $profile_name,
@@ -1217,8 +1248,28 @@ function photos_content(&$a) {
}
}
- $o .= paginate($a);
+ $paginate = paginate($a);
}
+
+ $photo_tpl = get_markup_template('photo_view.tpl');
+ $o .= replace_macros($photo_tpl, array(
+ '$id' => $ph[0]['id'],
+ '$album' => array($album_link,$ph[0]['album']),
+ '$tools' => $tools,
+ '$lock' => $lock,
+ '$photo' => $photo,
+ '$prevlink' => $prevlink,
+ '$nextlink' => $nextlink,
+ '$desc' => $ph[0]['desc'],
+ '$tags' => $tags,
+ '$edit' => $edit,
+ '$likebuttons' => $likebuttons,
+ '$like' => $like,
+ '$dislike' => $dislike,
+ '$comments' => $comments,
+ '$paginate' => $paginate,
+ ));
+
return $o;
}
@@ -1251,21 +1302,18 @@ function photos_content(&$a) {
. $a->data['user']['nickname'] . '/upload' . '">' . t('Upload New Photos') . '</a></div>';
}
- $tpl = load_view_file('view/photo_top.tpl');
+ $tpl = get_markup_template('photo_top.tpl');
if(count($r)) {
foreach($r as $rr) {
$o .= replace_macros($tpl,array(
- '$id' => $rr['id'],
- '$photolink' => $a->get_baseurl() . '/photos/' . $a->data['user']['nickname']
- . '/image/' . $rr['resource-id'],
+ '$id' => $rr['id'],
+ '$photolink' => $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $rr['resource-id'],
'$phototitle' => t('View Photo'),
- '$imgsrc' => $a->get_baseurl() . '/photo/'
- . $rr['resource-id'] . '-' . ((($rr['scale']) == 6) ? 4 : $rr['scale']) . '.jpg',
- '$albumlink' => $a->get_baseurl() . '/photos/'
- . $a->data['user']['nickname'] . '/album/' . bin2hex($rr['album']),
- '$albumname' => $rr['album'],
- '$albumalt' => t('View Album'),
- '$imgalt' => $rr['filename']
+ '$imgsrc' => $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . ((($rr['scale']) == 6) ? 4 : $rr['scale']) . '.jpg',
+ '$albumlink' => $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($rr['album']),
+ '$albumname' => $rr['album'],
+ '$albumalt' => t('View Album'),
+ '$imgalt' => $rr['filename']
));
}
diff --git a/mod/ping.php b/mod/ping.php
index cb067f3fe..b736ea995 100644
--- a/mod/ping.php
+++ b/mod/ping.php
@@ -14,7 +14,7 @@ function ping_init(&$a) {
$network = $r[0]['total'];
$r = q("SELECT COUNT(*) AS `total` FROM `item`
- WHERE `unseen` = 1 AND `visible` = 1 AND `deleted` = 0 AND `uid` = %d AND `type` != 'remote' ",
+ WHERE `unseen` = 1 AND `visible` = 1 AND `deleted` = 0 AND `uid` = %d AND `wall` = 1 ",
intval(local_user())
);
$home = $r[0]['total'];
diff --git a/mod/profile.php b/mod/profile.php
index 5615573b9..634aec460 100644
--- a/mod/profile.php
+++ b/mod/profile.php
@@ -2,6 +2,9 @@
function profile_init(&$a) {
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user()))
+ return;
+
if($a->argc > 1)
$which = $a->argv[1];
else {
@@ -28,6 +31,11 @@ function profile_init(&$a) {
$a->page['htmlhead'] .= '<link rel="openid.delegate" href="' . $delegate . '" />' . "\r\n";
}
+ $keywords = ((x($a->profile,'pub_keywords')) ? $a->profile['pub_keywords'] : '');
+ $keywords = str_replace(array(',',' ',',,'),array(' ',',',','),$keywords);
+ if(strlen($keywords))
+ $a->page['htmlhead'] .= '<meta name="keywords" content="' . $keywords . '" />' . "\r\n" ;
+
$a->page['htmlhead'] .= '<meta name="dfrn-global-visibility" content="' . (($a->profile['net-publish']) ? 'true' : 'false') . '" />' . "\r\n" ;
$a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/dfrn_poll/' . $which .'" />' . "\r\n" ;
$uri = urlencode('acct:' . $a->profile['nickname'] . '@' . $a->get_hostname() . (($a->path) ? '/' . $a->path : ''));
@@ -43,9 +51,16 @@ function profile_init(&$a) {
function profile_content(&$a, $update = 0) {
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ return login();
+ }
+
+
+
require_once("include/bbcode.php");
require_once('include/security.php');
-
+ require_once('include/conversation.php');
+ require_once('include/acl_selectors.php');
$groups = array();
$tab = 'posts';
@@ -89,25 +104,21 @@ function profile_content(&$a, $update = 0) {
if(x($_GET,'tab'))
$tab = notags(trim($_GET['tab']));
- $tpl = load_view_file('view/profile_tabs.tpl');
+ $tpl = get_markup_template('profile_tabs.tpl');
$o .= replace_macros($tpl,array(
'$url' => $a->get_baseurl() . '/' . $a->cmd,
- '$phototab' => $a->get_baseurl() . '/photos/' . $a->profile['nickname']
+ '$phototab' => $a->get_baseurl() . '/photos/' . $a->profile['nickname'],
+ '$status' => t('Status'),
+ '$profile' => t('Profile'),
+ '$photos' => t('Photos')
));
if($tab === 'profile') {
- $profile_lang = get_config('system','language');
- if(! $profile_lang)
- $profile_lang = 'en';
- if(file_exists("view/$profile_lang/profile_advanced.php"))
- require_once("view/$profile_lang/profile_advanced.php");
- else
- require_once('view/profile_advanced.php');
-
+ require_once('include/profile_advanced.php');
+ $o .= advanced_profile($a);
call_hooks('profile_advanced',$o);
-
return $o;
}
@@ -118,57 +129,19 @@ function profile_content(&$a, $update = 0) {
if(can_write_wall($a,$a->profile['profile_uid'])) {
- $geotag = ((($is_owner || $commvisitor) && $a->profile['allow_location']) ? load_view_file('view/jot_geotag.tpl') : '');
-
- $tpl = load_view_file('view/jot-header.tpl');
-
- $a->page['htmlhead'] .= replace_macros($tpl, array(
- '$baseurl' => $a->get_baseurl(),
- '$geotag' => $geotag,
- '$nickname' => $a->profile['nickname']
- ));
-
- require_once('include/acl_selectors.php');
-
- $tpl = load_view_file('view/jot.tpl');
-
- if(is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))))
- $lockstate = 'lock';
- else
- $lockstate = 'unlock';
-
- $jotplugins = '';
- $jotnets = '';
- call_hooks('jot_tool', $jotplugins);
-
- call_hooks('jot_networks', $jotnets);
-
- $tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
-
- $o .= replace_macros($tpl,array(
- '$baseurl' => $a->get_baseurl(),
- '$action' => 'item',
- '$share' => t('Share'),
- '$upload' => t('Upload photo'),
- '$weblink' => t('Insert web link'),
- '$youtube' => t('Insert YouTube video'),
- '$setloc' => t('Set your location'),
- '$noloc' => t('Clear browser location'),
- '$wait' => t('Please wait'),
- '$permset' => t('Permission settings'),
- '$content' => '',
- '$post_id' => '',
- '$defloc' => (($is_owner) ? $a->user['default-location'] : ''),
- '$return_path' => $a->cmd,
- '$visitor' => (($is_owner || $commvisitor) ? 'block' : 'none'),
- '$lockstate' => $lockstate,
- '$emailcc' => t('CC: email addresses'),
- '$jotnets' => $jotnets,
- '$emtitle' => t('Example: bob@example.com, mary@example.com'),
- '$bang' => '',
- '$acl' => (($is_owner) ? populate_acl($a->user, $celeb) : ''),
- '$profile_uid' => $a->profile['profile_uid']
- ));
+ $x = array(
+ 'is_owner' => $is_owner,
+ 'allow_location' => ((($is_owner || $commvisitor) && $a->profile['allow_location']) ? true : false),
+ 'default_location' => (($is_owner) ? $a->user['default-location'] : ''),
+ 'nickname' => $a->profile['nickname'],
+ 'lockstate' => (((is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))))) ? 'lock' : 'unlock'),
+ 'acl' => (($is_owner) ? populate_acl($a->user, $celeb) : ''),
+ 'bang' => '',
+ 'visitor' => (($is_owner || $commvisitor) ? 'block' : 'none'),
+ 'profile_uid' => $a->profile['profile_uid']
+ );
+
+ $o .= status_editor($a,$x);
}
// This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
@@ -195,7 +168,7 @@ function profile_content(&$a, $update = 0) {
// Oh - while we're here... reset the Unseen messages
$r = q("UPDATE `item` SET `unseen` = 0
- WHERE `type` != 'remote' AND `unseen` = 1 AND `uid` = %d",
+ WHERE `wall` = 1 AND `unseen` = 1 AND `uid` = %d",
intval($_SESSION['uid'])
);
@@ -228,191 +201,66 @@ function profile_content(&$a, $update = 0) {
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
- AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND `wall` = 1 )
+ AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 1
$sql_extra ",
intval($a->profile['profile_uid'])
);
- if(count($r))
+ if(count($r)) {
$a->set_pager_total($r[0]['total']);
+ $a->set_pager_itemspage(40);
+ }
- $r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
- `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`network`, `contact`.`rel`,
- `contact`.`thumb`, `contact`.`self`,
- `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
+ $r = q("SELECT `item`.`id` AS `item_id`, `contact`.`uid` AS `contact-uid`
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
- AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND `wall` = 1 )
+ AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 1
$sql_extra
- ORDER BY `parent` DESC, `gravity` ASC, `id` ASC LIMIT %d ,%d ",
+ ORDER BY `item`.`created` DESC LIMIT %d ,%d ",
intval($a->profile['profile_uid']),
intval($a->pager['start']),
intval($a->pager['itemspage'])
);
+ $parents_arr = array();
+ $parents_str = '';
+
+ if(count($r)) {
+ foreach($r as $rr)
+ $parents_arr[] = $rr['item_id'];
+ $parents_str = implode(', ', $parents_arr);
+
+ $r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
+ `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`network`, `contact`.`rel`,
+ `contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
+ `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
+ FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
+ WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
+ AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+ AND `item`.`parent` IN ( %s )
+ $sql_extra
+ ORDER BY `parent` DESC, `gravity` ASC, `item`.`id` ASC ",
+ intval($a->profile['profile_uid']),
+ dbesc($parents_str)
+ );
+ }
if($is_owner && ! $update)
$o .= get_birthdays();
- $cmnt_tpl = load_view_file('view/comment_item.tpl');
-
- $like_tpl = load_view_file('view/like.tpl');
-
- $tpl = load_view_file('view/wall_item.tpl');
-
- $droptpl = load_view_file('view/wall_item_drop.tpl');
- $fakedrop = load_view_file('view/wall_fake_drop.tpl');
- if($update)
- $return_url = $_SESSION['return_url'];
- else
- $return_url = $_SESSION['return_url'] = $a->cmd;
- $alike = array();
- $dlike = array();
-
- if($r !== false && count($r)) {
-
- foreach($r as $item) {
- like_puller($a,$item,$alike,'like');
- like_puller($a,$item,$dlike,'dislike');
- }
+ $o .= conversation($a,$r,'profile',$update);
- foreach($r as $item) {
-
- $sparkle = '';
- $comment = '';
- $likebuttons = '';
-
- $template = $tpl;
-
- $redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
-
- if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE)))
- && ($item['id'] != $item['parent']))
- continue;
-
- $lock = ((($item['private']) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
- || strlen($item['deny_cid']) || strlen($item['deny_gid']))))
- ? '<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="' . t('Private Message') . '" onclick="lockview(event,' . $item['id'] . ');" /></div>'
- : '<div class="wall-item-lock"></div>');
-
- if(can_write_wall($a,$a->profile['profile_uid'])) {
- if($item['id'] == $item['parent']) {
- $likebuttons = replace_macros($like_tpl,array(
- '$id' => $item['id'],
- '$likethis' => t("I like this \x28toggle\x29"),
- '$nolike' => t("I don't like this \x28toggle\x29"),
- '$wait' => t('Please wait')
- ));
- }
- if($item['last-child']) {
- $comment = replace_macros($cmnt_tpl,array(
- '$return_path' => '',
- '$jsreload' => '', // $_SESSION['return_url'],
- '$type' => 'wall-comment',
- '$id' => $item['item_id'],
- '$parent' => $item['parent'],
- '$profile_uid' => $a->profile['profile_uid'],
- '$mylink' => $contact['url'],
- '$mytitle' => t('This is you'),
- '$myphoto' => $contact['thumb'],
- '$ww' => ''
- ));
- }
- }
-
-
- $profile_url = $item['url'];
-
- // This is my profile page but I'm not the author of this post/comment. If it's somebody that's a fan or mutual friend,
- // I can go directly to their profile as an authenticated guest.
-
- if(local_user() && ($item['contact-uid'] == $_SESSION['uid'])
- && ($item['network'] === 'dfrn') && (! $item['self'] )) {
- $profile_url = $redirect_url;
- $sparkle = ' sparkle';
- }
- else
- $sparkle = '';
-
- // We would prefer to use our own avatar link for this item because the one in the author-avatar might reference a
- // remote site (which could be down). We will use author-avatar if we haven't got something stored locally.
- // We use this same logic block in mod/network.php to determine it this is a third party post and we don't have any
- // local contact info at all. In this module you should never encounter a third-party author, but we still will do
- // the right thing if you ever do.
-
- $diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true);
-
- $profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']);
- $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $item['thumb']);
-
- $profile_link = $profile_url;
-
- $drop = '';
- $dropping = false;
-
- if(($item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
- $dropping = true;
-
- $drop = replace_macros((($dropping)? $droptpl : $fakedrop), array('$id' => $item['id'], '$delete' => t('Delete')));
-
-
- $like = ((isset($alike[$item['id']])) ? format_like($alike[$item['id']],$alike[$item['id'] . '-l'],'like',$item['id']) : '');
- $dislike = ((isset($dlike[$item['id']])) ? format_like($dlike[$item['id']],$dlike[$item['id'] . '-l'],'dislike',$item['id']) : '');
- $location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
- $coord = (($item['coord']) ? '<a target="map" title="' . $item['coord'] . '" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
- if($coord) {
- if($location)
- $location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
- else
- $location = '<span class="smalltext">' . $coord . '</span>';
- }
-
- $indent = (($item['parent'] != $item['item_id']) ? ' comment' : '');
-
- if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
- $indent .= ' shiny';
-
- $tmp_item = replace_macros($template,array(
- '$id' => $item['item_id'],
- '$linktitle' => t('View $name\'s profile'),
- '$profile_url' => $profile_link,
- '$name' => $profile_name,
- '$thumb' => $profile_avatar,
- '$sparkle' => $sparkle,
- '$title' => $item['title'],
- '$body' => smilies(bbcode($item['body'])),
- '$ago' => relative_date($item['created']),
- '$lock' => $lock,
- '$location' => $location,
- '$indent' => $indent,
- '$plink' => get_plink($item),
- '$drop' => $drop,
- '$like' => $like,
- '$vote' => $likebuttons,
- '$dislike' => $dislike,
- '$comment' => $comment
- ));
-
- $arr = array('item' => $item, 'output' => $tmp_item);
- call_hooks('display_item', $arr);
-
- $o .= $arr['output'];
-
- }
- }
- if($update) {
- return $o;
- }
+ if(! $update) {
- $o .= paginate($a);
- $o .= '<div class="cc-license">' . t('Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.') . '</div>';
-
+ $o .= paginate($a);
+ $o .= '<div class="cc-license">' . t('Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.') . '</div>';
+ }
return $o;
}
diff --git a/mod/profile_photo.php b/mod/profile_photo.php
index 0f84a85c9..b1fd0fc6e 100644
--- a/mod/profile_photo.php
+++ b/mod/profile_photo.php
@@ -58,21 +58,21 @@ function profile_photo_post(&$a) {
$r = $im->store(local_user(), 0, $base_image['resource-id'],$base_image['filename'], t('Profile Photos'), 4, 1);
if($r === false)
- notice ( t('Image size reduction [175] failed.') . EOL );
+ notice ( sprintf(t('Image size reduction [%s] failed.'),"175") . EOL );
$im->scaleImage(80);
$r = $im->store(local_user(), 0, $base_image['resource-id'],$base_image['filename'], t('Profile Photos'), 5, 1);
if($r === false)
- notice( t('Image size reduction [80] failed.') . EOL );
+ notice( sprintf(t('Image size reduction [%s] failed.'),"80") . EOL );
$im->scaleImage(48);
$r = $im->store(local_user(), 0, $base_image['resource-id'],$base_image['filename'], t('Profile Photos'), 6, 1);
if($r === false)
- notice( t('Image size reduction [48] failed.') . EOL );
+ notice( sprintf(t('Image size reduction [%s] failed.'),"48") . EOL );
// Unset the profile photo flag from any other photos I own
@@ -87,7 +87,7 @@ function profile_photo_post(&$a) {
);
// Update global directory in background
- $url = $_SESSION['my_url'];
+ $url = $a->get_baseurl() . '/profile/' . $a->user['nickname'];
if($url && strlen(get_config('system','directory_submit_url')))
proc_run('php',"include/directory.php","$url");
}
@@ -106,7 +106,7 @@ function profile_photo_post(&$a) {
$maximagesize = get_config('system','maximagesize');
if(($maximagesize) && ($filesize > $maximagesize)) {
- notice( t('Image exceeds size limit of ') . $maximagesize . EOL);
+ notice( sprintf(t('Image exceeds size limit of %d'), $maximagesize) . EOL);
@unlink($src);
return;
}
@@ -134,6 +134,11 @@ function profile_photo_content(&$a) {
return;
}
+ $newuser = false;
+
+ if($a->argc == 2 && $a->argv[1] === 'new')
+ $newuser = true;
+
if( $a->argv[1]=='use'){
if ($a->argc<3){
notice( t('Permission denied.') . EOL );
@@ -181,10 +186,14 @@ function profile_photo_content(&$a) {
if(! x($a->config,'imagecrop')) {
- $tpl = load_view_file('view/profile_photo.tpl');
+ $tpl = get_markup_template('profile_photo.tpl');
$o .= replace_macros($tpl,array(
- '$user' => $a->user['nickname']
+ '$user' => $a->user['nickname'],
+ '$lbl_upfile' => t('Upload File:'),
+ '$title' => t('Upload Profile Photo'),
+ '$submit' => t('Upload'),
+ '$select' => sprintf('%s %s', t('or'), ($newuser) ? '<a href="' . $a->get_baseurl() . '">' . t('skip this step') . '</a>' : '<a href="'. $a->get_baseurl() . '/photos/' . $a->user['nickname'] . '">' . t('select a photo from your photo albums') . '</a>')
));
return $o;
@@ -192,13 +201,15 @@ function profile_photo_content(&$a) {
else {
$filename = $a->config['imagecrop'] . '-' . $a->config['imagecrop_resolution'] . '.jpg';
$resolution = $a->config['imagecrop_resolution'];
- $tpl = load_view_file("view/cropbody.tpl");
+ $tpl = get_markup_template("cropbody.tpl");
$o .= replace_macros($tpl,array(
'$filename' => $filename,
'$resource' => $a->config['imagecrop'] . '-' . $a->config['imagecrop_resolution'],
- '$image_url' => $a->get_baseurl() . '/photo/' . $filename
- ));
-
+ '$image_url' => $a->get_baseurl() . '/photo/' . $filename,
+ '$title' => t('Crop Image'),
+ '$desc' => t('Please adjust the image cropping for optimum viewing.'),
+ '$done' => t('Done Editing')
+ ));
return $o;
}
@@ -234,14 +245,14 @@ function profile_photo_crop_ui_head(&$a, $ph){
$r = $ph->store(local_user(), 0 , $hash, $filename, t('Profile Photos'), 1 );
if($r === false)
- notice( t('Image size reduction [640] failed.') . EOL );
+ notice( sprintf(t('Image size reduction [%s] failed.'),"640") . EOL );
else
$smallest = 1;
}
$a->config['imagecrop'] = $hash;
$a->config['imagecrop_resolution'] = $smallest;
- $a->page['htmlhead'] .= load_view_file("view/crophead.tpl");
+ $a->page['htmlhead'] .= get_markup_template("crophead.tpl");
return;
}}
diff --git a/mod/profiles.php b/mod/profiles.php
index 409999a3e..984420aa2 100644
--- a/mod/profiles.php
+++ b/mod/profiles.php
@@ -55,7 +55,8 @@ function profiles_post(&$a) {
$region = notags(trim($_POST['region']));
$postal_code = notags(trim($_POST['postal_code']));
$country_name = notags(trim($_POST['country_name']));
- $keywords = notags(trim($_POST['keywords']));
+ $pub_keywords = notags(trim($_POST['pub_keywords']));
+ $prv_keywords = notags(trim($_POST['prv_keywords']));
$marital = notags(trim($_POST['marital']));
if($marital != $orig[0]['marital'])
$maritalchanged = true;
@@ -147,7 +148,8 @@ function profiles_post(&$a) {
`homepage` = '%s',
`politic` = '%s',
`religion` = '%s',
- `keywords` = '%s',
+ `pub_keywords` = '%s',
+ `prv_keywords` = '%s',
`about` = '%s',
`interest` = '%s',
`contact` = '%s',
@@ -176,7 +178,8 @@ function profiles_post(&$a) {
dbesc($homepage),
dbesc($politic),
dbesc($religion),
- dbesc($keywords),
+ dbesc($pub_keywords),
+ dbesc($prv_keywords),
dbesc($about),
dbesc($interest),
dbesc($contact),
@@ -344,10 +347,13 @@ function profiles_content(&$a) {
require_once('include/profile_selectors.php');
- $tpl = load_view_file('view/profed_head.tpl');
+ $tpl = get_markup_template('profed_head.tpl');
- $opt_tpl = load_view_file("view/profile-hide-friends.tpl");
+ $opt_tpl = get_markup_template("profile-hide-friends.tpl");
$hide_friends = replace_macros($opt_tpl,array(
+ '$desc' => t('Hide my contact/friend list from viewers of this profile?'),
+ '$yes_str' => t('Yes'),
+ '$no_str' => t('No'),
'$yes_selected' => (($r[0]['hide-friends']) ? " checked=\"checked\" " : ""),
'$no_selected' => (($r[0]['hide-friends'] == 0) ? " checked=\"checked\" " : "")
));
@@ -358,8 +364,46 @@ function profiles_content(&$a) {
$is_default = (($r[0]['is-default']) ? 1 : 0);
- $tpl = load_view_file("view/profile_edit.tpl");
+ $tpl = get_markup_template("profile_edit.tpl");
$o .= replace_macros($tpl,array(
+ '$banner' => t('Edit Profile Details'),
+ '$submit' => t('Submit'),
+ '$viewprof' => t('View this profile'),
+ '$cr_prof' => t('Create a new profile using these settings'),
+ '$cl_prof' => t('Clone this profile'),
+ '$del_prof' => t('Delete this profile'),
+ '$lbl_profname' => t('Profile Name:'),
+ '$lbl_fullname' => t('Your Full Name:'),
+ '$lbl_title' => t('Title/Description:'),
+ '$lbl_gender' => t('Your Gender:'),
+ '$lbl_bd' => t("Birthday \x28y/m/d\x29:"),
+ '$lbl_address' => t('Street Address:'),
+ '$lbl_city' => t('Locality/City:'),
+ '$lbl_zip' => t('Postal/Zip Code:'),
+ '$lbl_country' => t('Country:'),
+ '$lbl_region' => t('Region/State:'),
+ '$lbl_marital' => t('<span class="heart">&hearts;</span> Marital Status:'),
+ '$lbl_with' => t("Who: \x28if applicable\x29"),
+ '$lbl_ex1' => t('Examples: cathy123, Cathy Williams, cathy@example.com'),
+ '$lbl_sexual' => t('Sexual Preference:'),
+ '$lbl_homepage' => t('Homepage URL:'),
+ '$lbl_politic' => t('Political Views:'),
+ '$lbl_religion' => t('Religious Views:'),
+ '$lbl_pubkey' => t('Public Keywords:'),
+ '$lbl_prvkey' => t('Private Keywords:'),
+ '$lbl_ex2' => t('Example: fishing photography software'),
+ '$lbl_pubdsc' => t("\x28Used for suggesting potential friends, can be seen by others\x29"),
+ '$lbl_prvdsc' => t("\x28Used for searching profiles, never shown to others\x29"),
+ '$lbl_about' => t('Tell us about yourself...'),
+ '$lbl_hobbies' => t('Hobbies/Interests'),
+ '$lbl_social' => t('Contact information and Social Networks'),
+ '$lbl_music' => t('Musical interests'),
+ '$lbl_book' => t('Books, literature'),
+ '$lbl_tv' => t('Television'),
+ '$lbl_film' => t('Film/dance/culture/entertainment'),
+ '$lbl_love' => t('Love/romance'),
+ '$lbl_work' => t('Work/employment'),
+ '$lbl_school' => t('School/education'),
'$disabled' => (($is_default) ? 'onclick="return false;" style="color: #BBBBFF;"' : ''),
'$baseurl' => $a->get_baseurl(),
'$profile_id' => $r[0]['id'],
@@ -383,7 +427,8 @@ function profiles_content(&$a) {
'$homepage' => $r[0]['homepage'],
'$politic' => $r[0]['politic'],
'$religion' => $r[0]['religion'],
- '$keywords' => $r[0]['keywords'],
+ '$pub_keywords' => $r[0]['pub_keywords'],
+ '$prv_keywords' => $r[0]['prv_keywords'],
'$music' => $r[0]['music'],
'$book' => $r[0]['book'],
'$tv' => $r[0]['tv'],
@@ -406,17 +451,24 @@ function profiles_content(&$a) {
local_user());
if(count($r)) {
- $o .= load_view_file('view/profile_listing_header.tpl');
- $tpl_default = load_view_file('view/profile_entry_default.tpl');
- $tpl = load_view_file('view/profile_entry.tpl');
+ $tpl_header = get_markup_template('profile_listing_header.tpl');
+ $o .= replace_macros($tpl_header,array(
+ '$header' => t('Profiles'),
+ '$chg_photo' => t('Change profile photo'),
+ '$cr_new' => t('Create New Profile')
+ ));
+
+
+ $tpl = get_markup_template('profile_entry.tpl');
foreach($r as $rr) {
- $template = (($rr['is-default']) ? $tpl_default : $tpl);
- $o .= replace_macros($template, array(
+ $o .= replace_macros($tpl, array(
'$photo' => $rr['thumb'],
'$id' => $rr['id'],
'$alt' => t('Profile Image'),
- '$profile_name' => $rr['profile-name']
+ '$profile_name' => $rr['profile-name'],
+ '$visible' => (($rr['is-default']) ? '<strong>' . t('Visible to everybody') . '</strong>'
+ : '<a href="' . $a->get_baseurl() . '/profperm/' . $rr['id'] . '" />' . t('Edit visibility') . '</a>')
));
}
}
diff --git a/mod/profperm.php b/mod/profperm.php
new file mode 100644
index 000000000..e70992a2b
--- /dev/null
+++ b/mod/profperm.php
@@ -0,0 +1,141 @@
+<?php
+
+function profperm_init(&$a) {
+
+ if(! local_user())
+ return;
+
+ $which = $a->user['nickname'];
+ $profile = $a->argv[1];
+
+ profile_load($a,$which,$profile);
+
+}
+
+
+function profperm_content(&$a) {
+
+ if(! local_user()) {
+ notice( t('Permission denied') . EOL);
+ return;
+ }
+
+
+ if($a->argc < 2) {
+ notice( t('Invalid profile identifier.') . EOL );
+ return;
+ }
+
+ if(($a->argc > 2) && intval($a->argv[1]) && intval($a->argv[2])) {
+ $r = q("SELECT `id` FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `self` = 0
+ AND `network` = 'dfrn' AND `id` = %d AND `uid` = %d LIMIT 1",
+ intval($a->argv[2]),
+ intval(local_user())
+ );
+ if(count($r))
+ $change = intval($a->argv[2]);
+ }
+
+
+ if(($a->argc > 1) && (intval($a->argv[1]))) {
+ $r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d AND `is-default` = 0 LIMIT 1",
+ intval($a->argv[1]),
+ intval(local_user())
+ );
+ if(! count($r)) {
+ notice( t('Invalid profile identifier.') . EOL );
+ return;
+ }
+ $profile = $r[0];
+
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `profile-id` = %d",
+ intval(local_user()),
+ intval($a->argv[1])
+ );
+
+ $ingroup = array();
+ if(count($r))
+ foreach($r as $member)
+ $ingroup[] = $member['id'];
+
+ $members = $r;
+
+ if($change) {
+ if(in_array($change,$ingroup)) {
+ q("UPDATE `contact` SET `profile-id` = 0 WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval($change),
+ intval(local_user())
+ );
+ }
+ else {
+ q("UPDATE `contact` SET `profile-id` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval($a->argv[1]),
+ intval($change),
+ intval(local_user())
+ );
+
+ }
+
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `profile-id` = %d",
+ intval(local_user()),
+ intval($a->argv[1])
+ );
+
+ $members = $r;
+
+ $ingroup = array();
+ if(count($r))
+ foreach($r as $member)
+ $ingroup[] = $member['id'];
+ }
+
+ $o .= '<h2>' . t('Profile Visibility Editor') . '</h2>';
+
+ $o .= '<h3>' . t('Profile') . ' \'' . $profile['profile-name'] . '\'</h3>';
+
+ $o .= '<div id="prof-edit-desc">' . t('Click on a contact to add or remove.') . '</div>';
+
+ }
+
+ $o .= '<div id="prof-update-wrapper">';
+ if($change)
+ $o = '';
+
+ $o .= '<div id="prof-members">';
+ $o .= '<h3>' . t('Visible To') . '</h3>';
+ foreach($members as $member) {
+ if($member['url']) {
+ $member['click'] = 'profChangeMember(' . $profile['id'] . ',' . $member['id'] . '); return true;';
+ $o .= micropro($member,true,'mpprof');
+ }
+ }
+ $o .= '</div><div id="prof-members-end"></div>';
+ $o .= '<hr id="prof-separator" />';
+ $o .= '<div id="prof-all-contacts">';
+
+ $o .= '<h3>' . t("All Contacts \x28with secure profile access\x29") . '</h3>';
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0
+ AND `network` = 'dfrn' ORDER BY `name` ASC",
+ intval(local_user())
+ );
+
+ if(count($r)) {
+ foreach($r as $member) {
+ if(! in_array($member['id'],$ingroup)) {
+ $member['click'] = 'profChangeMember(' . $profile['id'] . ',' . $member['id'] . '); return true;';
+ $o .= micropro($member,true,'mpprof');
+ }
+ }
+ }
+
+ $o .= '</div><div id="prof-all-contacts-end"></div>';
+
+ if($change) {
+ echo $o;
+ killme();
+ }
+ $o .= '</div>';
+ return $o;
+
+}
+
diff --git a/mod/redir.php b/mod/redir.php
index ac21aa17e..8d0c8f4b3 100644
--- a/mod/redir.php
+++ b/mod/redir.php
@@ -5,6 +5,7 @@ function redir_init(&$a) {
if((! local_user()) || (! ($a->argc == 2)) || (! intval($a->argv[1])))
goaway($a->get_baseurl());
$cid = $a->argv[1];
+ $url = ((x($_GET,'url')) ? $_GET['url'] : '');
$r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($cid),
@@ -37,8 +38,8 @@ function redir_init(&$a) {
);
logger('mod_redir: ' . $r[0]['name'] . ' ' . $sec, LOGGER_DEBUG);
-
+ $dest = (($url) ? '&destination_url=' . $url : '');
goaway ($r[0]['poll'] . '?dfrn_id=' . $dfrn_id
- . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec);
+ . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec . $dest );
}
diff --git a/mod/register.php b/mod/register.php
index fdf488b1a..c9521f9be 100644
--- a/mod/register.php
+++ b/mod/register.php
@@ -70,9 +70,9 @@ function register_post(&$a) {
$err = '';
- if(strlen($username) > 48)
+ if(mb_strlen($username) > 48)
$err .= t('Please use a shorter name.') . EOL;
- if(strlen($username) < 3)
+ if(mb_strlen($username) < 3)
$err .= t('Name too short.') . EOL;
// I don't really like having this rule, but it cuts down
@@ -85,8 +85,11 @@ function register_post(&$a) {
// So now we are just looking for a space in the full name.
$loose_reg = get_config('system','no_regfullname');
- if((! $loose_reg) && (! strpos($username,' ')))
- $err .= t("That doesn\'t appear to be your full \x28First Last\x29 name.") . EOL;
+ if(! $loose_reg) {
+ $username = mb_convert_case($username,MB_CASE_TITLE,'UTF-8');
+ if(! strpos($username,' '))
+ $err .= t("That doesn't appear to be your full \x28First Last\x29 name.") . EOL;
+ }
if(! allowed_email($email))
$err .= t('Your email domain is not among those allowed on this site.') . EOL;
@@ -199,6 +202,24 @@ function register_post(&$a) {
return;
}
+ /**
+ * if somebody clicked submit twice very quickly, they could end up with two accounts
+ * due to race condition. Remove this one.
+ */
+
+ $r = q("SELECT `uid` FROM `user`
+ WHERE `nickname` = '%s' ",
+ dbesc($nickname)
+ );
+ if((count($r) > 1) && $newuid) {
+ $err .= t('Nickname is already registered. Please choose another.') . EOL;
+ q("DELETE FROM `user` WHERE `uid` = %d LIMIT 1",
+ intval($newuid)
+ );
+ notice ($err);
+ return;
+ }
+
if(x($newuid) !== false) {
$r = q("INSERT INTO `profile` ( `uid`, `profile-name`, `is-default`, `name`, `photo`, `thumb`, `publish`, `net-publish` )
VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, %d ) ",
@@ -298,7 +319,7 @@ function register_post(&$a) {
if( $a->config['register_policy'] == REGISTER_OPEN ) {
- $email_tpl = load_view_file("view/register_open_eml.tpl");
+ $email_tpl = get_intltext_template("register_open_eml.tpl");
$email_tpl = replace_macros($email_tpl, array(
'$sitename' => $a->config['sitename'],
'$siteurl' => $a->get_baseurl(),
@@ -307,8 +328,11 @@ function register_post(&$a) {
'$password' => $new_password,
'$uid' => $newuid ));
- $res = mail($email, t('Registration details for ') . $a->config['sitename'],
- $email_tpl, 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME']);
+ $res = mail($email, sprintf(t('Registration details for %s'), $a->config['sitename']),
+ $email_tpl,
+ 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
+ . 'Content-type: text/plain; charset=UTF-8' . "\n"
+ . 'Content-transfer-encoding: 8bit' );
if($res) {
@@ -333,7 +357,7 @@ function register_post(&$a) {
dbesc($new_password)
);
- $email_tpl = load_view_file("view/register_verify_eml.tpl");
+ $email_tpl = get_intltext_template("register_verify_eml.tpl");
$email_tpl = replace_macros($email_tpl, array(
'$sitename' => $a->config['sitename'],
'$siteurl' => $a->get_baseurl(),
@@ -344,9 +368,11 @@ function register_post(&$a) {
'$hash' => $hash
));
- $res = mail($a->config['admin_email'], t('Registration request at ') . $a->config['sitename'],
- $email_tpl,'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME']);
-
+ $res = mail($a->config['admin_email'], sprintf(t('Registration request at %s'), $a->config['sitename']),
+ $email_tpl,
+ 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
+ . 'Content-type: text/plain; charset=UTF-8' . "\n"
+ . 'Content-transfer-encoding: 8bit' );
if($res) {
notice( t('Your registration is pending approval by the site owner.') . EOL ) ;
goaway($a->get_baseurl());
@@ -409,7 +435,7 @@ function register_content(&$a) {
$profile_publish_reg = '<input type="hidden" name="profile_publish_reg" value="1" />';
}
else {
- $publish_tpl = load_view_file("view/profile_publish.tpl");
+ $publish_tpl = get_markup_template("profile_publish.tpl");
$profile_publish = replace_macros($publish_tpl,array(
'$instance' => 'reg',
'$pubdesc' => t('Include your profile in member directory?'),
@@ -424,7 +450,7 @@ function register_content(&$a) {
$license = t('Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.');
- $o = load_view_file("view/register.tpl");
+ $o = get_markup_template("register.tpl");
$o = replace_macros($o, array(
'$oidhtml' => $oidhtml,
'$realpeople' => $realpeople,
diff --git a/mod/regmod.php b/mod/regmod.php
index 00cfa06e2..fe29cb185 100644
--- a/mod/regmod.php
+++ b/mod/regmod.php
@@ -51,7 +51,7 @@ function regmod_content(&$a) {
$r = q("DELETE FROM `register` WHERE `hash` = '%s' LIMIT 1",
dbesc($register[0]['hash'])
);
- notice( t('Registration revoked for ') . $user[0]['username'] . EOL);
+ notice( sprintf(t('Registration revoked for %s'), $user[0]['username']) . EOL);
return;
}
@@ -79,7 +79,7 @@ function regmod_content(&$a) {
proc_run('php',"include/directory.php","$url");
}
- $email_tpl = load_view_file("view/register_open_eml.tpl");
+ $email_tpl = get_intltext_template("register_open_eml.tpl");
$email_tpl = replace_macros($email_tpl, array(
'$sitename' => $a->config['sitename'],
'$siteurl' => $a->get_baseurl(),
@@ -89,8 +89,11 @@ function regmod_content(&$a) {
'$uid' => $user[0]['uid']
));
- $res = mail($user[0]['email'], t('Registration details for '). $a->config['sitename'],
- $email_tpl,'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] );
+ $res = mail($user[0]['email'], sprintf(t('Registration details for %s'), $a->config['sitename']),
+ $email_tpl,
+ 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
+ . 'Content-type: text/plain; charset=UTF-8' . "\n"
+ . 'Content-transfer-encoding: 8bit' );
if($res) {
notice( t('Account approved.') . EOL );
diff --git a/mod/removeme.php b/mod/removeme.php
index 62b9a6d13..6a56963b6 100644
--- a/mod/removeme.php
+++ b/mod/removeme.php
@@ -35,7 +35,7 @@ function removeme_content(&$a) {
$_SESSION['remove_account_verify'] = $hash;
- $tpl = load_view_file('view/removeme.tpl');
+ $tpl = get_markup_template('removeme.tpl');
$o .= replace_macros($tpl, array(
'$basedir' => $a->get_baseurl(),
'$hash' => $hash,
diff --git a/mod/rsd_xml.php b/mod/rsd_xml.php
new file mode 100644
index 000000000..5bf4663fd
--- /dev/null
+++ b/mod/rsd_xml.php
@@ -0,0 +1,24 @@
+<?php
+
+
+
+function rsd_xml_content(&$a) {
+ header ("Content-Type: text/xml");
+ echo '<?xml version="1.0" encoding="UTF-8"?>
+ <rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd">
+ <service>
+ <engineName>Friendika</engineName>
+ <engineLink>http://friendika.com/</engineLink>
+ <apis>
+ <api name="Twitter" preferred="true" apiLink="'.$a->get_baseurl().'/api/" blogID="">
+ <settings>
+ <docs>http://status.net/wiki/TwitterCompatibleAPI</docs>
+ <setting name="OAuth">false</setting>
+ </settings>
+ </api>
+ </apis>
+ </service>
+ </rsd>
+ ';
+die();
+} \ No newline at end of file
diff --git a/mod/salmon.php b/mod/salmon.php
index 885ba470c..c2f76aa0a 100644
--- a/mod/salmon.php
+++ b/mod/salmon.php
@@ -89,7 +89,7 @@ function salmon_post(&$a) {
// Create a fake feed wrapper so simplepie doesn't choke
- $tpl = load_view_file('view/fake_feed.tpl');
+ $tpl = get_markup_template('fake_feed.tpl');
$base = substr($data,strpos($data,'<entry'));
diff --git a/mod/search.php b/mod/search.php
index db7279fb5..33032e183 100644
--- a/mod/search.php
+++ b/mod/search.php
@@ -9,6 +9,15 @@ function search_post(&$a) {
function search_content(&$a) {
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ notice( t('Public access denied.') . EOL);
+ return;
+ }
+
+ require_once("include/bbcode.php");
+ require_once('include/security.php');
+ require_once('include/conversation.php');
+
if(x($_SESSION,'theme'))
unset($_SESSION['theme']);
@@ -26,8 +35,6 @@ function search_content(&$a) {
if(! $search)
return $o;
- require_once("include/bbcode.php");
- require_once('include/security.php');
$sql_extra = "
AND `item`.`allow_cid` = ''
@@ -36,12 +43,20 @@ function search_content(&$a) {
AND `item`.`deny_gid` = ''
";
+ $s_bool = "AND MATCH (`item`.`body`) AGAINST ( '%s' IN BOOLEAN MODE )";
+ $s_regx = "AND `item`.`body` REGEXP '%s' ";
+
+ if(mb_strlen($search) >= 3)
+ $search_alg = $s_bool;
+ else
+ $search_alg = $s_regx;
+
$r = q("SELECT COUNT(*) AS `total`
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0
AND ( `wall` = 1 OR `contact`.`uid` = %d )
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
- AND MATCH (`item`.`body`) AGAINST ( '%s' IN BOOLEAN MODE )
+ $search_alg
$sql_extra ",
intval(local_user()),
dbesc($search)
@@ -57,7 +72,7 @@ function search_content(&$a) {
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
- `contact`.`network`, `contact`.`thumb`, `contact`.`self`,
+ `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
`user`.`nickname`
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
@@ -65,74 +80,16 @@ function search_content(&$a) {
WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0
AND ( `wall` = 1 OR `contact`.`uid` = %d )
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
- AND MATCH (`item`.`body`) AGAINST ( '%s' IN BOOLEAN MODE )
+ $search_alg
$sql_extra
ORDER BY `parent` DESC ",
intval(local_user()),
dbesc($search)
);
- $tpl = load_view_file('view/search_item.tpl');
- $droptpl = load_view_file('view/wall_fake_drop.tpl');
-
- $return_url = $_SESSION['return_url'] = $a->cmd;
-
- if(count($r)) {
-
- foreach($r as $item) {
-
- $total = 0;
- $comment = '';
- $owner_url = '';
- $owner_photo = '';
- $owner_name = '';
- $sparkle = '';
-
- if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE)))
- && ($item['id'] != $item['parent']))
- continue;
-
- $total ++;
-
- $profile_name = ((strlen($item['author-name'])) ? $item['author-name'] : $item['name']);
- $profile_avatar = ((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']);
- $profile_link = ((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
-
-
- $location = (($item['location']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
- $coord = (($item['coord']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
- if($coord) {
- if($location)
- $location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
- else
- $location = '<span class="smalltext">' . $coord . '</span>';
- }
-
- $drop = replace_macros($droptpl,array('$id' => $item['id']));
- $lock = '<div class="wall-item-lock"></div>';
-
- $o .= replace_macros($tpl,array(
- '$id' => $item['item_id'],
- '$linktitle' => t('View $name\'s profile'),
- '$profile_url' => $profile_link,
- '$name' => $profile_name,
- '$sparkle' => $sparkle,
- '$lock' => $lock,
- '$thumb' => $profile_avatar,
- '$title' => $item['title'],
- '$body' => bbcode($item['body']),
- '$ago' => relative_date($item['created']),
- '$location' => $location,
- '$indent' => '',
- '$owner_url' => $owner_url,
- '$owner_photo' => $owner_photo,
- '$owner_name' => $owner_name,
- '$drop' => $drop,
- '$conv' => '<a href="' . $a->get_baseurl() . '/display/' . $item['nickname'] . '/' . $item['id'] . '">' . t('View in context') . '</a>'
- ));
-
- }
- }
+
+
+ $o .= conversation($a,$r,'search',false);
$o .= paginate($a);
diff --git a/mod/settings.php b/mod/settings.php
index ebe07612e..cba6958b3 100644
--- a/mod/settings.php
+++ b/mod/settings.php
@@ -5,6 +5,7 @@ function settings_init(&$a) {
if(local_user()) {
profile_load($a,$a->user['nickname']);
}
+
}
@@ -63,12 +64,54 @@ function settings_post(&$a) {
$defloc = ((x($_POST,'defloc')) ? notags(trim($_POST['defloc'])) : '');
$openid = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : '');
$maxreq = ((x($_POST,'maxreq')) ? intval($_POST['maxreq']) : 0);
+ $expire = ((x($_POST,'expire')) ? intval($_POST['expire']) : 0);
$allow_location = (((x($_POST,'allow_location')) && (intval($_POST['allow_location']) == 1)) ? 1: 0);
$publish = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0);
$net_publish = (((x($_POST,'profile_in_netdirectory')) && (intval($_POST['profile_in_netdirectory']) == 1)) ? 1: 0);
$old_visibility = (((x($_POST,'visibility')) && (intval($_POST['visibility']) == 1)) ? 1 : 0);
$page_flags = (((x($_POST,'page-flags')) && (intval($_POST['page-flags']))) ? intval($_POST['page-flags']) : 0);
+ $blockwall = (((x($_POST,'blockwall')) && (intval($_POST['blockwall']) == 1)) ? 0: 1); // this setting is inverted!
+
+ $mail_server = ((x($_POST,'mail_server')) ? $_POST['mail_server'] : '');
+ $mail_port = ((x($_POST,'mail_port')) ? $_POST['mail_port'] : '');
+ $mail_ssl = ((x($_POST,'mail_ssl')) ? strtolower(trim($_POST['mail_ssl'])) : '');
+ $mail_user = ((x($_POST,'mail_user')) ? $_POST['mail_user'] : '');
+ $mail_pass = ((x($_POST,'mail_pass')) ? trim($_POST['mail_pass']) : '');
+ $mail_replyto = ((x($_POST,'mail_replyto')) ? $_POST['mail_replyto'] : '');
+ $mail_pubmail = ((x($_POST,'mail_pubmail')) ? $_POST['mail_pubmail'] : '');
+
+
+ $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
+
+ if(! $mail_disabled) {
+ $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
+ intval(local_user())
+ );
+ if(! count($r)) {
+ q("INSERT INTO `mailacct` (`uid`) VALUES (%d)",
+ intval(local_user())
+ );
+ }
+ if(strlen($mail_pass)) {
+ $pass = '';
+ openssl_public_encrypt($mail_pass,$pass,$a->user['pubkey']);
+ q("UPDATE `mailacct` SET `pass` = '%s' WHERE `uid` = %d LIMIT 1",
+ dbesc(bin2hex($pass)),
+ intval(local_user())
+ );
+ }
+ $r = q("UPDATE `mailacct` SET `server` = '%s', `port` = %d, `ssltype` = '%s', `user` = '%s',
+ `mailbox` = 'INBOX', `reply_to` = '%s', `pubmail` = %d WHERE `uid` = %d LIMIT 1",
+ dbesc($mail_server),
+ intval($mail_port),
+ dbesc($mail_ssl),
+ dbesc($mail_user),
+ dbesc($mail_replyto),
+ intval($mail_pubmail),
+ intval(local_user())
+ );
+ }
$notify = 0;
@@ -139,7 +182,7 @@ function settings_post(&$a) {
$openidserver = '';
}
- $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `theme` = '%s', `maxreq` = %d, `openidserver` = '%s' WHERE `uid` = %d LIMIT 1",
+ $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `theme` = '%s', `maxreq` = %d, `expire` = %d, `openidserver` = '%s', `blockwall` = %d WHERE `uid` = %d LIMIT 1",
dbesc($username),
dbesc($email),
dbesc($openid),
@@ -154,7 +197,9 @@ function settings_post(&$a) {
intval($allow_location),
dbesc($theme),
intval($maxreq),
+ intval($expire),
dbesc($openidserver),
+ intval($blockwall),
intval(local_user())
);
if($r)
@@ -238,11 +283,34 @@ function settings_content(&$a) {
$defloc = $a->user['default-location'];
$openid = $a->user['openid'];
$maxreq = $a->user['maxreq'];
+ $expire = ((intval($a->user['expire'])) ? $a->user['expire'] : '');
+ $blockwall = $a->user['blockwall'];
if(! strlen($a->user['timezone']))
$timezone = date_default_timezone_get();
- $pageset_tpl = load_view_file('view/pagetypes.tpl');
+
+ $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
+
+ if(! $mail_disabled) {
+ $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
+ local_user()
+ );
+ }
+ else {
+ $r = null;
+ $imap_disabled = (($mail_disabled) ? ' disabled="disabled" ' : '');
+ }
+
+ $mail_server = ((count($r)) ? $r[0]['server'] : '');
+ $mail_port = ((count($r) && intval($r[0]['port'])) ? intval($r[0]['port']) : '');
+ $mail_ssl = ((count($r)) ? $r[0]['ssltype'] : '');
+ $mail_user = ((count($r)) ? $r[0]['user'] : '');
+ $mail_replyto = ((count($r)) ? $r[0]['reply_to'] : '');
+ $mail_pubmail = ((count($r)) ? $r[0]['pubmail'] : 0);
+
+
+ $pageset_tpl = get_markup_template('pagetypes.tpl');
$pagetype = replace_macros($pageset_tpl,array(
'$normal' => (($a->user['page-flags'] == PAGE_NORMAL) ? " checked=\"checked\" " : ""),
'$soapbox' => (($a->user['page-flags'] == PAGE_SOAPBOX) ? " checked=\"checked\" " : ""),
@@ -251,7 +319,15 @@ function settings_content(&$a) {
'$page_normal' => PAGE_NORMAL,
'$page_soapbox' => PAGE_SOAPBOX,
'$page_community' => PAGE_COMMUNITY,
- '$page_freelove' => PAGE_FREELOVE
+ '$page_freelove' => PAGE_FREELOVE,
+ '$n_l' => t('Normal Account'),
+ '$n_d' => t('This account is a normal personal profile'),
+ '$s_l' => t('Soapbox Account'),
+ '$s_d' => t('Automatically approve all connection/friend requests as read-only fans'),
+ '$c_l' => t('Community/Celebrity Account'),
+ '$c_d' => t('Automatically approve all connection/friend requests as read-write fans'),
+ '$f_l' => t('Automatic Friend Account'),
+ '$f_d' => t('Automatically approve all connection/friend requests as friends')
));
$noid = get_config('system','no_openid');
@@ -268,17 +344,23 @@ function settings_content(&$a) {
$profile_in_dir = '<input type="hidden" name="profile_in_directory" value="1" />';
}
else {
- $opt_tpl = load_view_file("view/profile-in-directory.tpl");
+ $opt_tpl = get_markup_template("profile-in-directory.tpl");
$profile_in_dir = replace_macros($opt_tpl,array(
+ '$desc' => t('Publish your default profile in site directory?'),
+ '$yes_str' => t('Yes'),
+ '$no_str' => t('No'),
'$yes_selected' => (($profile['publish']) ? " checked=\"checked\" " : ""),
'$no_selected' => (($profile['publish'] == 0) ? " checked=\"checked\" " : "")
));
}
if(strlen(get_config('system','directory_submit_url'))) {
- $opt_tpl = load_view_file("view/profile-in-netdir.tpl");
+ $opt_tpl = get_markup_template("profile-in-netdir.tpl");
$profile_in_net_dir = replace_macros($opt_tpl,array(
+ '$desc' => t('Publish your default profile in global social directory?'),
+ '$yes_str' => t('Yes'),
+ '$no_str' => t('No'),
'$yes_selected' => (($profile['net-publish']) ? " checked=\"checked\" " : ""),
'$no_selected' => (($profile['net-publish'] == 0) ? " checked=\"checked\" " : "")
));
@@ -294,18 +376,7 @@ function settings_content(&$a) {
if($invisible)
notice( t('Profile is <strong>not published</strong>.') . EOL );
- $nickname_block = load_view_file("view/settings_nick_set.tpl");
- $nickname_subdir = '';
- if(strlen($a->get_path())) {
- $subdir_tpl = load_view_file('view/settings_nick_subdir.tpl');
- $nickname_subdir = replace_macros($subdir_tpl, array(
- '$baseurl' => $a->get_baseurl(),
- '$nickname' => $nickname,
- '$hostname' => $a->get_hostname()
- ));
- }
-
$theme_selector = '<select name="theme" id="theme-select" >';
$files = glob('view/theme/*');
@@ -321,28 +392,64 @@ function settings_content(&$a) {
$theme_selector .= '<option val="' . basename($file) . '"' . $selected . '>' . basename($file) . '</option>';
}
}
+
$theme_selector .= '</select>';
+ $subdir = ((strlen($a->get_path())) ? '<br />' . t('or') . ' ' . $a->get_baseurl() . '/profile/' . $nickname : '');
+
+ $tpl_addr = get_markup_template("settings_nick_set.tpl");
- $nickname_block = replace_macros($nickname_block,array(
+ $prof_addr = replace_macros($tpl_addr,array(
+ '$desc' => t('Your Identity Address is'),
'$nickname' => $nickname,
- '$uid' => local_user(),
- '$subdir' => $nickname_subdir,
- '$basepath' => $a->get_hostname(),
- '$baseurl' => $a->get_baseurl()));
+ '$subdir' => $subdir,
+ '$basepath' => $a->get_hostname()
+ ));
- $stpl = load_view_file('view/settings.tpl');
+ $stpl = get_markup_template('settings.tpl');
$celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false);
+ $uexport = '<div id="uexport-link"><a href="uexport" >' . t('Export Personal Data') . '</a></div>';
+
+
$o .= replace_macros($stpl,array(
+ '$ptitle' => t('Account Settings'),
+ '$lbl_plug' => t('Plugin Settings'),
+ '$lbl_basic' => t('Basic Settings'),
+ '$lbl_fn' => t('Full Name:'),
+ '$lbl_email' => t('Email Address:'),
+ '$lbl_tz' => t('Your Timezone:'),
+ '$lbl_loc1' => t('Default Post Location:'),
+ '$lbl_loc2' => t('Use Browser Location:'),
+ '$lbl_theme' => t('Display Theme:'),
+ '$submit' => t('Submit'),
+ '$lbl_prv' => t('Security and Privacy Settings'),
+ '$lbl_maxreq' => t('Maximum Friend Requests/Day:'),
+ '$lbl_maxrdesc' => t("\x28to prevent spam abuse\x29"),
+ '$lbl_rempost' => t('Allow friends to post to your profile page:'),
+ '$lbl_exp1' => t("Automatically expire \x28delete\x29 posts older than"),
+ '$lbl_exp2' => t('days'),
+ '$lbl_not1' => t('Notification Settings'),
+ '$lbl_not2' => t('Send a notification email when:'),
+ '$lbl_not3' => t('You receive an introduction'),
+ '$lbl_not4' => t('Your introductions are confirmed'),
+ '$lbl_not5' => t('Someone writes on your profile wall'),
+ '$lbl_not6' => t('Someone writes a followup comment'),
+ '$lbl_not7' => t('You receive a private message'),
+ '$lbl_pass1' => t('Password Settings'),
+ '$lbl_pass2' => t('Leave password fields blank unless changing'),
+ '$lbl_pass3' => t('New Password:'),
+ '$lbl_pass4' => t('Confirm:'),
+ '$lbl_advn' => t('Advanced Page Settings'),
'$baseurl' => $a->get_baseurl(),
'$oidhtml' => $oidhtml,
+ '$uexport' => $uexport,
'$uid' => local_user(),
'$username' => $username,
'$openid' => $openid,
'$email' => $email,
- '$nickname_block' => $nickname_block,
+ '$nickname_block' => $prof_addr,
'$timezone' => $timezone,
'$zoneselect' => select_timezone($timezone),
'$defloc' => $defloc,
@@ -350,6 +457,7 @@ function settings_content(&$a) {
'$profile_in_dir' => $profile_in_dir,
'$profile_in_net_dir' => $profile_in_net_dir,
'$permissions' => t('Default Post Permissions'),
+ '$permdesc' => t("\x28click to open/close\x29"),
'$visibility' => $profile['net-publish'],
'$aclselect' => populate_acl($a->user,$celeb),
'$sel_notify1' => (($notify & NOTIFY_INTRO) ? ' checked="checked" ' : ''),
@@ -358,8 +466,27 @@ function settings_content(&$a) {
'$sel_notify4' => (($notify & NOTIFY_COMMENT) ? ' checked="checked" ' : ''),
'$sel_notify5' => (($notify & NOTIFY_MAIL) ? ' checked="checked" ' : ''),
'$maxreq' => $maxreq,
+ '$expire' => $expire,
+ '$blockw_checked' => (($blockwall) ? '' : ' checked="checked" ' ),
'$theme' => $theme_selector,
- '$pagetype' => $pagetype
+ '$pagetype' => $pagetype,
+ '$lbl_imap0' => t('Email/Mailbox Setup'),
+ '$imap_desc' => t("If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox."),
+ '$lbl_imap1' => t('IMAP server name:'),
+ '$imap_server' => $mail_server,
+ '$lbl_imap2' => t('IMAP port:'),
+ '$imap_port' => $mail_port,
+ '$lbl_imap3' => t("Security \x28TLS or SSL\x29:"),
+ '$imap_ssl' => $mail_ssl,
+ '$lbl_imap4' => t('Email login name:'),
+ '$imap_user' => $mail_user,
+ '$lbl_imap5' => t('Email password:'),
+ '$lbl_imap6' => t("Reply-to address \x28Optional\x29:"),
+ '$imap_replyto' => $mail_replyto,
+ '$lbl_imap7' => t('Send public posts to all email contacts:'),
+ '$pubmail_checked' => (($mail_pubmail) ? ' checked="checked" ' : ''),
+ '$mail_disabled' => (($mail_disabled) ? '<div class="error-message">' . t('Email access is disabled on this site.') . '</div>' : ''),
+ '$imap_disabled' => $imap_disabled
));
call_hooks('settings_form',$o);
diff --git a/mod/share.php b/mod/share.php
new file mode 100644
index 000000000..f355a842a
--- /dev/null
+++ b/mod/share.php
@@ -0,0 +1,23 @@
+<?php
+
+require_once('bbcode.php');
+
+function share_init(&$a) {
+
+ $post_id = (($a->argc > 1) ? intval($a->argv[1]) : 0);
+ if((! $post_id) || (! local_user()))
+ killme();
+
+ $r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1",
+ intval($post_id)
+ );
+ if(! count($r) || $r[0]['private'])
+ killme();
+
+ $o = '';
+
+ $o .= '&#x2672; <a href="' . $r[0]['author-link'] . '">' . $r[0]['author-name'] . '</a><br />';
+ $o .= bbcode($r[0]['body'], true);
+ echo $o . '<br />';
+ killme();
+}
diff --git a/mod/uexport.php b/mod/uexport.php
new file mode 100644
index 000000000..96f062c41
--- /dev/null
+++ b/mod/uexport.php
@@ -0,0 +1,72 @@
+<?php
+
+function uexport_init(&$a) {
+
+ if(! local_user())
+ killme();
+
+ $user = array();
+ $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
+ local_user()
+ );
+ if(count($r)) {
+ foreach($r as $rr)
+ foreach($rr as $k => $v)
+ $user[$k] = $v;
+
+ }
+ $contact = array();
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %d ",
+ intval(local_user())
+ );
+ if(count($r)) {
+ foreach($r as $rr)
+ foreach($rr as $k => $v)
+ $contact[][$k] = $v;
+
+ }
+
+ $profile = array();
+ $r = q("SELECT * FROM `profile` WHERE `uid` = %d ",
+ intval(local_user())
+ );
+ if(count($r)) {
+ foreach($r as $rr)
+ foreach($rr as $k => $v)
+ $profile[][$k] = $v;
+ }
+
+ $output = array('user' => $user, 'contact' => $contact, 'profile' => $profile );
+
+ header("Content-type: application/json");
+ echo str_replace('\\/','/',json_encode($output));
+
+ $r = q("SELECT count(*) as `total` FROM `item` WHERE `uid` = %d ",
+ intval(local_user())
+ );
+ if(count($r))
+ $total = $r[0]['total'];
+
+ // chunk the output to avoid exhausting memory
+
+ for($x = 0; $x < $total; $x += 500) {
+ $item = array();
+ $r = q("SELECT * FROM `item` WHERE `uid` = %d LIMIT %d, %d",
+ intval(local_user()),
+ intval($x),
+ intval(500)
+ );
+ if(count($r)) {
+ foreach($r as $rr)
+ foreach($rr as $k => $v)
+ $item[][$k] = $v;
+ }
+
+ $output = array('item' => $item);
+ echo str_replace('\\/','/',json_encode($output));
+ }
+
+
+ killme();
+
+} \ No newline at end of file
diff --git a/mod/update_network.php b/mod/update_network.php
index cf9f11f58..36de0722a 100644
--- a/mod/update_network.php
+++ b/mod/update_network.php
@@ -19,6 +19,17 @@ function update_network_content(&$a) {
$replace = "<img\${1} dst=\"\${2}\"";
$text = preg_replace($pattern, $replace, $text);
+ $replace = '<br />' . t('[Embedded content - reload page to view]') . '<br />';
+ $pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
+ $text = preg_replace($pattern, $replace, $text);
+ $pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
+ $text = preg_replace($pattern, $replace, $text);
+ $pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
+ $text = preg_replace($pattern, $replace, $text);
+ $pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
+ $text = preg_replace($pattern, $replace, $text);
+
+
echo str_replace("\t",' ',$text);
echo (($_GET['msie'] == 1) ? '</div>' : '</section>');
echo "</body></html>\r\n";
diff --git a/mod/update_profile.php b/mod/update_profile.php
index 13c519d1c..c4884b30f 100644
--- a/mod/update_profile.php
+++ b/mod/update_profile.php
@@ -38,6 +38,16 @@ function update_profile_content(&$a) {
$replace = "<img\${1} dst=\"\${2}\"";
$text = preg_replace($pattern, $replace, $text);
+ $replace = '<br />' . t('[Embedded content - reload page to view]') . '<br />';
+ $pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
+ $text = preg_replace($pattern, $replace, $text);
+ $pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
+ $text = preg_replace($pattern, $replace, $text);
+ $pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
+ $text = preg_replace($pattern, $replace, $text);
+ $pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
+ $text = preg_replace($pattern, $replace, $text);
+
/**
* reportedly some versions of MSIE don't handle tabs in XMLHttpRequest documents very well
*/
diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php
index 90ff85b9d..732607b18 100644
--- a/mod/viewcontacts.php
+++ b/mod/viewcontacts.php
@@ -2,13 +2,21 @@
function viewcontacts_init(&$a) {
- profile_load($a,$a->argv[1]);
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ return;
+ }
+ profile_load($a,$a->argv[1]);
}
function viewcontacts_content(&$a) {
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ notice( t('Public access denied.') . EOL);
+ return;
+ }
+
if(((! count($a->profile)) || ($a->profile['hide-friends']))) {
notice( t('Permission denied.') . EOL);
return;
@@ -33,7 +41,7 @@ function viewcontacts_content(&$a) {
return $o;
}
- $tpl = load_view_file("view/viewcontact_template.tpl");
+ $tpl = get_markup_template("viewcontact_template.tpl");
foreach($r as $rr) {
if($rr['self'])
@@ -41,9 +49,10 @@ function viewcontacts_content(&$a) {
$o .= replace_macros($tpl, array(
'$id' => $rr['id'],
- '$alt_text' => t('Visit ') . $rr['name'] . t('\'s profile'),
+ '$alt_text' => t('Visit $username\'s profile'),
'$thumb' => $rr['thumb'],
'$name' => substr($rr['name'],0,20),
+ '$username' => $rr['name'],
'$url' => $rr['url']
));
}
diff --git a/mod/wall_upload.php b/mod/wall_upload.php
index b5725311d..f7638b730 100644
--- a/mod/wall_upload.php
+++ b/mod/wall_upload.php
@@ -53,7 +53,7 @@ function wall_upload_post(&$a) {
$maximagesize = get_config('system','maximagesize');
if(($maximagesize) && ($filesize > $maximagesize)) {
- notice( t('Image exceeds size limit of ') . $maximagesize . EOL);
+ notice( sprintf(t('Image exceeds size limit of %d'), $maximagesize) . EOL);
@unlink($src);
return;
}
diff --git a/mod/xrd.php b/mod/xrd.php
index a0ecbaea8..8ac6ff7cf 100644
--- a/mod/xrd.php
+++ b/mod/xrd.php
@@ -27,7 +27,7 @@ function xrd_content(&$a) {
header("Content-type: text/xml");
- $tpl = load_view_file('view/xrd_person.tpl');
+ $tpl = file_get_contents('view/xrd_person.tpl');
$o = replace_macros($tpl, array(
'$accturi' => $uri,
diff --git a/update.php b/update.php
index fe8052b00..541d59946 100644
--- a/update.php
+++ b/update.php
@@ -326,7 +326,7 @@ function update_1033() {
`k` CHAR( 255 ) NOT NULL PRIMARY KEY ,
`v` TEXT NOT NULL,
`updated` DATETIME NOT NULL
- ) ENGINE = MYISAM DEFAULT CHARSET=utf8;");
+ ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
}
@@ -377,3 +377,106 @@ function update_1038() {
function update_1039() {
q("ALTER TABLE `addon` ADD `timestamp` BIGINT NOT NULL DEFAULT '0'");
}
+
+
+function update_1040() {
+
+ q("CREATE TABLE IF NOT EXISTS `fcontact` (
+ `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+ `url` CHAR( 255 ) NOT NULL ,
+ `name` CHAR( 255 ) NOT NULL ,
+ `photo` CHAR( 255 ) NOT NULL
+ ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
+
+ q("CREATE TABLE IF NOT EXISTS `ffinder` (
+ `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+ `uid` INT UNSIGNED NOT NULL ,
+ `cid` INT UNSIGNED NOT NULL ,
+ `fid` INT UNSIGNED NOT NULL
+ ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
+
+}
+
+function update_1041() {
+ q("ALTER TABLE `profile` CHANGE `keywords` `prv_keywords` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ");
+ q("ALTER TABLE `profile` ADD `pub_keywords` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `religion` ");
+}
+
+function update_1042() {
+ q("ALTER TABLE `user` ADD `expire` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `maxreq` ");
+}
+
+
+function update_1043() {
+ q("ALTER TABLE `user` ADD `blockwall` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `blocked` ");
+}
+
+function update_1044() {
+ q("ALTER TABLE `profile` ADD FULLTEXT ( `pub_keywords` ) ");
+ q("ALTER TABLE `profile` ADD FULLTEXT ( `prv_keywords` ) ");
+}
+
+function update_1045() {
+ q("ALTER TABLE `user` ADD `language` CHAR( 16 ) NOT NULL DEFAULT 'en' AFTER `timezone` ");
+}
+
+function update_1046() {
+ q("ALTER TABLE `item` ADD `attach` MEDIUMTEXT NOT NULL AFTER `tag` ");
+}
+
+function update_1047() {
+ q("ALTER TABLE `contact` ADD `writable` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `readonly` ");
+}
+
+function update_1048() {
+ q("UPDATE `contact` SET `writable` = 1 WHERE `network` = 'stat' AND `notify` != '' ");
+}
+
+function update_1049() {
+ q("CREATE TABLE `mailacct` (
+ `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+ `uid` INT NOT NULL,
+ `server` CHAR( 255 ) NOT NULL ,
+ `user` CHAR( 255 ) NOT NULL ,
+ `pass` CHAR( 255 ) NOT NULL ,
+ `reply_to` CHAR( 255 ) NOT NULL ,
+ `last_check` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
+ ) ENGINE = MYISAM ");
+}
+
+function update_1050() {
+ q("CREATE TABLE `attach` (
+ `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+ `uid` INT NOT NULL ,
+ `filetype` CHAR( 64 ) NOT NULL ,
+ `filesize` INT NOT NULL ,
+ `data` LONGBLOB NOT NULL ,
+ `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `edited` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `allow_cid` MEDIUMTEXT NOT NULL ,
+ `allow_gid` MEDIUMTEXT NOT NULL ,
+ `deny_cid` MEDIUMTEXT NOT NULL ,
+ `deny_gid` MEDIUMTEXT NOT NULL
+ ) ENGINE = MYISAM ");
+
+}
+
+function update_1051() {
+ q("ALTER TABLE `mailacct` ADD `port` INT NOT NULL AFTER `server` ,
+ ADD `ssltype` CHAR( 16 ) NOT NULL AFTER `port` ,
+ ADD `mailbox` CHAR( 255 ) NOT NULL AFTER `ssltype` ");
+
+ q("ALTER TABLE `contact` ADD `addr` CHAR( 255 ) NOT NULL AFTER `url` ");
+}
+
+function update_1052() {
+ q("ALTER TABLE `mailacct` CHANGE `pass` `pass` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL");
+ q("ALTER TABLE `mailacct` ADD `pubmail` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `reply_to` ");
+ q("ALTER TABLE `item` ADD `pubmail` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `private` ");
+}
+
+
+function update_1053() {
+ q("ALTER TABLE `item` ADD `extid` CHAR( 255 ) NOT NULL AFTER `parent-uri` , ADD INDEX ( `extid` ) ");
+}
+
diff --git a/util/.htaccess b/util/.htaccess
new file mode 100644
index 000000000..b311c14c2
--- /dev/null
+++ b/util/.htaccess
@@ -0,0 +1,5 @@
+Options -Indexes
+
+# Remove the following line or modify it to run the string translator utility
+Deny from all
+
diff --git a/util/README b/util/README
index 285358b28..b8fd7c9ee 100644
--- a/util/README
+++ b/util/README
@@ -44,5 +44,83 @@ then relocate the files to the view directory. The files in the top-level view
directory are template files which do not require translation.
+Placeholders
+
+Do not translate placeholders in strings! Things like %s, %d, %1$s and $somename
+are used to add dynamic content to the string.
+
+%s represents a dynamic string, like in "Welcome to %s"
+%d represents a dynamic number, like in "%d new messages"
+$somename is a variable like in php
+In %1$s %2$s, the numbers are the position index of multiple dynamic content.
+You could swap position in string of indexed placeholders.
+e.g.
+"%1$s's %2$s" => "John's photo", "John's item"
+"%2$s di %1$s" => "foto di John", "elemento di John"
+
+
+Plural
+
+The tt() function supports plural form. Script extract.php write this in
+strings.php as an array, one string for every plural form language supports:
+
+$a->string["%d message sent"] = Array(
+ 0 => "%d message sent",
+ 1 => "%d messages sent",
+);
+
+The function string_plural_select($n) defined in strings.php, return the string
+index to use, related to the numbers of item (value of $n).
+
+This is modelled after ngettext function of GNU gettext.
+More info at http://www.gnu.org/software/hello/manual/gettext/Plural-forms.html
+
+
+Xgettext and .po workflow
+
+1. Run util/run_xgettext.sh script (on *unix sistems, with GNU xgettext installed)
+ This script runs xgettext on source tree, extracting strings from t() and tt()
+ functions, and creates a util/messages.po file.
+
+ % cd util; ./run_xgettext.sh ../view/{language}/messages.po
+
+ Replace {language} with the language you are working on - e.g. 'es', 'fr', 'de', etc.
+
+2. copy util/messages.po to view/<langauage>/messages.po
+3. open view/<langauage>/messages.po with a text editor and fill in infos in
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>"
+ "Language-Team: LANGUAGE <LL@li.org>\n"
+ "Language: \n"
+
+ (eg:
+ "Last-Translator: Guybrush Threepwood <gb@host.com>"
+ "Language-Team: Pirate Friendika <pirate-friendika-ml@host.com>\n"
+ "Language: pi\n"
+ )
+
+ For the line
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+ read GNU gettext manual at
+ http://www.gnu.org/software/hello/manual/gettext/Plural-forms.html
+
+4. You could then translate the strings in text editor, but I suggest to use one
+ of the many .po editors out there, like QtLinguist
+
+5. run
+ $ php util/po2php.php view/<language>/messages.po
+ to create the strings.php file
+
+When strings are added or modified in source, you could run
+ $ cd util; ./run_xgettext.sh ../view/<language>/messages.po
+ to extract strings from source files and join them with the existing .po file:
+ new strings are added, the existing are not overwritten.
+
+If you already translated Friendika using strings.php, you could import your old
+translation to messages.po. Run:
+$ php util/php2po.php view/<language>/strings.php
+
+
+You may also use the util/string_translator.php web interface to translate the string file, but it is disabled for website security reasons. The web server will need write permission to your language directories and the "Deny ..." line in util/.htaccess will need to be modified or commented to use the utility.
+
diff --git a/util/extract.php b/util/extract.php
index 92ec8501c..90127f3c1 100644
--- a/util/extract.php
+++ b/util/extract.php
@@ -10,25 +10,50 @@
$str = file_get_contents($file);
$pat = '| t\(([^\)]*)\)|';
+ $patt = '| tt\(([^\)]*)\)|';
preg_match_all($pat,$str,$matches);
-
- if(! count($matches))
- continue;
-
- foreach($matches[1] as $match) {
- if(! in_array($match,$arr))
- $arr[] = $match;
+ preg_match_all($patt, $str, $matchestt);
+
+
+ if(count($matches)){
+ foreach($matches[1] as $match) {
+ if(! in_array($match,$arr))
+ $arr[] = $match;
+ }
+ }
+ if(count($matchestt)){
+ foreach($matchestt[1] as $match) {
+ $matchtkns = preg_split("|[ \t\r\n]*,[ \t\r\n]*|",$match);
+ if (count($matchtkns)==3 && !in_array($matchtkns,$arr)){
+ $arr[] = $matchtkns;
+ }
+ }
}
}
$s = '<?php' . "\n";
- foreach($arr as $a) {
- if(substr($a,0,1) == '$')
- continue;
+ $s .= '
+function string_plural_select($n){
+ return ($n != 1);
+}
- $s .= '$a->strings[' . $a . '] = ' . $a . ';' . "\n";
+';
+
+ foreach($arr as $a) {
+ if (is_array($a)){
+ if(substr($a[1],0,1) == '$')
+ continue;
+ $s .= '$a->strings[' . $a[0] . "] = array(\n";
+ $s .= "\t0 => ". $a[0]. ",\n";
+ $s .= "\t1 => ". $a[1]. ",\n";
+ $s .= ");\n";
+ } else {
+ if(substr($a,0,1) == '$')
+ continue;
+ $s .= '$a->strings[' . $a . '] = '. $a . ';' . "\n";
+ }
}
$zones = timezone_identifiers_list();
diff --git a/util/messages.po b/util/messages.po
new file mode 100644
index 000000000..316aab96d
--- /dev/null
+++ b/util/messages.po
@@ -0,0 +1,3429 @@
+# FRIENDIKA Distributed Social Network
+# Copyright (C) 2010, 2011 Mike Macgirvin
+# This file is distributed under the same license as the Friendika package.
+# Mike Macgirvin, 2010
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 2.2.975\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-05-10 14:13+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+#"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: ../../index.php:210
+msgid "Not Found"
+msgstr ""
+
+#: ../../index.php:211
+msgid "Page not found."
+msgstr ""
+
+#: ../../index.php:266 ../../mod/profperm.php:19 ../../mod/group.php:67
+msgid "Permission denied"
+msgstr ""
+
+#: ../../index.php:267 ../../mod/manage.php:75 ../../mod/wall_upload.php:42
+#: ../../mod/follow.php:8 ../../mod/profile_photo.php:19
+#: ../../mod/profile_photo.php:133 ../../mod/profile_photo.php:144
+#: ../../mod/profile_photo.php:155 ../../mod/regmod.php:16
+#: ../../mod/profiles.php:7 ../../mod/profiles.php:227
+#: ../../mod/settings.php:15 ../../mod/settings.php:20
+#: ../../mod/settings.php:251 ../../mod/photos.php:89 ../../mod/photos.php:798
+#: ../../mod/display.php:138 ../../mod/editpost.php:10 ../../mod/invite.php:13
+#: ../../mod/invite.php:54 ../../mod/contacts.php:106
+#: ../../mod/register.php:25 ../../mod/install.php:93 ../../mod/network.php:6
+#: ../../mod/notifications.php:56 ../../mod/crepair.php:54
+#: ../../mod/item.php:57 ../../mod/item.php:680 ../../mod/message.php:8
+#: ../../mod/message.php:116 ../../mod/dfrn_confirm.php:53
+#: ../../mod/viewcontacts.php:21 ../../mod/group.php:19
+#: ../../addon/facebook/facebook.php:246
+msgid "Permission denied."
+msgstr ""
+
+#: ../../boot.php:385
+msgid "Delete this item?"
+msgstr ""
+
+#: ../../boot.php:386 ../../mod/photos.php:1130 ../../mod/photos.php:1169
+#: ../../mod/photos.php:1200 ../../include/conversation.php:375
+msgid "Comment"
+msgstr ""
+
+#: ../../boot.php:834
+msgid "Create a New Account"
+msgstr ""
+
+#: ../../boot.php:835 ../../mod/register.php:471 ../../include/nav.php:59
+msgid "Register"
+msgstr ""
+
+#: ../../boot.php:841
+msgid "Nickname or Email address: "
+msgstr ""
+
+#: ../../boot.php:842
+msgid "Password: "
+msgstr ""
+
+#: ../../boot.php:843 ../../boot.php:849 ../../include/nav.php:44
+msgid "Login"
+msgstr ""
+
+#: ../../boot.php:847
+msgid "Nickname/Email/OpenID: "
+msgstr ""
+
+#: ../../boot.php:848
+msgid "Password (if not OpenID): "
+msgstr ""
+
+#: ../../boot.php:851
+msgid "Forgot your password?"
+msgstr ""
+
+#: ../../boot.php:852 ../../mod/lostpass.php:78
+msgid "Password Reset"
+msgstr ""
+
+#: ../../boot.php:865 ../../include/nav.php:41
+msgid "Logout"
+msgstr ""
+
+#: ../../boot.php:1106
+msgid "prev"
+msgstr ""
+
+#: ../../boot.php:1108
+msgid "first"
+msgstr ""
+
+#: ../../boot.php:1137
+msgid "last"
+msgstr ""
+
+#: ../../boot.php:1140
+msgid "next"
+msgstr ""
+
+#: ../../boot.php:2001
+msgid "No contacts"
+msgstr ""
+
+#: ../../boot.php:2009
+#, php-format
+msgid "%d Contact"
+msgid_plural "%d Contacts"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../boot.php:2014 ../../mod/viewcontacts.php:25
+msgid "View Contacts"
+msgstr ""
+
+#: ../../boot.php:2060 ../../mod/search.php:26 ../../include/nav.php:71
+msgid "Search"
+msgstr ""
+
+#: ../../boot.php:2216 ../../mod/profile.php:11
+msgid "No profile"
+msgstr ""
+
+#: ../../boot.php:2275
+msgid "Connect"
+msgstr ""
+
+#: ../../boot.php:2290
+msgid "Location:"
+msgstr ""
+
+#: ../../boot.php:2294
+msgid ", "
+msgstr ""
+
+#: ../../boot.php:2302 ../../include/profile_advanced.php:23
+msgid "Gender:"
+msgstr ""
+
+#: ../../boot.php:2306
+msgid "Status:"
+msgstr ""
+
+#: ../../boot.php:2308 ../../include/profile_advanced.php:103
+msgid "Homepage:"
+msgstr ""
+
+#: ../../boot.php:2399
+msgid "Monday"
+msgstr ""
+
+#: ../../boot.php:2399
+msgid "Tuesday"
+msgstr ""
+
+#: ../../boot.php:2399
+msgid "Wednesday"
+msgstr ""
+
+#: ../../boot.php:2399
+msgid "Thursday"
+msgstr ""
+
+#: ../../boot.php:2399
+msgid "Friday"
+msgstr ""
+
+#: ../../boot.php:2399
+msgid "Saturday"
+msgstr ""
+
+#: ../../boot.php:2399
+msgid "Sunday"
+msgstr ""
+
+#: ../../boot.php:2403
+msgid "January"
+msgstr ""
+
+#: ../../boot.php:2403
+msgid "February"
+msgstr ""
+
+#: ../../boot.php:2403
+msgid "March"
+msgstr ""
+
+#: ../../boot.php:2403
+msgid "April"
+msgstr ""
+
+#: ../../boot.php:2403
+msgid "May"
+msgstr ""
+
+#: ../../boot.php:2403
+msgid "June"
+msgstr ""
+
+#: ../../boot.php:2403
+msgid "July"
+msgstr ""
+
+#: ../../boot.php:2403
+msgid "August"
+msgstr ""
+
+#: ../../boot.php:2403
+msgid "September"
+msgstr ""
+
+#: ../../boot.php:2403
+msgid "October"
+msgstr ""
+
+#: ../../boot.php:2403
+msgid "November"
+msgstr ""
+
+#: ../../boot.php:2403
+msgid "December"
+msgstr ""
+
+#: ../../boot.php:2418
+msgid "g A l F d"
+msgstr ""
+
+#: ../../boot.php:2435
+msgid "Birthday Reminders"
+msgstr ""
+
+#: ../../boot.php:2436
+msgid "Birthdays this week:"
+msgstr ""
+
+#: ../../boot.php:2437
+msgid "(Adjusted for local time)"
+msgstr ""
+
+#: ../../boot.php:2448
+msgid "[today]"
+msgstr ""
+
+#: ../../boot.php:2654
+msgid "link to source"
+msgstr ""
+
+#: ../../mod/manage.php:37
+#, php-format
+msgid "Welcome back %s"
+msgstr ""
+
+#: ../../mod/manage.php:87
+msgid "Manage Identities and/or Pages"
+msgstr ""
+
+#: ../../mod/manage.php:90
+msgid ""
+"(Toggle between different identities or community/group pages which share "
+"your account details.)"
+msgstr ""
+
+#: ../../mod/manage.php:92
+msgid "Select an identity to manage: "
+msgstr ""
+
+#: ../../mod/manage.php:106 ../../mod/profiles.php:370
+#: ../../mod/settings.php:426 ../../mod/photos.php:826
+#: ../../mod/photos.php:883 ../../mod/photos.php:1091
+#: ../../mod/photos.php:1131 ../../mod/photos.php:1170
+#: ../../mod/photos.php:1201 ../../mod/invite.php:68
+#: ../../mod/contacts.php:264 ../../mod/install.php:133
+#: ../../mod/crepair.php:100 ../../mod/group.php:76 ../../mod/group.php:159
+#: ../../addon/twitter/twitter.php:156 ../../addon/twitter/twitter.php:175
+#: ../../addon/statusnet/statusnet.php:163
+#: ../../addon/statusnet/statusnet.php:189
+#: ../../addon/statusnet/statusnet.php:207
+#: ../../addon/facebook/facebook.php:293
+#: ../../addon/randplace/randplace.php:179 ../../include/conversation.php:376
+msgid "Submit"
+msgstr ""
+
+#: ../../mod/wall_upload.php:56 ../../mod/profile_photo.php:109
+#, php-format
+msgid "Image exceeds size limit of %d"
+msgstr ""
+
+#: ../../mod/wall_upload.php:65 ../../mod/profile_photo.php:118
+#: ../../mod/photos.php:575
+msgid "Unable to process image."
+msgstr ""
+
+#: ../../mod/wall_upload.php:79 ../../mod/wall_upload.php:88
+#: ../../mod/wall_upload.php:95 ../../mod/item.php:214
+#: ../../mod/message.php:93
+msgid "Wall Photos"
+msgstr ""
+
+#: ../../mod/wall_upload.php:82 ../../mod/profile_photo.php:241
+#: ../../mod/photos.php:593
+msgid "Image upload failed."
+msgstr ""
+
+#: ../../mod/dfrn_notify.php:189 ../../mod/dfrn_notify.php:405
+#: ../../mod/dfrn_notify.php:495 ../../mod/regmod.php:94
+#: ../../mod/register.php:333 ../../mod/register.php:373
+#: ../../mod/dfrn_request.php:551 ../../mod/lostpass.php:40
+#: ../../mod/lostpass.php:102 ../../mod/item.php:480 ../../mod/item.php:506
+#: ../../mod/dfrn_confirm.php:657 ../../include/items.php:1435
+msgid "Administrator"
+msgstr ""
+
+#: ../../mod/dfrn_notify.php:191
+msgid "noreply"
+msgstr ""
+
+#: ../../mod/dfrn_notify.php:249
+msgid "New mail received at "
+msgstr ""
+
+#: ../../mod/dfrn_notify.php:403 ../../mod/dfrn_notify.php:493
+#, php-format
+msgid "%s commented on an item at %s"
+msgstr ""
+
+#: ../../mod/profile.php:112
+msgid "Status"
+msgstr ""
+
+#: ../../mod/profile.php:113 ../../mod/profperm.php:94
+#: ../../include/profile_advanced.php:7
+msgid "Profile"
+msgstr ""
+
+#: ../../mod/profile.php:114
+msgid "Photos"
+msgstr ""
+
+#: ../../mod/profile.php:262 ../../mod/display.php:147
+#: ../../mod/register.php:450 ../../mod/network.php:259
+msgid ""
+"Shared content is covered by the <a href=\"http://creativecommons.org/"
+"licenses/by/3.0/\">Creative Commons Attribution 3.0</a> license."
+msgstr ""
+
+#: ../../mod/follow.php:16 ../../mod/dfrn_request.php:340
+msgid "Disallowed profile URL."
+msgstr ""
+
+#: ../../mod/follow.php:39
+msgid "The profile address specified does not provide adequate information."
+msgstr ""
+
+#: ../../mod/follow.php:45
+msgid ""
+"Limited profile. This person will be unable to receive direct/personal "
+"notifications from you."
+msgstr ""
+
+#: ../../mod/follow.php:100
+msgid "Unable to retrieve contact information."
+msgstr ""
+
+#: ../../mod/follow.php:146
+msgid "following"
+msgstr ""
+
+#: ../../mod/profile_photo.php:28
+msgid "Image uploaded but image cropping failed."
+msgstr ""
+
+#: ../../mod/profile_photo.php:58 ../../mod/profile_photo.php:65
+#: ../../mod/profile_photo.php:72 ../../mod/profile_photo.php:160
+#: ../../mod/profile_photo.php:236 ../../mod/profile_photo.php:245
+#: ../../mod/photos.php:110 ../../mod/photos.php:535 ../../mod/photos.php:875
+#: ../../mod/photos.php:890 ../../mod/register.php:288
+#: ../../mod/register.php:295 ../../mod/register.php:302
+msgid "Profile Photos"
+msgstr ""
+
+#: ../../mod/profile_photo.php:61 ../../mod/profile_photo.php:68
+#: ../../mod/profile_photo.php:75 ../../mod/profile_photo.php:248
+#, php-format
+msgid "Image size reduction [%s] failed."
+msgstr ""
+
+#: ../../mod/profile_photo.php:95
+msgid "Unable to process image"
+msgstr ""
+
+#: ../../mod/profile_photo.php:193
+msgid "Upload File:"
+msgstr ""
+
+#: ../../mod/profile_photo.php:194
+msgid "Upload Profile Photo"
+msgstr ""
+
+#: ../../mod/profile_photo.php:195
+msgid "Upload"
+msgstr ""
+
+#: ../../mod/profile_photo.php:196 ../../mod/settings.php:398
+msgid "or"
+msgstr ""
+
+#: ../../mod/profile_photo.php:196
+msgid "skip this step"
+msgstr ""
+
+#: ../../mod/profile_photo.php:196
+msgid "select a photo from your photo albums"
+msgstr ""
+
+#: ../../mod/profile_photo.php:209
+msgid "Crop Image"
+msgstr ""
+
+#: ../../mod/profile_photo.php:210
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr ""
+
+#: ../../mod/profile_photo.php:211
+msgid "Done Editing"
+msgstr ""
+
+#: ../../mod/profile_photo.php:239
+msgid "Image uploaded successfully."
+msgstr ""
+
+#: ../../mod/home.php:23
+#, php-format
+msgid "Welcome to %s"
+msgstr ""
+
+#: ../../mod/regmod.php:10
+msgid "Please login."
+msgstr ""
+
+#: ../../mod/regmod.php:54
+#, php-format
+msgid "Registration revoked for %s"
+msgstr ""
+
+#: ../../mod/regmod.php:92 ../../mod/register.php:331
+#, php-format
+msgid "Registration details for %s"
+msgstr ""
+
+#: ../../mod/regmod.php:99
+msgid "Account approved."
+msgstr ""
+
+#: ../../mod/profiles.php:21 ../../mod/profiles.php:237
+#: ../../mod/profiles.php:342 ../../mod/dfrn_confirm.php:62
+msgid "Profile not found."
+msgstr ""
+
+#: ../../mod/profiles.php:28
+msgid "Profile Name is required."
+msgstr ""
+
+#: ../../mod/profiles.php:199
+msgid "Profile updated."
+msgstr ""
+
+#: ../../mod/profiles.php:254
+msgid "Profile deleted."
+msgstr ""
+
+#: ../../mod/profiles.php:270 ../../mod/profiles.php:301
+msgid "Profile-"
+msgstr ""
+
+#: ../../mod/profiles.php:289 ../../mod/profiles.php:328
+msgid "New profile created."
+msgstr ""
+
+#: ../../mod/profiles.php:307
+msgid "Profile unavailable to clone."
+msgstr ""
+
+#: ../../mod/profiles.php:354
+msgid "Hide my contact/friend list from viewers of this profile?"
+msgstr ""
+
+#: ../../mod/profiles.php:355 ../../mod/settings.php:350
+#: ../../mod/settings.php:362 ../../mod/register.php:444
+#: ../../mod/dfrn_request.php:634
+msgid "Yes"
+msgstr ""
+
+#: ../../mod/profiles.php:356 ../../mod/settings.php:351
+#: ../../mod/settings.php:363 ../../mod/register.php:445
+#: ../../mod/dfrn_request.php:635
+msgid "No"
+msgstr ""
+
+#: ../../mod/profiles.php:369
+msgid "Edit Profile Details"
+msgstr ""
+
+#: ../../mod/profiles.php:371
+msgid "View this profile"
+msgstr ""
+
+#: ../../mod/profiles.php:372
+msgid "Create a new profile using these settings"
+msgstr ""
+
+#: ../../mod/profiles.php:373
+msgid "Clone this profile"
+msgstr ""
+
+#: ../../mod/profiles.php:374
+msgid "Delete this profile"
+msgstr ""
+
+#: ../../mod/profiles.php:375
+msgid "Profile Name:"
+msgstr ""
+
+#: ../../mod/profiles.php:376
+msgid "Your Full Name:"
+msgstr ""
+
+#: ../../mod/profiles.php:377
+msgid "Title/Description:"
+msgstr ""
+
+#: ../../mod/profiles.php:378
+msgid "Your Gender:"
+msgstr ""
+
+#: ../../mod/profiles.php:379
+msgid "Birthday (y/m/d):"
+msgstr ""
+
+#: ../../mod/profiles.php:380
+msgid "Street Address:"
+msgstr ""
+
+#: ../../mod/profiles.php:381
+msgid "Locality/City:"
+msgstr ""
+
+#: ../../mod/profiles.php:382
+msgid "Postal/Zip Code:"
+msgstr ""
+
+#: ../../mod/profiles.php:383
+msgid "Country:"
+msgstr ""
+
+#: ../../mod/profiles.php:384
+msgid "Region/State:"
+msgstr ""
+
+#: ../../mod/profiles.php:385
+msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
+msgstr ""
+
+#: ../../mod/profiles.php:386
+msgid "Who: (if applicable)"
+msgstr ""
+
+#: ../../mod/profiles.php:387
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+msgstr ""
+
+#: ../../mod/profiles.php:388 ../../include/profile_advanced.php:90
+msgid "Sexual Preference:"
+msgstr ""
+
+#: ../../mod/profiles.php:389
+msgid "Homepage URL:"
+msgstr ""
+
+#: ../../mod/profiles.php:390 ../../include/profile_advanced.php:115
+msgid "Political Views:"
+msgstr ""
+
+#: ../../mod/profiles.php:391
+msgid "Religious Views:"
+msgstr ""
+
+#: ../../mod/profiles.php:392
+msgid "Public Keywords:"
+msgstr ""
+
+#: ../../mod/profiles.php:393
+msgid "Private Keywords:"
+msgstr ""
+
+#: ../../mod/profiles.php:394
+msgid "Example: fishing photography software"
+msgstr ""
+
+#: ../../mod/profiles.php:395
+msgid "(Used for suggesting potential friends, can be seen by others)"
+msgstr ""
+
+#: ../../mod/profiles.php:396
+msgid "(Used for searching profiles, never shown to others)"
+msgstr ""
+
+#: ../../mod/profiles.php:397
+msgid "Tell us about yourself..."
+msgstr ""
+
+#: ../../mod/profiles.php:398
+msgid "Hobbies/Interests"
+msgstr ""
+
+#: ../../mod/profiles.php:399
+msgid "Contact information and Social Networks"
+msgstr ""
+
+#: ../../mod/profiles.php:400
+msgid "Musical interests"
+msgstr ""
+
+#: ../../mod/profiles.php:401
+msgid "Books, literature"
+msgstr ""
+
+#: ../../mod/profiles.php:402
+msgid "Television"
+msgstr ""
+
+#: ../../mod/profiles.php:403
+msgid "Film/dance/culture/entertainment"
+msgstr ""
+
+#: ../../mod/profiles.php:404
+msgid "Love/romance"
+msgstr ""
+
+#: ../../mod/profiles.php:405
+msgid "Work/employment"
+msgstr ""
+
+#: ../../mod/profiles.php:406
+msgid "School/education"
+msgstr ""
+
+#: ../../mod/profiles.php:411
+msgid ""
+"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
+"be visible to anybody using the internet."
+msgstr ""
+
+#: ../../mod/profiles.php:421 ../../mod/directory.php:97
+msgid "Age: "
+msgstr ""
+
+#: ../../mod/profiles.php:456 ../../include/nav.php:109
+msgid "Profiles"
+msgstr ""
+
+#: ../../mod/profiles.php:457
+msgid "Change profile photo"
+msgstr ""
+
+#: ../../mod/profiles.php:458
+msgid "Create New Profile"
+msgstr ""
+
+#: ../../mod/profiles.php:468
+msgid "Profile Image"
+msgstr ""
+
+#: ../../mod/profiles.php:470
+msgid "Visible to everybody"
+msgstr ""
+
+#: ../../mod/profiles.php:471
+msgid "Edit visibility"
+msgstr ""
+
+#: ../../mod/settings.php:38
+msgid "Passwords do not match. Password unchanged."
+msgstr ""
+
+#: ../../mod/settings.php:43
+msgid "Empty passwords are not allowed. Password unchanged."
+msgstr ""
+
+#: ../../mod/settings.php:54
+msgid "Password changed."
+msgstr ""
+
+#: ../../mod/settings.php:56
+msgid "Password update failed. Please try again."
+msgstr ""
+
+#: ../../mod/settings.php:138
+msgid " Please use a shorter name."
+msgstr ""
+
+#: ../../mod/settings.php:140
+msgid " Name too short."
+msgstr ""
+
+#: ../../mod/settings.php:146
+msgid " Not valid email."
+msgstr ""
+
+#: ../../mod/settings.php:148
+msgid " Cannot change to that email."
+msgstr ""
+
+#: ../../mod/settings.php:206
+msgid "Settings updated."
+msgstr ""
+
+#: ../../mod/settings.php:256 ../../mod/settings.php:418
+msgid "Plugin Settings"
+msgstr ""
+
+#: ../../mod/settings.php:257 ../../mod/settings.php:417
+msgid "Account Settings"
+msgstr ""
+
+#: ../../mod/settings.php:263
+msgid "No Plugin settings configured"
+msgstr ""
+
+#: ../../mod/settings.php:323
+msgid "Normal Account"
+msgstr ""
+
+#: ../../mod/settings.php:324
+msgid "This account is a normal personal profile"
+msgstr ""
+
+#: ../../mod/settings.php:325
+msgid "Soapbox Account"
+msgstr ""
+
+#: ../../mod/settings.php:326
+msgid "Automatically approve all connection/friend requests as read-only fans"
+msgstr ""
+
+#: ../../mod/settings.php:327
+msgid "Community/Celebrity Account"
+msgstr ""
+
+#: ../../mod/settings.php:328
+msgid "Automatically approve all connection/friend requests as read-write fans"
+msgstr ""
+
+#: ../../mod/settings.php:329
+msgid "Automatic Friend Account"
+msgstr ""
+
+#: ../../mod/settings.php:330
+msgid "Automatically approve all connection/friend requests as friends"
+msgstr ""
+
+#: ../../mod/settings.php:339
+msgid "OpenID: "
+msgstr ""
+
+#: ../../mod/settings.php:339
+msgid "&nbsp;(Optional) Allow this OpenID to login to this account."
+msgstr ""
+
+#: ../../mod/settings.php:349
+msgid "Publish your default profile in site directory?"
+msgstr ""
+
+#: ../../mod/settings.php:361
+msgid "Publish your default profile in global social directory?"
+msgstr ""
+
+#: ../../mod/settings.php:377
+msgid "Profile is <strong>not published</strong>."
+msgstr ""
+
+#: ../../mod/settings.php:403
+msgid "Your Identity Address is"
+msgstr ""
+
+#: ../../mod/settings.php:413
+msgid "Export Personal Data"
+msgstr ""
+
+#: ../../mod/settings.php:419
+msgid "Basic Settings"
+msgstr ""
+
+#: ../../mod/settings.php:420 ../../include/profile_advanced.php:10
+msgid "Full Name:"
+msgstr ""
+
+#: ../../mod/settings.php:421
+msgid "Email Address:"
+msgstr ""
+
+#: ../../mod/settings.php:422
+msgid "Your Timezone:"
+msgstr ""
+
+#: ../../mod/settings.php:423
+msgid "Default Post Location:"
+msgstr ""
+
+#: ../../mod/settings.php:424
+msgid "Use Browser Location:"
+msgstr ""
+
+#: ../../mod/settings.php:425
+msgid "Display Theme:"
+msgstr ""
+
+#: ../../mod/settings.php:427
+msgid "Security and Privacy Settings"
+msgstr ""
+
+#: ../../mod/settings.php:428
+msgid "Maximum Friend Requests/Day:"
+msgstr ""
+
+#: ../../mod/settings.php:429
+msgid "(to prevent spam abuse)"
+msgstr ""
+
+#: ../../mod/settings.php:430
+msgid "Allow friends to post to your profile page:"
+msgstr ""
+
+#: ../../mod/settings.php:431
+msgid "Automatically expire (delete) posts older than"
+msgstr ""
+
+#: ../../mod/settings.php:432 ../../include/datetime.php:154
+msgid "days"
+msgstr ""
+
+#: ../../mod/settings.php:433
+msgid "Notification Settings"
+msgstr ""
+
+#: ../../mod/settings.php:434
+msgid "Send a notification email when:"
+msgstr ""
+
+#: ../../mod/settings.php:435
+msgid "You receive an introduction"
+msgstr ""
+
+#: ../../mod/settings.php:436
+msgid "Your introductions are confirmed"
+msgstr ""
+
+#: ../../mod/settings.php:437
+msgid "Someone writes on your profile wall"
+msgstr ""
+
+#: ../../mod/settings.php:438
+msgid "Someone writes a followup comment"
+msgstr ""
+
+#: ../../mod/settings.php:439
+msgid "You receive a private message"
+msgstr ""
+
+#: ../../mod/settings.php:440
+msgid "Password Settings"
+msgstr ""
+
+#: ../../mod/settings.php:441
+msgid "Leave password fields blank unless changing"
+msgstr ""
+
+#: ../../mod/settings.php:442
+msgid "New Password:"
+msgstr ""
+
+#: ../../mod/settings.php:443
+msgid "Confirm:"
+msgstr ""
+
+#: ../../mod/settings.php:444
+msgid "Advanced Page Settings"
+msgstr ""
+
+#: ../../mod/settings.php:459
+msgid "Default Post Permissions"
+msgstr ""
+
+#: ../../mod/settings.php:460
+msgid "(click to open/close)"
+msgstr ""
+
+#: ../../mod/settings.php:473
+msgid "Email/Mailbox Setup"
+msgstr ""
+
+#: ../../mod/settings.php:474
+msgid ""
+"If you wish to communicate with email contacts using this service "
+"(optional), please specify how to connect to your mailbox."
+msgstr ""
+
+#: ../../mod/settings.php:475
+msgid "IMAP server name:"
+msgstr ""
+
+#: ../../mod/settings.php:477
+msgid "IMAP port:"
+msgstr ""
+
+#: ../../mod/settings.php:479
+msgid "Security (TLS or SSL):"
+msgstr ""
+
+#: ../../mod/settings.php:481
+msgid "Email login name:"
+msgstr ""
+
+#: ../../mod/settings.php:483
+msgid "Email password:"
+msgstr ""
+
+#: ../../mod/settings.php:484
+msgid "Reply-to address (Optional):"
+msgstr ""
+
+#: ../../mod/settings.php:486
+msgid "Send public posts to all email contacts:"
+msgstr ""
+
+#: ../../mod/settings.php:488
+msgid "Email access is disabled on this site."
+msgstr ""
+
+#: ../../mod/search.php:13 ../../mod/photos.php:676 ../../mod/display.php:7
+#: ../../mod/dfrn_request.php:591 ../../mod/directory.php:18
+#: ../../mod/viewcontacts.php:16
+msgid "Public access denied."
+msgstr ""
+
+#: ../../mod/search.php:69
+msgid "No results."
+msgstr ""
+
+#: ../../mod/photos.php:34
+msgid "Photo Albums"
+msgstr ""
+
+#: ../../mod/photos.php:38 ../../mod/photos.php:110 ../../mod/photos.php:806
+#: ../../mod/photos.php:875 ../../mod/photos.php:890 ../../mod/photos.php:1278
+#: ../../mod/photos.php:1289 ../../include/Photo.php:233
+#: ../../include/Photo.php:240 ../../include/Photo.php:247
+#: ../../include/items.php:1027 ../../include/items.php:1030
+#: ../../include/items.php:1033
+msgid "Contact Photos"
+msgstr ""
+
+#: ../../mod/photos.php:99
+msgid "Contact information unavailable"
+msgstr ""
+
+#: ../../mod/photos.php:120
+msgid "Album not found."
+msgstr ""
+
+#: ../../mod/photos.php:138 ../../mod/photos.php:884
+msgid "Delete Album"
+msgstr ""
+
+#: ../../mod/photos.php:201 ../../mod/photos.php:1092
+msgid "Delete Photo"
+msgstr ""
+
+#: ../../mod/photos.php:473
+msgid "was tagged in a"
+msgstr ""
+
+#: ../../mod/photos.php:473 ../../mod/like.php:110
+#: ../../include/conversation.php:20
+msgid "photo"
+msgstr ""
+
+#: ../../mod/photos.php:473
+msgid "by"
+msgstr ""
+
+#: ../../mod/photos.php:563 ../../addon/js_upload/js_upload.php:306
+msgid "Image exceeds size limit of "
+msgstr ""
+
+#: ../../mod/photos.php:686
+msgid "No photos selected"
+msgstr ""
+
+#: ../../mod/photos.php:833
+msgid "Upload Photos"
+msgstr ""
+
+#: ../../mod/photos.php:836 ../../mod/photos.php:879
+msgid "New album name: "
+msgstr ""
+
+#: ../../mod/photos.php:837
+msgid "or existing album name: "
+msgstr ""
+
+#: ../../mod/photos.php:839 ../../mod/photos.php:1087
+msgid "Permissions"
+msgstr ""
+
+#: ../../mod/photos.php:894
+msgid "Edit Album"
+msgstr ""
+
+#: ../../mod/photos.php:904 ../../mod/photos.php:1307
+msgid "View Photo"
+msgstr ""
+
+#: ../../mod/photos.php:933
+msgid "Photo not available"
+msgstr ""
+
+#: ../../mod/photos.php:982
+msgid "Edit photo"
+msgstr ""
+
+#: ../../mod/photos.php:983
+msgid "Use as profile photo"
+msgstr ""
+
+#: ../../mod/photos.php:989 ../../include/conversation.php:309
+msgid "Private Message"
+msgstr ""
+
+#: ../../mod/photos.php:996
+msgid "<< Prev"
+msgstr ""
+
+#: ../../mod/photos.php:1000
+msgid "View Full Size"
+msgstr ""
+
+#: ../../mod/photos.php:1005
+msgid "Next >>"
+msgstr ""
+
+#: ../../mod/photos.php:1067
+msgid "Tags: "
+msgstr ""
+
+#: ../../mod/photos.php:1070
+msgid "[Remove any tag]"
+msgstr ""
+
+#: ../../mod/photos.php:1080
+msgid "New album name"
+msgstr ""
+
+#: ../../mod/photos.php:1083
+msgid "Caption"
+msgstr ""
+
+#: ../../mod/photos.php:1085
+msgid "Add a Tag"
+msgstr ""
+
+#: ../../mod/photos.php:1089
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+msgstr ""
+
+#: ../../mod/photos.php:1109 ../../include/conversation.php:357
+msgid "I like this (toggle)"
+msgstr ""
+
+#: ../../mod/photos.php:1110 ../../include/conversation.php:358
+msgid "I don't like this (toggle)"
+msgstr ""
+
+#: ../../mod/photos.php:1111 ../../include/conversation.php:359
+#: ../../include/conversation.php:718
+msgid "Share"
+msgstr ""
+
+#: ../../mod/photos.php:1112 ../../mod/editpost.php:96
+#: ../../mod/message.php:190 ../../mod/message.php:324
+#: ../../include/conversation.php:360 ../../include/conversation.php:727
+msgid "Please wait"
+msgstr ""
+
+#: ../../mod/photos.php:1128 ../../mod/photos.php:1167
+#: ../../mod/photos.php:1198 ../../include/conversation.php:373
+msgid "This is you"
+msgstr ""
+
+#: ../../mod/photos.php:1228 ../../mod/group.php:146
+#: ../../include/conversation.php:174 ../../include/conversation.php:386
+msgid "Delete"
+msgstr ""
+
+#: ../../mod/photos.php:1294
+msgid "Recent Photos"
+msgstr ""
+
+#: ../../mod/photos.php:1298
+msgid "Upload New Photos"
+msgstr ""
+
+#: ../../mod/photos.php:1311
+msgid "View Album"
+msgstr ""
+
+#: ../../mod/display.php:25 ../../mod/display.php:142 ../../mod/item.php:609
+msgid "Item not found."
+msgstr ""
+
+#: ../../mod/display.php:135
+msgid "Item has been removed."
+msgstr ""
+
+#: ../../mod/editpost.php:17 ../../mod/editpost.php:27
+msgid "Item not found"
+msgstr ""
+
+#: ../../mod/editpost.php:32
+msgid "Edit post"
+msgstr ""
+
+#: ../../mod/editpost.php:38 ../../include/conversation.php:673
+msgid "Visible to <strong>everybody</strong>"
+msgstr ""
+
+#: ../../mod/editpost.php:75 ../../include/conversation.php:707
+msgid "Post to Email"
+msgstr ""
+
+#: ../../mod/editpost.php:88 ../../include/conversation.php:384
+#: ../../include/group.php:169
+msgid "Edit"
+msgstr ""
+
+#: ../../mod/editpost.php:89 ../../mod/message.php:188
+#: ../../mod/message.php:322 ../../include/conversation.php:719
+msgid "Upload photo"
+msgstr ""
+
+#: ../../mod/editpost.php:90 ../../mod/message.php:189
+#: ../../mod/message.php:323 ../../include/conversation.php:720
+msgid "Insert web link"
+msgstr ""
+
+#: ../../mod/editpost.php:91 ../../include/conversation.php:721
+msgid "Insert YouTube video"
+msgstr ""
+
+#: ../../mod/editpost.php:92 ../../include/conversation.php:722
+msgid "Insert Vorbis [.ogg] video"
+msgstr ""
+
+#: ../../mod/editpost.php:93 ../../include/conversation.php:723
+msgid "Insert Vorbis [.ogg] audio"
+msgstr ""
+
+#: ../../mod/editpost.php:94 ../../include/conversation.php:724
+msgid "Set your location"
+msgstr ""
+
+#: ../../mod/editpost.php:95 ../../include/conversation.php:725
+msgid "Clear browser location"
+msgstr ""
+
+#: ../../mod/editpost.php:97 ../../include/conversation.php:728
+msgid "Permission settings"
+msgstr ""
+
+#: ../../mod/editpost.php:103 ../../include/conversation.php:734
+msgid "CC: email addresses"
+msgstr ""
+
+#: ../../mod/editpost.php:105 ../../include/conversation.php:736
+msgid "Example: bob@example.com, mary@example.com"
+msgstr ""
+
+#: ../../mod/invite.php:28
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr ""
+
+#: ../../mod/invite.php:32
+#, php-format
+msgid "Please join my network on %s"
+msgstr ""
+
+#: ../../mod/invite.php:42
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr ""
+
+#: ../../mod/invite.php:46
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../mod/invite.php:61
+msgid "Send invitations"
+msgstr ""
+
+#: ../../mod/invite.php:62
+msgid "Enter email addresses, one per line:"
+msgstr ""
+
+#: ../../mod/invite.php:63 ../../mod/message.php:185 ../../mod/message.php:319
+msgid "Your message:"
+msgstr ""
+
+#: ../../mod/invite.php:64
+#, php-format
+msgid "Please join my social network on %s"
+msgstr ""
+
+#: ../../mod/invite.php:65
+msgid "To accept this invitation, please visit:"
+msgstr ""
+
+#: ../../mod/invite.php:66
+msgid ""
+"Once you have registered, please connect with me via my profile page at:"
+msgstr ""
+
+#: ../../mod/contacts.php:12
+msgid "Invite Friends"
+msgstr ""
+
+#: ../../mod/contacts.php:15
+msgid "Find People With Shared Interests"
+msgstr ""
+
+#: ../../mod/contacts.php:19
+msgid "Connect/Follow"
+msgstr ""
+
+#: ../../mod/contacts.php:20
+msgid "Example: bob@example.com, http://example.com/barbara"
+msgstr ""
+
+#: ../../mod/contacts.php:21
+msgid "Follow"
+msgstr ""
+
+#: ../../mod/contacts.php:43 ../../mod/contacts.php:124
+msgid "Could not access contact record."
+msgstr ""
+
+#: ../../mod/contacts.php:57
+msgid "Could not locate selected profile."
+msgstr ""
+
+#: ../../mod/contacts.php:88
+msgid "Contact updated."
+msgstr ""
+
+#: ../../mod/contacts.php:90 ../../mod/dfrn_request.php:406
+msgid "Failed to update contact record."
+msgstr ""
+
+#: ../../mod/contacts.php:146
+msgid "Contact has been blocked"
+msgstr ""
+
+#: ../../mod/contacts.php:146
+msgid "Contact has been unblocked"
+msgstr ""
+
+#: ../../mod/contacts.php:160
+msgid "Contact has been ignored"
+msgstr ""
+
+#: ../../mod/contacts.php:160
+msgid "Contact has been unignored"
+msgstr ""
+
+#: ../../mod/contacts.php:181
+msgid "stopped following"
+msgstr ""
+
+#: ../../mod/contacts.php:200
+msgid "Contact has been removed."
+msgstr ""
+
+#: ../../mod/contacts.php:214 ../../mod/crepair.php:68
+#: ../../mod/dfrn_confirm.php:114
+msgid "Contact not found."
+msgstr ""
+
+#: ../../mod/contacts.php:228 ../../mod/contacts.php:363
+msgid "Mutual Friendship"
+msgstr ""
+
+#: ../../mod/contacts.php:232 ../../mod/contacts.php:367
+msgid "is a fan of yours"
+msgstr ""
+
+#: ../../mod/contacts.php:237 ../../mod/contacts.php:371
+msgid "you are a fan of"
+msgstr ""
+
+#: ../../mod/contacts.php:252
+msgid "Privacy Unavailable"
+msgstr ""
+
+#: ../../mod/contacts.php:253
+msgid "Private communications are not available for this contact."
+msgstr ""
+
+#: ../../mod/contacts.php:256
+msgid "Never"
+msgstr ""
+
+#: ../../mod/contacts.php:260
+msgid "(Update was successful)"
+msgstr ""
+
+#: ../../mod/contacts.php:260
+msgid "(Update was not successful)"
+msgstr ""
+
+#: ../../mod/contacts.php:263
+msgid "Contact Editor"
+msgstr ""
+
+#: ../../mod/contacts.php:265
+msgid "Profile Visibility"
+msgstr ""
+
+#: ../../mod/contacts.php:266
+#, php-format
+msgid ""
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
+msgstr ""
+
+#: ../../mod/contacts.php:267
+msgid "Contact Information / Notes"
+msgstr ""
+
+#: ../../mod/contacts.php:268
+msgid "Online Reputation"
+msgstr ""
+
+#: ../../mod/contacts.php:269
+msgid ""
+"Occasionally your friends may wish to inquire about this person's online "
+"legitimacy."
+msgstr ""
+
+#: ../../mod/contacts.php:270
+msgid ""
+"You may help them choose whether or not to interact with this person by "
+"providing a <em>reputation</em> to guide them."
+msgstr ""
+
+#: ../../mod/contacts.php:271
+msgid ""
+"Please take a moment to elaborate on this selection if you feel it could be "
+"helpful to others."
+msgstr ""
+
+#: ../../mod/contacts.php:272
+msgid "Visit $name's profile"
+msgstr ""
+
+#: ../../mod/contacts.php:273
+msgid "Block/Unblock contact"
+msgstr ""
+
+#: ../../mod/contacts.php:274
+msgid "Ignore contact"
+msgstr ""
+
+#: ../../mod/contacts.php:275
+msgid "Repair contact URL settings"
+msgstr ""
+
+#: ../../mod/contacts.php:276
+msgid "Repair contact URL settings (WARNING: Advanced)"
+msgstr ""
+
+#: ../../mod/contacts.php:277
+msgid "View conversations"
+msgstr ""
+
+#: ../../mod/contacts.php:278
+msgid "Delete contact"
+msgstr ""
+
+#: ../../mod/contacts.php:280
+msgid "Last updated: "
+msgstr ""
+
+#: ../../mod/contacts.php:281
+msgid "Update public posts: "
+msgstr ""
+
+#: ../../mod/contacts.php:283
+msgid "Update now"
+msgstr ""
+
+#: ../../mod/contacts.php:286
+msgid "Unblock this contact"
+msgstr ""
+
+#: ../../mod/contacts.php:286
+msgid "Block this contact"
+msgstr ""
+
+#: ../../mod/contacts.php:287
+msgid "Unignore this contact"
+msgstr ""
+
+#: ../../mod/contacts.php:287
+msgid "Ignore this contact"
+msgstr ""
+
+#: ../../mod/contacts.php:290
+msgid "Currently blocked"
+msgstr ""
+
+#: ../../mod/contacts.php:291
+msgid "Currently ignored"
+msgstr ""
+
+#: ../../mod/contacts.php:322 ../../include/acl_selectors.php:141
+#: ../../include/acl_selectors.php:156 ../../include/nav.php:110
+msgid "Contacts"
+msgstr ""
+
+#: ../../mod/contacts.php:324
+msgid "Show Blocked Connections"
+msgstr ""
+
+#: ../../mod/contacts.php:324
+msgid "Hide Blocked Connections"
+msgstr ""
+
+#: ../../mod/contacts.php:326 ../../mod/directory.php:44
+msgid "Finding: "
+msgstr ""
+
+#: ../../mod/contacts.php:327 ../../mod/directory.php:46
+msgid "Find"
+msgstr ""
+
+#: ../../mod/contacts.php:387 ../../mod/viewcontacts.php:52
+msgid "Visit $username's profile"
+msgstr ""
+
+#: ../../mod/contacts.php:388 ../../include/conversation.php:587
+msgid "Edit contact"
+msgstr ""
+
+#: ../../mod/lockview.php:39
+msgid "Remote privacy information not available."
+msgstr ""
+
+#: ../../mod/lockview.php:43
+msgid "Visible to:"
+msgstr ""
+
+#: ../../mod/register.php:47
+msgid "Invalid OpenID url"
+msgstr ""
+
+#: ../../mod/register.php:62
+msgid "Please enter the required information."
+msgstr ""
+
+#: ../../mod/register.php:74
+msgid "Please use a shorter name."
+msgstr ""
+
+#: ../../mod/register.php:76
+msgid "Name too short."
+msgstr ""
+
+#: ../../mod/register.php:91
+msgid "That doesn't appear to be your full (First Last) name."
+msgstr ""
+
+#: ../../mod/register.php:95
+msgid "Your email domain is not among those allowed on this site."
+msgstr ""
+
+#: ../../mod/register.php:98
+msgid "Not a valid email address."
+msgstr ""
+
+#: ../../mod/register.php:104
+msgid "Cannot use that email."
+msgstr ""
+
+#: ../../mod/register.php:109
+msgid ""
+"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
+"must also begin with a letter."
+msgstr ""
+
+#: ../../mod/register.php:115 ../../mod/register.php:215
+msgid "Nickname is already registered. Please choose another."
+msgstr ""
+
+#: ../../mod/register.php:134
+msgid "SERIOUS ERROR: Generation of security keys failed."
+msgstr ""
+
+#: ../../mod/register.php:201
+msgid "An error occurred during registration. Please try again."
+msgstr ""
+
+#: ../../mod/register.php:237
+msgid "An error occurred creating your default profile. Please try again."
+msgstr ""
+
+#: ../../mod/register.php:339
+msgid ""
+"Registration successful. Please check your email for further instructions."
+msgstr ""
+
+#: ../../mod/register.php:343
+msgid "Failed to send email message. Here is the message that failed."
+msgstr ""
+
+#: ../../mod/register.php:348
+msgid "Your registration can not be processed."
+msgstr ""
+
+#: ../../mod/register.php:371
+#, php-format
+msgid "Registration request at %s"
+msgstr ""
+
+#: ../../mod/register.php:377
+msgid "Your registration is pending approval by the site owner."
+msgstr ""
+
+#: ../../mod/register.php:425
+msgid ""
+"You may (optionally) fill in this form via OpenID by supplying your OpenID "
+"and clicking 'Register'."
+msgstr ""
+
+#: ../../mod/register.php:426
+msgid ""
+"If you are not familiar with OpenID, please leave that field blank and fill "
+"in the rest of the items."
+msgstr ""
+
+#: ../../mod/register.php:427
+msgid "Your OpenID (optional): "
+msgstr ""
+
+#: ../../mod/register.php:441
+msgid "Include your profile in member directory?"
+msgstr ""
+
+#: ../../mod/register.php:457
+msgid "Registration"
+msgstr ""
+
+#: ../../mod/register.php:465
+msgid "Your Full Name (e.g. Joe Smith): "
+msgstr ""
+
+#: ../../mod/register.php:466
+msgid "Your Email Address: "
+msgstr ""
+
+#: ../../mod/register.php:467
+msgid ""
+"Choose a profile nickname. This must begin with a text character. Your "
+"profile address on this site will then be '<strong>nickname@$sitename</"
+"strong>'."
+msgstr ""
+
+#: ../../mod/register.php:468
+msgid "Choose a nickname: "
+msgstr ""
+
+#: ../../mod/oexchange.php:27
+msgid "Post successful."
+msgstr ""
+
+#: ../../mod/help.php:27
+msgid "Help:"
+msgstr ""
+
+#: ../../mod/help.php:31 ../../include/nav.php:64
+msgid "Help"
+msgstr ""
+
+#: ../../mod/install.php:33
+msgid "Could not create/connect to database."
+msgstr ""
+
+#: ../../mod/install.php:38
+msgid "Connected to database."
+msgstr ""
+
+#: ../../mod/install.php:72
+msgid "Proceed with Installation"
+msgstr ""
+
+#: ../../mod/install.php:74
+msgid "Your Friendika site database has been installed."
+msgstr ""
+
+#: ../../mod/install.php:75
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
+msgstr ""
+
+#: ../../mod/install.php:76 ../../mod/install.php:86 ../../mod/install.php:199
+msgid "Please see the file \"INSTALL.txt\"."
+msgstr ""
+
+#: ../../mod/install.php:78
+msgid "Proceed to registration"
+msgstr ""
+
+#: ../../mod/install.php:84
+msgid "Database import failed."
+msgstr ""
+
+#: ../../mod/install.php:85
+msgid ""
+"You may need to import the file \"database.sql\" manually using phpmyadmin "
+"or mysql."
+msgstr ""
+
+#: ../../mod/install.php:98
+msgid "Welcome to Friendika."
+msgstr ""
+
+#: ../../mod/install.php:121
+msgid "Friendika Social Network"
+msgstr ""
+
+#: ../../mod/install.php:122
+msgid "Installation"
+msgstr ""
+
+#: ../../mod/install.php:123
+msgid ""
+"In order to install Friendika we need to know how to contact your database."
+msgstr ""
+
+#: ../../mod/install.php:124
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr ""
+
+#: ../../mod/install.php:125
+msgid ""
+"The database you specify below must already exist. If it does not, please "
+"create it before continuing."
+msgstr ""
+
+#: ../../mod/install.php:126
+msgid "Database Server Name"
+msgstr ""
+
+#: ../../mod/install.php:127
+msgid "Database Login Name"
+msgstr ""
+
+#: ../../mod/install.php:128
+msgid "Database Login Password"
+msgstr ""
+
+#: ../../mod/install.php:129
+msgid "Database Name"
+msgstr ""
+
+#: ../../mod/install.php:130
+msgid "Please select a default timezone for your website"
+msgstr ""
+
+#: ../../mod/install.php:148
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr ""
+
+#: ../../mod/install.php:149
+msgid ""
+"This is required. Please adjust the configuration file .htconfig.php "
+"accordingly."
+msgstr ""
+
+#: ../../mod/install.php:156
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr ""
+
+#: ../../mod/install.php:157
+msgid "This is required for message delivery to work."
+msgstr ""
+
+#: ../../mod/install.php:179
+msgid ""
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr ""
+
+#: ../../mod/install.php:180
+msgid ""
+"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
+"installation.php\"."
+msgstr ""
+
+#: ../../mod/install.php:189
+msgid ""
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr ""
+
+#: ../../mod/install.php:191
+msgid "Error: libCURL PHP module required but not installed."
+msgstr ""
+
+#: ../../mod/install.php:193
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr ""
+
+#: ../../mod/install.php:195
+msgid "Error: openssl PHP module required but not installed."
+msgstr ""
+
+#: ../../mod/install.php:197
+msgid "Error: mysqli PHP module required but not installed."
+msgstr ""
+
+#: ../../mod/install.php:208
+msgid ""
+"The web installer needs to be able to create a file called \".htconfig.php\" "
+"in the top folder of your web server and it is unable to do so."
+msgstr ""
+
+#: ../../mod/install.php:209
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr ""
+
+#: ../../mod/install.php:210
+msgid ""
+"Please check with your site documentation or support people to see if this "
+"situation can be corrected."
+msgstr ""
+
+#: ../../mod/install.php:211
+msgid ""
+"If not, you may be required to perform a manual installation. Please see the "
+"file \"INSTALL.txt\" for instructions."
+msgstr ""
+
+#: ../../mod/install.php:220
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
+msgstr ""
+
+#: ../../mod/install.php:235
+msgid "Errors encountered creating database tables."
+msgstr ""
+
+#: ../../mod/network.php:18
+msgid "Normal View"
+msgstr ""
+
+#: ../../mod/network.php:20
+msgid "New Item View"
+msgstr ""
+
+#: ../../mod/network.php:64
+#, php-format
+msgid "%d member"
+msgid_plural "%d members"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../mod/network.php:65
+#, php-format
+msgid "Warning: This group contains %s from an insecure network."
+msgstr ""
+
+#: ../../mod/network.php:66
+msgid "Private messages to this group are at risk of public disclosure."
+msgstr ""
+
+#: ../../mod/network.php:126
+msgid "No such group"
+msgstr ""
+
+#: ../../mod/network.php:137
+msgid "Group is empty"
+msgstr ""
+
+#: ../../mod/network.php:141
+msgid "Group: "
+msgstr ""
+
+#: ../../mod/network.php:151
+msgid "Contact: "
+msgstr ""
+
+#: ../../mod/network.php:153
+msgid "Private messages to this person are at risk of public disclosure."
+msgstr ""
+
+#: ../../mod/network.php:158
+msgid "Invalid contact."
+msgstr ""
+
+#: ../../mod/profperm.php:25 ../../mod/profperm.php:46
+msgid "Invalid profile identifier."
+msgstr ""
+
+#: ../../mod/profperm.php:92
+msgid "Profile Visibility Editor"
+msgstr ""
+
+#: ../../mod/profperm.php:96 ../../mod/group.php:156
+msgid "Click on a contact to add or remove."
+msgstr ""
+
+#: ../../mod/profperm.php:105
+msgid "Visible To"
+msgstr ""
+
+#: ../../mod/profperm.php:116
+msgid "All Contacts (with secure profile access)"
+msgstr ""
+
+#: ../../mod/notifications.php:28
+msgid "Invalid request identifier."
+msgstr ""
+
+#: ../../mod/notifications.php:31 ../../mod/notifications.php:133
+msgid "Discard"
+msgstr ""
+
+#: ../../mod/notifications.php:41 ../../mod/notifications.php:132
+msgid "Ignore"
+msgstr ""
+
+#: ../../mod/notifications.php:68
+msgid "Pending Friend/Connect Notifications"
+msgstr ""
+
+#: ../../mod/notifications.php:72
+msgid "Show Ignored Requests"
+msgstr ""
+
+#: ../../mod/notifications.php:72
+msgid "Hide Ignored Requests"
+msgstr ""
+
+#: ../../mod/notifications.php:104
+msgid "Claims to be known to you: "
+msgstr ""
+
+#: ../../mod/notifications.php:104
+msgid "yes"
+msgstr ""
+
+#: ../../mod/notifications.php:104
+msgid "no"
+msgstr ""
+
+#: ../../mod/notifications.php:110
+msgid "Approve as: "
+msgstr ""
+
+#: ../../mod/notifications.php:111
+msgid "Friend"
+msgstr ""
+
+#: ../../mod/notifications.php:112
+msgid "Fan/Admirer"
+msgstr ""
+
+#: ../../mod/notifications.php:119
+msgid "Notification type: "
+msgstr ""
+
+#: ../../mod/notifications.php:120
+msgid "Friend/Connect Request"
+msgstr ""
+
+#: ../../mod/notifications.php:120
+msgid "New Follower"
+msgstr ""
+
+#: ../../mod/notifications.php:130 ../../mod/notifications.php:153
+msgid "Approve"
+msgstr ""
+
+#: ../../mod/notifications.php:139
+msgid "No notifications."
+msgstr ""
+
+#: ../../mod/notifications.php:143
+msgid "User registrations waiting for confirm"
+msgstr ""
+
+#: ../../mod/notifications.php:154
+msgid "Deny"
+msgstr ""
+
+#: ../../mod/notifications.php:159
+msgid "No registrations."
+msgstr ""
+
+#: ../../mod/crepair.php:42
+msgid "Contact settings applied."
+msgstr ""
+
+#: ../../mod/crepair.php:44
+msgid "Contact update failed."
+msgstr ""
+
+#: ../../mod/crepair.php:74
+msgid "Repair Contact Settings"
+msgstr ""
+
+#: ../../mod/crepair.php:76
+msgid ""
+"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect "
+"information your communications with this contact will stop working."
+msgstr ""
+
+#: ../../mod/crepair.php:77
+msgid ""
+"Please use your browser 'Back' button <strong>now</strong> if you are "
+"uncertain what to do on this page."
+msgstr ""
+
+#: ../../mod/crepair.php:85
+msgid "Name"
+msgstr ""
+
+#: ../../mod/crepair.php:86
+msgid "Account Nickname"
+msgstr ""
+
+#: ../../mod/crepair.php:87
+msgid "Account URL"
+msgstr ""
+
+#: ../../mod/crepair.php:88
+msgid "Friend Request URL"
+msgstr ""
+
+#: ../../mod/crepair.php:89
+msgid "Friend Confirm URL"
+msgstr ""
+
+#: ../../mod/crepair.php:90
+msgid "Notification Endpoint URL"
+msgstr ""
+
+#: ../../mod/crepair.php:91
+msgid "Poll/Feed URL"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:96
+msgid "This introduction has already been accepted."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:120 ../../mod/dfrn_request.php:351
+msgid "Profile location is not valid or does not contain profile information."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:125 ../../mod/dfrn_request.php:356
+msgid "Warning: profile location has no identifiable owner name."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:127 ../../mod/dfrn_request.php:358
+msgid "Warning: profile location has no profile photo."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:130 ../../mod/dfrn_request.php:361
+#, php-format
+msgid "%d required parameter was not found at the given location"
+msgid_plural "%d required parameters were not found at the given location"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../mod/dfrn_request.php:168
+msgid "Introduction complete."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:192
+msgid "Unrecoverable protocol error."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:220
+msgid "Profile unavailable."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:245
+#, php-format
+msgid "%s has received too many connection requests today."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:246
+msgid "Spam protection measures have been invoked."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:247
+msgid "Friends are advised to please try again in 24 hours."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:277
+msgid "Invalid locator"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:296
+msgid "Unable to resolve your name at the provided location."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:309
+msgid "You have already introduced yourself here."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:313
+#, php-format
+msgid "Apparently you are already friends with %s."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:334
+msgid "Invalid profile URL."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:427
+msgid "Your introduction has been sent."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:481
+msgid "Please login to confirm introduction."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:495
+msgid ""
+"Incorrect identity currently logged in. Please login to <strong>this</"
+"strong> profile."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:507
+#, php-format
+msgid "Welcome home %s."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:508
+#, php-format
+msgid "Please confirm your introduction/connection request to %s."
+msgstr ""
+
+#: ../../mod/dfrn_request.php:509
+msgid "Confirm"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:542 ../../include/items.php:1426
+msgid "[Name Withheld]"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:549
+msgid "Introduction received at "
+msgstr ""
+
+#: ../../mod/dfrn_request.php:630
+msgid "Friend/Connection Request"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:631
+msgid ""
+"Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, "
+"testuser@identi.ca"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:632
+msgid "Please answer the following:"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:633
+msgid "Does $name know you?"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:636
+msgid "Add a personal note:"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:637
+msgid ""
+"Please enter your 'Identity Address' from one of the following supported "
+"social networks:"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:638
+msgid "Friendika"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:639
+msgid "StatusNet/Federated Social Web"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:640
+msgid "Private (secure) network"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:641
+msgid "Public (insecure) network"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:642
+msgid "Your Identity Address:"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:643
+msgid "Submit Request"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:644 ../../mod/tagrm.php:11
+#: ../../mod/tagrm.php:94 ../../addon/js_upload/js_upload.php:41
+msgid "Cancel"
+msgstr ""
+
+#: ../../mod/like.php:110 ../../addon/facebook/facebook.php:745
+#: ../../include/conversation.php:20
+msgid "status"
+msgstr ""
+
+#: ../../mod/like.php:127 ../../addon/facebook/facebook.php:749
+#: ../../include/conversation.php:25
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr ""
+
+#: ../../mod/like.php:129 ../../include/conversation.php:28
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr ""
+
+#: ../../mod/lostpass.php:27
+msgid "Password reset request issued. Check your email."
+msgstr ""
+
+#: ../../mod/lostpass.php:38
+#, php-format
+msgid "Password reset requested at %s"
+msgstr ""
+
+#: ../../mod/lostpass.php:60
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr ""
+
+#: ../../mod/lostpass.php:79
+msgid "Your password has been reset as requested."
+msgstr ""
+
+#: ../../mod/lostpass.php:80
+msgid "Your new password is"
+msgstr ""
+
+#: ../../mod/lostpass.php:81
+msgid "Save or copy your new password - and then"
+msgstr ""
+
+#: ../../mod/lostpass.php:82
+msgid "click here to login"
+msgstr ""
+
+#: ../../mod/lostpass.php:83
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr ""
+
+#: ../../mod/lostpass.php:114
+msgid "Forgot your Password?"
+msgstr ""
+
+#: ../../mod/lostpass.php:115
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr ""
+
+#: ../../mod/lostpass.php:116
+msgid "Nickname or Email: "
+msgstr ""
+
+#: ../../mod/lostpass.php:117
+msgid "Reset"
+msgstr ""
+
+#: ../../mod/removeme.php:42 ../../mod/removeme.php:45
+msgid "Remove My Account"
+msgstr ""
+
+#: ../../mod/removeme.php:43
+msgid ""
+"This will completely remove your account. Once this has been done it is not "
+"recoverable."
+msgstr ""
+
+#: ../../mod/removeme.php:44
+msgid "Please enter your password for verification:"
+msgstr ""
+
+#: ../../mod/apps.php:6
+msgid "Applications"
+msgstr ""
+
+#: ../../mod/directory.php:38
+msgid "Global Directory"
+msgstr ""
+
+#: ../../mod/directory.php:45
+msgid "Site Directory"
+msgstr ""
+
+#: ../../mod/directory.php:100
+msgid "Gender: "
+msgstr ""
+
+#: ../../mod/directory.php:126
+msgid "No entries (some entries may be hidden)."
+msgstr ""
+
+#: ../../mod/friendika.php:12
+msgid "This is Friendika version"
+msgstr ""
+
+#: ../../mod/friendika.php:13
+msgid "running at web location"
+msgstr ""
+
+#: ../../mod/friendika.php:15
+msgid ""
+"Shared content within the Friendika network is provided under the <a href="
+"\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution "
+"3.0 license</a>"
+msgstr ""
+
+#: ../../mod/friendika.php:17
+msgid ""
+"Please visit <a href=\"http://project.friendika.com\">Project.Friendika.com</"
+"a> to learn more about the Friendika project."
+msgstr ""
+
+#: ../../mod/friendika.php:19
+msgid "Bug reports and issues: please visit"
+msgstr ""
+
+#: ../../mod/friendika.php:20
+msgid ""
+"Suggestions, praise, donations, etc. - please email \"Info\" at Friendika - "
+"dot com"
+msgstr ""
+
+#: ../../mod/friendika.php:25
+msgid "Installed plugins/addons/apps"
+msgstr ""
+
+#: ../../mod/friendika.php:33
+msgid "No installed plugins/addons/apps"
+msgstr ""
+
+#: ../../mod/item.php:37
+msgid "Unable to locate original post."
+msgstr ""
+
+#: ../../mod/item.php:128
+msgid "Empty post discarded."
+msgstr ""
+
+#: ../../mod/item.php:478
+#, php-format
+msgid "%s commented on your item at %s"
+msgstr ""
+
+#: ../../mod/item.php:504
+#, php-format
+msgid "%s posted on your profile wall at %s"
+msgstr ""
+
+#: ../../mod/item.php:534
+msgid "System error. Post not saved."
+msgstr ""
+
+#: ../../mod/item.php:553
+#, php-format
+msgid ""
+"This message was sent to you by %s, a member of the Friendika social network."
+msgstr ""
+
+#: ../../mod/item.php:555
+#, php-format
+msgid "You may visit them online at %s"
+msgstr ""
+
+#: ../../mod/item.php:556
+msgid ""
+"Please contact the sender by replying to this post if you do not wish to "
+"receive these messages."
+msgstr ""
+
+#: ../../mod/item.php:558
+#, php-format
+msgid "%s posted an update."
+msgstr ""
+
+#: ../../mod/tagrm.php:41
+msgid "Tag removed"
+msgstr ""
+
+#: ../../mod/tagrm.php:79
+msgid "Remove Item Tag"
+msgstr ""
+
+#: ../../mod/tagrm.php:81
+msgid "Select a tag to remove: "
+msgstr ""
+
+#: ../../mod/tagrm.php:93
+msgid "Remove"
+msgstr ""
+
+#: ../../mod/message.php:18
+msgid "No recipient selected."
+msgstr ""
+
+#: ../../mod/message.php:23
+msgid "[no subject]"
+msgstr ""
+
+#: ../../mod/message.php:34
+msgid "Unable to locate contact information."
+msgstr ""
+
+#: ../../mod/message.php:102
+msgid "Message sent."
+msgstr ""
+
+#: ../../mod/message.php:105
+msgid "Message could not be sent."
+msgstr ""
+
+#: ../../mod/message.php:125 ../../include/nav.php:102
+msgid "Messages"
+msgstr ""
+
+#: ../../mod/message.php:126
+msgid "Inbox"
+msgstr ""
+
+#: ../../mod/message.php:127
+msgid "Outbox"
+msgstr ""
+
+#: ../../mod/message.php:128
+msgid "New Message"
+msgstr ""
+
+#: ../../mod/message.php:142
+msgid "Message deleted."
+msgstr ""
+
+#: ../../mod/message.php:158
+msgid "Conversation removed."
+msgstr ""
+
+#: ../../mod/message.php:172 ../../include/conversation.php:674
+msgid "Please enter a link URL:"
+msgstr ""
+
+#: ../../mod/message.php:180
+msgid "Send Private Message"
+msgstr ""
+
+#: ../../mod/message.php:181 ../../mod/message.php:315
+msgid "To:"
+msgstr ""
+
+#: ../../mod/message.php:182 ../../mod/message.php:316
+msgid "Subject:"
+msgstr ""
+
+#: ../../mod/message.php:224
+msgid "No messages."
+msgstr ""
+
+#: ../../mod/message.php:237
+msgid "Delete conversation"
+msgstr ""
+
+#: ../../mod/message.php:240
+msgid "D, d M Y - g:i A"
+msgstr ""
+
+#: ../../mod/message.php:267
+msgid "Message not available."
+msgstr ""
+
+#: ../../mod/message.php:304
+msgid "Delete message"
+msgstr ""
+
+#: ../../mod/message.php:314
+msgid "Send Reply"
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:231
+msgid "Response from remote site was not understood."
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:240
+msgid "Unexpected response from remote site: "
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:248
+msgid "Confirmation completed successfully."
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:250 ../../mod/dfrn_confirm.php:264
+#: ../../mod/dfrn_confirm.php:271
+msgid "Remote site reported: "
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:262
+msgid "Temporary failure. Please wait and try again."
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:269
+msgid "Introduction failed or was revoked."
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:387
+msgid "Unable to set contact photo."
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:430 ../../include/conversation.php:61
+#, php-format
+msgid "%1$s is now friends with %2$s"
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:501
+#, php-format
+msgid "No user record found for '%s' "
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:511
+msgid "Our site encryption key is apparently messed up."
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:522
+msgid "Empty site URL was provided or URL could not be decrypted by us."
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:534
+msgid "Contact record was not found for you on our site."
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:562
+msgid ""
+"The ID provided by your system is a duplicate on our system. It should work "
+"if you try again."
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:573
+msgid "Unable to set your contact credentials on our system."
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:626
+msgid "Unable to update your contact profile details on our system"
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:655
+#, php-format
+msgid "Connection accepted at %s"
+msgstr ""
+
+#: ../../mod/openid.php:62 ../../mod/openid.php:118 ../../include/auth.php:114
+#: ../../include/auth.php:139 ../../include/auth.php:192
+msgid "Login failed."
+msgstr ""
+
+#: ../../mod/openid.php:78 ../../include/auth.php:208
+msgid "Welcome "
+msgstr ""
+
+#: ../../mod/openid.php:79 ../../include/auth.php:209
+msgid "Please upload a profile photo."
+msgstr ""
+
+#: ../../mod/openid.php:82 ../../include/auth.php:212
+msgid "Welcome back "
+msgstr ""
+
+#: ../../mod/dfrn_poll.php:84 ../../mod/dfrn_poll.php:510
+#, php-format
+msgid "%s welcomes %s"
+msgstr ""
+
+#: ../../mod/viewcontacts.php:40
+msgid "No contacts."
+msgstr ""
+
+#: ../../mod/group.php:27
+msgid "Group created."
+msgstr ""
+
+#: ../../mod/group.php:33
+msgid "Could not create group."
+msgstr ""
+
+#: ../../mod/group.php:43 ../../mod/group.php:115
+msgid "Group not found."
+msgstr ""
+
+#: ../../mod/group.php:56
+msgid "Group name changed."
+msgstr ""
+
+#: ../../mod/group.php:74
+msgid "Create a group of contacts/friends."
+msgstr ""
+
+#: ../../mod/group.php:75 ../../mod/group.php:158
+msgid "Group Name: "
+msgstr ""
+
+#: ../../mod/group.php:90
+msgid "Group removed."
+msgstr ""
+
+#: ../../mod/group.php:92
+msgid "Unable to remove group."
+msgstr ""
+
+#: ../../mod/group.php:157
+msgid "Group Editor"
+msgstr ""
+
+#: ../../mod/group.php:169
+msgid "Members"
+msgstr ""
+
+#: ../../mod/group.php:183
+msgid "All Contacts"
+msgstr ""
+
+#: ../../mod/match.php:10
+msgid "Profile Match"
+msgstr ""
+
+#: ../../mod/match.php:50
+msgid "No matches"
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:64
+msgid "Post to Twitter"
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:122
+msgid "Twitter Posting Settings"
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:129
+msgid ""
+"No consumer key pair for Twitter found. Please contact your site "
+"administrator."
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:148
+msgid ""
+"At this Friendika instance the Twitter plugin was enabled but you have not "
+"yet connected your account to your Twitter account. To do so click the "
+"button below to get a PIN from Twitter which you have to copy into the input "
+"box below and submit the form. Only your <strong>public</strong> posts will "
+"be posted to Twitter."
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:149
+msgid "Log in with Twitter"
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:151
+msgid "Copy the PIN from Twitter here"
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:165 ../../addon/statusnet/statusnet.php:197
+msgid "Currently connected to: "
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:166
+msgid ""
+"If enabled all your <strong>public</strong> postings will be posted to the "
+"associated Twitter account as well."
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:168
+msgid "Send public postings to Twitter"
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:172 ../../addon/statusnet/statusnet.php:204
+msgid "Clear OAuth configuration"
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:78
+msgid "Post to StatusNet"
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:146
+msgid "StatusNet Posting Settings"
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:152
+msgid ""
+"No consumer key pair for StatusNet found. Register your Friendika Account as "
+"an desktop client on your StatusNet account, copy the consumer key pair here "
+"and enter the API base root.<br />Before you register your own OAuth key "
+"pair ask the administrator if there is already a key pair for this Friendika "
+"installation at your favorited StatusNet installation."
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:154
+msgid "OAuth Consumer Key"
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:157
+msgid "OAuth Consumer Secret"
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:160
+msgid "Base API Path (remember the trailing /)"
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:181
+msgid ""
+"To connect to your StatusNet account click the button below to get a "
+"security code from StatusNet which you have to copy into the input box below "
+"and submit the form. Only your <strong>public</strong> posts will be posted "
+"to StatusNet."
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:182
+msgid "Log in with StatusNet"
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:184
+msgid "Copy the security code from StatusNet here"
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:198
+msgid ""
+"If enabled all your <strong>public</strong> postings will be posted to the "
+"associated StatusNet account as well."
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:200
+msgid "Send public postings to StatusNet"
+msgstr ""
+
+#: ../../addon/tictac/tictac.php:14
+msgid "Three Dimensional Tic-Tac-Toe"
+msgstr ""
+
+#: ../../addon/tictac/tictac.php:47
+msgid "3D Tic-Tac-Toe"
+msgstr ""
+
+#: ../../addon/tictac/tictac.php:52
+msgid "New game"
+msgstr ""
+
+#: ../../addon/tictac/tictac.php:53
+msgid "New game with handicap"
+msgstr ""
+
+#: ../../addon/tictac/tictac.php:54
+msgid ""
+"Three dimensional tic-tac-toe is just like the traditional game except that "
+"it is played on multiple levels simultaneously. "
+msgstr ""
+
+#: ../../addon/tictac/tictac.php:55
+msgid ""
+"In this case there are three levels. You win by getting three in a row on "
+"any level, as well as up, down, and diagonally across the different levels."
+msgstr ""
+
+#: ../../addon/tictac/tictac.php:57
+msgid ""
+"The handicap game disables the center position on the middle level because "
+"the player claiming this square often has an unfair advantage."
+msgstr ""
+
+#: ../../addon/tictac/tictac.php:176
+msgid "You go first..."
+msgstr ""
+
+#: ../../addon/tictac/tictac.php:181
+msgid "I'm going first this time..."
+msgstr ""
+
+#: ../../addon/tictac/tictac.php:187
+msgid "You won!"
+msgstr ""
+
+#: ../../addon/tictac/tictac.php:193 ../../addon/tictac/tictac.php:218
+msgid "\"Cat\" game!"
+msgstr ""
+
+#: ../../addon/tictac/tictac.php:216
+msgid "I won!"
+msgstr ""
+
+#: ../../addon/java_upload/java_upload.php:33
+msgid "Select files to upload: "
+msgstr ""
+
+#: ../../addon/java_upload/java_upload.php:35
+msgid ""
+"Use the following controls only if the Java uploader [above] fails to launch."
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:252
+msgid "Facebook disabled"
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:257
+msgid "Updating contacts"
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:266
+msgid "Facebook API key is missing."
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:273
+msgid "Facebook Connect"
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:279
+msgid "Install Facebook connector for this account."
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:286
+msgid "Remove Facebook connector"
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:292
+msgid "Post to Facebook by default"
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:354
+msgid "Facebook"
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:355
+msgid "Facebook Connector Settings"
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:369
+msgid "Post to Facebook"
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:436
+msgid ""
+"Post to Facebook cancelled because of multi-network access permission "
+"conflict."
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:491
+msgid "Image: "
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:551
+msgid "View on Friendika"
+msgstr ""
+
+#: ../../addon/randplace/randplace.php:171
+msgid "Randplace Settings"
+msgstr ""
+
+#: ../../addon/randplace/randplace.php:173
+msgid "Enable Randplace Plugin"
+msgstr ""
+
+#: ../../addon/js_upload/js_upload.php:39
+msgid "Upload a file"
+msgstr ""
+
+#: ../../addon/js_upload/js_upload.php:40
+msgid "Drop files here to upload"
+msgstr ""
+
+#: ../../addon/js_upload/js_upload.php:42
+msgid "Failed"
+msgstr ""
+
+#: ../../addon/js_upload/js_upload.php:288
+msgid "No files were uploaded."
+msgstr ""
+
+#: ../../addon/js_upload/js_upload.php:294
+msgid "Uploaded file is empty"
+msgstr ""
+
+#: ../../addon/js_upload/js_upload.php:299
+msgid "Uploaded file is too large"
+msgstr ""
+
+#: ../../addon/js_upload/js_upload.php:317
+msgid "File has an invalid extension, it should be one of "
+msgstr ""
+
+#: ../../addon/js_upload/js_upload.php:328
+msgid "Upload was cancelled, or server error encountered"
+msgstr ""
+
+#: ../../include/notifier.php:414
+msgid "(no subject)"
+msgstr ""
+
+#: ../../include/contact_selectors.php:32
+msgid "Unknown | Not categorised"
+msgstr ""
+
+#: ../../include/contact_selectors.php:33
+msgid "Block immediately"
+msgstr ""
+
+#: ../../include/contact_selectors.php:34
+msgid "Shady, spammer, self-marketer"
+msgstr ""
+
+#: ../../include/contact_selectors.php:35
+msgid "Known to me, but no opinion"
+msgstr ""
+
+#: ../../include/contact_selectors.php:36
+msgid "OK, probably harmless"
+msgstr ""
+
+#: ../../include/contact_selectors.php:37
+msgid "Reputable, has my trust"
+msgstr ""
+
+#: ../../include/contact_selectors.php:55
+msgid "Frequently"
+msgstr ""
+
+#: ../../include/contact_selectors.php:56
+msgid "Hourly"
+msgstr ""
+
+#: ../../include/contact_selectors.php:57
+msgid "Twice daily"
+msgstr ""
+
+#: ../../include/contact_selectors.php:58
+msgid "Daily"
+msgstr ""
+
+#: ../../include/contact_selectors.php:59
+msgid "Weekly"
+msgstr ""
+
+#: ../../include/contact_selectors.php:60
+msgid "Monthly"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Male"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Female"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Currently Male"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Currently Female"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Male"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Female"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Transgender"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Intersex"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Transsexual"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Hermaphrodite"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Neuter"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Non-specific"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Other"
+msgstr ""
+
+#: ../../include/profile_selectors.php:6
+msgid "Undecided"
+msgstr ""
+
+#: ../../include/profile_selectors.php:19
+msgid "Males"
+msgstr ""
+
+#: ../../include/profile_selectors.php:19
+msgid "Females"
+msgstr ""
+
+#: ../../include/profile_selectors.php:19
+msgid "Gay"
+msgstr ""
+
+#: ../../include/profile_selectors.php:19
+msgid "Lesbian"
+msgstr ""
+
+#: ../../include/profile_selectors.php:19
+msgid "No Preference"
+msgstr ""
+
+#: ../../include/profile_selectors.php:19
+msgid "Bisexual"
+msgstr ""
+
+#: ../../include/profile_selectors.php:19
+msgid "Autosexual"
+msgstr ""
+
+#: ../../include/profile_selectors.php:19
+msgid "Abstinent"
+msgstr ""
+
+#: ../../include/profile_selectors.php:19
+msgid "Virgin"
+msgstr ""
+
+#: ../../include/profile_selectors.php:19
+msgid "Deviant"
+msgstr ""
+
+#: ../../include/profile_selectors.php:19
+msgid "Fetish"
+msgstr ""
+
+#: ../../include/profile_selectors.php:19
+msgid "Oodles"
+msgstr ""
+
+#: ../../include/profile_selectors.php:19
+msgid "Nonsexual"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Single"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Lonely"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Available"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Unavailable"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Dating"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Unfaithful"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Sex Addict"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Friends"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Friends/Benefits"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Casual"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Engaged"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Married"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Partners"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Cohabiting"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Happy"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Not Looking"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Swinger"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Betrayed"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Separated"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Unstable"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Divorced"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Widowed"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Uncertain"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Complicated"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Don't care"
+msgstr ""
+
+#: ../../include/profile_selectors.php:33
+msgid "Ask me"
+msgstr ""
+
+#: ../../include/acl_selectors.php:133
+msgid "Visible To:"
+msgstr ""
+
+#: ../../include/acl_selectors.php:137 ../../include/acl_selectors.php:152
+msgid "Groups"
+msgstr ""
+
+#: ../../include/acl_selectors.php:148
+msgid "Except For:"
+msgstr ""
+
+#: ../../include/auth.php:27
+msgid "Logged out."
+msgstr ""
+
+#: ../../include/bbcode.php:83
+msgid "Image/photo"
+msgstr ""
+
+#: ../../include/datetime.php:44 ../../include/datetime.php:46
+msgid "Miscellaneous"
+msgstr ""
+
+#: ../../include/datetime.php:148
+msgid "less than a second ago"
+msgstr ""
+
+#: ../../include/datetime.php:151
+msgid "year"
+msgstr ""
+
+#: ../../include/datetime.php:151
+msgid "years"
+msgstr ""
+
+#: ../../include/datetime.php:152
+msgid "month"
+msgstr ""
+
+#: ../../include/datetime.php:152
+msgid "months"
+msgstr ""
+
+#: ../../include/datetime.php:153
+msgid "week"
+msgstr ""
+
+#: ../../include/datetime.php:153
+msgid "weeks"
+msgstr ""
+
+#: ../../include/datetime.php:154
+msgid "day"
+msgstr ""
+
+#: ../../include/datetime.php:155
+msgid "hour"
+msgstr ""
+
+#: ../../include/datetime.php:155
+msgid "hours"
+msgstr ""
+
+#: ../../include/datetime.php:156
+msgid "minute"
+msgstr ""
+
+#: ../../include/datetime.php:156
+msgid "minutes"
+msgstr ""
+
+#: ../../include/datetime.php:157
+msgid "second"
+msgstr ""
+
+#: ../../include/datetime.php:157
+msgid "seconds"
+msgstr ""
+
+#: ../../include/datetime.php:164
+msgid " ago"
+msgstr ""
+
+#: ../../include/profile_advanced.php:36 ../../include/items.php:1072
+msgid "Birthday:"
+msgstr ""
+
+#: ../../include/profile_advanced.php:45
+msgid "j F, Y"
+msgstr ""
+
+#: ../../include/profile_advanced.php:46
+msgid "j F"
+msgstr ""
+
+#: ../../include/profile_advanced.php:59
+msgid "Age:"
+msgstr ""
+
+#: ../../include/profile_advanced.php:70
+msgid "<span class=\"heart\">&hearts;</span> Status:"
+msgstr ""
+
+#: ../../include/profile_advanced.php:127
+msgid "Religion:"
+msgstr ""
+
+#: ../../include/profile_advanced.php:138
+msgid "About:"
+msgstr ""
+
+#: ../../include/profile_advanced.php:150
+msgid "Hobbies/Interests:"
+msgstr ""
+
+#: ../../include/profile_advanced.php:162
+msgid "Contact information and Social Networks:"
+msgstr ""
+
+#: ../../include/profile_advanced.php:174
+msgid "Musical interests:"
+msgstr ""
+
+#: ../../include/profile_advanced.php:186
+msgid "Books, literature:"
+msgstr ""
+
+#: ../../include/profile_advanced.php:198
+msgid "Television:"
+msgstr ""
+
+#: ../../include/profile_advanced.php:210
+msgid "Film/dance/culture/entertainment:"
+msgstr ""
+
+#: ../../include/profile_advanced.php:222
+msgid "Love/Romance:"
+msgstr ""
+
+#: ../../include/profile_advanced.php:234
+msgid "Work/employment:"
+msgstr ""
+
+#: ../../include/profile_advanced.php:246
+msgid "School/education:"
+msgstr ""
+
+#: ../../include/nav.php:55 ../../include/nav.php:93
+msgid "Home"
+msgstr ""
+
+#: ../../include/nav.php:68
+msgid "Apps"
+msgstr ""
+
+#: ../../include/nav.php:81
+msgid "Directory"
+msgstr ""
+
+#: ../../include/nav.php:91
+msgid "Network"
+msgstr ""
+
+#: ../../include/nav.php:99
+msgid "Notifications"
+msgstr ""
+
+#: ../../include/nav.php:105
+msgid "Manage"
+msgstr ""
+
+#: ../../include/nav.php:108
+msgid "Settings"
+msgstr ""
+
+#: ../../include/conversation.php:184 ../../include/conversation.php:441
+#: ../../include/conversation.php:442
+#, php-format
+msgid "View %s's profile"
+msgstr ""
+
+#: ../../include/conversation.php:200
+msgid "View in context"
+msgstr ""
+
+#: ../../include/conversation.php:271
+msgid "See more posts like this"
+msgstr ""
+
+#: ../../include/conversation.php:296
+#, php-format
+msgid "See all %d comments"
+msgstr ""
+
+#: ../../include/conversation.php:443
+msgid "to"
+msgstr ""
+
+#: ../../include/conversation.php:444
+msgid "Wall-to-Wall"
+msgstr ""
+
+#: ../../include/conversation.php:445
+msgid "via Wall-To-Wall:"
+msgstr ""
+
+#: ../../include/conversation.php:583
+msgid "View status"
+msgstr ""
+
+#: ../../include/conversation.php:584
+msgid "View profile"
+msgstr ""
+
+#: ../../include/conversation.php:585
+msgid "View photos"
+msgstr ""
+
+#: ../../include/conversation.php:586
+msgid "View recent"
+msgstr ""
+
+#: ../../include/conversation.php:588
+msgid "Send PM"
+msgstr ""
+
+#: ../../include/conversation.php:638
+#, php-format
+msgid "%s likes this."
+msgstr ""
+
+#: ../../include/conversation.php:638
+#, php-format
+msgid "%s doesn't like this."
+msgstr ""
+
+#: ../../include/conversation.php:642
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgstr ""
+
+#: ../../include/conversation.php:644
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgstr ""
+
+#: ../../include/conversation.php:650
+msgid "and"
+msgstr ""
+
+#: ../../include/conversation.php:653
+#, php-format
+msgid ", and %d other people"
+msgstr ""
+
+#: ../../include/conversation.php:654
+#, php-format
+msgid "%s like this."
+msgstr ""
+
+#: ../../include/conversation.php:654
+#, php-format
+msgid "%s don't like this."
+msgstr ""
+
+#: ../../include/conversation.php:675
+msgid "Please enter a YouTube link:"
+msgstr ""
+
+#: ../../include/conversation.php:676
+msgid "Please enter a video(.ogg) link/URL:"
+msgstr ""
+
+#: ../../include/conversation.php:677
+msgid "Please enter an audio(.ogg) link/URL:"
+msgstr ""
+
+#: ../../include/conversation.php:678
+msgid "Where are you right now?"
+msgstr ""
+
+#: ../../include/conversation.php:679
+msgid "Enter a title for this item"
+msgstr ""
+
+#: ../../include/conversation.php:726
+msgid "Set title"
+msgstr ""
+
+#: ../../include/dba.php:31
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr ""
+
+#: ../../include/items.php:1433
+msgid "You have a new follower at "
+msgstr ""
+
+#: ../../include/group.php:146
+msgid "Create a new group"
+msgstr ""
+
+#: ../../include/group.php:147
+msgid "Everybody"
+msgstr ""
+
+#: ../../include/oembed.php:57
+msgid "Embedding disabled"
+msgstr ""
diff --git a/util/php2po.php b/util/php2po.php
new file mode 100644
index 000000000..d3ce0a5af
--- /dev/null
+++ b/util/php2po.php
@@ -0,0 +1,71 @@
+<?php
+
+ if(! class_exists('App')) {
+ class TmpA {
+ public $strings = Array();
+ }
+ $a = new TmpA();
+ }
+
+ if ($argc!=2) {
+ print "Usage: ".$argv[0]." <strings.php>\n\n";
+ return;
+ }
+
+ $phpfile = $argv[1];
+ $pofile = dirname($phpfile)."/messages.po";
+
+ if (!file_exists($phpfile)){
+ print "Unable to find '$phpfile'\n";
+ return;
+ }
+
+ include_once($phpfile);
+
+ print "Out to '$pofile'\n";
+
+ $out = "";
+ $infile = file($pofile);
+ $k="";
+ $ink = False;
+ foreach ($infile as $l) {
+
+ if ($k!="" && substr($l,0,7)=="msgstr "){
+ $ink = False;
+ $v = '""';
+ //echo "DBG: k:'$k'\n";
+ if (isset($a->strings[$k])) {
+ $v= '"'.$a->strings[$k].'"';
+ //echo "DBG\n";
+ //var_dump($k, $v, $a->strings[$k], $v);
+ //echo "/DBG\n";
+
+ }
+ //echo "DBG: v:'$v'\n";
+ $l = "msgstr ".$v."\n";
+ }
+
+ if (substr($l,0,6)=="msgid_" || substr($l,0,7)=="msgstr[" )$ink = False;;
+
+ if ($ink) {
+ $k .= trim($l,"\"\r\n");
+ $k = str_replace('\"','"',$k);
+ }
+
+ if (substr($l,0,6)=="msgid "){
+ $arr=False;
+ $k = str_replace("msgid ","",$l);
+ if ($k != '""' ) {
+ $k = trim($k,"\"\r\n");
+ $k = str_replace('\"','"',$k);
+ } else {
+ $k = "";
+ }
+ $ink = True;
+ }
+
+ $out .= $l;
+ }
+ //echo $out;
+ file_put_contents($pofile, $out);
+?> \ No newline at end of file
diff --git a/util/po2php.php b/util/po2php.php
new file mode 100644
index 000000000..239eafb5f
--- /dev/null
+++ b/util/po2php.php
@@ -0,0 +1,115 @@
+<?php
+
+
+function po2php_run($argv, $argc) {
+
+ if ($argc!=2) {
+ print "Usage: ".$argv[0]." <file.po>\n\n";
+ return;
+ }
+
+ $pofile = $argv[1];
+ $outfile = dirname($pofile)."/strings.php";
+
+ if (!file_exists($pofile)){
+ print "Unable to find '$pofile'\n";
+ return;
+ }
+
+ print "Out to '$outfile'\n";
+
+ $out="<?php\n\n";
+
+ $infile = file($pofile);
+ $k="";
+ $v="";
+ $arr = False;
+ $ink = False;
+ $inv = False;
+ $escape_s_exp = '|[^\\\\]\$[a-z]|';
+ function escape_s($match){
+ return str_replace('$','\$',$match[0]);
+ }
+ foreach ($infile as $l) {
+ $len = strlen($l);
+ if ($l[0]=="#") $l="";
+ if (substr($l,0,15)=='"Plural-Forms: '){
+ $match=Array();
+ preg_match("|nplurals=([0-9]*); *plural=(.*)[;\\\\]|", $l, $match);
+ $cond = str_replace('n','$n',$match[2]);
+ $out .= 'function string_plural_select($n){'."\n";
+ $out .= ' return '.$cond.';'."\n";
+ $out .= '}'."\n";
+ }
+
+
+
+
+ if ($k!="" && substr($l,0,7)=="msgstr "){
+ if ($ink) { $ink = False; $out .= '$a->strings["'.$k.'"] = '; }
+ if ($inv) { $inv = False; $out .= '"'.$v.'"'; }
+
+ $v = substr($l,8,$len-10);
+ $v = preg_replace_callback($escape_s_exp,'escape_s',$v);
+ $inv = True;
+ //$out .= $v;
+ }
+ if ($k!="" && substr($l,0,7)=="msgstr["){
+ if ($ink) { $ink = False; $out .= '$a->strings["'.$k.'"] = '; }
+ if ($inv) { $inv = False; $out .= '"'.$v.'"'; }
+
+ if (!$arr) {
+ $arr=True;
+ $out .= "array(\n";
+ }
+ $match=Array();
+ preg_match("|\[([0-9]*)\] (.*)|", $l, $match);
+ $out .= "\t".
+ preg_replace_callback($escape_s_exp,'escape_s',$match[1])
+ ." => "
+ .preg_replace_callback($escape_s_exp,'escape_s',$match[2]) .",\n";
+ }
+
+ if (substr($l,0,6)=="msgid_") { $ink = False; $out .= '$a->strings["'.$k.'"] = '; };
+
+
+ if ($ink) {
+ $k .= trim($l,"\"\r\n");
+ $k = preg_replace_callback($escape_s_exp,'escape_s',$k);
+ //$out .= '$a->strings['.$k.'] = ';
+ }
+
+ if (substr($l,0,6)=="msgid "){
+ if ($inv) { $inv = False; $out .= '"'.$v.'"'; }
+ if ($k!="") $out .= $arr?");\n":";\n";
+ $arr=False;
+ $k = str_replace("msgid ","",$l);
+ if ($k != '""' ) {
+ $k = trim($k,"\"\r\n");
+ } else {
+ $k = "";
+ }
+
+ $k = preg_replace_callback($escape_s_exp,'escape_s',$k);
+ $ink = True;
+ }
+
+ if ($inv && substr($l,0,6)!="msgstr") {
+ $v .= trim($l,"\"\r\n");
+ $v = preg_replace_callback($escape_s_exp,'escape_s',$v);
+ //$out .= '$a->strings['.$k.'] = ';
+ }
+
+
+ }
+
+ if ($inv) { $inv = False; $out .= '"'.$v.'"'; }
+ if ($k!="") $out .= $arr?");\n":";\n";
+
+ file_put_contents($outfile, $out);
+
+}
+
+if (array_search(__file__,get_included_files())===0){
+ po2php_run($argv,$argc);
+}
diff --git a/util/run_xgettext.sh b/util/run_xgettext.sh
new file mode 100755
index 000000000..da0d9953c
--- /dev/null
+++ b/util/run_xgettext.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+FULLPATH=$(dirname $(readlink -f "$0"))
+cd "$FULLPATH/../view/en/"
+
+F9KVERSION=$(sed -n "s/.*'FRIENDIKA_VERSION'.*'\([0-9.]*\)'.*/\1/p" ../../boot.php);
+
+echo "Friendika version $F9KVERSION"
+
+OPTS=
+OUTFILE="$FULLPATH/messages.po"
+if [ "" != "$1" ]
+then
+ OUTFILE="$(readlink -f ${FULLPATH}/$1)"
+ if [ -e "$OUTFILE" ]
+ then
+ echo "join extracted strings"
+ OPTS="-j"
+ fi
+fi
+
+KEYWORDS="-k -kt -ktt:1,2"
+
+echo "extract strings to $OUTFILE.."
+find ../../ -name "*.php" | xargs xgettext $KEYWORDS $OPTS -o "$OUTFILE" --from-code=UTF-8
+
+echo "setup base info.."
+sed -i "s/SOME DESCRIPTIVE TITLE./FRIENDIKA Distributed Social Network/g" "$OUTFILE"
+sed -i "s/YEAR THE PACKAGE'S COPYRIGHT HOLDER/2010, 2011 Mike Macgirvin/g" "$OUTFILE"
+sed -i "s/FIRST AUTHOR <EMAIL@ADDRESS>, YEAR./Mike Macgirvin, 2010/g" "$OUTFILE"
+sed -i "s/PACKAGE VERSION/$F9KVERSION/g" "$OUTFILE"
+sed -i "s/PACKAGE/Friendika/g" "$OUTFILE"
+sed -i "s/CHARSET/UTF-8/g" "$OUTFILE"
+sed -i "s/^\"Plural-Forms/#\"Plural-Forms/g" "$OUTFILE"
+
+
+echo "done."
diff --git a/util/string_translator.php b/util/string_translator.php
index 4112d9506..a718130d8 100644
--- a/util/string_translator.php
+++ b/util/string_translator.php
@@ -99,7 +99,7 @@ if (isset($_GET['lang'])){
$n2 = count($strings[$lang]);
echo "<pre>";
- echo "Tranlsate en to $lang<br>";
+ echo "Translate en to $lang<br>";
//echo "Translated $n2 over $n1 strings<br>";
echo "</pre><hr/>";
diff --git a/util/strings.php b/util/strings.php
index b010cb9fc..0000e30f6 100644
--- a/util/strings.php
+++ b/util/strings.php
@@ -1,8 +1,15 @@
<?php
+
+function string_plural_select($n){
+ return ($n != 1);
+}
+
$a->strings['Not Found'] = 'Not Found';
$a->strings['Page not found.' ] = 'Page not found.' ;
$a->strings['Permission denied'] = 'Permission denied';
$a->strings['Permission denied.'] = 'Permission denied.';
+$a->strings['Delete this item?'] = 'Delete this item?';
+$a->strings['Comment'] = 'Comment';
$a->strings['Create a New Account'] = 'Create a New Account';
$a->strings['Register'] = 'Register';
$a->strings['Nickname or Email address: '] = 'Nickname or Email address: ';
@@ -17,18 +24,7 @@ $a->strings['prev'] = 'prev';
$a->strings['first'] = 'first';
$a->strings['last'] = 'last';
$a->strings['next'] = 'next';
-$a->strings[' likes this.'] = ' likes this.';
-$a->strings[' doesn\'t like this.'] = ' doesn\'t like this.';
-$a->strings['people'] = 'people';
-$a->strings['like this.'] = 'like this.';
-$a->strings['don\'t like this.'] = 'don\'t like this.';
-$a->strings['and'] = 'and';
-$a->strings[', and '] = ', and ';
-$a->strings[' other people'] = ' other people';
-$a->strings[' like this.'] = ' like this.';
-$a->strings[' don\'t like this.'] = ' don\'t like this.';
$a->strings['No contacts'] = 'No contacts';
-$a->strings['Contacts'] = 'Contacts';
$a->strings['View Contacts'] = 'View Contacts';
$a->strings['Search'] = 'Search';
$a->strings['No profile'] = 'No profile';
@@ -57,36 +53,19 @@ $a->strings['September'] = 'September';
$a->strings['October'] = 'October';
$a->strings['November'] = 'November';
$a->strings['December'] = 'December';
+$a->strings['g A l F d'] = 'g A l F d';
+$a->strings['Birthday Reminders'] = 'Birthday Reminders';
$a->strings['Birthdays this week:'] = 'Birthdays this week:';
$a->strings["\x28Adjusted for local time\x29"] = "\x28Adjusted for local time\x29";
$a->strings['[today]'] = '[today]';
$a->strings['link to source'] = 'link to source';
-$a->strings['No recipient selected.'] = 'No recipient selected.';
-$a->strings['[no subject]'] = '[no subject]';
-$a->strings['Unable to locate contact information.'] = 'Unable to locate contact information.';
-$a->strings['Wall Photos'] = 'Wall Photos';
-$a->strings['Message sent.'] = 'Message sent.';
-$a->strings['Message could not be sent.'] = 'Message could not be sent.';
-$a->strings['Messages'] = 'Messages';
-$a->strings['Inbox'] = 'Inbox';
-$a->strings['Outbox'] = 'Outbox';
-$a->strings['New Message'] = 'New Message';
-$a->strings['Message deleted.'] = 'Message deleted.';
-$a->strings['Conversation removed.'] = 'Conversation removed.';
-$a->strings['Send Private Message'] = 'Send Private Message';
-$a->strings['To:'] = 'To:';
-$a->strings['Subject:'] = 'Subject:';
-$a->strings['Your message:'] = 'Your message:';
-$a->strings['Upload photo'] = 'Upload photo';
-$a->strings['Insert web link'] = 'Insert web link';
-$a->strings['Please wait'] = 'Please wait';
-$a->strings['No messages.'] = 'No messages.';
-$a->strings['Delete conversation'] = 'Delete conversation';
-$a->strings['Message not available.'] = 'Message not available.';
-$a->strings['Delete message'] = 'Delete message';
-$a->strings['Send Reply'] = 'Send Reply';
+$a->strings['%d Contact'] = array(
+ 0 => '%d Contact',
+ 1 => '%d Contacts',
+);
$a->strings['Applications'] = 'Applications';
$a->strings["Invite Friends"] = "Invite Friends";
+$a->strings['Find People With Shared Interests'] = 'Find People With Shared Interests';
$a->strings['Connect/Follow'] = 'Connect/Follow';
$a->strings['Example: bob@example.com, http://example.com/barbara'] = 'Example: bob@example.com, http://example.com/barbara';
$a->strings['Follow'] = 'Follow';
@@ -97,21 +76,36 @@ $a->strings['Failed to update contact record.'] = 'Failed to update contact reco
$a->strings['Contact has been '] = 'Contact has been ';
$a->strings['blocked'] = 'blocked';
$a->strings['unblocked'] = 'unblocked';
-$a->strings['ignored'] = 'ignored';
-$a->strings['unignored'] = 'unignored';
+$a->strings['Contact has been blocked'] = 'Contact has been blocked';
+$a->strings['Contact has been unblocked'] = 'Contact has been unblocked';
+$a->strings['Contact has been ignored'] = 'Contact has been ignored';
+$a->strings['Contact has been unignored'] = 'Contact has been unignored';
$a->strings['stopped following'] = 'stopped following';
$a->strings['Contact has been removed.'] = 'Contact has been removed.';
$a->strings['Contact not found.'] = 'Contact not found.';
$a->strings['Mutual Friendship'] = 'Mutual Friendship';
$a->strings['is a fan of yours'] = 'is a fan of yours';
$a->strings['you are a fan of'] = 'you are a fan of';
+$a->strings['Privacy Unavailable'] = 'Privacy Unavailable';
+$a->strings['Private communications are not available for this contact.'] = 'Private communications are not available for this contact.';
$a->strings['Never'] = 'Never';
$a->strings["\x28Update was successful\x29"] = "\x28Update was successful\x29";
$a->strings["\x28Update was not successful\x29"] = "\x28Update was not successful\x29";
$a->strings['Contact Editor'] = 'Contact Editor';
+$a->strings['Submit'] = 'Submit';
+$a->strings['Profile Visibility'] = 'Profile Visibility';
+$a->strings['Please choose the profile you would like to display to %s when viewing your profile securely.'] = 'Please choose the profile you would like to display to %s when viewing your profile securely.';
+$a->strings['Contact Information / Notes'] = 'Contact Information / Notes';
+$a->strings['Online Reputation'] = 'Online Reputation';
+$a->strings['Occasionally your friends may wish to inquire about this person\'s online legitimacy.'] = 'Occasionally your friends may wish to inquire about this person\'s online legitimacy.';
+$a->strings['You may help them choose whether or not to interact with this person by providing a <em>reputation</em> to guide them.'] = 'You may help them choose whether or not to interact with this person by providing a <em>reputation</em> to guide them.';
+$a->strings['Please take a moment to elaborate on this selection if you feel it could be helpful to others.'] = 'Please take a moment to elaborate on this selection if you feel it could be helpful to others.';
$a->strings['Visit $name\'s profile'] = 'Visit $name\'s profile';
$a->strings['Block/Unblock contact'] = 'Block/Unblock contact';
$a->strings['Ignore contact'] = 'Ignore contact';
+$a->strings['Repair contact URL settings'] = 'Repair contact URL settings';
+$a->strings["Repair contact URL settings \x28WARNING: Advanced\x29"] = "Repair contact URL settings \x28WARNING: Advanced\x29";
+$a->strings['View conversations'] = 'View conversations';
$a->strings['Delete contact'] = 'Delete contact';
$a->strings['Last updated: '] = 'Last updated: ';
$a->strings['Update public posts: '] = 'Update public posts: ';
@@ -122,13 +116,25 @@ $a->strings['Unignore this contact'] = 'Unignore this contact';
$a->strings['Ignore this contact'] = 'Ignore this contact';
$a->strings['Currently blocked'] = 'Currently blocked';
$a->strings['Currently ignored'] = 'Currently ignored';
+$a->strings['Contacts'] = 'Contacts';
$a->strings['Show Blocked Connections'] = 'Show Blocked Connections';
$a->strings['Hide Blocked Connections'] = 'Hide Blocked Connections';
$a->strings['Finding: '] = 'Finding: ';
$a->strings['Find'] = 'Find';
-$a->strings['Visit '] = 'Visit ';
-$a->strings['\'s profile'] = '\'s profile';
+$a->strings['Visit $username\'s profile'] = 'Visit $username\'s profile';
$a->strings['Edit contact'] = 'Edit contact';
+$a->strings['Contact settings applied.'] = 'Contact settings applied.';
+$a->strings['Contact update failed.'] = 'Contact update failed.';
+$a->strings['Repair Contact Settings'] = 'Repair Contact Settings';
+$a->strings['<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact will stop working.'] = '<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact will stop working.';
+$a->strings['Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.'] = 'Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.';
+$a->strings['Name'] = 'Name';
+$a->strings['Account Nickname'] = 'Account Nickname';
+$a->strings['Account URL'] = 'Account URL';
+$a->strings['Friend Request URL'] = 'Friend Request URL';
+$a->strings['Friend Confirm URL'] = 'Friend Confirm URL';
+$a->strings['Notification Endpoint URL'] = 'Notification Endpoint URL';
+$a->strings['Poll/Feed URL'] = 'Poll/Feed URL';
$a->strings['Profile not found.'] = 'Profile not found.';
$a->strings['Response from remote site was not understood.'] = 'Response from remote site was not understood.';
$a->strings['Unexpected response from remote site: '] = 'Unexpected response from remote site: ';
@@ -137,95 +143,132 @@ $a->strings['Remote site reported: '] = 'Remote site reported: ';
$a->strings["Temporary failure. Please wait and try again."] = "Temporary failure. Please wait and try again.";
$a->strings["Introduction failed or was revoked."] = "Introduction failed or was revoked.";
$a->strings['Unable to set contact photo.'] = 'Unable to set contact photo.';
-$a->strings['is now friends with'] = 'is now friends with';
-$a->strings['No user record found for '] = 'No user record found for ';
+$a->strings['%1$s is now friends with %2$s'] = '%1$s is now friends with %2$s';
$a->strings['Our site encryption key is apparently messed up.'] = 'Our site encryption key is apparently messed up.';
$a->strings['Empty site URL was provided or URL could not be decrypted by us.'] = 'Empty site URL was provided or URL could not be decrypted by us.';
$a->strings['Contact record was not found for you on our site.'] = 'Contact record was not found for you on our site.';
$a->strings['The ID provided by your system is a duplicate on our system. It should work if you try again.'] = 'The ID provided by your system is a duplicate on our system. It should work if you try again.';
$a->strings['Unable to set your contact credentials on our system.'] = 'Unable to set your contact credentials on our system.';
$a->strings['Unable to update your contact profile details on our system'] = 'Unable to update your contact profile details on our system';
-$a->strings["Connection accepted at "] = "Connection accepted at ";
+$a->strings["Connection accepted at %s"] = "Connection accepted at %s";
$a->strings['Administrator'] = 'Administrator';
$a->strings['noreply'] = 'noreply';
-$a->strings[' commented on an item at '] = ' commented on an item at ';
-$a->strings[" commented on an item at "] = " commented on an item at ";
-$a->strings[' welcomes '] = ' welcomes ';
+$a->strings["%s commented on an item at %s"] = "%s commented on an item at %s";
$a->strings["This introduction has already been accepted."] = "This introduction has already been accepted.";
$a->strings['Profile location is not valid or does not contain profile information.'] = 'Profile location is not valid or does not contain profile information.';
$a->strings['Warning: profile location has no identifiable owner name.'] = 'Warning: profile location has no identifiable owner name.';
$a->strings['Warning: profile location has no profile photo.'] = 'Warning: profile location has no profile photo.';
-$a->strings[' required parameter'] = ' required parameter';
-$a->strings[" was "] = " was ";
-$a->strings["s were "] = "s were ";
-$a->strings["not found at the given location."] = "not found at the given location.";
$a->strings["Introduction complete."] = "Introduction complete.";
$a->strings['Unrecoverable protocol error.'] = 'Unrecoverable protocol error.';
$a->strings['Profile unavailable.'] = 'Profile unavailable.';
-$a->strings[' has received too many connection requests today.'] = ' has received too many connection requests today.';
+$a->strings['%s has received too many connection requests today.'] = '%s has received too many connection requests today.';
$a->strings['Spam protection measures have been invoked.'] = 'Spam protection measures have been invoked.';
$a->strings['Friends are advised to please try again in 24 hours.'] = 'Friends are advised to please try again in 24 hours.';
$a->strings["Invalid locator"] = "Invalid locator";
$a->strings["Unable to resolve your name at the provided location."] = "Unable to resolve your name at the provided location.";
$a->strings['You have already introduced yourself here.'] = 'You have already introduced yourself here.';
-$a->strings['Apparently you are already friends with .'] = 'Apparently you are already friends with .';
+$a->strings['Apparently you are already friends with %s.'] = 'Apparently you are already friends with %s.';
$a->strings['Invalid profile URL.'] = 'Invalid profile URL.';
$a->strings['Disallowed profile URL.'] = 'Disallowed profile URL.';
$a->strings['Your introduction has been sent.'] = 'Your introduction has been sent.';
$a->strings["Please login to confirm introduction."] = "Please login to confirm introduction.";
$a->strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Incorrect identity currently logged in. Please login to <strong>this</strong> profile.";
+$a->strings['Welcome home %s.'] = 'Welcome home %s.';
+$a->strings['Please confirm your introduction/connection request to %s.'] = 'Please confirm your introduction/connection request to %s.';
+$a->strings['Confirm'] = 'Confirm';
$a->strings['[Name Withheld]'] = '[Name Withheld]';
+$a->strings["Introduction received at "] = "Introduction received at ";
+$a->strings['Public access denied.'] = 'Public access denied.';
$a->strings['Friend/Connection Request'] = 'Friend/Connection Request';
+$a->strings['Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca'] = 'Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca';
$a->strings['Please answer the following:'] = 'Please answer the following:';
$a->strings['Does $name know you?'] = 'Does $name know you?';
$a->strings['Yes'] = 'Yes';
$a->strings['No'] = 'No';
$a->strings['Add a personal note:'] = 'Add a personal note:';
-$a->strings['Please enter your profile address from one of the following supported social networks:'] = 'Please enter your profile address from one of the following supported social networks:';
+$a->strings["Please enter your 'Identity Address' from one of the following supported social networks:"] = "Please enter your 'Identity Address' from one of the following supported social networks:";
$a->strings['Friendika'] = 'Friendika';
$a->strings['StatusNet/Federated Social Web'] = 'StatusNet/Federated Social Web';
$a->strings["Private \x28secure\x29 network"] = "Private \x28secure\x29 network";
$a->strings["Public \x28insecure\x29 network"] = "Public \x28insecure\x29 network";
-$a->strings['Your profile address:'] = 'Your profile address:';
+$a->strings['Your Identity Address:'] = 'Your Identity Address:';
$a->strings['Submit Request'] = 'Submit Request';
$a->strings['Cancel'] = 'Cancel';
+$a->strings["%d required parameter was not found at the given location"] = array(
+ 0 => "%d required parameter was not found at the given location",
+ 1 => "%d required parameters were not found at the given location",
+);
$a->strings['Global Directory'] = 'Global Directory';
+$a->strings['Site Directory'] = 'Site Directory';
+$a->strings['Age: '] = 'Age: ';
+$a->strings['Gender: '] = 'Gender: ';
+$a->strings["No entries \x28some entries may be hidden\x29."] = "No entries \x28some entries may be hidden\x29.";
$a->strings['Item not found.'] = 'Item not found.';
-$a->strings['Private Message'] = 'Private Message';
-$a->strings["I like this \x28toggle\x29"] = "I like this \x28toggle\x29";
-$a->strings["I don't like this \x28toggle\x29"] = "I don't like this \x28toggle\x29";
-$a->strings['This is you'] = 'This is you';
-$a->strings['Delete'] = 'Delete';
-$a->strings['View $name\'s profile'] = 'View $name\'s profile';
-$a->strings['View $owner_name\'s profile'] = 'View $owner_name\'s profile';
-$a->strings['to'] = 'to';
-$a->strings['Wall-to-Wall'] = 'Wall-to-Wall';
-$a->strings['via Wall-To-Wall:'] = 'via Wall-To-Wall:';
$a->strings['Item has been removed.'] = 'Item has been removed.';
$a->strings['Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.'] = 'Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.';
+$a->strings['Item not found'] = 'Item not found';
+$a->strings['Edit post'] = 'Edit post';
+$a->strings["Post to Email"] = "Post to Email";
+$a->strings['Edit'] = 'Edit';
+$a->strings['Upload photo'] = 'Upload photo';
+$a->strings['Insert web link'] = 'Insert web link';
+$a->strings['Insert YouTube video'] = 'Insert YouTube video';
+$a->strings['Insert Vorbis [.ogg] video'] = 'Insert Vorbis [.ogg] video';
+$a->strings['Insert Vorbis [.ogg] audio'] = 'Insert Vorbis [.ogg] audio';
+$a->strings['Set your location'] = 'Set your location';
+$a->strings['Clear browser location'] = 'Clear browser location';
+$a->strings['Please wait'] = 'Please wait';
+$a->strings['Permission settings'] = 'Permission settings';
$a->strings['CC: email addresses'] = 'CC: email addresses';
$a->strings['Example: bob@example.com, mary@example.com'] = 'Example: bob@example.com, mary@example.com';
$a->strings['The profile address specified does not provide adequate information.'] = 'The profile address specified does not provide adequate information.';
$a->strings['Limited profile. This person will be unable to receive direct/personal notifications from you.'] = 'Limited profile. This person will be unable to receive direct/personal notifications from you.';
$a->strings['Unable to retrieve contact information.'] = 'Unable to retrieve contact information.';
$a->strings['following'] = 'following';
+$a->strings['This is Friendika version'] = 'This is Friendika version';
+$a->strings['running at web location'] = 'running at web location';
+$a->strings['Shared content within the Friendika network is provided under the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 license</a>'] = 'Shared content within the Friendika network is provided under the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 license</a>';
+$a->strings['Please visit <a href="http://project.friendika.com">Project.Friendika.com</a> to learn more about the Friendika project.'] = 'Please visit <a href="http://project.friendika.com">Project.Friendika.com</a> to learn more about the Friendika project.';
+$a->strings['Bug reports and issues: please visit'] = 'Bug reports and issues: please visit';
+$a->strings['Suggestions, praise, donations, etc. - please email "Info" at Friendika - dot com'] = 'Suggestions, praise, donations, etc. - please email "Info" at Friendika - dot com';
+$a->strings['Installed plugins/addons/apps'] = 'Installed plugins/addons/apps';
+$a->strings['No installed plugins/addons/apps'] = 'No installed plugins/addons/apps';
$a->strings['Group created.'] = 'Group created.';
$a->strings['Could not create group.'] = 'Could not create group.';
$a->strings['Group not found.'] = 'Group not found.';
$a->strings['Group name changed.'] = 'Group name changed.';
-$a->strings['Membership list updated.'] = 'Membership list updated.';
+$a->strings['Create a group of contacts/friends.'] = 'Create a group of contacts/friends.';
+$a->strings['Group Name: '] = 'Group Name: ';
$a->strings['Group removed.'] = 'Group removed.';
$a->strings['Unable to remove group.'] = 'Unable to remove group.';
-$a->strings["Welcome to "] = "Welcome to ";
+$a->strings['Delete'] = 'Delete';
+$a->strings['Click on a contact to add or remove.'] = 'Click on a contact to add or remove.';
+$a->strings['Group Editor'] = 'Group Editor';
+$a->strings['Members'] = 'Members';
+$a->strings['All Contacts'] = 'All Contacts';
+$a->strings['Help:'] = 'Help:';
+$a->strings['Help'] = 'Help';
+$a->strings["Welcome to %s"] = "Welcome to %s";
$a->strings['Could not create/connect to database.'] = 'Could not create/connect to database.';
$a->strings['Connected to database.'] = 'Connected to database.';
-$a->strings['Database import succeeded.'] = 'Database import succeeded.';
+$a->strings['Proceed with Installation'] = 'Proceed with Installation';
+$a->strings['Your Friendika site database has been installed.'] = 'Your Friendika site database has been installed.';
$a->strings['IMPORTANT: You will need to [manually] setup a scheduled task for the poller.'] = 'IMPORTANT: You will need to [manually] setup a scheduled task for the poller.';
$a->strings['Please see the file "INSTALL.txt".'] = 'Please see the file "INSTALL.txt".';
+$a->strings['Proceed to registration'] = 'Proceed to registration';
$a->strings['Database import failed.'] = 'Database import failed.';
$a->strings['You may need to import the file "database.sql" manually using phpmyadmin or mysql.'] = 'You may need to import the file "database.sql" manually using phpmyadmin or mysql.';
$a->strings['Welcome to Friendika.'] = 'Welcome to Friendika.';
-$a->strings['Submit'] = 'Submit';
+$a->strings['Friendika Social Network'] = 'Friendika Social Network';
+$a->strings['Installation'] = 'Installation';
+$a->strings['In order to install Friendika we need to know how to contact your database.'] = 'In order to install Friendika we need to know how to contact your database.';
+$a->strings['Please contact your hosting provider or site administrator if you have questions about these settings.'] = 'Please contact your hosting provider or site administrator if you have questions about these settings.';
+$a->strings['The database you specify below must already exist. If it does not, please create it before continuing.'] = 'The database you specify below must already exist. If it does not, please create it before continuing.';
+$a->strings['Database Server Name'] = 'Database Server Name';
+$a->strings['Database Login Name'] = 'Database Login Name';
+$a->strings['Database Login Password'] = 'Database Login Password';
+$a->strings['Database Name'] = 'Database Name';
+$a->strings['Please select a default timezone for your website'] = 'Please select a default timezone for your website';
$a->strings['Could not find a command line version of PHP in the web server PATH.'] = 'Could not find a command line version of PHP in the web server PATH.';
$a->strings['This is required. Please adjust the configuration file .htconfig.php accordingly.'] = 'This is required. Please adjust the configuration file .htconfig.php accordingly.';
$a->strings['The command line version of PHP on your system does not have "register_argc_argv" enabled.'] = 'The command line version of PHP on your system does not have "register_argc_argv" enabled.';
@@ -243,52 +286,90 @@ $a->strings['Please check with your site documentation or support people to see
$a->strings['If not, you may be required to perform a manual installation. Please see the file "INSTALL.txt" for instructions.'] = 'If not, you may be required to perform a manual installation. Please see the file "INSTALL.txt" for instructions.';
$a->strings['The database configuration file ".htconfig.php" could not be written. Please use the enclosed text to create a configuration file in your web server root.'] = 'The database configuration file ".htconfig.php" could not be written. Please use the enclosed text to create a configuration file in your web server root.';
$a->strings['Errors encountered creating database tables.'] = 'Errors encountered creating database tables.';
-$a->strings[' : '] = ' : ';
-$a->strings['Not a valid email address.'] = 'Not a valid email address.';
-$a->strings['Please join my network on '] = 'Please join my network on ';
-$a->strings['Message delivery failed.'] = 'Message delivery failed.';
-$a->strings[' messages sent.'] = ' messages sent.';
+$a->strings['%s : Not a valid email address.'] = '%s : Not a valid email address.';
+$a->strings['%s : Message delivery failed.'] = '%s : Message delivery failed.';
$a->strings['Send invitations'] = 'Send invitations';
$a->strings['Enter email addresses, one per line:'] = 'Enter email addresses, one per line:';
-$a->strings['Please join my social network on '] = 'Please join my social network on ';
+$a->strings['Your message:'] = 'Your message:';
$a->strings['To accept this invitation, please visit:'] = 'To accept this invitation, please visit:';
$a->strings['Once you have registered, please connect with me via my profile page at:'] = 'Once you have registered, please connect with me via my profile page at:';
+$a->strings["%d message sent."] = array(
+ 0 => "%d message sent.",
+ 1 => "%d messages sent.",
+);
$a->strings['Unable to locate original post.'] = 'Unable to locate original post.';
$a->strings['Empty post discarded.'] = 'Empty post discarded.';
-$a->strings[" commented on your item at "] = " commented on your item at ";
-$a->strings[" posted on your profile wall at "] = " posted on your profile wall at ";
+$a->strings['Wall Photos'] = 'Wall Photos';
+$a->strings["%s commented on your item at %s"] = "%s commented on your item at %s";
+$a->strings["%s posted on your profile wall at %s"] = "%s posted on your profile wall at %s";
$a->strings['System error. Post not saved.'] = 'System error. Post not saved.';
-$a->strings['This message was sent to you by '] = 'This message was sent to you by ';
-$a->strings[', a member of the Friendika social network.'] = ', a member of the Friendika social network.';
-$a->strings['You may visit them online at'] = 'You may visit them online at';
+$a->strings['This message was sent to you by %s, a member of the Friendika social network.'] = 'This message was sent to you by %s, a member of the Friendika social network.';
+$a->strings['You may visit them online at %s'] = 'You may visit them online at %s';
$a->strings['Please contact the sender by replying to this post if you do not wish to receive these messages.'] = 'Please contact the sender by replying to this post if you do not wish to receive these messages.';
-$a->strings['posted an update.'] = 'posted an update.';
+$a->strings['%s posted an update.'] = '%s posted an update.';
$a->strings['photo'] = 'photo';
$a->strings['status'] = 'status';
-$a->strings['likes'] = 'likes';
-$a->strings['doesn\'t like'] = 'doesn\'t like';
-$a->strings['\'s'] = '\'s';
+$a->strings['%1$s likes %2$s\'s %3$s'] = '%1$s likes %2$s\'s %3$s';
+$a->strings['%1$s doesn\'t like %2$s\'s %3$s'] = '%1$s doesn\'t like %2$s\'s %3$s';
$a->strings['Remote privacy information not available.'] = 'Remote privacy information not available.';
$a->strings['Visible to:'] = 'Visible to:';
-$a->strings['Password reset requested at '] = 'Password reset requested at ';
-$a->strings["Welcome back "] = "Welcome back ";
+$a->strings['Password reset request issued. Check your email.'] = 'Password reset request issued. Check your email.';
+$a->strings['Password reset requested at %s'] = 'Password reset requested at %s';
+$a->strings["Request could not be verified. \x28You may have previously submitted it.\x29 Password reset failed."] = "Request could not be verified. \x28You may have previously submitted it.\x29 Password reset failed.";
+$a->strings['Your password has been reset as requested.'] = 'Your password has been reset as requested.';
+$a->strings['Your new password is'] = 'Your new password is';
+$a->strings['Save or copy your new password - and then'] = 'Save or copy your new password - and then';
+$a->strings['click here to login'] = 'click here to login';
+$a->strings['Your password may be changed from the <em>Settings</em> page after successful login.'] = 'Your password may be changed from the <em>Settings</em> page after successful login.';
+$a->strings['Forgot your Password?'] = 'Forgot your Password?';
+$a->strings['Enter your email address and submit to have your password reset. Then check your email for further instructions.'] = 'Enter your email address and submit to have your password reset. Then check your email for further instructions.';
+$a->strings['Nickname or Email: '] = 'Nickname or Email: ';
+$a->strings['Reset'] = 'Reset';
+$a->strings["Welcome back %s"] = "Welcome back %s";
$a->strings['Manage Identities and/or Pages'] = 'Manage Identities and/or Pages';
$a->strings["\x28Toggle between different identities or community/group pages which share your account details.\x29"] = "\x28Toggle between different identities or community/group pages which share your account details.\x29";
$a->strings['Select an identity to manage: '] = 'Select an identity to manage: ';
+$a->strings['Profile Match'] = 'Profile Match';
+$a->strings['No matches'] = 'No matches';
+$a->strings['No recipient selected.'] = 'No recipient selected.';
+$a->strings['[no subject]'] = '[no subject]';
+$a->strings['Unable to locate contact information.'] = 'Unable to locate contact information.';
+$a->strings['Message sent.'] = 'Message sent.';
+$a->strings['Message could not be sent.'] = 'Message could not be sent.';
+$a->strings['Messages'] = 'Messages';
+$a->strings['Inbox'] = 'Inbox';
+$a->strings['Outbox'] = 'Outbox';
+$a->strings['New Message'] = 'New Message';
+$a->strings['Message deleted.'] = 'Message deleted.';
+$a->strings['Conversation removed.'] = 'Conversation removed.';
+$a->strings['Please enter a link URL:'] = 'Please enter a link URL:';
+$a->strings['Send Private Message'] = 'Send Private Message';
+$a->strings['To:'] = 'To:';
+$a->strings['Subject:'] = 'Subject:';
+$a->strings['No messages.'] = 'No messages.';
+$a->strings['Delete conversation'] = 'Delete conversation';
+$a->strings['D, d M Y - g:i A'] = 'D, d M Y - g:i A';
+$a->strings['Message not available.'] = 'Message not available.';
+$a->strings['Delete message'] = 'Delete message';
+$a->strings['Send Reply'] = 'Send Reply';
$a->strings['Normal View'] = 'Normal View';
$a->strings['New Item View'] = 'New Item View';
-$a->strings['Share'] = 'Share';
-$a->strings['Insert YouTube video'] = 'Insert YouTube video';
-$a->strings['Set your location'] = 'Set your location';
-$a->strings['Clear browser location'] = 'Clear browser location';
-$a->strings['Permission settings'] = 'Permission settings';
+$a->strings['Warning: This group contains %s from an insecure network.'] = 'Warning: This group contains %s from an insecure network.';
+$a->strings['Private messages to this group are at risk of public disclosure.'] = 'Private messages to this group are at risk of public disclosure.';
$a->strings['No such group'] = 'No such group';
$a->strings['Group is empty'] = 'Group is empty';
$a->strings['Group: '] = 'Group: ';
-$a->strings['View in context'] = 'View in context';
+$a->strings['Contact: '] = 'Contact: ';
+$a->strings['Private messages to this person are at risk of public disclosure.'] = 'Private messages to this person are at risk of public disclosure.';
+$a->strings['Invalid contact.'] = 'Invalid contact.';
+$a->strings['%d member'] = array(
+ 0 => '%d member',
+ 1 => '%d members',
+);
$a->strings['Invalid request identifier.'] = 'Invalid request identifier.';
$a->strings['Discard'] = 'Discard';
$a->strings['Ignore'] = 'Ignore';
+$a->strings['Pending Friend/Connect Notifications'] = 'Pending Friend/Connect Notifications';
$a->strings['Show Ignored Requests'] = 'Show Ignored Requests';
$a->strings['Hide Ignored Requests'] = 'Hide Ignored Requests';
$a->strings['Claims to be known to you: '] = 'Claims to be known to you: ';
@@ -302,8 +383,14 @@ $a->strings['Friend/Connect Request'] = 'Friend/Connect Request';
$a->strings['New Follower'] = 'New Follower';
$a->strings['Approve'] = 'Approve';
$a->strings['No notifications.'] = 'No notifications.';
+$a->strings['User registrations waiting for confirm'] = 'User registrations waiting for confirm';
+$a->strings['Deny'] = 'Deny';
$a->strings['No registrations.'] = 'No registrations.';
+$a->strings['Post successful.'] = 'Post successful.';
$a->strings['Login failed.'] = 'Login failed.';
+$a->strings["Welcome "] = "Welcome ";
+$a->strings['Please upload a profile photo.'] = 'Please upload a profile photo.';
+$a->strings["Welcome back "] = "Welcome back ";
$a->strings['Photo Albums'] = 'Photo Albums';
$a->strings['Contact Photos'] = 'Contact Photos';
$a->strings['Contact information unavailable'] = 'Contact information unavailable';
@@ -325,49 +412,109 @@ $a->strings['Edit Album'] = 'Edit Album';
$a->strings['View Photo'] = 'View Photo';
$a->strings['Photo not available'] = 'Photo not available';
$a->strings['Edit photo'] = 'Edit photo';
+$a->strings['Private Message'] = 'Private Message';
+$a->strings['<< Prev'] = '<< Prev';
$a->strings['View Full Size'] = 'View Full Size';
+$a->strings['Next >>'] = 'Next >>';
$a->strings['Tags: '] = 'Tags: ';
$a->strings['[Remove any tag]'] = '[Remove any tag]';
$a->strings['New album name'] = 'New album name';
$a->strings['Caption'] = 'Caption';
$a->strings['Add a Tag'] = 'Add a Tag';
$a->strings['Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'] = 'Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping';
+$a->strings["I like this \x28toggle\x29"] = "I like this \x28toggle\x29";
+$a->strings["I don't like this \x28toggle\x29"] = "I don't like this \x28toggle\x29";
+$a->strings['Share'] = 'Share';
+$a->strings['This is you'] = 'This is you';
$a->strings['Recent Photos'] = 'Recent Photos';
$a->strings['Upload New Photos'] = 'Upload New Photos';
$a->strings['View Album'] = 'View Album';
+$a->strings['Status'] = 'Status';
+$a->strings['Profile'] = 'Profile';
+$a->strings['Photos'] = 'Photos';
$a->strings['Image uploaded but image cropping failed.'] = 'Image uploaded but image cropping failed.';
-$a->strings['Image size reduction [175] failed.'] = 'Image size reduction [175] failed.';
-$a->strings['Image size reduction [80] failed.'] = 'Image size reduction [80] failed.';
-$a->strings['Image size reduction [48] failed.'] = 'Image size reduction [48] failed.';
$a->strings['Unable to process image'] = 'Unable to process image';
+$a->strings['Upload File:'] = 'Upload File:';
+$a->strings['Upload Profile Photo'] = 'Upload Profile Photo';
+$a->strings['Upload'] = 'Upload';
+$a->strings['or'] = 'or';
+$a->strings['skip this step'] = 'skip this step';
+$a->strings['select a photo from your photo albums'] = 'select a photo from your photo albums';
+$a->strings['Crop Image'] = 'Crop Image';
+$a->strings['Please adjust the image cropping for optimum viewing.'] = 'Please adjust the image cropping for optimum viewing.';
+$a->strings['Done Editing'] = 'Done Editing';
$a->strings['Image uploaded successfully.'] = 'Image uploaded successfully.';
-$a->strings['Image size reduction [640] failed.'] = 'Image size reduction [640] failed.';
$a->strings['Profile Name is required.'] = 'Profile Name is required.';
$a->strings['Profile updated.'] = 'Profile updated.';
$a->strings['Profile deleted.'] = 'Profile deleted.';
$a->strings['Profile-'] = 'Profile-';
$a->strings['New profile created.'] = 'New profile created.';
$a->strings['Profile unavailable to clone.'] = 'Profile unavailable to clone.';
+$a->strings['Hide my contact/friend list from viewers of this profile?'] = 'Hide my contact/friend list from viewers of this profile?';
+$a->strings['Edit Profile Details'] = 'Edit Profile Details';
+$a->strings['View this profile'] = 'View this profile';
+$a->strings['Create a new profile using these settings'] = 'Create a new profile using these settings';
+$a->strings['Clone this profile'] = 'Clone this profile';
+$a->strings['Delete this profile'] = 'Delete this profile';
+$a->strings['Profile Name:'] = 'Profile Name:';
+$a->strings['Your Full Name:'] = 'Your Full Name:';
+$a->strings['Title/Description:'] = 'Title/Description:';
+$a->strings['Your Gender:'] = 'Your Gender:';
+$a->strings["Birthday \x28y/m/d\x29:"] = "Birthday \x28y/m/d\x29:";
+$a->strings['Street Address:'] = 'Street Address:';
+$a->strings['Locality/City:'] = 'Locality/City:';
+$a->strings['Postal/Zip Code:'] = 'Postal/Zip Code:';
+$a->strings['Country:'] = 'Country:';
+$a->strings['Region/State:'] = 'Region/State:';
+$a->strings['<span class="heart">&hearts;</span> Marital Status:'] = '<span class="heart">&hearts;</span> Marital Status:';
+$a->strings["Who: \x28if applicable\x29"] = "Who: \x28if applicable\x29";
+$a->strings['Examples: cathy123, Cathy Williams, cathy@example.com'] = 'Examples: cathy123, Cathy Williams, cathy@example.com';
+$a->strings['Sexual Preference:'] = 'Sexual Preference:';
+$a->strings['Homepage URL:'] = 'Homepage URL:';
+$a->strings['Political Views:'] = 'Political Views:';
+$a->strings['Religious Views:'] = 'Religious Views:';
+$a->strings['Public Keywords:'] = 'Public Keywords:';
+$a->strings['Private Keywords:'] = 'Private Keywords:';
+$a->strings['Example: fishing photography software'] = 'Example: fishing photography software';
+$a->strings["\x28Used for suggesting potential friends, can be seen by others\x29"] = "\x28Used for suggesting potential friends, can be seen by others\x29";
+$a->strings["\x28Used for searching profiles, never shown to others\x29"] = "\x28Used for searching profiles, never shown to others\x29";
+$a->strings['Tell us about yourself...'] = 'Tell us about yourself...';
+$a->strings['Hobbies/Interests'] = 'Hobbies/Interests';
+$a->strings['Contact information and Social Networks'] = 'Contact information and Social Networks';
+$a->strings['Musical interests'] = 'Musical interests';
+$a->strings['Books, literature'] = 'Books, literature';
+$a->strings['Television'] = 'Television';
+$a->strings['Film/dance/culture/entertainment'] = 'Film/dance/culture/entertainment';
+$a->strings['Love/romance'] = 'Love/romance';
+$a->strings['Work/employment'] = 'Work/employment';
+$a->strings['School/education'] = 'School/education';
$a->strings['This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet.'] = 'This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet.';
-$a->strings['Age: '] = 'Age: ';
+$a->strings['Profiles'] = 'Profiles';
+$a->strings['Change profile photo'] = 'Change profile photo';
+$a->strings['Create New Profile'] = 'Create New Profile';
$a->strings['Profile Image'] = 'Profile Image';
+$a->strings['Visible to everybody'] = 'Visible to everybody';
+$a->strings['Edit visibility'] = 'Edit visibility';
+$a->strings['Invalid profile identifier.'] = 'Invalid profile identifier.';
+$a->strings['Profile Visibility Editor'] = 'Profile Visibility Editor';
+$a->strings['Visible To'] = 'Visible To';
+$a->strings["All Contacts \x28with secure profile access\x29"] = "All Contacts \x28with secure profile access\x29";
$a->strings['Invalid OpenID url'] = 'Invalid OpenID url';
$a->strings['Please enter the required information.'] = 'Please enter the required information.';
$a->strings['Please use a shorter name.'] = 'Please use a shorter name.';
$a->strings['Name too short.'] = 'Name too short.';
-$a->strings["That doesn\'t appear to be your full \x28First Last\x29 name."] = "That doesn\'t appear to be your full \x28First Last\x29 name.";
+$a->strings["That doesn't appear to be your full \x28First Last\x29 name."] = "That doesn't appear to be your full \x28First Last\x29 name.";
$a->strings['Your email domain is not among those allowed on this site.'] = 'Your email domain is not among those allowed on this site.';
+$a->strings['Not a valid email address.'] = 'Not a valid email address.';
$a->strings['Cannot use that email.'] = 'Cannot use that email.';
$a->strings['Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.'] = 'Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.';
$a->strings['Nickname is already registered. Please choose another.'] = 'Nickname is already registered. Please choose another.';
$a->strings['SERIOUS ERROR: Generation of security keys failed.'] = 'SERIOUS ERROR: Generation of security keys failed.';
$a->strings['An error occurred during registration. Please try again.'] = 'An error occurred during registration. Please try again.';
$a->strings['An error occurred creating your default profile. Please try again.'] = 'An error occurred creating your default profile. Please try again.';
-$a->strings['Registration details for '] = 'Registration details for ';
$a->strings['Registration successful. Please check your email for further instructions.'] = 'Registration successful. Please check your email for further instructions.';
$a->strings['Failed to send email message. Here is the message that failed.'] = 'Failed to send email message. Here is the message that failed.';
$a->strings['Your registration can not be processed.'] = 'Your registration can not be processed.';
-$a->strings['Registration request at '] = 'Registration request at ';
$a->strings['Your registration is pending approval by the site owner.'] = 'Your registration is pending approval by the site owner.';
$a->strings["You may \x28optionally\x29 fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "You may \x28optionally\x29 fill in this form via OpenID by supplying your OpenID and clicking 'Register'.";
$a->strings['If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'] = 'If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.';
@@ -380,11 +527,11 @@ $a->strings['Your Email Address: '] = 'Your Email Address: ';
$a->strings['Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be \'<strong>nickname@$sitename</strong>\'.'] = 'Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be \'<strong>nickname@$sitename</strong>\'.';
$a->strings['Choose a nickname: '] = 'Choose a nickname: ';
$a->strings['Please login.'] = 'Please login.';
-$a->strings['Registration revoked for '] = 'Registration revoked for ';
$a->strings['Account approved.'] = 'Account approved.';
$a->strings['Remove My Account'] = 'Remove My Account';
$a->strings['This will completely remove your account. Once this has been done it is not recoverable.'] = 'This will completely remove your account. Once this has been done it is not recoverable.';
$a->strings['Please enter your password for verification:'] = 'Please enter your password for verification:';
+$a->strings['No results.'] = 'No results.';
$a->strings['Passwords do not match. Password unchanged.'] = 'Passwords do not match. Password unchanged.';
$a->strings['Empty passwords are not allowed. Password unchanged.'] = 'Empty passwords are not allowed. Password unchanged.';
$a->strings['Password changed.'] = 'Password changed.';
@@ -397,10 +544,58 @@ $a->strings['Settings updated.'] = 'Settings updated.';
$a->strings['Plugin Settings'] = 'Plugin Settings';
$a->strings['Account Settings'] = 'Account Settings';
$a->strings['No Plugin settings configured'] = 'No Plugin settings configured';
+$a->strings['Normal Account'] = 'Normal Account';
+$a->strings['This account is a normal personal profile'] = 'This account is a normal personal profile';
+$a->strings['Soapbox Account'] = 'Soapbox Account';
+$a->strings['Automatically approve all connection/friend requests as read-only fans'] = 'Automatically approve all connection/friend requests as read-only fans';
+$a->strings['Community/Celebrity Account'] = 'Community/Celebrity Account';
+$a->strings['Automatically approve all connection/friend requests as read-write fans'] = 'Automatically approve all connection/friend requests as read-write fans';
+$a->strings['Automatic Friend Account'] = 'Automatic Friend Account';
+$a->strings['Automatically approve all connection/friend requests as friends'] = 'Automatically approve all connection/friend requests as friends';
$a->strings['OpenID: '] = 'OpenID: ';
$a->strings["&nbsp;\x28Optional\x29 Allow this OpenID to login to this account."] = "&nbsp;\x28Optional\x29 Allow this OpenID to login to this account.";
+$a->strings['Publish your default profile in site directory?'] = 'Publish your default profile in site directory?';
+$a->strings['Publish your default profile in global social directory?'] = 'Publish your default profile in global social directory?';
$a->strings['Profile is <strong>not published</strong>.'] = 'Profile is <strong>not published</strong>.';
+$a->strings['Your Identity Address is'] = 'Your Identity Address is';
+$a->strings['Export Personal Data'] = 'Export Personal Data';
+$a->strings['Basic Settings'] = 'Basic Settings';
+$a->strings['Full Name:'] = 'Full Name:';
+$a->strings['Email Address:'] = 'Email Address:';
+$a->strings['Your Timezone:'] = 'Your Timezone:';
+$a->strings['Default Post Location:'] = 'Default Post Location:';
+$a->strings['Use Browser Location:'] = 'Use Browser Location:';
+$a->strings['Display Theme:'] = 'Display Theme:';
+$a->strings['Security and Privacy Settings'] = 'Security and Privacy Settings';
+$a->strings['Maximum Friend Requests/Day:'] = 'Maximum Friend Requests/Day:';
+$a->strings["\x28to prevent spam abuse\x29"] = "\x28to prevent spam abuse\x29";
+$a->strings['Allow friends to post to your profile page:'] = 'Allow friends to post to your profile page:';
+$a->strings["Automatically expire \x28delete\x29 posts older than"] = "Automatically expire \x28delete\x29 posts older than";
+$a->strings['days'] = 'days';
+$a->strings['Notification Settings'] = 'Notification Settings';
+$a->strings['Send a notification email when:'] = 'Send a notification email when:';
+$a->strings['You receive an introduction'] = 'You receive an introduction';
+$a->strings['Your introductions are confirmed'] = 'Your introductions are confirmed';
+$a->strings['Someone writes on your profile wall'] = 'Someone writes on your profile wall';
+$a->strings['Someone writes a followup comment'] = 'Someone writes a followup comment';
+$a->strings['You receive a private message'] = 'You receive a private message';
+$a->strings['Password Settings'] = 'Password Settings';
+$a->strings['Leave password fields blank unless changing'] = 'Leave password fields blank unless changing';
+$a->strings['New Password:'] = 'New Password:';
+$a->strings['Confirm:'] = 'Confirm:';
+$a->strings['Advanced Page Settings'] = 'Advanced Page Settings';
$a->strings['Default Post Permissions'] = 'Default Post Permissions';
+$a->strings["\x28click to open/close\x29"] = "\x28click to open/close\x29";
+$a->strings['Email/Mailbox Setup'] = 'Email/Mailbox Setup';
+$a->strings["If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox."] = "If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox.";
+$a->strings['IMAP server name:'] = 'IMAP server name:';
+$a->strings['IMAP port:'] = 'IMAP port:';
+$a->strings["Security \x28TLS or SSL\x29:"] = "Security \x28TLS or SSL\x29:";
+$a->strings['Email login name:'] = 'Email login name:';
+$a->strings['Email password:'] = 'Email password:';
+$a->strings["Reply-to address \x28Optional\x29:"] = "Reply-to address \x28Optional\x29:";
+$a->strings['Send public posts to all email contacts:'] = 'Send public posts to all email contacts:';
+$a->strings['Email access is disabled on this site.'] = 'Email access is disabled on this site.';
$a->strings['Tag removed'] = 'Tag removed';
$a->strings['Remove Item Tag'] = 'Remove Item Tag';
$a->strings['Select a tag to remove: '] = 'Select a tag to remove: ';
@@ -410,6 +605,7 @@ $a->strings['Visible To:'] = 'Visible To:';
$a->strings['Groups'] = 'Groups';
$a->strings['Except For:'] = 'Except For:';
$a->strings['Logged out.'] = 'Logged out.';
+$a->strings['Image/photo'] = 'Image/photo';
$a->strings['Unknown | Not categorised'] = 'Unknown | Not categorised';
$a->strings['Block immediately'] = 'Block immediately';
$a->strings['Shady, spammer, self-marketer'] = 'Shady, spammer, self-marketer';
@@ -422,6 +618,28 @@ $a->strings['Twice daily'] = 'Twice daily';
$a->strings['Daily'] = 'Daily';
$a->strings['Weekly'] = 'Weekly';
$a->strings['Monthly'] = 'Monthly';
+$a->strings['View %s\'s profile'] = 'View %s\'s profile';
+$a->strings['View in context'] = 'View in context';
+$a->strings['See more posts like this'] = 'See more posts like this';
+$a->strings['See all %d comments'] = 'See all %d comments';
+$a->strings['to'] = 'to';
+$a->strings['Wall-to-Wall'] = 'Wall-to-Wall';
+$a->strings['via Wall-To-Wall:'] = 'via Wall-To-Wall:';
+$a->strings['%s likes this.'] = '%s likes this.';
+$a->strings['%s doesn\'t like this.'] = '%s doesn\'t like this.';
+$a->strings['<span %1$s>%2$d people</span> like this.'] = '<span %1$s>%2$d people</span> like this.';
+$a->strings['<span %1$s>%2$d people</span> don\'t like this.'] = '<span %1$s>%2$d people</span> don\'t like this.';
+$a->strings['and'] = 'and';
+$a->strings[', and %d other people'] = ', and %d other people';
+$a->strings['%s like this.'] = '%s like this.';
+$a->strings['%s don\'t like this.'] = '%s don\'t like this.';
+$a->strings['Visible to <strong>everybody</strong>'] = 'Visible to <strong>everybody</strong>';
+$a->strings['Please enter a YouTube link:'] = 'Please enter a YouTube link:';
+$a->strings["Please enter a video\x28.ogg\x29 link/URL:"] = "Please enter a video\x28.ogg\x29 link/URL:";
+$a->strings["Please enter an audio\x28.ogg\x29 link/URL:"] = "Please enter an audio\x28.ogg\x29 link/URL:";
+$a->strings['Where are you right now?'] = 'Where are you right now?';
+$a->strings['Enter a title for this item'] = 'Enter a title for this item';
+$a->strings['Set title'] = 'Set title';
$a->strings['Miscellaneous'] = 'Miscellaneous';
$a->strings['less than a second ago'] = 'less than a second ago';
$a->strings['year'] = 'year';
@@ -431,7 +649,6 @@ $a->strings['months'] = 'months';
$a->strings['week'] = 'week';
$a->strings['weeks'] = 'weeks';
$a->strings['day'] = 'day';
-$a->strings['days'] = 'days';
$a->strings['hour'] = 'hour';
$a->strings['hours'] = 'hours';
$a->strings['minute'] = 'minute';
@@ -439,6 +656,7 @@ $a->strings['minutes'] = 'minutes';
$a->strings['second'] = 'second';
$a->strings['seconds'] = 'seconds';
$a->strings[' ago'] = ' ago';
+$a->strings['Cannot locate DNS info for database server \'%s\''] = 'Cannot locate DNS info for database server \'%s\'';
$a->strings['Create a new group'] = 'Create a new group';
$a->strings['Everybody'] = 'Everybody';
$a->strings['Birthday:'] = 'Birthday:';
@@ -446,11 +664,25 @@ $a->strings['Home'] = 'Home';
$a->strings['Apps'] = 'Apps';
$a->strings['Directory'] = 'Directory';
$a->strings['Network'] = 'Network';
-$a->strings['Notifications'] = 'Notifications';
$a->strings['Manage'] = 'Manage';
$a->strings['Settings'] = 'Settings';
-$a->strings['Profiles'] = 'Profiles';
+$a->strings["\x28no subject\x29"] = "\x28no subject\x29";
$a->strings['Embedding disabled'] = 'Embedding disabled';
+$a->strings['j F, Y'] = 'j F, Y';
+$a->strings['j F'] = 'j F';
+$a->strings['Age:'] = 'Age:';
+$a->strings['<span class="heart">&hearts;</span> Status:'] = '<span class="heart">&hearts;</span> Status:';
+$a->strings['Religion:'] = 'Religion:';
+$a->strings['About:'] = 'About:';
+$a->strings['Hobbies/Interests:'] = 'Hobbies/Interests:';
+$a->strings['Contact information and Social Networks:'] = 'Contact information and Social Networks:';
+$a->strings['Musical interests:'] = 'Musical interests:';
+$a->strings['Books, literature:'] = 'Books, literature:';
+$a->strings['Television:'] = 'Television:';
+$a->strings['Film/dance/culture/entertainment:'] = 'Film/dance/culture/entertainment:';
+$a->strings['Love/Romance:'] = 'Love/Romance:';
+$a->strings['Work/employment:'] = 'Work/employment:';
+$a->strings['School/education:'] = 'School/education:';
$a->strings['Male'] = 'Male';
$a->strings['Female'] = 'Female';
$a->strings['Currently Male'] = 'Currently Male';
@@ -505,14 +737,18 @@ $a->strings['Complicated'] = 'Complicated';
$a->strings['Don\'t care'] = 'Don\'t care';
$a->strings['Ask me'] = 'Ask me';
$a->strings['Facebook disabled'] = 'Facebook disabled';
+$a->strings['Updating contacts'] = 'Updating contacts';
$a->strings['Facebook API key is missing.'] = 'Facebook API key is missing.';
$a->strings['Facebook Connect'] = 'Facebook Connect';
-$a->strings['Install Facebook post connector'] = 'Install Facebook post connector';
-$a->strings['Remove Facebook post connector'] = 'Remove Facebook post connector';
+$a->strings['Install Facebook connector for this account.'] = 'Install Facebook connector for this account.';
+$a->strings['Remove Facebook connector'] = 'Remove Facebook connector';
+$a->strings['Post to Facebook by default'] = 'Post to Facebook by default';
$a->strings['Facebook'] = 'Facebook';
$a->strings['Facebook Connector Settings'] = 'Facebook Connector Settings';
$a->strings['Post to Facebook'] = 'Post to Facebook';
+$a->strings['Post to Facebook cancelled because of multi-network access permission conflict.'] = 'Post to Facebook cancelled because of multi-network access permission conflict.';
$a->strings['Image: '] = 'Image: ';
+$a->strings['View on Friendika'] = 'View on Friendika';
$a->strings['Select files to upload: '] = 'Select files to upload: ';
$a->strings['Use the following controls only if the Java uploader [above] fails to launch.'] = 'Use the following controls only if the Java uploader [above] fails to launch.';
$a->strings['Upload a file'] = 'Upload a file';
diff --git a/util/typo.php b/util/typo.php
index ac61ef6d3..e20cce86a 100644
--- a/util/typo.php
+++ b/util/typo.php
@@ -37,12 +37,21 @@
}
}
+ if(x($a->config,'php_path'))
+ $phpath = $a->config['php_path'];
+ else
+ $phpath = 'php';
+
echo "String files\n";
echo 'util/strings.php' . "\n";
include_once('util/strings.php');
+ echo count($a->strings) . ' strings' . "\n";
+
$files = glob('view/*/strings.php');
+
foreach($files as $file) {
echo $file . "\n";
- include_once($file);
+ passthru($phpath . ' util/typohelper.php ' . $file);
+// include_once($file);
}
diff --git a/util/typohelper.php b/util/typohelper.php
new file mode 100644
index 000000000..589702a02
--- /dev/null
+++ b/util/typohelper.php
@@ -0,0 +1,11 @@
+<?php
+
+$str = <<< EOT
+ error_reporting(E_ERROR | E_WARNING | E_PARSE );
+ ini_set('display_errors', '1');
+ ini_set('log_errors','0');
+EOT;
+
+ $str .= str_replace('<?php', '', file_get_contents($argv[1]));
+
+ eval($str);
diff --git a/view/api_timeline_atom.tpl b/view/api_timeline_atom.tpl
new file mode 100644
index 000000000..069ff7651
--- /dev/null
+++ b/view/api_timeline_atom.tpl
@@ -0,0 +1,39 @@
+<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
+ <generator uri="http://status.net" version="0.9.7">StatusNet</generator>
+ <id>tag:friendika:PublicTimeline</id>
+ <title>Network on Friendika</title>
+ <subtitle>Your network updates on Friendika</subtitle>
+ <logo>$rss.logo</logo>
+ <updated>$rss.updated</updated>
+ <link type="text/html" rel="alternate" href="$rss.alternate"/>
+ <link type="application/atom+xml" rel="self" href="$rss.self"/>
+ {{ for $statuses as $status }}
+ <entry>
+ <activity:object-type>$status.objecttype</activity:object-type>
+ <id>$status.id</id>
+ <title>$status.text</title>
+ <content type="html">$status.html</content>
+ <link rel="alternate" type="text/html" href="$status.url"/>
+ <activity:verb>$status.verb</activity:verb>
+ <published>$status.created_at</published>
+ <updated>$status.created_at</updated>
+
+ <link rel="ostatus:conversation" href="$status.url"/>
+ <!--
+ <source>
+ <id>http://identi.ca/api/statuses/user_timeline/397830.atom</id>
+ <title>Sin Mobopolitan</title>
+ <link rel="alternate" type="text/html" href="http://identi.ca/mobopolitan"/>
+ <link rel="self" type="application/atom+xml" href="http://identi.ca/api/statuses/user_timeline/397830.atom"/>
+ <link rel="license" href="http://creativecommons.org/licenses/by/3.0/"/>
+ <icon>http://avatar.identi.ca/397830-96-20110312195623.jpeg</icon>
+ <updated>2011-04-21T18:39:32+00:00</updated>
+ </source>
+ -->
+ <link rel="self" type="application/atom+xml" href="$status.self"/>
+ <link rel="edit" type="application/atom+xml" href="$status.edit"/>
+ <statusnet:notice_info local_id="$status.id" source="$status.source" favorite="false" repeated="false">
+ </statusnet:notice_info>
+ </entry>
+ {{ endfor }}
+</feed>
diff --git a/view/api_timeline_rss.tpl b/view/api_timeline_rss.tpl
new file mode 100644
index 000000000..fbba93ee9
--- /dev/null
+++ b/view/api_timeline_rss.tpl
@@ -0,0 +1,21 @@
+<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:georss="http://www.georss.org/georss" xmlns:twitter="http://api.twitter.com">
+ <channel>
+ <title>Friendika</title>
+ <link>$rss.alternate</link>
+ <atom:link type="application/rss+xml" rel="self" href="$rss.self"/>
+ <description>Friendika timeline</description>
+ <language>$rss.language</language>
+ <ttl>40</ttl>
+
+{{ for $statuses as $status }}
+ <item>
+ <title>$status.text</title>
+ <description>$status.text</description>
+ <pubDate>$status.created_at</pubDate>
+ <guid>$status.url</guid>
+ <link>$status.url</link>
+ <twitter:source>$status.source</twitter:source>
+ </item>
+{{ endfor }}
+ </channel>
+</rss>
diff --git a/view/api_timeline_xml.tpl b/view/api_timeline_xml.tpl
new file mode 100644
index 000000000..9914f6475
--- /dev/null
+++ b/view/api_timeline_xml.tpl
@@ -0,0 +1,21 @@
+<statuses type="array">
+ {{ for $statuses as $status }}
+ <status>
+ <created_at>$status.created_at</created_at>
+ <id>$status.id</id>
+ <text>$status.text</text>
+ <source>$status.source</source>
+ <truncated>$status.truncated</truncated>
+ <url>$status.url</url>
+ <in_reply_to_status_id>$status.in_reply_to_status_id</in_reply_to_status_id>
+ <in_reply_to_user_id>$status.in_reply_to_user_id</in_reply_to_user_id>
+ <favorited>$status.favorited</favorited>
+ <in_reply_to_screen_name>$status.in_reply_to_screen_name</in_reply_to_screen_name>
+ <geo>$status.geo</geo>
+ <coordinates>$status.coordinates</coordinates>
+ <place>$status.place</place>
+ <contributors>$status.contributors</contributors>
+ {{ inc api_user_xml.tpl with $user=$status.user }}{{ endinc }}
+ </status>
+ {{ endfor }}
+</statuses> \ No newline at end of file
diff --git a/view/api_user_xml.tpl b/view/api_user_xml.tpl
new file mode 100644
index 000000000..15517fc42
--- /dev/null
+++ b/view/api_user_xml.tpl
@@ -0,0 +1,46 @@
+<user>
+ <id>$user.id</id>
+ <name>$user.name</name>
+ <screen_name>$user.screen_name</screen_name>
+ <location>$user.location</location>
+ <description>$user.description</description>
+ <profile_image_url>$user.profile_image_url</profile_image_url>
+ <url>$user.url</url>
+ <protected>$user.protected</protected>
+ <followers_count>$user.followers</followers_count>
+ <profile_background_color>$user.profile_background_color</profile_background_color>
+ <profile_text_color>$user.profile_text_color</profile_text_color>
+ <profile_link_color>$user.profile_link_color</profile_link_color>
+ <profile_sidebar_fill_color>$user.profile_sidebar_fill_color</profile_sidebar_fill_color>
+ <profile_sidebar_border_color>$user.profile_sidebar_border_color</profile_sidebar_border_color>
+ <friends_count>$user.friends_count</friends_count>
+ <created_at>$user.created_at</created_at>
+ <favourites_count>$user.favourites_count</favourites_count>
+ <utc_offset>$user.utc_offset</utc_offset>
+ <time_zone>$user.time_zone</time_zone>
+ <profile_background_image_url>$user.profile_background_image_url</profile_background_image_url>
+ <profile_background_tile>$user.profile_background_tile</profile_background_tile>
+ <profile_use_background_image>$user.profile_use_background_image</profile_use_background_image>
+ <notifications></notifications>
+ <geo_enabled>$user.geo_enabled</geo_enabled>
+ <verified>$user.verified</verified>
+ <following></following>
+ <statuses_count>$user.statuses_count</statuses_count>
+ <lang>$user.lang</lang>
+ <contributors_enabled>$user.contributors_enabled</contributors_enabled>
+ <status>{{ if $user.status }}
+ <created_at>$user.status.created_at</created_at>
+ <id>$user.status.id</id>
+ <text>$user.status.text</text>
+ <source>$user.status.source</source>
+ <truncated>$user.status.truncated</truncated>
+ <in_reply_to_status_id>$user.status.in_reply_to_status_id</in_reply_to_status_id>
+ <in_reply_to_user_id>$user.status.in_reply_to_user_id</in_reply_to_user_id>
+ <favorited>$user.status.favorited</favorited>
+ <in_reply_to_screen_name>$user.status.in_reply_to_screen_name</in_reply_to_screen_name>
+ <geo>$user.status.geo</geo>
+ <coordinates>$user.status.coordinates</coordinates>
+ <place>$user.status.place</place>
+ <contributors>$user.status.contributors</contributors>
+ {{ endif }}</status>
+</user> \ No newline at end of file
diff --git a/view/comment_item.tpl b/view/comment_item.tpl
index dabbd6e87..0216e31d3 100644
--- a/view/comment_item.tpl
+++ b/view/comment_item.tpl
@@ -10,11 +10,11 @@
<a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
</div>
<div class="comment-edit-photo-end"></div>
- <textarea id="comment-edit-text-$id" class="comment-edit-text-empty" name="body" onFocus="commentOpen(this,$id);" onBlur="commentClose(this,$id);" >Comment</textarea>
+ <textarea id="comment-edit-text-$id" class="comment-edit-text-empty" name="body" onFocus="commentOpen(this,$id);" onBlur="commentClose(this,$id);" >$comment</textarea>
<div class="comment-edit-text-end"></div>
<div class="comment-edit-submit-wrapper" id="comment-edit-submit-wrapper-$id" style="display: none;" >
- <input type="submit" onclick="post_comment($id); return false;" id="comment-edit-submit-$id" class="comment-edit-submit" name="submit" value="Submit" />
+ <input type="submit" onclick="post_comment($id); return false;" id="comment-edit-submit-$id" class="comment-edit-submit" name="submit" value="$submit" />
</div>
<div class="comment-edit-end"></div>
diff --git a/view/en/contact_edit.tpl b/view/contact_edit.tpl
index 9aca60188..97134aedd 100644
--- a/view/en/contact_edit.tpl
+++ b/view/contact_edit.tpl
@@ -18,17 +18,19 @@
<div id="contact-edit-nav-wrapper" >
<div id="contact-edit-links" >
- <a href="contacts/$contact_id/block" id="contact-edit-block-link" ><img src="images/b_block.gif" alt="$blockunblock" title="$block_text"/></a>
- <a href="contacts/$contact_id/ignore" id="contact-edit-ignore-link" ><img src="images/no.gif" alt="$ignorecont" title="$ignore_text"/></a>
+ <a href="contacts/$contact_id/block" class="icon block" id="contact-edit-block-link" title="$block_text"></a>
+ <a href="contacts/$contact_id/ignore" class="icon no" id="contact-edit-ignore-link" title="$ignore_text"></a>
+ <a href="crepair/$contact_id" class="icon tools" id="contact-edit-repair" title="$lblcrepair"></a>
+
</div>
<div id="contact-drop-links" >
- <a href="contacts/$contact_id/drop" id="contact-edit-drop-link" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" /></a>
+ <a href="contacts/$contact_id/drop" class="icon drophide" id="contact-edit-drop-link" onclick="return confirmDelete();" title="$delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);"></a>
</div>
<div id="contact-edit-nav-end"></div>
<div id="contact-edit-poll-wrapper">
- <div id="contact-edit-last-update-text">$lastupdtext<span id="contact-edit-last-updated">$last_update</span</div>
+ <div id="contact-edit-last-update-text">$lastupdtext<span id="contact-edit-last-updated">$last_update</span></div>
<div id="contact-edit-poll-text">$updpub</div>
$poll_interval
<div id="contact-edit-update-now"><a href="contacts/$contact_id/update">$udnow</a></div>
@@ -40,42 +42,44 @@ $insecure
$blocked
$ignored
+<div id="view-recent-wrapper"><a href="network/?cid=$contact_id" id="contact-view-recent">$lblrecent</a></div>
+
<div id="contact-edit-info-wrapper">
-<h4>Contact Information / Notes</h4>
+<h4>$lbl_info1</h4>
<textarea id="contact-edit-info" rows="10" cols="72" name="info" >$info</textarea>
</div>
<div id="contact-edit-info-end"></div>
-<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
+<input class="contact-edit-submit" type="submit" name="submit" value="$submit" />
<div id="contact-edit-profile-select-text">
-<h4>Profile Visibility</h4>
-<p>Please choose the profile you would like to display to $name when viewing your profile securely.
+<h4>$lbl_vis1</h4>
+<p>$lbl_vis2
</p>
</div>
$profile_select
<div id="contact-edit-profile-select-end"></div>
-<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
+<input class="contact-edit-submit" type="submit" name="submit" value="$submit" />
<div id="contact-edit-rating-wrapper">
-<h4>Online Reputation</h4>
+<h4>$lbl_rep1</h4>
<p>
-Occasionally your friends may wish to inquire about this person's online legitimacy. You may help them choose whether or not to interact with this person by providing a 'reputation' to guide them.
+$lbl_rep2 $lbl_rep3
</p>
<div id="contact-edit-rating-select-wrapper">
$rating
</div>
<div id="contact-edit-rating-explain">
<p>
-Please take a moment to elaborate on this selection if you feel it could be helpful to others.
+$lbl_rep4
</p>
<textarea id="contact-edit-rating-text" name="reason" rows="3" cols="64" >$reason</textarea>
</div>
</div>
$groups
-<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
+<input class="contact-edit-submit" type="submit" name="submit" value="$submit" />
</form>
</div>
diff --git a/view/contact_template.tpl b/view/contact_template.tpl
index 5b99f1be1..e9f616760 100644
--- a/view/contact_template.tpl
+++ b/view/contact_template.tpl
@@ -7,7 +7,7 @@
</div>
<div class="contact-entry-direction-end" ></div>
<div class="contact-entry-edit-links" >
- <a href="contacts/$id" class="contact-entry-edit-link" ><img src="images/b_edit.gif" alt="$edit_hover" title="$edit_hover" /></a>
+ <a class="icon pencil" href="contacts/$id" class="contact-entry-edit-link" title="$edit_hover"></a>
</div>
<div class="contact-entry-edit-end"></div>
</div>
diff --git a/view/crepair.tpl b/view/crepair.tpl
new file mode 100644
index 000000000..5870bac60
--- /dev/null
+++ b/view/crepair.tpl
@@ -0,0 +1,34 @@
+
+<form id="crepair-form" action="crepair/$contact_id" method="post" >
+
+<h4>$contact_name</h4>
+
+<label id="crepair-nick-label" for="crepair-nick">$label_nick</label>
+<input type="text" id="crepair-nick" name="nick" value="$contact_nick" />
+<div class="clear"></div>
+
+<label id="crepair-url-label" for="crepair-url">$label_url</label>
+<input type="text" id="crepair-url" name="url" value="$contact_url" />
+<div class="clear"></div>
+
+<label id="crepair-request-label" for="crepair-request">$label_request</label>
+<input type="text" id="crepair-request" name="request" value="$request" />
+<div class="clear"></div>
+
+<label id="crepair-confirm-label" for="crepair-confirm">$label_confirm</label>
+<input type="text" id="crepair-confirm" name="confirm" value="$confirm" />
+<div class="clear"></div>
+
+<label id="crepair-notify-label" for="crepair-notify">$label_notify</label>
+<input type="text" id="crepair-notify" name="notify" value="$notify" />
+<div class="clear"></div>
+
+<label id="crepair-poll-label" for="crepair-poll">$label_poll</label>
+<input type="text" id="crepair-poll" name="poll" value="$poll" />
+<div class="clear"></div>
+
+<input type="submit" name="submit" value="$lbl_submit" />
+
+</form>
+
+
diff --git a/view/en/cropbody.tpl b/view/cropbody.tpl
index 39395af8e..c9c0f84de 100644
--- a/view/en/cropbody.tpl
+++ b/view/cropbody.tpl
@@ -1,9 +1,9 @@
-<h1>Crop Image</h1>
+<h1>$title</h1>
<p id="cropimage-desc">
-Please adjust the image cropping for optimum viewing.
+$desc
</p>
<div id="cropimage-wrapper">
-<img src="$image_url" id="croppa" class="imgCrop" alt="" />
+<img src="$image_url" id="croppa" class="imgCrop" alt="$title" />
</div>
<div id="cropimage-preview-wrapper" >
<div id="previewWrap" ></div>
@@ -41,7 +41,6 @@ Please adjust the image cropping for optimum viewing.
<form action="profile_photo/$resource" id="crop-image-form" method="post" />
-<input type="hidden" name="imagename" value="$hash" />
<input type="hidden" name="cropfinal" value="1" />
<input type="hidden" name="xstart" id="x1" />
<input type="hidden" name="ystart" id="y1" />
@@ -51,7 +50,7 @@ Please adjust the image cropping for optimum viewing.
<input type="hidden" name="width" id="width" />
<div id="crop-image-submit-wrapper" >
-<input type="submit" name="submit" value="Done Editing" />
+<input type="submit" name="submit" value="$done" />
</div>
</form>
diff --git a/view/de/contact_edit.tpl b/view/de/contact_edit.tpl
deleted file mode 100644
index 0b32bdd66..000000000
--- a/view/de/contact_edit.tpl
+++ /dev/null
@@ -1,86 +0,0 @@
-
-<h2>$header</h2>
-
-<div id="contact-edit-banner-name">$name</div>
-
-<form action="contacts/$contact_id" method="post" >
-<input type="hidden" name="contact_id" value="$contact_id">
-
-<div id="contact-edit-wrapper" >
-
- <div id="contact-edit-photo-wrapper" >
- <img id="contact-edit-direction-icon" src="$dir_icon" alt="$alt_text" title="$alt_text" />
- <div id="contact-edit-photo" >
- <a href="$url" title="$visit" /><img src="$photo" $sparkle alt="$name" /></a>
- </div>
- <div id="contact-edit-photo-end" ></div>
- </div>
- <div id="contact-edit-nav-wrapper" >
-
- <div id="contact-edit-links" >
- <a href="contacts/$contact_id/block" id="contact-edit-block-link" ><img src="images/b_block.gif" alt="$blockunblock" title="$block_text"/></a>
- <a href="contacts/$contact_id/ignore" id="contact-edit-ignore-link" ><img src="images/no.gif" alt="$ignorecont" title="$ignore_text"/></a>
- </div>
- <div id="contact-drop-links" >
- <a href="contacts/$contact_id/drop" id="contact-edit-drop-link" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" /></a>
- </div>
- <div id="contact-edit-nav-end"></div>
-
-
- <div id="contact-edit-poll-wrapper">
- <div id="contact-edit-last-update-text">$lastupdtext<span id="contact-edit-last-updated">$last_update</span</div>
- <div id="contact-edit-poll-text">$updpub</div>
- $poll_interval
- <div id="contact-edit-update-now"><a href="contacts/$contact_id/update">$udnow</a></div>
- </div>
- </div>
- <div id="contact-edit-end" ></div>
-
-$insecure
-$blocked
-$ignored
-
-
-<div id="contact-edit-info-wrapper">
-<h4>Kontaktinformation / Notizen</h4>
-<textarea id="contact-edit-info" rows="10" cols="72" name="info" >$info</textarea>
-</div>
-<div id="contact-edit-info-end"></div>
-
-<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
-
-<div id="contact-edit-profile-select-text">
-<h4>Profil Sichtbarkeit</h4>
-<p>Bitte wähle das Profil, das du $name gezeigt werden soll, wenn er sich dein
-Profil in Friendika betrachtet.
-</p>
-</div>
-$profile_select
-<div id="contact-edit-profile-select-end"></div>
-
-<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
-
-
-<div id="contact-edit-rating-wrapper">
-<h4>Online Reputation</h4>
-<p>
-Gelegentlich werden sich deine Freunde nach der online Legitimität dieser
-Person erkundigen. Du kannst ihnen helfen bei der Entscheidung ob sie mit
-dieser Person interagieren wollen indem du den "Ruf" der Person bewertest.
-</p>
-<div id="contact-edit-rating-select-wrapper">
-$rating
-</div>
-<div id="contact-edit-rating-explain">
-<p>
-Bitte nimm dir einen Moment um deine Auswahl zu kommentieren wenn du meinst das
-könnte anderen weiter helfen.
-</p>
-<textarea id="contact-edit-rating-text" name="reason" rows="3" cols="64" >$reason</textarea>
-</div>
-</div>
-$groups
-
-<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
-</form>
-</div>
diff --git a/view/de/cropbody.tpl b/view/de/cropbody.tpl
deleted file mode 100644
index 0211fe308..000000000
--- a/view/de/cropbody.tpl
+++ /dev/null
@@ -1,58 +0,0 @@
-<h1>Bild zuschneiden</h1>
-<p id="cropimage-desc">
-Zur optimalen Darstellung des Bildes kann es nun auf einen Bereich
-zugeschnitten werden. Bitte wähle diesen Bereich.
-</p>
-<div id="cropimage-wrapper">
-<img src="$image_url" id="croppa" class="imgCrop" alt="" />
-</div>
-<div id="cropimage-preview-wrapper" >
-<div id="previewWrap" ></div>
-</div>
-
-<script type="text/javascript" language="javascript">
-
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- Event.observe( window, 'load', function() {
- new Cropper.ImgWithPreview(
- 'croppa',
- {
- previewWrap: 'previewWrap',
- minWidth: 175,
- minHeight: 175,
- maxWidth: 640,
- maxHeight: 640,
- ratioDim: { x: 100, y:100 },
- displayOnInit: true,
- onEndCrop: onEndCrop
- }
- );
- }
- );
-
-</script>
-
-<form action="profile_photo/$resource" id="crop-image-form" method="post" />
-
-<input type="hidden" name="imagename" value="$hash" />
-<input type="hidden" name="cropfinal" value="1" />
-<input type="hidden" name="xstart" id="x1" />
-<input type="hidden" name="ystart" id="y1" />
-<input type="hidden" name="xfinal" id="x2" />
-<input type="hidden" name="yfinal" id="y2" />
-<input type="hidden" name="height" id="height" />
-<input type="hidden" name="width" id="width" />
-
-<div id="crop-image-submit-wrapper" >
-<input type="submit" name="submit" value="Done Editing" />
-</div>
-
-</form>
diff --git a/view/de/dfrn_req_confirm.tpl b/view/de/dfrn_req_confirm.tpl
deleted file mode 100644
index 88d05b49a..000000000
--- a/view/de/dfrn_req_confirm.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-<p id="dfrn-request-homecoming" >
-Willkommen zu Hause $username.
-<br />
-Bitte bestätige deine Vorstellung bei $dfrn_url.
-
-</p>
-<form id="dfrn-request-homecoming-form" action="dfrn_request/$nickname" method="post">
-<input type="hidden" name="dfrn_url" value="$dfrn_url" />
-<input type="hidden" name="confirm_key" value="$confirm_key" />
-<input type="hidden" name="localconfirm" value="1" />
-$aes_allow
-
-<div id="dfrn-request-homecoming-submit-wrapper" >
-<input id="dfrn-request-homecoming-submit" type="submit" name="submit" value="Confirm" />
-</div>
-</form>
diff --git a/view/de/directory_header.tpl b/view/de/directory_header.tpl
deleted file mode 100644
index cda2f4914..000000000
--- a/view/de/directory_header.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-<h1>Verzeichnis dieser Seite</h1>
-
-$globaldir
-
-$finding
-
-<div id="directory-search-wrapper">
-<form id="directory-search-form" action="directory" method="get" >
-<input type="text" name="search" id="directory-search" class="search-input" onfocus="this.select();" value="$search" />
-<input type="submit" name="submit" id="directory-search-submit" value="Find" />
-</form>
-</div>
-<div id="directory-search-end"></div>
-
diff --git a/view/de/group_edit.tpl b/view/de/group_edit.tpl
deleted file mode 100644
index 1dea97f4d..000000000
--- a/view/de/group_edit.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<h2>Gruppen Editor</h2>
-
-
-<div id="group-edit-wrapper" >
-<form action="group/$gid" id="group-edit-form" method="post" >
-<div id="group-edit-name-wrapper" >
-<label id="group-edit-name-label" for="group-edit-name" >Gruppen Name: </label>
-<input type="text" id="group-edit-name" name="groupname" value="$name" />
-</div>
-<div id="group-edit-name-end"></div>
-<div id="group-edit-select-wrapper" >
-<label id="group_members_select_label" for="group_members_select" >Mitglieder:</label>
-$selector
-
-</div>
-$drop
-<div id="group_members_select_end"></div>
-<div id="group-edit-submit-wrapper" >
-<input type="submit" name="submit" value="Submit" >
-</div>
-
-<div id="group-edit-select-end" ></div>
-</form>
-</div>
diff --git a/view/de/group_new.tpl b/view/de/group_new.tpl
deleted file mode 100644
index 639eab8a8..000000000
--- a/view/de/group_new.tpl
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-<div id="group-new-wrapper" >
-<form action="group/new" method="post">
-
-<div id="group-new-text">
-<p>
-Erstelle eine neue Gruppe für Freunde/Kontakte.
-
-<div id="group-new-input-wrapper">
-<label id="group-new-label" for="group-new-name" >Gruppen Name: </label>
-<input name="groupname" id="group-new-name" />
-</div>
-<div id="group-new-input-end" ></div>
-
-<div id="group-new-submit-wrapper" >
-<input type="submit" name="submit" value="Submit" />
-</form>
-</div>
-<div id="group-new-end"></div>
-
-
diff --git a/view/de/head.tpl b/view/de/head.tpl
deleted file mode 100644
index 17b7706f8..000000000
--- a/view/de/head.tpl
+++ /dev/null
@@ -1,31 +0,0 @@
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<base href="$baseurl" />
-<link rel="stylesheet" type="text/css" href="$stylesheet" media="all" />
-<link rel="shortcut icon" href="$baseurl/images/friendika-32.png" />
-
-<!--[if IE]>
-<script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
-<![endif]-->
-<script type="text/javascript" src="$baseurl/include/jquery.js" ></script>
-<script type="text/javascript" src="$baseurl/include/main.js" ></script>
-<script>
-
- function confirmDelete() { return confirm("Delete this item?"); }
- function commentOpen(obj,id) {
- if(obj.value == 'Comment') {
- obj.value = '';
- obj.className = "comment-edit-text-full";
- openMenu("comment-edit-submit-wrapper-" + id);
- }
- }
- function commentClose(obj,id) {
- if(obj.value == '') {
- obj.value = 'Comment';
- obj.className="comment-edit-text-empty";
- closeMenu("comment-edit-submit-wrapper-" + id);
- }
- }
-
-</script>
-
-
diff --git a/view/de/htconfig.tpl b/view/de/htconfig.tpl
index d3bb6b411..0ce28b4a0 100644
--- a/view/de/htconfig.tpl
+++ b/view/de/htconfig.tpl
@@ -37,7 +37,7 @@ $a->config['admin_email'] = '';
// Maximum size of an imported message, 0 is unlimited
-$a->config['max_import_size'] = 10000;
+$a->config['max_import_size'] = 200000;
// maximum size of uploaded photos
diff --git a/view/de/insecure_net.tpl b/view/de/insecure_net.tpl
deleted file mode 100644
index 900f28642..000000000
--- a/view/de/insecure_net.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<div id="profile-edit-insecure">
-<p>
-Das Soziale Netzwerk dem $name angehört ist ein offenes Netzwerk das nur
-eingeschränkte oder nicht existente Privatspäreneinstellungen bietet.
-
-Bitte verhalte dich entsprechend diskret.
-</p>
-</div>
diff --git a/view/de/install_db.tpl b/view/de/install_db.tpl
deleted file mode 100644
index 804ce17f3..000000000
--- a/view/de/install_db.tpl
+++ /dev/null
@@ -1,40 +0,0 @@
-
-<h3>Friendika Social Network</h3>
-<h3>Installation</h3>
-
-<p>
-Um Friendika installieren zu können müssen wir wissen wie wir die Datenbank erreichen könne. Bitte kontaktire deinen Hosting Anbieter oder Seitenadministrator wenn du Fragen zu diesen Einstellungen hast. Die Datenbank die du weiter unten angibst muss bereits existieren. Sollte dies nicht der Fall sein erzeuge sie bitte bevor du mit der Installation fortfährst.
-</p>
-
-<form id="install-form" action="$baseurl/install" method="post">
-
-<input type="hidden" name="phpath" value="$phpath" />
-
-<label for="install-dbhost" id="install-dbhost-label">Datenbank Servername</label>
-<input type="text" name="dbhost" id="install-dbhost" value="$dbhost" />
-<div id="install-dbhost-end"></div>
-
-<label for="install-dbuser" id="install-dbuser-label">Datenbank Anmeldename</label>
-<input type="text" name="dbuser" id="install-dbuser" value="$dbuser" />
-<div id="install-dbuser-end"></div>
-
-<label for="install-dbpass" id="install-dbpass-label">Datenbank Anmeldepassword</label>
-<input type="password" name="dbpass" id="install-dbpass" value="$dbpass" />
-<div id="install-dbpass-end"></div>
-
-<label for="install-dbdata" id="install-dbdata-label">Datenbankname</label>
-<input type="text" name="dbdata" id="install-dbdata" value="$dbdata" />
-<div id="install-dbdata-end"></div>
-
-<div id="install-tz-desc">
-Bitte wähle die Standard-Zeitzone deiner Webseite
-</div>
-
-$tzselect
-
-<div id="install-tz-end" ></div>
-<input id="install-submit" type="submit" name="submit" value="$submit" />
-
-</form>
-<div id="install-end" ></div>
-
diff --git a/view/de/intros-top.tpl b/view/de/intros-top.tpl
deleted file mode 100644
index e65da1a3f..000000000
--- a/view/de/intros-top.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<h1>Schwebende Freundschafts/Kontakt Benachrichtigungen</h1>
-
-<div id="notification-show-hide-wrapper" >
-<a href="$hide_url" id="notification-show-hide-link">$hide_text</a>
-</div>
-
-
diff --git a/view/de/lostpass.tpl b/view/de/lostpass.tpl
deleted file mode 100644
index 1a75447c4..000000000
--- a/view/de/lostpass.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<h3>Passwort vergessen?</h3>
-
-<p id="lostpass-desc">
-Trage deine EMail Adresse ein um ein neues Passwort anzufordern. Du wirst eine EMail mit weiteren Anweisungen erhalten.
-</p>
-
-<form action="lostpass" method="post" >
-<div id="login-name-wrapper">
- <label for="login-name" id="label-login-name">Spitzname oder EMail: </label>
- <input type="text" maxlength="60" name="login-name" id="login-name" value="" />
-</div>
-<div id="login-extra-end"></div>
-<div id="login-submit-wrapper" >
- <input type="submit" name="submit" id="lostpass-submit-button" value="Reset" />
-</div>
-<div id="login-submit-end"></div>
-</form>
-
diff --git a/view/de/messages.po b/view/de/messages.po
new file mode 100644
index 000000000..7c6a8450c
--- /dev/null
+++ b/view/de/messages.po
@@ -0,0 +1,3600 @@
+# FRIENDIKA Distributed Social Network
+# Copyright (C) 2010, 2011 Mike Macgirvin
+# This file is distributed under the same license as the Friendika package.
+# Mike Macgirvin, 2010
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: friendika\n"
+"Report-Msgid-Bugs-To: http://bugs.friendika.com/\n"
+"POT-Creation-Date: 2011-05-10 14:13+0200\n"
+"PO-Revision-Date: 2011-05-17 14:10+0000\n"
+"Last-Translator: bavatar <tobias.diekershoff@gmx.net>\n"
+"Language-Team: German (http://www.transifex.net/projects/p/friendika/team/de/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+#: ../../index.php:210
+msgid "Not Found"
+msgstr "Nicht gefunden"
+
+#: ../../index.php:211
+msgid "Page not found."
+msgstr "Seite nicht gefunden."
+
+#: ../../index.php:266 ../../mod/profperm.php:19 ../../mod/group.php:67
+msgid "Permission denied"
+msgstr "Zugriff verweigert"
+
+#: ../../index.php:267 ../../mod/manage.php:75 ../../mod/wall_upload.php:42
+#: ../../mod/follow.php:8 ../../mod/profile_photo.php:19
+#: ../../mod/profile_photo.php:133 ../../mod/profile_photo.php:144
+#: ../../mod/profile_photo.php:155 ../../mod/regmod.php:16
+#: ../../mod/profiles.php:7 ../../mod/profiles.php:227
+#: ../../mod/settings.php:15 ../../mod/settings.php:20
+#: ../../mod/settings.php:251 ../../mod/photos.php:89 ../../mod/photos.php:798
+#: ../../mod/display.php:138 ../../mod/editpost.php:10 ../../mod/invite.php:13
+#: ../../mod/invite.php:54 ../../mod/contacts.php:106
+#: ../../mod/register.php:25 ../../mod/install.php:93 ../../mod/network.php:6
+#: ../../mod/notifications.php:56 ../../mod/crepair.php:54
+#: ../../mod/item.php:57 ../../mod/item.php:680 ../../mod/message.php:8
+#: ../../mod/message.php:116 ../../mod/dfrn_confirm.php:53
+#: ../../mod/viewcontacts.php:21 ../../mod/group.php:19
+#: ../../addon/facebook/facebook.php:246
+msgid "Permission denied."
+msgstr "Zugriff verweigert."
+
+#: ../../boot.php:385
+msgid "Delete this item?"
+msgstr "Diesen Beitrag löschen?"
+
+#: ../../boot.php:386 ../../mod/photos.php:1130 ../../mod/photos.php:1169
+#: ../../mod/photos.php:1200 ../../include/conversation.php:375
+msgid "Comment"
+msgstr "Kommentar"
+
+#: ../../boot.php:834
+msgid "Create a New Account"
+msgstr "Neuen Account erstellen"
+
+#: ../../boot.php:835 ../../mod/register.php:471 ../../include/nav.php:59
+msgid "Register"
+msgstr "Registrieren"
+
+#: ../../boot.php:841
+msgid "Nickname or Email address: "
+msgstr "Spitzname oder Email-Adresse: "
+
+#: ../../boot.php:842
+msgid "Password: "
+msgstr "Passwort: "
+
+#: ../../boot.php:843 ../../boot.php:849 ../../include/nav.php:44
+msgid "Login"
+msgstr "Anmeldung"
+
+#: ../../boot.php:847
+msgid "Nickname/Email/OpenID: "
+msgstr "Spitzname/Email/OpenID: "
+
+#: ../../boot.php:848
+msgid "Password (if not OpenID): "
+msgstr "Passwort (falls nicht OpenID): "
+
+#: ../../boot.php:851
+msgid "Forgot your password?"
+msgstr "Passwort vergessen?"
+
+#: ../../boot.php:852 ../../mod/lostpass.php:78
+msgid "Password Reset"
+msgstr "Passwort zurücksetzen"
+
+#: ../../boot.php:865 ../../include/nav.php:41
+msgid "Logout"
+msgstr "Abmelden"
+
+#: ../../boot.php:1106
+msgid "prev"
+msgstr "vorige"
+
+#: ../../boot.php:1108
+msgid "first"
+msgstr "erste"
+
+#: ../../boot.php:1137
+msgid "last"
+msgstr "letzte"
+
+#: ../../boot.php:1140
+msgid "next"
+msgstr "nächste"
+
+#: ../../boot.php:2001
+msgid "No contacts"
+msgstr "Keine Kontakte"
+
+#: ../../boot.php:2009
+#, php-format
+msgid "%d Contact"
+msgid_plural "%d Contacts"
+msgstr[0] "%d Kontakt"
+msgstr[1] "%d Kontakte"
+
+#: ../../boot.php:2014 ../../mod/viewcontacts.php:25
+msgid "View Contacts"
+msgstr "Kontakte anzeigen"
+
+#: ../../boot.php:2060 ../../mod/search.php:26 ../../include/nav.php:71
+msgid "Search"
+msgstr "Suche"
+
+#: ../../boot.php:2216 ../../mod/profile.php:11
+msgid "No profile"
+msgstr "Kein Profil"
+
+#: ../../boot.php:2275
+msgid "Connect"
+msgstr "Verbinden"
+
+#: ../../boot.php:2290
+msgid "Location:"
+msgstr "Ort:"
+
+#: ../../boot.php:2294
+msgid ", "
+msgstr ", "
+
+#: ../../boot.php:2302 ../../include/profile_advanced.php:23
+msgid "Gender:"
+msgstr "Geschlecht:"
+
+#: ../../boot.php:2306
+msgid "Status:"
+msgstr "Status:"
+
+#: ../../boot.php:2308 ../../include/profile_advanced.php:103
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: ../../boot.php:2399
+msgid "Monday"
+msgstr "Montag"
+
+#: ../../boot.php:2399
+msgid "Tuesday"
+msgstr "Dienstag"
+
+#: ../../boot.php:2399
+msgid "Wednesday"
+msgstr "Mittwoch"
+
+#: ../../boot.php:2399
+msgid "Thursday"
+msgstr "Donnerstag"
+
+#: ../../boot.php:2399
+msgid "Friday"
+msgstr "Freitag"
+
+#: ../../boot.php:2399
+msgid "Saturday"
+msgstr "Samstag"
+
+#: ../../boot.php:2399
+msgid "Sunday"
+msgstr "Sonntag"
+
+#: ../../boot.php:2403
+msgid "January"
+msgstr "Januar"
+
+#: ../../boot.php:2403
+msgid "February"
+msgstr "Februar"
+
+#: ../../boot.php:2403
+msgid "March"
+msgstr "März"
+
+#: ../../boot.php:2403
+msgid "April"
+msgstr "April"
+
+#: ../../boot.php:2403
+msgid "May"
+msgstr "Mai"
+
+#: ../../boot.php:2403
+msgid "June"
+msgstr "Juni"
+
+#: ../../boot.php:2403
+msgid "July"
+msgstr "Juli"
+
+#: ../../boot.php:2403
+msgid "August"
+msgstr "August"
+
+#: ../../boot.php:2403
+msgid "September"
+msgstr "September"
+
+#: ../../boot.php:2403
+msgid "October"
+msgstr "Oktober"
+
+#: ../../boot.php:2403
+msgid "November"
+msgstr "November"
+
+#: ../../boot.php:2403
+msgid "December"
+msgstr "Dezember"
+
+#: ../../boot.php:2418
+msgid "g A l F d"
+msgstr "g A l F d"
+
+#: ../../boot.php:2435
+msgid "Birthday Reminders"
+msgstr "Geburtstagserinnerungen"
+
+#: ../../boot.php:2436
+msgid "Birthdays this week:"
+msgstr "Geburtstage diese Woche:"
+
+#: ../../boot.php:2437
+msgid "(Adjusted for local time)"
+msgstr "(an die lokale Zeit angepasst)"
+
+#: ../../boot.php:2448
+msgid "[today]"
+msgstr "[heute]"
+
+#: ../../boot.php:2654
+msgid "link to source"
+msgstr "Link zum original Posting"
+
+#: ../../mod/manage.php:37
+#, php-format
+msgid "Welcome back %s"
+msgstr "Willkommen zurück %s"
+
+#: ../../mod/manage.php:87
+msgid "Manage Identities and/or Pages"
+msgstr "Verwalte Identitäten und/oder Seiten"
+
+#: ../../mod/manage.php:90
+msgid ""
+"(Toggle between different identities or community/group pages which share "
+"your account details.)"
+msgstr ""
+"(Wähle zwischen verschiedenen Identitäten oder Gemeinschafts/Gruppen Seiten "
+"die deine Accountdetails teilen.)"
+
+#: ../../mod/manage.php:92
+msgid "Select an identity to manage: "
+msgstr "Wähle eine Identität zum Verwalten:"
+
+#: ../../mod/manage.php:106 ../../mod/profiles.php:370
+#: ../../mod/settings.php:426 ../../mod/photos.php:826
+#: ../../mod/photos.php:883 ../../mod/photos.php:1091
+#: ../../mod/photos.php:1131 ../../mod/photos.php:1170
+#: ../../mod/photos.php:1201 ../../mod/invite.php:68
+#: ../../mod/contacts.php:264 ../../mod/install.php:133
+#: ../../mod/crepair.php:100 ../../mod/group.php:76 ../../mod/group.php:159
+#: ../../addon/twitter/twitter.php:156 ../../addon/twitter/twitter.php:175
+#: ../../addon/statusnet/statusnet.php:163
+#: ../../addon/statusnet/statusnet.php:189
+#: ../../addon/statusnet/statusnet.php:207
+#: ../../addon/facebook/facebook.php:293
+#: ../../addon/randplace/randplace.php:179 ../../include/conversation.php:376
+msgid "Submit"
+msgstr "Senden"
+
+#: ../../mod/wall_upload.php:56 ../../mod/profile_photo.php:109
+#, php-format
+msgid "Image exceeds size limit of %d"
+msgstr "Bildgröße überschreitet das Limit von %d"
+
+#: ../../mod/wall_upload.php:65 ../../mod/profile_photo.php:118
+#: ../../mod/photos.php:575
+msgid "Unable to process image."
+msgstr "Konnte das Bild nicht bearbeiten."
+
+#: ../../mod/wall_upload.php:79 ../../mod/wall_upload.php:88
+#: ../../mod/wall_upload.php:95 ../../mod/item.php:214
+#: ../../mod/message.php:93
+msgid "Wall Photos"
+msgstr "Pinnwand Bilder"
+
+#: ../../mod/wall_upload.php:82 ../../mod/profile_photo.php:241
+#: ../../mod/photos.php:593
+msgid "Image upload failed."
+msgstr "Hochladen des Bildes gescheitert."
+
+#: ../../mod/dfrn_notify.php:189 ../../mod/dfrn_notify.php:405
+#: ../../mod/dfrn_notify.php:495 ../../mod/regmod.php:94
+#: ../../mod/register.php:333 ../../mod/register.php:373
+#: ../../mod/dfrn_request.php:551 ../../mod/lostpass.php:40
+#: ../../mod/lostpass.php:102 ../../mod/item.php:480 ../../mod/item.php:506
+#: ../../mod/dfrn_confirm.php:657 ../../include/items.php:1435
+msgid "Administrator"
+msgstr "Administrator"
+
+#: ../../mod/dfrn_notify.php:191
+msgid "noreply"
+msgstr "noreply"
+
+#: ../../mod/dfrn_notify.php:249
+msgid "New mail received at "
+msgstr "New mail received at "
+
+#: ../../mod/dfrn_notify.php:403 ../../mod/dfrn_notify.php:493
+#, php-format
+msgid "%s commented on an item at %s"
+msgstr "%s hat einen Beitrag auf %s kommentiert"
+
+#: ../../mod/profile.php:112
+msgid "Status"
+msgstr "Status"
+
+#: ../../mod/profile.php:113 ../../mod/profperm.php:94
+#: ../../include/profile_advanced.php:7
+msgid "Profile"
+msgstr "Profil"
+
+#: ../../mod/profile.php:114
+msgid "Photos"
+msgstr "Bilder"
+
+#: ../../mod/profile.php:262 ../../mod/display.php:147
+#: ../../mod/register.php:450 ../../mod/network.php:259
+msgid ""
+"Shared content is covered by the <a "
+"href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons "
+"Attribution 3.0</a> license."
+msgstr ""
+"Geteilte Inhalte innerhalb des Friendika Netzwerks sind unter der <a "
+"href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons "
+"Attribution 3.0</a> verfügbar."
+
+#: ../../mod/follow.php:16 ../../mod/dfrn_request.php:340
+msgid "Disallowed profile URL."
+msgstr "Nicht erlaubte Profil URL."
+
+#: ../../mod/follow.php:39
+msgid "The profile address specified does not provide adequate information."
+msgstr "Die angegebene Profiladresse liefert unzureichende Informationen."
+
+#: ../../mod/follow.php:45
+msgid ""
+"Limited profile. This person will be unable to receive direct/personal "
+"notifications from you."
+msgstr ""
+"Eingeschränktes Profil. Diese Person wird keine direkten/privaten "
+"Nachrichten von dir erhalten können."
+
+#: ../../mod/follow.php:100
+msgid "Unable to retrieve contact information."
+msgstr "Konnte die Kontaktinformationen nicht empfangen."
+
+#: ../../mod/follow.php:146
+msgid "following"
+msgstr "folgen"
+
+#: ../../mod/profile_photo.php:28
+msgid "Image uploaded but image cropping failed."
+msgstr "Bilder hochgeladen aber das Zuschneiden ist fehlgeschlagen."
+
+#: ../../mod/profile_photo.php:58 ../../mod/profile_photo.php:65
+#: ../../mod/profile_photo.php:72 ../../mod/profile_photo.php:160
+#: ../../mod/profile_photo.php:236 ../../mod/profile_photo.php:245
+#: ../../mod/photos.php:110 ../../mod/photos.php:535 ../../mod/photos.php:875
+#: ../../mod/photos.php:890 ../../mod/register.php:288
+#: ../../mod/register.php:295 ../../mod/register.php:302
+msgid "Profile Photos"
+msgstr "Profilbilder"
+
+#: ../../mod/profile_photo.php:61 ../../mod/profile_photo.php:68
+#: ../../mod/profile_photo.php:75 ../../mod/profile_photo.php:248
+#, php-format
+msgid "Image size reduction [%s] failed."
+msgstr "Verkleinern der Bildgröße von [%s] ist gescheitert."
+
+#: ../../mod/profile_photo.php:95
+msgid "Unable to process image"
+msgstr "Bild konnte nicht verarbeitet werden"
+
+#: ../../mod/profile_photo.php:193
+msgid "Upload File:"
+msgstr "Datei hochladen:"
+
+#: ../../mod/profile_photo.php:194
+msgid "Upload Profile Photo"
+msgstr "Profilbild hochladen"
+
+#: ../../mod/profile_photo.php:195
+msgid "Upload"
+msgstr "Hochladen"
+
+#: ../../mod/profile_photo.php:196 ../../mod/settings.php:398
+msgid "or"
+msgstr "oder"
+
+#: ../../mod/profile_photo.php:196
+msgid "skip this step"
+msgstr "diesen Schritt überspringen"
+
+#: ../../mod/profile_photo.php:196
+msgid "select a photo from your photo albums"
+msgstr "wähle ein Foto von deinen Fotoalben"
+
+#: ../../mod/profile_photo.php:209
+msgid "Crop Image"
+msgstr "Bild Zurechtschneiden"
+
+#: ../../mod/profile_photo.php:210
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr ""
+"Passe bitte den Bildausschnitt an damit das Bild optimal dargestellt werden "
+"kann."
+
+#: ../../mod/profile_photo.php:211
+msgid "Done Editing"
+msgstr "Bearbeitung abgeschlossen"
+
+#: ../../mod/profile_photo.php:239
+msgid "Image uploaded successfully."
+msgstr "Bild erfolgreich auf den Server geladen."
+
+#: ../../mod/home.php:23
+#, php-format
+msgid "Welcome to %s"
+msgstr "Willkommen zu %s"
+
+#: ../../mod/regmod.php:10
+msgid "Please login."
+msgstr "Bitte melde dich an."
+
+#: ../../mod/regmod.php:54
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registration für %s wurde zurück gezogen"
+
+#: ../../mod/regmod.php:92 ../../mod/register.php:331
+#, php-format
+msgid "Registration details for %s"
+msgstr "Details der Registration von %s"
+
+#: ../../mod/regmod.php:99
+msgid "Account approved."
+msgstr "Account freigegeben."
+
+#: ../../mod/profiles.php:21 ../../mod/profiles.php:237
+#: ../../mod/profiles.php:342 ../../mod/dfrn_confirm.php:62
+msgid "Profile not found."
+msgstr "Profil nicht gefunden."
+
+#: ../../mod/profiles.php:28
+msgid "Profile Name is required."
+msgstr "Profilname ist erforderlich."
+
+#: ../../mod/profiles.php:199
+msgid "Profile updated."
+msgstr "Profil aktualisiert."
+
+#: ../../mod/profiles.php:254
+msgid "Profile deleted."
+msgstr "Profil gelöscht."
+
+#: ../../mod/profiles.php:270 ../../mod/profiles.php:301
+msgid "Profile-"
+msgstr "Profil-"
+
+#: ../../mod/profiles.php:289 ../../mod/profiles.php:328
+msgid "New profile created."
+msgstr "Neues Profil angelegt."
+
+#: ../../mod/profiles.php:307
+msgid "Profile unavailable to clone."
+msgstr "Profil nicht zum Duplizieren verfügbar."
+
+#: ../../mod/profiles.php:354
+msgid "Hide my contact/friend list from viewers of this profile?"
+msgstr "Verberge meine Kontakte/Freunde von Betrachtern dieses Profils?"
+
+#: ../../mod/profiles.php:355 ../../mod/settings.php:350
+#: ../../mod/settings.php:362 ../../mod/register.php:444
+#: ../../mod/dfrn_request.php:634
+msgid "Yes"
+msgstr "Ja"
+
+#: ../../mod/profiles.php:356 ../../mod/settings.php:351
+#: ../../mod/settings.php:363 ../../mod/register.php:445
+#: ../../mod/dfrn_request.php:635
+msgid "No"
+msgstr "Nein"
+
+#: ../../mod/profiles.php:369
+msgid "Edit Profile Details"
+msgstr "Profil bearbeiten"
+
+#: ../../mod/profiles.php:371
+msgid "View this profile"
+msgstr "Dieses Profil anzeigen"
+
+#: ../../mod/profiles.php:372
+msgid "Create a new profile using these settings"
+msgstr "Neues Profil anlegen und diese Einstellungen verwenden"
+
+#: ../../mod/profiles.php:373
+msgid "Clone this profile"
+msgstr "Dieses Profil dublizieren"
+
+#: ../../mod/profiles.php:374
+msgid "Delete this profile"
+msgstr "Dieses Profil löschen"
+
+#: ../../mod/profiles.php:375
+msgid "Profile Name:"
+msgstr "Profilname:"
+
+#: ../../mod/profiles.php:376
+msgid "Your Full Name:"
+msgstr "Dein kompletter Name:"
+
+#: ../../mod/profiles.php:377
+msgid "Title/Description:"
+msgstr "Titel/Beschreibung:"
+
+#: ../../mod/profiles.php:378
+msgid "Your Gender:"
+msgstr "Dein Geschlecht:"
+
+#: ../../mod/profiles.php:379
+msgid "Birthday (y/m/d):"
+msgstr "Geburtstag (y/m/d):"
+
+#: ../../mod/profiles.php:380
+msgid "Street Address:"
+msgstr "Adresse:"
+
+#: ../../mod/profiles.php:381
+msgid "Locality/City:"
+msgstr "Wohnort/Stadt:"
+
+#: ../../mod/profiles.php:382
+msgid "Postal/Zip Code:"
+msgstr "Postleitzahl:"
+
+#: ../../mod/profiles.php:383
+msgid "Country:"
+msgstr "Land:"
+
+#: ../../mod/profiles.php:384
+msgid "Region/State:"
+msgstr "Region/Bundesstaat:"
+
+#: ../../mod/profiles.php:385
+msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
+msgstr "<span class=\"heart\">&hearts;</span> Beziehungs Status:"
+
+#: ../../mod/profiles.php:386
+msgid "Who: (if applicable)"
+msgstr "Wer: (falls anwendbar)"
+
+#: ../../mod/profiles.php:387
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+msgstr "Beispiel: cathy123, Cathy Williams, cathy@example.com"
+
+#: ../../mod/profiles.php:388 ../../include/profile_advanced.php:90
+msgid "Sexual Preference:"
+msgstr "Sexuelle Vorlieben:"
+
+#: ../../mod/profiles.php:389
+msgid "Homepage URL:"
+msgstr "Adresse der Homepage:"
+
+#: ../../mod/profiles.php:390 ../../include/profile_advanced.php:115
+msgid "Political Views:"
+msgstr "Politische Ansichten:"
+
+#: ../../mod/profiles.php:391
+msgid "Religious Views:"
+msgstr "Religiöse Ansichten:"
+
+#: ../../mod/profiles.php:392
+msgid "Public Keywords:"
+msgstr "Öffentliche Schlüsselwörter:"
+
+#: ../../mod/profiles.php:393
+msgid "Private Keywords:"
+msgstr "Private Schlüsselwörter:"
+
+#: ../../mod/profiles.php:394
+msgid "Example: fishing photography software"
+msgstr "Beispiel: Fischen Photographie Software"
+
+#: ../../mod/profiles.php:395
+msgid "(Used for suggesting potential friends, can be seen by others)"
+msgstr ""
+"(Wird verwendet um potentielle Freunde zu finden, könnte von Fremden "
+"eingesehen werden)"
+
+#: ../../mod/profiles.php:396
+msgid "(Used for searching profiles, never shown to others)"
+msgstr ""
+"(Wird für die Suche nach Profilen verwendet und niemals veröffentlicht)"
+
+#: ../../mod/profiles.php:397
+msgid "Tell us about yourself..."
+msgstr "Erzähle und ein bisschen von dir..."
+
+#: ../../mod/profiles.php:398
+msgid "Hobbies/Interests"
+msgstr "Hobbies/Interessen"
+
+#: ../../mod/profiles.php:399
+msgid "Contact information and Social Networks"
+msgstr "Kontaktinformationen und Soziale Netzwerke"
+
+#: ../../mod/profiles.php:400
+msgid "Musical interests"
+msgstr "Musikalische Interessen"
+
+#: ../../mod/profiles.php:401
+msgid "Books, literature"
+msgstr "Literatur/Bücher"
+
+#: ../../mod/profiles.php:402
+msgid "Television"
+msgstr "Fernsehen"
+
+#: ../../mod/profiles.php:403
+msgid "Film/dance/culture/entertainment"
+msgstr "Filme/Tänze/Kultur/Unterhaltung"
+
+#: ../../mod/profiles.php:404
+msgid "Love/romance"
+msgstr "Liebesleben"
+
+#: ../../mod/profiles.php:405
+msgid "Work/employment"
+msgstr "Arbeit/Beschäftigung"
+
+#: ../../mod/profiles.php:406
+msgid "School/education"
+msgstr "Schule/Ausbildung"
+
+#: ../../mod/profiles.php:411
+msgid ""
+"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
+"be visible to anybody using the internet."
+msgstr ""
+"Dies ist dein <strong>öffentliches</strong> Profil.<br />Es "
+"<strong>könnte</strong> für jeden Nutzer des Internets sichtbar sein."
+
+#: ../../mod/profiles.php:421 ../../mod/directory.php:97
+msgid "Age: "
+msgstr "Alter: "
+
+#: ../../mod/profiles.php:456 ../../include/nav.php:109
+msgid "Profiles"
+msgstr "Profile"
+
+#: ../../mod/profiles.php:457
+msgid "Change profile photo"
+msgstr "Profilbild ändern"
+
+#: ../../mod/profiles.php:458
+msgid "Create New Profile"
+msgstr "Neues Profil anlegen"
+
+#: ../../mod/profiles.php:468
+msgid "Profile Image"
+msgstr "Profilbild"
+
+#: ../../mod/profiles.php:470
+msgid "Visible to everybody"
+msgstr "Für jeden sichtbar"
+
+#: ../../mod/profiles.php:471
+msgid "Edit visibility"
+msgstr "Sichtbarkeit bearbeiten"
+
+#: ../../mod/settings.php:38
+msgid "Passwords do not match. Password unchanged."
+msgstr ""
+"Die Passwörter stimmen nicht überein. Das Passwort bleibt unverändert."
+
+#: ../../mod/settings.php:43
+msgid "Empty passwords are not allowed. Password unchanged."
+msgstr "Leere Passwörter sind nicht erlaubt. Passwort bleibt unverändert."
+
+#: ../../mod/settings.php:54
+msgid "Password changed."
+msgstr "Passwort ändern."
+
+#: ../../mod/settings.php:56
+msgid "Password update failed. Please try again."
+msgstr ""
+"Aktualisierung des Passworts gescheitert, bitte versuche es noch einmal."
+
+#: ../../mod/settings.php:138
+msgid " Please use a shorter name."
+msgstr " Bitte verwende einen kürzeren Namen."
+
+#: ../../mod/settings.php:140
+msgid " Name too short."
+msgstr " Name ist zu kurz."
+
+#: ../../mod/settings.php:146
+msgid " Not valid email."
+msgstr " Keine gültige EMail."
+
+#: ../../mod/settings.php:148
+msgid " Cannot change to that email."
+msgstr " Cannot change to that email."
+
+#: ../../mod/settings.php:206
+msgid "Settings updated."
+msgstr "Einstellungen aktualisiert."
+
+#: ../../mod/settings.php:256 ../../mod/settings.php:418
+msgid "Plugin Settings"
+msgstr "Plugin Einstellungen"
+
+#: ../../mod/settings.php:257 ../../mod/settings.php:417
+msgid "Account Settings"
+msgstr "Account Einstellungen"
+
+#: ../../mod/settings.php:263
+msgid "No Plugin settings configured"
+msgstr "Keine Erweiterungen konfiguriert"
+
+#: ../../mod/settings.php:323
+msgid "Normal Account"
+msgstr "Normaler Account"
+
+#: ../../mod/settings.php:324
+msgid "This account is a normal personal profile"
+msgstr "Dieser Account ist ein normales persönliches Profil"
+
+#: ../../mod/settings.php:325
+msgid "Soapbox Account"
+msgstr "Sandkasten Accunt"
+
+#: ../../mod/settings.php:326
+msgid "Automatically approve all connection/friend requests as read-only fans"
+msgstr "Freundschaftsanfragen werden automatisch als Nurlese-Fans akzeptiert"
+
+#: ../../mod/settings.php:327
+msgid "Community/Celebrity Account"
+msgstr "Gemeinschafts/Berühmtheiten Account"
+
+#: ../../mod/settings.php:328
+msgid ""
+"Automatically approve all connection/friend requests as read-write fans"
+msgstr ""
+"Freundschaftsanfragen werden automatisch als Lese-und-Schreib-Fans "
+"akzeptiert"
+
+#: ../../mod/settings.php:329
+msgid "Automatic Friend Account"
+msgstr "Automatischer Freundes Account"
+
+#: ../../mod/settings.php:330
+msgid "Automatically approve all connection/friend requests as friends"
+msgstr "Freundschaftsanfragen werden automatisch als Freund akzeptiert"
+
+#: ../../mod/settings.php:339
+msgid "OpenID: "
+msgstr "OpenID: "
+
+#: ../../mod/settings.php:339
+msgid "&nbsp;(Optional) Allow this OpenID to login to this account."
+msgstr ""
+"&nbsp;(Optional) Erlaube dieser OpenID sich für diesen Account anzumelden."
+
+#: ../../mod/settings.php:349
+msgid "Publish your default profile in site directory?"
+msgstr "Dein Standard-Profil im Verzeichnis dieser Seite veröffentliche?"
+
+#: ../../mod/settings.php:361
+msgid "Publish your default profile in global social directory?"
+msgstr "Dein Standard-Profil im weltweiten Verzeichnis veröffentlichen?"
+
+#: ../../mod/settings.php:377
+msgid "Profile is <strong>not published</strong>."
+msgstr "Profil ist <strong>nicht veröffentlicht</strong>."
+
+#: ../../mod/settings.php:403
+msgid "Your Identity Address is"
+msgstr "Die Adresse deines Profils lautet:"
+
+#: ../../mod/settings.php:413
+msgid "Export Personal Data"
+msgstr "Perönliche Daten exportieren"
+
+#: ../../mod/settings.php:419
+msgid "Basic Settings"
+msgstr "Grundeinstellungen"
+
+#: ../../mod/settings.php:420 ../../include/profile_advanced.php:10
+msgid "Full Name:"
+msgstr "Kompletter Name:"
+
+#: ../../mod/settings.php:421
+msgid "Email Address:"
+msgstr "Email Adresse:"
+
+#: ../../mod/settings.php:422
+msgid "Your Timezone:"
+msgstr "Deine Zeitzone:"
+
+#: ../../mod/settings.php:423
+msgid "Default Post Location:"
+msgstr "Standardstandort:"
+
+#: ../../mod/settings.php:424
+msgid "Use Browser Location:"
+msgstr "Verwende den Standort des Browsers:"
+
+#: ../../mod/settings.php:425
+msgid "Display Theme:"
+msgstr "Theme:"
+
+#: ../../mod/settings.php:427
+msgid "Security and Privacy Settings"
+msgstr "Sicherheits und Privatsphären Einstellungen"
+
+#: ../../mod/settings.php:428
+msgid "Maximum Friend Requests/Day:"
+msgstr "Maximale Anzahl von Freundschaftsanfragen/Tag:"
+
+#: ../../mod/settings.php:429
+msgid "(to prevent spam abuse)"
+msgstr "(um SPAM zu vermeiden)"
+
+#: ../../mod/settings.php:430
+msgid "Allow friends to post to your profile page:"
+msgstr "Erlaube es Freunden Beiträge auf deiner Pinnwand zu posten:"
+
+#: ../../mod/settings.php:431
+msgid "Automatically expire (delete) posts older than"
+msgstr "Automatisch Beiträge verfallen lassen (löschen) die älter sind als"
+
+#: ../../mod/settings.php:432 ../../include/datetime.php:154
+msgid "days"
+msgstr "Tage"
+
+#: ../../mod/settings.php:433
+msgid "Notification Settings"
+msgstr "Benachrichtigungs Einstellungen"
+
+#: ../../mod/settings.php:434
+msgid "Send a notification email when:"
+msgstr "Benachrichtigungs-Email senden wenn:"
+
+#: ../../mod/settings.php:435
+msgid "You receive an introduction"
+msgstr "Du eine Vorstellung erhälst"
+
+#: ../../mod/settings.php:436
+msgid "Your introductions are confirmed"
+msgstr "Eine deiner Vorstellungen angenommen wurde"
+
+#: ../../mod/settings.php:437
+msgid "Someone writes on your profile wall"
+msgstr "Jemand etwas auf deiner Pinnwand postet"
+
+#: ../../mod/settings.php:438
+msgid "Someone writes a followup comment"
+msgstr "Jemand einen Kommentar verfasst"
+
+#: ../../mod/settings.php:439
+msgid "You receive a private message"
+msgstr "Du eine private Nachricht erhälst"
+
+#: ../../mod/settings.php:440
+msgid "Password Settings"
+msgstr "Passwort Einstellungen"
+
+#: ../../mod/settings.php:441
+msgid "Leave password fields blank unless changing"
+msgstr "Lass die Passwort-Felder leer außer du willst das Passwort ändern"
+
+#: ../../mod/settings.php:442
+msgid "New Password:"
+msgstr "Neues Passwort:"
+
+#: ../../mod/settings.php:443
+msgid "Confirm:"
+msgstr "Bestätigen:"
+
+#: ../../mod/settings.php:444
+msgid "Advanced Page Settings"
+msgstr "Erweiterte Seiten Einstellungen"
+
+#: ../../mod/settings.php:459
+msgid "Default Post Permissions"
+msgstr "Grundeinstellung für Veröffentlichungen"
+
+#: ../../mod/settings.php:460
+msgid "(click to open/close)"
+msgstr "(klicke zum öffnen/schließen)"
+
+#: ../../mod/settings.php:473
+msgid "Email/Mailbox Setup"
+msgstr "Email/Postfach Einstellungen"
+
+#: ../../mod/settings.php:474
+msgid ""
+"If you wish to communicate with email contacts using this service "
+"(optional), please specify how to connect to your mailbox."
+msgstr ""
+"Wenn du mit Email Kontakten über diesen Service kommunizieren möchtest "
+"(optional) gib bitte die Einstellungen für dein Postfach an."
+
+#: ../../mod/settings.php:475
+msgid "IMAP server name:"
+msgstr "IMAP Server Name:"
+
+#: ../../mod/settings.php:477
+msgid "IMAP port:"
+msgstr "IMAP Port:"
+
+#: ../../mod/settings.php:479
+msgid "Security (TLS or SSL):"
+msgstr "Sicherheit (TLS oder SSL)"
+
+#: ../../mod/settings.php:481
+msgid "Email login name:"
+msgstr "Email Login Name:"
+
+#: ../../mod/settings.php:483
+msgid "Email password:"
+msgstr "Email Passwort:"
+
+#: ../../mod/settings.php:484
+msgid "Reply-to address (Optional):"
+msgstr "Reply-to Adresse (Optional)"
+
+#: ../../mod/settings.php:486
+msgid "Send public posts to all email contacts:"
+msgstr "Sende öffentliche Einträge an alle Email Kontakte:"
+
+#: ../../mod/settings.php:488
+msgid "Email access is disabled on this site."
+msgstr "Zugriff auf Emails für diese Seite deaktiviert."
+
+#: ../../mod/search.php:13 ../../mod/photos.php:676 ../../mod/display.php:7
+#: ../../mod/dfrn_request.php:591 ../../mod/directory.php:18
+#: ../../mod/viewcontacts.php:16
+msgid "Public access denied."
+msgstr "Öffentlicher Zugriff verweigert."
+
+#: ../../mod/search.php:69
+msgid "No results."
+msgstr "Keine Ergebnisse."
+
+#: ../../mod/photos.php:34
+msgid "Photo Albums"
+msgstr "Fotoalben"
+
+#: ../../mod/photos.php:38 ../../mod/photos.php:110 ../../mod/photos.php:806
+#: ../../mod/photos.php:875 ../../mod/photos.php:890 ../../mod/photos.php:1278
+#: ../../mod/photos.php:1289 ../../include/Photo.php:233
+#: ../../include/Photo.php:240 ../../include/Photo.php:247
+#: ../../include/items.php:1027 ../../include/items.php:1030
+#: ../../include/items.php:1033
+msgid "Contact Photos"
+msgstr "Kontaktbilder"
+
+#: ../../mod/photos.php:99
+msgid "Contact information unavailable"
+msgstr "Kontakt Informationen nicht verfügbar"
+
+#: ../../mod/photos.php:120
+msgid "Album not found."
+msgstr "Album nicht gefunden."
+
+#: ../../mod/photos.php:138 ../../mod/photos.php:884
+msgid "Delete Album"
+msgstr "Album löschen"
+
+#: ../../mod/photos.php:201 ../../mod/photos.php:1092
+msgid "Delete Photo"
+msgstr "Foto löschen"
+
+#: ../../mod/photos.php:473
+msgid "was tagged in a"
+msgstr "was tagged in a"
+
+#: ../../mod/photos.php:473 ../../mod/like.php:110
+#: ../../include/conversation.php:20
+msgid "photo"
+msgstr "Foto"
+
+#: ../../mod/photos.php:473
+msgid "by"
+msgstr "von"
+
+#: ../../mod/photos.php:563 ../../addon/js_upload/js_upload.php:306
+msgid "Image exceeds size limit of "
+msgstr "Die Bildgröße übersteigt das Limit von "
+
+#: ../../mod/photos.php:686
+msgid "No photos selected"
+msgstr "Keine Bilder ausgewählt"
+
+#: ../../mod/photos.php:833
+msgid "Upload Photos"
+msgstr "Bilder hochladen"
+
+#: ../../mod/photos.php:836 ../../mod/photos.php:879
+msgid "New album name: "
+msgstr "Name des neuen Albums: "
+
+#: ../../mod/photos.php:837
+msgid "or existing album name: "
+msgstr "oder existierender Albumname: "
+
+#: ../../mod/photos.php:839 ../../mod/photos.php:1087
+msgid "Permissions"
+msgstr "Berechtigungen"
+
+#: ../../mod/photos.php:894
+msgid "Edit Album"
+msgstr "Album bearbeiten"
+
+#: ../../mod/photos.php:904 ../../mod/photos.php:1307
+msgid "View Photo"
+msgstr "Fotos betrachten"
+
+#: ../../mod/photos.php:933
+msgid "Photo not available"
+msgstr "Foto nicht verfügbar"
+
+#: ../../mod/photos.php:982
+msgid "Edit photo"
+msgstr "Foto bearbeiten"
+
+#: ../../mod/photos.php:983
+msgid "Use as profile photo"
+msgstr "Als Profilbild verwenden"
+
+#: ../../mod/photos.php:989 ../../include/conversation.php:309
+msgid "Private Message"
+msgstr "Private Nachricht"
+
+#: ../../mod/photos.php:996
+msgid "<< Prev"
+msgstr "<< Vorherige"
+
+#: ../../mod/photos.php:1000
+msgid "View Full Size"
+msgstr "Betrachte Originalgröße"
+
+#: ../../mod/photos.php:1005
+msgid "Next >>"
+msgstr "Nächste >>"
+
+#: ../../mod/photos.php:1067
+msgid "Tags: "
+msgstr "Tags: "
+
+#: ../../mod/photos.php:1070
+msgid "[Remove any tag]"
+msgstr "[Tag entfernen]"
+
+#: ../../mod/photos.php:1080
+msgid "New album name"
+msgstr "Name des neuen Albums"
+
+#: ../../mod/photos.php:1083
+msgid "Caption"
+msgstr "Bildunterschrift"
+
+#: ../../mod/photos.php:1085
+msgid "Add a Tag"
+msgstr "Tag hinzufügen"
+
+#: ../../mod/photos.php:1089
+msgid ""
+"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+msgstr ""
+"Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+
+#: ../../mod/photos.php:1109 ../../include/conversation.php:357
+msgid "I like this (toggle)"
+msgstr "Ich mag das (toggle)"
+
+#: ../../mod/photos.php:1110 ../../include/conversation.php:358
+msgid "I don't like this (toggle)"
+msgstr "Ich mag das nicht (toggle)"
+
+#: ../../mod/photos.php:1111 ../../include/conversation.php:359
+#: ../../include/conversation.php:718
+msgid "Share"
+msgstr "Teilen"
+
+#: ../../mod/photos.php:1112 ../../mod/editpost.php:96
+#: ../../mod/message.php:190 ../../mod/message.php:324
+#: ../../include/conversation.php:360 ../../include/conversation.php:727
+msgid "Please wait"
+msgstr "Bitte warten"
+
+#: ../../mod/photos.php:1128 ../../mod/photos.php:1167
+#: ../../mod/photos.php:1198 ../../include/conversation.php:373
+msgid "This is you"
+msgstr "Das bist du"
+
+#: ../../mod/photos.php:1228 ../../mod/group.php:146
+#: ../../include/conversation.php:174 ../../include/conversation.php:386
+msgid "Delete"
+msgstr "Löschen"
+
+#: ../../mod/photos.php:1294
+msgid "Recent Photos"
+msgstr "Neuste Fotos"
+
+#: ../../mod/photos.php:1298
+msgid "Upload New Photos"
+msgstr "Weitere Fotos hochladen"
+
+#: ../../mod/photos.php:1311
+msgid "View Album"
+msgstr "Album betrachten"
+
+#: ../../mod/display.php:25 ../../mod/display.php:142 ../../mod/item.php:609
+msgid "Item not found."
+msgstr "Beitrag nicht gefunden."
+
+#: ../../mod/display.php:135
+msgid "Item has been removed."
+msgstr "Eintrag wurde entfernt."
+
+#: ../../mod/editpost.php:17 ../../mod/editpost.php:27
+msgid "Item not found"
+msgstr "Beitrag nicht gefunden"
+
+#: ../../mod/editpost.php:32
+msgid "Edit post"
+msgstr "Beitrag bearbeiten"
+
+#: ../../mod/editpost.php:38 ../../include/conversation.php:673
+msgid "Visible to <strong>everybody</strong>"
+msgstr "Für <strong>Jedermann</strong> sichtbar"
+
+#: ../../mod/editpost.php:75 ../../include/conversation.php:707
+msgid "Post to Email"
+msgstr "An Email senden"
+
+#: ../../mod/editpost.php:88 ../../include/conversation.php:384
+#: ../../include/group.php:169
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: ../../mod/editpost.php:89 ../../mod/message.php:188
+#: ../../mod/message.php:322 ../../include/conversation.php:719
+msgid "Upload photo"
+msgstr "Foto hochladen"
+
+#: ../../mod/editpost.php:90 ../../mod/message.php:189
+#: ../../mod/message.php:323 ../../include/conversation.php:720
+msgid "Insert web link"
+msgstr "Weblink einfügen"
+
+#: ../../mod/editpost.php:91 ../../include/conversation.php:721
+msgid "Insert YouTube video"
+msgstr "YouTube Video einfügen"
+
+#: ../../mod/editpost.php:92 ../../include/conversation.php:722
+msgid "Insert Vorbis [.ogg] video"
+msgstr "Vorbis [.ogg] Video einfügen"
+
+#: ../../mod/editpost.php:93 ../../include/conversation.php:723
+msgid "Insert Vorbis [.ogg] audio"
+msgstr "Vorbis [.ogg] Audio einfügen"
+
+#: ../../mod/editpost.php:94 ../../include/conversation.php:724
+msgid "Set your location"
+msgstr "Deinen Standort festlegen"
+
+#: ../../mod/editpost.php:95 ../../include/conversation.php:725
+msgid "Clear browser location"
+msgstr "Browser Standort leeren"
+
+#: ../../mod/editpost.php:97 ../../include/conversation.php:728
+msgid "Permission settings"
+msgstr "Berechtigungseinstellungen"
+
+#: ../../mod/editpost.php:103 ../../include/conversation.php:734
+msgid "CC: email addresses"
+msgstr "CC: EMail Addresse"
+
+#: ../../mod/editpost.php:105 ../../include/conversation.php:736
+msgid "Example: bob@example.com, mary@example.com"
+msgstr "Z.B.: bob@example.com, mary@example.com"
+
+#: ../../mod/invite.php:28
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s: Keine gültige Email Adresse."
+
+#: ../../mod/invite.php:32
+#, php-format
+msgid "Please join my network on %s"
+msgstr "Bitte trete meinem Netzwerk auf %s bei"
+
+#: ../../mod/invite.php:42
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s: Zustellung der Nachricht fehlgeschlagen."
+
+#: ../../mod/invite.php:46
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d Nachricht gesendet."
+msgstr[1] "%d Nachrichten gesendet."
+
+#: ../../mod/invite.php:61
+msgid "Send invitations"
+msgstr "Einladungen senden"
+
+#: ../../mod/invite.php:62
+msgid "Enter email addresses, one per line:"
+msgstr "Email Adressen eingeben, eine pro Zeile:"
+
+#: ../../mod/invite.php:63 ../../mod/message.php:185 ../../mod/message.php:319
+msgid "Your message:"
+msgstr "Deine Nachricht:"
+
+#: ../../mod/invite.php:64
+#, php-format
+msgid "Please join my social network on %s"
+msgstr "Bitte trete meinem Sozialen Netzwerk auf %s bei"
+
+#: ../../mod/invite.php:65
+msgid "To accept this invitation, please visit:"
+msgstr "Um diese Einladung anzunehmen beuche bitte:"
+
+#: ../../mod/invite.php:66
+msgid ""
+"Once you have registered, please connect with me via my profile page at:"
+msgstr ""
+"Sobald du registriert bist kontaktiere mich bitte auf meiner Profilseite:"
+
+#: ../../mod/contacts.php:12
+msgid "Invite Friends"
+msgstr "Freunde einladen"
+
+#: ../../mod/contacts.php:15
+msgid "Find People With Shared Interests"
+msgstr "Finde Personen die deine Interessen teilen"
+
+#: ../../mod/contacts.php:19
+msgid "Connect/Follow"
+msgstr "Verbinden/Folgen"
+
+#: ../../mod/contacts.php:20
+msgid "Example: bob@example.com, http://example.com/barbara"
+msgstr "Beispiel: bob@example.com, http://example.com/barbara"
+
+#: ../../mod/contacts.php:21
+msgid "Follow"
+msgstr "Folge"
+
+#: ../../mod/contacts.php:43 ../../mod/contacts.php:124
+msgid "Could not access contact record."
+msgstr "Konnte nicht auf die Kontaktdaten zugreifen."
+
+#: ../../mod/contacts.php:57
+msgid "Could not locate selected profile."
+msgstr "Konnte das ausgewählte Profiel nicht finden."
+
+#: ../../mod/contacts.php:88
+msgid "Contact updated."
+msgstr "Kontakt aktualisiert."
+
+#: ../../mod/contacts.php:90 ../../mod/dfrn_request.php:406
+msgid "Failed to update contact record."
+msgstr "Aktualisierung der Kontaktdaten fehlgeschlagen."
+
+#: ../../mod/contacts.php:146
+msgid "Contact has been blocked"
+msgstr "Kontakt wurde blockiert"
+
+#: ../../mod/contacts.php:146
+msgid "Contact has been unblocked"
+msgstr "Kontakt wurde wieder frei gegeben"
+
+#: ../../mod/contacts.php:160
+msgid "Contact has been ignored"
+msgstr "Der Kontakt wurde ignoriert"
+
+#: ../../mod/contacts.php:160
+msgid "Contact has been unignored"
+msgstr "Kontakt wurde ignoriert"
+
+#: ../../mod/contacts.php:181
+msgid "stopped following"
+msgstr "wird nicht mehr gefolgt"
+
+#: ../../mod/contacts.php:200
+msgid "Contact has been removed."
+msgstr "Kontakt wurde entfernt."
+
+#: ../../mod/contacts.php:214 ../../mod/crepair.php:68
+#: ../../mod/dfrn_confirm.php:114
+msgid "Contact not found."
+msgstr "Kontakt nicht gefunden."
+
+#: ../../mod/contacts.php:228 ../../mod/contacts.php:363
+msgid "Mutual Friendship"
+msgstr "Beidseitige Freundschaft"
+
+#: ../../mod/contacts.php:232 ../../mod/contacts.php:367
+msgid "is a fan of yours"
+msgstr "ist ein Fan von dir"
+
+#: ../../mod/contacts.php:237 ../../mod/contacts.php:371
+msgid "you are a fan of"
+msgstr "du bist Fan von"
+
+#: ../../mod/contacts.php:252
+msgid "Privacy Unavailable"
+msgstr "Privatsphäre nicht verfügbar"
+
+#: ../../mod/contacts.php:253
+msgid "Private communications are not available for this contact."
+msgstr "Private Kommunikation ist für diesen Kontakt nicht verfügbar."
+
+#: ../../mod/contacts.php:256
+msgid "Never"
+msgstr "Niemals"
+
+#: ../../mod/contacts.php:260
+msgid "(Update was successful)"
+msgstr "(Aktualisierung war erfolgreich)"
+
+#: ../../mod/contacts.php:260
+msgid "(Update was not successful)"
+msgstr "(Aktualisierung war nicht erfolgreich)"
+
+#: ../../mod/contacts.php:263
+msgid "Contact Editor"
+msgstr "Kontakt Editor"
+
+#: ../../mod/contacts.php:265
+msgid "Profile Visibility"
+msgstr "Profil Anzeige"
+
+#: ../../mod/contacts.php:266
+#, php-format
+msgid ""
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
+msgstr ""
+"Bitte wähle eines deiner Profile das angezeitgt werden soll, wenn %s dein "
+"Profil aufruft."
+
+#: ../../mod/contacts.php:267
+msgid "Contact Information / Notes"
+msgstr "Kontakt Informationen / Notizen"
+
+#: ../../mod/contacts.php:268
+msgid "Online Reputation"
+msgstr "Online Ruf"
+
+#: ../../mod/contacts.php:269
+msgid ""
+"Occasionally your friends may wish to inquire about this person's online "
+"legitimacy."
+msgstr ""
+"Es könnte sein, dass deine Freunde etwas über den Ruf einer Peron erfahren "
+"möchten."
+
+#: ../../mod/contacts.php:270
+msgid ""
+"You may help them choose whether or not to interact with this person by "
+"providing a <em>reputation</em> to guide them."
+msgstr ""
+"Du kannst ihnen bei der Entscheidung helfen ob sie mit einer Person "
+"interagieren sollten oder nicht indem du Informationen über den <em>Ruf</em>"
+" der Person anbietest."
+
+#: ../../mod/contacts.php:271
+msgid ""
+"Please take a moment to elaborate on this selection if you feel it could be "
+"helpful to others."
+msgstr ""
+"Bitte nimm dir einen Moment und fülle diesen Punkt aus wenn du denkst das es"
+" anderen helfen könnte."
+
+#: ../../mod/contacts.php:272
+msgid "Visit $name's profile"
+msgstr "Besuche das Profil von $name"
+
+#: ../../mod/contacts.php:273
+msgid "Block/Unblock contact"
+msgstr "Kontakt blockieren/freischalten"
+
+#: ../../mod/contacts.php:274
+msgid "Ignore contact"
+msgstr "Ignoriere den Kontakt"
+
+#: ../../mod/contacts.php:275
+msgid "Repair contact URL settings"
+msgstr "URL Einstellungen des Kontakts reparieren"
+
+#: ../../mod/contacts.php:276
+msgid "Repair contact URL settings (WARNING: Advanced)"
+msgstr "URL Einstellungen des Kontakts reparieren (Achtung: Fortgeschritten)"
+
+#: ../../mod/contacts.php:277
+msgid "View conversations"
+msgstr "Unterhaltungen anzeigen"
+
+#: ../../mod/contacts.php:278
+msgid "Delete contact"
+msgstr "Lösche den Kontakt"
+
+#: ../../mod/contacts.php:280
+msgid "Last updated: "
+msgstr "Letzte Aktualisierung: "
+
+#: ../../mod/contacts.php:281
+msgid "Update public posts: "
+msgstr "Aktualisierung öffentlicher Nachrichten: "
+
+#: ../../mod/contacts.php:283
+msgid "Update now"
+msgstr "Jetzt aktualisieren"
+
+#: ../../mod/contacts.php:286
+msgid "Unblock this contact"
+msgstr "Blockade dieses Kontakts aufheben"
+
+#: ../../mod/contacts.php:286
+msgid "Block this contact"
+msgstr "Diesen Kontakt blockieren"
+
+#: ../../mod/contacts.php:287
+msgid "Unignore this contact"
+msgstr "Diesen Kontakt nicht mehr ignorieren"
+
+#: ../../mod/contacts.php:287
+msgid "Ignore this contact"
+msgstr "Diesen Kontakt ignorieren"
+
+#: ../../mod/contacts.php:290
+msgid "Currently blocked"
+msgstr "Derzeit geblockt"
+
+#: ../../mod/contacts.php:291
+msgid "Currently ignored"
+msgstr "Derzeit ignoriert"
+
+#: ../../mod/contacts.php:322 ../../include/acl_selectors.php:141
+#: ../../include/acl_selectors.php:156 ../../include/nav.php:110
+msgid "Contacts"
+msgstr "Kontakte"
+
+#: ../../mod/contacts.php:324
+msgid "Show Blocked Connections"
+msgstr "Zeige geblockte Verbindungen"
+
+#: ../../mod/contacts.php:324
+msgid "Hide Blocked Connections"
+msgstr "Verstecke geblockte Verbindungen"
+
+#: ../../mod/contacts.php:326 ../../mod/directory.php:44
+msgid "Finding: "
+msgstr "Funde: "
+
+#: ../../mod/contacts.php:327 ../../mod/directory.php:46
+msgid "Find"
+msgstr "Finde"
+
+#: ../../mod/contacts.php:387 ../../mod/viewcontacts.php:52
+msgid "Visit $username's profile"
+msgstr "Besuche das Profil von $username"
+
+#: ../../mod/contacts.php:388 ../../include/conversation.php:587
+msgid "Edit contact"
+msgstr "Kontakt bearbeiten"
+
+#: ../../mod/lockview.php:39
+msgid "Remote privacy information not available."
+msgstr "Entfernte Privatsphäreneinstellungen nicht verfügbar."
+
+#: ../../mod/lockview.php:43
+msgid "Visible to:"
+msgstr "Sichtbar für:"
+
+#: ../../mod/register.php:47
+msgid "Invalid OpenID url"
+msgstr "Ungültige OpenID URL"
+
+#: ../../mod/register.php:62
+msgid "Please enter the required information."
+msgstr "Bitte trage die erforderlichen Informationen ein."
+
+#: ../../mod/register.php:74
+msgid "Please use a shorter name."
+msgstr "Bitte verwende einen kürzeren Namen."
+
+#: ../../mod/register.php:76
+msgid "Name too short."
+msgstr "Der Name ist zu kurz."
+
+#: ../../mod/register.php:91
+msgid "That doesn't appear to be your full (First Last) name."
+msgstr "Das scheint nicht dein kompletter Name (Vor- und Nachname) zu sein."
+
+#: ../../mod/register.php:95
+msgid "Your email domain is not among those allowed on this site."
+msgstr "Die Domain deiner EMail Adresse ist nicht erlaubt auf dieser Seite."
+
+#: ../../mod/register.php:98
+msgid "Not a valid email address."
+msgstr "Keine gültige EMail Adresse."
+
+#: ../../mod/register.php:104
+msgid "Cannot use that email."
+msgstr "Konnte diese EMail Adresse nicht verwenden."
+
+#: ../../mod/register.php:109
+msgid ""
+"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
+"must also begin with a letter."
+msgstr ""
+"Dein Spitzname darf nur aus Buchstaben und Zahlen (\"a-z\",\"0-9\", \"_\" "
+"und \"-\") bestehen, außerdem muss er mit einem Buchstaben beginnen."
+
+#: ../../mod/register.php:115 ../../mod/register.php:215
+msgid "Nickname is already registered. Please choose another."
+msgstr "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen."
+
+#: ../../mod/register.php:134
+msgid "SERIOUS ERROR: Generation of security keys failed."
+msgstr "SERIOUS ERROR: Generation of security keys failed."
+
+#: ../../mod/register.php:201
+msgid "An error occurred during registration. Please try again."
+msgstr ""
+"Wärend der Anmeldung ist ein Fehler aufgetreten. Bitte versuche es noch "
+"einmal."
+
+#: ../../mod/register.php:237
+msgid "An error occurred creating your default profile. Please try again."
+msgstr ""
+"Bei der Erstellung des Standard-Profils ist ein Fehler aufgetreten. Bitte "
+"versuche es noch einmal."
+
+#: ../../mod/register.php:339
+msgid ""
+"Registration successful. Please check your email for further instructions."
+msgstr ""
+"Registration erfolgreich. Eine EMail mit weiteren Anweisungen wurde an dich "
+"gesendet."
+
+#: ../../mod/register.php:343
+msgid "Failed to send email message. Here is the message that failed."
+msgstr ""
+"Konnte die EMail nicht versenden. Hier ist die Nachricht die nicht gesendet "
+"werden konnte."
+
+#: ../../mod/register.php:348
+msgid "Your registration can not be processed."
+msgstr "Deine Registration konnte nicht verarbeitet werden."
+
+#: ../../mod/register.php:371
+#, php-format
+msgid "Registration request at %s"
+msgstr "Registrationsanfrage auf %s"
+
+#: ../../mod/register.php:377
+msgid "Your registration is pending approval by the site owner."
+msgstr ""
+"Deine Registration muss noch vom Betreiber der Seite freigegeben werden."
+
+#: ../../mod/register.php:425
+msgid ""
+"You may (optionally) fill in this form via OpenID by supplying your OpenID "
+"and clicking 'Register'."
+msgstr ""
+"Du kannst dieses Formular auch (optional) mit deiner OpenID ausfüllen indem "
+"du deine OpenID angibst und 'Registrieren' klickst."
+
+#: ../../mod/register.php:426
+msgid ""
+"If you are not familiar with OpenID, please leave that field blank and fill "
+"in the rest of the items."
+msgstr ""
+"Wenn du nicht mit OpenID vertraut bist, lass dieses Feld bitte leer und "
+"fülle die restlichen Felder aus."
+
+#: ../../mod/register.php:427
+msgid "Your OpenID (optional): "
+msgstr "Deine OpenID (optional): "
+
+#: ../../mod/register.php:441
+msgid "Include your profile in member directory?"
+msgstr "Soll dein Profil im Nutzerverzeichnis angezeigt werden?"
+
+#: ../../mod/register.php:457
+msgid "Registration"
+msgstr "Registration"
+
+#: ../../mod/register.php:465
+msgid "Your Full Name (e.g. Joe Smith): "
+msgstr "Vollständiger Name (z.B. Joe Smith): "
+
+#: ../../mod/register.php:466
+msgid "Your Email Address: "
+msgstr "Deine EMail Adresse: "
+
+#: ../../mod/register.php:467
+msgid ""
+"Choose a profile nickname. This must begin with a text character. Your "
+"profile address on this site will then be "
+"'<strong>nickname@$sitename</strong>'."
+msgstr ""
+"Wähle einen Spitznamen für dein Profil. Dieser muss mit einem Buchstaben "
+"beginnen. Die Adresse deines Profils auf dieser Seite wird "
+"'<strong>spitzname@$sitename</strong>' sein."
+
+#: ../../mod/register.php:468
+msgid "Choose a nickname: "
+msgstr "Spitznamen wählen: "
+
+#: ../../mod/oexchange.php:27
+msgid "Post successful."
+msgstr "Erfolgreich gesendet."
+
+#: ../../mod/help.php:27
+msgid "Help:"
+msgstr "Hilfe:"
+
+#: ../../mod/help.php:31 ../../include/nav.php:64
+msgid "Help"
+msgstr "Hilfe"
+
+#: ../../mod/install.php:33
+msgid "Could not create/connect to database."
+msgstr ""
+"Konnte die Verbindung zur Datenbank nicht aufbauen bzw. die Datenbank "
+"anlegen."
+
+#: ../../mod/install.php:38
+msgid "Connected to database."
+msgstr "Mit der Datenbank verbunden."
+
+#: ../../mod/install.php:72
+msgid "Proceed with Installation"
+msgstr "Mit der Installation fortfahren"
+
+#: ../../mod/install.php:74
+msgid "Your Friendika site database has been installed."
+msgstr "Die Datenbank deiner Friendika Seite wurde erfolgreich installiert."
+
+#: ../../mod/install.php:75
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the "
+"poller."
+msgstr ""
+"WICHTIG: Du musst [manuell] einen cron Job (o.ä.) für den Poller einrichten."
+
+#: ../../mod/install.php:76 ../../mod/install.php:86 ../../mod/install.php:199
+msgid "Please see the file \"INSTALL.txt\"."
+msgstr "Lies bitte die \"INSTALL.txt\"."
+
+#: ../../mod/install.php:78
+msgid "Proceed to registration"
+msgstr "Mit der Registration fortfahren"
+
+#: ../../mod/install.php:84
+msgid "Database import failed."
+msgstr "Import der Datenbank schlug fehl."
+
+#: ../../mod/install.php:85
+msgid ""
+"You may need to import the file \"database.sql\" manually using phpmyadmin "
+"or mysql."
+msgstr ""
+"Möglicherweise musst du die Datei \"database.sql\" manuell mit phpmyadmin "
+"oder mysql importieren."
+
+#: ../../mod/install.php:98
+msgid "Welcome to Friendika."
+msgstr "Willkommen bei Friendika."
+
+#: ../../mod/install.php:121
+msgid "Friendika Social Network"
+msgstr "Friendika Soziales Netzwerk"
+
+#: ../../mod/install.php:122
+msgid "Installation"
+msgstr "Installation"
+
+#: ../../mod/install.php:123
+msgid ""
+"In order to install Friendika we need to know how to contact your database."
+msgstr ""
+"Um Friendika installieren zu können müssen wir wissen, wie wir die Datenbank"
+" erreichen können."
+
+#: ../../mod/install.php:124
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr ""
+"Bitte kontaktiere den Hosting Provider oder den Administrator der Seite "
+"falls du Fragen zu diesen Einstellungen haben solltest."
+
+#: ../../mod/install.php:125
+msgid ""
+"The database you specify below must already exist. If it does not, please "
+"create it before continuing."
+msgstr ""
+"Die Datenbank die du hier angibst muss bereits existieren. Wenn dies noch "
+"nicht der Fall ist lege sie bitte an bevor du fortfährst."
+
+#: ../../mod/install.php:126
+msgid "Database Server Name"
+msgstr "Datenbank Server"
+
+#: ../../mod/install.php:127
+msgid "Database Login Name"
+msgstr "Datenbank Nutzer"
+
+#: ../../mod/install.php:128
+msgid "Database Login Password"
+msgstr "Datenbank Passwort"
+
+#: ../../mod/install.php:129
+msgid "Database Name"
+msgstr "Datenbank Name"
+
+#: ../../mod/install.php:130
+msgid "Please select a default timezone for your website"
+msgstr "Bitte wähle die standard Zeitzone deiner Webseite"
+
+#: ../../mod/install.php:148
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr ""
+"Konnte keine Kommandozeilenversion von PHP im PATH des Servers finden."
+
+#: ../../mod/install.php:149
+msgid ""
+"This is required. Please adjust the configuration file .htconfig.php "
+"accordingly."
+msgstr ""
+"Diese wird von Friendika benötigt. Bitte passe die Konfigurationsdatei "
+".htconfig.php entsprechend an."
+
+#: ../../mod/install.php:156
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr ""
+"Die Kommandozeilenversion von PHP auf deinem System hat "
+"\"register_argc_argv\" nicht aktiviert."
+
+#: ../../mod/install.php:157
+msgid "This is required for message delivery to work."
+msgstr "Dies wird für die Auslieferung von Nachrichten benötigt."
+
+#: ../../mod/install.php:179
+msgid ""
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr ""
+"Fehler: Die \"openssl_pkey_new\" Funktion auf diesem System ist nicht in der"
+" lage Verschlüsselungsschlüssel zu erzeugen"
+
+#: ../../mod/install.php:180
+msgid ""
+"If running under Windows, please see "
+"\"http://www.php.net/manual/en/openssl.installation.php\"."
+msgstr ""
+"Wenn der Server unter Windows läuft, schau dir bitte "
+"\"http://www.php.net/manual/en/openssl.installation.php\" an."
+
+#: ../../mod/install.php:189
+msgid ""
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr ""
+"Fehler: Das Apache Modul mod-rewrite wird benötigt, es ist allerdings nicht "
+"installiert."
+
+#: ../../mod/install.php:191
+msgid "Error: libCURL PHP module required but not installed."
+msgstr ""
+"Fehler: Das libCURL PHP Modul wird benötigt ist aber nicht installiert."
+
+#: ../../mod/install.php:193
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr ""
+"Fehler: Das GD Graphikmodul für PHP mit JPEG Unterstützung ist nicht "
+"installiert."
+
+#: ../../mod/install.php:195
+msgid "Error: openssl PHP module required but not installed."
+msgstr "Fehler: Das openssl Modul von PHP ist nict installiert."
+
+#: ../../mod/install.php:197
+msgid "Error: mysqli PHP module required but not installed."
+msgstr "Fehler: Das mysqli Modul von PHP ist nicht installiert."
+
+#: ../../mod/install.php:208
+msgid ""
+"The web installer needs to be able to create a file called \".htconfig.php\""
+" in the top folder of your web server and it is unable to do so."
+msgstr ""
+"Der Installationswizzard muss in der Lage sein eine Datei im "
+"Stammverzeichnis deines Webservers anzuliegen ist allerdings derzeit nicht "
+"in der Lage dies zu tun."
+
+#: ../../mod/install.php:209
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr ""
+"In den meisten Fällen ist dies ein Problem mit den Schreibrechten, der "
+"Webserver könnte keine Schreiberlaubnis haben, selbst wenn du sie hast."
+
+#: ../../mod/install.php:210
+msgid ""
+"Please check with your site documentation or support people to see if this "
+"situation can be corrected."
+msgstr ""
+"Bitte überprüfe die Einstellungen und frage im Zweifelsfall dein Support "
+"Team um diese Situations zu beheben."
+
+#: ../../mod/install.php:211
+msgid ""
+"If not, you may be required to perform a manual installation. Please see the"
+" file \"INSTALL.txt\" for instructions."
+msgstr ""
+"Sollte dies nicht möglich sein musst du die Installation manuell "
+"durchführen. Lies dazu bitte in der Datei \"INSTALL.txt\"."
+
+#: ../../mod/install.php:220
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
+msgstr ""
+"Die Konfigurationsdatei \".htconfig.php\" konnte nicht angelegt werden. "
+"Bitte verwende den angefügten Text um die Datei im Stammverzeichnis deiner "
+"Friendika Installation zu erzeugen."
+
+#: ../../mod/install.php:235
+msgid "Errors encountered creating database tables."
+msgstr "Fehler aufgetreten wärend der Erzeugung der Datenbank Tabellen."
+
+#: ../../mod/network.php:18
+msgid "Normal View"
+msgstr "Normale Ansicht"
+
+#: ../../mod/network.php:20
+msgid "New Item View"
+msgstr "Neue Einträge"
+
+#: ../../mod/network.php:64
+#, php-format
+msgid "%d member"
+msgid_plural "%d members"
+msgstr[0] "%d Mitglied"
+msgstr[1] "%d Mitglieder"
+
+#: ../../mod/network.php:65
+#, php-format
+msgid "Warning: This group contains %s from an insecure network."
+msgstr "Warnung: Diese Gruppe beinhaltet %s aus einem unsicheren Netzwerk."
+
+#: ../../mod/network.php:66
+msgid "Private messages to this group are at risk of public disclosure."
+msgstr ""
+"Private Nachrichten an diese Gruppe könnten an die Öffentlichkeit geraten."
+
+#: ../../mod/network.php:126
+msgid "No such group"
+msgstr "Es gibt keine solche Gruppe"
+
+#: ../../mod/network.php:137
+msgid "Group is empty"
+msgstr "Gruppe ist leer"
+
+#: ../../mod/network.php:141
+msgid "Group: "
+msgstr "Gruppe: "
+
+#: ../../mod/network.php:151
+msgid "Contact: "
+msgstr "Kontakt "
+
+#: ../../mod/network.php:153
+msgid "Private messages to this person are at risk of public disclosure."
+msgstr ""
+"Private Nachrichten an diese Person könnten an die Öffentlichkeit gelangen."
+
+#: ../../mod/network.php:158
+msgid "Invalid contact."
+msgstr "Ungültiger Kontakt."
+
+#: ../../mod/profperm.php:25 ../../mod/profperm.php:46
+msgid "Invalid profile identifier."
+msgstr "Ungültiger Profil-Bezeichner"
+
+#: ../../mod/profperm.php:92
+msgid "Profile Visibility Editor"
+msgstr "Editor für die Profil-Sichtbarkeit"
+
+#: ../../mod/profperm.php:96 ../../mod/group.php:156
+msgid "Click on a contact to add or remove."
+msgstr "Klicke einen Kontakt an um ihn hinzuzufügen oder zu entfernen"
+
+#: ../../mod/profperm.php:105
+msgid "Visible To"
+msgstr "Sichtbar für"
+
+#: ../../mod/profperm.php:116
+msgid "All Contacts (with secure profile access)"
+msgstr "Alle Kontakte (mit gesichertem Profil zugriff)"
+
+#: ../../mod/notifications.php:28
+msgid "Invalid request identifier."
+msgstr "Invalid request identifier."
+
+#: ../../mod/notifications.php:31 ../../mod/notifications.php:133
+msgid "Discard"
+msgstr "Verwerfen"
+
+#: ../../mod/notifications.php:41 ../../mod/notifications.php:132
+msgid "Ignore"
+msgstr "Ignorieren"
+
+#: ../../mod/notifications.php:68
+msgid "Pending Friend/Connect Notifications"
+msgstr "Anstehende Freundschafts/Kontakt Benachrichtigungen"
+
+#: ../../mod/notifications.php:72
+msgid "Show Ignored Requests"
+msgstr "Zeige ignorierte Anfragen"
+
+#: ../../mod/notifications.php:72
+msgid "Hide Ignored Requests"
+msgstr "Verberge ignorierte Anfragen"
+
+#: ../../mod/notifications.php:104
+msgid "Claims to be known to you: "
+msgstr "Behauptet dich zu kennen: "
+
+#: ../../mod/notifications.php:104
+msgid "yes"
+msgstr "ja"
+
+#: ../../mod/notifications.php:104
+msgid "no"
+msgstr "nein"
+
+#: ../../mod/notifications.php:110
+msgid "Approve as: "
+msgstr "Genehmigen als: "
+
+#: ../../mod/notifications.php:111
+msgid "Friend"
+msgstr "Freund"
+
+#: ../../mod/notifications.php:112
+msgid "Fan/Admirer"
+msgstr "Fan/Verehrer"
+
+#: ../../mod/notifications.php:119
+msgid "Notification type: "
+msgstr "Benachrichtigungs Typ: "
+
+#: ../../mod/notifications.php:120
+msgid "Friend/Connect Request"
+msgstr "Kontakt-/Freundschaftsanfrage"
+
+#: ../../mod/notifications.php:120
+msgid "New Follower"
+msgstr "Neuer Bewunderer"
+
+#: ../../mod/notifications.php:130 ../../mod/notifications.php:153
+msgid "Approve"
+msgstr "Genehmigen"
+
+#: ../../mod/notifications.php:139
+msgid "No notifications."
+msgstr "Keine Benachrichtigungen."
+
+#: ../../mod/notifications.php:143
+msgid "User registrations waiting for confirm"
+msgstr "Neuanmeldungen die auf deine Bestätigung warten"
+
+#: ../../mod/notifications.php:154
+msgid "Deny"
+msgstr "Verwehren"
+
+#: ../../mod/notifications.php:159
+msgid "No registrations."
+msgstr "Keine Neuanmeldungen."
+
+#: ../../mod/crepair.php:42
+msgid "Contact settings applied."
+msgstr "Einstellungen zum Kontakt angewandt."
+
+#: ../../mod/crepair.php:44
+msgid "Contact update failed."
+msgstr "Konnte den Kontakt nicht aktualisieren."
+
+#: ../../mod/crepair.php:74
+msgid "Repair Contact Settings"
+msgstr "Kontakt Einstellungen reparieren"
+
+#: ../../mod/crepair.php:76
+msgid ""
+"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect"
+" information your communications with this contact will stop working."
+msgstr ""
+"<strong>Warnung: Nur für erfahrene Nutzer</strong> sollten hier fehlerhafte "
+"Informationen eingetragen werden wirst du nicht mehr in der Lage sein mit "
+"diesem Kontakt zu kommunizieren."
+
+#: ../../mod/crepair.php:77
+msgid ""
+"Please use your browser 'Back' button <strong>now</strong> if you are "
+"uncertain what to do on this page."
+msgstr ""
+"Bitte nutze den Zurück-Button deines Browsers <strong>jetzt</strong> wenn du"
+" dir unsicher bist was auf dieser Seite gemacht wird."
+
+#: ../../mod/crepair.php:85
+msgid "Name"
+msgstr "Name"
+
+#: ../../mod/crepair.php:86
+msgid "Account Nickname"
+msgstr "Account Spitzname"
+
+#: ../../mod/crepair.php:87
+msgid "Account URL"
+msgstr "Account URL"
+
+#: ../../mod/crepair.php:88
+msgid "Friend Request URL"
+msgstr "URL für Freundschaftsanfragen"
+
+#: ../../mod/crepair.php:89
+msgid "Friend Confirm URL"
+msgstr "URL für Bestätigungen von Freundschaftsanfragen"
+
+#: ../../mod/crepair.php:90
+msgid "Notification Endpoint URL"
+msgstr "URL Endpunkt für Benachrichtigungen"
+
+#: ../../mod/crepair.php:91
+msgid "Poll/Feed URL"
+msgstr "Pull/Feed URL"
+
+#: ../../mod/dfrn_request.php:96
+msgid "This introduction has already been accepted."
+msgstr "Diese Vorstellung wurde bereits abgeschlossen."
+
+#: ../../mod/dfrn_request.php:120 ../../mod/dfrn_request.php:351
+msgid "Profile location is not valid or does not contain profile information."
+msgstr ""
+"Profil Adresse ist ungültig oder stellt einige Profildaten nicht zur "
+"Verfügung."
+
+#: ../../mod/dfrn_request.php:125 ../../mod/dfrn_request.php:356
+msgid "Warning: profile location has no identifiable owner name."
+msgstr "Warning: profile location has no identifiable owner name."
+
+#: ../../mod/dfrn_request.php:127 ../../mod/dfrn_request.php:358
+msgid "Warning: profile location has no profile photo."
+msgstr "Warning: profile location has no profile photo."
+
+#: ../../mod/dfrn_request.php:130 ../../mod/dfrn_request.php:361
+#, php-format
+msgid "%d required parameter was not found at the given location"
+msgid_plural "%d required parameters were not found at the given location"
+msgstr[0] ""
+"%d benötigter Parameter wurde an der angegebenen Stelle nicht gefunden"
+msgstr[1] ""
+"%d benötigte Parameter wurden an der angegebenen Stelle nicht gefunden"
+
+#: ../../mod/dfrn_request.php:168
+msgid "Introduction complete."
+msgstr "Vorstellung abgeschlossen."
+
+#: ../../mod/dfrn_request.php:192
+msgid "Unrecoverable protocol error."
+msgstr "Nicht behebbarer Protokollfehler."
+
+#: ../../mod/dfrn_request.php:220
+msgid "Profile unavailable."
+msgstr "Profil nicht verfügbar."
+
+#: ../../mod/dfrn_request.php:245
+#, php-format
+msgid "%s has received too many connection requests today."
+msgstr "%s hat heute zu viele Freundschaftsanfragen erhalten."
+
+#: ../../mod/dfrn_request.php:246
+msgid "Spam protection measures have been invoked."
+msgstr "Maßnahmen zum Spamschutz wurden ergriffen."
+
+#: ../../mod/dfrn_request.php:247
+msgid "Friends are advised to please try again in 24 hours."
+msgstr "Freunde sind angehalten es in 24 Stunden erneut zu versuchen."
+
+#: ../../mod/dfrn_request.php:277
+msgid "Invalid locator"
+msgstr "Ungültiger Locator"
+
+#: ../../mod/dfrn_request.php:296
+msgid "Unable to resolve your name at the provided location."
+msgstr "Unable to resolve your name at the provided location."
+
+#: ../../mod/dfrn_request.php:309
+msgid "You have already introduced yourself here."
+msgstr "Du hast dich hier bereits vorgestellt."
+
+#: ../../mod/dfrn_request.php:313
+#, php-format
+msgid "Apparently you are already friends with %s."
+msgstr "Es scheint so, als ob du bereits ein Freund von %s bist."
+
+#: ../../mod/dfrn_request.php:334
+msgid "Invalid profile URL."
+msgstr "Ungültige Profil URL."
+
+#: ../../mod/dfrn_request.php:427
+msgid "Your introduction has been sent."
+msgstr "Deine Vorstellung wurde abgeschickt."
+
+#: ../../mod/dfrn_request.php:481
+msgid "Please login to confirm introduction."
+msgstr "Bitte melde dich an um die Vorstellung zu bestätigen."
+
+#: ../../mod/dfrn_request.php:495
+msgid ""
+"Incorrect identity currently logged in. Please login to "
+"<strong>this</strong> profile."
+msgstr ""
+"Incorrect identity currently logged in. Please login to "
+"<strong>this</strong> profile."
+
+#: ../../mod/dfrn_request.php:507
+#, php-format
+msgid "Welcome home %s."
+msgstr "Willkommen zurück %s."
+
+#: ../../mod/dfrn_request.php:508
+#, php-format
+msgid "Please confirm your introduction/connection request to %s."
+msgstr "Bitte bestätige deine Vorstellung/Verbindungs Anfrage bei %s."
+
+#: ../../mod/dfrn_request.php:509
+msgid "Confirm"
+msgstr "Bestätigen"
+
+#: ../../mod/dfrn_request.php:542 ../../include/items.php:1426
+msgid "[Name Withheld]"
+msgstr "[Name Zurückgehalten]"
+
+#: ../../mod/dfrn_request.php:549
+msgid "Introduction received at "
+msgstr "Vorstellung erhalten auf"
+
+#: ../../mod/dfrn_request.php:630
+msgid "Friend/Connection Request"
+msgstr "Freundschafts/Kontakt Anfrage"
+
+#: ../../mod/dfrn_request.php:631
+msgid ""
+"Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, "
+"testuser@identi.ca"
+msgstr ""
+"Beispiele: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, "
+"testuser@identi.ca"
+
+#: ../../mod/dfrn_request.php:632
+msgid "Please answer the following:"
+msgstr "Bitte beantworte folgende Fragen:"
+
+#: ../../mod/dfrn_request.php:633
+msgid "Does $name know you?"
+msgstr "Kennt $name dich?"
+
+#: ../../mod/dfrn_request.php:636
+msgid "Add a personal note:"
+msgstr "Eine persönliche Notiz anfügen:"
+
+#: ../../mod/dfrn_request.php:637
+msgid ""
+"Please enter your 'Identity Address' from one of the following supported "
+"social networks:"
+msgstr ""
+"Bitte gib die Adresse deiner Identität in einem der unterstützten sozialen "
+"Netzwerke an:"
+
+#: ../../mod/dfrn_request.php:638
+msgid "Friendika"
+msgstr "Friendika"
+
+#: ../../mod/dfrn_request.php:639
+msgid "StatusNet/Federated Social Web"
+msgstr "StatusNet/Federated Social Web"
+
+#: ../../mod/dfrn_request.php:640
+msgid "Private (secure) network"
+msgstr "Privates (sicheres) Netzwerk"
+
+#: ../../mod/dfrn_request.php:641
+msgid "Public (insecure) network"
+msgstr "Öffentliches (unsicheres) Netzwerk"
+
+#: ../../mod/dfrn_request.php:642
+msgid "Your Identity Address:"
+msgstr "Adresse deiner Identität"
+
+#: ../../mod/dfrn_request.php:643
+msgid "Submit Request"
+msgstr "Anfrage abschicken"
+
+#: ../../mod/dfrn_request.php:644 ../../mod/tagrm.php:11
+#: ../../mod/tagrm.php:94 ../../addon/js_upload/js_upload.php:41
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: ../../mod/like.php:110 ../../addon/facebook/facebook.php:745
+#: ../../include/conversation.php:20
+msgid "status"
+msgstr "Status"
+
+#: ../../mod/like.php:127 ../../addon/facebook/facebook.php:749
+#: ../../include/conversation.php:25
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s mag %2$s's %3$s"
+
+#: ../../mod/like.php:129 ../../include/conversation.php:28
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "%1$s mag %2$s's %3$s nicht"
+
+#: ../../mod/lostpass.php:27
+msgid "Password reset request issued. Check your email."
+msgstr "Zurücksetzen des Passworts eingeleitet. Bitte überprüfe deine Email."
+
+#: ../../mod/lostpass.php:38
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Anfrage zum Zurücksetzen des Passworts auf %s erhalten"
+
+#: ../../mod/lostpass.php:60
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr ""
+"Anfrage konnte nicht verifiziert werden. (Eventuell hast du bereits ähnliche"
+" Anfrage gestellt.) Zurücksetzen des Passworts gescheitert."
+
+#: ../../mod/lostpass.php:79
+msgid "Your password has been reset as requested."
+msgstr "Dein Passwort wurde wie gewünscht zurück gesetzt."
+
+#: ../../mod/lostpass.php:80
+msgid "Your new password is"
+msgstr "Dein neues Passwort lautet"
+
+#: ../../mod/lostpass.php:81
+msgid "Save or copy your new password - and then"
+msgstr "Speichere oder kopiere dein neues Passwort - und dann"
+
+#: ../../mod/lostpass.php:82
+msgid "click here to login"
+msgstr "hier klicken um dich anzumelden"
+
+#: ../../mod/lostpass.php:83
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr ""
+"Du kannst das Passwort unter den <em>Einstellungen</em> ändern sobald du "
+"dich erfolgreich angemeldet hast."
+
+#: ../../mod/lostpass.php:114
+msgid "Forgot your Password?"
+msgstr "Hast du dein Passwort vergessen?"
+
+#: ../../mod/lostpass.php:115
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr ""
+"Gib deine Email-Adresse an und fordere ein neues Passwort an. Es werden dir "
+"dann weitere Informationen per Mail zugesand."
+
+#: ../../mod/lostpass.php:116
+msgid "Nickname or Email: "
+msgstr "Spitzname oder Email:"
+
+#: ../../mod/lostpass.php:117
+msgid "Reset"
+msgstr "Zurücksetzen"
+
+#: ../../mod/removeme.php:42 ../../mod/removeme.php:45
+msgid "Remove My Account"
+msgstr "Account löschen"
+
+#: ../../mod/removeme.php:43
+msgid ""
+"This will completely remove your account. Once this has been done it is not "
+"recoverable."
+msgstr ""
+"Dies wird deinen Account endgültig löschen. Es gibt keine Möglichkeit ihn "
+"wiederherzustellen."
+
+#: ../../mod/removeme.php:44
+msgid "Please enter your password for verification:"
+msgstr "Bitte gib dein Passwort zur Verifikation ein:"
+
+#: ../../mod/apps.php:6
+msgid "Applications"
+msgstr "Anwendungen"
+
+#: ../../mod/directory.php:38
+msgid "Global Directory"
+msgstr "Weltweites Verzeichnis"
+
+#: ../../mod/directory.php:45
+msgid "Site Directory"
+msgstr "Verzeichnis"
+
+#: ../../mod/directory.php:100
+msgid "Gender: "
+msgstr "Geschlecht:"
+
+#: ../../mod/directory.php:126
+msgid "No entries (some entries may be hidden)."
+msgstr "Keine Einträge (einige Einträge könnten versteckt sein)."
+
+#: ../../mod/friendika.php:12
+msgid "This is Friendika version"
+msgstr "Dies ist Friendika Version"
+
+#: ../../mod/friendika.php:13
+msgid "running at web location"
+msgstr "die unter folgender Webadresse zu finden ist"
+
+#: ../../mod/friendika.php:15
+msgid ""
+"Shared content within the Friendika network is provided under the <a "
+"href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons "
+"Attribution 3.0 license</a>"
+msgstr ""
+"Geteilte Inhalte innerhalb des Friendika Netzwerks sind unter der <a "
+"href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons "
+"Attribution 3.0 license</a> verfügbar"
+
+#: ../../mod/friendika.php:17
+msgid ""
+"Please visit <a "
+"href=\"http://project.friendika.com\">Project.Friendika.com</a> to learn "
+"more about the Friendika project."
+msgstr ""
+"Bitte besuche <a "
+"href=\"http://project.friendika.com\">Project.Friendika.com</a> um mehr über"
+" Friendika zu erfahren."
+
+#: ../../mod/friendika.php:19
+msgid "Bug reports and issues: please visit"
+msgstr "Probleme oder Fehler gefunden? Bitte besuche"
+
+#: ../../mod/friendika.php:20
+msgid ""
+"Suggestions, praise, donations, etc. - please email \"Info\" at Friendika - "
+"dot com"
+msgstr ""
+"Vorschläge, Lobeshymnen, Spenden usw. - bitte eine Email an \"Info\" at "
+"Friendika - dot com (englisch bevorzugt)"
+
+#: ../../mod/friendika.php:25
+msgid "Installed plugins/addons/apps"
+msgstr "Installierte Plugins/Erweiterungen/Apps"
+
+#: ../../mod/friendika.php:33
+msgid "No installed plugins/addons/apps"
+msgstr "Keine Plugins/Erweiterungen/Apps installiert"
+
+#: ../../mod/item.php:37
+msgid "Unable to locate original post."
+msgstr "Konnte das original Posting nicht finden."
+
+#: ../../mod/item.php:128
+msgid "Empty post discarded."
+msgstr "Leere Nachricht wurde verworfen."
+
+#: ../../mod/item.php:478
+#, php-format
+msgid "%s commented on your item at %s"
+msgstr "%s hat einen deiner Beiträge auf %s kommentiert"
+
+#: ../../mod/item.php:504
+#, php-format
+msgid "%s posted on your profile wall at %s"
+msgstr "%s hat etwas auf deiner Pinnwand bei %s gepostet"
+
+#: ../../mod/item.php:534
+msgid "System error. Post not saved."
+msgstr "Systemfehler. Nachricht konnte nicht gespeichert werden."
+
+#: ../../mod/item.php:553
+#, php-format
+msgid ""
+"This message was sent to you by %s, a member of the Friendika social "
+"network."
+msgstr ""
+"Diese Nachricht wurde dir von %s gesendet, einem Mitglied des Sozialen "
+"Netzwerks Friendika"
+
+#: ../../mod/item.php:555
+#, php-format
+msgid "You may visit them online at %s"
+msgstr "Du kannst sie online unter %s besuchen"
+
+#: ../../mod/item.php:556
+msgid ""
+"Please contact the sender by replying to this post if you do not wish to "
+"receive these messages."
+msgstr ""
+"Please contact the sender by replying to this post if you do not wish to "
+"receive these messages."
+
+#: ../../mod/item.php:558
+#, php-format
+msgid "%s posted an update."
+msgstr "%s hat ein Update gepostet."
+
+#: ../../mod/tagrm.php:41
+msgid "Tag removed"
+msgstr "Tag entfernt"
+
+#: ../../mod/tagrm.php:79
+msgid "Remove Item Tag"
+msgstr "Gegenstands Tag entfernen"
+
+#: ../../mod/tagrm.php:81
+msgid "Select a tag to remove: "
+msgstr "Wähle ein Tag zum Entfernen aus: "
+
+#: ../../mod/tagrm.php:93
+msgid "Remove"
+msgstr "Entfernen"
+
+#: ../../mod/message.php:18
+msgid "No recipient selected."
+msgstr "Kein Empfänger gewählt."
+
+#: ../../mod/message.php:23
+msgid "[no subject]"
+msgstr "[kein Betreff]"
+
+#: ../../mod/message.php:34
+msgid "Unable to locate contact information."
+msgstr "Konnte die Kontaktinformationen nicht finden."
+
+#: ../../mod/message.php:102
+msgid "Message sent."
+msgstr "Nachricht gesendet."
+
+#: ../../mod/message.php:105
+msgid "Message could not be sent."
+msgstr "Nachricht konnte nicht gesendet werden."
+
+#: ../../mod/message.php:125 ../../include/nav.php:102
+msgid "Messages"
+msgstr "Nachrichten"
+
+#: ../../mod/message.php:126
+msgid "Inbox"
+msgstr "Eingang"
+
+#: ../../mod/message.php:127
+msgid "Outbox"
+msgstr "Ausgang"
+
+#: ../../mod/message.php:128
+msgid "New Message"
+msgstr "Neue Nachricht"
+
+#: ../../mod/message.php:142
+msgid "Message deleted."
+msgstr "Nachricht gelöscht."
+
+#: ../../mod/message.php:158
+msgid "Conversation removed."
+msgstr "Unterhaltung gelöscht."
+
+#: ../../mod/message.php:172 ../../include/conversation.php:674
+msgid "Please enter a link URL:"
+msgstr "Bitte gib die URL des Links ein:"
+
+#: ../../mod/message.php:180
+msgid "Send Private Message"
+msgstr "Private Nachricht senden"
+
+#: ../../mod/message.php:181 ../../mod/message.php:315
+msgid "To:"
+msgstr "An:"
+
+#: ../../mod/message.php:182 ../../mod/message.php:316
+msgid "Subject:"
+msgstr "Betreff:"
+
+#: ../../mod/message.php:224
+msgid "No messages."
+msgstr "Keine Nachrichten."
+
+#: ../../mod/message.php:237
+msgid "Delete conversation"
+msgstr "Unterhaltung löschen"
+
+#: ../../mod/message.php:240
+msgid "D, d M Y - g:i A"
+msgstr "D, d. M Y - g:i A"
+
+#: ../../mod/message.php:267
+msgid "Message not available."
+msgstr "Nachricht nicht verfügbar."
+
+#: ../../mod/message.php:304
+msgid "Delete message"
+msgstr "Nachricht löschen"
+
+#: ../../mod/message.php:314
+msgid "Send Reply"
+msgstr "Antwort senden"
+
+#: ../../mod/dfrn_confirm.php:231
+msgid "Response from remote site was not understood."
+msgstr "Antwort der entfernten Gegenstelle unverständlich."
+
+#: ../../mod/dfrn_confirm.php:240
+msgid "Unexpected response from remote site: "
+msgstr "Unerwartete Antwort der Gegenstelle: "
+
+#: ../../mod/dfrn_confirm.php:248
+msgid "Confirmation completed successfully."
+msgstr "Bestätigung erfolgreich abgeschlossen."
+
+#: ../../mod/dfrn_confirm.php:250 ../../mod/dfrn_confirm.php:264
+#: ../../mod/dfrn_confirm.php:271
+msgid "Remote site reported: "
+msgstr "Entfernte Seite meldet: "
+
+#: ../../mod/dfrn_confirm.php:262
+msgid "Temporary failure. Please wait and try again."
+msgstr ""
+"Zeitweiser Fehler. Bitte warte einige Momente und versuche es dann noch "
+"einmal."
+
+#: ../../mod/dfrn_confirm.php:269
+msgid "Introduction failed or was revoked."
+msgstr "Vorstellung schlug fehl oder wurde zurück gezogen."
+
+#: ../../mod/dfrn_confirm.php:387
+msgid "Unable to set contact photo."
+msgstr "Konnte das Bild des Kontakts nicht speichern."
+
+#: ../../mod/dfrn_confirm.php:430 ../../include/conversation.php:61
+#, php-format
+msgid "%1$s is now friends with %2$s"
+msgstr "%1$s ist nun mit %2$s befreundet"
+
+#: ../../mod/dfrn_confirm.php:501
+#, php-format
+msgid "No user record found for '%s' "
+msgstr "Für '%s' wurde kein Nutzer gefunden"
+
+#: ../../mod/dfrn_confirm.php:511
+msgid "Our site encryption key is apparently messed up."
+msgstr "Der Verschlüsslungsschlüssel unserer Seite ist anscheinend im Arsch."
+
+#: ../../mod/dfrn_confirm.php:522
+msgid "Empty site URL was provided or URL could not be decrypted by us."
+msgstr ""
+"Leere URL für die Seite erhalten oder die URL konnte nicht entschlüsselt "
+"werden."
+
+#: ../../mod/dfrn_confirm.php:534
+msgid "Contact record was not found for you on our site."
+msgstr "Für diesen Kontakt wurde auf unserer Seite kein Eintrag gefunden."
+
+#: ../../mod/dfrn_confirm.php:562
+msgid ""
+"The ID provided by your system is a duplicate on our system. It should work "
+"if you try again."
+msgstr ""
+"Die ID die uns dein System angeboten hat ist hier bereits vergeben. Bitte "
+"versuche es noch einmal."
+
+#: ../../mod/dfrn_confirm.php:573
+msgid "Unable to set your contact credentials on our system."
+msgstr ""
+"Deine Kontaktreferenzen konnten nicht in unserm System gespeichert werden."
+
+#: ../../mod/dfrn_confirm.php:626
+msgid "Unable to update your contact profile details on our system"
+msgstr "Die Updates für dein Profil konnten nicht gespeichert werden"
+
+#: ../../mod/dfrn_confirm.php:655
+#, php-format
+msgid "Connection accepted at %s"
+msgstr "Auf %s wurde die Verbindung akzeptiert"
+
+#: ../../mod/openid.php:62 ../../mod/openid.php:118 ../../include/auth.php:114
+#: ../../include/auth.php:139 ../../include/auth.php:192
+msgid "Login failed."
+msgstr "Annmeldung fehlgeschlagen."
+
+#: ../../mod/openid.php:78 ../../include/auth.php:208
+msgid "Welcome "
+msgstr "Willkommen "
+
+#: ../../mod/openid.php:79 ../../include/auth.php:209
+msgid "Please upload a profile photo."
+msgstr "Bitte lade ein Profilbild hoch."
+
+#: ../../mod/openid.php:82 ../../include/auth.php:212
+msgid "Welcome back "
+msgstr "Willkommen zurück "
+
+#: ../../mod/dfrn_poll.php:84 ../../mod/dfrn_poll.php:510
+#, php-format
+msgid "%s welcomes %s"
+msgstr "%s heißt %s herzlich willkommen"
+
+#: ../../mod/viewcontacts.php:40
+msgid "No contacts."
+msgstr "Keine Kontakte."
+
+#: ../../mod/group.php:27
+msgid "Group created."
+msgstr "Gruppe erstellt."
+
+#: ../../mod/group.php:33
+msgid "Could not create group."
+msgstr "Konnte die Gruppe nicht erstellen."
+
+#: ../../mod/group.php:43 ../../mod/group.php:115
+msgid "Group not found."
+msgstr "Gruppe nicht gefunden."
+
+#: ../../mod/group.php:56
+msgid "Group name changed."
+msgstr "Gruppenname geändert."
+
+#: ../../mod/group.php:74
+msgid "Create a group of contacts/friends."
+msgstr "Eine Gruppe von Kontakten/Freunden anlegen."
+
+#: ../../mod/group.php:75 ../../mod/group.php:158
+msgid "Group Name: "
+msgstr "Gruppen Name:"
+
+#: ../../mod/group.php:90
+msgid "Group removed."
+msgstr "Gruppe entfernt."
+
+#: ../../mod/group.php:92
+msgid "Unable to remove group."
+msgstr "Konnte die Gruppe nicht entfernen."
+
+#: ../../mod/group.php:157
+msgid "Group Editor"
+msgstr "Gruppen Editor"
+
+#: ../../mod/group.php:169
+msgid "Members"
+msgstr "Mitglieder"
+
+#: ../../mod/group.php:183
+msgid "All Contacts"
+msgstr "Alle Kontakte"
+
+#: ../../mod/match.php:10
+msgid "Profile Match"
+msgstr "Profil Übereinstimmungen"
+
+#: ../../mod/match.php:50
+msgid "No matches"
+msgstr "Keine Übereinstimmungen"
+
+#: ../../addon/twitter/twitter.php:64
+msgid "Post to Twitter"
+msgstr "Nach Twitter senden"
+
+#: ../../addon/twitter/twitter.php:122
+msgid "Twitter Posting Settings"
+msgstr "Twitter Posting Einstellungen"
+
+#: ../../addon/twitter/twitter.php:129
+msgid ""
+"No consumer key pair for Twitter found. Please contact your site "
+"administrator."
+msgstr ""
+"Kein Consumer Schlüsselpaar für Twitter gefunden. Bitte wende dich an den "
+"Administrator der Seite."
+
+#: ../../addon/twitter/twitter.php:148
+msgid ""
+"At this Friendika instance the Twitter plugin was enabled but you have not "
+"yet connected your account to your Twitter account. To do so click the "
+"button below to get a PIN from Twitter which you have to copy into the input"
+" box below and submit the form. Only your <strong>public</strong> posts will"
+" be posted to Twitter."
+msgstr ""
+"Auf dieser Friendika Instanz wurde das Twitter Plugin aktiviert dein Account"
+" ist allerdings noch nicht mit einem Twitter Account verbunden. Um deinen "
+"Account mit Twitter zu verbinden, klick auf den Button weiter unten und gib "
+"die PIN die du auf Twitter erhälst hier ein. Es werden ausschließlich deine "
+"<strong>öffentlichen</strong> Nachrichten auf Twitter veröffentlicht."
+
+#: ../../addon/twitter/twitter.php:149
+msgid "Log in with Twitter"
+msgstr "bei Twitter anmelden"
+
+#: ../../addon/twitter/twitter.php:151
+msgid "Copy the PIN from Twitter here"
+msgstr "Kopiere die Twitter PIN hier her"
+
+#: ../../addon/twitter/twitter.php:165 ../../addon/statusnet/statusnet.php:197
+msgid "Currently connected to: "
+msgstr "Momentan verbunden mit: "
+
+#: ../../addon/twitter/twitter.php:166
+msgid ""
+"If enabled all your <strong>public</strong> postings will be posted to the "
+"associated Twitter account as well."
+msgstr ""
+"Wenn dies aktiviert ist, werden alle deine <strong>öffentlichen</strong> "
+"Nachricten auch auf dem verbundenen Twitter Account veröffentlicht."
+
+#: ../../addon/twitter/twitter.php:168
+msgid "Send public postings to Twitter"
+msgstr "Veröffentliche öffentliche Nachrichten auf Twitter"
+
+#: ../../addon/twitter/twitter.php:172 ../../addon/statusnet/statusnet.php:204
+msgid "Clear OAuth configuration"
+msgstr "OAuth Konfiguration löschen"
+
+#: ../../addon/statusnet/statusnet.php:78
+msgid "Post to StatusNet"
+msgstr "Nach StatusNet senden"
+
+#: ../../addon/statusnet/statusnet.php:146
+msgid "StatusNet Posting Settings"
+msgstr "StatusNet Posting Einstellungen"
+
+#: ../../addon/statusnet/statusnet.php:152
+msgid ""
+"No consumer key pair for StatusNet found. Register your Friendika Account as"
+" an desktop client on your StatusNet account, copy the consumer key pair "
+"here and enter the API base root.<br />Before you register your own OAuth "
+"key pair ask the administrator if there is already a key pair for this "
+"Friendika installation at your favorited StatusNet installation."
+msgstr ""
+"Kein OAuth Consumer Schlüsselpaar für StatusNet gefunden. Registriere deinen"
+" Friendika Account als Desktopapplikation und trage hier den OAuth Consumer "
+"Schlüssel, das Geheimnis und die Basis-URL der StatusNet API ein.<br />Bevor"
+" du eine neue Anwendung registrierst, kannst du auch erstmal den Admin "
+"deiner Friendika Seite fragen, ob es für deine bevorzugte StatusNet Instanz "
+"eventuell bereits ein OAuth Schlüsselpaar gibt."
+
+#: ../../addon/statusnet/statusnet.php:154
+msgid "OAuth Consumer Key"
+msgstr "OAuth Consumer Schlüssel"
+
+#: ../../addon/statusnet/statusnet.php:157
+msgid "OAuth Consumer Secret"
+msgstr "OAuth Consumer Geheimnis"
+
+#: ../../addon/statusnet/statusnet.php:160
+msgid "Base API Path (remember the trailing /)"
+msgstr "Basis-URL der StatusNet API (vergiss den abschließenden / nicht)"
+
+#: ../../addon/statusnet/statusnet.php:181
+msgid ""
+"To connect to your StatusNet account click the button below to get a "
+"security code from StatusNet which you have to copy into the input box below"
+" and submit the form. Only your <strong>public</strong> posts will be posted"
+" to StatusNet."
+msgstr ""
+"Um deinen Account mit einem StatusNet Account zu verknüpfen klicke den "
+"Button an um einen Sicherheitscode von StatusNet zu erhalten und kopiere "
+"diesen in die Eingabebox weiter unten. Es werden ausschließlich deine "
+"<strong>öffentlichen</strong> Nachrichten bei StatusNet veröffentllicht."
+
+#: ../../addon/statusnet/statusnet.php:182
+msgid "Log in with StatusNet"
+msgstr "Bei StatusNet anmelden"
+
+#: ../../addon/statusnet/statusnet.php:184
+msgid "Copy the security code from StatusNet here"
+msgstr "Kopiere den Sicherheitscode von StatusNet hier her"
+
+#: ../../addon/statusnet/statusnet.php:198
+msgid ""
+"If enabled all your <strong>public</strong> postings will be posted to the "
+"associated StatusNet account as well."
+msgstr ""
+"Wenn dies aktiviert ist, werden alle deine <strong>öffentlichen</strong> "
+"Nachricten auch auf dem verbundenen StatusNet Account veröffentlicht."
+
+#: ../../addon/statusnet/statusnet.php:200
+msgid "Send public postings to StatusNet"
+msgstr "Veröffentliche öffentliche Nachrichten auf StatusNet"
+
+#: ../../addon/tictac/tictac.php:14
+msgid "Three Dimensional Tic-Tac-Toe"
+msgstr "Dreidimensionales Tic-Tac-Toe"
+
+#: ../../addon/tictac/tictac.php:47
+msgid "3D Tic-Tac-Toe"
+msgstr "3D Tic-Tac-Toe"
+
+#: ../../addon/tictac/tictac.php:52
+msgid "New game"
+msgstr "Neues Spiel"
+
+#: ../../addon/tictac/tictac.php:53
+msgid "New game with handicap"
+msgstr "Neues Handicap Spiel"
+
+#: ../../addon/tictac/tictac.php:54
+msgid ""
+"Three dimensional tic-tac-toe is just like the traditional game except that "
+"it is played on multiple levels simultaneously. "
+msgstr ""
+"Drei dimensionales Tic-Tac-Toe ist genauso wie das herkömmliche Spiel, nur "
+"das man es auf mehreren Ebenen gleichzeitig spielt."
+
+#: ../../addon/tictac/tictac.php:55
+msgid ""
+"In this case there are three levels. You win by getting three in a row on "
+"any level, as well as up, down, and diagonally across the different levels."
+msgstr ""
+"In diesem Fall sind es drei Ebenen. Man gewinnt indem man drei in einer "
+"Reihe auf einer beliebigen Reihe schafft, oder drei übereinander oder "
+"diagonal auf verschiedenen Ebenen."
+
+#: ../../addon/tictac/tictac.php:57
+msgid ""
+"The handicap game disables the center position on the middle level because "
+"the player claiming this square often has an unfair advantage."
+msgstr ""
+"Beim Handicap-Spiel wird die zentrale Position der mittleren Ebene gesperrt "
+"da der Spieler der diese Ebene besitzt oft einen unfairen Vorteil genießt."
+
+#: ../../addon/tictac/tictac.php:176
+msgid "You go first..."
+msgstr "Du fängst an..."
+
+#: ../../addon/tictac/tictac.php:181
+msgid "I'm going first this time..."
+msgstr "Diesmal fange ich an..."
+
+#: ../../addon/tictac/tictac.php:187
+msgid "You won!"
+msgstr "Du gewinnst!"
+
+#: ../../addon/tictac/tictac.php:193 ../../addon/tictac/tictac.php:218
+msgid "\"Cat\" game!"
+msgstr "Unentschieden!"
+
+#: ../../addon/tictac/tictac.php:216
+msgid "I won!"
+msgstr "Ich gewinne!"
+
+#: ../../addon/java_upload/java_upload.php:33
+msgid "Select files to upload: "
+msgstr "Wähle Dateien zum Upload aus: "
+
+#: ../../addon/java_upload/java_upload.php:35
+msgid ""
+"Use the following controls only if the Java uploader [above] fails to "
+"launch."
+msgstr ""
+"Verwende die folgenden Kontrollen nur, wenn der Java Uploader [oben] nicht "
+"funktioniert."
+
+#: ../../addon/facebook/facebook.php:252
+msgid "Facebook disabled"
+msgstr "Facebook deaktiviert"
+
+#: ../../addon/facebook/facebook.php:257
+msgid "Updating contacts"
+msgstr "Aktualisiere Kontakte"
+
+#: ../../addon/facebook/facebook.php:266
+msgid "Facebook API key is missing."
+msgstr "Facebook API Schlüssel nicht gefunden"
+
+#: ../../addon/facebook/facebook.php:273
+msgid "Facebook Connect"
+msgstr "Mit Facebook verbinden"
+
+#: ../../addon/facebook/facebook.php:279
+msgid "Install Facebook connector for this account."
+msgstr "Facebook Connector für diesen Account installieren."
+
+#: ../../addon/facebook/facebook.php:286
+msgid "Remove Facebook connector"
+msgstr "Facebook Connector entfernen"
+
+#: ../../addon/facebook/facebook.php:292
+msgid "Post to Facebook by default"
+msgstr "Sende standardmäßig nach Facebook"
+
+#: ../../addon/facebook/facebook.php:354
+msgid "Facebook"
+msgstr "Facebook"
+
+#: ../../addon/facebook/facebook.php:355
+msgid "Facebook Connector Settings"
+msgstr "Facebook Verbindungseinstellungen"
+
+#: ../../addon/facebook/facebook.php:369
+msgid "Post to Facebook"
+msgstr "Zu Facebook posten"
+
+#: ../../addon/facebook/facebook.php:436
+msgid ""
+"Post to Facebook cancelled because of multi-network access permission "
+"conflict."
+msgstr ""
+"Das Senden nach Facebook wurde zurückgezogen da Konflikte bei den Multi-"
+"Netzwerks-Rechten vorliegen."
+
+#: ../../addon/facebook/facebook.php:491
+msgid "Image: "
+msgstr "Bild"
+
+#: ../../addon/facebook/facebook.php:551
+msgid "View on Friendika"
+msgstr "Auf Friendika ansehen"
+
+#: ../../addon/randplace/randplace.php:171
+msgid "Randplace Settings"
+msgstr "Randplace Einstellungen"
+
+#: ../../addon/randplace/randplace.php:173
+msgid "Enable Randplace Plugin"
+msgstr "Randplace Erweiterung aktivieren"
+
+#: ../../addon/js_upload/js_upload.php:39
+msgid "Upload a file"
+msgstr "Datei hochladen"
+
+#: ../../addon/js_upload/js_upload.php:40
+msgid "Drop files here to upload"
+msgstr "Ziehe die Dateien hier her die du hochladen willst"
+
+#: ../../addon/js_upload/js_upload.php:42
+msgid "Failed"
+msgstr "Fehlgeschlagen"
+
+#: ../../addon/js_upload/js_upload.php:288
+msgid "No files were uploaded."
+msgstr "Keine Dateien hochgeladen."
+
+#: ../../addon/js_upload/js_upload.php:294
+msgid "Uploaded file is empty"
+msgstr "Hochgeladene Datei ist leer"
+
+#: ../../addon/js_upload/js_upload.php:299
+msgid "Uploaded file is too large"
+msgstr "Hochgeladene Datei ist zu groß"
+
+#: ../../addon/js_upload/js_upload.php:317
+msgid "File has an invalid extension, it should be one of "
+msgstr ""
+"Die Dateiextension ist nicht erlaubt, sie muss eine der folgenden sein "
+
+#: ../../addon/js_upload/js_upload.php:328
+msgid "Upload was cancelled, or server error encountered"
+msgstr "Upload abgebrochen oder Serverfehler aufgetreten"
+
+#: ../../include/notifier.php:414
+msgid "(no subject)"
+msgstr "(kein Betreff)"
+
+#: ../../include/contact_selectors.php:32
+msgid "Unknown | Not categorised"
+msgstr "Unbekannt | Nicht kategorisiert"
+
+#: ../../include/contact_selectors.php:33
+msgid "Block immediately"
+msgstr "Sofort blockieren"
+
+#: ../../include/contact_selectors.php:34
+msgid "Shady, spammer, self-marketer"
+msgstr "Zwielichtig, Spammer, Selbstdarsteller"
+
+#: ../../include/contact_selectors.php:35
+msgid "Known to me, but no opinion"
+msgstr "Ist mir bekannt, hab aber keine Meinung"
+
+#: ../../include/contact_selectors.php:36
+msgid "OK, probably harmless"
+msgstr "OK, wahrscheinlich harmlos"
+
+#: ../../include/contact_selectors.php:37
+msgid "Reputable, has my trust"
+msgstr "Seriös, hat mein Vertrauen"
+
+#: ../../include/contact_selectors.php:55
+msgid "Frequently"
+msgstr "Häufig"
+
+#: ../../include/contact_selectors.php:56
+msgid "Hourly"
+msgstr "Stündlich"
+
+#: ../../include/contact_selectors.php:57
+msgid "Twice daily"
+msgstr "Zweimal Täglich"
+
+#: ../../include/contact_selectors.php:58
+msgid "Daily"
+msgstr "Täglich"
+
+#: ../../include/contact_selectors.php:59
+msgid "Weekly"
+msgstr "Wöchendlich"
+
+#: ../../include/contact_selectors.php:60
+msgid "Monthly"
+msgstr "Monatlich"
+
+#: ../../include/profile_selectors.php:6
+msgid "Male"
+msgstr "Männlich"
+
+#: ../../include/profile_selectors.php:6
+msgid "Female"
+msgstr "Weiblich"
+
+#: ../../include/profile_selectors.php:6
+msgid "Currently Male"
+msgstr "Momentan Männlich"
+
+#: ../../include/profile_selectors.php:6
+msgid "Currently Female"
+msgstr "Momentan Weiblich"
+
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Male"
+msgstr "Hauptsächlich Männlich"
+
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Female"
+msgstr "Hauptsächlich Weiblich"
+
+#: ../../include/profile_selectors.php:6
+msgid "Transgender"
+msgstr "Transgender"
+
+#: ../../include/profile_selectors.php:6
+msgid "Intersex"
+msgstr "Intersex"
+
+#: ../../include/profile_selectors.php:6
+msgid "Transsexual"
+msgstr "Transsexuel"
+
+#: ../../include/profile_selectors.php:6
+msgid "Hermaphrodite"
+msgstr "Hermaphrodit"
+
+#: ../../include/profile_selectors.php:6
+msgid "Neuter"
+msgstr "Neuter"
+
+#: ../../include/profile_selectors.php:6
+msgid "Non-specific"
+msgstr "Nicht spezifiziert"
+
+#: ../../include/profile_selectors.php:6
+msgid "Other"
+msgstr "Andere"
+
+#: ../../include/profile_selectors.php:6
+msgid "Undecided"
+msgstr "Unentschieden"
+
+#: ../../include/profile_selectors.php:19
+msgid "Males"
+msgstr "Männer"
+
+#: ../../include/profile_selectors.php:19
+msgid "Females"
+msgstr "Frauen"
+
+#: ../../include/profile_selectors.php:19
+msgid "Gay"
+msgstr "Schwul"
+
+#: ../../include/profile_selectors.php:19
+msgid "Lesbian"
+msgstr "Lesbisch"
+
+#: ../../include/profile_selectors.php:19
+msgid "No Preference"
+msgstr "Keine Vorlieben"
+
+#: ../../include/profile_selectors.php:19
+msgid "Bisexual"
+msgstr "Bisexuel"
+
+#: ../../include/profile_selectors.php:19
+msgid "Autosexual"
+msgstr "Autosexual"
+
+#: ../../include/profile_selectors.php:19
+msgid "Abstinent"
+msgstr "Abstinent"
+
+#: ../../include/profile_selectors.php:19
+msgid "Virgin"
+msgstr "Jungfrau"
+
+#: ../../include/profile_selectors.php:19
+msgid "Deviant"
+msgstr "Deviant"
+
+#: ../../include/profile_selectors.php:19
+msgid "Fetish"
+msgstr "Fetish"
+
+#: ../../include/profile_selectors.php:19
+msgid "Oodles"
+msgstr "Oodles"
+
+#: ../../include/profile_selectors.php:19
+msgid "Nonsexual"
+msgstr "Nonsexual"
+
+#: ../../include/profile_selectors.php:33
+msgid "Single"
+msgstr "Single"
+
+#: ../../include/profile_selectors.php:33
+msgid "Lonely"
+msgstr "Einsam"
+
+#: ../../include/profile_selectors.php:33
+msgid "Available"
+msgstr "Verfügbar"
+
+#: ../../include/profile_selectors.php:33
+msgid "Unavailable"
+msgstr "Nicht verfügbar"
+
+#: ../../include/profile_selectors.php:33
+msgid "Dating"
+msgstr "Dating"
+
+#: ../../include/profile_selectors.php:33
+msgid "Unfaithful"
+msgstr "Untreu"
+
+#: ../../include/profile_selectors.php:33
+msgid "Sex Addict"
+msgstr "Sex Besessen"
+
+#: ../../include/profile_selectors.php:33
+msgid "Friends"
+msgstr "Freunde"
+
+#: ../../include/profile_selectors.php:33
+msgid "Friends/Benefits"
+msgstr "Friends/Benefits"
+
+#: ../../include/profile_selectors.php:33
+msgid "Casual"
+msgstr "Casual"
+
+#: ../../include/profile_selectors.php:33
+msgid "Engaged"
+msgstr "Verlobt"
+
+#: ../../include/profile_selectors.php:33
+msgid "Married"
+msgstr "Verheiratet"
+
+#: ../../include/profile_selectors.php:33
+msgid "Partners"
+msgstr "Partner"
+
+#: ../../include/profile_selectors.php:33
+msgid "Cohabiting"
+msgstr "kohabitierend"
+
+#: ../../include/profile_selectors.php:33
+msgid "Happy"
+msgstr "Glücklich"
+
+#: ../../include/profile_selectors.php:33
+msgid "Not Looking"
+msgstr "Nicht auf der Suche"
+
+#: ../../include/profile_selectors.php:33
+msgid "Swinger"
+msgstr "Swinger"
+
+#: ../../include/profile_selectors.php:33
+msgid "Betrayed"
+msgstr "Betrogen"
+
+#: ../../include/profile_selectors.php:33
+msgid "Separated"
+msgstr "Getrennt"
+
+#: ../../include/profile_selectors.php:33
+msgid "Unstable"
+msgstr "Unstabil"
+
+#: ../../include/profile_selectors.php:33
+msgid "Divorced"
+msgstr "Geschieden"
+
+#: ../../include/profile_selectors.php:33
+msgid "Widowed"
+msgstr "Verwidwet"
+
+#: ../../include/profile_selectors.php:33
+msgid "Uncertain"
+msgstr "Unsicher"
+
+#: ../../include/profile_selectors.php:33
+msgid "Complicated"
+msgstr "Kompliziert"
+
+#: ../../include/profile_selectors.php:33
+msgid "Don't care"
+msgstr "Ist mir nicht wichtig"
+
+#: ../../include/profile_selectors.php:33
+msgid "Ask me"
+msgstr "Frag mich"
+
+#: ../../include/acl_selectors.php:133
+msgid "Visible To:"
+msgstr "Sichtbar für:"
+
+#: ../../include/acl_selectors.php:137 ../../include/acl_selectors.php:152
+msgid "Groups"
+msgstr "Gruppen"
+
+#: ../../include/acl_selectors.php:148
+msgid "Except For:"
+msgstr "Abgesehen von:"
+
+#: ../../include/auth.php:27
+msgid "Logged out."
+msgstr "Abgemeldet."
+
+#: ../../include/bbcode.php:83
+msgid "Image/photo"
+msgstr "Bild/Foto"
+
+#: ../../include/datetime.php:44 ../../include/datetime.php:46
+msgid "Miscellaneous"
+msgstr "Verschiedenes"
+
+#: ../../include/datetime.php:148
+msgid "less than a second ago"
+msgstr "vor weniger als einer Sekunde"
+
+#: ../../include/datetime.php:151
+msgid "year"
+msgstr "Jahr"
+
+#: ../../include/datetime.php:151
+msgid "years"
+msgstr "Jahre"
+
+#: ../../include/datetime.php:152
+msgid "month"
+msgstr "Monat"
+
+#: ../../include/datetime.php:152
+msgid "months"
+msgstr "Monate"
+
+#: ../../include/datetime.php:153
+msgid "week"
+msgstr "Woche"
+
+#: ../../include/datetime.php:153
+msgid "weeks"
+msgstr "Wochen"
+
+#: ../../include/datetime.php:154
+msgid "day"
+msgstr "Tag"
+
+#: ../../include/datetime.php:155
+msgid "hour"
+msgstr "Stunde"
+
+#: ../../include/datetime.php:155
+msgid "hours"
+msgstr "Stunden"
+
+#: ../../include/datetime.php:156
+msgid "minute"
+msgstr "Minute"
+
+#: ../../include/datetime.php:156
+msgid "minutes"
+msgstr "Minuten"
+
+#: ../../include/datetime.php:157
+msgid "second"
+msgstr "Sekunde"
+
+#: ../../include/datetime.php:157
+msgid "seconds"
+msgstr "Sekunden"
+
+#: ../../include/datetime.php:164
+msgid " ago"
+msgstr " her"
+
+#: ../../include/profile_advanced.php:36 ../../include/items.php:1072
+msgid "Birthday:"
+msgstr "Geburtstag:"
+
+#: ../../include/profile_advanced.php:45
+msgid "j F, Y"
+msgstr "j F, Y"
+
+#: ../../include/profile_advanced.php:46
+msgid "j F"
+msgstr "j F"
+
+#: ../../include/profile_advanced.php:59
+msgid "Age:"
+msgstr "Alter:"
+
+#: ../../include/profile_advanced.php:70
+msgid "<span class=\"heart\">&hearts;</span> Status:"
+msgstr "<span class=\"heart\">&hearts;</span> Bezieungsstatus:"
+
+#: ../../include/profile_advanced.php:127
+msgid "Religion:"
+msgstr "Religion:"
+
+#: ../../include/profile_advanced.php:138
+msgid "About:"
+msgstr "Über:"
+
+#: ../../include/profile_advanced.php:150
+msgid "Hobbies/Interests:"
+msgstr "Hobbies/Interessen:"
+
+#: ../../include/profile_advanced.php:162
+msgid "Contact information and Social Networks:"
+msgstr "Kontaktinformationen und Soziale Netzwerke:"
+
+#: ../../include/profile_advanced.php:174
+msgid "Musical interests:"
+msgstr "Musikalische Interessen:"
+
+#: ../../include/profile_advanced.php:186
+msgid "Books, literature:"
+msgstr "Literatur/Bücher:"
+
+#: ../../include/profile_advanced.php:198
+msgid "Television:"
+msgstr "Fernsehen:"
+
+#: ../../include/profile_advanced.php:210
+msgid "Film/dance/culture/entertainment:"
+msgstr "Filme/Tänze/Kultur/Unterhaltung:"
+
+#: ../../include/profile_advanced.php:222
+msgid "Love/Romance:"
+msgstr "Liebesleben:"
+
+#: ../../include/profile_advanced.php:234
+msgid "Work/employment:"
+msgstr "Arbeit/Beschäftigung:"
+
+#: ../../include/profile_advanced.php:246
+msgid "School/education:"
+msgstr "Schule/Ausbildung:"
+
+#: ../../include/nav.php:55 ../../include/nav.php:93
+msgid "Home"
+msgstr "Persönlich"
+
+#: ../../include/nav.php:68
+msgid "Apps"
+msgstr "Apps"
+
+#: ../../include/nav.php:81
+msgid "Directory"
+msgstr "Verzeichnis"
+
+#: ../../include/nav.php:91
+msgid "Network"
+msgstr "Netzwerk"
+
+#: ../../include/nav.php:99
+msgid "Notifications"
+msgstr "Benachrichtigungen"
+
+#: ../../include/nav.php:105
+msgid "Manage"
+msgstr "Verwalten"
+
+#: ../../include/nav.php:108
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: ../../include/conversation.php:184 ../../include/conversation.php:441
+#: ../../include/conversation.php:442
+#, php-format
+msgid "View %s's profile"
+msgstr "Betrachte %s's Profil"
+
+#: ../../include/conversation.php:200
+msgid "View in context"
+msgstr "Im Zusammenhang betrachten"
+
+#: ../../include/conversation.php:271
+msgid "See more posts like this"
+msgstr "Mehr Beiträge wie diesen anzeigen"
+
+#: ../../include/conversation.php:296
+#, php-format
+msgid "See all %d comments"
+msgstr "Alle %d Kommentare anzeigen"
+
+#: ../../include/conversation.php:443
+msgid "to"
+msgstr "to"
+
+#: ../../include/conversation.php:444
+msgid "Wall-to-Wall"
+msgstr "Wall-to-Wall"
+
+#: ../../include/conversation.php:445
+msgid "via Wall-To-Wall:"
+msgstr "via Wall-To-Wall:"
+
+#: ../../include/conversation.php:583
+msgid "View status"
+msgstr "Status anzeigen"
+
+#: ../../include/conversation.php:584
+msgid "View profile"
+msgstr "Profil anzeigen"
+
+#: ../../include/conversation.php:585
+msgid "View photos"
+msgstr "Fotos ansehen"
+
+#: ../../include/conversation.php:586
+msgid "View recent"
+msgstr "Jüngste anzeigen"
+
+#: ../../include/conversation.php:588
+msgid "Send PM"
+msgstr "Private Nachricht senden"
+
+#: ../../include/conversation.php:638
+#, php-format
+msgid "%s likes this."
+msgstr "%s mag dies."
+
+#: ../../include/conversation.php:638
+#, php-format
+msgid "%s doesn't like this."
+msgstr "%s mag dies nicht."
+
+#: ../../include/conversation.php:642
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgstr "<span %1$s>%2$d Personen</span> mögen dies."
+
+#: ../../include/conversation.php:644
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgstr "<span %1$s>%2$d Personen</span> mögen dies nicht."
+
+#: ../../include/conversation.php:650
+msgid "and"
+msgstr "und"
+
+#: ../../include/conversation.php:653
+#, php-format
+msgid ", and %d other people"
+msgstr " und %d andere"
+
+#: ../../include/conversation.php:654
+#, php-format
+msgid "%s like this."
+msgstr "%s mag dies."
+
+#: ../../include/conversation.php:654
+#, php-format
+msgid "%s don't like this."
+msgstr "%s mag dies nicht."
+
+#: ../../include/conversation.php:675
+msgid "Please enter a YouTube link:"
+msgstr "Bitte gebe den YouTube Link ein:"
+
+#: ../../include/conversation.php:676
+msgid "Please enter a video(.ogg) link/URL:"
+msgstr "Bitte gebe den Link zum Video(.ogg) an:"
+
+#: ../../include/conversation.php:677
+msgid "Please enter an audio(.ogg) link/URL:"
+msgstr "Bitte gebe den Link zum Audio(.ogg) an:"
+
+#: ../../include/conversation.php:678
+msgid "Where are you right now?"
+msgstr "Wo hälst du dich jetzt gerade auf?"
+
+#: ../../include/conversation.php:679
+msgid "Enter a title for this item"
+msgstr "Gib den Titel für diesen Beitrag ein"
+
+#: ../../include/conversation.php:726
+msgid "Set title"
+msgstr "Titel setzen"
+
+#: ../../include/dba.php:31
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr ""
+"Kann die DNS Informationen für den Datenbanken Server '%s' nicht ermitteln."
+
+#: ../../include/items.php:1433
+msgid "You have a new follower at "
+msgstr "Du hast einen neuen Kontakt auf "
+
+#: ../../include/group.php:146
+msgid "Create a new group"
+msgstr "Neue Gruppe erstellen"
+
+#: ../../include/group.php:147
+msgid "Everybody"
+msgstr "Alle Kontakte"
+
+#: ../../include/oembed.php:57
+msgid "Embedding disabled"
+msgstr "Einbettungen deaktiviert"
diff --git a/view/de/msg-header.tpl b/view/de/msg-header.tpl
deleted file mode 100644
index 174e6c985..000000000
--- a/view/de/msg-header.tpl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-<script language="javascript" type="text/javascript" src="$baseurl/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
-<script language="javascript" type="text/javascript">
-
-tinyMCE.init({
- theme : "advanced",
- mode : "specific_textareas",
- editor_selector: /(profile-jot-text|prvmail-text)/,
- plugins : "bbcode,paste",
- theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor",
- theme_advanced_buttons2 : "",
- theme_advanced_buttons3 : "",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "center",
- theme_advanced_blockformats : "blockquote,code",
- paste_text_sticky : true,
- entity_encoding : "raw",
- add_unload_trigger : false,
- remove_linebreaks : false,
- force_p_newlines : false,
- force_br_newlines : true,
- forced_root_block : '',
- convert_urls: false,
- content_css: "$baseurl/view/custom_tinymce.css",
- //Character count
- theme_advanced_path : false,
- setup : function(ed) {
- ed.onKeyUp.add(function(ed, e) {
- var txt = tinyMCE.activeEditor.getContent();
- var text = txt.length;
- if(txt.length <= 140) {
- $('#character-counter').removeClass('red');
- $('#character-counter').removeClass('orange');
- $('#character-counter').addClass('grey');
- }
- if((txt.length > 140) && (txt .length <= 420)) {
- $('#character-counter').removeClass('grey');
- $('#character-counter').removeClass('red');
- $('#character-counter').addClass('orange');
- }
- if(txt.length > 420) {
- $('#character-counter').removeClass('grey');
- $('#character-counter').removeClass('orange');
- $('#character-counter').addClass('red');
- }
- $('#character-counter').text(text);
- });
-
- ed.onInit.add(function(ed) {
- ed.pasteAsPlainText = true;
- });
- }
-});
-
-</script>
-<script type="text/javascript" src="include/ajaxupload.js" ></script>
-<script>
- $(document).ready(function() {
- var uploader = new window.AjaxUpload(
- 'prvmail-upload',
- { action: 'wall_upload/$nickname',
- name: 'userfile',
- onSubmit: function(file,ext) { $('#profile-rotator').show(); },
- onComplete: function(file,response) {
- tinyMCE.execCommand('mceInsertRawHTML',false,response);
- $('#profile-rotator').hide();
- }
- }
- );
-
- });
-
- function jotGetLink() {
- reply = prompt("Please enter a link URL:");
- if(reply && reply.length) {
- $('#profile-rotator').show();
- $.get('parse_url?url=' + reply, function(data) {
- tinyMCE.execCommand('mceInsertRawHTML',false,data);
- $('#profile-rotator').hide();
- });
- }
- }
-
- function linkdropper(event) {
- var linkFound = event.dataTransfer.types.contains("text/uri-list");
- if(linkFound)
- event.preventDefault();
- }
-
- function linkdrop(event) {
- var reply = event.dataTransfer.getData("text/uri-list");
- event.target.textContent = reply;
- event.preventDefault();
- if(reply && reply.length) {
- $('#profile-rotator').show();
- $.get('parse_url?url=' + reply, function(data) {
- tinyMCE.execCommand('mceInsertRawHTML',false,data);
- $('#profile-rotator').hide();
- });
- }
- }
-
-</script>
-
diff --git a/view/de/pagetypes.tpl b/view/de/pagetypes.tpl
deleted file mode 100644
index 56be7c2ad..000000000
--- a/view/de/pagetypes.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-
- <div id="settings-normal-wrapper">
- <label id="settings-normal-label" for="settings-normal">Normales Profil</label>
- <input type="radio" name="page-flags" id="settings-normal" $normal_selected value="$page_normal" />
- <span id="settings-normal-desc">Dieser Account ist ein normaler persönlicher Account</span>
- </div>
- <div id="settings-normal-break" ></div>
- <div id="settings-soapbox-wrapper">
- <label id="settings-soapbox-label" for="settings-soapbox">Sandkasten Profil</label>
- <input type="radio" name="page-flags" id="settings-soapbox" $soapbox_selected value="$page_soapbox" />
- <span id="settings-soapbox-desc">Alle Kontakt/Freundschaftsanfragen werden automatisch als Nur-Lese Fans akzepdiert</span>
- </div>
- <div id="settings-soapbox-break" ></div>
- <div id="settings-community-wrapper">
- <label id="settings-community-label" for="settings-community">Gemeindschafts/Prominenten Profil</label>
- <input type="radio" name="page-flags" id="settings-community" $community_selected value="$page_community" />
- <span id="settings-community-desc">Alle Kontakt/Freundschaftsanfragen werden automatisch als Lese-und-Schreiben Fans akzepdiert</span>
- </div>
- <div id="settings-community-break" ></div>
- <div id="settings-freelove-wrapper">
- <label id="settings-freelove-label" for="settings-freelove">Automatisches Freundschafts-Profil</label>
- <input type="radio" name="page-flags" id="settings-freelove" $freelove_selected value="$page_freelove" />
- <span id="settings-freelove-desc">Alle Kontakt/Freundschaftsanfragen werden automatisch als Freund akzepdiert</span>
- </div>
- <div id="settings-freelove-break" ></div>
diff --git a/view/de/profile-hide-friends.tpl b/view/de/profile-hide-friends.tpl
deleted file mode 100644
index 1d6903825..000000000
--- a/view/de/profile-hide-friends.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<p id="hide-friends-text">
-Verberge meine Kontaktliste von Leuten die dieses Profil ansehen?
-</p>
-
- <div id="hide-friends-yes-wrapper">
- <label id="hide-friends-yes-label" for="hide-friends-yes">Ja</label>
- <input type="radio" name="hide-friends" id="hide-friends-yes" $yes_selected value="1" />
-
- <div id="hide-friends-break" ></div>
- </div>
- <div id="hide-friends-no-wrapper">
- <label id="hide-friends-no-label" for="hide-friends-no">Nein</label>
- <input type="radio" name="hide-friends" id="hide-friends-no" $no_selected value="0" />
-
- <div id="hide-friends-end"></div>
- </div>
diff --git a/view/de/profile-in-directory.tpl b/view/de/profile-in-directory.tpl
deleted file mode 100644
index 9cc62fc69..000000000
--- a/view/de/profile-in-directory.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<p id="profile-in-directory">
-Soll dein Standard-Profil im Verzeichnis dieser Seite veröffentlich werden?
-</p>
-
- <div id="profile-in-dir-yes-wrapper">
- <label id="profile-in-dir-yes-label" for="profile-in-dir-yes">Ja</label>
- <input type="radio" name="profile_in_directory" id="profile-in-dir-yes" $yes_selected value="1" />
-
- <div id="profile-in-dir-break" ></div>
- </div>
- <div id="profile-in-dir-no-wrapper">
- <label id="profile-in-dir-no-label" for="profile-in-dir-no">Nein</label>
- <input type="radio" name="profile_in_directory" id="profile-in-dir-no" $no_selected value="0" />
-
- <div id="profile-in-dir-end"></div>
- </div>
diff --git a/view/de/profile-in-netdir.tpl b/view/de/profile-in-netdir.tpl
deleted file mode 100644
index 26f45ac90..000000000
--- a/view/de/profile-in-netdir.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<p id="profile-in-directory">
-Soll dein Standard-Profil im globalen Verzeichnis veröffentlicht werden?
-</p>
-
- <div id="profile-in-netdir-yes-wrapper">
- <label id="profile-in-netdir-yes-label" for="profile-in-netdir-yes">Ja</label>
- <input type="radio" name="profile_in_netdirectory" id="profile-in-netdir-yes" $yes_selected value="1" />
-
- <div id="profile-in-netdir-break" ></div>
- </div>
- <div id="profile-in-netdir-no-wrapper">
- <label id="profile-in-netdir-no-label" for="profile-in-netdir-no">Nein</label>
- <input type="radio" name="profile_in_netdirectory" id="profile-in-netdir-no" $no_selected value="0" />
-
- <div id="profile-in-netdir-end"></div>
- </div>
diff --git a/view/de/profile.php b/view/de/profile.php
deleted file mode 100644
index 40b6abd55..000000000
--- a/view/de/profile.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html ><?php // This is a perfect example of why I prefer to use template files rather than mixed PHP/HTML ?>
-<html>
-<head>
- <title><?php if(x($page,'title')) echo $page['title']; ?></title>
- <?php if(x($page,'htmlhead')) echo $page['htmlhead']; ?>
-</head>
-<body>
-<header><?php if(x($page,'header')) echo $page['header']; ?></header>
-<nav><div id="top-margin"></div><?php if(x($page,'nav')) echo $page['nav']; ?></nav>
-<aside>
-<?php if((is_array($profile)) && count($profile)) { ?>
-<div class="vcard">
- <?php if(strlen($profile['name'])) { ?>
- <div class="fn"><?php echo $profile['name']; ?></div>
- <?php } ?>
-
- <?php if(strlen($profile['photo'])) { ?>
- <div id="profile-photo-wrapper"><img class="photo" src="<?php echo $profile['photo']; ?>" alt="<?php echo $profile['name']; ?>" /></div>
- <?php } ?>
-
- <div id="profile-extra-links">
- <ul>
- <?php if($profile['uid'] != $_SESSION['uid']) { ?>
- <li><a id="dfrn-request-link" href="dfrn_request/<?php echo $profile['nickname']; ?>">In Verbindung treten</a></li>
- <?php } ?>
- </ul>
-
- </div>
-
- <?php if ( (strlen($profile['address']))
- || (strlen($profile['locality']))
- || (strlen($profile['region']))
- || (strlen($profile['postal-code']))
- || (strlen($profile['country-name']))) { ?>
- <div class="location">Standort:
- <div class="adr">
- <div class="street-address"><?php if(strlen($profile['address'])) echo $profile['address']; ?></div>
- <span class="city-state-zip"><span class="locality"><?php echo $profile['locality']; ?></span><?php if(strlen($profile['locality'])) echo ', '; ?><span class="region"><?php echo $profile['region'] ?></span><?php if(strlen($profile['postal-code'])) { ?> <span class="postal-code"><?php echo $profile['postal-code']; ?></span><?php } ?></span>
- <span class="country-name"><?php echo $profile['country-name']; ?></span>
- </div>
- </div>
-
- <?php } ?>
-
- <?php if(strlen($profile['gender'])) { ?>
- <div class="mf">Geschlecht: <span class="x-gender"><?php echo $profile['gender']; ?></span></div>
-
- <?php } ?>
-
- <?php if(strlen($profile['pubkey'])) { ?>
- <div class="key" style="display: none;"><?php echo $profile['pubkey']; ?></div>
- <?php } ?>
-</div>
-<?php } ?>
-<?php if(strlen($profile['marital'])) { ?>
-<div class="marital"><span class="marital-label"><span class="heart">&hearts;</span> Status: </span><span class="marital-text"><?php echo $profile['marital']; ?></span></div>
-<?php } ?>
-<?php if(strlen($profile['homepage'])) { ?>
-<div class="homepage"><span class="homepage-label">Homepage: </span><span class="homepage-url"><?php echo linkify($profile['homepage']); ?></span></div>
-<?php } ?>
-<?php if(x($page,'aside')) echo $page['aside'] ?>
-</aside>
-<section>
-<?php if(x($page,'content')) echo $page['content']; ?>
-<div id="page-footer"></div>
-</section>
-<footer>
-<?php if(x($page,'footer')) echo $page['footer']; ?>
-</footer>
-</body>
-</html>
-
diff --git a/view/de/profile_advanced.php b/view/de/profile_advanced.php
deleted file mode 100644
index ec6eb6e3a..000000000
--- a/view/de/profile_advanced.php
+++ /dev/null
@@ -1,226 +0,0 @@
-<?php
-
-$o .= '';
-
-$o .= <<< EOT
-
-<h2>Profile</h2>
-
-
-EOT;
-
-if($a->profile['name']) {
-$o .= <<< EOT
-<div id="advanced-profile-name-wrapper" >
-<div id="advanced-profile-name-text">Full Name:</div>
-<div id="advanced-profile-name">{$a->profile['name']}</div>
-</div>
-<div id="advanced-profile-name-end"></div>
-EOT;
-}
-
-if($a->profile['gender']) {
-$o .= <<< EOT
-<div id="advanced-profile-gender-wrapper" >
-<div id="advanced-profile-gender-text">Gender:</div>
-<div id="advanced-profile-gender">{$a->profile['gender']}</div>
-</div>
-<div id="advanced-profile-gender-end"></div>
-EOT;
-}
-
-if(($a->profile['dob']) && ($a->profile['dob'] != '0000-00-00')) {
-$o .= <<< EOT
-<div id="advanced-profile-dob-wrapper" >
-<div id="advanced-profile-dob-text">Birthday:</div>
-EOT;
-
-// If no year, add an arbitrary one so just we can parse the month and day.
-
-$o .= '<div id="advanced-profile-dob">'
- . ((intval($a->profile['dob']))
- ? day_translate(datetime_convert('UTC','UTC',$a->profile['dob'] . ' 00:00 +00:00','j F, Y'))
- : day_translate(datetime_convert('UTC','UTC','2001-' . substr($a->profile['dob'],6) . ' 00:00 +00:00','j F')))
- . "</div>\r\n</div>";
-
-$o .= '<div id="advanced-profile-dob-end"></div>';
-
-}
-
-if($age = age($a->profile['dob'],$a->profile['timezone'],'')) {
-$o .= <<< EOT
-<div id="advanced-profile-age-wrapper" >
-<div id="advanced-profile-age-text">Age:</div>
-<div id="advanced-profile-age">$age</div>
-</div>
-<div id="advanced-profile-age-end"></div>
-EOT;
-}
-
-if($a->profile['marital']) {
-$o .= <<< EOT
-<div id="advanced-profile-marital-wrapper" >
-<div id="advanced-profile-marital-text"><span class="heart">&hearts;</span> Status:</div>
-<div id="advanced-profile-marital">{$a->profile['marital']}</div>
-EOT;
-
-if($a->profile['with'])
- $o .= "<div id=\"advanced-profile-with\">({$a->profile['with']})</div>";
-$o .= <<< EOT
-</div>
-<div id="advanced-profile-marital-end"></div>
-EOT;
-}
-
-if($a->profile['sexual']) {
-$o .= <<< EOT
-<div id="advanced-profile-sexual-wrapper" >
-<div id="advanced-profile-sexual-text">Sexual Preference:</div>
-<div id="advanced-profile-sexual">{$a->profile['sexual']}</div>
-</div>
-<div id="advanced-profile-sexual-end"></div>
-EOT;
-}
-
-if($a->profile['homepage']) {
- $homepage = linkify($a->profile['homepage']);
-$o .= <<< EOT
-<div id="advanced-profile-homepage-wrapper" >
-<div id="advanced-profile-homepage-text">Homepage:</div>
-<div id="advanced-profile-homepage">$homepage</div>
-</div>
-<div id="advanced-profile-homepage-end"></div>
-EOT;
-}
-
-if($a->profile['politic']) {
-$o .= <<< EOT
-<div id="advanced-profile-politic-wrapper" >
-<div id="advanced-profile-politic-text">Political Views:</div>
-<div id="advanced-profile-politic">{$a->profile['politic']}</div>
-</div>
-<div id="advanced-profile-politic-end"></div>
-EOT;
-}
-
-if($a->profile['religion']) {
-$o .= <<< EOT
-<div id="advanced-profile-religion-wrapper" >
-<div id="advanced-profile-religion-text">Religion:</div>
-<div id="advanced-profile-religion">{$a->profile['religion']}</div>
-</div>
-<div id="advanced-profile-religion-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['about'])) {
-$o .= <<< EOT
-<div id="advanced-profile-about-wrapper" >
-<div id="advanced-profile-about-text">About:</div>
-<br />
-<div id="advanced-profile-about">$txt</div>
-</div>
-<div id="advanced-profile-about-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['interest'])) {
-$o .= <<< EOT
-<div id="advanced-profile-interest-wrapper" >
-<div id="advanced-profile-interest-text">Hobbies/Interests:</div>
-<br />
-<div id="advanced-profile-interest">$txt</div>
-</div>
-<div id="advanced-profile-interest-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['contact'])) {
-$o .= <<< EOT
-<div id="advanced-profile-contact-wrapper" >
-<div id="advanced-profile-contact-text">Contact information and Social Networks:</div>
-<br />
-<div id="advanced-profile-contact">$txt</div>
-</div>
-<div id="advanced-profile-contact-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['music'])) {
-$o .= <<< EOT
-<div id="advanced-profile-music-wrapper" >
-<div id="advanced-profile-music-text">Musical interests:</div>
-<br />
-<div id="advanced-profile-music">$txt</div>
-</div>
-<div id="advanced-profile-music-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['book'])) {
-$o .= <<< EOT
-<div id="advanced-profile-book-wrapper" >
-<div id="advanced-profile-book-text">Books, literature:</div>
-<br />
-<div id="advanced-profile-book">$txt</div>
-</div>
-<div id="advanced-profile-book-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['tv'])) {
-$o .= <<< EOT
-<div id="advanced-profile-tv-wrapper" >
-<div id="advanced-profile-tv-text">Television:</div>
-<br />
-<div id="advanced-profile-tv">$txt</div>
-</div>
-<div id="advanced-profile-tv-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['film'])) {
-$o .= <<< EOT
-<div id="advanced-profile-film-wrapper" >
-<div id="advanced-profile-film-text">Film/dance/culture/entertainment:</div>
-<br />
-<div id="advanced-profile-film">$txt</div>
-</div>
-<div id="advanced-profile-film-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['romance'])) {
-$o .= <<< EOT
-<div id="advanced-profile-romance-wrapper" >
-<div id="advanced-profile-romance-text">Love/romance:</div>
-<br />
-<div id="advanced-profile-romance">$txt</div>
-</div>
-<div id="advanced-profile-romance-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['work'])) {
-$o .= <<< EOT
-<div id="advanced-profile-work-wrapper" >
-<div id="advanced-profile-work-text">Work/employment:</div>
-<br />
-<div id="advanced-profile-work">$txt</div>
-</div>
-<div id="advanced-profile-work-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['education'])) {
-$o .= <<< EOT
-<div id="advanced-profile-education-wrapper" >
-<div id="advanced-profile-education-text">School/education:</div>
-<br />
-<div id="advanced-profile-education">$txt</div>
-</div>
-<div id="advanced-profile-education-end"></div>
-EOT;
-}
-
-
diff --git a/view/de/profile_entry_default.tpl b/view/de/profile_entry_default.tpl
deleted file mode 100644
index dff6b53f7..000000000
--- a/view/de/profile_entry_default.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-
-<div class="profile-listing" >
-<div class="profile-listing-photo-wrapper" >
-<a href="profiles/$id" class="profile-listing-edit-link" ><img class="profile-listing-photo" id="profile-listing-photo-$id" src="$photo" alt="Profilbild" /></a>
-</div>
-<div class="profile-listing-photo-end" ></div>
-<div class="profile-listing-name" id="profile-listing-name-$id"><a href="profiles/$id" class="profile-listing-edit-link" >$profile_name</a></div>
-</div>
-<div class="profile-listing-end"></div>
diff --git a/view/de/profile_listing_header.tpl b/view/de/profile_listing_header.tpl
deleted file mode 100644
index 3be77ba0d..000000000
--- a/view/de/profile_listing_header.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<h1>Profile</h1>
-<p id="profile-listing-desc" >
-<a href="profile_photo" >Profilbild ändern</a>
-</p>
-<div id="profile-listing-new-link-wrapper" >
-<a href="profiles/new" id="profile-listing-new-link" name="Neues Profil anlegen" >Neues Profil anlegen</a>
-</div>
-
diff --git a/view/de/profile_photo.tpl b/view/de/profile_photo.tpl
deleted file mode 100644
index 10d7d7b97..000000000
--- a/view/de/profile_photo.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<h1>Profilbild Hochladen</h1>
-
-<form enctype="multipart/form-data" action="profile_photo" method="post">
-
-<div id="profile-photo-upload-wrapper">
-<label id="profile-photo-upload-label" for="profile-photo-upload">Datei hochladen: </label>
-<input name="userfile" type="file" id="profile-photo-upload" size="48" />
-</div>
-
-<div id="profile-photo-submit-wrapper">
-<input type="submit" name="submit" id="profile-photo-submit" value="Upload">
-</div>
-
-</form>
-
-<div id="profile-photo-link-select-wrapper">
-oder <a href='photos/$user'>wähle ein Bild aus einem Album</a>
-</div>
diff --git a/view/de/profile_tabs.tpl b/view/de/profile_tabs.tpl
deleted file mode 100644
index 56e7d626f..000000000
--- a/view/de/profile_tabs.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-
-<div id="profile-tabs-wrapper" >
- <a href="$url" id="profile-tab-status-link" class="profile-tabs" >Status</a>
- <a href="$url?tab=profile" id="profile-tab-profile-link" class="profile-tabs" >Profil</a>
- <a href="$phototab" id="profile-tab-photos-link" class="profile-tabs" >Fotos</a>
-<div id="profile-tabs-end"></div>
-</div> \ No newline at end of file
diff --git a/view/de/pwdreset.tpl b/view/de/pwdreset.tpl
deleted file mode 100644
index 30aca0748..000000000
--- a/view/de/pwdreset.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<h3>Zurücksetzen des Passworts</h3>
-
-<p>
-Dein Passwort wurde wie gewünscht zurück gesetzt.
-</p>
-<p>
-Dein neues Passwort lautet:
-</p>
-<p>
-$newpass
-</p>
-<p>
-Sichere oder kopiere dein neues Passwort und melde dich <a href="$baseurl" >dann hier an</a>.
-</p>
-<p>
-Nachdem du dich angemeldet hast kannst du dein Passwort auf der "Einstellungen" Seite ändern. \ No newline at end of file
diff --git a/view/de/registrations-top.tpl b/view/de/registrations-top.tpl
deleted file mode 100644
index d788b515d..000000000
--- a/view/de/registrations-top.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<h1>Schwebende Neuanmeldungen</h1>
-
-
diff --git a/view/de/settings.tpl b/view/de/settings.tpl
deleted file mode 100644
index 0ef50546f..000000000
--- a/view/de/settings.tpl
+++ /dev/null
@@ -1,163 +0,0 @@
-<h1>Account Einstellungen</h1>
-
-<div id="plugin-settings-link"><a href="settings/addon">Plugin Einstellungen</a></div>
-
-$nickname_block
-
-
-<form action="settings" id="settings-form" method="post" autocomplete="off" >
-
-
-<h3 class="settings-heading">Grundeinstellungen</h3>
-
-<div id="settings-username-wrapper" >
-<label id="settings-username-label" for="settings-username" >Kompletter Name: </label>
-<input type="text" name="username" id="settings-username" value="$username" />
-</div>
-<div id="settings-username-end" ></div>
-
-<div id="settings-email-wrapper" >
-<label id="settings-email-label" for="settings-email" >EMail Adresse: </label>
-<input type="text" name="email" id="settings-email" value="$email" />
-</div>
-<div id="settings-email-end" ></div>
-
-
-
-<div id="settings-timezone-wrapper" >
-<label id="settings-timezone-label" for="timezone_select" >Deine Zeitzone: </label>
-$zoneselect
-</div>
-<div id="settings-timezone-end" ></div>
-
-<div id="settings-defloc-wrapper" >
-<label id="settings-defloc-label" for="settings-defloc" >Standardwert Sendestandort: </label>
-<input type="text" name="defloc" id="settings-defloc" value="$defloc" />
-</div>
-<div id="settings-defloc-end" ></div>
-
-<div id="settings-allowloc-wrapper" >
-<label id="settings-allowloc-label" for="settings-allowloc" >Browser Standort verwenden: </label>
-<input type="checkbox" name="allow_location" id="settings-allowloc" value="1" $loc_checked />
-</div>
-<div id="settings-allowloc-end" ></div>
-
-
-
-
-<div id="settings-theme-select">
-<label id="settings-theme-label" for="theme-select" >Anzeige Thema: </label>
-$theme
-</div>
-<div id="settings-theme-end"></div>
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
-<h3 class="settings-heading">Sicherheits und Privatsphären Einstellungen</h3>
-
-
-<input type="hidden" name="visibility" value="$visibility" />
-
-<div id="settings-maxreq-wrapper">
-<label id="settings-maxreq-label" for="settings-maxreq" >Maximale Anzahl an Freundschaftsanfragen pro Tagy</label>
-<input id="settings-maxreq" name="maxreq" value="$maxreq" />
-<div id="settings-maxreq-desc">(um SPAM zu verhindern)</div>
-</div>
-<div id="settings-maxreq-end"></div>
-
-
-
-
-$profile_in_dir
-
-$profile_in_net_dir
-
-
-
-<div id="settings-default-perms" class="settings-default-perms" >
- <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >&#x21e9; $permissions</div>
- <div id="settings-default-perms-menu-end"></div>
-
- <div id="settings-default-perms-select" style="display: none;" >
-
- $aclselect
-
- </div>
-</div>
-<div id="settings-default-perms-end"></div>
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
-
-<h3 class="settings-heading">Benachrichtigungs Einstellungen</h3>
-
-
-<div id="settings-notify-wrapper">
-<div id="settings-notify-desc">Benachrichtigungsemail senden wenn: </div>
-<label for="notify1" id="settings-label-notify1">Du eine Vorstellung empfängst</label>
-<input id="notify1" type="checkbox" $sel_notify1 name="notify1" value="1" />
-<div id="notify1-end"></div>
-<label for="notify2" id="settings-label-notify2">Deine Vorstellung bestätigt wurde</label>
-<input id="notify2" type="checkbox" $sel_notify2 name="notify2" value="2" />
-<div id="notify2-end"></div>
-<label for="notify3" id="settings-label-notify3">Jemand etwas auf deiner Profilwand postet</label>
-<input id="notify3" type="checkbox" $sel_notify3 name="notify3" value="4" />
-<div id="notify3-end"></div>
-<label for="notify4" id="settings-label-notify4">Jemand einen Folgebeitrag schreibt</label>
-<input id="notify4" type="checkbox" $sel_notify4 name="notify4" value="8" />
-<div id="notify4-end"></div>
-<label for="notify5" id="settings-label-notify5">Du eine private Nachricht erhälst</label>
-<input id="notify5" type="checkbox" $sel_notify5 name="notify5" value="16" />
-<div id="notify5-end"></div>
-</div>
-<div id="settings=notify-end"></div>
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
-<h3 class="settings-heading">Passwort Einstellungen</h3>
-
-
-<div id="settings-password-wrapper" >
-<p id="settings-password-desc" >
-Lass die Passwortfelder frei außer du willst das Passwort ändern.
-</p>
-<label id="settings-password-label" for="settings-password" >Neues Passwort: </label>
-<input type="password" id="settings-password" name="npassword" />
-</div>
-<div id="settings-password-end" ></div>
-
-<div id="settings-confirm-wrapper" >
-<label id="settings-confirm-label" for="settings-confirm" >Bestätigen: </label>
-<input type="password" id="settings-confirm" name="confirm" />
-</div>
-<div id="settings-confirm-end" ></div>
-
-<div id="settings-openid-wrapper" >
- $oidhtml
-</div>
-<div id="settings-openid-end" ></div>
-
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
-<h3 class="settings-heading">Erweiterte Seiteneinstellungen</h3>
-
-$pagetype
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
diff --git a/view/de/settings_nick_set.tpl b/view/de/settings_nick_set.tpl
deleted file mode 100644
index 9336951d4..000000000
--- a/view/de/settings_nick_set.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-
-<div id="settings-nick-wrapper" >
-<p id="settings-nickname-desc">
-<span class="error-message">Deine Profiladresse lautet <strong>'$nickname@$basepath'</strong></span>
-</p>
-$subdir
-
-</div>
-<div id="settings-nick-end" ></div>
diff --git a/view/de/settings_nick_subdir.tpl b/view/de/settings_nick_subdir.tpl
deleted file mode 100644
index fa189a769..000000000
--- a/view/de/settings_nick_subdir.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<p>
-Es scheint so als ob deine Friendika Installation in einem Unterverzeichnis von $hostname
-liegt, es könnte deshalb unzuverlässig arbeiten.
-</p>
-<p>
-Solltest du irgendwelche Probleme haben versuche bitte folgende Profil Adresse
-'<strong>$baseurl/profile/$nickname</strong>' eventuell funktioniert es damit
-besser.
-</p>
diff --git a/view/de/settings_nick_unset.tpl b/view/de/settings_nick_unset.tpl
deleted file mode 100644
index 2a56fda7a..000000000
--- a/view/de/settings_nick_unset.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-
-<div id="settings-nick-wrapper" >
-<p id="settings-nickname-desc">
-Deine Profil URL ist im Moment <strong>'$baseurl/profile/$uid'</strong>.
-Wenn du einen Spitznamen wählst kann man diese URL freundlicher ausdrücken
-z.B. <strong>'spitzname@$basepath'</strong>.
-<br />
-Einmal gewählt kann der Spitzname nicht mehr geändert werden. Er
-<strong>muss</strong> mit einem Buchstaben beginnen. Es sind ausschließlich
-Buchstaben, Zahlen sowie Binde- und Unterstriche erlaubt.
-</p>
-<label id="settings-nick-label" for="settings-nick" >URL Spitzname: </label>
-<input type="text" name="nick" id="settings-nick" value="$nickname" />
-</div>
-<div id="settings-nick-end" ></div>
-
diff --git a/view/de/strings.php b/view/de/strings.php
index b45ddee69..67e1deaff 100644
--- a/view/de/strings.php
+++ b/view/de/strings.php
@@ -1,1116 +1,810 @@
<?php
-$a->strings['Not Found'] = 'Nicht gefunden';
-$a->strings['Page not found.'] = 'Seite nicht gefunden.';
-$a->strings['Permission denied'] = 'Zugriff verweigert';
-$a->strings['Permission denied.'] = 'Zugriff verweigert.';
-$a->strings['Nickname or Email address: '] = 'Spitzname oder Email-Adresse: ';
-$a->strings['Password: '] = 'Passwort: ';
-$a->strings['Login'] = 'Anmeldung';
-$a->strings['Nickname/Email/OpenID: '] = 'Spitzname/Email/OpenID: ';
-$a->strings['Password (if not OpenID): '] = 'Passwort (falls nicht OpenID): ';
-$a->strings['Forgot your password?'] = 'Passwort vergessen?';
-$a->strings['Password Reset'] = 'Passwort zurücksetzen';
-$a->strings['prev'] = 'vorige';
-$a->strings['first'] = 'erste';
-$a->strings['last'] = 'letzte';
-$a->strings['next'] = 'nächste';
-$a->strings[' likes this.'] = ' mag dies.';
-$a->strings[' doesn\'t like this.'] = ' mag dies nicht.';
-$a->strings['people'] = 'Leute';
-$a->strings['like this.'] = 'mögen dies.';
-$a->strings['don\'t like this.'] = 'mögen dies nicht.';
-$a->strings['and'] = 'und';
-$a->strings[', and '] = ' und ';
-$a->strings[' other people'] = ' andere Leute';
-$a->strings[' like this.'] = ' mögen dies.';
-$a->strings[' don\'t like this.'] = ' mögen dies nicht.';
-$a->strings['No contacts'] = 'Keine Kontakte';
-$a->strings['Contacts'] = 'Kontakte';
-$a->strings['View Contacts'] = 'Kontakte anzeigen';
-$a->strings['Search'] = 'Suche';
-$a->strings['No profile'] = 'Kein Profil';
-$a->strings['Connect'] = 'Verbinden';
-$a->strings['Location:'] = 'Ort:';
-$a->strings[', '] = ', ';
-$a->strings['Gender:'] = 'Geschlecht:';
-$a->strings['Status:'] = 'Status:';
-$a->strings['Homepage:'] = 'Homepage:';
-$a->strings['Monday'] = 'Montag';
-$a->strings['Tuesday'] = 'Dienstag';
-$a->strings['Wednesday'] = 'Mittwoch';
-$a->strings['Thursday'] = 'Donnerstag';
-$a->strings['Friday'] = 'Freitag';
-$a->strings['Saturday'] = 'Samstag';
-$a->strings['Sunday'] = 'Sonntag';
-$a->strings['January'] = 'Januar';
-$a->strings['February'] = 'Februar';
-$a->strings['March'] = 'März';
-$a->strings['April'] = 'April';
-$a->strings['May'] = 'Mai';
-$a->strings['June'] = 'Juni';
-$a->strings['July'] = 'Juli';
-$a->strings['August'] = 'August';
-$a->strings['September'] = 'September';
-$a->strings['October'] = 'Oktober';
-$a->strings['November'] = 'November';
-$a->strings['December'] = 'Dezember';
-$a->strings['Birthdays this week:'] = 'Geburtstage diese Woche:';
-$a->strings['(Adjusted for local time)'] = '(an die lokale Zeit angepasst)';
-$a->strings['[today]'] = '[heute]';
-$a->strings['Unable to locate original post.'] = 'Konnte das original Posting nicht finden.';
-$a->strings['Empty post discarded.'] = 'Leere Nachricht wurde verworfen';
-$a->strings['Wall Photos'] = 'Wall Photos';
-$a->strings[' commented on your item at '] = ' commented on your item at ';
-$a->strings[' posted on your profile wall at '] = ' posted on your profile wall at ';
-$a->strings['System error. Post not saved.'] = 'Systemfehler. Nachricht konnte nicht gespeichert werden.';
-$a->strings['This message was sent to you by '] = 'Diese Nachricht wurde dir von ';
-$a->strings[', a member of the Friendika social network.'] = ', a member of the Friendika social network.';
-$a->strings['You may visit them online at'] = 'Du kannst sie online besuchen unter ';
-$a->strings['Please contact the sender by replying to this post if you do not wish to receive these messages.'] = 'Please contact the sender by replying to this post if you do not wish to receive these messages.';
-$a->strings['posted an update.'] = 'posted an update.';
-$a->strings['Item not found.'] = 'Item not found.';
-$a->strings['Invite Friends'] = 'Freunde einladen';
-$a->strings['Connect/Follow [profile address]'] = 'Kontaktiere/Folge [Profil Adresse]';
-$a->strings['Example: bob@example.com, http://example.com/barbara'] = 'Beispiel: bob@example.com, http://example.com/barbara';
-$a->strings['Follow'] = 'Folge';
-$a->strings['Could not access contact record.'] = 'Konnte nicht auf die Kontaktdaten zugreifen.';
-$a->strings['Could not locate selected profile.'] = 'Konnte das ausgewählte Profiel nicht finden.';
-$a->strings['Contact updated.'] = 'Kontakt aktualisiert.';
-$a->strings['Failed to update contact record.'] = 'Aktualisierung der Kontaktdaten fehlgeschlagen.';
-$a->strings['Contact has been '] = 'Kontakt ';
-$a->strings['blocked'] = 'wurde blockiert';
-$a->strings['unblocked'] = 'ist nicht mehr blockiert';
-$a->strings['ignored'] = 'wurde ignoriert';
-$a->strings['unignored'] = 'wird nicht mehr ignoriert';
-$a->strings['stopped following'] = 'wird nicht mehr gefolgt';
-$a->strings['Contact has been removed.'] = 'Kontakt wurde entfernt.';
-$a->strings['Contact not found.'] = 'Kontakt nicht gefunden.';
-$a->strings['Mutual Friendship'] = 'Beidseitige Freundschaft';
-$a->strings['is a fan of yours'] = 'ist ein Fan von dir';
-$a->strings['you are a fan of'] = 'du bist Fan von';
-$a->strings['Never'] = 'Niemals';
-$a->strings['(Update was successful)'] = '(Aktualisierung war erfolgreich)';
-$a->strings['(Update was not successful)'] = '(Aktualisierung war nicht erfolgreich)';
-$a->strings['Contact Editor'] = 'Kontakt Editor';
-$a->strings['Visit $name\'s profile'] = 'Besuche das Profil von $name';
-$a->strings['Block/Unblock contact'] = 'Kontakt blockieren/freischalten';
-$a->strings['Ignore contact'] = 'Ignoriere den Kontakt';
-$a->strings['Delete contact'] = 'Lösche den Kontakt';
-$a->strings['Last updated: '] = 'Letzte Aktualisierung: ';
-$a->strings['Update public posts: '] = 'Aktualisierung öffentlicher Nachrichten: ';
-$a->strings['Update now'] = 'Jetzt aktualisieren';
-$a->strings['Unblock this contact'] = 'Blockade dieses Kontakts aufheben';
-$a->strings['Block this contact'] = 'Diesen Kontakt blockieren';
-$a->strings['Unignore this contact'] = 'Diesen Kontakt nicht mehr ignorieren';
-$a->strings['Ignore this contact'] = 'Diesen Kontakt ignorieren';
-$a->strings['Currently blocked'] = 'Derzeit geblockt';
-$a->strings['Currently ignored'] = 'Derzeit ignoriert';
-$a->strings['Show Blocked Connections'] = 'Zeige geblockte Verbindungen';
-$a->strings['Hide Blocked Connections'] = 'Verstecke geblockte Verbindungen';
-$a->strings['Finding: '] = 'Funde: ';
-$a->strings['Find'] = 'Finde';
-$a->strings['Visit '] = 'Besuche ';
-$a->strings['\'s profile'] = 's Profile';
-$a->strings['Edit contact'] = 'Kontakt bearbeiten';
-$a->strings['Profile not found.'] = 'Profil nicht gefunden.';
-$a->strings['Response from remote site was not understood.'] = 'Antwort der entfernten Gegenstelle unverständlich.';
-$a->strings['Unexpected response from remote site: '] = 'Unerwartete Antwort der Gegenstelle: ';
-$a->strings['Confirmation completed successfully.'] = 'Bestätigung erfolgreich abgeschlossen.';
-$a->strings['Remote site reported: '] = 'Entfernte Seite meldet: ';
-$a->strings['Temporary failure. Please wait and try again.'] = 'Zeitweiser Fehler. Bitte warte einige Momente und versuche es dann noch einmal.';
-$a->strings['Introduction failed or was revoked.'] = 'Vorstellung schlug fehl oder wurde zurück gezogen.';
-$a->strings['Unable to set contact photo.'] = 'Konnte das Bild des Kontakts nicht speichern.';
-$a->strings['is now friends with'] = 'ist jetzt ein(e) Freund(in) von';
-$a->strings['No user record found for '] = 'Kein Nutzereintrag gefunden für ';
-$a->strings['Our site encryption key is apparently messed up.'] = 'Der Verschlüsslungsschlüssel unserer Seite ist anscheinend im Arsch.';
-$a->strings['Empty site URL was provided or URL could not be decrypted by us.'] = 'Leere URL für die Seite erhalten oder die URL konnte nicht entschlüsselt werden.';
-$a->strings['Contact record was not found for you on our site.'] = 'Für diesen Kontakt wurde auf unserer Seite kein Eintrag gefunden.';
-$a->strings['The ID provided by your system is a duplicate on our system. It should work if you try again.'] = 'Die ID die uns dein System angeboten hat ist hier bereits vergeben. Bitte versuche es noch einmal.';
-$a->strings['Unable to set your contact credentials on our system.'] = 'Deine Kontaktreferenzen konnten nicht in unserm System gespeichert werden.';
-$a->strings['Unable to update your contact profile details on our system'] = 'Die Updates für dein Profil konnten nicht gespeichert werden';
-$a->strings['Connection accepted at '] = 'Connection accepted at ';
-$a->strings['Administrator'] = 'Administrator';
-$a->strings['New mail received at '] = 'New mail received at ';
-$a->strings[' commented on an item at '] = ' commented on an item at ';
-$a->strings[' welcomes '] = ' welcomes ';
-$a->strings['This introduction has already been accepted.'] = 'Diese Vorstellung wurde bereits abgeschlossen.';
-$a->strings['Profile location is not valid or does not contain profile information.'] = 'Profile location is not valid or does not contain profile information.';
-$a->strings['Warning: profile location has no identifiable owner name.'] = 'Warning: profile location has no identifiable owner name.';
-$a->strings['Warning: profile location has no profile photo.'] = 'Warning: profile location has no profile photo.';
-$a->strings[' required parameter'] = ' required parameter';
-$a->strings[' was '] = ' was ';
-$a->strings['s were '] = 's were ';
-$a->strings['not found at the given location.'] = 'not found at the given location.';
-$a->strings['Introduction complete.'] = 'Vorstellung abgeschlossen.';
-$a->strings['Unrecoverable protocol error.'] = 'Nicht behebbarer Protokollfehler.';
-$a->strings['Profile unavailable.'] = 'Profil nicht verfügbar.';
-$a->strings[' has received too many connection requests today.'] = ' hat heute zu viele Nachfragen zwecks Kontaktaufnahme erhalten.';
-$a->strings['Spam protection measures have been invoked.'] = 'Maßnahmen zum Spamschutz wurden ergriffen.';
-$a->strings['Friends are advised to please try again in 24 hours.'] = 'Freunde sind angehalten es in 24 Stunden erneut zu versuchen.';
-$a->strings['Invalid locator'] = 'Invalid locator';
-$a->strings['Unable to resolve your name at the provided location.'] = 'Unable to resolve your name at the provided location.';
-$a->strings['You have already introduced yourself here.'] = 'Du hast dich hier bereits vorgestellt.';
-$a->strings['Apparently you are already friends with .'] = 'Offenbar bist du bereits ein Freund von ';
-$a->strings['Invalid profile URL.'] = 'Ungültige Profil URL.';
-$a->strings['Disallowed profile URL.'] = 'Nicht erlaubte Profil URL.';
-$a->strings['Your introduction has been sent.'] = 'Deine Vorstellung wurde abgeschickt.';
-$a->strings['Please login to confirm introduction.'] = 'Bitte melde dich an um die Vorstellung zu bestätigen.';
-$a->strings['Incorrect identity currently logged in. Please login to <strong>this</strong> profile.'] = 'Incorrect identity currently logged in. Please login to <strong>this</strong> profile.';
-$a->strings['[Name Withheld]'] = '[Name Zurückgehalten]';
-$a->strings['Friend/Connection Request'] = 'Freundschafts/Kontakt Anfrage';
-$a->strings['Please answer the following:'] = 'Bitte beantworte folgende Fragen:';
-$a->strings['Does $name know you?'] = 'Kennt $name dich?';
-$a->strings['Yes'] = 'Ja';
-$a->strings['No'] = 'Nein';
-$a->strings['Add a personal note:'] = 'Eine persönliche Notiz anfügen:';
-$a->strings['Please enter your profile address from one of the following supported social networks:'] = 'Bitte gib deine Profil Adresse von einem der unterstützten Sozialen Netzwerken an:';
-$a->strings['Friendika'] = 'Friendika';
-$a->strings['StatusNet/Federated Social Web'] = 'StatusNet/Federated Social Web';
-$a->strings['Private (secure) network'] = 'Privates (sicheres) Netzwerk';
-$a->strings['Public (insecure) network'] = 'Öffentliches (unsicheres) Netzwerk';
-$a->strings['Your profile address:'] = 'Deine Profiladresse:';
-$a->strings['Submit Request'] = 'Anfrage abschicken';
-$a->strings['Cancel'] = 'Abbrechen';
-$a->strings['Global Directory'] = 'Weltweites Verzeichnis';
-$a->strings['Private Message'] = 'Private Nachricht';
-$a->strings["I like this \x28toggle\x29"] = "Ich mag das \x28toggle\x29";
-$a->strings["I don't like this \x28toggle\x29"] = "Ich mag das nicht \x28toggle\x29";
-$a->strings['This is you'] = 'Das bist du';
-$a->strings['View $name\'s profile'] = 'Betrachte das Profil von $name';
-$a->strings['View $owner_name\'s profile'] = 'Betrachte das Profil von $owner_name';
-$a->strings['to'] = 'to';
-$a->strings['Wall-to-Wall'] = 'Wall-to-Wall';
-$a->strings['via Wall-To-Wall:'] = 'via Wall-To-Wall:';
-$a->strings['Item has been removed.'] = 'Eintrag wurde entfernt.';
-$a->strings['Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.'] = 'Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.';
-$a->strings['The profile address specified does not provide adequate information.'] = 'Die angegebene Profiladresse liefert unzureichende Informationen.';
-$a->strings['Limited profile. This person will be unable to receive direct/personal notifications from you.'] = 'Eingeschränktes Profil. Diese Person wird keine direkten/privaten Nachrichten von dir erhalten können.';
-$a->strings['Unable to retrieve contact information.'] = 'Konnte die Kontaktinformationen nicht empfangen.';
-$a->strings['following'] = 'folgen';
-$a->strings['Group created.'] = 'Gruppe erstellt.';
-$a->strings['Could not create group.'] = 'Konnte die Gruppe nicht erstellen.';
-$a->strings['Group not found.'] = 'Gruppe nicht gefunden.';
-$a->strings['Group name changed.'] = 'Gruppenname geändert.';
-$a->strings['Membership list updated.'] = 'Mitgliedsliste aktualisiert.';
-$a->strings['Group removed.'] = 'Gruppe entfernt.';
-$a->strings['Unable to remove group.'] = 'Konnte die Gruppe nicht entfernen.';
-$a->strings['Delete'] = 'Löschen';
-$a->strings['Welcome to '] = 'Willkommen zu ';
-$a->strings['Could not create/connect to database.'] = 'Konnte die Verbindung zur Datenbank nicht aufbauen bzw. die Datenbank anlegen.';
-$a->strings['Connected to database.'] = 'Mit der Datenbank verbunden.';
-$a->strings['Database import succeeded.'] = 'Import der Datenbank erfolgreich.';
-$a->strings['IMPORTANT: You will need to [manually] setup a scheduled task for the poller.'] = 'WICHTIG: Du musst [manuell] einen cron Job (o.ä.) für den Poller einrichten.';
-$a->strings['Please see the file "INSTALL.txt".'] = 'Lies bitte die "INSTALL.txt".';
-$a->strings['Database import failed.'] = 'Import der Datenbank schlug fehl.';
-$a->strings['You may need to import the file "database.sql" manually using phpmyadmin or mysql.'] = 'Möglicherweise musst du die Datei "database.sql" manuell mit phpmyadmin oder mysql importieren.';
-$a->strings['Welcome to Friendika.'] = 'Willkommen bei Friendika.';
-$a->strings['Submit'] = 'Senden';
-$a->strings['Could not find a command line version of PHP in the web server PATH.'] = 'Konnte keine Kommandozeilenversion von PHP im PATH des Servers finden.';
-$a->strings['This is required. Please adjust the configuration file .htconfig.php accordingly.'] = 'Diese wird von Friendika benötigt. Bitte passe die Konfigurationsdatei .htconfig.php entsprechend an.';
-$a->strings['The command line version of PHP on your system does not have "register_argc_argv" enabled.'] = 'Die Kommandozeilenversion von PHP auf deinem System hat "register_argc_argv" nicht aktiviert.';
-$a->strings['This is required for message delivery to work.'] = 'Dies wird für die Auslieferung von Nachrichten benötigt.';
-$a->strings['Error: the "openssl_pkey_new" function on this system is not able to generate encryption keys'] = 'Fehler: Die "openssl_pkey_new" Funktion auf diesem System ist nicht in der lage Verschlüsselungsschlüssel zu erzeugen';
-$a->strings['If running under Windows, please see "http://www.php.net/manual/en/openssl.installation.php".'] = 'Wenn der Server unter Windows läuft, schau dir bitte "http://www.php.net/manual/en/openssl.installation.php" an.';
-$a->strings['Error: Apache webserver mod-rewrite module is required but not installed.'] = 'Fehler: Das Apache Modul mod-rewrite wird benötigt, es ist allerdings nicht installiert.';
-$a->strings['Error: libCURL PHP module required but not installed.'] = 'Fehler: Das libCURL PHP Modul wird benötigt ist aber nicht installiert.';
-$a->strings['Error: GD graphics PHP module with JPEG support required but not installed.'] = 'Fehler: Das GD Graphikmodul für PHP mit JPEG Unterstützung ist nicht installiert.';
-$a->strings['Error: openssl PHP module required but not installed.'] = 'Fehler: Das openssl Modul von PHP ist nict installiert.';
-$a->strings['Error: mysqli PHP module required but not installed.'] = 'Fehler: Das mysqli Modul von PHP ist nicht installiert.';
-$a->strings['The web installer needs to be able to create a file called ".htconfig.php" in the top folder of your web server and it is unable to do so.'] = 'Der Installationswizzard muss in der Lage sein eine Datei im Stammverzeichnis deines Webservers anzuliegen ist allerdings derzeit nicht in der Lage dies zu tun.';
-$a->strings['This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can.'] = 'In den meisten Fällen ist dies ein Problem mit den Schreibrechten, der Webserver könnte keine Schreiberlaubnis haben, selbst wenn du sie hast.';
-$a->strings['Please check with your site documentation or support people to see if this situation can be corrected.'] = 'Bitte überprüfe die Einstellungen und frage im Zweifelsfall dein Support Team um diese Situations zu beheben.';
-$a->strings['If not, you may be required to perform a manual installation. Please see the file "INSTALL.txt" for instructions.'] = 'Sollte dies nicht möglich sein musst du die Installation manuell durchführen. Lies dazu bitte in der Datei "INSTALL.txt".';
-$a->strings['The database configuration file ".htconfig.php" could not be written. Please use the enclosed text to create a configuration file in your web server root.'] = 'Die Konfigurationsdatei ".htconfig.php" konnte nicht angelegt werden. Bitte verwende den angefügten Text um die Datei im Stammverzeichnis deiner Friendika Installation zu erzeugen.';
-$a->strings['Errors encountered creating database tables.'] = 'Fehler aufgetreten wärend der Erzeugung der Datenbank Tabellen.';
-$a->strings[' : '] = ' : ';
-$a->strings['Not a valid email address.'] = 'Keine gültige EMail Adresse.';
-$a->strings['Please join my network on '] = 'Bitte trete meinem Netzwerk bei ';
-$a->strings['Message delivery failed.'] = 'Zustellung der Nachricht fehlgeschlagen.';
-$a->strings[' messages sent.'] = ' Nachrichten gesendet.';
-$a->strings['Send invitations'] = 'Einladungen senden';
-$a->strings['Enter email addresses, one per line:'] = 'EMail Adressen eingeben, eine pro Zeile:';
-$a->strings['Your message:'] = 'Deine Nachricht:';
-$a->strings['Please join my social network on '] = 'Bitte trete meinem sozialen Netzwerk bei ';
-$a->strings['To accept this invitation, please visit:'] = 'Um diese Einladung anzunehmen beuche bitte:';
-$a->strings['Once you have registered, please connect with me via my profile page at:'] = 'Sobald du registriert bist kontaktiere mich bitte auf meiner Profilseite:';
-$a->strings['photo'] = 'Foto';
-$a->strings['status'] = 'Status';
-$a->strings['likes'] = 'mag das';
-$a->strings['doesn\'t like'] = 'mag das nicht';
-$a->strings['\'s'] = '\'s';
-$a->strings['Remote privacy information not available.'] = 'Entfernte Privatsphäreneinstellungen nicht verfügbar.';
-$a->strings['Visible to:'] = 'Sichtbar für:';
-$a->strings['Password reset requested at '] = 'Anfrage zum Zurücksetzen des Passworts erhalten ';
-$a->strings['No recipient selected.'] = 'Kein Empfänger gewählt.';
-$a->strings['[no subject]'] = '[kein Betreff]';
-$a->strings['Unable to locate contact information.'] = 'Konnte die Kontaktinformationen nicht finden.';
-$a->strings['Message sent.'] = 'Nachricht gesendet.';
-$a->strings['Message could not be sent.'] = 'Nachricht konnte nicht gesendet werden.';
-$a->strings['Messages'] = 'Nachrichten';
-$a->strings['Inbox'] = 'Eingang';
-$a->strings['Outbox'] = 'Ausgang';
-$a->strings['New Message'] = 'Neue Nachricht';
-$a->strings['Message deleted.'] = 'Nachricht gelöscht.';
-$a->strings['Conversation removed.'] = 'Unterhaltung gelöscht.';
-$a->strings['Send Private Message'] = 'Private Nachricht senden';
-$a->strings['To:'] = 'An:';
-$a->strings['Subject:'] = 'Betreff:';
-$a->strings['Upload photo'] = 'Foto hochladen';
-$a->strings['Insert web link'] = 'Weblink einfügen';
-$a->strings['Please wait'] = 'Bitte warten';
-$a->strings['No messages.'] = 'Keine Nachrichten.';
-$a->strings['Delete conversation'] = 'Unterhaltung löschen';
-$a->strings['Message not available.'] = 'Nachricht nicht verfügbar.';
-$a->strings['Delete message'] = 'Nachricht löschen';
-$a->strings['Send Reply'] = 'Antwort senden';
-$a->strings['Normal View'] = 'Normale Ansicht';
-$a->strings['New Item View'] = 'Neue Einträge';
-$a->strings['Share'] = 'Share';
-$a->strings['Insert YouTube video'] = 'YouTube Video einfügen';
-$a->strings['Set your location'] = 'Deinen Standort festlegen';
-$a->strings['Clear browser location'] = 'Browser Standort leeren';
-$a->strings['Permission settings'] = 'Berechtigungseinstellungen';
-$a->strings['CC: email addresses'] = 'CC: EMail Addresse';
-$a->strings['Example: bob@example.com, mary@example.com'] = 'Z.B.: bob@example.com, mary@example.com';
-$a->strings['No such group'] = 'Es gibt keine solche Gruppe';
-$a->strings['Group is empty'] = 'Gruppe ist leer';
-$a->strings['Group: '] = 'Gruppe: ';
-$a->strings['View in context'] = 'Im Zusammenhang betrachten';
-$a->strings['Invalid request identifier.'] = 'Invalid request identifier.';
-$a->strings['Discard'] = 'Verwerfen';
-$a->strings['Ignore'] = 'Ignorieren';
-$a->strings['Show Ignored Requests'] = 'Zeige ignorierte Anfragen';
-$a->strings['Hide Ignored Requests'] = 'Verberge ignorierte Anfragen';
-$a->strings['Claims to be known to you: '] = 'Behauptet dich zu kennen: ';
-$a->strings['yes'] = 'ja';
-$a->strings['no'] = 'nein';
-$a->strings['Approve as: '] = 'Genehmigen als: ';
-$a->strings['Friend'] = 'Freund';
-$a->strings['Fan/Admirer'] = 'Fan/Verehrer';
-$a->strings['Notification type: '] = 'Benachrichtigungs Typ: ';
-$a->strings['Friend/Connect Request'] = 'Kontakt-/Freundschaftsanfrage';
-$a->strings['New Follower'] = 'Neuer Bewunderer';
-$a->strings['Approve'] = 'Genehmigen';
-$a->strings['No notifications.'] = 'Keine Benachrichtigungen.';
-$a->strings['No registrations.'] = 'Keine Neuanmeldungen.';
-$a->strings['Login failed.'] = 'Annmeldung fehlgeschlagen.';
-$a->strings['Welcome back '] = 'Willkommen zurück ';
-$a->strings['Photo Albums'] = 'Fotoalben';
-$a->strings['Contact Photos'] = 'Kontaktbilder';
-$a->strings['Contact information unavailable'] = 'Kontakt Informationen nicht verfügbar';
-$a->strings['Profile Photos'] = 'Profilbilder';
-$a->strings['Album not found.'] = 'Album nicht gefunden.';
-$a->strings['Delete Album'] = 'Album löschen';
-$a->strings['Delete Photo'] = 'Foto löschen';
-$a->strings['was tagged in a'] = 'was tagged in a';
-$a->strings['by'] = 'by';
-$a->strings['Image exceeds size limit of '] = 'Die Bildgröße übersteigt das Limit von ';
-$a->strings['Unable to process image.'] = 'Konnte das Bild nicht bearbeiten.';
-$a->strings['Image upload failed.'] = 'Hochladen des Bildes gescheitert.';
-$a->strings['No photos selected'] = 'Keine Bilder ausgewählt';
-$a->strings['Upload Photos'] = 'Bilder hochladen';
-$a->strings['New album name: '] = 'Name des neuen Albums: ';
-$a->strings['or existing album name: '] = 'oder existierender Albumname: ';
-$a->strings['Permissions'] = 'Berechtigungen';
-$a->strings['Edit Album'] = 'Album bearbeiten';
-$a->strings['View Photo'] = 'Fotos betrachten';
-$a->strings['Photo not available'] = 'Foto nicht verfügbar';
-$a->strings['Edit photo'] = 'Foto bearbeiten';
-$a->strings['View Full Size'] = 'Betrachte Originalgröße';
-$a->strings['Tags: '] = 'Tags: ';
-$a->strings['[Remove any tag]'] = '[Tag entfernen]';
-$a->strings['New album name'] = 'Name des neuen Albums';
-$a->strings['Caption'] = 'Bildunterschrift';
-$a->strings['Add a Tag'] = 'Tag hinzufügen';
-$a->strings['Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'] = 'Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping';
-$a->strings['Recent Photos'] = 'Neuste Fotos';
-$a->strings['Upload New Photos'] = 'Weitere Fotos hochladen';
-$a->strings['View Album'] = 'Album betrachten';
-$a->strings['Image uploaded but image cropping failed.'] = 'Bilder hochgeladen aber das Zuschneiden ist fehlgeschlagen.';
-$a->strings['Image size reduction [175] failed.'] = 'Image size reduction [175] failed.';
-$a->strings['Image size reduction [80] failed.'] = 'Image size reduction [80] failed.';
-$a->strings['Image size reduction [48] failed.'] = 'Image size reduction [48] failed.';
-$a->strings['Unable to process image'] = 'Bild konnte nicht verarbeitet werden';
-$a->strings['Image uploaded successfully.'] = 'Bild erfolgreich auf den Server geladen.';
-$a->strings['Image size reduction [640] failed.'] = 'Image size reduction [640] failed.';
-$a->strings['Profile Name is required.'] = 'Profilname ist erforderlich.';
-$a->strings['Profile updated.'] = 'Profil aktualisiert.';
-$a->strings['Profile deleted.'] = 'Profil gelöscht.';
-$a->strings['Profile-'] = 'Profil-';
-$a->strings['New profile created.'] = 'Neues Profil angelegt';
-$a->strings['Profile unavailable to clone.'] = 'Profil nicht zum Duplizieren verfügbar.';
-$a->strings['This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet.'] = 'Dies ist dein <strong>öffentliches</strong> Profil.<br />Es <strong>könnte</strong> für jeden Nutzer des Internets sichtbar sein.';
-$a->strings['Age: '] = 'Alter: ';
-$a->strings['Profile Image'] = 'Profilbild';
-$a->strings['Invalid OpenID url'] = 'Ungültige OpenID URL';
-$a->strings['Please enter the required information.'] = 'Bitte trage die erforderlichen Informationen ein.';
-$a->strings['Please use a shorter name.'] = 'Bitte verwende einen kürzeren Namen.';
-$a->strings['Name too short.'] = 'Der Name ist zu kurz.';
-$a->strings['That doesn\'t appear to be your full (First Last) name.'] = 'Das scheint kein vollständiger Name zu sein, verwende (Vorname Nachname).';
-$a->strings['Your email domain is not among those allowed on this site.'] = 'Die Domain deiner EMail Adresse ist nicht erlaubt auf dieser Seite.';
-$a->strings['Cannot use that email.'] = 'Konnte diese EMail Adresse nicht verwenden';
-$a->strings['Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.'] = 'Dein Spitzname darf nur aus Buchstaben und Zahlen ("a-z","0-9", "_" und "-") bestehen, außerdem muss er mit einem Buchstaben beginnen.';
-$a->strings['Nickname is already registered. Please choose another.'] = 'Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen.';
-$a->strings['SERIOUS ERROR: Generation of security keys failed.'] = 'SERIOUS ERROR: Generation of security keys failed.';
-$a->strings['An error occurred during registration. Please try again.'] = 'Wärend der Anmeldung ist ein Fehler aufgetreten. Bitte versuche es noch einmal.';
-$a->strings['An error occurred creating your default profile. Please try again.'] = 'Bei der Erstellung des Standard-Profils ist ein Fehler aufgetreten. Bitte versuche es noch einmal.';
-$a->strings['Registration details for '] = 'Details der Registrierung für ';
-$a->strings['Registration successful. Please check your email for further instructions.'] = 'Registration erfolgreich. Eine EMail mit weiteren Anweisungen wurde an dich gesendet.';
-$a->strings['Failed to send email message. Here is the message that failed.'] = 'Konnte die EMail nicht versenden. Hier ist die Nachricht die nicht gesendet werden konnte.';
-$a->strings['Your registration can not be processed.'] = 'Deine Registration konnte nicht verarbeitet werden.';
-$a->strings['Registration request at '] = 'Registrationsanfrage für ';
-$a->strings['Your registration is pending approval by the site owner.'] = 'Deine Registration muss noch vom Betreiber der Seite freigegeben werden.';
-$a->strings['You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking \'Register\'.'] = 'Du kannst dieses Formular auch (optional) mit deiner OpenID ausfüllen indem du deine OpenID angibst und \'Registrieren\' klickst.';
-$a->strings['If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'] = 'Wenn du nicht mit OpenID vertraut bist, lass dieses Feld bitte leer und fülle die restlichen Felder aus.';
-$a->strings['Your OpenID (optional): '] = 'Deine OpenID (optional): ';
-$a->strings['Registration'] = 'Registration';
-$a->strings['Your Full Name (e.g. Joe Smith): '] = 'Vollständiger Name (z.B. Joe Smith): ';
-$a->strings['Your Email Address: '] = 'Deine EMail Adresse: ';
-$a->strings['Choose a profile nickname. This must begin with a text character. Your global profile locator will then be \'<strong>nickname@$sitename</strong>\'.'] = 'Wähle eine Spitznamen, der mit einem Buchstaben beginnt. Deine globale Profiladresse wird dann \'<strong>spitzname@$sitename</strong>\' sein.';
-$a->strings['Choose a nickname: '] = 'Spitznamen wählen: ';
-$a->strings['Register'] = 'Registrieren';
-$a->strings['Please login.'] = 'Bitte melde dich an.';
-$a->strings['Registration revoked for '] = 'Registration zurückgezogen ';
-$a->strings['Account approved.'] = 'Account freigegeben.';
-$a->strings['Remove My Account'] = 'Account löschen';
-$a->strings['This will completely remove your account. Once this has been done it is not recoverable.'] = 'This will completely remove your account. Once this has been done it is not recoverable.';
-$a->strings['Please enter your password for verification:'] = 'Please enter your password for verification:';
-$a->strings['Passwords do not match. Password unchanged.'] = 'Die Passwörter stimmen nicht überein. Das Passwort bleibt unverändert.';
-$a->strings['Empty passwords are not allowed. Password unchanged.'] = 'Leere Passwörter sind nicht erlaubt. Passwort bleibt unverändert.';
-$a->strings['Password changed.'] = 'Passwort ändern.';
-$a->strings['Password update failed. Please try again.'] = 'Aktualisierung des Passworts gescheitert, bitte versuche es noch einmal';
-$a->strings[' Please use a shorter name.'] = ' Bitte verwende einen kürzeren Namen.';
-$a->strings[' Name too short.'] = ' Name ist zu kurz.';
-$a->strings[' Not valid email.'] = ' Keine gültige EMail.';
-$a->strings[' Cannot change to that email.'] = ' Cannot change to that email.';
-$a->strings['Settings updated.'] = 'Einstellungen aktualisiert.';
-$a->strings['Plugin Settings'] = 'Plugin Einstellungen';
-$a->strings['Account Settings'] = 'Account Einstellungen';
-$a->strings['No Plugin settings configured'] = 'Keine Erweiterungen konfiguriert';
-$a->strings['OpenID: '] = 'OpenID: ';
-$a->strings['&nbsp;(Optional) Allow this OpenID to login to this account.'] = '&nbsp;(Optional) Erlaube dieser OpenID sich für diesen Account anzumelden.';
-$a->strings['Profile is <strong>not published</strong>.'] = 'Profil ist <strong>nicht veröffentlicht</strong>.';
-$a->strings['Default Post Permissions'] = 'Grundeinstellung für Veröffentlichungen';
-$a->strings['Tag removed'] = 'Tag entfernt';
-$a->strings['Remove Item Tag'] = 'Gegenstands Tag entfernen';
-$a->strings['Select a tag to remove: '] = 'Wähle ein Tag zum Entfernen aus: ';
-$a->strings['Remove'] = 'Entfernen';
-$a->strings['No contacts.'] = 'Keine Kontakte.';
-$a->strings['Visible To:'] = 'Sichtbar für:';
-$a->strings['Groups'] = 'Gruppen';
-$a->strings['Except For:'] = 'Abgesehen von:';
-$a->strings['Logged out.'] = 'Abgemeldet.';
-$a->strings['Unknown | Not categorised'] = 'Unbekannt | Nicht kategorisiert';
-$a->strings['Block immediately'] = 'Sofort blockieren';
-$a->strings['Shady, spammer, self-marketer'] = 'Zwielichtig, Spammer, Selbstdarsteller';
-$a->strings['Known to me, but no opinion'] = 'Ist mir bekannt, hab aber keine Meinung';
-$a->strings['OK, probably harmless'] = 'OK, wahrscheinlich harmlos';
-$a->strings['Reputable, has my trust'] = 'Seriös, hat mein Vertrauen';
-$a->strings['Frequently'] = 'Häufig';
-$a->strings['Hourly'] = 'Stündlich';
-$a->strings['Twice daily'] = 'Zweimal Täglich';
-$a->strings['Daily'] = 'Täglich';
-$a->strings['Weekly'] = 'Wöchendlich';
-$a->strings['Monthly'] = 'Monatlich';
-$a->strings['Miscellaneous'] = 'Verschiedenes';
-$a->strings['less than a second ago'] = 'vor weniger als einer Sekunde';
-$a->strings['year'] = 'Jahr';
-$a->strings['years'] = 'Jahre';
-$a->strings['month'] = 'Monat';
-$a->strings['months'] = 'Monate';
-$a->strings['week'] = 'Woche';
-$a->strings['weeks'] = 'Wochen';
-$a->strings['day'] = 'Tag';
-$a->strings['days'] = 'Tage';
-$a->strings['hour'] = 'Stunde';
-$a->strings['hours'] = 'Stunden';
-$a->strings['minute'] = 'Minute';
-$a->strings['minutes'] = 'Minuten';
-$a->strings['second'] = 'Sekunde';
-$a->strings['seconds'] = 'Sekunden';
-$a->strings[' ago'] = ' her';
-$a->strings['Create a new group'] = 'Neue Gruppe erstellen';
-$a->strings['Everybody'] = 'Alle Kontakte';
-$a->strings['Birthday:'] = 'Geburtstag:';
-$a->strings['Logout'] = 'Abmelden';
-$a->strings['Home'] = 'Persönlich';
-$a->strings['Directory'] = 'Verzeichnis';
-$a->strings['Network'] = 'Netzwerk';
-$a->strings['Notifications'] = 'Benachrichtigungen';
-$a->strings['Settings'] = 'Einstellungen';
-$a->strings['Profiles'] = 'Profile';
-$a->strings['Embedding disabled'] = 'Einbettungen deaktiviert';
-$a->strings['Male'] = 'Männlich';
-$a->strings['Female'] = 'Weiblich';
-$a->strings['Currently Male'] = 'Momentan Männlich';
-$a->strings['Currently Female'] = 'Momentan Weiblich';
-$a->strings['Mostly Male'] = 'Hauptsächlich Männlich';
-$a->strings['Mostly Female'] = 'Hauptsächlich Weiblich';
-$a->strings['Transgender'] = 'Transgender';
-$a->strings['Intersex'] = 'Intersex';
-$a->strings['Transsexual'] = 'Transsexuel';
-$a->strings['Hermaphrodite'] = 'Hermaphrodit';
-$a->strings['Neuter'] = 'Neuter';
-$a->strings['Non-specific'] = 'Nicht spezifiziert';
-$a->strings['Other'] = 'Andere';
-$a->strings['Undecided'] = 'Unentschieden';
-$a->strings['Males'] = 'Männer';
-$a->strings['Females'] = 'Frauen';
-$a->strings['Gay'] = 'Schwul';
-$a->strings['Lesbian'] = 'Lesbisch';
-$a->strings['No Preference'] = 'Keine Vorlieben';
-$a->strings['Bisexual'] = 'Bisexuel';
-$a->strings['Autosexual'] = 'Autosexual';
-$a->strings['Abstinent'] = 'Abstinent';
-$a->strings['Virgin'] = 'Jungfrau';
-$a->strings['Deviant'] = 'Deviant';
-$a->strings['Fetish'] = 'Fetish';
-$a->strings['Oodles'] = 'Oodles';
-$a->strings['Nonsexual'] = 'Nonsexual';
-$a->strings['Single'] = 'Single';
-$a->strings['Lonely'] = 'Einsam';
-$a->strings['Available'] = 'Verfügbar';
-$a->strings['Unavailable'] = 'Nicht verfügbar';
-$a->strings['Dating'] = 'Dating';
-$a->strings['Unfaithful'] = 'Untreu';
-$a->strings['Sex Addict'] = 'Sex Besessen';
-$a->strings['Friends'] = 'Freunde';
-$a->strings['Friends/Benefits'] = 'Friends/Benefits';
-$a->strings['Casual'] = 'Casual';
-$a->strings['Engaged'] = 'Verlobt';
-$a->strings['Married'] = 'Verheiratet';
-$a->strings['Partners'] = 'Partner';
-$a->strings['Cohabiting'] = 'kohabitierend';
-$a->strings['Happy'] = 'Glücklich';
-$a->strings['Not Looking'] = 'Nicht auf der Suche';
-$a->strings['Swinger'] = 'Swinger';
-$a->strings['Betrayed'] = 'Betrogen';
-$a->strings['Separated'] = 'Getrennt';
-$a->strings['Unstable'] = 'Unstabil';
-$a->strings['Divorced'] = 'Geschieden';
-$a->strings['Widowed'] = 'Verwidwet';
-$a->strings['Uncertain'] = 'Unsicher';
-$a->strings['Complicated'] = 'Kompliziert';
-$a->strings['Don\'t care'] = 'Ist mir nicht wichtig';
-$a->strings['Ask me'] = 'Frag mich';
-$a->strings['Facebook status update failed.'] = 'Konnte den Facebook Status nicht aktualisieren.';
-$a->strings['Select files to upload: '] = 'Wähle Dateien zum Upload aus: ';
-$a->strings['Use the following controls only if the Java uploader [above] fails to launch.'] = 'Verwende die folgenden Kontrollen nur, wenn der Java Uploader [oben] nicht funktioniert.';
-$a->strings['Upload a file'] = 'Datei hochladen';
-$a->strings['Drop files here to upload'] = 'Ziehe die Dateien hier her die du hochladen willst';
-$a->strings['Failed'] = 'Fehlgeschlagen';
-$a->strings['No files were uploaded.'] = 'Keine Dateien hochgeladen.';
-$a->strings['Uploaded file is empty'] = 'Hochgeladene Datei ist leer';
-$a->strings['Uploaded file is too large'] = 'Hochgeladene Datei ist zu groß';
-$a->strings['File has an invalid extension, it should be one of '] = 'Die Dateiextension ist nicht erlaubt, sie muss eine der folgenden sein ';
-$a->strings['Upload was cancelled, or server error encountered'] = 'Upload abgebrochen oder Serverfehler aufgetreten';
-$a->strings['Randplace Settings'] = 'Randplace Einstellungen';
-$a->strings['Enable Randplace Plugin'] = 'Randplace Erweiterung aktivieren';
-$a->strings['No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation.'] = 'Kein OAuth Consumer Schlüsselpaar für StatusNet gefunden. Registriere deinen Friendika Account als Desktopapplikation und trage hier den OAuth Consumer Schlüssel, das Geheimnis und die Basis-URL der StatusNet API ein.<br />Bevor du eine neue Anwendung registrierst, kannst du auch erstmal den Admin deiner Friendika Seite fragen, ob es für deine bevorzugte StatusNet Instanz eventuell bereits ein OAuth Schlüsselpaar gibt.';
-$a->strings['OAuth Consumer Key'] = 'OAuth Consumer Schlüssel';
-$a->strings['OAuth Consumer Secret'] = 'OAuth Consumer Geheimnis';
-$a->strings['Base API Path (remember the trailing /)'] = 'Basis-URL der StatusNet API (vergiss den abschließenden / nicht)';
-$a->strings['To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet.'] = 'To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet.';
-$a->strings['Log in with StatusNet'] = 'Bei StatusNet anmelden';
-$a->strings['Copy the security code from StatusNet here'] = 'Kopiere den Sicherheitscode von StatusNet hier her';
-$a->strings['Currently connected to: '] = 'Momentan verbunden mit: ';
-$a->strings['If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well.'] = 'Wenn dies aktiviert ist, werden alle deine <strong>öffentlichen</strong> Nachricten auch auf dem verbundenen StatusNet Account veröffentlicht.';
-$a->strings['Send public postings to StatusNet'] = 'Veröffentliche öffentliche Nachrichten auf StatusNet';
-$a->strings['Clear OAuth configuration'] = 'OAuth Konfiguration löschen';
-$a->strings['Twitter Posting Settings'] = 'Twitter Posting Einstellungen';
-$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'No consumer key pair for Twitter found. Please contact your site administrator.';
-$a->strings['At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'Auf dieser Friendika Instanz wurde das Twitter Plugin aktiviert dein Account ist allerdings noch nicht mit einem Twitter Account verbunden. Um deinen Account mit Twitter zu verbinden, klick auf den Button weiter unten und gib die PIN die du auf Twitter erhälst hier ein. Es werden ausschließlich deine <strong>öffentlichen</strong> Nachrichten auf Twitter veröffentlicht.';
-$a->strings['Copy the PIN from Twitter here'] = 'Kopiere die Twitter PIN hier her';
-$a->strings['If enabled all your <strong>public</strong> postings will be posted to the associated Twitter account as well.'] = 'Wenn dies aktiviert ist, werden alle deine <strong>öffentlichen</strong> Nachricten auch auf dem verbundenen Twitter Account veröffentlicht.';
-$a->strings['Send public postings to Twitter'] = 'Veröffentliche öffentliche Nachrichten auf Twitter';
-$a->strings['Africa/Abidjan'] = 'Africa/Abidjan';
-$a->strings['Africa/Accra'] = 'Africa/Accra';
-$a->strings['Africa/Addis_Ababa'] = 'Africa/Addis_Ababa';
-$a->strings['Africa/Algiers'] = 'Africa/Algiers';
-$a->strings['Africa/Asmara'] = 'Africa/Asmara';
-$a->strings['Africa/Asmera'] = 'Africa/Asmera';
-$a->strings['Africa/Bamako'] = 'Africa/Bamako';
-$a->strings['Africa/Bangui'] = 'Africa/Bangui';
-$a->strings['Africa/Banjul'] = 'Africa/Banjul';
-$a->strings['Africa/Bissau'] = 'Africa/Bissau';
-$a->strings['Africa/Blantyre'] = 'Africa/Blantyre';
-$a->strings['Africa/Brazzaville'] = 'Africa/Brazzaville';
-$a->strings['Africa/Bujumbura'] = 'Africa/Bujumbura';
-$a->strings['Africa/Cairo'] = 'Africa/Cairo';
-$a->strings['Africa/Casablanca'] = 'Africa/Casablanca';
-$a->strings['Africa/Ceuta'] = 'Africa/Ceuta';
-$a->strings['Africa/Conakry'] = 'Africa/Conakry';
-$a->strings['Africa/Dakar'] = 'Africa/Dakar';
-$a->strings['Africa/Dar_es_Salaam'] = 'Africa/Dar_es_Salaam';
-$a->strings['Africa/Djibouti'] = 'Africa/Djibouti';
-$a->strings['Africa/Douala'] = 'Africa/Douala';
-$a->strings['Africa/El_Aaiun'] = 'Africa/El_Aaiun';
-$a->strings['Africa/Freetown'] = 'Africa/Freetown';
-$a->strings['Africa/Gaborone'] = 'Africa/Gaborone';
-$a->strings['Africa/Harare'] = 'Africa/Harare';
-$a->strings['Africa/Johannesburg'] = 'Africa/Johannesburg';
-$a->strings['Africa/Kampala'] = 'Africa/Kampala';
-$a->strings['Africa/Khartoum'] = 'Africa/Khartoum';
-$a->strings['Africa/Kigali'] = 'Africa/Kigali';
-$a->strings['Africa/Kinshasa'] = 'Africa/Kinshasa';
-$a->strings['Africa/Lagos'] = 'Africa/Lagos';
-$a->strings['Africa/Libreville'] = 'Africa/Libreville';
-$a->strings['Africa/Lome'] = 'Africa/Lome';
-$a->strings['Africa/Luanda'] = 'Africa/Luanda';
-$a->strings['Africa/Lubumbashi'] = 'Africa/Lubumbashi';
-$a->strings['Africa/Lusaka'] = 'Africa/Lusaka';
-$a->strings['Africa/Malabo'] = 'Africa/Malabo';
-$a->strings['Africa/Maputo'] = 'Africa/Maputo';
-$a->strings['Africa/Maseru'] = 'Africa/Maseru';
-$a->strings['Africa/Mbabane'] = 'Africa/Mbabane';
-$a->strings['Africa/Mogadishu'] = 'Africa/Mogadishu';
-$a->strings['Africa/Monrovia'] = 'Africa/Monrovia';
-$a->strings['Africa/Nairobi'] = 'Africa/Nairobi';
-$a->strings['Africa/Ndjamena'] = 'Africa/Ndjamena';
-$a->strings['Africa/Niamey'] = 'Africa/Niamey';
-$a->strings['Africa/Nouakchott'] = 'Africa/Nouakchott';
-$a->strings['Africa/Ouagadougou'] = 'Africa/Ouagadougou';
-$a->strings['Africa/Porto-Novo'] = 'Africa/Porto-Novo';
-$a->strings['Africa/Sao_Tome'] = 'Africa/Sao_Tome';
-$a->strings['Africa/Timbuktu'] = 'Africa/Timbuktu';
-$a->strings['Africa/Tripoli'] = 'Africa/Tripoli';
-$a->strings['Africa/Tunis'] = 'Africa/Tunis';
-$a->strings['Africa/Windhoek'] = 'Africa/Windhoek';
-$a->strings['America/Adak'] = 'America/Adak';
-$a->strings['America/Anchorage'] = 'America/Anchorage';
-$a->strings['America/Anguilla'] = 'America/Anguilla';
-$a->strings['America/Antigua'] = 'America/Antigua';
-$a->strings['America/Araguaina'] = 'America/Araguaina';
-$a->strings['America/Argentina/Buenos_Aires'] = 'America/Argentina/Buenos_Aires';
-$a->strings['America/Argentina/Catamarca'] = 'America/Argentina/Catamarca';
-$a->strings['America/Argentina/ComodRivadavia'] = 'America/Argentina/ComodRivadavia';
-$a->strings['America/Argentina/Cordoba'] = 'America/Argentina/Cordoba';
-$a->strings['America/Argentina/Jujuy'] = 'America/Argentina/Jujuy';
-$a->strings['America/Argentina/La_Rioja'] = 'America/Argentina/La_Rioja';
-$a->strings['America/Argentina/Mendoza'] = 'America/Argentina/Mendoza';
-$a->strings['America/Argentina/Rio_Gallegos'] = 'America/Argentina/Rio_Gallegos';
-$a->strings['America/Argentina/Salta'] = 'America/Argentina/Salta';
-$a->strings['America/Argentina/San_Juan'] = 'America/Argentina/San_Juan';
-$a->strings['America/Argentina/San_Luis'] = 'America/Argentina/San_Luis';
-$a->strings['America/Argentina/Tucuman'] = 'America/Argentina/Tucuman';
-$a->strings['America/Argentina/Ushuaia'] = 'America/Argentina/Ushuaia';
-$a->strings['America/Aruba'] = 'America/Aruba';
-$a->strings['America/Asuncion'] = 'America/Asuncion';
-$a->strings['America/Atikokan'] = 'America/Atikokan';
-$a->strings['America/Atka'] = 'America/Atka';
-$a->strings['America/Bahia'] = 'America/Bahia';
-$a->strings['America/Barbados'] = 'America/Barbados';
-$a->strings['America/Belem'] = 'America/Belem';
-$a->strings['America/Belize'] = 'America/Belize';
-$a->strings['America/Blanc-Sablon'] = 'America/Blanc-Sablon';
-$a->strings['America/Boa_Vista'] = 'America/Boa_Vista';
-$a->strings['America/Bogota'] = 'America/Bogota';
-$a->strings['America/Boise'] = 'America/Boise';
-$a->strings['America/Buenos_Aires'] = 'America/Buenos_Aires';
-$a->strings['America/Cambridge_Bay'] = 'America/Cambridge_Bay';
-$a->strings['America/Campo_Grande'] = 'America/Campo_Grande';
-$a->strings['America/Cancun'] = 'America/Cancun';
-$a->strings['America/Caracas'] = 'America/Caracas';
-$a->strings['America/Catamarca'] = 'America/Catamarca';
-$a->strings['America/Cayenne'] = 'America/Cayenne';
-$a->strings['America/Cayman'] = 'America/Cayman';
-$a->strings['America/Chicago'] = 'America/Chicago';
-$a->strings['America/Chihuahua'] = 'America/Chihuahua';
-$a->strings['America/Coral_Harbour'] = 'America/Coral_Harbour';
-$a->strings['America/Cordoba'] = 'America/Cordoba';
-$a->strings['America/Costa_Rica'] = 'America/Costa_Rica';
-$a->strings['America/Cuiaba'] = 'America/Cuiaba';
-$a->strings['America/Curacao'] = 'America/Curacao';
-$a->strings['America/Danmarkshavn'] = 'America/Danmarkshavn';
-$a->strings['America/Dawson'] = 'America/Dawson';
-$a->strings['America/Dawson_Creek'] = 'America/Dawson_Creek';
-$a->strings['America/Denver'] = 'America/Denver';
-$a->strings['America/Detroit'] = 'America/Detroit';
-$a->strings['America/Dominica'] = 'America/Dominica';
-$a->strings['America/Edmonton'] = 'America/Edmonton';
-$a->strings['America/Eirunepe'] = 'America/Eirunepe';
-$a->strings['America/El_Salvador'] = 'America/El_Salvador';
-$a->strings['America/Ensenada'] = 'America/Ensenada';
-$a->strings['America/Fort_Wayne'] = 'America/Fort_Wayne';
-$a->strings['America/Fortaleza'] = 'America/Fortaleza';
-$a->strings['America/Glace_Bay'] = 'America/Glace_Bay';
-$a->strings['America/Godthab'] = 'America/Godthab';
-$a->strings['America/Goose_Bay'] = 'America/Goose_Bay';
-$a->strings['America/Grand_Turk'] = 'America/Grand_Turk';
-$a->strings['America/Grenada'] = 'America/Grenada';
-$a->strings['America/Guadeloupe'] = 'America/Guadeloupe';
-$a->strings['America/Guatemala'] = 'America/Guatemala';
-$a->strings['America/Guayaquil'] = 'America/Guayaquil';
-$a->strings['America/Guyana'] = 'America/Guyana';
-$a->strings['America/Halifax'] = 'America/Halifax';
-$a->strings['America/Havana'] = 'America/Havana';
-$a->strings['America/Hermosillo'] = 'America/Hermosillo';
-$a->strings['America/Indiana/Indianapolis'] = 'America/Indiana/Indianapolis';
-$a->strings['America/Indiana/Knox'] = 'America/Indiana/Knox';
-$a->strings['America/Indiana/Marengo'] = 'America/Indiana/Marengo';
-$a->strings['America/Indiana/Petersburg'] = 'America/Indiana/Petersburg';
-$a->strings['America/Indiana/Tell_City'] = 'America/Indiana/Tell_City';
-$a->strings['America/Indiana/Vevay'] = 'America/Indiana/Vevay';
-$a->strings['America/Indiana/Vincennes'] = 'America/Indiana/Vincennes';
-$a->strings['America/Indiana/Winamac'] = 'America/Indiana/Winamac';
-$a->strings['America/Indianapolis'] = 'America/Indianapolis';
-$a->strings['America/Inuvik'] = 'America/Inuvik';
-$a->strings['America/Iqaluit'] = 'America/Iqaluit';
-$a->strings['America/Jamaica'] = 'America/Jamaica';
-$a->strings['America/Jujuy'] = 'America/Jujuy';
-$a->strings['America/Juneau'] = 'America/Juneau';
-$a->strings['America/Kentucky/Louisville'] = 'America/Kentucky/Louisville';
-$a->strings['America/Kentucky/Monticello'] = 'America/Kentucky/Monticello';
-$a->strings['America/Knox_IN'] = 'America/Knox_IN';
-$a->strings['America/La_Paz'] = 'America/La_Paz';
-$a->strings['America/Lima'] = 'America/Lima';
-$a->strings['America/Los_Angeles'] = 'America/Los_Angeles';
-$a->strings['America/Louisville'] = 'America/Louisville';
-$a->strings['America/Maceio'] = 'America/Maceio';
-$a->strings['America/Managua'] = 'America/Managua';
-$a->strings['America/Manaus'] = 'America/Manaus';
-$a->strings['America/Marigot'] = 'America/Marigot';
-$a->strings['America/Martinique'] = 'America/Martinique';
-$a->strings['America/Matamoros'] = 'America/Matamoros';
-$a->strings['America/Mazatlan'] = 'America/Mazatlan';
-$a->strings['America/Mendoza'] = 'America/Mendoza';
-$a->strings['America/Menominee'] = 'America/Menominee';
-$a->strings['America/Merida'] = 'America/Merida';
-$a->strings['America/Mexico_City'] = 'America/Mexico_City';
-$a->strings['America/Miquelon'] = 'America/Miquelon';
-$a->strings['America/Moncton'] = 'America/Moncton';
-$a->strings['America/Monterrey'] = 'America/Monterrey';
-$a->strings['America/Montevideo'] = 'America/Montevideo';
-$a->strings['America/Montreal'] = 'America/Montreal';
-$a->strings['America/Montserrat'] = 'America/Montserrat';
-$a->strings['America/Nassau'] = 'America/Nassau';
-$a->strings['America/New_York'] = 'America/New_York';
-$a->strings['America/Nipigon'] = 'America/Nipigon';
-$a->strings['America/Nome'] = 'America/Nome';
-$a->strings['America/Noronha'] = 'America/Noronha';
-$a->strings['America/North_Dakota/Center'] = 'America/North_Dakota/Center';
-$a->strings['America/North_Dakota/New_Salem'] = 'America/North_Dakota/New_Salem';
-$a->strings['America/Ojinaga'] = 'America/Ojinaga';
-$a->strings['America/Panama'] = 'America/Panama';
-$a->strings['America/Pangnirtung'] = 'America/Pangnirtung';
-$a->strings['America/Paramaribo'] = 'America/Paramaribo';
-$a->strings['America/Phoenix'] = 'America/Phoenix';
-$a->strings['America/Port-au-Prince'] = 'America/Port-au-Prince';
-$a->strings['America/Port_of_Spain'] = 'America/Port_of_Spain';
-$a->strings['America/Porto_Acre'] = 'America/Porto_Acre';
-$a->strings['America/Porto_Velho'] = 'America/Porto_Velho';
-$a->strings['America/Puerto_Rico'] = 'America/Puerto_Rico';
-$a->strings['America/Rainy_River'] = 'America/Rainy_River';
-$a->strings['America/Rankin_Inlet'] = 'America/Rankin_Inlet';
-$a->strings['America/Recife'] = 'America/Recife';
-$a->strings['America/Regina'] = 'America/Regina';
-$a->strings['America/Resolute'] = 'America/Resolute';
-$a->strings['America/Rio_Branco'] = 'America/Rio_Branco';
-$a->strings['America/Rosario'] = 'America/Rosario';
-$a->strings['America/Santa_Isabel'] = 'America/Santa_Isabel';
-$a->strings['America/Santarem'] = 'America/Santarem';
-$a->strings['America/Santiago'] = 'America/Santiago';
-$a->strings['America/Santo_Domingo'] = 'America/Santo_Domingo';
-$a->strings['America/Sao_Paulo'] = 'America/Sao_Paulo';
-$a->strings['America/Scoresbysund'] = 'America/Scoresbysund';
-$a->strings['America/Shiprock'] = 'America/Shiprock';
-$a->strings['America/St_Barthelemy'] = 'America/St_Barthelemy';
-$a->strings['America/St_Johns'] = 'America/St_Johns';
-$a->strings['America/St_Kitts'] = 'America/St_Kitts';
-$a->strings['America/St_Lucia'] = 'America/St_Lucia';
-$a->strings['America/St_Thomas'] = 'America/St_Thomas';
-$a->strings['America/St_Vincent'] = 'America/St_Vincent';
-$a->strings['America/Swift_Current'] = 'America/Swift_Current';
-$a->strings['America/Tegucigalpa'] = 'America/Tegucigalpa';
-$a->strings['America/Thule'] = 'America/Thule';
-$a->strings['America/Thunder_Bay'] = 'America/Thunder_Bay';
-$a->strings['America/Tijuana'] = 'America/Tijuana';
-$a->strings['America/Toronto'] = 'America/Toronto';
-$a->strings['America/Tortola'] = 'America/Tortola';
-$a->strings['America/Vancouver'] = 'America/Vancouver';
-$a->strings['America/Virgin'] = 'America/Virgin';
-$a->strings['America/Whitehorse'] = 'America/Whitehorse';
-$a->strings['America/Winnipeg'] = 'America/Winnipeg';
-$a->strings['America/Yakutat'] = 'America/Yakutat';
-$a->strings['America/Yellowknife'] = 'America/Yellowknife';
-$a->strings['Antarctica/Casey'] = 'Antarctica/Casey';
-$a->strings['Antarctica/Davis'] = 'Antarctica/Davis';
-$a->strings['Antarctica/DumontDUrville'] = 'Antarctica/DumontDUrville';
-$a->strings['Antarctica/Macquarie'] = 'Antarctica/Macquarie';
-$a->strings['Antarctica/Mawson'] = 'Antarctica/Mawson';
-$a->strings['Antarctica/McMurdo'] = 'Antarctica/McMurdo';
-$a->strings['Antarctica/Palmer'] = 'Antarctica/Palmer';
-$a->strings['Antarctica/Rothera'] = 'Antarctica/Rothera';
-$a->strings['Antarctica/South_Pole'] = 'Antarctica/South_Pole';
-$a->strings['Antarctica/Syowa'] = 'Antarctica/Syowa';
-$a->strings['Antarctica/Vostok'] = 'Antarctica/Vostok';
-$a->strings['Arctic/Longyearbyen'] = 'Arctic/Longyearbyen';
-$a->strings['Asia/Aden'] = 'Asia/Aden';
-$a->strings['Asia/Almaty'] = 'Asia/Almaty';
-$a->strings['Asia/Amman'] = 'Asia/Amman';
-$a->strings['Asia/Anadyr'] = 'Asia/Anadyr';
-$a->strings['Asia/Aqtau'] = 'Asia/Aqtau';
-$a->strings['Asia/Aqtobe'] = 'Asia/Aqtobe';
-$a->strings['Asia/Ashgabat'] = 'Asia/Ashgabat';
-$a->strings['Asia/Ashkhabad'] = 'Asia/Ashkhabad';
-$a->strings['Asia/Baghdad'] = 'Asia/Baghdad';
-$a->strings['Asia/Bahrain'] = 'Asia/Bahrain';
-$a->strings['Asia/Baku'] = 'Asia/Baku';
-$a->strings['Asia/Bangkok'] = 'Asia/Bangkok';
-$a->strings['Asia/Beirut'] = 'Asia/Beirut';
-$a->strings['Asia/Bishkek'] = 'Asia/Bishkek';
-$a->strings['Asia/Brunei'] = 'Asia/Brunei';
-$a->strings['Asia/Calcutta'] = 'Asia/Calcutta';
-$a->strings['Asia/Choibalsan'] = 'Asia/Choibalsan';
-$a->strings['Asia/Chongqing'] = 'Asia/Chongqing';
-$a->strings['Asia/Chungking'] = 'Asia/Chungking';
-$a->strings['Asia/Colombo'] = 'Asia/Colombo';
-$a->strings['Asia/Dacca'] = 'Asia/Dacca';
-$a->strings['Asia/Damascus'] = 'Asia/Damascus';
-$a->strings['Asia/Dhaka'] = 'Asia/Dhaka';
-$a->strings['Asia/Dili'] = 'Asia/Dili';
-$a->strings['Asia/Dubai'] = 'Asia/Dubai';
-$a->strings['Asia/Dushanbe'] = 'Asia/Dushanbe';
-$a->strings['Asia/Gaza'] = 'Asia/Gaza';
-$a->strings['Asia/Harbin'] = 'Asia/Harbin';
-$a->strings['Asia/Ho_Chi_Minh'] = 'Asia/Ho_Chi_Minh';
-$a->strings['Asia/Hong_Kong'] = 'Asia/Hong_Kong';
-$a->strings['Asia/Hovd'] = 'Asia/Hovd';
-$a->strings['Asia/Irkutsk'] = 'Asia/Irkutsk';
-$a->strings['Asia/Istanbul'] = 'Asia/Istanbul';
-$a->strings['Asia/Jakarta'] = 'Asia/Jakarta';
-$a->strings['Asia/Jayapura'] = 'Asia/Jayapura';
-$a->strings['Asia/Jerusalem'] = 'Asia/Jerusalem';
-$a->strings['Asia/Kabul'] = 'Asia/Kabul';
-$a->strings['Asia/Kamchatka'] = 'Asia/Kamchatka';
-$a->strings['Asia/Karachi'] = 'Asia/Karachi';
-$a->strings['Asia/Kashgar'] = 'Asia/Kashgar';
-$a->strings['Asia/Kathmandu'] = 'Asia/Kathmandu';
-$a->strings['Asia/Katmandu'] = 'Asia/Katmandu';
-$a->strings['Asia/Kolkata'] = 'Asia/Kolkata';
-$a->strings['Asia/Krasnoyarsk'] = 'Asia/Krasnoyarsk';
-$a->strings['Asia/Kuala_Lumpur'] = 'Asia/Kuala_Lumpur';
-$a->strings['Asia/Kuching'] = 'Asia/Kuching';
-$a->strings['Asia/Kuwait'] = 'Asia/Kuwait';
-$a->strings['Asia/Macao'] = 'Asia/Macao';
-$a->strings['Asia/Macau'] = 'Asia/Macau';
-$a->strings['Asia/Magadan'] = 'Asia/Magadan';
-$a->strings['Asia/Makassar'] = 'Asia/Makassar';
-$a->strings['Asia/Manila'] = 'Asia/Manila';
-$a->strings['Asia/Muscat'] = 'Asia/Muscat';
-$a->strings['Asia/Nicosia'] = 'Asia/Nicosia';
-$a->strings['Asia/Novokuznetsk'] = 'Asia/Novokuznetsk';
-$a->strings['Asia/Novosibirsk'] = 'Asia/Novosibirsk';
-$a->strings['Asia/Omsk'] = 'Asia/Omsk';
-$a->strings['Asia/Oral'] = 'Asia/Oral';
-$a->strings['Asia/Phnom_Penh'] = 'Asia/Phnom_Penh';
-$a->strings['Asia/Pontianak'] = 'Asia/Pontianak';
-$a->strings['Asia/Pyongyang'] = 'Asia/Pyongyang';
-$a->strings['Asia/Qatar'] = 'Asia/Qatar';
-$a->strings['Asia/Qyzylorda'] = 'Asia/Qyzylorda';
-$a->strings['Asia/Rangoon'] = 'Asia/Rangoon';
-$a->strings['Asia/Riyadh'] = 'Asia/Riyadh';
-$a->strings['Asia/Saigon'] = 'Asia/Saigon';
-$a->strings['Asia/Sakhalin'] = 'Asia/Sakhalin';
-$a->strings['Asia/Samarkand'] = 'Asia/Samarkand';
-$a->strings['Asia/Seoul'] = 'Asia/Seoul';
-$a->strings['Asia/Shanghai'] = 'Asia/Shanghai';
-$a->strings['Asia/Singapore'] = 'Asia/Singapore';
-$a->strings['Asia/Taipei'] = 'Asia/Taipei';
-$a->strings['Asia/Tashkent'] = 'Asia/Tashkent';
-$a->strings['Asia/Tbilisi'] = 'Asia/Tbilisi';
-$a->strings['Asia/Tehran'] = 'Asia/Tehran';
-$a->strings['Asia/Tel_Aviv'] = 'Asia/Tel_Aviv';
-$a->strings['Asia/Thimbu'] = 'Asia/Thimbu';
-$a->strings['Asia/Thimphu'] = 'Asia/Thimphu';
-$a->strings['Asia/Tokyo'] = 'Asia/Tokyo';
-$a->strings['Asia/Ujung_Pandang'] = 'Asia/Ujung_Pandang';
-$a->strings['Asia/Ulaanbaatar'] = 'Asia/Ulaanbaatar';
-$a->strings['Asia/Ulan_Bator'] = 'Asia/Ulan_Bator';
-$a->strings['Asia/Urumqi'] = 'Asia/Urumqi';
-$a->strings['Asia/Vientiane'] = 'Asia/Vientiane';
-$a->strings['Asia/Vladivostok'] = 'Asia/Vladivostok';
-$a->strings['Asia/Yakutsk'] = 'Asia/Yakutsk';
-$a->strings['Asia/Yekaterinburg'] = 'Asia/Yekaterinburg';
-$a->strings['Asia/Yerevan'] = 'Asia/Yerevan';
-$a->strings['Atlantic/Azores'] = 'Atlantic/Azores';
-$a->strings['Atlantic/Bermuda'] = 'Atlantic/Bermuda';
-$a->strings['Atlantic/Canary'] = 'Atlantic/Canary';
-$a->strings['Atlantic/Cape_Verde'] = 'Atlantic/Cape_Verde';
-$a->strings['Atlantic/Faeroe'] = 'Atlantic/Faeroe';
-$a->strings['Atlantic/Faroe'] = 'Atlantic/Faroe';
-$a->strings['Atlantic/Jan_Mayen'] = 'Atlantic/Jan_Mayen';
-$a->strings['Atlantic/Madeira'] = 'Atlantic/Madeira';
-$a->strings['Atlantic/Reykjavik'] = 'Atlantic/Reykjavik';
-$a->strings['Atlantic/South_Georgia'] = 'Atlantic/South_Georgia';
-$a->strings['Atlantic/St_Helena'] = 'Atlantic/St_Helena';
-$a->strings['Atlantic/Stanley'] = 'Atlantic/Stanley';
-$a->strings['Australia/ACT'] = 'Australia/ACT';
-$a->strings['Australia/Adelaide'] = 'Australia/Adelaide';
-$a->strings['Australia/Brisbane'] = 'Australia/Brisbane';
-$a->strings['Australia/Broken_Hill'] = 'Australia/Broken_Hill';
-$a->strings['Australia/Canberra'] = 'Australia/Canberra';
-$a->strings['Australia/Currie'] = 'Australia/Currie';
-$a->strings['Australia/Darwin'] = 'Australia/Darwin';
-$a->strings['Australia/Eucla'] = 'Australia/Eucla';
-$a->strings['Australia/Hobart'] = 'Australia/Hobart';
-$a->strings['Australia/LHI'] = 'Australia/LHI';
-$a->strings['Australia/Lindeman'] = 'Australia/Lindeman';
-$a->strings['Australia/Lord_Howe'] = 'Australia/Lord_Howe';
-$a->strings['Australia/Melbourne'] = 'Australia/Melbourne';
-$a->strings['Australia/North'] = 'Australia/North';
-$a->strings['Australia/NSW'] = 'Australia/NSW';
-$a->strings['Australia/Perth'] = 'Australia/Perth';
-$a->strings['Australia/Queensland'] = 'Australia/Queensland';
-$a->strings['Australia/South'] = 'Australia/South';
-$a->strings['Australia/Sydney'] = 'Australia/Sydney';
-$a->strings['Australia/Tasmania'] = 'Australia/Tasmania';
-$a->strings['Australia/Victoria'] = 'Australia/Victoria';
-$a->strings['Australia/West'] = 'Australia/West';
-$a->strings['Australia/Yancowinna'] = 'Australia/Yancowinna';
-$a->strings['Brazil/Acre'] = 'Brazil/Acre';
-$a->strings['Brazil/DeNoronha'] = 'Brazil/DeNoronha';
-$a->strings['Brazil/East'] = 'Brazil/East';
-$a->strings['Brazil/West'] = 'Brazil/West';
-$a->strings['Canada/Atlantic'] = 'Canada/Atlantic';
-$a->strings['Canada/Central'] = 'Canada/Central';
-$a->strings['Canada/East-Saskatchewan'] = 'Canada/East-Saskatchewan';
-$a->strings['Canada/Eastern'] = 'Canada/Eastern';
-$a->strings['Canada/Mountain'] = 'Canada/Mountain';
-$a->strings['Canada/Newfoundland'] = 'Canada/Newfoundland';
-$a->strings['Canada/Pacific'] = 'Canada/Pacific';
-$a->strings['Canada/Saskatchewan'] = 'Canada/Saskatchewan';
-$a->strings['Canada/Yukon'] = 'Canada/Yukon';
-$a->strings['CET'] = 'CET';
-$a->strings['Chile/Continental'] = 'Chile/Continental';
-$a->strings['Chile/EasterIsland'] = 'Chile/EasterIsland';
-$a->strings['CST6CDT'] = 'CST6CDT';
-$a->strings['Cuba'] = 'Cuba';
-$a->strings['EET'] = 'EET';
-$a->strings['Egypt'] = 'Egypt';
-$a->strings['Eire'] = 'Eire';
-$a->strings['EST'] = 'EST';
-$a->strings['EST5EDT'] = 'EST5EDT';
-$a->strings['Etc/GMT'] = 'Etc/GMT';
-$a->strings['Etc/GMT+0'] = 'Etc/GMT+0';
-$a->strings['Etc/GMT+1'] = 'Etc/GMT+1';
-$a->strings['Etc/GMT+10'] = 'Etc/GMT+10';
-$a->strings['Etc/GMT+11'] = 'Etc/GMT+11';
-$a->strings['Etc/GMT+12'] = 'Etc/GMT+12';
-$a->strings['Etc/GMT+2'] = 'Etc/GMT+2';
-$a->strings['Etc/GMT+3'] = 'Etc/GMT+3';
-$a->strings['Etc/GMT+4'] = 'Etc/GMT+4';
-$a->strings['Etc/GMT+5'] = 'Etc/GMT+5';
-$a->strings['Etc/GMT+6'] = 'Etc/GMT+6';
-$a->strings['Etc/GMT+7'] = 'Etc/GMT+7';
-$a->strings['Etc/GMT+8'] = 'Etc/GMT+8';
-$a->strings['Etc/GMT+9'] = 'Etc/GMT+9';
-$a->strings['Etc/GMT-0'] = 'Etc/GMT-0';
-$a->strings['Etc/GMT-1'] = 'Etc/GMT-1';
-$a->strings['Etc/GMT-10'] = 'Etc/GMT-10';
-$a->strings['Etc/GMT-11'] = 'Etc/GMT-11';
-$a->strings['Etc/GMT-12'] = 'Etc/GMT-12';
-$a->strings['Etc/GMT-13'] = 'Etc/GMT-13';
-$a->strings['Etc/GMT-14'] = 'Etc/GMT-14';
-$a->strings['Etc/GMT-2'] = 'Etc/GMT-2';
-$a->strings['Etc/GMT-3'] = 'Etc/GMT-3';
-$a->strings['Etc/GMT-4'] = 'Etc/GMT-4';
-$a->strings['Etc/GMT-5'] = 'Etc/GMT-5';
-$a->strings['Etc/GMT-6'] = 'Etc/GMT-6';
-$a->strings['Etc/GMT-7'] = 'Etc/GMT-7';
-$a->strings['Etc/GMT-8'] = 'Etc/GMT-8';
-$a->strings['Etc/GMT-9'] = 'Etc/GMT-9';
-$a->strings['Etc/GMT0'] = 'Etc/GMT0';
-$a->strings['Etc/Greenwich'] = 'Etc/Greenwich';
-$a->strings['Etc/UCT'] = 'Etc/UCT';
-$a->strings['Etc/Universal'] = 'Etc/Universal';
-$a->strings['Etc/UTC'] = 'Etc/UTC';
-$a->strings['Etc/Zulu'] = 'Etc/Zulu';
-$a->strings['Europe/Amsterdam'] = 'Europe/Amsterdam';
-$a->strings['Europe/Andorra'] = 'Europe/Andorra';
-$a->strings['Europe/Athens'] = 'Europe/Athens';
-$a->strings['Europe/Belfast'] = 'Europe/Belfast';
-$a->strings['Europe/Belgrade'] = 'Europe/Belgrade';
-$a->strings['Europe/Berlin'] = 'Europe/Berlin';
-$a->strings['Europe/Bratislava'] = 'Europe/Bratislava';
-$a->strings['Europe/Brussels'] = 'Europe/Brussels';
-$a->strings['Europe/Bucharest'] = 'Europe/Bucharest';
-$a->strings['Europe/Budapest'] = 'Europe/Budapest';
-$a->strings['Europe/Chisinau'] = 'Europe/Chisinau';
-$a->strings['Europe/Copenhagen'] = 'Europe/Copenhagen';
-$a->strings['Europe/Dublin'] = 'Europe/Dublin';
-$a->strings['Europe/Gibraltar'] = 'Europe/Gibraltar';
-$a->strings['Europe/Guernsey'] = 'Europe/Guernsey';
-$a->strings['Europe/Helsinki'] = 'Europe/Helsinki';
-$a->strings['Europe/Isle_of_Man'] = 'Europe/Isle_of_Man';
-$a->strings['Europe/Istanbul'] = 'Europe/Istanbul';
-$a->strings['Europe/Jersey'] = 'Europe/Jersey';
-$a->strings['Europe/Kaliningrad'] = 'Europe/Kaliningrad';
-$a->strings['Europe/Kiev'] = 'Europe/Kiev';
-$a->strings['Europe/Lisbon'] = 'Europe/Lisbon';
-$a->strings['Europe/Ljubljana'] = 'Europe/Ljubljana';
-$a->strings['Europe/London'] = 'Europe/London';
-$a->strings['Europe/Luxembourg'] = 'Europe/Luxembourg';
-$a->strings['Europe/Madrid'] = 'Europe/Madrid';
-$a->strings['Europe/Malta'] = 'Europe/Malta';
-$a->strings['Europe/Mariehamn'] = 'Europe/Mariehamn';
-$a->strings['Europe/Minsk'] = 'Europe/Minsk';
-$a->strings['Europe/Monaco'] = 'Europe/Monaco';
-$a->strings['Europe/Moscow'] = 'Europe/Moscow';
-$a->strings['Europe/Nicosia'] = 'Europe/Nicosia';
-$a->strings['Europe/Oslo'] = 'Europe/Oslo';
-$a->strings['Europe/Paris'] = 'Europe/Paris';
-$a->strings['Europe/Podgorica'] = 'Europe/Podgorica';
-$a->strings['Europe/Prague'] = 'Europe/Prague';
-$a->strings['Europe/Riga'] = 'Europe/Riga';
-$a->strings['Europe/Rome'] = 'Europe/Rome';
-$a->strings['Europe/Samara'] = 'Europe/Samara';
-$a->strings['Europe/San_Marino'] = 'Europe/San_Marino';
-$a->strings['Europe/Sarajevo'] = 'Europe/Sarajevo';
-$a->strings['Europe/Simferopol'] = 'Europe/Simferopol';
-$a->strings['Europe/Skopje'] = 'Europe/Skopje';
-$a->strings['Europe/Sofia'] = 'Europe/Sofia';
-$a->strings['Europe/Stockholm'] = 'Europe/Stockholm';
-$a->strings['Europe/Tallinn'] = 'Europe/Tallinn';
-$a->strings['Europe/Tirane'] = 'Europe/Tirane';
-$a->strings['Europe/Tiraspol'] = 'Europe/Tiraspol';
-$a->strings['Europe/Uzhgorod'] = 'Europe/Uzhgorod';
-$a->strings['Europe/Vaduz'] = 'Europe/Vaduz';
-$a->strings['Europe/Vatican'] = 'Europe/Vatican';
-$a->strings['Europe/Vienna'] = 'Europe/Vienna';
-$a->strings['Europe/Vilnius'] = 'Europe/Vilnius';
-$a->strings['Europe/Volgograd'] = 'Europe/Volgograd';
-$a->strings['Europe/Warsaw'] = 'Europe/Warsaw';
-$a->strings['Europe/Zagreb'] = 'Europe/Zagreb';
-$a->strings['Europe/Zaporozhye'] = 'Europe/Zaporozhye';
-$a->strings['Europe/Zurich'] = 'Europe/Zurich';
-$a->strings['Factory'] = 'Factory';
-$a->strings['GB'] = 'GB';
-$a->strings['GB-Eire'] = 'GB-Eire';
-$a->strings['GMT'] = 'GMT';
-$a->strings['GMT+0'] = 'GMT+0';
-$a->strings['GMT-0'] = 'GMT-0';
-$a->strings['GMT0'] = 'GMT0';
-$a->strings['Greenwich'] = 'Greenwich';
-$a->strings['Hongkong'] = 'Hongkong';
-$a->strings['HST'] = 'HST';
-$a->strings['Iceland'] = 'Iceland';
-$a->strings['Indian/Antananarivo'] = 'Indian/Antananarivo';
-$a->strings['Indian/Chagos'] = 'Indian/Chagos';
-$a->strings['Indian/Christmas'] = 'Indian/Christmas';
-$a->strings['Indian/Cocos'] = 'Indian/Cocos';
-$a->strings['Indian/Comoro'] = 'Indian/Comoro';
-$a->strings['Indian/Kerguelen'] = 'Indian/Kerguelen';
-$a->strings['Indian/Mahe'] = 'Indian/Mahe';
-$a->strings['Indian/Maldives'] = 'Indian/Maldives';
-$a->strings['Indian/Mauritius'] = 'Indian/Mauritius';
-$a->strings['Indian/Mayotte'] = 'Indian/Mayotte';
-$a->strings['Indian/Reunion'] = 'Indian/Reunion';
-$a->strings['Iran'] = 'Iran';
-$a->strings['Israel'] = 'Israel';
-$a->strings['Jamaica'] = 'Jamaica';
-$a->strings['Japan'] = 'Japan';
-$a->strings['Kwajalein'] = 'Kwajalein';
-$a->strings['Libya'] = 'Libya';
-$a->strings['MET'] = 'MET';
-$a->strings['Mexico/BajaNorte'] = 'Mexico/BajaNorte';
-$a->strings['Mexico/BajaSur'] = 'Mexico/BajaSur';
-$a->strings['Mexico/General'] = 'Mexico/General';
-$a->strings['MST'] = 'MST';
-$a->strings['MST7MDT'] = 'MST7MDT';
-$a->strings['Navajo'] = 'Navajo';
-$a->strings['NZ'] = 'NZ';
-$a->strings['NZ-CHAT'] = 'NZ-CHAT';
-$a->strings['Pacific/Apia'] = 'Pacific/Apia';
-$a->strings['Pacific/Auckland'] = 'Pacific/Auckland';
-$a->strings['Pacific/Chatham'] = 'Pacific/Chatham';
-$a->strings['Pacific/Easter'] = 'Pacific/Easter';
-$a->strings['Pacific/Efate'] = 'Pacific/Efate';
-$a->strings['Pacific/Enderbury'] = 'Pacific/Enderbury';
-$a->strings['Pacific/Fakaofo'] = 'Pacific/Fakaofo';
-$a->strings['Pacific/Fiji'] = 'Pacific/Fiji';
-$a->strings['Pacific/Funafuti'] = 'Pacific/Funafuti';
-$a->strings['Pacific/Galapagos'] = 'Pacific/Galapagos';
-$a->strings['Pacific/Gambier'] = 'Pacific/Gambier';
-$a->strings['Pacific/Guadalcanal'] = 'Pacific/Guadalcanal';
-$a->strings['Pacific/Guam'] = 'Pacific/Guam';
-$a->strings['Pacific/Honolulu'] = 'Pacific/Honolulu';
-$a->strings['Pacific/Johnston'] = 'Pacific/Johnston';
-$a->strings['Pacific/Kiritimati'] = 'Pacific/Kiritimati';
-$a->strings['Pacific/Kosrae'] = 'Pacific/Kosrae';
-$a->strings['Pacific/Kwajalein'] = 'Pacific/Kwajalein';
-$a->strings['Pacific/Majuro'] = 'Pacific/Majuro';
-$a->strings['Pacific/Marquesas'] = 'Pacific/Marquesas';
-$a->strings['Pacific/Midway'] = 'Pacific/Midway';
-$a->strings['Pacific/Nauru'] = 'Pacific/Nauru';
-$a->strings['Pacific/Niue'] = 'Pacific/Niue';
-$a->strings['Pacific/Norfolk'] = 'Pacific/Norfolk';
-$a->strings['Pacific/Noumea'] = 'Pacific/Noumea';
-$a->strings['Pacific/Pago_Pago'] = 'Pacific/Pago_Pago';
-$a->strings['Pacific/Palau'] = 'Pacific/Palau';
-$a->strings['Pacific/Pitcairn'] = 'Pacific/Pitcairn';
-$a->strings['Pacific/Ponape'] = 'Pacific/Ponape';
-$a->strings['Pacific/Port_Moresby'] = 'Pacific/Port_Moresby';
-$a->strings['Pacific/Rarotonga'] = 'Pacific/Rarotonga';
-$a->strings['Pacific/Saipan'] = 'Pacific/Saipan';
-$a->strings['Pacific/Samoa'] = 'Pacific/Samoa';
-$a->strings['Pacific/Tahiti'] = 'Pacific/Tahiti';
-$a->strings['Pacific/Tarawa'] = 'Pacific/Tarawa';
-$a->strings['Pacific/Tongatapu'] = 'Pacific/Tongatapu';
-$a->strings['Pacific/Truk'] = 'Pacific/Truk';
-$a->strings['Pacific/Wake'] = 'Pacific/Wake';
-$a->strings['Pacific/Wallis'] = 'Pacific/Wallis';
-$a->strings['Pacific/Yap'] = 'Pacific/Yap';
-$a->strings['Poland'] = 'Poland';
-$a->strings['Portugal'] = 'Portugal';
-$a->strings['PRC'] = 'PRC';
-$a->strings['PST8PDT'] = 'PST8PDT';
-$a->strings['ROC'] = 'ROC';
-$a->strings['ROK'] = 'ROK';
-$a->strings['Singapore'] = 'Singapore';
-$a->strings['Turkey'] = 'Turkey';
-$a->strings['UCT'] = 'UCT';
-$a->strings['Universal'] = 'Universal';
-$a->strings['US/Alaska'] = 'US/Alaska';
-$a->strings['US/Aleutian'] = 'US/Aleutian';
-$a->strings['US/Arizona'] = 'US/Arizona';
-$a->strings['US/Central'] = 'US/Central';
-$a->strings['US/East-Indiana'] = 'US/East-Indiana';
-$a->strings['US/Eastern'] = 'US/Eastern';
-$a->strings['US/Hawaii'] = 'US/Hawaii';
-$a->strings['US/Indiana-Starke'] = 'US/Indiana-Starke';
-$a->strings['US/Michigan'] = 'US/Michigan';
-$a->strings['US/Mountain'] = 'US/Mountain';
-$a->strings['US/Pacific'] = 'US/Pacific';
-$a->strings['US/Pacific-New'] = 'US/Pacific-New';
-$a->strings['US/Samoa'] = 'US/Samoa';
-$a->strings['UTC'] = 'UTC';
-$a->strings['W-SU'] = 'W-SU';
-$a->strings['WET'] = 'WET';
-$a->strings['Zulu'] = 'Zulu';
-$a->strings['Three Dimensional Tic-Tac-Toe'] = 'Dreidimensionales Tic-Tac-Toe';
-$a->strings['New game'] = 'Neues Spiel';
-$a->strings['New game with handicap'] = 'Neues Handicap Spiel';
-$a->strings['Create a New Account'] = 'Neuen Account erstellen';
-$a->strings['link to source'] = 'Link zum original Posting';
-$a->strings['Applications'] = 'Anwendungen';
-$a->strings['noreply'] = '';
-$a->strings['Apps'] = 'Apps';
-$a->strings['Facebook disabled'] = 'Facebook deaktiviert';
-$a->strings['Facebook API key is missing.'] = 'Facebook API Schlüssel nicht gefunden';
-$a->strings['Facebook Connect'] = 'Mit Facebook verbinden';
-$a->strings['Install Facebook post connector'] = '';
-$a->strings['Remove Facebook post connector'] = '';
-$a->strings['Facebook'] = '';
-$a->strings['Facebook Connector Settings'] = 'Facebook Verbindungseinstellungen';
-$a->strings['Post to Facebook'] = 'Zu Facebook posten';
-$a->strings['Image: '] = 'Bild';
-$a->strings['Post to StatusNet'] = 'Nach StatusNet senden';
-$a->strings['StatusNet Posting Settings'] = 'StatusNet Posting Einstellungen';
-$a->strings['You go first...'] = 'Du fängst an...';
-$a->strings['I\'m going first this time...'] = 'Diesmal fange ich an...';
-$a->strings['You won!'] = 'Du gewinnst!';
-$a->strings['"Cat" game!'] = 'Unentschieden!';
-$a->strings['I won!'] = 'Ich gewinne!';
-$a->strings['Post to Twitter'] = '';
-?>
+
+function string_plural_select($n){
+ return ($n != 1);
+}
+;
+$a->strings["Not Found"] = "Nicht gefunden";
+$a->strings["Page not found."] = "Seite nicht gefunden.";
+$a->strings["Permission denied"] = "Zugriff verweigert";
+$a->strings["Permission denied."] = "Zugriff verweigert.";
+$a->strings["Delete this item?"] = "Diesen Beitrag löschen?";
+$a->strings["Comment"] = "Kommentar";
+$a->strings["Create a New Account"] = "Neuen Account erstellen";
+$a->strings["Register"] = "Registrieren";
+$a->strings["Nickname or Email address: "] = "Spitzname oder Email-Adresse: ";
+$a->strings["Password: "] = "Passwort: ";
+$a->strings["Login"] = "Anmeldung";
+$a->strings["Nickname/Email/OpenID: "] = "Spitzname/Email/OpenID: ";
+$a->strings["Password (if not OpenID): "] = "Passwort (falls nicht OpenID): ";
+$a->strings["Forgot your password?"] = "Passwort vergessen?";
+$a->strings["Password Reset"] = "Passwort zurücksetzen";
+$a->strings["Logout"] = "Abmelden";
+$a->strings["prev"] = "vorige";
+$a->strings["first"] = "erste";
+$a->strings["last"] = "letzte";
+$a->strings["next"] = "nächste";
+$a->strings["No contacts"] = "Keine Kontakte";
+$a->strings["%d Contact"] = array(
+ 0 => "%d Kontakt",
+ 1 => "%d Kontakte",
+);
+$a->strings["View Contacts"] = "Kontakte anzeigen";
+$a->strings["Search"] = "Suche";
+$a->strings["No profile"] = "Kein Profil";
+$a->strings["Connect"] = "Verbinden";
+$a->strings["Location:"] = "Ort:";
+$a->strings[", "] = ", ";
+$a->strings["Gender:"] = "Geschlecht:";
+$a->strings["Status:"] = "Status:";
+$a->strings["Homepage:"] = "Homepage:";
+$a->strings["Monday"] = "Montag";
+$a->strings["Tuesday"] = "Dienstag";
+$a->strings["Wednesday"] = "Mittwoch";
+$a->strings["Thursday"] = "Donnerstag";
+$a->strings["Friday"] = "Freitag";
+$a->strings["Saturday"] = "Samstag";
+$a->strings["Sunday"] = "Sonntag";
+$a->strings["January"] = "Januar";
+$a->strings["February"] = "Februar";
+$a->strings["March"] = "März";
+$a->strings["April"] = "April";
+$a->strings["May"] = "Mai";
+$a->strings["June"] = "Juni";
+$a->strings["July"] = "Juli";
+$a->strings["August"] = "August";
+$a->strings["September"] = "September";
+$a->strings["October"] = "Oktober";
+$a->strings["November"] = "November";
+$a->strings["December"] = "Dezember";
+$a->strings["g A l F d"] = "g A l F d";
+$a->strings["Birthday Reminders"] = "Geburtstagserinnerungen";
+$a->strings["Birthdays this week:"] = "Geburtstage diese Woche:";
+$a->strings["(Adjusted for local time)"] = "(an die lokale Zeit angepasst)";
+$a->strings["[today]"] = "[heute]";
+$a->strings["link to source"] = "Link zum original Posting";
+$a->strings["Welcome back %s"] = "Willkommen zurück %s";
+$a->strings["Manage Identities and/or Pages"] = "Verwalte Identitäten und/oder Seiten";
+$a->strings["(Toggle between different identities or community/group pages which share your account details.)"] = "(Wähle zwischen verschiedenen Identitäten oder Gemeinschafts/Gruppen Seiten die deine Accountdetails teilen.)";
+$a->strings["Select an identity to manage: "] = "Wähle eine Identität zum Verwalten:";
+$a->strings["Submit"] = "Senden";
+$a->strings["Image exceeds size limit of %d"] = "Bildgröße überschreitet das Limit von %d";
+$a->strings["Unable to process image."] = "Konnte das Bild nicht bearbeiten.";
+$a->strings["Wall Photos"] = "Pinnwand Bilder";
+$a->strings["Image upload failed."] = "Hochladen des Bildes gescheitert.";
+$a->strings["Administrator"] = "Administrator";
+$a->strings["noreply"] = "noreply";
+$a->strings["New mail received at "] = "New mail received at ";
+$a->strings["%s commented on an item at %s"] = "%s hat einen Beitrag auf %s kommentiert";
+$a->strings["Status"] = "Status";
+$a->strings["Profile"] = "Profil";
+$a->strings["Photos"] = "Bilder";
+$a->strings["Shared content is covered by the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0</a> license."] = "Geteilte Inhalte innerhalb des Friendika Netzwerks sind unter der <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0</a> verfügbar.";
+$a->strings["Disallowed profile URL."] = "Nicht erlaubte Profil URL.";
+$a->strings["The profile address specified does not provide adequate information."] = "Die angegebene Profiladresse liefert unzureichende Informationen.";
+$a->strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Eingeschränktes Profil. Diese Person wird keine direkten/privaten Nachrichten von dir erhalten können.";
+$a->strings["Unable to retrieve contact information."] = "Konnte die Kontaktinformationen nicht empfangen.";
+$a->strings["following"] = "folgen";
+$a->strings["Image uploaded but image cropping failed."] = "Bilder hochgeladen aber das Zuschneiden ist fehlgeschlagen.";
+$a->strings["Profile Photos"] = "Profilbilder";
+$a->strings["Image size reduction [%s] failed."] = "Verkleinern der Bildgröße von [%s] ist gescheitert.";
+$a->strings["Unable to process image"] = "Bild konnte nicht verarbeitet werden";
+$a->strings["Upload File:"] = "Datei hochladen:";
+$a->strings["Upload Profile Photo"] = "Profilbild hochladen";
+$a->strings["Upload"] = "Hochladen";
+$a->strings["or"] = "oder";
+$a->strings["skip this step"] = "diesen Schritt überspringen";
+$a->strings["select a photo from your photo albums"] = "wähle ein Foto von deinen Fotoalben";
+$a->strings["Crop Image"] = "Bild Zurechtschneiden";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "Passe bitte den Bildausschnitt an damit das Bild optimal dargestellt werden kann.";
+$a->strings["Done Editing"] = "Bearbeitung abgeschlossen";
+$a->strings["Image uploaded successfully."] = "Bild erfolgreich auf den Server geladen.";
+$a->strings["Welcome to %s"] = "Willkommen zu %s";
+$a->strings["Please login."] = "Bitte melde dich an.";
+$a->strings["Registration revoked for %s"] = "Registration für %s wurde zurück gezogen";
+$a->strings["Registration details for %s"] = "Details der Registration von %s";
+$a->strings["Account approved."] = "Account freigegeben.";
+$a->strings["Profile not found."] = "Profil nicht gefunden.";
+$a->strings["Profile Name is required."] = "Profilname ist erforderlich.";
+$a->strings["Profile updated."] = "Profil aktualisiert.";
+$a->strings["Profile deleted."] = "Profil gelöscht.";
+$a->strings["Profile-"] = "Profil-";
+$a->strings["New profile created."] = "Neues Profil angelegt.";
+$a->strings["Profile unavailable to clone."] = "Profil nicht zum Duplizieren verfügbar.";
+$a->strings["Hide my contact/friend list from viewers of this profile?"] = "Verberge meine Kontakte/Freunde von Betrachtern dieses Profils?";
+$a->strings["Yes"] = "Ja";
+$a->strings["No"] = "Nein";
+$a->strings["Edit Profile Details"] = "Profil bearbeiten";
+$a->strings["View this profile"] = "Dieses Profil anzeigen";
+$a->strings["Create a new profile using these settings"] = "Neues Profil anlegen und diese Einstellungen verwenden";
+$a->strings["Clone this profile"] = "Dieses Profil dublizieren";
+$a->strings["Delete this profile"] = "Dieses Profil löschen";
+$a->strings["Profile Name:"] = "Profilname:";
+$a->strings["Your Full Name:"] = "Dein kompletter Name:";
+$a->strings["Title/Description:"] = "Titel/Beschreibung:";
+$a->strings["Your Gender:"] = "Dein Geschlecht:";
+$a->strings["Birthday (y/m/d):"] = "Geburtstag (y/m/d):";
+$a->strings["Street Address:"] = "Adresse:";
+$a->strings["Locality/City:"] = "Wohnort/Stadt:";
+$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> Beziehungs Status:";
+$a->strings["Who: (if applicable)"] = "Wer: (falls anwendbar)";
+$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Beispiel: cathy123, Cathy Williams, cathy@example.com";
+$a->strings["Sexual Preference:"] = "Sexuelle Vorlieben:";
+$a->strings["Homepage URL:"] = "Adresse der Homepage:";
+$a->strings["Political Views:"] = "Politische Ansichten:";
+$a->strings["Religious Views:"] = "Religiöse Ansichten:";
+$a->strings["Public Keywords:"] = "Öffentliche Schlüsselwörter:";
+$a->strings["Private Keywords:"] = "Private Schlüsselwörter:";
+$a->strings["Example: fishing photography software"] = "Beispiel: Fischen Photographie Software";
+$a->strings["(Used for suggesting potential friends, can be seen by others)"] = "(Wird verwendet um potentielle Freunde zu finden, könnte von Fremden eingesehen werden)";
+$a->strings["(Used for searching profiles, never shown to others)"] = "(Wird für die Suche nach Profilen verwendet und niemals veröffentlicht)";
+$a->strings["Tell us about yourself..."] = "Erzähle und ein bisschen von dir...";
+$a->strings["Hobbies/Interests"] = "Hobbies/Interessen";
+$a->strings["Contact information and Social Networks"] = "Kontaktinformationen und Soziale Netzwerke";
+$a->strings["Musical interests"] = "Musikalische Interessen";
+$a->strings["Books, literature"] = "Literatur/Bücher";
+$a->strings["Television"] = "Fernsehen";
+$a->strings["Film/dance/culture/entertainment"] = "Filme/Tänze/Kultur/Unterhaltung";
+$a->strings["Love/romance"] = "Liebesleben";
+$a->strings["Work/employment"] = "Arbeit/Beschäftigung";
+$a->strings["School/education"] = "Schule/Ausbildung";
+$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Dies ist dein <strong>öffentliches</strong> Profil.<br />Es <strong>könnte</strong> für jeden Nutzer des Internets sichtbar sein.";
+$a->strings["Age: "] = "Alter: ";
+$a->strings["Profiles"] = "Profile";
+$a->strings["Change profile photo"] = "Profilbild ändern";
+$a->strings["Create New Profile"] = "Neues Profil anlegen";
+$a->strings["Profile Image"] = "Profilbild";
+$a->strings["Visible to everybody"] = "Für jeden sichtbar";
+$a->strings["Edit visibility"] = "Sichtbarkeit bearbeiten";
+$a->strings["Passwords do not match. Password unchanged."] = "Die Passwörter stimmen nicht überein. Das Passwort bleibt unverändert.";
+$a->strings["Empty passwords are not allowed. Password unchanged."] = "Leere Passwörter sind nicht erlaubt. Passwort bleibt unverändert.";
+$a->strings["Password changed."] = "Passwort ändern.";
+$a->strings["Password update failed. Please try again."] = "Aktualisierung des Passworts gescheitert, bitte versuche es noch einmal.";
+$a->strings[" Please use a shorter name."] = " Bitte verwende einen kürzeren Namen.";
+$a->strings[" Name too short."] = " Name ist zu kurz.";
+$a->strings[" Not valid email."] = " Keine gültige EMail.";
+$a->strings[" Cannot change to that email."] = " Cannot change to that email.";
+$a->strings["Settings updated."] = "Einstellungen aktualisiert.";
+$a->strings["Plugin Settings"] = "Plugin Einstellungen";
+$a->strings["Account Settings"] = "Account Einstellungen";
+$a->strings["No Plugin settings configured"] = "Keine Erweiterungen konfiguriert";
+$a->strings["Normal Account"] = "Normaler Account";
+$a->strings["This account is a normal personal profile"] = "Dieser Account ist ein normales persönliches Profil";
+$a->strings["Soapbox Account"] = "Sandkasten Accunt";
+$a->strings["Automatically approve all connection/friend requests as read-only fans"] = "Freundschaftsanfragen werden automatisch als Nurlese-Fans akzeptiert";
+$a->strings["Community/Celebrity Account"] = "Gemeinschafts/Berühmtheiten Account";
+$a->strings["Automatically approve all connection/friend requests as read-write fans"] = "Freundschaftsanfragen werden automatisch als Lese-und-Schreib-Fans akzeptiert";
+$a->strings["Automatic Friend Account"] = "Automatischer Freundes Account";
+$a->strings["Automatically approve all connection/friend requests as friends"] = "Freundschaftsanfragen werden automatisch als Freund akzeptiert";
+$a->strings["OpenID: "] = "OpenID: ";
+$a->strings["&nbsp;(Optional) Allow this OpenID to login to this account."] = "&nbsp;(Optional) Erlaube dieser OpenID sich für diesen Account anzumelden.";
+$a->strings["Publish your default profile in site directory?"] = "Dein Standard-Profil im Verzeichnis dieser Seite veröffentliche?";
+$a->strings["Publish your default profile in global social directory?"] = "Dein Standard-Profil im weltweiten Verzeichnis veröffentlichen?";
+$a->strings["Profile is <strong>not published</strong>."] = "Profil ist <strong>nicht veröffentlicht</strong>.";
+$a->strings["Your Identity Address is"] = "Die Adresse deines Profils lautet:";
+$a->strings["Export Personal Data"] = "Perönliche Daten exportieren";
+$a->strings["Basic Settings"] = "Grundeinstellungen";
+$a->strings["Full Name:"] = "Kompletter Name:";
+$a->strings["Email Address:"] = "Email Adresse:";
+$a->strings["Your Timezone:"] = "Deine Zeitzone:";
+$a->strings["Default Post Location:"] = "Standardstandort:";
+$a->strings["Use Browser Location:"] = "Verwende den Standort des Browsers:";
+$a->strings["Display Theme:"] = "Theme:";
+$a->strings["Security and Privacy Settings"] = "Sicherheits und Privatsphären Einstellungen";
+$a->strings["Maximum Friend Requests/Day:"] = "Maximale Anzahl von Freundschaftsanfragen/Tag:";
+$a->strings["(to prevent spam abuse)"] = "(um SPAM zu vermeiden)";
+$a->strings["Allow friends to post to your profile page:"] = "Erlaube es Freunden Beiträge auf deiner Pinnwand zu posten:";
+$a->strings["Automatically expire (delete) posts older than"] = "Automatisch Beiträge verfallen lassen (löschen) die älter sind als";
+$a->strings["days"] = "Tage";
+$a->strings["Notification Settings"] = "Benachrichtigungs Einstellungen";
+$a->strings["Send a notification email when:"] = "Benachrichtigungs-Email senden wenn:";
+$a->strings["You receive an introduction"] = "Du eine Vorstellung erhälst";
+$a->strings["Your introductions are confirmed"] = "Eine deiner Vorstellungen angenommen wurde";
+$a->strings["Someone writes on your profile wall"] = "Jemand etwas auf deiner Pinnwand postet";
+$a->strings["Someone writes a followup comment"] = "Jemand einen Kommentar verfasst";
+$a->strings["You receive a private message"] = "Du eine private Nachricht erhälst";
+$a->strings["Password Settings"] = "Passwort Einstellungen";
+$a->strings["Leave password fields blank unless changing"] = "Lass die Passwort-Felder leer außer du willst das Passwort ändern";
+$a->strings["New Password:"] = "Neues Passwort:";
+$a->strings["Confirm:"] = "Bestätigen:";
+$a->strings["Advanced Page Settings"] = "Erweiterte Seiten Einstellungen";
+$a->strings["Default Post Permissions"] = "Grundeinstellung für Veröffentlichungen";
+$a->strings["(click to open/close)"] = "(klicke zum öffnen/schließen)";
+$a->strings["Email/Mailbox Setup"] = "Email/Postfach Einstellungen";
+$a->strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Wenn du mit Email Kontakten über diesen Service kommunizieren möchtest (optional) gib bitte die Einstellungen für dein Postfach an.";
+$a->strings["IMAP server name:"] = "IMAP Server Name:";
+$a->strings["IMAP port:"] = "IMAP Port:";
+$a->strings["Security (TLS or SSL):"] = "Sicherheit (TLS oder SSL)";
+$a->strings["Email login name:"] = "Email Login Name:";
+$a->strings["Email password:"] = "Email Passwort:";
+$a->strings["Reply-to address (Optional):"] = "Reply-to Adresse (Optional)";
+$a->strings["Send public posts to all email contacts:"] = "Sende öffentliche Einträge an alle Email Kontakte:";
+$a->strings["Email access is disabled on this site."] = "Zugriff auf Emails für diese Seite deaktiviert.";
+$a->strings["Public access denied."] = "Öffentlicher Zugriff verweigert.";
+$a->strings["No results."] = "Keine Ergebnisse.";
+$a->strings["Photo Albums"] = "Fotoalben";
+$a->strings["Contact Photos"] = "Kontaktbilder";
+$a->strings["Contact information unavailable"] = "Kontakt Informationen nicht verfügbar";
+$a->strings["Album not found."] = "Album nicht gefunden.";
+$a->strings["Delete Album"] = "Album löschen";
+$a->strings["Delete Photo"] = "Foto löschen";
+$a->strings["was tagged in a"] = "was tagged in a";
+$a->strings["photo"] = "Foto";
+$a->strings["by"] = "von";
+$a->strings["Image exceeds size limit of "] = "Die Bildgröße übersteigt das Limit von ";
+$a->strings["No photos selected"] = "Keine Bilder ausgewählt";
+$a->strings["Upload Photos"] = "Bilder hochladen";
+$a->strings["New album name: "] = "Name des neuen Albums: ";
+$a->strings["or existing album name: "] = "oder existierender Albumname: ";
+$a->strings["Permissions"] = "Berechtigungen";
+$a->strings["Edit Album"] = "Album bearbeiten";
+$a->strings["View Photo"] = "Fotos betrachten";
+$a->strings["Photo not available"] = "Foto nicht verfügbar";
+$a->strings["Edit photo"] = "Foto bearbeiten";
+$a->strings["Use as profile photo"] = "Als Profilbild verwenden";
+$a->strings["Private Message"] = "Private Nachricht";
+$a->strings["<< Prev"] = "<< Vorherige";
+$a->strings["View Full Size"] = "Betrachte Originalgröße";
+$a->strings["Next >>"] = "Nächste >>";
+$a->strings["Tags: "] = "Tags: ";
+$a->strings["[Remove any tag]"] = "[Tag entfernen]";
+$a->strings["New album name"] = "Name des neuen Albums";
+$a->strings["Caption"] = "Bildunterschrift";
+$a->strings["Add a Tag"] = "Tag hinzufügen";
+$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping";
+$a->strings["I like this (toggle)"] = "Ich mag das (toggle)";
+$a->strings["I don't like this (toggle)"] = "Ich mag das nicht (toggle)";
+$a->strings["Share"] = "Teilen";
+$a->strings["Please wait"] = "Bitte warten";
+$a->strings["This is you"] = "Das bist du";
+$a->strings["Delete"] = "Löschen";
+$a->strings["Recent Photos"] = "Neuste Fotos";
+$a->strings["Upload New Photos"] = "Weitere Fotos hochladen";
+$a->strings["View Album"] = "Album betrachten";
+$a->strings["Item not found."] = "Beitrag nicht gefunden.";
+$a->strings["Item has been removed."] = "Eintrag wurde entfernt.";
+$a->strings["Item not found"] = "Beitrag nicht gefunden";
+$a->strings["Edit post"] = "Beitrag bearbeiten";
+$a->strings["Visible to <strong>everybody</strong>"] = "Für <strong>Jedermann</strong> sichtbar";
+$a->strings["Post to Email"] = "An Email senden";
+$a->strings["Edit"] = "Bearbeiten";
+$a->strings["Upload photo"] = "Foto hochladen";
+$a->strings["Insert web link"] = "Weblink einfügen";
+$a->strings["Insert YouTube video"] = "YouTube Video einfügen";
+$a->strings["Insert Vorbis [.ogg] video"] = "Vorbis [.ogg] Video einfügen";
+$a->strings["Insert Vorbis [.ogg] audio"] = "Vorbis [.ogg] Audio einfügen";
+$a->strings["Set your location"] = "Deinen Standort festlegen";
+$a->strings["Clear browser location"] = "Browser Standort leeren";
+$a->strings["Permission settings"] = "Berechtigungseinstellungen";
+$a->strings["CC: email addresses"] = "CC: EMail Addresse";
+$a->strings["Example: bob@example.com, mary@example.com"] = "Z.B.: bob@example.com, mary@example.com";
+$a->strings["%s : Not a valid email address."] = "%s: Keine gültige Email Adresse.";
+$a->strings["Please join my network on %s"] = "Bitte trete meinem Netzwerk auf %s bei";
+$a->strings["%s : Message delivery failed."] = "%s: Zustellung der Nachricht fehlgeschlagen.";
+$a->strings["%d message sent."] = array(
+ 0 => "%d Nachricht gesendet.",
+ 1 => "%d Nachrichten gesendet.",
+);
+$a->strings["Send invitations"] = "Einladungen senden";
+$a->strings["Enter email addresses, one per line:"] = "Email Adressen eingeben, eine pro Zeile:";
+$a->strings["Your message:"] = "Deine Nachricht:";
+$a->strings["Please join my social network on %s"] = "Bitte trete meinem Sozialen Netzwerk auf %s bei";
+$a->strings["To accept this invitation, please visit:"] = "Um diese Einladung anzunehmen beuche bitte:";
+$a->strings["Once you have registered, please connect with me via my profile page at:"] = "Sobald du registriert bist kontaktiere mich bitte auf meiner Profilseite:";
+$a->strings["Invite Friends"] = "Freunde einladen";
+$a->strings["Find People With Shared Interests"] = "Finde Personen die deine Interessen teilen";
+$a->strings["Connect/Follow"] = "Verbinden/Folgen";
+$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Beispiel: bob@example.com, http://example.com/barbara";
+$a->strings["Follow"] = "Folge";
+$a->strings["Could not access contact record."] = "Konnte nicht auf die Kontaktdaten zugreifen.";
+$a->strings["Could not locate selected profile."] = "Konnte das ausgewählte Profiel nicht finden.";
+$a->strings["Contact updated."] = "Kontakt aktualisiert.";
+$a->strings["Failed to update contact record."] = "Aktualisierung der Kontaktdaten fehlgeschlagen.";
+$a->strings["Contact has been blocked"] = "Kontakt wurde blockiert";
+$a->strings["Contact has been unblocked"] = "Kontakt wurde wieder frei gegeben";
+$a->strings["Contact has been ignored"] = "Der Kontakt wurde ignoriert";
+$a->strings["Contact has been unignored"] = "Kontakt wurde ignoriert";
+$a->strings["stopped following"] = "wird nicht mehr gefolgt";
+$a->strings["Contact has been removed."] = "Kontakt wurde entfernt.";
+$a->strings["Contact not found."] = "Kontakt nicht gefunden.";
+$a->strings["Mutual Friendship"] = "Beidseitige Freundschaft";
+$a->strings["is a fan of yours"] = "ist ein Fan von dir";
+$a->strings["you are a fan of"] = "du bist Fan von";
+$a->strings["Privacy Unavailable"] = "Privatsphäre nicht verfügbar";
+$a->strings["Private communications are not available for this contact."] = "Private Kommunikation ist für diesen Kontakt nicht verfügbar.";
+$a->strings["Never"] = "Niemals";
+$a->strings["(Update was successful)"] = "(Aktualisierung war erfolgreich)";
+$a->strings["(Update was not successful)"] = "(Aktualisierung war nicht erfolgreich)";
+$a->strings["Contact Editor"] = "Kontakt Editor";
+$a->strings["Profile Visibility"] = "Profil Anzeige";
+$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bitte wähle eines deiner Profile das angezeitgt werden soll, wenn %s dein Profil aufruft.";
+$a->strings["Contact Information / Notes"] = "Kontakt Informationen / Notizen";
+$a->strings["Online Reputation"] = "Online Ruf";
+$a->strings["Occasionally your friends may wish to inquire about this person's online legitimacy."] = "Es könnte sein, dass deine Freunde etwas über den Ruf einer Peron erfahren möchten.";
+$a->strings["You may help them choose whether or not to interact with this person by providing a <em>reputation</em> to guide them."] = "Du kannst ihnen bei der Entscheidung helfen ob sie mit einer Person interagieren sollten oder nicht indem du Informationen über den <em>Ruf</em> der Person anbietest.";
+$a->strings["Please take a moment to elaborate on this selection if you feel it could be helpful to others."] = "Bitte nimm dir einen Moment und fülle diesen Punkt aus wenn du denkst das es anderen helfen könnte.";
+$a->strings["Visit \$name's profile"] = "Besuche das Profil von \$name";
+$a->strings["Block/Unblock contact"] = "Kontakt blockieren/freischalten";
+$a->strings["Ignore contact"] = "Ignoriere den Kontakt";
+$a->strings["Repair contact URL settings"] = "URL Einstellungen des Kontakts reparieren";
+$a->strings["Repair contact URL settings (WARNING: Advanced)"] = "URL Einstellungen des Kontakts reparieren (Achtung: Fortgeschritten)";
+$a->strings["View conversations"] = "Unterhaltungen anzeigen";
+$a->strings["Delete contact"] = "Lösche den Kontakt";
+$a->strings["Last updated: "] = "Letzte Aktualisierung: ";
+$a->strings["Update public posts: "] = "Aktualisierung öffentlicher Nachrichten: ";
+$a->strings["Update now"] = "Jetzt aktualisieren";
+$a->strings["Unblock this contact"] = "Blockade dieses Kontakts aufheben";
+$a->strings["Block this contact"] = "Diesen Kontakt blockieren";
+$a->strings["Unignore this contact"] = "Diesen Kontakt nicht mehr ignorieren";
+$a->strings["Ignore this contact"] = "Diesen Kontakt ignorieren";
+$a->strings["Currently blocked"] = "Derzeit geblockt";
+$a->strings["Currently ignored"] = "Derzeit ignoriert";
+$a->strings["Contacts"] = "Kontakte";
+$a->strings["Show Blocked Connections"] = "Zeige geblockte Verbindungen";
+$a->strings["Hide Blocked Connections"] = "Verstecke geblockte Verbindungen";
+$a->strings["Finding: "] = "Funde: ";
+$a->strings["Find"] = "Finde";
+$a->strings["Visit \$username's profile"] = "Besuche das Profil von \$username";
+$a->strings["Edit contact"] = "Kontakt bearbeiten";
+$a->strings["Remote privacy information not available."] = "Entfernte Privatsphäreneinstellungen nicht verfügbar.";
+$a->strings["Visible to:"] = "Sichtbar für:";
+$a->strings["Invalid OpenID url"] = "Ungültige OpenID URL";
+$a->strings["Please enter the required information."] = "Bitte trage die erforderlichen Informationen ein.";
+$a->strings["Please use a shorter name."] = "Bitte verwende einen kürzeren Namen.";
+$a->strings["Name too short."] = "Der Name ist zu kurz.";
+$a->strings["That doesn't appear to be your full (First Last) name."] = "Das scheint nicht dein kompletter Name (Vor- und Nachname) zu sein.";
+$a->strings["Your email domain is not among those allowed on this site."] = "Die Domain deiner EMail Adresse ist nicht erlaubt auf dieser Seite.";
+$a->strings["Not a valid email address."] = "Keine gültige EMail Adresse.";
+$a->strings["Cannot use that email."] = "Konnte diese EMail Adresse nicht verwenden.";
+$a->strings["Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and must also begin with a letter."] = "Dein Spitzname darf nur aus Buchstaben und Zahlen (\"a-z\",\"0-9\", \"_\" und \"-\") bestehen, außerdem muss er mit einem Buchstaben beginnen.";
+$a->strings["Nickname is already registered. Please choose another."] = "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen.";
+$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "SERIOUS ERROR: Generation of security keys failed.";
+$a->strings["An error occurred during registration. Please try again."] = "Wärend der Anmeldung ist ein Fehler aufgetreten. Bitte versuche es noch einmal.";
+$a->strings["An error occurred creating your default profile. Please try again."] = "Bei der Erstellung des Standard-Profils ist ein Fehler aufgetreten. Bitte versuche es noch einmal.";
+$a->strings["Registration successful. Please check your email for further instructions."] = "Registration erfolgreich. Eine EMail mit weiteren Anweisungen wurde an dich gesendet.";
+$a->strings["Failed to send email message. Here is the message that failed."] = "Konnte die EMail nicht versenden. Hier ist die Nachricht die nicht gesendet werden konnte.";
+$a->strings["Your registration can not be processed."] = "Deine Registration konnte nicht verarbeitet werden.";
+$a->strings["Registration request at %s"] = "Registrationsanfrage auf %s";
+$a->strings["Your registration is pending approval by the site owner."] = "Deine Registration muss noch vom Betreiber der Seite freigegeben werden.";
+$a->strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Du kannst dieses Formular auch (optional) mit deiner OpenID ausfüllen indem du deine OpenID angibst und 'Registrieren' klickst.";
+$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Wenn du nicht mit OpenID vertraut bist, lass dieses Feld bitte leer und fülle die restlichen Felder aus.";
+$a->strings["Your OpenID (optional): "] = "Deine OpenID (optional): ";
+$a->strings["Include your profile in member directory?"] = "Soll dein Profil im Nutzerverzeichnis angezeigt werden?";
+$a->strings["Registration"] = "Registration";
+$a->strings["Your Full Name (e.g. Joe Smith): "] = "Vollständiger Name (z.B. Joe Smith): ";
+$a->strings["Your Email Address: "] = "Deine EMail Adresse: ";
+$a->strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be '<strong>nickname@\$sitename</strong>'."] = "Wähle einen Spitznamen für dein Profil. Dieser muss mit einem Buchstaben beginnen. Die Adresse deines Profils auf dieser Seite wird '<strong>spitzname@\$sitename</strong>' sein.";
+$a->strings["Choose a nickname: "] = "Spitznamen wählen: ";
+$a->strings["Post successful."] = "Erfolgreich gesendet.";
+$a->strings["Help:"] = "Hilfe:";
+$a->strings["Help"] = "Hilfe";
+$a->strings["Could not create/connect to database."] = "Konnte die Verbindung zur Datenbank nicht aufbauen bzw. die Datenbank anlegen.";
+$a->strings["Connected to database."] = "Mit der Datenbank verbunden.";
+$a->strings["Proceed with Installation"] = "Mit der Installation fortfahren";
+$a->strings["Your Friendika site database has been installed."] = "Die Datenbank deiner Friendika Seite wurde erfolgreich installiert.";
+$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "WICHTIG: Du musst [manuell] einen cron Job (o.ä.) für den Poller einrichten.";
+$a->strings["Please see the file \"INSTALL.txt\"."] = "Lies bitte die \"INSTALL.txt\".";
+$a->strings["Proceed to registration"] = "Mit der Registration fortfahren";
+$a->strings["Database import failed."] = "Import der Datenbank schlug fehl.";
+$a->strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Möglicherweise musst du die Datei \"database.sql\" manuell mit phpmyadmin oder mysql importieren.";
+$a->strings["Welcome to Friendika."] = "Willkommen bei Friendika.";
+$a->strings["Friendika Social Network"] = "Friendika Soziales Netzwerk";
+$a->strings["Installation"] = "Installation";
+$a->strings["In order to install Friendika we need to know how to contact your database."] = "Um Friendika installieren zu können müssen wir wissen, wie wir die Datenbank erreichen können.";
+$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Bitte kontaktiere den Hosting Provider oder den Administrator der Seite falls du Fragen zu diesen Einstellungen haben solltest.";
+$a->strings["The database you specify below must already exist. If it does not, please create it before continuing."] = "Die Datenbank die du hier angibst muss bereits existieren. Wenn dies noch nicht der Fall ist lege sie bitte an bevor du fortfährst.";
+$a->strings["Database Server Name"] = "Datenbank Server";
+$a->strings["Database Login Name"] = "Datenbank Nutzer";
+$a->strings["Database Login Password"] = "Datenbank Passwort";
+$a->strings["Database Name"] = "Datenbank Name";
+$a->strings["Please select a default timezone for your website"] = "Bitte wähle die standard Zeitzone deiner Webseite";
+$a->strings["Could not find a command line version of PHP in the web server PATH."] = "Konnte keine Kommandozeilenversion von PHP im PATH des Servers finden.";
+$a->strings["This is required. Please adjust the configuration file .htconfig.php accordingly."] = "Diese wird von Friendika benötigt. Bitte passe die Konfigurationsdatei .htconfig.php entsprechend an.";
+$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Die Kommandozeilenversion von PHP auf deinem System hat \"register_argc_argv\" nicht aktiviert.";
+$a->strings["This is required for message delivery to work."] = "Dies wird für die Auslieferung von Nachrichten benötigt.";
+$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Fehler: Die \"openssl_pkey_new\" Funktion auf diesem System ist nicht in der lage Verschlüsselungsschlüssel zu erzeugen";
+$a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Wenn der Server unter Windows läuft, schau dir bitte \"http://www.php.net/manual/en/openssl.installation.php\" an.";
+$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Fehler: Das Apache Modul mod-rewrite wird benötigt, es ist allerdings nicht installiert.";
+$a->strings["Error: libCURL PHP module required but not installed."] = "Fehler: Das libCURL PHP Modul wird benötigt ist aber nicht installiert.";
+$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Fehler: Das GD Graphikmodul für PHP mit JPEG Unterstützung ist nicht installiert.";
+$a->strings["Error: openssl PHP module required but not installed."] = "Fehler: Das openssl Modul von PHP ist nict installiert.";
+$a->strings["Error: mysqli PHP module required but not installed."] = "Fehler: Das mysqli Modul von PHP ist nicht installiert.";
+$a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "Der Installationswizzard muss in der Lage sein eine Datei im Stammverzeichnis deines Webservers anzuliegen ist allerdings derzeit nicht in der Lage dies zu tun.";
+$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "In den meisten Fällen ist dies ein Problem mit den Schreibrechten, der Webserver könnte keine Schreiberlaubnis haben, selbst wenn du sie hast.";
+$a->strings["Please check with your site documentation or support people to see if this situation can be corrected."] = "Bitte überprüfe die Einstellungen und frage im Zweifelsfall dein Support Team um diese Situations zu beheben.";
+$a->strings["If not, you may be required to perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Sollte dies nicht möglich sein musst du die Installation manuell durchführen. Lies dazu bitte in der Datei \"INSTALL.txt\".";
+$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Die Konfigurationsdatei \".htconfig.php\" konnte nicht angelegt werden. Bitte verwende den angefügten Text um die Datei im Stammverzeichnis deiner Friendika Installation zu erzeugen.";
+$a->strings["Errors encountered creating database tables."] = "Fehler aufgetreten wärend der Erzeugung der Datenbank Tabellen.";
+$a->strings["Normal View"] = "Normale Ansicht";
+$a->strings["New Item View"] = "Neue Einträge";
+$a->strings["%d member"] = array(
+ 0 => "%d Mitglied",
+ 1 => "%d Mitglieder",
+);
+$a->strings["Warning: This group contains %s from an insecure network."] = "Warnung: Diese Gruppe beinhaltet %s aus einem unsicheren Netzwerk.";
+$a->strings["Private messages to this group are at risk of public disclosure."] = "Private Nachrichten an diese Gruppe könnten an die Öffentlichkeit geraten.";
+$a->strings["No such group"] = "Es gibt keine solche Gruppe";
+$a->strings["Group is empty"] = "Gruppe ist leer";
+$a->strings["Group: "] = "Gruppe: ";
+$a->strings["Contact: "] = "Kontakt ";
+$a->strings["Private messages to this person are at risk of public disclosure."] = "Private Nachrichten an diese Person könnten an die Öffentlichkeit gelangen.";
+$a->strings["Invalid contact."] = "Ungültiger Kontakt.";
+$a->strings["Invalid profile identifier."] = "Ungültiger Profil-Bezeichner";
+$a->strings["Profile Visibility Editor"] = "Editor für die Profil-Sichtbarkeit";
+$a->strings["Click on a contact to add or remove."] = "Klicke einen Kontakt an um ihn hinzuzufügen oder zu entfernen";
+$a->strings["Visible To"] = "Sichtbar für";
+$a->strings["All Contacts (with secure profile access)"] = "Alle Kontakte (mit gesichertem Profil zugriff)";
+$a->strings["Invalid request identifier."] = "Invalid request identifier.";
+$a->strings["Discard"] = "Verwerfen";
+$a->strings["Ignore"] = "Ignorieren";
+$a->strings["Pending Friend/Connect Notifications"] = "Anstehende Freundschafts/Kontakt Benachrichtigungen";
+$a->strings["Show Ignored Requests"] = "Zeige ignorierte Anfragen";
+$a->strings["Hide Ignored Requests"] = "Verberge ignorierte Anfragen";
+$a->strings["Claims to be known to you: "] = "Behauptet dich zu kennen: ";
+$a->strings["yes"] = "ja";
+$a->strings["no"] = "nein";
+$a->strings["Approve as: "] = "Genehmigen als: ";
+$a->strings["Friend"] = "Freund";
+$a->strings["Fan/Admirer"] = "Fan/Verehrer";
+$a->strings["Notification type: "] = "Benachrichtigungs Typ: ";
+$a->strings["Friend/Connect Request"] = "Kontakt-/Freundschaftsanfrage";
+$a->strings["New Follower"] = "Neuer Bewunderer";
+$a->strings["Approve"] = "Genehmigen";
+$a->strings["No notifications."] = "Keine Benachrichtigungen.";
+$a->strings["User registrations waiting for confirm"] = "Neuanmeldungen die auf deine Bestätigung warten";
+$a->strings["Deny"] = "Verwehren";
+$a->strings["No registrations."] = "Keine Neuanmeldungen.";
+$a->strings["Contact settings applied."] = "Einstellungen zum Kontakt angewandt.";
+$a->strings["Contact update failed."] = "Konnte den Kontakt nicht aktualisieren.";
+$a->strings["Repair Contact Settings"] = "Kontakt Einstellungen reparieren";
+$a->strings["<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact will stop working."] = "<strong>Warnung: Nur für erfahrene Nutzer</strong> sollten hier fehlerhafte Informationen eingetragen werden wirst du nicht mehr in der Lage sein mit diesem Kontakt zu kommunizieren.";
+$a->strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "Bitte nutze den Zurück-Button deines Browsers <strong>jetzt</strong> wenn du dir unsicher bist was auf dieser Seite gemacht wird.";
+$a->strings["Name"] = "Name";
+$a->strings["Account Nickname"] = "Account Spitzname";
+$a->strings["Account URL"] = "Account URL";
+$a->strings["Friend Request URL"] = "URL für Freundschaftsanfragen";
+$a->strings["Friend Confirm URL"] = "URL für Bestätigungen von Freundschaftsanfragen";
+$a->strings["Notification Endpoint URL"] = "URL Endpunkt für Benachrichtigungen";
+$a->strings["Poll/Feed URL"] = "Pull/Feed URL";
+$a->strings["This introduction has already been accepted."] = "Diese Vorstellung wurde bereits abgeschlossen.";
+$a->strings["Profile location is not valid or does not contain profile information."] = "Profil Adresse ist ungültig oder stellt einige Profildaten nicht zur Verfügung.";
+$a->strings["Warning: profile location has no identifiable owner name."] = "Warning: profile location has no identifiable owner name.";
+$a->strings["Warning: profile location has no profile photo."] = "Warning: profile location has no profile photo.";
+$a->strings["%d required parameter was not found at the given location"] = array(
+ 0 => "",
+ 1 => "",
+);
+$a->strings["Introduction complete."] = "Vorstellung abgeschlossen.";
+$a->strings["Unrecoverable protocol error."] = "Nicht behebbarer Protokollfehler.";
+$a->strings["Profile unavailable."] = "Profil nicht verfügbar.";
+$a->strings["%s has received too many connection requests today."] = "%s hat heute zu viele Freundschaftsanfragen erhalten.";
+$a->strings["Spam protection measures have been invoked."] = "Maßnahmen zum Spamschutz wurden ergriffen.";
+$a->strings["Friends are advised to please try again in 24 hours."] = "Freunde sind angehalten es in 24 Stunden erneut zu versuchen.";
+$a->strings["Invalid locator"] = "Ungültiger Locator";
+$a->strings["Unable to resolve your name at the provided location."] = "Unable to resolve your name at the provided location.";
+$a->strings["You have already introduced yourself here."] = "Du hast dich hier bereits vorgestellt.";
+$a->strings["Apparently you are already friends with %s."] = "Es scheint so, als ob du bereits ein Freund von %s bist.";
+$a->strings["Invalid profile URL."] = "Ungültige Profil URL.";
+$a->strings["Your introduction has been sent."] = "Deine Vorstellung wurde abgeschickt.";
+$a->strings["Please login to confirm introduction."] = "Bitte melde dich an um die Vorstellung zu bestätigen.";
+$a->strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Incorrect identity currently logged in. Please login to <strong>this</strong> profile.";
+$a->strings["Welcome home %s."] = "Willkommen zurück %s.";
+$a->strings["Please confirm your introduction/connection request to %s."] = "Bitte bestätige deine Vorstellung/Verbindungs Anfrage bei %s.";
+$a->strings["Confirm"] = "Bestätigen";
+$a->strings["[Name Withheld]"] = "[Name Zurückgehalten]";
+$a->strings["Introduction received at "] = "Vorstellung erhalten auf";
+$a->strings["Friend/Connection Request"] = "Freundschafts/Kontakt Anfrage";
+$a->strings["Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca"] = "Beispiele: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca";
+$a->strings["Please answer the following:"] = "Bitte beantworte folgende Fragen:";
+$a->strings["Does \$name know you?"] = "Kennt \$name dich?";
+$a->strings["Add a personal note:"] = "Eine persönliche Notiz anfügen:";
+$a->strings["Please enter your 'Identity Address' from one of the following supported social networks:"] = "Bitte gib die Adresse deiner Identität in einem der unterstützten sozialen Netzwerke an:";
+$a->strings["Friendika"] = "Friendika";
+$a->strings["StatusNet/Federated Social Web"] = "StatusNet/Federated Social Web";
+$a->strings["Private (secure) network"] = "Privates (sicheres) Netzwerk";
+$a->strings["Public (insecure) network"] = "Öffentliches (unsicheres) Netzwerk";
+$a->strings["Your Identity Address:"] = "Adresse deiner Identität";
+$a->strings["Submit Request"] = "Anfrage abschicken";
+$a->strings["Cancel"] = "Abbrechen";
+$a->strings["status"] = "Status";
+$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s mag %2\$s's %3\$s";
+$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s mag %2\$s's %3\$s nicht";
+$a->strings["Password reset request issued. Check your email."] = "Zurücksetzen des Passworts eingeleitet. Bitte überprüfe deine Email.";
+$a->strings["Password reset requested at %s"] = "Anfrage zum Zurücksetzen des Passworts auf %s erhalten";
+$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Anfrage konnte nicht verifiziert werden. (Eventuell hast du bereits ähnliche Anfrage gestellt.) Zurücksetzen des Passworts gescheitert.";
+$a->strings["Your password has been reset as requested."] = "Dein Passwort wurde wie gewünscht zurück gesetzt.";
+$a->strings["Your new password is"] = "Dein neues Passwort lautet";
+$a->strings["Save or copy your new password - and then"] = "Speichere oder kopiere dein neues Passwort - und dann";
+$a->strings["click here to login"] = "hier klicken um dich anzumelden";
+$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Du kannst das Passwort unter den <em>Einstellungen</em> ändern sobald du dich erfolgreich angemeldet hast.";
+$a->strings["Forgot your Password?"] = "Hast du dein Passwort vergessen?";
+$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Gib deine Email-Adresse an und fordere ein neues Passwort an. Es werden dir dann weitere Informationen per Mail zugesand.";
+$a->strings["Nickname or Email: "] = "Spitzname oder Email:";
+$a->strings["Reset"] = "Zurücksetzen";
+$a->strings["Remove My Account"] = "Account löschen";
+$a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Dies wird deinen Account endgültig löschen. Es gibt keine Möglichkeit ihn wiederherzustellen.";
+$a->strings["Please enter your password for verification:"] = "Bitte gib dein Passwort zur Verifikation ein:";
+$a->strings["Applications"] = "Anwendungen";
+$a->strings["Global Directory"] = "Weltweites Verzeichnis";
+$a->strings["Site Directory"] = "Verzeichnis";
+$a->strings["Gender: "] = "Geschlecht:";
+$a->strings["No entries (some entries may be hidden)."] = "Keine Einträge (einige Einträge könnten versteckt sein).";
+$a->strings["This is Friendika version"] = "Dies ist Friendika Version";
+$a->strings["running at web location"] = "die unter folgender Webadresse zu finden ist";
+$a->strings["Shared content within the Friendika network is provided under the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0 license</a>"] = "Geteilte Inhalte innerhalb des Friendika Netzwerks sind unter der <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0 license</a> verfügbar";
+$a->strings["Please visit <a href=\"http://project.friendika.com\">Project.Friendika.com</a> to learn more about the Friendika project."] = "Bitte besuche <a href=\"http://project.friendika.com\">Project.Friendika.com</a> um mehr über Friendika zu erfahren.";
+$a->strings["Bug reports and issues: please visit"] = "Probleme oder Fehler gefunden? Bitte besuche";
+$a->strings["Suggestions, praise, donations, etc. - please email \"Info\" at Friendika - dot com"] = "Vorschläge, Lobeshymnen, Spenden usw. - bitte eine Email an \"Info\" at Friendika - dot com (englisch bevorzugt)";
+$a->strings["Installed plugins/addons/apps"] = "Installierte Plugins/Erweiterungen/Apps";
+$a->strings["No installed plugins/addons/apps"] = "Keine Plugins/Erweiterungen/Apps installiert";
+$a->strings["Unable to locate original post."] = "Konnte das original Posting nicht finden.";
+$a->strings["Empty post discarded."] = "Leere Nachricht wurde verworfen.";
+$a->strings["%s commented on your item at %s"] = "%s hat einen deiner Beiträge auf %s kommentiert";
+$a->strings["%s posted on your profile wall at %s"] = "%s hat etwas auf deiner Pinnwand bei %s gepostet";
+$a->strings["System error. Post not saved."] = "Systemfehler. Nachricht konnte nicht gespeichert werden.";
+$a->strings["This message was sent to you by %s, a member of the Friendika social network."] = "Diese Nachricht wurde dir von %s gesendet, einem Mitglied des Sozialen Netzwerks Friendika";
+$a->strings["You may visit them online at %s"] = "Du kannst sie online unter %s besuchen";
+$a->strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Please contact the sender by replying to this post if you do not wish to receive these messages.";
+$a->strings["%s posted an update."] = "%s hat ein Update gepostet.";
+$a->strings["Tag removed"] = "Tag entfernt";
+$a->strings["Remove Item Tag"] = "Gegenstands Tag entfernen";
+$a->strings["Select a tag to remove: "] = "Wähle ein Tag zum Entfernen aus: ";
+$a->strings["Remove"] = "Entfernen";
+$a->strings["No recipient selected."] = "Kein Empfänger gewählt.";
+$a->strings["[no subject]"] = "[kein Betreff]";
+$a->strings["Unable to locate contact information."] = "Konnte die Kontaktinformationen nicht finden.";
+$a->strings["Message sent."] = "Nachricht gesendet.";
+$a->strings["Message could not be sent."] = "Nachricht konnte nicht gesendet werden.";
+$a->strings["Messages"] = "Nachrichten";
+$a->strings["Inbox"] = "Eingang";
+$a->strings["Outbox"] = "Ausgang";
+$a->strings["New Message"] = "Neue Nachricht";
+$a->strings["Message deleted."] = "Nachricht gelöscht.";
+$a->strings["Conversation removed."] = "Unterhaltung gelöscht.";
+$a->strings["Please enter a link URL:"] = "Bitte gib die URL des Links ein:";
+$a->strings["Send Private Message"] = "Private Nachricht senden";
+$a->strings["To:"] = "An:";
+$a->strings["Subject:"] = "Betreff:";
+$a->strings["No messages."] = "Keine Nachrichten.";
+$a->strings["Delete conversation"] = "Unterhaltung löschen";
+$a->strings["D, d M Y - g:i A"] = "D, d. M Y - g:i A";
+$a->strings["Message not available."] = "Nachricht nicht verfügbar.";
+$a->strings["Delete message"] = "Nachricht löschen";
+$a->strings["Send Reply"] = "Antwort senden";
+$a->strings["Response from remote site was not understood."] = "Antwort der entfernten Gegenstelle unverständlich.";
+$a->strings["Unexpected response from remote site: "] = "Unerwartete Antwort der Gegenstelle: ";
+$a->strings["Confirmation completed successfully."] = "Bestätigung erfolgreich abgeschlossen.";
+$a->strings["Remote site reported: "] = "Entfernte Seite meldet: ";
+$a->strings["Temporary failure. Please wait and try again."] = "Zeitweiser Fehler. Bitte warte einige Momente und versuche es dann noch einmal.";
+$a->strings["Introduction failed or was revoked."] = "Vorstellung schlug fehl oder wurde zurück gezogen.";
+$a->strings["Unable to set contact photo."] = "Konnte das Bild des Kontakts nicht speichern.";
+$a->strings["%1\$s is now friends with %2\$s"] = "%1\$s ist nun mit %2\$s befreundet";
+$a->strings["No user record found for '%s' "] = "Für '%s' wurde kein Nutzer gefunden";
+$a->strings["Our site encryption key is apparently messed up."] = "Der Verschlüsslungsschlüssel unserer Seite ist anscheinend im Arsch.";
+$a->strings["Empty site URL was provided or URL could not be decrypted by us."] = "Leere URL für die Seite erhalten oder die URL konnte nicht entschlüsselt werden.";
+$a->strings["Contact record was not found for you on our site."] = "Für diesen Kontakt wurde auf unserer Seite kein Eintrag gefunden.";
+$a->strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "Die ID die uns dein System angeboten hat ist hier bereits vergeben. Bitte versuche es noch einmal.";
+$a->strings["Unable to set your contact credentials on our system."] = "Deine Kontaktreferenzen konnten nicht in unserm System gespeichert werden.";
+$a->strings["Unable to update your contact profile details on our system"] = "Die Updates für dein Profil konnten nicht gespeichert werden";
+$a->strings["Connection accepted at %s"] = "Auf %s wurde die Verbindung akzeptiert";
+$a->strings["Login failed."] = "Annmeldung fehlgeschlagen.";
+$a->strings["Welcome "] = "Willkommen ";
+$a->strings["Please upload a profile photo."] = "Bitte lade ein Profilbild hoch.";
+$a->strings["Welcome back "] = "Willkommen zurück ";
+$a->strings["%s welcomes %s"] = "%s heißt %s herzlich willkommen";
+$a->strings["No contacts."] = "Keine Kontakte.";
+$a->strings["Group created."] = "Gruppe erstellt.";
+$a->strings["Could not create group."] = "Konnte die Gruppe nicht erstellen.";
+$a->strings["Group not found."] = "Gruppe nicht gefunden.";
+$a->strings["Group name changed."] = "Gruppenname geändert.";
+$a->strings["Create a group of contacts/friends."] = "Eine Gruppe von Kontakten/Freunden anlegen.";
+$a->strings["Group Name: "] = "Gruppen Name:";
+$a->strings["Group removed."] = "Gruppe entfernt.";
+$a->strings["Unable to remove group."] = "Konnte die Gruppe nicht entfernen.";
+$a->strings["Group Editor"] = "Gruppen Editor";
+$a->strings["Members"] = "Mitglieder";
+$a->strings["All Contacts"] = "Alle Kontakte";
+$a->strings["Profile Match"] = "Profil Übereinstimmungen";
+$a->strings["No matches"] = "Keine Übereinstimmungen";
+$a->strings["Post to Twitter"] = "Nach Twitter senden";
+$a->strings["Twitter Posting Settings"] = "Twitter Posting Einstellungen";
+$a->strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Kein Consumer Schlüsselpaar für Twitter gefunden. Bitte wende dich an den Administrator der Seite.";
+$a->strings["At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Auf dieser Friendika Instanz wurde das Twitter Plugin aktiviert dein Account ist allerdings noch nicht mit einem Twitter Account verbunden. Um deinen Account mit Twitter zu verbinden, klick auf den Button weiter unten und gib die PIN die du auf Twitter erhälst hier ein. Es werden ausschließlich deine <strong>öffentlichen</strong> Nachrichten auf Twitter veröffentlicht.";
+$a->strings["Log in with Twitter"] = "bei Twitter anmelden";
+$a->strings["Copy the PIN from Twitter here"] = "Kopiere die Twitter PIN hier her";
+$a->strings["Currently connected to: "] = "Momentan verbunden mit: ";
+$a->strings["If enabled all your <strong>public</strong> postings will be posted to the associated Twitter account as well."] = "Wenn dies aktiviert ist, werden alle deine <strong>öffentlichen</strong> Nachricten auch auf dem verbundenen Twitter Account veröffentlicht.";
+$a->strings["Send public postings to Twitter"] = "Veröffentliche öffentliche Nachrichten auf Twitter";
+$a->strings["Clear OAuth configuration"] = "OAuth Konfiguration löschen";
+$a->strings["Post to StatusNet"] = "Nach StatusNet senden";
+$a->strings["StatusNet Posting Settings"] = "StatusNet Posting Einstellungen";
+$a->strings["No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation."] = "Kein OAuth Consumer Schlüsselpaar für StatusNet gefunden. Registriere deinen Friendika Account als Desktopapplikation und trage hier den OAuth Consumer Schlüssel, das Geheimnis und die Basis-URL der StatusNet API ein.<br />Bevor du eine neue Anwendung registrierst, kannst du auch erstmal den Admin deiner Friendika Seite fragen, ob es für deine bevorzugte StatusNet Instanz eventuell bereits ein OAuth Schlüsselpaar gibt.";
+$a->strings["OAuth Consumer Key"] = "OAuth Consumer Schlüssel";
+$a->strings["OAuth Consumer Secret"] = "OAuth Consumer Geheimnis";
+$a->strings["Base API Path (remember the trailing /)"] = "Basis-URL der StatusNet API (vergiss den abschließenden / nicht)";
+$a->strings["To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet."] = "Um deinen Account mit einem StatusNet Account zu verknüpfen klicke den Button an um einen Sicherheitscode von StatusNet zu erhalten und kopiere diesen in die Eingabebox weiter unten. Es werden ausschließlich deine <strong>öffentlichen</strong> Nachrichten bei StatusNet veröffentllicht.";
+$a->strings["Log in with StatusNet"] = "Bei StatusNet anmelden";
+$a->strings["Copy the security code from StatusNet here"] = "Kopiere den Sicherheitscode von StatusNet hier her";
+$a->strings["If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well."] = "Wenn dies aktiviert ist, werden alle deine <strong>öffentlichen</strong> Nachricten auch auf dem verbundenen StatusNet Account veröffentlicht.";
+$a->strings["Send public postings to StatusNet"] = "Veröffentliche öffentliche Nachrichten auf StatusNet";
+$a->strings["Three Dimensional Tic-Tac-Toe"] = "Dreidimensionales Tic-Tac-Toe";
+$a->strings["3D Tic-Tac-Toe"] = "3D Tic-Tac-Toe";
+$a->strings["New game"] = "Neues Spiel";
+$a->strings["New game with handicap"] = "Neues Handicap Spiel";
+$a->strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "Drei dimensionales Tic-Tac-Toe ist genauso wie das herkömmliche Spiel, nur das man es auf mehreren Ebenen gleichzeitig spielt.";
+$a->strings["In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels."] = "In diesem Fall sind es drei Ebenen. Man gewinnt indem man drei in einer Reihe auf einer beliebigen Reihe schafft, oder drei übereinander oder diagonal auf verschiedenen Ebenen.";
+$a->strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "Beim Handicap-Spiel wird die zentrale Position der mittleren Ebene gesperrt da der Spieler der diese Ebene besitzt oft einen unfairen Vorteil genießt.";
+$a->strings["You go first..."] = "Du fängst an...";
+$a->strings["I'm going first this time..."] = "Diesmal fange ich an...";
+$a->strings["You won!"] = "Du gewinnst!";
+$a->strings["\"Cat\" game!"] = "Unentschieden!";
+$a->strings["I won!"] = "Ich gewinne!";
+$a->strings["Select files to upload: "] = "Wähle Dateien zum Upload aus: ";
+$a->strings["Use the following controls only if the Java uploader [above] fails to launch."] = "Verwende die folgenden Kontrollen nur, wenn der Java Uploader [oben] nicht funktioniert.";
+$a->strings["Facebook disabled"] = "Facebook deaktiviert";
+$a->strings["Updating contacts"] = "Aktualisiere Kontakte";
+$a->strings["Facebook API key is missing."] = "Facebook API Schlüssel nicht gefunden";
+$a->strings["Facebook Connect"] = "Mit Facebook verbinden";
+$a->strings["Install Facebook connector for this account."] = "Facebook Connector für diesen Account installieren.";
+$a->strings["Remove Facebook connector"] = "Facebook Connector entfernen";
+$a->strings["Post to Facebook by default"] = "Sende standardmäßig nach Facebook";
+$a->strings["Facebook"] = "Facebook";
+$a->strings["Facebook Connector Settings"] = "Facebook Verbindungseinstellungen";
+$a->strings["Post to Facebook"] = "Zu Facebook posten";
+$a->strings["Post to Facebook cancelled because of multi-network access permission conflict."] = "Das Senden nach Facebook wurde zurückgezogen da Konflikte bei den Multi-Netzwerks-Rechten vorliegen.";
+$a->strings["Image: "] = "Bild";
+$a->strings["View on Friendika"] = "Auf Friendika ansehen";
+$a->strings["Randplace Settings"] = "Randplace Einstellungen";
+$a->strings["Enable Randplace Plugin"] = "Randplace Erweiterung aktivieren";
+$a->strings["Upload a file"] = "Datei hochladen";
+$a->strings["Drop files here to upload"] = "Ziehe die Dateien hier her die du hochladen willst";
+$a->strings["Failed"] = "Fehlgeschlagen";
+$a->strings["No files were uploaded."] = "Keine Dateien hochgeladen.";
+$a->strings["Uploaded file is empty"] = "Hochgeladene Datei ist leer";
+$a->strings["Uploaded file is too large"] = "Hochgeladene Datei ist zu groß";
+$a->strings["File has an invalid extension, it should be one of "] = "Die Dateiextension ist nicht erlaubt, sie muss eine der folgenden sein ";
+$a->strings["Upload was cancelled, or server error encountered"] = "Upload abgebrochen oder Serverfehler aufgetreten";
+$a->strings["(no subject)"] = "(kein Betreff)";
+$a->strings["Unknown | Not categorised"] = "Unbekannt | Nicht kategorisiert";
+$a->strings["Block immediately"] = "Sofort blockieren";
+$a->strings["Shady, spammer, self-marketer"] = "Zwielichtig, Spammer, Selbstdarsteller";
+$a->strings["Known to me, but no opinion"] = "Ist mir bekannt, hab aber keine Meinung";
+$a->strings["OK, probably harmless"] = "OK, wahrscheinlich harmlos";
+$a->strings["Reputable, has my trust"] = "Seriös, hat mein Vertrauen";
+$a->strings["Frequently"] = "Häufig";
+$a->strings["Hourly"] = "Stündlich";
+$a->strings["Twice daily"] = "Zweimal Täglich";
+$a->strings["Daily"] = "Täglich";
+$a->strings["Weekly"] = "Wöchendlich";
+$a->strings["Monthly"] = "Monatlich";
+$a->strings["Male"] = "Männlich";
+$a->strings["Female"] = "Weiblich";
+$a->strings["Currently Male"] = "Momentan Männlich";
+$a->strings["Currently Female"] = "Momentan Weiblich";
+$a->strings["Mostly Male"] = "Hauptsächlich Männlich";
+$a->strings["Mostly Female"] = "Hauptsächlich Weiblich";
+$a->strings["Transgender"] = "Transgender";
+$a->strings["Intersex"] = "Intersex";
+$a->strings["Transsexual"] = "Transsexuel";
+$a->strings["Hermaphrodite"] = "Hermaphrodit";
+$a->strings["Neuter"] = "Neuter";
+$a->strings["Non-specific"] = "Nicht spezifiziert";
+$a->strings["Other"] = "Andere";
+$a->strings["Undecided"] = "Unentschieden";
+$a->strings["Males"] = "Männer";
+$a->strings["Females"] = "Frauen";
+$a->strings["Gay"] = "Schwul";
+$a->strings["Lesbian"] = "Lesbisch";
+$a->strings["No Preference"] = "Keine Vorlieben";
+$a->strings["Bisexual"] = "Bisexuel";
+$a->strings["Autosexual"] = "Autosexual";
+$a->strings["Abstinent"] = "Abstinent";
+$a->strings["Virgin"] = "Jungfrau";
+$a->strings["Deviant"] = "Deviant";
+$a->strings["Fetish"] = "Fetish";
+$a->strings["Oodles"] = "Oodles";
+$a->strings["Nonsexual"] = "Nonsexual";
+$a->strings["Single"] = "Single";
+$a->strings["Lonely"] = "Einsam";
+$a->strings["Available"] = "Verfügbar";
+$a->strings["Unavailable"] = "Nicht verfügbar";
+$a->strings["Dating"] = "Dating";
+$a->strings["Unfaithful"] = "Untreu";
+$a->strings["Sex Addict"] = "Sex Besessen";
+$a->strings["Friends"] = "Freunde";
+$a->strings["Friends/Benefits"] = "Friends/Benefits";
+$a->strings["Casual"] = "Casual";
+$a->strings["Engaged"] = "Verlobt";
+$a->strings["Married"] = "Verheiratet";
+$a->strings["Partners"] = "Partner";
+$a->strings["Cohabiting"] = "kohabitierend";
+$a->strings["Happy"] = "Glücklich";
+$a->strings["Not Looking"] = "Nicht auf der Suche";
+$a->strings["Swinger"] = "Swinger";
+$a->strings["Betrayed"] = "Betrogen";
+$a->strings["Separated"] = "Getrennt";
+$a->strings["Unstable"] = "Unstabil";
+$a->strings["Divorced"] = "Geschieden";
+$a->strings["Widowed"] = "Verwidwet";
+$a->strings["Uncertain"] = "Unsicher";
+$a->strings["Complicated"] = "Kompliziert";
+$a->strings["Don't care"] = "Ist mir nicht wichtig";
+$a->strings["Ask me"] = "Frag mich";
+$a->strings["Visible To:"] = "Sichtbar für:";
+$a->strings["Groups"] = "Gruppen";
+$a->strings["Except For:"] = "Abgesehen von:";
+$a->strings["Logged out."] = "Abgemeldet.";
+$a->strings["Image/photo"] = "Bild/Foto";
+$a->strings["Miscellaneous"] = "Verschiedenes";
+$a->strings["less than a second ago"] = "vor weniger als einer Sekunde";
+$a->strings["year"] = "Jahr";
+$a->strings["years"] = "Jahre";
+$a->strings["month"] = "Monat";
+$a->strings["months"] = "Monate";
+$a->strings["week"] = "Woche";
+$a->strings["weeks"] = "Wochen";
+$a->strings["day"] = "Tag";
+$a->strings["hour"] = "Stunde";
+$a->strings["hours"] = "Stunden";
+$a->strings["minute"] = "Minute";
+$a->strings["minutes"] = "Minuten";
+$a->strings["second"] = "Sekunde";
+$a->strings["seconds"] = "Sekunden";
+$a->strings[" ago"] = " her";
+$a->strings["Birthday:"] = "Geburtstag:";
+$a->strings["j F, Y"] = "j F, Y";
+$a->strings["j F"] = "j F";
+$a->strings["Age:"] = "Alter:";
+$a->strings["<span class=\"heart\">&hearts;</span> Status:"] = "<span class=\"heart\">&hearts;</span> Bezieungsstatus:";
+$a->strings["Religion:"] = "Religion:";
+$a->strings["About:"] = "Über:";
+$a->strings["Hobbies/Interests:"] = "Hobbies/Interessen:";
+$a->strings["Contact information and Social Networks:"] = "Kontaktinformationen und Soziale Netzwerke:";
+$a->strings["Musical interests:"] = "Musikalische Interessen:";
+$a->strings["Books, literature:"] = "Literatur/Bücher:";
+$a->strings["Television:"] = "Fernsehen:";
+$a->strings["Film/dance/culture/entertainment:"] = "Filme/Tänze/Kultur/Unterhaltung:";
+$a->strings["Love/Romance:"] = "Liebesleben:";
+$a->strings["Work/employment:"] = "Arbeit/Beschäftigung:";
+$a->strings["School/education:"] = "Schule/Ausbildung:";
+$a->strings["Home"] = "Persönlich";
+$a->strings["Apps"] = "Apps";
+$a->strings["Directory"] = "Verzeichnis";
+$a->strings["Network"] = "Netzwerk";
+$a->strings["Notifications"] = "Benachrichtigungen";
+$a->strings["Manage"] = "Verwalten";
+$a->strings["Settings"] = "Einstellungen";
+$a->strings["View %s's profile"] = "Betrachte %s's Profil";
+$a->strings["View in context"] = "Im Zusammenhang betrachten";
+$a->strings["See more posts like this"] = "Mehr Beiträge wie diesen anzeigen";
+$a->strings["See all %d comments"] = "Alle %d Kommentare anzeigen";
+$a->strings["to"] = "to";
+$a->strings["Wall-to-Wall"] = "Wall-to-Wall";
+$a->strings["via Wall-To-Wall:"] = "via Wall-To-Wall:";
+$a->strings["View status"] = "Status anzeigen";
+$a->strings["View profile"] = "Profil anzeigen";
+$a->strings["View photos"] = "Fotos ansehen";
+$a->strings["View recent"] = "Jüngste anzeigen";
+$a->strings["Send PM"] = "Private Nachricht senden";
+$a->strings["%s likes this."] = "%s mag dies.";
+$a->strings["%s doesn't like this."] = "%s mag dies nicht.";
+$a->strings["<span %1\$s>%2\$d people</span> like this."] = "<span %1\$s>%2\$d Personen</span> mögen dies.";
+$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = "<span %1\$s>%2\$d Personen</span> mögen dies nicht.";
+$a->strings["and"] = "und";
+$a->strings[", and %d other people"] = " und %d andere";
+$a->strings["%s like this."] = "%s mag dies.";
+$a->strings["%s don't like this."] = "%s mag dies nicht.";
+$a->strings["Please enter a YouTube link:"] = "Bitte gebe den YouTube Link ein:";
+$a->strings["Please enter a video(.ogg) link/URL:"] = "Bitte gebe den Link zum Video(.ogg) an:";
+$a->strings["Please enter an audio(.ogg) link/URL:"] = "Bitte gebe den Link zum Audio(.ogg) an:";
+$a->strings["Where are you right now?"] = "Wo hälst du dich jetzt gerade auf?";
+$a->strings["Enter a title for this item"] = "Gib den Titel für diesen Beitrag ein";
+$a->strings["Set title"] = "Titel setzen";
+$a->strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS Informationen für den Datenbanken Server '%s' nicht ermitteln.";
+$a->strings["You have a new follower at "] = "Du hast einen neuen Kontakt auf ";
+$a->strings["Create a new group"] = "Neue Gruppe erstellen";
+$a->strings["Everybody"] = "Alle Kontakte";
+$a->strings["Embedding disabled"] = "Einbettungen deaktiviert";
diff --git a/view/en/dfrn_req_confirm.tpl b/view/dfrn_req_confirm.tpl
index f053f22af..58e9233aa 100644
--- a/view/en/dfrn_req_confirm.tpl
+++ b/view/dfrn_req_confirm.tpl
@@ -1,8 +1,8 @@
<p id="dfrn-request-homecoming" >
-Welcome home $username.
+$welcome
<br />
-Please confirm your introduction to $dfrn_url.
+$please
</p>
<form id="dfrn-request-homecoming-form" action="dfrn_request/$nickname" method="post">
@@ -12,6 +12,6 @@ Please confirm your introduction to $dfrn_url.
$aes_allow
<div id="dfrn-request-homecoming-submit-wrapper" >
-<input id="dfrn-request-homecoming-submit" type="submit" name="submit" value="Confirm" />
+<input id="dfrn-request-homecoming-submit" type="submit" name="submit" value="$submit" />
</div>
</form> \ No newline at end of file
diff --git a/view/dfrn_request.tpl b/view/dfrn_request.tpl
index 9cb1e8749..034da332d 100644
--- a/view/dfrn_request.tpl
+++ b/view/dfrn_request.tpl
@@ -7,6 +7,7 @@ $page_desc<br />
<li><a href="http://friendika.com" title="$private_net">$friendika</a> <img src="images/lock_icon.gif" alt="$private_net" title="$private_net" /></li>
<li><a href="http://ostatus.org" title="$public_net" >$statusnet</a> <img src="images/unlock_icon.gif" alt="$public_net" title="$public_net"/></li>
</ul>
+$desc
</p>
<form action="dfrn_request/$nickname" method="post" />
diff --git a/view/it/directory_header.tpl b/view/directory_header.tpl
index 9ab9009e9..c5463778b 100644
--- a/view/it/directory_header.tpl
+++ b/view/directory_header.tpl
@@ -1,13 +1,14 @@
-<h1>Elenco del Sito</h1>
+<h1>$sitedir</h1>
$globaldir
+$admin
$finding
<div id="directory-search-wrapper">
<form id="directory-search-form" action="directory" method="get" >
<input type="text" name="search" id="directory-search" class="search-input" onfocus="this.select();" value="$search" />
-<input type="submit" name="submit" id="directory-search-submit" value="Trova" />
+<input type="submit" name="submit" id="directory-search-submit" value="$submit" />
</form>
</div>
<div id="directory-search-end"></div>
diff --git a/view/en/directory_header.tpl b/view/en/directory_header.tpl
deleted file mode 100644
index 03eed62b3..000000000
--- a/view/en/directory_header.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-<h1>Site Directory</h1>
-
-$globaldir
-
-$finding
-
-<div id="directory-search-wrapper">
-<form id="directory-search-form" action="directory" method="get" >
-<input type="text" name="search" id="directory-search" class="search-input" onfocus="this.select();" value="$search" />
-<input type="submit" name="submit" id="directory-search-submit" value="Find" />
-</form>
-</div>
-<div id="directory-search-end"></div>
-
diff --git a/view/en/htconfig.tpl b/view/en/htconfig.tpl
index d3bb6b411..0ce28b4a0 100644
--- a/view/en/htconfig.tpl
+++ b/view/en/htconfig.tpl
@@ -37,7 +37,7 @@ $a->config['admin_email'] = '';
// Maximum size of an imported message, 0 is unlimited
-$a->config['max_import_size'] = 10000;
+$a->config['max_import_size'] = 200000;
// maximum size of uploaded photos
diff --git a/view/en/insecure_net.tpl b/view/en/insecure_net.tpl
deleted file mode 100644
index 5628639cc..000000000
--- a/view/en/insecure_net.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<div id="profile-edit-insecure">
-<p>
-The social network that $name belongs to is an open network with limited or non-existent privacy controls.
-Please use appropriate discretion.
-</p>
-</div> \ No newline at end of file
diff --git a/view/en/install_db.tpl b/view/en/install_db.tpl
deleted file mode 100644
index c413689c2..000000000
--- a/view/en/install_db.tpl
+++ /dev/null
@@ -1,40 +0,0 @@
-
-<h3>Friendika Social Network</h3>
-<h3>Installation</h3>
-
-<p>
-In order to install Friendika we need to know how to contact your database. Please contact your hosting provider or site administrator if you have questions about these settings. The database you specify below must already exist. If it does not, please create it before continuing.
-</p>
-
-<form id="install-form" action="$baseurl/install" method="post">
-
-<input type="hidden" name="phpath" value="$phpath" />
-
-<label for="install-dbhost" id="install-dbhost-label">Database Server Name</label>
-<input type="text" name="dbhost" id="install-dbhost" value="$dbhost" />
-<div id="install-dbhost-end"></div>
-
-<label for="install-dbuser" id="install-dbuser-label">Database Login Name</label>
-<input type="text" name="dbuser" id="install-dbuser" value="$dbuser" />
-<div id="install-dbuser-end"></div>
-
-<label for="install-dbpass" id="install-dbpass-label">Database Login Password</label>
-<input type="password" name="dbpass" id="install-dbpass" value="$dbpass" />
-<div id="install-dbpass-end"></div>
-
-<label for="install-dbdata" id="install-dbdata-label">Database Name</label>
-<input type="text" name="dbdata" id="install-dbdata" value="$dbdata" />
-<div id="install-dbdata-end"></div>
-
-<div id="install-tz-desc">
-Please select a default timezone for your website
-</div>
-
-$tzselect
-
-<div id="install-tz-end" ></div>
-<input id="install-submit" type="submit" name="submit" value="$submit" />
-
-</form>
-<div id="install-end" ></div>
-
diff --git a/view/en/intros-top.tpl b/view/en/intros-top.tpl
deleted file mode 100644
index d8b7394a4..000000000
--- a/view/en/intros-top.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<h1>Pending Friend/Connect Notifications</h1>
-
-<div id="notification-show-hide-wrapper" >
-<a href="$hide_url" id="notification-show-hide-link">$hide_text</a>
-</div>
-
-
diff --git a/view/en/lostpass.tpl b/view/en/lostpass.tpl
deleted file mode 100644
index a7040c149..000000000
--- a/view/en/lostpass.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<h3>Forgot your Password?</h3>
-
-<p id="lostpass-desc">
-Enter your email address and submit to have your password reset. Then check your email for further instructions.
-</p>
-
-<form action="lostpass" method="post" >
-<div id="login-name-wrapper">
- <label for="login-name" id="label-login-name">Nickname or Email: </label>
- <input type="text" maxlength="60" name="login-name" id="login-name" value="" />
-</div>
-<div id="login-extra-end"></div>
-<div id="login-submit-wrapper" >
- <input type="submit" name="submit" id="lostpass-submit-button" value="Reset" />
-</div>
-<div id="login-submit-end"></div>
-</form>
-
diff --git a/view/en/msg-header.tpl b/view/en/msg-header.tpl
deleted file mode 100644
index 174e6c985..000000000
--- a/view/en/msg-header.tpl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-<script language="javascript" type="text/javascript" src="$baseurl/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
-<script language="javascript" type="text/javascript">
-
-tinyMCE.init({
- theme : "advanced",
- mode : "specific_textareas",
- editor_selector: /(profile-jot-text|prvmail-text)/,
- plugins : "bbcode,paste",
- theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor",
- theme_advanced_buttons2 : "",
- theme_advanced_buttons3 : "",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "center",
- theme_advanced_blockformats : "blockquote,code",
- paste_text_sticky : true,
- entity_encoding : "raw",
- add_unload_trigger : false,
- remove_linebreaks : false,
- force_p_newlines : false,
- force_br_newlines : true,
- forced_root_block : '',
- convert_urls: false,
- content_css: "$baseurl/view/custom_tinymce.css",
- //Character count
- theme_advanced_path : false,
- setup : function(ed) {
- ed.onKeyUp.add(function(ed, e) {
- var txt = tinyMCE.activeEditor.getContent();
- var text = txt.length;
- if(txt.length <= 140) {
- $('#character-counter').removeClass('red');
- $('#character-counter').removeClass('orange');
- $('#character-counter').addClass('grey');
- }
- if((txt.length > 140) && (txt .length <= 420)) {
- $('#character-counter').removeClass('grey');
- $('#character-counter').removeClass('red');
- $('#character-counter').addClass('orange');
- }
- if(txt.length > 420) {
- $('#character-counter').removeClass('grey');
- $('#character-counter').removeClass('orange');
- $('#character-counter').addClass('red');
- }
- $('#character-counter').text(text);
- });
-
- ed.onInit.add(function(ed) {
- ed.pasteAsPlainText = true;
- });
- }
-});
-
-</script>
-<script type="text/javascript" src="include/ajaxupload.js" ></script>
-<script>
- $(document).ready(function() {
- var uploader = new window.AjaxUpload(
- 'prvmail-upload',
- { action: 'wall_upload/$nickname',
- name: 'userfile',
- onSubmit: function(file,ext) { $('#profile-rotator').show(); },
- onComplete: function(file,response) {
- tinyMCE.execCommand('mceInsertRawHTML',false,response);
- $('#profile-rotator').hide();
- }
- }
- );
-
- });
-
- function jotGetLink() {
- reply = prompt("Please enter a link URL:");
- if(reply && reply.length) {
- $('#profile-rotator').show();
- $.get('parse_url?url=' + reply, function(data) {
- tinyMCE.execCommand('mceInsertRawHTML',false,data);
- $('#profile-rotator').hide();
- });
- }
- }
-
- function linkdropper(event) {
- var linkFound = event.dataTransfer.types.contains("text/uri-list");
- if(linkFound)
- event.preventDefault();
- }
-
- function linkdrop(event) {
- var reply = event.dataTransfer.getData("text/uri-list");
- event.target.textContent = reply;
- event.preventDefault();
- if(reply && reply.length) {
- $('#profile-rotator').show();
- $.get('parse_url?url=' + reply, function(data) {
- tinyMCE.execCommand('mceInsertRawHTML',false,data);
- $('#profile-rotator').hide();
- });
- }
- }
-
-</script>
-
diff --git a/view/en/profile-in-directory.tpl b/view/en/profile-in-directory.tpl
deleted file mode 100644
index 98af3e59a..000000000
--- a/view/en/profile-in-directory.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<p id="profile-in-directory">
-Publish your default profile in site directory?
-</p>
-
- <div id="profile-in-dir-yes-wrapper">
- <label id="profile-in-dir-yes-label" for="profile-in-dir-yes">Yes</label>
- <input type="radio" name="profile_in_directory" id="profile-in-dir-yes" $yes_selected value="1" />
-
- <div id="profile-in-dir-break" ></div>
- </div>
- <div id="profile-in-dir-no-wrapper">
- <label id="profile-in-dir-no-label" for="profile-in-dir-no">No</label>
- <input type="radio" name="profile_in_directory" id="profile-in-dir-no" $no_selected value="0" />
-
- <div id="profile-in-dir-end"></div>
- </div>
diff --git a/view/en/profile-in-netdir.tpl b/view/en/profile-in-netdir.tpl
deleted file mode 100644
index be111aa67..000000000
--- a/view/en/profile-in-netdir.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<p id="profile-in-directory">
-Publish your default profile in global social directory?
-</p>
-
- <div id="profile-in-netdir-yes-wrapper">
- <label id="profile-in-netdir-yes-label" for="profile-in-netdir-yes">Yes</label>
- <input type="radio" name="profile_in_netdirectory" id="profile-in-netdir-yes" $yes_selected value="1" />
-
- <div id="profile-in-netdir-break" ></div>
- </div>
- <div id="profile-in-netdir-no-wrapper">
- <label id="profile-in-netdir-no-label" for="profile-in-netdir-no">No</label>
- <input type="radio" name="profile_in_netdirectory" id="profile-in-netdir-no" $no_selected value="0" />
-
- <div id="profile-in-netdir-end"></div>
- </div>
diff --git a/view/en/profile.php b/view/en/profile.php
deleted file mode 100644
index fa7372668..000000000
--- a/view/en/profile.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html ><?php // This is a perfect example of why I prefer to use template files rather than mixed PHP/HTML ?>
-<html>
-<head>
- <title><?php if(x($page,'title')) echo $page['title']; ?></title>
- <?php if(x($page,'htmlhead')) echo $page['htmlhead']; ?>
-</head>
-<body>
-<header><?php if(x($page,'header')) echo $page['header']; ?></header>
-<nav><div id="top-margin"></div><?php if(x($page,'nav')) echo $page['nav']; ?></nav>
-<aside>
-<?php if((is_array($profile)) && count($profile)) { ?>
-<div class="vcard">
- <?php if(strlen($profile['name'])) { ?>
- <div class="fn"><?php echo $profile['name']; ?></div>
- <?php } ?>
-
- <?php if(strlen($profile['photo'])) { ?>
- <div id="profile-photo-wrapper"><img class="photo" src="<?php echo $profile['photo']; ?>" alt="<?php echo $profile['name']; ?>" /></div>
- <?php } ?>
-
- <div id="profile-extra-links">
- <ul>
- <?php if($profile['uid'] != $_SESSION['uid']) { ?>
- <li><a id="dfrn-request-link" href="dfrn_request/<?php echo $profile['nickname']; ?>">Connect</a></li>
- <?php } ?>
- </ul>
-
- </div>
-
- <?php if ( (strlen($profile['address']))
- || (strlen($profile['locality']))
- || (strlen($profile['region']))
- || (strlen($profile['postal-code']))
- || (strlen($profile['country-name']))) { ?>
- <div class="location">Location:
- <div class="adr">
- <div class="street-address"><?php if(strlen($profile['address'])) echo $profile['address']; ?></div>
- <span class="city-state-zip"><span class="locality"><?php echo $profile['locality']; ?></span><?php if(strlen($profile['locality'])) echo ', '; ?><span class="region"><?php echo $profile['region'] ?></span><?php if(strlen($profile['postal-code'])) { ?> <span class="postal-code"><?php echo $profile['postal-code']; ?></span><?php } ?></span>
- <span class="country-name"><?php echo $profile['country-name']; ?></span>
- </div>
- </div>
-
- <?php } ?>
-
- <?php if(strlen($profile['gender'])) { ?>
- <div class="mf">Gender: <span class="x-gender"><?php echo $profile['gender']; ?></span></div>
-
- <?php } ?>
-
- <?php if(strlen($profile['pubkey'])) { ?>
- <div class="key" style="display: none;"><?php echo $profile['pubkey']; ?></div>
- <?php } ?>
-</div>
-<?php } ?>
-<?php if(strlen($profile['marital'])) { ?>
-<div class="marital"><span class="marital-label"><span class="heart">&hearts;</span> Status: </span><span class="marital-text"><?php echo $profile['marital']; ?></span></div>
-<?php } ?>
-<?php if(strlen($profile['homepage'])) { ?>
-<div class="homepage"><span class="homepage-label">Homepage: </span><span class="homepage-url"><?php echo linkify($profile['homepage']); ?></span></div>
-<?php } ?>
-<?php if(x($page,'aside')) echo $page['aside'] ?>
-</aside>
-<section>
-<?php if(x($page,'content')) echo $page['content']; ?>
-<div id="page-footer"></div>
-</section>
-<footer>
-<?php if(x($page,'footer')) echo $page['footer']; ?>
-</footer>
-</body>
-</html>
-
diff --git a/view/en/profile_advanced.php b/view/en/profile_advanced.php
deleted file mode 100644
index 6d2ecba4d..000000000
--- a/view/en/profile_advanced.php
+++ /dev/null
@@ -1,225 +0,0 @@
-<?php
-
-$o .= '';
-
-$o .= <<< EOT
-
-<h2>Profile</h2>
-
-
-EOT;
-
-if($a->profile['name']) {
-$o .= <<< EOT
-<div id="advanced-profile-name-wrapper" >
-<div id="advanced-profile-name-text">Full Name:</div>
-<div id="advanced-profile-name">{$a->profile['name']}</div>
-</div>
-<div id="advanced-profile-name-end"></div>
-EOT;
-}
-
-if($a->profile['gender']) {
-$o .= <<< EOT
-<div id="advanced-profile-gender-wrapper" >
-<div id="advanced-profile-gender-text">Gender:</div>
-<div id="advanced-profile-gender">{$a->profile['gender']}</div>
-</div>
-<div id="advanced-profile-gender-end"></div>
-EOT;
-}
-
-if(($a->profile['dob']) && ($a->profile['dob'] != '0000-00-00')) {
-$o .= <<< EOT
-<div id="advanced-profile-dob-wrapper" >
-<div id="advanced-profile-dob-text">Birthday:</div>
-EOT;
-
-// If no year, add an arbitrary one so just we can parse the month and day.
-
-$o .= '<div id="advanced-profile-dob">'
- . ((intval($a->profile['dob']))
- ? day_translate(datetime_convert('UTC','UTC',$a->profile['dob'] . ' 00:00 +00:00','j F, Y'))
- : day_translate(datetime_convert('UTC','UTC','2001-' . substr($a->profile['dob'],6) . ' 00:00 +00:00','j F')))
- . "</div>\r\n</div>";
-
-$o .= '<div id="advanced-profile-dob-end"></div>';
-
-}
-
-if($age = age($a->profile['dob'],$a->profile['timezone'],'')) {
-$o .= <<< EOT
-<div id="advanced-profile-age-wrapper" >
-<div id="advanced-profile-age-text">Age:</div>
-<div id="advanced-profile-age">$age</div>
-</div>
-<div id="advanced-profile-age-end"></div>
-EOT;
-}
-
-if($a->profile['marital']) {
-$o .= <<< EOT
-<div id="advanced-profile-marital-wrapper" >
-<div id="advanced-profile-marital-text"><span class="heart">&hearts;</span> Status:</div>
-<div id="advanced-profile-marital">{$a->profile['marital']}</div>
-EOT;
-
-if($a->profile['with'])
- $o .= "<div id=\"advanced-profile-with\">({$a->profile['with']})</div>";
-$o .= <<< EOT
-</div>
-<div id="advanced-profile-marital-end"></div>
-EOT;
-}
-
-if($a->profile['sexual']) {
-$o .= <<< EOT
-<div id="advanced-profile-sexual-wrapper" >
-<div id="advanced-profile-sexual-text">Sexual Preference:</div>
-<div id="advanced-profile-sexual">{$a->profile['sexual']}</div>
-</div>
-<div id="advanced-profile-sexual-end"></div>
-EOT;
-}
-
-if($a->profile['homepage']) {
- $homepage = linkify($a->profile['homepage']);
-$o .= <<< EOT
-<div id="advanced-profile-homepage-wrapper" >
-<div id="advanced-profile-homepage-text">Homepage:</div>
-<div id="advanced-profile-homepage">$homepage</div>
-</div>
-<div id="advanced-profile-homepage-end"></div>
-EOT;
-}
-
-if($a->profile['politic']) {
-$o .= <<< EOT
-<div id="advanced-profile-politic-wrapper" >
-<div id="advanced-profile-politic-text">Political Views:</div>
-<div id="advanced-profile-politic">{$a->profile['politic']}</div>
-</div>
-<div id="advanced-profile-politic-end"></div>
-EOT;
-}
-
-if($a->profile['religion']) {
-$o .= <<< EOT
-<div id="advanced-profile-religion-wrapper" >
-<div id="advanced-profile-religion-text">Religion:</div>
-<div id="advanced-profile-religion">{$a->profile['religion']}</div>
-</div>
-<div id="advanced-profile-religion-end"></div>
-EOT;
-}
-if($txt = prepare_text($a->profile['about'])) {
-$o .= <<< EOT
-<div id="advanced-profile-about-wrapper" >
-<div id="advanced-profile-about-text">About:</div>
-<br />
-<div id="advanced-profile-about">$txt</div>
-</div>
-<div id="advanced-profile-about-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['interest'])) {
-$o .= <<< EOT
-<div id="advanced-profile-interest-wrapper" >
-<div id="advanced-profile-interest-text">Hobbies/Interests:</div>
-<br />
-<div id="advanced-profile-interest">$txt</div>
-</div>
-<div id="advanced-profile-interest-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['contact'])) {
-$o .= <<< EOT
-<div id="advanced-profile-contact-wrapper" >
-<div id="advanced-profile-contact-text">Contact information and Social Networks:</div>
-<br />
-<div id="advanced-profile-contact">$txt</div>
-</div>
-<div id="advanced-profile-contact-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['music'])) {
-$o .= <<< EOT
-<div id="advanced-profile-music-wrapper" >
-<div id="advanced-profile-music-text">Musical interests:</div>
-<br />
-<div id="advanced-profile-music">$txt</div>
-</div>
-<div id="advanced-profile-music-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['book'])) {
-$o .= <<< EOT
-<div id="advanced-profile-book-wrapper" >
-<div id="advanced-profile-book-text">Books, literature:</div>
-<br />
-<div id="advanced-profile-book">$txt</div>
-</div>
-<div id="advanced-profile-book-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['tv'])) {
-$o .= <<< EOT
-<div id="advanced-profile-tv-wrapper" >
-<div id="advanced-profile-tv-text">Television:</div>
-<br />
-<div id="advanced-profile-tv">$txt</div>
-</div>
-<div id="advanced-profile-tv-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['film'])) {
-$o .= <<< EOT
-<div id="advanced-profile-film-wrapper" >
-<div id="advanced-profile-film-text">Film/dance/culture/entertainment:</div>
-<br />
-<div id="advanced-profile-film">$txt</div>
-</div>
-<div id="advanced-profile-film-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['romance'])) {
-$o .= <<< EOT
-<div id="advanced-profile-romance-wrapper" >
-<div id="advanced-profile-romance-text">Love/romance:</div>
-<br />
-<div id="advanced-profile-romance">$txt</div>
-</div>
-<div id="advanced-profile-romance-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['work'])) {
-$o .= <<< EOT
-<div id="advanced-profile-work-wrapper" >
-<div id="advanced-profile-work-text">Work/employment:</div>
-<br />
-<div id="advanced-profile-work">$txt</div>
-</div>
-<div id="advanced-profile-work-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['education'])) {
-$o .= <<< EOT
-<div id="advanced-profile-education-wrapper" >
-<div id="advanced-profile-education-text">School/education:</div>
-<br />
-<div id="advanced-profile-education">$txt</div>
-</div>
-<div id="advanced-profile-education-end"></div>
-EOT;
-}
-
-
diff --git a/view/en/profile_edit.tpl b/view/en/profile_edit.tpl
deleted file mode 100644
index b0d4850d0..000000000
--- a/view/en/profile_edit.tpl
+++ /dev/null
@@ -1,293 +0,0 @@
-<h1>Edit Profile Details</h1>
-
-<div id="profile-edit-links">
-<ul>
-<li><a href="profile/$profile_id/view?tab=profile" id="profile-edit-view-link" title="View this profile">View this profile</a></li>
-<li><a href="profiles/clone/$profile_id" id="profile-edit-clone-link" title="Create a new profile using these settings">Clone this profile</a></li>
-<li></li>
-<li><a href="profiles/drop/$profile_id" id="profile-edit-drop-link" title="Delete this profile" $disabled >Delete this profile</a></li>
-
-</ul>
-</div>
-
-<div id="profile-edit-links-end"></div>
-
-$default
-
-<div id="profile-edit-wrapper" >
-<form id="profile-edit-form" name="form1" action="profiles/$profile_id" method="post" >
-
-<div id="profile-edit-profile-name-wrapper" >
-<label id="profile-edit-profile-name-label" for="profile-edit-profile-name" >Profile Name: </label>
-<input type="text" size="32" name="profile_name" id="profile-edit-profile-name" value="$profile_name" /><div class="required">*</div>
-</div>
-<div id="profile-edit-profile-name-end"></div>
-
-<div id="profile-edit-name-wrapper" >
-<label id="profile-edit-name-label" for="profile-edit-name" >Your Full Name: </label>
-<input type="text" size="32" name="name" id="profile-edit-name" value="$name" />
-</div>
-<div id="profile-edit-name-end"></div>
-
-<div id="profile-edit-pdesc-wrapper" >
-<label id="profile-edit-pdesc-label" for="profile-edit-pdesc" >Title/Description: </label>
-<input type="text" size="32" name="pdesc" id="profile-edit-pdesc" value="$pdesc" />
-</div>
-<div id="profile-edit-pdesc-end"></div>
-
-
-<div id="profile-edit-gender-wrapper" >
-<label id="profile-edit-gender-label" for="gender-select" >Your Gender: </label>
-$gender
-</div>
-<div id="profile-edit-gender-end"></div>
-
-<div id="profile-edit-dob-wrapper" >
-<label id="profile-edit-dob-label" for="dob-select" >Birthday (y/m/d): </label>
-<div id="profile-edit-dob" >
-$dob $age
-</div>
-</div>
-<div id="profile-edit-dob-end"></div>
-
-$hide_friends
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
-<div id="profile-edit-address-wrapper" >
-<label id="profile-edit-address-label" for="profile-edit-address" >Street Address: </label>
-<input type="text" size="32" name="address" id="profile-edit-address" value="$address" />
-</div>
-<div id="profile-edit-address-end"></div>
-
-<div id="profile-edit-locality-wrapper" >
-<label id="profile-edit-locality-label" for="profile-edit-locality" >Locality/City: </label>
-<input type="text" size="32" name="locality" id="profile-edit-locality" value="$locality" />
-</div>
-<div id="profile-edit-locality-end"></div>
-
-
-<div id="profile-edit-postal-code-wrapper" >
-<label id="profile-edit-postal-code-label" for="profile-edit-postal-code" >Postal/Zip Code: </label>
-<input type="text" size="32" name="postal_code" id="profile-edit-postal-code" value="$postal_code" />
-</div>
-<div id="profile-edit-postal-code-end"></div>
-
-<div id="profile-edit-country-name-wrapper" >
-<label id="profile-edit-country-name-label" for="profile-edit-country-name" >Country: </label>
-<select name="country_name" id="profile-edit-country-name" onChange="Fill_States('$region');">
-<option selected="selected" >$country_name</option>
-<option>temp</option>
-</select>
-</div>
-<div id="profile-edit-country-name-end"></div>
-
-<div id="profile-edit-region-wrapper" >
-<label id="profile-edit-region-label" for="profile-edit-region" >Region/State: </label>
-<select name="region" id="profile-edit-region" onChange="Update_Globals();" >
-<option selected="selected" >$region</option>
-<option>temp</option>
-</select>
-</div>
-<div id="profile-edit-region-end"></div>
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-<div id="profile-edit-marital-wrapper" >
-<label id="profile-edit-marital-label" for="profile-edit-marital" ><span class="heart">&hearts;</span> (Marital) Status: </label>
-$marital
-</div>
-<label id="profile-edit-with-label" for="profile-edit-with" > Who: (if applicable) </label>
-<input type="text" size="32" name="with" id="profile-edit-with" title="Examples: cathy123, Cathy Williams, cathy@example.com" value="$with" />
-<div id="profile-edit-marital-end"></div>
-
-<div id="profile-edit-sexual-wrapper" >
-<label id="profile-edit-sexual-label" for="sexual-select" >Sexual Preference: </label>
-$sexual
-</div>
-<div id="profile-edit-sexual-end"></div>
-
-
-
-<div id="profile-edit-homepage-wrapper" >
-<label id="profile-edit-homepage-label" for="profile-edit-homepage" >Homepage URL: </label>
-<input type="text" size="32" name="homepage" id="profile-edit-homepage" value="$homepage" />
-</div>
-<div id="profile-edit-homepage-end"></div>
-
-<div id="profile-edit-politic-wrapper" >
-<label id="profile-edit-politic-label" for="profile-edit-politic" >Political Views: </label>
-<input type="text" size="32" name="politic" id="profile-edit-politic" value="$politic" />
-</div>
-<div id="profile-edit-politic-end"></div>
-
-<div id="profile-edit-religion-wrapper" >
-<label id="profile-edit-religion-label" for="profile-edit-religion" >Religion: </label>
-<input type="text" size="32" name="religion" id="profile-edit-religion" value="$religion" />
-</div>
-<div id="profile-edit-religion-end"></div>
-
-<div id="profile-edit-keywords-wrapper" >
-<label id="profile-edit-keywords-label" for="profile-edit-keywords" >Keywords: </label>
-<input type="text" size="32" name="keywords" id="profile-edit-keywords" title="Example: fishing photography software" value="$keywords" />
-</div><div id="profile-edit-keywords-desc">(Used for searching public profiles, never shown to others)</div>
-<div id="profile-edit-keywords-end"></div>
-
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-<div id="about-jot-wrapper" >
-<p id="about-jot-desc" >
-Tell us about yourself...
-</p>
-
-<textarea rows="10" cols="72" id="profile-jot-text" name="about" >$about</textarea>
-
-</div>
-<div id="about-jot-end"></div>
-</div>
-
-
-<div id="interest-jot-wrapper" >
-<p id="interest-jot-desc" >
-Hobbies/Interests
-</p>
-
-<textarea rows="10" cols="72" id="interest-jot-text" name="interest" >$interest</textarea>
-
-</div>
-<div id="interest-jot-end"></div>
-</div>
-
-
-<div id="contact-jot-wrapper" >
-<p id="contact-jot-desc" >
-Contact information and Social Networks
-</p>
-
-<textarea rows="10" cols="72" id="contact-jot-text" name="contact" >$contact</textarea>
-
-</div>
-<div id="contact-jot-end"></div>
-</div>
-
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
-<div id="music-jot-wrapper" >
-<p id="music-jot-desc" >
-Musical interests
-</p>
-
-<textarea rows="10" cols="72" id="music-jot-text" name="music" >$music</textarea>
-
-</div>
-<div id="music-jot-end"></div>
-</div>
-
-<div id="book-jot-wrapper" >
-<p id="book-jot-desc" >
-Books, literature
-</p>
-
-<textarea rows="10" cols="72" id="book-jot-text" name="book" >$book</textarea>
-
-</div>
-<div id="book-jot-end"></div>
-</div>
-
-
-
-<div id="tv-jot-wrapper" >
-<p id="tv-jot-desc" >
-Television
-</p>
-
-<textarea rows="10" cols="72" id="tv-jot-text" name="tv" >$tv</textarea>
-
-</div>
-<div id="tv-jot-end"></div>
-</div>
-
-
-
-<div id="film-jot-wrapper" >
-<p id="film-jot-desc" >
-Film/dance/culture/entertainment
-</p>
-
-<textarea rows="10" cols="72" id="film-jot-text" name="film" >$film</textarea>
-
-</div>
-<div id="film-jot-end"></div>
-</div>
-
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
-<div id="romance-jot-wrapper" >
-<p id="romance-jot-desc" >
-Love/romance
-</p>
-
-<textarea rows="10" cols="72" id="romance-jot-text" name="romance" >$romance</textarea>
-
-</div>
-<div id="romance-jot-end"></div>
-</div>
-
-
-
-<div id="work-jot-wrapper" >
-<p id="work-jot-desc" >
-Work/employment
-</p>
-
-<textarea rows="10" cols="72" id="work-jot-text" name="work" >$work</textarea>
-
-</div>
-<div id="work-jot-end"></div>
-</div>
-
-
-
-<div id="education-jot-wrapper" >
-<p id="education-jot-desc" >
-School/education
-</p>
-
-<textarea rows="10" cols="72" id="education-jot-text" name="education" >$education</textarea>
-
-</div>
-<div id="education-jot-end"></div>
-</div>
-
-
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
-</form>
-</div>
-<script type="text/javascript">Fill_Country('$country_name');Fill_States('$region');</script> \ No newline at end of file
diff --git a/view/en/profile_entry_default.tpl b/view/en/profile_entry_default.tpl
deleted file mode 100644
index 651199918..000000000
--- a/view/en/profile_entry_default.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-
-<div class="profile-listing" >
-<div class="profile-listing-photo-wrapper" >
-<a href="profiles/$id" class="profile-listing-edit-link" ><img class="profile-listing-photo" id="profile-listing-photo-$id" src="$photo" alt="Profile Image" /></a>
-</div>
-<div class="profile-listing-photo-end" ></div>
-<div class="profile-listing-name" id="profile-listing-name-$id"><a href="profiles/$id" class="profile-listing-edit-link" >$profile_name</a></div>
-</div>
-<div class="profile-listing-end"></div>
diff --git a/view/en/profile_listing_header.tpl b/view/en/profile_listing_header.tpl
deleted file mode 100644
index d4b139a69..000000000
--- a/view/en/profile_listing_header.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<h1>Profiles</h1>
-<p id="profile-listing-desc" >
-<a href="profile_photo" >Change profile photo</a>
-</p>
-<div id="profile-listing-new-link-wrapper" >
-<a href="profiles/new" id="profile-listing-new-link" name="Create New Profile" >Create New Profile</a>
-</div>
-
diff --git a/view/en/profile_photo.tpl b/view/en/profile_photo.tpl
deleted file mode 100644
index 30e51210a..000000000
--- a/view/en/profile_photo.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<h1>Upload Profile Photo</h1>
-
-<form enctype="multipart/form-data" action="profile_photo" method="post">
-
-<div id="profile-photo-upload-wrapper">
-<label id="profile-photo-upload-label" for="profile-photo-upload">Upload File: </label>
-<input name="userfile" type="file" id="profile-photo-upload" size="48" />
-</div>
-
-<div id="profile-photo-submit-wrapper">
-<input type="submit" name="submit" id="profile-photo-submit" value="Upload">
-</div>
-
-</form>
-
-<div id="profile-photo-link-select-wrapper">
-or <a href='photos/$user'>select a photo from albums</a>
-</div> \ No newline at end of file
diff --git a/view/en/pwdreset.tpl b/view/en/pwdreset.tpl
deleted file mode 100644
index dd609f061..000000000
--- a/view/en/pwdreset.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<h3>Password Reset</h3>
-
-<p>
-Your password has been reset as requested.
-</p>
-<p>
-Your new password is
-</p>
-<p>
-$newpass
-</p>
-<p>
-Save or copy your new password - and then <a href="$baseurl" >click here to login</a>.
-</p>
-<p>
-Your password may be changed from the 'Settings' page after successful login. \ No newline at end of file
diff --git a/view/en/register_open_eml.tpl b/view/en/register_open_eml.tpl
index 8a00f21e9..221e6ec74 100644
--- a/view/en/register_open_eml.tpl
+++ b/view/en/register_open_eml.tpl
@@ -11,7 +11,20 @@ Password: $password
You may change your password from your account "Settings" page after logging
in.
-Please take a few moments to review the other account settings on that page.
+Please take a few moments to review the other account settings on that page.
+
+You may also wish to add some basic information to your default profile
+(on the "Profiles" page) so that other people can easily find you.
+
+We recommend setting your full name, adding a profile photo,
+adding some profile "keywords" (very useful in making new friends) - and
+perhaps what country you live in; if you do not wish to be more specific
+than that.
+
+We fully respect your right to privacy, and none of these items are necessary.
+If you are new and do not know anybody here, they may help
+you to make some new and interesting friends.
+
Thank you and welcome to $sitename.
diff --git a/view/en/registrations-top.tpl b/view/en/registrations-top.tpl
deleted file mode 100644
index d8faf3439..000000000
--- a/view/en/registrations-top.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<h1>User registrations waiting for confirm</h1>
-
-
diff --git a/view/en/registrations.tpl b/view/en/registrations.tpl
deleted file mode 100644
index c8646043e..000000000
--- a/view/en/registrations.tpl
+++ /dev/null
@@ -1 +0,0 @@
-<li>$fullname ($email) : <a href="$approvelink">Approve</a> - <a href="$denylink">Deny</a></li>
diff --git a/view/en/settings.tpl b/view/en/settings.tpl
deleted file mode 100644
index 97d67cbf6..000000000
--- a/view/en/settings.tpl
+++ /dev/null
@@ -1,163 +0,0 @@
-<h1>Account Settings</h1>
-
-<div id="plugin-settings-link"><a href="settings/addon">Plugin Settings</a></div>
-
-$nickname_block
-
-
-<form action="settings" id="settings-form" method="post" autocomplete="off" >
-
-
-<h3 class="settings-heading">Basic Settings</h3>
-
-<div id="settings-username-wrapper" >
-<label id="settings-username-label" for="settings-username" >Full Name: </label>
-<input type="text" name="username" id="settings-username" value="$username" />
-</div>
-<div id="settings-username-end" ></div>
-
-<div id="settings-email-wrapper" >
-<label id="settings-email-label" for="settings-email" >Email Address: </label>
-<input type="text" name="email" id="settings-email" value="$email" />
-</div>
-<div id="settings-email-end" ></div>
-
-
-
-<div id="settings-timezone-wrapper" >
-<label id="settings-timezone-label" for="timezone_select" >Your Timezone: </label>
-$zoneselect
-</div>
-<div id="settings-timezone-end" ></div>
-
-<div id="settings-defloc-wrapper" >
-<label id="settings-defloc-label" for="settings-defloc" >Default Post Location: </label>
-<input type="text" name="defloc" id="settings-defloc" value="$defloc" />
-</div>
-<div id="settings-defloc-end" ></div>
-
-<div id="settings-allowloc-wrapper" >
-<label id="settings-allowloc-label" for="settings-allowloc" >Use Browser Location: </label>
-<input type="checkbox" name="allow_location" id="settings-allowloc" value="1" $loc_checked />
-</div>
-<div id="settings-allowloc-end" ></div>
-
-
-
-
-<div id="settings-theme-select">
-<label id="settings-theme-label" for="theme-select" >Display Theme: </label>
-$theme
-</div>
-<div id="settings-theme-end"></div>
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
-<h3 class="settings-heading">Security and Privacy Settings</h3>
-
-
-<input type="hidden" name="visibility" value="$visibility" />
-
-<div id="settings-maxreq-wrapper">
-<label id="settings-maxreq-label" for="settings-maxreq" >Maximum Friend Requests/Day</label>
-<input id="settings-maxreq" name="maxreq" value="$maxreq" />
-<div id="settings-maxreq-desc">(to prevent spam abuse)</div>
-</div>
-<div id="settings-maxreq-end"></div>
-
-
-
-
-$profile_in_dir
-
-$profile_in_net_dir
-
-
-
-<div id="settings-default-perms" class="settings-default-perms" >
- <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >&#x21e9; $permissions</div>
- <div id="settings-default-perms-menu-end"></div>
-
- <div id="settings-default-perms-select" style="display: none;" >
-
- $aclselect
-
- </div>
-</div>
-<div id="settings-default-perms-end"></div>
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
-
-<h3 class="settings-heading">Notification Settings</h3>
-
-
-<div id="settings-notify-wrapper">
-<div id="settings-notify-desc">Send a notification email when: </div>
-<label for="notify1" id="settings-label-notify1">You receive an introduction</label>
-<input id="notify1" type="checkbox" $sel_notify1 name="notify1" value="1" />
-<div id="notify1-end"></div>
-<label for="notify2" id="settings-label-notify2">Your introductions are confirmed</label>
-<input id="notify2" type="checkbox" $sel_notify2 name="notify2" value="2" />
-<div id="notify2-end"></div>
-<label for="notify3" id="settings-label-notify3">Someone writes on your profile wall</label>
-<input id="notify3" type="checkbox" $sel_notify3 name="notify3" value="4" />
-<div id="notify3-end"></div>
-<label for="notify4" id="settings-label-notify4">Someone writes a followup comment</label>
-<input id="notify4" type="checkbox" $sel_notify4 name="notify4" value="8" />
-<div id="notify4-end"></div>
-<label for="notify5" id="settings-label-notify5">You receive a private message</label>
-<input id="notify5" type="checkbox" $sel_notify5 name="notify5" value="16" />
-<div id="notify5-end"></div>
-</div>
-<div id="settings=notify-end"></div>
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
-<h3 class="settings-heading">Password Settings</h3>
-
-
-<div id="settings-password-wrapper" >
-<p id="settings-password-desc" >
-Leave password fields blank unless changing
-</p>
-<label id="settings-password-label" for="settings-password" >New Password: </label>
-<input type="password" id="settings-password" name="npassword" />
-</div>
-<div id="settings-password-end" ></div>
-
-<div id="settings-confirm-wrapper" >
-<label id="settings-confirm-label" for="settings-confirm" >Confirm: </label>
-<input type="password" id="settings-confirm" name="confirm" />
-</div>
-<div id="settings-confirm-end" ></div>
-
-<div id="settings-openid-wrapper" >
- $oidhtml
-</div>
-<div id="settings-openid-end" ></div>
-
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
-<h3 class="settings-heading">Advanced Page Settings</h3>
-
-$pagetype
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
diff --git a/view/en/settings_nick_set.tpl b/view/en/settings_nick_set.tpl
deleted file mode 100644
index a36b3b9a2..000000000
--- a/view/en/settings_nick_set.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-
-<div id="settings-nick-wrapper" >
-<p id="settings-nickname-desc">
-<span class="error-message">Your profile address is <strong>'$nickname@$basepath'</strong></span>
-</p>
-$subdir
-
-</div>
-<div id="settings-nick-end" ></div>
diff --git a/view/en/settings_nick_unset.tpl b/view/en/settings_nick_unset.tpl
deleted file mode 100644
index 903768b59..000000000
--- a/view/en/settings_nick_unset.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-<div id="settings-nick-wrapper" >
-<p id="settings-nickname-desc">
-Your profile URL is currently <strong>'$baseurl/profile/$uid'</strong>.
-Setting a nickname will allow a friendly profile URL such as
-<strong>'nickname@$basepath'</strong>.
-<br />
-Once set, it can never be changed. The nickname <strong>must</strong> start with a letter; and only letters, numbers, dashes, and underscores are allowed.
-</p>
-<label id="settings-nick-label" for="settings-nick" >URL Nickname: </label>
-<input type="text" name="nick" id="settings-nick" value="$nickname" />
-</div>
-<div id="settings-nick-end" ></div>
-
diff --git a/view/es/cmnt_received_eml.tpl b/view/es/cmnt_received_eml.tpl
new file mode 100644
index 000000000..abf2d95df
--- /dev/null
+++ b/view/es/cmnt_received_eml.tpl
@@ -0,0 +1,18 @@
+
+Estimado/a $username,
+
+ '$from' ha comentado un elemento/conversación que estás siguiendo.
+
+-----
+$body
+-----
+
+Accede a $siteurl para ver la conversación completa:
+
+$display
+
+
+ $sitename
+
+
+
diff --git a/view/es/follow_notify_eml.tpl b/view/es/follow_notify_eml.tpl
new file mode 100644
index 000000000..17bd2c01c
--- /dev/null
+++ b/view/es/follow_notify_eml.tpl
@@ -0,0 +1,13 @@
+
+Estimado/a $myname,
+
+Tienes un nuevo seguidor en $sitename - '$requestor'.
+
+Puedes visitar su perfil en $url.
+
+Inicie sesión en su sitio para aprobar o rechazar/cancelar la solicitud.
+
+$siteurl
+
+
+ $sitename
diff --git a/view/es/friend_complete_eml.tpl b/view/es/friend_complete_eml.tpl
new file mode 100644
index 000000000..0dc867efd
--- /dev/null
+++ b/view/es/friend_complete_eml.tpl
@@ -0,0 +1,19 @@
+
+Estimado/a $username,
+
+ Grandes noticias... '$fn' a '$dfrn_url' ha aceptado tu solicitud de conexión en '$sitename'.
+
+Ahora sois amigos mutuos y podreis intercambiar actualizaciones de estado, fotos, y correo electrónico
+sin restricción alguna.
+
+Visita tu página de 'Contactos' en $sitename si desear realizar cualquier cambio en esta relación.
+
+$siteurl
+
+[Por ejemplo, puedes crear un perfil independiente con información que no está disponible al público en general
+- y asignar derechos de visualización a '$fn'].
+
+
+ $sitename
+
+
diff --git a/view/es/htconfig.tpl b/view/es/htconfig.tpl
new file mode 100644
index 000000000..4de266112
--- /dev/null
+++ b/view/es/htconfig.tpl
@@ -0,0 +1,73 @@
+<?php
+
+// Set the following for your MySQL installation
+// Copy or rename this file to .htconfig.php
+
+$db_host = '$dbhost';
+$db_user = '$dbuser';
+$db_pass = '$dbpass';
+$db_data = '$dbdata';
+
+// If you are using a subdirectory of your domain you will need to put the
+// relative path (from the root of your domain) here.
+// For instance if your URL is 'http://example.com/directory/subdirectory',
+// set $a->path to 'directory/subdirectory'.
+
+$a->path = '$urlpath';
+
+// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
+// It can be changed later and only applies to timestamps for anonymous viewers.
+
+$default_timezone = '$timezone';
+
+// What is your site name?
+
+$a->config['sitename'] = "La Mia Rete di Amici";
+
+// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
+// Be certain to create your own personal account before setting
+// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on
+// the registration page. REGISTER_APPROVE requires you set 'admin_email'
+// to the email address of an already registered person who can authorise
+// and/or approve/deny the request.
+
+$a->config['register_policy'] = REGISTER_OPEN;
+$a->config['register_text'] = '';
+$a->config['admin_email'] = '';
+
+// Maximum size of an imported message, 0 is unlimited
+
+$a->config['max_import_size'] = 200000;
+
+// maximum size of uploaded photos
+
+$a->config['system']['maximagesize'] = 800000;
+
+// Location of PHP command line processor
+
+$a->config['php_path'] = '$phpath';
+
+// Location of global directory submission page.
+
+$a->config['system']['directory_submit_url'] = 'http://dir.friendika.com/submit';
+$a->config['system']['directory_search_url'] = 'http://dir.friendika.com/directory?search=';
+
+// PuSH - aka pubsubhubbub URL. This makes delivery of public posts as fast as private posts
+
+$a->config['system']['huburl'] = 'http://pubsubhubbub.appspot.com';
+
+// Server-to-server private message encryption (RINO) is allowed by default.
+// Encryption will only be provided if this setting is true and the
+// PHP mcrypt extension is installed on both systems
+
+$a->config['system']['rino_encrypt'] = true;
+
+// default system theme
+
+$a->config['system']['theme'] = 'duepuntozero';
+
+// Addons or plugins are configured here.
+// This is a comma seperated list of addons to enable. Example:
+// $a->config['system']['addon'] = 'js_upload,randplace,oembed';
+
+$a->config['system']['addon'] = 'js_upload';
diff --git a/view/es/intro_complete_eml.tpl b/view/es/intro_complete_eml.tpl
new file mode 100644
index 000000000..a2964808c
--- /dev/null
+++ b/view/es/intro_complete_eml.tpl
@@ -0,0 +1,21 @@
+
+Estimado/a $username,
+
+ '$fn' en '$dfrn_url' ha aceptado tu petición
+conexión a '$sitename'.
+
+ '$fn' ha optado por aceptarte come "fan", que restringe ciertas
+formas de comunicación, como mensajes privados y algunas interacciones
+con el perfil. Si eres una "celebridad" o una página de comunidad,
+estos ajustes se aplican automáticamente
+
+ '$fn' puede optar por extender esto en una relación más permisiva
+en el futuro.
+
+ Empezarás a recibir las actualizaciones públicas de estado de '$fn',
+que aparecerán en tu página "Red" en
+
+$siteurl
+
+
+ $sitename
diff --git a/view/es/lostpass_eml.tpl b/view/es/lostpass_eml.tpl
new file mode 100644
index 000000000..607744bfe
--- /dev/null
+++ b/view/es/lostpass_eml.tpl
@@ -0,0 +1,34 @@
+
+Estimado/a $username,
+
+ Se ha recibido una solicitud en $sitename recientemente para restablecer
+tu contraseña. Para confirmar esta solicitud, por favor seleccione el enlace de
+verificación debajo o cópialo y pégalo en la barra de direcciones de tu navegador.
+
+Se NO has solicitado este cambio, por favor NO sigas el enlace indicado e ignora
+y/o elimina este mensaje.
+
+Tu contraseña no se cambiará a menos que podamos verificar que eres tu quien
+emitió esta solicitud.
+
+Sigue este enlace para verificar tu identidad:
+
+$reset_link
+
+A continuación recibirás un mensaje con la nueva contraseña.
+
+Despues de accceder, podrás cambiar la contraseña de tu cuenta en la página de
+configuración.
+
+Los datos de acceso son los siguientes:
+
+Sitio: $siteurl
+Nombre: $email
+
+
+
+
+Saludos,
+ La administración de $sitename
+
+
diff --git a/view/es/mail_received_html_body_eml.tpl b/view/es/mail_received_html_body_eml.tpl
new file mode 100644
index 000000000..5086ec246
--- /dev/null
+++ b/view/es/mail_received_html_body_eml.tpl
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
+<html>
+<head>
+ <title>Mensaje de Friendika</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+</head>
+<body>
+<table style="border:1px solid #ccc">
+ <tbody>
+ <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendika</span></td></tr>
+
+ <tr><td style="padding-top:22px;" colspan="2">Has recibido un nuevo mensaje privado de '$from' en $siteName.</td></tr>
+
+
+ <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
+ <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
+ <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
+ <tr><td style="padding-right:22px;">$htmlversion</td></tr>
+ <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Accede a <a href="$siteurl">$siteurl</a> para leer y responder a tus mensajes privados.</td></tr>
+ <tr><td></td><td>$siteName</td></tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/view/es/mail_received_text_body_eml.tpl b/view/es/mail_received_text_body_eml.tpl
new file mode 100644
index 000000000..8400b9d01
--- /dev/null
+++ b/view/es/mail_received_text_body_eml.tpl
@@ -0,0 +1,9 @@
+Has recibido un nuevo mensaje privado de '$from' en $siteName.
+
+$title
+
+$textversion
+
+Accede a $siteurl para leer y responder a tus mensajes privados.
+
+ $siteName
diff --git a/view/es/messages.po b/view/es/messages.po
new file mode 100644
index 000000000..e978ddf93
--- /dev/null
+++ b/view/es/messages.po
@@ -0,0 +1,2636 @@
+# FRIENDIKA Distribuited Social Network
+# Copyright (C) 2010, 2011 Mike Macgirvin
+# This file is distributed under the same license as the Friendika package.
+# Mike Macgirvin, 2010
+# David Martín Miranda, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 2.1.921\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-23 13:48+0100\n"
+"PO-Revision-Date: 2011-04-14 11:18+0200\n"
+"Last-Translator: David Martín Miranda\n"
+"Language-Team: Español\n"
+"Language: Es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Language: es_ES\n"
+"X-Source-Language: C\n"
+
+#: ../../index.php:187 ../../index.php:194
+msgid "Not Found"
+msgstr "No se ha encontrado"
+
+#: ../../index.php:188 ../../index.php:195
+msgid "Page not found."
+msgstr "Página no encontrada."
+
+#: ../../index.php:243 ../../mod/group.php:88 ../../index.php:250
+msgid "Permission denied"
+msgstr "Permiso denegado"
+
+#: ../../index.php:244 ../../mod/manage.php:75 ../../mod/wall_upload.php:42
+#: ../../mod/follow.php:8 ../../mod/profile_photo.php:19
+#: ../../mod/profile_photo.php:133 ../../mod/profile_photo.php:139
+#: ../../mod/profile_photo.php:150 ../../mod/regmod.php:16
+#: ../../mod/profiles.php:7 ../../mod/profiles.php:224
+#: ../../mod/settings.php:14 ../../mod/settings.php:19
+#: ../../mod/settings.php:206 ../../mod/photos.php:85 ../../mod/photos.php:772
+#: ../../mod/display.php:303 ../../mod/invite.php:13 ../../mod/invite.php:50
+#: ../../mod/contacts.php:101 ../../mod/register.php:25
+#: ../../mod/network.php:6 ../../mod/notifications.php:56
+#: ../../mod/item.php:57 ../../mod/item.php:616 ../../mod/message.php:8
+#: ../../mod/message.php:116 ../../mod/dfrn_confirm.php:53
+#: ../../mod/viewcontacts.php:13 ../../mod/group.php:19
+#: ../../addon/facebook/facebook.php:110 ../../index.php:251
+#: ../../mod/profiles.php:227 ../../mod/settings.php:208
+#: ../../mod/photos.php:773 ../../mod/display.php:308
+#: ../../mod/editpost.php:10 ../../mod/item.php:668
+msgid "Permission denied."
+msgstr "Permiso denegado."
+
+#: ../../boot.php:808
+msgid "Create a New Account"
+msgstr "Crear una nueva cuenta"
+
+#: ../../boot.php:809 ../../mod/register.php:443 ../../include/nav.php:61
+#: ../../mod/register.php:445
+msgid "Register"
+msgstr "Registrarse"
+
+#: ../../boot.php:815
+msgid "Nickname or Email address: "
+msgstr "Apodo o dirección de email: "
+
+#: ../../boot.php:816
+msgid "Password: "
+msgstr "Contraseña: "
+
+#: ../../boot.php:817 ../../boot.php:823 ../../include/nav.php:44
+msgid "Login"
+msgstr "Acceder"
+
+#: ../../boot.php:821
+msgid "Nickname/Email/OpenID: "
+msgstr "Apodo/Email/OpenID: "
+
+#: ../../boot.php:822
+msgid "Password (if not OpenID): "
+msgstr "Contraseña (si no OpenID): "
+
+#: ../../boot.php:825
+msgid "Forgot your password?"
+msgstr "¿Olvidó la contraseña?"
+
+#: ../../boot.php:826
+msgid "Password Reset"
+msgstr "Resetear la contraseña"
+
+#: ../../boot.php:837 ../../include/nav.php:38
+msgid "Logout"
+msgstr "Salir"
+
+#: ../../boot.php:1077
+msgid "prev"
+msgstr "ant"
+
+#: ../../boot.php:1079
+msgid "first"
+msgstr "primera"
+
+#: ../../boot.php:1108
+msgid "last"
+msgstr "última"
+
+#: ../../boot.php:1111
+msgid "next"
+msgstr "sig"
+
+#: ../../boot.php:1831
+#, php-format
+msgid "%s likes this."
+msgstr "A %s le gusta esto."
+
+#: ../../boot.php:1831
+#, php-format
+msgid "%s doesn't like this."
+msgstr "A %s no le gusta esto."
+
+#: ../../boot.php:1835 ../../test.php:8
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgstr "Le gusta a <span %1$s>%2$d personas</span>."
+
+#: ../../boot.php:1837
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgstr "No le gusta a <span %1$s>%2$d personas</span>."
+
+#: ../../boot.php:1843
+msgid "and"
+msgstr "y"
+
+#: ../../boot.php:1846
+#, php-format
+msgid ", and %d other people"
+msgstr ", y otras %d personas"
+
+#: ../../boot.php:1847
+#, php-format
+msgid "%s like this."
+msgstr "Le gusta a %s."
+
+#: ../../boot.php:1847
+#, php-format
+msgid "%s don't like this."
+msgstr "No le gusta a %s."
+
+#: ../../boot.php:2008
+msgid "No contacts"
+msgstr "Nigún contacto"
+
+#: ../../boot.php:2016 ../../mod/contacts.php:303
+#: ../../include/acl_selectors.php:140 ../../include/acl_selectors.php:155
+#: ../../include/nav.php:111
+msgid "Contacts"
+msgstr "Contactos"
+
+#: ../../boot.php:2032 ../../mod/viewcontacts.php:17
+msgid "View Contacts"
+msgstr "Ver contactos"
+
+#: ../../boot.php:2049 ../../mod/search.php:17 ../../include/nav.php:67
+msgid "Search"
+msgstr "Busca"
+
+#: ../../boot.php:2204 ../../mod/profile.php:8
+msgid "No profile"
+msgstr "Nigún perfil"
+
+#: ../../boot.php:2261
+msgid "Connect"
+msgstr "Conecta"
+
+#: ../../boot.php:2271
+msgid "Location:"
+msgstr "Ubicación:"
+
+#: ../../boot.php:2275
+msgid ", "
+msgstr ", "
+
+#: ../../boot.php:2283
+msgid "Gender:"
+msgstr "Género:"
+
+#: ../../boot.php:2287
+msgid "Status:"
+msgstr "Estado:"
+
+#: ../../boot.php:2289
+msgid "Homepage:"
+msgstr "Página web:"
+
+#: ../../boot.php:2380
+msgid "Monday"
+msgstr "Lunes"
+
+#: ../../boot.php:2380
+msgid "Tuesday"
+msgstr "Martes"
+
+#: ../../boot.php:2380
+msgid "Wednesday"
+msgstr "Miércoles"
+
+#: ../../boot.php:2380
+msgid "Thursday"
+msgstr "Jueves"
+
+#: ../../boot.php:2380
+msgid "Friday"
+msgstr "Viernes"
+
+#: ../../boot.php:2380
+msgid "Saturday"
+msgstr "Sábado"
+
+#: ../../boot.php:2380
+msgid "Sunday"
+msgstr "Domingo"
+
+#: ../../boot.php:2384
+msgid "January"
+msgstr "Enero"
+
+#: ../../boot.php:2384
+msgid "February"
+msgstr "Febrero"
+
+#: ../../boot.php:2384
+msgid "March"
+msgstr "Marzo"
+
+#: ../../boot.php:2384
+msgid "April"
+msgstr "Abril"
+
+#: ../../boot.php:2384
+msgid "May"
+msgstr "Mayo"
+
+#: ../../boot.php:2384
+msgid "June"
+msgstr "Junio"
+
+#: ../../boot.php:2384
+msgid "July"
+msgstr "Julio"
+
+#: ../../boot.php:2384
+msgid "August"
+msgstr "Agosto"
+
+#: ../../boot.php:2384
+msgid "September"
+msgstr "Septiembre"
+
+#: ../../boot.php:2384
+msgid "October"
+msgstr "Octubre"
+
+#: ../../boot.php:2384
+msgid "November"
+msgstr "Noviembre"
+
+#: ../../boot.php:2384
+msgid "December"
+msgstr "Diciembre"
+
+#: ../../boot.php:2413 ../../boot.php:2419
+msgid "Birthdays this week:"
+msgstr "Cumpleaños esta semana:"
+
+#: ../../boot.php:2414 ../../boot.php:2420
+msgid "(Adjusted for local time)"
+msgstr "(Convertido a la hora local)"
+
+#: ../../boot.php:2423 ../../boot.php:2431
+msgid "[today]"
+msgstr "[hoy]"
+
+#: ../../boot.php:2620 ../../boot.php:2628
+msgid "link to source"
+msgstr "Enlace al original"
+
+#: ../../mod/manage.php:37
+#, php-format
+msgid "Welcome back %s"
+msgstr "Bienvenido de nuevo %s"
+
+#: ../../mod/manage.php:87
+msgid "Manage Identities and/or Pages"
+msgstr "Administrar identidades y / o páginas"
+
+#: ../../mod/manage.php:90
+msgid ""
+"(Toggle between different identities or community/group pages which share "
+"your account details.)"
+msgstr ""
+"(Alternar entre las diferentes identidades o las páginas de comunidades / "
+"grupos que comparten los datos de su cuenta.)"
+
+#: ../../mod/manage.php:92
+msgid "Select an identity to manage: "
+msgstr "Seleccione una identidad a gestionar:"
+
+#: ../../mod/manage.php:106 ../../mod/photos.php:800 ../../mod/photos.php:857
+#: ../../mod/photos.php:1032 ../../mod/invite.php:64 ../../mod/install.php:109
+#: ../../addon/twitter/twitter.php:156 ../../addon/twitter/twitter.php:175
+#: ../../addon/statusnet/statusnet.php:163
+#: ../../addon/statusnet/statusnet.php:189
+#: ../../addon/statusnet/statusnet.php:207
+#: ../../addon/facebook/facebook.php:151
+#: ../../addon/randplace/randplace.php:179 ../../mod/photos.php:801
+#: ../../mod/photos.php:858 ../../mod/photos.php:1066
+msgid "Submit"
+msgstr "Envia"
+
+#: ../../mod/wall_upload.php:56 ../../mod/profile_photo.php:109
+#, php-format
+msgid "Image exceeds size limit of %d"
+msgstr "El tamaño de la imagen supera el límite de %d"
+
+#: ../../mod/wall_upload.php:65 ../../mod/profile_photo.php:118
+#: ../../mod/photos.php:570 ../../mod/photos.php:571
+msgid "Unable to process image."
+msgstr "Imposible procesar la imagen."
+
+#: ../../mod/wall_upload.php:79 ../../mod/wall_upload.php:88
+#: ../../mod/wall_upload.php:95 ../../mod/item.php:184
+#: ../../mod/message.php:93 ../../mod/item.php:212
+msgid "Wall Photos"
+msgstr "Foto del Muro"
+
+#: ../../mod/wall_upload.php:82 ../../mod/profile_photo.php:230
+#: ../../mod/photos.php:588 ../../mod/photos.php:589
+msgid "Image upload failed."
+msgstr "Subida de imagen fallida."
+
+#: ../../mod/dfrn_notify.php:177 ../../mod/dfrn_notify.php:389
+#: ../../mod/regmod.php:93 ../../mod/register.php:311
+#: ../../mod/register.php:348 ../../mod/dfrn_request.php:545
+#: ../../mod/lostpass.php:39 ../../mod/item.php:423
+#: ../../mod/dfrn_confirm.php:649 ../../include/items.php:1350
+#: ../../mod/dfrn_notify.php:475 ../../mod/item.php:475 ../../mod/item.php:498
+#: ../../include/items.php:1373
+msgid "Administrator"
+msgstr "Administrador"
+
+#: ../../mod/dfrn_notify.php:179
+msgid "noreply"
+msgstr "no-responder"
+
+#: ../../mod/dfrn_notify.php:237
+msgid "New mail received at "
+msgstr "Nuevo correo recibido en "
+
+#: ../../mod/dfrn_notify.php:388 ../../mod/dfrn_notify.php:474
+#, php-format
+msgid "%s commented on an item at %s"
+msgstr "%s ha commentato un elemento en %s"
+
+#: ../../mod/profile.php:151 ../../mod/network.php:91
+#: ../../mod/profile.php:156 ../../mod/profile.php:317
+#: ../../mod/photos.php:1086 ../../mod/display.php:158
+#: ../../mod/network.php:370
+msgid "Share"
+msgstr "Compartir"
+
+#: ../../mod/profile.php:152 ../../mod/network.php:92
+#: ../../mod/message.php:185 ../../mod/message.php:319
+#: ../../mod/profile.php:157 ../../mod/editpost.php:63
+msgid "Upload photo"
+msgstr "Subir foto"
+
+#: ../../mod/profile.php:153 ../../mod/network.php:93
+#: ../../mod/message.php:186 ../../mod/message.php:320
+#: ../../mod/profile.php:158 ../../mod/editpost.php:64
+msgid "Insert web link"
+msgstr "Insertar enlace web"
+
+#: ../../mod/profile.php:154 ../../mod/network.php:94
+#: ../../mod/profile.php:159 ../../mod/editpost.php:65
+msgid "Insert YouTube video"
+msgstr "Insertar video de YouTube"
+
+#: ../../mod/profile.php:155 ../../mod/network.php:95
+#: ../../mod/profile.php:162 ../../mod/editpost.php:68
+#: ../../mod/network.php:97
+msgid "Set your location"
+msgstr "Configura la tu ubicación"
+
+#: ../../mod/profile.php:156 ../../mod/network.php:96
+#: ../../mod/profile.php:163 ../../mod/editpost.php:69
+#: ../../mod/network.php:98
+msgid "Clear browser location"
+msgstr "Borrar la ubicación del navegador"
+
+#: ../../mod/profile.php:157 ../../mod/profile.php:309
+#: ../../mod/photos.php:1052 ../../mod/display.php:158
+#: ../../mod/network.php:97 ../../mod/network.php:367
+#: ../../mod/message.php:187 ../../mod/message.php:321
+#: ../../mod/profile.php:164 ../../mod/profile.php:318
+#: ../../mod/photos.php:1087 ../../mod/display.php:159
+#: ../../mod/editpost.php:70 ../../mod/network.php:99
+#: ../../mod/network.php:371
+msgid "Please wait"
+msgstr "Por favor, espere"
+
+#: ../../mod/profile.php:158 ../../mod/network.php:98
+#: ../../mod/profile.php:165 ../../mod/editpost.php:71
+#: ../../mod/network.php:100
+msgid "Permission settings"
+msgstr "Configuración de permisos"
+
+#: ../../mod/profile.php:165 ../../mod/network.php:104
+#: ../../mod/profile.php:172 ../../mod/editpost.php:77
+#: ../../mod/network.php:106
+msgid "CC: email addresses"
+msgstr "CC: dirección email"
+
+#: ../../mod/profile.php:167 ../../mod/network.php:106
+#: ../../mod/profile.php:174 ../../mod/editpost.php:79
+#: ../../mod/network.php:108
+msgid "Example: bob@example.com, mary@example.com"
+msgstr "Ejemplo: juan@ejemplo.com, sofia@ejemplo.com"
+
+#: ../../mod/profile.php:300 ../../mod/photos.php:935
+#: ../../mod/display.php:149 ../../mod/network.php:321
+#: ../../mod/profile.php:308 ../../mod/photos.php:962
+#: ../../mod/network.php:324
+msgid "Private Message"
+msgstr "Mensaje privado"
+
+#: ../../mod/profile.php:307 ../../mod/photos.php:1050
+#: ../../mod/display.php:156 ../../mod/network.php:365
+#: ../../mod/profile.php:315 ../../mod/photos.php:1084
+#: ../../mod/network.php:368
+msgid "I like this (toggle)"
+msgstr "Me gusta esto (cambiar)"
+
+#: ../../mod/profile.php:308 ../../mod/photos.php:1051
+#: ../../mod/display.php:157 ../../mod/network.php:366
+#: ../../mod/profile.php:316 ../../mod/photos.php:1085
+#: ../../mod/network.php:369
+msgid "I don't like this (toggle)"
+msgstr "No me gusta questo (cambiar)"
+
+#: ../../mod/profile.php:321 ../../mod/photos.php:1071
+#: ../../mod/photos.php:1111 ../../mod/photos.php:1140
+#: ../../mod/display.php:170 ../../mod/network.php:380
+#: ../../mod/profile.php:330 ../../mod/photos.php:1106
+#: ../../mod/photos.php:1146 ../../mod/photos.php:1175
+#: ../../mod/display.php:171 ../../mod/network.php:384
+msgid "This is you"
+msgstr "Éste/a eres tú"
+
+#: ../../mod/profile.php:361 ../../mod/photos.php:1168
+#: ../../mod/display.php:234 ../../mod/network.php:386 ../../mod/group.php:137
+#: ../../mod/profile.php:376 ../../mod/photos.php:1203
+#: ../../mod/display.php:238 ../../mod/network.php:393
+msgid "Delete"
+msgstr "Eliminar"
+
+#: ../../mod/profile.php:382 ../../mod/search.php:116
+#: ../../mod/display.php:258 ../../mod/network.php:272
+#: ../../mod/network.php:434 ../../mod/profile.php:397
+#: ../../mod/display.php:262 ../../mod/network.php:275
+#: ../../mod/network.php:441
+msgid "View $name's profile"
+msgstr "Ver el perfil de $name"
+
+#: ../../mod/profile.php:414 ../../mod/display.php:312
+#: ../../mod/register.php:422 ../../mod/network.php:471
+#: ../../mod/profile.php:430 ../../mod/display.php:317
+#: ../../mod/register.php:424 ../../mod/network.php:479
+msgid ""
+"Shared content is covered by the <a href=\"http://creativecommons.org/"
+"licenses/by/3.0/\">Creative Commons Attribution 3.0</a> license."
+msgstr ""
+"El contenido en común está cubierto por la licencia <a href=\"http://"
+"creativecommons.org/licenses/by/3.0/deed.it\">Creative Commons Atribución "
+"3.0</a>."
+
+#: ../../mod/follow.php:167
+msgid "The profile address specified does not provide adequate information."
+msgstr ""
+"La dirección del perfil especificado no proporciona información adecuada."
+
+#: ../../mod/follow.php:173
+msgid ""
+"Limited profile. This person will be unable to receive direct/personal "
+"notifications from you."
+msgstr ""
+"Perfil limitado. Esta persona no podrá recibir notificaciones directas/"
+"personales de usted."
+
+#: ../../mod/follow.php:224
+msgid "Unable to retrieve contact information."
+msgstr "No ha sido posible recibir la información del contacto."
+
+#: ../../mod/follow.php:270
+msgid "following"
+msgstr "siguiendo"
+
+#: ../../mod/profile_photo.php:28
+msgid "Image uploaded but image cropping failed."
+msgstr "Imagen recibida, pero ha fallado al recortarla."
+
+#: ../../mod/profile_photo.php:58 ../../mod/profile_photo.php:65
+#: ../../mod/profile_photo.php:72 ../../mod/profile_photo.php:155
+#: ../../mod/profile_photo.php:225 ../../mod/profile_photo.php:234
+#: ../../mod/photos.php:106 ../../mod/photos.php:530 ../../mod/photos.php:849
+#: ../../mod/photos.php:864 ../../mod/register.php:267
+#: ../../mod/register.php:274 ../../mod/register.php:281
+#: ../../mod/photos.php:531 ../../mod/photos.php:850 ../../mod/photos.php:865
+msgid "Profile Photos"
+msgstr "Foto del perfil"
+
+#: ../../mod/profile_photo.php:61 ../../mod/profile_photo.php:68
+#: ../../mod/profile_photo.php:75 ../../mod/profile_photo.php:237
+#, php-format
+msgid "Image size reduction [%s] failed."
+msgstr "Ha fallado la reducción de las dimensiones de la imagen [%s]."
+
+#: ../../mod/profile_photo.php:95
+msgid "Unable to process image"
+msgstr "Imposible procesar la imagen"
+
+#: ../../mod/profile_photo.php:228
+msgid "Image uploaded successfully."
+msgstr "Imagen subida con éxito."
+
+#: ../../mod/home.php:23
+#, php-format
+msgid "Welcome to %s"
+msgstr "Bienvenido a %s"
+
+#: ../../mod/regmod.php:10
+msgid "Please login."
+msgstr "Accede."
+
+#: ../../mod/regmod.php:54
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registro anulado para %s"
+
+#: ../../mod/regmod.php:92 ../../mod/register.php:310
+#, php-format
+msgid "Registration details for %s"
+msgstr "Detalles de registro para %s"
+
+#: ../../mod/regmod.php:96
+msgid "Account approved."
+msgstr "Cuenta aprobada."
+
+#: ../../mod/profiles.php:21 ../../mod/profiles.php:234
+#: ../../mod/profiles.php:339 ../../mod/dfrn_confirm.php:62
+#: ../../mod/profiles.php:237 ../../mod/profiles.php:342
+msgid "Profile not found."
+msgstr "Perfil no encontrado."
+
+#: ../../mod/profiles.php:28
+msgid "Profile Name is required."
+msgstr "El nombre de perfil es requerido."
+
+#: ../../mod/profiles.php:196 ../../mod/profiles.php:199
+msgid "Profile updated."
+msgstr "Perfil actualizado."
+
+#: ../../mod/profiles.php:251 ../../mod/profiles.php:254
+msgid "Profile deleted."
+msgstr "Perfil eliminado."
+
+#: ../../mod/profiles.php:267 ../../mod/profiles.php:298
+#: ../../mod/profiles.php:270 ../../mod/profiles.php:301
+msgid "Profile-"
+msgstr "Perfil-"
+
+#: ../../mod/profiles.php:286 ../../mod/profiles.php:325
+#: ../../mod/profiles.php:289 ../../mod/profiles.php:328
+msgid "New profile created."
+msgstr "Nuevo perfil creado."
+
+#: ../../mod/profiles.php:304 ../../mod/profiles.php:307
+msgid "Profile unavailable to clone."
+msgstr "Imposible duplicar el perfil."
+
+#: ../../mod/profiles.php:367 ../../mod/profiles.php:370
+msgid ""
+"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
+"be visible to anybody using the internet."
+msgstr ""
+"Éste es tu perfil <strong>público</strong>.<br /><strong>Puede</strong> ser "
+"visto por cualquiera usando internet."
+
+#: ../../mod/profiles.php:377 ../../mod/profiles.php:380
+msgid "Age: "
+msgstr "Edad : "
+
+#: ../../mod/profiles.php:418 ../../mod/profiles.php:422
+msgid "Profile Image"
+msgstr "Imagen del Perfil"
+
+#: ../../mod/settings.php:37
+msgid "Passwords do not match. Password unchanged."
+msgstr "Las contraseñas no coinciden. La contraseña no ha sido modificada."
+
+#: ../../mod/settings.php:42
+msgid "Empty passwords are not allowed. Password unchanged."
+msgstr ""
+"No se permiten contraseñas vacías. La contraseña no ha sido modificada."
+
+#: ../../mod/settings.php:53
+msgid "Password changed."
+msgstr "Contraseña modificada."
+
+#: ../../mod/settings.php:55
+msgid "Password update failed. Please try again."
+msgstr ""
+"La actualización de la contraseña ha fallado. Por favor, pruebe otra vez."
+
+#: ../../mod/settings.php:95 ../../mod/settings.php:96
+msgid " Please use a shorter name."
+msgstr " Usa un nombre más corto."
+
+#: ../../mod/settings.php:97 ../../mod/settings.php:98
+msgid " Name too short."
+msgstr " Nombre demasiado corto."
+
+#: ../../mod/settings.php:103 ../../mod/settings.php:104
+msgid " Not valid email."
+msgstr " Email no válido."
+
+#: ../../mod/settings.php:105 ../../mod/settings.php:106
+msgid " Cannot change to that email."
+msgstr " No se puede usar ese email."
+
+#: ../../mod/settings.php:161 ../../mod/settings.php:163
+msgid "Settings updated."
+msgstr "Configuración actualizada."
+
+#: ../../mod/settings.php:211 ../../mod/settings.php:213
+msgid "Plugin Settings"
+msgstr "Configuración de los Plugin"
+
+#: ../../mod/settings.php:212 ../../mod/settings.php:214
+msgid "Account Settings"
+msgstr "Configuración de la cuenta"
+
+#: ../../mod/settings.php:218 ../../mod/settings.php:220
+msgid "No Plugin settings configured"
+msgstr "Ningún Plugin ha sido configurado"
+
+#: ../../mod/settings.php:263 ../../mod/settings.php:266
+msgid "OpenID: "
+msgstr "OpenID: "
+
+#: ../../mod/settings.php:263 ../../mod/settings.php:266
+msgid "&nbsp;(Optional) Allow this OpenID to login to this account."
+msgstr "&nbsp;(Opcional) Permitir a este OpenID acceder a esta cuenta."
+
+#: ../../mod/settings.php:295 ../../mod/settings.php:298
+msgid "Profile is <strong>not published</strong>."
+msgstr "El perfil <strong>no está publicado</strong>."
+
+#: ../../mod/settings.php:352 ../../mod/settings.php:355
+msgid "Default Post Permissions"
+msgstr "Permisos por defecto para los mensajes"
+
+#: ../../mod/search.php:131 ../../mod/network.php:287
+#: ../../mod/network.php:290
+msgid "View in context"
+msgstr "Ver en el contexto"
+
+#: ../../mod/photos.php:30
+msgid "Photo Albums"
+msgstr "Álbum de Fotos"
+
+#: ../../mod/photos.php:34 ../../mod/photos.php:106 ../../mod/photos.php:780
+#: ../../mod/photos.php:849 ../../mod/photos.php:864 ../../mod/photos.php:1198
+#: ../../mod/photos.php:1209 ../../include/Photo.php:225
+#: ../../include/Photo.php:232 ../../include/Photo.php:239
+#: ../../include/items.php:959 ../../include/items.php:962
+#: ../../include/items.php:965 ../../mod/photos.php:781
+#: ../../mod/photos.php:850 ../../mod/photos.php:865 ../../mod/photos.php:1233
+#: ../../mod/photos.php:1244 ../../include/items.php:982
+#: ../../include/items.php:985 ../../include/items.php:988
+msgid "Contact Photos"
+msgstr "Foto del contacto"
+
+#: ../../mod/photos.php:95
+msgid "Contact information unavailable"
+msgstr "Información del contacto no disponible"
+
+#: ../../mod/photos.php:116
+msgid "Album not found."
+msgstr "Album no encontrado."
+
+#: ../../mod/photos.php:134 ../../mod/photos.php:858 ../../mod/photos.php:859
+msgid "Delete Album"
+msgstr "Eliminar album"
+
+#: ../../mod/photos.php:197 ../../mod/photos.php:1033
+#: ../../mod/photos.php:1067
+msgid "Delete Photo"
+msgstr "Eliminar foto"
+
+#: ../../mod/photos.php:468 ../../mod/photos.php:469
+msgid "was tagged in a"
+msgstr "ha sido etiquetado en"
+
+#: ../../mod/photos.php:468 ../../mod/like.php:110 ../../mod/photos.php:469
+msgid "photo"
+msgstr "foto"
+
+#: ../../mod/photos.php:468 ../../mod/photos.php:469
+msgid "by"
+msgstr "por"
+
+#: ../../mod/photos.php:558 ../../addon/js_upload/js_upload.php:306
+#: ../../mod/photos.php:559
+msgid "Image exceeds size limit of "
+msgstr "La imagen supera el limite de tamaño de "
+
+#: ../../mod/photos.php:660 ../../mod/photos.php:661
+msgid "No photos selected"
+msgstr "Ninguna foto seleccionada"
+
+#: ../../mod/photos.php:807 ../../mod/photos.php:808
+msgid "Upload Photos"
+msgstr "Subir fotos"
+
+#: ../../mod/photos.php:810 ../../mod/photos.php:853 ../../mod/photos.php:811
+#: ../../mod/photos.php:854
+msgid "New album name: "
+msgstr "Nombre del nuevo álbum: "
+
+#: ../../mod/photos.php:811 ../../mod/photos.php:812
+msgid "or existing album name: "
+msgstr "o nombre de un álbum existente: "
+
+#: ../../mod/photos.php:813 ../../mod/photos.php:1028 ../../mod/photos.php:814
+#: ../../mod/photos.php:1062
+msgid "Permissions"
+msgstr "Permisos"
+
+#: ../../mod/photos.php:868 ../../mod/photos.php:869
+msgid "Edit Album"
+msgstr "Modifica álbum"
+
+#: ../../mod/photos.php:878 ../../mod/photos.php:1228 ../../mod/photos.php:879
+#: ../../mod/photos.php:1263
+msgid "View Photo"
+msgstr "Ver foto"
+
+#: ../../mod/photos.php:908 ../../mod/photos.php:909
+msgid "Photo not available"
+msgstr "Foto no disponible"
+
+#: ../../mod/photos.php:929 ../../mod/photos.php:956
+msgid "Edit photo"
+msgstr "Modificar foto"
+
+#: ../../mod/photos.php:931 ../../mod/photos.php:958
+msgid "Use as profile photo"
+msgstr "Usar como foto del perfil"
+
+#: ../../mod/photos.php:944 ../../mod/photos.php:973
+msgid "View Full Size"
+msgstr "Ver a tamaño completo"
+
+#: ../../mod/photos.php:1002 ../../mod/photos.php:1036
+msgid "Tags: "
+msgstr "Etiquetas: "
+
+#: ../../mod/photos.php:1012 ../../mod/photos.php:1046
+msgid "[Remove any tag]"
+msgstr "[Borrar todas las etiquetas]"
+
+#: ../../mod/photos.php:1021 ../../mod/photos.php:1055
+msgid "New album name"
+msgstr "Nuevo nombre de álbum"
+
+#: ../../mod/photos.php:1024 ../../mod/photos.php:1058
+msgid "Caption"
+msgstr "Título"
+
+#: ../../mod/photos.php:1026 ../../mod/photos.php:1060
+msgid "Add a Tag"
+msgstr "Añadir una etiqueta"
+
+#: ../../mod/photos.php:1030 ../../mod/photos.php:1064
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+msgstr ""
+"Ejemplo: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+
+#: ../../mod/photos.php:1214 ../../mod/photos.php:1249
+msgid "Recent Photos"
+msgstr "Fotos recientes"
+
+#: ../../mod/photos.php:1218 ../../mod/photos.php:1253
+msgid "Upload New Photos"
+msgstr "Subir nuevas fotos"
+
+#: ../../mod/photos.php:1234 ../../mod/photos.php:1269
+msgid "View Album"
+msgstr "Ver álbum"
+
+#: ../../mod/display.php:15 ../../mod/display.php:307 ../../mod/item.php:546
+#: ../../mod/display.php:312 ../../mod/item.php:598
+msgid "Item not found."
+msgstr "Elemento no encontrado."
+
+#: ../../mod/display.php:259 ../../mod/network.php:435
+#: ../../mod/display.php:263 ../../mod/network.php:442
+msgid "View $owner_name's profile"
+msgstr "Ver el perfil de $owner_name"
+
+#: ../../mod/display.php:260 ../../mod/network.php:436
+#: ../../mod/display.php:264 ../../mod/network.php:443
+msgid "to"
+msgstr "a"
+
+#: ../../mod/display.php:261 ../../mod/network.php:437
+#: ../../mod/display.php:265 ../../mod/network.php:444
+msgid "Wall-to-Wall"
+msgstr "Muro-A-Muro"
+
+#: ../../mod/display.php:262 ../../mod/network.php:438
+#: ../../mod/display.php:266 ../../mod/network.php:445
+msgid "via Wall-To-Wall:"
+msgstr "via Muro-A-Muro:"
+
+#: ../../mod/display.php:300 ../../mod/display.php:305
+msgid "Item has been removed."
+msgstr "El elemento ha sido eliminado."
+
+#: ../../mod/invite.php:28
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s: No es una dirección válida de email."
+
+#: ../../mod/invite.php:32
+#, php-format
+msgid "Please join my network on %s"
+msgstr "Por favor únete a mi red social en %s"
+
+#: ../../mod/invite.php:38
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s: Ha fallado la entrega del mensaje."
+
+#: ../../mod/invite.php:42
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d mensaje enviado."
+msgstr[1] "%d mensajes enviados."
+
+#: ../../mod/invite.php:57
+msgid "Send invitations"
+msgstr "Enviar invitaciones"
+
+#: ../../mod/invite.php:58
+msgid "Enter email addresses, one per line:"
+msgstr "Introduce las direcciones de email, una por línea:"
+
+#: ../../mod/invite.php:59 ../../mod/message.php:182 ../../mod/message.php:316
+msgid "Your message:"
+msgstr "Tu mensaje:"
+
+#: ../../mod/invite.php:60
+#, php-format
+msgid "Please join my social network on %s"
+msgstr "Únete a mi red social en % s"
+
+#: ../../mod/invite.php:61
+msgid "To accept this invitation, please visit:"
+msgstr "Para aceptar esta invitación, por favor visita:"
+
+#: ../../mod/invite.php:62
+msgid ""
+"Once you have registered, please connect with me via my profile page at:"
+msgstr ""
+"Una vez registrado, por favor contacta conmigo a través de mi página de "
+"perfil en:"
+
+#: ../../mod/contacts.php:12
+msgid "Invite Friends"
+msgstr "Invitar amigos"
+
+#: ../../mod/contacts.php:16
+msgid "Connect/Follow"
+msgstr "Conectar/Seguir"
+
+#: ../../mod/contacts.php:17
+msgid "Example: bob@example.com, http://example.com/barbara"
+msgstr "Ejemplo: bob@ejemplo.com, http://ejemplo.com/barbara"
+
+#: ../../mod/contacts.php:18
+msgid "Follow"
+msgstr "Seguir"
+
+#: ../../mod/contacts.php:38 ../../mod/contacts.php:119
+msgid "Could not access contact record."
+msgstr "No se pudo acceder a los datos del contacto."
+
+#: ../../mod/contacts.php:52
+msgid "Could not locate selected profile."
+msgstr "No se pudo encontrar el perfil seleccionado."
+
+#: ../../mod/contacts.php:83
+msgid "Contact updated."
+msgstr "Contacto actualizado."
+
+#: ../../mod/contacts.php:85 ../../mod/dfrn_request.php:402
+msgid "Failed to update contact record."
+msgstr "Error al actualizar el contacto."
+
+#: ../../mod/contacts.php:141
+msgid "Contact has been blocked"
+msgstr "El contacto ha sido bloqueado"
+
+#: ../../mod/contacts.php:141
+msgid "Contact has been unblocked"
+msgstr "El contacto ha sido desbloqueado"
+
+#: ../../mod/contacts.php:155
+msgid "Contact has been ignored"
+msgstr "El contacto ha sido ignorado"
+
+#: ../../mod/contacts.php:155
+msgid "Contact has been unignored"
+msgstr "El contacto es no ignorado"
+
+#: ../../mod/contacts.php:176
+msgid "stopped following"
+msgstr "dejó de seguir"
+
+#: ../../mod/contacts.php:195
+msgid "Contact has been removed."
+msgstr "El contacto ha sido eliminado"
+
+#: ../../mod/contacts.php:209 ../../mod/dfrn_confirm.php:114
+msgid "Contact not found."
+msgstr "Contacto no encontrado."
+
+#: ../../mod/contacts.php:223 ../../mod/contacts.php:344
+msgid "Mutual Friendship"
+msgstr "Amistad recíproca"
+
+#: ../../mod/contacts.php:227 ../../mod/contacts.php:348
+msgid "is a fan of yours"
+msgstr "es tu fan"
+
+#: ../../mod/contacts.php:232 ../../mod/contacts.php:352
+msgid "you are a fan of"
+msgstr "eres fan de"
+
+#: ../../mod/contacts.php:248
+msgid "Never"
+msgstr "Nunca"
+
+#: ../../mod/contacts.php:252
+msgid "(Update was successful)"
+msgstr "(La actualización se ha completado)"
+
+#: ../../mod/contacts.php:252
+msgid "(Update was not successful)"
+msgstr "(La actualización no se ha completado)"
+
+#: ../../mod/contacts.php:255
+msgid "Contact Editor"
+msgstr "Editor de contactos"
+
+#: ../../mod/contacts.php:256
+msgid "Visit $name's profile"
+msgstr "Visita el perfil de $name"
+
+#: ../../mod/contacts.php:257
+msgid "Block/Unblock contact"
+msgstr "Boquear/Desbloquear contacto"
+
+#: ../../mod/contacts.php:258
+msgid "Ignore contact"
+msgstr "Ignorar contacto"
+
+#: ../../mod/contacts.php:259
+msgid "Delete contact"
+msgstr "Eliminar contacto"
+
+#: ../../mod/contacts.php:261
+msgid "Last updated: "
+msgstr "Última actualización:"
+
+#: ../../mod/contacts.php:262
+msgid "Update public posts: "
+msgstr "Actualizar mensajes públicos: "
+
+#: ../../mod/contacts.php:264
+msgid "Update now"
+msgstr "Actualizar ahora"
+
+#: ../../mod/contacts.php:267
+msgid "Unblock this contact"
+msgstr "Desbloquear a este contacto"
+
+#: ../../mod/contacts.php:267
+msgid "Block this contact"
+msgstr "Bloquear a este contacto"
+
+#: ../../mod/contacts.php:268
+msgid "Unignore this contact"
+msgstr "Eliminar de contactos ignorados"
+
+#: ../../mod/contacts.php:268
+msgid "Ignore this contact"
+msgstr "Agregar a contactos ignorados"
+
+#: ../../mod/contacts.php:271
+msgid "Currently blocked"
+msgstr "Bloqueados"
+
+#: ../../mod/contacts.php:272
+msgid "Currently ignored"
+msgstr "Ignorados"
+
+#: ../../mod/contacts.php:305
+msgid "Show Blocked Connections"
+msgstr "Mostrar conexiones bloqueadas"
+
+#: ../../mod/contacts.php:305
+msgid "Hide Blocked Connections"
+msgstr "Esconder conexiones bloqueadas"
+
+#: ../../mod/contacts.php:307 ../../mod/directory.php:38
+msgid "Finding: "
+msgstr "Busco: "
+
+#: ../../mod/contacts.php:308
+msgid "Find"
+msgstr "Encontrar"
+
+#: ../../mod/contacts.php:368 ../../mod/viewcontacts.php:44
+msgid "Visit $username's profile"
+msgstr "Visita el perfil de $username"
+
+#: ../../mod/contacts.php:369
+msgid "Edit contact"
+msgstr "Modificar contacto"
+
+#: ../../mod/lockview.php:39
+msgid "Remote privacy information not available."
+msgstr "Información sobre privacidad remota no disponible."
+
+#: ../../mod/lockview.php:43
+msgid "Visible to:"
+msgstr "Visible a:"
+
+#: ../../mod/register.php:47
+msgid "Invalid OpenID url"
+msgstr "Url OpenID no valido"
+
+#: ../../mod/register.php:62
+msgid "Please enter the required information."
+msgstr "Por favor, introduzca la información necesaria."
+
+#: ../../mod/register.php:74
+msgid "Please use a shorter name."
+msgstr "Por favor, use un nombre más corto."
+
+#: ../../mod/register.php:76
+msgid "Name too short."
+msgstr "El nombre es demasiado corto."
+
+#: ../../mod/register.php:89
+msgid "That doesn\\'t appear to be your full (First Last) name."
+msgstr "Ese no parece ser su nombre completo (Nombre Apellido)."
+
+#: ../../mod/register.php:92
+msgid "Your email domain is not among those allowed on this site."
+msgstr ""
+"Su dominio de correo electrónico no se encuentra entre los permitidos en "
+"este sitio."
+
+#: ../../mod/register.php:95
+msgid "Not a valid email address."
+msgstr "No es una dirección de correo electrónico válida."
+
+#: ../../mod/register.php:101
+msgid "Cannot use that email."
+msgstr "No se puede utilizar estecorreo electrónico."
+
+#: ../../mod/register.php:106
+msgid ""
+"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
+"must also begin with a letter."
+msgstr ""
+"Su \"apodo\"sólo puede contener \"az\", \"0-9\", \"-\", y \"_\", y también "
+"debe empezar por una letra."
+
+#: ../../mod/register.php:112
+msgid "Nickname is already registered. Please choose another."
+msgstr "Apodo ya registrado. Por favor, elija otro."
+
+#: ../../mod/register.php:131
+msgid "SERIOUS ERROR: Generation of security keys failed."
+msgstr "ERROR GRAVE: La generación de claves de seguridad ha fallado."
+
+#: ../../mod/register.php:198
+msgid "An error occurred during registration. Please try again."
+msgstr ""
+"Se produjo un error durante el registro. Por favor, inténtelo de nuevo."
+
+#: ../../mod/register.php:216
+msgid "An error occurred creating your default profile. Please try again."
+msgstr ""
+"Error al crear su perfil predeterminado. Por favor, inténtelo de nuevo."
+
+#: ../../mod/register.php:315
+msgid ""
+"Registration successful. Please check your email for further instructions."
+msgstr ""
+"Se ha registrado con éxito. Por favor, consulte su correo electrónico para "
+"obtener instrucciones adicionales."
+
+#: ../../mod/register.php:319
+msgid "Failed to send email message. Here is the message that failed."
+msgstr ""
+"Error al enviar mensaje de correo electrónico. Aquí está el mensaje no "
+"enviado."
+
+#: ../../mod/register.php:324
+msgid "Your registration can not be processed."
+msgstr "Su registro no se puede procesar."
+
+#: ../../mod/register.php:347
+#, php-format
+msgid "Registration request at %s"
+msgstr "Solicitud de registro en% s"
+
+#: ../../mod/register.php:351
+msgid "Your registration is pending approval by the site owner."
+msgstr "Su registro está pendiente de aprobación por el propietario del sitio."
+
+#: ../../mod/register.php:399
+msgid ""
+"You may (optionally) fill in this form via OpenID by supplying your OpenID "
+"and clicking 'Register'."
+msgstr ""
+"Usted puede (opcionalmente) rellenar este formulario a través de OpenID "
+"mediante el suministro de su OpenID y haciendo clic en 'Registrar '."
+
+#: ../../mod/register.php:400
+msgid ""
+"If you are not familiar with OpenID, please leave that field blank and fill "
+"in the rest of the items."
+msgstr ""
+"Si usted no está familiarizado con OpenID, por favor deje ese campo en "
+"blanco y rellene el resto de los elementos."
+
+#: ../../mod/register.php:401
+msgid "Your OpenID (optional): "
+msgstr "Tu OpenID (opcional):"
+
+#: ../../mod/register.php:404
+msgid ""
+"Members of this network prefer to communicate with real people who use their "
+"real names."
+msgstr ""
+"Los miembros de esta red prefieren comunicarse con personas reales que usan "
+"sus nombres reales."
+
+#: ../../mod/register.php:413 ../../mod/register.php:415
+msgid "Include your profile in member directory?"
+msgstr "¿Incluir su perfil en el directorio de miembros?"
+
+#: ../../mod/register.php:416 ../../mod/dfrn_request.php:618
+#: ../../mod/register.php:418
+msgid "Yes"
+msgstr "Sí"
+
+#: ../../mod/register.php:417 ../../mod/dfrn_request.php:619
+#: ../../mod/register.php:419
+msgid "No"
+msgstr "No"
+
+#: ../../mod/register.php:429 ../../mod/register.php:431
+msgid "Registration"
+msgstr "Registro"
+
+#: ../../mod/register.php:437 ../../mod/register.php:439
+msgid "Your Full Name (e.g. Joe Smith): "
+msgstr "Su nombre completo (por ejemplo, Joe Smith):"
+
+#: ../../mod/register.php:438 ../../mod/register.php:440
+msgid "Your Email Address: "
+msgstr "Su dirección de correo electrónico:"
+
+#: ../../mod/register.php:439 ../../mod/register.php:441
+msgid ""
+"Choose a profile nickname. This must begin with a text character. Your "
+"profile address on this site will then be '<strong>nickname@$sitename</"
+"strong>'."
+msgstr ""
+"Elija un apodo perfil. Debe comenzar con un carácter de texto. Su dirección "
+"de perfil en este sitio va a ser '<strong>nickname@$sitename</strong>'."
+
+#: ../../mod/register.php:440 ../../mod/register.php:442
+msgid "Choose a nickname: "
+msgstr "Escoge un apodo: "
+
+#: ../../mod/install.php:30
+msgid "Could not create/connect to database."
+msgstr "No se pudo crear o conectarse a la base de datos."
+
+#: ../../mod/install.php:35
+msgid "Connected to database."
+msgstr "Conectado a la base de datos."
+
+#: ../../mod/install.php:66
+msgid "Database import succeeded."
+msgstr "Importación de la base de datos completada."
+
+#: ../../mod/install.php:67
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
+msgstr ""
+"IMPORTANTE: Usted tendrá que [manualmente] configurar una tarea programada "
+"para el encuestador"
+
+#: ../../mod/install.php:68 ../../mod/install.php:75 ../../mod/install.php:175
+msgid "Please see the file \"INSTALL.txt\"."
+msgstr "Por favor, consulte el archivo \"INSTALL.txt\"."
+
+#: ../../mod/install.php:73
+msgid "Database import failed."
+msgstr "La importación de la base de datos ha fallado."
+
+#: ../../mod/install.php:74
+msgid ""
+"You may need to import the file \"database.sql\" manually using phpmyadmin "
+"or mysql."
+msgstr ""
+"Puede que tenga que importar el archivo \"Database.sql\" manualmente usando "
+"phpmyadmin o mysql."
+
+#: ../../mod/install.php:84
+msgid "Welcome to Friendika."
+msgstr "Bienvenido a Friendika."
+
+#: ../../mod/install.php:124
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr ""
+"No se pudo encontrar una versión de línea de comandos de PHP en la ruta del "
+"servidor web."
+
+#: ../../mod/install.php:125
+msgid ""
+"This is required. Please adjust the configuration file .htconfig.php "
+"accordingly."
+msgstr ""
+"Esto es necesario. Por favor, modifica el archivo de configuración. htconfig."
+"php en consecuencia."
+
+#: ../../mod/install.php:132
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr ""
+"La versión en línea de comandos de PHP en su sistema no tiene "
+"\"register_argc_argv\" habilitado."
+
+#: ../../mod/install.php:133
+msgid "This is required for message delivery to work."
+msgstr "Esto es necesario para el funcionamiento de la entrega de mensajes."
+
+#: ../../mod/install.php:155
+msgid ""
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr ""
+"Error: La función \"openssl_pkey_new\" en este sistema no es capaz de "
+"generar claves de cifrado"
+
+#: ../../mod/install.php:156
+msgid ""
+"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
+"installation.php\"."
+msgstr ""
+"Si se ejecuta en Windows, por favor consulte la sección \"http://www.php.net/"
+"manual/en/openssl.installation.php\"."
+
+#: ../../mod/install.php:165
+msgid ""
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr ""
+"Error: El módulo servidor web Apache mod-rewrite es necesario pero no está "
+"instalado."
+
+#: ../../mod/install.php:167
+msgid "Error: libCURL PHP module required but not installed."
+msgstr "Error: El módulo libcurl PHP es necesario, pero no está instalado."
+
+#: ../../mod/install.php:169
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr ""
+"Error: El módulo de gráficos GD de PHP con soporte JPEG es necesario, pero "
+"no está instalado."
+
+#: ../../mod/install.php:171
+msgid "Error: openssl PHP module required but not installed."
+msgstr "Error: El módulo openssl PHP es necesario, pero no está instalado."
+
+#: ../../mod/install.php:173
+msgid "Error: mysqli PHP module required but not installed."
+msgstr "Error: El módulo PHP mysqli es necesario, pero no está instalado."
+
+#: ../../mod/install.php:184
+msgid ""
+"The web installer needs to be able to create a file called \".htconfig.php\" "
+"in the top folder of your web server and it is unable to do so."
+msgstr ""
+"El programa de instalación web necesita ser capaz de crear un archivo "
+"llamado \". htconfig.php\" en la carpeta superior de su servidor web y es "
+"incapaz de hacerlo."
+
+#: ../../mod/install.php:185
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr ""
+"Esto es muy a menudo una configuración de permisos, pues el servidor web "
+"puede que no sea capaz de escribir archivos en la carpeta - incluso si usted "
+"puede."
+
+#: ../../mod/install.php:186
+msgid ""
+"Please check with your site documentation or support people to see if this "
+"situation can be corrected."
+msgstr ""
+"Por favor, consulte el sitio de documentación o gente de ayuda para ver si "
+"esta situación se puede corregir."
+
+#: ../../mod/install.php:187
+msgid ""
+"If not, you may be required to perform a manual installation. Please see the "
+"file \"INSTALL.txt\" for instructions."
+msgstr ""
+"Si no, deberá proceder con la instalación manual. Por favor, consulte el "
+"archivo \"INSTALL.txt\"para obtener instrucciones."
+
+#: ../../mod/install.php:196
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
+msgstr ""
+"El archivo de configuración de base de datos \". htconfig.php\" No se pudo "
+"escribir. Por favor, utilice el texto adjunto para crear un archivo de "
+"configuración en la raíz de su servidor web."
+
+#: ../../mod/install.php:211
+msgid "Errors encountered creating database tables."
+msgstr "Errores encontrados creando las tablas de bases de datos."
+
+#: ../../mod/network.php:18
+msgid "Normal View"
+msgstr "Vista normal"
+
+#: ../../mod/network.php:20
+msgid "New Item View"
+msgstr "Vista de nuevos elementos"
+
+#: ../../mod/network.php:149 ../../mod/network.php:151
+msgid "No such group"
+msgstr "Ningún grupo"
+
+#: ../../mod/network.php:160 ../../mod/network.php:162
+msgid "Group is empty"
+msgstr "El grupo está vacío"
+
+#: ../../mod/network.php:164 ../../mod/network.php:166
+msgid "Group: "
+msgstr "Grupo: "
+
+#: ../../mod/notifications.php:28
+msgid "Invalid request identifier."
+msgstr "Solicitud de identificación no válida."
+
+#: ../../mod/notifications.php:31 ../../mod/notifications.php:134
+msgid "Discard"
+msgstr "Descartar"
+
+#: ../../mod/notifications.php:41 ../../mod/notifications.php:133
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: ../../mod/notifications.php:72
+msgid "Show Ignored Requests"
+msgstr "Mostrar peticiones ignoradas"
+
+#: ../../mod/notifications.php:72
+msgid "Hide Ignored Requests"
+msgstr "Esconder peticiones ignoradas"
+
+#: ../../mod/notifications.php:105
+msgid "Claims to be known to you: "
+msgstr "Dice conocerte:"
+
+#: ../../mod/notifications.php:105
+msgid "yes"
+msgstr "sí"
+
+#: ../../mod/notifications.php:105
+msgid "no"
+msgstr "no"
+
+#: ../../mod/notifications.php:111
+msgid "Approve as: "
+msgstr "Aprobar como:"
+
+#: ../../mod/notifications.php:112
+msgid "Friend"
+msgstr "Amig@"
+
+#: ../../mod/notifications.php:113
+msgid "Fan/Admirer"
+msgstr "Fan/Admirador"
+
+#: ../../mod/notifications.php:120
+msgid "Notification type: "
+msgstr "Tipo di notificación: "
+
+#: ../../mod/notifications.php:121
+msgid "Friend/Connect Request"
+msgstr "Solicitud de Amistad/Conexión"
+
+#: ../../mod/notifications.php:121
+msgid "New Follower"
+msgstr "Nuevo seguidor"
+
+#: ../../mod/notifications.php:131
+msgid "Approve"
+msgstr "Aprobar"
+
+#: ../../mod/notifications.php:140
+msgid "No notifications."
+msgstr "Ninguna notificación."
+
+#: ../../mod/notifications.php:164
+msgid "No registrations."
+msgstr "Ningún registro."
+
+#: ../../mod/dfrn_request.php:92
+msgid "This introduction has already been accepted."
+msgstr "Esta presentación ya ha sido aceptada."
+
+#: ../../mod/dfrn_request.php:116 ../../mod/dfrn_request.php:347
+msgid "Profile location is not valid or does not contain profile information."
+msgstr ""
+"Ubicación del perfil no es válido o no contiene la información de perfil."
+
+#: ../../mod/dfrn_request.php:121 ../../mod/dfrn_request.php:352
+msgid "Warning: profile location has no identifiable owner name."
+msgstr ""
+"Aviso: Ubicación del perfil no tiene nombre del propietario identificable."
+
+#: ../../mod/dfrn_request.php:123 ../../mod/dfrn_request.php:354
+msgid "Warning: profile location has no profile photo."
+msgstr "Advertencia: ubicación del perfil no tiene foto de perfil."
+
+#: ../../mod/dfrn_request.php:126 ../../mod/dfrn_request.php:357
+#, php-format
+msgid "%d required parameter was not found at the given location"
+msgid_plural "%d required parameters were not found at the given location"
+msgstr[0] "% d parámetro requerido no se encontró en el lugar determinado"
+msgstr[1] "% d parámetros requeridos no se encontraron en el lugar determinado"
+
+#: ../../mod/dfrn_request.php:164
+msgid "Introduction complete."
+msgstr "Presentación completa."
+
+#: ../../mod/dfrn_request.php:188
+msgid "Unrecoverable protocol error."
+msgstr "Error de protocolo irrecuperable."
+
+#: ../../mod/dfrn_request.php:216
+msgid "Profile unavailable."
+msgstr "Perfil no disponible."
+
+#: ../../mod/dfrn_request.php:241
+#, php-format
+msgid "%s has received too many connection requests today."
+msgstr "% s ha recibido demasiadas solicitudes de conexión hoy."
+
+#: ../../mod/dfrn_request.php:242
+msgid "Spam protection measures have been invoked."
+msgstr "Han sido activadas las medidas de protección contra spam."
+
+#: ../../mod/dfrn_request.php:243
+msgid "Friends are advised to please try again in 24 hours."
+msgstr "Se aconseja a los amigos intentarlo de nuevo en 24 horas."
+
+#: ../../mod/dfrn_request.php:273
+msgid "Invalid locator"
+msgstr "Localizador no válido"
+
+#: ../../mod/dfrn_request.php:292
+msgid "Unable to resolve your name at the provided location."
+msgstr "No se ha podido resolver tu nombre en la ubicación indicada."
+
+#: ../../mod/dfrn_request.php:305
+msgid "You have already introduced yourself here."
+msgstr "Ya te has presentado aquí."
+
+#: ../../mod/dfrn_request.php:309
+#, php-format
+msgid "Apparently you are already friends with %s."
+msgstr "Al parecer, ya eres amigo de % s."
+
+#: ../../mod/dfrn_request.php:330
+msgid "Invalid profile URL."
+msgstr "Dirección de perfil no válida."
+
+#: ../../mod/dfrn_request.php:336
+msgid "Disallowed profile URL."
+msgstr "Dirección de perfil no permitida."
+
+#: ../../mod/dfrn_request.php:423
+msgid "Your introduction has been sent."
+msgstr "Su presentación ha sido enviada."
+
+#: ../../mod/dfrn_request.php:477
+msgid "Please login to confirm introduction."
+msgstr "Inicia sesión para confirmar la presentación."
+
+#: ../../mod/dfrn_request.php:491
+msgid ""
+"Incorrect identity currently logged in. Please login to <strong>this</"
+"strong> profile."
+msgstr ""
+"Inicio de sesión con la identificación incorrecta. Entra en <strong>este</ "
+"strong> perfil."
+
+#: ../../mod/dfrn_request.php:536 ../../include/items.php:1341
+#: ../../include/items.php:1364
+msgid "[Name Withheld]"
+msgstr "[Nombre oculto]"
+
+#: ../../mod/dfrn_request.php:543
+msgid "Introduction received at "
+msgstr "Presentación recibida en"
+
+#: ../../mod/dfrn_request.php:615
+msgid "Friend/Connection Request"
+msgstr "Solicitud de Amistad/Conexión"
+
+#: ../../mod/dfrn_request.php:616
+msgid "Please answer the following:"
+msgstr "Por favor responda lo siguiente:"
+
+#: ../../mod/dfrn_request.php:617
+msgid "Does $name know you?"
+msgstr "$name te conoce?"
+
+#: ../../mod/dfrn_request.php:620
+msgid "Add a personal note:"
+msgstr "Agregar una nota personal:"
+
+#: ../../mod/dfrn_request.php:621
+msgid ""
+"Please enter your profile address from one of the following supported social "
+"networks:"
+msgstr ""
+"Por favor, introduzca su dirección de perfil de uno de las siguientes redes "
+"sociales soportadas:"
+
+#: ../../mod/dfrn_request.php:622
+msgid "Friendika"
+msgstr "Friendika"
+
+#: ../../mod/dfrn_request.php:623
+msgid "StatusNet/Federated Social Web"
+msgstr "StatusNet/Federated Social Web"
+
+#: ../../mod/dfrn_request.php:624
+msgid "Private (secure) network"
+msgstr "Red privada (segura) "
+
+#: ../../mod/dfrn_request.php:625
+msgid "Public (insecure) network"
+msgstr "Red pública (insegura)"
+
+#: ../../mod/dfrn_request.php:626
+msgid "Your profile address:"
+msgstr "Su dirección de perfil:"
+
+#: ../../mod/dfrn_request.php:627
+msgid "Submit Request"
+msgstr "Enviar solicitud"
+
+#: ../../mod/dfrn_request.php:628 ../../mod/tagrm.php:11
+#: ../../mod/tagrm.php:94 ../../addon/js_upload/js_upload.php:41
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: ../../mod/like.php:110
+msgid "status"
+msgstr "estado"
+
+#: ../../mod/like.php:127
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "A %1$s gusta %3$s de %2$s"
+
+#: ../../mod/like.php:129
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "A %1$s no gusta %3$s de %2$s"
+
+#: ../../mod/lostpass.php:38
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Restablecer la contraseña solicitada en %s"
+
+#: ../../mod/removeme.php:42 ../../mod/removeme.php:45
+msgid "Remove My Account"
+msgstr "Eliminar mi cuenta"
+
+#: ../../mod/removeme.php:43
+msgid ""
+"This will completely remove your account. Once this has been done it is not "
+"recoverable."
+msgstr ""
+"Esto eliminará por completo su cuenta. Una vez hecho esto no es recuperable."
+
+#: ../../mod/removeme.php:44
+msgid "Please enter your password for verification:"
+msgstr "Por favor, introduzca su contraseña para la verificación:"
+
+#: ../../mod/apps.php:6
+msgid "Applications"
+msgstr "Aplicaciones"
+
+#: ../../mod/directory.php:32
+msgid "Global Directory"
+msgstr "Directorio global"
+
+#: ../../mod/item.php:37
+msgid "Unable to locate original post."
+msgstr "No se puede encontrar post original."
+
+#: ../../mod/item.php:98 ../../mod/item.php:126
+msgid "Empty post discarded."
+msgstr "Mensaje vacío descartado."
+
+#: ../../mod/item.php:422 ../../mod/item.php:474
+#, php-format
+msgid "%s commented on your item at %s"
+msgstr "%s ha comentado en tu post en %s"
+
+#: ../../mod/item.php:445 ../../mod/item.php:497
+#, php-format
+msgid "%s posted on your profile wall at %s"
+msgstr "%s ha publicado en tu muro en %s"
+
+#: ../../mod/item.php:471 ../../mod/item.php:523
+msgid "System error. Post not saved."
+msgstr "Error del sistema. Mensaje no guardado."
+
+#: ../../mod/item.php:489 ../../mod/item.php:541
+#, php-format
+msgid ""
+"This message was sent to you by %s, a member of the Friendika social network."
+msgstr ""
+"Este mensaje le ha sido enviado por %s, un miembro de la red social "
+"Friendika."
+
+#: ../../mod/item.php:491 ../../mod/item.php:543
+msgid "You may visit them online at"
+msgstr "Puede visitarle online en"
+
+#: ../../mod/item.php:493 ../../mod/item.php:545
+msgid ""
+"Please contact the sender by replying to this post if you do not wish to "
+"receive these messages."
+msgstr ""
+"Por favor contacte al remitente respondiendo a este mensaje si no desea "
+"recibir estos mensajes."
+
+#: ../../mod/item.php:495 ../../mod/item.php:547
+#, php-format
+msgid "%s posted an update."
+msgstr "%s ha publicado una actualización."
+
+#: ../../mod/tagrm.php:41
+msgid "Tag removed"
+msgstr "Etiqueta eliminada"
+
+#: ../../mod/tagrm.php:79
+msgid "Remove Item Tag"
+msgstr "Eliminar etiqueta del elemento"
+
+#: ../../mod/tagrm.php:81
+msgid "Select a tag to remove: "
+msgstr "Seleccione una etiqueta para eliminar:"
+
+#: ../../mod/tagrm.php:93
+msgid "Remove"
+msgstr "Eliminar"
+
+#: ../../mod/message.php:18
+msgid "No recipient selected."
+msgstr "Ningún destinatario seleccionado"
+
+#: ../../mod/message.php:23
+msgid "[no subject]"
+msgstr "[sin asunto]"
+
+#: ../../mod/message.php:34
+msgid "Unable to locate contact information."
+msgstr "No se puede encontrar información del contacto."
+
+#: ../../mod/message.php:102
+msgid "Message sent."
+msgstr "Mensaje enviado."
+
+#: ../../mod/message.php:105
+msgid "Message could not be sent."
+msgstr "El mensaje no ha podido ser enviado."
+
+#: ../../mod/message.php:125 ../../include/nav.php:100
+msgid "Messages"
+msgstr "Mensajes"
+
+#: ../../mod/message.php:126
+msgid "Inbox"
+msgstr "Entrada"
+
+#: ../../mod/message.php:127
+msgid "Outbox"
+msgstr "Enviados"
+
+#: ../../mod/message.php:128
+msgid "New Message"
+msgstr "Nuevo mensaje"
+
+#: ../../mod/message.php:142
+msgid "Message deleted."
+msgstr "Mensaje eliminado."
+
+#: ../../mod/message.php:158
+msgid "Conversation removed."
+msgstr "Conversación eliminada."
+
+#: ../../mod/message.php:177
+msgid "Send Private Message"
+msgstr "Enviar mensaje privado"
+
+#: ../../mod/message.php:178 ../../mod/message.php:312
+msgid "To:"
+msgstr "A:"
+
+#: ../../mod/message.php:179 ../../mod/message.php:313
+msgid "Subject:"
+msgstr "Asunto:"
+
+#: ../../mod/message.php:221
+msgid "No messages."
+msgstr "No hay mensajes."
+
+#: ../../mod/message.php:234
+msgid "Delete conversation"
+msgstr "Eliminar conversación"
+
+#: ../../mod/message.php:264
+msgid "Message not available."
+msgstr "Mensaje no disponibile."
+
+#: ../../mod/message.php:301
+msgid "Delete message"
+msgstr "Borrar mensaje"
+
+#: ../../mod/message.php:311
+msgid "Send Reply"
+msgstr "Enviar respuesta"
+
+#: ../../mod/dfrn_confirm.php:231
+msgid "Response from remote site was not understood."
+msgstr "La respuesta desde el sitio remoto no ha sido entendida."
+
+#: ../../mod/dfrn_confirm.php:240
+msgid "Unexpected response from remote site: "
+msgstr "Respuesta inesperada desde el sitio remoto:"
+
+#: ../../mod/dfrn_confirm.php:248
+msgid "Confirmation completed successfully."
+msgstr "Confirmación completada con éxito."
+
+#: ../../mod/dfrn_confirm.php:250 ../../mod/dfrn_confirm.php:264
+#: ../../mod/dfrn_confirm.php:271
+msgid "Remote site reported: "
+msgstr "El sito remoto informó:"
+
+#: ../../mod/dfrn_confirm.php:262
+msgid "Temporary failure. Please wait and try again."
+msgstr "Error temporal. Por favor, espere y vuelva a intentarlo."
+
+#: ../../mod/dfrn_confirm.php:269
+msgid "Introduction failed or was revoked."
+msgstr "La presentación ha fallado o ha sido anulada."
+
+#: ../../mod/dfrn_confirm.php:387
+msgid "Unable to set contact photo."
+msgstr "Imposible establecer la foto del contacto."
+
+#: ../../mod/dfrn_confirm.php:426
+msgid "is now friends with"
+msgstr "ahora es amigo de"
+
+#: ../../mod/dfrn_confirm.php:494
+#, php-format
+msgid "No user record found for '%s' "
+msgstr "Ningún usuario encontrado para '%s'"
+
+#: ../../mod/dfrn_confirm.php:504
+msgid "Our site encryption key is apparently messed up."
+msgstr "Nuestra clave de cifrado del site es aparentemente un lío."
+
+#: ../../mod/dfrn_confirm.php:515
+msgid "Empty site URL was provided or URL could not be decrypted by us."
+msgstr "Se ha proporcionado una dirección vacía o no hemos podido descifrarla."
+
+#: ../../mod/dfrn_confirm.php:527
+msgid "Contact record was not found for you on our site."
+msgstr "El contacto no se ha encontrado en nuestro sitio."
+
+#: ../../mod/dfrn_confirm.php:555
+msgid ""
+"The ID provided by your system is a duplicate on our system. It should work "
+"if you try again."
+msgstr ""
+"La identificación proporcionada por el sistema es un duplicado de nuestro "
+"sistema. Debería funcionar si intenta de nuevo."
+
+#: ../../mod/dfrn_confirm.php:566
+msgid "Unable to set your contact credentials on our system."
+msgstr ""
+"No se puede establecer sus credenciales de contacto en nuestro sistema."
+
+#: ../../mod/dfrn_confirm.php:619
+msgid "Unable to update your contact profile details on our system"
+msgstr ""
+"No se puede actualizar los datos de tu perfil de contacto en nuestro sistema"
+
+#: ../../mod/dfrn_confirm.php:648
+#, php-format
+msgid "Connection accepted at %s"
+msgstr "Conexión aceptada en % s"
+
+#: ../../mod/openid.php:62 ../../mod/openid.php:109 ../../include/auth.php:105
+#: ../../include/auth.php:130 ../../include/auth.php:183
+msgid "Login failed."
+msgstr "Accesso fallido."
+
+#: ../../mod/openid.php:73 ../../include/auth.php:194
+msgid "Welcome back "
+msgstr "Bienvenido de nuevo"
+
+#: ../../mod/dfrn_poll.php:78 ../../mod/dfrn_poll.php:392
+#, php-format
+msgid "%s welcomes %s"
+msgstr "%s te da la bienvenida a %s"
+
+#: ../../mod/viewcontacts.php:32
+msgid "No contacts."
+msgstr "Ningún contacto."
+
+#: ../../mod/group.php:27
+msgid "Group created."
+msgstr "Grupo creado."
+
+#: ../../mod/group.php:33
+msgid "Could not create group."
+msgstr "Imposible crear el grupo."
+
+#: ../../mod/group.php:43 ../../mod/group.php:123
+msgid "Group not found."
+msgstr "Grupo no encontrado."
+
+#: ../../mod/group.php:56
+msgid "Group name changed."
+msgstr "El nombre del grupo ha cambiado."
+
+#: ../../mod/group.php:79
+msgid "Membership list updated."
+msgstr "Lista de miembros actualizada."
+
+#: ../../mod/group.php:107
+msgid "Group removed."
+msgstr "Grupo eliminado."
+
+#: ../../mod/group.php:109
+msgid "Unable to remove group."
+msgstr "No se puede eliminar el grupo."
+
+#: ../../addon/twitter/twitter.php:64
+msgid "Post to Twitter"
+msgstr "Publicar en Twitter"
+
+#: ../../addon/twitter/twitter.php:122
+msgid "Twitter Posting Settings"
+msgstr "Configuración de publicación en Twitter"
+
+#: ../../addon/twitter/twitter.php:129
+msgid ""
+"No consumer key pair for Twitter found. Please contact your site "
+"administrator."
+msgstr ""
+"No se ha encontrado ningún par de claves para Twitter. Póngase en contacto "
+"con el administrador del sitio."
+
+#: ../../addon/twitter/twitter.php:148
+msgid ""
+"At this Friendika instance the Twitter plugin was enabled but you have not "
+"yet connected your account to your Twitter account. To do so click the "
+"button below to get a PIN from Twitter which you have to copy into the input "
+"box below and submit the form. Only your <strong>public</strong> posts will "
+"be posted to Twitter."
+msgstr ""
+"En esta instancia de Friendika el plugin de Twitter fue habilitado, pero aún "
+"no ha vinculado su cuenta a su cuenta de Twitter.Para ello haga clic en el "
+"botón abajo para obtener un PIN de Twitter, que tiene que copiar en el "
+"cuadro de entrada y enviar el formulario. Solo sus posts <strong>públicos</"
+"strong> se publicarán en Twitter."
+
+#: ../../addon/twitter/twitter.php:149
+msgid "Log in with Twitter"
+msgstr "Acceder con Twitter"
+
+#: ../../addon/twitter/twitter.php:151
+msgid "Copy the PIN from Twitter here"
+msgstr "Copia el PIN de Twitter aquí"
+
+#: ../../addon/twitter/twitter.php:165 ../../addon/statusnet/statusnet.php:197
+msgid "Currently connected to: "
+msgstr "Actualmente conectado a:"
+
+#: ../../addon/twitter/twitter.php:166
+msgid ""
+"If enabled all your <strong>public</strong> postings will be posted to the "
+"associated Twitter account as well."
+msgstr ""
+"Si se habilita, todos sus posts <strong>públicos</ strong> se publicarán "
+"también en la cuenta de Twitter asociada."
+
+#: ../../addon/twitter/twitter.php:168
+msgid "Send public postings to Twitter"
+msgstr "Enviar posts públicos a Twitter"
+
+#: ../../addon/twitter/twitter.php:172 ../../addon/statusnet/statusnet.php:204
+msgid "Clear OAuth configuration"
+msgstr "Borrar la configuración de OAuth"
+
+#: ../../addon/statusnet/statusnet.php:78
+msgid "Post to StatusNet"
+msgstr "Publicar en StatusNet"
+
+#: ../../addon/statusnet/statusnet.php:146
+msgid "StatusNet Posting Settings"
+msgstr "Configuración de envío a StatusNet"
+
+#: ../../addon/statusnet/statusnet.php:152
+msgid ""
+"No consumer key pair for StatusNet found. Register your Friendika Account as "
+"an desktop client on your StatusNet account, copy the consumer key pair here "
+"and enter the API base root.<br />Before you register your own OAuth key "
+"pair ask the administrator if there is already a key pair for this Friendika "
+"installation at your favorited StatusNet installation."
+msgstr ""
+"No se ha encontrado ningún par de claves para StatusNet. Registre su cuenta "
+"de Friendika como cliente de escritorio en su cuenta de StatusNet, copie la "
+"clave consumer aquí y escriba la dirección de la base API.<br />Antes de "
+"registrar su propio par de claves OAuth, pregunte al administrador si ya hay "
+"un par de claves para este instalación de Friendika en su instalación "
+"StatusNet favorita."
+
+#: ../../addon/statusnet/statusnet.php:154
+msgid "OAuth Consumer Key"
+msgstr "OAuth Consumer Key"
+
+#: ../../addon/statusnet/statusnet.php:157
+msgid "OAuth Consumer Secret"
+msgstr "OAuth Consumer Secret"
+
+#: ../../addon/statusnet/statusnet.php:160
+msgid "Base API Path (remember the trailing /)"
+msgstr "Dirección de base para la API (recordar el / al final)"
+
+#: ../../addon/statusnet/statusnet.php:181
+msgid ""
+"To connect to your StatusNet account click the button below to get a "
+"security code from StatusNet which you have to copy into the input box below "
+"and submit the form. Only your <strong>public</strong> posts will be posted "
+"to StatusNet."
+msgstr ""
+"Para conectarse a su cuenta de StatusNet haga clic en el botón abajo para "
+"obtener un PIN de StatusNet, que tiene que copiar en el cuadro de entrada y "
+"enviar el formulario. Solo sus posts <strong>públicos</strong> se publicarán "
+"en StatusNet."
+
+#: ../../addon/statusnet/statusnet.php:182
+msgid "Log in with StatusNet"
+msgstr "Inicia sesión con StatusNet"
+
+#: ../../addon/statusnet/statusnet.php:184
+msgid "Copy the security code from StatusNet here"
+msgstr "Copia el código de seguridad de StatusNet aquí"
+
+#: ../../addon/statusnet/statusnet.php:198
+msgid ""
+"If enabled all your <strong>public</strong> postings will be posted to the "
+"associated StatusNet account as well."
+msgstr ""
+"Si se habilita, todos sus posts <strong>públicos</ strong> se publicarán "
+"también en la cuenta de StatusNet asociada."
+
+#: ../../addon/statusnet/statusnet.php:200
+msgid "Send public postings to StatusNet"
+msgstr "Enviar posts públicos a StatusNet"
+
+#: ../../addon/tictac/tictac.php:14
+msgid "Three Dimensional Tic-Tac-Toe"
+msgstr "Tic-Tac-Toe tridimensionale"
+
+#: ../../addon/tictac/tictac.php:47
+msgid "3D Tic-Tac-Toe"
+msgstr "3D Tic-Tac-Toe"
+
+#: ../../addon/tictac/tictac.php:52
+msgid "New game"
+msgstr "Nueva partida"
+
+#: ../../addon/tictac/tictac.php:53
+msgid "New game with handicap"
+msgstr "Nuevo juego con handicap"
+
+#: ../../addon/tictac/tictac.php:54
+msgid ""
+"Three dimensional tic-tac-toe is just like the traditional game except that "
+"it is played on multiple levels simultaneously. "
+msgstr ""
+"Tic-tac-toe tridimensional es como el juego tradicional, excepto que se "
+"juega en varios niveles simultáneamente."
+
+#: ../../addon/tictac/tictac.php:55
+msgid ""
+"In this case there are three levels. You win by getting three in a row on "
+"any level, as well as up, down, and diagonally across the different levels."
+msgstr ""
+"En este caso hay tres niveles. Ganarás por conseguir tres en raya en "
+"cualquier nivel, así como arriba, abajo y en diagonal a través de los "
+"diferentes niveles."
+
+#: ../../addon/tictac/tictac.php:57
+msgid ""
+"The handicap game disables the center position on the middle level because "
+"the player claiming this square often has an unfair advantage."
+msgstr ""
+"El juego con handicap desactiva la posición central en el nivel medio porque "
+"el jugador reclama que este cuadrado tiene a menudo una ventaja injusta."
+
+#: ../../addon/tictac/tictac.php:176
+msgid "You go first..."
+msgstr "Comienza tú..."
+
+#: ../../addon/tictac/tictac.php:181
+msgid "I'm going first this time..."
+msgstr "Yo voy primero esta vez..."
+
+#: ../../addon/tictac/tictac.php:187
+msgid "You won!"
+msgstr "¡Has ganado!"
+
+#: ../../addon/tictac/tictac.php:193 ../../addon/tictac/tictac.php:218
+msgid "\"Cat\" game!"
+msgstr "¡Empate!"
+
+#: ../../addon/tictac/tictac.php:216
+msgid "I won!"
+msgstr "¡He ganado!"
+
+#: ../../addon/java_upload/java_upload.php:33
+msgid "Select files to upload: "
+msgstr "Seleccione los archivos a subir: "
+
+#: ../../addon/java_upload/java_upload.php:35
+msgid ""
+"Use the following controls only if the Java uploader [above] fails to launch."
+msgstr ""
+"Usa el seguente controllo solo se el el caricatore Java (qui sopra) no parte."
+
+#: ../../addon/facebook/facebook.php:116
+msgid "Facebook disabled"
+msgstr "Facebook no habilitado"
+
+#: ../../addon/facebook/facebook.php:124
+msgid "Facebook API key is missing."
+msgstr "Falta la Clave API de Facebook."
+
+#: ../../addon/facebook/facebook.php:131
+msgid "Facebook Connect"
+msgstr "Facebook Connect"
+
+#: ../../addon/facebook/facebook.php:137
+msgid "Install Facebook post connector"
+msgstr "Instalar el conector con Facebook"
+
+#: ../../addon/facebook/facebook.php:144
+msgid "Remove Facebook post connector"
+msgstr "DesInstalar el conector con Facebook"
+
+#: ../../addon/facebook/facebook.php:150
+msgid "Post to Facebook by default"
+msgstr "Publicar en Facebook de forma predeterminada"
+
+#: ../../addon/facebook/facebook.php:174
+msgid "Facebook"
+msgstr "Facebook"
+
+#: ../../addon/facebook/facebook.php:175
+msgid "Facebook Connector Settings"
+msgstr "Configuración de conexión a Facebook"
+
+#: ../../addon/facebook/facebook.php:189
+msgid "Post to Facebook"
+msgstr "Publicar en Facebook"
+
+#: ../../addon/facebook/facebook.php:230
+msgid "Image: "
+msgstr "Imagen: "
+
+#: ../../addon/randplace/randplace.php:171
+msgid "Randplace Settings"
+msgstr "Configuración de Randplace"
+
+#: ../../addon/randplace/randplace.php:173
+msgid "Enable Randplace Plugin"
+msgstr "Activar el plugin Randplace"
+
+#: ../../addon/js_upload/js_upload.php:39
+msgid "Upload a file"
+msgstr "Subir un archivo"
+
+#: ../../addon/js_upload/js_upload.php:40
+msgid "Drop files here to upload"
+msgstr "Soltar los archivos aquí para subir"
+
+#: ../../addon/js_upload/js_upload.php:42
+msgid "Failed"
+msgstr "Falló"
+
+#: ../../addon/js_upload/js_upload.php:288
+msgid "No files were uploaded."
+msgstr "No hay archivos subidos."
+
+#: ../../addon/js_upload/js_upload.php:294
+msgid "Uploaded file is empty"
+msgstr "El archivo subido está vacío"
+
+#: ../../addon/js_upload/js_upload.php:299
+msgid "Uploaded file is too large"
+msgstr "El archivo subido es demasiado grande"
+
+#: ../../addon/js_upload/js_upload.php:317
+msgid "File has an invalid extension, it should be one of "
+msgstr "El archivo tiene una extensión no válida, debería ser una de "
+
+#: ../../addon/js_upload/js_upload.php:328
+msgid "Upload was cancelled, or server error encountered"
+msgstr "La subida ha sido cancelada, o se encontró un error del servidor"
+
+#: ../../include/contact_selectors.php:32
+msgid "Unknown | Not categorised"
+msgstr "Desconocido | No clasificado"
+
+#: ../../include/contact_selectors.php:33
+msgid "Block immediately"
+msgstr "Bloquear inmediatamente"
+
+#: ../../include/contact_selectors.php:34
+msgid "Shady, spammer, self-marketer"
+msgstr "Sospechoso, spammer, auto-publicidad"
+
+#: ../../include/contact_selectors.php:35
+msgid "Known to me, but no opinion"
+msgstr "Le conozco, sin opinión"
+
+#: ../../include/contact_selectors.php:36
+msgid "OK, probably harmless"
+msgstr "OK, probablemente inofensivo"
+
+#: ../../include/contact_selectors.php:37
+msgid "Reputable, has my trust"
+msgstr "Buena reputación, tiene mi confianza"
+
+#: ../../include/contact_selectors.php:55
+msgid "Frequently"
+msgstr "Frequentemente"
+
+#: ../../include/contact_selectors.php:56
+msgid "Hourly"
+msgstr "Cada hora"
+
+#: ../../include/contact_selectors.php:57
+msgid "Twice daily"
+msgstr "Dos veces al día"
+
+#: ../../include/contact_selectors.php:58
+msgid "Daily"
+msgstr "Diariamente"
+
+#: ../../include/contact_selectors.php:59
+msgid "Weekly"
+msgstr "Semanalmente"
+
+#: ../../include/contact_selectors.php:60
+msgid "Monthly"
+msgstr "Mensualmente"
+
+#: ../../include/profile_selectors.php:6
+msgid "Male"
+msgstr "Male"
+
+#: ../../include/profile_selectors.php:6
+msgid "Female"
+msgstr "Mujer"
+
+#: ../../include/profile_selectors.php:6
+msgid "Currently Male"
+msgstr "Actualmente Hombre"
+
+#: ../../include/profile_selectors.php:6
+msgid "Currently Female"
+msgstr "Actualmente Mujer"
+
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Male"
+msgstr "Mayormente Hombre"
+
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Female"
+msgstr "Mayormente Mujer"
+
+#: ../../include/profile_selectors.php:6
+msgid "Transgender"
+msgstr "Transgénero"
+
+#: ../../include/profile_selectors.php:6
+msgid "Intersex"
+msgstr "Bisexual"
+
+#: ../../include/profile_selectors.php:6
+msgid "Transsexual"
+msgstr "Transexual"
+
+#: ../../include/profile_selectors.php:6
+msgid "Hermaphrodite"
+msgstr "Hermafrodita"
+
+#: ../../include/profile_selectors.php:6
+msgid "Neuter"
+msgstr "Neutro"
+
+#: ../../include/profile_selectors.php:6
+msgid "Non-specific"
+msgstr "No-específico"
+
+#: ../../include/profile_selectors.php:6
+msgid "Other"
+msgstr "Otro"
+
+#: ../../include/profile_selectors.php:6
+msgid "Undecided"
+msgstr "Indeciso"
+
+#: ../../include/profile_selectors.php:19
+msgid "Males"
+msgstr "Hombres"
+
+#: ../../include/profile_selectors.php:19
+msgid "Females"
+msgstr "Mujeres"
+
+#: ../../include/profile_selectors.php:19
+msgid "Gay"
+msgstr "Gay"
+
+#: ../../include/profile_selectors.php:19
+msgid "Lesbian"
+msgstr "Lesbiana"
+
+#: ../../include/profile_selectors.php:19
+msgid "No Preference"
+msgstr "Sin preferencias"
+
+#: ../../include/profile_selectors.php:19
+msgid "Bisexual"
+msgstr "Bisexual"
+
+#: ../../include/profile_selectors.php:19
+msgid "Autosexual"
+msgstr "Autosexual"
+
+#: ../../include/profile_selectors.php:19
+msgid "Abstinent"
+msgstr "Abstinente"
+
+#: ../../include/profile_selectors.php:19
+msgid "Virgin"
+msgstr "Virgen"
+
+#: ../../include/profile_selectors.php:19
+msgid "Deviant"
+msgstr "Desviado"
+
+#: ../../include/profile_selectors.php:19
+msgid "Fetish"
+msgstr "Fetish"
+
+#: ../../include/profile_selectors.php:19
+msgid "Oodles"
+msgstr "Montones"
+
+#: ../../include/profile_selectors.php:19
+msgid "Nonsexual"
+msgstr "No sexual"
+
+#: ../../include/profile_selectors.php:33
+msgid "Single"
+msgstr "Soltero"
+
+#: ../../include/profile_selectors.php:33
+msgid "Lonely"
+msgstr "Solitario"
+
+#: ../../include/profile_selectors.php:33
+msgid "Available"
+msgstr "Disponible"
+
+#: ../../include/profile_selectors.php:33
+msgid "Unavailable"
+msgstr "No disponible"
+
+#: ../../include/profile_selectors.php:33
+msgid "Dating"
+msgstr "de citas"
+
+#: ../../include/profile_selectors.php:33
+msgid "Unfaithful"
+msgstr "Infiel"
+
+#: ../../include/profile_selectors.php:33
+msgid "Sex Addict"
+msgstr "Adicto al sexo"
+
+#: ../../include/profile_selectors.php:33
+msgid "Friends"
+msgstr "Amigos"
+
+#: ../../include/profile_selectors.php:33
+msgid "Friends/Benefits"
+msgstr "Amigos con beneficios"
+
+#: ../../include/profile_selectors.php:33
+msgid "Casual"
+msgstr "Casual"
+
+#: ../../include/profile_selectors.php:33
+msgid "Engaged"
+msgstr "Comprometido/a"
+
+#: ../../include/profile_selectors.php:33
+msgid "Married"
+msgstr "Casado/a"
+
+#: ../../include/profile_selectors.php:33
+msgid "Partners"
+msgstr "Socios"
+
+#: ../../include/profile_selectors.php:33
+msgid "Cohabiting"
+msgstr "Cohabitando"
+
+#: ../../include/profile_selectors.php:33
+msgid "Happy"
+msgstr "Feliz"
+
+#: ../../include/profile_selectors.php:33
+msgid "Not Looking"
+msgstr "No estoy buscando"
+
+#: ../../include/profile_selectors.php:33
+msgid "Swinger"
+msgstr "Scambista"
+
+#: ../../include/profile_selectors.php:33
+msgid "Betrayed"
+msgstr "Traicionado/a"
+
+#: ../../include/profile_selectors.php:33
+msgid "Separated"
+msgstr "Separado/a"
+
+#: ../../include/profile_selectors.php:33
+msgid "Unstable"
+msgstr "Inestable"
+
+#: ../../include/profile_selectors.php:33
+msgid "Divorced"
+msgstr "Divorciado/a"
+
+#: ../../include/profile_selectors.php:33
+msgid "Widowed"
+msgstr "Viudo/a"
+
+#: ../../include/profile_selectors.php:33
+msgid "Uncertain"
+msgstr "Incierto"
+
+#: ../../include/profile_selectors.php:33
+msgid "Complicated"
+msgstr "Complicado"
+
+#: ../../include/profile_selectors.php:33
+msgid "Don't care"
+msgstr "No importa"
+
+#: ../../include/profile_selectors.php:33
+msgid "Ask me"
+msgstr "Pregúntame"
+
+#: ../../include/acl_selectors.php:132
+msgid "Visible To:"
+msgstr "Visible a:"
+
+#: ../../include/acl_selectors.php:136 ../../include/acl_selectors.php:151
+msgid "Groups"
+msgstr "Grupos"
+
+#: ../../include/acl_selectors.php:147
+msgid "Except For:"
+msgstr "A excepción de:"
+
+#: ../../include/auth.php:27
+msgid "Logged out."
+msgstr "Sesión terminada"
+
+#: ../../include/datetime.php:44 ../../include/datetime.php:46
+msgid "Miscellaneous"
+msgstr "Varios"
+
+#: ../../include/datetime.php:148
+msgid "less than a second ago"
+msgstr "hace menos de un segundo"
+
+#: ../../include/datetime.php:151
+msgid "year"
+msgstr "año"
+
+#: ../../include/datetime.php:151
+msgid "years"
+msgstr "años"
+
+#: ../../include/datetime.php:152
+msgid "month"
+msgstr "mes"
+
+#: ../../include/datetime.php:152
+msgid "months"
+msgstr "meses"
+
+#: ../../include/datetime.php:153
+msgid "week"
+msgstr "semana"
+
+#: ../../include/datetime.php:153
+msgid "weeks"
+msgstr "semanas"
+
+#: ../../include/datetime.php:154
+msgid "day"
+msgstr "día"
+
+#: ../../include/datetime.php:154
+msgid "days"
+msgstr "días"
+
+#: ../../include/datetime.php:155
+msgid "hour"
+msgstr "hora"
+
+#: ../../include/datetime.php:155
+msgid "hours"
+msgstr "horas"
+
+#: ../../include/datetime.php:156
+msgid "minute"
+msgstr "minuto"
+
+#: ../../include/datetime.php:156
+msgid "minutes"
+msgstr "minutos"
+
+#: ../../include/datetime.php:157
+msgid "second"
+msgstr "segundo"
+
+#: ../../include/datetime.php:157
+msgid "seconds"
+msgstr "segundos"
+
+#: ../../include/datetime.php:164
+msgid " ago"
+msgstr " hace"
+
+#: ../../include/nav.php:56 ../../include/nav.php:91
+msgid "Home"
+msgstr "Home"
+
+#: ../../include/nav.php:64
+msgid "Apps"
+msgstr "Aplicaciones"
+
+#: ../../include/nav.php:77
+msgid "Directory"
+msgstr "Directorio"
+
+#: ../../include/nav.php:87
+msgid "Network"
+msgstr "Red"
+
+#: ../../include/nav.php:96
+msgid "Notifications"
+msgstr "Notificaciones"
+
+#: ../../include/nav.php:104
+msgid "Manage"
+msgstr "Administrar"
+
+#: ../../include/nav.php:107
+msgid "Settings"
+msgstr "Configuración"
+
+#: ../../include/nav.php:109
+msgid "Profiles"
+msgstr "Perfiles"
+
+#: ../../include/items.php:1004 ../../include/items.php:1027
+msgid "Birthday:"
+msgstr "Fecha de nacimiento:"
+
+#: ../../include/items.php:1348 ../../include/items.php:1371
+msgid "You have a new follower at "
+msgstr "Tienes un nuevo seguidor en "
+
+#: ../../include/group.php:130
+msgid "Create a new group"
+msgstr "Crear un nuevo grupo"
+
+#: ../../include/group.php:131
+msgid "Everybody"
+msgstr "Todo el mundo"
+
+#: ../../include/oembed.php:57
+msgid "Embedding disabled"
+msgstr "Embedding desabilitado"
+
+#: ../../boot.php:2418
+msgid "Birthday Reminders"
+msgstr "Recordatorios de cumpleaños"
+
+#: ../../mod/profile.php:160 ../../mod/editpost.php:66
+#: ../../mod/network.php:95
+msgid "Insert Vorbis [.ogg] video"
+msgstr "Insertar video Vorbis [.ogg]"
+
+#: ../../mod/profile.php:161 ../../mod/editpost.php:67
+#: ../../mod/network.php:96
+msgid "Insert Vorbis [.ogg] audio"
+msgstr "Insertar audio Vorbis [.ogg]"
+
+#: ../../mod/profile.php:354 ../../mod/display.php:222
+#: ../../mod/editpost.php:62 ../../mod/network.php:392
+msgid "Edit"
+msgstr "Editar"
+
+#: ../../mod/search.php:54
+msgid "No results."
+msgstr "No hay resultados."
+
+#: ../../mod/photos.php:969
+msgid "<< Prev"
+msgstr "<< Ant"
+
+#: ../../mod/photos.php:977
+msgid "Next >>"
+msgstr "Sig >>"
+
+#: ../../mod/editpost.php:17 ../../mod/editpost.php:27
+msgid "Item not found"
+msgstr "Elemento no encontrado"
+
+#: ../../mod/editpost.php:32
+msgid "Edit post"
+msgstr "Editar mensaje"
+
+#: ../../include/dba.php:31
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr ""
+"No se puede encontrar información de DNS para el servidor de base de datos "
+"'%s'"
+
+#: ../../boot.php:2016
+#, php-format
+msgid "%d Contact"
+msgid_plural "%d Contacts"
+msgstr[0] "%d Contacto"
+msgstr[1] "%d Contactos"
diff --git a/view/es/passchanged_eml.tpl b/view/es/passchanged_eml.tpl
new file mode 100644
index 000000000..7959846b7
--- /dev/null
+++ b/view/es/passchanged_eml.tpl
@@ -0,0 +1,19 @@
+
+Estimado/a $username,
+
+ Tu contraseña ha sido modificada como has solicitado. Anota esta información
+(o cambia inmediatamente la contraseña con algo que recuerdes).
+
+
+Tus datos de acceso son los siguientes:
+
+Sitio: $siteurl
+Nombre: $email
+Contraseña: $new_password
+
+Después de acceder puedes cambiar la contraseña desde la página de configuración de tu perfil.
+
+
+ $sitename
+
+
diff --git a/view/es/register_open_eml.tpl b/view/es/register_open_eml.tpl
new file mode 100644
index 000000000..7c7a90b40
--- /dev/null
+++ b/view/es/register_open_eml.tpl
@@ -0,0 +1,21 @@
+
+Estimado/a $username,
+
+ Gracias por registrarte en $sitename. Tu cuenta ha sido creada.
+
+
+Los datos de acceso son los siguientes:
+
+Sitio: $siteurl
+Nombre: $email
+Contraseña: $password
+
+
+Después de acceder puedes cambiar tu contraseña en la página de "Configuración".
+
+Toma un momento para revisar las otras configuraciones de la cuenta en esa página.
+
+
+Gracias y bienvenido/a $sitename.
+
+
diff --git a/view/es/register_verify_eml.tpl b/view/es/register_verify_eml.tpl
new file mode 100644
index 000000000..9f2cc4d9b
--- /dev/null
+++ b/view/es/register_verify_eml.tpl
@@ -0,0 +1,22 @@
+
+Se ha recibido la solicitud de registro de un nuevo usuario en
+$sitename que requiere tu aprobación.
+
+Los datos de acceso son los siguientes:
+
+Nombre Completo: $username
+Sitio: $siteurl
+Nombre: $email
+
+
+Para aprobar esta solicitud, visita el siguiente enlace:
+
+$siteurl/regmod/allow/$hash
+
+Para denegar la solicitud y eliminar la cuenta, por favor visita:
+
+$siteurl/regmod/deny/$hash
+
+
+Gracias.
+
diff --git a/view/es/request_notify_eml.tpl b/view/es/request_notify_eml.tpl
new file mode 100644
index 000000000..6161c45c1
--- /dev/null
+++ b/view/es/request_notify_eml.tpl
@@ -0,0 +1,13 @@
+
+Estimado/a $myname,
+
+Acabas de recibir una solicitud de conexión de '$requestor' en $sitename.
+
+Puedes visitar su perfil en $url.
+
+Accede a tu sitio para ver la presentación completa y aceptar o ignorar/cancelar la solicitud.
+
+$siteurl
+
+
+ $sitename
diff --git a/view/es/strings.php b/view/es/strings.php
new file mode 100644
index 000000000..c7bbb02d8
--- /dev/null
+++ b/view/es/strings.php
@@ -0,0 +1,579 @@
+<?php
+
+function string_plural_select($n){
+ return ($n != 1);
+}
+;
+$a->strings["Not Found"] = "No se ha encontrado";
+$a->strings["Page not found."] = "Página no encontrada.";
+$a->strings["Permission denied"] = "Permiso denegado";
+$a->strings["Permission denied."] = "Permiso denegado.";
+$a->strings["Create a New Account"] = "Crea una nueva cuenta";
+$a->strings["Register"] = "Registrarse";
+$a->strings["Nickname or Email address: "] = "Apodo o dirección de email: ";
+$a->strings["Password: "] = "Contraseña: ";
+$a->strings["Login"] = "Acceder";
+$a->strings["Nickname/Email/OpenID: "] = "Apodo/Email/OpenID: ";
+$a->strings["Password (if not OpenID): "] = "Contraseña (si no OpenID): ";
+$a->strings["Forgot your password?"] = "¿Olvidó la contraseña?";
+$a->strings["Password Reset"] = "Resetear la contraseña";
+$a->strings["Logout"] = "Salir";
+$a->strings["prev"] = "ant";
+$a->strings["first"] = "primera";
+$a->strings["last"] = "última";
+$a->strings["next"] = "sig";
+$a->strings["%s likes this."] = "A %s le gusta esto.";
+$a->strings["%s doesn't like this."] = "A %s no le gusta esto.";
+$a->strings["<span %1\$s>%2\$d people</span> like this."] = "Le gusta a <span %1\$s>%2\$d personas</span>.";
+$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = "No le gusta a <span %1\$s>%2\$d personas</span>.";
+$a->strings["and"] = "y";
+$a->strings[", and %d other people"] = ", y otras %d personas";
+$a->strings["%s like this."] = "Le gusta a %s.";
+$a->strings["%s don't like this."] = "No le gusta a %s.";
+$a->strings["No contacts"] = "Nigún contacto";
+$a->strings["Contacts"] = "Contactos";
+$a->strings["View Contacts"] = "Ver contactos";
+$a->strings["Search"] = "Busca";
+$a->strings["No profile"] = "Nigún perfil";
+$a->strings["Connect"] = "Conecta";
+$a->strings["Location:"] = "Ubicación:";
+$a->strings[", "] = ", ";
+$a->strings["Gender:"] = "Género:";
+$a->strings["Status:"] = "Estado:";
+$a->strings["Homepage:"] = "Página web:";
+$a->strings["Monday"] = "Lunes";
+$a->strings["Tuesday"] = "Martes";
+$a->strings["Wednesday"] = "Miércoles";
+$a->strings["Thursday"] = "Jueves";
+$a->strings["Friday"] = "Viernes";
+$a->strings["Saturday"] = "Sábado";
+$a->strings["Sunday"] = "Domingo";
+$a->strings["January"] = "Enero";
+$a->strings["February"] = "Febrero";
+$a->strings["March"] = "Marzo";
+$a->strings["April"] = "Abril";
+$a->strings["May"] = "Mayo";
+$a->strings["June"] = "Junio";
+$a->strings["July"] = "Julio";
+$a->strings["August"] = "Agosto";
+$a->strings["September"] = "Septiembre";
+$a->strings["October"] = "Octubre";
+$a->strings["November"] = "Noviembre";
+$a->strings["December"] = "Diciembre";
+$a->strings["Birthdays this week:"] = "Cumpleaños esta semana:";
+$a->strings["(Adjusted for local time)"] = "(Convertido a la hora local)";
+$a->strings["[today]"] = "[hoy]";
+$a->strings["link to source"] = "Enlace al original";
+$a->strings["Welcome back %s"] = "Bienvenido de nuevo %s";
+$a->strings["Manage Identities and/or Pages"] = "Administrar identidades y / o páginas";
+$a->strings["(Toggle between different identities or community/group pages which share your account details.)"] = "(Alternar entre las diferentes identidades o las páginas de comunidades / grupos que comparten los datos de su cuenta.)";
+$a->strings["Select an identity to manage: "] = "Seleccione una identidad a gestionar:";
+$a->strings["Submit"] = "Envia";
+$a->strings["Image exceeds size limit of %d"] = "El tamaño de la imagen supera el límite de %d";
+$a->strings["Unable to process image."] = "Imposible procesar la imagen.";
+$a->strings["Wall Photos"] = "Foto del Muro";
+$a->strings["Image upload failed."] = "Subida de imagen fallida.";
+$a->strings["Administrator"] = "Administrador";
+$a->strings["noreply"] = "no-responder";
+$a->strings["New mail received at "] = "Nuevo correo recibido en ";
+$a->strings["%s commented on an item at %s"] = "%s ha commentato un elemento en %s";
+$a->strings["Share"] = "Compartir";
+$a->strings["Upload photo"] = "Subir foto";
+$a->strings["Insert web link"] = "Insertar enlace web";
+$a->strings["Insert YouTube video"] = "Insertar video de YouTube";
+$a->strings["Set your location"] = "Configura la tu ubicación";
+$a->strings["Clear browser location"] = "Borrar la ubicación del navegador";
+$a->strings["Please wait"] = "Por favor, espere";
+$a->strings["Permission settings"] = "Configuración de permisos";
+$a->strings["CC: email addresses"] = "CC: dirección email";
+$a->strings["Example: bob@example.com, mary@example.com"] = "Ejemplo: juan@ejemplo.com, sofia@ejemplo.com";
+$a->strings["Private Message"] = "Mensaje privado";
+$a->strings["I like this (toggle)"] = "Me gusta esto (cambiar)";
+$a->strings["I don't like this (toggle)"] = "No me gusta questo (cambiar)";
+$a->strings["This is you"] = "Éste/a eres tú";
+$a->strings["Delete"] = "Eliminar";
+$a->strings["View \$name's profile"] = "Ver el perfil de \$name";
+$a->strings["Shared content is covered by the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0</a> license."] = "El contenido en común está cubierto por la licencia <a href=\"http://creativecommons.org/licenses/by/3.0/deed.it\">Creative Commons Atribución 3.0</a>.";
+$a->strings["The profile address specified does not provide adequate information."] = "La dirección del perfil especificado no proporciona información adecuada.";
+$a->strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Perfil limitado. Esta persona no podrá recibir notificaciones directas/personales de usted.";
+$a->strings["Unable to retrieve contact information."] = "No ha sido posible recibir la información del contacto.";
+$a->strings["following"] = "siguiendo";
+$a->strings["Image uploaded but image cropping failed."] = "Imagen recibida, pero ha fallado al recortarla.";
+$a->strings["Profile Photos"] = "Foto del perfil";
+$a->strings["Image size reduction [%s] failed."] = "Ha fallado la reducción de las dimensiones de la imagen [%s].";
+$a->strings["Unable to process image"] = "Imposible procesar la imagen";
+$a->strings["Image uploaded successfully."] = "Imagen subida con éxito.";
+$a->strings["Welcome to %s"] = "Bienvenido a %s";
+$a->strings["Please login."] = "Accede.";
+$a->strings["Registration revoked for %s"] = "Registro anulado para %s";
+$a->strings["Registration details for %s"] = "Detalles de registro para %s";
+$a->strings["Account approved."] = "Cuenta aprobada.";
+$a->strings["Profile not found."] = "Perfil no encontrado.";
+$a->strings["Profile Name is required."] = "El nombre de perfil es requerido.";
+$a->strings["Profile updated."] = "Perfil actualizado.";
+$a->strings["Profile deleted."] = "Perfil eliminado.";
+$a->strings["Profile-"] = "Perfil-";
+$a->strings["New profile created."] = "Nuevo perfil creado.";
+$a->strings["Profile unavailable to clone."] = "Imposible duplicar el perfil.";
+$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Éste es tu perfil <strong>público</strong>.<br /><strong>Puede</strong> ser visto por cualquiera usando internet.";
+$a->strings["Age: "] = "Edad : ";
+$a->strings["Profile Image"] = "Imagen del Perfil";
+$a->strings["Passwords do not match. Password unchanged."] = "Las contraseñas no coinciden. La contraseña no ha sido modificada.";
+$a->strings["Empty passwords are not allowed. Password unchanged."] = "No se permiten contraseñas vacías. La contraseña no ha sido modificada.";
+$a->strings["Password changed."] = "Contraseña modificada.";
+$a->strings["Password update failed. Please try again."] = "La actualización de la contraseña ha fallado. Por favor, pruebe otra vez.";
+$a->strings[" Please use a shorter name."] = " Usa un nombre más corto.";
+$a->strings[" Name too short."] = " Nombre demasiado corto.";
+$a->strings[" Not valid email."] = " Email no válido.";
+$a->strings[" Cannot change to that email."] = " No se puede usar ese email.";
+$a->strings["Settings updated."] = "Configuración actualizada.";
+$a->strings["Plugin Settings"] = "Configuración de los Plugin";
+$a->strings["Account Settings"] = "Configuración de la cuenta";
+$a->strings["No Plugin settings configured"] = "Ningún Plugin ha sido configurado";
+$a->strings["OpenID: "] = "OpenID: ";
+$a->strings["&nbsp;(Optional) Allow this OpenID to login to this account."] = "&nbsp;(Opcional) Permitir a este OpenID acceder a esta cuenta.";
+$a->strings["Profile is <strong>not published</strong>."] = "El perfil <strong>no está publicado</strong>.";
+$a->strings["Default Post Permissions"] = "Permisos por defecto para los mensajes";
+$a->strings["View in context"] = "Ver en el contexto";
+$a->strings["Photo Albums"] = "Álbum de Fotos";
+$a->strings["Contact Photos"] = "Foto del contacto";
+$a->strings["Contact information unavailable"] = "Información del contacto no disponible";
+$a->strings["Album not found."] = "Album no encontrado.";
+$a->strings["Delete Album"] = "Eliminar album";
+$a->strings["Delete Photo"] = "Eliminar foto";
+$a->strings["was tagged in a"] = "ha sido etiquetado en";
+$a->strings["photo"] = "foto";
+$a->strings["by"] = "por";
+$a->strings["Image exceeds size limit of "] = "La imagen supera el limite de tamaño de ";
+$a->strings["No photos selected"] = "Ninguna foto seleccionada";
+$a->strings["Upload Photos"] = "Subir fotos";
+$a->strings["New album name: "] = "Nombre del nuevo álbum: ";
+$a->strings["or existing album name: "] = "o nombre de un álbum existente: ";
+$a->strings["Permissions"] = "Permisos";
+$a->strings["Edit Album"] = "Modifica álbum";
+$a->strings["View Photo"] = "Ver foto";
+$a->strings["Photo not available"] = "Foto no disponible";
+$a->strings["Edit photo"] = "Modificar foto";
+$a->strings["Use as profile photo"] = "Usar como foto del perfil";
+$a->strings["View Full Size"] = "Ver a tamaño completo";
+$a->strings["Tags: "] = "Etiquetas: ";
+$a->strings["[Remove any tag]"] = "[Borrar todas las etiquetas]";
+$a->strings["New album name"] = "Nuevo nombre de álbum";
+$a->strings["Caption"] = "Título";
+$a->strings["Add a Tag"] = "Añadir una etiqueta";
+$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Ejemplo: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping";
+$a->strings["Recent Photos"] = "Fotos recientes";
+$a->strings["Upload New Photos"] = "Subir nuevas fotos";
+$a->strings["View Album"] = "Ver álbum";
+$a->strings["Item not found."] = "Elemento no encontrado.";
+$a->strings["View \$owner_name's profile"] = "Ver el perfil de \$owner_name";
+$a->strings["to"] = "a";
+$a->strings["Wall-to-Wall"] = "Muro-A-Muro";
+$a->strings["via Wall-To-Wall:"] = "via Muro-A-Muro:";
+$a->strings["Item has been removed."] = "El elemento ha sido eliminado.";
+$a->strings["%s : Not a valid email address."] = "%s: No es una dirección válida de email.";
+$a->strings["Please join my network on %s"] = "Por favor únete a mi red social en %s";
+$a->strings["%s : Message delivery failed."] = "%s: Ha fallado la entrega del mensaje.";
+$a->strings["%d message sent."] = array(
+ 0 => "%d mensaje enviado.",
+ 1 => "%d mensajes enviados.",
+);
+$a->strings["Send invitations"] = "Enviar invitaciones";
+$a->strings["Enter email addresses, one per line:"] = "Introduce las direcciones de email, una por línea:";
+$a->strings["Your message:"] = "Tu mensaje:";
+$a->strings["Please join my social network on %s"] = "Únete a mi red social en % s";
+$a->strings["To accept this invitation, please visit:"] = "Para aceptar esta invitación, por favor visita:";
+$a->strings["Once you have registered, please connect with me via my profile page at:"] = "Una vez registrado, por favor contacta conmigo a través de mi página de perfil en:";
+$a->strings["Invite Friends"] = "Invitar amigos";
+$a->strings["Connect/Follow"] = "Conectar/Seguir";
+$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Ejemplo: bob@ejemplo.com, http://ejemplo.com/barbara";
+$a->strings["Follow"] = "Seguir";
+$a->strings["Could not access contact record."] = "No se pudo acceder a los datos del contacto.";
+$a->strings["Could not locate selected profile."] = "No se pudo encontrar el perfil seleccionado.";
+$a->strings["Contact updated."] = "Contacto actualizado.";
+$a->strings["Failed to update contact record."] = "Error al actualizar el contacto.";
+$a->strings["Contact has been blocked"] = "El contacto ha sido bloqueado";
+$a->strings["Contact has been unblocked"] = "El contacto ha sido desbloqueado";
+$a->strings["Contact has been ignored"] = "El contacto ha sido ignorado";
+$a->strings["Contact has been unignored"] = "El contacto es no ignorado";
+$a->strings["stopped following"] = "dejó de seguir";
+$a->strings["Contact has been removed."] = "El contacto ha sido eliminado";
+$a->strings["Contact not found."] = "Contacto no encontrado.";
+$a->strings["Mutual Friendship"] = "Amistad recíproca";
+$a->strings["is a fan of yours"] = "es tu fan";
+$a->strings["you are a fan of"] = "eres fan de";
+$a->strings["Never"] = "Nunca";
+$a->strings["(Update was successful)"] = "(La actualización se ha completado)";
+$a->strings["(Update was not successful)"] = "(La actualización no se ha completado)";
+$a->strings["Contact Editor"] = "Editor de contactos";
+$a->strings["Visit \$name's profile"] = "Visita el perfil de \$name";
+$a->strings["Block/Unblock contact"] = "Boquear/Desbloquear contacto";
+$a->strings["Ignore contact"] = "Ignorar contacto";
+$a->strings["Delete contact"] = "Eliminar contacto";
+$a->strings["Last updated: "] = "Última actualización:";
+$a->strings["Update public posts: "] = "Actualizar mensajes públicos: ";
+$a->strings["Update now"] = "Actualizar ahora";
+$a->strings["Unblock this contact"] = "Desbloquear a este contacto";
+$a->strings["Block this contact"] = "Bloquear a este contacto";
+$a->strings["Unignore this contact"] = "Eliminar de contactos ignorados";
+$a->strings["Ignore this contact"] = "Agregar a contactos ignorados";
+$a->strings["Currently blocked"] = "Bloqueados";
+$a->strings["Currently ignored"] = "Ignorados";
+$a->strings["Show Blocked Connections"] = "Mostrar conexiones bloqueadas";
+$a->strings["Hide Blocked Connections"] = "Esconder conexiones bloqueadas";
+$a->strings["Finding: "] = "Busco: ";
+$a->strings["Find"] = "Encontrar";
+$a->strings["Visit \$username's profile"] = "Visita el perfil de \$username";
+$a->strings["Edit contact"] = "Modificar contacto";
+$a->strings["Remote privacy information not available."] = "Información sobre privacidad remota no disponible.";
+$a->strings["Visible to:"] = "Visible a:";
+$a->strings["Invalid OpenID url"] = "Url OpenID no valido";
+$a->strings["Please enter the required information."] = "Por favor, introduzca la información necesaria.";
+$a->strings["Please use a shorter name."] = "Por favor, use un nombre más corto.";
+$a->strings["Name too short."] = "El nombre es demasiado corto.";
+$a->strings["That doesn\\'t appear to be your full (First Last) name."] = "Ese no parece ser su nombre completo (Nombre Apellido).";
+$a->strings["Your email domain is not among those allowed on this site."] = "Su dominio de correo electrónico no se encuentra entre los permitidos en este sitio.";
+$a->strings["Not a valid email address."] = "No es una dirección de correo electrónico válida.";
+$a->strings["Cannot use that email."] = "No se puede utilizar estecorreo electrónico.";
+$a->strings["Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and must also begin with a letter."] = "Su \"apodo\"sólo puede contener \"az\", \"0-9\", \"-\", y \"_\", y también debe empezar por una letra.";
+$a->strings["Nickname is already registered. Please choose another."] = "Apodo ya registrado. Por favor, elija otro.";
+$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "ERROR GRAVE: La generación de claves de seguridad ha fallado.";
+$a->strings["An error occurred during registration. Please try again."] = "Se produjo un error durante el registro. Por favor, inténtelo de nuevo.";
+$a->strings["An error occurred creating your default profile. Please try again."] = "Error al crear su perfil predeterminado. Por favor, inténtelo de nuevo.";
+$a->strings["Registration successful. Please check your email for further instructions."] = "Se ha registrado con éxito. Por favor, consulte su correo electrónico para obtener instrucciones adicionales.";
+$a->strings["Failed to send email message. Here is the message that failed."] = "Error al enviar mensaje de correo electrónico. Aquí está el mensaje no enviado.";
+$a->strings["Your registration can not be processed."] = "Su registro no se puede procesar.";
+$a->strings["Registration request at %s"] = "Solicitud de registro en% s";
+$a->strings["Your registration is pending approval by the site owner."] = "Su registro está pendiente de aprobación por el propietario del sitio.";
+$a->strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Usted puede (opcionalmente) rellenar este formulario a través de OpenID mediante el suministro de su OpenID y haciendo clic en 'Registrar '.";
+$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Si usted no está familiarizado con OpenID, por favor deje ese campo en blanco y rellene el resto de los elementos.";
+$a->strings["Your OpenID (optional): "] = "Tu OpenID (opcional):";
+$a->strings["Members of this network prefer to communicate with real people who use their real names."] = "Los miembros de esta red prefieren comunicarse con personas reales que usan sus nombres reales.";
+$a->strings["Include your profile in member directory?"] = "¿Incluir su perfil en el directorio de miembros?";
+$a->strings["Yes"] = "Sí";
+$a->strings["No"] = "No";
+$a->strings["Registration"] = "Registro";
+$a->strings["Your Full Name (e.g. Joe Smith): "] = "Su nombre completo (por ejemplo, Joe Smith):";
+$a->strings["Your Email Address: "] = "Su dirección de correo electrónico:";
+$a->strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be '<strong>nickname@\$sitename</strong>'."] = "Elija un apodo perfil. Debe comenzar con un carácter de texto. Su dirección de perfil en este sitio va a ser '<strong>nickname@\$sitename</strong>'.";
+$a->strings["Choose a nickname: "] = "Escoge un apodo: ";
+$a->strings["Could not create/connect to database."] = "No se pudo crear o conectarse a la base de datos.";
+$a->strings["Connected to database."] = "Conectado a la base de datos.";
+$a->strings["Database import succeeded."] = "Importación de la base de datos completada.";
+$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Usted tendrá que [manualmente] configurar una tarea programada para el encuestador";
+$a->strings["Please see the file \"INSTALL.txt\"."] = "Por favor, consulte el archivo \"INSTALL.txt\".";
+$a->strings["Database import failed."] = "La importación de la base de datos ha fallado.";
+$a->strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Puede que tenga que importar el archivo \"Database.sql\" manualmente usando phpmyadmin o mysql.";
+$a->strings["Welcome to Friendika."] = "Bienvenido a Friendika.";
+$a->strings["Could not find a command line version of PHP in the web server PATH."] = "No se pudo encontrar una versión de línea de comandos de PHP en la ruta del servidor web.";
+$a->strings["This is required. Please adjust the configuration file .htconfig.php accordingly."] = "Esto es necesario. Por favor, modifica el archivo de configuración. htconfig.php en consecuencia.";
+$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La versión en línea de comandos de PHP en su sistema no tiene \"register_argc_argv\" habilitado.";
+$a->strings["This is required for message delivery to work."] = "Esto es necesario para el funcionamiento de la entrega de mensajes.";
+$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de generar claves de cifrado";
+$a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si se ejecuta en Windows, por favor consulte la sección \"http://www.php.net/manual/en/openssl.installation.php\".";
+$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: El módulo servidor web Apache mod-rewrite es necesario pero no está instalado.";
+$a->strings["Error: libCURL PHP module required but not installed."] = "Error: El módulo libcurl PHP es necesario, pero no está instalado.";
+$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Error: El módulo de gráficos GD de PHP con soporte JPEG es necesario, pero no está instalado.";
+$a->strings["Error: openssl PHP module required but not installed."] = "Error: El módulo openssl PHP es necesario, pero no está instalado.";
+$a->strings["Error: mysqli PHP module required but not installed."] = "Error: El módulo PHP mysqli es necesario, pero no está instalado.";
+$a->strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "El programa de instalación web necesita ser capaz de crear un archivo llamado \". htconfig.php\" en la carpeta superior de su servidor web y es incapaz de hacerlo.";
+$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Esto es muy a menudo una configuración de permisos, pues el servidor web puede que no sea capaz de escribir archivos en la carpeta - incluso si usted puede.";
+$a->strings["Please check with your site documentation or support people to see if this situation can be corrected."] = "Por favor, consulte el sitio de documentación o gente de ayuda para ver si esta situación se puede corregir.";
+$a->strings["If not, you may be required to perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Si no, deberá proceder con la instalación manual. Por favor, consulte el archivo \"INSTALL.txt\"para obtener instrucciones.";
+$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "El archivo de configuración de base de datos \". htconfig.php\" No se pudo escribir. Por favor, utilice el texto adjunto para crear un archivo de configuración en la raíz de su servidor web.";
+$a->strings["Errors encountered creating database tables."] = "Errores encontrados creando las tablas de bases de datos.";
+$a->strings["Normal View"] = "Vista normal";
+$a->strings["New Item View"] = "Vista de nuevos elementos";
+$a->strings["No such group"] = "Ningún grupo";
+$a->strings["Group is empty"] = "El grupo está vacío";
+$a->strings["Group: "] = "Grupo: ";
+$a->strings["Invalid request identifier."] = "Solicitud de identificación no válida.";
+$a->strings["Discard"] = "Descartar";
+$a->strings["Ignore"] = "Ignorar";
+$a->strings["Show Ignored Requests"] = "Mostrar peticiones ignoradas";
+$a->strings["Hide Ignored Requests"] = "Esconder peticiones ignoradas";
+$a->strings["Claims to be known to you: "] = "Dice conocerte:";
+$a->strings["yes"] = "sí";
+$a->strings["no"] = "no";
+$a->strings["Approve as: "] = "Aprobar como:";
+$a->strings["Friend"] = "Amig@";
+$a->strings["Fan/Admirer"] = "Fan/Admirador";
+$a->strings["Notification type: "] = "Tipo di notificación: ";
+$a->strings["Friend/Connect Request"] = "Solicitud de Amistad/Conexión";
+$a->strings["New Follower"] = "Nuevo seguidor";
+$a->strings["Approve"] = "Aprobar";
+$a->strings["No notifications."] = "Ninguna notificación.";
+$a->strings["No registrations."] = "Ningún registro.";
+$a->strings["This introduction has already been accepted."] = "Esta presentación ya ha sido aceptada.";
+$a->strings["Profile location is not valid or does not contain profile information."] = "Ubicación del perfil no es válido o no contiene la información de perfil.";
+$a->strings["Warning: profile location has no identifiable owner name."] = "Aviso: Ubicación del perfil no tiene nombre del propietario identificable.";
+$a->strings["Warning: profile location has no profile photo."] = "Advertencia: ubicación del perfil no tiene foto de perfil.";
+$a->strings["%d required parameter was not found at the given location"] = array(
+ 0 => "% d parámetro requerido no se encontró en el lugar determinado",
+ 1 => "% d parámetros requeridos no se encontraron en el lugar determinado",
+);
+$a->strings["Introduction complete."] = "Presentación completa.";
+$a->strings["Unrecoverable protocol error."] = "Error de protocolo irrecuperable.";
+$a->strings["Profile unavailable."] = "Perfil no disponible.";
+$a->strings["%s has received too many connection requests today."] = "% s ha recibido demasiadas solicitudes de conexión hoy.";
+$a->strings["Spam protection measures have been invoked."] = "Han sido activadas las medidas de protección contra spam.";
+$a->strings["Friends are advised to please try again in 24 hours."] = "Se aconseja a los amigos intentarlo de nuevo en 24 horas.";
+$a->strings["Invalid locator"] = "Localizador no válido";
+$a->strings["Unable to resolve your name at the provided location."] = "No se ha podido resolver tu nombre en la ubicación indicada.";
+$a->strings["You have already introduced yourself here."] = "Ya te has presentado aquí.";
+$a->strings["Apparently you are already friends with %s."] = "Al parecer, ya eres amigo de % s.";
+$a->strings["Invalid profile URL."] = "Dirección de perfil no válida.";
+$a->strings["Disallowed profile URL."] = "Dirección de perfil no permitida.";
+$a->strings["Your introduction has been sent."] = "Su presentación ha sido enviada.";
+$a->strings["Please login to confirm introduction."] = "Inicia sesión para confirmar la presentación.";
+$a->strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Inicio de sesión con la identificación incorrecta. Entra en <strong>este</ strong> perfil.";
+$a->strings["[Name Withheld]"] = "[Nombre oculto]";
+$a->strings["Introduction received at "] = "Presentación recibida en";
+$a->strings["Friend/Connection Request"] = "Solicitud de Amistad/Conexión";
+$a->strings["Please answer the following:"] = "Por favor responda lo siguiente:";
+$a->strings["Does \$name know you?"] = "$name te conoce?";
+$a->strings["Add a personal note:"] = "Agregar una nota personal:";
+$a->strings["Please enter your profile address from one of the following supported social networks:"] = "Por favor, introduzca su dirección de perfil de uno de las siguientes redes sociales soportadas:";
+$a->strings["Friendika"] = "Friendika";
+$a->strings["StatusNet/Federated Social Web"] = "StatusNet/Federated Social Web";
+$a->strings["Private (secure) network"] = "Red privada (segura) ";
+$a->strings["Public (insecure) network"] = "Red pública (insegura)";
+$a->strings["Your profile address:"] = "Su dirección de perfil:";
+$a->strings["Submit Request"] = "Enviar solicitud";
+$a->strings["Cancel"] = "Cancelar";
+$a->strings["status"] = "estado";
+$a->strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s gusta %3\$s de %2\$s";
+$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no gusta %3\$s de %2\$s";
+$a->strings["Password reset requested at %s"] = "Restablecer la contraseña solicitada en %s";
+$a->strings["Remove My Account"] = "Eliminar mi cuenta";
+$a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Esto eliminará por completo su cuenta. Una vez hecho esto no es recuperable.";
+$a->strings["Please enter your password for verification:"] = "Por favor, introduzca su contraseña para la verificación:";
+$a->strings["Applications"] = "Aplicaciones";
+$a->strings["Global Directory"] = "Directorio global";
+$a->strings["Unable to locate original post."] = "No se puede encontrar post original.";
+$a->strings["Empty post discarded."] = "Mensaje vacío descartado.";
+$a->strings["%s commented on your item at %s"] = "%s ha comentado en tu post en %s";
+$a->strings["%s posted on your profile wall at %s"] = "%s ha publicado en tu muro en %s";
+$a->strings["System error. Post not saved."] = "Error del sistema. Mensaje no guardado.";
+$a->strings["This message was sent to you by %s, a member of the Friendika social network."] = "Este mensaje le ha sido enviado por %s, un miembro de la red social Friendika.";
+$a->strings["You may visit them online at"] = "Puede visitarle online en";
+$a->strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Por favor contacte al remitente respondiendo a este mensaje si no desea recibir estos mensajes.";
+$a->strings["%s posted an update."] = "%s ha publicado una actualización.";
+$a->strings["Tag removed"] = "Etiqueta eliminada";
+$a->strings["Remove Item Tag"] = "Eliminar etiqueta del elemento";
+$a->strings["Select a tag to remove: "] = "Seleccione una etiqueta para eliminar:";
+$a->strings["Remove"] = "Eliminar";
+$a->strings["No recipient selected."] = "Ningún destinatario seleccionado";
+$a->strings["[no subject]"] = "[sin asunto]";
+$a->strings["Unable to locate contact information."] = "No se puede encontrar información del contacto.";
+$a->strings["Message sent."] = "Mensaje enviado.";
+$a->strings["Message could not be sent."] = "El mensaje no ha podido ser enviado.";
+$a->strings["Messages"] = "Mensajes";
+$a->strings["Inbox"] = "Entrada";
+$a->strings["Outbox"] = "Enviados";
+$a->strings["New Message"] = "Nuevo mensaje";
+$a->strings["Message deleted."] = "Mensaje eliminado.";
+$a->strings["Conversation removed."] = "Conversación eliminada.";
+$a->strings["Send Private Message"] = "Enviar mensaje privado";
+$a->strings["To:"] = "A:";
+$a->strings["Subject:"] = "Asunto:";
+$a->strings["No messages."] = "No hay mensajes.";
+$a->strings["Delete conversation"] = "Eliminar conversación";
+$a->strings["Message not available."] = "Mensaje no disponibile.";
+$a->strings["Delete message"] = "Borrar mensaje";
+$a->strings["Send Reply"] = "Enviar respuesta";
+$a->strings["Response from remote site was not understood."] = "La respuesta desde el sitio remoto no ha sido entendida.";
+$a->strings["Unexpected response from remote site: "] = "Respuesta inesperada desde el sitio remoto:";
+$a->strings["Confirmation completed successfully."] = "Confirmación completada con éxito.";
+$a->strings["Remote site reported: "] = "El sito remoto informó:";
+$a->strings["Temporary failure. Please wait and try again."] = "Error temporal. Por favor, espere y vuelva a intentarlo.";
+$a->strings["Introduction failed or was revoked."] = "La presentación ha fallado o ha sido anulada.";
+$a->strings["Unable to set contact photo."] = "Imposible establecer la foto del contacto.";
+$a->strings["is now friends with"] = "ahora es amigo de";
+$a->strings["No user record found for '%s' "] = "Ningún usuario encontrado para '%s'";
+$a->strings["Our site encryption key is apparently messed up."] = "Nuestra clave de cifrado del site es aparentemente un lío.";
+$a->strings["Empty site URL was provided or URL could not be decrypted by us."] = "Se ha proporcionado una dirección vacía o no hemos podido descifrarla.";
+$a->strings["Contact record was not found for you on our site."] = "El contacto no se ha encontrado en nuestro sitio.";
+$a->strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "La identificación proporcionada por el sistema es un duplicado de nuestro sistema. Debería funcionar si intenta de nuevo.";
+$a->strings["Unable to set your contact credentials on our system."] = "No se puede establecer sus credenciales de contacto en nuestro sistema.";
+$a->strings["Unable to update your contact profile details on our system"] = "No se puede actualizar los datos de tu perfil de contacto en nuestro sistema";
+$a->strings["Connection accepted at %s"] = "Conexión aceptada en % s";
+$a->strings["Login failed."] = "Accesso fallido.";
+$a->strings["Welcome back "] = "Bienvenido de nuevo";
+$a->strings["%s welcomes %s"] = "%s te da la bienvenida a %s";
+$a->strings["No contacts."] = "Ningún contacto.";
+$a->strings["Group created."] = "Grupo creado.";
+$a->strings["Could not create group."] = "Imposible crear el grupo.";
+$a->strings["Group not found."] = "Grupo no encontrado.";
+$a->strings["Group name changed."] = "El nombre del grupo ha cambiado.";
+$a->strings["Membership list updated."] = "Lista de miembros actualizada.";
+$a->strings["Group removed."] = "Grupo eliminado.";
+$a->strings["Unable to remove group."] = "No se puede eliminar el grupo.";
+$a->strings["Post to Twitter"] = "Publicar en Twitter";
+$a->strings["Twitter Posting Settings"] = "Configuración de publicación en Twitter";
+$a->strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "No se ha encontrado ningún par de claves para Twitter. Póngase en contacto con el administrador del sitio.";
+$a->strings["At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "En esta instancia de Friendika el plugin de Twitter fue habilitado, pero aún no ha vinculado su cuenta a su cuenta de Twitter.Para ello haga clic en el botón abajo para obtener un PIN de Twitter, que tiene que copiar en el cuadro de entrada y enviar el formulario. Solo sus posts <strong>públicos</strong> se publicarán en Twitter.";
+$a->strings["Log in with Twitter"] = "Acceder con Twitter";
+$a->strings["Copy the PIN from Twitter here"] = "Copia el PIN de Twitter aquí";
+$a->strings["Currently connected to: "] = "Actualmente conectado a:";
+$a->strings["If enabled all your <strong>public</strong> postings will be posted to the associated Twitter account as well."] = "Si se habilita, todos sus posts <strong>públicos</ strong> se publicarán también en la cuenta de Twitter asociada.";
+$a->strings["Send public postings to Twitter"] = "Enviar posts públicos a Twitter";
+$a->strings["Clear OAuth configuration"] = "Borrar la configuración de OAuth";
+$a->strings["Post to StatusNet"] = "Publicar en StatusNet";
+$a->strings["StatusNet Posting Settings"] = "Configuración de envío a StatusNet";
+$a->strings["No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation."] = "No se ha encontrado ningún par de claves para StatusNet. Registre su cuenta de Friendika como cliente de escritorio en su cuenta de StatusNet, copie la clave consumer aquí y escriba la dirección de la base API.<br />Antes de registrar su propio par de claves OAuth, pregunte al administrador si ya hay un par de claves para este instalación de Friendika en su instalación StatusNet favorita.";
+$a->strings["OAuth Consumer Key"] = "OAuth Consumer Key";
+$a->strings["OAuth Consumer Secret"] = "OAuth Consumer Secret";
+$a->strings["Base API Path (remember the trailing /)"] = "Dirección de base para la API (recordar el / al final)";
+$a->strings["To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet."] = "Para conectarse a su cuenta de StatusNet haga clic en el botón abajo para obtener un PIN de StatusNet, que tiene que copiar en el cuadro de entrada y enviar el formulario. Solo sus posts <strong>públicos</strong> se publicarán en StatusNet.";
+$a->strings["Log in with StatusNet"] = "Inicia sesión con StatusNet";
+$a->strings["Copy the security code from StatusNet here"] = "Copia el código de seguridad de StatusNet aquí";
+$a->strings["If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well."] = "Si se habilita, todos sus posts <strong>públicos</ strong> se publicarán también en la cuenta de StatusNet asociada.";
+$a->strings["Send public postings to StatusNet"] = "Enviar posts públicos a StatusNet";
+$a->strings["Three Dimensional Tic-Tac-Toe"] = "Tic-Tac-Toe tridimensionale";
+$a->strings["3D Tic-Tac-Toe"] = "3D Tic-Tac-Toe";
+$a->strings["New game"] = "Nueva partida";
+$a->strings["New game with handicap"] = "Nuevo juego con handicap";
+$a->strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "Tic-tac-toe tridimensional es como el juego tradicional, excepto que se juega en varios niveles simultáneamente.";
+$a->strings["In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels."] = "En este caso hay tres niveles. Ganarás por conseguir tres en raya en cualquier nivel, así como arriba, abajo y en diagonal a través de los diferentes niveles.";
+$a->strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "El juego con handicap desactiva la posición central en el nivel medio porque el jugador reclama que este cuadrado tiene a menudo una ventaja injusta.";
+$a->strings["You go first..."] = "Comienza tú...";
+$a->strings["I'm going first this time..."] = "Yo voy primero esta vez...";
+$a->strings["You won!"] = "¡Has ganado!";
+$a->strings["\"Cat\" game!"] = "¡Empate!";
+$a->strings["I won!"] = "¡He ganado!";
+$a->strings["Select files to upload: "] = "Seleccione los archivos a subir: ";
+$a->strings["Use the following controls only if the Java uploader [above] fails to launch."] = "Usa el seguente controllo solo se el el caricatore Java (qui sopra) no parte.";
+$a->strings["Facebook disabled"] = "Facebook no habilitado";
+$a->strings["Facebook API key is missing."] = "Falta la Clave API de Facebook.";
+$a->strings["Facebook Connect"] = "Facebook Connect";
+$a->strings["Install Facebook post connector"] = "Instalar el conector con Facebook";
+$a->strings["Remove Facebook post connector"] = "DesInstalar el conector con Facebook";
+$a->strings["Post to Facebook by default"] = "Publicar en Facebook de forma predeterminada";
+$a->strings["Facebook"] = "Facebook";
+$a->strings["Facebook Connector Settings"] = "Configuración de conexión a Facebook";
+$a->strings["Post to Facebook"] = "Publicar en Facebook";
+$a->strings["Image: "] = "Imagen: ";
+$a->strings["Randplace Settings"] = "Configuración de Randplace";
+$a->strings["Enable Randplace Plugin"] = "Activar el plugin Randplace";
+$a->strings["Upload a file"] = "Subir un archivo";
+$a->strings["Drop files here to upload"] = "Soltar los archivos aquí para subir";
+$a->strings["Failed"] = "Falló";
+$a->strings["No files were uploaded."] = "No hay archivos subidos.";
+$a->strings["Uploaded file is empty"] = "El archivo subido está vacío";
+$a->strings["Uploaded file is too large"] = "El archivo subido es demasiado grande";
+$a->strings["File has an invalid extension, it should be one of "] = "El archivo tiene una extensión no válida, debería ser una de ";
+$a->strings["Upload was cancelled, or server error encountered"] = "La subida ha sido cancelada, o se encontró un error del servidor";
+$a->strings["Unknown | Not categorised"] = "Desconocido | No clasificado";
+$a->strings["Block immediately"] = "Bloquear inmediatamente";
+$a->strings["Shady, spammer, self-marketer"] = "Sospechoso, spammer, auto-publicidad";
+$a->strings["Known to me, but no opinion"] = "Le conozco, sin opinión";
+$a->strings["OK, probably harmless"] = "OK, probablemente inofensivo";
+$a->strings["Reputable, has my trust"] = "Buena reputación, tiene mi confianza";
+$a->strings["Frequently"] = "Frequentemente";
+$a->strings["Hourly"] = "Cada hora";
+$a->strings["Twice daily"] = "Dos veces al día";
+$a->strings["Daily"] = "Diariamente";
+$a->strings["Weekly"] = "Semanalmente";
+$a->strings["Monthly"] = "Mensualmente";
+$a->strings["Male"] = "Male";
+$a->strings["Female"] = "Mujer";
+$a->strings["Currently Male"] = "Actualmente Hombre";
+$a->strings["Currently Female"] = "Actualmente Mujer";
+$a->strings["Mostly Male"] = "Mayormente Hombre";
+$a->strings["Mostly Female"] = "Mayormente Mujer";
+$a->strings["Transgender"] = "Transgénero";
+$a->strings["Intersex"] = "Bisexual";
+$a->strings["Transsexual"] = "Transexual";
+$a->strings["Hermaphrodite"] = "Hermafrodita";
+$a->strings["Neuter"] = "Neutro";
+$a->strings["Non-specific"] = "No-específico";
+$a->strings["Other"] = "Otro";
+$a->strings["Undecided"] = "Indeciso";
+$a->strings["Males"] = "Hombres";
+$a->strings["Females"] = "Mujeres";
+$a->strings["Gay"] = "Gay";
+$a->strings["Lesbian"] = "Lesbiana";
+$a->strings["No Preference"] = "Sin preferencias";
+$a->strings["Bisexual"] = "Bisexual";
+$a->strings["Autosexual"] = "Autosexual";
+$a->strings["Abstinent"] = "Abstinente";
+$a->strings["Virgin"] = "Virgen";
+$a->strings["Deviant"] = "Desviado";
+$a->strings["Fetish"] = "Fetish";
+$a->strings["Oodles"] = "Montones";
+$a->strings["Nonsexual"] = "No sexual";
+$a->strings["Single"] = "Soltero";
+$a->strings["Lonely"] = "Solitario";
+$a->strings["Available"] = "Disponible";
+$a->strings["Unavailable"] = "No disponible";
+$a->strings["Dating"] = "de citas";
+$a->strings["Unfaithful"] = "Infiel";
+$a->strings["Sex Addict"] = "Adicto al sexo";
+$a->strings["Friends"] = "Amigos";
+$a->strings["Friends/Benefits"] = "Amigos con beneficios";
+$a->strings["Casual"] = "Casual";
+$a->strings["Engaged"] = "Comprometido/a";
+$a->strings["Married"] = "Casado/a";
+$a->strings["Partners"] = "Socios";
+$a->strings["Cohabiting"] = "Cohabitando";
+$a->strings["Happy"] = "Feliz";
+$a->strings["Not Looking"] = "No estoy buscando";
+$a->strings["Swinger"] = "Scambista";
+$a->strings["Betrayed"] = "Traicionado/a";
+$a->strings["Separated"] = "Separado/a";
+$a->strings["Unstable"] = "Inestable";
+$a->strings["Divorced"] = "Divorciado/a";
+$a->strings["Widowed"] = "Viudo/a";
+$a->strings["Uncertain"] = "Incierto";
+$a->strings["Complicated"] = "Complicado";
+$a->strings["Don't care"] = "No importa";
+$a->strings["Ask me"] = "Pregúntame";
+$a->strings["Visible To:"] = "Visible a:";
+$a->strings["Groups"] = "Grupos";
+$a->strings["Except For:"] = "A excepción de:";
+$a->strings["Logged out."] = "Sesión terminada";
+$a->strings["Miscellaneous"] = "Varios";
+$a->strings["less than a second ago"] = "hace menos de un segundo";
+$a->strings["year"] = "año";
+$a->strings["years"] = "años";
+$a->strings["month"] = "mes";
+$a->strings["months"] = "meses";
+$a->strings["week"] = "semana";
+$a->strings["weeks"] = "semanas";
+$a->strings["day"] = "día";
+$a->strings["days"] = "días";
+$a->strings["hour"] = "hora";
+$a->strings["hours"] = "horas";
+$a->strings["minute"] = "minuto";
+$a->strings["minutes"] = "minutos";
+$a->strings["second"] = "segundo";
+$a->strings["seconds"] = "segundos";
+$a->strings[" ago"] = " hace";
+$a->strings["Home"] = "Home";
+$a->strings["Apps"] = "Aplicaciones";
+$a->strings["Directory"] = "Directorio";
+$a->strings["Network"] = "Red";
+$a->strings["Notifications"] = "Notificaciones";
+$a->strings["Manage"] = "Administrar";
+$a->strings["Settings"] = "Configuración";
+$a->strings["Profiles"] = "Perfiles";
+$a->strings["Birthday:"] = "Fecha de nacimiento:";
+$a->strings["You have a new follower at "] = "Tienes un nuevo seguidor en ";
+$a->strings["Create a new group"] = "Crear un nuevo grupo";
+$a->strings["Everybody"] = "Todo el mundo";
+$a->strings["Embedding disabled"] = "Embedding desabilitado";
+$a->strings["Birthday Reminders"] = "Recordatorios de cumpleaños";
+$a->strings["Insert Vorbis [.ogg] video"] = "Insertar video Vorbis [.ogg]";
+$a->strings["Insert Vorbis [.ogg] audio"] = "Insertar audio Vorbis [.ogg]";
+$a->strings["Edit"] = "Editar";
+$a->strings["No results."] = "No hay resultados.";
+$a->strings["<< Prev"] = "<< Ant";
+$a->strings["Next >>"] = "Sig >>";
+$a->strings["Item not found"] = "Elemento no encontrado";
+$a->strings["Edit post"] = "Editar mensaje";
+$a->strings["Cannot locate DNS info for database server '%s'"] = "No se puede encontrar información de DNS para el servidor de base de datos '%s'";
+$a->strings["%d Contact"] = array(
+ 0 => "%d Contacto",
+ 1 => "%d Contactos",
+);
diff --git a/view/es/wall_received_eml.tpl b/view/es/wall_received_eml.tpl
new file mode 100644
index 000000000..4cd253c72
--- /dev/null
+++ b/view/es/wall_received_eml.tpl
@@ -0,0 +1,18 @@
+
+Estimado/a $username,
+
+ '$from' ha escrito algo en el muro de tu perfil.
+
+-----
+$body
+-----
+
+Accede a $siteurl para ver o borrar el elemento:
+
+$display
+
+
+ $sitename
+
+
+
diff --git a/view/fr/contact_edit.tpl b/view/fr/contact_edit.tpl
deleted file mode 100644
index d74ac54f3..000000000
--- a/view/fr/contact_edit.tpl
+++ /dev/null
@@ -1,83 +0,0 @@
-
-<h2>$header</h2>
-
-<div id="contact-edit-banner-name">$name</div>
-
-<form action="contacts/$contact_id" method="post" >
-<input type="hidden" name="contact_id" value="$contact_id">
-
-<div id="contact-edit-wrapper" >
-
- <div id="contact-edit-photo-wrapper" >
- <img id="contact-edit-direction-icon" src="$dir_icon" alt="$alt_text" title="$alt_text" />
- <div id="contact-edit-photo" >
- <a href="$url" title="$visit" /><img src="$photo" $sparkle alt="$name" /></a>
- </div>
- <div id="contact-edit-photo-end" ></div>
- </div>
- <div id="contact-edit-nav-wrapper" >
-
- <div id="contact-edit-links" >
- <a href="contacts/$contact_id/block" id="contact-edit-block-link" ><img src="images/b_block.gif" alt="$blockunblock" title="$block_text"/></a>
- <a href="contacts/$contact_id/ignore" id="contact-edit-ignore-link" ><img src="images/no.gif" alt="$ignorecont" title="$ignore_text"/></a>
- </div>
- <div id="contact-drop-links" >
- <a href="contacts/$contact_id/drop" id="contact-edit-drop-link" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" /></a>
- </div>
- <div id="contact-edit-nav-end"></div>
-
-
-
- <div id="contact-edit-poll-wrapper">
- <div id="contact-edit-last-update-text">$lastupdtext<span id="contact-edit-last-updated">$last_update</span</div>
- <div id="contact-edit-poll-text">$updpub</div>
- $poll_interval
- <div id="contact-edit-update-now"><a href="contacts/$contact_id/update">$udnow</a></div>
- </div>
- </div>
- <div id="contact-edit-end" ></div>
-
-$insecure
-$blocked
-$ignored
-
-
-<div id="contact-edit-info-wrapper">
-<h4>Informations / Notes du contact</h4>
-<textarea id="contact-edit-info" rows="10" cols="72" name="info" >$info</textarea>
-</div>
-<div id="contact-edit-info-end"></div>
-
-<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
-
-<div id="contact-edit-profile-select-text">
-<h4>Visibilité du profil</h4>
-<p>Merci de choisir le profil que vous souhaitez afficher à $name lorsqu'il consulte votre page de manière sécurisée.
-</p>
-</div>
-$profile_select
-<div id="contact-edit-profile-select-end"></div>
-
-<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
-
-
-<div id="contact-edit-rating-wrapper">
-<h4>Réputation</h4>
-<p>
-De temps à autre, vos amis peuvent vouloir en savoir plus sur la légitimité de cette personne "en ligne". Vous pouvez les aider à décider s'ils veulent ou non interagir avec cette personne en indiquant une "réputation".
-</p>
-<div id="contact-edit-rating-select-wrapper">
-$rating
-</div>
-<div id="contact-edit-rating-explain">
-<p>
-Merci de prendre un moment pour développer si vous pensez que cela peut être utile à d'autres.
-</p>
-<textarea id="contact-edit-rating-text" name="reason" rows="3" cols="64" >$reason</textarea>
-</div>
-</div>
-$groups
-
-<input class="contact-edit-submit" type="submit" name="submit" value="Sauver" />
-</form>
-</div>
diff --git a/view/fr/cropbody.tpl b/view/fr/cropbody.tpl
deleted file mode 100644
index 6c509ce1d..000000000
--- a/view/fr/cropbody.tpl
+++ /dev/null
@@ -1,57 +0,0 @@
-<h1>Crop Image</h1>
-<p id="cropimage-desc">
-Merci d'ajuster le cadre de l'image pour un affichage optimal.
-</p>
-<div id="cropimage-wrapper">
-<img src="$image_url" id="croppa" class="imgCrop" alt="" />
-</div>
-<div id="cropimage-preview-wrapper" >
-<div id="previewWrap" ></div>
-</div>
-
-<script type="text/javascript" language="javascript">
-
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- Event.observe( window, 'load', function() {
- new Cropper.ImgWithPreview(
- 'croppa',
- {
- previewWrap: 'previewWrap',
- minWidth: 175,
- minHeight: 175,
- maxWidth: 640,
- maxHeight: 640,
- ratioDim: { x: 100, y:100 },
- displayOnInit: true,
- onEndCrop: onEndCrop
- }
- );
- }
- );
-
-</script>
-
-<form action="profile_photo/$resource" id="crop-image-form" method="post" />
-
-<input type="hidden" name="imagename" value="$hash" />
-<input type="hidden" name="cropfinal" value="1" />
-<input type="hidden" name="xstart" id="x1" />
-<input type="hidden" name="ystart" id="y1" />
-<input type="hidden" name="xfinal" id="x2" />
-<input type="hidden" name="yfinal" id="y2" />
-<input type="hidden" name="height" id="height" />
-<input type="hidden" name="width" id="width" />
-
-<div id="crop-image-submit-wrapper" >
-<input type="submit" name="submit" value="Edition terminée" />
-</div>
-
-</form>
diff --git a/view/fr/dfrn_req_confirm.tpl b/view/fr/dfrn_req_confirm.tpl
deleted file mode 100644
index 82c31ca70..000000000
--- a/view/fr/dfrn_req_confirm.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-<p id="dfrn-request-homecoming" >
-Bienvenue chez vous, $username.
-<br />
-Merci de confirmer votre volonté d'être présenté à $dfrn_url.
-
-</p>
-<form id="dfrn-request-homecoming-form" action="dfrn_request/$nickname" method="post">
-<input type="hidden" name="dfrn_url" value="$dfrn_url" />
-<input type="hidden" name="confirm_key" value="$confirm_key" />
-<input type="hidden" name="localconfirm" value="1" />
-$aes_allow
-
-<div id="dfrn-request-homecoming-submit-wrapper" >
-<input id="dfrn-request-homecoming-submit" type="submit" name="submit" value="Je confirme" />
-</div>
-</form>
diff --git a/view/fr/directory_header.tpl b/view/fr/directory_header.tpl
deleted file mode 100644
index cb9276e46..000000000
--- a/view/fr/directory_header.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-<h1>Annuaire local</h1>
-
-$globaldir
-
-$finding
-
-<div id="directory-search-wrapper">
-<form id="directory-search-form" action="directory" method="get" >
-<input type="text" name="search" id="directory-search" class="search-input" onfocus="this.select();" value="$search" />
-<input type="submit" name="submit" id="directory-search-submit" value="Chercher" />
-</form>
-</div>
-<div id="directory-search-end"></div>
-
diff --git a/view/fr/group_edit.tpl b/view/fr/group_edit.tpl
deleted file mode 100644
index 75863eb6d..000000000
--- a/view/fr/group_edit.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<h2>Editeur de groupe</h2>
-
-
-<div id="group-edit-wrapper" >
-<form action="group/$gid" id="group-edit-form" method="post" >
-<div id="group-edit-name-wrapper" >
-<label id="group-edit-name-label" for="group-edit-name" >Nom du groupe: </label>
-<input type="text" id="group-edit-name" name="groupname" value="$name" />
-</div>
-<div id="group-edit-name-end"></div>
-<div id="group-edit-select-wrapper" >
-<label id="group_members_select_label" for="group_members_select" >Membres:</label>
-$selector
-
-</div>
-$drop
-<div id="group_members_select_end"></div>
-<div id="group-edit-submit-wrapper" >
-<input type="submit" name="submit" value="Appliquer" >
-</div>
-
-<div id="group-edit-select-end" ></div>
-</form>
-</div>
diff --git a/view/fr/group_new.tpl b/view/fr/group_new.tpl
deleted file mode 100644
index 205404c56..000000000
--- a/view/fr/group_new.tpl
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-<div id="group-new-wrapper" >
-<form action="group/new" method="post">
-
-<div id="group-new-text">
-<p>
-Créez un groupe de contacts/amis.
-
-<div id="group-new-input-wrapper">
-<label id="group-new-label" for="group-new-name" >Nom du groupe: </label>
-<input name="groupname" id="group-new-name" />
-</div>
-<div id="group-new-input-end" ></div>
-
-<div id="group-new-submit-wrapper" >
-<input type="submit" name="submit" value="Appliquer" />
-</form>
-</div>
-<div id="group-new-end"></div>
-
-
diff --git a/view/fr/head.tpl b/view/fr/head.tpl
deleted file mode 100644
index 4636b542c..000000000
--- a/view/fr/head.tpl
+++ /dev/null
@@ -1,32 +0,0 @@
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<base href="$baseurl" />
-<meta name="generator" content="$generator" />
-<link rel="stylesheet" type="text/css" href="$stylesheet" media="all" />
-<link rel="shortcut icon" href="$baseurl/images/friendika-32.png" />
-
-<!--[if IE]>
-<script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
-<![endif]-->
-<script type="text/javascript" src="$baseurl/include/jquery.js" ></script>
-<script type="text/javascript" src="$baseurl/include/main.js" ></script>
-<script>
-
- function confirmDelete() { return confirm("Effacer cet élément?"); }
- function commentOpen(obj,id) {
- if(obj.value == 'Comment') {
- obj.value = '';
- obj.className = "comment-edit-text-full";
- openMenu("comment-edit-submit-wrapper-" + id);
- }
- }
- function commentClose(obj,id) {
- if(obj.value == '') {
- obj.value = 'Comment';
- obj.className="comment-edit-text-empty";
- closeMenu("comment-edit-submit-wrapper-" + id);
- }
- }
-
-</script>
-
-
diff --git a/view/fr/htconfig.tpl b/view/fr/htconfig.tpl
index d31d5a39f..c65114a68 100644
--- a/view/fr/htconfig.tpl
+++ b/view/fr/htconfig.tpl
@@ -37,7 +37,7 @@ $a->config['admin_email'] = '';
// Maximum size of an imported message, 0 is unlimited
-$a->config['max_import_size'] = 10000;
+$a->config['max_import_size'] = 200000;
// maximum size of uploaded photos
diff --git a/view/fr/insecure_net.tpl b/view/fr/insecure_net.tpl
deleted file mode 100644
index 4f413b14f..000000000
--- a/view/fr/insecure_net.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<div id="profile-edit-insecure">
-<p>
-Le réseau social auquel $name appartient est un réseau ouvert ne disposant que d'un contrôle limité sur les éléments de la vie privée.
-Gardez ceci à l'esprit, en fonction de vos besoins de discrétion.
-</p>
-</div>
diff --git a/view/fr/install_db.tpl b/view/fr/install_db.tpl
deleted file mode 100644
index c413689c2..000000000
--- a/view/fr/install_db.tpl
+++ /dev/null
@@ -1,40 +0,0 @@
-
-<h3>Friendika Social Network</h3>
-<h3>Installation</h3>
-
-<p>
-In order to install Friendika we need to know how to contact your database. Please contact your hosting provider or site administrator if you have questions about these settings. The database you specify below must already exist. If it does not, please create it before continuing.
-</p>
-
-<form id="install-form" action="$baseurl/install" method="post">
-
-<input type="hidden" name="phpath" value="$phpath" />
-
-<label for="install-dbhost" id="install-dbhost-label">Database Server Name</label>
-<input type="text" name="dbhost" id="install-dbhost" value="$dbhost" />
-<div id="install-dbhost-end"></div>
-
-<label for="install-dbuser" id="install-dbuser-label">Database Login Name</label>
-<input type="text" name="dbuser" id="install-dbuser" value="$dbuser" />
-<div id="install-dbuser-end"></div>
-
-<label for="install-dbpass" id="install-dbpass-label">Database Login Password</label>
-<input type="password" name="dbpass" id="install-dbpass" value="$dbpass" />
-<div id="install-dbpass-end"></div>
-
-<label for="install-dbdata" id="install-dbdata-label">Database Name</label>
-<input type="text" name="dbdata" id="install-dbdata" value="$dbdata" />
-<div id="install-dbdata-end"></div>
-
-<div id="install-tz-desc">
-Please select a default timezone for your website
-</div>
-
-$tzselect
-
-<div id="install-tz-end" ></div>
-<input id="install-submit" type="submit" name="submit" value="$submit" />
-
-</form>
-<div id="install-end" ></div>
-
diff --git a/view/fr/intro_complete_eml.tpl b/view/fr/intro_complete_eml.tpl
index a60745ec5..b8a7a3457 100644
--- a/view/fr/intro_complete_eml.tpl
+++ b/view/fr/intro_complete_eml.tpl
@@ -1,22 +1,22 @@
-Dear $username,
+Chèr(e) $username,
- '$fn' at '$dfrn_url' has accepted
-your connection request at '$sitename'.
+ '$fn' du site '$dfrn_url' a accepté votre
+demande de mise en relation sur '$sitename'.
- '$fn' has chosen to accept you a "fan", which restricts
-some forms of communication - such as private messaging and some profile
-interactions. If this is a celebrity or community page, these settings were
-applied automatically.
+ '$fn' a décidé de vous accepter comme "fan", ce qui restreint
+certains de vos moyens de communication - tels que les messages privés et
+certaines interactions avec son profil. S'il s'agit de la page d'une
+célébrité et/ou communauté, ces réglages ont été définis automatiquement.
- '$fn' may choose to extend this into a two-way or more permissive
-relationship in the future.
+ '$fn' pourra choisir d'étendre votre relation à quelque-chose de
+plus permissif dans l'avenir.
- You will start receiving public status updates from '$fn',
-which will appear on your 'Network' page at
+ Vous allez commencer à recevoir les mises-à-jour publiques du
+statut de '$fn', lesquelles apparaîtront sur votre page 'Réseau' sur
$siteurl
-Sincerely,
+Sincèrement votre,
- $sitename Administrator
+ l'administrateur de $sitename
diff --git a/view/fr/intros-top.tpl b/view/fr/intros-top.tpl
deleted file mode 100644
index d8b7394a4..000000000
--- a/view/fr/intros-top.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<h1>Pending Friend/Connect Notifications</h1>
-
-<div id="notification-show-hide-wrapper" >
-<a href="$hide_url" id="notification-show-hide-link">$hide_text</a>
-</div>
-
-
diff --git a/view/fr/jot-header.tpl b/view/fr/jot-header.tpl
deleted file mode 100644
index ff7e543a5..000000000
--- a/view/fr/jot-header.tpl
+++ /dev/null
@@ -1,141 +0,0 @@
-
-<script language="javascript" type="text/javascript" src="$baseurl/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
-<script language="javascript" type="text/javascript">
-
-var editor;
-
-tinyMCE.init({
- theme : "advanced",
- mode : "specific_textareas",
- editor_selector: /(profile-jot-text|prvmail-text)/,
- plugins : "bbcode,paste",
- theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code",
- theme_advanced_buttons2 : "",
- theme_advanced_buttons3 : "",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "center",
- theme_advanced_blockformats : "blockquote,code",
- paste_text_sticky : true,
- entity_encoding : "raw",
- add_unload_trigger : false,
- remove_linebreaks : false,
- force_p_newlines : false,
- force_br_newlines : true,
- forced_root_block : '',
- convert_urls: false,
- content_css: "$baseurl/view/custom_tinymce.css",
- //Character count
- theme_advanced_path : false,
- setup : function(ed) {
- ed.onKeyUp.add(function(ed, e) {
- var txt = tinyMCE.activeEditor.getContent();
- var text = txt.length;
- if(txt.length <= 140) {
- $('#character-counter').removeClass('red');
- $('#character-counter').removeClass('orange');
- $('#character-counter').addClass('grey');
- }
- if((txt.length > 140) && (txt .length <= 420)) {
- $('#character-counter').removeClass('grey');
- $('#character-counter').removeClass('red');
- $('#character-counter').addClass('orange');
- }
- if(txt.length > 420) {
- $('#character-counter').removeClass('grey');
- $('#character-counter').removeClass('orange');
- $('#character-counter').addClass('red');
- }
- $('#character-counter').text(text);
- });
-
- ed.onInit.add(function(ed) {
- ed.pasteAsPlainText = true;
- });
-
- }
-});
-
-</script>
-<script type="text/javascript" src="include/ajaxupload.js" ></script>
-<script>
- $(document).ready(function() {
- var uploader = new window.AjaxUpload(
- 'wall-image-upload',
- { action: 'wall_upload/$nickname',
- name: 'userfile',
- onSubmit: function(file,ext) { $('#profile-rotator').show(); },
- onComplete: function(file,response) {
- tinyMCE.execCommand('mceInsertRawHTML',false,response);
- $('#profile-rotator').hide();
- }
- }
- );
- $('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
- var selstr;
- $('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
- selstr = $(this).text();
- $('#profile-jot-perms img').attr('src', 'images/lock_icon.gif');
- $('.profile-jot-net input').attr('disabled', 'disabled');
- });
- if(selstr == null) {
- $('#profile-jot-perms img').attr('src', 'images/unlock_icon.gif');
- $('.profile-jot-net input').attr('disabled', false);
- }
- }).trigger('change');
-
- });
-
- function jotGetLink() {
- reply = prompt("Please enter a link URL:");
- if(reply && reply.length) {
- $('#profile-rotator').show();
- $.get('parse_url?url=' + reply, function(data) {
- tinyMCE.execCommand('mceInsertRawHTML',false,data);
- $('#profile-rotator').hide();
- });
- }
- }
-
- function jotGetVideo() {
- reply = prompt("Please enter a YouTube link:");
- if(reply && reply.length) {
- tinyMCE.execCommand('mceInsertRawHTML',false,'[youtube]' + reply + '[/youtube]');
- }
- }
-
- function jotGetLocation() {
- reply = prompt("Where are you right now?", $('#jot-location').val());
- if(reply && reply.length) {
- $('#jot-location').val(reply);
- }
- }
-
-
- function linkdropper(event) {
- var linkFound = event.dataTransfer.types.contains("text/uri-list");
- if(linkFound)
- event.preventDefault();
- }
-
- function linkdrop(event) {
- var reply = event.dataTransfer.getData("text/uri-list");
- event.target.textContent = reply;
- event.preventDefault();
- if(reply && reply.length) {
- $('#profile-rotator').show();
- $.get('parse_url?url=' + reply, function(data) {
- tinyMCE.execCommand('mceInsertRawHTML',false,data);
- $('#profile-rotator').hide();
- });
- }
- }
-
- function jotClearLocation() {
- $('#jot-coord').val('');
- $('#profile-nolocation-wrapper').hide();
- }
-
- $geotag
-
-</script>
-
diff --git a/view/fr/lostpass_eml.tpl b/view/fr/lostpass_eml.tpl
index c350236a4..168e9a5e2 100644
--- a/view/fr/lostpass_eml.tpl
+++ b/view/fr/lostpass_eml.tpl
@@ -1,32 +1,33 @@
-Dear $username,
- A request was recently received at $sitename to reset your account
-password. In order to confirm this request, please select the verification link
-below or paste it into your web browser address bar.
+Chèr(e) $username,
+ Nous avons récemment reçu, chez $sitename, un demande de remise
+à zéro du mot de passe protégeant votre compte. Pour confirmer cette
+demande, merci de cliquer sur le lien de vérification suivant, ou de le
+coller dans la barre d'adresse de votre navigateur web.
-If you did NOT request this change, please DO NOT follow the link
-provided and ignore and/or delete this email.
+Si vous n'êtes PAS à l'origine de cette demande, merci de NE PAS suivre
+le lien en question, et d'ignorer/supprimer ce courriel.
-Your password will not be changed unless we can verify that you
-issued this request.
+Votre mot de passe ne sera réinitialisé qu'une fois que nous aurons pu
+nous assurer que vous êtes bien à l'origine de cette demande.
-Follow this link to verify your identity:
+Merci de suivre le lien suivant pour confirmer votre identité:
$reset_link
-You will then receive a follow-up message containing the new password.
+Vous recevrez en retour un message avec votre nouveau mot de passe.
-You may change that password from your account settings page after logging in.
+Vous pourrez ensuite changer ce mot de passe, après connexion, dans la
+page des réglages du compte.
-The login details are as follows:
+Les informations du compte concerné sont:
-Site Location: $siteurl
-Login Name: $email
+Site: $siteurl
+Pseudo/Courriel: $email
-
-Sincerely,
- $sitename Administrator
+Sincèrement votre,
+ l'administrateur de $sitename
diff --git a/view/fr/messages.po b/view/fr/messages.po
new file mode 100644
index 000000000..e1dc4b867
--- /dev/null
+++ b/view/fr/messages.po
@@ -0,0 +1,4049 @@
+# FRIENDIKA Distributed Social Network
+# Copyright (C) 2010, 2011 Mike Macgirvin
+# This file is distributed under the same license as the Friendika package.
+# Mike Macgirvin, 2010
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 2.1.947\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-04-13 07:15+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n>1;\n"
+
+#: ../../include/auth.php:27
+msgid "Logged out."
+msgstr "Déconnecté."
+
+#: ../../include/auth.php:105 ../../include/auth.php:130
+#: ../../include/auth.php:183 ../../mod/openid.php:62 ../../mod/openid.php:109
+msgid "Login failed."
+msgstr "Échec de connexion."
+
+#: ../../include/auth.php:194 ../../mod/openid.php:73
+msgid "Welcome back "
+msgstr "Bienvenue à nouveau, "
+
+#: ../../include/Photo.php:225 ../../include/Photo.php:232
+#: ../../include/Photo.php:239 ../../include/items.php:982
+#: ../../include/items.php:985 ../../include/items.php:988
+#: ../../mod/photos.php:34 ../../mod/photos.php:106 ../../mod/photos.php:781
+#: ../../mod/photos.php:850 ../../mod/photos.php:865 ../../mod/photos.php:1233
+#: ../../mod/photos.php:1244 ../../include/items.php:1028
+#: ../../include/items.php:1031 ../../include/items.php:1034
+#: ../../mod/photos.php:1235 ../../mod/photos.php:1246
+#: ../../include/items.php:1026 ../../include/items.php:1029
+#: ../../include/items.php:1032 ../../mod/photos.php:785
+#: ../../mod/photos.php:854 ../../mod/photos.php:869 ../../mod/photos.php:1238
+#: ../../mod/photos.php:1249
+msgid "Contact Photos"
+msgstr "Photos du contact"
+
+#: ../../include/acl_selectors.php:132
+msgid "Visible To:"
+msgstr "Visible par:"
+
+#: ../../include/acl_selectors.php:136 ../../include/acl_selectors.php:151
+msgid "Groups"
+msgstr "Groupes"
+
+#: ../../include/acl_selectors.php:140 ../../include/acl_selectors.php:155
+#: ../../include/nav.php:111 ../../mod/contacts.php:306 ../../boot.php:2022
+#: ../../mod/contacts.php:311 ../../include/nav.php:112
+#: ../../mod/contacts.php:319 ../../include/nav.php:118
+msgid "Contacts"
+msgstr "Contacts"
+
+#: ../../include/acl_selectors.php:147
+msgid "Except For:"
+msgstr "Sauf pour:"
+
+#: ../../include/profile_selectors.php:6
+msgid "Male"
+msgstr "Masculin"
+
+#: ../../include/profile_selectors.php:6
+msgid "Female"
+msgstr "Féminin"
+
+#: ../../include/profile_selectors.php:6
+msgid "Currently Male"
+msgstr "Actuellement masculin"
+
+#: ../../include/profile_selectors.php:6
+msgid "Currently Female"
+msgstr "Actuellement féminin"
+
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Male"
+msgstr "Principalement masculin"
+
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Female"
+msgstr "Principalement féminin"
+
+#: ../../include/profile_selectors.php:6
+msgid "Transgender"
+msgstr "Transgenre"
+
+#: ../../include/profile_selectors.php:6
+msgid "Intersex"
+msgstr "Inter-sexe"
+
+#: ../../include/profile_selectors.php:6
+msgid "Transsexual"
+msgstr "Transsexuel"
+
+#: ../../include/profile_selectors.php:6
+msgid "Hermaphrodite"
+msgstr "Hermaphrodite"
+
+#: ../../include/profile_selectors.php:6
+msgid "Neuter"
+msgstr "Neutre"
+
+#: ../../include/profile_selectors.php:6
+msgid "Non-specific"
+msgstr "Non-spécifique"
+
+#: ../../include/profile_selectors.php:6
+msgid "Other"
+msgstr "Autre"
+
+#: ../../include/profile_selectors.php:6
+msgid "Undecided"
+msgstr "Indécis"
+
+#: ../../include/profile_selectors.php:19
+msgid "Males"
+msgstr "Hommes"
+
+#: ../../include/profile_selectors.php:19
+msgid "Females"
+msgstr "Femmes"
+
+#: ../../include/profile_selectors.php:19
+msgid "Gay"
+msgstr "Gay"
+
+#: ../../include/profile_selectors.php:19
+msgid "Lesbian"
+msgstr "Lesbienne"
+
+#: ../../include/profile_selectors.php:19
+msgid "No Preference"
+msgstr "Sans préférence"
+
+#: ../../include/profile_selectors.php:19
+msgid "Bisexual"
+msgstr "Bisexuel"
+
+#: ../../include/profile_selectors.php:19
+msgid "Autosexual"
+msgstr "Auto-sexuel"
+
+#: ../../include/profile_selectors.php:19
+msgid "Abstinent"
+msgstr "Abstinent"
+
+#: ../../include/profile_selectors.php:19
+msgid "Virgin"
+msgstr "Vierge"
+
+#: ../../include/profile_selectors.php:19
+msgid "Deviant"
+msgstr "Déviant"
+
+#: ../../include/profile_selectors.php:19
+msgid "Fetish"
+msgstr "Fétichiste"
+
+#: ../../include/profile_selectors.php:19
+msgid "Oodles"
+msgstr "Oodles"
+
+#: ../../include/profile_selectors.php:19
+msgid "Nonsexual"
+msgstr "Non-sexuel"
+
+#: ../../include/profile_selectors.php:33
+msgid "Single"
+msgstr "Célibataire"
+
+#: ../../include/profile_selectors.php:33
+msgid "Lonely"
+msgstr "Esseulé"
+
+#: ../../include/profile_selectors.php:33
+msgid "Available"
+msgstr "Disponible"
+
+#: ../../include/profile_selectors.php:33
+msgid "Unavailable"
+msgstr "Indisponible"
+
+#: ../../include/profile_selectors.php:33
+msgid "Dating"
+msgstr "Dans une relation"
+
+#: ../../include/profile_selectors.php:33
+msgid "Unfaithful"
+msgstr "Infidèle"
+
+#: ../../include/profile_selectors.php:33
+msgid "Sex Addict"
+msgstr "Accro au sexe"
+
+#: ../../include/profile_selectors.php:33
+msgid "Friends"
+msgstr "Amis"
+
+#: ../../include/profile_selectors.php:33
+msgid "Friends/Benefits"
+msgstr "Amis par intérêt"
+
+#: ../../include/profile_selectors.php:33
+msgid "Casual"
+msgstr "Casual"
+
+#: ../../include/profile_selectors.php:33
+msgid "Engaged"
+msgstr "Fiancé"
+
+#: ../../include/profile_selectors.php:33
+msgid "Married"
+msgstr "Marié"
+
+#: ../../include/profile_selectors.php:33
+msgid "Partners"
+msgstr "Partenaire"
+
+#: ../../include/profile_selectors.php:33
+msgid "Cohabiting"
+msgstr "En cohabitation"
+
+#: ../../include/profile_selectors.php:33
+msgid "Happy"
+msgstr "Heureux"
+
+#: ../../include/profile_selectors.php:33
+msgid "Not Looking"
+msgstr "Sans recherche"
+
+#: ../../include/profile_selectors.php:33
+msgid "Swinger"
+msgstr "Échangiste"
+
+#: ../../include/profile_selectors.php:33
+msgid "Betrayed"
+msgstr "Trahi(e)"
+
+#: ../../include/profile_selectors.php:33
+msgid "Separated"
+msgstr "Séparé"
+
+#: ../../include/profile_selectors.php:33
+msgid "Unstable"
+msgstr "Instable"
+
+#: ../../include/profile_selectors.php:33
+msgid "Divorced"
+msgstr "Divorcé"
+
+#: ../../include/profile_selectors.php:33
+msgid "Widowed"
+msgstr "Veuf/Veuve"
+
+#: ../../include/profile_selectors.php:33
+msgid "Uncertain"
+msgstr "Incertain"
+
+#: ../../include/profile_selectors.php:33
+msgid "Complicated"
+msgstr "Compliqué"
+
+#: ../../include/profile_selectors.php:33
+msgid "Don't care"
+msgstr "S'en désintéresse"
+
+#: ../../include/profile_selectors.php:33
+msgid "Ask me"
+msgstr "Me demander"
+
+#: ../../include/contact_selectors.php:32
+msgid "Unknown | Not categorised"
+msgstr "Inconnu | Non-classé"
+
+#: ../../include/contact_selectors.php:33
+msgid "Block immediately"
+msgstr "Bloquer immédiatement"
+
+#: ../../include/contact_selectors.php:34
+msgid "Shady, spammer, self-marketer"
+msgstr "Douteux, spammeur, accro à l'auto-promotion"
+
+#: ../../include/contact_selectors.php:35
+msgid "Known to me, but no opinion"
+msgstr "Connu de moi, mais sans opinion"
+
+#: ../../include/contact_selectors.php:36
+msgid "OK, probably harmless"
+msgstr "OK, probablement inoffensif"
+
+#: ../../include/contact_selectors.php:37
+msgid "Reputable, has my trust"
+msgstr "Réputé, a toute ma confiance"
+
+#: ../../include/contact_selectors.php:55
+msgid "Frequently"
+msgstr "Fréquemment"
+
+#: ../../include/contact_selectors.php:56
+msgid "Hourly"
+msgstr "Toutes les heures"
+
+#: ../../include/contact_selectors.php:57
+msgid "Twice daily"
+msgstr "Deux fois par jour"
+
+#: ../../include/contact_selectors.php:58
+msgid "Daily"
+msgstr "Chaque jour"
+
+#: ../../include/contact_selectors.php:59
+msgid "Weekly"
+msgstr "Chaque semaine"
+
+#: ../../include/contact_selectors.php:60
+msgid "Monthly"
+msgstr "Chaque mois"
+
+#: ../../include/group.php:130 ../../include/group.php:145
+msgid "Create a new group"
+msgstr "Créer un nouveau groupe"
+
+#: ../../include/group.php:131 ../../include/group.php:146
+msgid "Everybody"
+msgstr "Tout le monde"
+
+#: ../../include/oembed.php:57
+#, fuzzy
+msgid "Embedding disabled"
+msgstr "Incorporation désactivée"
+
+#: ../../include/datetime.php:44 ../../include/datetime.php:46
+msgid "Miscellaneous"
+msgstr "Divers"
+
+#: ../../include/datetime.php:148
+msgid "less than a second ago"
+msgstr "il y a moins d'une seconde"
+
+#: ../../include/datetime.php:151
+msgid "year"
+msgstr "an"
+
+#: ../../include/datetime.php:151
+msgid "years"
+msgstr "ans"
+
+#: ../../include/datetime.php:152
+msgid "month"
+msgstr "mois"
+
+#: ../../include/datetime.php:152
+msgid "months"
+msgstr "mois"
+
+#: ../../include/datetime.php:153
+msgid "week"
+msgstr "semaine"
+
+#: ../../include/datetime.php:153
+msgid "weeks"
+msgstr "semaines"
+
+#: ../../include/datetime.php:154
+msgid "day"
+msgstr "jour"
+
+#: ../../include/datetime.php:154 ../../mod/settings.php:370
+msgid "days"
+msgstr "jours"
+
+#: ../../include/datetime.php:155
+msgid "hour"
+msgstr "heure"
+
+#: ../../include/datetime.php:155
+msgid "hours"
+msgstr "heures"
+
+#: ../../include/datetime.php:156
+msgid "minute"
+msgstr "minute"
+
+#: ../../include/datetime.php:156
+msgid "minutes"
+msgstr "minutes"
+
+#: ../../include/datetime.php:157
+msgid "second"
+msgstr "seconde"
+
+#: ../../include/datetime.php:157
+msgid "seconds"
+msgstr "secondes"
+
+#: ../../include/datetime.php:164
+msgid " ago"
+msgstr " auparavant"
+
+#: ../../include/items.php:1027 ../../include/items.php:1073
+#: ../../include/profile_advanced.php:36 ../../include/items.php:1071
+msgid "Birthday:"
+msgstr "Anniversaire:"
+
+#: ../../include/items.php:1364 ../../mod/dfrn_request.php:536
+#: ../../include/items.php:1411 ../../mod/dfrn_request.php:538
+#: ../../include/items.php:1409
+#, fuzzy
+msgid "[Name Withheld]"
+msgstr "[Nom non-publié]"
+
+#: ../../include/items.php:1371 ../../include/items.php:1418
+#: ../../include/items.php:1416
+#, fuzzy
+msgid "You have a new follower at "
+msgstr "Vous avez un nouvel abonné à "
+
+#: ../../include/items.php:1373 ../../mod/register.php:311
+#: ../../mod/register.php:348 ../../mod/dfrn_confirm.php:649
+#: ../../mod/lostpass.php:39 ../../mod/item.php:475 ../../mod/item.php:498
+#: ../../mod/regmod.php:93 ../../mod/dfrn_notify.php:177
+#: ../../mod/dfrn_notify.php:389 ../../mod/dfrn_notify.php:475
+#: ../../mod/dfrn_request.php:545 ../../mod/register.php:329
+#: ../../mod/register.php:366 ../../include/items.php:1420
+#: ../../mod/dfrn_notify.php:392 ../../mod/dfrn_notify.php:478
+#: ../../mod/dfrn_request.php:547 ../../include/items.php:1418
+#: ../../mod/dfrn_confirm.php:654 ../../mod/dfrn_notify.php:189
+#: ../../mod/dfrn_notify.php:404 ../../mod/dfrn_notify.php:490
+msgid "Administrator"
+msgstr "Administrateur"
+
+#: ../../include/dba.php:31
+#, fuzzy, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr ""
+"Impossible de localiser les informations DNS pour le serveur de base de "
+"données '%s'"
+
+#: ../../include/nav.php:38 ../../boot.php:837 ../../boot.php:839
+#: ../../include/nav.php:39 ../../boot.php:842 ../../boot.php:854
+#: ../../boot.php:855
+msgid "Logout"
+msgstr "Se déconnecter"
+
+#: ../../include/nav.php:44 ../../boot.php:817 ../../boot.php:823
+#: ../../boot.php:819 ../../boot.php:825 ../../include/nav.php:45
+#: ../../boot.php:822 ../../boot.php:828 ../../boot.php:834 ../../boot.php:840
+#: ../../boot.php:835 ../../boot.php:841
+msgid "Login"
+msgstr "Connexion"
+
+#: ../../include/nav.php:56 ../../include/nav.php:91 ../../include/nav.php:57
+#: ../../include/nav.php:92 ../../include/nav.php:98
+msgid "Home"
+msgstr "Accueil"
+
+#: ../../include/nav.php:61 ../../mod/register.php:445 ../../boot.php:809
+#: ../../mod/register.php:463 ../../boot.php:811 ../../include/nav.php:62
+#: ../../boot.php:814 ../../boot.php:826 ../../boot.php:827
+msgid "Register"
+msgstr "S'inscrire"
+
+#: ../../include/nav.php:64 ../../include/nav.php:65 ../../include/nav.php:71
+#, fuzzy
+msgid "Apps"
+msgstr "Applications"
+
+#: ../../include/nav.php:67 ../../mod/search.php:17 ../../boot.php:2055
+#: ../../boot.php:2056 ../../boot.php:2058 ../../include/nav.php:68
+#: ../../boot.php:2066 ../../include/nav.php:74 ../../boot.php:2078
+#: ../../boot.php:2093 ../../mod/search.php:21 ../../boot.php:2042
+msgid "Search"
+msgstr "Recherche"
+
+#: ../../include/nav.php:77 ../../include/nav.php:78 ../../include/nav.php:84
+msgid "Directory"
+msgstr "Annuaire"
+
+#: ../../include/nav.php:87 ../../include/nav.php:88 ../../include/nav.php:94
+msgid "Network"
+msgstr "Réseau"
+
+#: ../../include/nav.php:96 ../../include/nav.php:97 ../../include/nav.php:103
+msgid "Notifications"
+msgstr "Notifications"
+
+#: ../../include/nav.php:100 ../../mod/message.php:125
+#: ../../include/nav.php:101 ../../include/nav.php:107
+msgid "Messages"
+msgstr "Messages"
+
+#: ../../include/nav.php:104 ../../include/nav.php:105
+#: ../../include/nav.php:111
+#, fuzzy
+msgid "Manage"
+msgstr "Gérer"
+
+#: ../../include/nav.php:107 ../../include/nav.php:108
+#: ../../include/nav.php:114
+msgid "Settings"
+msgstr "Réglages"
+
+#: ../../include/nav.php:109 ../../include/nav.php:110
+#: ../../mod/profiles.php:456 ../../include/nav.php:116
+msgid "Profiles"
+msgstr "Profils"
+
+#: ../../addon/java_upload/java_upload.php:33
+msgid "Select files to upload: "
+msgstr "Choisir les fichiers à envoyer: "
+
+#: ../../addon/java_upload/java_upload.php:35
+msgid ""
+"Use the following controls only if the Java uploader [above] fails to launch."
+msgstr ""
+"Utilisez le formulaire suivant uniquement si l'applet Java [ci-dessus] ne "
+"parvient pas à se lancer."
+
+#: ../../addon/facebook/facebook.php:110 ../../mod/profiles.php:7
+#: ../../mod/profiles.php:227 ../../mod/wall_upload.php:42
+#: ../../mod/register.php:25 ../../mod/network.php:6
+#: ../../mod/dfrn_confirm.php:53 ../../mod/display.php:308
+#: ../../mod/message.php:8 ../../mod/message.php:116 ../../mod/settings.php:14
+#: ../../mod/settings.php:19 ../../mod/settings.php:210 ../../mod/item.php:57
+#: ../../mod/item.php:668 ../../mod/group.php:19
+#: ../../mod/profile_photo.php:19 ../../mod/profile_photo.php:133
+#: ../../mod/profile_photo.php:139 ../../mod/profile_photo.php:150
+#: ../../mod/viewcontacts.php:13 ../../mod/regmod.php:16
+#: ../../mod/invite.php:13 ../../mod/invite.php:50 ../../mod/manage.php:75
+#: ../../mod/follow.php:8 ../../mod/photos.php:85 ../../mod/photos.php:773
+#: ../../mod/notifications.php:56 ../../mod/contacts.php:101
+#: ../../mod/editpost.php:10 ../../index.php:251 ../../mod/install.php:93
+#: ../../mod/settings.php:15 ../../mod/settings.php:20
+#: ../../mod/settings.php:211 ../../mod/contacts.php:106
+#: ../../mod/display.php:311 ../../index.php:265 ../../mod/display.php:126
+#: ../../mod/display.php:131 ../../mod/display.php:133
+#: ../../mod/photos.php:777
+msgid "Permission denied."
+msgstr "Permission refusée."
+
+#: ../../addon/facebook/facebook.php:116
+#, fuzzy
+msgid "Facebook disabled"
+msgstr "Connecteur Facebook désactivé"
+
+#: ../../addon/facebook/facebook.php:124
+#, fuzzy
+msgid "Facebook API key is missing."
+msgstr "Clé d'API Facebook manquante."
+
+#: ../../addon/facebook/facebook.php:131
+#, fuzzy
+msgid "Facebook Connect"
+msgstr "Connecteur Facebook"
+
+#: ../../addon/facebook/facebook.php:137
+#, fuzzy
+msgid "Install Facebook post connector"
+msgstr "Installer le connecteur Facebook"
+
+#: ../../addon/facebook/facebook.php:144
+#, fuzzy
+msgid "Remove Facebook post connector"
+msgstr "Retirer le connecteur Facebook"
+
+#: ../../addon/facebook/facebook.php:150
+#, fuzzy
+msgid "Post to Facebook by default"
+msgstr "Poster sur Facebook par défaut"
+
+#: ../../addon/facebook/facebook.php:151
+#: ../../addon/randplace/randplace.php:179 ../../addon/twitter/twitter.php:156
+#: ../../addon/twitter/twitter.php:175 ../../addon/statusnet/statusnet.php:163
+#: ../../addon/statusnet/statusnet.php:189
+#: ../../addon/statusnet/statusnet.php:207 ../../mod/install.php:109
+#: ../../mod/invite.php:64 ../../mod/manage.php:106 ../../mod/photos.php:801
+#: ../../mod/photos.php:858 ../../mod/photos.php:1066
+#: ../../mod/install.php:123 ../../mod/profiles.php:370
+#: ../../mod/network.php:506 ../../mod/display.php:174
+#: ../../mod/install.php:133 ../../mod/settings.php:364 ../../mod/group.php:97
+#: ../../mod/group.php:155 ../../mod/profile.php:388 ../../mod/photos.php:1109
+#: ../../mod/contacts.php:264 ../../include/conversation.php:293
+#: ../../include/conversation.php:307 ../../include/conversation.php:317
+#: ../../mod/group.php:76 ../../mod/group.php:159 ../../mod/photos.php:805
+#: ../../mod/photos.php:862 ../../mod/photos.php:1069
+#: ../../mod/photos.php:1112
+msgid "Submit"
+msgstr "Envoyer"
+
+#: ../../addon/facebook/facebook.php:174
+#, fuzzy
+msgid "Facebook"
+msgstr "Facebook"
+
+#: ../../addon/facebook/facebook.php:175
+#, fuzzy
+msgid "Facebook Connector Settings"
+msgstr "Réglages du connecteur Facebook"
+
+#: ../../addon/facebook/facebook.php:189
+#, fuzzy
+msgid "Post to Facebook"
+msgstr "Poster sur Facebook"
+
+#: ../../addon/facebook/facebook.php:230
+#, fuzzy
+msgid "Image: "
+msgstr "Image: "
+
+#: ../../addon/randplace/randplace.php:171
+#, fuzzy
+msgid "Randplace Settings"
+msgstr "Réglages de Randplace"
+
+#: ../../addon/randplace/randplace.php:173
+#, fuzzy
+msgid "Enable Randplace Plugin"
+msgstr "Activer l'extension Randplace"
+
+#: ../../addon/twitter/twitter.php:64
+#, fuzzy
+msgid "Post to Twitter"
+msgstr "Poster sur Twitter"
+
+#: ../../addon/twitter/twitter.php:122
+#, fuzzy
+msgid "Twitter Posting Settings"
+msgstr "Réglages du connecteur Twitter"
+
+#: ../../addon/twitter/twitter.php:129
+#, fuzzy
+msgid ""
+"No consumer key pair for Twitter found. Please contact your site "
+"administrator."
+msgstr ""
+"Pas de paire de clés pour Twitter. Merci de contacter l'administrateur du "
+"site."
+
+#: ../../addon/twitter/twitter.php:148
+#, fuzzy
+msgid ""
+"At this Friendika instance the Twitter plugin was enabled but you have not "
+"yet connected your account to your Twitter account. To do so click the "
+"button below to get a PIN from Twitter which you have to copy into the input "
+"box below and submit the form. Only your <strong>public</strong> posts will "
+"be posted to Twitter."
+msgstr ""
+"Sur cette instance de Friendika, le connecteur Twitter a été activé, mais "
+"vous n'avez pas encore connecté votre compte à Twitter. Pour ce faire, "
+"cliquez sur le bouton ci-dessous pour obtenir un PIN de Twitter, que vous "
+"aurez à coller dans la boîte ci-dessous. Ensuite, validez le formulaire. "
+"Seuls vos articles <strong>publics</strong> seront postés sur Twitter."
+
+#: ../../addon/twitter/twitter.php:149
+#, fuzzy
+msgid "Log in with Twitter"
+msgstr "Se connecter à Twitter"
+
+#: ../../addon/twitter/twitter.php:151
+#, fuzzy
+msgid "Copy the PIN from Twitter here"
+msgstr "Copiez le PIN de Twitter ici"
+
+#: ../../addon/twitter/twitter.php:165 ../../addon/statusnet/statusnet.php:197
+#, fuzzy
+msgid "Currently connected to: "
+msgstr "Actuellement connecté à: "
+
+#: ../../addon/twitter/twitter.php:166
+#, fuzzy
+msgid ""
+"If enabled all your <strong>public</strong> postings will be posted to the "
+"associated Twitter account as well."
+msgstr ""
+"Si activé, tous vos articles <strong>publics</strong> seront également "
+"postés au compte Twitter associé."
+
+#: ../../addon/twitter/twitter.php:168
+#, fuzzy
+msgid "Send public postings to Twitter"
+msgstr "Envoyer les articles publics à Twitter"
+
+#: ../../addon/twitter/twitter.php:172 ../../addon/statusnet/statusnet.php:204
+#, fuzzy
+msgid "Clear OAuth configuration"
+msgstr "Effacer la configuration OAuth"
+
+#: ../../addon/tictac/tictac.php:14
+#, fuzzy
+msgid "Three Dimensional Tic-Tac-Toe"
+msgstr "Morpion en trois dimensions"
+
+#: ../../addon/tictac/tictac.php:47
+#, fuzzy
+msgid "3D Tic-Tac-Toe"
+msgstr "Morpion 3D"
+
+#: ../../addon/tictac/tictac.php:52
+#, fuzzy
+msgid "New game"
+msgstr "Nouvelle partie"
+
+#: ../../addon/tictac/tictac.php:53
+#, fuzzy
+msgid "New game with handicap"
+msgstr "Nouvelle partie avec handicap"
+
+#: ../../addon/tictac/tictac.php:54
+#, fuzzy
+msgid ""
+"Three dimensional tic-tac-toe is just like the traditional game except that "
+"it is played on multiple levels simultaneously. "
+msgstr ""
+"Le morpion 3D, c'est comme la version traditionnelle. Sauf qu'on joue sur "
+"plusieurs étages en même temps."
+
+#: ../../addon/tictac/tictac.php:55
+#, fuzzy
+msgid ""
+"In this case there are three levels. You win by getting three in a row on "
+"any level, as well as up, down, and diagonally across the different levels."
+msgstr ""
+"Dans le cas qui nous concerne, il y a trois étages. Vous gagnez en alignant "
+"trois coups dans n'importe quel étage, ainsi que verticalement ou en "
+"diagonale entre les étages."
+
+#: ../../addon/tictac/tictac.php:57
+#, fuzzy
+msgid ""
+"The handicap game disables the center position on the middle level because "
+"the player claiming this square often has an unfair advantage."
+msgstr ""
+"Le handicap interdit la position centrale de l'étage du milieu, parce que le "
+"joueur qui prend cette case obtient souvent un avantage."
+
+#: ../../addon/tictac/tictac.php:176
+#, fuzzy
+msgid "You go first..."
+msgstr "À vous de jouer..."
+
+#: ../../addon/tictac/tictac.php:181
+#, fuzzy
+msgid "I'm going first this time..."
+msgstr "Je commence..."
+
+#: ../../addon/tictac/tictac.php:187
+#, fuzzy
+msgid "You won!"
+msgstr "Vous avez gagné!"
+
+#: ../../addon/tictac/tictac.php:193 ../../addon/tictac/tictac.php:218
+#, fuzzy
+msgid "\"Cat\" game!"
+msgstr "Match nul!"
+
+#: ../../addon/tictac/tictac.php:216
+#, fuzzy
+msgid "I won!"
+msgstr "J'ai gagné!"
+
+#: ../../addon/statusnet/statusnet.php:78
+#, fuzzy
+msgid "Post to StatusNet"
+msgstr "Poster sur StatusNet"
+
+#: ../../addon/statusnet/statusnet.php:146
+#, fuzzy
+msgid "StatusNet Posting Settings"
+msgstr "Réglages du connecteur StatusNet"
+
+#: ../../addon/statusnet/statusnet.php:152
+#, fuzzy
+msgid ""
+"No consumer key pair for StatusNet found. Register your Friendika Account as "
+"an desktop client on your StatusNet account, copy the consumer key pair here "
+"and enter the API base root.<br />Before you register your own OAuth key "
+"pair ask the administrator if there is already a key pair for this Friendika "
+"installation at your favorited StatusNet installation."
+msgstr ""
+"Aucune paire de clé n'a été trouvée pour StatusNet. Inscrivez votre compte "
+"Friendika comme client bureautique sur votre compte StatusNet, puis copiez "
+"la paire de clés de consommateur ici et renseignez le chemin de base de "
+"l'API.<br />Avant d'enregistrer votre propre paire de clés OAuth, merci de "
+"vérifier auprès de l'administrateur qu'il en existe pas déjà une pour votre "
+"fournisseur StatusNet."
+
+#: ../../addon/statusnet/statusnet.php:154
+#, fuzzy
+msgid "OAuth Consumer Key"
+msgstr "Clé de consommateur OAuth"
+
+#: ../../addon/statusnet/statusnet.php:157
+#, fuzzy
+msgid "OAuth Consumer Secret"
+msgstr "Secret de consommateur OAuth"
+
+#: ../../addon/statusnet/statusnet.php:160
+#, fuzzy
+msgid "Base API Path (remember the trailing /)"
+msgstr "Chemin de base de l'API (n'oubliez pas le / final)"
+
+#: ../../addon/statusnet/statusnet.php:181
+#, fuzzy
+msgid ""
+"To connect to your StatusNet account click the button below to get a "
+"security code from StatusNet which you have to copy into the input box below "
+"and submit the form. Only your <strong>public</strong> posts will be posted "
+"to StatusNet."
+msgstr ""
+"Pour vous connecter à votre compte StatusNet, cliquez sur le bouton ci-"
+"dessous pour obtenir un code de sécurité de StatusNet, que vous aurez à "
+"coller dans la boîte ci-dessous. Ensuite, validez le formulaire. Seuls vos "
+"articles <strong>publics</strong> seront postés sur StatusNet."
+
+#: ../../addon/statusnet/statusnet.php:182
+#, fuzzy
+msgid "Log in with StatusNet"
+msgstr "Se connecter à StatusNet"
+
+#: ../../addon/statusnet/statusnet.php:184
+#, fuzzy
+msgid "Copy the security code from StatusNet here"
+msgstr "Collez le code de sécurité de StatusNet ici"
+
+#: ../../addon/statusnet/statusnet.php:198
+#, fuzzy
+msgid ""
+"If enabled all your <strong>public</strong> postings will be posted to the "
+"associated StatusNet account as well."
+msgstr ""
+"Si actif, toutes vos publications <strong>publiques</strong> seront "
+"également postées au compte StatusNet associé."
+
+#: ../../addon/statusnet/statusnet.php:200
+#, fuzzy
+msgid "Send public postings to StatusNet"
+msgstr "Envoyer les contenus publics à StatusNet"
+
+#: ../../addon/js_upload/js_upload.php:39
+#, fuzzy
+msgid "Upload a file"
+msgstr "Téléverser un fichier"
+
+#: ../../addon/js_upload/js_upload.php:40
+#, fuzzy
+msgid "Drop files here to upload"
+msgstr "Déposer des fichiers ici pour les téléverser"
+
+#: ../../addon/js_upload/js_upload.php:41 ../../mod/tagrm.php:11
+#: ../../mod/tagrm.php:94 ../../mod/dfrn_request.php:628
+#: ../../mod/dfrn_request.php:630
+msgid "Cancel"
+msgstr "Annuler"
+
+#: ../../addon/js_upload/js_upload.php:42
+#, fuzzy
+msgid "Failed"
+msgstr "Échec"
+
+#: ../../addon/js_upload/js_upload.php:288
+#, fuzzy
+msgid "No files were uploaded."
+msgstr "Aucun fichier n'a été téléversé."
+
+#: ../../addon/js_upload/js_upload.php:294
+#, fuzzy
+msgid "Uploaded file is empty"
+msgstr "Le fichier téléversé est vide"
+
+#: ../../addon/js_upload/js_upload.php:299
+#, fuzzy
+msgid "Uploaded file is too large"
+msgstr "Le fichier téléversé est trop volumineux"
+
+#: ../../addon/js_upload/js_upload.php:306 ../../mod/photos.php:559
+msgid "Image exceeds size limit of "
+msgstr "L'image dépasse la taille maximale de "
+
+#: ../../addon/js_upload/js_upload.php:317
+#, fuzzy
+msgid "File has an invalid extension, it should be one of "
+msgstr "Le fichier a une extension invalide, elle devrait être parmi "
+
+#: ../../addon/js_upload/js_upload.php:328
+#, fuzzy
+msgid "Upload was cancelled, or server error encountered"
+msgstr "Téléversement annulé, ou erreur de serveur"
+
+#: ../../mod/profiles.php:21 ../../mod/profiles.php:237
+#: ../../mod/profiles.php:342 ../../mod/dfrn_confirm.php:62
+msgid "Profile not found."
+msgstr "Profil introuvable."
+
+#: ../../mod/profiles.php:28
+msgid "Profile Name is required."
+msgstr "Le nom du profil est requis."
+
+#: ../../mod/profiles.php:199
+msgid "Profile updated."
+msgstr "Profil mis à jour."
+
+#: ../../mod/profiles.php:254
+msgid "Profile deleted."
+msgstr "Profil supprimé."
+
+#: ../../mod/profiles.php:270 ../../mod/profiles.php:301
+msgid "Profile-"
+msgstr "Profil-"
+
+#: ../../mod/profiles.php:289 ../../mod/profiles.php:328
+msgid "New profile created."
+msgstr "Nouveau profil créé."
+
+#: ../../mod/profiles.php:307
+msgid "Profile unavailable to clone."
+msgstr "Ce profil ne peut être cloné."
+
+#: ../../mod/profiles.php:370 ../../mod/profiles.php:411
+msgid ""
+"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
+"be visible to anybody using the internet."
+msgstr ""
+"Ceci est votre profil <strong>public</strong>.<br />Il <strong>peut</strong> "
+"être visible par n'importe quel utilisateur d'Internet."
+
+#: ../../mod/profiles.php:380 ../../mod/directory.php:89
+#: ../../mod/profiles.php:421 ../../mod/directory.php:91
+msgid "Age: "
+msgstr "Age: "
+
+#: ../../mod/profiles.php:422 ../../mod/profiles.php:470
+#: ../../mod/profiles.php:468
+msgid "Profile Image"
+msgstr "Image du profil"
+
+#: ../../mod/wall_upload.php:56 ../../mod/profile_photo.php:109
+#, fuzzy, php-format
+msgid "Image exceeds size limit of %d"
+msgstr "L'image excède la taille limite de %d"
+
+#: ../../mod/wall_upload.php:65 ../../mod/profile_photo.php:118
+#: ../../mod/photos.php:571
+msgid "Unable to process image."
+msgstr "Impossible de traiter l'image."
+
+#: ../../mod/wall_upload.php:79 ../../mod/wall_upload.php:88
+#: ../../mod/wall_upload.php:95 ../../mod/message.php:93
+#: ../../mod/item.php:212
+msgid "Wall Photos"
+msgstr "Photos du mur"
+
+#: ../../mod/wall_upload.php:82 ../../mod/profile_photo.php:230
+#: ../../mod/photos.php:589 ../../mod/profile_photo.php:232
+#: ../../mod/profile_photo.php:236
+#, fuzzy
+msgid "Image upload failed."
+msgstr "Le téléversement de l'image a échoué."
+
+#: ../../mod/register.php:47
+msgid "Invalid OpenID url"
+msgstr "Adresse OpenID invalide"
+
+#: ../../mod/register.php:62
+msgid "Please enter the required information."
+msgstr "Entrez les informations requises."
+
+#: ../../mod/register.php:74
+msgid "Please use a shorter name."
+msgstr "Utilisez un nom plus court."
+
+#: ../../mod/register.php:76
+msgid "Name too short."
+msgstr "Nom trop court."
+
+#: ../../mod/register.php:89
+#, fuzzy
+msgid "That doesn't appear to be your full (First Last) name."
+msgstr "Ceci ne semble pas être votre nom complet (Prénom Nom)."
+
+#: ../../mod/register.php:92
+#, fuzzy
+msgid "Your email domain is not among those allowed on this site."
+msgstr "Votre domaine de courriel n'est pas autorisé sur ce site."
+
+#: ../../mod/register.php:95
+#, fuzzy
+msgid "Not a valid email address."
+msgstr "Ceci n'est pas une adresse courriel valide."
+
+#: ../../mod/register.php:101
+#, fuzzy
+msgid "Cannot use that email."
+msgstr "Impossible d'utiliser ce courriel."
+
+#: ../../mod/register.php:106
+msgid ""
+"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
+"must also begin with a letter."
+msgstr ""
+"Votre \"pseudo\" peut seulement contenir les caractères \"a-z\", \"0-9\", \"-"
+"\", and \"_\", et doit commencer par une lettre."
+
+#: ../../mod/register.php:112 ../../mod/register.php:212
+msgid "Nickname is already registered. Please choose another."
+msgstr "Pseudo déjà utilisé. Merci d'en choisir un autre."
+
+#: ../../mod/register.php:131
+msgid "SERIOUS ERROR: Generation of security keys failed."
+msgstr "ERREUR SÉRIEUSE: La génération des clés de sécurité a échoué."
+
+#: ../../mod/register.php:198
+msgid "An error occurred during registration. Please try again."
+msgstr "Une erreur est survenue lors de l'inscription. Merci de recommencer."
+
+#: ../../mod/register.php:216 ../../mod/register.php:234
+msgid "An error occurred creating your default profile. Please try again."
+msgstr ""
+"Une erreur est survenue lors de la création de votre profil par défaut. "
+"Merci de recommencer."
+
+#: ../../mod/register.php:267 ../../mod/register.php:274
+#: ../../mod/register.php:281 ../../mod/profile_photo.php:58
+#: ../../mod/profile_photo.php:65 ../../mod/profile_photo.php:72
+#: ../../mod/profile_photo.php:155 ../../mod/profile_photo.php:225
+#: ../../mod/profile_photo.php:234 ../../mod/photos.php:106
+#: ../../mod/photos.php:531 ../../mod/photos.php:850 ../../mod/photos.php:865
+#: ../../mod/register.php:285 ../../mod/register.php:292
+#: ../../mod/register.php:299 ../../mod/profile_photo.php:227
+#: ../../mod/profile_photo.php:236 ../../mod/profile_photo.php:231
+#: ../../mod/profile_photo.php:240 ../../mod/photos.php:854
+#: ../../mod/photos.php:869
+msgid "Profile Photos"
+msgstr "Photos du profil"
+
+#: ../../mod/register.php:310 ../../mod/regmod.php:92
+#: ../../mod/register.php:328
+#, fuzzy, php-format
+msgid "Registration details for %s"
+msgstr "Détails d'inscription pour %s"
+
+#: ../../mod/register.php:315 ../../mod/register.php:333
+msgid ""
+"Registration successful. Please check your email for further instructions."
+msgstr ""
+"Inscription réussie. Vérifiez vos emails pour la suite des instructions."
+
+#: ../../mod/register.php:319 ../../mod/register.php:337
+msgid "Failed to send email message. Here is the message that failed."
+msgstr "Impossible d'envoyer un email. Voici le message qui a échoué."
+
+#: ../../mod/register.php:324 ../../mod/register.php:342
+msgid "Your registration can not be processed."
+msgstr "Votre inscription ne peut être traitée."
+
+#: ../../mod/register.php:347 ../../mod/register.php:365
+#, fuzzy, php-format
+msgid "Registration request at %s"
+msgstr "Demande d'inscription à %s"
+
+#: ../../mod/register.php:351 ../../mod/register.php:369
+msgid "Your registration is pending approval by the site owner."
+msgstr "Votre inscription attend une validation du propriétaire du site."
+
+#: ../../mod/register.php:399 ../../mod/register.php:417
+#, fuzzy
+msgid ""
+"You may (optionally) fill in this form via OpenID by supplying your OpenID "
+"and clicking 'Register'."
+msgstr ""
+"Vous pouvez (si vous le souhaitez) remplir ce formulaire via OpenID. "
+"Fournissez votre OpenID et cliquez \"S'inscrire\"."
+
+#: ../../mod/register.php:400 ../../mod/register.php:418
+msgid ""
+"If you are not familiar with OpenID, please leave that field blank and fill "
+"in the rest of the items."
+msgstr ""
+"Si vous n'êtes pas familier avec OpenID, laissez ce champ vide et remplissez "
+"le reste."
+
+#: ../../mod/register.php:401 ../../mod/register.php:419
+msgid "Your OpenID (optional): "
+msgstr "Votre OpenID (facultatif): "
+
+#: ../../mod/register.php:415 ../../mod/register.php:433
+#, fuzzy
+msgid "Include your profile in member directory?"
+msgstr "Inclure votre profil dans l'annuaire des membres?"
+
+#: ../../mod/register.php:418 ../../mod/dfrn_request.php:618
+#: ../../mod/register.php:436 ../../mod/profiles.php:355
+#: ../../mod/settings.php:289 ../../mod/settings.php:301
+#: ../../mod/dfrn_request.php:620
+msgid "Yes"
+msgstr "Oui"
+
+#: ../../mod/register.php:419 ../../mod/dfrn_request.php:619
+#: ../../mod/register.php:437 ../../mod/profiles.php:356
+#: ../../mod/settings.php:290 ../../mod/settings.php:302
+#: ../../mod/dfrn_request.php:621
+msgid "No"
+msgstr "Non"
+
+#: ../../mod/register.php:424 ../../mod/network.php:484
+#: ../../mod/display.php:317 ../../mod/profile.php:435
+#: ../../mod/register.php:442 ../../mod/network.php:554
+#: ../../mod/profile.php:490 ../../mod/network.php:595
+#: ../../mod/mprofile.php:283 ../../mod/profile.php:492
+#: ../../mod/network.php:609 ../../mod/display.php:320
+#: ../../mod/profile.php:489 ../../mod/network.php:274
+#: ../../mod/display.php:135 ../../mod/profile.php:300
+#: ../../mod/network.php:277 ../../mod/display.php:140
+#: ../../mod/display.php:142
+msgid ""
+"Shared content is covered by the <a href=\"http://creativecommons.org/"
+"licenses/by/3.0/\">Creative Commons Attribution 3.0</a> license."
+msgstr ""
+"Le contenu est partagé suivant les termes de la licence <a href=\"http://"
+"creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0</a>."
+
+#: ../../mod/register.php:431 ../../mod/register.php:449
+msgid "Registration"
+msgstr "Inscription"
+
+#: ../../mod/register.php:439 ../../mod/register.php:457
+#, fuzzy
+msgid "Your Full Name (e.g. Joe Smith): "
+msgstr "Votre nom complet (p.ex. Michel Dupont): "
+
+#: ../../mod/register.php:440 ../../mod/register.php:458
+#, fuzzy
+msgid "Your Email Address: "
+msgstr "Votre adresse courriel: "
+
+#: ../../mod/register.php:441 ../../mod/register.php:459
+#, fuzzy
+msgid ""
+"Choose a profile nickname. This must begin with a text character. Your "
+"profile address on this site will then be '<strong>nickname@$sitename</"
+"strong>'."
+msgstr ""
+"Choisissez un pseudo. Celui devra commencer par une lettre. L'adresse de "
+"votre profil en découlera sous la forme '<strong>pseudo@$sitename</strong>'."
+
+#: ../../mod/register.php:442 ../../mod/register.php:460
+msgid "Choose a nickname: "
+msgstr "Choisir un pseudo: "
+
+#: ../../mod/apps.php:6
+#, fuzzy
+msgid "Applications"
+msgstr "Applications"
+
+#: ../../mod/network.php:18
+msgid "Normal View"
+msgstr "Vue normale"
+
+#: ../../mod/network.php:20
+msgid "New Item View"
+msgstr "Vue des nouveautés"
+
+#: ../../mod/network.php:69 ../../mod/message.php:172
+#: ../../mod/profile.php:134 ../../mod/profile.php:137
+#: ../../mod/mprofile.php:136 ../../mod/network.php:77
+#: ../../mod/profile.php:130 ../../mod/network.php:75
+#: ../../mod/profile.php:131
+#, fuzzy
+msgid "Please enter a link URL:"
+msgstr "Entrez un lien web:"
+
+#: ../../mod/network.php:70 ../../mod/profile.php:135
+#: ../../mod/profile.php:138 ../../mod/mprofile.php:137
+#: ../../mod/network.php:78 ../../mod/profile.php:131 ../../mod/network.php:76
+#: ../../mod/profile.php:132
+#, fuzzy
+msgid "Please enter a YouTube link:"
+msgstr "Entrez un lien Youtube:"
+
+#: ../../mod/network.php:71 ../../mod/profile.php:136
+#: ../../mod/profile.php:139 ../../mod/mprofile.php:138
+#: ../../mod/network.php:79 ../../mod/profile.php:132 ../../mod/network.php:77
+#: ../../mod/profile.php:133
+#, fuzzy
+msgid "Please enter a video(.ogg) link/URL:"
+msgstr "Entrez un lien vidéo (.ogg):"
+
+#: ../../mod/network.php:72 ../../mod/profile.php:137
+#: ../../mod/profile.php:140 ../../mod/mprofile.php:139
+#: ../../mod/network.php:80 ../../mod/profile.php:133 ../../mod/network.php:78
+#: ../../mod/profile.php:134
+#, fuzzy
+msgid "Please enter an audio(.ogg) link/URL:"
+msgstr "Entrez un lien audio (.ogg):"
+
+#: ../../mod/network.php:73 ../../mod/profile.php:138
+#: ../../mod/profile.php:141 ../../mod/mprofile.php:140
+#: ../../mod/network.php:81 ../../mod/profile.php:134 ../../mod/network.php:79
+#: ../../mod/profile.php:135
+#, fuzzy
+msgid "Where are you right now?"
+msgstr "Où êtes-vous présentemment?"
+
+#: ../../mod/network.php:96 ../../mod/network.php:375
+#: ../../mod/display.php:158 ../../mod/profile.php:161
+#: ../../mod/profile.php:322 ../../mod/photos.php:1086
+#: ../../mod/network.php:441 ../../mod/profile.php:164
+#: ../../mod/profile.php:377 ../../mod/network.php:97
+#: ../../mod/network.php:479 ../../mod/mprofile.php:163
+#: ../../mod/profile.php:165 ../../mod/profile.php:379
+#: ../../mod/network.php:105 ../../mod/network.php:489
+#: ../../mod/profile.php:158 ../../mod/profile.php:372
+#: ../../include/conversation.php:276 ../../mod/network.php:103
+#: ../../include/conversation.php:290 ../../include/conversation.php:300
+#: ../../mod/profile.php:159 ../../mod/photos.php:1089
+#, fuzzy
+msgid "Share"
+msgstr "Partager"
+
+#: ../../mod/network.php:97 ../../mod/message.php:186
+#: ../../mod/message.php:320 ../../mod/profile.php:162
+#: ../../mod/editpost.php:63 ../../mod/profile.php:165
+#: ../../mod/network.php:98 ../../mod/mprofile.php:164
+#: ../../mod/profile.php:166 ../../mod/network.php:106
+#: ../../mod/message.php:188 ../../mod/message.php:322
+#: ../../mod/profile.php:159 ../../mod/network.php:104
+#: ../../mod/profile.php:160
+msgid "Upload photo"
+msgstr "Joindre photo"
+
+#: ../../mod/network.php:98 ../../mod/message.php:187
+#: ../../mod/message.php:321 ../../mod/profile.php:163
+#: ../../mod/editpost.php:64 ../../mod/profile.php:166
+#: ../../mod/network.php:99 ../../mod/mprofile.php:165
+#: ../../mod/profile.php:167 ../../mod/network.php:107
+#: ../../mod/message.php:189 ../../mod/message.php:323
+#: ../../mod/profile.php:160 ../../mod/network.php:105
+#: ../../mod/profile.php:161
+msgid "Insert web link"
+msgstr "Insérer lien web"
+
+#: ../../mod/network.php:99 ../../mod/profile.php:164
+#: ../../mod/editpost.php:65 ../../mod/profile.php:167
+#: ../../mod/network.php:100 ../../mod/mprofile.php:166
+#: ../../mod/profile.php:168 ../../mod/network.php:108
+#: ../../mod/profile.php:161 ../../mod/network.php:106
+#: ../../mod/profile.php:162
+#, fuzzy
+msgid "Insert YouTube video"
+msgstr "Insérer une vidéo Youtube"
+
+#: ../../mod/network.php:100 ../../mod/profile.php:165
+#: ../../mod/editpost.php:66 ../../mod/profile.php:168
+#: ../../mod/network.php:101 ../../mod/mprofile.php:167
+#: ../../mod/profile.php:169 ../../mod/network.php:109
+#: ../../mod/profile.php:162 ../../mod/network.php:107
+#: ../../mod/profile.php:163
+#, fuzzy
+msgid "Insert Vorbis [.ogg] video"
+msgstr "Insérer un lien vidéo Vorbis [.ogg]"
+
+#: ../../mod/network.php:101 ../../mod/profile.php:166
+#: ../../mod/editpost.php:67 ../../mod/profile.php:169
+#: ../../mod/network.php:102 ../../mod/mprofile.php:168
+#: ../../mod/profile.php:170 ../../mod/network.php:110
+#: ../../mod/profile.php:163 ../../mod/network.php:108
+#: ../../mod/profile.php:164
+#, fuzzy
+msgid "Insert Vorbis [.ogg] audio"
+msgstr "Insérer un lien audio Vorbis [.ogg]"
+
+#: ../../mod/network.php:102 ../../mod/profile.php:167
+#: ../../mod/editpost.php:68 ../../mod/profile.php:170
+#: ../../mod/network.php:103 ../../mod/mprofile.php:169
+#: ../../mod/profile.php:171 ../../mod/network.php:111
+#: ../../mod/profile.php:164 ../../mod/network.php:109
+#: ../../mod/profile.php:165
+#, fuzzy
+msgid "Set your location"
+msgstr "Définir votre localisation"
+
+#: ../../mod/network.php:103 ../../mod/profile.php:168
+#: ../../mod/editpost.php:69 ../../mod/profile.php:171
+#: ../../mod/network.php:104 ../../mod/mprofile.php:170
+#: ../../mod/profile.php:172 ../../mod/network.php:112
+#: ../../mod/profile.php:165 ../../mod/network.php:110
+#: ../../mod/profile.php:166
+#, fuzzy
+msgid "Clear browser location"
+msgstr "Effacer la localisation du navigateur"
+
+#: ../../mod/network.php:104 ../../mod/network.php:376
+#: ../../mod/display.php:159 ../../mod/message.php:188
+#: ../../mod/message.php:322 ../../mod/profile.php:169
+#: ../../mod/profile.php:323 ../../mod/photos.php:1087
+#: ../../mod/editpost.php:70 ../../mod/network.php:442
+#: ../../mod/profile.php:172 ../../mod/profile.php:378
+#: ../../mod/network.php:106 ../../mod/network.php:480
+#: ../../mod/mprofile.php:171 ../../mod/profile.php:174
+#: ../../mod/profile.php:380 ../../mod/network.php:114
+#: ../../mod/network.php:490 ../../mod/message.php:190
+#: ../../mod/message.php:324 ../../mod/profile.php:167
+#: ../../mod/profile.php:373 ../../include/conversation.php:277
+#: ../../mod/network.php:112 ../../include/conversation.php:291
+#: ../../include/conversation.php:301 ../../mod/profile.php:168
+#: ../../mod/photos.php:1090
+msgid "Please wait"
+msgstr "Patientez"
+
+#: ../../mod/network.php:105 ../../mod/profile.php:170
+#: ../../mod/editpost.php:71 ../../mod/profile.php:173
+#: ../../mod/network.php:107 ../../mod/mprofile.php:172
+#: ../../mod/profile.php:175 ../../mod/network.php:115
+#: ../../mod/profile.php:168 ../../mod/network.php:113
+#: ../../mod/profile.php:169
+#, fuzzy
+msgid "Permission settings"
+msgstr "Réglages des permissions"
+
+#: ../../mod/network.php:111 ../../mod/profile.php:177
+#: ../../mod/editpost.php:77 ../../mod/profile.php:180
+#: ../../mod/network.php:113 ../../mod/mprofile.php:179
+#: ../../mod/profile.php:182 ../../mod/network.php:121
+#: ../../mod/profile.php:175 ../../mod/network.php:119
+#: ../../mod/profile.php:176
+#, fuzzy
+msgid "CC: email addresses"
+msgstr "CC: adresse de courriel"
+
+#: ../../mod/network.php:113 ../../mod/profile.php:179
+#: ../../mod/editpost.php:79 ../../mod/profile.php:182
+#: ../../mod/network.php:115 ../../mod/mprofile.php:181
+#: ../../mod/profile.php:184 ../../mod/network.php:123
+#: ../../mod/profile.php:177 ../../mod/network.php:121
+#: ../../mod/profile.php:178
+#, fuzzy
+msgid "Example: bob@example.com, mary@example.com"
+msgstr "Exemple: bob@exemple.com, mary@exemple.com"
+
+#: ../../mod/network.php:156 ../../mod/network.php:158
+#: ../../mod/network.php:166 ../../mod/network.php:164
+msgid "No such group"
+msgstr "Groupe inexistant"
+
+#: ../../mod/network.php:167 ../../mod/network.php:169
+#: ../../mod/network.php:177 ../../mod/network.php:175
+msgid "Group is empty"
+msgstr "Groupe vide"
+
+#: ../../mod/network.php:171 ../../mod/network.php:173
+#: ../../mod/network.php:181 ../../mod/network.php:179
+msgid "Group: "
+msgstr "Groupe: "
+
+#: ../../mod/network.php:280 ../../mod/network.php:446
+#: ../../mod/display.php:262 ../../mod/profile.php:402
+#: ../../mod/search.php:116 ../../mod/network.php:303
+#: ../../mod/network.php:512 ../../mod/profile.php:457
+#: ../../mod/network.php:321 ../../mod/network.php:550
+#: ../../mod/profile.php:459 ../../mod/network.php:330
+#: ../../mod/network.php:563 ../../mod/display.php:264
+#: ../../mod/profile.php:455 ../../mod/search.php:124
+msgid "View $name's profile"
+msgstr "Voir le profil de $name"
+
+#: ../../mod/network.php:295 ../../mod/search.php:131
+#: ../../mod/network.php:318 ../../mod/network.php:336
+#: ../../mod/network.php:346 ../../mod/search.php:140
+#: ../../include/conversation.php:134 ../../include/conversation.php:132
+#: ../../include/conversation.php:142
+msgid "View in context"
+msgstr "Voir dans le contexte"
+
+#: ../../mod/network.php:329 ../../mod/display.php:149
+#: ../../mod/profile.php:313 ../../mod/photos.php:962
+#: ../../mod/network.php:395 ../../mod/profile.php:368
+#: ../../mod/network.php:433 ../../mod/profile.php:370
+#: ../../mod/network.php:443 ../../mod/profile.php:363
+#: ../../include/conversation.php:232 ../../include/conversation.php:240
+#: ../../include/conversation.php:250 ../../mod/photos.php:965
+msgid "Private Message"
+msgstr "Message privé"
+
+#: ../../mod/network.php:373 ../../mod/display.php:156
+#: ../../mod/profile.php:320 ../../mod/photos.php:1084
+#: ../../mod/network.php:439 ../../mod/profile.php:375
+#: ../../mod/network.php:477 ../../mod/profile.php:377
+#: ../../mod/network.php:487 ../../mod/profile.php:370
+#: ../../include/conversation.php:274 ../../include/conversation.php:288
+#: ../../include/conversation.php:298 ../../mod/photos.php:1087
+#, fuzzy
+msgid "I like this (toggle)"
+msgstr "I like this (bascule)"
+
+#: ../../mod/network.php:374 ../../mod/display.php:157
+#: ../../mod/profile.php:321 ../../mod/photos.php:1085
+#: ../../mod/network.php:440 ../../mod/profile.php:376
+#: ../../mod/network.php:478 ../../mod/profile.php:378
+#: ../../mod/network.php:488 ../../mod/profile.php:371
+#: ../../include/conversation.php:275 ../../include/conversation.php:289
+#: ../../include/conversation.php:299 ../../mod/photos.php:1088
+#, fuzzy
+msgid "I don't like this (toggle)"
+msgstr "I don't like this (bascule)"
+
+#: ../../mod/network.php:389 ../../mod/display.php:171
+#: ../../mod/profile.php:335 ../../mod/photos.php:1106
+#: ../../mod/photos.php:1146 ../../mod/photos.php:1175
+#: ../../mod/network.php:455 ../../mod/profile.php:390
+#: ../../mod/network.php:493 ../../mod/profile.php:392
+#: ../../mod/network.php:503 ../../mod/profile.php:385
+#: ../../mod/photos.php:1148 ../../mod/photos.php:1177
+#: ../../include/conversation.php:290 ../../include/conversation.php:304
+#: ../../include/conversation.php:314 ../../mod/photos.php:1109
+#: ../../mod/photos.php:1151 ../../mod/photos.php:1180
+msgid "This is you"
+msgstr "C'est vous"
+
+#: ../../mod/network.php:397 ../../mod/display.php:222
+#: ../../mod/profile.php:359 ../../mod/editpost.php:62
+#: ../../mod/network.php:463 ../../mod/profile.php:414
+#: ../../mod/network.php:501 ../../mod/profile.php:416
+#: ../../mod/network.php:513 ../../mod/display.php:224
+#: ../../mod/profile.php:411 ../../include/conversation.php:301
+#: ../../include/conversation.php:315 ../../include/conversation.php:325
+#: ../../include/group.php:168
+#, fuzzy
+msgid "Edit"
+msgstr "Éditer"
+
+#: ../../mod/network.php:398 ../../mod/display.php:238 ../../mod/group.php:137
+#: ../../mod/profile.php:381 ../../mod/photos.php:1203
+#: ../../mod/network.php:464 ../../mod/profile.php:436
+#: ../../mod/network.php:502 ../../mod/profile.php:438
+#: ../../mod/network.php:514 ../../mod/display.php:240 ../../mod/group.php:141
+#: ../../mod/profile.php:433 ../../mod/photos.php:1205
+#: ../../include/conversation.php:109 ../../include/conversation.php:302
+#: ../../include/conversation.php:107 ../../include/conversation.php:317
+#: ../../include/conversation.php:117 ../../include/conversation.php:327
+#: ../../mod/group.php:146 ../../mod/photos.php:1208
+#, fuzzy
+msgid "Delete"
+msgstr "Supprimer"
+
+#: ../../mod/network.php:447 ../../mod/display.php:263
+#: ../../mod/network.php:513 ../../mod/network.php:551
+#: ../../mod/network.php:564 ../../mod/display.php:265
+#, fuzzy
+msgid "View $owner_name's profile"
+msgstr "Voir le profil de $owner_name"
+
+#: ../../mod/network.php:448 ../../mod/display.php:264
+#: ../../mod/network.php:514 ../../mod/network.php:552
+#: ../../mod/network.php:565 ../../mod/display.php:266
+#: ../../include/conversation.php:363 ../../include/conversation.php:378
+#: ../../include/conversation.php:388
+#, fuzzy
+msgid "to"
+msgstr "à"
+
+#: ../../mod/network.php:449 ../../mod/display.php:265
+#: ../../mod/network.php:515 ../../mod/network.php:553
+#: ../../mod/network.php:566 ../../mod/display.php:267
+#: ../../include/conversation.php:364 ../../include/conversation.php:379
+#: ../../include/conversation.php:389
+#, fuzzy
+msgid "Wall-to-Wall"
+msgstr "Inter-mur"
+
+#: ../../mod/network.php:450 ../../mod/display.php:266
+#: ../../mod/network.php:516 ../../mod/network.php:554
+#: ../../mod/network.php:567 ../../mod/display.php:268
+#: ../../include/conversation.php:365 ../../include/conversation.php:380
+#: ../../include/conversation.php:390
+#, fuzzy
+msgid "via Wall-To-Wall:"
+msgstr "en Inter-mur:"
+
+#: ../../mod/like.php:110 ../../mod/photos.php:469
+#, fuzzy
+msgid "photo"
+msgstr "la photo"
+
+#: ../../mod/like.php:110
+#, fuzzy
+msgid "status"
+msgstr "le statut"
+
+#: ../../mod/like.php:127
+#, fuzzy, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s aime %3$s de %2$s"
+
+#: ../../mod/like.php:129
+#, fuzzy, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "%1$s n'aime pas %3$s de %2$s"
+
+#: ../../mod/dfrn_confirm.php:114 ../../mod/contacts.php:209
+#: ../../mod/contacts.php:214
+msgid "Contact not found."
+msgstr "Contact introuvable."
+
+#: ../../mod/dfrn_confirm.php:231
+msgid "Response from remote site was not understood."
+msgstr "Réponse du site distant incomprise."
+
+#: ../../mod/dfrn_confirm.php:240
+msgid "Unexpected response from remote site: "
+msgstr "Réponse inattendue du site distant: "
+
+#: ../../mod/dfrn_confirm.php:248
+msgid "Confirmation completed successfully."
+msgstr "Confirmation achevée avec succès."
+
+#: ../../mod/dfrn_confirm.php:250 ../../mod/dfrn_confirm.php:264
+#: ../../mod/dfrn_confirm.php:271
+msgid "Remote site reported: "
+msgstr "Alerte du site distant: "
+
+#: ../../mod/dfrn_confirm.php:262
+msgid "Temporary failure. Please wait and try again."
+msgstr "Échec temporaire. Merci de recommencer ultérieurement."
+
+#: ../../mod/dfrn_confirm.php:269
+msgid "Introduction failed or was revoked."
+msgstr "Introduction échouée ou annulée."
+
+#: ../../mod/dfrn_confirm.php:387
+msgid "Unable to set contact photo."
+msgstr "Impossible de définir la photo du contact."
+
+#: ../../mod/dfrn_confirm.php:426
+msgid "is now friends with"
+msgstr "est désormais relié à"
+
+#: ../../mod/dfrn_confirm.php:494 ../../mod/dfrn_confirm.php:499
+#, fuzzy, php-format
+msgid "No user record found for '%s' "
+msgstr "Pas d'utilisateur trouvé pour '%s' "
+
+#: ../../mod/dfrn_confirm.php:504 ../../mod/dfrn_confirm.php:509
+msgid "Our site encryption key is apparently messed up."
+msgstr "Notre clé de chiffrement de site est apparemment corrompue."
+
+#: ../../mod/dfrn_confirm.php:515 ../../mod/dfrn_confirm.php:520
+msgid "Empty site URL was provided or URL could not be decrypted by us."
+msgstr "URL de site absente ou indéchiffrable."
+
+#: ../../mod/dfrn_confirm.php:527 ../../mod/dfrn_confirm.php:532
+msgid "Contact record was not found for you on our site."
+msgstr "Pas d'entrée pour ce contact sur notre site."
+
+#: ../../mod/dfrn_confirm.php:555 ../../mod/dfrn_confirm.php:560
+msgid ""
+"The ID provided by your system is a duplicate on our system. It should work "
+"if you try again."
+msgstr ""
+"L'identifiant fourni par votre système fait doublon sur le notre. Cela peut "
+"fonctionner si vous réessayez."
+
+#: ../../mod/dfrn_confirm.php:566 ../../mod/dfrn_confirm.php:571
+msgid "Unable to set your contact credentials on our system."
+msgstr "Impossible de vous définir des permissions sur notre système."
+
+#: ../../mod/dfrn_confirm.php:619 ../../mod/dfrn_confirm.php:624
+msgid "Unable to update your contact profile details on our system"
+msgstr ""
+"Impossible de mettre les détails de votre profil à jour sur notre système"
+
+#: ../../mod/dfrn_confirm.php:648 ../../mod/dfrn_confirm.php:653
+#, fuzzy, php-format
+msgid "Connection accepted at %s"
+msgstr "Connexion acceptée avec %s"
+
+#: ../../mod/display.php:15 ../../mod/display.php:312 ../../mod/item.php:598
+#: ../../mod/display.php:315 ../../mod/display.php:130
+#: ../../mod/display.php:135 ../../mod/display.php:20
+#: ../../mod/display.php:137
+msgid "Item not found."
+msgstr "Élément introuvable."
+
+#: ../../mod/display.php:305 ../../mod/display.php:308
+#: ../../mod/display.php:123 ../../mod/display.php:128
+#: ../../mod/display.php:130
+msgid "Item has been removed."
+msgstr "Cet élément a été enlevé."
+
+#: ../../mod/message.php:18
+msgid "No recipient selected."
+msgstr "Pas de destinataire sélectionné."
+
+#: ../../mod/message.php:23
+msgid "[no subject]"
+msgstr "[pas de sujet]"
+
+#: ../../mod/message.php:34
+msgid "Unable to locate contact information."
+msgstr "Impossible de localiser les informations du contact."
+
+#: ../../mod/message.php:102
+msgid "Message sent."
+msgstr "Message envoyé."
+
+#: ../../mod/message.php:105
+msgid "Message could not be sent."
+msgstr "Impossible d'envoyer le message."
+
+#: ../../mod/message.php:126
+msgid "Inbox"
+msgstr "Messages entrants"
+
+#: ../../mod/message.php:127
+msgid "Outbox"
+msgstr "Messages sortants"
+
+#: ../../mod/message.php:128
+msgid "New Message"
+msgstr "Nouveau message"
+
+#: ../../mod/message.php:142
+msgid "Message deleted."
+msgstr "Message supprimé."
+
+#: ../../mod/message.php:158
+msgid "Conversation removed."
+msgstr "Conversation supprimée."
+
+#: ../../mod/message.php:178 ../../mod/message.php:180
+msgid "Send Private Message"
+msgstr "Envoyer un message privé"
+
+#: ../../mod/message.php:179 ../../mod/message.php:313
+#: ../../mod/message.php:181 ../../mod/message.php:315
+msgid "To:"
+msgstr "À:"
+
+#: ../../mod/message.php:180 ../../mod/message.php:314
+#: ../../mod/message.php:182 ../../mod/message.php:316
+msgid "Subject:"
+msgstr "Sujet:"
+
+#: ../../mod/message.php:183 ../../mod/message.php:317 ../../mod/invite.php:59
+#: ../../mod/message.php:185 ../../mod/message.php:319
+msgid "Your message:"
+msgstr "Votre message:"
+
+#: ../../mod/message.php:222 ../../mod/message.php:224
+msgid "No messages."
+msgstr "Aucun message."
+
+#: ../../mod/message.php:235 ../../mod/message.php:237
+msgid "Delete conversation"
+msgstr "Effacer conversation"
+
+#: ../../mod/message.php:265 ../../mod/message.php:267
+msgid "Message not available."
+msgstr "Message indisponible."
+
+#: ../../mod/message.php:302 ../../mod/message.php:304
+msgid "Delete message"
+msgstr "Effacer message"
+
+#: ../../mod/message.php:312 ../../mod/message.php:314
+msgid "Send Reply"
+msgstr "Répondre"
+
+#: ../../mod/install.php:30 ../../mod/install.php:33
+msgid "Could not create/connect to database."
+msgstr "Impossible de créer/atteindre la base de données."
+
+#: ../../mod/install.php:35 ../../mod/install.php:38
+msgid "Connected to database."
+msgstr "Connecté à la base de données."
+
+#: ../../mod/install.php:66
+msgid "Database import succeeded."
+msgstr "Import de base achevé avec succès."
+
+#: ../../mod/install.php:67 ../../mod/install.php:75
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
+msgstr ""
+"IMPORTANT: Vous devez configurer [manuellement] une tâche programmée pour le "
+"'poller'."
+
+#: ../../mod/install.php:68 ../../mod/install.php:75 ../../mod/install.php:175
+#: ../../mod/install.php:76 ../../mod/install.php:86 ../../mod/install.php:189
+#: ../../mod/install.php:199
+msgid "Please see the file \"INSTALL.txt\"."
+msgstr "Référez-vous au fichier \"INSTALL.txt\"."
+
+#: ../../mod/install.php:73 ../../mod/install.php:84
+msgid "Database import failed."
+msgstr "Import de base échoué."
+
+#: ../../mod/install.php:74 ../../mod/install.php:85
+msgid ""
+"You may need to import the file \"database.sql\" manually using phpmyadmin "
+"or mysql."
+msgstr ""
+"Vous pourriez avoir besoin d'importer le fichier \"database.sql\" "
+"manuellement au moyen de phpmyadmin ou de la commande mysql."
+
+#: ../../mod/install.php:84 ../../mod/install.php:98
+msgid "Welcome to Friendika."
+msgstr "Bienvenue sur Friendika."
+
+#: ../../mod/install.php:124 ../../mod/install.php:138
+#: ../../mod/install.php:148
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr ""
+"Impossible de trouver la version \"ligne de commande\" de PHP dans le PATH "
+"du serveur web."
+
+#: ../../mod/install.php:125 ../../mod/install.php:139
+#: ../../mod/install.php:149
+msgid ""
+"This is required. Please adjust the configuration file .htconfig.php "
+"accordingly."
+msgstr ""
+"Ceci est requis. Merci d'ajuster la configuration dans le fichier .htconfig."
+"php en conséquence."
+
+#: ../../mod/install.php:132 ../../mod/install.php:146
+#: ../../mod/install.php:156
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr ""
+"La version \"ligne de commande\" de PHP de votre système n'a pas "
+"\"register_argc_argv\" d'activé."
+
+#: ../../mod/install.php:133 ../../mod/install.php:147
+#: ../../mod/install.php:157
+msgid "This is required for message delivery to work."
+msgstr "Ceci est requis pour que la livraison des messages fonctionne."
+
+#: ../../mod/install.php:155 ../../mod/install.php:169
+#: ../../mod/install.php:179
+msgid ""
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr ""
+"Erreur: la fonction \"openssl_pkey_new\" de ce système ne permet pas de "
+"générer des clés de chiffrement"
+
+#: ../../mod/install.php:156 ../../mod/install.php:170
+#: ../../mod/install.php:180
+msgid ""
+"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
+"installation.php\"."
+msgstr ""
+"Si vous utilisez Windows, merci de vous réferer à \"http://www.php.net/"
+"manual/en/openssl.installation.php\"."
+
+#: ../../mod/install.php:165 ../../mod/install.php:179
+#: ../../mod/install.php:189
+msgid ""
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr ""
+"Erreur: Le module \"rewrite\" du serveur web Apache est requis mais pas "
+"installé."
+
+#: ../../mod/install.php:167 ../../mod/install.php:181
+#: ../../mod/install.php:191
+msgid "Error: libCURL PHP module required but not installed."
+msgstr "Erreur: Le module PHP \"libCURL\" est requis mais pas installé."
+
+#: ../../mod/install.php:169 ../../mod/install.php:183
+#: ../../mod/install.php:193
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr ""
+"Erreur: Le module PHP \"GD\" disposant du support JPEG est requis mais pas "
+"installé."
+
+#: ../../mod/install.php:171 ../../mod/install.php:185
+#: ../../mod/install.php:195
+msgid "Error: openssl PHP module required but not installed."
+msgstr "Erreur: Le module PHP \"openssl\" est requis mais pas installé."
+
+#: ../../mod/install.php:173 ../../mod/install.php:187
+#: ../../mod/install.php:197
+msgid "Error: mysqli PHP module required but not installed."
+msgstr "Erreur: Le module PHP \"mysqli\" est requis mais pas installé."
+
+#: ../../mod/install.php:184 ../../mod/install.php:198
+#: ../../mod/install.php:208
+msgid ""
+"The web installer needs to be able to create a file called \".htconfig.php\" "
+"in the top folder of your web server and it is unable to do so."
+msgstr ""
+"L'installeur web doit être en mesure de créer un fichier \".htconfig.php\" à "
+"la racine de votre serveur web, mais il en est incapable."
+
+#: ../../mod/install.php:185 ../../mod/install.php:199
+#: ../../mod/install.php:209
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr ""
+"Le plus souvent, il s'agit d'un problème de permission. Le serveur web peut "
+"ne pas être capable d'écrire dans votre répertoire - alors que vous-même le "
+"pouvez."
+
+#: ../../mod/install.php:186 ../../mod/install.php:200
+#: ../../mod/install.php:210
+msgid ""
+"Please check with your site documentation or support people to see if this "
+"situation can be corrected."
+msgstr ""
+"Merci de vérifier - avec la documentation ou le support de votre hébergement "
+"- que la situation peut être corrigée."
+
+#: ../../mod/install.php:187 ../../mod/install.php:201
+#: ../../mod/install.php:211
+msgid ""
+"If not, you may be required to perform a manual installation. Please see the "
+"file \"INSTALL.txt\" for instructions."
+msgstr ""
+"Dans le cas contraire, vous pouvez pratiquer une installation manuelle. "
+"Référez-vous au fichier \"INSTALL.txt\" pour les instructions."
+
+#: ../../mod/install.php:196 ../../mod/install.php:210
+#: ../../mod/install.php:220
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
+msgstr ""
+"Le fichier de configuration de la base (\".htconfig.php\") ne peut être "
+"créé. Merci d'utiliser le texte ci-joint pour créer ce fichier à la racine "
+"de votre hébergement."
+
+#: ../../mod/install.php:211 ../../mod/install.php:225
+#: ../../mod/install.php:235
+msgid "Errors encountered creating database tables."
+msgstr "Des erreurs ont été signalées lors de la création des tables."
+
+#: ../../mod/settings.php:37 ../../mod/settings.php:38
+msgid "Passwords do not match. Password unchanged."
+msgstr "Les mots de passe ne correspondent pas. Aucun changement appliqué."
+
+#: ../../mod/settings.php:42 ../../mod/settings.php:43
+msgid "Empty passwords are not allowed. Password unchanged."
+msgstr "Les mots de passe vides sont interdits. Aucun changement appliqué."
+
+#: ../../mod/settings.php:53 ../../mod/settings.php:54
+msgid "Password changed."
+msgstr "Mots de passe changés."
+
+#: ../../mod/settings.php:55 ../../mod/settings.php:56
+msgid "Password update failed. Please try again."
+msgstr "Le changement de mot de passe a échoué. Merci de recommencer."
+
+#: ../../mod/settings.php:97 ../../mod/settings.php:98
+msgid " Please use a shorter name."
+msgstr " Merci d'utiliser un nom plus court."
+
+#: ../../mod/settings.php:99 ../../mod/settings.php:100
+msgid " Name too short."
+msgstr " Nom trop court."
+
+#: ../../mod/settings.php:105 ../../mod/settings.php:106
+msgid " Not valid email."
+msgstr " Email invalide."
+
+#: ../../mod/settings.php:107 ../../mod/settings.php:108
+msgid " Cannot change to that email."
+msgstr " Impossible de changer pour cet email."
+
+#: ../../mod/settings.php:165 ../../mod/settings.php:166
+msgid "Settings updated."
+msgstr "Réglages mis à jour."
+
+#: ../../mod/settings.php:215 ../../mod/settings.php:216
+#: ../../mod/settings.php:356
+msgid "Plugin Settings"
+msgstr "Réglages des extensions"
+
+#: ../../mod/settings.php:216 ../../mod/settings.php:217
+#: ../../mod/settings.php:355
+msgid "Account Settings"
+msgstr "Réglages du compte"
+
+#: ../../mod/settings.php:222 ../../mod/settings.php:223
+msgid "No Plugin settings configured"
+msgstr "Pas de réglages d'extensions configurés"
+
+#: ../../mod/settings.php:269 ../../mod/settings.php:270
+#: ../../mod/settings.php:278
+msgid "OpenID: "
+msgstr "OpenID: "
+
+#: ../../mod/settings.php:269 ../../mod/settings.php:270
+#: ../../mod/settings.php:278
+msgid "&nbsp;(Optional) Allow this OpenID to login to this account."
+msgstr "&nbsp;(Facultatif) Autoriser cet OpenID à se connecter à ce compte."
+
+#: ../../mod/settings.php:301 ../../mod/settings.php:302
+#: ../../mod/settings.php:316
+msgid "Profile is <strong>not published</strong>."
+msgstr "Ce profil n'est <strong>pas publié</strong>."
+
+#: ../../mod/settings.php:358 ../../mod/settings.php:363
+#: ../../mod/settings.php:397
+msgid "Default Post Permissions"
+msgstr "Permissions par défaut sur les articles"
+
+#: ../../mod/lostpass.php:38
+#, fuzzy, php-format
+msgid "Password reset requested at %s"
+msgstr "Requête de réinitialisation de mot de passe à %s"
+
+#: ../../mod/lockview.php:39
+msgid "Remote privacy information not available."
+msgstr "Informations de confidentialité indisponibles."
+
+#: ../../mod/lockview.php:43
+msgid "Visible to:"
+msgstr "Visible par:"
+
+#: ../../mod/home.php:23
+#, fuzzy, php-format
+msgid "Welcome to %s"
+msgstr "Bienvenue sur %s"
+
+#: ../../mod/item.php:37
+msgid "Unable to locate original post."
+msgstr "Impossible de localiser l'article original."
+
+#: ../../mod/item.php:126
+msgid "Empty post discarded."
+msgstr "Article vide défaussé."
+
+#: ../../mod/item.php:474
+#, fuzzy, php-format
+msgid "%s commented on your item at %s"
+msgstr "%s a commenté votre publication : %s"
+
+#: ../../mod/item.php:497
+#, fuzzy, php-format
+msgid "%s posted on your profile wall at %s"
+msgstr "%s a posté sur votre mur : %s"
+
+#: ../../mod/item.php:523
+#, fuzzy
+msgid "System error. Post not saved."
+msgstr "Erreur système.Publication non sauvée."
+
+#: ../../mod/item.php:541
+#, fuzzy, php-format
+msgid ""
+"This message was sent to you by %s, a member of the Friendika social network."
+msgstr ""
+"The message vous a été envoyé par %s, un membre du réseau social Friendika."
+
+#: ../../mod/item.php:543
+#, fuzzy
+msgid "You may visit them online at"
+msgstr "Vous pouvez leur faire une visite sur"
+
+#: ../../mod/item.php:545
+#, fuzzy
+msgid ""
+"Please contact the sender by replying to this post if you do not wish to "
+"receive these messages."
+msgstr ""
+"Merci de contacter l'émeteur en répondant à cette publication si vous ne "
+"souhaitez pas recevoir ces messages."
+
+#: ../../mod/item.php:547
+#, fuzzy, php-format
+msgid "%s posted an update."
+msgstr "%s a publié une mise à jour."
+
+#: ../../mod/group.php:27
+msgid "Group created."
+msgstr "Groupe créé."
+
+#: ../../mod/group.php:33
+msgid "Could not create group."
+msgstr "Impossible de créer le groupe."
+
+#: ../../mod/group.php:43 ../../mod/group.php:123 ../../mod/group.php:127
+#: ../../mod/group.php:115
+msgid "Group not found."
+msgstr "Groupe introuvable."
+
+#: ../../mod/group.php:56
+msgid "Group name changed."
+msgstr "Groupe renommé."
+
+#: ../../mod/group.php:79
+msgid "Membership list updated."
+msgstr "Liste des membres mise à jour."
+
+#: ../../mod/group.php:88 ../../index.php:250 ../../index.php:264
+#: ../../mod/group.php:67 ../../mod/profperm.php:19
+msgid "Permission denied"
+msgstr "Permission refusée"
+
+#: ../../mod/group.php:107 ../../mod/group.php:111 ../../mod/group.php:90
+msgid "Group removed."
+msgstr "Groupe enlevé."
+
+#: ../../mod/group.php:109 ../../mod/group.php:113 ../../mod/group.php:92
+#, fuzzy
+msgid "Unable to remove group."
+msgstr "Impossible d'enlever le groupe."
+
+#: ../../mod/profile_photo.php:28
+msgid "Image uploaded but image cropping failed."
+msgstr "Image envoyée, mais impossible de la retailler."
+
+#: ../../mod/profile_photo.php:61 ../../mod/profile_photo.php:68
+#: ../../mod/profile_photo.php:75 ../../mod/profile_photo.php:237
+#: ../../mod/profile_photo.php:239 ../../mod/profile_photo.php:243
+#, fuzzy, php-format
+msgid "Image size reduction [%s] failed."
+msgstr "Réduction de la taille de l'image [%s] échouée."
+
+#: ../../mod/profile_photo.php:95
+msgid "Unable to process image"
+msgstr "Impossible de traiter l'image"
+
+#: ../../mod/profile_photo.php:228 ../../mod/profile_photo.php:230
+#: ../../mod/profile_photo.php:234
+#, fuzzy
+msgid "Image uploaded successfully."
+msgstr "Image téléversée avec succès."
+
+#: ../../mod/directory.php:32
+msgid "Global Directory"
+msgstr "Annuaire global"
+
+#: ../../mod/directory.php:38 ../../mod/contacts.php:310
+#: ../../mod/contacts.php:315 ../../mod/contacts.php:323
+msgid "Finding: "
+msgstr "Trouvé: "
+
+#: ../../mod/viewcontacts.php:17 ../../boot.php:2038 ../../boot.php:2039
+#: ../../boot.php:2041 ../../boot.php:2049 ../../boot.php:2061
+#: ../../boot.php:2051 ../../boot.php:1996
+msgid "View Contacts"
+msgstr "Voir les contacts"
+
+#: ../../mod/viewcontacts.php:32
+msgid "No contacts."
+msgstr "Aucun contact."
+
+#: ../../mod/viewcontacts.php:44 ../../mod/contacts.php:371
+#: ../../mod/contacts.php:376 ../../mod/contacts.php:384
+#, fuzzy
+msgid "Visit $username's profile"
+msgstr "Visiter le profil de %s"
+
+#: ../../mod/profile.php:8 ../../boot.php:2210 ../../boot.php:2211
+#: ../../mod/mprofile.php:8 ../../boot.php:2213 ../../boot.php:2221
+#: ../../boot.php:2233 ../../boot.php:2248 ../../boot.php:2197
+msgid "No profile"
+msgstr "Aucun profil"
+
+#: ../../mod/tagrm.php:41
+msgid "Tag removed"
+msgstr "Étiquette enlevée"
+
+#: ../../mod/tagrm.php:79
+msgid "Remove Item Tag"
+msgstr "Enlever l'étiquette de l'élément"
+
+#: ../../mod/tagrm.php:81
+msgid "Select a tag to remove: "
+msgstr "Choisir une étiquette à enlever: "
+
+#: ../../mod/tagrm.php:93
+msgid "Remove"
+msgstr "Enlever"
+
+#: ../../mod/regmod.php:10
+msgid "Please login."
+msgstr "Merci de vous connecter."
+
+#: ../../mod/regmod.php:54
+#, fuzzy, php-format
+msgid "Registration revoked for %s"
+msgstr "Inscription révoquée pour %s"
+
+#: ../../mod/regmod.php:96
+msgid "Account approved."
+msgstr "Inscription validée."
+
+#: ../../mod/invite.php:28
+#, fuzzy, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s : Adresse de courriel invalide."
+
+#: ../../mod/invite.php:32
+#, fuzzy, php-format
+msgid "Please join my network on %s"
+msgstr "Vous pouvez rejoindre mon réseau sur %s"
+
+#: ../../mod/invite.php:38
+#, fuzzy, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s : L'envoi du message a échoué."
+
+#: ../../mod/invite.php:42
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d message envoyé."
+msgstr[1] "%d messages envoyés."
+
+#: ../../mod/invite.php:57
+msgid "Send invitations"
+msgstr "Envoyer des invitations"
+
+#: ../../mod/invite.php:58
+msgid "Enter email addresses, one per line:"
+msgstr "Entrez les adresses email, une par ligne:"
+
+#: ../../mod/invite.php:60
+#, fuzzy, php-format
+msgid "Please join my social network on %s"
+msgstr "Vous pouvez rejoindre mon réseau social sur %s"
+
+#: ../../mod/invite.php:61
+msgid "To accept this invitation, please visit:"
+msgstr "Pour accepter cette invitation, rendez vous sur:"
+
+#: ../../mod/invite.php:62
+msgid ""
+"Once you have registered, please connect with me via my profile page at:"
+msgstr "Une fois inscrit, connectez-vous à la page de mon profil sur:"
+
+#: ../../mod/manage.php:37
+#, fuzzy, php-format
+msgid "Welcome back %s"
+msgstr "Bon retour parmi nous, %s"
+
+#: ../../mod/manage.php:87
+#, fuzzy
+msgid "Manage Identities and/or Pages"
+msgstr "Gérer les identités et/ou les pages"
+
+#: ../../mod/manage.php:90
+#, fuzzy
+msgid ""
+"(Toggle between different identities or community/group pages which share "
+"your account details.)"
+msgstr ""
+"(Bascule entre les différentes identités ou pages qui se partagent votre "
+"compte.)"
+
+#: ../../mod/manage.php:92
+#, fuzzy
+msgid "Select an identity to manage: "
+msgstr "Choisir une identité à gérer: "
+
+#: ../../mod/dfrn_notify.php:179 ../../mod/dfrn_notify.php:191
+#, fuzzy
+msgid "noreply"
+msgstr "noreply"
+
+#: ../../mod/dfrn_notify.php:237 ../../mod/dfrn_notify.php:249
+msgid "New mail received at "
+msgstr "Nouvel email reçu à "
+
+#: ../../mod/dfrn_notify.php:388 ../../mod/dfrn_notify.php:474
+#: ../../mod/dfrn_notify.php:391 ../../mod/dfrn_notify.php:477
+#: ../../mod/dfrn_notify.php:403 ../../mod/dfrn_notify.php:489
+#, fuzzy, php-format
+msgid "%s commented on an item at %s"
+msgstr "%s a commanté sur une publication : %s"
+
+#: ../../mod/dfrn_poll.php:78 ../../mod/dfrn_poll.php:392
+#: ../../mod/dfrn_poll.php:77 ../../mod/dfrn_poll.php:391
+#: ../../mod/dfrn_poll.php:483 ../../mod/dfrn_poll.php:79
+#: ../../mod/dfrn_poll.php:504
+#, fuzzy, php-format
+msgid "%s welcomes %s"
+msgstr "%s accueille %s"
+
+#: ../../mod/dfrn_request.php:92
+msgid "This introduction has already been accepted."
+msgstr "Cette introduction a déjà été acceptée."
+
+#: ../../mod/dfrn_request.php:116 ../../mod/dfrn_request.php:347
+msgid "Profile location is not valid or does not contain profile information."
+msgstr ""
+"L'emplacement du profil est invalide ou ne contient pas de profil valide."
+
+#: ../../mod/dfrn_request.php:121 ../../mod/dfrn_request.php:352
+msgid "Warning: profile location has no identifiable owner name."
+msgstr "Attention: l'emplacement du profil n'a pas de nom identifiable."
+
+#: ../../mod/dfrn_request.php:123 ../../mod/dfrn_request.php:354
+msgid "Warning: profile location has no profile photo."
+msgstr "Attention: l'emplacement du profil n'a pas de photo de profil."
+
+#: ../../mod/dfrn_request.php:126 ../../mod/dfrn_request.php:357
+#, php-format
+msgid "%d required parameter was not found at the given location"
+msgid_plural "%d required parameters were not found at the given location"
+msgstr[0] "%d paramètre requis n'a pas été trouvé à l'endroit indiqué"
+msgstr[1] "%d paramètres requis n'ont pas été trouvés à l'endroit indiqué"
+
+#: ../../mod/dfrn_request.php:164
+msgid "Introduction complete."
+msgstr "Phase de présentation achevée."
+
+#: ../../mod/dfrn_request.php:188
+msgid "Unrecoverable protocol error."
+msgstr "Erreur de protocole non-récupérable."
+
+#: ../../mod/dfrn_request.php:216
+msgid "Profile unavailable."
+msgstr "Profil indisponible."
+
+#: ../../mod/dfrn_request.php:241
+#, fuzzy, php-format
+msgid "%s has received too many connection requests today."
+msgstr "%s a reçu trop de demande d'introduction de votre part aujourd'hui."
+
+#: ../../mod/dfrn_request.php:242
+msgid "Spam protection measures have been invoked."
+msgstr "Des mesures de protection contre le spam ont été déclenchées."
+
+#: ../../mod/dfrn_request.php:243
+msgid "Friends are advised to please try again in 24 hours."
+msgstr "Les relations sont encouragées à attendre 24 heures pour recommencer."
+
+#: ../../mod/dfrn_request.php:273
+msgid "Invalid locator"
+msgstr "Localisateur invalide"
+
+#: ../../mod/dfrn_request.php:292
+msgid "Unable to resolve your name at the provided location."
+msgstr "Impossible de résoudre votre nom à l'emplacement fourni."
+
+#: ../../mod/dfrn_request.php:305
+msgid "You have already introduced yourself here."
+msgstr "Vous vous êtes déjà présenté ici."
+
+#: ../../mod/dfrn_request.php:309
+#, fuzzy, php-format
+msgid "Apparently you are already friends with %s."
+msgstr "Il semblerait que vous soyez déjà ami avec %s."
+
+#: ../../mod/dfrn_request.php:330
+msgid "Invalid profile URL."
+msgstr "URL de profil invalide."
+
+#: ../../mod/dfrn_request.php:336
+msgid "Disallowed profile URL."
+msgstr "URL de profil interdite."
+
+#: ../../mod/dfrn_request.php:402 ../../mod/contacts.php:85
+#: ../../mod/contacts.php:90
+msgid "Failed to update contact record."
+msgstr "Échec de mise-à-jour du contact."
+
+#: ../../mod/dfrn_request.php:423
+msgid "Your introduction has been sent."
+msgstr "Votre présentation a été envoyée."
+
+#: ../../mod/dfrn_request.php:477
+msgid "Please login to confirm introduction."
+msgstr "Connectez-vous pour confirmer l'introduction."
+
+#: ../../mod/dfrn_request.php:491
+msgid ""
+"Incorrect identity currently logged in. Please login to <strong>this</"
+"strong> profile."
+msgstr ""
+"Identité incorrecte actuellement connectée. Merci de vous connecter à "
+"<strong>ce</strong> profil."
+
+#: ../../mod/dfrn_request.php:543 ../../mod/dfrn_request.php:545
+#, fuzzy
+msgid "Introduction received at "
+msgstr "Introduction reçue sur "
+
+#: ../../mod/dfrn_request.php:615 ../../mod/dfrn_request.php:617
+msgid "Friend/Connection Request"
+msgstr "Requête de relation/amitié"
+
+#: ../../mod/dfrn_request.php:616 ../../mod/dfrn_request.php:618
+msgid "Please answer the following:"
+msgstr "Merci de répondre à ce qui suit:"
+
+#: ../../mod/dfrn_request.php:617 ../../mod/dfrn_request.php:619
+msgid "Does $name know you?"
+msgstr "Est-ce que $name vous connaît?"
+
+#: ../../mod/dfrn_request.php:620 ../../mod/dfrn_request.php:622
+msgid "Add a personal note:"
+msgstr "Ajouter une note personnelle:"
+
+#: ../../mod/dfrn_request.php:621 ../../mod/dfrn_request.php:623
+msgid ""
+"Please enter your profile address from one of the following supported social "
+"networks:"
+msgstr ""
+"Merci d'entrer l'adresse de votre profil sur l'une de ces réseaux sociaux:"
+
+#: ../../mod/dfrn_request.php:622 ../../mod/dfrn_request.php:624
+msgid "Friendika"
+msgstr "Friendika"
+
+#: ../../mod/dfrn_request.php:623 ../../mod/dfrn_request.php:625
+msgid "StatusNet/Federated Social Web"
+msgstr "StatusNet/Federated Social Web"
+
+#: ../../mod/dfrn_request.php:624 ../../mod/dfrn_request.php:626
+msgid "Private (secure) network"
+msgstr "Réseau privé (sécurisé)"
+
+#: ../../mod/dfrn_request.php:625 ../../mod/dfrn_request.php:627
+msgid "Public (insecure) network"
+msgstr "Réseau public (non-sécurisé)"
+
+#: ../../mod/dfrn_request.php:626 ../../mod/dfrn_request.php:628
+msgid "Your profile address:"
+msgstr "Votre adresse de profil:"
+
+#: ../../mod/dfrn_request.php:627 ../../mod/dfrn_request.php:629
+msgid "Submit Request"
+msgstr "Envoyer la requête"
+
+#: ../../mod/follow.php:173 ../../mod/follow.php:186
+msgid "The profile address specified does not provide adequate information."
+msgstr ""
+"L'adresse de profil indiquée ne fournit par les informations adéquates."
+
+#: ../../mod/follow.php:179 ../../mod/follow.php:192
+msgid ""
+"Limited profile. This person will be unable to receive direct/personal "
+"notifications from you."
+msgstr ""
+"Profil limité. Cette personne ne sera pas capable de recevoir des "
+"notifications directes/personnelles de votre part."
+
+#: ../../mod/follow.php:230 ../../mod/follow.php:243 ../../mod/follow.php:247
+msgid "Unable to retrieve contact information."
+msgstr "Impossible de récupérer les informations du contact."
+
+#: ../../mod/follow.php:276 ../../mod/follow.php:289 ../../mod/follow.php:293
+msgid "following"
+msgstr "following"
+
+#: ../../mod/photos.php:30
+msgid "Photo Albums"
+msgstr "Albums photo"
+
+#: ../../mod/photos.php:95
+msgid "Contact information unavailable"
+msgstr "Informations de contact indisponibles"
+
+#: ../../mod/photos.php:116
+msgid "Album not found."
+msgstr "Album introuvable."
+
+#: ../../mod/photos.php:134 ../../mod/photos.php:859 ../../mod/photos.php:863
+msgid "Delete Album"
+msgstr "Effacer l'album"
+
+#: ../../mod/photos.php:197 ../../mod/photos.php:1067
+#: ../../mod/photos.php:1070
+msgid "Delete Photo"
+msgstr "Effacer la photo"
+
+#: ../../mod/photos.php:469
+msgid "was tagged in a"
+msgstr "a été identifié dans"
+
+#: ../../mod/photos.php:469
+msgid "by"
+msgstr "par"
+
+#: ../../mod/photos.php:661 ../../mod/photos.php:665
+msgid "No photos selected"
+msgstr "Aucune photo sélectionnée"
+
+#: ../../mod/photos.php:808 ../../mod/photos.php:812
+#, fuzzy
+msgid "Upload Photos"
+msgstr "Téléverser des photos"
+
+#: ../../mod/photos.php:811 ../../mod/photos.php:854 ../../mod/photos.php:815
+#: ../../mod/photos.php:858
+msgid "New album name: "
+msgstr "Nom du nouvel album: "
+
+#: ../../mod/photos.php:812 ../../mod/photos.php:816
+msgid "or existing album name: "
+msgstr "ou nom d'un album existant: "
+
+#: ../../mod/photos.php:814 ../../mod/photos.php:1062 ../../mod/photos.php:818
+#: ../../mod/photos.php:1065
+msgid "Permissions"
+msgstr "Permissions"
+
+#: ../../mod/photos.php:869 ../../mod/photos.php:873
+msgid "Edit Album"
+msgstr "Éditer l'album"
+
+#: ../../mod/photos.php:879 ../../mod/photos.php:1263
+#: ../../mod/photos.php:1265 ../../mod/photos.php:1264
+#: ../../mod/photos.php:883 ../../mod/photos.php:1267
+msgid "View Photo"
+msgstr "Voir la photo"
+
+#: ../../mod/photos.php:909 ../../mod/photos.php:912
+msgid "Photo not available"
+msgstr "Photo indisponible"
+
+#: ../../mod/photos.php:956 ../../mod/photos.php:959
+msgid "Edit photo"
+msgstr "Éditer la photo"
+
+#: ../../mod/photos.php:958 ../../mod/photos.php:961
+#, fuzzy
+msgid "Use as profile photo"
+msgstr "Utiliser comme photo de profil"
+
+#: ../../mod/photos.php:969 ../../mod/photos.php:972
+#, fuzzy
+msgid "<< Prev"
+msgstr "<< Précédent"
+
+#: ../../mod/photos.php:973 ../../mod/photos.php:976
+msgid "View Full Size"
+msgstr "Voir en taille réelle"
+
+#: ../../mod/photos.php:977 ../../mod/photos.php:980
+#, fuzzy
+msgid "Next >>"
+msgstr "Suivant >>"
+
+#: ../../mod/photos.php:1036 ../../mod/photos.php:1039
+msgid "Tags: "
+msgstr "Étiquettes: "
+
+#: ../../mod/photos.php:1046 ../../mod/photos.php:1049
+msgid "[Remove any tag]"
+msgstr "[Retirer toutes les étiquettes]"
+
+#: ../../mod/photos.php:1055 ../../mod/photos.php:1058
+msgid "New album name"
+msgstr "Nom du nouvel album"
+
+#: ../../mod/photos.php:1058 ../../mod/photos.php:1061
+msgid "Caption"
+msgstr "Titre"
+
+#: ../../mod/photos.php:1060 ../../mod/photos.php:1063
+msgid "Add a Tag"
+msgstr "Ajouter une étiquette"
+
+#: ../../mod/photos.php:1064 ../../mod/photos.php:1067
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+msgstr ""
+"Exemples: @bob, @Barbara_Jensen, @jim@example.com, #Californie, #vacances"
+
+#: ../../mod/photos.php:1249 ../../mod/photos.php:1251
+#: ../../mod/photos.php:1254
+msgid "Recent Photos"
+msgstr "Photos récentes"
+
+#: ../../mod/photos.php:1253 ../../mod/photos.php:1255
+#: ../../mod/photos.php:1258
+#, fuzzy
+msgid "Upload New Photos"
+msgstr "Téléverser de nouvelles photos"
+
+#: ../../mod/photos.php:1269 ../../mod/photos.php:1271
+#: ../../mod/photos.php:1268
+msgid "View Album"
+msgstr "Voir l'album"
+
+#: ../../mod/notifications.php:28
+msgid "Invalid request identifier."
+msgstr "Identifiant de demande invalide."
+
+#: ../../mod/notifications.php:31 ../../mod/notifications.php:134
+#: ../../mod/notifications.php:133
+msgid "Discard"
+msgstr "Défausser"
+
+#: ../../mod/notifications.php:41 ../../mod/notifications.php:133
+#: ../../mod/notifications.php:132
+msgid "Ignore"
+msgstr "Ignorer"
+
+#: ../../mod/notifications.php:72
+msgid "Show Ignored Requests"
+msgstr "Voir les demandes ignorées"
+
+#: ../../mod/notifications.php:72
+msgid "Hide Ignored Requests"
+msgstr "Cacher les demandes ignorées"
+
+#: ../../mod/notifications.php:105 ../../mod/notifications.php:104
+msgid "Claims to be known to you: "
+msgstr "Prétend que vous le connaissez: "
+
+#: ../../mod/notifications.php:105 ../../mod/notifications.php:104
+msgid "yes"
+msgstr "oui"
+
+#: ../../mod/notifications.php:105 ../../mod/notifications.php:104
+msgid "no"
+msgstr "non"
+
+#: ../../mod/notifications.php:111 ../../mod/notifications.php:110
+msgid "Approve as: "
+msgstr "Approuver en tant que: "
+
+#: ../../mod/notifications.php:112 ../../mod/notifications.php:111
+msgid "Friend"
+msgstr "Ami"
+
+#: ../../mod/notifications.php:113 ../../mod/notifications.php:112
+msgid "Fan/Admirer"
+msgstr "Fan/Admirateur"
+
+#: ../../mod/notifications.php:120 ../../mod/notifications.php:119
+msgid "Notification type: "
+msgstr "Type de notification: "
+
+#: ../../mod/notifications.php:121 ../../mod/notifications.php:120
+msgid "Friend/Connect Request"
+msgstr "Demande de connexion/relation"
+
+#: ../../mod/notifications.php:121 ../../mod/notifications.php:120
+msgid "New Follower"
+msgstr "Nouvel abonné"
+
+#: ../../mod/notifications.php:131 ../../mod/notifications.php:130
+#: ../../mod/notifications.php:153
+msgid "Approve"
+msgstr "Approuver"
+
+#: ../../mod/notifications.php:140 ../../mod/notifications.php:139
+msgid "No notifications."
+msgstr "Pas de notification."
+
+#: ../../mod/notifications.php:164 ../../mod/notifications.php:163
+#: ../../mod/notifications.php:159
+msgid "No registrations."
+msgstr "Pas d'inscriptions."
+
+#: ../../mod/contacts.php:12
+msgid "Invite Friends"
+msgstr "Inviter des amis"
+
+#: ../../mod/contacts.php:16 ../../mod/contacts.php:19
+#, fuzzy
+msgid "Connect/Follow"
+msgstr "Connecter/Suivre"
+
+#: ../../mod/contacts.php:17 ../../mod/contacts.php:20
+msgid "Example: bob@example.com, http://example.com/barbara"
+msgstr "Exemple: bob@example.com, http://example.com/barbara"
+
+#: ../../mod/contacts.php:18 ../../mod/contacts.php:21
+msgid "Follow"
+msgstr "Suivre"
+
+#: ../../mod/contacts.php:38 ../../mod/contacts.php:119
+#: ../../mod/contacts.php:43 ../../mod/contacts.php:124
+msgid "Could not access contact record."
+msgstr "Impossible d'accéder à l'enregistrement du contact."
+
+#: ../../mod/contacts.php:52 ../../mod/contacts.php:57
+msgid "Could not locate selected profile."
+msgstr "Impossible de localiser le profil séléctionné."
+
+#: ../../mod/contacts.php:83 ../../mod/contacts.php:88
+msgid "Contact updated."
+msgstr "Contact mis-à-jour."
+
+#: ../../mod/contacts.php:141 ../../mod/contacts.php:146
+msgid "Contact has been blocked"
+msgstr "Le contact a été bloqué"
+
+#: ../../mod/contacts.php:141 ../../mod/contacts.php:146
+msgid "Contact has been unblocked"
+msgstr "Le contact n'est plus bloqué"
+
+#: ../../mod/contacts.php:155 ../../mod/contacts.php:160
+#, fuzzy
+msgid "Contact has been ignored"
+msgstr "Le contact a été ignoré"
+
+#: ../../mod/contacts.php:155 ../../mod/contacts.php:160
+#, fuzzy
+msgid "Contact has been unignored"
+msgstr "Le contact n'est plus ignoré"
+
+#: ../../mod/contacts.php:176 ../../mod/contacts.php:181
+msgid "stopped following"
+msgstr "retiré de la liste de suivi"
+
+#: ../../mod/contacts.php:195 ../../mod/contacts.php:200
+msgid "Contact has been removed."
+msgstr "Ce contact a été retiré."
+
+#: ../../mod/contacts.php:223 ../../mod/contacts.php:347
+#: ../../mod/contacts.php:228 ../../mod/contacts.php:352
+#: ../../mod/contacts.php:360
+msgid "Mutual Friendship"
+msgstr "Relation réciproque"
+
+#: ../../mod/contacts.php:227 ../../mod/contacts.php:351
+#: ../../mod/contacts.php:232 ../../mod/contacts.php:356
+#: ../../mod/contacts.php:364
+msgid "is a fan of yours"
+msgstr "est un fan de vous"
+
+#: ../../mod/contacts.php:232 ../../mod/contacts.php:355
+#: ../../mod/contacts.php:237 ../../mod/contacts.php:360
+#: ../../mod/contacts.php:368
+msgid "you are a fan of"
+msgstr "vous êtes un fan de"
+
+#: ../../mod/contacts.php:247 ../../mod/contacts.php:252
+#, fuzzy
+msgid "Privacy Unavailable"
+msgstr "Protection de la vie privée indisponible"
+
+#: ../../mod/contacts.php:248 ../../mod/contacts.php:253
+#, fuzzy
+msgid "Private communications are not available for this contact."
+msgstr "Les communications privées ne sont pas disponibles pour ce contact."
+
+#: ../../mod/contacts.php:251 ../../mod/contacts.php:256
+msgid "Never"
+msgstr "Jamais"
+
+#: ../../mod/contacts.php:255 ../../mod/contacts.php:260
+#, fuzzy
+msgid "(Update was successful)"
+msgstr "(Mise à jour effectuée avec succès)"
+
+#: ../../mod/contacts.php:255 ../../mod/contacts.php:260
+#, fuzzy
+msgid "(Update was not successful)"
+msgstr "(Mise à jour échouée)"
+
+#: ../../mod/contacts.php:258 ../../mod/contacts.php:263
+msgid "Contact Editor"
+msgstr "Éditeur de contact"
+
+#: ../../mod/contacts.php:259 ../../mod/contacts.php:264
+#: ../../mod/contacts.php:272
+msgid "Visit $name's profile"
+msgstr "Visiter le profil de $name"
+
+#: ../../mod/contacts.php:260 ../../mod/contacts.php:265
+#: ../../mod/contacts.php:273
+msgid "Block/Unblock contact"
+msgstr "Bloquer/débloquer ce contact"
+
+#: ../../mod/contacts.php:261 ../../mod/contacts.php:266
+#: ../../mod/contacts.php:274
+msgid "Ignore contact"
+msgstr "Ignorer ce contact"
+
+#: ../../mod/contacts.php:262 ../../mod/contacts.php:267
+#: ../../mod/contacts.php:275
+msgid "Delete contact"
+msgstr "Effacer ce contact"
+
+#: ../../mod/contacts.php:264 ../../mod/contacts.php:269
+#: ../../mod/contacts.php:277
+msgid "Last updated: "
+msgstr "Dernière mise-à-jour: "
+
+#: ../../mod/contacts.php:265 ../../mod/contacts.php:270
+#: ../../mod/contacts.php:278
+msgid "Update public posts: "
+msgstr "Met ses entrées publiques à jour: "
+
+#: ../../mod/contacts.php:267 ../../mod/contacts.php:272
+#: ../../mod/contacts.php:280
+#, fuzzy
+msgid "Update now"
+msgstr "Mettre-à-jour immédiatement"
+
+#: ../../mod/contacts.php:270 ../../mod/contacts.php:275
+#: ../../mod/contacts.php:283
+msgid "Unblock this contact"
+msgstr "Débloquer ce contact"
+
+#: ../../mod/contacts.php:270 ../../mod/contacts.php:275
+#: ../../mod/contacts.php:283
+msgid "Block this contact"
+msgstr "Bloquer ce contact"
+
+#: ../../mod/contacts.php:271 ../../mod/contacts.php:276
+#: ../../mod/contacts.php:284
+msgid "Unignore this contact"
+msgstr "Cesser d'ignorer ce contact"
+
+#: ../../mod/contacts.php:271 ../../mod/contacts.php:276
+#: ../../mod/contacts.php:284
+msgid "Ignore this contact"
+msgstr "Ignorer ce contact"
+
+#: ../../mod/contacts.php:274 ../../mod/contacts.php:279
+#: ../../mod/contacts.php:287
+msgid "Currently blocked"
+msgstr "Actuellement bloqué"
+
+#: ../../mod/contacts.php:275 ../../mod/contacts.php:280
+#: ../../mod/contacts.php:288
+msgid "Currently ignored"
+msgstr "Actuellement ignoré"
+
+#: ../../mod/contacts.php:308 ../../mod/contacts.php:313
+#: ../../mod/contacts.php:321
+msgid "Show Blocked Connections"
+msgstr "Montrer les connexions bloquées"
+
+#: ../../mod/contacts.php:308 ../../mod/contacts.php:313
+#: ../../mod/contacts.php:321
+msgid "Hide Blocked Connections"
+msgstr "Cacher les connexion bloquées"
+
+#: ../../mod/contacts.php:311 ../../mod/contacts.php:316
+#: ../../mod/directory.php:40 ../../mod/contacts.php:324
+msgid "Find"
+msgstr "Trouver"
+
+#: ../../mod/contacts.php:372 ../../mod/contacts.php:377
+#: ../../mod/contacts.php:385 ../../boot.php:2737 ../../boot.php:2749
+#: ../../boot.php:2764 ../../include/conversation.php:520
+msgid "Edit contact"
+msgstr "Éditer le contact"
+
+#: ../../mod/search.php:54 ../../mod/search.php:62 ../../mod/search.php:64
+#, fuzzy
+msgid "No results."
+msgstr "Aucun résultat."
+
+#: ../../mod/editpost.php:17 ../../mod/editpost.php:27
+#, fuzzy
+msgid "Item not found"
+msgstr "Élément introuvable"
+
+#: ../../mod/editpost.php:32
+#, fuzzy
+msgid "Edit post"
+msgstr "Éditer la publication"
+
+#: ../../mod/removeme.php:42 ../../mod/removeme.php:45
+#, fuzzy
+msgid "Remove My Account"
+msgstr "Supprimer mon compte"
+
+#: ../../mod/removeme.php:43
+#, fuzzy
+msgid ""
+"This will completely remove your account. Once this has been done it is not "
+"recoverable."
+msgstr ""
+"Ceci supprimera totalement votre compte. Cette opération est irréversible."
+
+#: ../../mod/removeme.php:44
+#, fuzzy
+msgid "Please enter your password for verification:"
+msgstr "Merci de saisir votre mot de passe pour vérification:"
+
+#: ../../boot.php:808 ../../boot.php:810 ../../boot.php:813 ../../boot.php:825
+#: ../../boot.php:826
+#, fuzzy
+msgid "Create a New Account"
+msgstr "Créer un nouveau compte"
+
+#: ../../boot.php:815 ../../boot.php:817 ../../boot.php:820 ../../boot.php:832
+#: ../../boot.php:833
+#, fuzzy
+msgid "Nickname or Email address: "
+msgstr "Pseudo ou courriel: "
+
+#: ../../boot.php:816 ../../boot.php:818 ../../boot.php:821 ../../boot.php:833
+#: ../../boot.php:834
+msgid "Password: "
+msgstr "Mot de passe: "
+
+#: ../../boot.php:821 ../../boot.php:823 ../../boot.php:826 ../../boot.php:838
+#: ../../boot.php:839
+#, fuzzy
+msgid "Nickname/Email/OpenID: "
+msgstr "Pseudo/Courriel/OpenID: "
+
+#: ../../boot.php:822 ../../boot.php:824 ../../boot.php:827 ../../boot.php:839
+#: ../../boot.php:840
+msgid "Password (if not OpenID): "
+msgstr "Mot de passe (sauf pour OpenID): "
+
+#: ../../boot.php:825 ../../boot.php:827 ../../boot.php:830 ../../boot.php:842
+#: ../../boot.php:843
+msgid "Forgot your password?"
+msgstr "Mot de passe oublié?"
+
+#: ../../boot.php:826 ../../boot.php:828 ../../mod/lostpass.php:74
+#: ../../boot.php:831 ../../boot.php:843 ../../boot.php:844
+msgid "Password Reset"
+msgstr "Réinitialiser le mot de passe"
+
+#: ../../boot.php:1077 ../../boot.php:1078 ../../boot.php:1080
+#: ../../boot.php:1083 ../../boot.php:1095 ../../boot.php:1096
+#, fuzzy
+msgid "prev"
+msgstr "précédent"
+
+#: ../../boot.php:1079 ../../boot.php:1080 ../../boot.php:1082
+#: ../../boot.php:1085 ../../boot.php:1097 ../../boot.php:1098
+#, fuzzy
+msgid "first"
+msgstr "premier"
+
+#: ../../boot.php:1108 ../../boot.php:1109 ../../boot.php:1111
+#: ../../boot.php:1114 ../../boot.php:1126 ../../boot.php:1127
+#, fuzzy
+msgid "last"
+msgstr "dernier"
+
+#: ../../boot.php:1111 ../../boot.php:1112 ../../boot.php:1114
+#: ../../boot.php:1117 ../../boot.php:1129 ../../boot.php:1130
+#, fuzzy
+msgid "next"
+msgstr "suivant"
+
+#: ../../boot.php:1837 ../../boot.php:1838 ../../boot.php:1840
+#: ../../boot.php:1848 ../../boot.php:1860 ../../boot.php:1861
+#: ../../include/conversation.php:571
+#, fuzzy, php-format
+msgid "%s likes this."
+msgstr "%s aime ça."
+
+#: ../../boot.php:1837 ../../boot.php:1838 ../../boot.php:1840
+#: ../../boot.php:1848 ../../boot.php:1860 ../../boot.php:1861
+#: ../../include/conversation.php:571
+#, fuzzy, php-format
+msgid "%s doesn't like this."
+msgstr "%s n'aime pas ça."
+
+#: ../../boot.php:1841 ../../boot.php:1842 ../../boot.php:1844
+#: ../../boot.php:1852 ../../boot.php:1864 ../../boot.php:1865
+#: ../../include/conversation.php:575
+#, fuzzy, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgstr "<span %1$s>%2$d personnes</span> aiment ça."
+
+#: ../../boot.php:1843 ../../boot.php:1844 ../../boot.php:1846
+#: ../../boot.php:1854 ../../boot.php:1866 ../../boot.php:1867
+#: ../../include/conversation.php:577
+#, fuzzy, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgstr "<span %1$s>%2$d personnes</span> ,n'aiment pas ça."
+
+#: ../../boot.php:1849 ../../boot.php:1850 ../../boot.php:1852
+#: ../../boot.php:1860 ../../boot.php:1872 ../../boot.php:1873
+#: ../../include/conversation.php:583
+msgid "and"
+msgstr "et"
+
+#: ../../boot.php:1852 ../../boot.php:1853 ../../boot.php:1855
+#: ../../boot.php:1863 ../../boot.php:1875 ../../boot.php:1876
+#: ../../include/conversation.php:586
+#, fuzzy, php-format
+msgid ", and %d other people"
+msgstr ", et %d autres personnes"
+
+#: ../../boot.php:1853 ../../boot.php:1854 ../../boot.php:1856
+#: ../../boot.php:1864 ../../boot.php:1876 ../../boot.php:1877
+#: ../../include/conversation.php:587
+#, fuzzy, php-format
+msgid "%s like this."
+msgstr "%s aiment ça."
+
+#: ../../boot.php:1853 ../../boot.php:1854 ../../boot.php:1856
+#: ../../boot.php:1864 ../../boot.php:1876 ../../boot.php:1877
+#: ../../include/conversation.php:587
+#, fuzzy, php-format
+msgid "%s don't like this."
+msgstr "%s n'aiment pas ça."
+
+#: ../../boot.php:2014 ../../boot.php:2015 ../../boot.php:2017
+#: ../../boot.php:2025 ../../boot.php:2037 ../../boot.php:2038
+#: ../../boot.php:1983
+msgid "No contacts"
+msgstr "Aucun contact"
+
+#: ../../boot.php:2267 ../../boot.php:2268 ../../boot.php:2270
+#: ../../boot.php:2278 ../../boot.php:2290 ../../boot.php:2305
+#: ../../boot.php:2254
+msgid "Connect"
+msgstr "Relier"
+
+#: ../../boot.php:2277 ../../boot.php:2278 ../../boot.php:2280
+#: ../../boot.php:2288 ../../boot.php:2300 ../../boot.php:2315
+#: ../../boot.php:2264
+msgid "Location:"
+msgstr "Localisation:"
+
+#: ../../boot.php:2281 ../../boot.php:2282 ../../boot.php:2284
+#: ../../boot.php:2292 ../../boot.php:2304 ../../boot.php:2319
+#: ../../boot.php:2268
+msgid ", "
+msgstr ", "
+
+#: ../../boot.php:2289 ../../boot.php:2290 ../../boot.php:2292
+#: ../../include/profile_advanced.php:23 ../../boot.php:2300
+#: ../../boot.php:2312 ../../boot.php:2327 ../../boot.php:2276
+msgid "Gender:"
+msgstr "Genre:"
+
+#: ../../boot.php:2293 ../../boot.php:2294 ../../boot.php:2296
+#: ../../boot.php:2304 ../../boot.php:2316 ../../boot.php:2331
+#: ../../boot.php:2280
+msgid "Status:"
+msgstr "Statut:"
+
+#: ../../boot.php:2295 ../../boot.php:2296 ../../boot.php:2298
+#: ../../include/profile_advanced.php:103 ../../boot.php:2306
+#: ../../boot.php:2318 ../../boot.php:2333 ../../boot.php:2282
+msgid "Homepage:"
+msgstr "Page personnelle:"
+
+#: ../../boot.php:2386 ../../boot.php:2387 ../../boot.php:2389
+#: ../../boot.php:2397 ../../boot.php:2409 ../../boot.php:2424
+#: ../../boot.php:2373
+msgid "Monday"
+msgstr "Lundi"
+
+#: ../../boot.php:2386 ../../boot.php:2387 ../../boot.php:2389
+#: ../../boot.php:2397 ../../boot.php:2409 ../../boot.php:2424
+#: ../../boot.php:2373
+msgid "Tuesday"
+msgstr "Mardi"
+
+#: ../../boot.php:2386 ../../boot.php:2387 ../../boot.php:2389
+#: ../../boot.php:2397 ../../boot.php:2409 ../../boot.php:2424
+#: ../../boot.php:2373
+msgid "Wednesday"
+msgstr "Mercredi"
+
+#: ../../boot.php:2386 ../../boot.php:2387 ../../boot.php:2389
+#: ../../boot.php:2397 ../../boot.php:2409 ../../boot.php:2424
+#: ../../boot.php:2373
+msgid "Thursday"
+msgstr "Jeudi"
+
+#: ../../boot.php:2386 ../../boot.php:2387 ../../boot.php:2389
+#: ../../boot.php:2397 ../../boot.php:2409 ../../boot.php:2424
+#: ../../boot.php:2373
+msgid "Friday"
+msgstr "Vendredi"
+
+#: ../../boot.php:2386 ../../boot.php:2387 ../../boot.php:2389
+#: ../../boot.php:2397 ../../boot.php:2409 ../../boot.php:2424
+#: ../../boot.php:2373
+msgid "Saturday"
+msgstr "Samedi"
+
+#: ../../boot.php:2386 ../../boot.php:2387 ../../boot.php:2389
+#: ../../boot.php:2397 ../../boot.php:2409 ../../boot.php:2424
+#: ../../boot.php:2373
+msgid "Sunday"
+msgstr "Dimanche"
+
+#: ../../boot.php:2390 ../../boot.php:2391 ../../boot.php:2393
+#: ../../boot.php:2401 ../../boot.php:2413 ../../boot.php:2428
+#: ../../boot.php:2377
+msgid "January"
+msgstr "Janvier"
+
+#: ../../boot.php:2390 ../../boot.php:2391 ../../boot.php:2393
+#: ../../boot.php:2401 ../../boot.php:2413 ../../boot.php:2428
+#: ../../boot.php:2377
+msgid "February"
+msgstr "Février"
+
+#: ../../boot.php:2390 ../../boot.php:2391 ../../boot.php:2393
+#: ../../boot.php:2401 ../../boot.php:2413 ../../boot.php:2428
+#: ../../boot.php:2377
+msgid "March"
+msgstr "Mars"
+
+#: ../../boot.php:2390 ../../boot.php:2391 ../../boot.php:2393
+#: ../../boot.php:2401 ../../boot.php:2413 ../../boot.php:2428
+#: ../../boot.php:2377
+msgid "April"
+msgstr "Avril"
+
+#: ../../boot.php:2390 ../../boot.php:2391 ../../boot.php:2393
+#: ../../boot.php:2401 ../../boot.php:2413 ../../boot.php:2428
+#: ../../boot.php:2377
+msgid "May"
+msgstr "Mai"
+
+#: ../../boot.php:2390 ../../boot.php:2391 ../../boot.php:2393
+#: ../../boot.php:2401 ../../boot.php:2413 ../../boot.php:2428
+#: ../../boot.php:2377
+msgid "June"
+msgstr "Juin"
+
+#: ../../boot.php:2390 ../../boot.php:2391 ../../boot.php:2393
+#: ../../boot.php:2401 ../../boot.php:2413 ../../boot.php:2428
+#: ../../boot.php:2377
+msgid "July"
+msgstr "Juillet"
+
+#: ../../boot.php:2390 ../../boot.php:2391 ../../boot.php:2393
+#: ../../boot.php:2401 ../../boot.php:2413 ../../boot.php:2428
+#: ../../boot.php:2377
+msgid "August"
+msgstr "Août"
+
+#: ../../boot.php:2390 ../../boot.php:2391 ../../boot.php:2393
+#: ../../boot.php:2401 ../../boot.php:2413 ../../boot.php:2428
+#: ../../boot.php:2377
+msgid "September"
+msgstr "Septembre"
+
+#: ../../boot.php:2390 ../../boot.php:2391 ../../boot.php:2393
+#: ../../boot.php:2401 ../../boot.php:2413 ../../boot.php:2428
+#: ../../boot.php:2377
+msgid "October"
+msgstr "Octobre"
+
+#: ../../boot.php:2390 ../../boot.php:2391 ../../boot.php:2393
+#: ../../boot.php:2401 ../../boot.php:2413 ../../boot.php:2428
+#: ../../boot.php:2377
+msgid "November"
+msgstr "Novembre"
+
+#: ../../boot.php:2390 ../../boot.php:2391 ../../boot.php:2393
+#: ../../boot.php:2401 ../../boot.php:2413 ../../boot.php:2428
+#: ../../boot.php:2377
+msgid "December"
+msgstr "Décembre"
+
+#: ../../boot.php:2424 ../../boot.php:2425 ../../boot.php:2427
+#: ../../boot.php:2433 ../../boot.php:2445 ../../boot.php:2460
+#: ../../boot.php:2409
+#, fuzzy
+msgid "Birthday Reminders"
+msgstr "Rappels d'anniversaires"
+
+#: ../../boot.php:2425 ../../boot.php:2426 ../../boot.php:2428
+#: ../../boot.php:2434 ../../boot.php:2446 ../../boot.php:2461
+#: ../../boot.php:2410
+msgid "Birthdays this week:"
+msgstr "Anniversaires cette semaine:"
+
+#: ../../boot.php:2426 ../../boot.php:2427 ../../boot.php:2429
+#: ../../boot.php:2435 ../../boot.php:2447 ../../boot.php:2462
+#: ../../boot.php:2411
+msgid "(Adjusted for local time)"
+msgstr "(Ajustés pour le fuseau horaire local)"
+
+#: ../../boot.php:2437 ../../boot.php:2438 ../../boot.php:2440
+#: ../../boot.php:2446 ../../boot.php:2458 ../../boot.php:2473
+#: ../../boot.php:2422
+msgid "[today]"
+msgstr "[aujourd'hui]"
+
+#: ../../boot.php:2634 ../../boot.php:2635 ../../boot.php:2637
+#: ../../boot.php:2643 ../../boot.php:2655 ../../boot.php:2670
+#: ../../boot.php:2619
+#, fuzzy
+msgid "link to source"
+msgstr "lien original"
+
+#: ../../index.php:194 ../../index.php:208
+msgid "Not Found"
+msgstr "Non trouvé"
+
+#: ../../index.php:195 ../../index.php:209
+msgid "Page not found."
+msgstr "Page introuvable."
+
+#: ../../mod/friendika.php:12
+msgid "This is Friendika version"
+msgstr "Motorisé par Friendika version"
+
+#: ../../mod/friendika.php:13
+msgid "running at web location"
+msgstr "hébergé sur"
+
+#: ../../mod/friendika.php:15
+msgid ""
+"Shared content within the Friendika network is provided under the <a href="
+"\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution "
+"3.0 license</a>"
+msgstr ""
+"Les contenus partagés au sein du réseau Friendika le sont sous la licence <a "
+"href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons "
+"Attribution 3.0</a>"
+
+#: ../../mod/friendika.php:17
+msgid ""
+"Please visit <a href=\"http://project.friendika.com\">Project.Friendika.com</"
+"a> to learn more about the Friendika project."
+msgstr ""
+"Pour en savoir plus, vous pouvez nous rendre visite sur <a href=\"http://"
+"project.friendika.com\">Project.Friendika.com</a>"
+
+#: ../../mod/friendika.php:19
+msgid "Bug reports and issues: please visit"
+msgstr "Pour les rapports de bugs: rendez vous sur"
+
+#: ../../mod/friendika.php:20
+msgid ""
+"Suggestions, praise, donations, etc. - please email \"Info\" at Friendika - "
+"dot com"
+msgstr ""
+"Suggestions, remerciements, donations, etc. - écrivez à \"Info\" arob. "
+"Friendika - point com"
+
+#: ../../mod/friendika.php:25
+msgid "Installed plugins/addons/apps"
+msgstr "Extensions/greffons/applications installées"
+
+#: ../../mod/friendika.php:33
+msgid "No installed plugins/addons/apps"
+msgstr "Aucune extension/greffon/application installée"
+
+#: ../../mod/match.php:10
+msgid "Profile Match"
+msgstr "Correpondance de profils"
+
+#: ../../mod/match.php:50
+msgid "No matches"
+msgstr "Aucune correspondance"
+
+#: ../../mod/network.php:363 ../../mod/network.php:399
+#: ../../mod/network.php:409 ../../include/conversation.php:198
+#: ../../include/conversation.php:203 ../../include/conversation.php:213
+msgid "See more posts like this"
+msgstr "Davantage de publications similaires"
+
+#: ../../mod/network.php:382 ../../mod/profile.php:357
+#: ../../mod/network.php:418 ../../mod/profile.php:359
+#: ../../mod/network.php:428 ../../mod/profile.php:352
+#: ../../include/conversation.php:217 ../../include/conversation.php:227
+#: ../../include/conversation.php:237
+#, php-format
+msgid "See all %d comments"
+msgstr "Voir les %d commentaires"
+
+#: ../../mod/install.php:72
+msgid "Proceed with Installation"
+msgstr "Commencer l'installation"
+
+#: ../../mod/install.php:74
+msgid "Your Friendika site database has been installed."
+msgstr "La base de données de votre site Friendika a été installée."
+
+#: ../../mod/install.php:78
+msgid "Proceed to registration"
+msgstr "Commencer l'inscription"
+
+#: ../../mod/settings.php:345 ../../mod/settings.php:351
+msgid "Export Personal Data"
+msgstr "Exporter les données personnelles"
+
+#: ../../mod/directory.php:92 ../../mod/directory.php:94
+msgid "Gender: "
+msgstr "Genre: "
+
+#: ../../mod/directory.php:118 ../../mod/directory.php:120
+msgid "No entries (some entries may be hidden)."
+msgstr "Aucune entrée (certaines peuvent être cachées)."
+
+#: ../../mod/profile.php:102 ../../mod/mprofile.php:101
+#: ../../mod/profile.php:103
+msgid "Status"
+msgstr "Statut"
+
+#: ../../mod/profile.php:103 ../../mod/mprofile.php:102
+#: ../../include/profile_advanced.php:7 ../../mod/profile.php:104
+#: ../../mod/profperm.php:94
+msgid "Profile"
+msgstr "Profil"
+
+#: ../../mod/profile.php:104 ../../mod/mprofile.php:103
+#: ../../mod/profile.php:105
+msgid "Photos"
+msgstr "Photos"
+
+#: ../../mod/contacts.php:15
+msgid "Find People With Shared Interests"
+msgstr "Trouver des gens d'intérêts communs"
+
+#: ../../boot.php:2023 ../../boot.php:2025 ../../boot.php:2033
+#: ../../boot.php:2045 ../../boot.php:2046 ../../boot.php:1991
+#, php-format
+msgid "%d Contact"
+msgid_plural "%d Contacts"
+msgstr[0] "%d contact"
+msgstr[1] "%d contacts"
+
+#: ../../mod/oexchange.php:27
+msgid "Post successful."
+msgstr "Publication réussie."
+
+#: ../../mod/network.php:74 ../../mod/profile.php:142 ../../mod/network.php:82
+#: ../../mod/profile.php:135 ../../mod/network.php:80
+#: ../../mod/profile.php:136
+msgid "Enter a title for this item"
+msgstr "Saisissez un titre pour cet élément"
+
+#: ../../mod/network.php:105 ../../mod/profile.php:173
+#: ../../mod/network.php:113 ../../mod/profile.php:166
+#: ../../mod/network.php:111 ../../mod/profile.php:167
+msgid "Set title"
+msgstr "Définir un titre"
+
+#: ../../mod/profile_photo.php:200 ../../mod/profile_photo.php:204
+msgid "Crop Image"
+msgstr "(Re)cadrer l'image"
+
+#: ../../mod/profile_photo.php:201 ../../mod/profile_photo.php:205
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Ajustez le cadre de l'image pour une visualisation optimale."
+
+#: ../../mod/profile_photo.php:202 ../../mod/profile_photo.php:206
+msgid "Done Editing"
+msgstr "Édition terminée"
+
+#: ../../mod/notifications.php:68
+msgid "Pending Friend/Connect Notifications"
+msgstr "Notifications de relation/amitié enattente"
+
+#: ../../mod/notifications.php:143
+msgid "User registrations waiting for confirm"
+msgstr "Inscriptions d'utilisateurs en attente de confirmation"
+
+#: ../../boot.php:359 ../../boot.php:371 ../../boot.php:372
+msgid "Delete this item?"
+msgstr "Effacer cet élément?"
+
+#: ../../boot.php:360 ../../mod/network.php:505 ../../mod/display.php:173
+#: ../../mod/profile.php:387 ../../mod/photos.php:1108
+#: ../../include/conversation.php:292 ../../boot.php:372
+#: ../../include/conversation.php:306 ../../boot.php:373
+#: ../../include/conversation.php:316 ../../mod/photos.php:1111
+msgid "Comment"
+msgstr "Commenter"
+
+#: ../../include/profile_advanced.php:10 ../../mod/settings.php:358
+msgid "Full Name:"
+msgstr "Nom complet:"
+
+#: ../../include/profile_advanced.php:45
+msgid "j F, Y"
+msgstr "j F, Y"
+
+#: ../../include/profile_advanced.php:46
+msgid "j F"
+msgstr "j F"
+
+#: ../../include/profile_advanced.php:59
+msgid "Age:"
+msgstr "Age:"
+
+#: ../../include/profile_advanced.php:70
+msgid "<span class=\"heart\">&hearts;</span> Status:"
+msgstr "<span class=\"heart\">&hearts;</span> Statut:"
+
+#: ../../include/profile_advanced.php:90 ../../mod/profiles.php:388
+msgid "Sexual Preference:"
+msgstr "Préférence sexuelle:"
+
+#: ../../include/profile_advanced.php:115 ../../mod/profiles.php:390
+msgid "Political Views:"
+msgstr "Opinions politiques:"
+
+#: ../../include/profile_advanced.php:127
+msgid "Religion:"
+msgstr "Religion:"
+
+#: ../../include/profile_advanced.php:138
+#, fuzzy
+msgid "About:"
+msgstr "À propos:"
+
+#: ../../include/profile_advanced.php:150
+msgid "Hobbies/Interests:"
+msgstr "Passe-temps/Centres d'intérêt:"
+
+#: ../../include/profile_advanced.php:162
+msgid "Contact information and Social Networks:"
+msgstr "Coordonées/Réseaux sociaux:"
+
+#: ../../include/profile_advanced.php:174
+msgid "Musical interests:"
+msgstr "Goûts musicaux:"
+
+#: ../../include/profile_advanced.php:186
+#, fuzzy
+msgid "Books, literature:"
+msgstr "Lectures:"
+
+#: ../../include/profile_advanced.php:198
+msgid "Television:"
+msgstr "Télévision:"
+
+#: ../../include/profile_advanced.php:210
+#, fuzzy
+msgid "Film/dance/culture/entertainment:"
+msgstr "Cinéma/Danse/Culture/Divertissement:"
+
+#: ../../include/profile_advanced.php:222
+msgid "Love/Romance:"
+msgstr "Amour/Romance:"
+
+#: ../../include/profile_advanced.php:234
+msgid "Work/employment:"
+msgstr "Activité professionnelle/Occupation:"
+
+#: ../../include/profile_advanced.php:246
+#, fuzzy
+msgid "School/education:"
+msgstr "Études/Formation:"
+
+#: ../../mod/profiles.php:354
+msgid "Hide my contact/friend list from viewers of this profile?"
+msgstr "Cacher ma liste d'amis/contacts des visiteurs de ce profil?"
+
+#: ../../mod/profiles.php:369
+#, fuzzy
+msgid "Edit Profile Details"
+msgstr "Éditer les détails du profil"
+
+#: ../../mod/profiles.php:371
+msgid "View this profile"
+msgstr "Voir ce profil"
+
+#: ../../mod/profiles.php:372
+msgid "Create a new profile using these settings"
+msgstr "Créer un nouveau profil en utilisant ces réglages"
+
+#: ../../mod/profiles.php:373
+msgid "Clone this profile"
+msgstr "Cloner ce profil"
+
+#: ../../mod/profiles.php:374
+msgid "Delete this profile"
+msgstr "Supprimer ce profil"
+
+#: ../../mod/profiles.php:375
+msgid "Profile Name:"
+msgstr "Nom du profil:"
+
+#: ../../mod/profiles.php:376
+msgid "Your Full Name:"
+msgstr "Votre nom complet:"
+
+#: ../../mod/profiles.php:377
+msgid "Title/Description:"
+msgstr "Titre/Description:"
+
+#: ../../mod/profiles.php:378
+msgid "Your Gender:"
+msgstr "Votre genre:"
+
+#: ../../mod/profiles.php:379
+msgid "Birthday (y/m/d):"
+msgstr "Anniversaire (j/m/a):"
+
+#: ../../mod/profiles.php:380
+msgid "Street Address:"
+msgstr "Adresse postale:"
+
+#: ../../mod/profiles.php:381
+msgid "Locality/City:"
+msgstr "Ville/Localité:"
+
+#: ../../mod/profiles.php:382
+msgid "Postal/Zip Code:"
+msgstr "Code postal:"
+
+#: ../../mod/profiles.php:383
+msgid "Country:"
+msgstr "Pays:"
+
+#: ../../mod/profiles.php:384
+#, fuzzy
+msgid "Region/State:"
+msgstr "Région/État:"
+
+#: ../../mod/profiles.php:385
+msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
+msgstr "<span class=\"heart\">&hearts;</span> Statut marital:"
+
+#: ../../mod/profiles.php:386
+msgid "Who: (if applicable)"
+msgstr "Qui: (si pertinent)"
+
+#: ../../mod/profiles.php:387
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+msgstr "Exemples: cathy123, Cathy Williams, cathy@example.com"
+
+#: ../../mod/profiles.php:389
+msgid "Homepage URL:"
+msgstr "Page personnelle:"
+
+#: ../../mod/profiles.php:391
+msgid "Religious Views:"
+msgstr "Opinions religieuses:"
+
+#: ../../mod/profiles.php:392
+msgid "Public Keywords:"
+msgstr "Mots-clés publics:"
+
+#: ../../mod/profiles.php:393
+msgid "Private Keywords:"
+msgstr "Mots-clés privés:"
+
+#: ../../mod/profiles.php:394
+msgid "Example: fishing photography software"
+msgstr "Exemple: football dessin programmation"
+
+#: ../../mod/profiles.php:395
+#, fuzzy
+msgid "(Used for suggesting potential friends, can be seen by others)"
+msgstr ""
+"(Utilisés pour vous suggérer des amis potentiels, peuvent être vus par "
+"autrui)"
+
+#: ../../mod/profiles.php:396
+#, fuzzy
+msgid "(Used for searching profiles, never shown to others)"
+msgstr ""
+"(Utilisés pour rechercher dans les profils, ne seront jamais montrés à "
+"autrui)"
+
+#: ../../mod/profiles.php:397
+#, fuzzy
+msgid "Tell us about yourself..."
+msgstr "Parlez-nous de vous..."
+
+#: ../../mod/profiles.php:398
+#, fuzzy
+msgid "Hobbies/Interests"
+msgstr "Passe-temps/Centres d'intérêt"
+
+#: ../../mod/profiles.php:399
+#, fuzzy
+msgid "Contact information and Social Networks"
+msgstr "Coordonées/Réseaux sociaux"
+
+#: ../../mod/profiles.php:400
+#, fuzzy
+msgid "Musical interests"
+msgstr "Goûts musicaux"
+
+#: ../../mod/profiles.php:401
+#, fuzzy
+msgid "Books, literature"
+msgstr "Lectures"
+
+#: ../../mod/profiles.php:402
+#, fuzzy
+msgid "Television"
+msgstr "Télévision"
+
+#: ../../mod/profiles.php:403
+#, fuzzy
+msgid "Film/dance/culture/entertainment"
+msgstr "Cinéma/Danse/Culture/Divertissement"
+
+#: ../../mod/profiles.php:404
+#, fuzzy
+msgid "Love/romance"
+msgstr "Amour/Romance"
+
+#: ../../mod/profiles.php:405
+#, fuzzy
+msgid "Work/employment"
+msgstr "Activité professionnelle/Occupation"
+
+#: ../../mod/profiles.php:406
+#, fuzzy
+msgid "School/education"
+msgstr "Études/Formation"
+
+#: ../../mod/profiles.php:457
+#, fuzzy
+msgid "Change profile photo"
+msgstr "Changer de photo de profil"
+
+#: ../../mod/profiles.php:458
+#, fuzzy
+msgid "Create New Profile"
+msgstr "Créer un nouveau profil"
+
+#: ../../mod/network.php:59 ../../mod/network.php:57
+#, php-format
+msgid "%d member"
+msgid_plural "%d members"
+msgstr[0] "%d membre"
+msgstr[1] "%d membres"
+
+#: ../../mod/network.php:60 ../../mod/network.php:58
+#, fuzzy, php-format
+msgid "Warning: This group contains %s from an insecure network."
+msgstr ""
+"Attention : ce groupe contient %s, qui se connecte depuis un réseau non-"
+"sécurisé."
+
+#: ../../mod/network.php:61 ../../mod/network.php:59
+#, fuzzy
+msgid "Private messages to this group are at risk of public disclosure."
+msgstr ""
+"Les messages privés envoyés à ce groupe s'exposent à une diffusion "
+"incontrôlée."
+
+#: ../../mod/message.php:240
+#, fuzzy
+msgid "D, d M Y - g:i A"
+msgstr "D, d M Y - g:i A"
+
+#: ../../mod/install.php:121
+#, fuzzy
+msgid "Friendika Social Network"
+msgstr "Réseau social Friendika"
+
+#: ../../mod/install.php:122
+#, fuzzy
+msgid "Installation"
+msgstr "Installation"
+
+#: ../../mod/install.php:123
+#, fuzzy
+msgid ""
+"In order to install Friendika we need to know how to contact your database."
+msgstr ""
+"Pour installer Friendika, nous avons besoin de contacter votre base de "
+"données."
+
+#: ../../mod/install.php:124
+#, fuzzy
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr ""
+"Merci de vous tourner vers votre hébergeur et/ou administrateur pour toute "
+"question concernant ces réglages."
+
+#: ../../mod/install.php:125
+#, fuzzy
+msgid ""
+"The database you specify below must already exist. If it does not, please "
+"create it before continuing."
+msgstr ""
+"La base de données que vous spécifierez doit exister. Si ce n'est pas encore "
+"le cas, merci de la créer avant de continuer."
+
+#: ../../mod/install.php:126
+#, fuzzy
+msgid "Database Server Name"
+msgstr "Serveur de base de données"
+
+#: ../../mod/install.php:127
+#, fuzzy
+msgid "Database Login Name"
+msgstr "Nom d'utilisateur de la base"
+
+#: ../../mod/install.php:128
+#, fuzzy
+msgid "Database Login Password"
+msgstr "Mot de passe de la base"
+
+#: ../../mod/install.php:129
+#, fuzzy
+msgid "Database Name"
+msgstr "Nom de la base"
+
+#: ../../mod/install.php:130
+#, fuzzy
+msgid "Please select a default timezone for your website"
+msgstr "Sélectionner un fuseau horaire par défaut pour votre site"
+
+#: ../../mod/settings.php:262
+#, fuzzy
+msgid "Normal Account"
+msgstr "Compte normal"
+
+#: ../../mod/settings.php:263
+#, fuzzy
+msgid "This account is a normal personal profile"
+msgstr ""
+"Ce compte correspond à un profil normal, pour une seule personne (physique, "
+"généralement)"
+
+#: ../../mod/settings.php:264
+#, fuzzy
+msgid "Soapbox Account"
+msgstr "Compte \"boîte à savon\""
+
+#: ../../mod/settings.php:265
+#, fuzzy
+msgid "Automatically approve all connection/friend requests as read-only fans"
+msgstr ""
+"Accepter automatiquement toutes les demandes d'amitié/connexion comme étant "
+"des fans 'en lecture seule'"
+
+#: ../../mod/settings.php:266
+#, fuzzy
+msgid "Community/Celebrity Account"
+msgstr "Compte de communauté/célébrité"
+
+#: ../../mod/settings.php:267
+#, fuzzy
+msgid "Automatically approve all connection/friend requests as read-write fans"
+msgstr ""
+"Accepter automatiquement toutes les demandes d'amitié/connexion comme étant "
+"des fans en 'lecture/écriture'"
+
+#: ../../mod/settings.php:268
+#, fuzzy
+msgid "Automatic Friend Account"
+msgstr "Compte auto-amical"
+
+#: ../../mod/settings.php:269
+#, fuzzy
+msgid "Automatically approve all connection/friend requests as friends"
+msgstr ""
+"Accepter automatiquement toutes les demandes d'amitié/connexion comme étant "
+"des amis"
+
+#: ../../mod/settings.php:288
+#, fuzzy
+msgid "Publish your default profile in site directory?"
+msgstr "Publier votre profil par défaut sur l'annuaire local?"
+
+#: ../../mod/settings.php:300
+#, fuzzy
+msgid "Publish your default profile in global social directory?"
+msgstr "Publier votre profil par défaut sur l'annuaire global?"
+
+#: ../../mod/settings.php:336 ../../mod/profile_photo.php:191
+#, fuzzy
+msgid "or"
+msgstr "ou"
+
+#: ../../mod/settings.php:341
+#, fuzzy
+msgid "Your profile address is"
+msgstr "Votre adresse de profil est"
+
+#: ../../mod/settings.php:357
+#, fuzzy
+msgid "Basic Settings"
+msgstr "Réglages basiques"
+
+#: ../../mod/settings.php:359
+#, fuzzy
+msgid "Email Address:"
+msgstr "Adresse courriel:"
+
+#: ../../mod/settings.php:360
+#, fuzzy
+msgid "Your Timezone:"
+msgstr "Fuseau horaire:"
+
+#: ../../mod/settings.php:361
+#, fuzzy
+msgid "Default Post Location:"
+msgstr "Publication par défaut depuis :"
+
+#: ../../mod/settings.php:362
+#, fuzzy
+msgid "Use Browser Location:"
+msgstr "Utiliser la localisation géographique du navigateur:"
+
+#: ../../mod/settings.php:363
+#, fuzzy
+msgid "Display Theme:"
+msgstr "Thème d'affichage:"
+
+#: ../../mod/settings.php:365
+#, fuzzy
+msgid "Security and Privacy Settings"
+msgstr "Réglages de sécurité et vie privée"
+
+#: ../../mod/settings.php:366
+#, fuzzy
+msgid "Maximum Friend Requests/Day:"
+msgstr "Nombre maximal de requêtes d'amitié/jour:"
+
+#: ../../mod/settings.php:367
+#, fuzzy
+msgid "(to prevent spam abuse)"
+msgstr "(pour limiter l'impact du spam)"
+
+#: ../../mod/settings.php:368
+#, fuzzy
+msgid "Allow friends to post to your profile page:"
+msgstr "Autoriser vos amis à publier sur votre page de profil:"
+
+#: ../../mod/settings.php:369
+#, fuzzy
+msgid "Automatically expire (delete) posts older than"
+msgstr "Fair e expirer automatiquement les publications de plus de"
+
+#: ../../mod/settings.php:371
+#, fuzzy
+msgid "Notification Settings"
+msgstr "Réglages de notification"
+
+#: ../../mod/settings.php:372
+#, fuzzy
+msgid "Send a notification email when:"
+msgstr "Envoyer un courriel de notification quand:"
+
+#: ../../mod/settings.php:373
+#, fuzzy
+msgid "You receive an introduction"
+msgstr "Vous recevez une introduction"
+
+#: ../../mod/settings.php:374
+#, fuzzy
+msgid "Your introductions are confirmed"
+msgstr "Vos introductions sont confirmées"
+
+#: ../../mod/settings.php:375
+#, fuzzy
+msgid "Someone writes on your profile wall"
+msgstr "Quelqu'un écrit sur votre mur"
+
+#: ../../mod/settings.php:376
+#, fuzzy
+msgid "Someone writes a followup comment"
+msgstr "Quelqu'un vous commente"
+
+#: ../../mod/settings.php:377
+#, fuzzy
+msgid "You receive a private message"
+msgstr "Vous recevez un message privé"
+
+#: ../../mod/settings.php:378
+#, fuzzy
+msgid "Password Settings"
+msgstr "Réglages de mot de passe"
+
+#: ../../mod/settings.php:379
+#, fuzzy
+msgid "Leave password fields blank unless changing"
+msgstr ""
+"Laissez les champs de mot de passe vierge, sauf si vous désirez les changer"
+
+#: ../../mod/settings.php:380
+#, fuzzy
+msgid "New Password:"
+msgstr "Nouveau mot de passe:"
+
+#: ../../mod/settings.php:381
+#, fuzzy
+msgid "Confirm:"
+msgstr "Confirmer:"
+
+#: ../../mod/settings.php:382
+#, fuzzy
+msgid "Advanced Page Settings"
+msgstr "Réglages avancés"
+
+#: ../../mod/lostpass.php:27
+#, fuzzy
+msgid "Password reset request issued. Check your email."
+msgstr "Réinitialisation du mot de passe en cours. Vérifiez votre courriel."
+
+#: ../../mod/lostpass.php:56
+#, fuzzy
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr ""
+"Impossible d'honorer cette demande. (Vous l'avez peut-être déjà utilisée par "
+"le passé.) La réinitialisation a échoué."
+
+#: ../../mod/lostpass.php:75
+#, fuzzy
+msgid "Your password has been reset as requested."
+msgstr "Votre mot de passe a bien été réinitialisé."
+
+#: ../../mod/lostpass.php:76
+#, fuzzy
+msgid "Your new password is"
+msgstr "Votre nouveau mot de passe est"
+
+#: ../../mod/lostpass.php:77
+#, fuzzy
+msgid "Save or copy your new password - and then"
+msgstr "Sauvez ou copiez ce nouveau mot de passe - puis"
+
+#: ../../mod/lostpass.php:78
+#, fuzzy
+msgid "click here to login"
+msgstr "cliquez ici pour vous connecter"
+
+#: ../../mod/lostpass.php:79
+#, fuzzy
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr ""
+"Votre mot de passe peut être changé depuis la page <em>Réglages</em>, une "
+"fois que vous serez connecté."
+
+#: ../../mod/lostpass.php:107
+#, fuzzy
+msgid "Forgot your Password?"
+msgstr "Mot de passe oublié?"
+
+#: ../../mod/lostpass.php:108
+#, fuzzy
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr ""
+"Entrez votre adresse de courriel et validez pour réinitialiser votre mot de "
+"passe. Vous recevrez la suite des instructions par courriel."
+
+#: ../../mod/lostpass.php:109
+#, fuzzy
+msgid "Nickname or Email: "
+msgstr "Pseudo ou courriel:"
+
+#: ../../mod/lostpass.php:110
+#, fuzzy
+msgid "Reset"
+msgstr "Réinitialiser"
+
+#: ../../mod/group.php:95 ../../mod/group.php:74
+#, fuzzy
+msgid "Create a group of contacts/friends."
+msgstr "Créez un groupe de contacts/amis."
+
+#: ../../mod/group.php:96 ../../mod/group.php:153 ../../mod/group.php:75
+#: ../../mod/group.php:158
+#, fuzzy
+msgid "Group Name: "
+msgstr "Nom du groupe:"
+
+#: ../../mod/group.php:152 ../../mod/group.php:157
+#, fuzzy
+msgid "Group Editor"
+msgstr "Éditeur de groupe"
+
+#: ../../mod/group.php:154
+#, fuzzy
+msgid "Members:"
+msgstr "Membres:"
+
+#: ../../mod/profile_photo.php:188
+#, fuzzy
+msgid "Upload File:"
+msgstr "Fichier à téléverser:"
+
+#: ../../mod/profile_photo.php:189
+#, fuzzy
+msgid "Upload Profile Photo"
+msgstr "Téléverser une photo de profil"
+
+#: ../../mod/profile_photo.php:190
+#, fuzzy
+msgid "Upload"
+msgstr "Téléverser"
+
+#: ../../mod/profile_photo.php:191
+#, fuzzy
+msgid "select a photo from your photo albums"
+msgstr "choisissez une photo depuis vos albums"
+
+#: ../../mod/directory.php:39
+#, fuzzy
+msgid "Site Directory"
+msgstr "Annuaire local"
+
+#: ../../mod/dfrn_request.php:503
+#, fuzzy, php-format
+msgid "Welcome home %s."
+msgstr "Bienvenue chez vous, %s."
+
+#: ../../mod/dfrn_request.php:504
+#, fuzzy, php-format
+msgid "Please confirm your introduction/connection request to %s."
+msgstr "Merci de confirmer votre demande d'introduction auprès de %s."
+
+#: ../../mod/dfrn_request.php:505
+#, fuzzy
+msgid "Confirm"
+msgstr "Confirmer"
+
+#: ../../mod/notifications.php:154
+#, fuzzy
+msgid "Deny"
+msgstr "Rejetter"
+
+#: ../../mod/contacts.php:265
+#, fuzzy
+msgid "Profile Visibility"
+msgstr "Visibilité du profil"
+
+#: ../../mod/contacts.php:266
+#, fuzzy, php-format
+msgid ""
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
+msgstr ""
+"Merci de choisir le profil que vous souhaitez montrer à %s lorsqu'il vous "
+"rend visite de manière nominative."
+
+#: ../../mod/contacts.php:267
+#, fuzzy
+msgid "Contact Information / Notes"
+msgstr "Informations de contact / Notes"
+
+#: ../../mod/contacts.php:268
+#, fuzzy
+msgid "Online Reputation"
+msgstr "Réputation en ligne"
+
+#: ../../mod/contacts.php:269
+#, fuzzy
+msgid ""
+"Occasionally your friends may wish to inquire about this person's online "
+"legitimacy."
+msgstr ""
+"De temps à autres, vos amis peuvent avoir besoin de connaître la légitimité "
+"de cette personne."
+
+#: ../../mod/contacts.php:270
+#, fuzzy
+msgid ""
+"You may help them choose whether or not to interact with this person by "
+"providing a <em>reputation</em> to guide them."
+msgstr ""
+"Vous pouvez les aider à choisir s'ils veulent - ou non - interagir avec "
+"cette personne en leur fournissant une mesure de <em>réputation</em>."
+
+#: ../../mod/contacts.php:271
+#, fuzzy
+msgid ""
+"Please take a moment to elaborate on this selection if you feel it could be "
+"helpful to others."
+msgstr ""
+"Merci de prendre un moment pour développer si vous pensez que cela peut être "
+"utile à d'autres."
+
+#: ../../boot.php:2416 ../../boot.php:2428 ../../boot.php:2443
+#: ../../boot.php:2392
+#, fuzzy
+msgid "g A l F d"
+msgstr "g A | F d"
+
+#: ../../boot.php:2734 ../../boot.php:2746 ../../boot.php:2761
+#: ../../include/conversation.php:517
+#, fuzzy
+msgid "View status"
+msgstr "Voir le statut"
+
+#: ../../boot.php:2735 ../../boot.php:2747 ../../boot.php:2762
+#: ../../include/conversation.php:518
+#, fuzzy
+msgid "View profile"
+msgstr "Voir le profil"
+
+#: ../../boot.php:2736 ../../boot.php:2748 ../../boot.php:2763
+#: ../../include/conversation.php:519
+#, fuzzy
+msgid "View photos"
+msgstr "Voir les photos"
+
+#: ../../boot.php:2738 ../../boot.php:2750 ../../boot.php:2765
+#: ../../include/conversation.php:521
+#, fuzzy
+msgid "Send PM"
+msgstr "Envoyer message"
+
+#: ../../include/conversation.php:118 ../../include/conversation.php:361
+#: ../../include/conversation.php:362 ../../include/conversation.php:116
+#: ../../include/conversation.php:376 ../../include/conversation.php:377
+#: ../../include/conversation.php:126 ../../include/conversation.php:386
+#: ../../include/conversation.php:387
+#, fuzzy, php-format
+msgid "View %s's profile"
+msgstr "Voir le profil de %s"
+
+#: ../../include/nav.php:68
+#, fuzzy
+msgid "Help"
+msgstr "Aide"
+
+#: ../../mod/profiles.php:470
+msgid "Visible to everybody"
+msgstr "Visible par tout le monde"
+
+#: ../../mod/profiles.php:471
+msgid "Edit visibility"
+msgstr "Changer la visibilité"
+
+#: ../../mod/group.php:156 ../../mod/profperm.php:96
+msgid "Click on a contact to add or remove."
+msgstr "Cliquez sur un contact pour l'ajouter ou le supprimer."
+
+#: ../../mod/group.php:169
+msgid "Members"
+msgstr "Membres"
+
+#: ../../mod/group.php:183
+msgid "All Contacts"
+msgstr "Tout les contacts"
+
+#: ../../mod/profperm.php:25 ../../mod/profperm.php:46
+msgid "Invalid profile identifier."
+msgstr "Identifiant de profil invalide."
+
+#: ../../mod/profperm.php:92
+msgid "Profile Visibility Editor"
+msgstr "Éditer la visibilité du profil"
+
+#: ../../mod/profperm.php:105
+msgid "Visible To"
+msgstr "Visible par"
+
+#: ../../mod/profperm.php:116
+msgid "All Contacts (with secure profile access)"
+msgstr "Tous les contacts (ayant un accès sécurisé)"
diff --git a/view/fr/pagetypes.tpl b/view/fr/pagetypes.tpl
deleted file mode 100644
index 2036614ab..000000000
--- a/view/fr/pagetypes.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-
- <div id="settings-normal-wrapper">
- <label id="settings-normal-label" for="settings-normal">Normal Profile</label>
- <input type="radio" name="page-flags" id="settings-normal" $normal_selected value="$page_normal" />
- <span id="settings-normal-desc">This account is a normal personal profile</span>
- </div>
- <div id="settings-normal-break" ></div>
- <div id="settings-soapbox-wrapper">
- <label id="settings-soapbox-label" for="settings-soapbox">Soapbox Profile</label>
- <input type="radio" name="page-flags" id="settings-soapbox" $soapbox_selected value="$page_soapbox" />
- <span id="settings-soapbox-desc">Automatically approve all connection/friend requests as read-only fans</span>
- </div>
- <div id="settings-soapbox-break" ></div>
- <div id="settings-community-wrapper">
- <label id="settings-community-label" for="settings-community">Community/Celebrity Profile</label>
- <input type="radio" name="page-flags" id="settings-community" $community_selected value="$page_community" />
- <span id="settings-community-desc">Automatically approve all connection/friend requests as read-write fans</span>
- </div>
- <div id="settings-community-break" ></div>
- <div id="settings-freelove-wrapper">
- <label id="settings-freelove-label" for="settings-freelove">Automatic Friend Profile</label>
- <input type="radio" name="page-flags" id="settings-freelove" $freelove_selected value="$page_freelove" />
- <span id="settings-freelove-desc">Automatically approve all connection/friend requests as friends</span>
- </div>
- <div id="settings-freelove-break" ></div>
diff --git a/view/fr/passchanged_eml.tpl b/view/fr/passchanged_eml.tpl
index 9692159e1..c1881b13e 100644
--- a/view/fr/passchanged_eml.tpl
+++ b/view/fr/passchanged_eml.tpl
@@ -1,20 +1,19 @@
-Dear $username,
- Your password has been changed as requested. Please retain this
-information for your records (or change your password immediately to
-something that you will remember).
+Chèr(e) $username,
+ Votre mot de passe a été changé, comme demandé. Merci de conserver
+cette information pour un usage ultérieur (ou bien de changer votre mot de
+passe immédiatement en quelque-chose dont vous vous souviendrez).
+Vos informations de connexion sont désormais:
-Your login details are as follows:
+Site: $siteurl
+Pseudo/Courriel: $email
+Mot de passe: $new_password
-Site Location: $siteurl
-Login Name: $email
-Password: $new_password
+Vous pouvez changer ce mot de passe depuis la page des réglages de votre compte,
+après connexion
-You may change that password from your account settings page after logging in.
-
-
-Sincerely,
- $sitename Administrator
+Sincèrement votre,
+ l'administrateur de $sitename
diff --git a/view/fr/profile-hide-friends.tpl b/view/fr/profile-hide-friends.tpl
deleted file mode 100644
index 54ade00fe..000000000
--- a/view/fr/profile-hide-friends.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<p id="hide-friends-text">
-Hide my contact/friend list from viewers of this profile?
-</p>
-
- <div id="hide-friends-yes-wrapper">
- <label id="hide-friends-yes-label" for="hide-friends-yes">Yes</label>
- <input type="radio" name="hide-friends" id="hide-friends-yes" $yes_selected value="1" />
-
- <div id="hide-friends-break" ></div>
- </div>
- <div id="hide-friends-no-wrapper">
- <label id="hide-friends-no-label" for="hide-friends-no">No</label>
- <input type="radio" name="hide-friends" id="hide-friends-no" $no_selected value="0" />
-
- <div id="hide-friends-end"></div>
- </div>
diff --git a/view/fr/profile.php b/view/fr/profile.php
deleted file mode 100644
index fa7372668..000000000
--- a/view/fr/profile.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html ><?php // This is a perfect example of why I prefer to use template files rather than mixed PHP/HTML ?>
-<html>
-<head>
- <title><?php if(x($page,'title')) echo $page['title']; ?></title>
- <?php if(x($page,'htmlhead')) echo $page['htmlhead']; ?>
-</head>
-<body>
-<header><?php if(x($page,'header')) echo $page['header']; ?></header>
-<nav><div id="top-margin"></div><?php if(x($page,'nav')) echo $page['nav']; ?></nav>
-<aside>
-<?php if((is_array($profile)) && count($profile)) { ?>
-<div class="vcard">
- <?php if(strlen($profile['name'])) { ?>
- <div class="fn"><?php echo $profile['name']; ?></div>
- <?php } ?>
-
- <?php if(strlen($profile['photo'])) { ?>
- <div id="profile-photo-wrapper"><img class="photo" src="<?php echo $profile['photo']; ?>" alt="<?php echo $profile['name']; ?>" /></div>
- <?php } ?>
-
- <div id="profile-extra-links">
- <ul>
- <?php if($profile['uid'] != $_SESSION['uid']) { ?>
- <li><a id="dfrn-request-link" href="dfrn_request/<?php echo $profile['nickname']; ?>">Connect</a></li>
- <?php } ?>
- </ul>
-
- </div>
-
- <?php if ( (strlen($profile['address']))
- || (strlen($profile['locality']))
- || (strlen($profile['region']))
- || (strlen($profile['postal-code']))
- || (strlen($profile['country-name']))) { ?>
- <div class="location">Location:
- <div class="adr">
- <div class="street-address"><?php if(strlen($profile['address'])) echo $profile['address']; ?></div>
- <span class="city-state-zip"><span class="locality"><?php echo $profile['locality']; ?></span><?php if(strlen($profile['locality'])) echo ', '; ?><span class="region"><?php echo $profile['region'] ?></span><?php if(strlen($profile['postal-code'])) { ?> <span class="postal-code"><?php echo $profile['postal-code']; ?></span><?php } ?></span>
- <span class="country-name"><?php echo $profile['country-name']; ?></span>
- </div>
- </div>
-
- <?php } ?>
-
- <?php if(strlen($profile['gender'])) { ?>
- <div class="mf">Gender: <span class="x-gender"><?php echo $profile['gender']; ?></span></div>
-
- <?php } ?>
-
- <?php if(strlen($profile['pubkey'])) { ?>
- <div class="key" style="display: none;"><?php echo $profile['pubkey']; ?></div>
- <?php } ?>
-</div>
-<?php } ?>
-<?php if(strlen($profile['marital'])) { ?>
-<div class="marital"><span class="marital-label"><span class="heart">&hearts;</span> Status: </span><span class="marital-text"><?php echo $profile['marital']; ?></span></div>
-<?php } ?>
-<?php if(strlen($profile['homepage'])) { ?>
-<div class="homepage"><span class="homepage-label">Homepage: </span><span class="homepage-url"><?php echo linkify($profile['homepage']); ?></span></div>
-<?php } ?>
-<?php if(x($page,'aside')) echo $page['aside'] ?>
-</aside>
-<section>
-<?php if(x($page,'content')) echo $page['content']; ?>
-<div id="page-footer"></div>
-</section>
-<footer>
-<?php if(x($page,'footer')) echo $page['footer']; ?>
-</footer>
-</body>
-</html>
-
diff --git a/view/fr/profile_advanced.php b/view/fr/profile_advanced.php
deleted file mode 100644
index 73f7f135e..000000000
--- a/view/fr/profile_advanced.php
+++ /dev/null
@@ -1,226 +0,0 @@
-<?php
-
-$o .= '';
-
-$o .= <<< EOT
-
-<h2>Profile</h2>
-
-
-EOT;
-
-if($a->profile['name']) {
-$o .= <<< EOT
-<div id="advanced-profile-name-wrapper" >
-<div id="advanced-profile-name-text">Full Name:</div>
-<div id="advanced-profile-name">{$a->profile['name']}</div>
-</div>
-<div id="advanced-profile-name-end"></div>
-EOT;
-}
-
-if($a->profile['gender']) {
-$o .= <<< EOT
-<div id="advanced-profile-gender-wrapper" >
-<div id="advanced-profile-gender-text">Gender:</div>
-<div id="advanced-profile-gender">{$a->profile['gender']}</div>
-</div>
-<div id="advanced-profile-gender-end"></div>
-EOT;
-}
-
-if(($a->profile['dob']) && ($a->profile['dob'] != '0000-00-00')) {
-$o .= <<< EOT
-<div id="advanced-profile-dob-wrapper" >
-<div id="advanced-profile-dob-text">Birthday:</div>
-EOT;
-
-// If no year, add an arbitrary one so just we can parse the month and day.
-
-$o .= '<div id="advanced-profile-dob">'
- . ((intval($a->profile['dob']))
- ? day_translate(datetime_convert('UTC','UTC',$a->profile['dob'],'j F, Y'))
- : day_translate(datetime_convert('UTC','UTC','2001-' . substr($a->profile['dob'],6),'j F')))
- . "</div>\r\n</div>";
-
-$o .= '<div id="advanced-profile-dob-end"></div>';
-
-}
-
-if($age = age($a->profile['dob'],$a->profile['timezone'],'')) {
-$o .= <<< EOT
-<div id="advanced-profile-age-wrapper" >
-<div id="advanced-profile-age-text">Age:</div>
-<div id="advanced-profile-age">$age</div>
-</div>
-<div id="advanced-profile-age-end"></div>
-EOT;
-}
-
-if($a->profile['marital']) {
-$o .= <<< EOT
-<div id="advanced-profile-marital-wrapper" >
-<div id="advanced-profile-marital-text"><span class="heart">&hearts;</span> Status:</div>
-<div id="advanced-profile-marital">{$a->profile['marital']}</div>
-EOT;
-
-if($a->profile['with'])
- $o .= "<div id=\"advanced-profile-with\">({$a->profile['with']})</div>";
-$o .= <<< EOT
-</div>
-<div id="advanced-profile-marital-end"></div>
-EOT;
-}
-
-if($a->profile['sexual']) {
-$o .= <<< EOT
-<div id="advanced-profile-sexual-wrapper" >
-<div id="advanced-profile-sexual-text">Sexual Preference:</div>
-<div id="advanced-profile-sexual">{$a->profile['sexual']}</div>
-</div>
-<div id="advanced-profile-sexual-end"></div>
-EOT;
-}
-
-if($a->profile['homepage']) {
- $homepage = linkify($a->profile['homepage']);
-$o .= <<< EOT
-<div id="advanced-profile-homepage-wrapper" >
-<div id="advanced-profile-homepage-text">Homepage:</div>
-<div id="advanced-profile-homepage">$homepage</div>
-</div>
-<div id="advanced-profile-homepage-end"></div>
-EOT;
-}
-
-if($a->profile['politic']) {
-$o .= <<< EOT
-<div id="advanced-profile-politic-wrapper" >
-<div id="advanced-profile-politic-text">Political Views:</div>
-<div id="advanced-profile-politic">{$a->profile['politic']}</div>
-</div>
-<div id="advanced-profile-politic-end"></div>
-EOT;
-}
-
-if($a->profile['religion']) {
-$o .= <<< EOT
-<div id="advanced-profile-religion-wrapper" >
-<div id="advanced-profile-religion-text">Religion:</div>
-<div id="advanced-profile-religion">{$a->profile['religion']}</div>
-</div>
-<div id="advanced-profile-religion-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['about'])) {
-$o .= <<< EOT
-<div id="advanced-profile-about-wrapper" >
-<div id="advanced-profile-about-text">About:</div>
-<br />
-<div id="advanced-profile-about">$txt</div>
-</div>
-<div id="advanced-profile-about-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['interest'])) {
-$o .= <<< EOT
-<div id="advanced-profile-interest-wrapper" >
-<div id="advanced-profile-interest-text">Hobbies/Interests:</div>
-<br />
-<div id="advanced-profile-interest">$txt</div>
-</div>
-<div id="advanced-profile-interest-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['contact'])) {
-$o .= <<< EOT
-<div id="advanced-profile-contact-wrapper" >
-<div id="advanced-profile-contact-text">Contact information and Social Networks:</div>
-<br />
-<div id="advanced-profile-contact">$txt</div>
-</div>
-<div id="advanced-profile-contact-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['music'])) {
-$o .= <<< EOT
-<div id="advanced-profile-music-wrapper" >
-<div id="advanced-profile-music-text">Musical interests:</div>
-<br />
-<div id="advanced-profile-music">$txt</div>
-</div>
-<div id="advanced-profile-music-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['book'])) {
-$o .= <<< EOT
-<div id="advanced-profile-book-wrapper" >
-<div id="advanced-profile-book-text">Books, literature:</div>
-<br />
-<div id="advanced-profile-book">$txt</div>
-</div>
-<div id="advanced-profile-book-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['tv'])) {
-$o .= <<< EOT
-<div id="advanced-profile-tv-wrapper" >
-<div id="advanced-profile-tv-text">Television:</div>
-<br />
-<div id="advanced-profile-tv">$txt</div>
-</div>
-<div id="advanced-profile-tv-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['film'])) {
-$o .= <<< EOT
-<div id="advanced-profile-film-wrapper" >
-<div id="advanced-profile-film-text">Film/dance/culture/entertainment:</div>
-<br />
-<div id="advanced-profile-film">$txt</div>
-</div>
-<div id="advanced-profile-film-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['romance'])) {
-$o .= <<< EOT
-<div id="advanced-profile-romance-wrapper" >
-<div id="advanced-profile-romance-text">Love/romance:</div>
-<br />
-<div id="advanced-profile-romance">$txt</div>
-</div>
-<div id="advanced-profile-romance-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['work'])) {
-$o .= <<< EOT
-<div id="advanced-profile-work-wrapper" >
-<div id="advanced-profile-work-text">Work/employment:</div>
-<br />
-<div id="advanced-profile-work">$txt</div>
-</div>
-<div id="advanced-profile-work-end"></div>
-EOT;
-}
-
-if($txt = prepare_text($a->profile['education'])) {
-$o .= <<< EOT
-<div id="advanced-profile-education-wrapper" >
-<div id="advanced-profile-education-text">School/education:</div>
-<br />
-<div id="advanced-profile-education">$txt</div>
-</div>
-<div id="advanced-profile-education-end"></div>
-EOT;
-}
-
-
diff --git a/view/fr/profile_edit.tpl b/view/fr/profile_edit.tpl
deleted file mode 100644
index beff3b8bd..000000000
--- a/view/fr/profile_edit.tpl
+++ /dev/null
@@ -1,293 +0,0 @@
-<h1>Edit Profile Details</h1>
-
-<div id="profile-edit-links">
-<ul>
-<li><a href="profile/$profile_id/view?tab=profile" id="profile-edit-view-link" title="View this profile">View this profile</a></li>
-<li><a href="profiles/clone/$profile_id" id="profile-edit-clone-link" title="Create a new profile using these settings">Clone this profile</a></li>
-<li></li>
-<li><a href="profiles/drop/$profile_id" id="profile-edit-drop-link" title="Delete this profile" $disabled >Delete this profile</a></li>
-
-</ul>
-</div>
-
-<div id="profile-edit-links-end"></div>
-
-$default
-
-<div id="profile-edit-wrapper" >
-<form id="profile-edit-form" name="form1" action="profiles/$profile_id" method="post" >
-
-<div id="profile-edit-profile-name-wrapper" >
-<label id="profile-edit-profile-name-label" for="profile-edit-profile-name" >Profile Name: </label>
-<input type="text" size="32" name="profile_name" id="profile-edit-profile-name" value="$profile_name" /><div class="required">*</div>
-</div>
-<div id="profile-edit-profile-name-end"></div>
-
-<div id="profile-edit-name-wrapper" >
-<label id="profile-edit-name-label" for="profile-edit-name" >Your Full Name: </label>
-<input type="text" size="32" name="name" id="profile-edit-name" value="$name" />
-</div>
-<div id="profile-edit-name-end"></div>
-
-<div id="profile-edit-pdesc-wrapper" >
-<label id="profile-edit-pdesc-label" for="profile-edit-pdesc" >Title/Description: </label>
-<input type="text" size="32" name="pdesc" id="profile-edit-pdesc" value="$pdesc" />
-</div>
-<div id="profile-edit-pdesc-end"></div>
-
-
-<div id="profile-edit-gender-wrapper" >
-<label id="profile-edit-gender-label" for="gender-select" >Your Gender: </label>
-$gender
-</div>
-<div id="profile-edit-gender-end"></div>
-
-<div id="profile-edit-dob-wrapper" >
-<label id="profile-edit-dob-label" for="dob-select" >Birthday (y/m/d): </label>
-<div id="profile-edit-dob" >
-$dob $age
-</div>
-</div>
-<div id="profile-edit-dob-end"></div>
-
-$hide_friends
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
-<div id="profile-edit-address-wrapper" >
-<label id="profile-edit-address-label" for="profile-edit-address" >Street Address: </label>
-<input type="text" size="32" name="address" id="profile-edit-address" value="$address" />
-</div>
-<div id="profile-edit-address-end"></div>
-
-<div id="profile-edit-locality-wrapper" >
-<label id="profile-edit-locality-label" for="profile-edit-locality" >Locality/City: </label>
-<input type="text" size="32" name="locality" id="profile-edit-locality" value="$locality" />
-</div>
-<div id="profile-edit-locality-end"></div>
-
-
-<div id="profile-edit-postal-code-wrapper" >
-<label id="profile-edit-postal-code-label" for="profile-edit-postal-code" >Postal/Zip Code: </label>
-<input type="text" size="32" name="postal_code" id="profile-edit-postal-code" value="$postal_code" />
-</div>
-<div id="profile-edit-postal-code-end"></div>
-
-<div id="profile-edit-country-name-wrapper" >
-<label id="profile-edit-country-name-label" for="profile-edit-country-name" >Country: </label>
-<select name="country_name" id="profile-edit-country-name" onChange="Fill_States('$region');">
-<option selected="selected" >$country_name</option>
-<option>temp</option>
-</select>
-</div>
-<div id="profile-edit-country-name-end"></div>
-
-<div id="profile-edit-region-wrapper" >
-<label id="profile-edit-region-label" for="profile-edit-region" >Region/State: </label>
-<select name="region" id="profile-edit-region" onChange="Update_Globals();" >
-<option selected="selected" >$region</option>
-<option>temp</option>
-</select>
-</div>
-<div id="profile-edit-region-end"></div>
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-<div id="profile-edit-marital-wrapper" >
-<label id="profile-edit-marital-label" for="profile-edit-marital" ><span class="heart">&hearts;</span> (Marital) Status: </label>
-$marital
-</div>
-<label id="profile-edit-with-label" for="profile-edit-with" > Who: (if applicable) </label>
-<input type="text" size="32" name="with" id="profile-edit-with" value="$with" />
-<div id="profile-edit-marital-end"></div>
-
-<div id="profile-edit-sexual-wrapper" >
-<label id="profile-edit-sexual-label" for="sexual-select" >Sexual Preference: </label>
-$sexual
-</div>
-<div id="profile-edit-sexual-end"></div>
-
-
-
-<div id="profile-edit-homepage-wrapper" >
-<label id="profile-edit-homepage-label" for="profile-edit-homepage" >Homepage URL: </label>
-<input type="text" size="32" name="homepage" id="profile-edit-homepage" value="$homepage" />
-</div>
-<div id="profile-edit-homepage-end"></div>
-
-<div id="profile-edit-politic-wrapper" >
-<label id="profile-edit-politic-label" for="profile-edit-politic" >Political Views: </label>
-<input type="text" size="32" name="politic" id="profile-edit-politic" value="$politic" />
-</div>
-<div id="profile-edit-politic-end"></div>
-
-<div id="profile-edit-religion-wrapper" >
-<label id="profile-edit-religion-label" for="profile-edit-religion" >Religion: </label>
-<input type="text" size="32" name="religion" id="profile-edit-religion" value="$religion" />
-</div>
-<div id="profile-edit-religion-end"></div>
-
-<div id="profile-edit-keywords-wrapper" >
-<label id="profile-edit-keywords-label" for="profile-edit-keywords" >Keywords: </label>
-<input type="text" size="32" name="keywords" id="profile-edit-keywords" title="Example: fishing photography software" value="$keywords" />
-</div><div id="profile-edit-keywords-desc">(Used for searching public profiles, never shown to others)</div>
-<div id="profile-edit-keywords-end"></div>
-
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-<div id="about-jot-wrapper" >
-<p id="about-jot-desc" >
-Tell us about yourself...
-</p>
-
-<textarea rows="10" cols="72" id="profile-jot-text" name="about" >$about</textarea>
-
-</div>
-<div id="about-jot-end"></div>
-</div>
-
-
-<div id="interest-jot-wrapper" >
-<p id="interest-jot-desc" >
-Hobbies/Interests
-</p>
-
-<textarea rows="10" cols="72" id="interest-jot-text" name="interest" >$interest</textarea>
-
-</div>
-<div id="interest-jot-end"></div>
-</div>
-
-
-<div id="contact-jot-wrapper" >
-<p id="contact-jot-desc" >
-Contact information and Social Networks
-</p>
-
-<textarea rows="10" cols="72" id="contact-jot-text" name="contact" >$contact</textarea>
-
-</div>
-<div id="contact-jot-end"></div>
-</div>
-
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
-<div id="music-jot-wrapper" >
-<p id="music-jot-desc" >
-Musical interests
-</p>
-
-<textarea rows="10" cols="72" id="music-jot-text" name="music" >$music</textarea>
-
-</div>
-<div id="music-jot-end"></div>
-</div>
-
-<div id="book-jot-wrapper" >
-<p id="book-jot-desc" >
-Books, literature
-</p>
-
-<textarea rows="10" cols="72" id="book-jot-text" name="book" >$book</textarea>
-
-</div>
-<div id="book-jot-end"></div>
-</div>
-
-
-
-<div id="tv-jot-wrapper" >
-<p id="tv-jot-desc" >
-Television
-</p>
-
-<textarea rows="10" cols="72" id="tv-jot-text" name="tv" >$tv</textarea>
-
-</div>
-<div id="tv-jot-end"></div>
-</div>
-
-
-
-<div id="film-jot-wrapper" >
-<p id="film-jot-desc" >
-Film/dance/culture/entertainment
-</p>
-
-<textarea rows="10" cols="72" id="film-jot-text" name="film" >$film</textarea>
-
-</div>
-<div id="film-jot-end"></div>
-</div>
-
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
-<div id="romance-jot-wrapper" >
-<p id="romance-jot-desc" >
-Love/romance
-</p>
-
-<textarea rows="10" cols="72" id="romance-jot-text" name="romance" >$romance</textarea>
-
-</div>
-<div id="romance-jot-end"></div>
-</div>
-
-
-
-<div id="work-jot-wrapper" >
-<p id="work-jot-desc" >
-Work/employment
-</p>
-
-<textarea rows="10" cols="72" id="work-jot-text" name="work" >$work</textarea>
-
-</div>
-<div id="work-jot-end"></div>
-</div>
-
-
-
-<div id="education-jot-wrapper" >
-<p id="education-jot-desc" >
-School/education
-</p>
-
-<textarea rows="10" cols="72" id="education-jot-text" name="education" >$education</textarea>
-
-</div>
-<div id="education-jot-end"></div>
-</div>
-
-
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
-</form>
-</div>
-<script type="text/javascript">Fill_Country('$country_name');Fill_States('$region');</script> \ No newline at end of file
diff --git a/view/fr/profile_entry_default.tpl b/view/fr/profile_entry_default.tpl
deleted file mode 100644
index 651199918..000000000
--- a/view/fr/profile_entry_default.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-
-<div class="profile-listing" >
-<div class="profile-listing-photo-wrapper" >
-<a href="profiles/$id" class="profile-listing-edit-link" ><img class="profile-listing-photo" id="profile-listing-photo-$id" src="$photo" alt="Profile Image" /></a>
-</div>
-<div class="profile-listing-photo-end" ></div>
-<div class="profile-listing-name" id="profile-listing-name-$id"><a href="profiles/$id" class="profile-listing-edit-link" >$profile_name</a></div>
-</div>
-<div class="profile-listing-end"></div>
diff --git a/view/fr/profile_listing_header.tpl b/view/fr/profile_listing_header.tpl
deleted file mode 100644
index 70393e1bc..000000000
--- a/view/fr/profile_listing_header.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<h1>Profiles</h1>
-<p id="profile-listing-desc" >
-<a href="profile_photo" >Changer la photo du profil</a>
-</p>
-<div id="profile-listing-new-link-wrapper" >
-<a href="profiles/new" id="profile-listing-new-link" name="Create New Profile" >Créer un nouveau profil</a>
-</div>
-
diff --git a/view/fr/profile_tabs.tpl b/view/fr/profile_tabs.tpl
deleted file mode 100644
index 9c6c54a1c..000000000
--- a/view/fr/profile_tabs.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-
-<div id="profile-tabs-wrapper" >
- <a href="$url" id="profile-tab-status-link" class="profile-tabs" >Status</a>
- <a href="$url?tab=profile" id="profile-tab-profile-link" class="profile-tabs" >Profile</a>
- <a href="$phototab" id="profile-tab-photos-link" class="profile-tabs" >Photos</a>
-<div id="profile-tabs-end"></div>
-</div> \ No newline at end of file
diff --git a/view/fr/pwdreset.tpl b/view/fr/pwdreset.tpl
deleted file mode 100644
index dd609f061..000000000
--- a/view/fr/pwdreset.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<h3>Password Reset</h3>
-
-<p>
-Your password has been reset as requested.
-</p>
-<p>
-Your new password is
-</p>
-<p>
-$newpass
-</p>
-<p>
-Save or copy your new password - and then <a href="$baseurl" >click here to login</a>.
-</p>
-<p>
-Your password may be changed from the 'Settings' page after successful login. \ No newline at end of file
diff --git a/view/fr/register_open_eml.tpl b/view/fr/register_open_eml.tpl
index 8a00f21e9..d61a5996d 100644
--- a/view/fr/register_open_eml.tpl
+++ b/view/fr/register_open_eml.tpl
@@ -1,21 +1,21 @@
-Dear $username,
- Thank you for registering at $sitename. Your account has been created.
-The login details are as follows:
+Chèr(e) $username,
+ Merci de votre inscription à $sitename. Votre compte a été créé.
+Les informations de connexion sont comme suit:
+Site: $siteurl
+Pseudo/Courriel: $email
+Mot de passe: $password
-Site Location: $siteurl
-Login Name: $email
-Password: $password
+Vous pouvez changer de mot de passe dans la page des "Réglages" de votre compte,
+après connexion.
-You may change your password from your account "Settings" page after logging
-in.
+Merci de prendre quelques minutes pour découvrir les autres réglages disponibles
+sur cette page.
-Please take a few moments to review the other account settings on that page.
+Merci, et bienvenue sur $sitename.
-Thank you and welcome to $sitename.
-
-Sincerely,
- $sitename Administrator
+Sincèrement votre,
+ l'administrateur de $sitename
diff --git a/view/fr/register_verify_eml.tpl b/view/fr/register_verify_eml.tpl
index 60c38d800..54362ce18 100644
--- a/view/fr/register_verify_eml.tpl
+++ b/view/fr/register_verify_eml.tpl
@@ -1,26 +1,27 @@
-A new user registration request was received at $sitename which requires
-your approval.
+Une nouvelle demande d'inscription a été reçue sur $sitename, et elle
+nécessite votre approbation.
-The login details are as follows:
+Les informations de connexion sont comme suit:
-Full Name: $username
-Site Location: $siteurl
-Login Name: $email
+Nom complet: $username
+Site: $siteurl
+Pseudo/Courriel: $email
-To approve this request please visit the following link:
+Pour approuver cette demande, merci de suivre le lien:
-$siteurl/regmod/allow/$hash
+$siteurl/regmod/allow/$hash
-To deny the request and remove the account, please visit:
+Pour rejeter cette demande et supprimer le compte associé,
+merci de suivre le lien:
$siteurl/regmod/deny/$hash
-Thank you.
+En vous remerçiant.
diff --git a/view/fr/registrations-top.tpl b/view/fr/registrations-top.tpl
deleted file mode 100644
index d8faf3439..000000000
--- a/view/fr/registrations-top.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<h1>User registrations waiting for confirm</h1>
-
-
diff --git a/view/fr/registrations.tpl b/view/fr/registrations.tpl
deleted file mode 100644
index 73bc3883e..000000000
--- a/view/fr/registrations.tpl
+++ /dev/null
@@ -1 +0,0 @@
-<li>$fullname ($email) : <a href="$approvelink">Approuver</a> - <a href="$denylink">Refuser</a></li>
diff --git a/view/fr/request_notify_eml.tpl b/view/fr/request_notify_eml.tpl
index 9eef7a61e..afbb2ab7e 100644
--- a/view/fr/request_notify_eml.tpl
+++ b/view/fr/request_notify_eml.tpl
@@ -1,17 +1,17 @@
-Dear $myname,
+Chèr(e) $myname,
-You have just received a connection request at $sitename
+Vous venez de recevoir une demande de mise en relation sur $sitename
-from '$requestor'.
+venant de '$requestor'.
-You may visit their profile at $url.
+Vous pouvez visiter son profil sur $url.
-Please login to your site to view the complete introduction
-and approve or ignore/cancel the request.
+Vous pouvez vous connecter à votre site pour voir la demande
+complète et l'approuver ou l'ignorer/annuler.
$siteurl
-Regards,
+Cordialement,
- $sitename administrator \ No newline at end of file
+ l'administrateur de $sitename
diff --git a/view/fr/settings.tpl b/view/fr/settings.tpl
deleted file mode 100644
index 97d67cbf6..000000000
--- a/view/fr/settings.tpl
+++ /dev/null
@@ -1,163 +0,0 @@
-<h1>Account Settings</h1>
-
-<div id="plugin-settings-link"><a href="settings/addon">Plugin Settings</a></div>
-
-$nickname_block
-
-
-<form action="settings" id="settings-form" method="post" autocomplete="off" >
-
-
-<h3 class="settings-heading">Basic Settings</h3>
-
-<div id="settings-username-wrapper" >
-<label id="settings-username-label" for="settings-username" >Full Name: </label>
-<input type="text" name="username" id="settings-username" value="$username" />
-</div>
-<div id="settings-username-end" ></div>
-
-<div id="settings-email-wrapper" >
-<label id="settings-email-label" for="settings-email" >Email Address: </label>
-<input type="text" name="email" id="settings-email" value="$email" />
-</div>
-<div id="settings-email-end" ></div>
-
-
-
-<div id="settings-timezone-wrapper" >
-<label id="settings-timezone-label" for="timezone_select" >Your Timezone: </label>
-$zoneselect
-</div>
-<div id="settings-timezone-end" ></div>
-
-<div id="settings-defloc-wrapper" >
-<label id="settings-defloc-label" for="settings-defloc" >Default Post Location: </label>
-<input type="text" name="defloc" id="settings-defloc" value="$defloc" />
-</div>
-<div id="settings-defloc-end" ></div>
-
-<div id="settings-allowloc-wrapper" >
-<label id="settings-allowloc-label" for="settings-allowloc" >Use Browser Location: </label>
-<input type="checkbox" name="allow_location" id="settings-allowloc" value="1" $loc_checked />
-</div>
-<div id="settings-allowloc-end" ></div>
-
-
-
-
-<div id="settings-theme-select">
-<label id="settings-theme-label" for="theme-select" >Display Theme: </label>
-$theme
-</div>
-<div id="settings-theme-end"></div>
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
-<h3 class="settings-heading">Security and Privacy Settings</h3>
-
-
-<input type="hidden" name="visibility" value="$visibility" />
-
-<div id="settings-maxreq-wrapper">
-<label id="settings-maxreq-label" for="settings-maxreq" >Maximum Friend Requests/Day</label>
-<input id="settings-maxreq" name="maxreq" value="$maxreq" />
-<div id="settings-maxreq-desc">(to prevent spam abuse)</div>
-</div>
-<div id="settings-maxreq-end"></div>
-
-
-
-
-$profile_in_dir
-
-$profile_in_net_dir
-
-
-
-<div id="settings-default-perms" class="settings-default-perms" >
- <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >&#x21e9; $permissions</div>
- <div id="settings-default-perms-menu-end"></div>
-
- <div id="settings-default-perms-select" style="display: none;" >
-
- $aclselect
-
- </div>
-</div>
-<div id="settings-default-perms-end"></div>
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
-
-<h3 class="settings-heading">Notification Settings</h3>
-
-
-<div id="settings-notify-wrapper">
-<div id="settings-notify-desc">Send a notification email when: </div>
-<label for="notify1" id="settings-label-notify1">You receive an introduction</label>
-<input id="notify1" type="checkbox" $sel_notify1 name="notify1" value="1" />
-<div id="notify1-end"></div>
-<label for="notify2" id="settings-label-notify2">Your introductions are confirmed</label>
-<input id="notify2" type="checkbox" $sel_notify2 name="notify2" value="2" />
-<div id="notify2-end"></div>
-<label for="notify3" id="settings-label-notify3">Someone writes on your profile wall</label>
-<input id="notify3" type="checkbox" $sel_notify3 name="notify3" value="4" />
-<div id="notify3-end"></div>
-<label for="notify4" id="settings-label-notify4">Someone writes a followup comment</label>
-<input id="notify4" type="checkbox" $sel_notify4 name="notify4" value="8" />
-<div id="notify4-end"></div>
-<label for="notify5" id="settings-label-notify5">You receive a private message</label>
-<input id="notify5" type="checkbox" $sel_notify5 name="notify5" value="16" />
-<div id="notify5-end"></div>
-</div>
-<div id="settings=notify-end"></div>
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
-<h3 class="settings-heading">Password Settings</h3>
-
-
-<div id="settings-password-wrapper" >
-<p id="settings-password-desc" >
-Leave password fields blank unless changing
-</p>
-<label id="settings-password-label" for="settings-password" >New Password: </label>
-<input type="password" id="settings-password" name="npassword" />
-</div>
-<div id="settings-password-end" ></div>
-
-<div id="settings-confirm-wrapper" >
-<label id="settings-confirm-label" for="settings-confirm" >Confirm: </label>
-<input type="password" id="settings-confirm" name="confirm" />
-</div>
-<div id="settings-confirm-end" ></div>
-
-<div id="settings-openid-wrapper" >
- $oidhtml
-</div>
-<div id="settings-openid-end" ></div>
-
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
-<h3 class="settings-heading">Advanced Page Settings</h3>
-
-$pagetype
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
-</div>
-
-
diff --git a/view/fr/settings_nick_subdir.tpl b/view/fr/settings_nick_subdir.tpl
deleted file mode 100644
index 303c24df7..000000000
--- a/view/fr/settings_nick_subdir.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<p>
-It appears that your website is located in a subdirectory of the<br />
-$hostname website, so this setting may not work reliably.<br />
-</p>
-<p>If you have any issues, you may have better results using the profile<br /> address '<strong>$baseurl/profile/$nickname</strong>'.
-</p> \ No newline at end of file
diff --git a/view/fr/settings_nick_unset.tpl b/view/fr/settings_nick_unset.tpl
deleted file mode 100644
index 903768b59..000000000
--- a/view/fr/settings_nick_unset.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-<div id="settings-nick-wrapper" >
-<p id="settings-nickname-desc">
-Your profile URL is currently <strong>'$baseurl/profile/$uid'</strong>.
-Setting a nickname will allow a friendly profile URL such as
-<strong>'nickname@$basepath'</strong>.
-<br />
-Once set, it can never be changed. The nickname <strong>must</strong> start with a letter; and only letters, numbers, dashes, and underscores are allowed.
-</p>
-<label id="settings-nick-label" for="settings-nick" >URL Nickname: </label>
-<input type="text" name="nick" id="settings-nick" value="$nickname" />
-</div>
-<div id="settings-nick-end" ></div>
-
diff --git a/view/fr/strings.php b/view/fr/strings.php
index 423645c86..f2f27b0f4 100644
--- a/view/fr/strings.php
+++ b/view/fr/strings.php
@@ -1,1045 +1,772 @@
<?php
-$a->strings['Not Found'] = 'Non trouvé';
-$a->strings['Page not found.'] = 'Page introuvable.';
-$a->strings['Permission denied'] = 'Permission refusée';
-$a->strings['Permission denied.'] = 'Permission refusée.';
-$a->strings['Nickname or Email address: '] = 'Pseudo ou adresse email: ';
-$a->strings['Password: '] = 'Mot de passe: ';
-$a->strings['Login'] = 'Connexion';
-$a->strings['Nickname/Email/OpenID: '] = 'Pseudo/Email/OpenID: ';
-$a->strings['Password (if not OpenID): '] = 'Mot de passe (sauf pour OpenID): ';
-$a->strings['Forgot your password?'] = 'Mot de passe oublié?';
-$a->strings['Password Reset'] = 'Réinitialiser le mot de passe';
-$a->strings['prev'] = 'prev';
-$a->strings['first'] = 'first';
-$a->strings['last'] = 'last';
-$a->strings['next'] = 'next';
-$a->strings[' likes this.'] = ' aime ça.';
-$a->strings[' doesn\'t like this.'] = ' n\'aime pas ça.';
-$a->strings['people'] = 'personne(s)';
-$a->strings['like this.'] = 'aime(nt) ça.';
-$a->strings['don\'t like this.'] = 'n\'aime(nt) pas ça.';
-$a->strings['and'] = 'et';
-$a->strings[', and '] = ', et ';
-$a->strings[' other people'] = ' autre(s) personne(s)';
-$a->strings[' like this.'] = ' aime(nt) ça.';
-$a->strings[' don\'t like this.'] = ' n\'aime(nt) pas ça.';
-$a->strings['No contacts'] = 'Aucun contact';
-$a->strings['Contacts'] = 'Contacts';
-$a->strings['View Contacts'] = 'Voir les contacts';
-$a->strings['Search'] = 'Recherche';
-$a->strings['No profile'] = 'Aucun profil';
-$a->strings['Connect'] = 'Relier';
-$a->strings['Location:'] = 'Localisation:';
-$a->strings[', '] = ', ';
-$a->strings['Gender:'] = 'Genre:';
-$a->strings['Status:'] = 'Statut:';
-$a->strings['Homepage:'] = 'Page personnelle:';
-$a->strings['Monday'] = 'Lundi';
-$a->strings['Tuesday'] = 'Mardi';
-$a->strings['Wednesday'] = 'Mercredi';
-$a->strings['Thursday'] = 'Jeudi';
-$a->strings['Friday'] = 'Vendredi';
-$a->strings['Saturday'] = 'Samedi';
-$a->strings['Sunday'] = 'Dimanche';
-$a->strings['January'] = 'Janvier';
-$a->strings['February'] = 'Février';
-$a->strings['March'] = 'Mars';
-$a->strings['April'] = 'Avril';
-$a->strings['May'] = 'Mai';
-$a->strings['June'] = 'Juin';
-$a->strings['July'] = 'Juillet';
-$a->strings['August'] = 'Août';
-$a->strings['September'] = 'Septembre';
-$a->strings['October'] = 'Octobre';
-$a->strings['November'] = 'Novembre';
-$a->strings['December'] = 'Décembre';
-$a->strings['Birthdays this week:'] = 'Anniversaires cette semaine:';
-$a->strings['(Adjusted for local time)'] = '(Ajustés pour le fuseau horaire local)';
-$a->strings['[today]'] = '[aujourd\'hui]';
-$a->strings['Invite Friends'] = 'Inviter des amis';
-$a->strings['Connect/Follow [profile address]'] = 'Relier/Suivre [adresse du profil]';
-$a->strings['Example: bob@example.com, http://example.com/barbara'] = 'Exemple: bob@example.com, http://example.com/barbara';
-$a->strings['Follow'] = 'Suivre';
-$a->strings['Could not access contact record.'] = 'Impossible d\'accéder à l\'enregistrement du contact.';
-$a->strings['Could not locate selected profile.'] = 'Impossible de localiser le profil séléctionné.';
-$a->strings['Contact updated.'] = 'Contact mis-à-jour.';
-$a->strings['Failed to update contact record.'] = 'Échec de mise-à-jour du contact.';
-$a->strings['Contact has been '] = 'Ce contact a été ';
-$a->strings['blocked'] = 'bloqué';
-$a->strings['unblocked'] = 'débloqué';
-$a->strings['ignored'] = 'ignoré';
-$a->strings['unignored'] = 'des-ignoré';
-$a->strings['stopped following'] = 'retiré de la liste de suivi';
-$a->strings['Contact has been removed.'] = 'Ce contact a été retiré.';
-$a->strings['Contact not found.'] = 'Contact introuvable.';
-$a->strings['Mutual Friendship'] = 'Relation réciproque';
-$a->strings['is a fan of yours'] = 'est un fan de vous';
-$a->strings['you are a fan of'] = 'vous êtes un fan de';
-$a->strings['Contact Editor'] = 'Éditeur de contact';
-$a->strings['Visit $name\'s profile'] = 'Visiter le profil de $name';
-$a->strings['Block/Unblock contact'] = 'Bloquer/débloquer ce contact';
-$a->strings['Ignore contact'] = 'Ignorer ce contact';
-$a->strings['Delete contact'] = 'Effacer ce contact';
-$a->strings['Last updated: '] = 'Dernière mise-à-jour: ';
-$a->strings['Update public posts: '] = 'Met ses entrées publiques à jour: ';
-$a->strings['Never'] = 'Jamais';
-$a->strings['Unblock this contact'] = 'Débloquer ce contact';
-$a->strings['Block this contact'] = 'Bloquer ce contact';
-$a->strings['Unignore this contact'] = 'Cesser d\'ignorer ce contact';
-$a->strings['Ignore this contact'] = 'Ignorer ce contact';
-$a->strings['Currently blocked'] = 'Actuellement bloqué';
-$a->strings['Currently ignored'] = 'Actuellement ignoré';
-$a->strings['Show Blocked Connections'] = 'Montrer les connexions bloquées';
-$a->strings['Hide Blocked Connections'] = 'Cacher les connexion bloquées';
-$a->strings['Finding: '] = 'Trouvé: ';
-$a->strings['Find'] = 'Trouver';
-$a->strings['Visit '] = 'Visiter le profil de ';
-$a->strings['\'s profile'] = '';
-$a->strings['Edit contact'] = 'Éditer le contact';
-$a->strings['Profile not found.'] = 'Profil introuvable.';
-$a->strings['Response from remote site was not understood.'] = 'Réponse du site distant incomprise.';
-$a->strings['Unexpected response from remote site: '] = 'Réponse inattendue du site distant: ';
-$a->strings['Confirmation completed successfully.'] = 'Confirmation achevée avec succès.';
-$a->strings['Remote site reported: '] = 'Alerte du site distant: ';
-$a->strings['Temporary failure. Please wait and try again.'] = 'Échec temporaire. Merci de recommencer ultérieurement.';
-$a->strings['Introduction failed or was revoked.'] = 'Introduction échouée ou annulée.';
-$a->strings['Unable to set contact photo.'] = 'Impossible de définir la photo du contact.';
-$a->strings['is now friends with'] = 'est désormais relié à';
-$a->strings['No user record found for '] = 'Pas d\'utilisateur trouvé pour ';
-$a->strings['Our site encryption key is apparently messed up.'] = 'Notre clé de chiffrement de site est apparemment corrompue.';
-$a->strings['Empty site URL was provided or URL could not be decrypted by us.'] = 'URL de site absente ou indéchiffrable.';
-$a->strings['Contact record was not found for you on our site.'] = 'Pas d\'entrée pour ce contact sur notre site.';
-$a->strings['The ID provided by your system is a duplicate on our system. It should work if you try again.'] = 'L\'identifiant fourni par votre système fait doublon sur le notre. Cela peut fonctionner si vous réessayez.';
-$a->strings['Unable to set your contact credentials on our system.'] = 'Impossible de vous définir des permissions sur notre système.';
-$a->strings['Unable to update your contact profile details on our system'] = 'Impossible de mettre les détails de votre profil à jour sur notre système';
-$a->strings['Connection accepted at '] = 'Connexion acceptée à ';
-$a->strings['Administrator'] = 'Administrateur';
-$a->strings['New mail received at '] = 'Nouvel email reçu à ';
-$a->strings[' commented on an item at '] = ' a commenté une entrée à ';
-$a->strings[' welcomes '] = ' accueille ';
-$a->strings['This introduction has already been accepted.'] = 'Cette introduction a déjà été acceptée.';
-$a->strings['Profile location is not valid or does not contain profile information.'] = 'L\'emplacement du profil est invalide ou ne contient pas de profil valide.';
-$a->strings['Warning: profile location has no identifiable owner name.'] = 'Attention: l\'emplacement du profil n\'a pas de nom identifiable.';
-$a->strings['Warning: profile location has no profile photo.'] = 'Attention: l\'emplacement du profil n\'a pas de photo de profil.';
-$a->strings[' required parameter'] = ' paramètre(s) requis';
-$a->strings[' was '] = ' était ';
-$a->strings['s were '] = 'étaient ';
-$a->strings['not found at the given location.'] = 'introuvable(s) à l\'emplacement indiqué.';
-$a->strings['Introduction complete.'] = 'Phase de présentation achevée.';
-$a->strings['Unrecoverable protocol error.'] = 'Erreur de protocole non-récupérable.';
-$a->strings['Profile unavailable.'] = 'Profil indisponible.';
-$a->strings[' has received too many connection requests today.'] = ' a reçu trop de requêtes de connexion aujourd\'hui.';
-$a->strings['Spam protection measures have been invoked.'] = 'Des mesures de protection contre le spam ont été déclenchées.';
-$a->strings['Friends are advised to please try again in 24 hours.'] = 'Les relations sont encouragées à attendre 24 heures pour recommencer.';
-$a->strings['Invalid locator'] = 'Localisateur invalide';
-$a->strings['Unable to resolve your name at the provided location.'] = 'Impossible de résoudre votre nom à l\'emplacement fourni.';
-$a->strings['You have already introduced yourself here.'] = 'Vous vous êtes déjà présenté ici.';
-$a->strings['Apparently you are already friends with .'] = 'Apparemment vous êtes déjà relié à .';
-$a->strings['Invalid profile URL.'] = 'URL de profil invalide.';
-$a->strings['Disallowed profile URL.'] = 'URL de profil interdite.';
-$a->strings['Your introduction has been sent.'] = 'Votre présentation a été envoyée.';
-$a->strings['Please login to confirm introduction.'] = 'Connectez-vous pour confirmer l\'introduction.';
-$a->strings['Incorrect identity currently logged in. Please login to <strong>this</strong> profile.'] = 'Identité incorrecte actuellement connectée. Merci de vous connecter à <strong>ce</strong> profil.';
-$a->strings['[Name Withheld]'] = '[Nom non publié]';
-$a->strings['Friend/Connection Request'] = 'Requête de relation/amitié';
-$a->strings['Please answer the following:'] = 'Merci de répondre à ce qui suit:';
-$a->strings['Does $name know you?'] = 'Est-ce que $name vous connaît?';
-$a->strings['Yes'] = 'Oui';
-$a->strings['No'] = 'Non';
-$a->strings['Add a personal note:'] = 'Ajouter une note personnelle:';
-$a->strings['Please enter your profile address from one of the following supported social networks:'] = 'Merci d\'entrer l\'adresse de votre profil sur l\'une de ces réseaux sociaux:';
-$a->strings['Friendika'] = 'Friendika';
-$a->strings['StatusNet/Federated Social Web'] = 'StatusNet/Federated Social Web';
-$a->strings['Private (secure) network'] = 'Réseau privé (sécurisé)';
-$a->strings['Public (insecure) network'] = 'Réseau public (non-sécurisé)';
-$a->strings['Your profile address:'] = 'Votre adresse de profil:';
-$a->strings['Submit Request'] = 'Envoyer la requête';
-$a->strings['Cancel'] = 'Annuler';
-$a->strings['Global Directory'] = 'Annuaire global';
-$a->strings['Item not found.'] = 'Élément introuvable.';
-$a->strings['Private Message'] = 'Message privé';
-$a->strings["I like this \x28toggle\x29"] = "I like this \x28toggle\x29";
-$a->strings["I don't like this \x28toggle\x29"] = "I don't like this \x28toggle\x29";
-$a->strings['This is you'] = 'C\'est vous';
-$a->strings['View $name\'s profile'] = 'Voir le profil de $name';
-$a->strings['Item has been removed.'] = 'Cet élément a été enlevé.';
-$a->strings['The profile address specified does not provide adequate information.'] = 'L\'adresse de profil indiquée ne fournit par les informations adéquates.';
-$a->strings['Limited profile. This person will be unable to receive direct/personal notifications from you.'] = 'Profil limité. Cette personne ne sera pas capable de recevoir des notifications directes/personnelles de votre part.';
-$a->strings['Unable to retrieve contact information.'] = 'Impossible de récupérer les informations du contact.';
-$a->strings['following'] = 'following';
-$a->strings['Group created.'] = 'Groupe créé.';
-$a->strings['Could not create group.'] = 'Impossible de créer le groupe.';
-$a->strings['Group not found.'] = 'Groupe introuvable.';
-$a->strings['Group name changed.'] = 'Groupe renommé.';
-$a->strings['Membership list updated.'] = 'Liste des membres mise à jour.';
-$a->strings['Group removed.'] = 'Groupe enlevé.';
-$a->strings['Unable to remove group.'] = 'Impossible d\'enlever le groupe';
-$a->strings['Delete'] = 'Supprimer';
-$a->strings['Welcome to '] = 'Bienvenue à ';
-$a->strings['Could not create/connect to database.'] = 'Impossible de créer/atteindre la base de données.';
-$a->strings['Connected to database.'] = 'Connecté à la base de données.';
-$a->strings['Database import succeeded.'] = 'Import de base achevé avec succès.';
-$a->strings['IMPORTANT: You will need to [manually] setup a scheduled task for the poller.'] = 'IMPORTANT: Vous devez configurer [manuellement] une tâche programmée pour le \'poller\'.';
-$a->strings['Please see the file "INSTALL.txt".'] = 'Référez-vous au fichier \"INSTALL.txt\".';
-$a->strings['Database import failed.'] = 'Import de base échoué.';
-$a->strings['You may need to import the file "database.sql" manually using phpmyadmin or mysql.'] = 'Vous pourriez avoir besoin d\'importer le fichier \"database.sql\" manuellement au moyen de phpmyadmin ou de la commande mysql.';
-$a->strings['Welcome to Friendika.'] = 'Bienvenue sur Friendika.';
-$a->strings['Submit'] = 'Envoyer';
-$a->strings['Could not find a command line version of PHP in the web server PATH.'] = 'Impossible de trouver la version \"ligne de commande\" de PHP dans le PATH du serveur web.';
-$a->strings['This is required. Please adjust the configuration file .htconfig.php accordingly.'] = 'Ceci est requis. Merci d\'ajuster la configuration dans le fichier .htconfig.php en conséquence.';
-$a->strings['The command line version of PHP on your system does not have "register_argc_argv" enabled.'] = 'La version \"ligne de commande\" de PHP de votre système n\'a pas \"register_argc_argv\" d\'activé.';
-$a->strings['This is required for message delivery to work.'] = 'Ceci est requis pour que la livraison des messages fonctionne.';
-$a->strings['Error: the "openssl_pkey_new" function on this system is not able to generate encryption keys'] = 'Erreur: la fonction \"openssl_pkey_new\" de ce système ne permet pas de générer des clés de chiffrement';
-$a->strings['If running under Windows, please see "http://www.php.net/manual/en/openssl.installation.php".'] = 'Si vous utilisez Windows, merci de vous réferer à \"http://www.php.net/manual/en/openssl.installation.php\".';
-$a->strings['Error: Apache webserver mod-rewrite module is required but not installed.'] = 'Erreur: Le module \"rewrite\" du serveur web Apache est requis mais pas installé.';
-$a->strings['Error: libCURL PHP module required but not installed.'] = 'Erreur: Le module PHP \"libCURL\" est requis mais pas installé.';
-$a->strings['Error: GD graphics PHP module with JPEG support required but not installed.'] = 'Erreur: Le module PHP \"GD\" disposant du support JPEG est requis mais pas installé.';
-$a->strings['Error: openssl PHP module required but not installed.'] = 'Erreur: Le module PHP \"openssl\" est requis mais pas installé.';
-$a->strings['Error: mysqli PHP module required but not installed.'] = 'Erreur: Le module PHP \"mysqli\" est requis mais pas installé.';
-$a->strings['The web installer needs to be able to create a file called ".htconfig.php" in the top folder of your web server and it is unable to do so.'] = 'L\'installeur web doit être en mesure de créer un fichier \".htconfig.php\" à la racine de votre serveur web, mais il en est incapable.';
-$a->strings['This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can.'] = 'Le plus souvent, il s\'agit d\'un problème de permission. Le serveur web peut ne pas être capable d\'écrire dans votre répertoire - alors que vous-même le pouvez.';
-$a->strings['Please check with your site documentation or support people to see if this situation can be corrected.'] = 'Merci de vérifier - avec la documentation ou le support de votre hébergement - que la situation peut être corrigée.';
-$a->strings['If not, you may be required to perform a manual installation. Please see the file "INSTALL.txt" for instructions.'] = 'Dans le cas contraire, vous pouvez pratiquer une installation manuelle. Référez-vous au fichier \"INSTALL.txt\" pour les instructions.';
-$a->strings['The database configuration file ".htconfig.php" could not be written. Please use the enclosed text to create a configuration file in your web server root.'] = 'Le fichier de configuration de la base (\".htconfig.php\") ne peut être créé. Merci d\'utiliser le texte ci-joint pour créer ce fichier à la racine de votre hébergement.';
-$a->strings['Errors encountered creating database tables.'] = 'Des erreurs ont été signalées lors de la création des tables.';
-$a->strings[' : '] = ' : ';
-$a->strings['Not a valid email address.'] = 'Ceci n\'est pas une adresse email valide.';
-$a->strings['Please join my network on '] = 'Rejoignez mon réseau sur ';
-$a->strings['Message delivery failed.'] = 'L\'acheminement du message a échoué.';
-$a->strings[' messages sent.'] = ' messages envoyés.';
-$a->strings['Send invitations'] = 'Envoyer des invitations';
-$a->strings['Enter email addresses, one per line:'] = 'Entrez les adresses email, une par ligne:';
-$a->strings['Your message:'] = 'Votre message:';
-$a->strings['Please join my social network on '] = 'Rejoignez mon réseau social sur ';
-$a->strings['\r\n'] = '';
-$a->strings['To accept this invitation, please visit:'] = 'Pour accepter cette invitation, rendez vous sur:';
-$a->strings['Once you have registered, please connect with me via my profile page at:'] = 'Une fois inscrit, connectez-vous à la page de mon profil sur:';
-$a->strings['Unable to locate original post.'] = 'Impossible de localiser l\'article original.';
-$a->strings['Empty post discarded.'] = 'Article vide défaussé.';
-$a->strings['Wall Photos'] = 'Photos du mur';
-$a->strings[' commented on your item at '] = ' a commenté votre élément de ';
-$a->strings[' posted on your profile wall at '] = ' a posté sur votre mur à \r\n';
-$a->strings['photo'] = 'photo';
-$a->strings['status'] = 'statut';
-$a->strings['likes'] = 'aime';
-$a->strings['doesn\'t like'] = 'n\'aime pas';
-$a->strings['\'s'] = '\'s';
-$a->strings['Remote privacy information not available.'] = 'Informations de confidentialité indisponibles.';
-$a->strings['Visible to:'] = 'Visible par:';
-$a->strings['Password reset requested at '] = 'Réinitialisation de mot de passe demandée par ';
-$a->strings['No recipient selected.'] = 'Pas de destinataire sélectionné.';
-$a->strings['[no subject]'] = '[pas de sujet]';
-$a->strings['Unable to locate contact information.'] = 'Impossible de localiser les informations du contact.';
-$a->strings['Message sent.'] = 'Message envoyé.';
-$a->strings['Message could not be sent.'] = 'Impossible d\'envoyer le message.';
-$a->strings['Messages'] = 'Messages';
-$a->strings['Inbox'] = 'Messages entrants';
-$a->strings['Outbox'] = 'Messages sortants';
-$a->strings['New Message'] = 'Nouveau message';
-$a->strings['Message deleted.'] = 'Message supprimé.';
-$a->strings['Conversation removed.'] = 'Conversation supprimée.';
-$a->strings['Send Private Message'] = 'Envoyer un message privé';
-$a->strings['To:'] = 'À:';
-$a->strings['Subject:'] = 'Sujet:';
-$a->strings['Upload photo'] = 'Joindre photo';
-$a->strings['Insert web link'] = 'Insérer lien web';
-$a->strings['Please wait'] = 'Patientez';
-$a->strings['No messages.'] = 'Aucun message.';
-$a->strings['Delete conversation'] = 'Effacer conversation';
-$a->strings['Message not available.'] = 'Message indisponible.';
-$a->strings['Delete message'] = 'Effacer message';
-$a->strings['Send Reply'] = 'Répondre';
-$a->strings['Normal View'] = 'Vue normale';
-$a->strings['New Item View'] = 'Vue des nouveautés';
-$a->strings['Share'] = 'Share';
-$a->strings['Insert YouTube video'] = 'Insert YouTube video';
-$a->strings['Set your location'] = 'Set your location';
-$a->strings['Clear browser location'] = 'Clear browser location';
-$a->strings['Permission settings'] = 'Permission settings';
-$a->strings['No such group'] = 'Groupe inexistant';
-$a->strings['Group is empty'] = 'Groupe vide';
-$a->strings['Group: '] = 'Groupe: ';
-$a->strings['View in context'] = 'Voir dans le contexte';
-$a->strings['Invalid request identifier.'] = 'Identifiant de demande invalide.';
-$a->strings['Discard'] = 'Défausser';
-$a->strings['Ignore'] = 'Ignorer';
-$a->strings['Show Ignored Requests'] = 'Voir les demandes ignorées';
-$a->strings['Hide Ignored Requests'] = 'Cacher les demandes ignorées';
-$a->strings['Claims to be known to you: '] = 'Prétend que vous le connaissez: ';
-$a->strings['yes'] = 'oui';
-$a->strings['no'] = 'non';
-$a->strings['Approve as: '] = 'Approuver en tant que: ';
-$a->strings['Friend'] = 'Ami';
-$a->strings['Fan/Admirer'] = 'Fan/Admirateur';
-$a->strings['Notification type: '] = 'Type de notification: ';
-$a->strings['Friend/Connect Request'] = 'Demande de connexion/relation';
-$a->strings['New Follower'] = 'Nouvel abonné';
-$a->strings['Approve'] = 'Approuver';
-$a->strings['No notifications.'] = 'Pas de notification.';
-$a->strings['No registrations.'] = 'Pas d\'inscriptions.';
-$a->strings['Login failed.'] = 'Échec de connexion.';
-$a->strings['Welcome back '] = 'Bienvenue à nouveau, ';
-$a->strings['Photo Albums'] = 'Albums photo';
-$a->strings['Contact Photos'] = 'Photos du contact';
-$a->strings['Contact information unavailable'] = 'Informations de contact indisponibles';
-$a->strings['Profile Photos'] = 'Photos du profil';
-$a->strings['Album not found.'] = 'Album introuvable.';
-$a->strings['Delete Album'] = 'Effacer l\'album';
-$a->strings['Delete Photo'] = 'Effacer la photo';
-$a->strings['was tagged in a'] = 'a été identifié dans';
-$a->strings['by'] = 'par';
-$a->strings['Image exceeds size limit of '] = 'L\'image dépasse la taille maximale de ';
-$a->strings['Unable to process image.'] = 'Impossible de traiter l\'image.';
-$a->strings['Image upload failed.'] = 'L\'envoi de l\'image a échoué.';
-$a->strings['No photos selected'] = 'Aucune photo sélectionnée';
-$a->strings['Upload Photos'] = 'Envoyer des photos';
-$a->strings['New album name: '] = 'Nom du nouvel album: ';
-$a->strings['or existing album name: '] = 'ou nom d\'un album existant: ';
-$a->strings['Select files to upload: '] = 'Choisir les fichiers à envoyer: ';
-$a->strings['Permissions'] = 'Permissions';
-$a->strings['Use the following controls only if the Java uploader [above] fails to launch.'] = 'Utilisez le formulaire suivant uniquement si l\'applet Java [ci-dessus] ne parvient pas à se lancer.';
-$a->strings['Edit Album'] = 'Éditer l\'album';
-$a->strings['View Photo'] = 'Voir la photo';
-$a->strings['Photo not available'] = 'Photo indisponible';
-$a->strings['Edit photo'] = 'Éditer la photo';
-$a->strings['New album name'] = 'Nom du nouvel album';
-$a->strings['View Full Size'] = 'Voir en taille réelle';
-$a->strings['Tags: '] = 'Étiquettes: ';
-$a->strings['[Remove any tag]'] = '[Retirer toutes les étiquettes]';
-$a->strings['Caption'] = 'Titre';
-$a->strings['Add a Tag'] = 'Ajouter une étiquette';
-$a->strings['Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'] = 'Exemples: @bob, @Barbara_Jensen, @jim@example.com, #Californie, #vacances';
-$a->strings['Recent Photos'] = 'Photos récentes';
-$a->strings['Upload New Photos'] = 'Envoyer de nouvelles photos';
-$a->strings['View Album'] = 'Voir l\'album';
-$a->strings['Image uploaded but image cropping failed.'] = 'Image envoyée, mais impossible de la retailler.';
-$a->strings['Image size reduction [175] failed.'] = 'Réduction de taille d\'image [175] échouée.';
-$a->strings['Image size reduction [80] failed.'] = 'Réduction de taille d\'image [80] échouée.';
-$a->strings['Image size reduction [48] failed.'] = 'Réduction de taille d\'image [48] échouée.';
-$a->strings['Unable to process image'] = 'Impossible de traiter l\'image';
-$a->strings['Image uploaded successfully.'] = 'Image envoyée avec succès.';
-$a->strings['Image size reduction [640] failed.'] = 'Réduction de taille d\'image [640] échouée.';
-$a->strings['Profile Name is required.'] = 'Le nom du profil est requis.';
-$a->strings['Profile updated.'] = 'Profil mis à jour.';
-$a->strings['Profile deleted.'] = 'Profil supprimé.';
-$a->strings['Profile-'] = 'Profil-';
-$a->strings['New profile created.'] = 'Nouveau profil créé.';
-$a->strings['Profile unavailable to clone.'] = 'Ce profil ne peut être cloné.';
-$a->strings['This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet.'] = 'Ceci est votre profil <strong>public</strong>.<br />Il <strong>peut</strong> être visible par n\'importe quel utilisateur d\'Internet.';
-$a->strings['Age: '] = 'Age: ';
-$a->strings['Profile Image'] = 'Image du profil';
-$a->strings['Invalid OpenID url'] = 'Adresse OpenID invalide';
-$a->strings['Please enter the required information.'] = 'Entrez les informations requises.';
-$a->strings['Please use a shorter name.'] = 'Utilisez un nom plus court.';
-$a->strings['Name too short.'] = 'Nom trop court.';
-$a->strings['That doesn\'t appear to be your full (First Last) name.'] = '';
-$a->strings['Your email domain is not among those allowed on this site.'] = 'Votre domaine email n\'est pas autorisé sur ce site.';
-$a->strings['Cannot use that email.'] = 'Impossible d\'utiliser cet email.';
-$a->strings['Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.'] = 'Votre \"pseudo\" peut seulement contenir les caractères \"a-z\", \"0-9\", \"-\", and \"_\", et doit commencer par une lettre.';
-$a->strings['Nickname is already registered. Please choose another.'] = 'Pseudo déjà utilisé. Merci d\'en choisir un autre.';
-$a->strings['SERIOUS ERROR: Generation of security keys failed.'] = 'ERREUR SÉRIEUSE: La génération des clés de sécurité a échoué.';
-$a->strings['An error occurred during registration. Please try again.'] = 'Une erreur est survenue lors de l\'inscription. Merci de recommencer.';
-$a->strings['An error occurred creating your default profile. Please try again.'] = 'Une erreur est survenue lors de la création de votre profil par défaut. Merci de recommencer.';
-$a->strings['Registration details for '] = 'Détails de l\'inscription pour ';
-$a->strings['Registration successful. Please check your email for further instructions.'] = 'Inscription réussie. Vérifiez vos emails pour la suite des instructions.';
-$a->strings['Failed to send email message. Here is the message that failed.'] = 'Impossible d\'envoyer un email. Voici le message qui a échoué.';
-$a->strings['Your registration can not be processed.'] = 'Votre inscription ne peut être traitée.';
-$a->strings['Registration request at '] = 'Inscription demandée par ';
-$a->strings['Your registration is pending approval by the site owner.'] = 'Votre inscription attend une validation du propriétaire du site.';
-$a->strings['You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking \'Register\'.'] = 'Vous pouvez (si vous le souhaitez) remplir ce formulaire via OpenID. Fournissez votre OpenID et cliquez \"S\'inscrire\"';
-$a->strings['If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'] = 'Si vous n\'êtes pas familier avec OpenID, laissez ce champ vide et remplissez le reste.';
-$a->strings['Your OpenID (optional): '] = 'Votre OpenID (facultatif): ';
-$a->strings['Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.'] = 'Le contenu est partagé suivant les termes de la licence <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0</a>.';
-$a->strings['Registration'] = 'Inscription';
-$a->strings['Your Full Name (e.g. Joe Smith): '] = 'Votre nom cmplet (p.ex. Michel Dupont): ';
-$a->strings['Your Email Address: '] = 'Votre adresse email: ';
-$a->strings['Choose a profile nickname. This must begin with a text character. Your global profile locator will then be \'<strong>nickname@$sitename</strong>\'.'] = 'Choisissez un pseudo pour votre profil. Il devra commencer avec une lettre. L\'identifiant global de votre profil sera \'<strong>pseudo@$sitename</strong>\'.';
-$a->strings['Choose a nickname: '] = 'Choisir un pseudo: ';
-$a->strings['Register'] = 'S\'inscrire';
-$a->strings['Please login.'] = 'Merci de vous connecter.';
-$a->strings['Registration revoked for '] = 'Inscription révoquée pour ';
-$a->strings['Account approved.'] = 'Inscription validée.';
-$a->strings['Passwords do not match. Password unchanged.'] = 'Les mots de passe ne correspondent pas. Aucun changement appliqué.';
-$a->strings['Empty passwords are not allowed. Password unchanged.'] = 'Les mots de passe vides sont interdits. Aucun changement appliqué.';
-$a->strings['Password changed.'] = 'Mots de passe changés.';
-$a->strings['Password update failed. Please try again.'] = 'Le changement de mot de passe a échoué. Merci de recommencer.';
-$a->strings[' Please use a shorter name.'] = ' Merci d\'utiliser un nom plus court.';
-$a->strings[' Name too short.'] = ' Nom trop court.';
-$a->strings[' Not valid email.'] = ' Email invalide.';
-$a->strings[' Cannot change to that email.'] = ' Impossible de changer pour cet email.';
-$a->strings['Settings updated.'] = 'Réglages mis à jour.';
-$a->strings['Plugin Settings'] = 'Réglages des extensions';
-$a->strings['Account Settings'] = 'Réglages du compte';
-$a->strings['No Plugin settings configured'] = 'Pas de réglages d\'extensions configurés';
-$a->strings['OpenID: '] = 'OpenID: ';
-$a->strings['&nbsp;(Optional) Allow this OpenID to login to this account.'] = ' (Facultatif) Autoriser cet OpenID à se connecter à ce compte.';
-$a->strings['Profile is <strong>not published</strong>.'] = 'Ce profil n\'est <strong>pas publié</strong>.';
-$a->strings['Default Post Permissions'] = 'Permissions par défaut sur les articles';
-$a->strings['Tag removed'] = 'Étiquette enlevée';
-$a->strings['Remove Item Tag'] = 'Enlever l\'étiquette de l\'élément';
-$a->strings['Select a tag to remove: '] = 'Choisir une étiquette à enlever: ';
-$a->strings['Remove'] = 'Enlever';
-$a->strings['No contacts.'] = 'Aucun contact.';
-$a->strings['Visible To:'] = 'Visible par:';
-$a->strings['Groups'] = 'Groupes';
-$a->strings['Except For:'] = 'Sauf pour:';
-$a->strings['Logged out.'] = 'Déconnecté.';
-$a->strings['Unknown | Not categorised'] = 'Inconnu | Non-classé';
-$a->strings['Block immediately'] = 'Bloquer immédiatement';
-$a->strings['Shady, spammer, self-marketer'] = 'Douteux, spammeur, accro à l\'auto-promotion';
-$a->strings['Known to me, but no opinion'] = 'Connu de moi, mais sans opinion';
-$a->strings['OK, probably harmless'] = 'OK, probablement inoffensif';
-$a->strings['Reputable, has my trust'] = 'Réputé, a toute ma confiance';
-$a->strings['Frequently'] = 'Fréquemment';
-$a->strings['Hourly'] = 'Toutes les heures';
-$a->strings['Twice daily'] = 'Deux fois par jour';
-$a->strings['Daily'] = 'Chaque jour';
-$a->strings['Weekly'] = 'Chaque semaine';
-$a->strings['Monthly'] = 'Chaque mois';
-$a->strings['Miscellaneous'] = 'Divers';
-$a->strings['less than a second ago'] = 'il y a moins d\'une seconde';
-$a->strings['year'] = 'an';
-$a->strings['years'] = 'ans';
-$a->strings['month'] = 'mois';
-$a->strings['months'] = 'mois';
-$a->strings['week'] = 'semaine';
-$a->strings['weeks'] = 'semaines';
-$a->strings['day'] = 'jour';
-$a->strings['days'] = 'jours';
-$a->strings['hour'] = 'heure';
-$a->strings['hours'] = 'heures';
-$a->strings['minute'] = 'minute';
-$a->strings['minutes'] = 'minutes';
-$a->strings['second'] = 'seconde';
-$a->strings['seconds'] = 'secondes';
-$a->strings[' ago'] = ' auparavant';
-$a->strings['Create a new group'] = 'Créer un nouveau groupe';
-$a->strings['Everybody'] = 'Tout le monde';
-$a->strings['Birthday:'] = 'Anniversaire:';
-$a->strings['Logout'] = 'Se déconnecter';
-$a->strings['Home'] = 'Accueil';
-$a->strings['Directory'] = 'Annuaire';
-$a->strings['Network'] = 'Réseau';
-$a->strings['Notifications'] = 'Notifications';
-$a->strings['Settings'] = 'Réglages';
-$a->strings['Profiles'] = 'Profils';
-$a->strings['Male'] = 'Masculin';
-$a->strings['Female'] = 'Féminin';
-$a->strings['Currently Male'] = 'Actuellement masculin';
-$a->strings['Currently Female'] = 'Actuellement féminin';
-$a->strings['Mostly Male'] = 'Principalement masculin';
-$a->strings['Mostly Female'] = 'Principalement féminin';
-$a->strings['Transgender'] = 'Transgenre';
-$a->strings['Intersex'] = 'Inter-sexe';
-$a->strings['Transsexual'] = 'Transsexuel';
-$a->strings['Hermaphrodite'] = 'Hermaphrodite';
-$a->strings['Neuter'] = 'Neutre';
-$a->strings['Non-specific'] = 'Non-spécifique';
-$a->strings['Other'] = 'Autre';
-$a->strings['Undecided'] = 'Indécis';
-$a->strings['Males'] = 'Hommes';
-$a->strings['Females'] = 'Femmes';
-$a->strings['Gay'] = 'Gay';
-$a->strings['Lesbian'] = 'Lesbienne';
-$a->strings['No Preference'] = 'Sans préférence';
-$a->strings['Bisexual'] = 'Bisexuel';
-$a->strings['Autosexual'] = 'Auto-sexuel';
-$a->strings['Abstinent'] = 'Abstinent';
-$a->strings['Virgin'] = 'Vierge';
-$a->strings['Deviant'] = 'Déviant';
-$a->strings['Fetish'] = 'Fétichiste';
-$a->strings['Oodles'] = 'Oodles';
-$a->strings['Nonsexual'] = 'Non-sexuel';
-$a->strings['Single'] = 'Célibataire';
-$a->strings['Lonely'] = 'Esseulé';
-$a->strings['Available'] = 'Disponible';
-$a->strings['Unavailable'] = 'Indisponible';
-$a->strings['Dating'] = 'Dans une relation';
-$a->strings['Unfaithful'] = 'Infidèle';
-$a->strings['Sex Addict'] = 'Accro au sexe';
-$a->strings['Friends'] = 'Amis';
-$a->strings['Friends/Benefits'] = 'Amis par intérêt';
-$a->strings['Casual'] = 'Casual';
-$a->strings['Engaged'] = 'Fiancé';
-$a->strings['Married'] = 'Marié';
-$a->strings['Partners'] = 'Partenaire';
-$a->strings['Cohabiting'] = 'En cohabitation';
-$a->strings['Happy'] = 'Heureux';
-$a->strings['Not Looking'] = 'Sans recherche';
-$a->strings['Swinger'] = 'Échangiste';
-$a->strings['Betrayed'] = 'Trahi(e)';
-$a->strings['Separated'] = 'Séparé';
-$a->strings['Unstable'] = 'Instable';
-$a->strings['Divorced'] = 'Divorcé';
-$a->strings['Widowed'] = 'Veuf/Veuve';
-$a->strings['Uncertain'] = 'Incertain';
-$a->strings['Complicated'] = 'Compliqué';
-$a->strings['Don\'t care'] = 'S\'en désintéresse';
-$a->strings['Ask me'] = 'Me demander';
-$a->strings['Africa/Abidjan'] = 'Afrique/Abidjan';
-$a->strings['Africa/Accra'] = 'Afrique/Accra';
-$a->strings['Africa/Addis_Ababa'] = 'Afrique/Addis-Abeba';
-$a->strings['Africa/Algiers'] = 'Afrique/Alger';
-$a->strings['Africa/Asmara'] = 'Afrique/Asmara';
-$a->strings['Africa/Asmera'] = 'Afrique/Asmera';
-$a->strings['Africa/Bamako'] = 'Afrique/Bamako';
-$a->strings['Africa/Bangui'] = 'Afrique/Bangui';
-$a->strings['Africa/Banjul'] = 'Afrique/Banjul';
-$a->strings['Africa/Bissau'] = 'Afrique/Bissau';
-$a->strings['Africa/Blantyre'] = 'Afrique/Blantyre';
-$a->strings['Africa/Brazzaville'] = 'Afrique/Brazzaville';
-$a->strings['Africa/Bujumbura'] = 'Afrique/Bujumbura';
-$a->strings['Africa/Cairo'] = 'Afrique/Le Caire';
-$a->strings['Africa/Casablanca'] = 'Afrique/Casablanca';
-$a->strings['Africa/Ceuta'] = 'Afrique/Ceuta';
-$a->strings['Africa/Conakry'] = 'Afrique/Conakry';
-$a->strings['Africa/Dakar'] = 'Afrique/Dakar';
-$a->strings['Africa/Dar_es_Salaam'] = 'Afrique/Dar-es-Salaam';
-$a->strings['Africa/Djibouti'] = 'Afrique/Djibouti';
-$a->strings['Africa/Douala'] = 'Afrique/Douala';
-$a->strings['Africa/El_Aaiun'] = 'Afrique/El_Aaiun';
-$a->strings['Africa/Freetown'] = 'Afrique/Freetown';
-$a->strings['Africa/Gaborone'] = 'Afrique/Gaborone';
-$a->strings['Africa/Harare'] = 'Afrique/Harare';
-$a->strings['Africa/Johannesburg'] = 'Afrique/Johannesburg';
-$a->strings['Africa/Kampala'] = 'Afrique/Kampala';
-$a->strings['Africa/Khartoum'] = 'Afrique/Khartoum';
-$a->strings['Africa/Kigali'] = 'Afrique/Kigali';
-$a->strings['Africa/Kinshasa'] = 'Afrique/Kinshasa';
-$a->strings['Africa/Lagos'] = 'Afrique/Lagos';
-$a->strings['Africa/Libreville'] = 'Afrique/Libreville';
-$a->strings['Africa/Lome'] = 'Afrique/Lomé';
-$a->strings['Africa/Luanda'] = 'Afrique/Luanda';
-$a->strings['Africa/Lubumbashi'] = 'Afrique/Lubumbashi';
-$a->strings['Africa/Lusaka'] = 'Afrique/Lusaka';
-$a->strings['Africa/Malabo'] = 'Afrique/Malabo';
-$a->strings['Africa/Maputo'] = 'Afrique/Maputo';
-$a->strings['Africa/Maseru'] = 'Afrique/Maseru';
-$a->strings['Africa/Mbabane'] = 'Afrique/Mbabane';
-$a->strings['Africa/Mogadishu'] = 'Afrique/Mogadiscio';
-$a->strings['Africa/Monrovia'] = 'Afrique/Monrovia';
-$a->strings['Africa/Nairobi'] = 'Afrique/Nairobi';
-$a->strings['Africa/Ndjamena'] = 'Afrique/N\'Djamena';
-$a->strings['Africa/Niamey'] = 'Afrique/Niamey';
-$a->strings['Africa/Nouakchott'] = 'Afrique/Nouakchott';
-$a->strings['Africa/Ouagadougou'] = 'Afrique/Ouagadougou';
-$a->strings['Africa/Porto-Novo'] = 'Afrique/Porto-Novo';
-$a->strings['Africa/Sao_Tome'] = 'Afrique/Sao_Tome';
-$a->strings['Africa/Timbuktu'] = 'Afrique/Tombouctou';
-$a->strings['Africa/Tripoli'] = 'Afrique/Tripoli';
-$a->strings['Africa/Tunis'] = 'Afrique/Tunis';
-$a->strings['Africa/Windhoek'] = 'Afrique/Windhoek';
-$a->strings['America/Adak'] = 'Amérique/Adak';
-$a->strings['America/Anchorage'] = 'Amérique/Anchorage';
-$a->strings['America/Anguilla'] = 'Amérique/Anguilla';
-$a->strings['America/Antigua'] = 'Amérique/Antigua';
-$a->strings['America/Araguaina'] = 'Amérique/Araguaina';
-$a->strings['America/Argentina/Buenos_Aires'] = 'Amérique/Argentine/Buenos_Aires';
-$a->strings['America/Argentina/Catamarca'] = 'Amérique/Argentine/Catamarca';
-$a->strings['America/Argentina/ComodRivadavia'] = 'Amérique/Argentine/ComodRivadavia';
-$a->strings['America/Argentina/Cordoba'] = 'Amérique/Argentine/Cordoba';
-$a->strings['America/Argentina/Jujuy'] = 'Amérique/Argentine/Jujuy';
-$a->strings['America/Argentina/La_Rioja'] = 'Amérique/Argentine/La_Rioja';
-$a->strings['America/Argentina/Mendoza'] = 'Amérique/Argentine/Mendoza';
-$a->strings['America/Argentina/Rio_Gallegos'] = 'Amérique/Argentine/Rio_Gallegos';
-$a->strings['America/Argentina/Salta'] = 'Amérique/Argentine/Salta';
-$a->strings['America/Argentina/San_Juan'] = 'Amérique/Argentine/San_Juan';
-$a->strings['America/Argentina/San_Luis'] = 'Amérique/Argentine/San_Luis';
-$a->strings['America/Argentina/Tucuman'] = 'Amérique/Argentine/Tucuman';
-$a->strings['America/Argentina/Ushuaia'] = 'Amérique/Argentine/Ushuaia';
-$a->strings['America/Aruba'] = 'Amérique/Aruba';
-$a->strings['America/Asuncion'] = 'Amérique/Asuncion';
-$a->strings['America/Atikokan'] = 'Amérique/Atikokan';
-$a->strings['America/Atka'] = 'Amérique/Atka';
-$a->strings['America/Bahia'] = 'Amérique/Bahia';
-$a->strings['America/Barbados'] = 'Amérique/Barbados';
-$a->strings['America/Belem'] = 'Amérique/Bélem';
-$a->strings['America/Belize'] = 'Amérique/Belize';
-$a->strings['America/Blanc-Sablon'] = 'Amérique/Blanc-Sablon';
-$a->strings['America/Boa_Vista'] = 'Amérique/Boa_Vista';
-$a->strings['America/Bogota'] = 'Amérique/Bogota';
-$a->strings['America/Boise'] = 'Amérique/Boise';
-$a->strings['America/Buenos_Aires'] = 'Amérique/Buenos_Aires';
-$a->strings['America/Cambridge_Bay'] = 'Amérique/Cambridge_Bay';
-$a->strings['America/Campo_Grande'] = 'Amérique/Campo_Grande';
-$a->strings['America/Cancun'] = 'Amérique/Cancun';
-$a->strings['America/Caracas'] = 'Amérique/Caracas';
-$a->strings['America/Catamarca'] = 'Amérique/Catamarca';
-$a->strings['America/Cayenne'] = 'Amérique/Cayenne';
-$a->strings['America/Cayman'] = 'Amérique/Cayman';
-$a->strings['America/Chicago'] = 'Amérique/Chicago';
-$a->strings['America/Chihuahua'] = 'Amérique/Chihuahua';
-$a->strings['America/Coral_Harbour'] = 'Amérique/Coral_Harbour';
-$a->strings['America/Cordoba'] = 'Amérique/Cordoba';
-$a->strings['America/Costa_Rica'] = 'Amérique/Costa_Rica';
-$a->strings['America/Cuiaba'] = 'Amérique/Cuiaba';
-$a->strings['America/Curacao'] = 'Amérique/Curaçao';
-$a->strings['America/Danmarkshavn'] = 'Amérique/Danmarkshavn';
-$a->strings['America/Dawson'] = 'Amérique/Dawson';
-$a->strings['America/Dawson_Creek'] = 'Amérique/Dawson_Creek';
-$a->strings['America/Denver'] = 'Amérique/Denver';
-$a->strings['America/Detroit'] = 'Amérique/Détroit';
-$a->strings['America/Dominica'] = 'Amérique/Dominica';
-$a->strings['America/Edmonton'] = 'Amérique/Edmonton';
-$a->strings['America/Eirunepe'] = 'Amérique/Eirunepe';
-$a->strings['America/El_Salvador'] = 'Amérique/El_Salvador';
-$a->strings['America/Ensenada'] = 'Amérique/Ensenada';
-$a->strings['America/Fort_Wayne'] = 'Amérique/Fort_Wayne';
-$a->strings['America/Fortaleza'] = 'Amérique/Fortaleza';
-$a->strings['America/Glace_Bay'] = 'Amérique/Glace_Bay';
-$a->strings['America/Godthab'] = 'Amérique/Godthab';
-$a->strings['America/Goose_Bay'] = 'Amérique/Goose_Bay';
-$a->strings['America/Grand_Turk'] = 'Amérique/Grand_Turk';
-$a->strings['America/Grenada'] = 'Amérique/Grenada';
-$a->strings['America/Guadeloupe'] = 'Amérique/Guadeloupe';
-$a->strings['America/Guatemala'] = 'Amérique/Guatemala';
-$a->strings['America/Guayaquil'] = 'Amérique/Guayaquil';
-$a->strings['America/Guyana'] = 'Amérique/Guyana';
-$a->strings['America/Halifax'] = 'Amérique/Halifax';
-$a->strings['America/Havana'] = 'Amérique/Havana';
-$a->strings['America/Hermosillo'] = 'Amérique/Hermosillo';
-$a->strings['America/Indiana/Indianapolis'] = 'Amérique/Indiana/Indianapolis';
-$a->strings['America/Indiana/Knox'] = 'Amérique/Indiana/Knox';
-$a->strings['America/Indiana/Marengo'] = 'Amérique/Indiana/Marengo';
-$a->strings['America/Indiana/Petersburg'] = 'Amérique/Indiana/Petersburg';
-$a->strings['America/Indiana/Tell_City'] = 'Amérique/Indiana/Tell_City';
-$a->strings['America/Indiana/Vevay'] = 'Amérique/Indiana/Vevay';
-$a->strings['America/Indiana/Vincennes'] = 'Amérique/Indiana/Vincennes';
-$a->strings['America/Indiana/Winamac'] = 'Amérique/Indiana/Winamac';
-$a->strings['America/Indianapolis'] = 'Amérique/Indianapolis';
-$a->strings['America/Inuvik'] = 'Amérique/Inuvik';
-$a->strings['America/Iqaluit'] = 'Amérique/Iqaluit';
-$a->strings['America/Jamaica'] = 'Amérique/Jamaïque';
-$a->strings['America/Jujuy'] = 'Amérique/Jujuy';
-$a->strings['America/Juneau'] = 'Amérique/Juneau';
-$a->strings['America/Kentucky/Louisville'] = 'Amérique/Kentucky/Louisville';
-$a->strings['America/Kentucky/Monticello'] = 'Amérique/Kentucky/Monticello';
-$a->strings['America/Knox_IN'] = 'Amérique/Knox_IN';
-$a->strings['America/La_Paz'] = 'Amérique/La_Paz';
-$a->strings['America/Lima'] = 'Amérique/Lima';
-$a->strings['America/Los_Angeles'] = 'Amérique/Los_Angeles';
-$a->strings['America/Louisville'] = 'Amérique/Louisville';
-$a->strings['America/Maceio'] = 'Amérique/Maceio';
-$a->strings['America/Managua'] = 'Amérique/Managua';
-$a->strings['America/Manaus'] = 'Amérique/Manaus';
-$a->strings['America/Marigot'] = 'Amérique/Marigot';
-$a->strings['America/Martinique'] = 'Amérique/Martinique';
-$a->strings['America/Matamoros'] = 'Amérique/Matamoros';
-$a->strings['America/Mazatlan'] = 'Amérique/Mazatlan';
-$a->strings['America/Mendoza'] = 'Amérique/Mendoza';
-$a->strings['America/Menominee'] = 'Amérique/Menominee';
-$a->strings['America/Merida'] = 'Amérique/Merida';
-$a->strings['America/Mexico_City'] = 'Amérique/Mexico_City';
-$a->strings['America/Miquelon'] = 'Amérique/Miquelon';
-$a->strings['America/Moncton'] = 'Amérique/Moncton';
-$a->strings['America/Monterrey'] = 'Amérique/Monterrey';
-$a->strings['America/Montevideo'] = 'Amérique/Montevideo';
-$a->strings['America/Montreal'] = 'Amérique/Montréal';
-$a->strings['America/Montserrat'] = 'Amérique/Montserrat';
-$a->strings['America/Nassau'] = 'Amérique/Nassau';
-$a->strings['America/New_York'] = 'Amérique/New_York';
-$a->strings['America/Nipigon'] = 'Amérique/Nipigon';
-$a->strings['America/Nome'] = 'Amérique/Nome';
-$a->strings['America/Noronha'] = 'Amérique/Noronha';
-$a->strings['America/North_Dakota/Center'] = 'Amérique/Dakota du nord/Center';
-$a->strings['America/North_Dakota/New_Salem'] = 'Amérique/Dakota du nord/New_Salem';
-$a->strings['America/Ojinaga'] = 'Amérique/Ojinaga';
-$a->strings['America/Panama'] = 'Amérique/Panama';
-$a->strings['America/Pangnirtung'] = 'Amérique/Pangnirtung';
-$a->strings['America/Paramaribo'] = 'Amérique/Paramaribo';
-$a->strings['America/Phoenix'] = 'Amérique/Phoenix';
-$a->strings['America/Port-au-Prince'] = 'Amérique/Port-au-Prince';
-$a->strings['America/Port_of_Spain'] = 'Amérique/Port_of_Spain';
-$a->strings['America/Porto_Acre'] = 'Amérique/Porto_Acre';
-$a->strings['America/Porto_Velho'] = 'Amérique/Porto_Velho';
-$a->strings['America/Puerto_Rico'] = 'Amérique/Puerto_Rico';
-$a->strings['America/Rainy_River'] = 'Amérique/Rainy_River';
-$a->strings['America/Rankin_Inlet'] = 'Amérique/Rankin_Inlet';
-$a->strings['America/Recife'] = 'Amérique/Recife';
-$a->strings['America/Regina'] = 'Amérique/Regina';
-$a->strings['America/Resolute'] = 'Amérique/Resolute';
-$a->strings['America/Rio_Branco'] = 'Amérique/Rio_Branco';
-$a->strings['America/Rosario'] = 'Amérique/Rosario';
-$a->strings['America/Santa_Isabel'] = 'Amérique/Santa_Isabel';
-$a->strings['America/Santarem'] = 'Amérique/Santarem';
-$a->strings['America/Santiago'] = 'Amérique/Santiago';
-$a->strings['America/Santo_Domingo'] = 'Amérique/Santo_Domingo';
-$a->strings['America/Sao_Paulo'] = 'Amérique/Sao_Paulo';
-$a->strings['America/Scoresbysund'] = 'Amérique/Scoresbysund';
-$a->strings['America/Shiprock'] = 'Amérique/Shiprock';
-$a->strings['America/St_Barthelemy'] = 'Amérique/Saint_Barthélemy';
-$a->strings['America/St_Johns'] = 'Amérique/St_Johns';
-$a->strings['America/St_Kitts'] = 'Amérique/St_Kitts';
-$a->strings['America/St_Lucia'] = 'Amérique/St_Lucia';
-$a->strings['America/St_Thomas'] = 'Amérique/St_Thomas';
-$a->strings['America/St_Vincent'] = 'Amérique/St_Vincent';
-$a->strings['America/Swift_Current'] = 'Amérique/Swift_Current';
-$a->strings['America/Tegucigalpa'] = 'Amérique/Tegucigalpa';
-$a->strings['America/Thule'] = 'Amérique/Thule';
-$a->strings['America/Thunder_Bay'] = 'Amérique/Thunder_Bay';
-$a->strings['America/Tijuana'] = 'Amérique/Tijuana';
-$a->strings['America/Toronto'] = 'Amérique/Toronto';
-$a->strings['America/Tortola'] = 'Amérique/Tortola';
-$a->strings['America/Vancouver'] = 'Amérique/Vancouver';
-$a->strings['America/Virgin'] = 'Amérique/Virgin';
-$a->strings['America/Whitehorse'] = 'Amérique/Whitehorse';
-$a->strings['America/Winnipeg'] = 'Amérique/Winnipeg';
-$a->strings['America/Yakutat'] = 'Amérique/Yakutat';
-$a->strings['America/Yellowknife'] = 'Amérique/Yellowknife';
-$a->strings['Antarctica/Casey'] = 'Antarctique/Casey';
-$a->strings['Antarctica/Davis'] = 'Antarctique/Davis';
-$a->strings['Antarctica/DumontDUrville'] = 'Antarctique/Dumont d\'Urville';
-$a->strings['Antarctica/Macquarie'] = 'Antarctique/Macquarie';
-$a->strings['Antarctica/Mawson'] = 'Antarctique/Mawson';
-$a->strings['Antarctica/McMurdo'] = 'Antarctique/McMurdo';
-$a->strings['Antarctica/Palmer'] = 'Antarctique/Palmer';
-$a->strings['Antarctica/Rothera'] = 'Antarctique/Rothera';
-$a->strings['Antarctica/South_Pole'] = 'Antarctique/Pôle Sud';
-$a->strings['Antarctica/Syowa'] = 'Antarctique/Syowa';
-$a->strings['Antarctica/Vostok'] = 'Antarctique/Vostok';
-$a->strings['Arctic/Longyearbyen'] = 'Arctique/Longyearbyen';
-$a->strings['Asia/Aden'] = 'Asie/Aden';
-$a->strings['Asia/Almaty'] = 'Asie/Almaty';
-$a->strings['Asia/Amman'] = 'Asie/Amman';
-$a->strings['Asia/Anadyr'] = 'Asie/Anadyr';
-$a->strings['Asia/Aqtau'] = 'Asie/Aqtau';
-$a->strings['Asia/Aqtobe'] = 'Asie/Aqtobe';
-$a->strings['Asia/Ashgabat'] = 'Asie/Ashgabat';
-$a->strings['Asia/Ashkhabad'] = 'Asie/Ashkhabad';
-$a->strings['Asia/Baghdad'] = 'Asie/Baghdad';
-$a->strings['Asia/Bahrain'] = 'Asie/Bahrain';
-$a->strings['Asia/Baku'] = 'Asie/Baku';
-$a->strings['Asia/Bangkok'] = 'Asie/Bangkok';
-$a->strings['Asia/Beirut'] = 'Asie/Beyrouth';
-$a->strings['Asia/Bishkek'] = 'Asie/Bishkek';
-$a->strings['Asia/Brunei'] = 'Asie/Brunei';
-$a->strings['Asia/Calcutta'] = 'Asie/Calcutta';
-$a->strings['Asia/Choibalsan'] = 'Asie/Choibalsan';
-$a->strings['Asia/Chongqing'] = 'Asie/Chongqing';
-$a->strings['Asia/Chungking'] = 'Asie/Chungking';
-$a->strings['Asia/Colombo'] = 'Asie/Colombo';
-$a->strings['Asia/Dacca'] = 'Asie/Dacca';
-$a->strings['Asia/Damascus'] = 'Asie/Damas';
-$a->strings['Asia/Dhaka'] = 'Asie/Dhaka';
-$a->strings['Asia/Dili'] = 'Asie/Dili';
-$a->strings['Asia/Dubai'] = 'Asie/Dubaï';
-$a->strings['Asia/Dushanbe'] = 'Asie/Dushanbe';
-$a->strings['Asia/Gaza'] = 'Asie/Gaza';
-$a->strings['Asia/Harbin'] = 'Asie/Harbin';
-$a->strings['Asia/Ho_Chi_Minh'] = 'Asie/Ho_Chi_Minh';
-$a->strings['Asia/Hong_Kong'] = 'Asie/Hong_Kong';
-$a->strings['Asia/Hovd'] = 'Asie/Hovd';
-$a->strings['Asia/Irkutsk'] = 'Asie/Irkoutsk';
-$a->strings['Asia/Istanbul'] = 'Asie/Istanbul';
-$a->strings['Asia/Jakarta'] = 'Asie/Jakarta';
-$a->strings['Asia/Jayapura'] = 'Asie/Jayapura';
-$a->strings['Asia/Jerusalem'] = 'Asie/Jérusalem';
-$a->strings['Asia/Kabul'] = 'Asie/Kaboul';
-$a->strings['Asia/Kamchatka'] = 'Asie/Kamchatka';
-$a->strings['Asia/Karachi'] = 'Asie/Karachi';
-$a->strings['Asia/Kashgar'] = 'Asie/Kashgar';
-$a->strings['Asia/Kathmandu'] = 'Asie/Katmandou';
-$a->strings['Asia/Katmandu'] = 'Asie/Katmandou';
-$a->strings['Asia/Kolkata'] = 'Asie/Kolkata';
-$a->strings['Asia/Krasnoyarsk'] = 'Asie/Krasnoyarsk';
-$a->strings['Asia/Kuala_Lumpur'] = 'Asie/Kuala_Lumpur';
-$a->strings['Asia/Kuching'] = 'Asie/Kuching';
-$a->strings['Asia/Kuwait'] = 'Asie/Koweït';
-$a->strings['Asia/Macao'] = 'Asie/Macao';
-$a->strings['Asia/Macau'] = 'Asie/Macau';
-$a->strings['Asia/Magadan'] = 'Asie/Magadan';
-$a->strings['Asia/Makassar'] = 'Asie/Macassar';
-$a->strings['Asia/Manila'] = 'Asie/Manille';
-$a->strings['Asia/Muscat'] = 'Asie/Muscat';
-$a->strings['Asia/Nicosia'] = 'Asie/Nicosia';
-$a->strings['Asia/Novokuznetsk'] = 'Asie/Novokuznetsk';
-$a->strings['Asia/Novosibirsk'] = 'Asie/Novosibirsk';
-$a->strings['Asia/Omsk'] = 'Asie/Omsk';
-$a->strings['Asia/Oral'] = 'Asie/Oral';
-$a->strings['Asia/Phnom_Penh'] = 'Asie/Phnom_Penh';
-$a->strings['Asia/Pontianak'] = 'Asie/Pontianak';
-$a->strings['Asia/Pyongyang'] = 'Asie/Pyongyang';
-$a->strings['Asia/Qatar'] = 'Asie/Qatar';
-$a->strings['Asia/Qyzylorda'] = 'Asie/Qyzylorda';
-$a->strings['Asia/Rangoon'] = 'Asie/Rangoon';
-$a->strings['Asia/Riyadh'] = 'Asie/Riyadh';
-$a->strings['Asia/Saigon'] = 'Asie/Saïgon';
-$a->strings['Asia/Sakhalin'] = 'Asie/Sakhalin';
-$a->strings['Asia/Samarkand'] = 'Asie/Samarcande';
-$a->strings['Asia/Seoul'] = 'Asie/Séoul';
-$a->strings['Asia/Shanghai'] = 'Asie/Shanghai';
-$a->strings['Asia/Singapore'] = 'Asie/Singapour';
-$a->strings['Asia/Taipei'] = 'Asie/Taipei';
-$a->strings['Asia/Tashkent'] = 'Asie/Tashkent';
-$a->strings['Asia/Tbilisi'] = 'Asie/Tbilissi';
-$a->strings['Asia/Tehran'] = 'Asie/Téhéran';
-$a->strings['Asia/Tel_Aviv'] = 'Asie/Tel_Aviv';
-$a->strings['Asia/Thimbu'] = 'Asie/Thimbu';
-$a->strings['Asia/Thimphu'] = 'Asie/Thimphu';
-$a->strings['Asia/Tokyo'] = 'Asie/Tokyo';
-$a->strings['Asia/Ujung_Pandang'] = 'Asie/Ujung_Pandang';
-$a->strings['Asia/Ulaanbaatar'] = 'Asie/Oulan-Bator';
-$a->strings['Asia/Ulan_Bator'] = 'Asie/Oulan-Bator';
-$a->strings['Asia/Urumqi'] = 'Asie/Urumqi';
-$a->strings['Asia/Vientiane'] = 'Asie/Vientiane';
-$a->strings['Asia/Vladivostok'] = 'Asie/Vladivostok';
-$a->strings['Asia/Yakutsk'] = 'Asie/Yakutsk';
-$a->strings['Asia/Yekaterinburg'] = 'Asie/Yekaterinburg';
-$a->strings['Asia/Yerevan'] = 'Asie/Erevan';
-$a->strings['Atlantic/Azores'] = 'Atlantique/Acores';
-$a->strings['Atlantic/Bermuda'] = 'Atlantique/Bermudes';
-$a->strings['Atlantic/Canary'] = 'Atlantique/Canaries';
-$a->strings['Atlantic/Cape_Verde'] = 'Atlantique/Cap_Vert';
-$a->strings['Atlantic/Faeroe'] = 'Atlantique/Faeroe';
-$a->strings['Atlantic/Faroe'] = 'Atlantique/Faroe';
-$a->strings['Atlantic/Jan_Mayen'] = 'Atlantique/Jan_Mayen';
-$a->strings['Atlantic/Madeira'] = 'Atlantique/Madeira';
-$a->strings['Atlantic/Reykjavik'] = 'Atlantique/Reykjavik';
-$a->strings['Atlantic/South_Georgia'] = 'Atlantique/South_Georgia';
-$a->strings['Atlantic/St_Helena'] = 'Atlantique/Sainte_Hélène';
-$a->strings['Atlantic/Stanley'] = 'Atlantique/Stanley';
-$a->strings['Australia/ACT'] = 'Australie/ACT';
-$a->strings['Australia/Adelaide'] = 'Australie/Adélaïde';
-$a->strings['Australia/Brisbane'] = 'Australie/Brisbane';
-$a->strings['Australia/Broken_Hill'] = 'Australie/Broken_Hill';
-$a->strings['Australia/Canberra'] = 'Australie/Canberra';
-$a->strings['Australia/Currie'] = 'Australie/Currie';
-$a->strings['Australia/Darwin'] = 'Australie/Darwin';
-$a->strings['Australia/Eucla'] = 'Australie/Eucla';
-$a->strings['Australia/Hobart'] = 'Australie/Hobart';
-$a->strings['Australia/LHI'] = 'Australie/LHI';
-$a->strings['Australia/Lindeman'] = 'Australie/Lindeman';
-$a->strings['Australia/Lord_Howe'] = 'Australie/Lord_Howe';
-$a->strings['Australia/Melbourne'] = 'Australie/Melbourne';
-$a->strings['Australia/North'] = 'Australie/Nord';
-$a->strings['Australia/NSW'] = 'Australie/NSW';
-$a->strings['Australia/Perth'] = 'Australie/Perth';
-$a->strings['Australia/Queensland'] = 'Australie/Queensland';
-$a->strings['Australia/South'] = 'Australie/Sud';
-$a->strings['Australia/Sydney'] = 'Australie/Sydney';
-$a->strings['Australia/Tasmania'] = 'Australie/Tasmanie';
-$a->strings['Australia/Victoria'] = 'Australie/Victoria';
-$a->strings['Australia/West'] = 'Australie/Ouest';
-$a->strings['Australia/Yancowinna'] = 'Australie/Yancowinna';
-$a->strings['Brazil/Acre'] = 'Brésil/Acre';
-$a->strings['Brazil/DeNoronha'] = 'Brésil/DeNoronha';
-$a->strings['Brazil/East'] = 'Brésil/Est';
-$a->strings['Brazil/West'] = 'Brésil/Ouest';
-$a->strings['Canada/Atlantic'] = 'Canada/Atlantique';
-$a->strings['Canada/Central'] = 'Canada/Central';
-$a->strings['Canada/East-Saskatchewan'] = 'Canada/Est-Saskatchewan';
-$a->strings['Canada/Eastern'] = 'Canada/Est';
-$a->strings['Canada/Mountain'] = 'Canada/Mountain';
-$a->strings['Canada/Newfoundland'] = 'Canada/Terre-Neuve';
-$a->strings['Canada/Pacific'] = 'Canada/Pacifique';
-$a->strings['Canada/Saskatchewan'] = 'Canada/Saskatchewan';
-$a->strings['Canada/Yukon'] = 'Canada/Yukon';
-$a->strings['CET'] = 'CET';
-$a->strings['Chile/Continental'] = 'Chili/Continental';
-$a->strings['Chile/EasterIsland'] = 'Chili/Île de Pâques';
-$a->strings['CST6CDT'] = 'CST6CDT';
-$a->strings['Cuba'] = 'Cuba';
-$a->strings['EET'] = 'EET';
-$a->strings['Egypt'] = 'Égypte';
-$a->strings['Eire'] = 'Eire';
-$a->strings['EST'] = 'EST';
-$a->strings['EST5EDT'] = 'EST5EDT';
-$a->strings['Etc/GMT'] = 'Etc/GMT';
-$a->strings['Etc/GMT+0'] = 'Etc/GMT+0';
-$a->strings['Etc/GMT+1'] = 'Etc/GMT+1';
-$a->strings['Etc/GMT+10'] = 'Etc/GMT+10';
-$a->strings['Etc/GMT+11'] = 'Etc/GMT+11';
-$a->strings['Etc/GMT+12'] = 'Etc/GMT+12';
-$a->strings['Etc/GMT+2'] = 'Etc/GMT+2';
-$a->strings['Etc/GMT+3'] = 'Etc/GMT+3';
-$a->strings['Etc/GMT+4'] = 'Etc/GMT+4';
-$a->strings['Etc/GMT+5'] = 'Etc/GMT+5';
-$a->strings['Etc/GMT+6'] = 'Etc/GMT+6';
-$a->strings['Etc/GMT+7'] = 'Etc/GMT+7';
-$a->strings['Etc/GMT+8'] = 'Etc/GMT+8';
-$a->strings['Etc/GMT+9'] = 'Etc/GMT+9';
-$a->strings['Etc/GMT-0'] = 'Etc/GMT-0';
-$a->strings['Etc/GMT-1'] = 'Etc/GMT-1';
-$a->strings['Etc/GMT-10'] = 'Etc/GMT-10';
-$a->strings['Etc/GMT-11'] = 'Etc/GMT-11';
-$a->strings['Etc/GMT-12'] = 'Etc/GMT-12';
-$a->strings['Etc/GMT-13'] = 'Etc/GMT-13';
-$a->strings['Etc/GMT-14'] = 'Etc/GMT-14';
-$a->strings['Etc/GMT-2'] = 'Etc/GMT-2';
-$a->strings['Etc/GMT-3'] = 'Etc/GMT-3';
-$a->strings['Etc/GMT-4'] = 'Etc/GMT-4';
-$a->strings['Etc/GMT-5'] = 'Etc/GMT-5';
-$a->strings['Etc/GMT-6'] = 'Etc/GMT-6';
-$a->strings['Etc/GMT-7'] = 'Etc/GMT-7';
-$a->strings['Etc/GMT-8'] = 'Etc/GMT-8';
-$a->strings['Etc/GMT-9'] = 'Etc/GMT-9';
-$a->strings['Etc/GMT0'] = 'Etc/GMT0';
-$a->strings['Etc/Greenwich'] = 'Etc/Greenwich';
-$a->strings['Etc/UCT'] = 'Etc/UCT';
-$a->strings['Etc/Universal'] = 'Etc/Universel';
-$a->strings['Etc/UTC'] = 'Etc/UTC';
-$a->strings['Etc/Zulu'] = 'Etc/Zulu';
-$a->strings['Europe/Amsterdam'] = 'Europe/Amsterdam';
-$a->strings['Europe/Andorra'] = 'Europe/Andorre';
-$a->strings['Europe/Athens'] = 'Europe/Athènes';
-$a->strings['Europe/Belfast'] = 'Europe/Belfast';
-$a->strings['Europe/Belgrade'] = 'Europe/Belgrade';
-$a->strings['Europe/Berlin'] = 'Europe/Berlin';
-$a->strings['Europe/Bratislava'] = 'Europe/Bratislava';
-$a->strings['Europe/Brussels'] = 'Europe/Bruxelles';
-$a->strings['Europe/Bucharest'] = 'Europe/Bucarest';
-$a->strings['Europe/Budapest'] = 'Europe/Budapest';
-$a->strings['Europe/Chisinau'] = 'Europe/Chişinău';
-$a->strings['Europe/Copenhagen'] = 'Europe/Copenhague';
-$a->strings['Europe/Dublin'] = 'Europe/Dublin';
-$a->strings['Europe/Gibraltar'] = 'Europe/Gibraltar';
-$a->strings['Europe/Guernsey'] = 'Europe/Guernesey';
-$a->strings['Europe/Helsinki'] = 'Europe/Helsinki';
-$a->strings['Europe/Isle_of_Man'] = 'Europe/Île_de_Man';
-$a->strings['Europe/Istanbul'] = 'Europe/Istanbul';
-$a->strings['Europe/Jersey'] = 'Europe/Jersey';
-$a->strings['Europe/Kaliningrad'] = 'Europe/Kaliningrad';
-$a->strings['Europe/Kiev'] = 'Europe/Kiev';
-$a->strings['Europe/Lisbon'] = 'Europe/Lisbonne';
-$a->strings['Europe/Ljubljana'] = 'Europe/Ljubljana';
-$a->strings['Europe/London'] = 'Europe/Londres';
-$a->strings['Europe/Luxembourg'] = 'Europe/Luxembourg';
-$a->strings['Europe/Madrid'] = 'Europe/Madrid';
-$a->strings['Europe/Malta'] = 'Europe/Malta';
-$a->strings['Europe/Mariehamn'] = 'Europe/Mariehamn';
-$a->strings['Europe/Minsk'] = 'Europe/Minsk';
-$a->strings['Europe/Monaco'] = 'Europe/Monaco';
-$a->strings['Europe/Moscow'] = 'Europe/Moscou';
-$a->strings['Europe/Nicosia'] = 'Europe/Nicosie';
-$a->strings['Europe/Oslo'] = 'Europe/Oslo';
-$a->strings['Europe/Paris'] = 'Europe/Paris';
-$a->strings['Europe/Podgorica'] = 'Europe/Podgorica';
-$a->strings['Europe/Prague'] = 'Europe/Prague';
-$a->strings['Europe/Riga'] = 'Europe/Riga';
-$a->strings['Europe/Rome'] = 'Europe/Rome';
-$a->strings['Europe/Samara'] = 'Europe/Samara';
-$a->strings['Europe/San_Marino'] = 'Europe/San_Marino';
-$a->strings['Europe/Sarajevo'] = 'Europe/Sarajevo';
-$a->strings['Europe/Simferopol'] = 'Europe/Simferopol';
-$a->strings['Europe/Skopje'] = 'Europe/Skopje';
-$a->strings['Europe/Sofia'] = 'Europe/Sofia';
-$a->strings['Europe/Stockholm'] = 'Europe/Stockholm';
-$a->strings['Europe/Tallinn'] = 'Europe/Tallinn';
-$a->strings['Europe/Tirane'] = 'Europe/Tirana';
-$a->strings['Europe/Tiraspol'] = 'Europe/Tiraspol';
-$a->strings['Europe/Uzhgorod'] = 'Europe/Uzhgorod';
-$a->strings['Europe/Vaduz'] = 'Europe/Vaduz';
-$a->strings['Europe/Vatican'] = 'Europe/Vatican';
-$a->strings['Europe/Vienna'] = 'Europe/Vienne';
-$a->strings['Europe/Vilnius'] = 'Europe/Vilnius';
-$a->strings['Europe/Volgograd'] = 'Europe/Volgograd';
-$a->strings['Europe/Warsaw'] = 'Europe/Varsovie';
-$a->strings['Europe/Zagreb'] = 'Europe/Zagreb';
-$a->strings['Europe/Zaporozhye'] = 'Europe/Zaporozhye';
-$a->strings['Europe/Zurich'] = 'Europe/Zurich';
-$a->strings['Factory'] = 'Factory';
-$a->strings['GB'] = 'Grande Bretagne';
-$a->strings['GB-Eire'] = 'Grande Bretagne-Eire';
-$a->strings['GMT'] = 'GMT';
-$a->strings['GMT+0'] = 'GMT+0';
-$a->strings['GMT-0'] = 'GMT-0';
-$a->strings['GMT0'] = 'GMT0';
-$a->strings['Greenwich'] = 'Greenwich';
-$a->strings['Hongkong'] = 'Hong-Kong';
-$a->strings['HST'] = 'HST';
-$a->strings['Iceland'] = 'Islande';
-$a->strings['Indian/Antananarivo'] = 'Océan Indien/Antananarivo';
-$a->strings['Indian/Chagos'] = 'Océan Indien/Chagos';
-$a->strings['Indian/Christmas'] = 'Océan Indien/Christmas';
-$a->strings['Indian/Cocos'] = 'Océan Indien/Cocos';
-$a->strings['Indian/Comoro'] = 'Océan Indien/Comores';
-$a->strings['Indian/Kerguelen'] = 'Océen Indien/Kerguelen';
-$a->strings['Indian/Mahe'] = 'Océan Indien/Mahe';
-$a->strings['Indian/Maldives'] = 'Océan Indien/Maldives';
-$a->strings['Indian/Mauritius'] = 'Océan Indien/Île Maurice';
-$a->strings['Indian/Mayotte'] = 'Océan Indien/Mayotte';
-$a->strings['Indian/Reunion'] = 'Océan Indien/Réunion';
-$a->strings['Iran'] = 'Iran';
-$a->strings['Israel'] = 'Israël';
-$a->strings['Jamaica'] = 'Jamaïque';
-$a->strings['Japan'] = 'Japon';
-$a->strings['Kwajalein'] = 'Kwajalein';
-$a->strings['Libya'] = 'Libye';
-$a->strings['MET'] = 'MET';
-$a->strings['Mexico/BajaNorte'] = 'Mexique/BajaNorte';
-$a->strings['Mexico/BajaSur'] = 'Mexique/BajaSur';
-$a->strings['Mexico/General'] = 'Mexique/Général';
-$a->strings['MST'] = 'MST';
-$a->strings['MST7MDT'] = 'MST7MDT';
-$a->strings['Navajo'] = 'Navajo';
-$a->strings['NZ'] = 'NZ';
-$a->strings['NZ-CHAT'] = 'NZ-CHAT';
-$a->strings['Pacific/Apia'] = 'Pacifique/Apia';
-$a->strings['Pacific/Auckland'] = 'Pacifique/Auckland';
-$a->strings['Pacific/Chatham'] = 'Pacifique/Chatham';
-$a->strings['Pacific/Easter'] = 'Pacifique/Easter';
-$a->strings['Pacific/Efate'] = 'Pacifique/Efate';
-$a->strings['Pacific/Enderbury'] = 'Pacifique/Enderbury';
-$a->strings['Pacific/Fakaofo'] = 'Pacifique/Fakaofo';
-$a->strings['Pacific/Fiji'] = 'Pacifique/Fidji';
-$a->strings['Pacific/Funafuti'] = 'Pacifique/Funafuti';
-$a->strings['Pacific/Galapagos'] = 'Pacifique/Galapagos';
-$a->strings['Pacific/Gambier'] = 'Pacifique/Gambier';
-$a->strings['Pacific/Guadalcanal'] = 'Pacifique/Guadalcanal';
-$a->strings['Pacific/Guam'] = 'Pacifique/Guam';
-$a->strings['Pacific/Honolulu'] = 'Pacifique/Honolulu';
-$a->strings['Pacific/Johnston'] = 'Pacifique/Johnston';
-$a->strings['Pacific/Kiritimati'] = 'Pacifique/Kiritimati';
-$a->strings['Pacific/Kosrae'] = 'Pacifique/Kosrae';
-$a->strings['Pacific/Kwajalein'] = 'Pacifique/Kwajalein';
-$a->strings['Pacific/Majuro'] = 'Pacifique/Majuro';
-$a->strings['Pacific/Marquesas'] = 'Pacifique/Marquesas';
-$a->strings['Pacific/Midway'] = 'Pacifique/Midway';
-$a->strings['Pacific/Nauru'] = 'Pacifique/Nauru';
-$a->strings['Pacific/Niue'] = 'Pacifique/Niue';
-$a->strings['Pacific/Norfolk'] = 'Pacifique/Norfolk';
-$a->strings['Pacific/Noumea'] = 'Pacifique/Nouméa';
-$a->strings['Pacific/Pago_Pago'] = 'Pacifique/Pago_Pago';
-$a->strings['Pacific/Palau'] = 'Pacifique/Palau';
-$a->strings['Pacific/Pitcairn'] = 'Pacifique/Pitcairn';
-$a->strings['Pacific/Ponape'] = 'Pacifique/Ponape';
-$a->strings['Pacific/Port_Moresby'] = 'Pacifique/Port_Moresby';
-$a->strings['Pacific/Rarotonga'] = 'Pacifique/Rarotonga';
-$a->strings['Pacific/Saipan'] = 'Pacifique/Saipan';
-$a->strings['Pacific/Samoa'] = 'Pacifique/Samoa';
-$a->strings['Pacific/Tahiti'] = 'Pacifique/Tahiti';
-$a->strings['Pacific/Tarawa'] = 'Pacifique/Tarawa';
-$a->strings['Pacific/Tongatapu'] = 'Pacifique/Tongatapu';
-$a->strings['Pacific/Truk'] = 'Pacifique/Truk';
-$a->strings['Pacific/Wake'] = 'Pacifique/Wake';
-$a->strings['Pacific/Wallis'] = 'Pacifique/Wallis';
-$a->strings['Pacific/Yap'] = 'Pacifique/Yap';
-$a->strings['Poland'] = 'Pologne';
-$a->strings['Portugal'] = 'Portugal';
-$a->strings['PRC'] = 'PRC';
-$a->strings['PST8PDT'] = 'PST8PDT';
-$a->strings['ROC'] = 'ROC';
-$a->strings['ROK'] = 'ROK';
-$a->strings['Singapore'] = 'Singapour';
-$a->strings['Turkey'] = 'Turquie';
-$a->strings['UCT'] = 'UCT';
-$a->strings['Universal'] = 'Universel';
-$a->strings['US/Alaska'] = 'US/Alaska';
-$a->strings['US/Aleutian'] = 'US/Aléoutiennes';
-$a->strings['US/Arizona'] = 'US/Arizona';
-$a->strings['US/Central'] = 'US/Central';
-$a->strings['US/East-Indiana'] = 'US/East-Indiana';
-$a->strings['US/Eastern'] = 'US/Eastern';
-$a->strings['US/Hawaii'] = 'US/Hawaï';
-$a->strings['US/Indiana-Starke'] = 'US/Indiana-Starke';
-$a->strings['US/Michigan'] = 'US/Michigan';
-$a->strings['US/Mountain'] = 'US/Mountain';
-$a->strings['US/Pacific'] = 'US/Pacifique';
-$a->strings['US/Pacific-New'] = 'US/Pacific-New';
-$a->strings['US/Samoa'] = 'US/Samoa';
-$a->strings['UTC'] = 'UTC';
-$a->strings['W-SU'] = 'W-SU';
-$a->strings['WET'] = 'WET';
-$a->strings['Zulu'] = 'Zulu';
-?>
+
+function string_plural_select($n){
+ return ;
+}
+;
+$a->strings["Logged out."] = "Déconnecté.";
+$a->strings["Login failed."] = "Échec de connexion.";
+$a->strings["Welcome back "] = "Bienvenue à nouveau, ";
+$a->strings["Contact Photos"] = "Photos du contact";
+$a->strings["Visible To:"] = "Visible par:";
+$a->strings["Groups"] = "Groupes";
+$a->strings["Contacts"] = "Contacts";
+$a->strings["Except For:"] = "Sauf pour:";
+$a->strings["Male"] = "Masculin";
+$a->strings["Female"] = "Féminin";
+$a->strings["Currently Male"] = "Actuellement masculin";
+$a->strings["Currently Female"] = "Actuellement féminin";
+$a->strings["Mostly Male"] = "Principalement masculin";
+$a->strings["Mostly Female"] = "Principalement féminin";
+$a->strings["Transgender"] = "Transgenre";
+$a->strings["Intersex"] = "Inter-sexe";
+$a->strings["Transsexual"] = "Transsexuel";
+$a->strings["Hermaphrodite"] = "Hermaphrodite";
+$a->strings["Neuter"] = "Neutre";
+$a->strings["Non-specific"] = "Non-spécifique";
+$a->strings["Other"] = "Autre";
+$a->strings["Undecided"] = "Indécis";
+$a->strings["Males"] = "Hommes";
+$a->strings["Females"] = "Femmes";
+$a->strings["Gay"] = "Gay";
+$a->strings["Lesbian"] = "Lesbienne";
+$a->strings["No Preference"] = "Sans préférence";
+$a->strings["Bisexual"] = "Bisexuel";
+$a->strings["Autosexual"] = "Auto-sexuel";
+$a->strings["Abstinent"] = "Abstinent";
+$a->strings["Virgin"] = "Vierge";
+$a->strings["Deviant"] = "Déviant";
+$a->strings["Fetish"] = "Fétichiste";
+$a->strings["Oodles"] = "Oodles";
+$a->strings["Nonsexual"] = "Non-sexuel";
+$a->strings["Single"] = "Célibataire";
+$a->strings["Lonely"] = "Esseulé";
+$a->strings["Available"] = "Disponible";
+$a->strings["Unavailable"] = "Indisponible";
+$a->strings["Dating"] = "Dans une relation";
+$a->strings["Unfaithful"] = "Infidèle";
+$a->strings["Sex Addict"] = "Accro au sexe";
+$a->strings["Friends"] = "Amis";
+$a->strings["Friends/Benefits"] = "Amis par intérêt";
+$a->strings["Casual"] = "Casual";
+$a->strings["Engaged"] = "Fiancé";
+$a->strings["Married"] = "Marié";
+$a->strings["Partners"] = "Partenaire";
+$a->strings["Cohabiting"] = "En cohabitation";
+$a->strings["Happy"] = "Heureux";
+$a->strings["Not Looking"] = "Sans recherche";
+$a->strings["Swinger"] = "Échangiste";
+$a->strings["Betrayed"] = "Trahi(e)";
+$a->strings["Separated"] = "Séparé";
+$a->strings["Unstable"] = "Instable";
+$a->strings["Divorced"] = "Divorcé";
+$a->strings["Widowed"] = "Veuf/Veuve";
+$a->strings["Uncertain"] = "Incertain";
+$a->strings["Complicated"] = "Compliqué";
+$a->strings["Don't care"] = "S'en désintéresse";
+$a->strings["Ask me"] = "Me demander";
+$a->strings["Unknown | Not categorised"] = "Inconnu | Non-classé";
+$a->strings["Block immediately"] = "Bloquer immédiatement";
+$a->strings["Shady, spammer, self-marketer"] = "Douteux, spammeur, accro à l'auto-promotion";
+$a->strings["Known to me, but no opinion"] = "Connu de moi, mais sans opinion";
+$a->strings["OK, probably harmless"] = "OK, probablement inoffensif";
+$a->strings["Reputable, has my trust"] = "Réputé, a toute ma confiance";
+$a->strings["Frequently"] = "Fréquemment";
+$a->strings["Hourly"] = "Toutes les heures";
+$a->strings["Twice daily"] = "Deux fois par jour";
+$a->strings["Daily"] = "Chaque jour";
+$a->strings["Weekly"] = "Chaque semaine";
+$a->strings["Monthly"] = "Chaque mois";
+$a->strings["Create a new group"] = "Créer un nouveau groupe";
+$a->strings["Everybody"] = "Tout le monde";
+$a->strings["Embedding disabled"] = "Incorporation désactivée";
+$a->strings["Miscellaneous"] = "Divers";
+$a->strings["less than a second ago"] = "il y a moins d'une seconde";
+$a->strings["year"] = "an";
+$a->strings["years"] = "ans";
+$a->strings["month"] = "mois";
+$a->strings["months"] = "mois";
+$a->strings["week"] = "semaine";
+$a->strings["weeks"] = "semaines";
+$a->strings["day"] = "jour";
+$a->strings["days"] = "jours";
+$a->strings["hour"] = "heure";
+$a->strings["hours"] = "heures";
+$a->strings["minute"] = "minute";
+$a->strings["minutes"] = "minutes";
+$a->strings["second"] = "seconde";
+$a->strings["seconds"] = "secondes";
+$a->strings[" ago"] = " auparavant";
+$a->strings["Birthday:"] = "Anniversaire:";
+$a->strings["[Name Withheld]"] = "[Nom non-publié]";
+$a->strings["You have a new follower at "] = "Vous avez un nouvel abonné à ";
+$a->strings["Administrator"] = "Administrateur";
+$a->strings["Cannot locate DNS info for database server '%s'"] = "Impossible de localiser les informations DNS pour le serveur de base de données '%s'";
+$a->strings["Logout"] = "Se déconnecter";
+$a->strings["Login"] = "Connexion";
+$a->strings["Home"] = "Accueil";
+$a->strings["Register"] = "S'inscrire";
+$a->strings["Apps"] = "Applications";
+$a->strings["Search"] = "Recherche";
+$a->strings["Directory"] = "Annuaire";
+$a->strings["Network"] = "Réseau";
+$a->strings["Notifications"] = "Notifications";
+$a->strings["Messages"] = "Messages";
+$a->strings["Manage"] = "Gérer";
+$a->strings["Settings"] = "Réglages";
+$a->strings["Profiles"] = "Profils";
+$a->strings["Select files to upload: "] = "Choisir les fichiers à envoyer: ";
+$a->strings["Use the following controls only if the Java uploader [above] fails to launch."] = "Utilisez le formulaire suivant uniquement si l'applet Java [ci-dessus] ne parvient pas à se lancer.";
+$a->strings["Permission denied."] = "Permission refusée.";
+$a->strings["Facebook disabled"] = "Connecteur Facebook désactivé";
+$a->strings["Facebook API key is missing."] = "Clé d'API Facebook manquante.";
+$a->strings["Facebook Connect"] = "Connecteur Facebook";
+$a->strings["Install Facebook post connector"] = "Installer le connecteur Facebook";
+$a->strings["Remove Facebook post connector"] = "Retirer le connecteur Facebook";
+$a->strings["Post to Facebook by default"] = "Poster sur Facebook par défaut";
+$a->strings["Submit"] = "Envoyer";
+$a->strings["Facebook"] = "Facebook";
+$a->strings["Facebook Connector Settings"] = "Réglages du connecteur Facebook";
+$a->strings["Post to Facebook"] = "Poster sur Facebook";
+$a->strings["Image: "] = "Image: ";
+$a->strings["Randplace Settings"] = "Réglages de Randplace";
+$a->strings["Enable Randplace Plugin"] = "Activer l'extension Randplace";
+$a->strings["Post to Twitter"] = "Poster sur Twitter";
+$a->strings["Twitter Posting Settings"] = "Réglages du connecteur Twitter";
+$a->strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Pas de paire de clés pour Twitter. Merci de contacter l'administrateur du site.";
+$a->strings["At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Sur cette instance de Friendika, le connecteur Twitter a été activé, mais vous n'avez pas encore connecté votre compte à Twitter. Pour ce faire, cliquez sur le bouton ci-dessous pour obtenir un PIN de Twitter, que vous aurez à coller dans la boîte ci-dessous. Ensuite, validez le formulaire. Seuls vos articles <strong>publics</strong> seront postés sur Twitter.";
+$a->strings["Log in with Twitter"] = "Se connecter à Twitter";
+$a->strings["Copy the PIN from Twitter here"] = "Copiez le PIN de Twitter ici";
+$a->strings["Currently connected to: "] = "Actuellement connecté à: ";
+$a->strings["If enabled all your <strong>public</strong> postings will be posted to the associated Twitter account as well."] = "Si activé, tous vos articles <strong>publics</strong> seront également postés au compte Twitter associé.";
+$a->strings["Send public postings to Twitter"] = "Envoyer les articles publics à Twitter";
+$a->strings["Clear OAuth configuration"] = "Effacer la configuration OAuth";
+$a->strings["Three Dimensional Tic-Tac-Toe"] = "Morpion en trois dimensions";
+$a->strings["3D Tic-Tac-Toe"] = "Morpion 3D";
+$a->strings["New game"] = "Nouvelle partie";
+$a->strings["New game with handicap"] = "Nouvelle partie avec handicap";
+$a->strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "Le morpion 3D, c'est comme la version traditionnelle. Sauf qu'on joue sur plusieurs étages en même temps.";
+$a->strings["In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels."] = "Dans le cas qui nous concerne, il y a trois étages. Vous gagnez en alignant trois coups dans n'importe quel étage, ainsi que verticalement ou en diagonale entre les étages.";
+$a->strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "Le handicap interdit la position centrale de l'étage du milieu, parce que le joueur qui prend cette case obtient souvent un avantage.";
+$a->strings["You go first..."] = "À vous de jouer...";
+$a->strings["I'm going first this time..."] = "Je commence...";
+$a->strings["You won!"] = "Vous avez gagné!";
+$a->strings["\"Cat\" game!"] = "Match nul!";
+$a->strings["I won!"] = "J'ai gagné!";
+$a->strings["Post to StatusNet"] = "Poster sur StatusNet";
+$a->strings["StatusNet Posting Settings"] = "Réglages du connecteur StatusNet";
+$a->strings["No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation."] = "Aucune paire de clé n'a été trouvée pour StatusNet. Inscrivez votre compte Friendika comme client bureautique sur votre compte StatusNet, puis copiez la paire de clés de consommateur ici et renseignez le chemin de base de l'API.<br />Avant d'enregistrer votre propre paire de clés OAuth, merci de vérifier auprès de l'administrateur qu'il en existe pas déjà une pour votre fournisseur StatusNet.";
+$a->strings["OAuth Consumer Key"] = "Clé de consommateur OAuth";
+$a->strings["OAuth Consumer Secret"] = "Secret de consommateur OAuth";
+$a->strings["Base API Path (remember the trailing /)"] = "Chemin de base de l'API (n'oubliez pas le / final)";
+$a->strings["To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet."] = "Pour vous connecter à votre compte StatusNet, cliquez sur le bouton ci-dessous pour obtenir un code de sécurité de StatusNet, que vous aurez à coller dans la boîte ci-dessous. Ensuite, validez le formulaire. Seuls vos articles <strong>publics</strong> seront postés sur StatusNet.";
+$a->strings["Log in with StatusNet"] = "Se connecter à StatusNet";
+$a->strings["Copy the security code from StatusNet here"] = "Collez le code de sécurité de StatusNet ici";
+$a->strings["If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well."] = "Si actif, toutes vos publications <strong>publiques</strong> seront également postées au compte StatusNet associé.";
+$a->strings["Send public postings to StatusNet"] = "Envoyer les contenus publics à StatusNet";
+$a->strings["Upload a file"] = "Téléverser un fichier";
+$a->strings["Drop files here to upload"] = "Déposer des fichiers ici pour les téléverser";
+$a->strings["Cancel"] = "Annuler";
+$a->strings["Failed"] = "Échec";
+$a->strings["No files were uploaded."] = "Aucun fichier n'a été téléversé.";
+$a->strings["Uploaded file is empty"] = "Le fichier téléversé est vide";
+$a->strings["Uploaded file is too large"] = "Le fichier téléversé est trop volumineux";
+$a->strings["Image exceeds size limit of "] = "L'image dépasse la taille maximale de ";
+$a->strings["File has an invalid extension, it should be one of "] = "Le fichier a une extension invalide, elle devrait être parmi ";
+$a->strings["Upload was cancelled, or server error encountered"] = "Téléversement annulé, ou erreur de serveur";
+$a->strings["Profile not found."] = "Profil introuvable.";
+$a->strings["Profile Name is required."] = "Le nom du profil est requis.";
+$a->strings["Profile updated."] = "Profil mis à jour.";
+$a->strings["Profile deleted."] = "Profil supprimé.";
+$a->strings["Profile-"] = "Profil-";
+$a->strings["New profile created."] = "Nouveau profil créé.";
+$a->strings["Profile unavailable to clone."] = "Ce profil ne peut être cloné.";
+$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Ceci est votre profil <strong>public</strong>.<br />Il <strong>peut</strong> être visible par n'importe quel utilisateur d'Internet.";
+$a->strings["Age: "] = "Age: ";
+$a->strings["Profile Image"] = "Image du profil";
+$a->strings["Image exceeds size limit of %d"] = "L'image excède la taille limite de %d";
+$a->strings["Unable to process image."] = "Impossible de traiter l'image.";
+$a->strings["Wall Photos"] = "Photos du mur";
+$a->strings["Image upload failed."] = "Le téléversement de l'image a échoué.";
+$a->strings["Invalid OpenID url"] = "Adresse OpenID invalide";
+$a->strings["Please enter the required information."] = "Entrez les informations requises.";
+$a->strings["Please use a shorter name."] = "Utilisez un nom plus court.";
+$a->strings["Name too short."] = "Nom trop court.";
+$a->strings["That doesn't appear to be your full (First Last) name."] = "Ceci ne semble pas être votre nom complet (Prénom Nom).";
+$a->strings["Your email domain is not among those allowed on this site."] = "Votre domaine de courriel n'est pas autorisé sur ce site.";
+$a->strings["Not a valid email address."] = "Ceci n'est pas une adresse courriel valide.";
+$a->strings["Cannot use that email."] = "Impossible d'utiliser ce courriel.";
+$a->strings["Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and must also begin with a letter."] = "Votre \"pseudo\" peut seulement contenir les caractères \"a-z\", \"0-9\", \"-\", and \"_\", et doit commencer par une lettre.";
+$a->strings["Nickname is already registered. Please choose another."] = "Pseudo déjà utilisé. Merci d'en choisir un autre.";
+$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "ERREUR SÉRIEUSE: La génération des clés de sécurité a échoué.";
+$a->strings["An error occurred during registration. Please try again."] = "Une erreur est survenue lors de l'inscription. Merci de recommencer.";
+$a->strings["An error occurred creating your default profile. Please try again."] = "Une erreur est survenue lors de la création de votre profil par défaut. Merci de recommencer.";
+$a->strings["Profile Photos"] = "Photos du profil";
+$a->strings["Registration details for %s"] = "Détails d'inscription pour %s";
+$a->strings["Registration successful. Please check your email for further instructions."] = "Inscription réussie. Vérifiez vos emails pour la suite des instructions.";
+$a->strings["Failed to send email message. Here is the message that failed."] = "Impossible d'envoyer un email. Voici le message qui a échoué.";
+$a->strings["Your registration can not be processed."] = "Votre inscription ne peut être traitée.";
+$a->strings["Registration request at %s"] = "Demande d'inscription à %s";
+$a->strings["Your registration is pending approval by the site owner."] = "Votre inscription attend une validation du propriétaire du site.";
+$a->strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Vous pouvez (si vous le souhaitez) remplir ce formulaire via OpenID. Fournissez votre OpenID et cliquez \"S'inscrire\".";
+$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Si vous n'êtes pas familier avec OpenID, laissez ce champ vide et remplissez le reste.";
+$a->strings["Your OpenID (optional): "] = "Votre OpenID (facultatif): ";
+$a->strings["Include your profile in member directory?"] = "Inclure votre profil dans l'annuaire des membres?";
+$a->strings["Yes"] = "Oui";
+$a->strings["No"] = "Non";
+$a->strings["Shared content is covered by the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0</a> license."] = "Le contenu est partagé suivant les termes de la licence <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0</a>.";
+$a->strings["Registration"] = "Inscription";
+$a->strings["Your Full Name (e.g. Joe Smith): "] = "Votre nom complet (p.ex. Michel Dupont): ";
+$a->strings["Your Email Address: "] = "Votre adresse courriel: ";
+$a->strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be '<strong>nickname@\$sitename</strong>'."] = "Choisissez un pseudo. Celui devra commencer par une lettre. L'adresse de votre profil en découlera sous la forme '<strong>pseudo@\$sitename</strong>'.";
+$a->strings["Choose a nickname: "] = "Choisir un pseudo: ";
+$a->strings["Applications"] = "Applications";
+$a->strings["Normal View"] = "Vue normale";
+$a->strings["New Item View"] = "Vue des nouveautés";
+$a->strings["Please enter a link URL:"] = "Entrez un lien web:";
+$a->strings["Please enter a YouTube link:"] = "Entrez un lien Youtube:";
+$a->strings["Please enter a video(.ogg) link/URL:"] = "Entrez un lien vidéo (.ogg):";
+$a->strings["Please enter an audio(.ogg) link/URL:"] = "Entrez un lien audio (.ogg):";
+$a->strings["Where are you right now?"] = "Où êtes-vous présentemment?";
+$a->strings["Share"] = "Partager";
+$a->strings["Upload photo"] = "Joindre photo";
+$a->strings["Insert web link"] = "Insérer lien web";
+$a->strings["Insert YouTube video"] = "Insérer une vidéo Youtube";
+$a->strings["Insert Vorbis [.ogg] video"] = "Insérer un lien vidéo Vorbis [.ogg]";
+$a->strings["Insert Vorbis [.ogg] audio"] = "Insérer un lien audio Vorbis [.ogg]";
+$a->strings["Set your location"] = "Définir votre localisation";
+$a->strings["Clear browser location"] = "Effacer la localisation du navigateur";
+$a->strings["Please wait"] = "Patientez";
+$a->strings["Permission settings"] = "Réglages des permissions";
+$a->strings["CC: email addresses"] = "CC: adresse de courriel";
+$a->strings["Example: bob@example.com, mary@example.com"] = "Exemple: bob@exemple.com, mary@exemple.com";
+$a->strings["No such group"] = "Groupe inexistant";
+$a->strings["Group is empty"] = "Groupe vide";
+$a->strings["Group: "] = "Groupe: ";
+$a->strings["View \$name's profile"] = "Voir le profil de \$name";
+$a->strings["View in context"] = "Voir dans le contexte";
+$a->strings["Private Message"] = "Message privé";
+$a->strings["I like this (toggle)"] = "I like this (bascule)";
+$a->strings["I don't like this (toggle)"] = "I don't like this (bascule)";
+$a->strings["This is you"] = "C'est vous";
+$a->strings["Edit"] = "Éditer";
+$a->strings["Delete"] = "Supprimer";
+$a->strings["View \$owner_name's profile"] = "Voir le profil de \$owner_name";
+$a->strings["to"] = "à";
+$a->strings["Wall-to-Wall"] = "Inter-mur";
+$a->strings["via Wall-To-Wall:"] = "en Inter-mur:";
+$a->strings["photo"] = "la photo";
+$a->strings["status"] = "le statut";
+$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s aime %3\$s de %2\$s";
+$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s n'aime pas %3\$s de %2\$s";
+$a->strings["Contact not found."] = "Contact introuvable.";
+$a->strings["Response from remote site was not understood."] = "Réponse du site distant incomprise.";
+$a->strings["Unexpected response from remote site: "] = "Réponse inattendue du site distant: ";
+$a->strings["Confirmation completed successfully."] = "Confirmation achevée avec succès.";
+$a->strings["Remote site reported: "] = "Alerte du site distant: ";
+$a->strings["Temporary failure. Please wait and try again."] = "Échec temporaire. Merci de recommencer ultérieurement.";
+$a->strings["Introduction failed or was revoked."] = "Introduction échouée ou annulée.";
+$a->strings["Unable to set contact photo."] = "Impossible de définir la photo du contact.";
+$a->strings["is now friends with"] = "est désormais relié à";
+$a->strings["No user record found for '%s' "] = "Pas d'utilisateur trouvé pour '%s' ";
+$a->strings["Our site encryption key is apparently messed up."] = "Notre clé de chiffrement de site est apparemment corrompue.";
+$a->strings["Empty site URL was provided or URL could not be decrypted by us."] = "URL de site absente ou indéchiffrable.";
+$a->strings["Contact record was not found for you on our site."] = "Pas d'entrée pour ce contact sur notre site.";
+$a->strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "L'identifiant fourni par votre système fait doublon sur le notre. Cela peut fonctionner si vous réessayez.";
+$a->strings["Unable to set your contact credentials on our system."] = "Impossible de vous définir des permissions sur notre système.";
+$a->strings["Unable to update your contact profile details on our system"] = "Impossible de mettre les détails de votre profil à jour sur notre système";
+$a->strings["Connection accepted at %s"] = "Connexion acceptée avec %s";
+$a->strings["Item not found."] = "Élément introuvable.";
+$a->strings["Item has been removed."] = "Cet élément a été enlevé.";
+$a->strings["No recipient selected."] = "Pas de destinataire sélectionné.";
+$a->strings["[no subject]"] = "[pas de sujet]";
+$a->strings["Unable to locate contact information."] = "Impossible de localiser les informations du contact.";
+$a->strings["Message sent."] = "Message envoyé.";
+$a->strings["Message could not be sent."] = "Impossible d'envoyer le message.";
+$a->strings["Inbox"] = "Messages entrants";
+$a->strings["Outbox"] = "Messages sortants";
+$a->strings["New Message"] = "Nouveau message";
+$a->strings["Message deleted."] = "Message supprimé.";
+$a->strings["Conversation removed."] = "Conversation supprimée.";
+$a->strings["Send Private Message"] = "Envoyer un message privé";
+$a->strings["To:"] = "À:";
+$a->strings["Subject:"] = "Sujet:";
+$a->strings["Your message:"] = "Votre message:";
+$a->strings["No messages."] = "Aucun message.";
+$a->strings["Delete conversation"] = "Effacer conversation";
+$a->strings["Message not available."] = "Message indisponible.";
+$a->strings["Delete message"] = "Effacer message";
+$a->strings["Send Reply"] = "Répondre";
+$a->strings["Could not create/connect to database."] = "Impossible de créer/atteindre la base de données.";
+$a->strings["Connected to database."] = "Connecté à la base de données.";
+$a->strings["Database import succeeded."] = "Import de base achevé avec succès.";
+$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANT: Vous devez configurer [manuellement] une tâche programmée pour le 'poller'.";
+$a->strings["Please see the file \"INSTALL.txt\"."] = "Référez-vous au fichier \"INSTALL.txt\".";
+$a->strings["Database import failed."] = "Import de base échoué.";
+$a->strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Vous pourriez avoir besoin d'importer le fichier \"database.sql\" manuellement au moyen de phpmyadmin ou de la commande mysql.";
+$a->strings["Welcome to Friendika."] = "Bienvenue sur Friendika.";
+$a->strings["Could not find a command line version of PHP in the web server PATH."] = "Impossible de trouver la version \"ligne de commande\" de PHP dans le PATH du serveur web.";
+$a->strings["This is required. Please adjust the configuration file .htconfig.php accordingly."] = "Ceci est requis. Merci d'ajuster la configuration dans le fichier .htconfig.php en conséquence.";
+$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La version \"ligne de commande\" de PHP de votre système n'a pas \"register_argc_argv\" d'activé.";
+$a->strings["This is required for message delivery to work."] = "Ceci est requis pour que la livraison des messages fonctionne.";
+$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Erreur: la fonction \"openssl_pkey_new\" de ce système ne permet pas de générer des clés de chiffrement";
+$a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si vous utilisez Windows, merci de vous réferer à \"http://www.php.net/manual/en/openssl.installation.php\".";
+$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Erreur: Le module \"rewrite\" du serveur web Apache est requis mais pas installé.";
+$a->strings["Error: libCURL PHP module required but not installed."] = "Erreur: Le module PHP \"libCURL\" est requis mais pas installé.";
+$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Erreur: Le module PHP \"GD\" disposant du support JPEG est requis mais pas installé.";
+$a->strings["Error: openssl PHP module required but not installed."] = "Erreur: Le module PHP \"openssl\" est requis mais pas installé.";
+$a->strings["Error: mysqli PHP module required but not installed."] = "Erreur: Le module PHP \"mysqli\" est requis mais pas installé.";
+$a->strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "L'installeur web doit être en mesure de créer un fichier \".htconfig.php\" à la racine de votre serveur web, mais il en est incapable.";
+$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Le plus souvent, il s'agit d'un problème de permission. Le serveur web peut ne pas être capable d'écrire dans votre répertoire - alors que vous-même le pouvez.";
+$a->strings["Please check with your site documentation or support people to see if this situation can be corrected."] = "Merci de vérifier - avec la documentation ou le support de votre hébergement - que la situation peut être corrigée.";
+$a->strings["If not, you may be required to perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Dans le cas contraire, vous pouvez pratiquer une installation manuelle. Référez-vous au fichier \"INSTALL.txt\" pour les instructions.";
+$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Le fichier de configuration de la base (\".htconfig.php\") ne peut être créé. Merci d'utiliser le texte ci-joint pour créer ce fichier à la racine de votre hébergement.";
+$a->strings["Errors encountered creating database tables."] = "Des erreurs ont été signalées lors de la création des tables.";
+$a->strings["Passwords do not match. Password unchanged."] = "Les mots de passe ne correspondent pas. Aucun changement appliqué.";
+$a->strings["Empty passwords are not allowed. Password unchanged."] = "Les mots de passe vides sont interdits. Aucun changement appliqué.";
+$a->strings["Password changed."] = "Mots de passe changés.";
+$a->strings["Password update failed. Please try again."] = "Le changement de mot de passe a échoué. Merci de recommencer.";
+$a->strings[" Please use a shorter name."] = " Merci d'utiliser un nom plus court.";
+$a->strings[" Name too short."] = " Nom trop court.";
+$a->strings[" Not valid email."] = " Email invalide.";
+$a->strings[" Cannot change to that email."] = " Impossible de changer pour cet email.";
+$a->strings["Settings updated."] = "Réglages mis à jour.";
+$a->strings["Plugin Settings"] = "Réglages des extensions";
+$a->strings["Account Settings"] = "Réglages du compte";
+$a->strings["No Plugin settings configured"] = "Pas de réglages d'extensions configurés";
+$a->strings["OpenID: "] = "OpenID: ";
+$a->strings["&nbsp;(Optional) Allow this OpenID to login to this account."] = "&nbsp;(Facultatif) Autoriser cet OpenID à se connecter à ce compte.";
+$a->strings["Profile is <strong>not published</strong>."] = "Ce profil n'est <strong>pas publié</strong>.";
+$a->strings["Default Post Permissions"] = "Permissions par défaut sur les articles";
+$a->strings["Password reset requested at %s"] = "Requête de réinitialisation de mot de passe à %s";
+$a->strings["Remote privacy information not available."] = "Informations de confidentialité indisponibles.";
+$a->strings["Visible to:"] = "Visible par:";
+$a->strings["Welcome to %s"] = "Bienvenue sur %s";
+$a->strings["Unable to locate original post."] = "Impossible de localiser l'article original.";
+$a->strings["Empty post discarded."] = "Article vide défaussé.";
+$a->strings["%s commented on your item at %s"] = "%s a commenté votre publication : %s";
+$a->strings["%s posted on your profile wall at %s"] = "%s a posté sur votre mur : %s";
+$a->strings["System error. Post not saved."] = "Erreur système.Publication non sauvée.";
+$a->strings["This message was sent to you by %s, a member of the Friendika social network."] = "The message vous a été envoyé par %s, un membre du réseau social Friendika.";
+$a->strings["You may visit them online at"] = "Vous pouvez leur faire une visite sur";
+$a->strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Merci de contacter l'émeteur en répondant à cette publication si vous ne souhaitez pas recevoir ces messages.";
+$a->strings["%s posted an update."] = "%s a publié une mise à jour.";
+$a->strings["Group created."] = "Groupe créé.";
+$a->strings["Could not create group."] = "Impossible de créer le groupe.";
+$a->strings["Group not found."] = "Groupe introuvable.";
+$a->strings["Group name changed."] = "Groupe renommé.";
+$a->strings["Membership list updated."] = "Liste des membres mise à jour.";
+$a->strings["Permission denied"] = "Permission refusée";
+$a->strings["Group removed."] = "Groupe enlevé.";
+$a->strings["Unable to remove group."] = "Impossible d'enlever le groupe.";
+$a->strings["Image uploaded but image cropping failed."] = "Image envoyée, mais impossible de la retailler.";
+$a->strings["Image size reduction [%s] failed."] = "Réduction de la taille de l'image [%s] échouée.";
+$a->strings["Unable to process image"] = "Impossible de traiter l'image";
+$a->strings["Image uploaded successfully."] = "Image téléversée avec succès.";
+$a->strings["Global Directory"] = "Annuaire global";
+$a->strings["Finding: "] = "Trouvé: ";
+$a->strings["View Contacts"] = "Voir les contacts";
+$a->strings["No contacts."] = "Aucun contact.";
+$a->strings["Visit \$username's profile"] = "Visiter le profil de %s";
+$a->strings["No profile"] = "Aucun profil";
+$a->strings["Tag removed"] = "Étiquette enlevée";
+$a->strings["Remove Item Tag"] = "Enlever l'étiquette de l'élément";
+$a->strings["Select a tag to remove: "] = "Choisir une étiquette à enlever: ";
+$a->strings["Remove"] = "Enlever";
+$a->strings["Please login."] = "Merci de vous connecter.";
+$a->strings["Registration revoked for %s"] = "Inscription révoquée pour %s";
+$a->strings["Account approved."] = "Inscription validée.";
+$a->strings["%s : Not a valid email address."] = "%s : Adresse de courriel invalide.";
+$a->strings["Please join my network on %s"] = "Vous pouvez rejoindre mon réseau sur %s";
+$a->strings["%s : Message delivery failed."] = "%s : L'envoi du message a échoué.";
+$a->strings["%d message sent."] = array(
+ 0 => "%d message envoyé.",
+ 1 => "%d messages envoyés.",
+);
+$a->strings["Send invitations"] = "Envoyer des invitations";
+$a->strings["Enter email addresses, one per line:"] = "Entrez les adresses email, une par ligne:";
+$a->strings["Please join my social network on %s"] = "Vous pouvez rejoindre mon réseau social sur %s";
+$a->strings["To accept this invitation, please visit:"] = "Pour accepter cette invitation, rendez vous sur:";
+$a->strings["Once you have registered, please connect with me via my profile page at:"] = "Une fois inscrit, connectez-vous à la page de mon profil sur:";
+$a->strings["Welcome back %s"] = "Bon retour parmi nous, %s";
+$a->strings["Manage Identities and/or Pages"] = "Gérer les identités et/ou les pages";
+$a->strings["(Toggle between different identities or community/group pages which share your account details.)"] = "(Bascule entre les différentes identités ou pages qui se partagent votre compte.)";
+$a->strings["Select an identity to manage: "] = "Choisir une identité à gérer: ";
+$a->strings["noreply"] = "noreply";
+$a->strings["New mail received at "] = "Nouvel email reçu à ";
+$a->strings["%s commented on an item at %s"] = "%s a commanté sur une publication : %s";
+$a->strings["%s welcomes %s"] = "%s accueille %s";
+$a->strings["This introduction has already been accepted."] = "Cette introduction a déjà été acceptée.";
+$a->strings["Profile location is not valid or does not contain profile information."] = "L'emplacement du profil est invalide ou ne contient pas de profil valide.";
+$a->strings["Warning: profile location has no identifiable owner name."] = "Attention: l'emplacement du profil n'a pas de nom identifiable.";
+$a->strings["Warning: profile location has no profile photo."] = "Attention: l'emplacement du profil n'a pas de photo de profil.";
+$a->strings["%d required parameter was not found at the given location"] = array(
+ 0 => "%d paramètre requis n'a pas été trouvé à l'endroit indiqué",
+ 1 => "%d paramètres requis n'ont pas été trouvés à l'endroit indiqué",
+);
+$a->strings["Introduction complete."] = "Phase de présentation achevée.";
+$a->strings["Unrecoverable protocol error."] = "Erreur de protocole non-récupérable.";
+$a->strings["Profile unavailable."] = "Profil indisponible.";
+$a->strings["%s has received too many connection requests today."] = "%s a reçu trop de demande d'introduction de votre part aujourd'hui.";
+$a->strings["Spam protection measures have been invoked."] = "Des mesures de protection contre le spam ont été déclenchées.";
+$a->strings["Friends are advised to please try again in 24 hours."] = "Les relations sont encouragées à attendre 24 heures pour recommencer.";
+$a->strings["Invalid locator"] = "Localisateur invalide";
+$a->strings["Unable to resolve your name at the provided location."] = "Impossible de résoudre votre nom à l'emplacement fourni.";
+$a->strings["You have already introduced yourself here."] = "Vous vous êtes déjà présenté ici.";
+$a->strings["Apparently you are already friends with %s."] = "Il semblerait que vous soyez déjà ami avec %s.";
+$a->strings["Invalid profile URL."] = "URL de profil invalide.";
+$a->strings["Disallowed profile URL."] = "URL de profil interdite.";
+$a->strings["Failed to update contact record."] = "Échec de mise-à-jour du contact.";
+$a->strings["Your introduction has been sent."] = "Votre présentation a été envoyée.";
+$a->strings["Please login to confirm introduction."] = "Connectez-vous pour confirmer l'introduction.";
+$a->strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Identité incorrecte actuellement connectée. Merci de vous connecter à <strong>ce</strong> profil.";
+$a->strings["Introduction received at "] = "Introduction reçue sur ";
+$a->strings["Friend/Connection Request"] = "Requête de relation/amitié";
+$a->strings["Please answer the following:"] = "Merci de répondre à ce qui suit:";
+$a->strings["Does \$name know you?"] = "Est-ce que \$name vous connaît?";
+$a->strings["Add a personal note:"] = "Ajouter une note personnelle:";
+$a->strings["Please enter your profile address from one of the following supported social networks:"] = "Merci d'entrer l'adresse de votre profil sur l'une de ces réseaux sociaux:";
+$a->strings["Friendika"] = "Friendika";
+$a->strings["StatusNet/Federated Social Web"] = "StatusNet/Federated Social Web";
+$a->strings["Private (secure) network"] = "Réseau privé (sécurisé)";
+$a->strings["Public (insecure) network"] = "Réseau public (non-sécurisé)";
+$a->strings["Your profile address:"] = "Votre adresse de profil:";
+$a->strings["Submit Request"] = "Envoyer la requête";
+$a->strings["The profile address specified does not provide adequate information."] = "L'adresse de profil indiquée ne fournit par les informations adéquates.";
+$a->strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Profil limité. Cette personne ne sera pas capable de recevoir des notifications directes/personnelles de votre part.";
+$a->strings["Unable to retrieve contact information."] = "Impossible de récupérer les informations du contact.";
+$a->strings["following"] = "following";
+$a->strings["Photo Albums"] = "Albums photo";
+$a->strings["Contact information unavailable"] = "Informations de contact indisponibles";
+$a->strings["Album not found."] = "Album introuvable.";
+$a->strings["Delete Album"] = "Effacer l'album";
+$a->strings["Delete Photo"] = "Effacer la photo";
+$a->strings["was tagged in a"] = "a été identifié dans";
+$a->strings["by"] = "par";
+$a->strings["No photos selected"] = "Aucune photo sélectionnée";
+$a->strings["Upload Photos"] = "Téléverser des photos";
+$a->strings["New album name: "] = "Nom du nouvel album: ";
+$a->strings["or existing album name: "] = "ou nom d'un album existant: ";
+$a->strings["Permissions"] = "Permissions";
+$a->strings["Edit Album"] = "Éditer l'album";
+$a->strings["View Photo"] = "Voir la photo";
+$a->strings["Photo not available"] = "Photo indisponible";
+$a->strings["Edit photo"] = "Éditer la photo";
+$a->strings["Use as profile photo"] = "Utiliser comme photo de profil";
+$a->strings["<< Prev"] = "<< Précédent";
+$a->strings["View Full Size"] = "Voir en taille réelle";
+$a->strings["Next >>"] = "Suivant >>";
+$a->strings["Tags: "] = "Étiquettes: ";
+$a->strings["[Remove any tag]"] = "[Retirer toutes les étiquettes]";
+$a->strings["New album name"] = "Nom du nouvel album";
+$a->strings["Caption"] = "Titre";
+$a->strings["Add a Tag"] = "Ajouter une étiquette";
+$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Exemples: @bob, @Barbara_Jensen, @jim@example.com, #Californie, #vacances";
+$a->strings["Recent Photos"] = "Photos récentes";
+$a->strings["Upload New Photos"] = "Téléverser de nouvelles photos";
+$a->strings["View Album"] = "Voir l'album";
+$a->strings["Invalid request identifier."] = "Identifiant de demande invalide.";
+$a->strings["Discard"] = "Défausser";
+$a->strings["Ignore"] = "Ignorer";
+$a->strings["Show Ignored Requests"] = "Voir les demandes ignorées";
+$a->strings["Hide Ignored Requests"] = "Cacher les demandes ignorées";
+$a->strings["Claims to be known to you: "] = "Prétend que vous le connaissez: ";
+$a->strings["yes"] = "oui";
+$a->strings["no"] = "non";
+$a->strings["Approve as: "] = "Approuver en tant que: ";
+$a->strings["Friend"] = "Ami";
+$a->strings["Fan/Admirer"] = "Fan/Admirateur";
+$a->strings["Notification type: "] = "Type de notification: ";
+$a->strings["Friend/Connect Request"] = "Demande de connexion/relation";
+$a->strings["New Follower"] = "Nouvel abonné";
+$a->strings["Approve"] = "Approuver";
+$a->strings["No notifications."] = "Pas de notification.";
+$a->strings["No registrations."] = "Pas d'inscriptions.";
+$a->strings["Invite Friends"] = "Inviter des amis";
+$a->strings["Connect/Follow"] = "Connecter/Suivre";
+$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Exemple: bob@example.com, http://example.com/barbara";
+$a->strings["Follow"] = "Suivre";
+$a->strings["Could not access contact record."] = "Impossible d'accéder à l'enregistrement du contact.";
+$a->strings["Could not locate selected profile."] = "Impossible de localiser le profil séléctionné.";
+$a->strings["Contact updated."] = "Contact mis-à-jour.";
+$a->strings["Contact has been blocked"] = "Le contact a été bloqué";
+$a->strings["Contact has been unblocked"] = "Le contact n'est plus bloqué";
+$a->strings["Contact has been ignored"] = "Le contact a été ignoré";
+$a->strings["Contact has been unignored"] = "Le contact n'est plus ignoré";
+$a->strings["stopped following"] = "retiré de la liste de suivi";
+$a->strings["Contact has been removed."] = "Ce contact a été retiré.";
+$a->strings["Mutual Friendship"] = "Relation réciproque";
+$a->strings["is a fan of yours"] = "est un fan de vous";
+$a->strings["you are a fan of"] = "vous êtes un fan de";
+$a->strings["Privacy Unavailable"] = "Protection de la vie privée indisponible";
+$a->strings["Private communications are not available for this contact."] = "Les communications privées ne sont pas disponibles pour ce contact.";
+$a->strings["Never"] = "Jamais";
+$a->strings["(Update was successful)"] = "(Mise à jour effectuée avec succès)";
+$a->strings["(Update was not successful)"] = "(Mise à jour échouée)";
+$a->strings["Contact Editor"] = "Éditeur de contact";
+$a->strings["Visit \$name's profile"] = "Visiter le profil de \$name";
+$a->strings["Block/Unblock contact"] = "Bloquer/débloquer ce contact";
+$a->strings["Ignore contact"] = "Ignorer ce contact";
+$a->strings["Delete contact"] = "Effacer ce contact";
+$a->strings["Last updated: "] = "Dernière mise-à-jour: ";
+$a->strings["Update public posts: "] = "Met ses entrées publiques à jour: ";
+$a->strings["Update now"] = "Mettre-à-jour immédiatement";
+$a->strings["Unblock this contact"] = "Débloquer ce contact";
+$a->strings["Block this contact"] = "Bloquer ce contact";
+$a->strings["Unignore this contact"] = "Cesser d'ignorer ce contact";
+$a->strings["Ignore this contact"] = "Ignorer ce contact";
+$a->strings["Currently blocked"] = "Actuellement bloqué";
+$a->strings["Currently ignored"] = "Actuellement ignoré";
+$a->strings["Show Blocked Connections"] = "Montrer les connexions bloquées";
+$a->strings["Hide Blocked Connections"] = "Cacher les connexion bloquées";
+$a->strings["Find"] = "Trouver";
+$a->strings["Edit contact"] = "Éditer le contact";
+$a->strings["No results."] = "Aucun résultat.";
+$a->strings["Item not found"] = "Élément introuvable";
+$a->strings["Edit post"] = "Éditer la publication";
+$a->strings["Remove My Account"] = "Supprimer mon compte";
+$a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Ceci supprimera totalement votre compte. Cette opération est irréversible.";
+$a->strings["Please enter your password for verification:"] = "Merci de saisir votre mot de passe pour vérification:";
+$a->strings["Create a New Account"] = "Créer un nouveau compte";
+$a->strings["Nickname or Email address: "] = "Pseudo ou courriel: ";
+$a->strings["Password: "] = "Mot de passe: ";
+$a->strings["Nickname/Email/OpenID: "] = "Pseudo/Courriel/OpenID: ";
+$a->strings["Password (if not OpenID): "] = "Mot de passe (sauf pour OpenID): ";
+$a->strings["Forgot your password?"] = "Mot de passe oublié?";
+$a->strings["Password Reset"] = "Réinitialiser le mot de passe";
+$a->strings["prev"] = "précédent";
+$a->strings["first"] = "premier";
+$a->strings["last"] = "dernier";
+$a->strings["next"] = "suivant";
+$a->strings["%s likes this."] = "%s aime ça.";
+$a->strings["%s doesn't like this."] = "%s n'aime pas ça.";
+$a->strings["<span %1\$s>%2\$d people</span> like this."] = "<span %1\$s>%2\$d personnes</span> aiment ça.";
+$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = "<span %1\$s>%2\$d personnes</span> ,n'aiment pas ça.";
+$a->strings["and"] = "et";
+$a->strings[", and %d other people"] = ", et %d autres personnes";
+$a->strings["%s like this."] = "%s aiment ça.";
+$a->strings["%s don't like this."] = "%s n'aiment pas ça.";
+$a->strings["No contacts"] = "Aucun contact";
+$a->strings["Connect"] = "Relier";
+$a->strings["Location:"] = "Localisation:";
+$a->strings[", "] = ", ";
+$a->strings["Gender:"] = "Genre:";
+$a->strings["Status:"] = "Statut:";
+$a->strings["Homepage:"] = "Page personnelle:";
+$a->strings["Monday"] = "Lundi";
+$a->strings["Tuesday"] = "Mardi";
+$a->strings["Wednesday"] = "Mercredi";
+$a->strings["Thursday"] = "Jeudi";
+$a->strings["Friday"] = "Vendredi";
+$a->strings["Saturday"] = "Samedi";
+$a->strings["Sunday"] = "Dimanche";
+$a->strings["January"] = "Janvier";
+$a->strings["February"] = "Février";
+$a->strings["March"] = "Mars";
+$a->strings["April"] = "Avril";
+$a->strings["May"] = "Mai";
+$a->strings["June"] = "Juin";
+$a->strings["July"] = "Juillet";
+$a->strings["August"] = "Août";
+$a->strings["September"] = "Septembre";
+$a->strings["October"] = "Octobre";
+$a->strings["November"] = "Novembre";
+$a->strings["December"] = "Décembre";
+$a->strings["Birthday Reminders"] = "Rappels d'anniversaires";
+$a->strings["Birthdays this week:"] = "Anniversaires cette semaine:";
+$a->strings["(Adjusted for local time)"] = "(Ajustés pour le fuseau horaire local)";
+$a->strings["[today]"] = "[aujourd'hui]";
+$a->strings["link to source"] = "lien original";
+$a->strings["Not Found"] = "Non trouvé";
+$a->strings["Page not found."] = "Page introuvable.";
+$a->strings["This is Friendika version"] = "Motorisé par Friendika version";
+$a->strings["running at web location"] = "hébergé sur";
+$a->strings["Shared content within the Friendika network is provided under the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0 license</a>"] = "Les contenus partagés au sein du réseau Friendika le sont sous la licence <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0</a>";
+$a->strings["Please visit <a href=\"http://project.friendika.com\">Project.Friendika.com</a> to learn more about the Friendika project."] = "Pour en savoir plus, vous pouvez nous rendre visite sur <a href=\"http://project.friendika.com\">Project.Friendika.com</a>";
+$a->strings["Bug reports and issues: please visit"] = "Pour les rapports de bugs: rendez vous sur";
+$a->strings["Suggestions, praise, donations, etc. - please email \"Info\" at Friendika - dot com"] = "Suggestions, remerciements, donations, etc. - écrivez à \"Info\" arob. Friendika - point com";
+$a->strings["Installed plugins/addons/apps"] = "Extensions/greffons/applications installées";
+$a->strings["No installed plugins/addons/apps"] = "Aucune extension/greffon/application installée";
+$a->strings["Profile Match"] = "Correpondance de profils";
+$a->strings["No matches"] = "Aucune correspondance";
+$a->strings["See more posts like this"] = "Davantage de publications similaires";
+$a->strings["See all %d comments"] = "Voir les %d commentaires";
+$a->strings["Proceed with Installation"] = "Commencer l'installation";
+$a->strings["Your Friendika site database has been installed."] = "La base de données de votre site Friendika a été installée.";
+$a->strings["Proceed to registration"] = "Commencer l'inscription";
+$a->strings["Export Personal Data"] = "Exporter les données personnelles";
+$a->strings["Gender: "] = "Genre: ";
+$a->strings["No entries (some entries may be hidden)."] = "Aucune entrée (certaines peuvent être cachées).";
+$a->strings["Status"] = "Statut";
+$a->strings["Profile"] = "Profil";
+$a->strings["Photos"] = "Photos";
+$a->strings["Find People With Shared Interests"] = "Trouver des gens d'intérêts communs";
+$a->strings["%d Contact"] = array(
+ 0 => "%d contact",
+ 1 => "%d contacts",
+);
+$a->strings["Post successful."] = "Publication réussie.";
+$a->strings["Enter a title for this item"] = "Saisissez un titre pour cet élément";
+$a->strings["Set title"] = "Définir un titre";
+$a->strings["Crop Image"] = "(Re)cadrer l'image";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "Ajustez le cadre de l'image pour une visualisation optimale.";
+$a->strings["Done Editing"] = "Édition terminée";
+$a->strings["Pending Friend/Connect Notifications"] = "Notifications de relation/amitié enattente";
+$a->strings["User registrations waiting for confirm"] = "Inscriptions d'utilisateurs en attente de confirmation";
+$a->strings["Delete this item?"] = "Effacer cet élément?";
+$a->strings["Comment"] = "Commenter";
+$a->strings["Full Name:"] = "Nom complet:";
+$a->strings["j F, Y"] = "j F, Y";
+$a->strings["j F"] = "j F";
+$a->strings["Age:"] = "Age:";
+$a->strings["<span class=\"heart\">&hearts;</span> Status:"] = "<span class=\"heart\">&hearts;</span> Statut:";
+$a->strings["Sexual Preference:"] = "Préférence sexuelle:";
+$a->strings["Political Views:"] = "Opinions politiques:";
+$a->strings["Religion:"] = "Religion:";
+$a->strings["About:"] = "À propos:";
+$a->strings["Hobbies/Interests:"] = "Passe-temps/Centres d'intérêt:";
+$a->strings["Contact information and Social Networks:"] = "Coordonées/Réseaux sociaux:";
+$a->strings["Musical interests:"] = "Goûts musicaux:";
+$a->strings["Books, literature:"] = "Lectures:";
+$a->strings["Television:"] = "Télévision:";
+$a->strings["Film/dance/culture/entertainment:"] = "Cinéma/Danse/Culture/Divertissement:";
+$a->strings["Love/Romance:"] = "Amour/Romance:";
+$a->strings["Work/employment:"] = "Activité professionnelle/Occupation:";
+$a->strings["School/education:"] = "Études/Formation:";
+$a->strings["Hide my contact/friend list from viewers of this profile?"] = "Cacher ma liste d'amis/contacts des visiteurs de ce profil?";
+$a->strings["Edit Profile Details"] = "Éditer les détails du profil";
+$a->strings["View this profile"] = "Voir ce profil";
+$a->strings["Create a new profile using these settings"] = "Créer un nouveau profil en utilisant ces réglages";
+$a->strings["Clone this profile"] = "Cloner ce profil";
+$a->strings["Delete this profile"] = "Supprimer ce profil";
+$a->strings["Profile Name:"] = "Nom du profil:";
+$a->strings["Your Full Name:"] = "Votre nom complet:";
+$a->strings["Title/Description:"] = "Titre/Description:";
+$a->strings["Your Gender:"] = "Votre genre:";
+$a->strings["Birthday (y/m/d):"] = "Anniversaire (j/m/a):";
+$a->strings["Street Address:"] = "Adresse postale:";
+$a->strings["Locality/City:"] = "Ville/Localité:";
+$a->strings["Postal/Zip Code:"] = "Code postal:";
+$a->strings["Country:"] = "Pays:";
+$a->strings["Region/State:"] = "Région/État:";
+$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Statut marital:";
+$a->strings["Who: (if applicable)"] = "Qui: (si pertinent)";
+$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Exemples: cathy123, Cathy Williams, cathy@example.com";
+$a->strings["Homepage URL:"] = "Page personnelle:";
+$a->strings["Religious Views:"] = "Opinions religieuses:";
+$a->strings["Public Keywords:"] = "Mots-clés publics:";
+$a->strings["Private Keywords:"] = "Mots-clés privés:";
+$a->strings["Example: fishing photography software"] = "Exemple: football dessin programmation";
+$a->strings["(Used for suggesting potential friends, can be seen by others)"] = "(Utilisés pour vous suggérer des amis potentiels, peuvent être vus par autrui)";
+$a->strings["(Used for searching profiles, never shown to others)"] = "(Utilisés pour rechercher dans les profils, ne seront jamais montrés à autrui)";
+$a->strings["Tell us about yourself..."] = "Parlez-nous de vous...";
+$a->strings["Hobbies/Interests"] = "Passe-temps/Centres d'intérêt";
+$a->strings["Contact information and Social Networks"] = "Coordonées/Réseaux sociaux";
+$a->strings["Musical interests"] = "Goûts musicaux";
+$a->strings["Books, literature"] = "Lectures";
+$a->strings["Television"] = "Télévision";
+$a->strings["Film/dance/culture/entertainment"] = "Cinéma/Danse/Culture/Divertissement";
+$a->strings["Love/romance"] = "Amour/Romance";
+$a->strings["Work/employment"] = "Activité professionnelle/Occupation";
+$a->strings["School/education"] = "Études/Formation";
+$a->strings["Change profile photo"] = "Changer de photo de profil";
+$a->strings["Create New Profile"] = "Créer un nouveau profil";
+$a->strings["%d member"] = array(
+ 0 => "%d membre",
+ 1 => "%d membres",
+);
+$a->strings["Warning: This group contains %s from an insecure network."] = "Attention : ce groupe contient %s, qui se connecte depuis un réseau non-sécurisé.";
+$a->strings["Private messages to this group are at risk of public disclosure."] = "Les messages privés envoyés à ce groupe s'exposent à une diffusion incontrôlée.";
+$a->strings["D, d M Y - g:i A"] = "D, d M Y - g:i A";
+$a->strings["Friendika Social Network"] = "Réseau social Friendika";
+$a->strings["Installation"] = "Installation";
+$a->strings["In order to install Friendika we need to know how to contact your database."] = "Pour installer Friendika, nous avons besoin de contacter votre base de données.";
+$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Merci de vous tourner vers votre hébergeur et/ou administrateur pour toute question concernant ces réglages.";
+$a->strings["The database you specify below must already exist. If it does not, please create it before continuing."] = "La base de données que vous spécifierez doit exister. Si ce n'est pas encore le cas, merci de la créer avant de continuer.";
+$a->strings["Database Server Name"] = "Serveur de base de données";
+$a->strings["Database Login Name"] = "Nom d'utilisateur de la base";
+$a->strings["Database Login Password"] = "Mot de passe de la base";
+$a->strings["Database Name"] = "Nom de la base";
+$a->strings["Please select a default timezone for your website"] = "Sélectionner un fuseau horaire par défaut pour votre site";
+$a->strings["Normal Account"] = "Compte normal";
+$a->strings["This account is a normal personal profile"] = "Ce compte correspond à un profil normal, pour une seule personne (physique, généralement)";
+$a->strings["Soapbox Account"] = "Compte \"boîte à savon\"";
+$a->strings["Automatically approve all connection/friend requests as read-only fans"] = "Accepter automatiquement toutes les demandes d'amitié/connexion comme étant des fans 'en lecture seule'";
+$a->strings["Community/Celebrity Account"] = "Compte de communauté/célébrité";
+$a->strings["Automatically approve all connection/friend requests as read-write fans"] = "Accepter automatiquement toutes les demandes d'amitié/connexion comme étant des fans en 'lecture/écriture'";
+$a->strings["Automatic Friend Account"] = "Compte auto-amical";
+$a->strings["Automatically approve all connection/friend requests as friends"] = "Accepter automatiquement toutes les demandes d'amitié/connexion comme étant des amis";
+$a->strings["Publish your default profile in site directory?"] = "Publier votre profil par défaut sur l'annuaire local?";
+$a->strings["Publish your default profile in global social directory?"] = "Publier votre profil par défaut sur l'annuaire global?";
+$a->strings["or"] = "ou";
+$a->strings["Your profile address is"] = "Votre adresse de profil est";
+$a->strings["Basic Settings"] = "Réglages basiques";
+$a->strings["Email Address:"] = "Adresse courriel:";
+$a->strings["Your Timezone:"] = "Fuseau horaire:";
+$a->strings["Default Post Location:"] = "Publication par défaut depuis :";
+$a->strings["Use Browser Location:"] = "Utiliser la localisation géographique du navigateur:";
+$a->strings["Display Theme:"] = "Thème d'affichage:";
+$a->strings["Security and Privacy Settings"] = "Réglages de sécurité et vie privée";
+$a->strings["Maximum Friend Requests/Day:"] = "Nombre maximal de requêtes d'amitié/jour:";
+$a->strings["(to prevent spam abuse)"] = "(pour limiter l'impact du spam)";
+$a->strings["Allow friends to post to your profile page:"] = "Autoriser vos amis à publier sur votre page de profil:";
+$a->strings["Automatically expire (delete) posts older than"] = "Fair e expirer automatiquement les publications de plus de";
+$a->strings["Notification Settings"] = "Réglages de notification";
+$a->strings["Send a notification email when:"] = "Envoyer un courriel de notification quand:";
+$a->strings["You receive an introduction"] = "Vous recevez une introduction";
+$a->strings["Your introductions are confirmed"] = "Vos introductions sont confirmées";
+$a->strings["Someone writes on your profile wall"] = "Quelqu'un écrit sur votre mur";
+$a->strings["Someone writes a followup comment"] = "Quelqu'un vous commente";
+$a->strings["You receive a private message"] = "Vous recevez un message privé";
+$a->strings["Password Settings"] = "Réglages de mot de passe";
+$a->strings["Leave password fields blank unless changing"] = "Laissez les champs de mot de passe vierge, sauf si vous désirez les changer";
+$a->strings["New Password:"] = "Nouveau mot de passe:";
+$a->strings["Confirm:"] = "Confirmer:";
+$a->strings["Advanced Page Settings"] = "Réglages avancés";
+$a->strings["Password reset request issued. Check your email."] = "Réinitialisation du mot de passe en cours. Vérifiez votre courriel.";
+$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Impossible d'honorer cette demande. (Vous l'avez peut-être déjà utilisée par le passé.) La réinitialisation a échoué.";
+$a->strings["Your password has been reset as requested."] = "Votre mot de passe a bien été réinitialisé.";
+$a->strings["Your new password is"] = "Votre nouveau mot de passe est";
+$a->strings["Save or copy your new password - and then"] = "Sauvez ou copiez ce nouveau mot de passe - puis";
+$a->strings["click here to login"] = "cliquez ici pour vous connecter";
+$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Votre mot de passe peut être changé depuis la page <em>Réglages</em>, une fois que vous serez connecté.";
+$a->strings["Forgot your Password?"] = "Mot de passe oublié?";
+$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Entrez votre adresse de courriel et validez pour réinitialiser votre mot de passe. Vous recevrez la suite des instructions par courriel.";
+$a->strings["Nickname or Email: "] = "Pseudo ou courriel:";
+$a->strings["Reset"] = "Réinitialiser";
+$a->strings["Create a group of contacts/friends."] = "Créez un groupe de contacts/amis.";
+$a->strings["Group Name: "] = "Nom du groupe:";
+$a->strings["Group Editor"] = "Éditeur de groupe";
+$a->strings["Members:"] = "Membres:";
+$a->strings["Upload File:"] = "Fichier à téléverser:";
+$a->strings["Upload Profile Photo"] = "Téléverser une photo de profil";
+$a->strings["Upload"] = "Téléverser";
+$a->strings["select a photo from your photo albums"] = "choisissez une photo depuis vos albums";
+$a->strings["Site Directory"] = "Annuaire local";
+$a->strings["Welcome home %s."] = "Bienvenue chez vous, %s.";
+$a->strings["Please confirm your introduction/connection request to %s."] = "Merci de confirmer votre demande d'introduction auprès de %s.";
+$a->strings["Confirm"] = "Confirmer";
+$a->strings["Deny"] = "Rejetter";
+$a->strings["Profile Visibility"] = "Visibilité du profil";
+$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Merci de choisir le profil que vous souhaitez montrer à %s lorsqu'il vous rend visite de manière nominative.";
+$a->strings["Contact Information / Notes"] = "Informations de contact / Notes";
+$a->strings["Online Reputation"] = "Réputation en ligne";
+$a->strings["Occasionally your friends may wish to inquire about this person's online legitimacy."] = "De temps à autres, vos amis peuvent avoir besoin de connaître la légitimité de cette personne.";
+$a->strings["You may help them choose whether or not to interact with this person by providing a <em>reputation</em> to guide them."] = "Vous pouvez les aider à choisir s'ils veulent - ou non - interagir avec cette personne en leur fournissant une mesure de <em>réputation</em>.";
+$a->strings["Please take a moment to elaborate on this selection if you feel it could be helpful to others."] = "Merci de prendre un moment pour développer si vous pensez que cela peut être utile à d'autres.";
+$a->strings["g A l F d"] = "g A | F d";
+$a->strings["View status"] = "Voir le statut";
+$a->strings["View profile"] = "Voir le profil";
+$a->strings["View photos"] = "Voir les photos";
+$a->strings["Send PM"] = "Envoyer message";
+$a->strings["View %s's profile"] = "Voir le profil de %s";
+$a->strings["Help"] = "Aide";
+$a->strings["Visible to everybody"] = "Visible par tout le monde";
+$a->strings["Edit visibility"] = "Changer la visibilité";
+$a->strings["Click on a contact to add or remove."] = "Cliquez sur un contact pour l'ajouter ou le supprimer.";
+$a->strings["Members"] = "Membres";
+$a->strings["All Contacts"] = "Tout les contacts";
+$a->strings["Invalid profile identifier."] = "Identifiant de profil invalide.";
+$a->strings["Profile Visibility Editor"] = "Éditer la visibilité du profil";
+$a->strings["Visible To"] = "Visible par";
+$a->strings["All Contacts (with secure profile access)"] = "Tous les contacts (ayant un accès sécurisé)";
diff --git a/view/fr/wall_received_eml.tpl b/view/fr/wall_received_eml.tpl
index c296de785..adfb91dd8 100644
--- a/view/fr/wall_received_eml.tpl
+++ b/view/fr/wall_received_eml.tpl
@@ -1,18 +1,18 @@
-Dear $username,
+Chèr(e) $username,
- '$from' posted something to your profile wall.
+ '$from' a posté quelque-chose sur le mur de votre profil.
-----
$body
-----
-Please login at $siteurl to view or delete the item:
+Connectez-vous à $siteurl pour voir et/ou supprimer l'élément:
$display
-Thank you,
- $sitename administrator
+Merci,
+ l'administrateur de $sitename
diff --git a/view/group_drop.tpl b/view/group_drop.tpl
index c87ea459f..bd9852b96 100644
--- a/view/group_drop.tpl
+++ b/view/group_drop.tpl
@@ -1 +1,10 @@
-<div class="group-delete-wrapper" id="group-delete-wrapper-$id" ><a href="group/drop/$id" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" id="group-delete-icon-$id" class="group-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a></div><div class="group-delete-end"></div>
+<div class="group-delete-wrapper" id="group-delete-wrapper-$id" >
+ <a href="group/drop/$id"
+ onclick="return confirmDelete();"
+ title="$delete"
+ id="group-delete-icon-$id"
+ class="icon drophide group-delete-icon"
+ onmouseover="imgbright(this);"
+ onmouseout="imgdull(this);" ></a>
+</div>
+<div class="group-delete-end"></div>
diff --git a/view/en/group_edit.tpl b/view/group_edit.tpl
index e6c7afb49..51782ab95 100644
--- a/view/en/group_edit.tpl
+++ b/view/group_edit.tpl
@@ -1,24 +1,18 @@
-<h2>Group Editor</h2>
+<h2>$title</h2>
<div id="group-edit-wrapper" >
<form action="group/$gid" id="group-edit-form" method="post" >
<div id="group-edit-name-wrapper" >
-<label id="group-edit-name-label" for="group-edit-name" >Group Name: </label>
+<label id="group-edit-name-label" for="group-edit-name" >$gname</label>
<input type="text" id="group-edit-name" name="groupname" value="$name" />
</div>
<div id="group-edit-name-end"></div>
-<div id="group-edit-select-wrapper" >
-<label id="group_members_select_label" for="group_members_select" >Members:</label>
-$selector
-
-</div>
$drop
-<div id="group_members_select_end"></div>
<div id="group-edit-submit-wrapper" >
-<input type="submit" name="submit" value="Submit" >
+<input type="submit" name="submit" value="$submit" >
</div>
-
+<div id="group-edit-desc">$desc</div>
<div id="group-edit-select-end" ></div>
</form>
</div>
diff --git a/view/en/group_new.tpl b/view/group_new.tpl
index a1efa7717..735b51634 100644
--- a/view/en/group_new.tpl
+++ b/view/group_new.tpl
@@ -6,16 +6,16 @@
<div id="group-new-text">
<p>
-Create a group of contacts/friends.
+$desc
<div id="group-new-input-wrapper">
-<label id="group-new-label" for="group-new-name" >Group Name: </label>
+<label id="group-new-label" for="group-new-name" >$name</label>
<input name="groupname" id="group-new-name" />
</div>
<div id="group-new-input-end" ></div>
<div id="group-new-submit-wrapper" >
-<input type="submit" name="submit" value="Submit" />
+<input type="submit" name="submit" value="$submit" />
</form>
</div>
<div id="group-new-end"></div>
diff --git a/view/en/head.tpl b/view/head.tpl
index 8f97a11e5..ff66997e7 100644
--- a/view/en/head.tpl
+++ b/view/head.tpl
@@ -1,8 +1,12 @@
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<base href="$baseurl" />
+<base href="$baseurl/" />
<meta name="generator" content="$generator" />
<link rel="stylesheet" type="text/css" href="$stylesheet" media="all" />
<link rel="shortcut icon" href="$baseurl/images/friendika-32.png" />
+<link rel="search"
+ href="$baseurl/opensearch"
+ type="application/opensearchdescription+xml"
+ title="Search in Friendika" />
<!--[if IE]>
<script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
@@ -11,9 +15,9 @@
<script type="text/javascript" src="$baseurl/include/main.js" ></script>
<script>
- function confirmDelete() { return confirm("Delete this item?"); }
+ function confirmDelete() { return confirm("$delitem"); }
function commentOpen(obj,id) {
- if(obj.value == 'Comment') {
+ if(obj.value == '$comment') {
obj.value = '';
obj.className = "comment-edit-text-full";
openMenu("comment-edit-submit-wrapper-" + id);
@@ -21,7 +25,7 @@
}
function commentClose(obj,id) {
if(obj.value == '') {
- obj.value = 'Comment';
+ obj.value = '$comment';
obj.className="comment-edit-text-empty";
closeMenu("comment-edit-submit-wrapper-" + id);
}
diff --git a/view/it/install_db.tpl b/view/install_db.tpl
index 69a467e9d..1c59dbdb9 100644
--- a/view/it/install_db.tpl
+++ b/view/install_db.tpl
@@ -1,33 +1,33 @@
-<h3>Friendika Social Network</h3>
-<h3>Installazione</h3>
+<h3>$lbl_01</h3>
+<h3>$lbl_02</h3>
<p>
-Per poter installare Friendika dobbiamo conoscrere come collegarci al tuo database. Contatta il tuo hosting provider o l'amministratore del sito se hai domande su questi settaggi. Il database specificato qui di seguito deve essere già presente. Se non esiste, crealo prima di continuare.
+$lbl_03 $lbl_04 $lbl_05
</p>
<form id="install-form" action="$baseurl/install" method="post">
<input type="hidden" name="phpath" value="$phpath" />
-<label for="install-dbhost" id="install-dbhost-label">Nome Server Database</label>
+<label for="install-dbhost" id="install-dbhost-label">$lbl_06</label>
<input type="text" name="dbhost" id="install-dbhost" value="$dbhost" />
<div id="install-dbhost-end"></div>
-<label for="install-dbuser" id="install-dbuser-label">Nome Login Database</label>
+<label for="install-dbuser" id="install-dbuser-label">$lbl_07</label>
<input type="text" name="dbuser" id="install-dbuser" value="$dbuser" />
<div id="install-dbuser-end"></div>
-<label for="install-dbpass" id="install-dbpass-label">Password Login Database</label>
+<label for="install-dbpass" id="install-dbpass-label">$lbl_08</label>
<input type="password" name="dbpass" id="install-dbpass" value="$dbpass" />
<div id="install-dbpass-end"></div>
-<label for="install-dbdata" id="install-dbdata-label">Nome Database</label>
+<label for="install-dbdata" id="install-dbdata-label">$lbl_09</label>
<input type="text" name="dbdata" id="install-dbdata" value="$dbdata" />
<div id="install-dbdata-end"></div>
<div id="install-tz-desc">
-Seleziona il fuso orario del tuo sito web
+$lbl_10
</div>
$tzselect
diff --git a/view/it/contact_edit.tpl b/view/it/contact_edit.tpl
deleted file mode 100644
index ac0f13a54..000000000
--- a/view/it/contact_edit.tpl
+++ /dev/null
@@ -1,80 +0,0 @@
-
-<h2>$header</h2>
-
-<div id="contact-edit-banner-name">$name</div>
-
-<form action="contacts/$contact_id" method="post" >
-<input type="hidden" name="contact_id" value="$contact_id">
-
-<div id="contact-edit-wrapper" >
-
- <div id="contact-edit-photo-wrapper" >
- <img id="contact-edit-direction-icon" src="$dir_icon" alt="$alt_text" title="$alt_text" />
- <div id="contact-edit-photo" >
- <a href="$url" title="$visit" /><img src="$photo" $sparkle alt="$name" /></a>
- </div>
- <div id="contact-edit-photo-end" ></div>
- </div>
- <div id="contact-edit-nav-wrapper" >
-
- <div id="contact-edit-links" >
- <a href="contacts/$contact_id/block" id="contact-edit-block-link" ><img src="images/b_block.gif" alt="$blockunblock" title="$block_text"/></a>
- <a href="contacts/$contact_id/ignore" id="contact-edit-ignore-link" ><img src="images/no.gif" alt="$ignorecont" title="$ignore_text"/></a>
- </div>
- <div id="contact-drop-links" >
- <a href="contacts/$contact_id/drop" id="contact-edit-drop-link" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" /></a>
- </div>
- <div id="contact-edit-nav-end"></div>
-
-
- <div id="contact-edit-poll-wrapper">
- <div id="contact-edit-last-update-text">$lastupdtext<span id="contact-edit-last-updated">$last_update</span</div>
- <div id="contact-edit-poll-text">$updpub</div>
- $poll_interval
- <div id="contact-edit-update-now"><a href="contacts/$contact_id/update">$udnow</a></div>
- </div>
- </div>
- <div id="contact-edit-end" ></div>
-
-$insecure
-$blocked
-$ignored
-
-
-<div id="contact-edit-info-wrapper">
-<h4>Informazioni di contatto / Note</h4>
-<textarea id="contact-edit-info" rows="10" cols="72" name="info" >$info</textarea>
-</div>
-<div id="contact-edit-info-end"></div>
-
-<input class="contact-edit-submit" type="submit" name="submit" value="Aggiorna" />
-
-
-<div id="contact-edit-profile-select-text">
-<h4>Visibilt&agrave; Profilo</h4>
-<p>Scegli il profilo che vuoi mostrare a $name quando guarda il tuo profilo in modo sicuro.</p>
-</div>
-$profile_select
-<div id="contact-edit-profile-select-end"></div>
-
-<input class="contact-edit-submit" type="submit" name="submit" value="Aggiorna" />
-
-
-<div id="contact-edit-rating-wrapper">
-<h4>Reputazione Online</h4>
-<p>Puo' capitare che i tuoi amici vogliano sapere la legittimit&agrave; online dei questa persona. Puoi aiutarli a scegliere se interagire o no con questa persona fornendo una 'reputazione' per guidarli.</p>
-<div id="contact-edit-rating-select-wrapper">
-$rating
-</div>
-<div id="contact-edit-rating-explain">
-<p>
-Prenditi un momento per pensare su questa selezione se senti che puo' essere utile ad altri.
-</p>
-<textarea id="contact-edit-rating-text" name="reason" rows="3" cols="64" >$reason</textarea>
-</div>
-</div>
-$groups
-
-<input class="contact-edit-submit" type="submit" name="submit" value="Aggiorna" />
-</form>
-</div>
diff --git a/view/it/cropbody.tpl b/view/it/cropbody.tpl
deleted file mode 100644
index fe072f0b5..000000000
--- a/view/it/cropbody.tpl
+++ /dev/null
@@ -1,57 +0,0 @@
-<h1>Ritaglia Immagine</h1>
-<p id="cropimage-desc">
-Sistema il ritaglio dell'immagine per una visualizzazione ottimale.
-</p>
-<div id="cropimage-wrapper">
-<img src="$image_url" id="croppa" class="imgCrop" alt="" />
-</div>
-<div id="cropimage-preview-wrapper" >
-<div id="previewWrap" ></div>
-</div>
-
-<script type="text/javascript" language="javascript">
-
- function onEndCrop( coords, dimensions ) {
- $( 'x1' ).value = coords.x1;
- $( 'y1' ).value = coords.y1;
- $( 'x2' ).value = coords.x2;
- $( 'y2' ).value = coords.y2;
- $( 'width' ).value = dimensions.width;
- $( 'height' ).value = dimensions.height;
- }
-
- Event.observe( window, 'load', function() {
- new Cropper.ImgWithPreview(
- 'croppa',
- {
- previewWrap: 'previewWrap',
- minWidth: 175,
- minHeight: 175,
- maxWidth: 640,
- maxHeight: 640,
- ratioDim: { x: 100, y:100 },
- displayOnInit: true,
- onEndCrop: onEndCrop
- }
- );
- }
- );
-
-</script>
-
-<form action="profile_photo/$resource" id="crop-image-form" method="post" />
-
-<input type="hidden" name="imagename" value="$hash" />
-<input type="hidden" name="cropfinal" value="1" />
-<input type="hidden" name="xstart" id="x1" />
-<input type="hidden" name="ystart" id="y1" />
-<input type="hidden" name="xfinal" id="x2" />
-<input type="hidden" name="yfinal" id="y2" />
-<input type="hidden" name="height" id="height" />
-<input type="hidden" name="width" id="width" />
-
-<div id="crop-image-submit-wrapper" >
-<input type="submit" name="submit" value="Fatto" />
-</div>
-
-</form>
diff --git a/view/it/dfrn_req_confirm.tpl b/view/it/dfrn_req_confirm.tpl
deleted file mode 100644
index 1496ecf59..000000000
--- a/view/it/dfrn_req_confirm.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-<p id="dfrn-request-homecoming" >
-Bentornato a casa $username.
-<br />
-Perfavore conferma la tua presentazione a $dfrn_url.
-
-</p>
-<form id="dfrn-request-homecoming-form" action="dfrn_request/$nickname" method="post">
-<input type="hidden" name="dfrn_url" value="$dfrn_url" />
-<input type="hidden" name="confirm_key" value="$confirm_key" />
-<input type="hidden" name="localconfirm" value="1" />
-$aes_allow
-
-<div id="dfrn-request-homecoming-submit-wrapper" >
-<input id="dfrn-request-homecoming-submit" type="submit" name="submit" value="Conferma" />
-</div>
-</form>
diff --git a/view/it/group_edit.tpl b/view/it/group_edit.tpl
deleted file mode 100644
index 00942a6c0..000000000
--- a/view/it/group_edit.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<h2>Modifica Gruppo</h2>
-
-
-<div id="group-edit-wrapper" >
-<form action="group/$gid" id="group-edit-form" method="post" >
-<div id="group-edit-name-wrapper" >
-<label id="group-edit-name-label" for="group-edit-name" >Nome Gruppo: </label>
-<input type="text" id="group-edit-name" name="groupname" value="$name" />
-</div>
-<div id="group-edit-name-end"></div>
-<div id="group-edit-select-wrapper" >
-<label id="group_members_select_label" for="group_members_select" >Membri:</label>
-$selector
-
-</div>
-$drop
-<div id="group_members_select_end"></div>
-<div id="group-edit-submit-wrapper" >
-<input type="submit" name="submit" value="Aggiorna" >
-</div>
-
-<div id="group-edit-select-end" ></div>
-</form>
-</div>
diff --git a/view/it/group_new.tpl b/view/it/group_new.tpl
deleted file mode 100644
index 4686ac4d2..000000000
--- a/view/it/group_new.tpl
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-<div id="group-new-wrapper" >
-<form action="group/new" method="post">
-
-<div id="group-new-text">
-<p>
-Crea un gruppo di contatti/amici.
-
-<div id="group-new-input-wrapper">
-<label id="group-new-label" for="group-new-name" >Nome Gruppo: </label>
-<input name="groupname" id="group-new-name" />
-</div>
-<div id="group-new-input-end" ></div>
-
-<div id="group-new-submit-wrapper" >
-<input type="submit" name="submit" value="Aggiorna" />
-</form>
-</div>
-<div id="group-new-end"></div>
-
-
diff --git a/view/it/head.tpl b/view/it/head.tpl
deleted file mode 100644
index 8e4e0ccd7..000000000
--- a/view/it/head.tpl
+++ /dev/null
@@ -1,32 +0,0 @@
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<base href="$baseurl" />
-<meta name="generator" content="$generator" />
-<link rel="stylesheet" type="text/css" href="$stylesheet" media="all" />
-<link rel="shortcut icon" href="$baseurl/images/friendika-32.png" />
-
-<!--[if IE]>
-<script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
-<![endif]-->
-<script type="text/javascript" src="$baseurl/include/jquery.js" ></script>
-<script type="text/javascript" src="$baseurl/include/main.js" ></script>
-<script>
-
- function confirmDelete() { return confirm("Cancellare questo elemento?"); }
- function commentOpen(obj,id) {
- if(obj.value == 'Comment') {
- obj.value = '';
- obj.className = "comment-edit-text-full";
- openMenu("comment-edit-submit-wrapper-" + id);
- }
- }
- function commentClose(obj,id) {
- if(obj.value == '') {
- obj.value = 'Comment';
- obj.className="comment-edit-text-empty";
- closeMenu("comment-edit-submit-wrapper-" + id);
- }
- }
-
-</script>
-
-
diff --git a/view/it/htconfig.tpl b/view/it/htconfig.tpl
index 180f7885c..4de266112 100644
--- a/view/it/htconfig.tpl
+++ b/view/it/htconfig.tpl
@@ -37,7 +37,7 @@ $a->config['admin_email'] = '';
// Maximum size of an imported message, 0 is unlimited
-$a->config['max_import_size'] = 10000;
+$a->config['max_import_size'] = 200000;
// maximum size of uploaded photos
diff --git a/view/it/insecure_net.tpl b/view/it/insecure_net.tpl
deleted file mode 100644
index 7ab6270ff..000000000
--- a/view/it/insecure_net.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<div id="profile-edit-insecure">
-<p>
-Il social network a cui $name appartiene &egrave; una rete aperta con limitati o non esistenti controlli di privacy.
-Usa la necessaria discrezione.
-</p>
-</div>
diff --git a/view/it/intros-top.tpl b/view/it/intros-top.tpl
deleted file mode 100644
index d096dcfb8..000000000
--- a/view/it/intros-top.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<h1>Notifiche di Amicizia/Collegamento in Attesa</h1>
-
-<div id="notification-show-hide-wrapper" >
-<a href="$hide_url" id="notification-show-hide-link">$hide_text</a>
-</div>
-
-
diff --git a/view/it/jot-header.tpl b/view/it/jot-header.tpl
deleted file mode 100644
index 117cd1651..000000000
--- a/view/it/jot-header.tpl
+++ /dev/null
@@ -1,142 +0,0 @@
-
-<script language="javascript" type="text/javascript" src="$baseurl/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
-<script language="javascript" type="text/javascript">
-
-var editor;
-
-tinyMCE.init({
- theme : "advanced",
- mode : "specific_textareas",
- editor_selector: /(profile-jot-text|prvmail-text)/,
- plugins : "bbcode,paste",
- theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code",
- theme_advanced_buttons2 : "",
- theme_advanced_buttons3 : "",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "center",
- theme_advanced_blockformats : "blockquote,code",
- paste_text_sticky : true,
- entity_encoding : "raw",
- add_unload_trigger : false,
- remove_linebreaks : false,
- force_p_newlines : false,
- force_br_newlines : true,
- forced_root_block : '',
- convert_urls: false,
- content_css: "$baseurl/view/custom_tinymce.css",
- //Character count
- theme_advanced_path : false,
- setup : function(ed) {
- ed.onKeyUp.add(function(ed, e) {
- var txt = tinyMCE.activeEditor.getContent();
- var text = txt.length;
- if(txt.length <= 140) {
- $('#character-counter').removeClass('red');
- $('#character-counter').removeClass('orange');
- $('#character-counter').addClass('grey');
- }
- if((txt.length > 140) && (txt .length <= 420)) {
- $('#character-counter').removeClass('grey');
- $('#character-counter').removeClass('red');
- $('#character-counter').addClass('orange');
- }
- if(txt.length > 420) {
- $('#character-counter').removeClass('grey');
- $('#character-counter').removeClass('orange');
- $('#character-counter').addClass('red');
- }
- $('#character-counter').text(text);
- });
-
- ed.onInit.add(function(ed) {
- ed.pasteAsPlainText = true;
- });
-
- }
-});
-
-</script>
-<script type="text/javascript" src="include/ajaxupload.js" ></script>
-<script>
- $(document).ready(function() {
- var uploader = new window.AjaxUpload(
- 'wall-image-upload',
- { action: 'wall_upload/$nickname',
- name: 'userfile',
- onSubmit: function(file,ext) { $('#profile-rotator').show(); },
- onComplete: function(file,response) {
- tinyMCE.execCommand('mceInsertRawHTML',false,response);
- $('#profile-rotator').hide();
- }
- }
- );
- $('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
- var selstr;
- $('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
- selstr = $(this).text();
- $('#profile-jot-perms img').attr('src', 'images/lock_icon.gif');
- $('.profile-jot-net input').attr('disabled', 'disabled');
- });
- if(selstr == null) {
- $('#profile-jot-perms img').attr('src', 'images/unlock_icon.gif');
- $('.profile-jot-net input').attr('disabled', false);
- }
-
- }).trigger('change');
-
- });
-
- function jotGetLink() {
- reply = prompt("Inserisci l'indirizzo del collegamento:");
- if(reply && reply.length) {
- $('#profile-rotator').show();
- $.get('parse_url?url=' + reply, function(data) {
- tinyMCE.execCommand('mceInsertRawHTML',false,data);
- $('#profile-rotator').hide();
- });
- }
- }
-
- function jotGetVideo() {
- reply = prompt("Inserisci un collegamento a YouTube:");
- if(reply && reply.length) {
- tinyMCE.execCommand('mceInsertRawHTML',false,'[youtube]' + reply + '[/youtube]');
- }
- }
-
- function jotGetLocation() {
- reply = prompt("Dove ti trovi ora?", $('#jot-location').val());
- if(reply && reply.length) {
- $('#jot-location').val(reply);
- }
- }
-
-
- function linkdropper(event) {
- var linkFound = event.dataTransfer.types.contains("text/uri-list");
- if(linkFound)
- event.preventDefault();
- }
-
- function linkdrop(event) {
- var reply = event.dataTransfer.getData("text/uri-list");
- event.target.textContent = reply;
- event.preventDefault();
- if(reply && reply.length) {
- $('#profile-rotator').show();
- $.get('parse_url?url=' + reply, function(data) {
- tinyMCE.execCommand('mceInsertRawHTML',false,data);
- $('#profile-rotator').hide();
- });
- }
- }
-
- function jotClearLocation() {
- $('#jot-coord').val('');
- $('#profile-nolocation-wrapper').hide();
- }
-
- $geotag
-
-</script>
-
diff --git a/view/it/lostpass.tpl b/view/it/lostpass.tpl
deleted file mode 100644
index 5611d51b7..000000000
--- a/view/it/lostpass.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<h3>Dimenticato la tua Password?</h3>
-
-<p id="lostpass-desc">
-Inserisci il tuo indirizzo email per resettare la tua password. Poi controlla la tua email per ulteriori informazioni.
-</p>
-
-<form action="lostpass" method="post" >
-<div id="login-name-wrapper">
- <label for="login-name" id="label-login-name">Soprannome o Email: </label>
- <input type="text" maxlength="60" name="login-name" id="login-name" value="" />
-</div>
-<div id="login-extra-end"></div>
-<div id="login-submit-wrapper" >
- <input type="submit" name="submit" id="lostpass-submit-button" value="Resetta" />
-</div>
-<div id="login-submit-end"></div>
-</form>
-
diff --git a/view/it/messages.po b/view/it/messages.po
new file mode 100644
index 000000000..ad7800a1e
--- /dev/null
+++ b/view/it/messages.po
@@ -0,0 +1,3667 @@
+# FRIENDIKA Distributed Social Network
+# Copyright (C) 2010, 2011 Mike Macgirvin
+# This file is distributed under the same license as the Friendika package.
+# Mike Macgirvin, 2010
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: friendika\n"
+"Report-Msgid-Bugs-To: http://bugs.friendika.com/\n"
+"POT-Creation-Date: 2011-05-02 20:13-0700\n"
+"PO-Revision-Date: 2011-05-10 12:06+0000\n"
+"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
+"Language-Team: Italian (http://www.transifex.net/projects/p/friendika/team/it/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: it\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+#: ../../mod/oexchange.php:27
+msgid "Post successful."
+msgstr "Inviato con successo."
+
+#: ../../mod/crepair.php:42
+msgid "Contact settings applied."
+msgstr "Impostazioni del contatto applicate."
+
+#: ../../mod/crepair.php:44
+msgid "Contact update failed."
+msgstr "Aggiornamento del contatto non riuscito."
+
+#: ../../mod/crepair.php:54 ../../mod/photos.php:89 ../../mod/photos.php:787
+#: ../../mod/editpost.php:10 ../../mod/install.php:93
+#: ../../mod/notifications.php:56 ../../mod/contacts.php:106
+#: ../../mod/settings.php:15 ../../mod/settings.php:20
+#: ../../mod/settings.php:251 ../../mod/manage.php:75 ../../mod/network.php:6
+#: ../../mod/group.php:19 ../../mod/viewcontacts.php:21
+#: ../../mod/register.php:25 ../../mod/regmod.php:16 ../../mod/item.php:57
+#: ../../mod/item.php:680 ../../mod/profile_photo.php:19
+#: ../../mod/profile_photo.php:133 ../../mod/profile_photo.php:144
+#: ../../mod/profile_photo.php:155 ../../mod/message.php:8
+#: ../../mod/message.php:116 ../../mod/wall_upload.php:42
+#: ../../mod/follow.php:8 ../../mod/display.php:138 ../../mod/profiles.php:7
+#: ../../mod/profiles.php:227 ../../mod/invite.php:13 ../../mod/invite.php:54
+#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:221
+#: ../../wip/photos.php:77 ../../wip/photos.php:723 ../../wip/follow2.php:8
+#: ../../wip/group.php:19 ../../wip/photos-chris.php:97
+#: ../../wip/photos-chris.php:770 ../../index.php:265
+msgid "Permission denied."
+msgstr "Permesso negato."
+
+#: ../../mod/crepair.php:68 ../../mod/contacts.php:214
+#: ../../mod/dfrn_confirm.php:114
+msgid "Contact not found."
+msgstr "Contatto non trovato."
+
+#: ../../mod/crepair.php:74
+msgid "Repair Contact Settings"
+msgstr "Ripara le Impostazioni del Contatto"
+
+#: ../../mod/crepair.php:76
+msgid ""
+"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect"
+" information your communications with this contact will stop working."
+msgstr ""
+"<strong>ATTENZIONE: Per utenti esperti!</strong> Se inserisci informazioni "
+"non corrette le tue comunicazioni con questo contatto smetteranno di "
+"funzionare."
+
+#: ../../mod/crepair.php:77
+msgid ""
+"Please use your browser 'Back' button <strong>now</strong> if you are "
+"uncertain what to do on this page."
+msgstr ""
+"Usa <strong>ora</strong> il tasto 'Indietro' del tuo browser se non sei "
+"sicuro di cosa fare in questa pagina."
+
+#: ../../mod/crepair.php:85
+msgid "Name"
+msgstr "Nome"
+
+#: ../../mod/crepair.php:86
+msgid "Account Nickname"
+msgstr "Nickname dell'utente"
+
+#: ../../mod/crepair.php:87
+msgid "Account URL"
+msgstr "URL dell'utente"
+
+#: ../../mod/crepair.php:88
+msgid "Friend Request URL"
+msgstr "URL Richiesta Amicizia"
+
+#: ../../mod/crepair.php:89
+msgid "Friend Confirm URL"
+msgstr "URL Conferma Amicizia"
+
+#: ../../mod/crepair.php:90
+msgid "Notification Endpoint URL"
+msgstr "URL Notifiche"
+
+#: ../../mod/crepair.php:91
+msgid "Poll/Feed URL"
+msgstr "URL Feed"
+
+#: ../../mod/crepair.php:100 ../../mod/photos.php:815 ../../mod/photos.php:872
+#: ../../mod/photos.php:1079 ../../mod/photos.php:1122
+#: ../../mod/install.php:133 ../../mod/contacts.php:264
+#: ../../mod/settings.php:426 ../../mod/manage.php:106 ../../mod/group.php:76
+#: ../../mod/group.php:159 ../../mod/profiles.php:370 ../../mod/invite.php:68
+#: ../../addon/facebook/facebook.php:268
+#: ../../addon/randplace/randplace.php:179
+#: ../../addon/statusnet/statusnet.php:163
+#: ../../addon/statusnet/statusnet.php:189
+#: ../../addon/statusnet/statusnet.php:207 ../../addon/twitter/twitter.php:156
+#: ../../addon/twitter/twitter.php:175 ../../include/conversation.php:384
+#: ../../wip/photos.php:754 ../../wip/photos.php:793 ../../wip/photos.php:954
+#: ../../wip/addon/randplace/randplace.php:178 ../../wip/group.php:99
+#: ../../wip/group.php:176 ../../wip/photos-chris.php:801
+#: ../../wip/photos-chris.php:840 ../../wip/photos-chris.php:1001
+msgid "Submit"
+msgstr "Invia"
+
+#: ../../mod/help.php:27
+msgid "Help:"
+msgstr "Guida:"
+
+#: ../../mod/help.php:31 ../../include/nav.php:64
+msgid "Help"
+msgstr "Guida"
+
+#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
+#: ../../mod/dfrn_request.php:644 ../../addon/js_upload/js_upload.php:41
+msgid "Cancel"
+msgstr "Annulla"
+
+#: ../../mod/tagrm.php:41
+msgid "Tag removed"
+msgstr "TAg rimosso"
+
+#: ../../mod/tagrm.php:79
+msgid "Remove Item Tag"
+msgstr "Rimuovi tag dall'elemento"
+
+#: ../../mod/tagrm.php:81
+msgid "Select a tag to remove: "
+msgstr "Seleziona un tag da rimuovere: "
+
+#: ../../mod/tagrm.php:93
+msgid "Remove"
+msgstr "Rimuovi"
+
+#: ../../mod/dfrn_poll.php:84 ../../mod/dfrn_poll.php:510
+#, php-format
+msgid "%s welcomes %s"
+msgstr "%s da il benvenuto a %s"
+
+#: ../../mod/photos.php:34 ../../wip/photos.php:31
+#: ../../wip/photos-chris.php:41
+msgid "Photo Albums"
+msgstr "Album Foto"
+
+#: ../../mod/photos.php:38 ../../mod/photos.php:110 ../../mod/photos.php:795
+#: ../../mod/photos.php:864 ../../mod/photos.php:879 ../../mod/photos.php:1248
+#: ../../mod/photos.php:1259 ../../include/Photo.php:225
+#: ../../include/Photo.php:232 ../../include/Photo.php:239
+#: ../../include/items.php:1026 ../../include/items.php:1029
+#: ../../include/items.php:1032 ../../wip/photos.php:35
+#: ../../wip/photos.php:98 ../../wip/photos.php:731 ../../wip/photos.php:785
+#: ../../wip/photos.php:800 ../../wip/photos.php:1111
+#: ../../wip/photos.php:1122 ../../wip/photos-chris.php:45
+#: ../../wip/photos-chris.php:118 ../../wip/photos-chris.php:778
+#: ../../wip/photos-chris.php:832 ../../wip/photos-chris.php:847
+#: ../../wip/photos-chris.php:1158 ../../wip/photos-chris.php:1169
+msgid "Contact Photos"
+msgstr "Foto dei contatti"
+
+#: ../../mod/photos.php:99 ../../wip/photos.php:87
+#: ../../wip/photos-chris.php:107
+msgid "Contact information unavailable"
+msgstr "Informazione sul contatto non disponibile"
+
+#: ../../mod/photos.php:110 ../../mod/photos.php:535 ../../mod/photos.php:864
+#: ../../mod/photos.php:879 ../../mod/register.php:288
+#: ../../mod/register.php:295 ../../mod/register.php:302
+#: ../../mod/profile_photo.php:58 ../../mod/profile_photo.php:65
+#: ../../mod/profile_photo.php:72 ../../mod/profile_photo.php:160
+#: ../../mod/profile_photo.php:236 ../../mod/profile_photo.php:245
+#: ../../wip/photos.php:98 ../../wip/photos.php:493 ../../wip/photos.php:785
+#: ../../wip/photos.php:800 ../../wip/photos-chris.php:118
+#: ../../wip/photos-chris.php:525 ../../wip/photos-chris.php:832
+#: ../../wip/photos-chris.php:847
+msgid "Profile Photos"
+msgstr "Foto del profilo"
+
+#: ../../mod/photos.php:120 ../../wip/photos.php:108
+#: ../../wip/photos-chris.php:128
+msgid "Album not found."
+msgstr "Album non trovato."
+
+#: ../../mod/photos.php:138 ../../mod/photos.php:873 ../../wip/photos.php:126
+#: ../../wip/photos.php:794 ../../wip/photos-chris.php:146
+#: ../../wip/photos-chris.php:841
+msgid "Delete Album"
+msgstr "Elimina album"
+
+#: ../../mod/photos.php:201 ../../mod/photos.php:1080 ../../wip/photos.php:192
+#: ../../wip/photos.php:955 ../../wip/photos-chris.php:212
+#: ../../wip/photos-chris.php:1002
+msgid "Delete Photo"
+msgstr "Elimina foto"
+
+#: ../../mod/photos.php:473 ../../wip/photos.php:442
+#: ../../wip/photos-chris.php:462
+msgid "was tagged in a"
+msgstr "è stato taggato in"
+
+#: ../../mod/photos.php:473 ../../mod/like.php:110
+#: ../../include/conversation.php:20 ../../wip/photos.php:442
+#: ../../wip/photos-chris.php:462
+msgid "photo"
+msgstr "foto"
+
+#: ../../mod/photos.php:473 ../../wip/photos.php:442
+#: ../../wip/photos-chris.php:462
+msgid "by"
+msgstr "da"
+
+#: ../../mod/photos.php:563 ../../addon/js_upload/js_upload.php:306
+#: ../../wip/photos.php:511 ../../wip/photos-chris.php:555
+msgid "Image exceeds size limit of "
+msgstr "L'immagine supera il limite di dimensione di "
+
+#: ../../mod/photos.php:575 ../../mod/profile_photo.php:118
+#: ../../mod/wall_upload.php:65 ../../wip/photos.php:520
+#: ../../wip/photos-chris.php:567
+msgid "Unable to process image."
+msgstr "Impossibile elaborare l'immagine."
+
+#: ../../mod/photos.php:593 ../../mod/profile_photo.php:241
+#: ../../mod/wall_upload.php:82 ../../wip/photos.php:537
+#: ../../wip/photos-chris.php:585
+msgid "Image upload failed."
+msgstr "Caricamento immagine fallito."
+
+#: ../../mod/photos.php:665 ../../mod/dfrn_request.php:591
+#: ../../mod/viewcontacts.php:16 ../../mod/display.php:7
+#: ../../mod/search.php:13 ../../mod/directory.php:18
+msgid "Public access denied."
+msgstr "Accesso pubblico non consentito."
+
+#: ../../mod/photos.php:675 ../../wip/photos.php:611
+#: ../../wip/photos-chris.php:658
+msgid "No photos selected"
+msgstr "Nessuna foto selezionata"
+
+#: ../../mod/photos.php:822 ../../wip/photos.php:742
+#: ../../wip/photos-chris.php:789
+msgid "Upload Photos"
+msgstr "Carica foto"
+
+#: ../../mod/photos.php:825 ../../mod/photos.php:868 ../../wip/photos.php:745
+#: ../../wip/photos.php:789 ../../wip/photos-chris.php:792
+#: ../../wip/photos-chris.php:836
+msgid "New album name: "
+msgstr "Nome nuovo album: "
+
+#: ../../mod/photos.php:826 ../../wip/photos.php:746
+#: ../../wip/photos-chris.php:793
+msgid "or existing album name: "
+msgstr "o nome di un album esistente: "
+
+#: ../../mod/photos.php:828 ../../mod/photos.php:1075 ../../wip/photos.php:749
+#: ../../wip/photos-chris.php:796
+msgid "Permissions"
+msgstr "Permessi"
+
+#: ../../mod/photos.php:883 ../../wip/photos.php:804
+#: ../../wip/photos-chris.php:851
+msgid "Edit Album"
+msgstr "Modifica album"
+
+#: ../../mod/photos.php:893 ../../mod/photos.php:1277 ../../wip/photos.php:814
+#: ../../wip/photos.php:1141 ../../wip/photos-chris.php:861
+#: ../../wip/photos-chris.php:1188
+msgid "View Photo"
+msgstr "Vedi foto"
+
+#: ../../mod/photos.php:922 ../../wip/photos.php:843
+#: ../../wip/photos-chris.php:890
+msgid "Photo not available"
+msgstr "Foto non disponibile"
+
+#: ../../mod/photos.php:969 ../../wip/photos.php:864
+#: ../../wip/photos-chris.php:911
+msgid "Edit photo"
+msgstr "Modifica foto"
+
+#: ../../mod/photos.php:971
+msgid "Use as profile photo"
+msgstr "Usa come foto del profilo"
+
+#: ../../mod/photos.php:975 ../../include/conversation.php:317
+msgid "Private Message"
+msgstr "Messaggio privato"
+
+#: ../../mod/photos.php:982
+msgid "<< Prev"
+msgstr "<< Prec"
+
+#: ../../mod/photos.php:986 ../../wip/photos.php:870
+#: ../../wip/photos-chris.php:917
+msgid "View Full Size"
+msgstr "Vedi dimensione intera"
+
+#: ../../mod/photos.php:990
+msgid "Next >>"
+msgstr "Succ >>"
+
+#: ../../mod/photos.php:1049 ../../wip/photos.php:928
+#: ../../wip/photos-chris.php:975
+msgid "Tags: "
+msgstr "Tag: "
+
+#: ../../mod/photos.php:1059 ../../wip/photos.php:938
+#: ../../wip/photos-chris.php:985
+msgid "[Remove any tag]"
+msgstr "[Rimuovi tutti i tag]"
+
+#: ../../mod/photos.php:1068
+msgid "New album name"
+msgstr "Nuovo nome album"
+
+#: ../../mod/photos.php:1071 ../../wip/photos.php:948
+#: ../../wip/photos-chris.php:995
+msgid "Caption"
+msgstr "Didascalia"
+
+#: ../../mod/photos.php:1073 ../../wip/photos.php:950
+#: ../../wip/photos-chris.php:997
+msgid "Add a Tag"
+msgstr "Aggiungi un tag"
+
+#: ../../mod/photos.php:1077 ../../wip/photos.php:952
+#: ../../wip/photos-chris.php:999
+msgid ""
+"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+msgstr ""
+"Esempio: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+
+#: ../../mod/photos.php:1097 ../../include/conversation.php:365
+msgid "I like this (toggle)"
+msgstr "Mi piace questo (metti/togli)"
+
+#: ../../mod/photos.php:1098 ../../include/conversation.php:366
+msgid "I don't like this (toggle)"
+msgstr "Non mi piace questo (metti/togli)"
+
+#: ../../mod/photos.php:1099 ../../include/conversation.php:367
+#: ../../include/conversation.php:735
+msgid "Share"
+msgstr "Condividi"
+
+#: ../../mod/photos.php:1100 ../../mod/editpost.php:95
+#: ../../mod/message.php:190 ../../mod/message.php:324
+#: ../../include/conversation.php:368 ../../include/conversation.php:744
+msgid "Please wait"
+msgstr "Attendi"
+
+#: ../../mod/photos.php:1119 ../../mod/photos.php:1161
+#: ../../mod/photos.php:1190 ../../include/conversation.php:381
+#: ../../wip/photos.php:986 ../../wip/photos.php:1025
+#: ../../wip/photos.php:1053 ../../wip/photos-chris.php:1033
+#: ../../wip/photos-chris.php:1072 ../../wip/photos-chris.php:1100
+msgid "This is you"
+msgstr "Questo sei tu"
+
+#: ../../mod/photos.php:1121 ../../include/conversation.php:383
+#: ../../boot.php:373
+msgid "Comment"
+msgstr "Commento"
+
+#: ../../mod/photos.php:1218 ../../mod/group.php:146
+#: ../../include/conversation.php:182 ../../include/conversation.php:394
+#: ../../wip/group.php:162
+msgid "Delete"
+msgstr "Cancella"
+
+#: ../../mod/photos.php:1264 ../../wip/photos.php:1127
+#: ../../wip/photos-chris.php:1174
+msgid "Recent Photos"
+msgstr "Foto recenti"
+
+#: ../../mod/photos.php:1268 ../../wip/photos.php:1131
+#: ../../wip/photos-chris.php:1178
+msgid "Upload New Photos"
+msgstr "Carica nuova foto"
+
+#: ../../mod/photos.php:1281 ../../wip/photos.php:1147
+#: ../../wip/photos-chris.php:1194
+msgid "View Album"
+msgstr "Vedi album"
+
+#: ../../mod/editpost.php:17 ../../mod/editpost.php:27
+msgid "Item not found"
+msgstr "Elemento non trovato"
+
+#: ../../mod/editpost.php:32
+msgid "Edit post"
+msgstr "Modifica messaggio"
+
+#: ../../mod/editpost.php:74 ../../include/conversation.php:724
+msgid "Post to Email"
+msgstr "Invia a Email"
+
+#: ../../mod/editpost.php:87 ../../include/group.php:169
+#: ../../include/conversation.php:392
+msgid "Edit"
+msgstr "Modifica"
+
+#: ../../mod/editpost.php:88 ../../mod/message.php:188
+#: ../../mod/message.php:322 ../../include/conversation.php:736
+msgid "Upload photo"
+msgstr "Carica foto"
+
+#: ../../mod/editpost.php:89 ../../mod/message.php:189
+#: ../../mod/message.php:323 ../../include/conversation.php:737
+msgid "Insert web link"
+msgstr "Inserisci link"
+
+#: ../../mod/editpost.php:90 ../../include/conversation.php:738
+msgid "Insert YouTube video"
+msgstr "Inserisci video da YouTube"
+
+#: ../../mod/editpost.php:91 ../../include/conversation.php:739
+msgid "Insert Vorbis [.ogg] video"
+msgstr "Inserisci video Theora [.ogg]"
+
+#: ../../mod/editpost.php:92 ../../include/conversation.php:740
+msgid "Insert Vorbis [.ogg] audio"
+msgstr "Inserisci audio Vorbis [.ogg]"
+
+#: ../../mod/editpost.php:93 ../../include/conversation.php:741
+msgid "Set your location"
+msgstr "Imposta la tua posizione"
+
+#: ../../mod/editpost.php:94 ../../include/conversation.php:742
+msgid "Clear browser location"
+msgstr "Cancella la tua posizione data dal browser"
+
+#: ../../mod/editpost.php:96 ../../include/conversation.php:745
+msgid "Permission settings"
+msgstr "Impostazione permessi"
+
+#: ../../mod/editpost.php:102 ../../include/conversation.php:751
+msgid "CC: email addresses"
+msgstr "CC: indirizzi email"
+
+#: ../../mod/editpost.php:104 ../../include/conversation.php:753
+msgid "Example: bob@example.com, mary@example.com"
+msgstr "Esempio: bob@example.com, mary@example.com"
+
+#: ../../mod/dfrn_request.php:96
+msgid "This introduction has already been accepted."
+msgstr "Questa presentazione è già stata accettata."
+
+#: ../../mod/dfrn_request.php:120 ../../mod/dfrn_request.php:351
+msgid "Profile location is not valid or does not contain profile information."
+msgstr ""
+"La posizione del profilo non è valida o non contiene informazioni di "
+"profilo."
+
+#: ../../mod/dfrn_request.php:125 ../../mod/dfrn_request.php:356
+msgid "Warning: profile location has no identifiable owner name."
+msgstr ""
+"Attenzione: la posizione del profilo non ha un identificabile proprietario."
+
+#: ../../mod/dfrn_request.php:127 ../../mod/dfrn_request.php:358
+msgid "Warning: profile location has no profile photo."
+msgstr "Attenzione: la posizione del profilo non ha una foto."
+
+#: ../../mod/dfrn_request.php:130 ../../mod/dfrn_request.php:361
+#, php-format
+msgid "%d required parameter was not found at the given location"
+msgid_plural "%d required parameters were not found at the given location"
+msgstr[0] "%d parametro richiesto non è stato trovato nella posizione data"
+msgstr[1] "%d parametri richiesti non sono stati trovati nella posizione data"
+
+#: ../../mod/dfrn_request.php:168
+msgid "Introduction complete."
+msgstr "Presentazione completa."
+
+#: ../../mod/dfrn_request.php:192
+msgid "Unrecoverable protocol error."
+msgstr "Errore di protocollo non recuperabile."
+
+#: ../../mod/dfrn_request.php:220
+msgid "Profile unavailable."
+msgstr "Profilo non disponibile."
+
+#: ../../mod/dfrn_request.php:245
+#, php-format
+msgid "%s has received too many connection requests today."
+msgstr "%s ha ricevuto troppe richieste di connessione per oggi."
+
+#: ../../mod/dfrn_request.php:246
+msgid "Spam protection measures have been invoked."
+msgstr "Sono state attivate le misure di protezione contro lo spam."
+
+#: ../../mod/dfrn_request.php:247
+msgid "Friends are advised to please try again in 24 hours."
+msgstr "Gli amici sono pregati di riprovare tra 24 ore."
+
+#: ../../mod/dfrn_request.php:277
+msgid "Invalid locator"
+msgstr "Invalid locator"
+
+#: ../../mod/dfrn_request.php:296
+msgid "Unable to resolve your name at the provided location."
+msgstr "Impossibile risolvere il tuo nome nella posizione indicata."
+
+#: ../../mod/dfrn_request.php:309
+msgid "You have already introduced yourself here."
+msgstr "Ti sei già presentato qui."
+
+#: ../../mod/dfrn_request.php:313
+#, php-format
+msgid "Apparently you are already friends with %s."
+msgstr "Sembra che tu sia già amico di %s."
+
+#: ../../mod/dfrn_request.php:334
+msgid "Invalid profile URL."
+msgstr "Indirizzo profilo invalido."
+
+#: ../../mod/dfrn_request.php:340 ../../mod/follow.php:16
+msgid "Disallowed profile URL."
+msgstr "Indirizzo profilo non permesso."
+
+#: ../../mod/dfrn_request.php:406 ../../mod/contacts.php:90
+msgid "Failed to update contact record."
+msgstr "Errore aggiornando il contatto."
+
+#: ../../mod/dfrn_request.php:427
+msgid "Your introduction has been sent."
+msgstr "La tua presentazione è stata inviata."
+
+#: ../../mod/dfrn_request.php:481
+msgid "Please login to confirm introduction."
+msgstr "Accedi per confermare la presentazione."
+
+#: ../../mod/dfrn_request.php:495
+msgid ""
+"Incorrect identity currently logged in. Please login to "
+"<strong>this</strong> profile."
+msgstr ""
+"Accesso con identà incorretta. Accedi a <strong>questo</strong> profilo."
+
+#: ../../mod/dfrn_request.php:507
+#, php-format
+msgid "Welcome home %s."
+msgstr "Bentornato a casa %s."
+
+#: ../../mod/dfrn_request.php:508
+#, php-format
+msgid "Please confirm your introduction/connection request to %s."
+msgstr "Conferma la tua richiesta di connessione con %s."
+
+#: ../../mod/dfrn_request.php:509
+msgid "Confirm"
+msgstr "Conferma"
+
+#: ../../mod/dfrn_request.php:542 ../../include/items.php:1409
+msgid "[Name Withheld]"
+msgstr "[Nome Nascosto]"
+
+#: ../../mod/dfrn_request.php:549
+msgid "Introduction received at "
+msgstr "Introduzione ricevuta su "
+
+#: ../../mod/dfrn_request.php:551 ../../mod/lostpass.php:40
+#: ../../mod/lostpass.php:102 ../../mod/register.php:333
+#: ../../mod/register.php:373 ../../mod/regmod.php:94 ../../mod/item.php:480
+#: ../../mod/item.php:506 ../../mod/dfrn_notify.php:189
+#: ../../mod/dfrn_notify.php:405 ../../mod/dfrn_notify.php:495
+#: ../../mod/dfrn_confirm.php:657 ../../include/items.php:1418
+msgid "Administrator"
+msgstr "Amministratore"
+
+#: ../../mod/dfrn_request.php:630
+msgid "Friend/Connection Request"
+msgstr "Richieste di Amicizia/Connessione"
+
+#: ../../mod/dfrn_request.php:631
+msgid ""
+"Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, "
+"testuser@identi.ca"
+msgstr ""
+"Esempi: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, "
+"testuser@identi.ca"
+
+#: ../../mod/dfrn_request.php:632
+msgid "Please answer the following:"
+msgstr "Rispondi al seguente:"
+
+#: ../../mod/dfrn_request.php:633
+msgid "Does $name know you?"
+msgstr "$name ti conosce?"
+
+#: ../../mod/dfrn_request.php:634 ../../mod/settings.php:350
+#: ../../mod/settings.php:362 ../../mod/register.php:444
+#: ../../mod/profiles.php:355
+msgid "Yes"
+msgstr "Si"
+
+#: ../../mod/dfrn_request.php:635 ../../mod/settings.php:351
+#: ../../mod/settings.php:363 ../../mod/register.php:445
+#: ../../mod/profiles.php:356
+msgid "No"
+msgstr "No"
+
+#: ../../mod/dfrn_request.php:636
+msgid "Add a personal note:"
+msgstr "Aggiungi una nota personale:"
+
+#: ../../mod/dfrn_request.php:637
+msgid ""
+"Please enter your 'Identity Address' from one of the following supported "
+"social networks:"
+msgstr ""
+"Inserisci il tuo \"Indirizzo Identità\" da uno dei social network "
+"supportati:"
+
+#: ../../mod/dfrn_request.php:638
+msgid "Friendika"
+msgstr "Friendika"
+
+#: ../../mod/dfrn_request.php:639
+msgid "StatusNet/Federated Social Web"
+msgstr "StatusNet/Federated Social Web"
+
+#: ../../mod/dfrn_request.php:640
+msgid "Private (secure) network"
+msgstr "Network (sicuro) privato"
+
+#: ../../mod/dfrn_request.php:641
+msgid "Public (insecure) network"
+msgstr "Network (insicuro) pubblico"
+
+#: ../../mod/dfrn_request.php:642
+msgid "Your Identity Address:"
+msgstr "Il tuo Indirizzo Identità:"
+
+#: ../../mod/dfrn_request.php:643
+msgid "Submit Request"
+msgstr "Invia richiesta"
+
+#: ../../mod/install.php:33
+msgid "Could not create/connect to database."
+msgstr "Impossibile creare/collegarsi al database."
+
+#: ../../mod/install.php:38
+msgid "Connected to database."
+msgstr "Collegato al database."
+
+#: ../../mod/install.php:72
+msgid "Proceed with Installation"
+msgstr "Continua con l'installazione"
+
+#: ../../mod/install.php:74
+msgid "Your Friendika site database has been installed."
+msgstr "Il database del tuo sito Friendika è stato installato."
+
+#: ../../mod/install.php:75
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the "
+"poller."
+msgstr ""
+"IMPORTANTE: Devi impostare manualmente un operazione pianificata per il "
+"poller"
+
+#: ../../mod/install.php:76 ../../mod/install.php:86 ../../mod/install.php:199
+msgid "Please see the file \"INSTALL.txt\"."
+msgstr "Guarda il file \"INSTALL.txt\"."
+
+#: ../../mod/install.php:78
+msgid "Proceed to registration"
+msgstr "Continua con la registrazione"
+
+#: ../../mod/install.php:84
+msgid "Database import failed."
+msgstr "Importazione database fallita."
+
+#: ../../mod/install.php:85
+msgid ""
+"You may need to import the file \"database.sql\" manually using phpmyadmin "
+"or mysql."
+msgstr ""
+"Potresti dover importare il file \"database.sql\" manualmente con phpmyadmin"
+" o mysql"
+
+#: ../../mod/install.php:98
+msgid "Welcome to Friendika."
+msgstr "Benvenuto su Friendika."
+
+#: ../../mod/install.php:121
+msgid "Friendika Social Network"
+msgstr "Friendika Social Network"
+
+#: ../../mod/install.php:122
+msgid "Installation"
+msgstr "Installazione"
+
+#: ../../mod/install.php:123
+msgid ""
+"In order to install Friendika we need to know how to contact your database."
+msgstr ""
+"Per installare Friendika dobbiamo sapere come contattare il tuo database."
+
+#: ../../mod/install.php:124
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr ""
+"Contatta il tuo fornitore di hosting o l'amministratore del sito se hai "
+"domande su questi settaggi."
+
+#: ../../mod/install.php:125
+msgid ""
+"The database you specify below must already exist. If it does not, please "
+"create it before continuing."
+msgstr ""
+"Il datatabase specificato qui sotto deve esistere. Se non è così, crealo "
+"prima di continuare."
+
+#: ../../mod/install.php:126
+msgid "Database Server Name"
+msgstr "Nome Database Server"
+
+#: ../../mod/install.php:127
+msgid "Database Login Name"
+msgstr "Nome utente Database"
+
+#: ../../mod/install.php:128
+msgid "Database Login Password"
+msgstr "Password utente Database"
+
+#: ../../mod/install.php:129
+msgid "Database Name"
+msgstr "Nome Database"
+
+#: ../../mod/install.php:130
+msgid "Please select a default timezone for your website"
+msgstr "Seleziona un fuso orario di default per il tuo sito web"
+
+#: ../../mod/install.php:148
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr ""
+"Non riesco a trovare una versione da riga di comando di PHP nel PATH del "
+"server web"
+
+#: ../../mod/install.php:149
+msgid ""
+"This is required. Please adjust the configuration file .htconfig.php "
+"accordingly."
+msgstr "E' richiesto. Aggiorna il file .htconfig.php di conseguenza."
+
+#: ../../mod/install.php:156
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr ""
+"La versione da riga di comando di PHP nel sistema non ha abilitato "
+"\"register_argc_argv\"."
+
+#: ../../mod/install.php:157
+msgid "This is required for message delivery to work."
+msgstr "Ciò è richiesto per far funzionare la consegna dei messaggi."
+
+#: ../../mod/install.php:179
+msgid ""
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr ""
+"Errore: la funzione \"openssl_pkey_new\" in questo sistema non è in grado di"
+" generare le chiavi di criptazione"
+
+#: ../../mod/install.php:180
+msgid ""
+"If running under Windows, please see "
+"\"http://www.php.net/manual/en/openssl.installation.php\"."
+msgstr ""
+"Se stai eseguendo friendika su windows, guarda "
+"\"http://www.php.net/manual/en/openssl.installation.php\"."
+
+#: ../../mod/install.php:189
+msgid ""
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr ""
+"Errore: il modulo mod-rewrite di Apache &egreve; richiesto ma non installato"
+
+#: ../../mod/install.php:191
+msgid "Error: libCURL PHP module required but not installed."
+msgstr "Errore: il modulo libCURL di PHP è richiesto ma non installato."
+
+#: ../../mod/install.php:193
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr ""
+"Errore: Il modulo GD graphics di PHP con supporto a JPEG è richiesto ma non "
+"installato."
+
+#: ../../mod/install.php:195
+msgid "Error: openssl PHP module required but not installed."
+msgstr "Errore: il modulo openssl di PHP è richiesto ma non installato."
+
+#: ../../mod/install.php:197
+msgid "Error: mysqli PHP module required but not installed."
+msgstr "Errore: il modulo mysqli di PHP è richiesto ma non installato"
+
+#: ../../mod/install.php:208
+msgid ""
+"The web installer needs to be able to create a file called \".htconfig.php\""
+" in the top folder of your web server and it is unable to do so."
+msgstr ""
+"L'installazione web deve poter creare un file chiamato \".htconfig.php\" "
+"nella cartella principale del tuo web server ma non è in grado di farlo."
+
+#: ../../mod/install.php:209
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr ""
+"Ciò è dovuto spesso a impostazioni di permessi, dato che il web server puo' "
+"scrivere il file nella tua cartella, anche se tu puoi."
+
+#: ../../mod/install.php:210
+msgid ""
+"Please check with your site documentation or support people to see if this "
+"situation can be corrected."
+msgstr ""
+"Controlla la documentazione del tuo sito o con il personale di suporto se la"
+" situazione puo' essere corretta."
+
+#: ../../mod/install.php:211
+msgid ""
+"If not, you may be required to perform a manual installation. Please see the"
+" file \"INSTALL.txt\" for instructions."
+msgstr ""
+"Altrimenti dovrai procedere con l'installazione manuale. Guarda il file "
+"\"INSTALL.txt\" per istuzioni"
+
+#: ../../mod/install.php:220
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
+msgstr ""
+"Il file di configurazione del database \".htconfig.php\" non puo' essere "
+"scritto. Usa il testo qui di seguito per creare un file di configurazione "
+"nella cartella principale del tuo sito."
+
+#: ../../mod/install.php:235
+msgid "Errors encountered creating database tables."
+msgstr "Errori creando le tabelle nel database."
+
+#: ../../mod/match.php:10
+msgid "Profile Match"
+msgstr "Profili combacianti"
+
+#: ../../mod/match.php:50
+msgid "No matches"
+msgstr "Nessun risultato"
+
+#: ../../mod/lockview.php:39
+msgid "Remote privacy information not available."
+msgstr "Informazioni remote sulla privacy non disponibili."
+
+#: ../../mod/lockview.php:43
+msgid "Visible to:"
+msgstr "Visibile a:"
+
+#: ../../mod/home.php:23
+#, php-format
+msgid "Welcome to %s"
+msgstr "Benvenuto su %s"
+
+#: ../../mod/notifications.php:28
+msgid "Invalid request identifier."
+msgstr "Identificativo richiesta invalido."
+
+#: ../../mod/notifications.php:31 ../../mod/notifications.php:133
+msgid "Discard"
+msgstr "Scarta"
+
+#: ../../mod/notifications.php:41 ../../mod/notifications.php:132
+msgid "Ignore"
+msgstr "Ignora"
+
+#: ../../mod/notifications.php:68
+msgid "Pending Friend/Connect Notifications"
+msgstr "Richieste di amicizia/connessione in attesa"
+
+#: ../../mod/notifications.php:72
+msgid "Show Ignored Requests"
+msgstr "Mostra richieste ignorate"
+
+#: ../../mod/notifications.php:72
+msgid "Hide Ignored Requests"
+msgstr "Nascondi richieste ignorate"
+
+#: ../../mod/notifications.php:104
+msgid "Claims to be known to you: "
+msgstr "Dice di conoscerti: "
+
+#: ../../mod/notifications.php:104
+msgid "yes"
+msgstr "si"
+
+#: ../../mod/notifications.php:104
+msgid "no"
+msgstr "no"
+
+#: ../../mod/notifications.php:110
+msgid "Approve as: "
+msgstr "Approva come: "
+
+#: ../../mod/notifications.php:111
+msgid "Friend"
+msgstr "Amico"
+
+#: ../../mod/notifications.php:112
+msgid "Fan/Admirer"
+msgstr "Fan/Admiratore"
+
+#: ../../mod/notifications.php:119
+msgid "Notification type: "
+msgstr "Tipo di notifica: "
+
+#: ../../mod/notifications.php:120
+msgid "Friend/Connect Request"
+msgstr "Richiesta Amicizia/Connessione"
+
+#: ../../mod/notifications.php:120
+msgid "New Follower"
+msgstr "Nuovo Seguace"
+
+#: ../../mod/notifications.php:130 ../../mod/notifications.php:153
+msgid "Approve"
+msgstr "Approva"
+
+#: ../../mod/notifications.php:139
+msgid "No notifications."
+msgstr "Nessuna notifica."
+
+#: ../../mod/notifications.php:143
+msgid "User registrations waiting for confirm"
+msgstr "Richieste di registrazione in attesa di conferma"
+
+#: ../../mod/notifications.php:154
+msgid "Deny"
+msgstr "Nega"
+
+#: ../../mod/notifications.php:159
+msgid "No registrations."
+msgstr "Nessuna registrazione."
+
+#: ../../mod/contacts.php:12
+msgid "Invite Friends"
+msgstr "Invita Amici"
+
+#: ../../mod/contacts.php:15
+msgid "Find People With Shared Interests"
+msgstr "Trova persone che condividono i tuoi interessi"
+
+#: ../../mod/contacts.php:19
+msgid "Connect/Follow"
+msgstr "Connetti/Segui"
+
+#: ../../mod/contacts.php:20
+msgid "Example: bob@example.com, http://example.com/barbara"
+msgstr "Esempio: bob@example.com, http://example.com/barbara"
+
+#: ../../mod/contacts.php:21
+msgid "Follow"
+msgstr "Segui"
+
+#: ../../mod/contacts.php:43 ../../mod/contacts.php:124
+msgid "Could not access contact record."
+msgstr "Non si puo' accedere al contatto."
+
+#: ../../mod/contacts.php:57
+msgid "Could not locate selected profile."
+msgstr "Non riesco a trovare il profilo selezionato."
+
+#: ../../mod/contacts.php:88
+msgid "Contact updated."
+msgstr "Contatto aggiornato."
+
+#: ../../mod/contacts.php:146
+msgid "Contact has been blocked"
+msgstr "Il contatto è stato bloccato"
+
+#: ../../mod/contacts.php:146
+msgid "Contact has been unblocked"
+msgstr "Il contatto è stato sbloccato"
+
+#: ../../mod/contacts.php:160
+msgid "Contact has been ignored"
+msgstr "Il contatto è ignorato"
+
+#: ../../mod/contacts.php:160
+msgid "Contact has been unignored"
+msgstr "Il conttatto è non ignorato"
+
+#: ../../mod/contacts.php:181
+msgid "stopped following"
+msgstr "tolto dai seguiti"
+
+#: ../../mod/contacts.php:200
+msgid "Contact has been removed."
+msgstr "Il contatto è stato rimosso."
+
+#: ../../mod/contacts.php:228 ../../mod/contacts.php:363
+msgid "Mutual Friendship"
+msgstr "Reciproca amicizia"
+
+#: ../../mod/contacts.php:232 ../../mod/contacts.php:367
+msgid "is a fan of yours"
+msgstr "è un tuo fan"
+
+#: ../../mod/contacts.php:237 ../../mod/contacts.php:371
+msgid "you are a fan of"
+msgstr "sei un fan di"
+
+#: ../../mod/contacts.php:252
+msgid "Privacy Unavailable"
+msgstr "Privacy non disponibile"
+
+#: ../../mod/contacts.php:253
+msgid "Private communications are not available for this contact."
+msgstr "Le comunicazioni private non sono disponibili per questo contatto."
+
+#: ../../mod/contacts.php:256
+msgid "Never"
+msgstr "Mai"
+
+#: ../../mod/contacts.php:260
+msgid "(Update was successful)"
+msgstr "(L'aggiornamento è stato completato)"
+
+#: ../../mod/contacts.php:260
+msgid "(Update was not successful)"
+msgstr "(L'aggiornamento non è stato completato)"
+
+#: ../../mod/contacts.php:263
+msgid "Contact Editor"
+msgstr "Editor dei Contatti"
+
+#: ../../mod/contacts.php:265
+msgid "Profile Visibility"
+msgstr "Visibilità del profilo"
+
+#: ../../mod/contacts.php:266
+#, php-format
+msgid ""
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
+msgstr ""
+"Seleziona il profilo che vuoi mostrare a %s quando visita il tuo profilo in "
+"modo sicuro."
+
+#: ../../mod/contacts.php:267
+msgid "Contact Information / Notes"
+msgstr "Informazioni / Note sul contatto"
+
+#: ../../mod/contacts.php:268
+msgid "Online Reputation"
+msgstr "Reputazione Online"
+
+#: ../../mod/contacts.php:269
+msgid ""
+"Occasionally your friends may wish to inquire about this person's online "
+"legitimacy."
+msgstr ""
+"Puo' capitare che i tuoi amici vogliano sapere la legittimità online dei "
+"questa persona."
+
+#: ../../mod/contacts.php:270
+msgid ""
+"You may help them choose whether or not to interact with this person by "
+"providing a <em>reputation</em> to guide them."
+msgstr ""
+"Puoi aiutarli a scegliere se interagire o no con questa persona fornendo una"
+" <em>reputazione</em> per guidarli."
+
+#: ../../mod/contacts.php:271
+msgid ""
+"Please take a moment to elaborate on this selection if you feel it could be "
+"helpful to others."
+msgstr ""
+"Prenditi un momento per pensare su questa selezione se senti che puo' essere"
+" utile ad altri."
+
+#: ../../mod/contacts.php:272
+msgid "Visit $name's profile"
+msgstr "Visita il profilo di $name"
+
+#: ../../mod/contacts.php:273
+msgid "Block/Unblock contact"
+msgstr "Blocca/Sblocca contatto"
+
+#: ../../mod/contacts.php:274
+msgid "Ignore contact"
+msgstr "Ingnora il contatto"
+
+#: ../../mod/contacts.php:275
+msgid "Repair contact URL settings"
+msgstr "Sistema impostazioni URL del contatto"
+
+#: ../../mod/contacts.php:276
+msgid "Repair contact URL settings (WARNING: Advanced)"
+msgstr "Sistema impostazioni URL del contatto (ATTENZIONE: Avanzato)"
+
+#: ../../mod/contacts.php:277
+msgid "View conversations"
+msgstr "Vedi conversazioni"
+
+#: ../../mod/contacts.php:278
+msgid "Delete contact"
+msgstr "Rimuovi contatto"
+
+#: ../../mod/contacts.php:280
+msgid "Last updated: "
+msgstr "Ultimo aggiornameto: "
+
+#: ../../mod/contacts.php:281
+msgid "Update public posts: "
+msgstr "Aggiorna messaggi pubblici: "
+
+#: ../../mod/contacts.php:283
+msgid "Update now"
+msgstr "Aggiorna adesso"
+
+#: ../../mod/contacts.php:286
+msgid "Unblock this contact"
+msgstr "Sblocca questo contatto"
+
+#: ../../mod/contacts.php:286
+msgid "Block this contact"
+msgstr "Blocca questo contatto"
+
+#: ../../mod/contacts.php:287
+msgid "Unignore this contact"
+msgstr "Rimuovi dai contatti ingorati"
+
+#: ../../mod/contacts.php:287
+msgid "Ignore this contact"
+msgstr "Aggiungi ai contatti ignorati"
+
+#: ../../mod/contacts.php:290
+msgid "Currently blocked"
+msgstr "Bloccato"
+
+#: ../../mod/contacts.php:291
+msgid "Currently ignored"
+msgstr "Ignorato"
+
+#: ../../mod/contacts.php:322 ../../include/nav.php:110
+#: ../../include/acl_selectors.php:141 ../../include/acl_selectors.php:156
+msgid "Contacts"
+msgstr "Contatti"
+
+#: ../../mod/contacts.php:324
+msgid "Show Blocked Connections"
+msgstr "Mostra connessioni bloccate"
+
+#: ../../mod/contacts.php:324
+msgid "Hide Blocked Connections"
+msgstr "Nascondi connessioni bloccate"
+
+#: ../../mod/contacts.php:326 ../../mod/directory.php:44
+msgid "Finding: "
+msgstr "Cerco: "
+
+#: ../../mod/contacts.php:327 ../../mod/directory.php:46
+msgid "Find"
+msgstr "Trova"
+
+#: ../../mod/contacts.php:387 ../../mod/viewcontacts.php:52
+msgid "Visit $username's profile"
+msgstr "Visita il profilo di $username"
+
+#: ../../mod/contacts.php:388 ../../include/conversation.php:604
+msgid "Edit contact"
+msgstr "Modifca contatto"
+
+#: ../../mod/lostpass.php:27
+msgid "Password reset request issued. Check your email."
+msgstr "Richiesta di reimpostazione pasword inviata. Controlla la tua email."
+
+#: ../../mod/lostpass.php:38
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Richiesta recupero password su %s"
+
+#: ../../mod/lostpass.php:60
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr ""
+"La richiesta non può essere verificata. (Puoi averla già richiesta "
+"precendentemente). Reimpostazione password fallita."
+
+#: ../../mod/lostpass.php:78 ../../boot.php:839
+msgid "Password Reset"
+msgstr "Resetta password"
+
+#: ../../mod/lostpass.php:79
+msgid "Your password has been reset as requested."
+msgstr "La tua password è stata reimpostata come richiesto."
+
+#: ../../mod/lostpass.php:80
+msgid "Your new password is"
+msgstr "La tua nuova password è"
+
+#: ../../mod/lostpass.php:81
+msgid "Save or copy your new password - and then"
+msgstr "Sava o copa la tua nuova password, quindi"
+
+#: ../../mod/lostpass.php:82
+msgid "click here to login"
+msgstr "clicca qui per entrare"
+
+#: ../../mod/lostpass.php:83
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr ""
+"Puoi cambiare la tua password dalla pagina <em>Impostazioni</em> dopo essere"
+" entrato."
+
+#: ../../mod/lostpass.php:114
+msgid "Forgot your Password?"
+msgstr "Dimenticato la tua password?"
+
+#: ../../mod/lostpass.php:115
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr ""
+"Inserisci il tuo indirizzo email per richiedere di reimpostare la tua "
+"passwork."
+
+#: ../../mod/lostpass.php:116
+msgid "Nickname or Email: "
+msgstr "Nome utente o Email: "
+
+#: ../../mod/lostpass.php:117
+msgid "Reset"
+msgstr "Reimposta"
+
+#: ../../mod/settings.php:38
+msgid "Passwords do not match. Password unchanged."
+msgstr "Le password non corrispondono. Passoword non cambiata."
+
+#: ../../mod/settings.php:43
+msgid "Empty passwords are not allowed. Password unchanged."
+msgstr "Password vuote non sono consentite. Password non cambiata."
+
+#: ../../mod/settings.php:54
+msgid "Password changed."
+msgstr "Password cambiata."
+
+#: ../../mod/settings.php:56
+msgid "Password update failed. Please try again."
+msgstr "Aggiornamento password fallito. Prova ancora."
+
+#: ../../mod/settings.php:138
+msgid " Please use a shorter name."
+msgstr " Usa un nome più corto."
+
+#: ../../mod/settings.php:140
+msgid " Name too short."
+msgstr " Nome troppo corto."
+
+#: ../../mod/settings.php:146
+msgid " Not valid email."
+msgstr " Email non valida."
+
+#: ../../mod/settings.php:148
+msgid " Cannot change to that email."
+msgstr "Non puoi usare quella email."
+
+#: ../../mod/settings.php:206
+msgid "Settings updated."
+msgstr "Impostazioni aggiornate."
+
+#: ../../mod/settings.php:256 ../../mod/settings.php:418
+msgid "Plugin Settings"
+msgstr "Impostazioni Plugin"
+
+#: ../../mod/settings.php:257 ../../mod/settings.php:417
+msgid "Account Settings"
+msgstr "Impostazioni Account"
+
+#: ../../mod/settings.php:263
+msgid "No Plugin settings configured"
+msgstr "Nessun Plugin ha delle configurazioni che puoi modificare"
+
+#: ../../mod/settings.php:323
+msgid "Normal Account"
+msgstr "Account normale"
+
+#: ../../mod/settings.php:324
+msgid "This account is a normal personal profile"
+msgstr "Questo account è un normale profilo personale"
+
+#: ../../mod/settings.php:325
+msgid "Soapbox Account"
+msgstr "Account Palco"
+
+#: ../../mod/settings.php:326
+msgid "Automatically approve all connection/friend requests as read-only fans"
+msgstr ""
+"Accetta automaticamente le richieste di connessione/amicizia come fan che "
+"possono solamente leggere"
+
+#: ../../mod/settings.php:327
+msgid "Community/Celebrity Account"
+msgstr "Account Celebrità/Comunità"
+
+#: ../../mod/settings.php:328
+msgid ""
+"Automatically approve all connection/friend requests as read-write fans"
+msgstr ""
+"Accetta automaticamente le richieste di connessione/amicizia come fan che "
+"possono scrivere in bacheca"
+
+#: ../../mod/settings.php:329
+msgid "Automatic Friend Account"
+msgstr "Account Amico Automatico"
+
+#: ../../mod/settings.php:330
+msgid "Automatically approve all connection/friend requests as friends"
+msgstr ""
+"Accetta automaticamente le richieste di connessione/amicizia come amici"
+
+#: ../../mod/settings.php:339
+msgid "OpenID: "
+msgstr "OpenID: "
+
+#: ../../mod/settings.php:339
+msgid "&nbsp;(Optional) Allow this OpenID to login to this account."
+msgstr ""
+"&nbsp;(Opzionale) Permetti a questo OpenID di accedere a questo account."
+
+#: ../../mod/settings.php:349
+msgid "Publish your default profile in site directory?"
+msgstr "Pubblicare il tuo profilo di default nell'elenco del sito?"
+
+#: ../../mod/settings.php:361
+msgid "Publish your default profile in global social directory?"
+msgstr "Pubblicare il tuo profilo di default nell'elenco sociale globale?"
+
+#: ../../mod/settings.php:377
+msgid "Profile is <strong>not published</strong>."
+msgstr "Il profilo <strong>non è pubblicato</strong>."
+
+#: ../../mod/settings.php:398 ../../mod/profile_photo.php:196
+msgid "or"
+msgstr "o"
+
+#: ../../mod/settings.php:403
+msgid "Your Identity Address is"
+msgstr "Il tuo Indirizzo Identità è"
+
+#: ../../mod/settings.php:413
+msgid "Export Personal Data"
+msgstr "Esporta i Dati Personali"
+
+#: ../../mod/settings.php:419
+msgid "Basic Settings"
+msgstr "Impostazioni base"
+
+#: ../../mod/settings.php:420 ../../include/profile_advanced.php:10
+msgid "Full Name:"
+msgstr "Nome completo:"
+
+#: ../../mod/settings.php:421
+msgid "Email Address:"
+msgstr "Indirizzo Email:"
+
+#: ../../mod/settings.php:422
+msgid "Your Timezone:"
+msgstr "Il tuo fuso orario:"
+
+#: ../../mod/settings.php:423
+msgid "Default Post Location:"
+msgstr "Località di default per l'invio:"
+
+#: ../../mod/settings.php:424
+msgid "Use Browser Location:"
+msgstr "Usa la località rilevata dal browser:"
+
+#: ../../mod/settings.php:425
+msgid "Display Theme:"
+msgstr "Tema:"
+
+#: ../../mod/settings.php:427
+msgid "Security and Privacy Settings"
+msgstr "Impostazioni di Sicurezza e Privacy"
+
+#: ../../mod/settings.php:428
+msgid "Maximum Friend Requests/Day:"
+msgstr "Numero massimo di richieste di amicizia per giorno:"
+
+#: ../../mod/settings.php:429
+msgid "(to prevent spam abuse)"
+msgstr "(per prevenire lo spam)"
+
+#: ../../mod/settings.php:430
+msgid "Allow friends to post to your profile page:"
+msgstr "Permetti agli amici di inviare messaggi sulla tua bacheca:"
+
+#: ../../mod/settings.php:431
+msgid "Automatically expire (delete) posts older than"
+msgstr "Cancella automaticamente i messaggi più vecchi di"
+
+#: ../../mod/settings.php:432 ../../include/datetime.php:154
+msgid "days"
+msgstr "giorni"
+
+#: ../../mod/settings.php:433
+msgid "Notification Settings"
+msgstr "Impostazioni Notifiche"
+
+#: ../../mod/settings.php:434
+msgid "Send a notification email when:"
+msgstr "Invia una mail di notifica quando:"
+
+#: ../../mod/settings.php:435
+msgid "You receive an introduction"
+msgstr "Ricevi una presentazione"
+
+#: ../../mod/settings.php:436
+msgid "Your introductions are confirmed"
+msgstr "Le tue presentazioni sono confermate"
+
+#: ../../mod/settings.php:437
+msgid "Someone writes on your profile wall"
+msgstr "Qualcuno scrive sulla bacheca del tuo profilo"
+
+#: ../../mod/settings.php:438
+msgid "Someone writes a followup comment"
+msgstr "Qualcuno scrive un commento a un tuo messaggio"
+
+#: ../../mod/settings.php:439
+msgid "You receive a private message"
+msgstr "Ricevi un messaggio privato"
+
+#: ../../mod/settings.php:440
+msgid "Password Settings"
+msgstr "Impostazioni Password"
+
+#: ../../mod/settings.php:441
+msgid "Leave password fields blank unless changing"
+msgstr ""
+"Lascia questi campi in bianco per non effettuare variazioni alla password"
+
+#: ../../mod/settings.php:442
+msgid "New Password:"
+msgstr "Nuova Password:"
+
+#: ../../mod/settings.php:443
+msgid "Confirm:"
+msgstr "Conferma:"
+
+#: ../../mod/settings.php:444
+msgid "Advanced Page Settings"
+msgstr "Impostazioni Avanzate Account"
+
+#: ../../mod/settings.php:459
+msgid "Default Post Permissions"
+msgstr "Permessi di default per i messaggi"
+
+#: ../../mod/settings.php:460
+msgid "(click to open/close)"
+msgstr "(clicca per aprire/chiudere)"
+
+#: ../../mod/settings.php:473
+msgid "Email/Mailbox Setup"
+msgstr "Impostazioni Email"
+
+#: ../../mod/settings.php:474
+msgid ""
+"If you wish to communicate with email contacts using this service "
+"(optional), please specify how to connect to your mailbox."
+msgstr ""
+"Se vuoi comunicare con i contatti email usando questo servizio, specifica "
+"come collegarti alla tua casella di posta. (opzionale)"
+
+#: ../../mod/settings.php:475
+msgid "IMAP server name:"
+msgstr "Nome server IMAP:"
+
+#: ../../mod/settings.php:477
+msgid "IMAP port:"
+msgstr "Porta IMAP:"
+
+#: ../../mod/settings.php:479
+msgid "Security (TLS or SSL):"
+msgstr "Sicurezza (TLS o SSL):"
+
+#: ../../mod/settings.php:481
+msgid "Email login name:"
+msgstr "Nome utente Email:"
+
+#: ../../mod/settings.php:483
+msgid "Email password:"
+msgstr "Password Email:"
+
+#: ../../mod/settings.php:484
+msgid "Reply-to address (Optional):"
+msgstr "Indirizzo risposte (opzionale):"
+
+#: ../../mod/settings.php:486
+msgid "Send public posts to all email contacts:"
+msgstr "Invia i messaggi pubblici ai contatti email:"
+
+#: ../../mod/settings.php:488
+msgid "Email access is disabled on this site."
+msgstr "L'accesso Email è disabilitato su questo sito."
+
+#: ../../mod/manage.php:37
+#, php-format
+msgid "Welcome back %s"
+msgstr "Bentornato %s"
+
+#: ../../mod/manage.php:87
+msgid "Manage Identities and/or Pages"
+msgstr "Gestisci Indentità e/o Pagine"
+
+#: ../../mod/manage.php:90
+msgid ""
+"(Toggle between different identities or community/group pages which share "
+"your account details.)"
+msgstr ""
+"(Passa tra diverse identità o pagine di comunità/gruppi che condividono i "
+"dettagli del tuo account.)"
+
+#: ../../mod/manage.php:92
+msgid "Select an identity to manage: "
+msgstr "Seleziona una identità da gestire:"
+
+#: ../../mod/network.php:18
+msgid "Normal View"
+msgstr "Vista normale"
+
+#: ../../mod/network.php:20
+msgid "New Item View"
+msgstr "Vista Nuovi Elementi"
+
+#: ../../mod/network.php:64
+#, php-format
+msgid "%d member"
+msgid_plural "%d members"
+msgstr[0] "%d membro"
+msgstr[1] "%d membri"
+
+#: ../../mod/network.php:65
+#, php-format
+msgid "Warning: This group contains %s from an insecure network."
+msgstr "Attenzione: questo gruppo contiente %s da un network insicuro."
+
+#: ../../mod/network.php:66
+msgid "Private messages to this group are at risk of public disclosure."
+msgstr ""
+"I messaggi privati a questo gruppo sono a rischio di visualizzazione "
+"pubblica."
+
+#: ../../mod/network.php:126
+msgid "No such group"
+msgstr "Nessun gruppo"
+
+#: ../../mod/network.php:137
+msgid "Group is empty"
+msgstr "Il gruppo è vuoto"
+
+#: ../../mod/network.php:141
+msgid "Group: "
+msgstr "Gruppo: "
+
+#: ../../mod/network.php:151
+msgid "Contact: "
+msgstr "Contatto:"
+
+#: ../../mod/network.php:153
+msgid "Private messages to this person are at risk of public disclosure."
+msgstr ""
+"I messaggi privati ​​a questa persona sono a rischio di divulgazione al "
+"pubblico."
+
+#: ../../mod/network.php:158
+msgid "Invalid contact."
+msgstr "Contatto non valido."
+
+#: ../../mod/network.php:257 ../../mod/register.php:450
+#: ../../mod/profile.php:262 ../../mod/display.php:147
+msgid ""
+"Shared content is covered by the <a "
+"href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons "
+"Attribution 3.0</a> license."
+msgstr ""
+"Il contenuto in comune è coperto dalla licenza <a "
+"href=\"http://creativecommons.org/licenses/by/3.0/deed.it\">Creative Commons"
+" Attribuzione 3.0</a>."
+
+#: ../../mod/group.php:27 ../../wip/group.php:29
+msgid "Group created."
+msgstr "Gruppo creato."
+
+#: ../../mod/group.php:33 ../../wip/group.php:35
+msgid "Could not create group."
+msgstr "Impossibile creare il gruppo."
+
+#: ../../mod/group.php:43 ../../mod/group.php:115 ../../wip/group.php:45
+#: ../../wip/group.php:137
+msgid "Group not found."
+msgstr "Gruppo non trovato."
+
+#: ../../mod/group.php:56 ../../wip/group.php:58
+msgid "Group name changed."
+msgstr "Il nome del gruppo è cambiato."
+
+#: ../../mod/group.php:67 ../../mod/profperm.php:19 ../../wip/group.php:90
+#: ../../index.php:264
+msgid "Permission denied"
+msgstr "Permesso negato"
+
+#: ../../mod/group.php:74 ../../wip/group.php:97
+msgid "Create a group of contacts/friends."
+msgstr "Crea un gruppo di amici/contatti."
+
+#: ../../mod/group.php:75 ../../mod/group.php:158 ../../wip/group.php:98
+#: ../../wip/group.php:174
+msgid "Group Name: "
+msgstr "Nome del gruppo:"
+
+#: ../../mod/group.php:90 ../../wip/group.php:113
+msgid "Group removed."
+msgstr "Gruppo rimosso."
+
+#: ../../mod/group.php:92 ../../wip/group.php:115
+msgid "Unable to remove group."
+msgstr "Impossibile rimuovere il gruppo."
+
+#: ../../mod/group.php:156 ../../mod/profperm.php:96
+msgid "Click on a contact to add or remove."
+msgstr "Clicca su un contatto per aggiungerlo o rimuoverlo."
+
+#: ../../mod/group.php:157 ../../wip/group.php:173
+msgid "Group Editor"
+msgstr "Modifica gruppo"
+
+#: ../../mod/group.php:169
+msgid "Members"
+msgstr "Membri"
+
+#: ../../mod/group.php:183
+msgid "All Contacts"
+msgstr "Tutti i Contatti"
+
+#: ../../mod/profperm.php:25 ../../mod/profperm.php:46
+msgid "Invalid profile identifier."
+msgstr "Indentificativo del profilo non valido."
+
+#: ../../mod/profperm.php:92
+msgid "Profile Visibility Editor"
+msgstr "Modifica Visibilità del Profilo"
+
+#: ../../mod/profperm.php:94 ../../mod/profile.php:113
+#: ../../include/profile_advanced.php:7
+msgid "Profile"
+msgstr "Profilo"
+
+#: ../../mod/profperm.php:105
+msgid "Visible To"
+msgstr "Visibile A"
+
+#: ../../mod/profperm.php:116
+msgid "All Contacts (with secure profile access)"
+msgstr "Tutti i Contatti (con profilo ad accesso sicuro)"
+
+#: ../../mod/viewcontacts.php:25 ../../boot.php:2001
+msgid "View Contacts"
+msgstr "Guarda contatti"
+
+#: ../../mod/viewcontacts.php:40
+msgid "No contacts."
+msgstr "Nessuno contatto."
+
+#: ../../mod/register.php:47
+msgid "Invalid OpenID url"
+msgstr "Url OpenID non valido"
+
+#: ../../mod/register.php:62
+msgid "Please enter the required information."
+msgstr "Inserisci le informazioni richieste."
+
+#: ../../mod/register.php:74
+msgid "Please use a shorter name."
+msgstr "Usa un nome più corto."
+
+#: ../../mod/register.php:76
+msgid "Name too short."
+msgstr "Il Nome è troppo corto."
+
+#: ../../mod/register.php:91
+msgid "That doesn't appear to be your full (First Last) name."
+msgstr "Questo non sembra essere il tuo nome completo (Nome Cognome)."
+
+#: ../../mod/register.php:95
+msgid "Your email domain is not among those allowed on this site."
+msgstr ""
+"Il dominio della tua email non è tra quelli autorizzati su questo sito."
+
+#: ../../mod/register.php:98
+msgid "Not a valid email address."
+msgstr "Indirizzo email invaildo."
+
+#: ../../mod/register.php:104
+msgid "Cannot use that email."
+msgstr "Questa email non si puo' usare."
+
+#: ../../mod/register.php:109
+msgid ""
+"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
+"must also begin with a letter."
+msgstr ""
+"Il tuo \"soprannome\" puo' contenere solo \"a-z\", \"0-9\", \"-\", e \"_\", "
+"e deve cominciare con una lettera."
+
+#: ../../mod/register.php:115 ../../mod/register.php:215
+msgid "Nickname is already registered. Please choose another."
+msgstr "Soprannome già registrato. Scegline un'altro."
+
+#: ../../mod/register.php:134
+msgid "SERIOUS ERROR: Generation of security keys failed."
+msgstr "ERRORE GRAVE: Generazione delle chiavi di sicurezza fallito."
+
+#: ../../mod/register.php:201
+msgid "An error occurred during registration. Please try again."
+msgstr "Si è verificato un errore durante la registrazione. Prova ancora."
+
+#: ../../mod/register.php:237
+msgid "An error occurred creating your default profile. Please try again."
+msgstr "Si è verificato un errore creando il tuo profilo. Prova ancora."
+
+#: ../../mod/register.php:331 ../../mod/regmod.php:92
+#, php-format
+msgid "Registration details for %s"
+msgstr "Dettagli registrazione per %s"
+
+#: ../../mod/register.php:339
+msgid ""
+"Registration successful. Please check your email for further instructions."
+msgstr ""
+"Registrazione completata. Controlla la tua mail per ulteriori informazioni."
+
+#: ../../mod/register.php:343
+msgid "Failed to send email message. Here is the message that failed."
+msgstr ""
+"Errore inviando il messaggio email. Questo è il messaggio non inviato."
+
+#: ../../mod/register.php:348
+msgid "Your registration can not be processed."
+msgstr "La tua registrazione non puo' essere elaborata."
+
+#: ../../mod/register.php:371
+#, php-format
+msgid "Registration request at %s"
+msgstr "Richiesta di registrazione su %s"
+
+#: ../../mod/register.php:377
+msgid "Your registration is pending approval by the site owner."
+msgstr ""
+"La tua richiesta è in attesa di approvazione da parte del prorietario del "
+"sito."
+
+#: ../../mod/register.php:425
+msgid ""
+"You may (optionally) fill in this form via OpenID by supplying your OpenID "
+"and clicking 'Register'."
+msgstr ""
+"Puoi (opzionalmento) riempire questa maschera via OpenID inserendo il tuo "
+"OpenID e cliccando 'Registra'."
+
+#: ../../mod/register.php:426
+msgid ""
+"If you are not familiar with OpenID, please leave that field blank and fill "
+"in the rest of the items."
+msgstr ""
+"Se non hai familiarità con OpenID, lascia quel campo in bianco e riempi il "
+"resto della maschera."
+
+#: ../../mod/register.php:427
+msgid "Your OpenID (optional): "
+msgstr "Il tuo OpenID (opzionale): "
+
+#: ../../mod/register.php:441
+msgid "Include your profile in member directory?"
+msgstr "Includi il tuo profilo nell'elenco dei membir?"
+
+#: ../../mod/register.php:457
+msgid "Registration"
+msgstr "Registrazione"
+
+#: ../../mod/register.php:465
+msgid "Your Full Name (e.g. Joe Smith): "
+msgstr "Il tuo Nome Completo (p.e. Mario Rossi): "
+
+#: ../../mod/register.php:466
+msgid "Your Email Address: "
+msgstr "Il tuo Indirizzo Email: "
+
+#: ../../mod/register.php:467
+msgid ""
+"Choose a profile nickname. This must begin with a text character. Your "
+"profile address on this site will then be "
+"'<strong>nickname@$sitename</strong>'."
+msgstr ""
+"Scegli un soprannome. Deve cominciare con un carattere. L'indirizzo del tuo "
+"profilo sarà '<strong>soprannome@$sitename</strong>'."
+
+#: ../../mod/register.php:468
+msgid "Choose a nickname: "
+msgstr "Scegli un soprannome: "
+
+#: ../../mod/register.php:471 ../../include/nav.php:59 ../../boot.php:822
+msgid "Register"
+msgstr "Regitrati"
+
+#: ../../mod/like.php:110 ../../addon/facebook/facebook.php:720
+#: ../../include/conversation.php:20
+msgid "status"
+msgstr "stato"
+
+#: ../../mod/like.php:127 ../../addon/facebook/facebook.php:724
+#: ../../include/conversation.php:25
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "A %1$s piace %3$s di %2$s"
+
+#: ../../mod/like.php:129 ../../include/conversation.php:28
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "A %1$s non piace %3$s di %2$s"
+
+#: ../../mod/friendika.php:12 ../../wip/friendika.php:12
+msgid "This is Friendika version"
+msgstr "Questo è Friendika versione"
+
+#: ../../mod/friendika.php:13 ../../wip/friendika.php:13
+msgid "running at web location"
+msgstr "in esecuzione all'indirizzo"
+
+#: ../../mod/friendika.php:15
+msgid ""
+"Shared content within the Friendika network is provided under the <a "
+"href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons "
+"Attribution 3.0 license</a>"
+msgstr ""
+"I contenuti condivisi nel network Friendika è rilasciato sotto la licenza <a"
+" href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons "
+"Attribution 3.0 license</a>"
+
+#: ../../mod/friendika.php:17
+msgid ""
+"Please visit <a "
+"href=\"http://project.friendika.com\">Project.Friendika.com</a> to learn "
+"more about the Friendika project."
+msgstr ""
+"Visita <a href=\"http://project.friendika.com\">Project.Friendika.com</a> "
+"per saperne di più sul progetto Friendika."
+
+#: ../../mod/friendika.php:19 ../../wip/friendika.php:15
+msgid "Bug reports and issues: please visit"
+msgstr "Segnalazioni di bug e problemi: visita"
+
+#: ../../mod/friendika.php:20 ../../wip/friendika.php:16
+msgid ""
+"Suggestions, praise, donations, etc. - please email \"Info\" at Friendika - "
+"dot com"
+msgstr ""
+"Suggerimenti, preghiere, donazioni, etc - invia una email a \"Info\" at "
+"Friendika - dot.com"
+
+#: ../../mod/friendika.php:25
+msgid "Installed plugins/addons/apps"
+msgstr "Plugin/Addon/Applicazioni installate"
+
+#: ../../mod/friendika.php:33
+msgid "No installed plugins/addons/apps"
+msgstr "Nessuno plugin/addons/applicazione installata"
+
+#: ../../mod/regmod.php:10
+msgid "Please login."
+msgstr "Accedi."
+
+#: ../../mod/regmod.php:54
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registrazione revocata per %s"
+
+#: ../../mod/regmod.php:99
+msgid "Account approved."
+msgstr "Account approvato."
+
+#: ../../mod/item.php:37
+msgid "Unable to locate original post."
+msgstr "Impossibile trovare il messaggio originale."
+
+#: ../../mod/item.php:128
+msgid "Empty post discarded."
+msgstr "Messaggio vuoto scartato."
+
+#: ../../mod/item.php:214 ../../mod/message.php:93
+#: ../../mod/wall_upload.php:79 ../../mod/wall_upload.php:88
+#: ../../mod/wall_upload.php:95
+msgid "Wall Photos"
+msgstr "Foto Bacheca"
+
+#: ../../mod/item.php:478
+#, php-format
+msgid "%s commented on your item at %s"
+msgstr "%s ha commentato un tuo elemento su %s"
+
+#: ../../mod/item.php:504
+#, php-format
+msgid "%s posted on your profile wall at %s"
+msgstr "%s ha scritto sulla tua bacheca su %s"
+
+#: ../../mod/item.php:534
+msgid "System error. Post not saved."
+msgstr "Errore di sistema. Messaggio non salvato."
+
+#: ../../mod/item.php:553
+#, php-format
+msgid ""
+"This message was sent to you by %s, a member of the Friendika social "
+"network."
+msgstr ""
+"Questo messaggio ti è stato inviato da %s, un membro del social network "
+"Friendika."
+
+#: ../../mod/item.php:555
+#, php-format
+msgid "You may visit them online at %s"
+msgstr "Puoi visitarli online presso %s"
+
+#: ../../mod/item.php:556
+msgid ""
+"Please contact the sender by replying to this post if you do not wish to "
+"receive these messages."
+msgstr ""
+"Contatta il mittente rispondendo a questo post se non vuoi ricevere questi "
+"messaggi."
+
+#: ../../mod/item.php:558
+#, php-format
+msgid "%s posted an update."
+msgstr "%s ha inviato un aggiornamento."
+
+#: ../../mod/item.php:609 ../../mod/display.php:25 ../../mod/display.php:142
+msgid "Item not found."
+msgstr "Elemento non trovato."
+
+#: ../../mod/profile_photo.php:28
+msgid "Image uploaded but image cropping failed."
+msgstr "L'immagine è stata caricata, ma il ritaglio è fallito."
+
+#: ../../mod/profile_photo.php:61 ../../mod/profile_photo.php:68
+#: ../../mod/profile_photo.php:75 ../../mod/profile_photo.php:248
+#, php-format
+msgid "Image size reduction [%s] failed."
+msgstr "Riduzione della dimensione dell'immagine [%s] fallito."
+
+#: ../../mod/profile_photo.php:95
+msgid "Unable to process image"
+msgstr "Impossibile elaborare l'immagine"
+
+#: ../../mod/profile_photo.php:109 ../../mod/wall_upload.php:56
+#, php-format
+msgid "Image exceeds size limit of %d"
+msgstr "La dimensionde dell'immagine supera il limite di %d"
+
+#: ../../mod/profile_photo.php:193
+msgid "Upload File:"
+msgstr "Carica un file:"
+
+#: ../../mod/profile_photo.php:194
+msgid "Upload Profile Photo"
+msgstr "Carica la Foto del Profilo"
+
+#: ../../mod/profile_photo.php:195
+msgid "Upload"
+msgstr "Carica"
+
+#: ../../mod/profile_photo.php:196
+msgid "skip this step"
+msgstr "salta questo passaggio"
+
+#: ../../mod/profile_photo.php:196
+msgid "select a photo from your photo albums"
+msgstr "seleziona una foto dai tuoi album"
+
+#: ../../mod/profile_photo.php:209
+msgid "Crop Image"
+msgstr "Ritaglia immagine"
+
+#: ../../mod/profile_photo.php:210
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Sistema il ritaglio dell'imagine per una visualizzazione ottimale."
+
+#: ../../mod/profile_photo.php:211
+msgid "Done Editing"
+msgstr "Fatto"
+
+#: ../../mod/profile_photo.php:239
+msgid "Image uploaded successfully."
+msgstr "Immagine caricata con successo."
+
+#: ../../mod/removeme.php:42 ../../mod/removeme.php:45
+msgid "Remove My Account"
+msgstr "Rimuovi il mio Account"
+
+#: ../../mod/removeme.php:43
+msgid ""
+"This will completely remove your account. Once this has been done it is not "
+"recoverable."
+msgstr ""
+"Questo rimuoverà completamente il tuo account. Una volta rimosso non si "
+"potrà recuperarlo."
+
+#: ../../mod/removeme.php:44
+msgid "Please enter your password for verification:"
+msgstr "Inserisci la tua password per verifica:"
+
+#: ../../mod/message.php:18
+msgid "No recipient selected."
+msgstr "Nessun destinatario selezionato."
+
+#: ../../mod/message.php:23
+msgid "[no subject]"
+msgstr "[nessun oggetto]"
+
+#: ../../mod/message.php:34
+msgid "Unable to locate contact information."
+msgstr "Impossibile trovare le informazioni del contatto."
+
+#: ../../mod/message.php:102
+msgid "Message sent."
+msgstr "Messaggio inviato."
+
+#: ../../mod/message.php:105
+msgid "Message could not be sent."
+msgstr "Il messaggio non puo' essere inviato."
+
+#: ../../mod/message.php:125 ../../include/nav.php:102
+msgid "Messages"
+msgstr "Messaggi"
+
+#: ../../mod/message.php:126
+msgid "Inbox"
+msgstr "In arrivo"
+
+#: ../../mod/message.php:127
+msgid "Outbox"
+msgstr "Inviati"
+
+#: ../../mod/message.php:128
+msgid "New Message"
+msgstr "Nuovo messaggio"
+
+#: ../../mod/message.php:142
+msgid "Message deleted."
+msgstr "Messaggio cancellato."
+
+#: ../../mod/message.php:158
+msgid "Conversation removed."
+msgstr "Conversazione rimossa."
+
+#: ../../mod/message.php:172 ../../include/conversation.php:691
+msgid "Please enter a link URL:"
+msgstr "Inserisci l'indirizzo del link:"
+
+#: ../../mod/message.php:180
+msgid "Send Private Message"
+msgstr "Invia messaggio privato"
+
+#: ../../mod/message.php:181 ../../mod/message.php:315
+msgid "To:"
+msgstr "A:"
+
+#: ../../mod/message.php:182 ../../mod/message.php:316
+msgid "Subject:"
+msgstr "Oggetto:"
+
+#: ../../mod/message.php:185 ../../mod/message.php:319 ../../mod/invite.php:63
+msgid "Your message:"
+msgstr "Il tuo messaggio:"
+
+#: ../../mod/message.php:224
+msgid "No messages."
+msgstr "Nessun messaggio."
+
+#: ../../mod/message.php:237
+msgid "Delete conversation"
+msgstr "Cancella conversazione"
+
+#: ../../mod/message.php:240
+msgid "D, d M Y - g:i A"
+msgstr "D d M Y - G:i"
+
+#: ../../mod/message.php:267
+msgid "Message not available."
+msgstr "Messaggio non disponibile."
+
+#: ../../mod/message.php:304
+msgid "Delete message"
+msgstr "Cancella messaggio"
+
+#: ../../mod/message.php:314
+msgid "Send Reply"
+msgstr "Invia risposta"
+
+#: ../../mod/profile.php:11 ../../boot.php:2203
+msgid "No profile"
+msgstr "Nessun profilo"
+
+#: ../../mod/profile.php:112
+msgid "Status"
+msgstr "Stato"
+
+#: ../../mod/profile.php:114
+msgid "Photos"
+msgstr "Foto"
+
+#: ../../mod/openid.php:62 ../../mod/openid.php:118 ../../include/auth.php:105
+#: ../../include/auth.php:130 ../../include/auth.php:183
+msgid "Login failed."
+msgstr "Accesso fallito."
+
+#: ../../mod/openid.php:78 ../../include/auth.php:199
+msgid "Welcome "
+msgstr "Benvenuto"
+
+#: ../../mod/openid.php:79 ../../include/auth.php:200
+msgid "Please upload a profile photo."
+msgstr "Carica una foto per il profilo."
+
+#: ../../mod/openid.php:82 ../../include/auth.php:203
+msgid "Welcome back "
+msgstr "Bentornato "
+
+#: ../../mod/follow.php:39 ../../wip/follow2.php:186
+msgid "The profile address specified does not provide adequate information."
+msgstr ""
+"L'indirizzo del profilo specificato non fornisce adeguate informazioni."
+
+#: ../../mod/follow.php:45 ../../wip/follow2.php:192
+msgid ""
+"Limited profile. This person will be unable to receive direct/personal "
+"notifications from you."
+msgstr ""
+"Profilo limitato. Questa persona non sarà in grado di ricevere nofiche "
+"dirette/personali da te."
+
+#: ../../mod/follow.php:100 ../../wip/follow2.php:247
+msgid "Unable to retrieve contact information."
+msgstr "Impossibile recuperare informazioni sul contatto."
+
+#: ../../mod/follow.php:146 ../../wip/follow2.php:293
+msgid "following"
+msgstr "segue"
+
+#: ../../mod/display.php:135
+msgid "Item has been removed."
+msgstr "L'elemento è stato rimosso."
+
+#: ../../mod/dfrn_notify.php:191
+msgid "noreply"
+msgstr "nessuna risposta"
+
+#: ../../mod/dfrn_notify.php:249
+msgid "New mail received at "
+msgstr "Nuova mail ricevuta su "
+
+#: ../../mod/dfrn_notify.php:403 ../../mod/dfrn_notify.php:493
+#, php-format
+msgid "%s commented on an item at %s"
+msgstr "%s ha commentato un elemento su %s"
+
+#: ../../mod/apps.php:6
+msgid "Applications"
+msgstr "Applicazioni"
+
+#: ../../mod/search.php:26 ../../include/nav.php:71 ../../boot.php:2047
+msgid "Search"
+msgstr "Cerca"
+
+#: ../../mod/search.php:69
+msgid "No results."
+msgstr "Nessun risultato."
+
+#: ../../mod/profiles.php:21 ../../mod/profiles.php:237
+#: ../../mod/profiles.php:342 ../../mod/dfrn_confirm.php:62
+msgid "Profile not found."
+msgstr "Profilo non trovato."
+
+#: ../../mod/profiles.php:28
+msgid "Profile Name is required."
+msgstr "Il Nome Profilo è richiesto ."
+
+#: ../../mod/profiles.php:199
+msgid "Profile updated."
+msgstr "Profilo aggiornato."
+
+#: ../../mod/profiles.php:254
+msgid "Profile deleted."
+msgstr "Profilo elminato."
+
+#: ../../mod/profiles.php:270 ../../mod/profiles.php:301
+msgid "Profile-"
+msgstr "Profilo-"
+
+#: ../../mod/profiles.php:289 ../../mod/profiles.php:328
+msgid "New profile created."
+msgstr "Nuovo profilo creato."
+
+#: ../../mod/profiles.php:307
+msgid "Profile unavailable to clone."
+msgstr "Impossibile duplicare il plrofilo."
+
+#: ../../mod/profiles.php:354
+msgid "Hide my contact/friend list from viewers of this profile?"
+msgstr ""
+"Nascondi la mia lista di contatti/amici dai visitatori di questo profilo"
+
+#: ../../mod/profiles.php:369
+msgid "Edit Profile Details"
+msgstr "Modifica i Dettagli del Profilo"
+
+#: ../../mod/profiles.php:371
+msgid "View this profile"
+msgstr "Visualizza questo profilo"
+
+#: ../../mod/profiles.php:372
+msgid "Create a new profile using these settings"
+msgstr "Crea un nuovo profilo usando queste impostazioni"
+
+#: ../../mod/profiles.php:373
+msgid "Clone this profile"
+msgstr "Clona questo profilo"
+
+#: ../../mod/profiles.php:374
+msgid "Delete this profile"
+msgstr "Cancella questo profilo"
+
+#: ../../mod/profiles.php:375
+msgid "Profile Name:"
+msgstr "Nome del profilo:"
+
+#: ../../mod/profiles.php:376
+msgid "Your Full Name:"
+msgstr "Il tuo nome completo:"
+
+#: ../../mod/profiles.php:377
+msgid "Title/Description:"
+msgstr "Breve descrizione (es. titolo, posizione, altro):"
+
+#: ../../mod/profiles.php:378
+msgid "Your Gender:"
+msgstr "Il tuo sesso:"
+
+#: ../../mod/profiles.php:379
+msgid "Birthday (y/m/d):"
+msgstr "Data di nascita (a/m/g):"
+
+#: ../../mod/profiles.php:380
+msgid "Street Address:"
+msgstr "Indirizzo:"
+
+#: ../../mod/profiles.php:381
+msgid "Locality/City:"
+msgstr "Località/Città:"
+
+#: ../../mod/profiles.php:382
+msgid "Postal/Zip Code:"
+msgstr "CAP:"
+
+#: ../../mod/profiles.php:383
+msgid "Country:"
+msgstr "Nazione:"
+
+#: ../../mod/profiles.php:384
+msgid "Region/State:"
+msgstr "Regione/Stato:"
+
+#: ../../mod/profiles.php:385
+msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
+msgstr "<span class=\"heart\">&hearts;</span> Stato sentimentale:"
+
+#: ../../mod/profiles.php:386
+msgid "Who: (if applicable)"
+msgstr "Con chi: (se possibile)"
+
+#: ../../mod/profiles.php:387
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+msgstr "Esempio: cathy123, Cathy Williams, cathy@example.com"
+
+#: ../../mod/profiles.php:388 ../../include/profile_advanced.php:90
+msgid "Sexual Preference:"
+msgstr "Preferenza sessuale:"
+
+#: ../../mod/profiles.php:389
+msgid "Homepage URL:"
+msgstr "Indirizzo homepage:"
+
+#: ../../mod/profiles.php:390 ../../include/profile_advanced.php:115
+msgid "Political Views:"
+msgstr "Orientamento politico:"
+
+#: ../../mod/profiles.php:391
+msgid "Religious Views:"
+msgstr "Orientamento religioso:"
+
+#: ../../mod/profiles.php:392
+msgid "Public Keywords:"
+msgstr "Parole chiave pubbliche:"
+
+#: ../../mod/profiles.php:393
+msgid "Private Keywords:"
+msgstr "Parole chiave private:"
+
+#: ../../mod/profiles.php:394
+msgid "Example: fishing photography software"
+msgstr "Esempio: pesca fotografia programmazione"
+
+#: ../../mod/profiles.php:395
+msgid "(Used for suggesting potential friends, can be seen by others)"
+msgstr ""
+"(Utilizzato per suggerire potenziali amici, può essere visto da altri)"
+
+#: ../../mod/profiles.php:396
+msgid "(Used for searching profiles, never shown to others)"
+msgstr "(Usato per cercare tra i profili, mai mostrato ad altri)"
+
+#: ../../mod/profiles.php:397
+msgid "Tell us about yourself..."
+msgstr "Racconta di te..."
+
+#: ../../mod/profiles.php:398
+msgid "Hobbies/Interests"
+msgstr "Hobbie/Interessi"
+
+#: ../../mod/profiles.php:399
+msgid "Contact information and Social Networks"
+msgstr "Informazioni su contatti e Social network"
+
+#: ../../mod/profiles.php:400
+msgid "Musical interests"
+msgstr "Interessi musicali"
+
+#: ../../mod/profiles.php:401
+msgid "Books, literature"
+msgstr "Libri, letteratura"
+
+#: ../../mod/profiles.php:402
+msgid "Television"
+msgstr "Televisione"
+
+#: ../../mod/profiles.php:403
+msgid "Film/dance/culture/entertainment"
+msgstr "Film/danza/cultura/intrattenimento"
+
+#: ../../mod/profiles.php:404
+msgid "Love/romance"
+msgstr "Amore/romanticismo"
+
+#: ../../mod/profiles.php:405
+msgid "Work/employment"
+msgstr "Lavoro/impiego"
+
+#: ../../mod/profiles.php:406
+msgid "School/education"
+msgstr "Scuola/educazione"
+
+#: ../../mod/profiles.php:411
+msgid ""
+"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
+"be visible to anybody using the internet."
+msgstr ""
+"Questo è il tuo profilo <strong>publico</strong>.<br "
+"/><strong>Potrebbe</strong> essere visto da chiunque attraverso internet."
+
+#: ../../mod/profiles.php:421 ../../mod/directory.php:97
+msgid "Age: "
+msgstr "Età : "
+
+#: ../../mod/profiles.php:456 ../../include/nav.php:109
+msgid "Profiles"
+msgstr "Profili"
+
+#: ../../mod/profiles.php:457
+msgid "Change profile photo"
+msgstr "Cambia la foto del profilo"
+
+#: ../../mod/profiles.php:458
+msgid "Create New Profile"
+msgstr "Crea un nuovo profilo"
+
+#: ../../mod/profiles.php:468
+msgid "Profile Image"
+msgstr "Immagine del Profilo"
+
+#: ../../mod/profiles.php:470
+msgid "Visible to everybody"
+msgstr "Visibile a tutti"
+
+#: ../../mod/profiles.php:471
+msgid "Edit visibility"
+msgstr "Modifica visibilità"
+
+#: ../../mod/directory.php:38
+msgid "Global Directory"
+msgstr "Elenco Globale"
+
+#: ../../mod/directory.php:45
+msgid "Site Directory"
+msgstr "Elenco del Sito"
+
+#: ../../mod/directory.php:100
+msgid "Gender: "
+msgstr "Genere:"
+
+#: ../../mod/directory.php:126
+msgid "No entries (some entries may be hidden)."
+msgstr "Nessuna voce (qualche voce potrebbe essere nascosta)."
+
+#: ../../mod/invite.php:28
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s: Non è un indirizzo email valido."
+
+#: ../../mod/invite.php:32
+#, php-format
+msgid "Please join my network on %s"
+msgstr "Unisciti al mio social network su %s"
+
+#: ../../mod/invite.php:42
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s: Consegna del messaggio fallita."
+
+#: ../../mod/invite.php:46
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d messaggio inviato."
+msgstr[1] "%d messaggi inviati."
+
+#: ../../mod/invite.php:61
+msgid "Send invitations"
+msgstr "Invia inviti"
+
+#: ../../mod/invite.php:62
+msgid "Enter email addresses, one per line:"
+msgstr "Inserisci gli indirizzi email, uno per riga:"
+
+#: ../../mod/invite.php:64
+#, php-format
+msgid "Please join my social network on %s"
+msgstr "Unisciti al mio social network su %s"
+
+#: ../../mod/invite.php:65
+msgid "To accept this invitation, please visit:"
+msgstr "Per accettare questo invito visita:"
+
+#: ../../mod/invite.php:66
+msgid ""
+"Once you have registered, please connect with me via my profile page at:"
+msgstr "Una volta registrato, connettiti con me sul mio profilo a:"
+
+#: ../../mod/dfrn_confirm.php:231
+msgid "Response from remote site was not understood."
+msgstr "La risposta dal sito remota non è stata capita."
+
+#: ../../mod/dfrn_confirm.php:240
+msgid "Unexpected response from remote site: "
+msgstr "Risposta dal sito remoto inaspettata: "
+
+#: ../../mod/dfrn_confirm.php:248
+msgid "Confirmation completed successfully."
+msgstr "Conferma completata con successo."
+
+#: ../../mod/dfrn_confirm.php:250 ../../mod/dfrn_confirm.php:264
+#: ../../mod/dfrn_confirm.php:271
+msgid "Remote site reported: "
+msgstr "Il sito remoto riporta: "
+
+#: ../../mod/dfrn_confirm.php:262
+msgid "Temporary failure. Please wait and try again."
+msgstr "Errore temporaneo. Attendi e riprova."
+
+#: ../../mod/dfrn_confirm.php:269
+msgid "Introduction failed or was revoked."
+msgstr "La presentazione è fallita o è stata revocata."
+
+#: ../../mod/dfrn_confirm.php:387
+msgid "Unable to set contact photo."
+msgstr "Impossibile impostare la foto del contatto."
+
+#: ../../mod/dfrn_confirm.php:430 ../../include/conversation.php:61
+#, php-format
+msgid "%1$s is now friends with %2$s"
+msgstr "%1$s è ora amico di %2$s"
+
+#: ../../mod/dfrn_confirm.php:501
+#, php-format
+msgid "No user record found for '%s' "
+msgstr "Nessun utente trovato per '%s'"
+
+#: ../../mod/dfrn_confirm.php:511
+msgid "Our site encryption key is apparently messed up."
+msgstr "La nostra chiave di criptazione del sito è apparentemente incasinata."
+
+#: ../../mod/dfrn_confirm.php:522
+msgid "Empty site URL was provided or URL could not be decrypted by us."
+msgstr ""
+"E' stato fornito un indirizzo vuoto o non possiamo decriptare l'indirizzo."
+
+#: ../../mod/dfrn_confirm.php:534
+msgid "Contact record was not found for you on our site."
+msgstr "Il contatto non è stato trovato sul nostro sito."
+
+#: ../../mod/dfrn_confirm.php:562
+msgid ""
+"The ID provided by your system is a duplicate on our system. It should work "
+"if you try again."
+msgstr ""
+"L'ID fornito dal tuo sistema è duplicato sul nostro sistema. Dovrebbe "
+"funzionare se provi ancora."
+
+#: ../../mod/dfrn_confirm.php:573
+msgid "Unable to set your contact credentials on our system."
+msgstr ""
+"Impossibile impostare le credenziali del tuo contatto sul nostro sistema."
+
+#: ../../mod/dfrn_confirm.php:626
+msgid "Unable to update your contact profile details on our system"
+msgstr "Impossibile aggiornare i dettagli del tuo contatto sul nostro sistema"
+
+#: ../../mod/dfrn_confirm.php:655
+#, php-format
+msgid "Connection accepted at %s"
+msgstr "Connession accettata su %s"
+
+#: ../../addon/facebook/facebook.php:227
+msgid "Facebook disabled"
+msgstr "Facebook disabilitato"
+
+#: ../../addon/facebook/facebook.php:232
+msgid "Updating contacts"
+msgstr "Aggiornamento contatti"
+
+#: ../../addon/facebook/facebook.php:241
+msgid "Facebook API key is missing."
+msgstr "Chiave API Facebook mancante."
+
+#: ../../addon/facebook/facebook.php:248
+msgid "Facebook Connect"
+msgstr "Facebook Connect"
+
+#: ../../addon/facebook/facebook.php:254
+msgid "Install Facebook connector for this account."
+msgstr "Installa Facebook connector per questo account"
+
+#: ../../addon/facebook/facebook.php:261
+msgid "Remove Facebook connector"
+msgstr "Rimuovi Facebook connector"
+
+#: ../../addon/facebook/facebook.php:267
+msgid "Post to Facebook by default"
+msgstr "Invia su Facebook di default"
+
+#: ../../addon/facebook/facebook.php:329
+msgid "Facebook"
+msgstr "Facebook"
+
+#: ../../addon/facebook/facebook.php:330
+msgid "Facebook Connector Settings"
+msgstr "Impostazioni Connettore Facebook"
+
+#: ../../addon/facebook/facebook.php:344
+msgid "Post to Facebook"
+msgstr "Invia a Facebook"
+
+#: ../../addon/facebook/facebook.php:411
+msgid ""
+"Post to Facebook cancelled because of multi-network access permission "
+"conflict."
+msgstr "Invio su Facebook annullato per un conflitto nei permessi di accesso."
+
+#: ../../addon/facebook/facebook.php:466
+msgid "Image: "
+msgstr "Immagine: "
+
+#: ../../addon/facebook/facebook.php:526
+msgid "View on Friendika"
+msgstr "Vedi su Friendika"
+
+#: ../../addon/tictac/tictac.php:14
+msgid "Three Dimensional Tic-Tac-Toe"
+msgstr "Tic-Tac-Toe tridimensionale"
+
+#: ../../addon/tictac/tictac.php:47
+msgid "3D Tic-Tac-Toe"
+msgstr "3D Tic-Tac-Toe"
+
+#: ../../addon/tictac/tictac.php:52
+msgid "New game"
+msgstr "Nuovo gioco"
+
+#: ../../addon/tictac/tictac.php:53
+msgid "New game with handicap"
+msgstr "Nuovo gioco con l'handicap"
+
+#: ../../addon/tictac/tictac.php:54
+msgid ""
+"Three dimensional tic-tac-toe is just like the traditional game except that "
+"it is played on multiple levels simultaneously. "
+msgstr ""
+"Tic-tac-toe tridimensionale è come il gioco tradizionale, solo che si gioca "
+"su livelli multipli contemporaneamente."
+
+#: ../../addon/tictac/tictac.php:55
+msgid ""
+"In this case there are three levels. You win by getting three in a row on "
+"any level, as well as up, down, and diagonally across the different levels."
+msgstr ""
+"In questo caso ci sono tra livelli. Puoi vincere facendo tre caselle in fila"
+" su ogni livello, anche verso l'alto, il basso e diagonalmente anche "
+"attraverso i diversi livelli."
+
+#: ../../addon/tictac/tictac.php:57
+msgid ""
+"The handicap game disables the center position on the middle level because "
+"the player claiming this square often has an unfair advantage."
+msgstr ""
+"L'handicap disabilita la casella centrale sul livello di mezzo, perchè il "
+"giocatore che si prende quella casella spesso ha un deciso vantaggio."
+
+#: ../../addon/tictac/tictac.php:176
+msgid "You go first..."
+msgstr "Cominci tu..."
+
+#: ../../addon/tictac/tictac.php:181
+msgid "I'm going first this time..."
+msgstr "Comincio io questa volta..."
+
+#: ../../addon/tictac/tictac.php:187
+msgid "You won!"
+msgstr "Hai vinto!"
+
+#: ../../addon/tictac/tictac.php:193 ../../addon/tictac/tictac.php:218
+msgid "\"Cat\" game!"
+msgstr "Stallo!"
+
+#: ../../addon/tictac/tictac.php:216
+msgid "I won!"
+msgstr "Ho vinto!"
+
+#: ../../addon/randplace/randplace.php:171
+#: ../../wip/addon/randplace/randplace.php:170
+msgid "Randplace Settings"
+msgstr "Impostazioni Randplace"
+
+#: ../../addon/randplace/randplace.php:173
+#: ../../wip/addon/randplace/randplace.php:172
+msgid "Enable Randplace Plugin"
+msgstr "Abilita il plugin Randplace"
+
+#: ../../addon/java_upload/java_upload.php:33 ../../wip/photos.php:747
+#: ../../wip/photos-chris.php:794
+msgid "Select files to upload: "
+msgstr "Seleziona i file da caricare: "
+
+#: ../../addon/java_upload/java_upload.php:35 ../../wip/photos.php:752
+#: ../../wip/photos-chris.php:799
+msgid ""
+"Use the following controls only if the Java uploader [above] fails to "
+"launch."
+msgstr ""
+"Usa il seguente controllo solo se il il caricatore Java (qui sopra) non "
+"parte."
+
+#: ../../addon/js_upload/js_upload.php:39
+msgid "Upload a file"
+msgstr "Carica un file"
+
+#: ../../addon/js_upload/js_upload.php:40
+msgid "Drop files here to upload"
+msgstr "Trascina un file qui per caricarlo"
+
+#: ../../addon/js_upload/js_upload.php:42
+msgid "Failed"
+msgstr "Fallito"
+
+#: ../../addon/js_upload/js_upload.php:288
+msgid "No files were uploaded."
+msgstr "Nessun file è stato caricato."
+
+#: ../../addon/js_upload/js_upload.php:294
+msgid "Uploaded file is empty"
+msgstr "Il file caricato è vuoto"
+
+#: ../../addon/js_upload/js_upload.php:299
+msgid "Uploaded file is too large"
+msgstr "Il file caricato è troppo grande"
+
+#: ../../addon/js_upload/js_upload.php:317
+msgid "File has an invalid extension, it should be one of "
+msgstr "Il file ha una estensione non valida, dovrebbe essere una di "
+
+#: ../../addon/js_upload/js_upload.php:328
+msgid "Upload was cancelled, or server error encountered"
+msgstr ""
+"Il caricamento è stato cancellato, o si è verificato un errore sul server"
+
+#: ../../addon/statusnet/statusnet.php:78
+msgid "Post to StatusNet"
+msgstr "Invia a StatusNet"
+
+#: ../../addon/statusnet/statusnet.php:146
+msgid "StatusNet Posting Settings"
+msgstr "Impostazioni di invio a StatusNet"
+
+#: ../../addon/statusnet/statusnet.php:152
+msgid ""
+"No consumer key pair for StatusNet found. Register your Friendika Account as"
+" an desktop client on your StatusNet account, copy the consumer key pair "
+"here and enter the API base root.<br />Before you register your own OAuth "
+"key pair ask the administrator if there is already a key pair for this "
+"Friendika installation at your favorited StatusNet installation."
+msgstr ""
+"Nessuna coppia di chiavi consumer per StatusNet trovata. Regitstra il tuo "
+"Account Friendika come un client desktop sul tuo account StatusNet, copia la"
+" coppia di chiavi qui e inserisci l'url di base delle API.<br />Prima di "
+"registrare la tua coppia di chiavi OAuth, chiedi all'amministratore se "
+"esiste già una coppia di chiavi per questa installazione di Friendika sulla "
+"installazione di StatusNet che ti interessa."
+
+#: ../../addon/statusnet/statusnet.php:154
+msgid "OAuth Consumer Key"
+msgstr "OAuth Consumer Key"
+
+#: ../../addon/statusnet/statusnet.php:157
+msgid "OAuth Consumer Secret"
+msgstr "OAuth Consumer Secret"
+
+#: ../../addon/statusnet/statusnet.php:160
+msgid "Base API Path (remember the trailing /)"
+msgstr "Indirizzo di base per le API (ricorda la / alla fine)"
+
+#: ../../addon/statusnet/statusnet.php:181
+msgid ""
+"To connect to your StatusNet account click the button below to get a "
+"security code from StatusNet which you have to copy into the input box below"
+" and submit the form. Only your <strong>public</strong> posts will be posted"
+" to StatusNet."
+msgstr ""
+"Per collegare il tuo account StatusNet, clicca sul bottone qui sotto per "
+"ottenere un codice di sicurezza da StatusNet, che dovrai copiare nel box più"
+" sotto per poi inviare la form. Solo i tuoi messaggi "
+"<strong>pubblci</strong> saranno inviati a StatusNet."
+
+#: ../../addon/statusnet/statusnet.php:182
+msgid "Log in with StatusNet"
+msgstr "Login con StatuNet"
+
+#: ../../addon/statusnet/statusnet.php:184
+msgid "Copy the security code from StatusNet here"
+msgstr "Copia il codice di sicurezza da StatusNet qui"
+
+#: ../../addon/statusnet/statusnet.php:197 ../../addon/twitter/twitter.php:165
+msgid "Currently connected to: "
+msgstr "Al momento collegato con:"
+
+#: ../../addon/statusnet/statusnet.php:198
+msgid ""
+"If enabled all your <strong>public</strong> postings will be posted to the "
+"associated StatusNet account as well."
+msgstr ""
+"Se abilitato tutti i tuoi messaggi <strong>pubblici</strong> verranno "
+"inviati anche sull'account StatusNet associato."
+
+#: ../../addon/statusnet/statusnet.php:200
+msgid "Send public postings to StatusNet"
+msgstr "Invia messaggi pubblici su StatusNet"
+
+#: ../../addon/statusnet/statusnet.php:204 ../../addon/twitter/twitter.php:172
+msgid "Clear OAuth configuration"
+msgstr "Cancella la configurazione OAuth"
+
+#: ../../addon/twitter/twitter.php:64
+msgid "Post to Twitter"
+msgstr "Inva a Twitter"
+
+#: ../../addon/twitter/twitter.php:122
+msgid "Twitter Posting Settings"
+msgstr "Impostazioni Invio a Twitter"
+
+#: ../../addon/twitter/twitter.php:129
+msgid ""
+"No consumer key pair for Twitter found. Please contact your site "
+"administrator."
+msgstr ""
+"Nessuna coopia di chiavi per Twitter trovata. Contatta il tuo amministratore"
+" del sito."
+
+#: ../../addon/twitter/twitter.php:148
+msgid ""
+"At this Friendika instance the Twitter plugin was enabled but you have not "
+"yet connected your account to your Twitter account. To do so click the "
+"button below to get a PIN from Twitter which you have to copy into the input"
+" box below and submit the form. Only your <strong>public</strong> posts will"
+" be posted to Twitter."
+msgstr ""
+"Questa installazione di Friendika ha il plugin Twitter abilitato, ma non hai"
+" ancora collegato il tuo account locale con il tuo account su Twitter. Per "
+"farlo, clicca il bottone qui sotto per ottenere un PIN da Twitter, che "
+"dovrai copiare nel box più sotto per poi inviare la form. Solo i tuoi "
+"messaggi <strong>pubblici</strong> verranno inviati anche su Twitter."
+
+#: ../../addon/twitter/twitter.php:149
+msgid "Log in with Twitter"
+msgstr "Accedi con Twitter"
+
+#: ../../addon/twitter/twitter.php:151
+msgid "Copy the PIN from Twitter here"
+msgstr "Copia il PIN da Twitter qui"
+
+#: ../../addon/twitter/twitter.php:166
+msgid ""
+"If enabled all your <strong>public</strong> postings will be posted to the "
+"associated Twitter account as well."
+msgstr ""
+"Se abilitato tutti i tuoi messaggi <strong>pubblici</strong> verranno "
+"inviati anche sull'account Twitter associato."
+
+#: ../../addon/twitter/twitter.php:168
+msgid "Send public postings to Twitter"
+msgstr "Invia messaggi pubblici su Twitter"
+
+#: ../../include/profile_advanced.php:23 ../../boot.php:2289
+msgid "Gender:"
+msgstr "Genere:"
+
+#: ../../include/profile_advanced.php:36 ../../include/items.php:1071
+msgid "Birthday:"
+msgstr "Compleanno:"
+
+#: ../../include/profile_advanced.php:45
+msgid "j F, Y"
+msgstr "j F Y"
+
+#: ../../include/profile_advanced.php:46
+msgid "j F"
+msgstr "j F"
+
+#: ../../include/profile_advanced.php:59
+msgid "Age:"
+msgstr "Età:"
+
+#: ../../include/profile_advanced.php:70
+msgid "<span class=\"heart\">&hearts;</span> Status:"
+msgstr "<span class=\"heart\">&hearts;</span> Stato sentimentale:"
+
+#: ../../include/profile_advanced.php:103 ../../boot.php:2295
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: ../../include/profile_advanced.php:127
+msgid "Religion:"
+msgstr "Religione:"
+
+#: ../../include/profile_advanced.php:138
+msgid "About:"
+msgstr "Informazioni:"
+
+#: ../../include/profile_advanced.php:150
+msgid "Hobbies/Interests:"
+msgstr "Hobbie/Interessi:"
+
+#: ../../include/profile_advanced.php:162
+msgid "Contact information and Social Networks:"
+msgstr "Informazioni su contatti e Social network:"
+
+#: ../../include/profile_advanced.php:174
+msgid "Musical interests:"
+msgstr "Interessi musicali:"
+
+#: ../../include/profile_advanced.php:186
+msgid "Books, literature:"
+msgstr "Libri, letteratura:"
+
+#: ../../include/profile_advanced.php:198
+msgid "Television:"
+msgstr "Televisione:"
+
+#: ../../include/profile_advanced.php:210
+msgid "Film/dance/culture/entertainment:"
+msgstr "Film/danza/cultura/intrattenimento:"
+
+#: ../../include/profile_advanced.php:222
+msgid "Love/Romance:"
+msgstr "Amore/romanticismo:"
+
+#: ../../include/profile_advanced.php:234
+msgid "Work/employment:"
+msgstr "Lavoro/impiego:"
+
+#: ../../include/profile_advanced.php:246
+msgid "School/education:"
+msgstr "Scuola/educazione:"
+
+#: ../../include/contact_selectors.php:32
+msgid "Unknown | Not categorised"
+msgstr "Sconosciuto | non categorizzato"
+
+#: ../../include/contact_selectors.php:33
+msgid "Block immediately"
+msgstr "Blocca immediatamente"
+
+#: ../../include/contact_selectors.php:34
+msgid "Shady, spammer, self-marketer"
+msgstr "Shady, spammer, self-marketer"
+
+#: ../../include/contact_selectors.php:35
+msgid "Known to me, but no opinion"
+msgstr "Lo conosco, ma non ho oppinioni"
+
+#: ../../include/contact_selectors.php:36
+msgid "OK, probably harmless"
+msgstr "E' ok, probabilmente innocuo"
+
+#: ../../include/contact_selectors.php:37
+msgid "Reputable, has my trust"
+msgstr "Rispettabile, ha la mia fiducia"
+
+#: ../../include/contact_selectors.php:55
+msgid "Frequently"
+msgstr "Frequentemente"
+
+#: ../../include/contact_selectors.php:56
+msgid "Hourly"
+msgstr "Ogni ora"
+
+#: ../../include/contact_selectors.php:57
+msgid "Twice daily"
+msgstr "Due volte al dì"
+
+#: ../../include/contact_selectors.php:58
+msgid "Daily"
+msgstr "Giornalmente"
+
+#: ../../include/contact_selectors.php:59
+msgid "Weekly"
+msgstr "Settimanalmente"
+
+#: ../../include/contact_selectors.php:60
+msgid "Monthly"
+msgstr "Mensilmente"
+
+#: ../../include/profile_selectors.php:6
+msgid "Male"
+msgstr "Maschio"
+
+#: ../../include/profile_selectors.php:6
+msgid "Female"
+msgstr "Femmina"
+
+#: ../../include/profile_selectors.php:6
+msgid "Currently Male"
+msgstr "Al momento maschio"
+
+#: ../../include/profile_selectors.php:6
+msgid "Currently Female"
+msgstr "Al momento femmina"
+
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Male"
+msgstr "Prevalentemente maschio"
+
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Female"
+msgstr "Prevalentemente femmina"
+
+#: ../../include/profile_selectors.php:6
+msgid "Transgender"
+msgstr "Transgenere"
+
+#: ../../include/profile_selectors.php:6
+msgid "Intersex"
+msgstr "Bisessuale"
+
+#: ../../include/profile_selectors.php:6
+msgid "Transsexual"
+msgstr "Transsessuale"
+
+#: ../../include/profile_selectors.php:6
+msgid "Hermaphrodite"
+msgstr "Ermafrodito"
+
+#: ../../include/profile_selectors.php:6
+msgid "Neuter"
+msgstr "Neutro"
+
+#: ../../include/profile_selectors.php:6
+msgid "Non-specific"
+msgstr "Non-specifico"
+
+#: ../../include/profile_selectors.php:6
+msgid "Other"
+msgstr "Altro"
+
+#: ../../include/profile_selectors.php:6
+msgid "Undecided"
+msgstr "Indeciso"
+
+#: ../../include/profile_selectors.php:19
+msgid "Males"
+msgstr "Maschi"
+
+#: ../../include/profile_selectors.php:19
+msgid "Females"
+msgstr "Femmine"
+
+#: ../../include/profile_selectors.php:19
+msgid "Gay"
+msgstr "Gay"
+
+#: ../../include/profile_selectors.php:19
+msgid "Lesbian"
+msgstr "Lesbica"
+
+#: ../../include/profile_selectors.php:19
+msgid "No Preference"
+msgstr "Nessuna preferenza"
+
+#: ../../include/profile_selectors.php:19
+msgid "Bisexual"
+msgstr "Bisessuale"
+
+#: ../../include/profile_selectors.php:19
+msgid "Autosexual"
+msgstr "Autosessuale"
+
+#: ../../include/profile_selectors.php:19
+msgid "Abstinent"
+msgstr "Astinente"
+
+#: ../../include/profile_selectors.php:19
+msgid "Virgin"
+msgstr "Vergine"
+
+#: ../../include/profile_selectors.php:19
+msgid "Deviant"
+msgstr "Deviato"
+
+#: ../../include/profile_selectors.php:19
+msgid "Fetish"
+msgstr "Fetish"
+
+#: ../../include/profile_selectors.php:19
+msgid "Oodles"
+msgstr "Un sacco"
+
+#: ../../include/profile_selectors.php:19
+msgid "Nonsexual"
+msgstr "Asessuato"
+
+#: ../../include/profile_selectors.php:33
+msgid "Single"
+msgstr "Single"
+
+#: ../../include/profile_selectors.php:33
+msgid "Lonely"
+msgstr "Solitario"
+
+#: ../../include/profile_selectors.php:33
+msgid "Available"
+msgstr "Disoponibile"
+
+#: ../../include/profile_selectors.php:33
+msgid "Unavailable"
+msgstr "Non disponibile"
+
+#: ../../include/profile_selectors.php:33
+msgid "Dating"
+msgstr "Incontro"
+
+#: ../../include/profile_selectors.php:33
+msgid "Unfaithful"
+msgstr "Infedele"
+
+#: ../../include/profile_selectors.php:33
+msgid "Sex Addict"
+msgstr "Sesso-dipendente"
+
+#: ../../include/profile_selectors.php:33
+msgid "Friends"
+msgstr "Amici"
+
+#: ../../include/profile_selectors.php:33
+msgid "Friends/Benefits"
+msgstr "Amici con benefici"
+
+#: ../../include/profile_selectors.php:33
+msgid "Casual"
+msgstr "Casual"
+
+#: ../../include/profile_selectors.php:33
+msgid "Engaged"
+msgstr "Impegnato"
+
+#: ../../include/profile_selectors.php:33
+msgid "Married"
+msgstr "Sposato"
+
+#: ../../include/profile_selectors.php:33
+msgid "Partners"
+msgstr "Partners"
+
+#: ../../include/profile_selectors.php:33
+msgid "Cohabiting"
+msgstr "Coinquilino"
+
+#: ../../include/profile_selectors.php:33
+msgid "Happy"
+msgstr "Felice"
+
+#: ../../include/profile_selectors.php:33
+msgid "Not Looking"
+msgstr "Non in cerca"
+
+#: ../../include/profile_selectors.php:33
+msgid "Swinger"
+msgstr "Scambista"
+
+#: ../../include/profile_selectors.php:33
+msgid "Betrayed"
+msgstr "Tradito"
+
+#: ../../include/profile_selectors.php:33
+msgid "Separated"
+msgstr "Separato"
+
+#: ../../include/profile_selectors.php:33
+msgid "Unstable"
+msgstr "Instabile"
+
+#: ../../include/profile_selectors.php:33
+msgid "Divorced"
+msgstr "Divorziato"
+
+#: ../../include/profile_selectors.php:33
+msgid "Widowed"
+msgstr "Vedovo"
+
+#: ../../include/profile_selectors.php:33
+msgid "Uncertain"
+msgstr "Incerto"
+
+#: ../../include/profile_selectors.php:33
+msgid "Complicated"
+msgstr "Complicato"
+
+#: ../../include/profile_selectors.php:33
+msgid "Don't care"
+msgstr "Non interessa"
+
+#: ../../include/profile_selectors.php:33
+msgid "Ask me"
+msgstr "Chiedimelo"
+
+#: ../../include/oembed.php:57
+msgid "Embedding disabled"
+msgstr "Inclusione disabilitata"
+
+#: ../../include/group.php:146
+msgid "Create a new group"
+msgstr "Crea un nuovo gruppo"
+
+#: ../../include/group.php:147
+msgid "Everybody"
+msgstr "Tutti"
+
+#: ../../include/nav.php:41 ../../boot.php:852
+msgid "Logout"
+msgstr "Esci"
+
+#: ../../include/nav.php:44 ../../boot.php:830 ../../boot.php:836
+msgid "Login"
+msgstr "Accedi"
+
+#: ../../include/nav.php:55 ../../include/nav.php:93
+msgid "Home"
+msgstr "Home"
+
+#: ../../include/nav.php:68
+msgid "Apps"
+msgstr "Applicazioni"
+
+#: ../../include/nav.php:81
+msgid "Directory"
+msgstr "Elenco"
+
+#: ../../include/nav.php:91
+msgid "Network"
+msgstr "Rete"
+
+#: ../../include/nav.php:99
+msgid "Notifications"
+msgstr "Notifiche"
+
+#: ../../include/nav.php:105
+msgid "Manage"
+msgstr "Gestisci"
+
+#: ../../include/nav.php:108
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: ../../include/auth.php:27
+msgid "Logged out."
+msgstr "Sei uscito."
+
+#: ../../include/datetime.php:44 ../../include/datetime.php:46
+msgid "Miscellaneous"
+msgstr "Varie"
+
+#: ../../include/datetime.php:148
+msgid "less than a second ago"
+msgstr "meno di un secondo fa"
+
+#: ../../include/datetime.php:151
+msgid "year"
+msgstr "anno"
+
+#: ../../include/datetime.php:151
+msgid "years"
+msgstr "anni"
+
+#: ../../include/datetime.php:152
+msgid "month"
+msgstr "mese"
+
+#: ../../include/datetime.php:152
+msgid "months"
+msgstr "mesi"
+
+#: ../../include/datetime.php:153
+msgid "week"
+msgstr "settimana"
+
+#: ../../include/datetime.php:153
+msgid "weeks"
+msgstr "settimane"
+
+#: ../../include/datetime.php:154
+msgid "day"
+msgstr "giorno"
+
+#: ../../include/datetime.php:155
+msgid "hour"
+msgstr "ora"
+
+#: ../../include/datetime.php:155
+msgid "hours"
+msgstr "ore"
+
+#: ../../include/datetime.php:156
+msgid "minute"
+msgstr "minuto"
+
+#: ../../include/datetime.php:156
+msgid "minutes"
+msgstr "minuti"
+
+#: ../../include/datetime.php:157
+msgid "second"
+msgstr "secondo"
+
+#: ../../include/datetime.php:157
+msgid "seconds"
+msgstr "secondi"
+
+#: ../../include/datetime.php:164
+msgid " ago"
+msgstr " fa"
+
+#: ../../include/bbcode.php:83
+msgid "Image/photo"
+msgstr "Immagine/foto"
+
+#: ../../include/dba.php:31
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "Non trovo le informazioni DNS per il database server '%s'"
+
+#: ../../include/acl_selectors.php:133
+msgid "Visible To:"
+msgstr "Visibile a:"
+
+#: ../../include/acl_selectors.php:137 ../../include/acl_selectors.php:152
+msgid "Groups"
+msgstr "Gruppi"
+
+#: ../../include/acl_selectors.php:148
+msgid "Except For:"
+msgstr "Eccetto per:"
+
+#: ../../include/notifier.php:414
+msgid "(no subject)"
+msgstr "(nessun oggetto)"
+
+#: ../../include/items.php:1416
+msgid "You have a new follower at "
+msgstr "Hai un nuovo seguace su "
+
+#: ../../include/conversation.php:192 ../../include/conversation.php:459
+#: ../../include/conversation.php:460
+#, php-format
+msgid "View %s's profile"
+msgstr "Vedi il profilo di %s"
+
+#: ../../include/conversation.php:208
+msgid "View in context"
+msgstr "Vedi nel contesto"
+
+#: ../../include/conversation.php:279
+msgid "See more posts like this"
+msgstr "Vedi altri post come questo"
+
+#: ../../include/conversation.php:304
+#, php-format
+msgid "See all %d comments"
+msgstr "Vedi tutti i %d commenti"
+
+#: ../../include/conversation.php:461
+msgid "to"
+msgstr "a"
+
+#: ../../include/conversation.php:462
+msgid "Wall-to-Wall"
+msgstr "Bacheca-A-Bacheca"
+
+#: ../../include/conversation.php:463
+msgid "via Wall-To-Wall:"
+msgstr "sulla sua Bacheca:"
+
+#: ../../include/conversation.php:600
+msgid "View status"
+msgstr "Vedi stato"
+
+#: ../../include/conversation.php:601
+msgid "View profile"
+msgstr "Vedi profilo"
+
+#: ../../include/conversation.php:602
+msgid "View photos"
+msgstr "Vedi foto"
+
+#: ../../include/conversation.php:603
+msgid "View recent"
+msgstr "Visualizza recente"
+
+#: ../../include/conversation.php:605
+msgid "Send PM"
+msgstr "Invia messaggio privato"
+
+#: ../../include/conversation.php:655
+#, php-format
+msgid "%s likes this."
+msgstr "Piace a %s."
+
+#: ../../include/conversation.php:655
+#, php-format
+msgid "%s doesn't like this."
+msgstr "Non piace a %s."
+
+#: ../../include/conversation.php:659
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgstr "Piace a <span %1$s>%2$d persone</span>."
+
+#: ../../include/conversation.php:661
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgstr "Non piace a <span %1$s>%2$d persone</span>."
+
+#: ../../include/conversation.php:667
+msgid "and"
+msgstr "e"
+
+#: ../../include/conversation.php:670
+#, php-format
+msgid ", and %d other people"
+msgstr ", e altre %d persone"
+
+#: ../../include/conversation.php:671
+#, php-format
+msgid "%s like this."
+msgstr "Piace a %s."
+
+#: ../../include/conversation.php:671
+#, php-format
+msgid "%s don't like this."
+msgstr "Non piace a %s."
+
+#: ../../include/conversation.php:690
+msgid "Visible to <strong>everybody</strong>"
+msgstr "Vsibile a <strong>tutti</strong>"
+
+#: ../../include/conversation.php:692
+msgid "Please enter a YouTube link:"
+msgstr "Inserisci l'indirizzo di YouTube:"
+
+#: ../../include/conversation.php:693
+msgid "Please enter a video(.ogg) link/URL:"
+msgstr "Inserisci il link a un video (.ogg):"
+
+#: ../../include/conversation.php:694
+msgid "Please enter an audio(.ogg) link/URL:"
+msgstr "Inserisci il link a un audio (.ogg):"
+
+#: ../../include/conversation.php:695
+msgid "Where are you right now?"
+msgstr "Dove sei ora?"
+
+#: ../../include/conversation.php:696
+msgid "Enter a title for this item"
+msgstr "Inserisci un titolo per questo elemento"
+
+#: ../../include/conversation.php:743
+msgid "Set title"
+msgstr "Imposta il titolo"
+
+#: ../../boot.php:372
+msgid "Delete this item?"
+msgstr "Cancellare questo elemento?"
+
+#: ../../boot.php:821
+msgid "Create a New Account"
+msgstr "Crea un Nuovo Account"
+
+#: ../../boot.php:828
+msgid "Nickname or Email address: "
+msgstr "Soprannome o indirizzo Email: "
+
+#: ../../boot.php:829
+msgid "Password: "
+msgstr "Password: "
+
+#: ../../boot.php:834
+msgid "Nickname/Email/OpenID: "
+msgstr "Soprannome/Email/OpenID: "
+
+#: ../../boot.php:835
+msgid "Password (if not OpenID): "
+msgstr "Password (se non OpenID): "
+
+#: ../../boot.php:838
+msgid "Forgot your password?"
+msgstr "Dimenticata la password?"
+
+#: ../../boot.php:1093
+msgid "prev"
+msgstr "prec"
+
+#: ../../boot.php:1095
+msgid "first"
+msgstr "primo"
+
+#: ../../boot.php:1124
+msgid "last"
+msgstr "ultimo"
+
+#: ../../boot.php:1127
+msgid "next"
+msgstr "succ"
+
+#: ../../boot.php:1988
+msgid "No contacts"
+msgstr "Nessun contatto"
+
+#: ../../boot.php:1996
+#, php-format
+msgid "%d Contact"
+msgid_plural "%d Contacts"
+msgstr[0] "%d Contatto"
+msgstr[1] "%d Contatti"
+
+#: ../../boot.php:2262
+msgid "Connect"
+msgstr "Connetti"
+
+#: ../../boot.php:2277
+msgid "Location:"
+msgstr "Posizione:"
+
+#: ../../boot.php:2281
+msgid ", "
+msgstr ", "
+
+#: ../../boot.php:2293
+msgid "Status:"
+msgstr "Stato:"
+
+#: ../../boot.php:2386
+msgid "Monday"
+msgstr "Lunedì"
+
+#: ../../boot.php:2386
+msgid "Tuesday"
+msgstr "Martedì"
+
+#: ../../boot.php:2386
+msgid "Wednesday"
+msgstr "Mercoledì"
+
+#: ../../boot.php:2386
+msgid "Thursday"
+msgstr "Giovedì"
+
+#: ../../boot.php:2386
+msgid "Friday"
+msgstr "Venerdì"
+
+#: ../../boot.php:2386
+msgid "Saturday"
+msgstr "Sabato"
+
+#: ../../boot.php:2386
+msgid "Sunday"
+msgstr "Domenica"
+
+#: ../../boot.php:2390
+msgid "January"
+msgstr "Gennaio"
+
+#: ../../boot.php:2390
+msgid "February"
+msgstr "Febbraio"
+
+#: ../../boot.php:2390
+msgid "March"
+msgstr "Marzo"
+
+#: ../../boot.php:2390
+msgid "April"
+msgstr "Aprile"
+
+#: ../../boot.php:2390
+msgid "May"
+msgstr "Maggio"
+
+#: ../../boot.php:2390
+msgid "June"
+msgstr "Giugno"
+
+#: ../../boot.php:2390
+msgid "July"
+msgstr "Luglio"
+
+#: ../../boot.php:2390
+msgid "August"
+msgstr "Agosto"
+
+#: ../../boot.php:2390
+msgid "September"
+msgstr "Settembre"
+
+#: ../../boot.php:2390
+msgid "October"
+msgstr "Ottobre"
+
+#: ../../boot.php:2390
+msgid "November"
+msgstr "Novembre"
+
+#: ../../boot.php:2390
+msgid "December"
+msgstr "Dicembre"
+
+#: ../../boot.php:2405
+msgid "g A l F d"
+msgstr "g A l d F"
+
+#: ../../boot.php:2422
+msgid "Birthday Reminders"
+msgstr "Promemoria Compleanni"
+
+#: ../../boot.php:2423
+msgid "Birthdays this week:"
+msgstr "Compleanni questa settimana:"
+
+#: ../../boot.php:2424
+msgid "(Adjusted for local time)"
+msgstr "(Convertiti all'ora locale)"
+
+#: ../../boot.php:2435
+msgid "[today]"
+msgstr "[oggi]"
+
+#: ../../boot.php:2636
+msgid "link to source"
+msgstr "Collegamento all'originale"
+
+#: ../../wip/dfrn_poll2.php:72 ../../wip/dfrn_poll2.php:376
+msgid " welcomes "
+msgstr " da il benvenuto "
+
+#: ../../wip/addon/facebook/facebook.php:54
+msgid "Facebook status update failed."
+msgstr "Aggiornamento dello stato su Facebook fallito."
+
+#: ../../wip/addon/js_upload/js_upload.php:213
+msgid "Could not save uploaded file."
+msgstr "Non posso salvare il file caricato."
+
+#: ../../wip/addon/js_upload/js_upload.php:214
+msgid "The upload was cancelled, or server error encountered"
+msgstr ""
+"Il caricamento è stato cancellato, o si è verificato un errore sul server"
+
+#: ../../wip/addon/js_upload/js_upload.php:167
+msgid "Server error. Upload directory isn"
+msgstr "Errore sul server."
+
+#: ../../wip/group.php:81
+msgid "Membership list updated."
+msgstr "Lista adesioni aggiornata."
+
+#: ../../wip/group.php:175
+msgid "Members:"
+msgstr "Membri:"
+
+#: ../../index.php:208
+msgid "Not Found"
+msgstr "Non Trovato"
+
+#: ../../index.php:209
+msgid "Page not found."
+msgstr "Pagina non trovata."
diff --git a/view/it/msg-header.tpl b/view/it/msg-header.tpl
deleted file mode 100644
index 69e813ae2..000000000
--- a/view/it/msg-header.tpl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-<script language="javascript" type="text/javascript" src="$baseurl/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
-<script language="javascript" type="text/javascript">
-
-tinyMCE.init({
- theme : "advanced",
- mode : "specific_textareas",
- editor_selector: /(profile-jot-text|prvmail-text)/,
- plugins : "bbcode,paste",
- theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor",
- theme_advanced_buttons2 : "",
- theme_advanced_buttons3 : "",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "center",
- theme_advanced_blockformats : "blockquote,code",
- paste_text_sticky : true,
- entity_encoding : "raw",
- add_unload_trigger : false,
- remove_linebreaks : false,
- force_p_newlines : false,
- force_br_newlines : true,
- forced_root_block : '',
- convert_urls: false,
- content_css: "$baseurl/view/custom_tinymce.css",
- //Character count
- theme_advanced_path : false,
- setup : function(ed) {
- ed.onKeyUp.add(function(ed, e) {
- var txt = tinyMCE.activeEditor.getContent();
- var text = txt.length;
- if(txt.length <= 140) {
- $('#character-counter').removeClass('red');
- $('#character-counter').removeClass('orange');
- $('#character-counter').addClass('grey');
- }
- if((txt.length > 140) && (txt .length <= 420)) {
- $('#character-counter').removeClass('grey');
- $('#character-counter').removeClass('red');
- $('#character-counter').addClass('orange');
- }
- if(txt.length > 420) {
- $('#character-counter').removeClass('grey');
- $('#character-counter').removeClass('orange');
- $('#character-counter').addClass('red');
- }
- $('#character-counter').text(text);
- });
-
- ed.onInit.add(function(ed) {
- ed.pasteAsPlainText = true;
- });
- }
-});
-
-</script>
-<script type="text/javascript" src="include/ajaxupload.js" ></script>
-<script>
- $(document).ready(function() {
- var uploader = new window.AjaxUpload(
- 'prvmail-upload',
- { action: 'wall_upload/$nickname',
- name: 'userfile',
- onSubmit: function(file,ext) { $('#profile-rotator').show(); },
- onComplete: function(file,response) {
- tinyMCE.execCommand('mceInsertRawHTML',false,response);
- $('#profile-rotator').hide();
- }
- }
- );
-
- });
-
- function jotGetLink() {
- reply = prompt("Inserisci l'indirizzo del collegamento:");
- if(reply && reply.length) {
- $('#profile-rotator').show();
- $.get('parse_url?url=' + reply, function(data) {
- tinyMCE.execCommand('mceInsertRawHTML',false,data);
- $('#profile-rotator').hide();
- });
- }
- }
-
- function linkdropper(event) {
- var linkFound = event.dataTransfer.types.contains("text/uri-list");
- if(linkFound)
- event.preventDefault();
- }
-
- function linkdrop(event) {
- var reply = event.dataTransfer.getData("text/uri-list");
- event.target.textContent = reply;
- event.preventDefault();
- if(reply && reply.length) {
- $('#profile-rotator').show();
- $.get('parse_url?url=' + reply, function(data) {
- tinyMCE.execCommand('mceInsertRawHTML',false,data);
- $('#profile-rotator').hide();
- });
- }
- }
-
-</script>
-
diff --git a/view/it/pagetypes.tpl b/view/it/pagetypes.tpl
deleted file mode 100644
index 4cb0ec64c..000000000
--- a/view/it/pagetypes.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-
- <div id="settings-normal-wrapper">
- <label id="settings-normal-label" for="settings-normal">Profilo Normale</label>
- <input type="radio" name="page-flags" id="settings-normal" $normal_selected value="$page_normal" />
- <span id="settings-normal-desc">Questo account &egrave; un nomale profilo personale</span>
- </div>
- <div id="settings-normal-break" ></div>
- <div id="settings-soapbox-wrapper">
- <label id="settings-soapbox-label" for="settings-soapbox">Profilo Palcoscenico</label>
- <input type="radio" name="page-flags" id="settings-soapbox" $soapbox_selected value="$page_soapbox" />
- <span id="settings-soapbox-desc">Automatiacmente approva tutte le richieste di connessione/amicizia come Fan in sola lettura</span>
- </div>
- <div id="settings-soapbox-break" ></div>
- <div id="settings-community-wrapper">
- <label id="settings-community-label" for="settings-community">Profilo Community/Celebrit&agrave;</label>
- <input type="radio" name="page-flags" id="settings-community" $community_selected value="$page_community" />
- <span id="settings-community-desc">Automaticamente approva tutte le richieste di connessione/amicizia come Fan in lettura/scrittura</span>
- </div>
- <div id="settings-community-break" ></div>
- <div id="settings-freelove-wrapper">
- <label id="settings-freelove-label" for="settings-freelove">Profilo Amico Automatico</label>
- <input type="radio" name="page-flags" id="settings-freelove" $freelove_selected value="$page_freelove" />
- <span id="settings-freelove-desc">Automaticamente approva tutte le richieste di connessione/amicizia come amici</span>
- </div>
- <div id="settings-freelove-break" ></div>
diff --git a/view/it/profile-hide-friends.tpl b/view/it/profile-hide-friends.tpl
deleted file mode 100644
index fb04d449b..000000000
--- a/view/it/profile-hide-friends.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<p id="hide-friends-text">
-Nascondere la lista di contatti/amici dai visitatori di questo profilo?
-</p>
-
- <div id="hide-friends-yes-wrapper">
- <label id="hide-friends-yes-label" for="hide-friends-yes">Si</label>
- <input type="radio" name="hide-friends" id="hide-friends-yes" $yes_selected value="1" />
-
- <div id="hide-friends-break" ></div>
- </div>
- <div id="hide-friends-no-wrapper">
- <label id="hide-friends-no-label" for="hide-friends-no">No</label>
- <input type="radio" name="hide-friends" id="hide-friends-no" $no_selected value="0" />
-
- <div id="hide-friends-end"></div>
- </div>
diff --git a/view/it/profile-in-directory.tpl b/view/it/profile-in-directory.tpl
deleted file mode 100644
index 69b025366..000000000
--- a/view/it/profile-in-directory.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<p id="profile-in-directory">
-Pubblicare il tuo profilo di default nell'elenco sul sito?
-</p>
-
- <div id="profile-in-dir-yes-wrapper">
- <label id="profile-in-dir-yes-label" for="profile-in-dir-yes">Si</label>
- <input type="radio" name="profile_in_directory" id="profile-in-dir-yes" $yes_selected value="1" />
-
- <div id="profile-in-dir-break" ></div>
- </div>
- <div id="profile-in-dir-no-wrapper">
- <label id="profile-in-dir-no-label" for="profile-in-dir-no">No</label>
- <input type="radio" name="profile_in_directory" id="profile-in-dir-no" $no_selected value="0" />
-
- <div id="profile-in-dir-end"></div>
- </div>
diff --git a/view/it/profile-in-netdir.tpl b/view/it/profile-in-netdir.tpl
deleted file mode 100644
index ffe56edb6..000000000
--- a/view/it/profile-in-netdir.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<p id="profile-in-directory">
-Pubblicare il tuo profilo di default nell'elenco sociale globale?
-</p>
-
- <div id="profile-in-netdir-yes-wrapper">
- <label id="profile-in-netdir-yes-label" for="profile-in-netdir-yes">Si</label>
- <input type="radio" name="profile_in_netdirectory" id="profile-in-netdir-yes" $yes_selected value="1" />
-
- <div id="profile-in-netdir-break" ></div>
- </div>
- <div id="profile-in-netdir-no-wrapper">
- <label id="profile-in-netdir-no-label" for="profile-in-netdir-no">No</label>
- <input type="radio" name="profile_in_netdirectory" id="profile-in-netdir-no" $no_selected value="0" />
-
- <div id="profile-in-netdir-end"></div>
- </div>
diff --git a/view/it/profile.php b/view/it/profile.php
deleted file mode 100644
index 5ecffb3a5..000000000
--- a/view/it/profile.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html ><?php // This is a perfect example of why I prefer to use template files rather than mixed PHP/HTML ?>
-<html>
-<head>
- <title><?php if(x($page,'title')) echo $page['title']; ?></title>
- <?php if(x($page,'htmlhead')) echo $page['htmlhead']; ?>
-</head>
-<body>
-<header><?php if(x($page,'header')) echo $page['header']; ?></header>
-<nav><div id="top-margin"></div><?php if(x($page,'nav')) echo $page['nav']; ?></nav>
-<aside>
-<?php if((is_array($profile)) && count($profile)) { ?>
-<div class="vcard">
- <?php if(strlen($profile['name'])) { ?>
- <div class="fn"><?php echo $profile['name']; ?></div>
- <?php } ?>
-
- <?php if(strlen($profile['photo'])) { ?>
- <div id="profile-photo-wrapper"><img class="photo" src="<?php echo $profile['photo']; ?>" alt="<?php echo $profile['name']; ?>" /></div>
- <?php } ?>
-
- <div id="profile-extra-links">
- <ul>
- <?php if($profile['uid'] != $_SESSION['uid']) { ?>
- <li><a id="dfrn-request-link" href="dfrn_request/<?php echo $profile['nickname']; ?>">Connetti</a></li>
- <?php } ?>
- </ul>
-
- </div>
-
- <?php if ( (strlen($profile['address']))
- || (strlen($profile['locality']))
- || (strlen($profile['region']))
- || (strlen($profile['postal-code']))
- || (strlen($profile['country-name']))) { ?>
- <div class="location">Location:
- <div class="adr">
- <div class="street-address"><?php if(strlen($profile['address'])) echo $profile['address']; ?></div>
- <span class="city-state-zip"><span class="locality"><?php echo $profile['locality']; ?></span><?php if(strlen($profile['locality'])) echo ', '; ?><span class="region"><?php echo $profile['region'] ?></span><?php if(strlen($profile['postal-code'])) { ?> <span class="postal-code"><?php echo $profile['postal-code']; ?></span><?php } ?></span>
- <span class="country-name"><?php echo $profile['country-name']; ?></span>
- </div>
- </div>
-
- <?php } ?>
-
- <?php if(strlen($profile['gender'])) { ?>
- <div class="mf">Gender: <span class="x-gender"><?php echo $profile['gender']; ?></span></div>
-
- <?php } ?>
-
- <?php if(strlen($profile['pubkey'])) { ?>
- <div class="key" style="display: none;"><?php echo $profile['pubkey']; ?></div>
- <?php } ?>
-</div>
-<?php } ?>
-<?php if(strlen($profile['marital'])) { ?>
-<div class="marital"><span class="marital-label"><span class="heart">&hearts;</span> Status: </span><span class="marital-text"><?php echo $profile['marital']; ?></span></div>
-<?php } ?>
-<?php if(strlen($profile['homepage'])) { ?>
-<div class="homepage"><span class="homepage-label">Homepage: </span><span class="homepage-url"><?php echo linkify($profile['homepage']); ?></span></div>
-<?php } ?>
-<?php if(x($page,'aside')) echo $page['aside'] ?>
-</aside>
-<section>
-<?php if(x($page,'content')) echo $page['content']; ?>
-<div id="page-footer"></div>
-</section>
-<footer>
-<?php if(x($page,'footer')) echo $page['footer']; ?>
-</footer>
-</body>
-</html>
-
diff --git a/view/it/profile_edit.tpl b/view/it/profile_edit.tpl
deleted file mode 100644
index efdb5d448..000000000
--- a/view/it/profile_edit.tpl
+++ /dev/null
@@ -1,293 +0,0 @@
-<h1>Modifica i dettagli del profilo</h1>
-
-<div id="profile-edit-links">
-<ul>
-<li><a href="profile/$profile_id/view?tab=profile" id="profile-edit-view-link" title="View this profile">Guarda questo profilo</a></li>
-<li><a href="profiles/clone/$profile_id" id="profile-edit-clone-link" title="Create a new profile using these settings">Clona questo profilo</a></li>
-<li></li>
-<li><a href="profiles/drop/$profile_id" id="profile-edit-drop-link" title="Delete this profile" $disabled >Elimina questo profilo</a></li>
-
-</ul>
-</div>
-
-<div id="profile-edit-links-end"></div>
-
-$default
-
-<div id="profile-edit-wrapper" >
-<form id="profile-edit-form" name="form1" action="profiles/$profile_id" method="post" >
-
-<div id="profile-edit-profile-name-wrapper" >
-<label id="profile-edit-profile-name-label" for="profile-edit-profile-name" >Nome profilo: </label>
-<input type="text" size="32" name="profile_name" id="profile-edit-profile-name" value="$profile_name" /><div class="required">*</div>
-</div>
-<div id="profile-edit-profile-name-end"></div>
-
-<div id="profile-edit-name-wrapper" >
-<label id="profile-edit-name-label" for="profile-edit-name" >Il tuo nome completo: </label>
-<input type="text" size="32" name="name" id="profile-edit-name" value="$name" />
-</div>
-<div id="profile-edit-name-end"></div>
-
-<div id="profile-edit-pdesc-wrapper" >
-<label id="profile-edit-pdesc-label" for="profile-edit-pdesc" >Breve descrizione: </label>
-<input type="text" size="32" name="pdesc" id="profile-edit-pdesc" value="$pdesc" />
-</div><div id="profile-edit-pdesc-desc">(es. titolo, posizione, altro)</div>
-<div id="profile-edit-pdesc-end"></div>
-
-
-<div id="profile-edit-gender-wrapper" >
-<label id="profile-edit-gender-label" for="gender-select" >Il tuo sesso: </label>
-$gender
-</div>
-<div id="profile-edit-gender-end"></div>
-
-<div id="profile-edit-dob-wrapper" >
-<label id="profile-edit-dob-label" for="dob-select" >Data di nascia (a/m/g): </label>
-<div id="profile-edit-dob" >
-$dob $age
-</div>
-</div>
-<div id="profile-edit-dob-end"></div>
-
-$hide_friends
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Aggiorna" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
-<div id="profile-edit-address-wrapper" >
-<label id="profile-edit-address-label" for="profile-edit-address" >Indirizzo: </label>
-<input type="text" size="32" name="address" id="profile-edit-address" value="$address" />
-</div>
-<div id="profile-edit-address-end"></div>
-
-<div id="profile-edit-locality-wrapper" >
-<label id="profile-edit-locality-label" for="profile-edit-locality" >Localit&agrave;/Citt&agrave;: </label>
-<input type="text" size="32" name="locality" id="profile-edit-locality" value="$locality" />
-</div>
-<div id="profile-edit-locality-end"></div>
-
-
-<div id="profile-edit-postal-code-wrapper" >
-<label id="profile-edit-postal-code-label" for="profile-edit-postal-code" >CAP: </label>
-<input type="text" size="32" name="postal_code" id="profile-edit-postal-code" value="$postal_code" />
-</div>
-<div id="profile-edit-postal-code-end"></div>
-
-<div id="profile-edit-country-name-wrapper" >
-<label id="profile-edit-country-name-label" for="profile-edit-country-name" >Stato: </label>
-<select name="country_name" id="profile-edit-country-name" onChange="Fill_States('$region');">
-<option selected="selected" >$country_name</option>
-<option>temp</option>
-</select>
-</div>
-<div id="profile-edit-country-name-end"></div>
-
-<div id="profile-edit-region-wrapper" >
-<label id="profile-edit-region-label" for="profile-edit-region" >Regione: </label>
-<select name="region" id="profile-edit-region" onChange="Update_Globals();" >
-<option selected="selected" >$region</option>
-<option>temp</option>
-</select>
-</div>
-<div id="profile-edit-region-end"></div>
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Aggiorna" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-<div id="profile-edit-marital-wrapper" >
-<label id="profile-edit-marital-label" for="profile-edit-marital" ><span class="heart">&hearts;</span>Stato sentimentale: </label>
-$marital
-</div>
-<label id="profile-edit-with-label" for="profile-edit-with" > Con chi: </label>
-<input type="text" size="32" name="with" id="profile-edit-with" value="$with" />
-<div id="profile-edit-marital-end"></div>
-
-<div id="profile-edit-sexual-wrapper" >
-<label id="profile-edit-sexual-label" for="sexual-select" >Preferenza sessuale: </label>
-$sexual
-</div>
-<div id="profile-edit-sexual-end"></div>
-
-
-
-<div id="profile-edit-homepage-wrapper" >
-<label id="profile-edit-homepage-label" for="profile-edit-homepage" >Indirizzo homepage: </label>
-<input type="text" size="32" name="homepage" id="profile-edit-homepage" value="$homepage" />
-</div>
-<div id="profile-edit-homepage-end"></div>
-
-<div id="profile-edit-politic-wrapper" >
-<label id="profile-edit-politic-label" for="profile-edit-politic" >Orientamento politico: </label>
-<input type="text" size="32" name="politic" id="profile-edit-politic" value="$politic" />
-</div>
-<div id="profile-edit-politic-end"></div>
-
-<div id="profile-edit-religion-wrapper" >
-<label id="profile-edit-religion-label" for="profile-edit-religion" >Religione: </label>
-<input type="text" size="32" name="religion" id="profile-edit-religion" value="$religion" />
-</div>
-<div id="profile-edit-religion-end"></div>
-
-<div id="profile-edit-keywords-wrapper" >
-<label id="profile-edit-keywords-label" for="profile-edit-keywords" >Parole chiave: </label>
-<input type="text" size="32" name="keywords" id="profile-edit-keywords" title="Esempio: pescare fotografia software" value="$keywords" />
-</div><div id="profile-edit-keywords-desc">(Usati per la ricerca dei profili pubblci, mai mostrati agli altri)</div>
-<div id="profile-edit-keywords-end"></div>
-
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Aggiorna" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-<div id="about-jot-wrapper" >
-<p id="about-jot-desc" >
-Raccontaci di te....
-</p>
-
-<textarea rows="10" cols="72" id="profile-jot-text" name="about" >$about</textarea>
-
-</div>
-<div id="about-jot-end"></div>
-</div>
-
-
-<div id="interest-jot-wrapper" >
-<p id="interest-jot-desc" >
-Hobbie/Interessi
-</p>
-
-<textarea rows="10" cols="72" id="interest-jot-text" name="interest" >$interest</textarea>
-
-</div>
-<div id="interest-jot-end"></div>
-</div>
-
-
-<div id="contact-jot-wrapper" >
-<p id="contact-jot-desc" >
-Informazioni su contatti e Social network
-</p>
-
-<textarea rows="10" cols="72" id="contact-jot-text" name="contact" >$contact</textarea>
-
-</div>
-<div id="contact-jot-end"></div>
-</div>
-
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Aggiorna" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
-<div id="music-jot-wrapper" >
-<p id="music-jot-desc" >
-Interessi musicali
-</p>
-
-<textarea rows="10" cols="72" id="music-jot-text" name="music" >$music</textarea>
-
-</div>
-<div id="music-jot-end"></div>
-</div>
-
-<div id="book-jot-wrapper" >
-<p id="book-jot-desc" >
-Libri, letteratura
-</p>
-
-<textarea rows="10" cols="72" id="book-jot-text" name="book" >$book</textarea>
-
-</div>
-<div id="book-jot-end"></div>
-</div>
-
-
-
-<div id="tv-jot-wrapper" >
-<p id="tv-jot-desc" >
-Televisione
-</p>
-
-<textarea rows="10" cols="72" id="tv-jot-text" name="tv" >$tv</textarea>
-
-</div>
-<div id="tv-jot-end"></div>
-</div>
-
-
-
-<div id="film-jot-wrapper" >
-<p id="film-jot-desc" >
-Film/danza/cultura/intrattenimento
-</p>
-
-<textarea rows="10" cols="72" id="film-jot-text" name="film" >$film</textarea>
-
-</div>
-<div id="film-jot-end"></div>
-</div>
-
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Aggiorna" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
-<div id="romance-jot-wrapper" >
-<p id="romance-jot-desc" >
-Amore/romanticismo
-</p>
-
-<textarea rows="10" cols="72" id="romance-jot-text" name="romance" >$romance</textarea>
-
-</div>
-<div id="romance-jot-end"></div>
-</div>
-
-
-
-<div id="work-jot-wrapper" >
-<p id="work-jot-desc" >
-Lavoro/impiego
-</p>
-
-<textarea rows="10" cols="72" id="work-jot-text" name="work" >$work</textarea>
-
-</div>
-<div id="work-jot-end"></div>
-</div>
-
-
-
-<div id="education-jot-wrapper" >
-<p id="education-jot-desc" >
-Scuola/educazione
-</p>
-
-<textarea rows="10" cols="72" id="education-jot-text" name="education" >$education</textarea>
-
-</div>
-<div id="education-jot-end"></div>
-</div>
-
-
-
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Aggiorna" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
-</form>
-</div>
-<script type="text/javascript">Fill_Country('$country_name');Fill_States('$region');</script>
diff --git a/view/it/profile_entry_default.tpl b/view/it/profile_entry_default.tpl
deleted file mode 100644
index 8c9aedae8..000000000
--- a/view/it/profile_entry_default.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-
-<div class="profile-listing" >
-<div class="profile-listing-photo-wrapper" >
-<a href="profiles/$id" class="profile-listing-edit-link" ><img class="profile-listing-photo" id="profile-listing-photo-$id" src="$photo" alt="Immagine Profilo" /></a>
-</div>
-<div class="profile-listing-photo-end" ></div>
-<div class="profile-listing-name" id="profile-listing-name-$id"><a href="profiles/$id" class="profile-listing-edit-link" >$profile_name</a></div>
-</div>
-<div class="profile-listing-end"></div>
diff --git a/view/it/profile_listing_header.tpl b/view/it/profile_listing_header.tpl
deleted file mode 100644
index 995a577b3..000000000
--- a/view/it/profile_listing_header.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<h1>Profiles</h1>
-<p id="profile-listing-desc" >
-<a href="profile_photo" >Cambia la foto del profilo</a>
-</p>
-<div id="profile-listing-new-link-wrapper" >
-<a href="profiles/new" id="profile-listing-new-link" name="Create New Profile" >Crea un nuovo profilo</a>
-</div>
-
diff --git a/view/it/profile_photo.tpl b/view/it/profile_photo.tpl
deleted file mode 100644
index 4d77e87cf..000000000
--- a/view/it/profile_photo.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<h1>Carica foto del profilo</h1>
-
-<form enctype="multipart/form-data" action="profile_photo" method="post">
-
-<div id="profile-photo-upload-wrapper">
-<label id="profile-photo-upload-label" for="profile-photo-upload">Carica File: </label>
-<input name="userfile" type="file" id="profile-photo-upload" size="48" />
-</div>
-
-<div id="profile-photo-submit-wrapper">
-<input type="submit" name="submit" id="profile-photo-submit" value="Carica">
-</div>
-
-</form>
-
-<div id="profile-photo-link-select-wrapper">
-o <a href='photos/$user'>seleziona una foto da un album</a>
-</div> \ No newline at end of file
diff --git a/view/it/profile_tabs.tpl b/view/it/profile_tabs.tpl
deleted file mode 100644
index 9c0f27d62..000000000
--- a/view/it/profile_tabs.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-
-<div id="profile-tabs-wrapper" >
- <a href="$url" id="profile-tab-status-link" class="profile-tabs" >Stato</a>
- <a href="$url?tab=profile" id="profile-tab-profile-link" class="profile-tabs" >Profilo</a>
- <a href="$phototab" id="profile-tab-photos-link" class="profile-tabs" >Foto</a>
-<div id="profile-tabs-end"></div>
-</div>
diff --git a/view/it/pwdreset.tpl b/view/it/pwdreset.tpl
deleted file mode 100644
index c283033ee..000000000
--- a/view/it/pwdreset.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<h3>Resetta Password</h3>
-
-<p>
-La tua password &egrave; stata resettata come richiesto.
-</p>
-<p>
-La tua nuova password &egrave;
-</p>
-<p>
-$newpass
-</p>
-<p>
-Salva o copia la tua nuova password, e quindi <a href="$baseurl" >clicca qui per accedere</a>.
-</p>
-<p>
-La tua password puo' essere cambiata dalla pagina 'Impostazioni0 dopo aver effettuato l'accesso.
diff --git a/view/it/registrations-top.tpl b/view/it/registrations-top.tpl
deleted file mode 100644
index 8134aa210..000000000
--- a/view/it/registrations-top.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<h1>Registrazioni in attesa di conferma</h1>
-
-
diff --git a/view/it/registrations.tpl b/view/it/registrations.tpl
deleted file mode 100644
index 698c766f7..000000000
--- a/view/it/registrations.tpl
+++ /dev/null
@@ -1 +0,0 @@
-<li>$fullname ($email) : <a href="$approvelink">Approva</a> - <a href="$denylink">Rifiuta</a></li>
diff --git a/view/it/settings.tpl b/view/it/settings.tpl
deleted file mode 100644
index 3b68923cf..000000000
--- a/view/it/settings.tpl
+++ /dev/null
@@ -1,164 +0,0 @@
-<h1>Impostazioni account</h1>
-
-<div id="plugin-settings-link"><a href="settings/addon">Impostazioni Plugin</a></div>
-
-
-$nickname_block
-
-
-<form action="settings" id="settings-form" method="post" autocomplete="off" >
-
-
-<h3 class="settings-heading">Impostazioni base</h3>
-
-<div id="settings-username-wrapper" >
-<label id="settings-username-label" for="settings-username" >Nome Completo: </label>
-<input type="text" name="username" id="settings-username" value="$username" />
-</div>
-<div id="settings-username-end" ></div>
-
-<div id="settings-email-wrapper" >
-<label id="settings-email-label" for="settings-email" >Indirizzo Email: </label>
-<input type="text" name="email" id="settings-email" value="$email" />
-</div>
-<div id="settings-email-end" ></div>
-
-
-
-<div id="settings-timezone-wrapper" >
-<label id="settings-timezone-label" for="timezone_select" >Il tuo fuso orario: </label>
-$zoneselect
-</div>
-<div id="settings-timezone-end" ></div>
-
-<div id="settings-defloc-wrapper" >
-<label id="settings-defloc-label" for="settings-defloc" >Localit&agrave; di default per l'invio: </label>
-<input type="text" name="defloc" id="settings-defloc" value="$defloc" />
-</div>
-<div id="settings-defloc-end" ></div>
-
-<div id="settings-allowloc-wrapper" >
-<label id="settings-allowloc-label" for="settings-allowloc" >Usa la localit&agrave; rilevata dal browser: </label>
-<input type="checkbox" name="allow_location" id="settings-allowloc" value="1" $loc_checked />
-</div>
-<div id="settings-allowloc-end" ></div>
-
-
-
-
-<div id="settings-theme-select">
-<label id="settings-theme-label" for="theme-select" >Tema: </label>
-$theme
-</div>
-<div id="settings-theme-end"></div>
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Aggiorna" />
-</div>
-
-
-<h3 class="settings-heading">Impostazioni si Sicurezza e Privacy</h3>
-
-
-<input type="hidden" name="visibility" value="$visibility" />
-
-<div id="settings-maxreq-wrapper">
-<label id="settings-maxreq-label" for="settings-maxreq" >Numero massimo di richieste di amicizia per giorno</label>
-<input id="settings-maxreq" name="maxreq" value="$maxreq" />
-<div id="settings-maxreq-desc">(per prevenire lo spam)</div>
-</div>
-<div id="settings-maxreq-end"></div>
-
-
-
-
-$profile_in_dir
-
-$profile_in_net_dir
-
-
-
-<div id="settings-default-perms" class="settings-default-perms" >
- <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >&#x21e9; $permissions</div>
- <div id="settings-default-perms-menu-end"></div>
-
- <div id="settings-default-perms-select" style="display: none;" >
-
- $aclselect
-
- </div>
-</div>
-<div id="settings-default-perms-end"></div>
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Aggiorna" />
-</div>
-
-
-
-<h3 class="settings-heading">Impostazione Notifiche</h3>
-
-
-<div id="settings-notify-wrapper">
-<div id="settings-notify-desc">Invia una mail di notifica quando: </div>
-<label for="notify1" id="settings-label-notify1">Ricevi una presentazione</label>
-<input id="notify1" type="checkbox" $sel_notify1 name="notify1" value="1" />
-<div id="notify1-end"></div>
-<label for="notify2" id="settings-label-notify2">Le tue presentazioni sono confermate</label>
-<input id="notify2" type="checkbox" $sel_notify2 name="notify2" value="2" />
-<div id="notify2-end"></div>
-<label for="notify3" id="settings-label-notify3">Qualcuno scrive sulla bacheca del tuo profilo</label>
-<input id="notify3" type="checkbox" $sel_notify3 name="notify3" value="4" />
-<div id="notify3-end"></div>
-<label for="notify4" id="settings-label-notify4">Qualcuno scrive un commento a un tuo messaggio</label>
-<input id="notify4" type="checkbox" $sel_notify4 name="notify4" value="8" />
-<div id="notify4-end"></div>
-<label for="notify5" id="settings-label-notify5">Ricevi un messaggio privato</label>
-<input id="notify5" type="checkbox" $sel_notify5 name="notify5" value="16" />
-<div id="notify5-end"></div>
-</div>
-<div id="settings=notify-end"></div>
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Aggiorna" />
-</div>
-
-
-<h3 class="settings-heading">Impostazioni Password</h3>
-
-
-<div id="settings-password-wrapper" >
-<p id="settings-password-desc" >
-Lascia questi campi in bianco per non effettuare variazioni alla password
-</p>
-<label id="settings-password-label" for="settings-password" >Nuova Password: </label>
-<input type="password" id="settings-password" name="npassword" />
-</div>
-<div id="settings-password-end" ></div>
-
-<div id="settings-confirm-wrapper" >
-<label id="settings-confirm-label" for="settings-confirm" >Conferma: </label>
-<input type="password" id="settings-confirm" name="confirm" />
-</div>
-<div id="settings-confirm-end" ></div>
-
-<div id="settings-openid-wrapper" >
- $oidhtml
-</div>
-<div id="settings-openid-end" ></div>
-
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Aggiorna" />
-</div>
-
-
-<h3 class="settings-heading">Impostazioni Avanzate Account</h3>
-
-$pagetype
-
-<div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Aggiorna" />
-</div>
-
-
diff --git a/view/it/settings_nick_set.tpl b/view/it/settings_nick_set.tpl
deleted file mode 100644
index c57653703..000000000
--- a/view/it/settings_nick_set.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-
-<div id="settings-nick-wrapper" >
-<p id="settings-nickname-desc">
-<span class="error-message">L'indirizzo del tuo profilo &egrave; <strong>'$nickname@$basepath'</strong></span>
-</p>
-$subdir
-
-</div>
-<div id="settings-nick-end" ></div>
diff --git a/view/it/settings_nick_subdir.tpl b/view/it/settings_nick_subdir.tpl
deleted file mode 100644
index fc6138c6c..000000000
--- a/view/it/settings_nick_subdir.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<p>
-Sembra che il tuo sito web sia in una sottocartella del sito<br />
-$hostname. Qualche impostazione potrebbe non funzionare correttamente.<br />
-</p>
-<p>
-Se hai problemi, potresti avere migliori risultati usando l'inidirizzo<br /> '<strong>$baseurl/profile/$nickname</strong>'.
-</p>
diff --git a/view/it/settings_nick_unset.tpl b/view/it/settings_nick_unset.tpl
deleted file mode 100644
index 8f4cba475..000000000
--- a/view/it/settings_nick_unset.tpl
+++ /dev/null
@@ -1,15 +0,0 @@
-
-<div id="settings-nick-wrapper" >
-<p id="settings-nickname-desc">
-L'URL del tuo profilo &egrave; <strong>'$baseurl/profile/$uid'</strong>.
-Impostare un soprannome permetter&agrave; di avere un URL più aimchevole, come
-<strong>'soprannome@$basepath'</strong>.
-<br />
-Una volta impostato, non potr&agreve; pi&ugrave; essere cambiato. Il soprannome <strong>deve</strong>
-cominciare con una lettera; nel soprannome sono permessi solo lettere, numeri, trattini (-) e underscore (_).
-</p>
-<label id="settings-nick-label" for="settings-nick" >Soprannome: </label>
-<input type="text" name="nick" id="settings-nick" value="$nickname" />
-</div>
-<div id="settings-nick-end" ></div>
-
diff --git a/view/it/strings.php b/view/it/strings.php
index 437d6e7c6..de67aad4d 100644
--- a/view/it/strings.php
+++ b/view/it/strings.php
@@ -1,1102 +1,817 @@
<?php
-$a->strings['Not Found'] = 'Non Trovato';
-$a->strings['Page not found.'] = 'Pagina non trovata.';
-$a->strings['Permission denied'] = 'Permesso negato';
-$a->strings['Permission denied.'] = 'Permesso negato.';
-$a->strings['Nickname or Email address: '] = 'Soprannome o indirizzo Email: ';
-$a->strings['Welcome to '] = 'Benvenuto a ';
-$a->strings['Password: '] = 'Password: ';
-$a->strings['Login'] = 'Accedi';
-$a->strings['Nickname/Email/OpenID: '] = 'Soprannome/Email/OpenID: ';
-$a->strings['Password (if not OpenID): '] = 'Password (se non OpenID): ';
-$a->strings['Forgot your password?'] = 'Dimenticata la pssword?';
-$a->strings['Password Reset'] = 'Resetta password';
-$a->strings['prev'] = 'prec';
-$a->strings['first'] = 'primo';
-$a->strings['last'] = 'ultimo';
-$a->strings['next'] = 'succ';
-$a->strings[' likes this.'] = ' apprezza questo.';
-$a->strings[' doesn\'t like this.'] = ' non apprezza questo.';
-$a->strings['people'] = 'persone';
-$a->strings['like this.'] = 'apprezza questo.';
-$a->strings['don\'t like this.'] = 'non apprezza questo.';
-$a->strings['and'] = 'e';
-$a->strings[', and '] = ', e ';
-$a->strings[' other people'] = ' altre persone';
-$a->strings[' like this.'] = ' apprezza questo.';
-$a->strings[' don\'t like this.'] = ' non apprezza questo.';
-$a->strings['No contacts'] = 'Nessun contatto';
-$a->strings['Contacts'] = 'Contatti';
-$a->strings['View Contacts'] = 'Guarda contatti';
-$a->strings['Search'] = 'Cerca';
-$a->strings['No profile'] = 'Nessun profilo';
-$a->strings['Connect'] = 'Connetti';
-$a->strings['Location:'] = 'Posizione:';
-$a->strings[', '] = ', ';
-$a->strings['Gender:'] = 'Genere:';
-$a->strings['Status:'] = 'Stato:';
-$a->strings['Homepage:'] = 'Homepage:';
-$a->strings['Invite Friends'] = 'Invita Amici';
-$a->strings['Connect/Follow [profile address]'] = 'Connetti/Segui [indirizzo profilo]';
-$a->strings['Example: bob@example.com, http://example.com/barbara'] = 'Esempio: bob@example.com, http://example.com/barbara';
-$a->strings['Follow'] = 'Segui';
-$a->strings['Could not access contact record.'] = 'Non si puo\' accedere al contatto.';
-$a->strings['Could not locate selected profile.'] = 'Non riesco a trovare il profilo selezionato.';
-$a->strings['Contact updated.'] = 'Contatto aggiornato.';
-$a->strings['Failed to update contact record.'] = 'Errore aggiornando il contatto.';
-$a->strings['Contact has been '] = 'Il contatto è stato ';
-$a->strings['blocked'] = 'bloccato';
-$a->strings['unblocked'] = 'sbloccato';
-$a->strings['ignored'] = 'aggiunto ai contatti ignorati';
-$a->strings['unignored'] = 'rimosso dai contatti ignorati';
-$a->strings['stopped following'] = 'tolto dai seguiti';
-$a->strings['Contact has been removed.'] = 'Il contatto è stato rimosso.';
-$a->strings['Contact not found.'] = 'Contatto non trovato.';
-$a->strings['Mutual Friendship'] = 'Reciproca amicizia';
-$a->strings['is a fan of yours'] = 'è un tuo fan';
-$a->strings['you are a fan of'] = 'sei un fan di';
-$a->strings['Contact Editor'] = 'Editor dei Contatti';
-$a->strings['Visit $name\'s profile'] = 'Visita il profilo di $name';
-$a->strings['Block/Unblock contact'] = 'Blocca/Sblocca contatto';
-$a->strings['Ignore contact'] = 'Ingnora il contatto';
-$a->strings['Delete contact'] = 'Rimuovi contatto';
-$a->strings['Last updated: '] = 'Ultimo aggiornameto: ';
-$a->strings['Update public posts: '] = 'Aggiorna messaggi pubblici: ';
-$a->strings['Never'] = 'Mai';
-$a->strings['Unblock this contact'] = 'Sblocca questo contatto';
-$a->strings['Block this contact'] = 'Blocca questo contatto';
-$a->strings['Unignore this contact'] = 'Rimuovi dai contatti ingorati';
-$a->strings['Ignore this contact'] = 'Aggiungi ai contatti ignorati';
-$a->strings['Currently blocked'] = 'Bloccato';
-$a->strings['Currently ignored'] = 'Ignorato';
-$a->strings['Show Blocked Connections'] = 'Mostra connessioni bloccate';
-$a->strings['Hide Blocked Connections'] = 'Nascondi connessioni bloccate';
-$a->strings['Finding: '] = 'Cerco: ';
-$a->strings['Find'] = 'Trova';
-$a->strings['Visit '] = 'Visita ';
-$a->strings['\'s profile'] = 'profilo';
-$a->strings['Edit contact'] = 'Modifca contatto';
-$a->strings['Profile not found.'] = 'Profilo non trovato.';
-$a->strings['Response from remote site was not understood.'] = 'La risposta dal sito remota non è stata capita.';
-$a->strings['Unexpected response from remote site: '] = 'Risposta dal sito remoto inaspettata: ';
-$a->strings['Confirmation completed successfully.'] = 'Conferma completata con successo.';
-$a->strings['Remote site reported: '] = 'Il sito remoto riporta: ';
-$a->strings['Temporary failure. Please wait and try again.'] = 'Errore temporaneo. Attendi e riprova.';
-$a->strings['Introduction failed or was revoked.'] = 'La presentazione è fallita o è stata revocata.';
-$a->strings['Unable to set contact photo.'] = 'Impossibile impostare la foto del contatto.';
-$a->strings['is now friends with'] = 'ora è amico di';
-$a->strings['No user record found for '] = 'Nessun utente trovato per ';
-$a->strings['Our site encryption key is apparently messed up.'] = 'La nostra chiave di criptazione del sito è apparentemente incasinata.';
-$a->strings['Empty site URL was provided or URL could not be decrypted by us.'] = 'E\' stato fornito un indirizzo vuoto o non possiamo decriptare l\'indirizzo.';
-$a->strings['Contact record was not found for you on our site.'] = 'Il contatto non è stato trovato sul nostro sito.';
-$a->strings['The ID provided by your system is a duplicate on our system. It should work if you try again.'] = 'L\'ID fornito dal tuo sistema è duplicato sul nostro sistema. Dovrebbe funzionare se provi ancora.';
-$a->strings['Unable to set your contact credentials on our system.'] = 'Impossibile impostare le credenziali del tuo contatto sul nostro sistema.';
-$a->strings['Unable to update your contact profile details on our system'] = 'Impossibile aggiornare i dettagli del tuo contatto sul nostro sistema';
-$a->strings['Connection accepted at '] = 'Connessione accettata su ';
-$a->strings['Administrator'] = 'Amministratore';
-$a->strings['New mail received at '] = 'Nuova mail ricevuta su ';
-$a->strings[' commented on an item at '] = ' commentato un elemento su ';
-$a->strings[' welcomes '] = ' accoglie ';
-$a->strings['This introduction has already been accepted.'] = 'Questa presentazione è già stata accettata.';
-$a->strings['Profile location is not valid or does not contain profile information.'] = 'La posizione del profilo non è valida o non contiene informazioni di profilo.';
-$a->strings['Warning: profile location has no identifiable owner name.'] = 'Attenzione: la posizione del profilo non ha un identificabile proprietario';
-$a->strings['Warning: profile location has no profile photo.'] = 'Attenzione: la posizione del profilo non ha una foto.';
-$a->strings[' required parameter'] = ' parametro richiesto';
-$a->strings[' was '] = ' era ';
-$a->strings['s were '] = ' dove ';
-$a->strings['not found at the given location.'] = 'non trovato alla posizione data.';
-$a->strings['Introduction complete.'] = 'Presentazione completa.';
-$a->strings['Unrecoverable protocol error.'] = 'Errore di protocollo non recuperabile.';
-$a->strings['Profile unavailable.'] = 'Profilo non disponibile.';
-$a->strings['has received too many connection requests today.'] = 'ha ricevuto troppe connessioni oggi.';
-$a->strings['Spam protection measures have been invoked.'] = 'Sono state attivate le misure di protezione contro lo spam.';
-$a->strings['Friends are advised to please try again in 24 hours.'] = 'Gli amici sono pregati di riprovare tra 24 ore.';
-$a->strings['Invalid locator'] = 'Invalid locator';
-$a->strings['Unable to resolve your name at the provided location.'] = 'Impossibile risolvere il tuo nome nella posizione indicata.';
-$a->strings['You have already introduced yourself here.'] = 'Ti sei già presentato qui.';
-$a->strings['Apparently you are already friends with .'] = 'Apparentemente sei già amico con .';
-$a->strings['Invalid profile URL.'] = 'Indirizzo profilo invalido.';
-$a->strings['Disallowed profile URL.'] = 'Indirizzo profilo non permesso.';
-$a->strings['Your introduction has been sent.'] = 'La tua presentazione è stata inviata.';
-$a->strings['Please login to confirm introduction.'] = 'Accedi per confermare la presentazione.';
-$a->strings['Incorrect identity currently logged in. Please login to <strong>this</strong> profile.'] = 'Accesso con identà incorretta. Accedi a <strong>questo</strong> profilo.';
-$a->strings['[Name Withheld]'] = '[Nome Nascosto]';
-$a->strings['Friend/Connection Request'] = 'Richieste di Amicizia/Connessione';
-$a->strings['Please answer the following:'] = 'Rispondi al seguente:';
-$a->strings['Does $name know you?'] = '$name ti conosce?';
-$a->strings['Yes'] = 'Si';
-$a->strings['No'] = 'No';
-$a->strings['Add a personal note:'] = 'Aggiungi una nota personale:';
-$a->strings['Please enter your profile address from one of the following supported social networks:'] = 'Inserisci l\'indirizzo del tue profilo da uno dei seguenti supportati seocial network:';
-$a->strings['Friendika'] = 'Friendika';
-$a->strings['StatusNet/Federated Social Web'] = 'StatusNet/Federated Social Web';
-$a->strings['Private (secure) network'] = 'Network (sicuro) privato';
-$a->strings['Public (insecure) network'] = 'Network (insicuro) pubblico';
-$a->strings['Your profile address:'] = 'L\'indirizzo del tuo profilo:';
-$a->strings['Submit Request'] = 'Invia richiesta';
-$a->strings['Cancel'] = 'Annulla';
-$a->strings['Global Directory'] = 'Elenco Globale';
-$a->strings['Item not found.'] = 'Elemento non trovato.';
-$a->strings['Private Message'] = 'Messaggio privato';
-$a->strings["I like this \x28toggle\x29"] = "Mi piace questo \x28metti/togli\x29";
-$a->strings["I don't like this \x28toggle\x29"] = "Non mi piace questo \x28metti/togli\x29";
-$a->strings['This is you'] = 'Questo sei tu';
-$a->strings['View $name\'s profile'] = 'Guarda il profilo di $name';
-$a->strings['View $owner_name\'s profile'] = 'Guarda il profilo di $owner_name';
-$a->strings['to'] = 'a';
-$a->strings['Wall-to-Wall'] = 'Bacheca-A-Bacheca';
-$a->strings['via Wall-To-Wall:'] = 'via Bacheca-A-Bacheca';
-$a->strings['Item has been removed.'] = 'L\'elemento è stato rimosso.';
-$a->strings['The profile address specified does not provide adequate information.'] = 'L\'indirizzo del profilo specificato non fornisce adeguate informazioni';
-$a->strings['Limited profile. This person will be unable to receive direct/personal notifications from you.'] = 'Profilo limitato. Questa persona non sara\' in grado di ricevere nofiche dirette/personali da te.';
-$a->strings['Unable to retrieve contact information.'] = 'Impossibile recuperare informazioni sul contatto.';
-$a->strings['following'] = 'segue';
-$a->strings['Group created.'] = 'Gruppo creato.';
-$a->strings['Could not create group.'] = 'Impossibile creare il gruppo.';
-$a->strings['Group not found.'] = 'Gruppo non trovato.';
-$a->strings['Group name changed.'] = 'Il nome del gruppo è cambiato.';
-$a->strings['Membership list updated.'] = 'Lista adesioni aggiornata.';
-$a->strings['Group removed.'] = 'Gruppo rimosso.';
-$a->strings['Unable to remove group.'] = 'Impossibile rimuovere il gruppo.';
-$a->strings['Delete'] = 'Cancella';
-$a->strings['Could not create/connect to database.'] = 'Impossibile creare/collegarsi al database.';
-$a->strings['Connected to database.'] = 'Collegato al database.';
-$a->strings['Database import succeeded.'] = 'Importazione database completata.';
-$a->strings['IMPORTANT: You will need to [manually] setup a scheduled task for the poller.'] = 'IMPORTANTE: Devi impostare manualmente un operazione pianificata per il poller';
-$a->strings['Please see the file "INSTALL.txt".'] = 'Guarda il file \"INSTALL.txt\".';
-$a->strings['Database import failed.'] = 'Importazione database fallita.';
-$a->strings['You may need to import the file "database.sql" manually using phpmyadmin or mysql.'] = 'Potresti dover importare il file \"database.sql\" manualmente con phpmyadmin o mysql';
-$a->strings['Welcome to Friendika.'] = 'Benvenuto su Friendika.';
-$a->strings['Submit'] = 'Invia';
-$a->strings['Could not find a command line version of PHP in the web server PATH.'] = 'Non riesco a trovare una versione da riga di comando di PHP nel PATH del server web';
-$a->strings['This is required. Please adjust the configuration file .htconfig.php accordingly.'] = 'E\' richiesto. Aggiorna il file .htconfig.php di conseguenza.';
-$a->strings['The command line version of PHP on your system does not have "register_argc_argv" enabled.'] = 'La versione da riga di comando di PHP nel sistema non ha abilitato \"register_argc_argv\".';
-$a->strings['This is required for message delivery to work.'] = 'Ciò è richiesto per far funzionare la consegna dei messaggi.';
-$a->strings['Error: the "openssl_pkey_new" function on this system is not able to generate encryption keys'] = 'Errore: la funzione \"openssl_pkey_new\" in questo sistema non è in grado di generare le chiavi di criptazione';
-$a->strings['If running under Windows, please see "http://www.php.net/manual/en/openssl.installation.php".'] = 'Se stai eseguendo friendika su windows, guarda \"http://www.php.net/manual/en/openssl.installation.php\".';
-$a->strings['Error: Apache webserver mod-rewrite module is required but not installed.'] = 'Errore: il modulo mod-rewrite di Apache &egreve; richiesto ma non installato';
-$a->strings['Error: libCURL PHP module required but not installed.'] = 'Errore: il modulo libCURL di PHP è richiesto ma non installato.';
-$a->strings['Error: GD graphics PHP module with JPEG support required but not installed.'] = 'Errore: Il modulo GD graphics di PHP con supporto a JPEG è richiesto ma non installato.';
-$a->strings['Error: openssl PHP module required but not installed.'] = 'Errore: il modulo openssl di PHP è richiesto ma non installato.';
-$a->strings['Error: mysqli PHP module required but not installed.'] = 'Errore: il modulo mysqli di PHP è richiesto ma non installato';
-$a->strings['The web installer needs to be able to create a file called ".htconfig.php" in the top folder of your web server and it is unable to do so.'] = 'L\'installazione web deve poter creare un file chiamato \".htconfig.php\" nella cartella principale del tuo web server ma non è in grado di farlo.';
-$a->strings['This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can.'] = 'Ciò è dovuto spesso a impostazioni di permessi, dato che il web server puo\' scrivere il file nella tua cartella, anche se tu puoi.';
-$a->strings['Please check with your site documentation or support people to see if this situation can be corrected.'] = 'Controlla la documentazione del tuo sito o con il personale di suporto se la situazione puo\' essere corretta.';
-$a->strings['If not, you may be required to perform a manual installation. Please see the file "INSTALL.txt" for instructions.'] = 'Altrimenti dovrai procedere con l\'installazione manuale. Guarda il file \"INSTALL.txt\" per istuzioni';
-$a->strings['The database configuration file ".htconfig.php" could not be written. Please use the enclosed text to create a configuration file in your web server root.'] = 'Il file di configurazione del database \".htconfig.php\" non puo\' essere scritto. Usa il testo qui di seguito per creare un file di configurazione nella cartella principale del tuo sito.';
-$a->strings['Errors encountered creating database tables.'] = 'Errori creando le tabelle nel database.';
-$a->strings[' : '] = ' : ';
-$a->strings['Not a valid email address.'] = 'Indirizzo email invaildo.';
-$a->strings['Please join my network on '] = 'Unisciti alla mia rete su ';
-$a->strings['Message delivery failed.'] = 'Consegna del messaggio fallita.';
-$a->strings[' messages sent.'] = ' messaggio inviato.';
-$a->strings['Send invitations'] = 'Invia inviti';
-$a->strings['Enter email addresses, one per line:'] = 'Inserisci gli indirizzi email, uno per riga:';
-$a->strings['Your message:'] = 'Il tuo messaggio:';
-$a->strings['Please join my social network on '] = 'Unisciti al mio social network su ';
-$a->strings['To accept this invitation, please visit:'] = 'Per accettare questo invito visita:';
-$a->strings['Once you have registered, please connect with me via my profile page at:'] = 'Una volta registrato, connettiti con me sul mio profilo a:';
-$a->strings['Unable to locate original post.'] = 'Impossibile trovare il messaggio originale.';
-$a->strings['Empty post discarded.'] = 'Messaggio vuoto scartato.';
-$a->strings[' commented on your item at '] = ' ha commentato il tuo elemento su ';
-$a->strings[' posted on your profile wall at '] = ' ha inviato un messaggio sulla tua bachecha su ';
-$a->strings['Facebook status update failed.'] = 'Aggiornamento stato Facebook fallito.';
-$a->strings['photo'] = 'foto';
-$a->strings['status'] = 'stato';
-$a->strings['likes'] = 'apprezza';
-$a->strings['doesn\'t like'] = 'non apprezza';
-$a->strings['\'s'] = '\'s';
-$a->strings['Remote privacy information not available.'] = 'Informazioni remote sulla privacy non disponibili.';
-$a->strings['Visible to:'] = 'Visibile a:';
-$a->strings['Password reset requested at '] = 'Richiesta di resettare la password su ';
-$a->strings['No recipient selected.'] = 'Nessun destinatario selezionato.';
-$a->strings['[no subject]'] = '[nessun oggetto]';
-$a->strings['Unable to locate contact information.'] = 'Impossibile trovare le informazioni del contatto.';
-$a->strings['Message sent.'] = 'Messaggio inviato.';
-$a->strings['Message could not be sent.'] = 'Il messaggio non puo\' essere inviato.';
-$a->strings['Messages'] = 'Messaggi';
-$a->strings['Inbox'] = 'In arrivo';
-$a->strings['Outbox'] = 'Inviati';
-$a->strings['New Message'] = 'Nuovo messaggio';
-$a->strings['Message deleted.'] = 'Messaggio cancellato.';
-$a->strings['Conversation removed.'] = 'Conversazione rimossa.';
-$a->strings['Send Private Message'] = 'Invia messaggio privato';
-$a->strings['To:'] = 'A:';
-$a->strings['Subject:'] = 'Oggetto:';
-$a->strings['Upload photo'] = 'Carica foto';
-$a->strings['Insert web link'] = 'Inserisci link';
-$a->strings['Please wait'] = 'Attendi';
-$a->strings['No messages.'] = 'Nessun messaggio.';
-$a->strings['Delete conversation'] = 'Cancella conversazione';
-$a->strings['Message not available.'] = 'Messaggio non disponibile.';
-$a->strings['Delete message'] = 'Cancella messaggio';
-$a->strings['Send Reply'] = 'Invia risposta';
-$a->strings['No such group'] = 'Nessun gruppo';
-$a->strings['Group is empty'] = 'Il gruppo è vuoto';
-$a->strings['Group: '] = 'Gruppo: ';
-$a->strings['Invalid request identifier.'] = 'Identificativo richiesta invalido.';
-$a->strings['Discard'] = 'Scarta';
-$a->strings['Ignore'] = 'Ignora';
-$a->strings['Show Ignored Requests'] = 'Mostra richieste ignorate';
-$a->strings['Hide Ignored Requests'] = 'Nascondi richieste ignorate';
-$a->strings['Claims to be known to you: '] = 'Dice di conoscerti: ';
-$a->strings['yes'] = 'si';
-$a->strings['no'] = 'no';
-$a->strings['Approve as: '] = 'Approva come: ';
-$a->strings['Friend'] = 'Amico';
-$a->strings['Fan/Admirer'] = 'Fan/Admiratore';
-$a->strings['Notification type: '] = 'Tipo di notifica: ';
-$a->strings['Friend/Connect Request'] = 'Richiesta Amicizia/Connessione';
-$a->strings['New Follower'] = 'Nuovo Seguace';
-$a->strings['Approve'] = 'Approva';
-$a->strings['No notifications.'] = 'Nessuna notifica.';
-$a->strings['No registrations.'] = 'Nessuna registrazione.';
-$a->strings['Login failed.'] = 'Accesso fallito.';
-$a->strings['Welcome back '] = 'Bentornato ';
-$a->strings['Photo Albums'] = 'Album Foto';
-$a->strings['Contact Photos'] = 'Foto contatti';
-$a->strings['Contact information unavailable'] = 'Informazione sul contatto non disponibile';
-$a->strings['Profile Photos'] = 'Foto del profilo';
-$a->strings['Album not found.'] = 'Album non trovato.';
-$a->strings['Delete Album'] = 'Elimina album';
-$a->strings['Delete Photo'] = 'Elimina foto';
-$a->strings['was tagged in a'] = 'è stato taggato in';
-$a->strings['by'] = 'da';
-$a->strings['Image exceeds size limit of '] = 'L\'immagine supera il limite di dimensione di ';
-$a->strings['Unable to process image.'] = 'Impossibile elaborare l\'immagine.';
-$a->strings['Image upload failed.'] = 'Caricamento immagine fallito.';
-$a->strings['No photos selected'] = 'Nessuna foto selezionata';
-$a->strings['Upload Photos'] = 'Carica foto';
-$a->strings['New album name: '] = 'Nome nuovo album: ';
-$a->strings['or existing album name: '] = 'o nome di un album esistente: ';
-$a->strings['Select files to upload: '] = 'Seleziona i file da caricare: ';
-$a->strings['Permissions'] = 'Permessi';
-$a->strings['Use the following controls only if the Java uploader [above] fails to launch.'] = 'Usa il seguente controllo solo se il il caricatore Java (qui sopra) non parte.';
-$a->strings['Edit Album'] = 'Modifica album';
-$a->strings['View Photo'] = 'Vedi foto';
-$a->strings['Photo not available'] = 'Foto non disponibile';
-$a->strings['Edit photo'] = 'Modifica foto';
-$a->strings['View Full Size'] = 'Vedi dimensione intera';
-$a->strings['Tags: '] = 'Tag: ';
-$a->strings['[Remove any tag]'] = '[Rimuovi tutti i tag]';
-$a->strings['New album name'] = 'Nuovo nome album';
-$a->strings['Caption'] = 'Didascalia';
-$a->strings['Add a Tag'] = 'Aggiungi un tag';
-$a->strings['Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'] = 'Esempio: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping';
-$a->strings['Recent Photos'] = 'Foto recenti';
-$a->strings['Upload New Photos'] = 'Carica nuova foto';
-$a->strings['View Album'] = 'Vedi album';
-$a->strings['Image uploaded but image cropping failed.'] = 'Immagine caricata ma il ritaglio è fallito.';
-$a->strings['Image size reduction [175] failed.'] = 'Riduzione dimensioni immagine [175] fallito.';
-$a->strings['Image size reduction [80] failed.'] = 'Riduzione dimensioni immagine [80] fallito.';
-$a->strings['Image size reduction [48] failed.'] = 'Riduzione dimensioni immagine [48] fallito.';
-$a->strings['Unable to process image'] = 'Impossibile elaborare l\'immagine';
-$a->strings['Image uploaded successfully.'] = 'Immagine caricata con successo.';
-$a->strings['Image size reduction [640] failed.'] = 'Riduzione dimensioni immagine [640] fallito.';
-$a->strings['Profile Name is required.'] = 'Il Nome Profilo è richiesto .';
-$a->strings['Profile updated.'] = 'Profilo aggiornato.';
-$a->strings['Profile deleted.'] = 'Profilo elminato.';
-$a->strings['Profile-'] = 'Profilo-';
-$a->strings['New profile created.'] = 'Nuovo profilo creato.';
-$a->strings['Profile unavailable to clone.'] = 'Impossibile duplicare il plrofilo.';
-$a->strings['This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet.'] = 'Questo è il tuo profilo <strong>publico</strong>.<br /><strong>Potrebbe</strong> essere visto da chiunque attraverso internet.';
-$a->strings['Age: '] = 'Età : ';
-$a->strings['Please enter the required information.'] = 'Inserisci le informazioni richieste.';
-$a->strings['Please use a shorter name.'] = 'Usa un nome più corto.';
-$a->strings['Name too short.'] = 'Il Nome è troppo corto.';
-$a->strings['That doesn\'t appear to be your full (First Last) name.'] = 'Questo non sembra essere il tuo nome completo (Nome Cognome).';
-$a->strings['Your email domain is not among those allowed on this site.'] = 'Il dominio della tua email non è tra quelli autorizzati su questo sito.';
-$a->strings['Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.'] = 'Il tuo \"soprannome\" puo\' contenere solo \"a-z\", \"0-9\", \"-\", e \"_\", e deve cominciare con una lettera.';
-$a->strings['Nickname is already registered. Please choose another.'] = 'Soprannome già registrato. Scegline un\'altro.';
-$a->strings['SERIOUS ERROR: Generation of security keys failed.'] = 'ERRORE GRAVE: Generazione delle chiavi di sicurezza fallito.';
-$a->strings['An error occurred during registration. Please try again.'] = 'Si è verificato un errore durante la registrazione. Prova ancora.';
-$a->strings['An error occurred creating your default profile. Please try again.'] = 'Si è verificato un errore creando il tuo profilo. Prova ancora.';
-$a->strings['Registration details for '] = 'Dettagli registrazione per ';
-$a->strings['Registration successful. Please check your email for further instructions.'] = 'Registrazione completata. Controlla la tua mail per ulteriori informazioni.';
-$a->strings['Failed to send email message. Here is the message that failed.'] = 'Errore inviando il messaggio email. Questo è il messaggio non inviato.';
-$a->strings['Your registration can not be processed.'] = 'La tua registrazione non puo\' essere elaborata.';
-$a->strings['Registration request at '] = 'Registrazione richiesta il ';
-$a->strings['Your registration is pending approval by the site owner.'] = 'La tua richiesta è in attesa di approvazione da parte del prorietario del sito.';
-$a->strings['You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking \'Register\'.'] = 'Puoi (opzionalmento) riempire questa maschera via OpenID inserendo il tuo OpenID e cliccando \'Registra\'.';
-$a->strings['If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'] = 'Se non hai familiarità con OpenID, lascia quel campo in bianco e riempi il resto della maschera.';
-$a->strings['Your OpenID (optional): '] = 'Il tuo OpenID (opzionale): ';
-$a->strings['Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.'] = 'Il contenuto in comune è coperto dalla licenza <a href=\"http://creativecommons.org/licenses/by/3.0/deed.it\">Creative Commons Attribuzione 3.0</a>.';
-$a->strings['Registration'] = 'Registrazione';
-$a->strings['Your Full Name (e.g. Joe Smith): '] = 'Il tuo Nome Completo (p.e. Mario Rossi): ';
-$a->strings['Your Email Address: '] = 'Il tuo Indirizzo Email: ';
-$a->strings['Choose a profile nickname. This must begin with a text character. Your global profile locator will then be \'<strong>nickname@$sitename</strong>\'.'] = 'Scegli un soprannome per il profilo. Deve cominciare con una lettera. L\'identificativo globale del tuo profilo sarà \'<strong>soprannome@$sitename</strong>\'.';
-$a->strings['Choose a nickname: '] = 'Scegli un soprannome: ';
-$a->strings['Register'] = 'Regitrati';
-$a->strings['Please login.'] = 'Accedi.';
-$a->strings['Registration revoked for '] = 'Registrazione revocata per ';
-$a->strings['Account approved.'] = 'Account approvato.';
-$a->strings['View in context'] = 'Vedi nel contesto';
-$a->strings['Passwords do not match. Password unchanged.'] = 'Le password non corrispondono. Passoword non cambiata.';
-$a->strings['Empty passwords are not allowed. Password unchanged.'] = 'Password vuote non sono consentite. Password non cambiata.';
-$a->strings['Password changed.'] = 'Password cambiata.';
-$a->strings['Password update failed. Please try again.'] = 'Aggiornamento password fallito. Prova ancora.';
-$a->strings[' Please use a shorter name.'] = ' Usa un nome più corto.';
-$a->strings[' Name too short.'] = ' Nome troppo corto.';
-$a->strings[' Not valid email.'] = ' Email non valida.';
-$a->strings['Settings updated.'] = 'Impostazioni aggiornate.';
-$a->strings['Plugin Settings'] = 'Impostazioni Plugin';
-$a->strings['Account Settings'] = 'Impostazioni Account';
-$a->strings['No Plugin settings configured'] = 'Nessuna impostazione Plugin configurata';
-$a->strings['OpenID: '] = 'OpenID: ';
-$a->strings['&nbsp;(Optional) Allow this OpenID to login to this account.'] = ' (Opzionale) Permetti a questo OpenID di accedere a questo account.';
-$a->strings['Profile is <strong>not published</strong>.'] = 'Il profilo <strong>non è pubblicato</strong>.';
-$a->strings['Default Post Permissions'] = 'Permessi di default per i messaggi';
-$a->strings['Tag removed'] = 'TAg rimosso';
-$a->strings['Remove Item Tag'] = 'Rimuovi tag dall\'elemento';
-$a->strings['Select a tag to remove: '] = 'Seleziona un tag da rimuovere: ';
-$a->strings['Remove'] = 'Rimuovi';
-$a->strings['No contacts.'] = 'Nessuno contatto.';
-$a->strings['Wall Photos'] = 'Wall Photos';
-$a->strings['Visible To:'] = 'Visibile a:';
-$a->strings['Groups'] = 'Gruppi';
-$a->strings['Except For:'] = 'Eccetto per:';
-$a->strings['Logged out.'] = 'Sei uscito.';
-$a->strings['Unknown | Not categorised'] = 'Sconosciuto | non categorizzato';
-$a->strings['Block immediately'] = 'Blocca immediatamente';
-$a->strings['Shady, spammer, self-marketer'] = 'Shady, spammer, self-marketer';
-$a->strings['Known to me, but no opinion'] = 'Lo conosco, ma non ho oppinioni';
-$a->strings['OK, probably harmless'] = 'E\' ok, probabilmente innocuo';
-$a->strings['Reputable, has my trust'] = 'Rispettabile, ha la mia fiducia';
-$a->strings['Frequently'] = 'Frequentemente';
-$a->strings['Hourly'] = 'Ogni ora';
-$a->strings['Twice daily'] = 'Due volte al dì';
-$a->strings['Daily'] = 'Giornalmente';
-$a->strings['Weekly'] = 'Settimanalmente';
-$a->strings['Monthly'] = 'Mensilmente';
-$a->strings['Miscellaneous'] = 'Varie';
-$a->strings['less than a second ago'] = 'meno di un secondo fa';
-$a->strings['year'] = 'anno';
-$a->strings['years'] = 'anni';
-$a->strings['month'] = 'mese';
-$a->strings['months'] = 'mesi';
-$a->strings['week'] = 'settimana';
-$a->strings['weeks'] = 'settimane';
-$a->strings['day'] = 'giorno';
-$a->strings['days'] = 'giorni';
-$a->strings['hour'] = 'ora';
-$a->strings['hours'] = 'ore';
-$a->strings['minute'] = 'minuto';
-$a->strings['minutes'] = 'minuti';
-$a->strings['second'] = 'secondo';
-$a->strings['seconds'] = 'secondi';
-$a->strings[' ago'] = ' fa';
-$a->strings['Create a new group'] = 'Crea un nuovo gruppo';
-$a->strings['Everybody'] = 'Tutti';
-$a->strings['Logout'] = 'Esci';
-$a->strings['Home'] = 'Home';
-$a->strings['Directory'] = 'Elenco';
-$a->strings['Network'] = 'Rete';
-$a->strings['Notifications'] = 'Notifiche';
-$a->strings['Settings'] = 'Impostazioni';
-$a->strings['Profiles'] = 'Profili';
-$a->strings['Male'] = 'Maschio';
-$a->strings['Female'] = 'Femmina';
-$a->strings['Currently Male'] = 'Al momento maschio';
-$a->strings['Currently Female'] = 'Al momento femmina';
-$a->strings['Mostly Male'] = 'Prevalentemente maschio';
-$a->strings['Mostly Female'] = 'Prevalentemente femmina';
-$a->strings['Transgender'] = 'Transgenere';
-$a->strings['Intersex'] = 'Bisessuale';
-$a->strings['Transsexual'] = 'Transsessuale';
-$a->strings['Hermaphrodite'] = 'Ermafrodito';
-$a->strings['Neuter'] = 'Neutro';
-$a->strings['Non-specific'] = 'Non-specifico';
-$a->strings['Other'] = 'Altro';
-$a->strings['Undecided'] = 'Indeciso';
-$a->strings['Males'] = 'Maschi';
-$a->strings['Females'] = 'Femmine';
-$a->strings['Gay'] = 'Gay';
-$a->strings['Lesbian'] = 'Lesbica';
-$a->strings['No Preference'] = 'Nessuna preferenza';
-$a->strings['Bisexual'] = 'Bisessuale';
-$a->strings['Autosexual'] = 'Autosessuale';
-$a->strings['Abstinent'] = 'Astinente';
-$a->strings['Virgin'] = 'Vergine';
-$a->strings['Deviant'] = 'Deviato';
-$a->strings['Fetish'] = 'Fetish';
-$a->strings['Oodles'] = 'Un sacco';
-$a->strings['Nonsexual'] = 'Asessuato';
-$a->strings['Single'] = 'Single';
-$a->strings['Lonely'] = 'Solitario';
-$a->strings['Available'] = 'Disoponibile';
-$a->strings['Unavailable'] = 'Non disponibile';
-$a->strings['Dating'] = 'Incontro';
-$a->strings['Unfaithful'] = 'Infedele';
-$a->strings['Sex Addict'] = 'Sesso-dipendente';
-$a->strings['Friends'] = 'Amici';
-$a->strings['Friends/Benefits'] = 'Amici con benefici';
-$a->strings['Casual'] = 'Casual';
-$a->strings['Engaged'] = 'Impegnato';
-$a->strings['Married'] = 'Sposato';
-$a->strings['Partners'] = 'Partners';
-$a->strings['Cohabiting'] = 'Coinquilino';
-$a->strings['Happy'] = 'Felice';
-$a->strings['Not Looking'] = 'Non in cerca';
-$a->strings['Swinger'] = 'Scambista';
-$a->strings['Betrayed'] = 'Tradito';
-$a->strings['Separated'] = 'Separato';
-$a->strings['Unstable'] = 'Instabile';
-$a->strings['Divorced'] = 'Divorziato';
-$a->strings['Widowed'] = 'Vedovo';
-$a->strings['Uncertain'] = 'Incerto';
-$a->strings['Complicated'] = 'Complicato';
-$a->strings['Don\'t care'] = 'Non interessa';
-$a->strings['Ask me'] = 'Chiedimelo';
-$a->strings['Africa/Abidjan'] = 'Africa/Abidjan';
-$a->strings['Africa/Accra'] = 'Africa/Accra';
-$a->strings['Africa/Addis_Ababa'] = 'Africa/Addis_Ababa';
-$a->strings['Africa/Algiers'] = 'Africa/Algiers';
-$a->strings['Africa/Asmara'] = 'Africa/Asmara';
-$a->strings['Africa/Asmera'] = 'Africa/Asmera';
-$a->strings['Africa/Bamako'] = 'Africa/Bamako';
-$a->strings['Africa/Bangui'] = 'Africa/Bangui';
-$a->strings['Africa/Banjul'] = 'Africa/Banjul';
-$a->strings['Africa/Bissau'] = 'Africa/Bissau';
-$a->strings['Africa/Blantyre'] = 'Africa/Blantyre';
-$a->strings['Africa/Brazzaville'] = 'Africa/Brazzaville';
-$a->strings['Africa/Bujumbura'] = 'Africa/Bujumbura';
-$a->strings['Africa/Cairo'] = 'Africa/Cairo';
-$a->strings['Africa/Casablanca'] = 'Africa/Casablanca';
-$a->strings['Africa/Ceuta'] = 'Africa/Ceuta';
-$a->strings['Africa/Conakry'] = 'Africa/Conakry';
-$a->strings['Africa/Dakar'] = 'Africa/Dakar';
-$a->strings['Africa/Dar_es_Salaam'] = 'Africa/Dar_es_Salaam';
-$a->strings['Africa/Djibouti'] = 'Africa/Djibouti';
-$a->strings['Africa/Douala'] = 'Africa/Douala';
-$a->strings['Africa/El_Aaiun'] = 'Africa/El_Aaiun';
-$a->strings['Africa/Freetown'] = 'Africa/Freetown';
-$a->strings['Africa/Gaborone'] = 'Africa/Gaborone';
-$a->strings['Africa/Harare'] = 'Africa/Harare';
-$a->strings['Africa/Johannesburg'] = 'Africa/Johannesburg';
-$a->strings['Africa/Kampala'] = 'Africa/Kampala';
-$a->strings['Africa/Khartoum'] = 'Africa/Khartoum';
-$a->strings['Africa/Kigali'] = 'Africa/Kigali';
-$a->strings['Africa/Kinshasa'] = 'Africa/Kinshasa';
-$a->strings['Africa/Lagos'] = 'Africa/Lagos';
-$a->strings['Africa/Libreville'] = 'Africa/Libreville';
-$a->strings['Africa/Lome'] = 'Africa/Lome';
-$a->strings['Africa/Luanda'] = 'Africa/Luanda';
-$a->strings['Africa/Lubumbashi'] = 'Africa/Lubumbashi';
-$a->strings['Africa/Lusaka'] = 'Africa/Lusaka';
-$a->strings['Africa/Malabo'] = 'Africa/Malabo';
-$a->strings['Africa/Maputo'] = 'Africa/Maputo';
-$a->strings['Africa/Maseru'] = 'Africa/Maseru';
-$a->strings['Africa/Mbabane'] = 'Africa/Mbabane';
-$a->strings['Africa/Mogadishu'] = 'Africa/Mogadishu';
-$a->strings['Africa/Monrovia'] = 'Africa/Monrovia';
-$a->strings['Africa/Nairobi'] = 'Africa/Nairobi';
-$a->strings['Africa/Ndjamena'] = 'Africa/Ndjamena';
-$a->strings['Africa/Niamey'] = 'Africa/Niamey';
-$a->strings['Africa/Nouakchott'] = 'Africa/Nouakchott';
-$a->strings['Africa/Ouagadougou'] = 'Africa/Ouagadougou';
-$a->strings['Africa/Porto-Novo'] = 'Africa/Porto-Novo';
-$a->strings['Africa/Sao_Tome'] = 'Africa/Sao_Tome';
-$a->strings['Africa/Timbuktu'] = 'Africa/Timbuktu';
-$a->strings['Africa/Tripoli'] = 'Africa/Tripoli';
-$a->strings['Africa/Tunis'] = 'Africa/Tunis';
-$a->strings['Africa/Windhoek'] = 'Africa/Windhoek';
-$a->strings['America/Adak'] = 'America/Adak';
-$a->strings['America/Anchorage'] = 'America/Anchorage';
-$a->strings['America/Anguilla'] = 'America/Anguilla';
-$a->strings['America/Antigua'] = 'America/Antigua';
-$a->strings['America/Araguaina'] = 'America/Araguaina';
-$a->strings['America/Argentina/Buenos_Aires'] = 'America/Argentina/Buenos_Aires';
-$a->strings['America/Argentina/Catamarca'] = 'America/Argentina/Catamarca';
-$a->strings['America/Argentina/ComodRivadavia'] = 'America/Argentina/ComodRivadavia';
-$a->strings['America/Argentina/Cordoba'] = 'America/Argentina/Cordoba';
-$a->strings['America/Argentina/Jujuy'] = 'America/Argentina/Jujuy';
-$a->strings['America/Argentina/La_Rioja'] = 'America/Argentina/La_Rioja';
-$a->strings['America/Argentina/Mendoza'] = 'America/Argentina/Mendoza';
-$a->strings['America/Argentina/Rio_Gallegos'] = 'America/Argentina/Rio_Gallegos';
-$a->strings['America/Argentina/Salta'] = 'America/Argentina/Salta';
-$a->strings['America/Argentina/San_Juan'] = 'America/Argentina/San_Juan';
-$a->strings['America/Argentina/San_Luis'] = 'America/Argentina/San_Luis';
-$a->strings['America/Argentina/Tucuman'] = 'America/Argentina/Tucuman';
-$a->strings['America/Argentina/Ushuaia'] = 'America/Argentina/Ushuaia';
-$a->strings['America/Aruba'] = 'America/Aruba';
-$a->strings['America/Asuncion'] = 'America/Asuncion';
-$a->strings['America/Atikokan'] = 'America/Atikokan';
-$a->strings['America/Atka'] = 'America/Atka';
-$a->strings['America/Bahia'] = 'America/Bahia';
-$a->strings['America/Barbados'] = 'America/Barbados';
-$a->strings['America/Belem'] = 'America/Belem';
-$a->strings['America/Belize'] = 'America/Belize';
-$a->strings['America/Blanc-Sablon'] = 'America/Blanc-Sablon';
-$a->strings['America/Boa_Vista'] = 'America/Boa_Vista';
-$a->strings['America/Bogota'] = 'America/Bogota';
-$a->strings['America/Boise'] = 'America/Boise';
-$a->strings['America/Buenos_Aires'] = 'America/Buenos_Aires';
-$a->strings['America/Cambridge_Bay'] = 'America/Cambridge_Bay';
-$a->strings['America/Campo_Grande'] = 'America/Campo_Grande';
-$a->strings['America/Cancun'] = 'America/Cancun';
-$a->strings['America/Caracas'] = 'America/Caracas';
-$a->strings['America/Catamarca'] = 'America/Catamarca';
-$a->strings['America/Cayenne'] = 'America/Cayenne';
-$a->strings['America/Cayman'] = 'America/Cayman';
-$a->strings['America/Chicago'] = 'America/Chicago';
-$a->strings['America/Chihuahua'] = 'America/Chihuahua';
-$a->strings['America/Coral_Harbour'] = 'America/Coral_Harbour';
-$a->strings['America/Cordoba'] = 'America/Cordoba';
-$a->strings['America/Costa_Rica'] = 'America/Costa_Rica';
-$a->strings['America/Cuiaba'] = 'America/Cuiaba';
-$a->strings['America/Curacao'] = 'America/Curacao';
-$a->strings['America/Danmarkshavn'] = 'America/Danmarkshavn';
-$a->strings['America/Dawson'] = 'America/Dawson';
-$a->strings['America/Dawson_Creek'] = 'America/Dawson_Creek';
-$a->strings['America/Denver'] = 'America/Denver';
-$a->strings['America/Detroit'] = 'America/Detroit';
-$a->strings['America/Dominica'] = 'America/Dominica';
-$a->strings['America/Edmonton'] = 'America/Edmonton';
-$a->strings['America/Eirunepe'] = 'America/Eirunepe';
-$a->strings['America/El_Salvador'] = 'America/El_Salvador';
-$a->strings['America/Ensenada'] = 'America/Ensenada';
-$a->strings['America/Fort_Wayne'] = 'America/Fort_Wayne';
-$a->strings['America/Fortaleza'] = 'America/Fortaleza';
-$a->strings['America/Glace_Bay'] = 'America/Glace_Bay';
-$a->strings['America/Godthab'] = 'America/Godthab';
-$a->strings['America/Goose_Bay'] = 'America/Goose_Bay';
-$a->strings['America/Grand_Turk'] = 'America/Grand_Turk';
-$a->strings['America/Grenada'] = 'America/Grenada';
-$a->strings['America/Guadeloupe'] = 'America/Guadeloupe';
-$a->strings['America/Guatemala'] = 'America/Guatemala';
-$a->strings['America/Guayaquil'] = 'America/Guayaquil';
-$a->strings['America/Guyana'] = 'America/Guyana';
-$a->strings['America/Halifax'] = 'America/Halifax';
-$a->strings['America/Havana'] = 'America/Havana';
-$a->strings['America/Hermosillo'] = 'America/Hermosillo';
-$a->strings['America/Indiana/Indianapolis'] = 'America/Indiana/Indianapolis';
-$a->strings['America/Indiana/Knox'] = 'America/Indiana/Knox';
-$a->strings['America/Indiana/Marengo'] = 'America/Indiana/Marengo';
-$a->strings['America/Indiana/Petersburg'] = 'America/Indiana/Petersburg';
-$a->strings['America/Indiana/Tell_City'] = 'America/Indiana/Tell_City';
-$a->strings['America/Indiana/Vevay'] = 'America/Indiana/Vevay';
-$a->strings['America/Indiana/Vincennes'] = 'America/Indiana/Vincennes';
-$a->strings['America/Indiana/Winamac'] = 'America/Indiana/Winamac';
-$a->strings['America/Indianapolis'] = 'America/Indianapolis';
-$a->strings['America/Inuvik'] = 'America/Inuvik';
-$a->strings['America/Iqaluit'] = 'America/Iqaluit';
-$a->strings['America/Jamaica'] = 'America/Jamaica';
-$a->strings['America/Jujuy'] = 'America/Jujuy';
-$a->strings['America/Juneau'] = 'America/Juneau';
-$a->strings['America/Kentucky/Louisville'] = 'America/Kentucky/Louisville';
-$a->strings['America/Kentucky/Monticello'] = 'America/Kentucky/Monticello';
-$a->strings['America/Knox_IN'] = 'America/Knox_IN';
-$a->strings['America/La_Paz'] = 'America/La_Paz';
-$a->strings['America/Lima'] = 'America/Lima';
-$a->strings['America/Los_Angeles'] = 'America/Los_Angeles';
-$a->strings['America/Louisville'] = 'America/Louisville';
-$a->strings['America/Maceio'] = 'America/Maceio';
-$a->strings['America/Managua'] = 'America/Managua';
-$a->strings['America/Manaus'] = 'America/Manaus';
-$a->strings['America/Marigot'] = 'America/Marigot';
-$a->strings['America/Martinique'] = 'America/Martinique';
-$a->strings['America/Matamoros'] = 'America/Matamoros';
-$a->strings['America/Mazatlan'] = 'America/Mazatlan';
-$a->strings['America/Mendoza'] = 'America/Mendoza';
-$a->strings['America/Menominee'] = 'America/Menominee';
-$a->strings['America/Merida'] = 'America/Merida';
-$a->strings['America/Mexico_City'] = 'America/Mexico_City';
-$a->strings['America/Miquelon'] = 'America/Miquelon';
-$a->strings['America/Moncton'] = 'America/Moncton';
-$a->strings['America/Monterrey'] = 'America/Monterrey';
-$a->strings['America/Montevideo'] = 'America/Montevideo';
-$a->strings['America/Montreal'] = 'America/Montreal';
-$a->strings['America/Montserrat'] = 'America/Montserrat';
-$a->strings['America/Nassau'] = 'America/Nassau';
-$a->strings['America/New_York'] = 'America/New_York';
-$a->strings['America/Nipigon'] = 'America/Nipigon';
-$a->strings['America/Nome'] = 'America/Nome';
-$a->strings['America/Noronha'] = 'America/Noronha';
-$a->strings['America/North_Dakota/Center'] = 'America/North_Dakota/Center';
-$a->strings['America/North_Dakota/New_Salem'] = 'America/North_Dakota/New_Salem';
-$a->strings['America/Ojinaga'] = 'America/Ojinaga';
-$a->strings['America/Panama'] = 'America/Panama';
-$a->strings['America/Pangnirtung'] = 'America/Pangnirtung';
-$a->strings['America/Paramaribo'] = 'America/Paramaribo';
-$a->strings['America/Phoenix'] = 'America/Phoenix';
-$a->strings['America/Port-au-Prince'] = 'America/Port-au-Prince';
-$a->strings['America/Port_of_Spain'] = 'America/Port_of_Spain';
-$a->strings['America/Porto_Acre'] = 'America/Porto_Acre';
-$a->strings['America/Porto_Velho'] = 'America/Porto_Velho';
-$a->strings['America/Puerto_Rico'] = 'America/Puerto_Rico';
-$a->strings['America/Rainy_River'] = 'America/Rainy_River';
-$a->strings['America/Rankin_Inlet'] = 'America/Rankin_Inlet';
-$a->strings['America/Recife'] = 'America/Recife';
-$a->strings['America/Regina'] = 'America/Regina';
-$a->strings['America/Resolute'] = 'America/Resolute';
-$a->strings['America/Rio_Branco'] = 'America/Rio_Branco';
-$a->strings['America/Rosario'] = 'America/Rosario';
-$a->strings['America/Santa_Isabel'] = 'America/Santa_Isabel';
-$a->strings['America/Santarem'] = 'America/Santarem';
-$a->strings['America/Santiago'] = 'America/Santiago';
-$a->strings['America/Santo_Domingo'] = 'America/Santo_Domingo';
-$a->strings['America/Sao_Paulo'] = 'America/Sao_Paulo';
-$a->strings['America/Scoresbysund'] = 'America/Scoresbysund';
-$a->strings['America/Shiprock'] = 'America/Shiprock';
-$a->strings['America/St_Barthelemy'] = 'America/St_Barthelemy';
-$a->strings['America/St_Johns'] = 'America/St_Johns';
-$a->strings['America/St_Kitts'] = 'America/St_Kitts';
-$a->strings['America/St_Lucia'] = 'America/St_Lucia';
-$a->strings['America/St_Thomas'] = 'America/St_Thomas';
-$a->strings['America/St_Vincent'] = 'America/St_Vincent';
-$a->strings['America/Swift_Current'] = 'America/Swift_Current';
-$a->strings['America/Tegucigalpa'] = 'America/Tegucigalpa';
-$a->strings['America/Thule'] = 'America/Thule';
-$a->strings['America/Thunder_Bay'] = 'America/Thunder_Bay';
-$a->strings['America/Tijuana'] = 'America/Tijuana';
-$a->strings['America/Toronto'] = 'America/Toronto';
-$a->strings['America/Tortola'] = 'America/Tortola';
-$a->strings['America/Vancouver'] = 'America/Vancouver';
-$a->strings['America/Virgin'] = 'America/Virgin';
-$a->strings['America/Whitehorse'] = 'America/Whitehorse';
-$a->strings['America/Winnipeg'] = 'America/Winnipeg';
-$a->strings['America/Yakutat'] = 'America/Yakutat';
-$a->strings['America/Yellowknife'] = 'America/Yellowknife';
-$a->strings['Antarctica/Casey'] = 'Antarctica/Casey';
-$a->strings['Antarctica/Davis'] = 'Antarctica/Davis';
-$a->strings['Antarctica/DumontDUrville'] = 'Antarctica/DumontDUrville';
-$a->strings['Antarctica/Macquarie'] = 'Antarctica/Macquarie';
-$a->strings['Antarctica/Mawson'] = 'Antarctica/Mawson';
-$a->strings['Antarctica/McMurdo'] = 'Antarctica/McMurdo';
-$a->strings['Antarctica/Palmer'] = 'Antarctica/Palmer';
-$a->strings['Antarctica/Rothera'] = 'Antarctica/Rothera';
-$a->strings['Antarctica/South_Pole'] = 'Antarctica/South_Pole';
-$a->strings['Antarctica/Syowa'] = 'Antarctica/Syowa';
-$a->strings['Antarctica/Vostok'] = 'Antarctica/Vostok';
-$a->strings['Arctic/Longyearbyen'] = 'Arctic/Longyearbyen';
-$a->strings['Asia/Aden'] = 'Asia/Aden';
-$a->strings['Asia/Almaty'] = 'Asia/Almaty';
-$a->strings['Asia/Amman'] = 'Asia/Amman';
-$a->strings['Asia/Anadyr'] = 'Asia/Anadyr';
-$a->strings['Asia/Aqtau'] = 'Asia/Aqtau';
-$a->strings['Asia/Aqtobe'] = 'Asia/Aqtobe';
-$a->strings['Asia/Ashgabat'] = 'Asia/Ashgabat';
-$a->strings['Asia/Ashkhabad'] = 'Asia/Ashkhabad';
-$a->strings['Asia/Baghdad'] = 'Asia/Baghdad';
-$a->strings['Asia/Bahrain'] = 'Asia/Bahrain';
-$a->strings['Asia/Baku'] = 'Asia/Baku';
-$a->strings['Asia/Bangkok'] = 'Asia/Bangkok';
-$a->strings['Asia/Beirut'] = 'Asia/Beirut';
-$a->strings['Asia/Bishkek'] = 'Asia/Bishkek';
-$a->strings['Asia/Brunei'] = 'Asia/Brunei';
-$a->strings['Asia/Calcutta'] = 'Asia/Calcutta';
-$a->strings['Asia/Choibalsan'] = 'Asia/Choibalsan';
-$a->strings['Asia/Chongqing'] = 'Asia/Chongqing';
-$a->strings['Asia/Chungking'] = 'Asia/Chungking';
-$a->strings['Asia/Colombo'] = 'Asia/Colombo';
-$a->strings['Asia/Dacca'] = 'Asia/Dacca';
-$a->strings['Asia/Damascus'] = 'Asia/Damascus';
-$a->strings['Asia/Dhaka'] = 'Asia/Dhaka';
-$a->strings['Asia/Dili'] = 'Asia/Dili';
-$a->strings['Asia/Dubai'] = 'Asia/Dubai';
-$a->strings['Asia/Dushanbe'] = 'Asia/Dushanbe';
-$a->strings['Asia/Gaza'] = 'Asia/Gaza';
-$a->strings['Asia/Harbin'] = 'Asia/Harbin';
-$a->strings['Asia/Ho_Chi_Minh'] = 'Asia/Ho_Chi_Minh';
-$a->strings['Asia/Hong_Kong'] = 'Asia/Hong_Kong';
-$a->strings['Asia/Hovd'] = 'Asia/Hovd';
-$a->strings['Asia/Irkutsk'] = 'Asia/Irkutsk';
-$a->strings['Asia/Istanbul'] = 'Asia/Istanbul';
-$a->strings['Asia/Jakarta'] = 'Asia/Jakarta';
-$a->strings['Asia/Jayapura'] = 'Asia/Jayapura';
-$a->strings['Asia/Jerusalem'] = 'Asia/Jerusalem';
-$a->strings['Asia/Kabul'] = 'Asia/Kabul';
-$a->strings['Asia/Kamchatka'] = 'Asia/Kamchatka';
-$a->strings['Asia/Karachi'] = 'Asia/Karachi';
-$a->strings['Asia/Kashgar'] = 'Asia/Kashgar';
-$a->strings['Asia/Kathmandu'] = 'Asia/Kathmandu';
-$a->strings['Asia/Katmandu'] = 'Asia/Katmandu';
-$a->strings['Asia/Kolkata'] = 'Asia/Kolkata';
-$a->strings['Asia/Krasnoyarsk'] = 'Asia/Krasnoyarsk';
-$a->strings['Asia/Kuala_Lumpur'] = 'Asia/Kuala_Lumpur';
-$a->strings['Asia/Kuching'] = 'Asia/Kuching';
-$a->strings['Asia/Kuwait'] = 'Asia/Kuwait';
-$a->strings['Asia/Macao'] = 'Asia/Macao';
-$a->strings['Asia/Macau'] = 'Asia/Macau';
-$a->strings['Asia/Magadan'] = 'Asia/Magadan';
-$a->strings['Asia/Makassar'] = 'Asia/Makassar';
-$a->strings['Asia/Manila'] = 'Asia/Manila';
-$a->strings['Asia/Muscat'] = 'Asia/Muscat';
-$a->strings['Asia/Nicosia'] = 'Asia/Nicosia';
-$a->strings['Asia/Novokuznetsk'] = 'Asia/Novokuznetsk';
-$a->strings['Asia/Novosibirsk'] = 'Asia/Novosibirsk';
-$a->strings['Asia/Omsk'] = 'Asia/Omsk';
-$a->strings['Asia/Oral'] = 'Asia/Oral';
-$a->strings['Asia/Phnom_Penh'] = 'Asia/Phnom_Penh';
-$a->strings['Asia/Pontianak'] = 'Asia/Pontianak';
-$a->strings['Asia/Pyongyang'] = 'Asia/Pyongyang';
-$a->strings['Asia/Qatar'] = 'Asia/Qatar';
-$a->strings['Asia/Qyzylorda'] = 'Asia/Qyzylorda';
-$a->strings['Asia/Rangoon'] = 'Asia/Rangoon';
-$a->strings['Asia/Riyadh'] = 'Asia/Riyadh';
-$a->strings['Asia/Saigon'] = 'Asia/Saigon';
-$a->strings['Asia/Sakhalin'] = 'Asia/Sakhalin';
-$a->strings['Asia/Samarkand'] = 'Asia/Samarkand';
-$a->strings['Asia/Seoul'] = 'Asia/Seoul';
-$a->strings['Asia/Shanghai'] = 'Asia/Shanghai';
-$a->strings['Asia/Singapore'] = 'Asia/Singapore';
-$a->strings['Asia/Taipei'] = 'Asia/Taipei';
-$a->strings['Asia/Tashkent'] = 'Asia/Tashkent';
-$a->strings['Asia/Tbilisi'] = 'Asia/Tbilisi';
-$a->strings['Asia/Tehran'] = 'Asia/Tehran';
-$a->strings['Asia/Tel_Aviv'] = 'Asia/Tel_Aviv';
-$a->strings['Asia/Thimbu'] = 'Asia/Thimbu';
-$a->strings['Asia/Thimphu'] = 'Asia/Thimphu';
-$a->strings['Asia/Tokyo'] = 'Asia/Tokyo';
-$a->strings['Asia/Ujung_Pandang'] = 'Asia/Ujung_Pandang';
-$a->strings['Asia/Ulaanbaatar'] = 'Asia/Ulaanbaatar';
-$a->strings['Asia/Ulan_Bator'] = 'Asia/Ulan_Bator';
-$a->strings['Asia/Urumqi'] = 'Asia/Urumqi';
-$a->strings['Asia/Vientiane'] = 'Asia/Vientiane';
-$a->strings['Asia/Vladivostok'] = 'Asia/Vladivostok';
-$a->strings['Asia/Yakutsk'] = 'Asia/Yakutsk';
-$a->strings['Asia/Yekaterinburg'] = 'Asia/Yekaterinburg';
-$a->strings['Asia/Yerevan'] = 'Asia/Yerevan';
-$a->strings['Atlantic/Azores'] = 'Atlantic/Azores';
-$a->strings['Atlantic/Bermuda'] = 'Atlantic/Bermuda';
-$a->strings['Atlantic/Canary'] = 'Atlantic/Canary';
-$a->strings['Atlantic/Cape_Verde'] = 'Atlantic/Cape_Verde';
-$a->strings['Atlantic/Faeroe'] = 'Atlantic/Faeroe';
-$a->strings['Atlantic/Faroe'] = 'Atlantic/Faroe';
-$a->strings['Atlantic/Jan_Mayen'] = 'Atlantic/Jan_Mayen';
-$a->strings['Atlantic/Madeira'] = 'Atlantic/Madeira';
-$a->strings['Atlantic/Reykjavik'] = 'Atlantic/Reykjavik';
-$a->strings['Atlantic/South_Georgia'] = 'Atlantic/South_Georgia';
-$a->strings['Atlantic/St_Helena'] = 'Atlantic/St_Helena';
-$a->strings['Atlantic/Stanley'] = 'Atlantic/Stanley';
-$a->strings['Australia/ACT'] = 'Australia/ACT';
-$a->strings['Australia/Adelaide'] = 'Australia/Adelaide';
-$a->strings['Australia/Brisbane'] = 'Australia/Brisbane';
-$a->strings['Australia/Broken_Hill'] = 'Australia/Broken_Hill';
-$a->strings['Australia/Canberra'] = 'Australia/Canberra';
-$a->strings['Australia/Currie'] = 'Australia/Currie';
-$a->strings['Australia/Darwin'] = 'Australia/Darwin';
-$a->strings['Australia/Eucla'] = 'Australia/Eucla';
-$a->strings['Australia/Hobart'] = 'Australia/Hobart';
-$a->strings['Australia/LHI'] = 'Australia/LHI';
-$a->strings['Australia/Lindeman'] = 'Australia/Lindeman';
-$a->strings['Australia/Lord_Howe'] = 'Australia/Lord_Howe';
-$a->strings['Australia/Melbourne'] = 'Australia/Melbourne';
-$a->strings['Australia/North'] = 'Australia/North';
-$a->strings['Australia/NSW'] = 'Australia/NSW';
-$a->strings['Australia/Perth'] = 'Australia/Perth';
-$a->strings['Australia/Queensland'] = 'Australia/Queensland';
-$a->strings['Australia/South'] = 'Australia/South';
-$a->strings['Australia/Sydney'] = 'Australia/Sydney';
-$a->strings['Australia/Tasmania'] = 'Australia/Tasmania';
-$a->strings['Australia/Victoria'] = 'Australia/Victoria';
-$a->strings['Australia/West'] = 'Australia/West';
-$a->strings['Australia/Yancowinna'] = 'Australia/Yancowinna';
-$a->strings['Brazil/Acre'] = 'Brazil/Acre';
-$a->strings['Brazil/DeNoronha'] = 'Brazil/DeNoronha';
-$a->strings['Brazil/East'] = 'Brazil/East';
-$a->strings['Brazil/West'] = 'Brazil/West';
-$a->strings['Canada/Atlantic'] = 'Canada/Atlantic';
-$a->strings['Canada/Central'] = 'Canada/Central';
-$a->strings['Canada/East-Saskatchewan'] = 'Canada/East-Saskatchewan';
-$a->strings['Canada/Eastern'] = 'Canada/Eastern';
-$a->strings['Canada/Mountain'] = 'Canada/Mountain';
-$a->strings['Canada/Newfoundland'] = 'Canada/Newfoundland';
-$a->strings['Canada/Pacific'] = 'Canada/Pacific';
-$a->strings['Canada/Saskatchewan'] = 'Canada/Saskatchewan';
-$a->strings['Canada/Yukon'] = 'Canada/Yukon';
-$a->strings['CET'] = 'CET';
-$a->strings['Chile/Continental'] = 'Chile/Continental';
-$a->strings['Chile/EasterIsland'] = 'Chile/EasterIsland';
-$a->strings['CST6CDT'] = 'CST6CDT';
-$a->strings['Cuba'] = 'Cuba';
-$a->strings['EET'] = 'EET';
-$a->strings['Egypt'] = 'Egypt';
-$a->strings['Eire'] = 'Eire';
-$a->strings['EST'] = 'EST';
-$a->strings['EST5EDT'] = 'EST5EDT';
-$a->strings['Etc/GMT'] = 'Etc/GMT';
-$a->strings['Etc/GMT+0'] = 'Etc/GMT+0';
-$a->strings['Etc/GMT+1'] = 'Etc/GMT+1';
-$a->strings['Etc/GMT+10'] = 'Etc/GMT+10';
-$a->strings['Etc/GMT+11'] = 'Etc/GMT+11';
-$a->strings['Etc/GMT+12'] = 'Etc/GMT+12';
-$a->strings['Etc/GMT+2'] = 'Etc/GMT+2';
-$a->strings['Etc/GMT+3'] = 'Etc/GMT+3';
-$a->strings['Etc/GMT+4'] = 'Etc/GMT+4';
-$a->strings['Etc/GMT+5'] = 'Etc/GMT+5';
-$a->strings['Etc/GMT+6'] = 'Etc/GMT+6';
-$a->strings['Etc/GMT+7'] = 'Etc/GMT+7';
-$a->strings['Etc/GMT+8'] = 'Etc/GMT+8';
-$a->strings['Etc/GMT+9'] = 'Etc/GMT+9';
-$a->strings['Etc/GMT-0'] = 'Etc/GMT-0';
-$a->strings['Etc/GMT-1'] = 'Etc/GMT-1';
-$a->strings['Etc/GMT-10'] = 'Etc/GMT-10';
-$a->strings['Etc/GMT-11'] = 'Etc/GMT-11';
-$a->strings['Etc/GMT-12'] = 'Etc/GMT-12';
-$a->strings['Etc/GMT-13'] = 'Etc/GMT-13';
-$a->strings['Etc/GMT-14'] = 'Etc/GMT-14';
-$a->strings['Etc/GMT-2'] = 'Etc/GMT-2';
-$a->strings['Etc/GMT-3'] = 'Etc/GMT-3';
-$a->strings['Etc/GMT-4'] = 'Etc/GMT-4';
-$a->strings['Etc/GMT-5'] = 'Etc/GMT-5';
-$a->strings['Etc/GMT-6'] = 'Etc/GMT-6';
-$a->strings['Etc/GMT-7'] = 'Etc/GMT-7';
-$a->strings['Etc/GMT-8'] = 'Etc/GMT-8';
-$a->strings['Etc/GMT-9'] = 'Etc/GMT-9';
-$a->strings['Etc/GMT0'] = 'Etc/GMT0';
-$a->strings['Etc/Greenwich'] = 'Etc/Greenwich';
-$a->strings['Etc/UCT'] = 'Etc/UCT';
-$a->strings['Etc/Universal'] = 'Etc/Universal';
-$a->strings['Etc/UTC'] = 'Etc/UTC';
-$a->strings['Etc/Zulu'] = 'Etc/Zulu';
-$a->strings['Europe/Amsterdam'] = 'Europe/Amsterdam';
-$a->strings['Europe/Andorra'] = 'Europe/Andorra';
-$a->strings['Europe/Athens'] = 'Europe/Athens';
-$a->strings['Europe/Belfast'] = 'Europe/Belfast';
-$a->strings['Europe/Belgrade'] = 'Europe/Belgrade';
-$a->strings['Europe/Berlin'] = 'Europe/Berlin';
-$a->strings['Europe/Bratislava'] = 'Europe/Bratislava';
-$a->strings['Europe/Brussels'] = 'Europe/Brussels';
-$a->strings['Europe/Bucharest'] = 'Europe/Bucharest';
-$a->strings['Europe/Budapest'] = 'Europe/Budapest';
-$a->strings['Europe/Chisinau'] = 'Europe/Chisinau';
-$a->strings['Europe/Copenhagen'] = 'Europe/Copenhagen';
-$a->strings['Europe/Dublin'] = 'Europe/Dublin';
-$a->strings['Europe/Gibraltar'] = 'Europe/Gibraltar';
-$a->strings['Europe/Guernsey'] = 'Europe/Guernsey';
-$a->strings['Europe/Helsinki'] = 'Europe/Helsinki';
-$a->strings['Europe/Isle_of_Man'] = 'Europe/Isle_of_Man';
-$a->strings['Europe/Istanbul'] = 'Europe/Istanbul';
-$a->strings['Europe/Jersey'] = 'Europe/Jersey';
-$a->strings['Europe/Kaliningrad'] = 'Europe/Kaliningrad';
-$a->strings['Europe/Kiev'] = 'Europe/Kiev';
-$a->strings['Europe/Lisbon'] = 'Europe/Lisbon';
-$a->strings['Europe/Ljubljana'] = 'Europe/Ljubljana';
-$a->strings['Europe/London'] = 'Europe/London';
-$a->strings['Europe/Luxembourg'] = 'Europe/Luxembourg';
-$a->strings['Europe/Madrid'] = 'Europe/Madrid';
-$a->strings['Europe/Malta'] = 'Europe/Malta';
-$a->strings['Europe/Mariehamn'] = 'Europe/Mariehamn';
-$a->strings['Europe/Minsk'] = 'Europe/Minsk';
-$a->strings['Europe/Monaco'] = 'Europe/Monaco';
-$a->strings['Europe/Moscow'] = 'Europe/Moscow';
-$a->strings['Europe/Nicosia'] = 'Europe/Nicosia';
-$a->strings['Europe/Oslo'] = 'Europe/Oslo';
-$a->strings['Europe/Paris'] = 'Europe/Paris';
-$a->strings['Europe/Podgorica'] = 'Europe/Podgorica';
-$a->strings['Europe/Prague'] = 'Europe/Prague';
-$a->strings['Europe/Riga'] = 'Europe/Riga';
-$a->strings['Europe/Rome'] = 'Europe/Rome';
-$a->strings['Europe/Samara'] = 'Europe/Samara';
-$a->strings['Europe/San_Marino'] = 'Europe/San_Marino';
-$a->strings['Europe/Sarajevo'] = 'Europe/Sarajevo';
-$a->strings['Europe/Simferopol'] = 'Europe/Simferopol';
-$a->strings['Europe/Skopje'] = 'Europe/Skopje';
-$a->strings['Europe/Sofia'] = 'Europe/Sofia';
-$a->strings['Europe/Stockholm'] = 'Europe/Stockholm';
-$a->strings['Europe/Tallinn'] = 'Europe/Tallinn';
-$a->strings['Europe/Tirane'] = 'Europe/Tirane';
-$a->strings['Europe/Tiraspol'] = 'Europe/Tiraspol';
-$a->strings['Europe/Uzhgorod'] = 'Europe/Uzhgorod';
-$a->strings['Europe/Vaduz'] = 'Europe/Vaduz';
-$a->strings['Europe/Vatican'] = 'Europe/Vatican';
-$a->strings['Europe/Vienna'] = 'Europe/Vienna';
-$a->strings['Europe/Vilnius'] = 'Europe/Vilnius';
-$a->strings['Europe/Volgograd'] = 'Europe/Volgograd';
-$a->strings['Europe/Warsaw'] = 'Europe/Warsaw';
-$a->strings['Europe/Zagreb'] = 'Europe/Zagreb';
-$a->strings['Europe/Zaporozhye'] = 'Europe/Zaporozhye';
-$a->strings['Europe/Zurich'] = 'Europe/Zurich';
-$a->strings['Factory'] = 'Factory';
-$a->strings['GB'] = 'GB';
-$a->strings['GB-Eire'] = 'GB-Eire';
-$a->strings['GMT'] = 'GMT';
-$a->strings['GMT+0'] = 'GMT+0';
-$a->strings['GMT-0'] = 'GMT-0';
-$a->strings['GMT0'] = 'GMT0';
-$a->strings['Greenwich'] = 'Greenwich';
-$a->strings['Hongkong'] = 'Hongkong';
-$a->strings['HST'] = 'HST';
-$a->strings['Iceland'] = 'Iceland';
-$a->strings['Indian/Antananarivo'] = 'Indian/Antananarivo';
-$a->strings['Indian/Chagos'] = 'Indian/Chagos';
-$a->strings['Indian/Christmas'] = 'Indian/Christmas';
-$a->strings['Indian/Cocos'] = 'Indian/Cocos';
-$a->strings['Indian/Comoro'] = 'Indian/Comoro';
-$a->strings['Indian/Kerguelen'] = 'Indian/Kerguelen';
-$a->strings['Indian/Mahe'] = 'Indian/Mahe';
-$a->strings['Indian/Maldives'] = 'Indian/Maldives';
-$a->strings['Indian/Mauritius'] = 'Indian/Mauritius';
-$a->strings['Indian/Mayotte'] = 'Indian/Mayotte';
-$a->strings['Indian/Reunion'] = 'Indian/Reunion';
-$a->strings['Iran'] = 'Iran';
-$a->strings['Israel'] = 'Israel';
-$a->strings['Jamaica'] = 'Jamaica';
-$a->strings['Japan'] = 'Japan';
-$a->strings['Kwajalein'] = 'Kwajalein';
-$a->strings['Libya'] = 'Libya';
-$a->strings['MET'] = 'MET';
-$a->strings['Mexico/BajaNorte'] = 'Mexico/BajaNorte';
-$a->strings['Mexico/BajaSur'] = 'Mexico/BajaSur';
-$a->strings['Mexico/General'] = 'Mexico/General';
-$a->strings['MST'] = 'MST';
-$a->strings['MST7MDT'] = 'MST7MDT';
-$a->strings['Navajo'] = 'Navajo';
-$a->strings['NZ'] = 'NZ';
-$a->strings['NZ-CHAT'] = 'NZ-CHAT';
-$a->strings['Pacific/Apia'] = 'Pacific/Apia';
-$a->strings['Pacific/Auckland'] = 'Pacific/Auckland';
-$a->strings['Pacific/Chatham'] = 'Pacific/Chatham';
-$a->strings['Pacific/Easter'] = 'Pacific/Easter';
-$a->strings['Pacific/Efate'] = 'Pacific/Efate';
-$a->strings['Pacific/Enderbury'] = 'Pacific/Enderbury';
-$a->strings['Pacific/Fakaofo'] = 'Pacific/Fakaofo';
-$a->strings['Pacific/Fiji'] = 'Pacific/Fiji';
-$a->strings['Pacific/Funafuti'] = 'Pacific/Funafuti';
-$a->strings['Pacific/Galapagos'] = 'Pacific/Galapagos';
-$a->strings['Pacific/Gambier'] = 'Pacific/Gambier';
-$a->strings['Pacific/Guadalcanal'] = 'Pacific/Guadalcanal';
-$a->strings['Pacific/Guam'] = 'Pacific/Guam';
-$a->strings['Pacific/Honolulu'] = 'Pacific/Honolulu';
-$a->strings['Pacific/Johnston'] = 'Pacific/Johnston';
-$a->strings['Pacific/Kiritimati'] = 'Pacific/Kiritimati';
-$a->strings['Pacific/Kosrae'] = 'Pacific/Kosrae';
-$a->strings['Pacific/Kwajalein'] = 'Pacific/Kwajalein';
-$a->strings['Pacific/Majuro'] = 'Pacific/Majuro';
-$a->strings['Pacific/Marquesas'] = 'Pacific/Marquesas';
-$a->strings['Pacific/Midway'] = 'Pacific/Midway';
-$a->strings['Pacific/Nauru'] = 'Pacific/Nauru';
-$a->strings['Pacific/Niue'] = 'Pacific/Niue';
-$a->strings['Pacific/Norfolk'] = 'Pacific/Norfolk';
-$a->strings['Pacific/Noumea'] = 'Pacific/Noumea';
-$a->strings['Pacific/Pago_Pago'] = 'Pacific/Pago_Pago';
-$a->strings['Pacific/Palau'] = 'Pacific/Palau';
-$a->strings['Pacific/Pitcairn'] = 'Pacific/Pitcairn';
-$a->strings['Pacific/Ponape'] = 'Pacific/Ponape';
-$a->strings['Pacific/Port_Moresby'] = 'Pacific/Port_Moresby';
-$a->strings['Pacific/Rarotonga'] = 'Pacific/Rarotonga';
-$a->strings['Pacific/Saipan'] = 'Pacific/Saipan';
-$a->strings['Pacific/Samoa'] = 'Pacific/Samoa';
-$a->strings['Pacific/Tahiti'] = 'Pacific/Tahiti';
-$a->strings['Pacific/Tarawa'] = 'Pacific/Tarawa';
-$a->strings['Pacific/Tongatapu'] = 'Pacific/Tongatapu';
-$a->strings['Pacific/Truk'] = 'Pacific/Truk';
-$a->strings['Pacific/Wake'] = 'Pacific/Wake';
-$a->strings['Pacific/Wallis'] = 'Pacific/Wallis';
-$a->strings['Pacific/Yap'] = 'Pacific/Yap';
-$a->strings['Poland'] = 'Poland';
-$a->strings['Portugal'] = 'Portugal';
-$a->strings['PRC'] = 'PRC';
-$a->strings['PST8PDT'] = 'PST8PDT';
-$a->strings['ROC'] = 'ROC';
-$a->strings['ROK'] = 'ROK';
-$a->strings['Singapore'] = 'Singapore';
-$a->strings['Turkey'] = 'Turkey';
-$a->strings['UCT'] = 'UCT';
-$a->strings['Universal'] = 'Universal';
-$a->strings['US/Alaska'] = 'US/Alaska';
-$a->strings['US/Aleutian'] = 'US/Aleutian';
-$a->strings['US/Arizona'] = 'US/Arizona';
-$a->strings['US/Central'] = 'US/Central';
-$a->strings['US/East-Indiana'] = 'US/East-Indiana';
-$a->strings['US/Eastern'] = 'US/Eastern';
-$a->strings['US/Hawaii'] = 'US/Hawaii';
-$a->strings['US/Indiana-Starke'] = 'US/Indiana-Starke';
-$a->strings['US/Michigan'] = 'US/Michigan';
-$a->strings['US/Mountain'] = 'US/Mountain';
-$a->strings['US/Pacific'] = 'US/Pacific';
-$a->strings['US/Pacific-New'] = 'US/Pacific-New';
-$a->strings['US/Samoa'] = 'US/Samoa';
-$a->strings['UTC'] = 'UTC';
-$a->strings['W-SU'] = 'W-SU';
-$a->strings['WET'] = 'WET';
-$a->strings['Zulu'] = 'Zulu';
-$a->strings['Monday'] = 'Lunedì';
-$a->strings['Tuesday'] = 'Martedì';
-$a->strings['Wednesday'] = 'Mercoledì';
-$a->strings['Thursday'] = 'Giovedì';
-$a->strings['Friday'] = 'Venerdì';
-$a->strings['Saturday'] = 'Sabato';
-$a->strings['Sunday'] = 'Domenica';
-$a->strings['January'] = 'Gennaio';
-$a->strings['February'] = 'Febbraio';
-$a->strings['March'] = 'Marzo';
-$a->strings['April'] = 'Aprile';
-$a->strings['May'] = 'Maggio';
-$a->strings['June'] = 'Giugno';
-$a->strings['July'] = 'Luglio';
-$a->strings['August'] = 'Agosto';
-$a->strings['September'] = 'Settembre';
-$a->strings['October'] = 'Ottobre';
-$a->strings['November'] = 'Novembre';
-$a->strings['December'] = 'Dicembre';
-$a->strings['Birthdays this week:'] = 'Compleanni questa settimana:';
-$a->strings['(Adjusted for local time)'] = '(Regolati all\'ora locale)';
-$a->strings['[today]'] = '[oggi]';
-$a->strings[' has received too many connection requests today.'] = 'ha ricevuto troppe richieste di connessione oggi.';
-$a->strings['Profile Image'] = 'Immagine del Profilo';
-$a->strings['Invalid OpenID url'] = 'Url OpenID non valido';
-$a->strings['Cannot use that email.'] = 'Questa email non si puo\' usare.';
-$a->strings['Normal View'] = 'Vista normale';
-$a->strings['New Item View'] = 'Vista Nuovi Elementi';
-$a->strings['Share'] = 'Condividi';
-$a->strings['Insert YouTube video'] = 'Inserisci video da YouTube';
-$a->strings['Set your location'] = 'Imposta la tua posizione';
-$a->strings['Clear browser location'] = 'Cancella la tua posizione data dal browser';
-$a->strings['Permission settings'] = 'Impostazione permessi';
-$a->strings[' Cannot change to that email.'] = 'Non puoi cambiare a quella email.';
-$a->strings['Birthday:'] = 'Compleanno:';
-$a->strings['Update now'] = 'Aggiorna adesso';
-$a->strings['This message was sent to you by '] = 'Questo messaggio è ti è stato inviato da ';
-$a->strings[', a member of the Friendika social network.'] = ', un membro del social network Friendika';
-$a->strings['You may visit them online at'] = 'Puoi visitarli online a ';
-$a->strings['Please contact the sender by replying to this post if you do not wish to receive these messages.'] = 'Contatta il mittente rispondendo a questo post se non vuoi ricevere questi messaggi.';
-$a->strings['posted an update.'] = 'ha inviato un aggiornamento.';
-$a->strings['CC: email addresses'] = 'CC: indirizzi email';
-$a->strings['Example: bob@example.com, mary@example.com'] = 'Esempio: bob@example.com, mary@example.com';
-$a->strings['Embedding disabled'] = 'Inclusione disabilitata';
-$a->strings['Upload a file'] = 'Carica un file';
-$a->strings['Drop files here to upload'] = 'Trascina un file qui per caricarlo';
-$a->strings['Failed'] = 'Fallito';
-$a->strings['No files were uploaded.'] = 'Nessun file è stato caricato.';
-$a->strings['Uploaded file is empty'] = 'Il file caricato è vuoto';
-$a->strings['Uploaded file is too large'] = 'Il file caricato è troppo grande';
-$a->strings['File has an invalid extension, it should be one of '] = 'Il file ha una estensione non valida, dovrebbe essere una di ';
-$a->strings['Upload was cancelled, or server error encountered'] = 'Il caricamento è stato cancellato, o si è verificato un errore sul server';
-$a->strings['Randplace Settings'] = 'Impostazioni Randplace';
-$a->strings['Enable Randplace Plugin'] = 'Abilita il plugin Randplace';
-$a->strings['System error. Post not saved.'] = 'Errore di sistema. Messaggio non salvato.';
-$a->strings['(Update was successful)'] = '(L\'aggiornamento è stato completato)';
-$a->strings['(Update was not successful)'] = '(L\'aggiornamento non è stato completato)';
-$a->strings['Remove My Account'] = 'Rimuovi il mio Account';
-$a->strings['This will completely remove your account. Once this has been done it is not recoverable.'] = 'Questo rimuoverà completamente il tuo account. Una volta rimosso non si potrà recuperarlo.';
-$a->strings['Please enter your password for verification:'] = 'Inserisci la tua password per verifica:';
-$a->strings['No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation.'] = 'Nessuna coppia di chiavi consumer per StatusNet trovata. Regitstra il tuo Account Friendika come un client desktop sul tuo account StatusNet, copia la coppia di chiavi qui e inserisci l\'url di base delle API.<br />Prima di registrare la tua coppia di chiavi OAuth, chiedi all\'amministratore se esiste già una coppia di chiavi per questa installazione di Friendika sulla installazione di StatusNet che ti interessa.';
-$a->strings['OAuth Consumer Key'] = 'OAuth Consumer Key';
-$a->strings['OAuth Consumer Secret'] = 'OAuth Consumer Secret';
-$a->strings['Base API Path (remember the trailing /)'] = 'Indirizzo di base per le API (ricorda la / alla fine)';
-$a->strings['To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet.'] = 'Per collegare il tuo account StatusNet, clicca sul bottone qui sotto per ottenere un codice di sicurezza da StatusNet, che dovrai copiare nel box più sotto per poi inviare la form. Solo i tuoi messaggi <strong>pubblci</strong> saranno inviati a StatusNet.';
-$a->strings['Log in with StatusNet'] = 'Login con StatuNet';
-$a->strings['Copy the security code from StatusNet here'] = 'Copia il codice di sicurezza da StatusNet qui';
-$a->strings['Currently connected to: '] = 'Al momento collegato con:';
-$a->strings['If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well.'] = 'Se abilitato tutti i tuoi messaggi <strong>pubblici</strong> verranno inviati anche sull\'account StatusNet associato.';
-$a->strings['Send public postings to StatusNet'] = 'Invia messaggi pubblici su StatusNet';
-$a->strings['Clear OAuth configuration'] = 'Cancella la configurazione OAuth';
-$a->strings['Twitter Posting Settings'] = 'Impostazioni Invio a Twitter';
-$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Nessuna coopia di chiavi per Twitter trovata. Contatta il tuo amministratore del sito.';
-$a->strings['At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'Questa installazione di Friendika ha il plugin Twitter abilitato, ma non hai ancora collegato il tuo account locale con il tuo account su Twitter. Per farlo, clicca il bottone qui sotto per ottenere un PIN da Twitter, che dovrai copiare nel box più sotto per poi inviare la form. Solo i tuoi messaggi <strong>pubblici</strong> verranno inviati anche su Twitter.';
-$a->strings['Copy the PIN from Twitter here'] = 'Copia il PIN da Twitter qui';
-$a->strings['If enabled all your <strong>public</strong> postings will be posted to the associated Twitter account as well.'] = 'Se abilitato tutti i tuoi messaggi <strong>pubblici</strong> verranno inviati anche sull\'account Twitter associato.';
-$a->strings['Send public postings to Twitter'] = 'Invia messaggi pubblici su Twitter';
-$a->strings['noreply'] = 'nessuna risposta';
-$a->strings['Facebook disabled'] = 'Facebook disabilitato';
-$a->strings['Facebook API key is missing.'] = 'Chiave API Facebook mancante.';
-$a->strings['Facebook Connect'] = 'Facebook Connect';
-$a->strings['Install Facebook posting'] = 'Installa invio a Facebook';
-$a->strings['Remove Facebook posting'] = 'Rimuovi invio a Facebook';
-$a->strings['Post to Facebook'] = 'Invia a Facebook';
-$a->strings['Image: '] = 'Immagine: ';
-$a->strings['Base API Path \x28remember the trailing &#47;\x29'] = 'Indirizzo base API \x28ricorda il &#47; alla fine\x29';
-$a->strings['Post to Twitter'] = 'Inva a Twitter';
-?>
+
+function string_plural_select($n){
+ return ($n != 1);
+}
+;
+$a->strings["Post successful."] = "Inviato con successo.";
+$a->strings["Contact settings applied."] = "Impostazioni del contatto applicate.";
+$a->strings["Contact update failed."] = "Aggiornamento del contatto non riuscito.";
+$a->strings["Permission denied."] = "Permesso negato.";
+$a->strings["Contact not found."] = "Contatto non trovato.";
+$a->strings["Repair Contact Settings"] = "Ripara le Impostazioni del Contatto";
+$a->strings["<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact will stop working."] = "<strong>ATTENZIONE: Per utenti esperti!</strong> Se inserisci informazioni non corrette le tue comunicazioni con questo contatto smetteranno di funzionare.";
+$a->strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "Usa <strong>ora</strong> il tasto 'Indietro' del tuo browser se non sei sicuro di cosa fare in questa pagina.";
+$a->strings["Name"] = "Nome";
+$a->strings["Account Nickname"] = "Nickname dell'utente";
+$a->strings["Account URL"] = "URL dell'utente";
+$a->strings["Friend Request URL"] = "URL Richiesta Amicizia";
+$a->strings["Friend Confirm URL"] = "URL Conferma Amicizia";
+$a->strings["Notification Endpoint URL"] = "URL Notifiche";
+$a->strings["Poll/Feed URL"] = "URL Feed";
+$a->strings["Submit"] = "Invia";
+$a->strings["Help:"] = "Guida:";
+$a->strings["Help"] = "Guida";
+$a->strings["Cancel"] = "Annulla";
+$a->strings["Tag removed"] = "TAg rimosso";
+$a->strings["Remove Item Tag"] = "Rimuovi tag dall'elemento";
+$a->strings["Select a tag to remove: "] = "Seleziona un tag da rimuovere: ";
+$a->strings["Remove"] = "Rimuovi";
+$a->strings["%s welcomes %s"] = "%s da il benvenuto a %s";
+$a->strings["Photo Albums"] = "Album Foto";
+$a->strings["Contact Photos"] = "Foto dei contatti";
+$a->strings["Contact information unavailable"] = "Informazione sul contatto non disponibile";
+$a->strings["Profile Photos"] = "Foto del profilo";
+$a->strings["Album not found."] = "Album non trovato.";
+$a->strings["Delete Album"] = "Elimina album";
+$a->strings["Delete Photo"] = "Elimina foto";
+$a->strings["was tagged in a"] = "è stato taggato in";
+$a->strings["photo"] = "foto";
+$a->strings["by"] = "da";
+$a->strings["Image exceeds size limit of "] = "L'immagine supera il limite di dimensione di ";
+$a->strings["Unable to process image."] = "Impossibile elaborare l'immagine.";
+$a->strings["Image upload failed."] = "Caricamento immagine fallito.";
+$a->strings["Public access denied."] = "Accesso pubblico non consentito.";
+$a->strings["No photos selected"] = "Nessuna foto selezionata";
+$a->strings["Upload Photos"] = "Carica foto";
+$a->strings["New album name: "] = "Nome nuovo album: ";
+$a->strings["or existing album name: "] = "o nome di un album esistente: ";
+$a->strings["Permissions"] = "Permessi";
+$a->strings["Edit Album"] = "Modifica album";
+$a->strings["View Photo"] = "Vedi foto";
+$a->strings["Photo not available"] = "Foto non disponibile";
+$a->strings["Edit photo"] = "Modifica foto";
+$a->strings["Use as profile photo"] = "Usa come foto del profilo";
+$a->strings["Private Message"] = "Messaggio privato";
+$a->strings["<< Prev"] = "<< Prec";
+$a->strings["View Full Size"] = "Vedi dimensione intera";
+$a->strings["Next >>"] = "Succ >>";
+$a->strings["Tags: "] = "Tag: ";
+$a->strings["[Remove any tag]"] = "[Rimuovi tutti i tag]";
+$a->strings["New album name"] = "Nuovo nome album";
+$a->strings["Caption"] = "Didascalia";
+$a->strings["Add a Tag"] = "Aggiungi un tag";
+$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Esempio: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping";
+$a->strings["I like this (toggle)"] = "Mi piace questo (metti/togli)";
+$a->strings["I don't like this (toggle)"] = "Non mi piace questo (metti/togli)";
+$a->strings["Share"] = "Condividi";
+$a->strings["Please wait"] = "Attendi";
+$a->strings["This is you"] = "Questo sei tu";
+$a->strings["Comment"] = "Commento";
+$a->strings["Delete"] = "Cancella";
+$a->strings["Recent Photos"] = "Foto recenti";
+$a->strings["Upload New Photos"] = "Carica nuova foto";
+$a->strings["View Album"] = "Vedi album";
+$a->strings["Item not found"] = "Elemento non trovato";
+$a->strings["Edit post"] = "Modifica messaggio";
+$a->strings["Post to Email"] = "Invia a Email";
+$a->strings["Edit"] = "Modifica";
+$a->strings["Upload photo"] = "Carica foto";
+$a->strings["Insert web link"] = "Inserisci link";
+$a->strings["Insert YouTube video"] = "Inserisci video da YouTube";
+$a->strings["Insert Vorbis [.ogg] video"] = "Inserisci video Theora [.ogg]";
+$a->strings["Insert Vorbis [.ogg] audio"] = "Inserisci audio Vorbis [.ogg]";
+$a->strings["Set your location"] = "Imposta la tua posizione";
+$a->strings["Clear browser location"] = "Cancella la tua posizione data dal browser";
+$a->strings["Permission settings"] = "Impostazione permessi";
+$a->strings["CC: email addresses"] = "CC: indirizzi email";
+$a->strings["Example: bob@example.com, mary@example.com"] = "Esempio: bob@example.com, mary@example.com";
+$a->strings["This introduction has already been accepted."] = "Questa presentazione è già stata accettata.";
+$a->strings["Profile location is not valid or does not contain profile information."] = "La posizione del profilo non è valida o non contiene informazioni di profilo.";
+$a->strings["Warning: profile location has no identifiable owner name."] = "Attenzione: la posizione del profilo non ha un identificabile proprietario.";
+$a->strings["Warning: profile location has no profile photo."] = "Attenzione: la posizione del profilo non ha una foto.";
+$a->strings["%d required parameter was not found at the given location"] = array(
+ 0 => "%d parametro richiesto non è stato trovato nella posizione data",
+ 1 => "%d parametri richiesti non sono stati trovati nella posizione data",
+);
+$a->strings["Introduction complete."] = "Presentazione completa.";
+$a->strings["Unrecoverable protocol error."] = "Errore di protocollo non recuperabile.";
+$a->strings["Profile unavailable."] = "Profilo non disponibile.";
+$a->strings["%s has received too many connection requests today."] = "%s ha ricevuto troppe richieste di connessione per oggi.";
+$a->strings["Spam protection measures have been invoked."] = "Sono state attivate le misure di protezione contro lo spam.";
+$a->strings["Friends are advised to please try again in 24 hours."] = "Gli amici sono pregati di riprovare tra 24 ore.";
+$a->strings["Invalid locator"] = "Invalid locator";
+$a->strings["Unable to resolve your name at the provided location."] = "Impossibile risolvere il tuo nome nella posizione indicata.";
+$a->strings["You have already introduced yourself here."] = "Ti sei già presentato qui.";
+$a->strings["Apparently you are already friends with %s."] = "Sembra che tu sia già amico di %s.";
+$a->strings["Invalid profile URL."] = "Indirizzo profilo invalido.";
+$a->strings["Disallowed profile URL."] = "Indirizzo profilo non permesso.";
+$a->strings["Failed to update contact record."] = "Errore aggiornando il contatto.";
+$a->strings["Your introduction has been sent."] = "La tua presentazione è stata inviata.";
+$a->strings["Please login to confirm introduction."] = "Accedi per confermare la presentazione.";
+$a->strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Accesso con identà incorretta. Accedi a <strong>questo</strong> profilo.";
+$a->strings["Welcome home %s."] = "Bentornato a casa %s.";
+$a->strings["Please confirm your introduction/connection request to %s."] = "Conferma la tua richiesta di connessione con %s.";
+$a->strings["Confirm"] = "Conferma";
+$a->strings["[Name Withheld]"] = "[Nome Nascosto]";
+$a->strings["Introduction received at "] = "Introduzione ricevuta su ";
+$a->strings["Administrator"] = "Amministratore";
+$a->strings["Friend/Connection Request"] = "Richieste di Amicizia/Connessione";
+$a->strings["Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca"] = "Esempi: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca";
+$a->strings["Please answer the following:"] = "Rispondi al seguente:";
+$a->strings["Does \$name know you?"] = "$name ti conosce?";
+$a->strings["Yes"] = "Si";
+$a->strings["No"] = "No";
+$a->strings["Add a personal note:"] = "Aggiungi una nota personale:";
+$a->strings["Please enter your 'Identity Address' from one of the following supported social networks:"] = "Inserisci il tuo \"Indirizzo Identità\" da uno dei social network supportati:";
+$a->strings["Friendika"] = "Friendika";
+$a->strings["StatusNet/Federated Social Web"] = "StatusNet/Federated Social Web";
+$a->strings["Private (secure) network"] = "Network (sicuro) privato";
+$a->strings["Public (insecure) network"] = "Network (insicuro) pubblico";
+$a->strings["Your Identity Address:"] = "Il tuo Indirizzo Identità:";
+$a->strings["Submit Request"] = "Invia richiesta";
+$a->strings["Could not create/connect to database."] = "Impossibile creare/collegarsi al database.";
+$a->strings["Connected to database."] = "Collegato al database.";
+$a->strings["Proceed with Installation"] = "Continua con l'installazione";
+$a->strings["Your Friendika site database has been installed."] = "Il database del tuo sito Friendika è stato installato.";
+$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Devi impostare manualmente un operazione pianificata per il poller";
+$a->strings["Please see the file \"INSTALL.txt\"."] = "Guarda il file \"INSTALL.txt\".";
+$a->strings["Proceed to registration"] = "Continua con la registrazione";
+$a->strings["Database import failed."] = "Importazione database fallita.";
+$a->strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Potresti dover importare il file \"database.sql\" manualmente con phpmyadmin o mysql";
+$a->strings["Welcome to Friendika."] = "Benvenuto su Friendika.";
+$a->strings["Friendika Social Network"] = "Friendika Social Network";
+$a->strings["Installation"] = "Installazione";
+$a->strings["In order to install Friendika we need to know how to contact your database."] = "Per installare Friendika dobbiamo sapere come contattare il tuo database.";
+$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Contatta il tuo fornitore di hosting o l'amministratore del sito se hai domande su questi settaggi.";
+$a->strings["The database you specify below must already exist. If it does not, please create it before continuing."] = "Il datatabase specificato qui sotto deve esistere. Se non è così, crealo prima di continuare.";
+$a->strings["Database Server Name"] = "Nome Database Server";
+$a->strings["Database Login Name"] = "Nome utente Database";
+$a->strings["Database Login Password"] = "Password utente Database";
+$a->strings["Database Name"] = "Nome Database";
+$a->strings["Please select a default timezone for your website"] = "Seleziona un fuso orario di default per il tuo sito web";
+$a->strings["Could not find a command line version of PHP in the web server PATH."] = "Non riesco a trovare una versione da riga di comando di PHP nel PATH del server web";
+$a->strings["This is required. Please adjust the configuration file .htconfig.php accordingly."] = "E' richiesto. Aggiorna il file .htconfig.php di conseguenza.";
+$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La versione da riga di comando di PHP nel sistema non ha abilitato \"register_argc_argv\".";
+$a->strings["This is required for message delivery to work."] = "Ciò è richiesto per far funzionare la consegna dei messaggi.";
+$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Errore: la funzione \"openssl_pkey_new\" in questo sistema non è in grado di generare le chiavi di criptazione";
+$a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Se stai eseguendo friendika su windows, guarda \"http://www.php.net/manual/en/openssl.installation.php\".";
+$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Errore: il modulo mod-rewrite di Apache &egreve; richiesto ma non installato";
+$a->strings["Error: libCURL PHP module required but not installed."] = "Errore: il modulo libCURL di PHP è richiesto ma non installato.";
+$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Errore: Il modulo GD graphics di PHP con supporto a JPEG è richiesto ma non installato.";
+$a->strings["Error: openssl PHP module required but not installed."] = "Errore: il modulo openssl di PHP è richiesto ma non installato.";
+$a->strings["Error: mysqli PHP module required but not installed."] = "Errore: il modulo mysqli di PHP è richiesto ma non installato";
+$a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "L'installazione web deve poter creare un file chiamato \".htconfig.php\" nella cartella principale del tuo web server ma non è in grado di farlo.";
+$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Ciò è dovuto spesso a impostazioni di permessi, dato che il web server puo' scrivere il file nella tua cartella, anche se tu puoi.";
+$a->strings["Please check with your site documentation or support people to see if this situation can be corrected."] = "Controlla la documentazione del tuo sito o con il personale di suporto se la situazione puo' essere corretta.";
+$a->strings["If not, you may be required to perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Altrimenti dovrai procedere con l'installazione manuale. Guarda il file \"INSTALL.txt\" per istuzioni";
+$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Il file di configurazione del database \".htconfig.php\" non puo' essere scritto. Usa il testo qui di seguito per creare un file di configurazione nella cartella principale del tuo sito.";
+$a->strings["Errors encountered creating database tables."] = "Errori creando le tabelle nel database.";
+$a->strings["Profile Match"] = "Profili combacianti";
+$a->strings["No matches"] = "Nessun risultato";
+$a->strings["Remote privacy information not available."] = "Informazioni remote sulla privacy non disponibili.";
+$a->strings["Visible to:"] = "Visibile a:";
+$a->strings["Welcome to %s"] = "Benvenuto su %s";
+$a->strings["Invalid request identifier."] = "Identificativo richiesta invalido.";
+$a->strings["Discard"] = "Scarta";
+$a->strings["Ignore"] = "Ignora";
+$a->strings["Pending Friend/Connect Notifications"] = "Richieste di amicizia/connessione in attesa";
+$a->strings["Show Ignored Requests"] = "Mostra richieste ignorate";
+$a->strings["Hide Ignored Requests"] = "Nascondi richieste ignorate";
+$a->strings["Claims to be known to you: "] = "Dice di conoscerti: ";
+$a->strings["yes"] = "si";
+$a->strings["no"] = "no";
+$a->strings["Approve as: "] = "Approva come: ";
+$a->strings["Friend"] = "Amico";
+$a->strings["Fan/Admirer"] = "Fan/Admiratore";
+$a->strings["Notification type: "] = "Tipo di notifica: ";
+$a->strings["Friend/Connect Request"] = "Richiesta Amicizia/Connessione";
+$a->strings["New Follower"] = "Nuovo Seguace";
+$a->strings["Approve"] = "Approva";
+$a->strings["No notifications."] = "Nessuna notifica.";
+$a->strings["User registrations waiting for confirm"] = "Richieste di registrazione in attesa di conferma";
+$a->strings["Deny"] = "Nega";
+$a->strings["No registrations."] = "Nessuna registrazione.";
+$a->strings["Invite Friends"] = "Invita Amici";
+$a->strings["Find People With Shared Interests"] = "Trova persone che condividono i tuoi interessi";
+$a->strings["Connect/Follow"] = "Connetti/Segui";
+$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Esempio: bob@example.com, http://example.com/barbara";
+$a->strings["Follow"] = "Segui";
+$a->strings["Could not access contact record."] = "Non si puo' accedere al contatto.";
+$a->strings["Could not locate selected profile."] = "Non riesco a trovare il profilo selezionato.";
+$a->strings["Contact updated."] = "Contatto aggiornato.";
+$a->strings["Contact has been blocked"] = "Il contatto è stato bloccato";
+$a->strings["Contact has been unblocked"] = "Il contatto è stato sbloccato";
+$a->strings["Contact has been ignored"] = "Il contatto è ignorato";
+$a->strings["Contact has been unignored"] = "Il conttatto è non ignorato";
+$a->strings["stopped following"] = "tolto dai seguiti";
+$a->strings["Contact has been removed."] = "Il contatto è stato rimosso.";
+$a->strings["Mutual Friendship"] = "Reciproca amicizia";
+$a->strings["is a fan of yours"] = "è un tuo fan";
+$a->strings["you are a fan of"] = "sei un fan di";
+$a->strings["Privacy Unavailable"] = "Privacy non disponibile";
+$a->strings["Private communications are not available for this contact."] = "Le comunicazioni private non sono disponibili per questo contatto.";
+$a->strings["Never"] = "Mai";
+$a->strings["(Update was successful)"] = "(L'aggiornamento è stato completato)";
+$a->strings["(Update was not successful)"] = "(L'aggiornamento non è stato completato)";
+$a->strings["Contact Editor"] = "Editor dei Contatti";
+$a->strings["Profile Visibility"] = "Visibilità del profilo";
+$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Seleziona il profilo che vuoi mostrare a %s quando visita il tuo profilo in modo sicuro.";
+$a->strings["Contact Information / Notes"] = "Informazioni / Note sul contatto";
+$a->strings["Online Reputation"] = "Reputazione Online";
+$a->strings["Occasionally your friends may wish to inquire about this person's online legitimacy."] = "Puo' capitare che i tuoi amici vogliano sapere la legittimità online dei questa persona.";
+$a->strings["You may help them choose whether or not to interact with this person by providing a <em>reputation</em> to guide them."] = "Puoi aiutarli a scegliere se interagire o no con questa persona fornendo una <em>reputazione</em> per guidarli.";
+$a->strings["Please take a moment to elaborate on this selection if you feel it could be helpful to others."] = "Prenditi un momento per pensare su questa selezione se senti che puo' essere utile ad altri.";
+$a->strings["Visit \$name's profile"] = "Visita il profilo di \$name";
+$a->strings["Block/Unblock contact"] = "Blocca/Sblocca contatto";
+$a->strings["Ignore contact"] = "Ingnora il contatto";
+$a->strings["Repair contact URL settings"] = "Sistema impostazioni URL del contatto";
+$a->strings["Repair contact URL settings (WARNING: Advanced)"] = "Sistema impostazioni URL del contatto (ATTENZIONE: Avanzato)";
+$a->strings["View conversations"] = "Vedi conversazioni";
+$a->strings["Delete contact"] = "Rimuovi contatto";
+$a->strings["Last updated: "] = "Ultimo aggiornameto: ";
+$a->strings["Update public posts: "] = "Aggiorna messaggi pubblici: ";
+$a->strings["Update now"] = "Aggiorna adesso";
+$a->strings["Unblock this contact"] = "Sblocca questo contatto";
+$a->strings["Block this contact"] = "Blocca questo contatto";
+$a->strings["Unignore this contact"] = "Rimuovi dai contatti ingorati";
+$a->strings["Ignore this contact"] = "Aggiungi ai contatti ignorati";
+$a->strings["Currently blocked"] = "Bloccato";
+$a->strings["Currently ignored"] = "Ignorato";
+$a->strings["Contacts"] = "Contatti";
+$a->strings["Show Blocked Connections"] = "Mostra connessioni bloccate";
+$a->strings["Hide Blocked Connections"] = "Nascondi connessioni bloccate";
+$a->strings["Finding: "] = "Cerco: ";
+$a->strings["Find"] = "Trova";
+$a->strings["Visit \$username's profile"] = "Visita il profilo di \$username";
+$a->strings["Edit contact"] = "Modifca contatto";
+$a->strings["Password reset request issued. Check your email."] = "Richiesta di reimpostazione pasword inviata. Controlla la tua email.";
+$a->strings["Password reset requested at %s"] = "Richiesta recupero password su %s";
+$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La richiesta non può essere verificata. (Puoi averla già richiesta precendentemente). Reimpostazione password fallita.";
+$a->strings["Password Reset"] = "Resetta password";
+$a->strings["Your password has been reset as requested."] = "La tua password è stata reimpostata come richiesto.";
+$a->strings["Your new password is"] = "La tua nuova password è";
+$a->strings["Save or copy your new password - and then"] = "Sava o copa la tua nuova password, quindi";
+$a->strings["click here to login"] = "clicca qui per entrare";
+$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puoi cambiare la tua password dalla pagina <em>Impostazioni</em> dopo essere entrato.";
+$a->strings["Forgot your Password?"] = "Dimenticato la tua password?";
+$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Inserisci il tuo indirizzo email per richiedere di reimpostare la tua passwork.";
+$a->strings["Nickname or Email: "] = "Nome utente o Email: ";
+$a->strings["Reset"] = "Reimposta";
+$a->strings["Passwords do not match. Password unchanged."] = "Le password non corrispondono. Passoword non cambiata.";
+$a->strings["Empty passwords are not allowed. Password unchanged."] = "Password vuote non sono consentite. Password non cambiata.";
+$a->strings["Password changed."] = "Password cambiata.";
+$a->strings["Password update failed. Please try again."] = "Aggiornamento password fallito. Prova ancora.";
+$a->strings[" Please use a shorter name."] = " Usa un nome più corto.";
+$a->strings[" Name too short."] = " Nome troppo corto.";
+$a->strings[" Not valid email."] = " Email non valida.";
+$a->strings[" Cannot change to that email."] = "Non puoi usare quella email.";
+$a->strings["Settings updated."] = "Impostazioni aggiornate.";
+$a->strings["Plugin Settings"] = "Impostazioni Plugin";
+$a->strings["Account Settings"] = "Impostazioni Account";
+$a->strings["No Plugin settings configured"] = "Nessun Plugin ha delle configurazioni che puoi modificare";
+$a->strings["Normal Account"] = "Account normale";
+$a->strings["This account is a normal personal profile"] = "Questo account è un normale profilo personale";
+$a->strings["Soapbox Account"] = "Account Palco";
+$a->strings["Automatically approve all connection/friend requests as read-only fans"] = "Accetta automaticamente le richieste di connessione/amicizia come fan che possono solamente leggere";
+$a->strings["Community/Celebrity Account"] = "Account Celebrità/Comunità";
+$a->strings["Automatically approve all connection/friend requests as read-write fans"] = "Accetta automaticamente le richieste di connessione/amicizia come fan che possono scrivere in bacheca";
+$a->strings["Automatic Friend Account"] = "Account Amico Automatico";
+$a->strings["Automatically approve all connection/friend requests as friends"] = "Accetta automaticamente le richieste di connessione/amicizia come amici";
+$a->strings["OpenID: "] = "OpenID: ";
+$a->strings["&nbsp;(Optional) Allow this OpenID to login to this account."] = "&nbsp;(Opzionale) Permetti a questo OpenID di accedere a questo account.";
+$a->strings["Publish your default profile in site directory?"] = "Pubblicare il tuo profilo di default nell'elenco del sito?";
+$a->strings["Publish your default profile in global social directory?"] = "Pubblicare il tuo profilo di default nell'elenco sociale globale?";
+$a->strings["Profile is <strong>not published</strong>."] = "Il profilo <strong>non è pubblicato</strong>.";
+$a->strings["or"] = "o";
+$a->strings["Your Identity Address is"] = "Il tuo Indirizzo Identità è";
+$a->strings["Export Personal Data"] = "Esporta i Dati Personali";
+$a->strings["Basic Settings"] = "Impostazioni base";
+$a->strings["Full Name:"] = "Nome completo:";
+$a->strings["Email Address:"] = "Indirizzo Email:";
+$a->strings["Your Timezone:"] = "Il tuo fuso orario:";
+$a->strings["Default Post Location:"] = "Località di default per l'invio:";
+$a->strings["Use Browser Location:"] = "Usa la località rilevata dal browser:";
+$a->strings["Display Theme:"] = "Tema:";
+$a->strings["Security and Privacy Settings"] = "Impostazioni di Sicurezza e Privacy";
+$a->strings["Maximum Friend Requests/Day:"] = "Numero massimo di richieste di amicizia per giorno:";
+$a->strings["(to prevent spam abuse)"] = "(per prevenire lo spam)";
+$a->strings["Allow friends to post to your profile page:"] = "Permetti agli amici di inviare messaggi sulla tua bacheca:";
+$a->strings["Automatically expire (delete) posts older than"] = "Cancella automaticamente i messaggi più vecchi di";
+$a->strings["days"] = "giorni";
+$a->strings["Notification Settings"] = "Impostazioni Notifiche";
+$a->strings["Send a notification email when:"] = "Invia una mail di notifica quando:";
+$a->strings["You receive an introduction"] = "Ricevi una presentazione";
+$a->strings["Your introductions are confirmed"] = "Le tue presentazioni sono confermate";
+$a->strings["Someone writes on your profile wall"] = "Qualcuno scrive sulla bacheca del tuo profilo";
+$a->strings["Someone writes a followup comment"] = "Qualcuno scrive un commento a un tuo messaggio";
+$a->strings["You receive a private message"] = "Ricevi un messaggio privato";
+$a->strings["Password Settings"] = "Impostazioni Password";
+$a->strings["Leave password fields blank unless changing"] = "Lascia questi campi in bianco per non effettuare variazioni alla password";
+$a->strings["New Password:"] = "Nuova Password:";
+$a->strings["Confirm:"] = "Conferma:";
+$a->strings["Advanced Page Settings"] = "Impostazioni Avanzate Account";
+$a->strings["Default Post Permissions"] = "Permessi di default per i messaggi";
+$a->strings["(click to open/close)"] = "(clicca per aprire/chiudere)";
+$a->strings["Email/Mailbox Setup"] = "Impostazioni Email";
+$a->strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Se vuoi comunicare con i contatti email usando questo servizio, specifica come collegarti alla tua casella di posta. (opzionale)";
+$a->strings["IMAP server name:"] = "Nome server IMAP:";
+$a->strings["IMAP port:"] = "Porta IMAP:";
+$a->strings["Security (TLS or SSL):"] = "Sicurezza (TLS o SSL):";
+$a->strings["Email login name:"] = "Nome utente Email:";
+$a->strings["Email password:"] = "Password Email:";
+$a->strings["Reply-to address (Optional):"] = "Indirizzo risposte (opzionale):";
+$a->strings["Send public posts to all email contacts:"] = "Invia i messaggi pubblici ai contatti email:";
+$a->strings["Email access is disabled on this site."] = "L'accesso Email è disabilitato su questo sito.";
+$a->strings["Welcome back %s"] = "Bentornato %s";
+$a->strings["Manage Identities and/or Pages"] = "Gestisci Indentità e/o Pagine";
+$a->strings["(Toggle between different identities or community/group pages which share your account details.)"] = "(Passa tra diverse identità o pagine di comunità/gruppi che condividono i dettagli del tuo account.)";
+$a->strings["Select an identity to manage: "] = "Seleziona una identità da gestire:";
+$a->strings["Normal View"] = "Vista normale";
+$a->strings["New Item View"] = "Vista Nuovi Elementi";
+$a->strings["%d member"] = array(
+ 0 => "%d membro",
+ 1 => "%d membri",
+);
+$a->strings["Warning: This group contains %s from an insecure network."] = "Attenzione: questo gruppo contiente %s da un network insicuro.";
+$a->strings["Private messages to this group are at risk of public disclosure."] = "I messaggi privati a questo gruppo sono a rischio di visualizzazione pubblica.";
+$a->strings["No such group"] = "Nessun gruppo";
+$a->strings["Group is empty"] = "Il gruppo è vuoto";
+$a->strings["Group: "] = "Gruppo: ";
+$a->strings["Contact: "] = "Contatto:";
+$a->strings["Private messages to this person are at risk of public disclosure."] = "I messaggi privati ​​a questa persona sono a rischio di divulgazione al pubblico.";
+$a->strings["Invalid contact."] = "Contatto non valido.";
+$a->strings["Shared content is covered by the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0</a> license."] = "Il contenuto in comune è coperto dalla licenza <a href=\"http://creativecommons.org/licenses/by/3.0/deed.it\">Creative Commons Attribuzione 3.0</a>.";
+$a->strings["Group created."] = "Gruppo creato.";
+$a->strings["Could not create group."] = "Impossibile creare il gruppo.";
+$a->strings["Group not found."] = "Gruppo non trovato.";
+$a->strings["Group name changed."] = "Il nome del gruppo è cambiato.";
+$a->strings["Permission denied"] = "Permesso negato";
+$a->strings["Create a group of contacts/friends."] = "Crea un gruppo di amici/contatti.";
+$a->strings["Group Name: "] = "Nome del gruppo:";
+$a->strings["Group removed."] = "Gruppo rimosso.";
+$a->strings["Unable to remove group."] = "Impossibile rimuovere il gruppo.";
+$a->strings["Click on a contact to add or remove."] = "Clicca su un contatto per aggiungerlo o rimuoverlo.";
+$a->strings["Group Editor"] = "Modifica gruppo";
+$a->strings["Members"] = "Membri";
+$a->strings["All Contacts"] = "Tutti i Contatti";
+$a->strings["Invalid profile identifier."] = "Indentificativo del profilo non valido.";
+$a->strings["Profile Visibility Editor"] = "Modifica Visibilità del Profilo";
+$a->strings["Profile"] = "Profilo";
+$a->strings["Visible To"] = "Visibile A";
+$a->strings["All Contacts (with secure profile access)"] = "Tutti i Contatti (con profilo ad accesso sicuro)";
+$a->strings["View Contacts"] = "Guarda contatti";
+$a->strings["No contacts."] = "Nessuno contatto.";
+$a->strings["Invalid OpenID url"] = "Url OpenID non valido";
+$a->strings["Please enter the required information."] = "Inserisci le informazioni richieste.";
+$a->strings["Please use a shorter name."] = "Usa un nome più corto.";
+$a->strings["Name too short."] = "Il Nome è troppo corto.";
+$a->strings["That doesn't appear to be your full (First Last) name."] = "Questo non sembra essere il tuo nome completo (Nome Cognome).";
+$a->strings["Your email domain is not among those allowed on this site."] = "Il dominio della tua email non è tra quelli autorizzati su questo sito.";
+$a->strings["Not a valid email address."] = "Indirizzo email invaildo.";
+$a->strings["Cannot use that email."] = "Questa email non si puo' usare.";
+$a->strings["Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and must also begin with a letter."] = "Il tuo \"soprannome\" puo' contenere solo \"a-z\", \"0-9\", \"-\", e \"_\", e deve cominciare con una lettera.";
+$a->strings["Nickname is already registered. Please choose another."] = "Soprannome già registrato. Scegline un'altro.";
+$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "ERRORE GRAVE: Generazione delle chiavi di sicurezza fallito.";
+$a->strings["An error occurred during registration. Please try again."] = "Si è verificato un errore durante la registrazione. Prova ancora.";
+$a->strings["An error occurred creating your default profile. Please try again."] = "Si è verificato un errore creando il tuo profilo. Prova ancora.";
+$a->strings["Registration details for %s"] = "Dettagli registrazione per %s";
+$a->strings["Registration successful. Please check your email for further instructions."] = "Registrazione completata. Controlla la tua mail per ulteriori informazioni.";
+$a->strings["Failed to send email message. Here is the message that failed."] = "Errore inviando il messaggio email. Questo è il messaggio non inviato.";
+$a->strings["Your registration can not be processed."] = "La tua registrazione non puo' essere elaborata.";
+$a->strings["Registration request at %s"] = "Richiesta di registrazione su %s";
+$a->strings["Your registration is pending approval by the site owner."] = "La tua richiesta è in attesa di approvazione da parte del prorietario del sito.";
+$a->strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Puoi (opzionalmento) riempire questa maschera via OpenID inserendo il tuo OpenID e cliccando 'Registra'.";
+$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Se non hai familiarità con OpenID, lascia quel campo in bianco e riempi il resto della maschera.";
+$a->strings["Your OpenID (optional): "] = "Il tuo OpenID (opzionale): ";
+$a->strings["Include your profile in member directory?"] = "Includi il tuo profilo nell'elenco dei membir?";
+$a->strings["Registration"] = "Registrazione";
+$a->strings["Your Full Name (e.g. Joe Smith): "] = "Il tuo Nome Completo (p.e. Mario Rossi): ";
+$a->strings["Your Email Address: "] = "Il tuo Indirizzo Email: ";
+$a->strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be '<strong>nickname@\$sitename</strong>'."] = "Scegli un soprannome. Deve cominciare con un carattere. L'indirizzo del tuo profilo sarà '<strong>soprannome@\$sitename</strong>'.";
+$a->strings["Choose a nickname: "] = "Scegli un soprannome: ";
+$a->strings["Register"] = "Regitrati";
+$a->strings["status"] = "stato";
+$a->strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s piace %3\$s di %2\$s";
+$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s non piace %3\$s di %2\$s";
+$a->strings["This is Friendika version"] = "Questo è Friendika versione";
+$a->strings["running at web location"] = "in esecuzione all'indirizzo";
+$a->strings["Shared content within the Friendika network is provided under the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0 license</a>"] = "I contenuti condivisi nel network Friendika è rilasciato sotto la licenza <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0 license</a>";
+$a->strings["Please visit <a href=\"http://project.friendika.com\">Project.Friendika.com</a> to learn more about the Friendika project."] = "Visita <a href=\"http://project.friendika.com\">Project.Friendika.com</a> per saperne di più sul progetto Friendika.";
+$a->strings["Bug reports and issues: please visit"] = "Segnalazioni di bug e problemi: visita";
+$a->strings["Suggestions, praise, donations, etc. - please email \"Info\" at Friendika - dot com"] = "Suggerimenti, preghiere, donazioni, etc - invia una email a \"Info\" at Friendika - dot.com";
+$a->strings["Installed plugins/addons/apps"] = "Plugin/Addon/Applicazioni installate";
+$a->strings["No installed plugins/addons/apps"] = "Nessuno plugin/addons/applicazione installata";
+$a->strings["Please login."] = "Accedi.";
+$a->strings["Registration revoked for %s"] = "Registrazione revocata per %s";
+$a->strings["Account approved."] = "Account approvato.";
+$a->strings["Unable to locate original post."] = "Impossibile trovare il messaggio originale.";
+$a->strings["Empty post discarded."] = "Messaggio vuoto scartato.";
+$a->strings["Wall Photos"] = "Foto Bacheca";
+$a->strings["%s commented on your item at %s"] = "%s ha commentato un tuo elemento su %s";
+$a->strings["%s posted on your profile wall at %s"] = "%s ha scritto sulla tua bacheca su %s";
+$a->strings["System error. Post not saved."] = "Errore di sistema. Messaggio non salvato.";
+$a->strings["This message was sent to you by %s, a member of the Friendika social network."] = "Questo messaggio ti è stato inviato da %s, un membro del social network Friendika.";
+$a->strings["You may visit them online at %s"] = "Puoi visitarli online presso %s";
+$a->strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Contatta il mittente rispondendo a questo post se non vuoi ricevere questi messaggi.";
+$a->strings["%s posted an update."] = "%s ha inviato un aggiornamento.";
+$a->strings["Item not found."] = "Elemento non trovato.";
+$a->strings["Image uploaded but image cropping failed."] = "L'immagine è stata caricata, ma il ritaglio è fallito.";
+$a->strings["Image size reduction [%s] failed."] = "Riduzione della dimensione dell'immagine [%s] fallito.";
+$a->strings["Unable to process image"] = "Impossibile elaborare l'immagine";
+$a->strings["Image exceeds size limit of %d"] = "La dimensionde dell'immagine supera il limite di %d";
+$a->strings["Upload File:"] = "Carica un file:";
+$a->strings["Upload Profile Photo"] = "Carica la Foto del Profilo";
+$a->strings["Upload"] = "Carica";
+$a->strings["skip this step"] = "salta questo passaggio";
+$a->strings["select a photo from your photo albums"] = "seleziona una foto dai tuoi album";
+$a->strings["Crop Image"] = "Ritaglia immagine";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "Sistema il ritaglio dell'imagine per una visualizzazione ottimale.";
+$a->strings["Done Editing"] = "Fatto";
+$a->strings["Image uploaded successfully."] = "Immagine caricata con successo.";
+$a->strings["Remove My Account"] = "Rimuovi il mio Account";
+$a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Questo rimuoverà completamente il tuo account. Una volta rimosso non si potrà recuperarlo.";
+$a->strings["Please enter your password for verification:"] = "Inserisci la tua password per verifica:";
+$a->strings["No recipient selected."] = "Nessun destinatario selezionato.";
+$a->strings["[no subject]"] = "[nessun oggetto]";
+$a->strings["Unable to locate contact information."] = "Impossibile trovare le informazioni del contatto.";
+$a->strings["Message sent."] = "Messaggio inviato.";
+$a->strings["Message could not be sent."] = "Il messaggio non puo' essere inviato.";
+$a->strings["Messages"] = "Messaggi";
+$a->strings["Inbox"] = "In arrivo";
+$a->strings["Outbox"] = "Inviati";
+$a->strings["New Message"] = "Nuovo messaggio";
+$a->strings["Message deleted."] = "Messaggio cancellato.";
+$a->strings["Conversation removed."] = "Conversazione rimossa.";
+$a->strings["Please enter a link URL:"] = "Inserisci l'indirizzo del link:";
+$a->strings["Send Private Message"] = "Invia messaggio privato";
+$a->strings["To:"] = "A:";
+$a->strings["Subject:"] = "Oggetto:";
+$a->strings["Your message:"] = "Il tuo messaggio:";
+$a->strings["No messages."] = "Nessun messaggio.";
+$a->strings["Delete conversation"] = "Cancella conversazione";
+$a->strings["D, d M Y - g:i A"] = "D d M Y - G:i";
+$a->strings["Message not available."] = "Messaggio non disponibile.";
+$a->strings["Delete message"] = "Cancella messaggio";
+$a->strings["Send Reply"] = "Invia risposta";
+$a->strings["No profile"] = "Nessun profilo";
+$a->strings["Status"] = "Stato";
+$a->strings["Photos"] = "Foto";
+$a->strings["Login failed."] = "Accesso fallito.";
+$a->strings["Welcome "] = "Benvenuto";
+$a->strings["Please upload a profile photo."] = "Carica una foto per il profilo.";
+$a->strings["Welcome back "] = "Bentornato ";
+$a->strings["The profile address specified does not provide adequate information."] = "L'indirizzo del profilo specificato non fornisce adeguate informazioni.";
+$a->strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Profilo limitato. Questa persona non sarà in grado di ricevere nofiche dirette/personali da te.";
+$a->strings["Unable to retrieve contact information."] = "Impossibile recuperare informazioni sul contatto.";
+$a->strings["following"] = "segue";
+$a->strings["Item has been removed."] = "L'elemento è stato rimosso.";
+$a->strings["noreply"] = "nessuna risposta";
+$a->strings["New mail received at "] = "Nuova mail ricevuta su ";
+$a->strings["%s commented on an item at %s"] = "%s ha commentato un elemento su %s";
+$a->strings["Applications"] = "Applicazioni";
+$a->strings["Search"] = "Cerca";
+$a->strings["No results."] = "Nessun risultato.";
+$a->strings["Profile not found."] = "Profilo non trovato.";
+$a->strings["Profile Name is required."] = "Il Nome Profilo è richiesto .";
+$a->strings["Profile updated."] = "Profilo aggiornato.";
+$a->strings["Profile deleted."] = "Profilo elminato.";
+$a->strings["Profile-"] = "Profilo-";
+$a->strings["New profile created."] = "Nuovo profilo creato.";
+$a->strings["Profile unavailable to clone."] = "Impossibile duplicare il plrofilo.";
+$a->strings["Hide my contact/friend list from viewers of this profile?"] = "Nascondi la mia lista di contatti/amici dai visitatori di questo profilo";
+$a->strings["Edit Profile Details"] = "Modifica i Dettagli del Profilo";
+$a->strings["View this profile"] = "Visualizza questo profilo";
+$a->strings["Create a new profile using these settings"] = "Crea un nuovo profilo usando queste impostazioni";
+$a->strings["Clone this profile"] = "Clona questo profilo";
+$a->strings["Delete this profile"] = "Cancella questo profilo";
+$a->strings["Profile Name:"] = "Nome del profilo:";
+$a->strings["Your Full Name:"] = "Il tuo nome completo:";
+$a->strings["Title/Description:"] = "Breve descrizione (es. titolo, posizione, altro):";
+$a->strings["Your Gender:"] = "Il tuo sesso:";
+$a->strings["Birthday (y/m/d):"] = "Data di nascita (a/m/g):";
+$a->strings["Street Address:"] = "Indirizzo:";
+$a->strings["Locality/City:"] = "Località/Città:";
+$a->strings["Postal/Zip Code:"] = "CAP:";
+$a->strings["Country:"] = "Nazione:";
+$a->strings["Region/State:"] = "Regione/Stato:";
+$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Stato sentimentale:";
+$a->strings["Who: (if applicable)"] = "Con chi: (se possibile)";
+$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Esempio: cathy123, Cathy Williams, cathy@example.com";
+$a->strings["Sexual Preference:"] = "Preferenza sessuale:";
+$a->strings["Homepage URL:"] = "Indirizzo homepage:";
+$a->strings["Political Views:"] = "Orientamento politico:";
+$a->strings["Religious Views:"] = "Orientamento religioso:";
+$a->strings["Public Keywords:"] = "Parole chiave pubbliche:";
+$a->strings["Private Keywords:"] = "Parole chiave private:";
+$a->strings["Example: fishing photography software"] = "Esempio: pesca fotografia programmazione";
+$a->strings["(Used for suggesting potential friends, can be seen by others)"] = "(Utilizzato per suggerire potenziali amici, può essere visto da altri)";
+$a->strings["(Used for searching profiles, never shown to others)"] = "(Usato per cercare tra i profili, mai mostrato ad altri)";
+$a->strings["Tell us about yourself..."] = "Racconta di te...";
+$a->strings["Hobbies/Interests"] = "Hobbie/Interessi";
+$a->strings["Contact information and Social Networks"] = "Informazioni su contatti e Social network";
+$a->strings["Musical interests"] = "Interessi musicali";
+$a->strings["Books, literature"] = "Libri, letteratura";
+$a->strings["Television"] = "Televisione";
+$a->strings["Film/dance/culture/entertainment"] = "Film/danza/cultura/intrattenimento";
+$a->strings["Love/romance"] = "Amore/romanticismo";
+$a->strings["Work/employment"] = "Lavoro/impiego";
+$a->strings["School/education"] = "Scuola/educazione";
+$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Questo è il tuo profilo <strong>publico</strong>.<br /><strong>Potrebbe</strong> essere visto da chiunque attraverso internet.";
+$a->strings["Age: "] = "Età : ";
+$a->strings["Profiles"] = "Profili";
+$a->strings["Change profile photo"] = "Cambia la foto del profilo";
+$a->strings["Create New Profile"] = "Crea un nuovo profilo";
+$a->strings["Profile Image"] = "Immagine del Profilo";
+$a->strings["Visible to everybody"] = "Visibile a tutti";
+$a->strings["Edit visibility"] = "Modifica visibilità";
+$a->strings["Global Directory"] = "Elenco Globale";
+$a->strings["Site Directory"] = "Elenco del Sito";
+$a->strings["Gender: "] = "Genere:";
+$a->strings["No entries (some entries may be hidden)."] = "Nessuna voce (qualche voce potrebbe essere nascosta).";
+$a->strings["%s : Not a valid email address."] = "%s: Non è un indirizzo email valido.";
+$a->strings["Please join my network on %s"] = "Unisciti al mio social network su %s";
+$a->strings["%s : Message delivery failed."] = "%s: Consegna del messaggio fallita.";
+$a->strings["%d message sent."] = array(
+ 0 => "%d messaggio inviato.",
+ 1 => "%d messaggi inviati.",
+);
+$a->strings["Send invitations"] = "Invia inviti";
+$a->strings["Enter email addresses, one per line:"] = "Inserisci gli indirizzi email, uno per riga:";
+$a->strings["Please join my social network on %s"] = "Unisciti al mio social network su %s";
+$a->strings["To accept this invitation, please visit:"] = "Per accettare questo invito visita:";
+$a->strings["Once you have registered, please connect with me via my profile page at:"] = "Una volta registrato, connettiti con me sul mio profilo a:";
+$a->strings["Response from remote site was not understood."] = "La risposta dal sito remota non è stata capita.";
+$a->strings["Unexpected response from remote site: "] = "Risposta dal sito remoto inaspettata: ";
+$a->strings["Confirmation completed successfully."] = "Conferma completata con successo.";
+$a->strings["Remote site reported: "] = "Il sito remoto riporta: ";
+$a->strings["Temporary failure. Please wait and try again."] = "Errore temporaneo. Attendi e riprova.";
+$a->strings["Introduction failed or was revoked."] = "La presentazione è fallita o è stata revocata.";
+$a->strings["Unable to set contact photo."] = "Impossibile impostare la foto del contatto.";
+$a->strings["%1\$s is now friends with %2\$s"] = "%1\$s è ora amico di %2\$s";
+$a->strings["No user record found for '%s' "] = "Nessun utente trovato per '%s'";
+$a->strings["Our site encryption key is apparently messed up."] = "La nostra chiave di criptazione del sito è apparentemente incasinata.";
+$a->strings["Empty site URL was provided or URL could not be decrypted by us."] = "E' stato fornito un indirizzo vuoto o non possiamo decriptare l'indirizzo.";
+$a->strings["Contact record was not found for you on our site."] = "Il contatto non è stato trovato sul nostro sito.";
+$a->strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "L'ID fornito dal tuo sistema è duplicato sul nostro sistema. Dovrebbe funzionare se provi ancora.";
+$a->strings["Unable to set your contact credentials on our system."] = "Impossibile impostare le credenziali del tuo contatto sul nostro sistema.";
+$a->strings["Unable to update your contact profile details on our system"] = "Impossibile aggiornare i dettagli del tuo contatto sul nostro sistema";
+$a->strings["Connection accepted at %s"] = "Connession accettata su %s";
+$a->strings["Facebook disabled"] = "Facebook disabilitato";
+$a->strings["Updating contacts"] = "Aggiornamento contatti";
+$a->strings["Facebook API key is missing."] = "Chiave API Facebook mancante.";
+$a->strings["Facebook Connect"] = "Facebook Connect";
+$a->strings["Install Facebook connector for this account."] = "Installa Facebook connector per questo account";
+$a->strings["Remove Facebook connector"] = "Rimuovi Facebook connector";
+$a->strings["Post to Facebook by default"] = "Invia su Facebook di default";
+$a->strings["Facebook"] = "Facebook";
+$a->strings["Facebook Connector Settings"] = "Impostazioni Connettore Facebook";
+$a->strings["Post to Facebook"] = "Invia a Facebook";
+$a->strings["Post to Facebook cancelled because of multi-network access permission conflict."] = "Invio su Facebook annullato per un conflitto nei permessi di accesso.";
+$a->strings["Image: "] = "Immagine: ";
+$a->strings["View on Friendika"] = "Vedi su Friendika";
+$a->strings["Three Dimensional Tic-Tac-Toe"] = "Tic-Tac-Toe tridimensionale";
+$a->strings["3D Tic-Tac-Toe"] = "3D Tic-Tac-Toe";
+$a->strings["New game"] = "Nuovo gioco";
+$a->strings["New game with handicap"] = "Nuovo gioco con l'handicap";
+$a->strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "Tic-tac-toe tridimensionale è come il gioco tradizionale, solo che si gioca su livelli multipli contemporaneamente.";
+$a->strings["In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels."] = "In questo caso ci sono tra livelli. Puoi vincere facendo tre caselle in fila su ogni livello, anche verso l'alto, il basso e diagonalmente anche attraverso i diversi livelli.";
+$a->strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "L'handicap disabilita la casella centrale sul livello di mezzo, perchè il giocatore che si prende quella casella spesso ha un deciso vantaggio.";
+$a->strings["You go first..."] = "Cominci tu...";
+$a->strings["I'm going first this time..."] = "Comincio io questa volta...";
+$a->strings["You won!"] = "Hai vinto!";
+$a->strings["\"Cat\" game!"] = "Stallo!";
+$a->strings["I won!"] = "Ho vinto!";
+$a->strings["Randplace Settings"] = "Impostazioni Randplace";
+$a->strings["Enable Randplace Plugin"] = "Abilita il plugin Randplace";
+$a->strings["Select files to upload: "] = "Seleziona i file da caricare: ";
+$a->strings["Use the following controls only if the Java uploader [above] fails to launch."] = "Usa il seguente controllo solo se il il caricatore Java (qui sopra) non parte.";
+$a->strings["Upload a file"] = "Carica un file";
+$a->strings["Drop files here to upload"] = "Trascina un file qui per caricarlo";
+$a->strings["Failed"] = "Fallito";
+$a->strings["No files were uploaded."] = "Nessun file è stato caricato.";
+$a->strings["Uploaded file is empty"] = "Il file caricato è vuoto";
+$a->strings["Uploaded file is too large"] = "Il file caricato è troppo grande";
+$a->strings["File has an invalid extension, it should be one of "] = "Il file ha una estensione non valida, dovrebbe essere una di ";
+$a->strings["Upload was cancelled, or server error encountered"] = "Il caricamento è stato cancellato, o si è verificato un errore sul server";
+$a->strings["Post to StatusNet"] = "Invia a StatusNet";
+$a->strings["StatusNet Posting Settings"] = "Impostazioni di invio a StatusNet";
+$a->strings["No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation."] = "Nessuna coppia di chiavi consumer per StatusNet trovata. Regitstra il tuo Account Friendika come un client desktop sul tuo account StatusNet, copia la coppia di chiavi qui e inserisci l'url di base delle API.<br />Prima di registrare la tua coppia di chiavi OAuth, chiedi all'amministratore se esiste già una coppia di chiavi per questa installazione di Friendika sulla installazione di StatusNet che ti interessa.";
+$a->strings["OAuth Consumer Key"] = "OAuth Consumer Key";
+$a->strings["OAuth Consumer Secret"] = "OAuth Consumer Secret";
+$a->strings["Base API Path (remember the trailing /)"] = "Indirizzo di base per le API (ricorda la / alla fine)";
+$a->strings["To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet."] = "Per collegare il tuo account StatusNet, clicca sul bottone qui sotto per ottenere un codice di sicurezza da StatusNet, che dovrai copiare nel box più sotto per poi inviare la form. Solo i tuoi messaggi <strong>pubblci</strong> saranno inviati a StatusNet.";
+$a->strings["Log in with StatusNet"] = "Login con StatuNet";
+$a->strings["Copy the security code from StatusNet here"] = "Copia il codice di sicurezza da StatusNet qui";
+$a->strings["Currently connected to: "] = "Al momento collegato con:";
+$a->strings["If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well."] = "Se abilitato tutti i tuoi messaggi <strong>pubblici</strong> verranno inviati anche sull'account StatusNet associato.";
+$a->strings["Send public postings to StatusNet"] = "Invia messaggi pubblici su StatusNet";
+$a->strings["Clear OAuth configuration"] = "Cancella la configurazione OAuth";
+$a->strings["Post to Twitter"] = "Inva a Twitter";
+$a->strings["Twitter Posting Settings"] = "Impostazioni Invio a Twitter";
+$a->strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Nessuna coopia di chiavi per Twitter trovata. Contatta il tuo amministratore del sito.";
+$a->strings["At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Questa installazione di Friendika ha il plugin Twitter abilitato, ma non hai ancora collegato il tuo account locale con il tuo account su Twitter. Per farlo, clicca il bottone qui sotto per ottenere un PIN da Twitter, che dovrai copiare nel box più sotto per poi inviare la form. Solo i tuoi messaggi <strong>pubblici</strong> verranno inviati anche su Twitter.";
+$a->strings["Log in with Twitter"] = "Accedi con Twitter";
+$a->strings["Copy the PIN from Twitter here"] = "Copia il PIN da Twitter qui";
+$a->strings["If enabled all your <strong>public</strong> postings will be posted to the associated Twitter account as well."] = "Se abilitato tutti i tuoi messaggi <strong>pubblici</strong> verranno inviati anche sull'account Twitter associato.";
+$a->strings["Send public postings to Twitter"] = "Invia messaggi pubblici su Twitter";
+$a->strings["Gender:"] = "Genere:";
+$a->strings["Birthday:"] = "Compleanno:";
+$a->strings["j F, Y"] = "j F Y";
+$a->strings["j F"] = "j F";
+$a->strings["Age:"] = "Età:";
+$a->strings["<span class=\"heart\">&hearts;</span> Status:"] = "<span class=\"heart\">&hearts;</span> Stato sentimentale:";
+$a->strings["Homepage:"] = "Homepage:";
+$a->strings["Religion:"] = "Religione:";
+$a->strings["About:"] = "Informazioni:";
+$a->strings["Hobbies/Interests:"] = "Hobbie/Interessi:";
+$a->strings["Contact information and Social Networks:"] = "Informazioni su contatti e Social network:";
+$a->strings["Musical interests:"] = "Interessi musicali:";
+$a->strings["Books, literature:"] = "Libri, letteratura:";
+$a->strings["Television:"] = "Televisione:";
+$a->strings["Film/dance/culture/entertainment:"] = "Film/danza/cultura/intrattenimento:";
+$a->strings["Love/Romance:"] = "Amore/romanticismo:";
+$a->strings["Work/employment:"] = "Lavoro/impiego:";
+$a->strings["School/education:"] = "Scuola/educazione:";
+$a->strings["Unknown | Not categorised"] = "Sconosciuto | non categorizzato";
+$a->strings["Block immediately"] = "Blocca immediatamente";
+$a->strings["Shady, spammer, self-marketer"] = "Shady, spammer, self-marketer";
+$a->strings["Known to me, but no opinion"] = "Lo conosco, ma non ho oppinioni";
+$a->strings["OK, probably harmless"] = "E' ok, probabilmente innocuo";
+$a->strings["Reputable, has my trust"] = "Rispettabile, ha la mia fiducia";
+$a->strings["Frequently"] = "Frequentemente";
+$a->strings["Hourly"] = "Ogni ora";
+$a->strings["Twice daily"] = "Due volte al dì";
+$a->strings["Daily"] = "Giornalmente";
+$a->strings["Weekly"] = "Settimanalmente";
+$a->strings["Monthly"] = "Mensilmente";
+$a->strings["Male"] = "Maschio";
+$a->strings["Female"] = "Femmina";
+$a->strings["Currently Male"] = "Al momento maschio";
+$a->strings["Currently Female"] = "Al momento femmina";
+$a->strings["Mostly Male"] = "Prevalentemente maschio";
+$a->strings["Mostly Female"] = "Prevalentemente femmina";
+$a->strings["Transgender"] = "Transgenere";
+$a->strings["Intersex"] = "Bisessuale";
+$a->strings["Transsexual"] = "Transsessuale";
+$a->strings["Hermaphrodite"] = "Ermafrodito";
+$a->strings["Neuter"] = "Neutro";
+$a->strings["Non-specific"] = "Non-specifico";
+$a->strings["Other"] = "Altro";
+$a->strings["Undecided"] = "Indeciso";
+$a->strings["Males"] = "Maschi";
+$a->strings["Females"] = "Femmine";
+$a->strings["Gay"] = "Gay";
+$a->strings["Lesbian"] = "Lesbica";
+$a->strings["No Preference"] = "Nessuna preferenza";
+$a->strings["Bisexual"] = "Bisessuale";
+$a->strings["Autosexual"] = "Autosessuale";
+$a->strings["Abstinent"] = "Astinente";
+$a->strings["Virgin"] = "Vergine";
+$a->strings["Deviant"] = "Deviato";
+$a->strings["Fetish"] = "Fetish";
+$a->strings["Oodles"] = "Un sacco";
+$a->strings["Nonsexual"] = "Asessuato";
+$a->strings["Single"] = "Single";
+$a->strings["Lonely"] = "Solitario";
+$a->strings["Available"] = "Disoponibile";
+$a->strings["Unavailable"] = "Non disponibile";
+$a->strings["Dating"] = "Incontro";
+$a->strings["Unfaithful"] = "Infedele";
+$a->strings["Sex Addict"] = "Sesso-dipendente";
+$a->strings["Friends"] = "Amici";
+$a->strings["Friends/Benefits"] = "Amici con benefici";
+$a->strings["Casual"] = "Casual";
+$a->strings["Engaged"] = "Impegnato";
+$a->strings["Married"] = "Sposato";
+$a->strings["Partners"] = "Partners";
+$a->strings["Cohabiting"] = "Coinquilino";
+$a->strings["Happy"] = "Felice";
+$a->strings["Not Looking"] = "Non in cerca";
+$a->strings["Swinger"] = "Scambista";
+$a->strings["Betrayed"] = "Tradito";
+$a->strings["Separated"] = "Separato";
+$a->strings["Unstable"] = "Instabile";
+$a->strings["Divorced"] = "Divorziato";
+$a->strings["Widowed"] = "Vedovo";
+$a->strings["Uncertain"] = "Incerto";
+$a->strings["Complicated"] = "Complicato";
+$a->strings["Don't care"] = "Non interessa";
+$a->strings["Ask me"] = "Chiedimelo";
+$a->strings["Embedding disabled"] = "Inclusione disabilitata";
+$a->strings["Create a new group"] = "Crea un nuovo gruppo";
+$a->strings["Everybody"] = "Tutti";
+$a->strings["Logout"] = "Esci";
+$a->strings["Login"] = "Accedi";
+$a->strings["Home"] = "Home";
+$a->strings["Apps"] = "Applicazioni";
+$a->strings["Directory"] = "Elenco";
+$a->strings["Network"] = "Rete";
+$a->strings["Notifications"] = "Notifiche";
+$a->strings["Manage"] = "Gestisci";
+$a->strings["Settings"] = "Impostazioni";
+$a->strings["Logged out."] = "Sei uscito.";
+$a->strings["Miscellaneous"] = "Varie";
+$a->strings["less than a second ago"] = "meno di un secondo fa";
+$a->strings["year"] = "anno";
+$a->strings["years"] = "anni";
+$a->strings["month"] = "mese";
+$a->strings["months"] = "mesi";
+$a->strings["week"] = "settimana";
+$a->strings["weeks"] = "settimane";
+$a->strings["day"] = "giorno";
+$a->strings["hour"] = "ora";
+$a->strings["hours"] = "ore";
+$a->strings["minute"] = "minuto";
+$a->strings["minutes"] = "minuti";
+$a->strings["second"] = "secondo";
+$a->strings["seconds"] = "secondi";
+$a->strings[" ago"] = " fa";
+$a->strings["Image/photo"] = "Immagine/foto";
+$a->strings["Cannot locate DNS info for database server '%s'"] = "Non trovo le informazioni DNS per il database server '%s'";
+$a->strings["Visible To:"] = "Visibile a:";
+$a->strings["Groups"] = "Gruppi";
+$a->strings["Except For:"] = "Eccetto per:";
+$a->strings["(no subject)"] = "(nessun oggetto)";
+$a->strings["You have a new follower at "] = "Hai un nuovo seguace su ";
+$a->strings["View %s's profile"] = "Vedi il profilo di %s";
+$a->strings["View in context"] = "Vedi nel contesto";
+$a->strings["See more posts like this"] = "Vedi altri post come questo";
+$a->strings["See all %d comments"] = "Vedi tutti i %d commenti";
+$a->strings["to"] = "a";
+$a->strings["Wall-to-Wall"] = "Bacheca-A-Bacheca";
+$a->strings["via Wall-To-Wall:"] = "sulla sua Bacheca:";
+$a->strings["View status"] = "Vedi stato";
+$a->strings["View profile"] = "Vedi profilo";
+$a->strings["View photos"] = "Vedi foto";
+$a->strings["View recent"] = "Visualizza recente";
+$a->strings["Send PM"] = "Invia messaggio privato";
+$a->strings["%s likes this."] = "Piace a %s.";
+$a->strings["%s doesn't like this."] = "Non piace a %s.";
+$a->strings["<span %1\$s>%2\$d people</span> like this."] = "Piace a <span %1\$s>%2\$d persone</span>.";
+$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = "Non piace a <span %1\$s>%2\$d persone</span>.";
+$a->strings["and"] = "e";
+$a->strings[", and %d other people"] = ", e altre %d persone";
+$a->strings["%s like this."] = "Piace a %s.";
+$a->strings["%s don't like this."] = "Non piace a %s.";
+$a->strings["Visible to <strong>everybody</strong>"] = "Vsibile a <strong>tutti</strong>";
+$a->strings["Please enter a YouTube link:"] = "Inserisci l'indirizzo di YouTube:";
+$a->strings["Please enter a video(.ogg) link/URL:"] = "Inserisci il link a un video (.ogg):";
+$a->strings["Please enter an audio(.ogg) link/URL:"] = "Inserisci il link a un audio (.ogg):";
+$a->strings["Where are you right now?"] = "Dove sei ora?";
+$a->strings["Enter a title for this item"] = "Inserisci un titolo per questo elemento";
+$a->strings["Set title"] = "Imposta il titolo";
+$a->strings["Delete this item?"] = "Cancellare questo elemento?";
+$a->strings["Create a New Account"] = "Crea un Nuovo Account";
+$a->strings["Nickname or Email address: "] = "Soprannome o indirizzo Email: ";
+$a->strings["Password: "] = "Password: ";
+$a->strings["Nickname/Email/OpenID: "] = "Soprannome/Email/OpenID: ";
+$a->strings["Password (if not OpenID): "] = "Password (se non OpenID): ";
+$a->strings["Forgot your password?"] = "Dimenticata la password?";
+$a->strings["prev"] = "prec";
+$a->strings["first"] = "primo";
+$a->strings["last"] = "ultimo";
+$a->strings["next"] = "succ";
+$a->strings["No contacts"] = "Nessun contatto";
+$a->strings["%d Contact"] = array(
+ 0 => "%d Contatto",
+ 1 => "%d Contatti",
+);
+$a->strings["Connect"] = "Connetti";
+$a->strings["Location:"] = "Posizione:";
+$a->strings[", "] = ", ";
+$a->strings["Status:"] = "Stato:";
+$a->strings["Monday"] = "Lunedì";
+$a->strings["Tuesday"] = "Martedì";
+$a->strings["Wednesday"] = "Mercoledì";
+$a->strings["Thursday"] = "Giovedì";
+$a->strings["Friday"] = "Venerdì";
+$a->strings["Saturday"] = "Sabato";
+$a->strings["Sunday"] = "Domenica";
+$a->strings["January"] = "Gennaio";
+$a->strings["February"] = "Febbraio";
+$a->strings["March"] = "Marzo";
+$a->strings["April"] = "Aprile";
+$a->strings["May"] = "Maggio";
+$a->strings["June"] = "Giugno";
+$a->strings["July"] = "Luglio";
+$a->strings["August"] = "Agosto";
+$a->strings["September"] = "Settembre";
+$a->strings["October"] = "Ottobre";
+$a->strings["November"] = "Novembre";
+$a->strings["December"] = "Dicembre";
+$a->strings["g A l F d"] = "g A l d F";
+$a->strings["Birthday Reminders"] = "Promemoria Compleanni";
+$a->strings["Birthdays this week:"] = "Compleanni questa settimana:";
+$a->strings["(Adjusted for local time)"] = "(Convertiti all'ora locale)";
+$a->strings["[today]"] = "[oggi]";
+$a->strings["link to source"] = "Collegamento all'originale";
+$a->strings[" welcomes "] = " da il benvenuto ";
+$a->strings["Facebook status update failed."] = "Aggiornamento dello stato su Facebook fallito.";
+$a->strings["Could not save uploaded file."] = "Non posso salvare il file caricato.";
+$a->strings["The upload was cancelled, or server error encountered"] = "Il caricamento è stato cancellato, o si è verificato un errore sul server";
+$a->strings["Server error. Upload directory isn"] = "Errore sul server.";
+$a->strings["Membership list updated."] = "Lista adesioni aggiornata.";
+$a->strings["Members:"] = "Membri:";
+$a->strings["Not Found"] = "Non Trovato";
+$a->strings["Page not found."] = "Pagina non trovata.";
diff --git a/view/en/jot-header.tpl b/view/jot-header.tpl
index fe818410e..3057618b2 100644
--- a/view/en/jot-header.tpl
+++ b/view/jot-header.tpl
@@ -3,6 +3,7 @@
<script language="javascript" type="text/javascript">
var editor;
+var textlen = 0;
tinyMCE.init({
theme : "advanced",
@@ -24,28 +25,35 @@ tinyMCE.init({
forced_root_block : '',
convert_urls: false,
content_css: "$baseurl/view/custom_tinymce.css",
- //Character count
theme_advanced_path : false,
setup : function(ed) {
+ //Character count
ed.onKeyUp.add(function(ed, e) {
var txt = tinyMCE.activeEditor.getContent();
- var text = txt.length;
- if(txt.length <= 140) {
+ textlen = txt.length;
+ if(textlen != 0 && $('#jot-perms-icon').is('.unlock')) {
+ $('#profile-jot-desc').html(ispublic);
+ }
+ else {
+ $('#profile-jot-desc').html('&nbsp;');
+ }
+
+ if(textlen <= 140) {
$('#character-counter').removeClass('red');
$('#character-counter').removeClass('orange');
$('#character-counter').addClass('grey');
}
- if((txt.length > 140) && (txt .length <= 420)) {
+ if((textlen > 140) && (textlen <= 420)) {
$('#character-counter').removeClass('grey');
$('#character-counter').removeClass('red');
$('#character-counter').addClass('orange');
}
- if(txt.length > 420) {
+ if(textlen > 420) {
$('#character-counter').removeClass('grey');
$('#character-counter').removeClass('orange');
$('#character-counter').addClass('red');
}
- $('#character-counter').text(text);
+ $('#character-counter').text(textlen);
});
ed.onInit.add(function(ed) {
@@ -58,6 +66,7 @@ tinyMCE.init({
</script>
<script type="text/javascript" src="include/ajaxupload.js" ></script>
<script>
+ var ispublic = '$ispublic';
$(document).ready(function() {
var uploader = new window.AjaxUpload(
'wall-image-upload',
@@ -74,11 +83,13 @@ tinyMCE.init({
var selstr;
$('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
selstr = $(this).text();
- $('#profile-jot-perms img').attr('src', 'images/lock_icon.gif');
+ $('#jot-perms-icon').removeClass('unlock').addClass('lock');
+ $('#jot-public').hide();
$('.profile-jot-net input').attr('disabled', 'disabled');
});
if(selstr == null) {
- $('#profile-jot-perms img').attr('src', 'images/unlock_icon.gif');
+ $('#jot-perms-icon').removeClass('lock').addClass('unlock');
+ $('#jot-public').show();
$('.profile-jot-net input').attr('disabled', false);
}
@@ -87,8 +98,9 @@ tinyMCE.init({
});
function jotGetLink() {
- reply = prompt("Please enter a link URL:");
+ reply = prompt("$linkurl");
if(reply && reply.length) {
+ reply = bin2hex(reply);
$('#profile-rotator').show();
$.get('parse_url?url=' + reply, function(data) {
tinyMCE.execCommand('mceInsertRawHTML',false,data);
@@ -98,19 +110,49 @@ tinyMCE.init({
}
function jotGetVideo() {
- reply = prompt("Please enter a YouTube link:");
+ reply = prompt("$utubeurl");
if(reply && reply.length) {
tinyMCE.execCommand('mceInsertRawHTML',false,'[youtube]' + reply + '[/youtube]');
}
}
+ function jotVideoURL() {
+ reply = prompt("$vidurl");
+ if(reply && reply.length) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,'[video]' + reply + '[/video]');
+ }
+ }
+
+ function jotAudioURL() {
+ reply = prompt("$audurl");
+ if(reply && reply.length) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,'[audio]' + reply + '[/audio]');
+ }
+ }
+
+
function jotGetLocation() {
- reply = prompt("Where are you right now?", $('#jot-location').val());
+ reply = prompt("$whereareu", $('#jot-location').val());
if(reply && reply.length) {
$('#jot-location').val(reply);
}
}
+ function jotTitle() {
+ reply = prompt("$title", $('#jot-title').val());
+ if(reply && reply.length) {
+ $('#jot-title').val(reply);
+ }
+ }
+
+ function jotShare(id) {
+ $('#like-rotator-' + id).show();
+ $.get('share/' + id, function(data) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,data);
+ $('#like-rotator-' + id).hide();
+ $(window).scrollTop(0);
+ });
+ }
function linkdropper(event) {
var linkFound = event.dataTransfer.types.contains("text/uri-list");
diff --git a/view/jot.tpl b/view/jot.tpl
index 68139ddc0..0c9883b11 100644
--- a/view/jot.tpl
+++ b/view/jot.tpl
@@ -7,11 +7,12 @@
<div id="profile-jot-banner-end"></div>
<form id="profile-jot-form" action="$action" method="post" >
- <input type="hidden" name="type" value="wall" />
+ <input type="hidden" name="type" value="$ptyp" />
<input type="hidden" name="profile_uid" value="$profile_uid" />
<input type="hidden" name="return" value="$return_path" />
<input type="hidden" name="location" id="jot-location" value="$defloc" />
<input type="hidden" name="coord" id="jot-coord" value="" />
+ <input type="hidden" name="title" id="jot-title" value="" />
<input type="hidden" name="post_id" value="$post_id" />
<textarea rows="5" cols="64" class="profile-jot-text" id="profile-jot-text" name="body" >$content</textarea>
@@ -20,20 +21,30 @@
<div id="profile-jot-submit-wrapper" >
<input type="submit" id="profile-jot-submit" name="submit" value="$share" />
<div id="profile-upload-wrapper" style="display: $visitor;" >
- <div id="wall-image-upload-div" ><img id="wall-image-upload" src="images/camera-icon.gif" alt="$upload" title="$upload" /></div>
+ <div id="wall-image-upload-div" ><a href="#" onclick="return false;" id="wall-image-upload" class="icon camera" title="$upload"></a></div>
</div>
<div id="profile-link-wrapper" style="display: $visitor;" ondragenter="linkdropper(event);" ondragover="linkdropper(event);" ondrop="linkdrop(event);" >
- <img id="profile-link" src="images/link-icon.gif" alt="$weblink" title="$weblink" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink();" />
+ <a id="profile-link" class="icon link" title="$weblink" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink(); return false;"></a>
</div>
<div id="profile-youtube-wrapper" style="display: $visitor;" >
- <img id="profile-video" src="images/youtube_icon.gif" alt="$youtube" title="$youtube" onclick="jotGetVideo();" />
+ <a id="profile-youtube" class="icon youtube" title="$youtube" onclick="jotGetVideo();return false;"></a>
+ </div>
+ <div id="profile-video-wrapper" style="display: $visitor;" >
+ <a id="profile-video" class="icon video" title="$video" onclick="jotVideoURL();return false;"></a>
+ </div>
+ <div id="profile-audio-wrapper" style="display: $visitor;" >
+ <a id="profile-audio" class="icon audio" title="$audio" onclick="jotAudioURL();return false;"></a>
</div>
<div id="profile-location-wrapper" style="display: $visitor;" >
- <img id="profile-location" src="images/globe.gif" alt="$setloc" title="$setloc" onclick="jotGetLocation();" />
+ <a id="profile-location" class="icon globe" title="$setloc" onclick="jotGetLocation();return false;"></a>
</div>
<div id="profile-nolocation-wrapper" style="display: none;" >
- <img id="profile-nolocation" src="images/noglobe.gif" alt="$noloc" title="$noloc" onclick="jotClearLocation();" />
+ <a id="profile-nolocation" class="icon noglobe" title="$noloc" onclick="jotClearLocation();return false;"></a>
+ </div>
+ <div id="profile-title-wrapper" style="display: $visitor;" >
+ <a id="profile-title" class="icon article" title="$title" onclick="jotTitle();return false;"></a>
</div>
+
<div id="profile-jot-plugin-wrapper">
$jotplugins
</div>
@@ -41,14 +52,17 @@
<div id="profile-rotator-wrapper" style="display: $visitor;" >
<img id="profile-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
</div>
- <div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" ><img id="jot-perms-icon" src="images/$lockstate_icon.gif" alt="$permset" title="$permset" onClick="openClose('profile-jot-acl-wrapper'); openClose('profile-jot-email-wrapper'); openClose('profile-jot-networks');" />$bang</div>
+ <div id="profile-jot-perms" class="profile-jot-perms" style="display: $pvisit;" >
+ <a id="jot-perms-icon" class="icon $lockstate" title="$permset" onClick="openClose('profile-jot-acl-wrapper'); openClose('profile-jot-email-wrapper'); openClose('profile-jot-networks');return false;"></a>$bang
+ </div>
<div id="profile-jot-perms-end"></div>
<div id="profile-jot-email-wrapper" style="display: none;" >
- <div id="profile-jot-email-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle">
- <div id="profile-jot-email-end"></div>
+ <div id="profile-jot-email-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle" />
+ <div id="profile-jot-email-end"></div>
</div>
+
<div id="profile-jot-networks" style="display: none;" >
- $jotnets
+ $jotnets
</div>
<div id="profile-jot-networks-end"></div>
<div id="profile-jot-acl-wrapper" style="display: none;" >$acl</div>
diff --git a/view/like.tpl b/view/like.tpl
index e36a624a4..ce5af04ce 100644
--- a/view/like.tpl
+++ b/view/like.tpl
@@ -1,5 +1,6 @@
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
- <img src="images/like.gif" alt="$likethis" title="$likethis" onclick="dolike($id,'like');" />
- <img src="images/dislike.gif" alt="$nolike" title="$nolike" onclick="dolike($id,'dislike');" />
+ <a href="#" class="icon like"title="$likethis" onclick="dolike($id,'like'); return false"></a>
+ <a href="#" class="icon dislike" title="$nolike" onclick="dolike($id,'dislike'); return false"></a>
+ <a href="#" class="icon recycle wall-item-share-buttons" title="$share"onclick="jotShare($id); return false"></a>
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
</div>
diff --git a/view/like_noshare.tpl b/view/like_noshare.tpl
new file mode 100644
index 000000000..2c467c3c2
--- /dev/null
+++ b/view/like_noshare.tpl
@@ -0,0 +1,5 @@
+<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
+ <a href="#" class="icon like"title="$likethis" onclick="dolike($id,'like'); return false"></a>
+ <a href="#" class="icon dislike" title="$nolike" onclick="dolike($id,'dislike'); return false"></a>
+ <img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
+ </div>
diff --git a/view/fr/lostpass.tpl b/view/lostpass.tpl
index a7040c149..cd3644157 100644
--- a/view/fr/lostpass.tpl
+++ b/view/lostpass.tpl
@@ -1,17 +1,17 @@
-<h3>Forgot your Password?</h3>
+<h3>$title</h3>
<p id="lostpass-desc">
-Enter your email address and submit to have your password reset. Then check your email for further instructions.
+$desc
</p>
<form action="lostpass" method="post" >
<div id="login-name-wrapper">
- <label for="login-name" id="label-login-name">Nickname or Email: </label>
+ <label for="login-name" id="label-login-name">$name</label>
<input type="text" maxlength="60" name="login-name" id="login-name" value="" />
</div>
<div id="login-extra-end"></div>
<div id="login-submit-wrapper" >
- <input type="submit" name="submit" id="lostpass-submit-button" value="Reset" />
+ <input type="submit" name="submit" id="lostpass-submit-button" value="$submit" />
</div>
<div id="login-submit-end"></div>
</form>
diff --git a/view/mail_list.tpl b/view/mail_list.tpl
index 1ef714f7a..8c8e78276 100644
--- a/view/mail_list.tpl
+++ b/view/mail_list.tpl
@@ -8,6 +8,9 @@
<div class="mail-list-subject"><a href="message/$id" class="mail-list-link">$subject</a></div>
</div>
</div>
-<div class="mail-list-delete-wrapper" id="mail-list-delete-wrapper-$id" ><a href="message/dropconv/$id" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" id="mail-list-delete-icon-$id" class="mail-list-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a></div><div class="mail-list-delete-end"></div>
+<div class="mail-list-delete-wrapper" id="mail-list-delete-wrapper-$id" >
+ <a href="message/dropconv/$id" onclick="return confirmDelete();" title="$delete" class="icon drophide mail-list-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>
+</div>
+<div class="mail-list-delete-end"></div>
<div class="mail-list-outside-wrapper-end"></div>
diff --git a/view/fr/msg-header.tpl b/view/msg-header.tpl
index 174e6c985..77e58bc09 100644
--- a/view/fr/msg-header.tpl
+++ b/view/msg-header.tpl
@@ -71,7 +71,7 @@ tinyMCE.init({
});
function jotGetLink() {
- reply = prompt("Please enter a link URL:");
+ reply = prompt("$linkurl");
if(reply && reply.length) {
$('#profile-rotator').show();
$.get('parse_url?url=' + reply, function(data) {
diff --git a/view/nav.tpl b/view/nav.tpl
new file mode 100644
index 000000000..7e76811d9
--- /dev/null
+++ b/view/nav.tpl
@@ -0,0 +1,44 @@
+$langselector
+
+<div id="site-location">$sitelocation</div>
+
+{{ if $nav.logout }}<a id="nav-logout-link" class="nav-link $nav.logout.2" href="$nav.logout.0">$nav.logout.1</a> {{ endif }}
+{{ if $nav.login }}<a id="nav-login-link" class="nav-login-link $nav.login.2" href="$nav.login.0">$nav.login.1</a> {{ endif }}
+
+<span id="nav-link-wrapper" >
+
+{{ if $nav.register }}<a id="nav-register-link" class="nav-commlink $nav.register.2" href="$nav.register.0">$nav.register.1</a>{{ endif }}
+
+<a id="nav-help-link" class="nav-link $nav.help.2" target="friendika-help" href="$nav.help.0">$nav.help.1</a>
+
+{{ if $nav.apps }}<a id="nav-apps-link" class="nav-link $nav.apps.2" href="$nav.apps.0">$nav.apps.1</a>{{ endif }}
+
+<a id="nav-search-link" class="nav-link $nav.search.2" href="$nav.search.0">$nav.search.1</a>
+<a id="nav-directory-link" class="nav-link $nav.directory.2" href="$nav.directory.0">$nav.directory.1</a>
+
+{{ if $nav.network }}
+<a id="nav-network-link" class="nav-commlink $nav.network.2" href="$nav.network.0">$nav.network.1</a>
+<span id="net-update" class="nav-ajax-left"></span>
+{{ endif }}
+{{ if $nav.home }}
+<a id="nav-home-link" class="nav-commlink $nav.home.2" href="$nav.home.0">$nav.home.1</a>
+<span id="home-update" class="nav-ajax-left"></span>
+{{ endif }}
+{{ if $nav.notifications }}
+<a id="nav-notify-link" class="nav-commlink $nav.notifications.2" href="$nav.notifications.0">$nav.notifications.1</a>
+<span id="notify-update" class="nav-ajax-left"></span>
+{{ endif }}
+{{ if $nav.messages }}
+<a id="nav-messages-link" class="nav-commlink $nav.messages.2" href="$nav.messages.0">$nav.messages.1</a>
+<span id="mail-update" class="nav-ajax-left"></span>
+{{ endif }}
+
+{{ if $nav.manage }}<a id="nav-manage-link" class="nav-commlink $nav.manage.2" href="$nav.manage.0">$nav.manage.1</a>{{ endif }}
+
+{{ if $nav.settings }}<a id="nav-settings-link" class="nav-link $nav.settings.2" href="$nav.settings.0">$nav.settings.1</a>{{ endif }}
+{{ if $nav.profiles }}<a id="nav-profiles-link" class="nav-link $nav.profiles.2" href="$nav.profiles.0">$nav.profiles.1</a>{{ endif }}
+
+{{ if $nav.contacts }}<a id="nav-contacts-link" class="nav-link $nav.contacts.2" href="$nav.contacts.0">$nav.contacts.1</a>{{ endif }}
+</span>
+<span id="nav-end"></span>
+<span id="banner">$banner</span>
diff --git a/view/oexchange_xrd.tpl b/view/oexchange_xrd.tpl
new file mode 100644
index 000000000..c7e6df498
--- /dev/null
+++ b/view/oexchange_xrd.tpl
@@ -0,0 +1,33 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
+
+ <Subject>$base</Subject>
+
+ <Property
+ type="http://www.oexchange.org/spec/0.8/prop/vendor">Friendika</Property>
+ <Property
+ type="http://www.oexchange.org/spec/0.8/prop/title">Friendika Social Network</Property>
+ <Property
+ type="http://www.oexchange.org/spec/0.8/prop/name">Friendika</Property>
+ <Property
+ type="http://www.oexchange.org/spec/0.8/prop/prompt">Send to Friendika</Property>
+
+ <Link
+ rel="icon"
+ href="$base/images/friendika-16.png"
+ type="image/png"
+ />
+
+ <Link
+ rel="icon32"
+ href="$base/images/friendika-32.png"
+ type="image/png"
+ />
+
+ <Link
+ rel= "http://www.oexchange.org/spec/0.8/rel/offer"
+ href="$base/oexchange"
+ type="text/html"
+ />
+</XRD>
+
diff --git a/view/opensearch.tpl b/view/opensearch.tpl
new file mode 100644
index 000000000..374fcaac9
--- /dev/null
+++ b/view/opensearch.tpl
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
+ <ShortName>Friendika@$nodename</ShortName>
+ <Description>Search in Friendika@$nodename</Description>
+ <Contact>http://bugs.friendika.com/</Contact>
+ <Image height="16" width="16" type="image/png">$baseurl/images/friendika-16.png</Image>
+ <Image height="64" width="64" type="image/png">$baseurl/images/friendika-64.png</Image>
+ <Url type="text/html"
+ template="$baseurl/search?search={searchTerms}"/>
+ <Url type="application/opensearchdescription+xml"
+ rel="self"
+ template="$baseurl/opensearch" />
+</OpenSearchDescription> \ No newline at end of file
diff --git a/view/en/pagetypes.tpl b/view/pagetypes.tpl
index 2036614ab..b27025579 100644
--- a/view/en/pagetypes.tpl
+++ b/view/pagetypes.tpl
@@ -1,25 +1,25 @@
<div id="settings-normal-wrapper">
- <label id="settings-normal-label" for="settings-normal">Normal Profile</label>
+ <label id="settings-normal-label" for="settings-normal">$n_l</label>
<input type="radio" name="page-flags" id="settings-normal" $normal_selected value="$page_normal" />
- <span id="settings-normal-desc">This account is a normal personal profile</span>
+ <span id="settings-normal-desc">$n_d</span>
</div>
<div id="settings-normal-break" ></div>
<div id="settings-soapbox-wrapper">
- <label id="settings-soapbox-label" for="settings-soapbox">Soapbox Profile</label>
+ <label id="settings-soapbox-label" for="settings-soapbox">$s_l</label>
<input type="radio" name="page-flags" id="settings-soapbox" $soapbox_selected value="$page_soapbox" />
- <span id="settings-soapbox-desc">Automatically approve all connection/friend requests as read-only fans</span>
+ <span id="settings-soapbox-desc">$s_d</span>
</div>
<div id="settings-soapbox-break" ></div>
<div id="settings-community-wrapper">
- <label id="settings-community-label" for="settings-community">Community/Celebrity Profile</label>
+ <label id="settings-community-label" for="settings-community">$c_l</label>
<input type="radio" name="page-flags" id="settings-community" $community_selected value="$page_community" />
- <span id="settings-community-desc">Automatically approve all connection/friend requests as read-write fans</span>
+ <span id="settings-community-desc">$c_d</span>
</div>
<div id="settings-community-break" ></div>
<div id="settings-freelove-wrapper">
- <label id="settings-freelove-label" for="settings-freelove">Automatic Friend Profile</label>
+ <label id="settings-freelove-label" for="settings-freelove">$f_l</label>
<input type="radio" name="page-flags" id="settings-freelove" $freelove_selected value="$page_freelove" />
- <span id="settings-freelove-desc">Automatically approve all connection/friend requests as friends</span>
+ <span id="settings-freelove-desc">$f_d</span>
</div>
<div id="settings-freelove-break" ></div>
diff --git a/view/photo_item.tpl b/view/photo_item.tpl
index ca9ead592..e574628d0 100644
--- a/view/photo_item.tpl
+++ b/view/photo_item.tpl
@@ -16,7 +16,7 @@
<div class="wall-item-wrapper-end"></div>
<div class="wall-item-comment-separator"></div>
$comment
-</div>
<div class="wall-item-outside-wrapper-end$indent" ></div>
+</div>
diff --git a/view/photo_view.tpl b/view/photo_view.tpl
new file mode 100644
index 000000000..5dbcabadf
--- /dev/null
+++ b/view/photo_view.tpl
@@ -0,0 +1,37 @@
+<div id="live-display"></div>
+<h3><a href="$album.0">$album.1</a></h3>
+
+<div id="photo-edit-link-wrap">
+{{ if $tools }}
+<a id="photo-edit-link" href="$tools.edit.0">$tools.edit.1</a>
+|
+<a id="photo-toprofile-link" href="$tools.profile.0">$tools.profile.1</a>
+{{ endif }}
+{{ if $lock }} | <img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,'photo/$id');" /> {{ endif }}
+</div>
+
+{{ if $prevlink }}<div id="photo-prev-link"><a href="$prevlink.0">$prevlink.1</a></div>{{ endif }}
+<div id="photo-photo"><a href="$photo.href" title="$photo.title"><img src="$photo.src" /></a></div>
+{{ if $nextlink }}<div id="photo-next-link"><a href="$nextlink.0">$nextlink.1</a></div>{{ endif }}
+<div id="photo-photo-end"></div>
+<div id="photo-caption" >$desc</div>
+{{ if $tags }}
+<div id="in-this-photo-text">$tags.0</div>
+<div id="in-this-photo">$tags.1</div>
+{{ endif }}
+{{ if $tags.2 }}<div id="tag-remove"><a href="$tags.2">$tags.3</a></div>{{ endif }}
+
+{{ if $edit }}$edit{{ endif }}
+
+{{ if $likebuttons }}
+<div id="photo-like-div">
+ $likebuttons
+ $like
+ $dislike
+</div>
+{{ endif }}
+
+$comments
+
+$paginate
+
diff --git a/view/profed_head.tpl b/view/profed_head.tpl
index 7958c7ace..1c1efdbe5 100644
--- a/view/profed_head.tpl
+++ b/view/profed_head.tpl
@@ -6,22 +6,27 @@
tinyMCE.init({
theme : "advanced",
mode : "textareas",
- plugins : "bbcode",
- theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor",
+ plugins : "bbcode,paste",
+ theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "center",
- theme_advanced_styles : "Code=codeStyle;Quote=quoteStyle",
- content_css : "bbcode.css",
+ theme_advanced_blockformats : "blockquote,code",
+ paste_text_sticky : true,
entity_encoding : "raw",
add_unload_trigger : false,
remove_linebreaks : false,
force_p_newlines : false,
force_br_newlines : true,
forced_root_block : '',
- content_css: "$baseurl/view/custom_tinymce.css"
-
+ content_css: "$baseurl/view/custom_tinymce.css",
+ theme_advanced_path : false,
+ setup : function(ed) {
+ ed.onInit.add(function(ed) {
+ ed.pasteAsPlainText = true;
+ });
+ }
});
diff --git a/view/en/profile-hide-friends.tpl b/view/profile-hide-friends.tpl
index 54ade00fe..9ecacfbe0 100644
--- a/view/en/profile-hide-friends.tpl
+++ b/view/profile-hide-friends.tpl
@@ -1,15 +1,15 @@
<p id="hide-friends-text">
-Hide my contact/friend list from viewers of this profile?
+$desc
</p>
<div id="hide-friends-yes-wrapper">
- <label id="hide-friends-yes-label" for="hide-friends-yes">Yes</label>
+ <label id="hide-friends-yes-label" for="hide-friends-yes">$yes_str</label>
<input type="radio" name="hide-friends" id="hide-friends-yes" $yes_selected value="1" />
<div id="hide-friends-break" ></div>
</div>
<div id="hide-friends-no-wrapper">
- <label id="hide-friends-no-label" for="hide-friends-no">No</label>
+ <label id="hide-friends-no-label" for="hide-friends-no">$no_str</label>
<input type="radio" name="hide-friends" id="hide-friends-no" $no_selected value="0" />
<div id="hide-friends-end"></div>
diff --git a/view/fr/profile-in-directory.tpl b/view/profile-in-directory.tpl
index 98af3e59a..56b28d37e 100644
--- a/view/fr/profile-in-directory.tpl
+++ b/view/profile-in-directory.tpl
@@ -1,15 +1,15 @@
<p id="profile-in-directory">
-Publish your default profile in site directory?
+$desc
</p>
<div id="profile-in-dir-yes-wrapper">
- <label id="profile-in-dir-yes-label" for="profile-in-dir-yes">Yes</label>
+ <label id="profile-in-dir-yes-label" for="profile-in-dir-yes">$yes_str</label>
<input type="radio" name="profile_in_directory" id="profile-in-dir-yes" $yes_selected value="1" />
<div id="profile-in-dir-break" ></div>
</div>
<div id="profile-in-dir-no-wrapper">
- <label id="profile-in-dir-no-label" for="profile-in-dir-no">No</label>
+ <label id="profile-in-dir-no-label" for="profile-in-dir-no">$no_str</label>
<input type="radio" name="profile_in_directory" id="profile-in-dir-no" $no_selected value="0" />
<div id="profile-in-dir-end"></div>
diff --git a/view/fr/profile-in-netdir.tpl b/view/profile-in-netdir.tpl
index be111aa67..882ad2d17 100644
--- a/view/fr/profile-in-netdir.tpl
+++ b/view/profile-in-netdir.tpl
@@ -1,15 +1,15 @@
<p id="profile-in-directory">
-Publish your default profile in global social directory?
+$desc
</p>
<div id="profile-in-netdir-yes-wrapper">
- <label id="profile-in-netdir-yes-label" for="profile-in-netdir-yes">Yes</label>
+ <label id="profile-in-netdir-yes-label" for="profile-in-netdir-yes">$yes_str</label>
<input type="radio" name="profile_in_netdirectory" id="profile-in-netdir-yes" $yes_selected value="1" />
<div id="profile-in-netdir-break" ></div>
</div>
<div id="profile-in-netdir-no-wrapper">
- <label id="profile-in-netdir-no-label" for="profile-in-netdir-no">No</label>
+ <label id="profile-in-netdir-no-label" for="profile-in-netdir-no">$no_str</label>
<input type="radio" name="profile_in_netdirectory" id="profile-in-netdir-no" $no_selected value="0" />
<div id="profile-in-netdir-end"></div>
diff --git a/view/de/profile_edit.tpl b/view/profile_edit.tpl
index 09a761023..053e19594 100644
--- a/view/de/profile_edit.tpl
+++ b/view/profile_edit.tpl
@@ -1,11 +1,11 @@
-<h1>Proil Details Bearbeiten</h1>
+<h1>$banner</h1>
<div id="profile-edit-links">
<ul>
-<li><a href="profile/$profile_id/view?tab=profile" id="profile-edit-view-link" title="View this profile">View this profile</a></li>
-<li><a href="profiles/clone/$profile_id" id="profile-edit-clone-link" title="Create a new profile using these settings">Clone this profile</a></li>
+<li><a href="profile/$profile_id/view?tab=profile" id="profile-edit-view-link" title="$viewprof">$viewprof</a></li>
+<li><a href="profiles/clone/$profile_id" id="profile-edit-clone-link" title="$cr_prof">$cl_prof</a></li>
<li></li>
-<li><a href="profiles/drop/$profile_id" id="profile-edit-drop-link" title="Delete this profile" $disabled >Delete this profile</a></li>
+<li><a href="profiles/drop/$profile_id" id="profile-edit-drop-link" title="$del_prof" $disabled >$del_prof</a></li>
</ul>
</div>
@@ -18,32 +18,32 @@ $default
<form id="profile-edit-form" name="form1" action="profiles/$profile_id" method="post" >
<div id="profile-edit-profile-name-wrapper" >
-<label id="profile-edit-profile-name-label" for="profile-edit-profile-name" >Profile Name: </label>
+<label id="profile-edit-profile-name-label" for="profile-edit-profile-name" >$lbl_profname </label>
<input type="text" size="32" name="profile_name" id="profile-edit-profile-name" value="$profile_name" /><div class="required">*</div>
</div>
<div id="profile-edit-profile-name-end"></div>
<div id="profile-edit-name-wrapper" >
-<label id="profile-edit-name-label" for="profile-edit-name" >Your Full Name: </label>
+<label id="profile-edit-name-label" for="profile-edit-name" >$lbl_fullname </label>
<input type="text" size="32" name="name" id="profile-edit-name" value="$name" />
</div>
<div id="profile-edit-name-end"></div>
<div id="profile-edit-pdesc-wrapper" >
-<label id="profile-edit-pdesc-label" for="profile-edit-pdesc" >Title/Description: </label>
+<label id="profile-edit-pdesc-label" for="profile-edit-pdesc" >$lbl_title </label>
<input type="text" size="32" name="pdesc" id="profile-edit-pdesc" value="$pdesc" />
</div>
<div id="profile-edit-pdesc-end"></div>
<div id="profile-edit-gender-wrapper" >
-<label id="profile-edit-gender-label" for="gender-select" >Your Gender: </label>
+<label id="profile-edit-gender-label" for="gender-select" >$lbl_gender </label>
$gender
</div>
<div id="profile-edit-gender-end"></div>
<div id="profile-edit-dob-wrapper" >
-<label id="profile-edit-dob-label" for="dob-select" >Birthday (y/m/d): </label>
+<label id="profile-edit-dob-label" for="dob-select" >$lbl_bd </label>
<div id="profile-edit-dob" >
$dob $age
</div>
@@ -53,32 +53,32 @@ $dob $age
$hide_friends
<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
+<input type="submit" name="submit" class="profile-edit-submit-button" value="$submit" />
</div>
<div class="profile-edit-submit-end"></div>
<div id="profile-edit-address-wrapper" >
-<label id="profile-edit-address-label" for="profile-edit-address" >Street Address: </label>
+<label id="profile-edit-address-label" for="profile-edit-address" >$lbl_address </label>
<input type="text" size="32" name="address" id="profile-edit-address" value="$address" />
</div>
<div id="profile-edit-address-end"></div>
<div id="profile-edit-locality-wrapper" >
-<label id="profile-edit-locality-label" for="profile-edit-locality" >Locality/City: </label>
+<label id="profile-edit-locality-label" for="profile-edit-locality" >$lbl_city </label>
<input type="text" size="32" name="locality" id="profile-edit-locality" value="$locality" />
</div>
<div id="profile-edit-locality-end"></div>
<div id="profile-edit-postal-code-wrapper" >
-<label id="profile-edit-postal-code-label" for="profile-edit-postal-code" >Postal/Zip Code: </label>
+<label id="profile-edit-postal-code-label" for="profile-edit-postal-code" >$lbl_zip </label>
<input type="text" size="32" name="postal_code" id="profile-edit-postal-code" value="$postal_code" />
</div>
<div id="profile-edit-postal-code-end"></div>
<div id="profile-edit-country-name-wrapper" >
-<label id="profile-edit-country-name-label" for="profile-edit-country-name" >Country: </label>
+<label id="profile-edit-country-name-label" for="profile-edit-country-name" >$lbl_country </label>
<select name="country_name" id="profile-edit-country-name" onChange="Fill_States('$region');">
<option selected="selected" >$country_name</option>
<option>temp</option>
@@ -87,7 +87,7 @@ $hide_friends
<div id="profile-edit-country-name-end"></div>
<div id="profile-edit-region-wrapper" >
-<label id="profile-edit-region-label" for="profile-edit-region" >Region/State: </label>
+<label id="profile-edit-region-label" for="profile-edit-region" >$lbl_region </label>
<select name="region" id="profile-edit-region" onChange="Update_Globals();" >
<option selected="selected" >$region</option>
<option>temp</option>
@@ -96,20 +96,20 @@ $hide_friends
<div id="profile-edit-region-end"></div>
<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
+<input type="submit" name="submit" class="profile-edit-submit-button" value="$submit" />
</div>
<div class="profile-edit-submit-end"></div>
<div id="profile-edit-marital-wrapper" >
-<label id="profile-edit-marital-label" for="profile-edit-marital" ><span class="heart">&hearts;</span> (Marital) Status: </label>
+<label id="profile-edit-marital-label" for="profile-edit-marital" >$lbl_marital </label>
$marital
</div>
-<label id="profile-edit-with-label" for="profile-edit-with" > Who: (if applicable) </label>
-<input type="text" size="32" name="with" id="profile-edit-with" value="$with" />
+<label id="profile-edit-with-label" for="profile-edit-with" > $lbl_with </label>
+<input type="text" size="32" name="with" id="profile-edit-with" title="$lbl_ex1" value="$with" />
<div id="profile-edit-marital-end"></div>
<div id="profile-edit-sexual-wrapper" >
-<label id="profile-edit-sexual-label" for="sexual-select" >Sexual Preference: </label>
+<label id="profile-edit-sexual-label" for="sexual-select" >$lbl_sexual </label>
$sexual
</div>
<div id="profile-edit-sexual-end"></div>
@@ -117,38 +117,44 @@ $sexual
<div id="profile-edit-homepage-wrapper" >
-<label id="profile-edit-homepage-label" for="profile-edit-homepage" >Homepage URL: </label>
+<label id="profile-edit-homepage-label" for="profile-edit-homepage" >$lbl_homepage </label>
<input type="text" size="32" name="homepage" id="profile-edit-homepage" value="$homepage" />
</div>
<div id="profile-edit-homepage-end"></div>
<div id="profile-edit-politic-wrapper" >
-<label id="profile-edit-politic-label" for="profile-edit-politic" >Political Views: </label>
+<label id="profile-edit-politic-label" for="profile-edit-politic" >$lbl_politic </label>
<input type="text" size="32" name="politic" id="profile-edit-politic" value="$politic" />
</div>
<div id="profile-edit-politic-end"></div>
<div id="profile-edit-religion-wrapper" >
-<label id="profile-edit-religion-label" for="profile-edit-religion" >Religion: </label>
+<label id="profile-edit-religion-label" for="profile-edit-religion" >$lbl_religion </label>
<input type="text" size="32" name="religion" id="profile-edit-religion" value="$religion" />
</div>
<div id="profile-edit-religion-end"></div>
-<div id="profile-edit-keywords-wrapper" >
-<label id="profile-edit-keywords-label" for="profile-edit-keywords" >Keywords: </label>
-<input type="text" size="32" name="keywords" id="profile-edit-keywords" title="Example: fishing photography software" value="$keywords" />
-</div><div id="profile-edit-keywords-desc">(Used for searching public profiles, never shown to others)</div>
-<div id="profile-edit-keywords-end"></div>
+<div id="profile-edit-pubkeywords-wrapper" >
+<label id="profile-edit-pubkeywords-label" for="profile-edit-pubkeywords" >$lbl_pubkey </label>
+<input type="text" size="32" name="pub_keywords" id="profile-edit-pubkeywords" title="$lbl_ex2" value="$pub_keywords" />
+</div><div id="profile-edit-pubkeywords-desc">$lbl_pubdsc</div>
+<div id="profile-edit-pubkeywords-end"></div>
+
+<div id="profile-edit-prvkeywords-wrapper" >
+<label id="profile-edit-prvkeywords-label" for="profile-edit-prvkeywords" >$lbl_prvkey </label>
+<input type="text" size="32" name="prv_keywords" id="profile-edit-prvkeywords" title="$lbl_ex2" value="$prv_keywords" />
+</div><div id="profile-edit-prvkeywords-desc">$lbl_prvdsc</div>
+<div id="profile-edit-prvkeywords-end"></div>
<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
+<input type="submit" name="submit" class="profile-edit-submit-button" value="$submit" />
</div>
<div class="profile-edit-submit-end"></div>
<div id="about-jot-wrapper" >
<p id="about-jot-desc" >
-Tell us about yourself...
+$lbl_about
</p>
<textarea rows="10" cols="72" id="profile-jot-text" name="about" >$about</textarea>
@@ -160,7 +166,7 @@ Tell us about yourself...
<div id="interest-jot-wrapper" >
<p id="interest-jot-desc" >
-Hobbies/Interests
+$lbl_hobbies
</p>
<textarea rows="10" cols="72" id="interest-jot-text" name="interest" >$interest</textarea>
@@ -172,7 +178,7 @@ Hobbies/Interests
<div id="contact-jot-wrapper" >
<p id="contact-jot-desc" >
-Contact information and Social Networks
+$lbl_social
</p>
<textarea rows="10" cols="72" id="contact-jot-text" name="contact" >$contact</textarea>
@@ -183,14 +189,14 @@ Contact information and Social Networks
<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
+<input type="submit" name="submit" class="profile-edit-submit-button" value="$submit" />
</div>
<div class="profile-edit-submit-end"></div>
<div id="music-jot-wrapper" >
<p id="music-jot-desc" >
-Musical interests
+$lbl_music
</p>
<textarea rows="10" cols="72" id="music-jot-text" name="music" >$music</textarea>
@@ -201,7 +207,7 @@ Musical interests
<div id="book-jot-wrapper" >
<p id="book-jot-desc" >
-Books, literature
+$lbl_book
</p>
<textarea rows="10" cols="72" id="book-jot-text" name="book" >$book</textarea>
@@ -214,7 +220,7 @@ Books, literature
<div id="tv-jot-wrapper" >
<p id="tv-jot-desc" >
-Television
+$lbl_tv
</p>
<textarea rows="10" cols="72" id="tv-jot-text" name="tv" >$tv</textarea>
@@ -227,7 +233,7 @@ Television
<div id="film-jot-wrapper" >
<p id="film-jot-desc" >
-Film/dance/culture/entertainment
+$lbl_film
</p>
<textarea rows="10" cols="72" id="film-jot-text" name="film" >$film</textarea>
@@ -238,14 +244,14 @@ Film/dance/culture/entertainment
<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
+<input type="submit" name="submit" class="profile-edit-submit-button" value="$submit" />
</div>
<div class="profile-edit-submit-end"></div>
<div id="romance-jot-wrapper" >
<p id="romance-jot-desc" >
-Love/romance
+$lbl_love
</p>
<textarea rows="10" cols="72" id="romance-jot-text" name="romance" >$romance</textarea>
@@ -258,7 +264,7 @@ Love/romance
<div id="work-jot-wrapper" >
<p id="work-jot-desc" >
-Work/employment
+$lbl_work
</p>
<textarea rows="10" cols="72" id="work-jot-text" name="work" >$work</textarea>
@@ -271,7 +277,7 @@ Work/employment
<div id="education-jot-wrapper" >
<p id="education-jot-desc" >
-School/education
+$lbl_school
</p>
<textarea rows="10" cols="72" id="education-jot-text" name="education" >$education</textarea>
@@ -283,7 +289,7 @@ School/education
<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="Submit" />
+<input type="submit" name="submit" class="profile-edit-submit-button" value="$submit" />
</div>
<div class="profile-edit-submit-end"></div>
diff --git a/view/profile_entry.tpl b/view/profile_entry.tpl
index c5b782660..7ff6d685b 100644
--- a/view/profile_entry.tpl
+++ b/view/profile_entry.tpl
@@ -5,6 +5,7 @@
</div>
<div class="profile-listing-photo-end"></div>
<div class="profile-listing-name" id="profile-listing-name-$id"><a href="profiles/$id" class="profile-listing-edit-link" >$profile_name</a></div>
+<div class="profile-listing-visible">$visible</div>
</div>
<div class="profile-listing-end"></div>
diff --git a/view/profile_listing_header.tpl b/view/profile_listing_header.tpl
new file mode 100644
index 000000000..707dfec53
--- /dev/null
+++ b/view/profile_listing_header.tpl
@@ -0,0 +1,8 @@
+<h1>$header</h1>
+<p id="profile-listing-desc" >
+<a href="profile_photo" >$chg_photo</a>
+</p>
+<div id="profile-listing-new-link-wrapper" >
+<a href="profiles/new" id="profile-listing-new-link" title="$cr_new" >$cr_new</a>
+</div>
+
diff --git a/view/fr/profile_photo.tpl b/view/profile_photo.tpl
index 30e51210a..f258b5b86 100644
--- a/view/fr/profile_photo.tpl
+++ b/view/profile_photo.tpl
@@ -1,18 +1,18 @@
-<h1>Upload Profile Photo</h1>
+<h1>$title</h1>
<form enctype="multipart/form-data" action="profile_photo" method="post">
<div id="profile-photo-upload-wrapper">
-<label id="profile-photo-upload-label" for="profile-photo-upload">Upload File: </label>
+<label id="profile-photo-upload-label" for="profile-photo-upload">$lbl_upfile </label>
<input name="userfile" type="file" id="profile-photo-upload" size="48" />
</div>
<div id="profile-photo-submit-wrapper">
-<input type="submit" name="submit" id="profile-photo-submit" value="Upload">
+<input type="submit" name="submit" id="profile-photo-submit" value="$submit">
</div>
</form>
<div id="profile-photo-link-select-wrapper">
-or <a href='photos/$user'>select a photo from albums</a>
+$select
</div> \ No newline at end of file
diff --git a/view/en/profile_tabs.tpl b/view/profile_tabs.tpl
index 9c6c54a1c..975d069a6 100644
--- a/view/en/profile_tabs.tpl
+++ b/view/profile_tabs.tpl
@@ -1,7 +1,7 @@
<div id="profile-tabs-wrapper" >
- <a href="$url" id="profile-tab-status-link" class="profile-tabs" >Status</a>
- <a href="$url?tab=profile" id="profile-tab-profile-link" class="profile-tabs" >Profile</a>
- <a href="$phototab" id="profile-tab-photos-link" class="profile-tabs" >Photos</a>
+ <a href="$url" id="profile-tab-status-link" class="profile-tabs" >$status</a>
+ <a href="$url?tab=profile" id="profile-tab-profile-link" class="profile-tabs" >$profile</a>
+ <a href="$phototab" id="profile-tab-photos-link" class="profile-tabs" >$photos</a>
<div id="profile-tabs-end"></div>
</div> \ No newline at end of file
diff --git a/view/prv_message.tpl b/view/prv_message.tpl
index cf6ff50ee..7c3894145 100644
--- a/view/prv_message.tpl
+++ b/view/prv_message.tpl
@@ -17,12 +17,12 @@ $select
</div>
<div id="prvmail-submit-wrapper" >
-<input type="submit" id="prvmail-submit" name="submit" value="Submit" />
+ <input type="submit" id="prvmail-submit" name="submit" value="Submit" />
<div id="prvmail-upload-wrapper" >
- <div id="prvmail-upload-div" ><img id="prvmail-upload" src="images/camera-icon.gif" alt="$upload" title="$upload" /></div>
+ <div id="prvmail-upload"class="icon border camera" title="$upload" /></div>
</div>
<div id="prvmail-link-wrapper" >
- <img id="prvmail-link" src="images/link-icon.gif" alt="$insert" title="$insert" onclick="jotGetLink();" />
+ <div id="prvmail-link" class="icon border link" title="$insert" onclick="jotGetLink();" ></div>
</div>
<div id="prvmail-rotator-wrapper" >
<img id="prvmail-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
diff --git a/view/pwdreset.tpl b/view/pwdreset.tpl
new file mode 100644
index 000000000..497b93396
--- /dev/null
+++ b/view/pwdreset.tpl
@@ -0,0 +1,17 @@
+<h3>$lbl1</h3>
+
+<p>
+$lbl2
+</p>
+<p>
+$lbl3
+</p>
+<p>
+$newpass
+</p>
+<p>
+$lbl4 $lbl5
+</p>
+<p>
+$lbl6
+</p>
diff --git a/view/register.tpl b/view/register.tpl
index 131460828..ac8388de4 100644
--- a/view/register.tpl
+++ b/view/register.tpl
@@ -1,6 +1,6 @@
<h3>$regtitle</h3>
-<form action="register" method="post" >
+<form action="register" method="post" id="register-form">
<input type="hidden" name="photo" value="$photo" />
diff --git a/view/search_item.tpl b/view/search_item.tpl
index f890bdee5..089323157 100644
--- a/view/search_item.tpl
+++ b/view/search_item.tpl
@@ -1,16 +1,24 @@
<div class="wall-item-outside-wrapper$indent" id="wall-item-outside-wrapper-$id" >
<div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
- <span class="wall-item-info" id="wall-item-info-$id">
- <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id" >
+ <div class="wall-item-info" id="wall-item-info-$id">
+ <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id"
+ onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
+ onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
<a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
<img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" height="80" width="80" alt="$name" /></a>
+ <span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
+ <div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
+ <ul>
+ $item_photo_menu
+ </ul>
+ </div>
</div>
<div class="wall-item-photo-end"></div>
<div class="wall-item-wrapper" id="wall-item-wrapper-$id" >
$lock
<div class="wall-item-location" id="wall-item-location-$id">$location</div>
</div>
- </span>
+ </div>
<div class="wall-item-author">
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
@@ -26,8 +34,12 @@
</div>
</div>
<div class="wall-item-wrapper-end"></div>
-</div>
-<div class="wall-item-outside-wrapper-end$indent" ></div>
+
<div class="wall-item-conv" id="wall-item-conv-$id" >$conv</div>
+<div class="wall-item-outside-wrapper-end$indent" ></div>
+
+</div>
+
+
diff --git a/view/settings.tpl b/view/settings.tpl
new file mode 100644
index 000000000..25f570be6
--- /dev/null
+++ b/view/settings.tpl
@@ -0,0 +1,207 @@
+<h1>$ptitle</h1>
+
+$nickname_block
+
+<div id="plugin-settings-link"><a href="settings/addon">$lbl_plug</a></div>
+
+$uexport
+
+
+<form action="settings" id="settings-form" method="post" autocomplete="off" >
+
+
+<h3 class="settings-heading">$lbl_pass1</h3>
+
+
+<div id="settings-password-wrapper" >
+<p id="settings-password-desc" >
+$lbl_pass2
+</p>
+<label id="settings-password-label" for="settings-password" >$lbl_pass3 </label>
+<input type="password" id="settings-password" name="npassword" />
+</div>
+<div id="settings-password-end" ></div>
+
+<div id="settings-confirm-wrapper" >
+<label id="settings-confirm-label" for="settings-confirm" >$lbl_pass4 </label>
+<input type="password" id="settings-confirm" name="confirm" />
+</div>
+<div id="settings-confirm-end" ></div>
+
+<div id="settings-openid-wrapper" >
+ $oidhtml
+</div>
+<div id="settings-openid-end" ></div>
+
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+
+<h3 class="settings-heading">$lbl_basic</h3>
+
+<div id="settings-username-wrapper" >
+<label id="settings-username-label" for="settings-username" >$lbl_fn </label>
+<input type="text" name="username" id="settings-username" value="$username" />
+</div>
+<div id="settings-username-end" ></div>
+
+<div id="settings-email-wrapper" >
+<label id="settings-email-label" for="settings-email" >$lbl_email </label>
+<input type="text" name="email" id="settings-email" value="$email" />
+</div>
+<div id="settings-email-end" ></div>
+
+
+
+<div id="settings-timezone-wrapper" >
+<label id="settings-timezone-label" for="timezone_select" >$lbl_tz </label>
+$zoneselect
+</div>
+<div id="settings-timezone-end" ></div>
+
+<div id="settings-defloc-wrapper" >
+<label id="settings-defloc-label" for="settings-defloc" >$lbl_loc1 </label>
+<input type="text" name="defloc" id="settings-defloc" value="$defloc" />
+</div>
+<div id="settings-defloc-end" ></div>
+
+<div id="settings-allowloc-wrapper" >
+<label id="settings-allowloc-label" for="settings-allowloc" >$lbl_loc2 </label>
+<input type="checkbox" name="allow_location" id="settings-allowloc" value="1" $loc_checked />
+</div>
+<div id="settings-allowloc-end" ></div>
+
+
+
+
+<div id="settings-theme-select">
+<label id="settings-theme-label" for="theme-select" >$lbl_theme </label>
+$theme
+</div>
+<div id="settings-theme-end"></div>
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+
+<h3 class="settings-heading">$lbl_prv</h3>
+
+
+<input type="hidden" name="visibility" value="$visibility" />
+
+<div id="settings-maxreq-wrapper">
+<label id="settings-maxreq-label" for="settings-maxreq" >$lbl_maxreq</label>
+<input id="settings-maxreq" name="maxreq" value="$maxreq" />
+<div id="settings-maxreq-desc">$lbl_maxrdesc</div>
+</div>
+<div id="settings-maxreq-end"></div>
+
+
+
+
+$profile_in_dir
+
+$profile_in_net_dir
+
+
+<div id="settings-default-perms" class="settings-default-perms" >
+ <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >$permissions $permdesc</div>
+ <div id="settings-default-perms-menu-end"></div>
+
+ <div id="settings-default-perms-select" style="display: none;" >
+
+ $aclselect
+
+ </div>
+</div>
+<div id="settings-default-perms-end"></div>
+
+<div id="settings-blockw-wrapper" >
+<label id="settings-blockw-label" for="settings-blockw" >$lbl_rempost </label>
+<input type="checkbox" name="blockwall" id="settings-blockw" value="1" $blockw_checked />
+</div>
+<div id="settings-blockw-end" ></div>
+
+
+
+<div id="settings-expire-desc">$lbl_exp1 <input type="text" size="3" name="expire" value="$expire" /> $lbl_exp2</div>
+<div id="settings-expire-end"></div>
+
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="Submit" />
+</div>
+
+
+
+<h3 class="settings-heading">$lbl_not1</h3>
+
+
+<div id="settings-notify-wrapper">
+<div id="settings-notify-desc">$lbl_not2 </div>
+<label for="notify1" id="settings-label-notify1">$lbl_not3</label>
+<input id="notify1" type="checkbox" $sel_notify1 name="notify1" value="1" />
+<div id="notify1-end"></div>
+<label for="notify2" id="settings-label-notify2">$lbl_not4</label>
+<input id="notify2" type="checkbox" $sel_notify2 name="notify2" value="2" />
+<div id="notify2-end"></div>
+<label for="notify3" id="settings-label-notify3">$lbl_not5</label>
+<input id="notify3" type="checkbox" $sel_notify3 name="notify3" value="4" />
+<div id="notify3-end"></div>
+<label for="notify4" id="settings-label-notify4">$lbl_not6</label>
+<input id="notify4" type="checkbox" $sel_notify4 name="notify4" value="8" />
+<div id="notify4-end"></div>
+<label for="notify5" id="settings-label-notify5">$lbl_not7</label>
+<input id="notify5" type="checkbox" $sel_notify5 name="notify5" value="16" />
+<div id="notify5-end"></div>
+</div>
+<div id="settings=notify-end"></div>
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+<h3 class="settings-imap">$lbl_imap0</h3>
+<p>
+$imap_desc
+$mail_disabled
+</p>
+<label for="imap-server" id="settings-label-imap1">$lbl_imap1</label>
+<input type="text" id="imap-server" name="mail_server" value="$imap_server" $imap_disabled />
+<div id="imap-server-end"></div>
+<label for="imap-port" id="settings-label-imap2">$lbl_imap2</label>
+<input type="text" id="imap-port" name="mail_port" value="$imap_port" $imap_disabled />
+<div id="imap-port-end"></div>
+<label for="imap-ssl" id="settings-label-imap3">$lbl_imap3</label>
+<input type="text" id="imap-ssl" name="mail_ssl" value="$imap_ssl" $imap_disabled />
+<div id="imap-ssl-end"></div>
+<label for="imap-user" id="settings-label-imap4">$lbl_imap4</label>
+<input type="text" id="imap-user" name="mail_user" value="$imap_user" $imap_disabled />
+<div id="imap-user-end"></div>
+<label for="imap-pass" id="settings-label-imap5">$lbl_imap5</label>
+<input type="password" id="imap-pass" name="mail_pass" value="" $imap_disabled />
+<div id="imap-pass-end"></div>
+<label for="imap-replyto" id="settings-label-imap6">$lbl_imap6</label>
+<input type="text" id="imap-replyto" name="mail_replyto" value="$imap_replyto" $imap_disabled />
+<div id="imap-replyto-end"></div>
+<label for="imap-pubmail" id="settings-label-imap7">$lbl_imap7</label>
+<input type="checkbox" name="mail_pubmail" id="imap-pubmail" $pubmail_checked value="1" $imap_disabled />
+<div id="imap-pubmail-end"></div>
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+
+<h3 class="settings-heading">$lbl_advn</h3>
+
+$pagetype
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+
diff --git a/view/fr/settings_nick_set.tpl b/view/settings_nick_set.tpl
index a36b3b9a2..1b0766099 100644
--- a/view/fr/settings_nick_set.tpl
+++ b/view/settings_nick_set.tpl
@@ -1,9 +1,7 @@
<div id="settings-nick-wrapper" >
<p id="settings-nickname-desc">
-<span class="error-message">Your profile address is <strong>'$nickname@$basepath'</strong></span>
+<div class="error-message">$desc <strong>'$nickname@$basepath'</strong>$subdir</div>
</p>
-$subdir
-
</div>
<div id="settings-nick-end" ></div>
diff --git a/view/en/settings_nick_subdir.tpl b/view/settings_nick_subdir.tpl
index 303c24df7..303c24df7 100644
--- a/view/en/settings_nick_subdir.tpl
+++ b/view/settings_nick_subdir.tpl
diff --git a/view/sv/cmnt_received_eml.tpl b/view/sv/cmnt_received_eml.tpl
index 60a5711ea..d87c7a1d1 100644
--- a/view/sv/cmnt_received_eml.tpl
+++ b/view/sv/cmnt_received_eml.tpl
@@ -1,7 +1,7 @@
$username,
- '$from' har kommenterat något som du följer.
+'$from' har kommenterat något som du följer.
-----
$body
@@ -11,8 +11,7 @@ Logga in på $siteurl för att se hela konversationen:
$display
-Tack,
- $sitename admin
+Hälsningar,
+$sitename admin
-
diff --git a/view/sv/contact_edit.tpl b/view/sv/contact_edit.tpl
deleted file mode 100644
index 1c5a1a3fb..000000000
--- a/view/sv/contact_edit.tpl
+++ /dev/null
@@ -1,81 +0,0 @@
-
-<h2>$header</h2>
-
-<div id="contact-edit-banner-name">$name</div>
-
-<form action="contacts/$contact_id" method="post" >
-<input type="hidden" name="contact_id" value="$contact_id">
-
-<div id="contact-edit-wrapper" >
-
- <div id="contact-edit-photo-wrapper" >
- <img id="contact-edit-direction-icon" src="$dir_icon" alt="$alt_text" title="$alt_text" />
- <div id="contact-edit-photo" >
- <a href="$url" title="$visit" /><img src="$photo" $sparkle alt="$name" /></a>
- </div>
- <div id="contact-edit-photo-end" ></div>
- </div>
- <div id="contact-edit-nav-wrapper" >
-
- <div id="contact-edit-links" >
- <a href="contacts/$contact_id/block" id="contact-edit-block-link" ><img src="images/b_block.gif" alt="$blockunblock" title="$block_text"/></a>
- <a href="contacts/$contact_id/ignore" id="contact-edit-ignore-link" ><img src="images/no.gif" alt="$ignorecont" title="$ignore_text"/></a>
- </div>
- <div id="contact-drop-links" >
- <a href="contacts/$contact_id/drop" id="contact-edit-drop-link" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" /></a>
- </div>
- <div id="contact-edit-nav-end"></div>
-
-
- <div id="contact-edit-poll-wrapper">
- <div id="contact-edit-last-update-text">$lastupdtext<span id="contact-edit-last-updated">$last_update</span</div>
- <div id="contact-edit-poll-text">$updpub</div>
- $poll_interval
- <div id="contact-edit-update-now"><a href="contacts/$contact_id/update">$udnow</a></div>
- </div>
- </div>
- <div id="contact-edit-end" ></div>
-
-$insecure
-$blocked
-$ignored
-
-<div id="contact-edit-info-wrapper">
-<h4>Kontaktuppgifter / Anteckningar</h4>
-<textarea id="contact-edit-info" rows="10" cols="72" name="info" >$info</textarea>
-</div>
-<div id="contact-edit-info-end"></div>
-
-<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
-
-<div id="contact-edit-profile-select-text">
-<h4>Profilvisning</h4>
-<p>V&auml;lj vilken profil som ska visas f&ouml;r $name n&auml;r han eller hon tittar p&aring; din profil i s&auml;kert l&auml;ge.
-</p>
-</div>
-$profile_select
-<div id="contact-edit-profile-select-end"></div>
-
-<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
-
-
-<div id="contact-edit-rating-wrapper">
-<h4>Rykte online</h4>
-<p>
-Ibland kanske dina v&auml;nner vill f&aring; reda p&aring; hur n&aring;gon annan uppf&ouml;r sig p&aring; n&auml;tet innan de v&aring;ga inleda n&aring;gon kontakt. Du kan hj&auml;lpa till genom att ange personens 'rykte'.
-</p>
-<div id="contact-edit-rating-select-wrapper">
-$rating
-</div>
-<div id="contact-edit-rating-explain">
-<p>
-Var v&auml;nlig &auml;gna en liten stund &aring;t att fylla i n&aring;got som du k&auml;nner kan vara till hj&auml;lp f&ouml;r andra.
-</p>
-<textarea id="contact-edit-rating-text" name="reason" rows="3" cols="64" >$reason</textarea>
-</div>
-</div>
-$groups
-
-<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
-</form>
-</div>
diff --git a/view/sv/follow_notify_eml.tpl b/view/sv/follow_notify_eml.tpl
new file mode 100644
index 000000000..fee08bdca
--- /dev/null
+++ b/view/sv/follow_notify_eml.tpl
@@ -0,0 +1,12 @@
+$myname,
+
+'$requestor' på $sitename vill följa dina uppdateringar här på Friendika.
+
+Besök dennes profil på $url.
+
+Logga in för att godkänna eller avslå förfrågan.
+
+$siteurl
+
+Hälsningar,
+$sitename admin
diff --git a/view/sv/friend_complete_eml.tpl b/view/sv/friend_complete_eml.tpl
new file mode 100644
index 000000000..2b8b0238e
--- /dev/null
+++ b/view/sv/friend_complete_eml.tpl
@@ -0,0 +1,17 @@
+$username,
+
+Goda nyheter... '$fn' på '$dfrn_url' har accepterat din kontaktförfrågan på '$sitename'.
+
+Ni är nu ömsesidiga vänner och kan se varandras statusuppdateringar samt skicka foton och meddelanden
+utan begränsningar.
+
+Gå in på din sida 'Kontakter' på $sitename om du vill göra några
+ändringar när det gäller denna kontakt.
+
+$siteurl
+
+[Du kan exempelvis skapa en separat profil med information som inte
+är tillgänglig för vem som helst, och ge visningsrättigheter till '$fn'].
+
+Hälsningar,
+$sitename admin
diff --git a/view/sv/htconfig.tpl b/view/sv/htconfig.tpl
new file mode 100644
index 000000000..0ce28b4a0
--- /dev/null
+++ b/view/sv/htconfig.tpl
@@ -0,0 +1,74 @@
+<?php
+
+// Set the following for your MySQL installation
+// Copy or rename this file to .htconfig.php
+
+$db_host = '$dbhost';
+$db_user = '$dbuser';
+$db_pass = '$dbpass';
+$db_data = '$dbdata';
+
+// If you are using a subdirectory of your domain you will need to put the
+// relative path (from the root of your domain) here.
+// For instance if your URL is 'http://example.com/directory/subdirectory',
+// set $a->path to 'directory/subdirectory'.
+
+$a->path = '$urlpath';
+
+// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
+// It can be changed later and only applies to timestamps for anonymous viewers.
+
+$default_timezone = '$timezone';
+
+// What is your site name?
+
+$a->config['sitename'] = "My Friend Network";
+
+// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
+// Be certain to create your own personal account before setting
+// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on
+// the registration page. REGISTER_APPROVE requires you set 'admin_email'
+// to the email address of an already registered person who can authorise
+// and/or approve/deny the request.
+
+$a->config['register_policy'] = REGISTER_OPEN;
+$a->config['register_text'] = '';
+$a->config['admin_email'] = '';
+
+// Maximum size of an imported message, 0 is unlimited
+
+$a->config['max_import_size'] = 200000;
+
+// maximum size of uploaded photos
+
+$a->config['system']['maximagesize'] = 800000;
+
+// Location of PHP command line processor
+
+$a->config['php_path'] = '$phpath';
+
+// Location of global directory submission page.
+
+$a->config['system']['directory_submit_url'] = 'http://dir.friendika.com/submit';
+$a->config['system']['directory_search_url'] = 'http://dir.friendika.com/directory?search=';
+
+// PuSH - aka pubsubhubbub URL. This makes delivery of public posts as fast as private posts
+
+$a->config['system']['huburl'] = 'http://pubsubhubbub.appspot.com';
+
+// Server-to-server private message encryption (RINO) is allowed by default.
+// Encryption will only be provided if this setting is true and the
+// PHP mcrypt extension is installed on both systems
+
+$a->config['system']['rino_encrypt'] = true;
+
+// default system theme
+
+$a->config['system']['theme'] = 'duepuntozero';
+
+// Addons or plugins are configured here.
+// This is a comma seperated list of addons to enable. Example:
+// $a->config['system']['addon'] = 'js_upload,randplace,oembed';
+
+$a->config['system']['addon'] = 'js_upload';
+
diff --git a/view/sv/intro_complete_eml.tpl b/view/sv/intro_complete_eml.tpl
new file mode 100644
index 000000000..1f24af25f
--- /dev/null
+++ b/view/sv/intro_complete_eml.tpl
@@ -0,0 +1,19 @@
+$username,
+
+'$fn' på '$dfrn_url' har accepterat din kontaktförfrågan på '$sitename'.
+
+'$fn' har valt att acceptera dig som ett "fan" vilket innebär vissa begränsningar
+i kommunikationen mellan er - som till exempel personliga meddelanden och viss interaktion
+mellan profiler. Om detta är en kändis eller en gemenskap så har dessa inställningar gjorts
+per automatik.
+
+'$fn' kan välja att utöka detta till vanlig tvåvägskommunikation eller någon annan mer
+tillåtande kommunikationsform i framtiden.
+
+Du kommer hädanefter att få statusuppdateringar från '$fn',
+vilka kommer att synas på din Nätverk-sida på
+
+$siteurl
+
+Hälsningar,
+$sitename admin
diff --git a/view/sv/lostpass_eml.tpl b/view/sv/lostpass_eml.tpl
new file mode 100644
index 000000000..df338fa69
--- /dev/null
+++ b/view/sv/lostpass_eml.tpl
@@ -0,0 +1,29 @@
+$username,
+
+En begäran om återställning av lösenord på $sitename har mottagits.
+Gå till adressen nedan för att bekräfta denna begäran. Du kan också
+klistra in länken i adressfältet i din webbläsare.
+
+Gå INTE till länken nedan om du INTE har begärt lösenordsåterställning.
+Då kan du ignorera det här meddelandet.
+
+Ditt lösenord kommer inte att återställas om vi inte kan säkerställa att du
+initierat detta.
+
+Med den här länken kan du bekräfta din identitet:
+
+$reset_link
+
+Sedan kommer du att få ett meddelande med ett nytt lösenord.
+
+Lösenordet kan sedan ändras i dina inställningar efter att du loggat in.
+
+Detaljerna ser ut så här:
+
+Webbplats: $siteurl
+Inloggningsnamn: $email
+
+Hälsningar,
+$sitename admin
+
+ \ No newline at end of file
diff --git a/view/sv/mail_received_html_body_eml.tpl b/view/sv/mail_received_html_body_eml.tpl
new file mode 100644
index 000000000..a9a34c23a
--- /dev/null
+++ b/view/sv/mail_received_html_body_eml.tpl
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
+<html>
+<head>
+ <title>Meddelande p&aring; Friendika</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+</head>
+<body>
+<table style="border:1px solid #ccc">
+ <tbody>
+ <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendika</span></td></tr>
+
+ <tr><td style="padding-top:22px;" colspan="2">$from har skickat ett personligt meddelande till dig p&aring; $siteName.</td></tr>
+
+
+ <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
+ <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
+ <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
+ <tr><td style="padding-right:22px;">$htmlversion</td></tr>
+ <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Logga in p&aring; <a href="$siteurl">$siteurl</a> f&ouml;r att l&auml;sa och svara p&aring; personliga meddelanden.</td></tr>
+ <tr><td></td><td>H&auml;lsningar,</td></tr>
+ <tr><td></td><td>$siteName admin</td></tr>
+ </tbody>
+</table>
+</body>
+</html> \ No newline at end of file
diff --git a/view/sv/mail_received_text_body_eml.tpl b/view/sv/mail_received_text_body_eml.tpl
new file mode 100644
index 000000000..ac2857b58
--- /dev/null
+++ b/view/sv/mail_received_text_body_eml.tpl
@@ -0,0 +1,10 @@
+$from har skickat ett personligt meddelande till dig på $siteName.
+
+$title
+
+$textversion
+
+Logga in på $siteurl för att läsa och svara på personliga meddelanden.
+
+Hälsningar,
+$siteName admin
diff --git a/view/sv/passchanged_eml.tpl b/view/sv/passchanged_eml.tpl
new file mode 100644
index 000000000..590462468
--- /dev/null
+++ b/view/sv/passchanged_eml.tpl
@@ -0,0 +1,18 @@
+
+$username,
+
+Lösenordet har ändrats enligt din begäran. Behåll den här
+informationen om den skulle behövas i framtiden. (eller ändra lösenord
+på en gång till något som du kommer ihåg).
+
+
+Här är dina inloggningsuppgifter:
+
+Webbplats: $siteurl
+Användarnamn: $email
+Lösenord: $new_password
+
+När du loggat in kan du byta lösenord bland inställningarna.
+
+Hälsningar,
+$sitename admin
diff --git a/view/sv/register_open_eml.tpl b/view/sv/register_open_eml.tpl
new file mode 100644
index 000000000..1471c9b98
--- /dev/null
+++ b/view/sv/register_open_eml.tpl
@@ -0,0 +1,17 @@
+$username,
+Tack för att du registrerat dig på $sitename. Kontot har skapats.
+Här är dina inloggningsuppgifter:
+
+Webbplats: $siteurl
+Användarnamn: $email
+Lösenord: $password
+
+Lösenordet kan ändras på sidan Inställningar efter att du loggat in.
+
+Ägna en liten stund åt att gå igenom alla kontoinställningar där.
+
+Välkommen till $sitename.
+
+Hälsningar,
+$sitename admin
+
diff --git a/view/sv/register_verify_eml.tpl b/view/sv/register_verify_eml.tpl
new file mode 100644
index 000000000..aa72bc9aa
--- /dev/null
+++ b/view/sv/register_verify_eml.tpl
@@ -0,0 +1,17 @@
+En registreringsförfrågan som kräver svar har mottagits
+på $sitename
+
+
+Här är inloggningsuppgifterna:
+
+Fullständigt namn: $username
+Webbplats: $siteurl
+Användarnamn: $email
+
+
+Gå till denna adress om du vill godkänna:
+$siteurl/regmod/allow/$hash
+
+Gå till denna adress om du vill avslå förfrågan och ta bort kontot:
+$siteurl/regmod/deny/$hash
+
diff --git a/view/sv/request_notify_eml.tpl b/view/sv/request_notify_eml.tpl
new file mode 100644
index 000000000..893bce17c
--- /dev/null
+++ b/view/sv/request_notify_eml.tpl
@@ -0,0 +1,13 @@
+$myname,
+
+Du har just fått en kontaktförfrågan på $sitename från '$requestor'
+
+Profilen finns på $url.
+
+Logga in för att se hela förfrågan och godkänna eller
+avslå den.
+
+$siteurl
+
+Hälsningar,
+$sitename admin
diff --git a/view/sv/strings.php b/view/sv/strings.php
index 2fe95bc96..eb434df66 100644
--- a/view/sv/strings.php
+++ b/view/sv/strings.php
@@ -1,50 +1,47 @@
<?php
-$a->strings['Not Found'] = 'Hittades inte';
+
+function string_plural_select($n){
+ return ($n != 1);
+}
+
+$a->strings['Not Found'] = 'Hittar inte';
$a->strings['Page not found.' ] = 'Sidan hittades inte.' ;
-$a->strings['Permission denied'] = 'Åtkomst nekad';
-$a->strings['Permission denied.'] = 'Åtkomst nekad.';
+$a->strings['Permission denied'] = '&Aring;tkomst nekad';
+$a->strings['Permission denied.'] = '&Aring;tkomst nekad.';
+$a->strings['Delete this item?'] = 'Ta bort?';
+$a->strings['Comment'] = 'Kommentera';
$a->strings['Create a New Account'] = 'Skapa nytt konto';
$a->strings['Register'] = 'Registrera';
-$a->strings['Nickname or Email address: '] = 'Användarnamn eller e-postadress: ';
-$a->strings['Password: '] = 'Lösenord: ';
+$a->strings['Notifications'] = 'Aviseringar';
+$a->strings['Nickname or Email address: '] = 'Anv&auml;ndarnamn eller e-postadress: ';
+$a->strings['Password: '] = 'L&ouml;senord: ';
$a->strings['Login'] = 'Logga in';
-$a->strings['Nickname/Email/OpenID: '] = 'Användarnamn/E-post/OpenID: ';
-$a->strings["Password \x28if not OpenID\x29: "] = "Lösenord \x28om inget OpenID\x29: ";
-$a->strings['Forgot your password?'] = 'Glömt lösenordet?';
-$a->strings['Password Reset'] = 'Återställ lösenord';
+$a->strings['Nickname/Email/OpenID: '] = 'Anv&auml;ndarnamn/e-post/OpenID: ';
+$a->strings["Password \x28if not OpenID\x29: "] = "L&ouml;senord (om inget OpenID): ";
+$a->strings['Forgot your password?'] = 'Har du gl&ouml;mt l&ouml;senordet?';
+$a->strings['Password Reset'] = 'Gl&ouml;mt l&ouml;senordet?';
$a->strings['Logout'] = 'Logga ut';
-$a->strings['prev'] = 'föreg';
-$a->strings['first'] = 'första';
+$a->strings['prev'] = 'f&ouml;reg';
+$a->strings['first'] = 'f&ouml;rsta';
$a->strings['last'] = 'sista';
-$a->strings['next'] = 'nästa';
-$a->strings[' likes this.'] = ' gillar detta.';
-$a->strings[' doesn\'t like this.'] = ' ogillar detta.';
-$a->strings['people'] = 'personer';
-$a->strings['like this.'] = 'gilla detta.';
-$a->strings['don\'t like this.'] = 'ogilla detta.';
-$a->strings['and'] = 'och';
-$a->strings[', and '] = ', och ';
-$a->strings[' other people'] = ' personer till';
-$a->strings[' like this.'] = ' gillar detta.';
-$a->strings[' don\'t like this.'] = ' ogillar detta.';
+$a->strings['next'] = 'n&auml;sta';
$a->strings['No contacts'] = 'Inga kontakter';
-$a->strings['Contacts'] = 'Kontakter';
$a->strings['View Contacts'] = 'Visa kontakter';
-$a->strings['Search'] = 'Sök';
+$a->strings['Search'] = 'S&ouml;k';
$a->strings['No profile'] = 'Ingen profil';
-$a->strings['Connect'] = 'Anslut';
+$a->strings['Connect'] = 'Skicka kontaktf&ouml;rfr&aring;gan';
$a->strings['Location:'] = 'Plats:';
$a->strings[', '] = ', ';
-$a->strings['Gender:'] = 'Kön:';
+$a->strings['Gender:'] = 'K&ouml;n:';
$a->strings['Status:'] = 'Status:';
$a->strings['Homepage:'] = 'Hemsida:';
-$a->strings['Monday'] = 'måndag';
+$a->strings['Monday'] = 'm&aring;ndag';
$a->strings['Tuesday'] = 'tisdag';
$a->strings['Wednesday'] = 'onsdag';
$a->strings['Thursday'] = 'torsdag';
$a->strings['Friday'] = 'fredag';
-$a->strings['Saturday'] = 'lördag';
-$a->strings['Sunday'] = 'söndag';
+$a->strings['Saturday'] = 'l&ouml;rdag';
+$a->strings['Sunday'] = 's&ouml;ndag';
$a->strings['January'] = 'januari';
$a->strings['February'] = 'februari';
$a->strings['March'] = 'mars';
@@ -57,181 +54,238 @@ $a->strings['September'] = 'september';
$a->strings['October'] = 'oktober';
$a->strings['November'] = 'november';
$a->strings['December'] = 'december';
-$a->strings['Birthdays this week:'] = 'Födelsedagar denna vecka:';
-$a->strings["\x28Adjusted for local time\x29"] = "\x28Justerad till lokal tid\x29";
-$a->strings['[today]'] = '[today]';
-$a->strings['link to source'] = 'länk till källa';
-$a->strings['No recipient selected.'] = 'Ingen mottagare vald.';
-$a->strings['[no subject]'] = '[no subject]';
-$a->strings['Unable to locate contact information.'] = 'Hittar inga kontaktuppgifter.';
-$a->strings['Wall Photos'] = 'Loggfoton';
-$a->strings['Message sent.'] = 'Meddelandet har skickats.';
-$a->strings['Message could not be sent.'] = 'Det gick inte att skicka meddelandet.';
-$a->strings['Messages'] = 'Meddelanden';
-$a->strings['Inbox'] = 'Inkort';
-$a->strings['Outbox'] = 'Utkorg';
-$a->strings['New Message'] = 'Nytt meddelande';
-$a->strings['Message deleted.'] = 'Meddelandet borttaget.';
-$a->strings['Conversation removed.'] = 'Konversationen borttagen.';
-$a->strings['Send Private Message'] = 'Skicka personligt meddelande';
-$a->strings['To:'] = 'Till:';
-$a->strings['Subject:'] = 'Ämne:';
-$a->strings['Your message:'] = 'Ditt meddelande:';
-$a->strings['Upload photo'] = 'Ladda upp foto';
-$a->strings['Insert web link'] = 'Infoga länk';
-$a->strings['Please wait'] = 'Vänta';
-$a->strings['No messages.'] = 'Inga meddelanden.';
-$a->strings['Delete conversation'] = 'Ta bort konversation';
-$a->strings['Message not available.'] = 'Meddelandet är inte tillgängligt.';
-$a->strings['Delete message'] = 'Ta bort meddelande';
-$a->strings['Send Reply'] = 'Skicka svar';
+$a->strings['g A l F d'] = 'g A l F d';
+$a->strings['Birthday Reminders'] = 'F&ouml;delsedagsp&aring;minnelser';
+$a->strings['Birthdays this week:'] = 'F&ouml;delsedagar denna vecka:';
+$a->strings["\x28Adjusted for local time\x29"] = "(Justerat till lokal tid)";
+$a->strings['[today]'] = '[idag]';
+$a->strings['link to source'] = 'l&auml;nk till k&auml;lla';
+$a->strings['%d Contact'] = array(
+ 0 => '%d kontakt',
+ 1 => '%d kontakter',
+);
+$a->strings['Normal View'] = 'Byt till normalvy';
+$a->strings['New Item View'] = 'Visa nya inl&auml;gg &ouml;verst';
+$a->strings['Warning: This group contains %s from an insecure network.'] = 'Varning! Gruppen inneh&aring;ller %s p&aring; os&auml;kra n&auml;tverk.';
+$a->strings['Private messages to this group are at risk of public disclosure.'] = 'Meddelanden kan komma att bli synliga f&ouml;r vem som helst p&aring; internet.';
+$a->strings['Please enter a link URL:'] = 'Ange en l&auml;nk (URL):';
+$a->strings['Please enter a YouTube link:'] = 'Ange en YouTube-l&auml;nk:';
+$a->strings["Please enter a video\x28.ogg\x29 link/URL:"] = "Ange l&auml;nk/URL till video (.ogg):";
+$a->strings["Please enter an audio\x28.ogg\x29 link/URL:"] = "Ange l&auml;nk/URL till ljud (.ogg):";
+$a->strings['Where are you right now?'] = 'Var &auml;r du just nu?';
+$a->strings['Enter a title for this item'] = 'Ange en rubrik p&aring; inl&auml;gget';
+$a->strings['Share'] = 'Publicera';
+$a->strings['Upload photo'] = 'Ladda upp bild';
+$a->strings['Insert web link'] = 'Infoga l&auml;nk';
+$a->strings['Insert YouTube video'] = 'Infoga video fr&aring;n YouTube';
+$a->strings['Insert Vorbis [.ogg] video'] = 'L&auml;gg in video i format Vorbis [.ogg]';
+$a->strings['Insert Vorbis [.ogg] audio'] = 'L&auml;gg in ljud i format Vorbis [.ogg]';
+$a->strings['Set your location'] = 'Ange plats';
+$a->strings['Clear browser location'] = 'Clear browser location';
+$a->strings['Set title'] = 'Ange rubrik';
+$a->strings['Please wait'] = 'V&auml;nta';
+$a->strings['Permission settings'] = '&Aring;tkomstinst&auml;llningar';
+$a->strings['CC: email addresses'] = 'Kopia: e-postadresser';
+$a->strings['Example: bob@example.com, mary@example.com'] = 'Exempel: adam@exempel.com, bertil@exempel.com';
+$a->strings['No such group'] = 'Gruppen finns inte';
+$a->strings['Group is empty'] = 'Gruppen &auml;r tom';
+$a->strings['Group: '] = 'Grupp: ';
+$a->strings['Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.'] = 'Inneh&aring;llet omfattas av licensen <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a>.';
+$a->strings['%d member'] = array(
+ 0 => '%d medlem',
+ 1 => '%d medlemmar',
+);
$a->strings['Applications'] = 'Applikationer';
-$a->strings["Invite Friends"] = "Bjud in vänner";
-$a->strings['Connect/Follow'] = 'Anslut/Följ';
+$a->strings["Invite Friends"] = "Bjud in folk du k&auml;nner";
+$a->strings['Find People With Shared Interests'] = 'S&ouml;k personer som har samma intressen som du';
+$a->strings['Connect/Follow'] = 'G&ouml;r till kontakt/F&ouml;lj';
$a->strings['Example: bob@example.com, http://example.com/barbara'] = 'Exempel: adam@exempel.com, http://exempel.com/bertil';
-$a->strings['Follow'] = 'Följ';
-$a->strings['Could not access contact record.'] = 'Could not access contact record.';
-$a->strings['Could not locate selected profile.'] = 'Hittade inte vald profil.';
+$a->strings['Follow'] = 'F&ouml;lj';
+$a->strings['Could not access contact record.'] = 'Hittar inte information om kontakten.';
+$a->strings['Could not locate selected profile.'] = 'Hittar inte vald profil.';
$a->strings['Contact updated.'] = 'Kontakten har uppdaterats.';
-$a->strings['Failed to update contact record.'] = 'Failed to update contact record.';
+$a->strings['Failed to update contact record.'] = 'Det blev fel n&auml;r kontakten skulle uppdateras.';
$a->strings['Contact has been '] = 'Kontakten ';
-$a->strings['blocked'] = 'spärrad';
-$a->strings['unblocked'] = 'inte längre spärrad';
-$a->strings['ignored'] = 'ignoreras';
-$a->strings['unignored'] = 'ignoreras inte längre';
-$a->strings['stopped following'] = 'följer inte längre';
+$a->strings['blocked'] = 'sp&auml;rrad';
+$a->strings['unblocked'] = 'inte l&auml;ngre sp&auml;rrad';
+$a->strings['Contact has been blocked'] = 'Kontakten har sp&auml;rrats';
+$a->strings['Contact has been unblocked'] = 'Kontakten &auml;r inte l&auml;ngre sp&auml;rrad';
+$a->strings['Contact has been ignored'] = 'Kontakten ignoreras';
+$a->strings['Contact has been unignored'] = 'Kontakten ignoreras inte l&auml;ngre';
+$a->strings['stopped following'] = 'f&ouml;ljer inte l&auml;ngre';
$a->strings['Contact has been removed.'] = 'Kontakten har tagits bort.';
$a->strings['Contact not found.'] = 'Kontakten hittades inte.';
-$a->strings['Mutual Friendship'] = 'Ömsesidig vänskap';
-$a->strings['is a fan of yours'] = 'är ett fan till dig';
-$a->strings['you are a fan of'] = 'du är fan till';
+$a->strings['Mutual Friendship'] = '&Ouml;msesidig v&auml;nskap';
+$a->strings['is a fan of yours'] = '&auml;r ett fan till dig';
+$a->strings['you are a fan of'] = 'du &auml;r fan till';
+$a->strings['Privacy Unavailable'] = 'Inte tillg&auml;ngligt';
+$a->strings['Private communications are not available for this contact.'] = 'Det g&aring;r inte att utbyta personliga meddelanden med den h&auml;r kontakten.';
$a->strings['Never'] = 'Aldrig';
-$a->strings["\x28Update was successful\x29"] = "\x28Uppdateringen lyckades\x29";
-$a->strings["\x28Update was not successful\x29"] = "\x28Uppdateringen lyckades inte\x29";
-$a->strings['Contact Editor'] = 'Kontaktredigerare';
-$a->strings['Visit $name\'s profile'] = 'Besök $name ';
-$a->strings['Block/Unblock contact'] = 'Spärra kontakt eller häv spärr';
+$a->strings["\x28Update was successful\x29"] = "(Uppdateringen lyckades)";
+$a->strings["\x28Update was not successful\x29"] = "(Uppdateringen lyckades inte)";
+$a->strings['Contact Editor'] = '&Auml;ndra kontakter';
+$a->strings['Submit'] = 'Spara';
+$a->strings['Profile Visibility'] = 'Visning av profil';
+$a->strings['Please choose the profile you would like to display to %s when viewing your profile securely.'] = 'V&auml;lj vilken profil som ska visas f&ouml;r %s n&auml;r han/hon bes&ouml;ker din sida.';
+$a->strings['Contact Information / Notes'] = 'Kontaktuppgifter/Anteckningar';
+$a->strings['Online Reputation'] = 'Rykte online';
+$a->strings['Occasionally your friends may wish to inquire about this person\'s online legitimacy.'] = 'Dina kontakter kanske vill veta n&aring;got om den h&auml;r personens rykte online innan de tar kontakt.';
+$a->strings['You may help them choose whether or not to interact with this person by providing a <em>reputation</em> to guide them.'] = 'Du kan vara till hj&auml;lp genom att ange personens rykte online.';
+$a->strings['Please take a moment to elaborate on this selection if you feel it could be helpful to others.'] = '&Auml;gna g&auml;rna en stund &aring;t att ange detta f&ouml;r att hj&auml;lpa andra.';
+$a->strings['Visit $name\'s profile'] = 'Bes&ouml;k $name ';
+$a->strings['Block/Unblock contact'] = 'Sp&auml;rra kontakt eller h&auml;v sp&auml;rr';
$a->strings['Ignore contact'] = 'Ignorera kontakt';
+$a->strings['Repair contact URL settings'] = 'Repair contact URL settings';
+$a->strings["Repair contact URL settings \x28WARNING: Advanced\x29"] = "Repair contact URL settings (WARNING: Advanced)";
$a->strings['Delete contact'] = 'Ta bort kontakt';
$a->strings['Last updated: '] = 'Uppdaterad senast: ';
-$a->strings['Update public posts: '] = 'Uppdatera offentliga inlägg: ';
+$a->strings['Update public posts: '] = 'Uppdatera offentliga inl&auml;gg: ';
$a->strings['Update now'] = 'Updatera nu';
-$a->strings['Unblock this contact'] = 'Häv spärr för kontakt';
-$a->strings['Block this contact'] = 'Spärra kontakt';
-$a->strings['Unignore this contact'] = 'Ignorera inte längre kontakt';
+$a->strings['Unblock this contact'] = 'H&auml;v sp&auml;rr f&ouml;r kontakt';
+$a->strings['Block this contact'] = 'Sp&auml;rra kontakt';
+$a->strings['Unignore this contact'] = 'Ignorera inte l&auml;ngre kontakt';
$a->strings['Ignore this contact'] = 'Ignorera kontakt';
-$a->strings['Currently blocked'] = 'Spärrad';
+$a->strings['Currently blocked'] = 'Sp&auml;rrad';
$a->strings['Currently ignored'] = 'Ignoreras';
-$a->strings['Show Blocked Connections'] = 'Visa spärrade kontakter';
-$a->strings['Hide Blocked Connections'] = 'Dölj spärrade kontakter';
-$a->strings['Finding: '] = 'Finding: ';
-$a->strings['Find'] = 'Find';
-$a->strings['Visit '] = 'Besök ';
-$a->strings['\'s profile'] = 's profil';
-$a->strings['Edit contact'] = 'Ändra kontakt';
+$a->strings['Contacts'] = 'Kontakter';
+$a->strings['Show Blocked Connections'] = 'Visa sp&auml;rrade kontakter';
+$a->strings['Hide Blocked Connections'] = 'D&ouml;lj sp&auml;rrade kontakter';
+$a->strings['Finding: '] = 'Hittar: ';
+$a->strings['Find'] = 'S&ouml;k';
+$a->strings['Visit $username\'s profile'] = 'G&aring; till profilen som tillh&ouml;r $username';
+$a->strings['Edit contact'] = '&Auml;ndra kontakt';
+$a->strings['Contact settings applied.'] = 'Inst&auml;llningar f&ouml;r kontakter har sparats.';
+$a->strings['Contact update failed.'] = 'Det gick inte att uppdatera kontakt.';
+$a->strings['Repair Contact Settings'] = 'Repair Contact Settings';
+$a->strings['<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact will stop working.'] = '<strong>VARNING! Det h&auml;r &auml;r en avancerad inst&auml;llning</strong> och om du anger felaktig information kommer kommunikationen med den h&auml;r kontakten att sluta fungera.';
+$a->strings['Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.'] = 'Anv&auml;nd webbl&auml;sarens bak&aring;tknapp <strong>nu</strong> om du &auml;r os&auml;ker p&aring; vad man g&ouml;r p&aring; den h&auml;r sidan.';
+$a->strings['Name'] = 'Namn';
$a->strings['Profile not found.'] = 'Profilen hittades inte.';
-$a->strings['Response from remote site was not understood.'] = 'Kunde inte tolka svaret från fjärrsajten.';
-$a->strings['Unexpected response from remote site: '] = 'Oväntat svar från fjärrsajten: ';
-$a->strings["Confirmation completed successfully."] = "Confirmation completed successfully.";
-$a->strings['Remote site reported: '] = 'Remote site reported: ';
-$a->strings["Temporary failure. Please wait and try again."] = "Tillfälligt fel. Försök igen lite senare.";
-$a->strings["Introduction failed or was revoked."] = "Introduction failed or was revoked.";
-$a->strings['Unable to set contact photo.'] = 'Det gick inte att välja profilbild.';
-$a->strings['is now friends with'] = 'är nu vän med';
-$a->strings['No user record found for '] = 'No user record found for ';
-$a->strings['Our site encryption key is apparently messed up.'] = 'Det är något fel på webbplatsens krypteringsnyckel.';
+$a->strings['Response from remote site was not understood.'] = 'Kunde inte tolka svaret fr&aring;n fj&auml;rrsajten.';
+$a->strings['Unexpected response from remote site: '] = 'Ov&auml;ntat svar fr&aring;n fj&auml;rrsajten: ';
+$a->strings["Confirmation completed successfully."] = "Bekr&auml;ftat.";
+$a->strings['Remote site reported: '] = 'Meddelande fr&aring;n fj&auml;rrsajten: ';
+$a->strings["Temporary failure. Please wait and try again."] = "Tillf&auml;lligt fel. F&ouml;rs&ouml;k igen lite senare.";
+$a->strings["Introduction failed or was revoked."] = "Kontaktf&ouml;rfr&aring;gan gick inte fram eller har &aring;terkallats.";
+$a->strings['Unable to set contact photo.'] = 'Det gick inte att byta profilbild.';
+$a->strings['is now friends with'] = '&auml;r nu v&auml;n med';
+$a->strings['Our site encryption key is apparently messed up.'] = 'Det &auml;r n&aring;got fel p&aring; webbplatsens krypteringsnyckel.';
$a->strings['Empty site URL was provided or URL could not be decrypted by us.'] = 'Empty site URL was provided or URL could not be decrypted by us.';
-$a->strings['Contact record was not found for you on our site.'] = 'Contact record was not found for you on our site.';
-$a->strings['The ID provided by your system is a duplicate on our system. It should work if you try again.'] = 'Det ID som angavs av ditt system är samma som på vårt system. Det borde fungera om du provar igen.';
+$a->strings['Contact record was not found for you on our site.'] = 'Det gick inte att hitta efterfr&aring;gad information p&aring; v&aring;r webbplats.';
+$a->strings['The ID provided by your system is a duplicate on our system. It should work if you try again.'] = 'Det ID som angavs av ditt system &auml;r samma som p&aring; v&aring;rt system. Det borde fungera om du provar igen.';
$a->strings['Unable to set your contact credentials on our system.'] = 'Unable to set your contact credentials on our system.';
$a->strings['Unable to update your contact profile details on our system'] = 'Unable to update your contact profile details on our system';
-$a->strings["Connection accepted at "] = "Connection accepted at ";
-$a->strings['Administrator'] = 'Administratör';
+$a->strings["Connection accepted at %s"] = "Kontaktf&ouml;rfr&aring;gan beviljad - %s";
+$a->strings['Administrator'] = 'Admin';
$a->strings['noreply'] = 'noreply';
-$a->strings[' commented on an item at '] = ' har kommenterat ';
-$a->strings[" commented on an item at "] = " har kommenterat ";
-$a->strings[' welcomes '] = ' välkomnar ';
-$a->strings["This introduction has already been accepted."] = "Den här förfrågan har redan accepterats.";
-$a->strings['Profile location is not valid or does not contain profile information.'] = 'Profiladressen är ogiltig eller innehåller ingen profilinformation.';
-$a->strings['Warning: profile location has no identifiable owner name.'] = 'Warning: profile location has no identifiable owner name.';
-$a->strings['Warning: profile location has no profile photo.'] = 'Warning: profile location has no profile photo.';
-$a->strings[' required parameter'] = ' obligatoriskt fält';
-$a->strings[" was "] = " var ";
-$a->strings["s were "] = " var ";
-$a->strings["not found at the given location."] = "finns inte på platsen som angavs.";
-$a->strings["Introduction complete."] = "Presentationen klar.";
-$a->strings['Unrecoverable protocol error.'] = 'Irreparabelt protokollfel.';
-$a->strings['Profile unavailable.'] = 'Profilen är inte tillgänglig.';
-$a->strings[' has received too many connection requests today.'] = ' har tagit emot för många förfrågningar idag.';
-$a->strings['Spam protection measures have been invoked.'] = 'Åtgärder för skydd mot spam har aktiverats.';
-$a->strings['Friends are advised to please try again in 24 hours.'] = 'Friends are advised to please try again in 24 hours.';
+$a->strings["%s commented on an item at %s"] = "%s har kommenterat ett inl&auml;gg p&aring; %s";
+$a->strings["This introduction has already been accepted."] = "Den h&auml;r f&ouml;rfr&aring;gan har redan beviljats.";
+$a->strings['Profile location is not valid or does not contain profile information.'] = 'Profiladressen &auml;r ogiltig eller inneh&aring;ller ingen profilinformation.';
+$a->strings['Warning: profile location has no identifiable owner name.'] = 'Varning! Hittar inget namn som identifierar profilen.';
+$a->strings['Warning: profile location has no profile photo.'] = 'Varning! Profilen inneh&aring;ller inte n&aring;gon profilbild.';
+$a->strings["Introduction complete."] = "Kontaktf&ouml;rfr&aring;gan/Presentationen &auml;r klar.";
+$a->strings['Unrecoverable protocol error.'] = 'Protokollfel.';
+$a->strings['Profile unavailable.'] = 'Profilen &auml;r inte tillg&auml;nglig.';
+$a->strings['%s has received too many connection requests today.'] = '%s har f&aring;tt f&ouml;r m&aring;nga kontaktf&ouml;rfr&aring;gningar idag.';
+$a->strings['Spam protection measures have been invoked.'] = '&Aring;tg&auml;rder f&ouml;r spamskydd har vidtagits.';
+$a->strings['Friends are advised to please try again in 24 hours.'] = 'Dina v&auml;nner kan prova igen om ett dygn.';
$a->strings["Invalid locator"] = "Invalid locator";
$a->strings["Unable to resolve your name at the provided location."] = "Unable to resolve your name at the provided location.";
-$a->strings['You have already introduced yourself here.'] = 'Du har redan presenterat dig här.';
-$a->strings['Apparently you are already friends with .'] = 'Du är tydligen redan vän med .';
+$a->strings['You have already introduced yourself here.'] = 'Du har redan presenterat dig h&auml;r.';
+$a->strings['Apparently you are already friends with %s.'] = 'Du och %s &auml;r redan kontakter.';
$a->strings['Invalid profile URL.'] = 'Ogiltig profil-URL.';
-$a->strings['Disallowed profile URL.'] = 'Otillåten profil-URL.';
-$a->strings['Your introduction has been sent.'] = 'Presentationen har skickats.';
-$a->strings["Please login to confirm introduction."] = "Logga in för att acceptera förfrågan.";
-$a->strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Incorrect identity currently logged in. Please login to <strong>this</strong> profile.";
-$a->strings['[Name Withheld]'] = '[Name Withheld]';
-$a->strings['Friend/Connection Request'] = 'Vän- eller kontaktförfrågan';
-$a->strings['Please answer the following:'] = 'Besvara följande, tack:';
-$a->strings['Does $name know you?'] = 'Känner $name dig?';
+$a->strings['Disallowed profile URL.'] = 'Otill&aring;ten profil-URL.';
+$a->strings['Your introduction has been sent.'] = 'Kontaktf&ouml;rfr&aring;gan/Presentationen har skickats.';
+$a->strings["Please login to confirm introduction."] = "Logga in f&ouml;r att acceptera f&ouml;rfr&aring;gan.";
+$a->strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Inloggad med fel identitet. Logga in med <strong>den h&auml;r</strong> profilen.";
+$a->strings['Welcome home %s.'] = 'V&auml;lkommen hem %s.';
+$a->strings['Please confirm your introduction/connection request to %s.'] = 'Bekr&auml;fta att du vill skicka kontaktf&ouml;rfr&aring;gan till %s.';
+$a->strings['Confirm'] = 'Bekr&auml;fta';
+$a->strings['[Name Withheld]'] = '[Namnet visas inte]';
+$a->strings["Introduction received at "] = "Inkommen kontaktf&ouml;rfr&aring;gan/presentation - ";
+$a->strings['Friend/Connection Request'] = 'V&auml;n- eller kontaktf&ouml;rfr&aring;gan';
+$a->strings['Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca'] = 'Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca';
+$a->strings['Please answer the following:'] = 'Var v&auml;nlig besvara f&ouml;ljande:';
+$a->strings['Does $name know you?'] = 'K&auml;nner $name dig?';
$a->strings['Yes'] = 'Ja';
$a->strings['No'] = 'Nej';
-$a->strings['Add a personal note:'] = 'Lägg till ett personligt meddelande:';
-$a->strings['Please enter your profile address from one of the following supported social networks:'] = 'Ange din profiladress på ett av följande sociala nätverk som stöds:';
+$a->strings['Add a personal note:'] = 'L&auml;gg till ett personligt meddelande:';
+$a->strings["Please enter your 'Identity Address' from one of the following supported social networks:"] = "Ange din adress, ditt ID, p&aring; ett av f&ouml;ljande sociala n&auml;tverk:";
$a->strings['Friendika'] = 'Friendika';
$a->strings['StatusNet/Federated Social Web'] = 'StatusNet/Federated Social Web';
-$a->strings["Private \x28secure\x29 network"] = "Privat \x28säkert\x29 nätverk";
-$a->strings["Public \x28insecure\x29 network"] = "Offentligt \x28osäkert\x29 nätverk";
-$a->strings['Your profile address:'] = 'Din profiladress:';
-$a->strings['Submit Request'] = 'Skicka begäran';
+$a->strings["Private \x28secure\x29 network"] = "Privat (s&auml;kert) n&auml;tverk";
+$a->strings["Public \x28insecure\x29 network"] = "Offentligt (os&auml;kert) n&auml;tverk";
+$a->strings['Your Identity Address:'] = 'Din adress (ditt ID):';
+$a->strings['Submit Request'] = 'Skicka f&ouml;rfr&aring;gan';
$a->strings['Cancel'] = 'Avbryt';
-$a->strings['Global Directory'] = 'Global katalog';
-$a->strings['Item not found.'] = 'Hittades inte.';
-$a->strings['Private Message'] = 'Personligt meddelande';
-$a->strings["I like this \x28toggle\x29"] = "Jag gillar detta \x28toggle\x29";
-$a->strings["I don't like this \x28toggle\x29"] = "Jag ogillar detta \x28toggle\x29";
-$a->strings['This is you'] = 'Det här är du';
-$a->strings['Delete'] = 'Ta bort';
-$a->strings['View $name\'s profile'] = 'Visa $name s profil';
-$a->strings['View $owner_name\'s profile'] = 'Visa $owner_name s profil';
-$a->strings['to'] = 'till';
-$a->strings['Wall-to-Wall'] = 'Logg-till-logg';
-$a->strings['via Wall-To-Wall:'] = 'via Logg-till-logg:';
+$a->strings["%d required parameter was not found at the given location"] = array(
+ 0 => "%d required parameter was not found at the given location",
+ 1 => "%d required parameters were not found at the given location",
+);
+$a->strings['Global Directory'] = 'Medlemskatalog f&ouml;r flera sajter (global)';
+$a->strings['Site Directory'] = 'Medlemskatalog';
+$a->strings['Age: '] = '&Aring;lder: ';
+$a->strings['Gender: '] = 'K&ouml;n: ';
+$a->strings["No entries \x28some entries may be hidden\x29."] = "Inget att visa. (Man kan v&auml;lja att inte synas h&auml;r)";
+$a->strings['Item not found.'] = 'Hittar inte.';
$a->strings['Item has been removed.'] = 'Har tagits bort.';
-$a->strings['Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.'] = 'Innehållet omfattas av licensen <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a>.';
-$a->strings['CC: email addresses'] = 'CC: e-postadresser';
-$a->strings['Example: bob@example.com, mary@example.com'] = 'Exempel: adam@exempel.com, bertil@exempel.com';
-$a->strings['The profile address specified does not provide adequate information.'] = 'Angiven profiladress ger inte tillräcklig information.';
-$a->strings['Limited profile. This person will be unable to receive direct/personal notifications from you.'] = 'Begränsad profil. Den här personen kommer inte att kunna ta emot personliga meddelanden från dig.';
-$a->strings['Unable to retrieve contact information.'] = 'Det gick inte att nå kontaktinformationen.';
-$a->strings['following'] = 'följer';
+$a->strings['Item not found'] = 'Hittades inte';
+$a->strings['Edit post'] = '&Auml;ndra inl&auml;gg';
+$a->strings['Edit'] = '&Auml;ndra';
+$a->strings['The profile address specified does not provide adequate information.'] = 'Angiven profiladress ger inte tillr&auml;cklig information.';
+$a->strings['Limited profile. This person will be unable to receive direct/personal notifications from you.'] = 'Begr&auml;nsad profil. Den h&auml;r personen kommer inte att kunna ta emot personliga meddelanden fr&aring;n dig.';
+$a->strings['Unable to retrieve contact information.'] = 'Det gick inte att komma &aring;t kontaktinformationen.';
+$a->strings['following'] = 'f&ouml;ljer';
+$a->strings['This is Friendika version'] = 'Det h&auml;r &auml;r Friendika version';
+$a->strings['running at web location'] = 'som k&ouml;rs p&aring;';
+$a->strings['Shared content within the Friendika network is provided under the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 license</a>'] = 'Inneh&aring;ll som publiceras inom Friendikan&auml;tverket omfattas av licensen <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 license</a>';
+$a->strings['Please visit <a href="http://project.friendika.com">Project.Friendika.com</a> to learn more about the Friendika project.'] = 'G&aring; till <a href="http://project.friendika.com">Project.Friendika.com</a> om du vill l&auml;sa mer om friendikaprojektet.';
+$a->strings['Bug reports and issues: please visit'] = 'Anm&auml;l buggar eller andra problem, g&aring; till';
+$a->strings['Suggestions, praise, donations, etc. - please email "Info" at Friendika - dot com'] = 'F&ouml;rslag, ber&ouml;m, donationer, etc. - skicka e-post till "info at friendika punkt com" ';
+$a->strings['Installed plugins/addons/apps'] = 'Installerade insticksprogram/applikationer';
+$a->strings['No installed plugins/addons/apps'] = 'Inga installerade insticksprogram/applikationer';
$a->strings['Group created.'] = 'Gruppen har skapats.';
$a->strings['Could not create group.'] = 'Det gick inte att skapa gruppen.';
$a->strings['Group not found.'] = 'Gruppen hittades inte.';
-$a->strings['Group name changed.'] = 'Gruppens namn har ändrats.';
-$a->strings['Membership list updated.'] = 'Medlemslistan har uppdaterats.';
+$a->strings['Group name changed.'] = 'Gruppens namn har &auml;ndrats.';
+$a->strings['Create a group of contacts/friends.'] = 'Skapa en grupp med kontakter/v&auml;nner.';
+$a->strings['Group Name: '] = 'Gruppens namn: ';
$a->strings['Group removed.'] = 'Gruppen har tagits bort.';
-$a->strings['Unable to remove group.'] = 'Gruppen kunde inte tas bort.';
-$a->strings["Welcome to "] = "Välkommen till ";
+$a->strings['Unable to remove group.'] = 'Det gick inte att ta bort gruppen.';
+$a->strings['Delete'] = 'Ta bort';
+$a->strings['Click on a contact to add or remove.'] = 'Klicka p&aring; en kontakt f&ouml;r att l&auml;gga till eller ta bort.';
+$a->strings['Group Editor'] = '&Auml;ndra i grupper';
+$a->strings['Members'] = 'Medlemmar';
+$a->strings['All Contacts'] = 'Alla kontakter';
+$a->strings['Help:'] = 'Hj&auml;lp:';
+$a->strings['Help'] = 'Hj&auml;lp';
+$a->strings["Welcome to %s"] = "V&auml;lkommen till %s";
$a->strings['Could not create/connect to database.'] = 'Det gick inte att skapa eller ansluta till databasen.';
$a->strings['Connected to database.'] = 'Ansluten till databasen.';
-$a->strings['Database import succeeded.'] = 'Databasen har importerats.';
+$a->strings['Proceed with Installation'] = 'Forts&auml;tt med installationen';
+$a->strings['Your Friendika site database has been installed.'] = 'Databasen f&ouml;r din friendikasajt har installerats.';
$a->strings['IMPORTANT: You will need to [manually] setup a scheduled task for the poller.'] = 'IMPORTANT: You will need to [manually] setup a scheduled task for the poller.';
$a->strings['Please see the file "INSTALL.txt".'] = 'Se filen "INSTALL.txt".';
+$a->strings['Proceed to registration'] = 'G&aring; vidare till registreringen';
$a->strings['Database import failed.'] = 'Det gick inte att importera databasen.';
-$a->strings['You may need to import the file "database.sql" manually using phpmyadmin or mysql.'] = 'Du kanske måste importera filen "database.sql" manuellt med phpmyadmin eller mysql.';
-$a->strings['Welcome to Friendika.'] = 'Välkommen till Friendika.';
-$a->strings['Submit'] = 'Skicka';
+$a->strings['You may need to import the file "database.sql" manually using phpmyadmin or mysql.'] = 'Du kanske m&aring;ste importera filen "database.sql" manuellt med phpmyadmin eller mysql.';
+$a->strings['Welcome to Friendika.'] = 'V&auml;lkommen till Friendika.';
+$a->strings['Friendika Social Network'] = 'Det sociala n&auml;tverket Friendika';
+$a->strings['Installation'] = 'Installation';
+$a->strings['In order to install Friendika we need to know how to contact your database.'] = 'In order to install Friendika we need to know how to contact your database.';
+$a->strings['Please contact your hosting provider or site administrator if you have questions about these settings.'] = 'Please contact your hosting provider or site administrator if you have questions about these settings.';
+$a->strings['The database you specify below must already exist. If it does not, please create it before continuing.'] = 'The database you specify below must already exist. If it does not, please create it before continuing.';
+$a->strings['Database Server Name'] = 'Database Server Name';
+$a->strings['Database Login Name'] = 'Database Login Name';
+$a->strings['Database Login Password'] = 'Database Login Password';
+$a->strings['Database Name'] = 'Database Name';
+$a->strings['Please select a default timezone for your website'] = 'Please select a default timezone for your website';
$a->strings['Could not find a command line version of PHP in the web server PATH.'] = 'Could not find a command line version of PHP in the web server PATH.';
$a->strings['This is required. Please adjust the configuration file .htconfig.php accordingly.'] = 'This is required. Please adjust the configuration file .htconfig.php accordingly.';
$a->strings['The command line version of PHP on your system does not have "register_argc_argv" enabled.'] = 'The command line version of PHP on your system does not have "register_argc_argv" enabled.';
-$a->strings['This is required for message delivery to work.'] = 'Det krävs för att meddelanden ska kunna levereras.';
+$a->strings['This is required for message delivery to work.'] = 'Det kr&auml;vs f&ouml;r att meddelanden ska kunna levereras.';
$a->strings['Error: the "openssl_pkey_new" function on this system is not able to generate encryption keys'] = 'Fel: funktionen "openssl_pkey_new" kan inte skapa krypteringsnycklar';
-$a->strings['If running under Windows, please see "http://www.php.net/manual/en/openssl.installation.php".'] = 'Läs mer på "http://www.php.net/manual/en/openssl.installation.php" om du kör Windows.';
+$a->strings['If running under Windows, please see "http://www.php.net/manual/en/openssl.installation.php".'] = 'L&auml;s mer p&aring; "http://www.php.net/manual/en/openssl.installation.php" om du k&ouml;r Windows.';
$a->strings['Error: Apache webserver mod-rewrite module is required but not installed.'] = 'Error: Apache webserver mod-rewrite module is required but not installed.';
$a->strings['Error: libCURL PHP module required but not installed.'] = 'Error: libCURL PHP module required but not installed.';
$a->strings['Error: GD graphics PHP module with JPEG support required but not installed.'] = 'Error: GD graphics PHP module with JPEG support required but not installed.';
@@ -243,195 +297,331 @@ $a->strings['Please check with your site documentation or support people to see
$a->strings['If not, you may be required to perform a manual installation. Please see the file "INSTALL.txt" for instructions.'] = 'If not, you may be required to perform a manual installation. Please see the file "INSTALL.txt" for instructions.';
$a->strings['The database configuration file ".htconfig.php" could not be written. Please use the enclosed text to create a configuration file in your web server root.'] = 'The database configuration file ".htconfig.php" could not be written. Please use the enclosed text to create a configuration file in your web server root.';
$a->strings['Errors encountered creating database tables.'] = 'Fel vid skapandet av databastabeller.';
-$a->strings[' : '] = ' : ';
-$a->strings['Not a valid email address.'] = 'Ogiltig e-postadress.';
-$a->strings['Please join my network on '] = 'Gå med i mitt nätverk på ';
-$a->strings['Message delivery failed.'] = 'Meddelandet kom inte fram.';
-$a->strings[' messages sent.'] = ' meddelanden har skickats.';
-$a->strings['Send invitations'] = 'Send invitations';
+$a->strings['%s : Not a valid email address.'] = '%s : Ogiltig e-postadress.';
+$a->strings['%s : Message delivery failed.'] = '%s : Meddelandet kom inte fram.';
+$a->strings['Send invitations'] = 'Skicka inbjudningar';
$a->strings['Enter email addresses, one per line:'] = 'Ange e-postadresser, en per rad:';
-$a->strings['Please join my social network on '] = 'Gå med i mitt sociala nätverk på ';
-$a->strings['To accept this invitation, please visit:'] = 'Gå hit för att tacka ja till inbjudan:';
-$a->strings['Once you have registered, please connect with me via my profile page at:'] = 'Once you have registered, please connect with me via my profile page at:';
-$a->strings['Unable to locate original post.'] = 'Unable to locate original post.';
-$a->strings['Empty post discarded.'] = 'Empty post discarded.';
-$a->strings[" commented on your item at "] = " commented on your item at ";
-$a->strings[" posted on your profile wall at "] = " posted on your profile wall at ";
-$a->strings['System error. Post not saved.'] = 'Systemfel. Inlägget sparades inte.';
-$a->strings['This message was sent to you by '] = 'Du har fått det här meddelandet av ';
-$a->strings[', a member of the Friendika social network.'] = ', medlem i det sociala nätverket Friendika.';
-$a->strings['You may visit them online at'] = 'Besök online på';
-$a->strings['Please contact the sender by replying to this post if you do not wish to receive these messages.'] = 'Kontakta avsändaren genom att svara på det här meddelandet om du inte vill ha sådana här meddelanden.';
-$a->strings['posted an update.'] = 'gjorde en uppdatering.';
-$a->strings['photo'] = 'foto';
+$a->strings['Your message:'] = 'Meddelande:';
+$a->strings['To accept this invitation, please visit:'] = 'G&aring; hit f&ouml;r att tacka ja till inbjudan:';
+$a->strings['Once you have registered, please connect with me via my profile page at:'] = 'Vi kan bli kontakter via min profil. Bes&ouml;k min profil h&auml;r n&auml;r du har registrerat dig:';
+$a->strings["%d message sent."] = array(
+ 0 => "%d meddelande har skickats.",
+ 1 => "%d meddelanden har skickats.",
+);
+$a->strings['Unable to locate original post.'] = 'Hittar inte det ursprungliga inl&auml;gget.';
+$a->strings['Empty post discarded.'] = 'Tomt inl&auml;gg. Inte sparat.';
+$a->strings['Wall Photos'] = 'Loggbilder';
+$a->strings["%s commented on your item at %s"] = "%s har kommenterat ditt inl&auml;gg p&aring; %s";
+$a->strings["%s posted on your profile wall at %s"] = "%s har gjort ett inl&auml;gg p&aring; din logg p&aring; %s";
+$a->strings['System error. Post not saved.'] = 'N&aring;got gick fel. Inl&auml;gget sparades inte.';
+$a->strings['You may visit them online at'] = 'Bes&ouml;k online p&aring;';
+$a->strings['Please contact the sender by replying to this post if you do not wish to receive these messages.'] = 'Kontakta avs&auml;ndaren genom att svara p&aring; det h&auml;r meddelandet om du inte vill ha s&aring;dana h&auml;r meddelanden.';
+$a->strings['%s posted an update.'] = '%s har gjort ett inl&auml;gg.';
+$a->strings['photo'] = 'bild';
$a->strings['status'] = 'status';
-$a->strings['likes'] = 'gillar';
-$a->strings['doesn\'t like'] = 'ogillar';
-$a->strings['\'s'] = 's';
+$a->strings['%1$s likes %2$s\'s %3$s'] = '%1$s gillar %2$s\'s %3$s';
+$a->strings['%1$s doesn\'t like %2$s\'s %3$s'] = '%1$s ogillar %2$s\'s %3$s';
$a->strings['Remote privacy information not available.'] = 'Remote privacy information not available.';
-$a->strings['Visible to:'] = 'Synlig för:';
-$a->strings['Password reset requested at '] = 'Lösenordsåterställning begärd kl ';
-$a->strings["Welcome back "] = "Välkommen tillbaka ";
-$a->strings['Manage Identities and/or Pages'] = 'Ändra identitet eller sidor';
-$a->strings["\x28Toggle between different identities or community/group pages which share your account details.\x29"] = "\x28Toggle between different identities or community/group pages which share your account details.\x29";
-$a->strings['Select an identity to manage: '] = 'Välj vilken identitet du vill ändra: ';
-$a->strings['Normal View'] = 'Normal vy';
-$a->strings['New Item View'] = 'New Item View';
-$a->strings['Share'] = 'Dela';
-$a->strings['Insert YouTube video'] = 'Infoga klipp från YouTube';
-$a->strings['Set your location'] = 'Ange plats';
-$a->strings['Clear browser location'] = 'Clear browser location';
-$a->strings['Permission settings'] = 'Åtkomstinställningar';
-$a->strings['No such group'] = 'Gruppen finns inte';
-$a->strings['Group is empty'] = 'Gruppen är tom';
-$a->strings['Group: '] = 'Grupp: ';
-$a->strings['View in context'] = 'Se i sitt sammanhang';
+$a->strings['Visible to:'] = 'Synlig f&ouml;r:';
+$a->strings['Password reset request issued. Check your email.'] = 'Nytt l&ouml;senord har beg&auml;rts. Kolla din mail.';
+$a->strings['Password reset requested at %s'] = 'Nytt l&ouml;senord p&aring; %s har beg&auml;rts';
+$a->strings["Request could not be verified. \x28You may have previously submitted it.\x29 Password reset failed."] = "Beg&auml;ran kunde inte verifieras. (Du kanske redan skickat den?) Det gick inte att byta l&ouml;senord.";
+$a->strings['Your password has been reset as requested.'] = 'Nu har du f&aring;tt ett nytt l&ouml;senord.';
+$a->strings['Your new password is'] = 'Det nya l&ouml;senordet &auml;r';
+$a->strings['Save or copy your new password - and then'] = 'Spara eller kopiera l&ouml;senordet och';
+$a->strings['click here to login'] = 'klicka h&auml;r f&ouml;r att logga in';
+$a->strings['Your password may be changed from the <em>Settings</em> page after successful login.'] = 'N&auml;r du loggat in kan du byta l&ouml;senord p&aring; sidan <em>Inst&auml;llningar</em>.';
+$a->strings['Forgot your Password?'] = 'Gl&ouml;mt l&ouml;senordet?';
+$a->strings['Enter your email address and submit to have your password reset. Then check your email for further instructions.'] = 'Ange din e-postadress f&ouml;r att f&aring; ett nytt l&ouml;senord. Du kommer att f&aring; ett meddelande med vidare instruktioner via e-post.';
+$a->strings['Nickname or Email: '] = 'Anv&auml;ndarnamn eller e-post:';
+$a->strings['Reset'] = 'Skicka';
+$a->strings["Welcome back %s"] = "V&auml;lkommen tillbaka %s";
+$a->strings['Manage Identities and/or Pages'] = 'Hantera identiteter eller sidor';
+$a->strings["\x28Toggle between different identities or community/group pages which share your account details.\x29"] = "(V&auml;xla mellan olika identiteter eller gemenskaper/gruppsidor som &auml;r kopplade till ditt konto.)";
+$a->strings['Select an identity to manage: '] = 'V&auml;lj vilken identitet du vill hantera: ';
+$a->strings['Profile Match'] = 'Matcha profiler';
+$a->strings['No matches'] = 'Ingen tr&auml;ff';
+$a->strings['No recipient selected.'] = 'Ingen mottagare har valts.';
+$a->strings['[no subject]'] = '[ingen rubrik]';
+$a->strings['Unable to locate contact information.'] = 'Det gick inte att hitta kontaktuppgifterna.';
+$a->strings['Message sent.'] = 'Meddelandet har skickats.';
+$a->strings['Message could not be sent.'] = 'Det gick inte att skicka meddelandet.';
+$a->strings['Messages'] = 'Meddelanden';
+$a->strings['Inbox'] = 'Inkorg';
+$a->strings['Outbox'] = 'Utkorg';
+$a->strings['New Message'] = 'Nytt meddelande';
+$a->strings['Message deleted.'] = 'Meddelandet togs bort.';
+$a->strings['Conversation removed.'] = 'Konversationen togs bort.';
+$a->strings['Send Private Message'] = 'Skicka personligt meddelande';
+$a->strings['To:'] = 'Till:';
+$a->strings['Subject:'] = 'Rubrik:';
+$a->strings['No messages.'] = 'Inga meddelanden.';
+$a->strings['Delete conversation'] = 'Ta bort konversation';
+$a->strings['D, d M Y - g:i A'] = 'D, d M Y - g:i A';
+$a->strings['Message not available.'] = 'Meddelandet &auml;r inte tillg&auml;ngligt.';
+$a->strings['Delete message'] = 'Ta bort meddelande';
+$a->strings['Send Reply'] = 'Skicka svar';
$a->strings['Invalid request identifier.'] = 'Invalid request identifier.';
-$a->strings['Discard'] = 'Kasta bort';
+$a->strings['Discard'] = 'Ta bort';
$a->strings['Ignore'] = 'Ignorera';
-$a->strings['Show Ignored Requests'] = 'Show Ignored Requests';
-$a->strings['Hide Ignored Requests'] = 'Hide Ignored Requests';
-$a->strings['Claims to be known to you: '] = 'Hävdar att du vet vem han/hon är: ';
+$a->strings['Pending Friend/Connect Notifications'] = 'V&auml;ntande kontaktf&ouml;rfr&aring;gningar';
+$a->strings['Show Ignored Requests'] = 'Visa f&ouml;rfr&aring;gningar du ignorerat';
+$a->strings['Hide Ignored Requests'] = 'D&ouml;lj f&ouml;rfr&aring;gningar du ignorerat';
+$a->strings['Claims to be known to you: '] = 'H&auml;vdar att du vet vem han/hon &auml;r: ';
$a->strings['yes'] = 'ja';
$a->strings['no'] = 'nej';
-$a->strings['Approve as: '] = 'Godkänn som: ';
-$a->strings['Friend'] = 'Vän';
+$a->strings['Approve as: '] = 'Godk&auml;nn och l&auml;gg till som: ';
+$a->strings['Friend'] = 'V&auml;n';
$a->strings['Fan/Admirer'] = 'Fan/Beundrare';
-$a->strings['Notification type: '] = 'Notification type: ';
-$a->strings['Friend/Connect Request'] = 'Friend/Connect Request';
-$a->strings['New Follower'] = 'New Follower';
-$a->strings['Approve'] = 'Godkänn';
+$a->strings['Notification type: '] = 'Typ av avisering: ';
+$a->strings['Friend/Connect Request'] = 'V&auml;n- eller kontaktf&ouml;rfr&aring;gan';
+$a->strings['New Follower'] = 'En som vill f&ouml;lja dig';
+$a->strings['Approve'] = 'Godk&auml;nn';
$a->strings['No notifications.'] = 'Inga aviseringar.';
+$a->strings['User registrations waiting for confirm'] = 'Anv&auml;ndare som registrerat sig och inv&auml;ntar godk&auml;nnande';
+$a->strings['Deny'] = 'Avsl&aring;';
$a->strings['No registrations.'] = 'Inga registreringar.';
+$a->strings['Post successful.'] = 'Inlagt.';
$a->strings['Login failed.'] = 'Inloggningen misslyckades.';
+$a->strings["Welcome back "] = "V&auml;lkommen tillbaka ";
$a->strings['Photo Albums'] = 'Fotoalbum';
-$a->strings['Contact Photos'] = 'Contact Photos';
-$a->strings['Contact information unavailable'] = 'Kontaktinformationen är inte tillgänglig';
+$a->strings['Contact Photos'] = 'Dina kontakters bilder';
+$a->strings['Contact information unavailable'] = 'Kommer inte &aring;t kontaktuppgifter.';
$a->strings['Profile Photos'] = 'Profilbilder';
$a->strings['Album not found.'] = 'Albumet finns inte.';
$a->strings['Delete Album'] = 'Ta bort album';
-$a->strings['Delete Photo'] = 'Ta bort foto';
+$a->strings['Delete Photo'] = 'Ta bort bild';
$a->strings['was tagged in a'] = 'har taggats i';
$a->strings['by'] = 'av';
-$a->strings['Image exceeds size limit of '] = 'Bilden överskrider den tillåtna storleken ';
-$a->strings['Unable to process image.'] = 'Bilden kunde inte bahandlas.';
+$a->strings['Image exceeds size limit of '] = 'Bilden &ouml;verskrider den till&aring;tna storleken ';
+$a->strings['Unable to process image.'] = 'Det gick inte att behandla bilden.';
$a->strings['Image upload failed.'] = 'Fel vid bilduppladdning.';
-$a->strings['No photos selected'] = 'Inga foton har valts';
-$a->strings['Upload Photos'] = 'Ladda upp foton';
+$a->strings['No photos selected'] = 'Inga bilder har valts';
+$a->strings['Upload Photos'] = 'Ladda upp bilder';
$a->strings['New album name: '] = 'Nytt album med namn: ';
$a->strings['or existing album name: '] = 'eller befintligt album med namn: ';
-$a->strings['Permissions'] = 'Åtkomst';
+$a->strings['Permissions'] = '&Aring;tkomst';
$a->strings['Edit Album'] = 'Redigera album';
-$a->strings['View Photo'] = 'Visa foto';
-$a->strings['Photo not available'] = 'Fotot är inte tillgängligt';
-$a->strings['Edit photo'] = 'Redigera foto';
+$a->strings['View Photo'] = 'Visa bild';
+$a->strings['Photo not available'] = 'Bilden &auml;r inte tillg&auml;nglig';
+$a->strings['Edit photo'] = 'Hantera bild';
+$a->strings['Private Message'] = 'Personligt meddelande';
+$a->strings['<< Prev'] = '<< F&ouml;reg';
$a->strings['View Full Size'] = 'Visa fullstor';
+$a->strings['Next >>'] = 'N&auml;sta >>';
$a->strings['Tags: '] = 'Taggar: ';
$a->strings['[Remove any tag]'] = '[Remove any tag]';
$a->strings['New album name'] = 'Nytt album med namn';
$a->strings['Caption'] = 'Caption';
-$a->strings['Add a Tag'] = 'Lägg till tagg';
+$a->strings['Add a Tag'] = 'L&auml;gg till tagg';
$a->strings['Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'] = 'Exempel: @adam, @Anna_Andersson, @johan@exempel.com, #Stockholm, #camping';
-$a->strings['Recent Photos'] = 'Nyligen tillagda foton';
-$a->strings['Upload New Photos'] = 'Ladda upp foton';
+$a->strings["I like this \x28toggle\x29"] = "Jag gillar det h&auml;r (v&auml;xla)";
+$a->strings["I don't like this \x28toggle\x29"] = "Jag ogillar det h&auml;r (v&auml;xla)";
+$a->strings['This is you'] = 'Det h&auml;r &auml;r du';
+$a->strings['Recent Photos'] = 'Nyligen tillagda bilder';
+$a->strings['Upload New Photos'] = 'Ladda upp bilder';
$a->strings['View Album'] = 'Titta i album';
-$a->strings['Image uploaded but image cropping failed.'] = 'Bilden laddades upp men det blev fel när den skulle beskäras.';
-$a->strings['Image size reduction [175] failed.'] = 'Fel när bildstorlek skulle minskas [175].';
-$a->strings['Image size reduction [80] failed.'] = 'Fel när bildstorlek skulle minskas [80].';
-$a->strings['Image size reduction [48] failed.'] = 'Fel när bildstorlek skulle minskas [48].';
+$a->strings['Status'] = 'Status';
+$a->strings['Profile'] = 'Profil';
+$a->strings['Photos'] = 'Bilder';
+$a->strings['Image uploaded but image cropping failed.'] = 'Bilden laddades upp men det blev fel n&auml;r den skulle besk&auml;ras.';
$a->strings['Unable to process image'] = 'Det gick inte att behandla bilden';
+$a->strings['Upload File:'] = 'Ladda upp fil:';
+$a->strings['Upload Profile Photo'] = 'Ladda upp profilbild';
+$a->strings['Upload'] = 'Ladda upp';
+$a->strings['or'] = 'eller';
+$a->strings['select a photo from your photo albums'] = 'v&auml;lj en bild fr&aring;n ett album';
+$a->strings['Crop Image'] = 'Besk&auml;r bild';
+$a->strings['Please adjust the image cropping for optimum viewing.'] = 'V&auml;lj hur bilden ska besk&auml;ras f&ouml;r att bli s&aring; bra som m&ouml;jligt.';
+$a->strings['Done Editing'] = 'Spara';
$a->strings['Image uploaded successfully.'] = 'Bilden har laddats upp.';
-$a->strings['Image size reduction [640] failed.'] = 'Fel när bildstorlek skulle minskas [640].';
-$a->strings['Profile Name is required.'] = 'Profilen måste ha ett namn.';
+$a->strings['Profile Name is required.'] = 'Profilen m&aring;ste ha ett namn.';
$a->strings['Profile updated.'] = 'Profilen har uppdaterats.';
$a->strings['Profile deleted.'] = 'Profilen har tagits bort.';
$a->strings['Profile-'] = 'Profil-';
$a->strings['New profile created.'] = 'En ny profil har skapats.';
$a->strings['Profile unavailable to clone.'] = 'Det gick inte att klona profilen.';
-$a->strings['This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet.'] = 'Det här är din <strong>offentliga</strong> profil.<br />Den <strong>kan</strong> vara synlig för vem som helst på internet.';
-$a->strings['Age: '] = 'Ålder: ';
+$a->strings['Hide my contact/friend list from viewers of this profile?'] = 'D&ouml;lj min kontaktlista f&ouml;r personer som ser den h&auml;r profilen?';
+$a->strings['Edit Profile Details'] = '&Auml;ndra profilen';
+$a->strings['View this profile'] = 'Titta p&aring; profilen';
+$a->strings['Create a new profile using these settings'] = 'Skapa en ny profil med dessa inst&auml;llningar';
+$a->strings['Clone this profile'] = 'Kopiera profil';
+$a->strings['Delete this profile'] = 'Ta bort profil';
+$a->strings['Profile Name:'] = 'Profilens namn:';
+$a->strings['Your Full Name:'] = 'Fullst&auml;ndigt namn:';
+$a->strings['Title/Description:'] = 'Titel/Beskrivning:';
+$a->strings['Your Gender:'] = 'K&ouml;n:';
+$a->strings["Birthday \x28y/m/d\x29:"] = "F&ouml;delsedag \x28y/m/d\x29:";
+$a->strings['Street Address:'] = 'Gatuadress:';
+$a->strings['Locality/City:'] = 'Plats/Stad:';
+$a->strings['Postal/Zip Code:'] = 'Postnummer:';
+$a->strings['Country:'] = 'Land:';
+$a->strings['Region/State:'] = 'Region:';
+$a->strings['<span class="heart">&hearts;</span> Marital Status:'] = '<span class="heart">&hearts;</span> Civilst&aring;nd:';
+$a->strings["Who: \x28if applicable\x29"] = "Vem: (om till&auml;mpligt)";
+$a->strings['Examples: cathy123, Cathy Williams, cathy@example.com'] = 'Exempel: kalle123, Johanna Johansson, pelle@exempel.com';
+$a->strings['Sexual Preference:'] = 'Sexualitet';
+$a->strings['Homepage URL:'] = 'Hemsida: (URL)';
+$a->strings['Political Views:'] = 'Politisk &aring;sk&aring;dning:';
+$a->strings['Religious Views:'] = 'Religion:';
+$a->strings['Public Keywords:'] = 'Offentliga nyckelord:';
+$a->strings['Private Keywords:'] = 'Privata nyckelord:';
+$a->strings['Example: fishing photography software'] = 'Exempel: fiske fotografering programmering';
+$a->strings["\x28Used for suggesting potential friends, can be seen by others\x29"] = "(Obs, synliga f&ouml;r andra. Anv&auml;nds f&ouml;r att f&ouml;resl&aring; potentiella v&auml;nner.)";
+$a->strings["\x28Used for searching profiles, never shown to others\x29"] = "(Obs, kan ge s&ouml;ktr&auml;ffar vid s&ouml;kning av profiler. Visas annars inte f&ouml;r andra.)";
+$a->strings['Tell us about yourself...'] = 'Beskriv dig sj&auml;lv...';
+$a->strings['Hobbies/Interests'] = 'Hobbys/Intressen';
+$a->strings['Contact information and Social Networks'] = 'Kontaktuppgifter och sociala n&auml;tverk';
+$a->strings['Musical interests'] = 'Musik';
+$a->strings['Books, literature'] = 'B&ouml;cker, litteratur';
+$a->strings['Television'] = 'TV';
+$a->strings['Film/dance/culture/entertainment'] = 'Film/Dans/Kultur/N&ouml;je';
+$a->strings['Love/romance'] = 'K&auml;rlek/Romantik';
+$a->strings['Work/employment'] = 'Arbete';
+$a->strings['School/education'] = 'Skola/Utbildning';
+$a->strings['This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet.'] = 'Det h&auml;r &auml;r din <strong>offentliga</strong> profil.<br />Den <strong>kan vara synlig f&ouml;r vem som helst</strong> p&aring; internet.';
+$a->strings['Profiles'] = 'Profiler';
+$a->strings['Change profile photo'] = 'Byt profilbild';
+$a->strings['Create New Profile'] = 'Skapa ny profil';
$a->strings['Profile Image'] = 'Profilbild';
+$a->strings['Visible to everybody'] = 'Synlig f&ouml;r alla';
+$a->strings['Edit visibility'] = '&Auml;nda vilka som ska kunna se';
+$a->strings['Invalid profile identifier.'] = 'Ogiltigt profil-ID.';
+$a->strings['Profile Visibility Editor'] = '&Auml;nda vilka som ska kunna se profil';
+$a->strings['Visible To'] = 'Synlig f&ouml;r';
+$a->strings["All Contacts \x28with secure profile access\x29"] = "Alla kontakter (med s&auml;ker tillg&aring;ng till din profil)";
$a->strings['Invalid OpenID url'] = 'Ogiltig OpenID-URL';
-$a->strings['Please enter the required information.'] = 'Fyll i alla obligatoriska fält.';
-$a->strings['Please use a shorter name.'] = 'Välj ett kortare namn.';
-$a->strings['Name too short.'] = 'Namnet är för kort.';
-$a->strings["That doesn\'t appear to be your full \x28First Last\x29 name."] = "Du verkar inte ha angett ditt fullständiga namn.";
-$a->strings['Your email domain is not among those allowed on this site.'] = 'Din epostdomän är inte tillåten på den här webbplatsen.';
-$a->strings['Cannot use that email.'] = 'Får inte använda den e-postadressen.';
-$a->strings['Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.'] = 'Ditt användarnamn får bara innehålla "a-z", "0-9", "-" och "_", och måste dessutom börja med en bokstav.';
-$a->strings['Nickname is already registered. Please choose another.'] = 'Användarnamnet är upptaget. Välj ett annat.';
+$a->strings['Please enter the required information.'] = 'Fyll i alla obligatoriska f&auml;lt.';
+$a->strings['Please use a shorter name.'] = 'V&auml;lj ett kortare namn.';
+$a->strings['Name too short.'] = 'Namnet &auml;r f&ouml;r kort.';
+$a->strings["That doesn't appear to be your full \x28First Last\x29 name."] = 'Du verkar inte ha angett ditt fullst&auml;ndiga namn.';
+$a->strings['Your email domain is not among those allowed on this site.'] = 'Din e-postdom&auml;n &auml;r inte till&aring;ten p&aring; den h&auml;r webbplatsen.';
+$a->strings['Not a valid email address.'] = 'Ogiltig e-postadress.';
+$a->strings['Cannot use that email.'] = 'Otill&aring;ten e-postadress.';
+$a->strings['Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.'] = 'Ditt anv&auml;ndarnamn f&aring;r bara inneh&aring;lla a-z, 0-9, - och _, och m&aring;ste dessutom b&ouml;rja med en bokstav.';
+$a->strings['Nickname is already registered. Please choose another.'] = 'Anv&auml;ndarnamnet &auml;r upptaget. V&auml;lj ett annat.';
$a->strings['SERIOUS ERROR: Generation of security keys failed.'] = 'SERIOUS ERROR: Generation of security keys failed.';
-$a->strings['An error occurred during registration. Please try again.'] = 'Något gick fel vid registreringen. Försök igen.';
-$a->strings['An error occurred creating your default profile. Please try again.'] = 'An error occurred creating your default profile. Please try again.';
-$a->strings['Registration details for '] = 'Registration details for ';
-$a->strings['Registration successful. Please check your email for further instructions.'] = 'Registrering klar. Kolla din e-post för vidare instruktioner.';
-$a->strings['Failed to send email message. Here is the message that failed.'] = 'Det gick inte att skicka e-brevet. Här är meddelandet som inte kunde skickas.';
-$a->strings['Your registration can not be processed.'] = 'Det går inte att behandla registreringen.';
-$a->strings['Registration request at '] = 'Registration request at ';
-$a->strings['Your registration is pending approval by the site owner.'] = 'Din registrering inväntar godkännande av webbplatsens ägare.';
-$a->strings["You may \x28optionally\x29 fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "You may \x28optionally\x29 fill in this form via OpenID by supplying your OpenID and clicking 'Register'.";
-$a->strings['If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'] = 'Om du inte känner till OpenID kan du lämna det fältet tomt och fylla i resten.';
-$a->strings["Your OpenID \x28optional\x29: "] = "Ditt OpenID \x28krävs ej\x29: ";
-$a->strings['Members of this network prefer to communicate with real people who use their real names.'] = 'Medlemmarna i det här nätverket föredrar att kommunicera med riktiga människor som använder sina riktiga namn.';
-$a->strings['Include your profile in member directory?'] = 'Inkludera din profil i medlemskatalogen?';
+$a->strings['An error occurred during registration. Please try again.'] = 'N&aring;got gick fel vid registreringen. F&ouml;rs&ouml;k igen.';
+$a->strings['An error occurred creating your default profile. Please try again.'] = 'Det blev fel n&auml;r din standardprofil skulle skapas. Prova igen.';
+$a->strings['Registration successful. Please check your email for further instructions.'] = 'Registrering klar. Kolla din e-post f&ouml;r vidare information.';
+$a->strings['Failed to send email message. Here is the message that failed.'] = 'Det gick inte att skicka e-brevet. H&auml;r &auml;r meddelandet som inte kunde skickas.';
+$a->strings['Your registration can not be processed.'] = 'Det g&aring;r inte att behandla registreringen.';
+$a->strings['Your registration is pending approval by the site owner.'] = 'Din registrering inv&auml;ntar godk&auml;nnande av webbplatsens &auml;gare.';
+$a->strings["You may \x28optionally\x29 fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Om du vill kan du fylla i detta formul&auml;r via OpenID genom att ange ditt OpenID och klicka p&aring; Registrera.";
+$a->strings['If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'] = 'Om du inte vet vad OpenID &auml;r, eller inte vill anv&auml;nda det, kan du l&auml;mna det f&auml;ltet tomt och fylla i resten.';
+$a->strings["Your OpenID \x28optional\x29: "] = "OpenID (om du vill): ";
+$a->strings['Members of this network prefer to communicate with real people who use their real names.'] = 'Medlemmarna i det h&auml;r n&auml;tverket f&ouml;redrar att kommunicera med riktiga m&auml;nniskor som anv&auml;nder sina riktiga namn.';
+$a->strings['Include your profile in member directory?'] = 'Ta med profilen i medlemskatalogen?';
$a->strings['Registration'] = 'Registrering';
-$a->strings['Your Full Name ' . "\x28" . 'e.g. Joe Smith' . "\x29" . ': '] = 'Ditt fullständiga namn ' . "\x28" . 't. ex. Karl Karlsson' . "\x29" . ': ';
-$a->strings['Your Email Address: '] = 'Din e-postadress: ';
-$a->strings['Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be \'<strong>nickname@$sitename</strong>\'.'] = 'Välj ett användarnamn. Det måste inledas med en bokstav. Din profiladress på den här webbplatsen blir \'<strong>användarnamn@$sitename</strong>\'.';
-$a->strings['Choose a nickname: '] = 'Välj ett användarnamn: ';
+$a->strings['Your Full Name ' . "\x28" . 'e.g. Joe Smith' . "\x29" . ': '] = 'Fullst&auml;ndigt namn ' . "\x28" . 't. ex. Karl Karlsson' . "\x29" . ': ';
+$a->strings['Your Email Address: '] = 'E-postadress: ';
+$a->strings['Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be \'<strong>nickname@$sitename</strong>\'.'] = 'V&auml;lj ett anv&auml;ndarnamn. Det m&aring;ste inledas med en bokstav. Din profiladress p&aring; den h&auml;r webbplatsen blir \'<strong>anv&auml;ndarnamn@$sitename</strong>\'.';
+$a->strings['Choose a nickname: '] = 'V&auml;lj ett anv&auml;ndarnamn: ';
$a->strings['Please login.'] = 'Logga in.';
-$a->strings['Registration revoked for '] = 'Registration revoked for ';
-$a->strings['Account approved.'] = 'Kontot har godkänts.';
+$a->strings['Account approved.'] = 'Kontot har godk&auml;nts.';
$a->strings['Remove My Account'] = 'Ta bort mitt konto';
-$a->strings['This will completely remove your account. Once this has been done it is not recoverable.'] = 'Detta kommer att ta bort kontot helt och hållet. Efter att det är gjort går det inte att återställa.';
-$a->strings['Please enter your password for verification:'] = 'Ange lösenordet igen för jämförelse:';
-$a->strings['Passwords do not match. Password unchanged.'] = 'Lösenorden skiljer sig åt. Lösenordet ändras inte.';
-$a->strings['Empty passwords are not allowed. Password unchanged.'] = 'Lösenordet får inte vara blankt. Lösenordet ändras inte.';
-$a->strings['Password changed.'] = 'Lösenordet har ändrats.';
-$a->strings['Password update failed. Please try again.'] = 'Det blev fel när lösenordet skulle ändras. Försök igen.';
-$a->strings[' Please use a shorter name.'] = ' Använd ett kortare namn.';
-$a->strings[' Name too short.'] = ' Namnet är för kort.';
+$a->strings['This will completely remove your account. Once this has been done it is not recoverable.'] = 'Detta kommer att ta bort kontot helt och h&aring;llet. Efter att det &auml;r gjort g&aring;r det inte att &aring;terst&auml;lla.';
+$a->strings['Please enter your password for verification:'] = 'Ange l&ouml;senordet igen f&ouml;r s&auml;kerhets skull:';
+$a->strings['No results.'] = 'Inga resultat.';
+$a->strings['Passwords do not match. Password unchanged.'] = 'L&ouml;senorden skiljer sig &aring;t. L&ouml;senordet &auml;ndras inte.';
+$a->strings['Empty passwords are not allowed. Password unchanged.'] = 'L&ouml;senordet f&aring;r inte vara blankt. L&ouml;senordet &auml;ndras inte.';
+$a->strings['Password changed.'] = 'L&ouml;senordet har &auml;ndrats.';
+$a->strings['Password update failed. Please try again.'] = 'Det blev fel n&auml;r l&ouml;senordet skulle &auml;ndras. F&ouml;rs&ouml;k igen.';
+$a->strings[' Please use a shorter name.'] = ' Anv&auml;nd ett kortare namn.';
+$a->strings[' Name too short.'] = ' Namnet &auml;r f&ouml;r kort.';
$a->strings[' Not valid email.'] = ' Ogiltig e-postadress.';
-$a->strings[' Cannot change to that email.'] = ' Ändring till den e-postadressen görs inte.';
-$a->strings['Settings updated.'] = 'Inställningarna har uppdaterats.';
-$a->strings['Plugin Settings'] = 'Plugin Settings';
-$a->strings['Account Settings'] = 'Kontoinställningar';
-$a->strings['No Plugin settings configured'] = 'No Plugin settings configured';
+$a->strings[' Cannot change to that email.'] = ' &Auml;ndring till den e-postadressen g&ouml;rs inte.';
+$a->strings['Settings updated.'] = 'Inst&auml;llningarna har uppdaterats.';
+$a->strings['Plugin Settings'] = 'Inst&auml;llningar f&ouml;r insticksprogram';
+$a->strings['Account Settings'] = 'Kontoinst&auml;llningar';
+$a->strings['No Plugin settings configured'] = 'Det finns inga inst&auml;llningar f&ouml;r insticksprogram';
+$a->strings['Normal Account'] = 'Vanligt konto';
+$a->strings['This account is a normal personal profile'] = 'Kontot &auml;r ett vanligt personligt konto';
+$a->strings['Soapbox Account'] = 'Konto med env&auml;gskommunikation';
+$a->strings['Automatically approve all connection/friend requests as read-only fans'] = 'Kontaktf&ouml;rfr&aring;gningar godk&auml;nns automatiskt som fans. De kan se vad du skriver men har inte samma r&auml;ttigheter som v&auml;nner.';
+$a->strings['Community/Celebrity Account'] = 'Gemenskap eller k&auml;ndiskonto.';
+$a->strings['Automatically approve all connection/friend requests as read-write fans'] = 'Kontaktf&ouml;rfr&aring;gningar godk&auml;nns automatiskt som fans med fullst&auml;ndig tv&aring;v&auml;gskommunikation.';
+$a->strings['Automatic Friend Account'] = 'Konto med automatiskt godk&auml;nnande av v&auml;nner.';
+$a->strings['Automatically approve all connection/friend requests as friends'] = 'Kontaktf&ouml;rfr&aring;gningar godk&auml;nns automatiskt som v&auml;nner.';
$a->strings['OpenID: '] = 'OpenID: ';
-$a->strings["&nbsp;\x28Optional\x29 Allow this OpenID to login to this account."] = "&nbsp;\x28Valfritt\x29 Tillåt inloggning med detta OpenID på det här kontot.";
-$a->strings['Profile is <strong>not published</strong>.'] = 'Profilen är <strong>inte publicerad</strong>.';
-$a->strings['Default Post Permissions'] = 'Default Post Permissions';
+$a->strings["&nbsp;\x28Optional\x29 Allow this OpenID to login to this account."] = "&nbsp;\x28Valfritt\x29 Till&aring;t inloggning med detta OpenID p&aring; det h&auml;r kontot.";
+$a->strings['Publish your default profile in site directory?'] = 'Vill du att din standardprofil ska synas i den h&auml;r sajtens medlemskatalog?';
+$a->strings['Publish your default profile in global social directory?'] = 'Vill du att din standardprofil ska synas i den globala medlemskatalogen?';
+$a->strings['Profile is <strong>not published</strong>.'] = 'Profilen &auml;r <strong>inte publicerad</strong>.';
+$a->strings['Your Identity Address is'] = 'Din adress, ditt ID, &auml;r';
+$a->strings['Export Personal Data'] = 'Exportera personlig information';
+$a->strings['Basic Settings'] = 'Grundl&auml;ggande inst&auml;llningar';
+$a->strings['Full Name:'] = 'Fullst&auml;ndigt namn:';
+$a->strings['Email Address:'] = 'E-postadress:';
+$a->strings['Your Timezone:'] = 'Tidszon:';
+$a->strings['Default Post Location:'] = 'Default Post Location:';
+$a->strings['Use Browser Location:'] = 'Anv&auml;nd webbl&auml;sarens positionering:';
+$a->strings['Display Theme:'] = 'Tema/utseende:';
+$a->strings['Security and Privacy Settings'] = 'Inst&auml;llningar f&ouml;r s&auml;kerhet och sekretess';
+$a->strings['Maximum Friend Requests/Day:'] = 'Maximalt antal kontaktf&ouml;rfr&aring;gningar per dygn:';
+$a->strings["\x28to prevent spam abuse\x29"] = "(f&ouml;r att motverka spam)";
+$a->strings['Allow friends to post to your profile page:'] = 'L&aring;t kontakter g&ouml;ra inl&auml;gg p&aring; din profilsida:';
+$a->strings["Automatically expire \x28delete\x29 posts older than"] = "Ta automatiskt bort inl&auml;gg som &auml;r &auml;ldre &auml;n";
+$a->strings['days'] = 'dagar';
+$a->strings['Notification Settings'] = 'Aviseringsinst&auml;llningar';
+$a->strings['Send a notification email when:'] = 'Skicka ett aviseringsmail n&auml;r:';
+$a->strings['You receive an introduction'] = 'En kontaktf&ouml;rfr&aring;gan anl&auml;nder';
+$a->strings['Your introductions are confirmed'] = 'Dina f&ouml;rfr&aring;gningar godk&auml;nns';
+$a->strings['Someone writes on your profile wall'] = 'N&aring;gon g&ouml;r inl&auml;gg p&aring; din profilsida';
+$a->strings['Someone writes a followup comment'] = 'N&aring;gon g&ouml;r ett inl&auml;gg i samma tr&aring;d som du';
+$a->strings['You receive a private message'] = 'Du f&aring;r personliga meddelanden';
+$a->strings['Password Settings'] = 'L&ouml;senordsinst&auml;llningar';
+$a->strings['Leave password fields blank unless changing'] = 'L&auml;mna f&auml;ltet tomt om du inte vill byta l&ouml;senord';
+$a->strings['New Password:'] = 'Nytt l&ouml;senord';
+$a->strings['Confirm:'] = 'Bekr&auml;fta (repetera):';
+$a->strings['Advanced Page Settings'] = 'Avancerat';
+$a->strings['Default Post Permissions'] = 'Standard&aring;tkomst f&ouml;r inl&auml;gg';
+$a->strings["\x28click to open/close\x29"] = "(klicka f&ouml;r att &ouml;ppna/st&auml;nga)";
$a->strings['Tag removed'] = 'Taggen har tagits bort';
$a->strings['Remove Item Tag'] = 'Ta bort tagg';
-$a->strings['Select a tag to remove: '] = 'Välj vilken tagg som ska tas bort: ';
+$a->strings['Select a tag to remove: '] = 'V&auml;lj vilken tagg som ska tas bort: ';
$a->strings['Remove'] = 'Ta bort';
$a->strings['No contacts.'] = 'Inga kontakter.';
-$a->strings['Visible To:'] = 'Synlig för:';
+$a->strings['Visible To:'] = 'Synlig f&ouml;r:';
$a->strings['Groups'] = 'Grupper';
-$a->strings['Except For:'] = 'Utom för:';
+$a->strings['Except For:'] = 'Utom f&ouml;r:';
$a->strings['Logged out.'] = 'Utloggad.';
-$a->strings['Unknown | Not categorised'] = 'Okänd | Inte kategoriserad';
-$a->strings['Block immediately'] = 'Spärra omedelbart';
-$a->strings['Shady, spammer, self-marketer'] = 'Suspekt, spammare, reklamspridare';
-$a->strings['Known to me, but no opinion'] = 'Jag vet vem det är, men har ingen åsikt';
-$a->strings['OK, probably harmless'] = 'OK, antagligen harmlös';
-$a->strings['Reputable, has my trust'] = 'Pålitlig, jag litar på personen';
+$a->strings['Unknown | Not categorised'] = 'Ok&auml;nd | Inte kategoriserad';
+$a->strings['Block immediately'] = 'Sp&auml;rra omedelbart';
+$a->strings['Shady, spammer, self-marketer'] = 'Skum, spammare, reklamspridare';
+$a->strings['Known to me, but no opinion'] = 'Jag vet vem det &auml;r, men har ingen &aring;sikt';
+$a->strings['OK, probably harmless'] = 'OK, antagligen harml&ouml;s';
+$a->strings['Reputable, has my trust'] = 'P&aring;litlig, jag litar p&aring; personen';
$a->strings['Frequently'] = 'Ofta';
-$a->strings['Hourly'] = 'Varje timme';
-$a->strings['Twice daily'] = 'Två gånger om dagen';
+$a->strings['Hourly'] = 'En g&aring;ng i timmen';
+$a->strings['Twice daily'] = 'Tv&aring; g&aring;nger om dagen';
$a->strings['Daily'] = 'Dagligen';
$a->strings['Weekly'] = 'Veckovis';
-$a->strings['Monthly'] = 'Månadsvis';
+$a->strings['Monthly'] = 'M&aring;nadsvis';
+$a->strings['View %s\'s profile'] = 'G&aring; till profilen som tillh&ouml;r %s ';
+$a->strings['View in context'] = 'Visa i sitt sammanhang';
+$a->strings['See more posts like this'] = 'Leta inl&auml;gg som liknar det h&auml;r';
+$a->strings['See all %d comments'] = 'Visa alla %d kommentarer';
+$a->strings['to'] = 'till';
+$a->strings['Wall-to-Wall'] = 'Profil-till-profil';
+$a->strings['via Wall-To-Wall:'] = 'via profil-till-profil:';
+$a->strings['%s likes this.'] = '%s gillar det h&auml;r.';
+$a->strings['%s doesn\'t like this.'] = '%s ogillar det h&auml;r.';
+$a->strings['<span %1$s>%2$d people</span> like this.'] = '<span %1$s>%2$d personer</span> gillar det h&auml;r.';
+$a->strings['<span %1$s>%2$d people</span> don\'t like this.'] = '<span %1$s>%2$d personer</span> ogillar det h&auml;r.';
+$a->strings['and'] = 'och';
+$a->strings[', and %d other people'] = ', och ytterligare %d personer';
+$a->strings['%s like this.'] = '%s gillar det h&auml;r.';
+$a->strings['%s don\'t like this.'] = '%s ogillar det h&auml;r.';
$a->strings['Miscellaneous'] = 'Blandat';
-$a->strings['less than a second ago'] = 'för mindre än en sekund sedan';
-$a->strings['year'] = 'år';
-$a->strings['years'] = 'år';
-$a->strings['month'] = 'månad';
-$a->strings['months'] = 'månader';
+$a->strings['less than a second ago'] = 'f&ouml;r mindre &auml;n en sekund sedan';
+$a->strings['year'] = '&aring;r';
+$a->strings['years'] = '&aring;r';
+$a->strings['month'] = 'm&aring;nad';
+$a->strings['months'] = 'm&aring;nader';
$a->strings['week'] = 'vecka';
$a->strings['weeks'] = 'veckor';
$a->strings['day'] = 'dag';
-$a->strings['days'] = 'dagar';
$a->strings['hour'] = 'timme';
$a->strings['hours'] = 'timmar';
$a->strings['minute'] = 'minut';
@@ -439,35 +629,49 @@ $a->strings['minutes'] = 'minuter';
$a->strings['second'] = 'sekund';
$a->strings['seconds'] = 'sekunder';
$a->strings[' ago'] = ' sedan';
+$a->strings['Cannot locate DNS info for database server \'%s\''] = 'Cannot locate DNS info for database server \'%s\'';
$a->strings['Create a new group'] = 'Skapa ny grupp';
$a->strings['Everybody'] = 'Alla';
-$a->strings['Birthday:'] = 'Födelsedatum:';
+$a->strings['Birthday:'] = 'F&ouml;delsedatum:';
$a->strings['Home'] = 'Hem';
$a->strings['Apps'] = 'Apps';
-$a->strings['Directory'] = 'Katalog';
-$a->strings['Network'] = 'Nätverk';
-$a->strings['Notifications'] = 'Aviseringar';
+$a->strings['Directory'] = 'Medlemskatalog';
+$a->strings['Network'] = 'N&auml;tverk';
$a->strings['Manage'] = 'Hantera';
-$a->strings['Settings'] = 'Inställningar';
-$a->strings['Profiles'] = 'Profiler';
-$a->strings['Embedding disabled'] = 'Embedding disabled';
+$a->strings['Settings'] = 'Inst&auml;llningar';
+$a->strings['Embedding disabled'] = 'Funktionen b&auml;dda in &auml;r avst&auml;ngd';
+$a->strings['j F, Y'] = 'j F, Y';
+$a->strings['j F'] = 'j F';
+$a->strings['Age:'] = '&Aring;lder:';
+$a->strings['<span class="heart">&hearts;</span> Status:'] = '<span class="heart">&hearts;</span> Civilst&aring;nd:';
+$a->strings['Religion:'] = 'Religion:';
+$a->strings['About:'] = 'Om:';
+$a->strings['Hobbies/Interests:'] = 'Hobbys/Intressen:';
+$a->strings['Contact information and Social Networks:'] = 'Kontaktuppgifter och sociala n&auml;tverk:';
+$a->strings['Musical interests:'] = 'Musik:';
+$a->strings['Books, literature:'] = 'B&ouml;cker/Litteratur:';
+$a->strings['Television:'] = 'TV:';
+$a->strings['Film/dance/culture/entertainment:'] = 'Film/Dans/Kultur/Underh&aring;llning:';
+$a->strings['Love/Romance:'] = 'K&auml;rlek/Romantik:';
+$a->strings['Work/employment:'] = 'Arbete:';
+$a->strings['School/education:'] = 'Skola/Utbildning:';
$a->strings['Male'] = 'Man';
$a->strings['Female'] = 'Kvinna';
-$a->strings['Currently Male'] = 'För närvarande man';
-$a->strings['Currently Female'] = 'För närvarande kvinna';
+$a->strings['Currently Male'] = 'F&ouml;r n&auml;rvarande man';
+$a->strings['Currently Female'] = 'F&ouml;r n&auml;rvarande kvinna';
$a->strings['Mostly Male'] = 'Mestadels man';
$a->strings['Mostly Female'] = 'Mestadels kvinna';
$a->strings['Transgender'] = 'Transgender';
$a->strings['Intersex'] = 'Intersex';
$a->strings['Transsexual'] = 'Transsexuell';
$a->strings['Hermaphrodite'] = 'Hermafrodit';
-$a->strings['Neuter'] = 'Neuter';
-$a->strings['Non-specific'] = 'Non-specific';
+$a->strings['Neuter'] = 'K&ouml;nsl&ouml;s';
+$a->strings['Non-specific'] = 'Oklart';
$a->strings['Other'] = 'Annat';
-$a->strings['Undecided'] = 'Undecided';
-$a->strings['Males'] = 'Males';
-$a->strings['Females'] = 'Females';
-$a->strings['Gay'] = 'Bög';
+$a->strings['Undecided'] = 'Obest&auml;mt';
+$a->strings['Males'] = 'M&auml;n';
+$a->strings['Females'] = 'Kvinnor';
+$a->strings['Gay'] = 'B&ouml;g';
$a->strings['Lesbian'] = 'Lesbisk';
$a->strings['No Preference'] = 'No Preference';
$a->strings['Bisexual'] = 'Bisexuell';
@@ -475,86 +679,87 @@ $a->strings['Autosexual'] = 'Autosexual';
$a->strings['Abstinent'] = 'Abstinent';
$a->strings['Virgin'] = 'Oskuld';
$a->strings['Deviant'] = 'Avvikande';
-$a->strings['Fetish'] = 'Fetish';
-$a->strings['Oodles'] = 'Oodles';
-$a->strings['Nonsexual'] = 'Nonsexual';
+$a->strings['Fetish'] = 'Fetisch';
+$a->strings['Oodles'] = 'Massor';
+$a->strings['Nonsexual'] = 'Asexuell';
$a->strings['Single'] = 'Singel';
$a->strings['Lonely'] = 'Ensam';
-$a->strings['Available'] = 'Tillgänglig';
+$a->strings['Available'] = 'Tillg&auml;nglig';
$a->strings['Unavailable'] = 'Upptagen';
$a->strings['Dating'] = 'Dejtar';
-$a->strings['Unfaithful'] = 'Unfaithful';
+$a->strings['Unfaithful'] = 'Otrogen';
$a->strings['Sex Addict'] = 'Sexmissbrukare';
-$a->strings['Friends'] = 'Vänner';
+$a->strings['Friends'] = 'V&auml;nner';
$a->strings['Friends/Benefits'] = 'Friends/Benefits';
$a->strings['Casual'] = 'Casual';
-$a->strings['Engaged'] = 'Förlovad';
+$a->strings['Engaged'] = 'F&ouml;rlovad';
$a->strings['Married'] = 'Gift';
$a->strings['Partners'] = 'I partnerskap';
$a->strings['Cohabiting'] = 'Cohabiting';
-$a->strings['Happy'] = 'Glad';
+$a->strings['Happy'] = 'N&ouml;jd';
$a->strings['Not Looking'] = 'Letar inte';
$a->strings['Swinger'] = 'Swinger';
$a->strings['Betrayed'] = 'Bedragen';
$a->strings['Separated'] = 'Separerat';
-$a->strings['Unstable'] = 'Unstable';
+$a->strings['Unstable'] = 'Instabilt';
$a->strings['Divorced'] = 'Skiljd';
-$a->strings['Widowed'] = 'Widowed';
-$a->strings['Uncertain'] = 'Uncertain';
+$a->strings['Widowed'] = '&Auml;nka/&auml;nkling';
+$a->strings['Uncertain'] = 'Oklart';
$a->strings['Complicated'] = 'Komplicerat';
$a->strings['Don\'t care'] = 'Bryr mig inte';
-$a->strings['Ask me'] = 'Fråga mig';
-$a->strings['Facebook disabled'] = 'Facebook disabled';
+$a->strings['Ask me'] = 'Fr&aring;ga mig';
+$a->strings['Facebook disabled'] = 'Facebook inaktiverat';
$a->strings['Facebook API key is missing.'] = 'Facebook API key is missing.';
$a->strings['Facebook Connect'] = 'Facebook Connect';
$a->strings['Install Facebook post connector'] = 'Install Facebook post connector';
$a->strings['Remove Facebook post connector'] = 'Remove Facebook post connector';
+$a->strings['Post to Facebook by default'] = 'L&auml;gg alltid in inl&auml;ggen p&aring; Facebook';
$a->strings['Facebook'] = 'Facebook';
$a->strings['Facebook Connector Settings'] = 'Facebook Connector Settings';
-$a->strings['Post to Facebook'] = 'Lägg in på Facebook';
+$a->strings['Post to Facebook'] = 'L&auml;gg in p&aring; Facebook';
$a->strings['Image: '] = 'Bild: ';
-$a->strings['Select files to upload: '] = 'Välj filer att ladda upp: ';
-$a->strings['Use the following controls only if the Java uploader [above] fails to launch.'] = 'Använd följande bara om javauppladdaren ovanför inte startar.';
-$a->strings['Upload a file'] = 'Ladda upp fil';
+$a->strings['Select files to upload: '] = 'V&auml;lj filer att ladda upp: ';
+$a->strings['Use the following controls only if the Java uploader [above] fails to launch.'] = 'Anv&auml;nd f&ouml;ljande bara om javauppladdaren ovanf&ouml;r inte startar.';
+$a->strings['Upload a file'] = 'Ladda upp en fil';
$a->strings['Drop files here to upload'] = 'Dra filer som ska laddas upp hit';
$a->strings['Failed'] = 'Misslyckades';
$a->strings['No files were uploaded.'] = 'Inga filer laddades upp.';
-$a->strings['Uploaded file is empty'] = 'Den uppladdade filen är tom';
-$a->strings['Uploaded file is too large'] = 'Den uppladdade filen är för stor';
-$a->strings['File has an invalid extension, it should be one of '] = 'Otillåten filnamnsändelse, det ska vara ';
+$a->strings['Uploaded file is empty'] = 'Den uppladdade filen &auml;r tom';
+$a->strings['Uploaded file is too large'] = 'Den uppladdade filen &auml;r f&ouml;r stor';
+$a->strings['File has an invalid extension, it should be one of '] = 'Otill&aring;ten filnamns&auml;ndelse, det ska vara ';
$a->strings['Upload was cancelled, or server error encountered'] = 'Serverfel eller avbruten uppladdning';
$a->strings['Randplace Settings'] = 'Randplace Settings';
$a->strings['Enable Randplace Plugin'] = 'Enable Randplace Plugin';
-$a->strings['Post to StatusNet'] = 'Lägg in på StatusNet';
-$a->strings['StatusNet Posting Settings'] = 'StatusNet Posting Settings';
+$a->strings['Post to StatusNet'] = 'L&auml;gg in p&aring; StatusNet';
+$a->strings['StatusNet Posting Settings'] = 'Inst&auml;llningar f&ouml;r inl&auml;gg p&aring; StatusNet';
$a->strings['No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation.'] = 'No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation.';
$a->strings['OAuth Consumer Key'] = 'OAuth Consumer Key';
$a->strings['OAuth Consumer Secret'] = 'OAuth Consumer Secret';
$a->strings["Base API Path \x28remember the trailing /\x29"] = "Base API Path \x28remember the trailing /\x29";
$a->strings['To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet.'] = 'To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet.';
$a->strings['Log in with StatusNet'] = 'Logga in med StatusNet';
-$a->strings['Copy the security code from StatusNet here'] = 'Copy the security code from StatusNet here';
+$a->strings['Copy the security code from StatusNet here'] = 'Ange s&auml;kerhetskoden fr&aring;n StatusNet h&auml;r';
$a->strings['Currently connected to: '] = 'Ansluten till: ';
$a->strings['If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well.'] = 'If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well.';
$a->strings['Send public postings to StatusNet'] = 'Send public postings to StatusNet';
$a->strings['Clear OAuth configuration'] = 'Clear OAuth configuration';
$a->strings['Three Dimensional Tic-Tac-Toe'] = 'Tredimensionellt luffarschack';
$a->strings['3D Tic-Tac-Toe'] = '3D-luffarschack';
-$a->strings['New game'] = 'Ny spelomgång';
-$a->strings['New game with handicap'] = 'Ny spelomgång med handikapp';
-$a->strings['Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. '] = 'Det tredimensionella luffarschacket är precis som vanligt luffarschack förutom att det spelas i flera nivåer samtidigt. ';
-$a->strings['In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels.'] = 'Här är det tre nivåer. Man vinner om man får tre i rad på vilken nivå som helst, eller uppåt, nedåt eller diagonalt på flera nivåer.';
-$a->strings['The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage.'] = 'Om man spelar med handikapp så stängs mittenpositionen på mittennivån av eftersom spelare som väljer den positionen ofta får övertaget.';
-$a->strings['You go first...'] = 'Du börjar...';
-$a->strings['I\'m going first this time...'] = 'Jag börjar den här gången...';
+$a->strings['New game'] = 'Ny spelomg&aring;ng';
+$a->strings['New game with handicap'] = 'Ny spelomg&aring;ng med handikapp';
+$a->strings['Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. '] = 'Det tredimensionella luffarschacket &auml;r precis som vanligt luffarschack f&ouml;rutom att det spelas i flera niv&aring;er samtidigt. ';
+$a->strings['In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels.'] = 'H&auml;r &auml;r det tre niv&aring;er. Man vinner om man f&aring;r tre i rad p&aring; vilken niv&aring; som helst, eller upp&aring;t, ned&aring;t eller diagonalt p&aring; flera niv&aring;er.';
+$a->strings['The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage.'] = 'Om man spelar med handikapp s&aring; st&auml;ngs mittenpositionen p&aring; mittenniv&aring;n av eftersom spelare som v&auml;ljer den positionen ofta f&aring;r &ouml;vertaget.';
+$a->strings['You go first...'] = 'Du b&ouml;rjar...';
+$a->strings['I\'m going first this time...'] = 'Jag b&ouml;rjar den h&auml;r g&aring;ngen...';
$a->strings['You won!'] = 'Du vann!';
$a->strings['"Cat" game!'] = '"Cat" game!';
$a->strings['I won!'] = 'Jag vann!';
-$a->strings['Post to Twitter'] = 'Lägg in på Twitter';
-$a->strings['Twitter Posting Settings'] = 'Twitter Posting Settings';
+$a->strings['Post to Twitter'] = 'L&auml;gg in p&aring; Twitter';
+$a->strings['Twitter Posting Settings'] = 'Inst&auml;llningar f&ouml;r inl&auml;gg p&aring; Twitter';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'No consumer key pair for Twitter found. Please contact your site administrator.';
$a->strings['At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.';
-$a->strings['Copy the PIN from Twitter here'] = 'Ange PIN-koden från Twitter här';
+$a->strings['Copy the PIN from Twitter here'] = 'Ange PIN-koden fr&aring;n Twitter h&auml;r';
$a->strings['If enabled all your <strong>public</strong> postings will be posted to the associated Twitter account as well.'] = 'If enabled all your <strong>public</strong> postings will be posted to the associated Twitter account as well.';
$a->strings['Send public postings to Twitter'] = 'Send public postings to Twitter';
$a->strings['Africa/Abidjan'] = 'Afrika/Abidjan';
@@ -971,7 +1176,7 @@ $a->strings['Europe/Brussels'] = 'Europa/Bryssel';
$a->strings['Europe/Bucharest'] = 'Europa/Bucharest';
$a->strings['Europe/Budapest'] = 'Europa/Budapest';
$a->strings['Europe/Chisinau'] = 'Europa/Chisinau';
-$a->strings['Europe/Copenhagen'] = 'Europa/Köpenhamn';
+$a->strings['Europe/Copenhagen'] = 'Europa/K&ouml;penhamn';
$a->strings['Europe/Dublin'] = 'Europa/Dublin';
$a->strings['Europe/Gibraltar'] = 'Europa/Gibraltar';
$a->strings['Europe/Guernsey'] = 'Europa/Guernsey';
@@ -1017,7 +1222,7 @@ $a->strings['Europe/Volgograd'] = 'Europa/Volgograd';
$a->strings['Europe/Warsaw'] = 'Europa/Warsawa';
$a->strings['Europe/Zagreb'] = 'Europa/Zagreb';
$a->strings['Europe/Zaporozhye'] = 'Europa/Zaporozhye';
-$a->strings['Europe/Zurich'] = 'Europa/Zürich';
+$a->strings['Europe/Zurich'] = 'Europa/Z&uuml;rich';
$a->strings['Factory'] = 'Factory';
$a->strings['GB'] = 'GB';
$a->strings['GB-Eire'] = 'GB-Eire';
@@ -1121,4 +1326,4 @@ $a->strings['US/Samoa'] = 'USA/Samoa';
$a->strings['UTC'] = 'UTC';
$a->strings['W-SU'] = 'W-SU';
$a->strings['WET'] = 'WET';
-$a->strings['Zulu'] = 'Zulu';
+$a->strings['Zulu'] = 'Zulu'; \ No newline at end of file
diff --git a/view/sv/wall_received_eml.tpl b/view/sv/wall_received_eml.tpl
new file mode 100644
index 000000000..fc450a06d
--- /dev/null
+++ b/view/sv/wall_received_eml.tpl
@@ -0,0 +1,16 @@
+$username,
+
+'$from' har skrivit på din profilsida.
+
+-----
+$body
+-----
+
+Logga in på $siteurl för att kolla eller ta bort:
+
+$display
+
+Hälsningar,
+$sitename admin
+
+
diff --git a/view/theme/darkzero/border.jpg b/view/theme/darkzero/border.jpg
new file mode 100644
index 000000000..4967412bf
--- /dev/null
+++ b/view/theme/darkzero/border.jpg
Binary files differ
diff --git a/view/theme/darkzero/head.jpg b/view/theme/darkzero/head.jpg
new file mode 100644
index 000000000..67e852140
--- /dev/null
+++ b/view/theme/darkzero/head.jpg
Binary files differ
diff --git a/view/theme/darkzero/sectionend.jpg b/view/theme/darkzero/sectionend.jpg
new file mode 100644
index 000000000..9d5d5c8f3
--- /dev/null
+++ b/view/theme/darkzero/sectionend.jpg
Binary files differ
diff --git a/view/theme/darkzero/shiny.png b/view/theme/darkzero/shiny.png
new file mode 100644
index 000000000..994c0d05d
--- /dev/null
+++ b/view/theme/darkzero/shiny.png
Binary files differ
diff --git a/view/theme/darkzero/style.css b/view/theme/darkzero/style.css
new file mode 100644
index 000000000..c92529f26
--- /dev/null
+++ b/view/theme/darkzero/style.css
@@ -0,0 +1,64 @@
+@import url('../duepuntozero/style.css');
+
+/* dark variation Fabio Comuni <fabrix.xm@gmail.com> */
+
+a:link, a:visited { color: #99CCFF; text-decoration: none; }
+a:hover {text-decoration: underline; }
+
+input, select, textarea {
+ background-color: #222222;
+ color: #FFFFFF;
+ border: 1px solid #444444;
+}
+.openid { background-color: #222222;}
+
+body { background-color: #222222; color: #cccccc; background-image: url(head.jpg); }
+aside{ background-image: url(border.jpg); padding-bottom: 0px; }
+section { background-color: #333333; background-image: url(border.jpg); }
+
+
+#profile-tabs-wrapper { background-image: url(head.jpg); }
+div.wall-item-content-wrapper.shiny { background-image: url('shiny.png'); }
+
+nav #banner #logo-text a { color: #ffffff; }
+
+.wall-item-content-wrapper { border: 1px solid #444444; }
+.wall-item-tools { background-color: #444444; background-image: none;}
+.comment-edit-wrapper{ background-color: #333333; }
+.wall-item-content-wrapper.comment { background-color: #444444; border: 0px;}
+.photo-top-album-name{ background-color: #333333; }
+.photo-album-image-wrapper .caption { background-color: rgba(51, 51, 51, 0.8); color: #FFFFFF; }
+
+.nav-selected.nav-link { color: #ffffff!important; border-bottom: 0px}
+.nav-commlink, .nav-login-link {background-color: #b7bab3;}
+.nav-commlink:link, .nav-commlink:visited,
+.nav-login-link:link, .nav-login-link:visited{
+ color: #ffffff;
+}
+
+.fakelink, .fakelink:visited {
+ color: #99CCFF;
+}
+
+.wall-item-name-link {
+ color: #99CCFF;
+}
+
+.wall-item-photo-menu li a {
+ color: #CCCCCC; background-color: #333333;
+}
+
+.wall-item-photo-menu li a:hover {
+ background-color: #CCCCCC; color: #333333;
+}
+#page-footer { min-height: 1em;}
+footer {
+ margin: 0px 10%;
+ display: block;
+ background-image: url('sectionend.jpg');
+ background-position: top left;
+ background-repeat: repeat-x;
+ height: 25px;
+}
+
+
diff --git a/view/theme/dispy/connect.png b/view/theme/dispy/connect.png
new file mode 100644
index 000000000..b76fc13dc
--- /dev/null
+++ b/view/theme/dispy/connect.png
Binary files differ
diff --git a/view/theme/dispy/icons.png b/view/theme/dispy/icons.png
new file mode 100644
index 000000000..43228bb9d
--- /dev/null
+++ b/view/theme/dispy/icons.png
Binary files differ
diff --git a/view/de/jot-header.tpl b/view/theme/dispy/jot-header.tpl
index 58403f1ba..245957808 100644
--- a/view/de/jot-header.tpl
+++ b/view/theme/dispy/jot-header.tpl
@@ -3,6 +3,7 @@
<script language="javascript" type="text/javascript">
var editor;
+var textlen = 0;
tinyMCE.init({
theme : "advanced",
@@ -15,6 +16,8 @@ tinyMCE.init({
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "center",
theme_advanced_blockformats : "blockquote,code",
+ //theme_advanced_resizing : true,
+ //theme_advanced_statusbar_location : "bottom",
paste_text_sticky : true,
entity_encoding : "raw",
add_unload_trigger : false,
@@ -24,28 +27,35 @@ tinyMCE.init({
forced_root_block : '',
convert_urls: false,
content_css: "$baseurl/view/custom_tinymce.css",
- //Character count
theme_advanced_path : false,
setup : function(ed) {
+ //Character count
ed.onKeyUp.add(function(ed, e) {
var txt = tinyMCE.activeEditor.getContent();
- var text = txt.length;
- if(txt.length <= 140) {
+ textlen = txt.length;
+ if(textlen != 0 && $('#jot-perms-icon').is('.unlock')) {
+ $('#profile-jot-desc').html(ispublic);
+ }
+ else {
+ $('#profile-jot-desc').html('&nbsp;');
+ }
+
+ if(textlen <= 140) {
$('#character-counter').removeClass('red');
$('#character-counter').removeClass('orange');
$('#character-counter').addClass('grey');
}
- if((txt.length > 140) && (txt .length <= 420)) {
+ if((textlen > 140) && (textlen <= 420)) {
$('#character-counter').removeClass('grey');
$('#character-counter').removeClass('red');
$('#character-counter').addClass('orange');
}
- if(txt.length > 420) {
+ if(textlen > 420) {
$('#character-counter').removeClass('grey');
$('#character-counter').removeClass('orange');
$('#character-counter').addClass('red');
}
- $('#character-counter').text(text);
+ $('#character-counter').text(textlen);
});
ed.onInit.add(function(ed) {
@@ -58,6 +68,7 @@ tinyMCE.init({
</script>
<script type="text/javascript" src="include/ajaxupload.js" ></script>
<script>
+ var ispublic = '$ispublic';
$(document).ready(function() {
var uploader = new window.AjaxUpload(
'wall-image-upload',
@@ -74,11 +85,13 @@ tinyMCE.init({
var selstr;
$('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
selstr = $(this).text();
- $('#profile-jot-perms img').attr('src', 'images/lock_icon.gif');
+ $('#jot-perms-icon').removeClass('unlock').addClass('lock');
+ $('#jot-public').hide();
$('.profile-jot-net input').attr('disabled', 'disabled');
});
- if(selstr == null) {
- $('#profile-jot-perms img').attr('src', 'images/unlock_icon.gif');
+ if(selstr == null) {
+ $('#jot-perms-icon').removeClass('lock').addClass('unlock');
+ $('#jot-public').show();
$('.profile-jot-net input').attr('disabled', false);
}
@@ -87,8 +100,9 @@ tinyMCE.init({
});
function jotGetLink() {
- reply = prompt("Bitte URL des Links angeben:");
+ reply = prompt("$linkurl");
if(reply && reply.length) {
+ reply = bin2hex(reply);
$('#profile-rotator').show();
$.get('parse_url?url=' + reply, function(data) {
tinyMCE.execCommand('mceInsertRawHTML',false,data);
@@ -98,19 +112,49 @@ tinyMCE.init({
}
function jotGetVideo() {
- reply = prompt("Bitte den YouTube Link angeben:");
+ reply = prompt("$utubeurl");
if(reply && reply.length) {
tinyMCE.execCommand('mceInsertRawHTML',false,'[youtube]' + reply + '[/youtube]');
}
}
+ function jotVideoURL() {
+ reply = prompt("$vidurl");
+ if(reply && reply.length) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,'[video]' + reply + '[/video]');
+ }
+ }
+
+ function jotAudioURL() {
+ reply = prompt("$audurl");
+ if(reply && reply.length) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,'[audio]' + reply + '[/audio]');
+ }
+ }
+
+
function jotGetLocation() {
- reply = prompt("Wo bist du im Moment?", $('#jot-location').val());
+ reply = prompt("$whereareu", $('#jot-location').val());
if(reply && reply.length) {
$('#jot-location').val(reply);
}
}
+ function jotTitle() {
+ reply = prompt("$title", $('#jot-title').val());
+ if(reply && reply.length) {
+ $('#jot-title').val(reply);
+ }
+ }
+
+ function jotShare(id) {
+ $('#like-rotator-' + id).show();
+ $.get('share/' + id, function(data) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,data);
+ $('#like-rotator-' + id).hide();
+ $(window).scrollTop(0);
+ });
+ }
function linkdropper(event) {
var linkFound = event.dataTransfer.types.contains("text/uri-list");
diff --git a/view/theme/dispy/jot.tpl b/view/theme/dispy/jot.tpl
new file mode 100644
index 000000000..ab121db31
--- /dev/null
+++ b/view/theme/dispy/jot.tpl
@@ -0,0 +1,72 @@
+
+<div id="profile-jot-wrapper" >
+ <div id="profile-jot-banner-wrapper">
+ <div id="profile-jot-desc" >&nbsp;</div>
+ <div id="character-counter" class="grey">0</div>
+ <div id="profile-rotator-wrapper" style="display: $visitor;" >
+ <img id="profile-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display:none;" />
+ </div>
+ </div>
+
+ <form id="profile-jot-form" action="$action" method="post" >
+ <input type="hidden" name="type" value="wall" />
+ <input type="hidden" name="profile_uid" value="$profile_uid" />
+ <input type="hidden" name="return" value="$return_path" />
+ <input type="hidden" name="location" id="jot-location" value="$defloc" />
+ <input type="hidden" name="coord" id="jot-coord" value="" />
+ <input type="hidden" name="title" id="jot-title" value="" />
+ <input type="hidden" name="post_id" value="$post_id" />
+
+ <textarea rows="5" style="width:100%" class="profile-jot-text" id="profile-jot-text" name="body" >$content</textarea>
+
+
+<div id="profile-jot-submit-wrapper" >
+ <div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" ><a id="jot-perms-icon" class="icon $lockstate" title="$permset" onClick="openClose('profile-jot-acl-wrapper'); openClose('profile-jot-email-wrapper'); openClose('profile-jot-networks');return false;"></a>$bang</div>
+ <input type="submit" id="profile-jot-submit" name="submit" value="$share" />
+</div>
+
+ <div id="profile-upload-wrapper" class="jot-tool" style="display: $visitor;" >
+ <div id="wall-image-upload-div" ><a onclick="return false;" id="wall-image-upload" class="icon border camera" title="$upload"></a></div>
+ </div>
+ <div id="profile-link-wrapper" class="jot-tool" style="display: $visitor;" ondragenter="linkdropper(event);" ondragover="linkdropper(event);" ondrop="linkdrop(event);" >
+ <a id="profile-link" class="icon border link" title="$weblink" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink(); return false;"></a>
+ </div>
+ <div id="profile-youtube-wrapper" class="jot-tool" style="display: $visitor;" >
+ <a id="profile-youtube" class="icon border youtube" title="$youtube" onclick="jotGetVideo(); return false;"></a>
+ </div>
+ <div id="profile-video-wrapper" class="jot-tool" style="display: $visitor;" >
+ <a id="profile-video" class="icon border video" title="$video" onclick="jotVideoURL(); return false;"></a>
+ </div>
+ <div id="profile-audio-wrapper" class="jot-tool" style="display: $visitor;" >
+ <a id="profile-audio" class="icon border audio" title="$audio" onclick="jotAudioURL(); return false;"></a>
+ </div>
+ <div id="profile-location-wrapper" class="jot-tool" style="display: $visitor;" >
+ <a id="profile-location" class="icon border globe" title="$setloc" onclick="jotGetLocation(); return false;"></a>
+ </div>
+ <div id="profile-nolocation-wrapper" class="jot-tool" style="display: none;" >
+ <a id="profile-nolocation" class="icon border noglobe" title="$noloc" onclick="jotClearLocation(); return false;"></a>
+ </div>
+ <div id="profile-title-wrapper" class="jot-tool" style="display: $visitor;" >
+ <a id="profile-title" class="icon border article" title="$title" onclick="jotTitle(); return false;"></a>
+ </div>
+
+ <div id="profile-jot-plugin-wrapper">
+ $jotplugins
+ </div>
+
+ <div id="profile-jot-tools-end"></div>
+
+ <div id="profile-jot-email-wrapper" style="display: none;" >
+ <div id="profile-jot-email-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle">
+ <div id="profile-jot-email-end"></div>
+ </div>
+ <div id="profile-jot-networks" style="display: none;" >
+ $jotnets
+ </div>
+ <div id="profile-jot-networks-end"></div>
+ <div id="profile-jot-acl-wrapper" style="display: none;" >$acl</div>
+
+
+<div id="profile-jot-end"></div>
+</form>
+</div>
diff --git a/view/theme/dispy/mail_head.tpl b/view/theme/dispy/mail_head.tpl
new file mode 100644
index 000000000..89615cbd0
--- /dev/null
+++ b/view/theme/dispy/mail_head.tpl
@@ -0,0 +1,7 @@
+<h3>$messages</h3>
+
+<ul class="tabs-wrapper">
+<li><a href="message" class="tabs">$inbox</a></li>
+<li><a href="message/sent" class="tabs">$outbox</a></li>
+<li><a href="message/new" class="tabs">$new</a></li>
+</ul>
diff --git a/view/theme/dispy/menu-user-pin.jpg b/view/theme/dispy/menu-user-pin.jpg
new file mode 100644
index 000000000..26449569f
--- /dev/null
+++ b/view/theme/dispy/menu-user-pin.jpg
Binary files differ
diff --git a/view/theme/dispy/nav.tpl b/view/theme/dispy/nav.tpl
new file mode 100644
index 000000000..3938777e9
--- /dev/null
+++ b/view/theme/dispy/nav.tpl
@@ -0,0 +1,51 @@
+$langselector
+
+<span id="banner">$banner</span>
+
+{{ if $nav.login }}<a id="nav-login-link" class="nav-link $nav.login.2" href="$nav.login.0" title="$nav.login.1">$nav.login.1</a> {{ endif }}
+<a id="nav-search-link" class="nav-link $nav.search.2" href="$nav.search.0" title="$nav.search.1">$nav.search.1</a>
+<a id="nav-directory-link" class="nav-link $nav.directory.2" href="$nav.directory.0" title="$nav.directory.1">$nav.directory.1</a>
+
+<div id="user-menu" >
+ <a id="user-menu-label" onclick="openClose('user-menu-popup'); return false" href="$nav.home.0">$sitelocation</a>
+
+ <ul id="user-menu-popup"
+ onmouseover="if (typeof tmenu != 'undefined') clearTimeout(tmenu); openMenu('user-menu-popup')"
+ onmouseout="tmenu=setTimeout('closeMenu(\'user-menu-popup\');',200)">
+
+
+ {{ if $nav.register }}<li><a id="nav-register-link" class="nav-commlink $nav.register.2" href="$nav.register.0" title="$nav.register.1">$nav.register.1</a></li>{{ endif }}
+
+ {{ if $nav.home }}<li><a id="nav-home-link" class="nav-commlink $nav.home.2" href="$nav.home.0">$nav.home.1</a></li>{{ endif }}
+
+ {{ if $nav.network }}<li><a id="nav-network-link" class="nav-commlink $nav.network.2" href="$nav.network.0">$nav.network.1</a></li>{{ endif }}
+
+
+ {{ if $nav.notifications }}<li><a id="nav-notify-link" class="nav-commlink $nav.notifications.2" href="$nav.notifications.0">$nav.notifications.1</a></li>{{ endif }}
+ {{ if $nav.messages }}<li><a id="nav-messages-link" class="nav-commlink $nav.messages.2" href="$nav.messages.0">$nav.messages.1</a></li>{{ endif }}
+ {{ if $nav.contacts }}<li><a id="nav-contacts-link" class="nav-commlink $nav.contacts.2" href="$nav.contacts.0">$nav.contacts.1</a></li>{{ endif }}
+
+ {{ if $nav.profiles }}<li><a id="nav-profiles-link" class="nav-commlink nav-sep $nav.profiles.2" href="$nav.profiles.0">$nav.profiles.1</a></li>{{ endif }}
+ {{ if $nav.settings }}<li><a id="nav-settings-link" class="nav-commlink $nav.settings.2" href="$nav.settings.0">$nav.settings.1</a></li>{{ endif }}
+
+ {{ if $nav.manage }}<li><a id="nav-manage-link" class="nav-commlink $nav.manage.2" href="$nav.manage.0">$nav.manage.1</a></li>{{ endif }}
+
+
+
+ {{ if $nav.logout }}<li><a id="nav-logout-link" class="nav-commlink nav-sep $nav.logout.2" href="$nav.logout.0">$nav.logout.1</a></li> {{ endif }}
+ </ul>
+
+ <div id="notifications">
+ {{ if $nav.network }}<a id="net-update" class="nav-ajax-update" href="$nav.network.0" title="$nav.network.1"></a>{{ endif }}
+ {{ if $nav.home }}<a id="home-update" class="nav-ajax-update" href="$nav.home.0" title="$nav.home.1"></a>{{ endif }}
+ {{ if $nav.notifications }}<a id="notify-update" class="nav-ajax-update" href="$nav.notifications.0" title="$nav.notifications.1"></a>{{ endif }}
+ {{ if $nav.messages }}<a id="mail-update" class="nav-ajax-update" href="$nav.messages.0" title="$nav.messages.1"></a>{{ endif }}
+ </div>
+
+</div>
+
+
+{{ if $nav.apps }}<a id="nav-apps-link" class="nav-link $nav.apps.2" href="$nav.apps.0" title="$nav.apps.1">$nav.apps.1</a>{{ endif }}
+
+
+
diff --git a/view/theme/dispy/next.png b/view/theme/dispy/next.png
new file mode 100644
index 000000000..353e2e72a
--- /dev/null
+++ b/view/theme/dispy/next.png
Binary files differ
diff --git a/view/theme/dispy/notifications.png b/view/theme/dispy/notifications.png
new file mode 100644
index 000000000..f0f6a90e8
--- /dev/null
+++ b/view/theme/dispy/notifications.png
Binary files differ
diff --git a/view/theme/dispy/photo_view.tpl b/view/theme/dispy/photo_view.tpl
new file mode 100644
index 000000000..4582751c6
--- /dev/null
+++ b/view/theme/dispy/photo_view.tpl
@@ -0,0 +1,40 @@
+<div id="live-display"></div>
+<h3><a href="$album.0">$album.1</a></h3>
+
+<div id="photo-edit-link-wrap">
+{{ if $tools }}
+<a id="photo-edit-link" href="$tools.edit.0">$tools.edit.1</a>
+-
+<a id="photo-toprofile-link" href="$tools.profile.0">$tools.profile.1</a>
+{{ endif }}
+{{ if $lock }} - <img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,'photo$id');" /> {{ endif }}
+</div>
+
+<div id="photo-photo">
+ {{ if $prevlink }}<div id="photo-prev-link"><a href="$prevlink.0">$prevlink.1</a></div>{{ endif }}
+ <a href="$photo.href" title="$photo.title"><img src="$photo.src" /></a>
+ {{ if $nextlink }}<div id="photo-next-link"><a href="$nextlink.0">$nextlink.1</a></div>{{ endif }}
+</div>
+
+<div id="photo-photo-end"></div>
+<div id="photo-caption" >$desc</div>
+{{ if $tags }}
+<div id="in-this-photo-text">$tags.0</div>
+<div id="in-this-photo">$tags.1</div>
+{{ endif }}
+{{ if $tags.2 }}<div id="tag-remove"><a href="$tags.2">$tags.3</a></div>{{ endif }}
+
+{{ if $edit }}$edit{{ endif }}
+
+{{ if $likebuttons }}
+<div id="photo-like-div">
+ $likebuttons
+ $like
+ $dislike
+</div>
+{{ endif }}
+
+$comments
+
+$paginate
+
diff --git a/view/theme/dispy/prev.png b/view/theme/dispy/prev.png
new file mode 100644
index 000000000..0ae6022af
--- /dev/null
+++ b/view/theme/dispy/prev.png
Binary files differ
diff --git a/view/theme/dispy/profile_tabs.tpl b/view/theme/dispy/profile_tabs.tpl
new file mode 100644
index 000000000..63b6d48dd
--- /dev/null
+++ b/view/theme/dispy/profile_tabs.tpl
@@ -0,0 +1,7 @@
+
+<div class="tabs-wrapper" >
+ <a href="$url" id="profile-tab-status-link" class="tabs" >$status</a>
+ <a href="$url?tab=profile" id="profile-tab-profile-link" class="tabs" >$profile</a>
+ <a href="$phototab" id="profile-tab-photos-link" class="tabs" >$photos</a>
+<div class="tabs-end"></div>
+</div> \ No newline at end of file
diff --git a/view/theme/dispy/search_item.tpl b/view/theme/dispy/search_item.tpl
new file mode 100644
index 000000000..41cc95e65
--- /dev/null
+++ b/view/theme/dispy/search_item.tpl
@@ -0,0 +1,40 @@
+<div class="wall-item-outside-wrapper$indent" id="wall-item-outside-wrapper-$id" >
+ <div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
+ <div class="wall-item-info" id="wall-item-info-$id">
+ <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id"
+ onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
+ onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
+ <a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
+ <img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" height="80" width="80" alt="$name" /></a>
+ <span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
+ <div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
+ <ul>
+ $item_photo_menu
+ </ul>
+ </div>
+ </div>
+ <div class="wall-item-photo-end"></div>
+ <div class="wall-item-location" id="wall-item-location-$id">{{ if $location }}<span class="icon globe"></span>$location {{ endif }}</div>
+ </div>
+ <div class="wall-item-lock-wrapper">$lock</div>
+ <div class="wall-item-tools" id="wall-item-tools-$id">
+ $drop
+ </div>
+ <div class="wall-item-content" id="wall-item-content-$id" >
+ <div class="wall-item-title" id="wall-item-title-$id">$title</div>
+ <div class="wall-item-title-end"></div>
+ <div class="wall-item-body" id="wall-item-body-$id" >$body</div>
+ </div>
+ <div class="wall-item-author">
+ <a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
+ <div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
+
+ </div>
+
+ </div>
+ <div class="wall-item-wrapper-end"></div>
+</div>
+
+<div class="wall-item-outside-wrapper-end$indent" ></div>
+ <div class="wall-item-conv" id="wall-item-conv-$id" >$conv</div>
+
diff --git a/view/theme/dispy/settings.tpl b/view/theme/dispy/settings.tpl
new file mode 100644
index 000000000..953e5c3f2
--- /dev/null
+++ b/view/theme/dispy/settings.tpl
@@ -0,0 +1,212 @@
+<div class="tabs-wrapper">
+ <a class="tabs" id="profile-settings-link"><a href="settings">$ptitle</a>
+ <a class="tabs" id="plugin-settings-link"><a href="settings/addon">$lbl_plug</a>
+<div class="tabs-end"></div>
+</div>
+
+<h1>$ptitle</h1>
+
+
+$uexport
+
+$nickname_block
+
+
+<form action="settings" id="settings-form" method="post" autocomplete="off" >
+
+
+<h3 class="settings-heading">$lbl_pass1</h3>
+
+
+<div id="settings-password-wrapper" >
+<p id="settings-password-desc" >
+$lbl_pass2
+</p>
+<label id="settings-password-label" for="settings-password" >$lbl_pass3 </label>
+<input type="password" id="settings-password" name="npassword" />
+</div>
+<div id="settings-password-end" ></div>
+
+<div id="settings-confirm-wrapper" >
+<label id="settings-confirm-label" for="settings-confirm" >$lbl_pass4 </label>
+<input type="password" id="settings-confirm" name="confirm" />
+</div>
+<div id="settings-confirm-end" ></div>
+
+<div id="settings-openid-wrapper" >
+ $oidhtml
+</div>
+<div id="settings-openid-end" ></div>
+
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+
+<h3 class="settings-heading">$lbl_basic</h3>
+
+<div id="settings-username-wrapper" >
+<label id="settings-username-label" for="settings-username" >$lbl_fn </label>
+<input type="text" name="username" id="settings-username" value="$username" />
+</div>
+<div id="settings-username-end" ></div>
+
+<div id="settings-email-wrapper" >
+<label id="settings-email-label" for="settings-email" >$lbl_email </label>
+<input type="text" name="email" id="settings-email" value="$email" />
+</div>
+<div id="settings-email-end" ></div>
+
+
+
+<div id="settings-timezone-wrapper" >
+<label id="settings-timezone-label" for="timezone_select" >$lbl_tz </label>
+$zoneselect
+</div>
+<div id="settings-timezone-end" ></div>
+
+<div id="settings-defloc-wrapper" >
+<label id="settings-defloc-label" for="settings-defloc" >$lbl_loc1 </label>
+<input type="text" name="defloc" id="settings-defloc" value="$defloc" />
+</div>
+<div id="settings-defloc-end" ></div>
+
+<div id="settings-allowloc-wrapper" >
+<label id="settings-allowloc-label" for="settings-allowloc" >$lbl_loc2 </label>
+<input type="checkbox" name="allow_location" id="settings-allowloc" value="1" $loc_checked />
+</div>
+<div id="settings-allowloc-end" ></div>
+
+
+
+
+<div id="settings-theme-select">
+<label id="settings-theme-label" for="theme-select" >$lbl_theme </label>
+$theme
+</div>
+<div id="settings-theme-end"></div>
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+
+<h3 class="settings-heading">$lbl_prv</h3>
+
+
+<input type="hidden" name="visibility" value="$visibility" />
+
+<div id="settings-maxreq-wrapper">
+<label id="settings-maxreq-label" for="settings-maxreq" >$lbl_maxreq</label>
+<input id="settings-maxreq" name="maxreq" value="$maxreq" />
+<div id="settings-maxreq-desc">$lbl_maxrdesc</div>
+</div>
+<div id="settings-maxreq-end"></div>
+
+
+
+
+$profile_in_dir
+
+$profile_in_net_dir
+
+
+<div id="settings-default-perms" class="settings-default-perms" >
+ <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >$permissions $permdesc</div>
+ <div id="settings-default-perms-menu-end"></div>
+
+ <div id="settings-default-perms-select" style="display: none;" >
+
+ $aclselect
+
+ </div>
+</div>
+<div id="settings-default-perms-end"></div>
+
+<div id="settings-blockw-wrapper" >
+<label id="settings-blockw-label" for="settings-blockw" >$lbl_rempost </label>
+<input type="checkbox" name="blockwall" id="settings-blockw" value="1" $blockw_checked />
+</div>
+<div id="settings-blockw-end" ></div>
+
+
+
+<div id="settings-expire-desc">$lbl_exp1 <input type="text" size="3" name="expire" value="$expire" /> $lbl_exp2</div>
+<div id="settings-expire-end"></div>
+
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="Submit" />
+</div>
+
+
+
+<h3 class="settings-heading">$lbl_not1</h3>
+
+
+<div id="settings-notify-wrapper">
+<div id="settings-notify-desc">$lbl_not2 </div>
+<label for="notify1" id="settings-label-notify1">$lbl_not3</label>
+<input id="notify1" type="checkbox" $sel_notify1 name="notify1" value="1" />
+<div id="notify1-end"></div>
+<label for="notify2" id="settings-label-notify2">$lbl_not4</label>
+<input id="notify2" type="checkbox" $sel_notify2 name="notify2" value="2" />
+<div id="notify2-end"></div>
+<label for="notify3" id="settings-label-notify3">$lbl_not5</label>
+<input id="notify3" type="checkbox" $sel_notify3 name="notify3" value="4" />
+<div id="notify3-end"></div>
+<label for="notify4" id="settings-label-notify4">$lbl_not6</label>
+<input id="notify4" type="checkbox" $sel_notify4 name="notify4" value="8" />
+<div id="notify4-end"></div>
+<label for="notify5" id="settings-label-notify5">$lbl_not7</label>
+<input id="notify5" type="checkbox" $sel_notify5 name="notify5" value="16" />
+<div id="notify5-end"></div>
+</div>
+<div id="settings=notify-end"></div>
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+<h3 class="settings-imap">$lbl_imap0</h3>
+<p>
+$imap_desc
+$mail_disabled
+</p>
+<label for="imap-server" id="settings-label-imap1">$lbl_imap1</label>
+<input type="text" id="imap-server" name="mail_server" value="$imap_server" $imap_disabled />
+<div id="imap-server-end"></div>
+<label for="imap-port" id="settings-label-imap2">$lbl_imap2</label>
+<input type="text" id="imap-port" name="mail_port" value="$imap_port" $imap_disabled />
+<div id="imap-port-end"></div>
+<label for="imap-ssl" id="settings-label-imap3">$lbl_imap3</label>
+<input type="text" id="imap-ssl" name="mail_ssl" value="$imap_ssl" $imap_disabled />
+<div id="imap-ssl-end"></div>
+<label for="imap-user" id="settings-label-imap4">$lbl_imap4</label>
+<input type="text" id="imap-user" name="mail_user" value="$imap_user" $imap_disabled />
+<div id="imap-user-end"></div>
+<label for="imap-pass" id="settings-label-imap5">$lbl_imap5</label>
+<input type="password" id="imap-pass" name="mail_pass" value="" $imap_disabled />
+<div id="imap-pass-end"></div>
+<label for="imap-replyto" id="settings-label-imap6">$lbl_imap6</label>
+<input type="text" id="imap-replyto" name="mail_replyto" value="$imap_replyto" $imap_disabled />
+<div id="imap-replyto-end"></div>
+<label for="imap-pubmail" id="settings-label-imap7">$lbl_imap7</label>
+<input type="checkbox" name="mail_pubmail" id="imap-pubmail" $pubmail_checked value="1" $imap_disabled />
+<div id="imap-pubmail-end"></div>
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+
+<h3 class="settings-heading">$lbl_advn</h3>
+
+$pagetype
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+
diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css
new file mode 100644
index 000000000..a212c1935
--- /dev/null
+++ b/view/theme/dispy/style.css
@@ -0,0 +1,797 @@
+body {
+ margin: 0px;
+ padding: 0px;
+ font-family: freesans,helvetica,arial,clean,sans-serif;
+ font-size: 16px;
+}
+img { border: 0 none; }
+
+a { color: #3465a4; text-decoration: none; margin-bottom:1px;}
+a:hover { color: #729fcf; padding-bottom: 0px; border-bottom: 1px dotted #729fcf;}
+
+
+.required { display: inline; color: #ff0000;}
+.fakelink { color: #3465a4; cursor: pointer; }
+.fakelink :hover{ color: #729fcf; }
+
+input[type=submit] {
+ margin-top: 20px;
+ height: 22px;
+ background-color: #555753;
+ color: #eeeeec;
+ -webkit-border-radius: 5px ;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ border: 0px;
+}
+
+.smalltext { font-size: 0.7em }
+
+#panel {
+ position: absolute;
+ font-size:0.8em;
+ -webkit-border-radius: 5px ;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ border: 1px solid #ffffff;
+ background-color: #2e3436;
+ color: #eeeeec;
+ padding:1em;
+}
+
+.pager {
+ padding-top: 30px;
+ display:block;
+ clear: both;
+ text-align: center;
+}
+
+.pager span { padding: 4px; margin:4px; }
+.pager_current { background-color: #729fcf; color: #ffffff; }
+
+/**
+ * login
+ */
+#login-extra-links a { margin-right: 20px; }
+
+/*********
+* nav
+*********/
+
+nav {
+ height: 50px;
+ display: block;
+ background-color: #2e3436;
+ color: #eeeeec;
+ position: relative;
+ padding: 0px 10%;
+}
+nav a { text-decoration: none; color: #eeeeec; border:0px;}
+nav a:hover { text-decoration: none; color: #eeeeec; border:0px;}
+
+nav #banner {
+ display: block;
+ position: absolute;
+ margin-left: 20px;
+}
+nav #banner #logo-text a {
+ font-size: 40px;
+ font-weight: bold;
+ margin-left: 3px;
+}
+
+nav #user-menu {
+ display: block;
+ width: auto;
+ float: right;
+ margin-top: 22px;
+ margin-right: 10px;
+ position: relative;
+ vertical-align: middle;
+
+ background-color: #555753;
+
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+
+ background: #555753 url("menu-user-pin.jpg") 98% center no-repeat;
+}
+nav #user-menu-label {
+ float: left;
+ font-size: 12px;
+ padding: 3px 20px 9px 5px;
+ height: 10px;
+}
+
+ul#user-menu-popup {
+ display: none;
+ position: absolute;
+ background-color: #555753;
+ width: 100%;
+ padding: 10px 0px;
+ margin: 0px;
+ top: 20px;
+ left: 0px;
+
+ -webkit-border-radius: 0px 0px 5px 5px;
+ -moz-border-radius: 0px 0px 5px 5px;
+ border-radius: 0px 0px 5px 5px;
+
+ z-index: 10000;
+}
+
+ul#user-menu-popup li { display: block; }
+ul#user-menu-popup li a { display: block; padding: 5px; }
+ul#user-menu-popup li a:hover { color: #2e3436; background-color: #eeeeec; }
+ul#user-menu-popup li a.nav-sep { border-top: 1px solid #eeeeec; }
+nav .nav-link {
+ float: right;
+ display: block;
+ width: 22px;
+ height: 22px;
+ /*border: 1px solid #eeeeec;*/
+ overflow: hidden;
+ margin-top: 22px;
+ margin-right: 10px;
+ text-indent: 50px;
+ background: transparent url('icons.png') 0px 0px no-repeat;
+}
+
+#nav-directory-link { background-position: 0px -22px }
+#nav-directory-link:hover { background-position: -22px -22px;}
+#nav-search-link { background-position: 0px -44px }
+#nav-search-link:hover { background-position: -22px -44px;}
+#nav-apps-link { background-position: 0px -66px }
+#nav-apps-link:hover { background-position: -22px -66px;}
+#nav-login-link { background-position: 0px -88px }
+#nav-login-link:hover { background-position: -22px -88px;}
+
+#notifications {
+ height: 20px; width: 100%;
+ position: absolute;
+ top:-19px; left: 0px;
+}
+.nav-ajax-update {
+ width: 30px;
+ height: 19px;
+ background: transparent url('notifications.png') 0px 0px no-repeat;
+ color: #ffffff;
+ font-weight: bold;
+ font-size: 0.8em;
+ padding-top: 0.2em;
+ text-align: center;
+ float: left;
+ margin-right: -4px;
+ display: none;
+}
+#net-update { background-position: 0px 0px; }
+#mail-update { background-position: -30px 0px; }
+#notify-update { background-position: -60px 0px; }
+#home-update { background-position: -90px 0px; }
+
+/** sysmsg **/
+#sysmsg {
+ position:fixed;
+ bottom: 0px; right:10%;
+ -moz-box-shadow: 0px 0px 5px #888;
+ -webkit-box-shadow: 0px 0px 5px #888;
+ box-shadow: 0px 0px 5px #888;
+ padding: 10px;
+ background-color: #fcaf3e; border:2px solid #f8911b;
+ border-bottom:0px;
+ padding-bottom: 50px;
+ z-index: 1000;
+}
+#sysmsg br {
+ display:block;
+ margin:2px 0px;
+ border-top: 1px solid #ccccce;
+}
+
+/**
+* aside
+**/
+
+aside {
+ position: absolute;
+ right: 11%;
+ width: 200px;
+ font-size: 0.7em;
+
+}
+.vcard .fn { font-size: 1.7em; font-weight: bold; border-bottom: 1px solid #729fcf; padding-top: 1px;}
+
+.vcard #profile-photo-wrapper { margin: 10px 0px }
+
+aside h4 { font-size: 1.2em; }
+
+aside #viewcontacts { text-align: right;}
+
+#profile-extra-links ul { margin-left: 0px; padding-left: 0px; list-style: none; }
+
+#dfrn-request-link {
+ background: #3465A4 url('connect.png') no-repeat 95% center;
+ border-radius: 5px 5px 5px 5px;
+ color: #FFFFFF;
+ display: block;
+ font-size: 1.2em;
+ padding: 0.2em 0.5em;
+}
+
+/**
+* contacts block
+*/
+.contact-block-div { width: 50px; height: 50px; float: left; }
+.contact-block-textdiv { width: 150px; height: 34px; float: left; }
+#contact-block-end { clear: both; }
+
+/**
+ * jot
+ **/
+#profile-jot-text_tbl { margin-bottom: 10px; }
+#profile-jot-text_ifr { width: 99.9%!important }
+#profile-jot-submit-wrapper { float: right;}
+#profile-jot-perms {
+ float: right;
+ background-color: #555753;
+ height: 22px; width: 20px;
+ -webkit-border-radius: 0px 5px 5px 0px;
+ -moz-border-radius: 0px 5px 5px 0px;
+ border-radius: 0px 5px 5px 0px;
+ overflow: hidden;
+ border: 0px;
+ margin-left:2px;
+}
+#profile-jot-submit {
+ float: right;
+ height: 22px;
+ background-color: #555753;
+ color: #eeeeec;
+ -webkit-border-radius: 5px 0px 0px 5px;
+ -moz-border-radius: 5px 0px 0px 5px;
+ border-radius: 5px 0px 0px 5px;
+ border: 0px;
+ margin-top: 0px;
+}
+#character-counter {
+ float: right; padding: 8px 10px;
+}
+#profile-rotator-wrapper {
+ float: right;
+}
+
+.jot-tool {
+ float: left;
+ margin-right: 5px;
+}
+#profile-jot-tools-end,
+#profile-jot-banner-end { clear: both; }
+
+#profile-jot-email-wrapper {
+ margin: 10px 10% 0px 10%;
+ border: 1px solid #555753;
+ border-bottom: 0px;
+}
+#profile-jot-email-label { background-color: #555753; color: #ccccce; padding: 5px;}
+#profile-jot-email { margin: 5px; width: 90%; }
+
+#profile-jot-networks {
+ margin: 0px 10%;
+ border: 1px solid #555753;
+ border-top: 0px;
+ border-bottom: 0px;
+ padding: 5px;
+}
+#profile-jot-acl-wrapper {
+ margin: 0px 10%;
+ border: 1px solid #555753;
+ border-top: 0px;
+}
+#group_allow_wrapper,
+#group_deny_wrapper,
+#acl-permit-outer-wrapper { width: 47%; float: left; }
+
+#contact_allow_wrapper,
+#contact_deny_wrapper,
+#acl-deny-outer-wrapper { width: 47%; float: right; }
+
+#acl-permit-text {background-color: #555753; color: #ccccce; padding: 5px; float: left;}
+#jot-public {background-color: #555753; color: #ff0000; padding: 5px; float: left;}
+#acl-deny-text {background-color: #555753; color: #ccccce; padding: 5px; float: left;}
+
+#acl-permit-text-end,
+#acl-deny-text-end { clear: both; }
+
+
+
+
+#acl-permit-wrapper,
+#acl-deny-wrapper { padding: 5px; }
+
+#acl-allow-group-label,
+#acl-allow-contact-label,
+#acl-deny-group-label,
+#acl-deny-contact-label { display: block }
+
+#group_allow, #contact_allow,
+#group_deny, #contact_deny,
+#profile-jot-acl-wrapper select { width: 100%; }
+
+#acl-wrapper-end,
+#profile-jot-end { clear: both; height: 5px; }
+
+/**
+ * section
+ */
+section { margin: 10px 11% 0px 11%; font-size: 0.8em; padding-right: 230px;}
+
+/** tabs **/
+.tabs-wrapper {list-style: none; padding: 0px; margin: 0px; border-bottom: 1px solid #729fcf; }
+.tabs-wrapper li { display: inline;}
+.tabs { padding: 0px 5px; margin-right: 10px; }
+.tabs:hover { background-color: #729fcf; color: #eeeeec; border: 0px; }
+
+
+/**
+ * items
+ */
+.wall-item-outside-wrapper {
+ margin-top: 50px;
+}
+.wall-item-outside-wrapper-end { clear: both;}
+.wall-item-content-wrapper { position: relative; }
+.wall-item-photo-menu { display: none;}
+.wall-item-photo-menu-button {
+ display:none;
+ text-indent: -99999px;
+ background: #555753 url("menu-user-pin.jpg") no-repeat 75px center;
+ position: absolute;
+ overflow: hidden;
+ height: 20px; width: 90px;
+ top: 85px; left: 0px;
+ -webkit-border-radius: 0px 0px 5px 5px;
+ -moz-border-radius: 0px 0px 5px 5px;
+ border-radius: 0px 0px 5px 5px;
+
+
+}
+
+.wall-item-info { float: left; width: 140px; }
+.wall-item-photo-wrapper {
+ width: 80px; height: 80px;
+ position: relative;
+ padding: 5px;
+ background-color: #555753;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+
+
+.wall-item-tools {
+ float: right;
+ /*height: 0px;
+ padding-top: 20px;
+ overflow:hidden;
+ background: #ffffff url("icons.png") no-repeat -50px -40px;*/
+ filter: alpha(opacity=20);
+ opacity: 0.2;
+ -webkit-transition: all 1s ease-in-out;
+ -moz-transition: all 1s ease-in-out;
+ -o-transition: all 1s ease-in-out;
+ -ms-transition: all 1s ease-in-out;
+ transition: all 1s ease-in-out;
+}
+.wall-item-tools:hover {
+ /*height:auto;*/
+ filter: alpha(opacity=100);
+ opacity: 1;
+ -webkit-transition: all 1s ease-in-out;
+ -moz-transition: all 1s ease-in-out;
+ -o-transition: all 1s ease-in-out;
+ -ms-transition: all 1s ease-in-out;
+ transition: all 1s ease-in-out;
+
+}
+
+.wall-item-title { font-size: 1.2em; font-weight: bold;}
+.wall-item-body { margin-left: 140px;}
+.wall-item-lock-wrapper { float: right; }
+.wall-item-dislike,
+.wall-item-like,
+.wall-item-author { clear: left; font-size: 0.8em; margin: 10px 0px 0px 140px; color: #babdb6;}
+.wall-item-ago { display: inline; padding-left: 10px;}
+.wall-item-wrapper-end { clear:both; }
+.wall-item-location {
+ margin-top:5px;
+ width: 100px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ -o-text-overflow: ellipsis;
+}
+.wall-item-location .icon { float: left; }
+.wall-item-location > a { margin-left: 25px; font-size: 0.7em; display: block;}
+.wall-item-location .smalltext { margin-left: 25px; font-size: 0.7em; display: block;}
+.wall-item-location > br { display: none; }
+
+.wallwall .wwto {
+ left: -10px;
+ margin: 0;
+ position: absolute;
+ top: 65px;
+ width: 30px;
+ z-index: 10001;
+ width: 30px;
+ height: 30px;
+
+}
+.wallwall .wwto img { width: 30px; height: 30px;}
+.wallwall .wall-item-photo-end { clear: both; }
+.wall-item-arrowphoto-wrapper {
+ position: absolute;
+ left: 20px;
+ top: 70px;
+ z-index: 10002;
+}
+
+.wall-item-photo-menu {
+ min-width: 92px;
+ border: 2px solid #FFFFFF;
+ border-top: 0px;
+ background: #555753;
+ position: absolute;
+ left: -2px; top: 101px;
+ display: none;
+ z-index: 10000;
+ -webkit-border-radius: 0px 5px 5px 5px;
+ -moz-border-radius: 0px 5px 5px 5px;
+ border-radius: 0px 5px 5px 5px;
+}
+.wall-item-photo-menu ul { margin:0px; padding: 0px; list-style: none }
+.wall-item-photo-menu li a { white-space: nowrap; display: block; padding: 5px 2px; color: #eeeeec; }
+.wall-item-photo-menu li a:hover { color: #555753; background: #eeeeec; }
+
+/**
+ * comment
+ */
+
+ .ccollapse-wrapper { font-size: 0.9em; margin-left: 80px; }
+
+.wall-item-outside-wrapper.comment { margin-left: 80px; }
+.wall-item-outside-wrapper.comment .wall-item-photo { width: 40px; height: 40px;}
+.wall-item-outside-wrapper.comment .wall-item-photo-wrapper {width: 40px; height: 40px; }
+.wall-item-outside-wrapper.comment .wall-item-photo-menu-button {
+ width: 50px; top: 45px; background-position: 35px center;
+}
+.wall-item-outside-wrapper.comment .wall-item-info { width: 60px; }
+.wall-item-outside-wrapper.comment .wall-item-body { margin-left: 60px;}
+.wall-item-outside-wrapper.comment .wall-item-author { margin-left: 60px;}
+
+.wall-item-outside-wrapper.comment .wall-item-photo-menu {
+ min-width: 50px;
+ top: 60px;
+}
+
+
+.comment-wwedit-wrapper,
+.comment-edit-wrapper { margin: 30px 0px 0px 80px;}
+.comment-wwedit-wrapper img,
+.comment-edit-wrapper img { width: 20px; height: 20px; }
+.comment-edit-photo-link { float: left; width: 40px;}
+.comment-edit-text-empty { width: 80%; height: 20px; border: 0px; color: #babdb6;
+ -webkit-transition: all 0.5s ease-in-out;
+ -moz-transition: all 0.5s ease-in-out;
+ -o-transition: all 0.5s ease-in-out;
+ -ms-transition: all 0.5s ease-in-out;
+ transition: all 0.5s ease-in-out;
+}
+.comment-edit-text-empty:hover { color: #999999;}
+.comment-edit-text-full { width: 80%; height: 6em;
+ -webkit-transition: all 0.5s ease-in-out;
+ -moz-transition: all 0.5s ease-in-out;
+ -o-transition: all 0.5s ease-in-out;
+ -ms-transition: all 0.5s ease-in-out;
+ transition: all 0.5s ease-in-out;
+}
+.comment-edit-submit-wrapper { width: 80%; margin-left: 40px; text-align: right; }
+.comment-edit-submit {
+ height: 22px;
+ background-color: #555753;
+ color: #eeeeec;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ border: 0px;
+}
+
+
+
+
+/**
+ * photos
+ **/
+#photo-top-links {
+ margin-bottom:30px;
+}
+.photo-album-image-wrapper,
+.photo-top-image-wrapper {
+ float: left;
+ margin: 0px 10px 10px 0px;
+ -moz-box-shadow: 0px 0px 5px #888;
+ -webkit-box-shadow: 0px 0px 5px #888;
+ box-shadow: 0px 0px 5px #888;
+ background-color: #eeeeee;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+
+ padding-bottom: 30px;
+ position:relative;
+
+}
+
+.photo-top-image-wrapper a:hover,
+#photo-photo a:hover,
+.photo-album-image-wrapper a:hover {
+ border-bottom: 0px;
+}
+
+.photo-top-photo,
+.photo-album-photo {
+ -webkit-border-radius: 5px 5px 0px 0px;
+ -moz-border-radius: 5px 5px 0px 0px;
+ border-radius: 5px 5px 0px 0px;
+ }
+
+.photo-top-album-name { position: absolute; bottom: 0px; padding: 0px 5px;}
+.caption { position: absolute; bottom: 0px; margin: 0px 5px}
+
+
+#photo-photo{
+ position: relative;
+ float:left;
+}
+#photo-photo-end { clear: both; }
+#photo-prev-link,
+#photo-next-link{
+ position: absolute;
+ width:30%;
+ height: 100%;
+ background-color: rgba(255,255,255,0.5);
+ opacity: 0;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+ background-position: center center;
+ background-repeat: no-repeat;
+
+}
+#photo-prev-link { left:0px; top:0px; background-image: url('prev.png'); }
+#photo-next-link { right:0px; top:0px; background-image: url('next.png');}
+
+#photo-prev-link a,
+#photo-next-link a{
+ display: block; width: 100%; height: 100%;
+ overflow: hidden;
+ text-indent: -900000px;
+}
+
+#photo-prev-link:hover,
+#photo-next-link:hover{
+ opacity: 1;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+
+#photos-upload-spacer,
+#photos-upload-new-wrapper,
+#photos-upload-exist-wrapper { margin-bottom: 1em; }
+#photos-upload-existing-album-text,
+#photos-upload-newalbum-div {
+ background-color: #555753;
+ color: #eeeeec;
+ padding: 1px;
+}
+#photos-upload-album-select,
+#photos-upload-newalbum { width: 99% }
+#photos-upload-perms-menu { text-align: right; }
+
+/**
+ * message
+ */
+.prvmail-text { width: 100%;}
+#prvmail-subject { width: 100%;}
+#prvmail-submit-wrapper { margin-top: 10px; }
+#prvmail-submit {
+ float: right;
+ margin-top: 0px;
+}
+#prvmail-submit-wrapper > div {
+ margin-right: 5px;
+ float: left;
+}
+.mail-list-outside-wrapper { margin-top: 20px;}
+.mail-list-sender { float: left; }
+.mail-list-detail { margin-left: 90px; }
+.mail-list-sender-name { display: inline; }
+.mail-list-date { display: inline; font-size: 0.8em; padding-left: 10px;}
+.mail-list-subject { font-size: 1.5em;}
+.mail-list-delete-wrapper { float: right; }
+.mail-list-outside-wrapper-end { clear: both;}
+
+/**
+ * contacts
+ */
+
+.view-contact-wrapper,
+.contact-entry-wrapper { float: left; margin-right: 20px; margin-bottom: 20px; position: relative;}
+.contact-entry-direction-wrapper {position: absolute; top: 20px;}
+.contact-entry-edit-links { position: absolute; top: 60px; }
+.contact-entry-photo {
+ margin-left:20px;
+}
+.contact-entry-edit-links .icon {
+ border: 1px solid #babdb6;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ background-color: #ffffff;
+}
+
+#contact-edit-banner-name { font-size: 1.5em; }
+#contact-edit-photo-wrapper {position: relative; float: left; padding: 20px;}
+#contact-edit-direction-icon { position: absolute; top: 60px; left:0px;}
+#contact-edit-nav-wrapper { margin-left: 210px; }
+#contact-edit-links { float: left; margin-top: 23px; }
+#contact-drop-links { margin-left: 5px; }
+#contact-edit-nav-wrapper .icon {
+ border: 1px solid #babdb6;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+#contact-edit-poll-wrapper { margin-left: 50px; }
+#contact-edit-last-update-text { margin-bottom: 15px; }
+#contact-edit-last-updated { font-weight: bold; }
+#contact-edit-poll-text { display: inline; }
+#contact-edit-end { clear: both; }
+
+/**
+ * register, settings & profile forms
+ */
+#settings-nickname-desc {
+ background-color: #DDEFFF;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ padding: 5px;
+}
+
+#register-form div,
+#profile-edit-form div,
+#settings-form div {
+ clear: both;
+}
+
+#register-form label,
+#profile-edit-form label,
+#settings-form label {
+ width: 300px; float: left;
+}
+
+#register-form span,
+#profile-edit-form span,
+#settings-form span {
+ color: #555753;
+ display:block;
+ margin-bottom: 20px;
+}
+.settings-submit-wrapper,
+.profile-edit-submit-wrapper { margin: 30px 0px;}
+.profile-listing { float: left; margin: 20px 20px 0px 0px}
+
+#profile-edit-links ul { margin: 20px 0px; padding: 0px; list-style: none; }
+
+
+#register-sitename { display: inline; font-weight: bold;}
+
+/**
+ * contacts selector
+ */
+
+#prof-members {
+ height: 200px;
+ overflow: auto;
+ border: 1px solid #555753;
+ -webkit-border-radius: 5px 5px 0px 0px;
+ -moz-border-radius: 5px 5px 0px 0px;
+ border-radius: 5px 5px 0px 0px;
+}
+#prof-all-contacts {
+ height: 200px;
+ overflow: auto;
+ border: 1px solid #555753;
+ -webkit-border-radius: 0px 0px 5px 5px;
+ -moz-border-radius: 0px 0px 5px 5px;
+ border-radius: 0px 0px 5px 5px;
+}
+#prof-members h3,
+#prof-all-contacts h3{
+ color: #eeeeec;
+ background-color: #555753;
+ margin: 0px;
+ padding: 5px;
+}
+
+#prof-separator { display: none;}
+
+/**
+ * profile
+ */
+#cropimage-wrapper { float:left; }
+#crop-image-form { clear:both; }
+
+
+/**
+ * directory
+ */
+.directory-item {float: left; margin: 50px 50px 0px 0px;}
+
+/**
+ * ICONS
+ */
+.icon {
+ display: block; width: 20px; height: 20px;
+ background-image: url('icons.png');
+}
+/*.icon:hover {
+ border-bottom: 0px;
+}*/
+
+.border {
+ border: 1px solid #babdb6;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+.article { background-position: -50px 0px;}
+.audio { background-position: -70px 0px;}
+.block { background-position: -90px 0px;}
+.drop { background-position: -110px 0px;}
+.drophide { background-position: -130px 0px;}
+.edit { background-position: -150px 0px;}
+.camera { background-position: -170px 0px;}
+.dislike { background-position: -190px 0px;}
+.like { background-position: -210px 0px;}
+.link { background-position: -230px 0px;}
+
+.globe { background-position: -50px -20px;}
+.noglobe { background-position: -70px -20px;}
+.no { background-position: -90px -20px;}
+.pause { background-position: -110px -20px;}
+.play { background-position: -130px -20px;}
+.pencil { background-position: -150px -20px;}
+.small-pencil{ background-position: -170px -20px;}
+.recycle { background-position: -190px -20px;}
+.remote-link{ background-position: -210px -20px;}
+.share { background-position: -230px -20px;}
+
+.tools { background-position: -50px -40px;}
+.lock { background-position: -70px -40px;}
+.unlock { background-position: -90px -40px;}
+.video { background-position: -110px -40px;}
+.youtube { background-position: -130px -40px;}
+
+/**
+ * footer
+ */
+ .cc-license { margin-top: 100px; font-size: 0.7em; }
+footer { display: block; margin: 50px 20%; clear: both; }
+
diff --git a/view/theme/dispy/wall_item.tpl b/view/theme/dispy/wall_item.tpl
new file mode 100644
index 000000000..ed1206f81
--- /dev/null
+++ b/view/theme/dispy/wall_item.tpl
@@ -0,0 +1,47 @@
+<div class="wall-item-outside-wrapper$indent" id="wall-item-outside-wrapper-$id" >
+ <div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
+ <div class="wall-item-info" id="wall-item-info-$id">
+ <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id"
+ onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
+ onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
+ <a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
+ <img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" height="80" width="80" alt="$name" />
+ </a>
+ <span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
+ <div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
+ <ul>
+ $item_photo_menu
+ </ul>
+ </div>
+ </div>
+ <div class="wall-item-photo-end"></div>
+ <div class="wall-item-location" id="wall-item-location-$id">{{ if $location }}<span class="icon globe"></span>$location {{ endif }}</div>
+ </div>
+ <div class="wall-item-lock-wrapper">$lock</div>
+ <div class="wall-item-tools" id="wall-item-tools-$id">
+ $vote
+ $plink
+ $edpost
+ $drop
+ </div>
+ <div class="wall-item-content" id="wall-item-content-$id" >
+ <div class="wall-item-title" id="wall-item-title-$id">$title</div>
+ <div class="wall-item-title-end"></div>
+ <div class="wall-item-body" id="wall-item-body-$id" >$body</div>
+ </div>
+ <div class="wall-item-author">
+ <a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
+ <div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
+
+ </div>
+ </div>
+ <div class="wall-item-wrapper-end"></div>
+ <div class="wall-item-like" id="wall-item-like-$id">$like</div>
+ <div class="wall-item-dislike" id="wall-item-dislike-$id">$dislike</div>
+ <div class="wall-item-comment-wrapper" >
+ $comment
+ </div>
+</div>
+
+<div class="wall-item-outside-wrapper-end$indent" ></div>
+
diff --git a/view/theme/dispy/wallwall_item.tpl b/view/theme/dispy/wallwall_item.tpl
new file mode 100644
index 000000000..263b67c73
--- /dev/null
+++ b/view/theme/dispy/wallwall_item.tpl
@@ -0,0 +1,51 @@
+<div class="wall-item-outside-wrapper$indent wallwall" id="wall-item-outside-wrapper-$id" >
+ <div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
+ <div class="wall-item-info wallwall" id="wall-item-info-$id">
+ <div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-$id" >
+ <a href="$owner_url" title="$olinktitle" class="wall-item-photo-link" id="wall-item-ownerphoto-link-$id">
+ <img src="$owner_photo" class="wall-item-photo$osparkle" id="wall-item-ownerphoto-$id" height="80" width="80" alt="$owner_name" /></a>
+ </div>
+ <div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="$wall" /></div>
+ <div class="wall-item-photo-wrapper wwfrom" id="wall-item-photo-wrapper-$id"
+ onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
+ onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
+ <a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
+ <img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" height="80" width="80" alt="$name" /></a>
+ <span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
+ <div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
+ <ul>
+ $item_photo_menu
+ </ul>
+ </div>
+
+ </div>
+ <div class="wall-item-photo-end"></div>
+ <div class="wall-item-location" id="wall-item-location-$id">{{ if $location }}<span class="icon globe"></span>$location {{ endif }}</div>
+ </div>
+ <div class="wall-item-lock-wrapper">$lock</div>
+ <div class="wall-item-tools" id="wall-item-tools-$id">
+ $vote
+ $plink
+ $edpost
+ $drop
+ </div>
+ <div class="wall-item-content" id="wall-item-content-$id" >
+ <div class="wall-item-title" id="wall-item-title-$id">$title</div>
+ <div class="wall-item-title-end"></div>
+ <div class="wall-item-body" id="wall-item-body-$id" >$body</div>
+ </div>
+ <div class="wall-item-author">
+ <a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
+ <div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
+ </div>
+ </div>
+ <div class="wall-item-wrapper-end"></div>
+ <div class="wall-item-like" id="wall-item-like-$id">$like</div>
+ <div class="wall-item-dislike" id="wall-item-dislike-$id">$dislike</div>
+ <div class="wall-item-comment-wrapper" >
+ $comment
+ </div>
+</div>
+
+<div class="wall-item-outside-wrapper-end$indent" ></div>
+
diff --git a/view/theme/duepuntozero/photo-menu.jpg b/view/theme/duepuntozero/photo-menu.jpg
new file mode 100644
index 000000000..fde5eb535
--- /dev/null
+++ b/view/theme/duepuntozero/photo-menu.jpg
Binary files differ
diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css
index c54b9835a..8a397c10c 100644
--- a/view/theme/duepuntozero/style.css
+++ b/view/theme/duepuntozero/style.css
@@ -16,7 +16,7 @@ body {
}
-a, a:visited { color: #3465a4; text-decoration: none; }
+a, a:visited, a:link { color: #3465a4; text-decoration: none; }
a:hover {text-decoration: underline; }
input {
@@ -51,6 +51,11 @@ blockquote:before {
content: '>> ';
}
+.icollapse-wrapper, .ccollapse-wrapper {
+ border: 1px solid #CCC;
+ padding: 5px;
+}
+
#panel {
background-color: ivory;
position: absolute;
@@ -206,9 +211,12 @@ div.wall-item-content-wrapper.shiny {
/* from default */
#jot-perms-icon,
#profile-location,
-#profile-nolocation,
+#profile-nolocation,
+#profile-youtube,
#profile-video,
-#profile-link,
+#profile-audio,
+#profile-link,
+#profile-title,
#wall-image-upload,
#profile-upload-wrapper,
#wall-image-upload-div,
@@ -216,7 +224,11 @@ div.wall-item-content-wrapper.shiny {
cursor: pointer;
}
-.fakelink, .fakelink:visited {
+#jot-perms-icon {
+ float: left;
+}
+
+.fakelink, .fakelink:visited, .fakelink:link {
color: #3465a4;
text-decoration: none;
cursor: pointer;
@@ -370,6 +382,11 @@ input#dfrn-url {
}
#settings-nick-wrapper {
+ margin-top: 20px;
+
+}
+
+#settings-expire-end {
margin-bottom: 30px;
}
@@ -378,6 +395,7 @@ input#dfrn-url {
#settings-nick-end,
#settings-defloc-end,
#settings-allowloc-end,
+#settings-blockw-end,
#settings-timezone-end,
#settings-theme-end,
#settings-password-end,
@@ -388,7 +406,14 @@ input#dfrn-url {
#notify2-end,
#notify3-end,
#notify4-end,
-#notify5-end {
+#notify5-end,
+#imap-server-end,
+#imap-port-end,
+#imap-ssl-end,
+#imap-user-end,
+#imap-pass-end,
+#imap-replyto-end,
+#imap-pubmail-end {
margin-bottom: 5px;
clear: both;
}
@@ -398,6 +423,7 @@ input#dfrn-url {
#settings-nick-label,
#settings-defloc-label,
#settings-allowloc-label,
+#settings-blockw-label,
#settings-timezone-label,
#settings-theme-label,
#settings-password-label,
@@ -408,7 +434,14 @@ input#dfrn-url {
#settings-label-notify2,
#settings-label-notify3,
#settings-label-notify4,
-#settings-label-notify5 {
+#settings-label-notify5,
+#settings-label-imap1,
+#settings-label-imap2,
+#settings-label-imap3,
+#settings-label-imap4,
+#settings-label-imap5,
+#settings-label-imap6,
+#settings-label-imap7 {
float: left;
width: 200px;
}
@@ -418,6 +451,7 @@ input#dfrn-url {
#settings-nick,
#settings-defloc,
#settings-allowloc,
+#settings-blockw,
#timezone-select,
#theme-select,
#settings-password,
@@ -427,7 +461,14 @@ input#dfrn-url {
#notify2,
#notify3,
#notify4,
-#notify5 {
+#notify5,
+#imap-server,
+#imap-port,
+#imap-ssl,
+#imap-user,
+#imap-pass,
+#imap-replyto,
+#imap-pubmail {
float: left;
margin-bottom: 20px;
}
@@ -465,10 +506,6 @@ input#dfrn-url {
width: 500px;
}
-#settings-nick {
- margin-bottom: 50px;
-}
-
#cropimage-wrapper, #cropimage-preview-wrapper {
float: left;
padding: 30px;
@@ -605,6 +642,11 @@ input#dfrn-url {
#profile-photo-link-select-wrapper {
margin-top: 2em;
}
+
+#profile-photo-submit-wrapper {
+ margin-top: 10px;
+}
+
#profile-photo-wrapper img {
width:175px;
height:175px;
@@ -624,7 +666,8 @@ input#dfrn-url {
#profile-edit-sexual-label,
#profile-edit-politic-label,
#profile-edit-religion-label,
-#profile-edit-keywords-label,
+#profile-edit-pubkeywords-label,
+#profile-edit-prvkeywords-label,
#profile-edit-homepage-label {
float: left;
width: 175px;
@@ -644,7 +687,8 @@ input#dfrn-url {
#sexual-select,
#profile-edit-politic,
#profile-edit-religion,
-#profile-edit-keywords,
+#profile-edit-pubkeywords,
+#profile-edit-prvkeywords,
#profile-in-dir-yes,
#profile-in-dir-no,
#profile-in-netdir-yes,
@@ -698,7 +742,8 @@ input#dfrn-url {
#profile-edit-pdesc-desc,
-#profile-edit-keywords-desc {
+#profile-edit-pubkeywords-desc,
+#profile-edit-prvkeywords-desc {
float: left;
margin-left: 20px;
}
@@ -741,7 +786,8 @@ input#dfrn-url {
#profile-edit-sexual-end,
#profile-edit-politic-end,
#profile-edit-religion-end,
-#profile-edit-keywords-end,
+#profile-edit-pubkeywords-end,
+#profile-edit-prvkeywords-end,
#profile-edit-homepage-end,
#profile-in-dir-break,
#profile-in-dir-end,
@@ -846,6 +892,37 @@ input#dfrn-url {
margin-bottom: 10px;
width: 100px;
}
+.wall-item-photo-menu-button {
+ display: block;
+ position: absolute;
+ background-image: url("photo-menu.jpg");
+ background-position: top left;
+ background-repeat: no-repeat;
+ margin: 0px; padding: 0px;
+ width: 16px;
+ height: 16px;
+ top: 74px; left:10px;
+ overflow: hidden;
+ text-indent: 40px;
+ display: none;
+
+}
+.wall-item-photo-menu {
+ width: auto;
+ border: 2px solid #444444;
+ background: #FFFFFF;
+ position: absolute;
+ left: 10px; top: 90px;
+ display: none;
+ z-index: 10000;
+}
+.wall-item-photo-menu ul { margin:0px; padding: 0px; list-style: none }
+.wall-item-photo-menu li a { display: block; padding: 2px; }
+.wall-item-photo-menu li a:hover { color: #FFFFFF; background: #3465A4; text-decoration: none; }
+
+
+.comment .wall-item-photo-menu-button { top: 44px;}
+.comment .wall-item-photo-menu { top: 60px; }
.wallwall .wwto {
left: 50px;
@@ -858,6 +935,7 @@ input#dfrn-url {
width: 30px;
height: 30px;
}
+
.wallwall .wall-item-photo-end {
clear: both;
}
@@ -908,11 +986,23 @@ input#dfrn-url {
border-right: 2px solid #fff;
}
+.wall-item-like-buttons > a,
+.wall-item-like-buttons > img {
+ float: left;
+}
.wall-item-like-buttons img {
cursor: pointer;
}
+.wall-item-share-buttons {
+ margin-left: 10px;
+}
+
+.editpost {
+ margin-left: 15px;
+}
+
.wall-item-links-wrapper {
float: left;
}
@@ -1029,33 +1119,45 @@ input#dfrn-url {
}
#profile-upload-wrapper {
float: left;
- margin-left: 50px;
+ margin-left: 30px;
}
#profile-rotator {
float: left;
- margin-left: 50px;
+ margin-left: 30px;
}
#profile-link-wrapper {
float: left;
- margin-left: 20px;
+ margin-left: 15px;
}
#profile-youtube-wrapper {
float: left;
- margin-left: 20px;
+ margin-left: 15px;
+}
+#profile-video-wrapper {
+ float: left;
+ margin-left: 15px;
+}
+#profile-audio-wrapper {
+ float: left;
+ margin-left: 15px;
}
#profile-location-wrapper {
float: left;
- margin-left: 20px;
+ margin-left: 15px;
}
#profile-nolocation-wrapper {
float: left;
- margin-left: 20px;
+ margin-left: 15px;
+}
+#profile-title-wrapper {
+ float: left;
+ margin-left: 15px;
}
#profile-jot-perms {
float: left;
- margin-left: 200px;
+ margin-left: 100px;
font-weight: bold;
font-size: 1.2em;
}
@@ -1343,6 +1445,9 @@ input#dfrn-url {
#contact-edit-links {
float: left;
}
+#contact-edit-links a {
+ float: left;
+}
#contact-edit-links img {
margin-left: 20px;
border: none;
@@ -1405,7 +1510,7 @@ input#dfrn-url {
/*margin-left: 50px;*/
}
-#block-message, #ignore-message, #profile-edit-insecure {
+#block-message, #ignore-message {
margin-top: 20px;
color: #FF0000;
font-size: 1.1em;
@@ -1414,13 +1519,21 @@ input#dfrn-url {
padding: 10px;
}
+#profile-edit-insecure {
+ margin-top: 20px;
+ color: #FF0000;
+ font-size: 1.1em;
+ border: 1px solid #FF8888;
+ background-color: #FFEEEE;
+ padding-left: 5px;
+ /*: 3px 3px 3px 5px; */
+ width: 587px;
+}
+
#block-message, #ignore-message {
width: 180px;
}
-#profile-edit-insecure {
- width: 600px;
-}
/*
.profile-tabs {
@@ -1471,11 +1584,26 @@ input#dfrn-url {
display: block;
}
-#acl-permit-text,
+#acl-permit-text {
+ margin-top: 10px;
+ float: left;
+}
+
#acl-deny-text {
margin-top: 10px;
}
+#jot-public {
+ float: left;
+ margin-top: 10px;
+ margin-left: 15px;
+ color: #FF0000;
+}
+
+#acl-permit-text-end {
+ clear: both;
+}
+
#acl-allow-group-label,
#acl-allow-contact-label,
#acl-deny-group-label,
@@ -1778,9 +1906,11 @@ a.mail-list-link {
#profile-jot-desc {
/*float: left;*/
width: 480px;
+ color: #FF0000;
margin-top: 10px;
margin-bottom: 10px;
}
+
#character-counter {
float: right;
font-size: 120%;
@@ -1806,7 +1936,7 @@ a.mail-list-link {
margin-bottom: 15px;
}
-#photos-upload-perms-menu, #photos-upload-perms-menu:visited {
+#photos-upload-perms-menu, #photos-upload-perms-menu:visited, #photos-upload-perms-menu:link {
color: #8888FF;
text-decoration: none;
cursor: pointer;
@@ -1939,6 +2069,12 @@ a.mail-list-link {
width: 52px;
height: 52px;
}
+.contact-block-textdiv {
+ float: left;
+ width: 150px;
+ height: 34px;
+}
+
#contact-block-end {
clear: both;
}
@@ -2008,10 +2144,14 @@ a.mail-list-link {
#plugin-settings-link, #account-settings-link {
- margin-bottom: 25px;
+ margin-bottom: 10px;
+}
+
+#uexport-link {
+ margin-bottom: 20px;
}
-/* end from defautlt */
+/* end from default */
.fn {
@@ -2056,7 +2196,7 @@ a.mail-list-link {
.tool-wrapper {
float: left;
- margin-left: 20px;
+ margin-left: 15px;
}
.tool-link {
@@ -2107,3 +2247,164 @@ a.mail-list-link {
clear: both;
}
+.profile-match-photo {
+ float: left;
+ text-align: center;
+ width: 120px;
+}
+
+.profile-match-name {
+ float: left;
+ text-align: center;
+ width: 120px;
+ overflow: hidden;
+}
+
+.profile-match-break,
+.profile-match-end {
+ clear: both;
+}
+
+.profile-match-wrapper {
+ float: left;
+ padding: 10px;
+}
+#profile-match-wrapper-end {
+ clear: both;
+}
+.side-link {
+ margin-bottom: 15px;
+}
+
+#language-selector {
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+#group-members {
+ margin-top: 20px;
+ padding: 10px;
+ height: 250px;
+ overflow: auto;
+ border: 1px solid #ddd;
+}
+
+#group-members-end {
+ clear: both;
+}
+
+#group-separator {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+#group-all-contacts {
+ padding: 10px;
+ height: 450px;
+ overflow: auto;
+ border: 1px solid #ddd;
+}
+
+#group-all-contacts-end {
+ clear: both;
+ margin-bottom: 10px;
+}
+
+#group-edit-desc {
+ margin-top: 15px;
+}
+
+
+#prof-members {
+ margin-top: 20px;
+ padding: 10px;
+ height: 250px;
+ overflow: auto;
+ border: 1px solid #ddd;
+}
+
+#prof-members-end {
+ clear: both;
+}
+
+#prof-separator {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+#prof-all-contacts {
+ padding: 10px;
+ height: 450px;
+ overflow: auto;
+ border: 1px solid #ddd;
+}
+
+#prof-all-contacts-end {
+ clear: both;
+ margin-bottom: 10px;
+}
+
+#prof-edit-desc {
+ margin-top: 15px;
+}
+
+#crepair-nick-label,
+#crepair-url-label,
+#crepair-request-label,
+#crepair-confirm-label,
+#crepair-notify-label,
+#crepair-poll-label {
+ float: left;
+ width: 200px;
+ margin-bottom: 15px;
+}
+
+#crepair-nick,
+#crepair-url,
+#crepair-request,
+#crepair-confirm,
+#crepair-notify,
+#crepair-poll {
+ float: left;
+ width: 300px;
+}
+
+#contact-edit-links .icon, #contact-drop-links .icon {
+ margin: 0px 3px 0px 3px;
+}
+
+/**
+ * ICONS
+ */
+.icon {
+ display: block; width: 16px; height: 16px;
+ background-image: url('../../../images/icons.png');
+}
+.article { background-position: 0px 0px;}
+.audio { background-position: -16px 0px;}
+.block { background-position: -32px 0px;}
+.drop { background-position: -48px 0px;}
+.drophide { background-position: -64px 0px;}
+.edit { background-position: -80px 0px;}
+.camera { background-position: -96px 0px;}
+.dislike { background-position: -112px 0px;}
+.like { background-position: -128px 0px;}
+.link { background-position: -144px 0px;}
+
+.globe { background-position: 0px -16px;}
+.noglobe { background-position: -16px -16px;}
+.no { background-position: -32px -16px;}
+.pause { background-position: -48px -16px;}
+.play { background-position: -64px -16px;}
+.pencil { background-position: -80px -16px;}
+.small-pencil { background-position: -96px -16px;}
+.recycle { background-position: -112px -16px;}
+.remote-link { background-position: -128px -16px;}
+.share { background-position: -144px -16px;}
+
+.tools { background-position: 0px -32px;}
+.lock { background-position: -16px -32px;}
+.unlock { background-position: -32px -32px;}
+.video { background-position: -48px -32px;}
+.youtube { background-position: -64px -32px;}
diff --git a/view/theme/greenzero/style.css b/view/theme/greenzero/style.css
index 5a8401160..ec15b736e 100644
--- a/view/theme/greenzero/style.css
+++ b/view/theme/greenzero/style.css
@@ -2,7 +2,7 @@
/* green variation by Tobias Diekershoff <tobias.diekershoff@gmx.net> */
-a, a:visited { color: #549f4f; text-decoration: none; }
+a:link, a:visited { color: #549f4f; text-decoration: none; }
a:hover {text-decoration: underline; }
diff --git a/view/theme/loozah/photo-menu.jpg b/view/theme/loozah/photo-menu.jpg
new file mode 100644
index 000000000..bd39696a2
--- /dev/null
+++ b/view/theme/loozah/photo-menu.jpg
Binary files differ
diff --git a/view/theme/loozah/style.css b/view/theme/loozah/style.css
index 4461907bb..0ae2ab4cd 100644
--- a/view/theme/loozah/style.css
+++ b/view/theme/loozah/style.css
@@ -107,9 +107,12 @@ blockquote:before {
#jot-perms-icon,
#profile-location,
-#profile-nolocation,
-#profile-video,
-#profile-link,
+#profile-nolocation,
+#profile-youtube,
+#profile-video,
+#profile-audio,
+#profile-link,
+#profile-title,
#wall-image-upload,
#profile-upload-wrapper,
#wall-image-upload-div,
@@ -117,6 +120,10 @@ blockquote:before {
cursor: pointer;
}
+#jot-perms-icon {
+ float: left;
+}
+
.fakelink, .fakelink:visited {
color: #15607B;
text-decoration: none;
@@ -503,6 +510,10 @@ input#dfrn-url {
}
#settings-nick-wrapper {
+ margin-bottom: 15px;
+}
+
+#settings-expire-end {
margin-bottom: 30px;
}
@@ -511,6 +522,7 @@ input#dfrn-url {
#settings-nick-end,
#settings-defloc-end,
#settings-allowloc-end,
+#settings-blockw-end,
#settings-timezone-end,
#settings-theme-end,
#settings-password-end,
@@ -521,7 +533,14 @@ input#dfrn-url {
#notify2-end,
#notify3-end,
#notify4-end,
-#notify5-end {
+#notify5-end,
+#imap-server-end,
+#imap-port-end,
+#imap-ssl-end,
+#imap-user-end,
+#imap-pass-end,
+#imap-replyto-end,
+#imap-pubmail-end {
margin-bottom: 5px;
clear: both;
}
@@ -531,6 +550,7 @@ input#dfrn-url {
#settings-nick-label,
#settings-defloc-label,
#settings-allowloc-label,
+#settings-blockw-label,
#settings-timezone-label,
#settings-theme-label,
#settings-password-label,
@@ -541,7 +561,14 @@ input#dfrn-url {
#settings-label-notify2,
#settings-label-notify3,
#settings-label-notify4,
-#settings-label-notify5 {
+#settings-label-notify5,
+#settings-label-imap1,
+#settings-label-imap2,
+#settings-label-imap3,
+#settings-label-imap4,
+#settings-label-imap5,
+#settings-label-imap6,
+#settings-label-imap7 {
float: left;
width: 200px;
}
@@ -551,6 +578,7 @@ input#dfrn-url {
#settings-nick,
#settings-defloc,
#settings-allowloc,
+#settings-blockw,
#timezone-select,
#theme-select,
#settings-password,
@@ -560,7 +588,14 @@ input#dfrn-url {
#notify2,
#notify3,
#notify4,
-#notify5 {
+#notify5,
+#imap-server,
+#imap-port,
+#imap-ssl,
+#imap-user,
+#imap-pass,
+#imap-replyto,
+#imap-pubmail {
float: left;
margin-bottom: 20px;
}
@@ -599,7 +634,7 @@ input#dfrn-url {
}
#settings-nick {
- margin-bottom: 50px;
+ margin-bottom: 30px;
}
#cropimage-wrapper, #cropimage-preview-wrapper {
@@ -755,7 +790,8 @@ input#dfrn-url {
#profile-edit-sexual-label,
#profile-edit-politic-label,
#profile-edit-religion-label,
-#profile-edit-keywords-label,
+#profile-edit-pubkeywords-label,
+#profile-edit-prvkeywords-label,
#profile-edit-homepage-label {
float: left;
width: 175px;
@@ -775,7 +811,8 @@ input#dfrn-url {
#sexual-select,
#profile-edit-politic,
#profile-edit-religion,
-#profile-edit-keywords,
+#profile-edit-pubkeywords,
+#profile-edit-prvkeywords,
#profile-in-dir-yes,
#profile-in-dir-no,
#profile-in-netdir-yes,
@@ -806,7 +843,8 @@ input#dfrn-url {
margin-left: 20px;
}
-#profile-edit-keywords-desc {
+#profile-edit-pubkeywords-desc,
+#profile-edit-prvkeywords-desc {
float: left;
margin-left: 20px;
}
@@ -864,7 +902,8 @@ input#dfrn-url {
#profile-edit-sexual-end,
#profile-edit-politic-end,
#profile-edit-religion-end,
-#profile-edit-keywords-end,
+#profile-edit-pubkeywords-end,
+#profile-edit-prvkeywords-end,
#profile-edit-homepage-end,
#profile-in-dir-break,
#profile-in-dir-end,
@@ -945,6 +984,7 @@ input#dfrn-url {
.wall-item-content-wrapper {
margin-top: 10px;
border: 1px solid #CCC;
+ position: relative;
}
.wall-item-content-wrapper.comment {
@@ -959,10 +999,37 @@ input#dfrn-url {
width: 100px;
float: left;
}
+
+.wall-item-photo-menu-button {
+ display: block;
+ position: absolute;
+ background-image: url("photo-menu.jpg");
+ background-position: top left;
+ background-repeat: no-repeat;
+ margin: 0px; padding: 0px;
+ width: 16px;
+ height: 16px;
+ top: 74px; left:10px;
+ overflow: hidden;
+ text-indent: 40px;
+ display: none;
+}
+.wall-item-photo-menu {
+ width: auto;
+ border: 2px solid #444444;
+ background: #FFFFFF;
+ position: absolute;
+ left: 10px; top: 90px;
+ display: none;
+ z-index: 10000;
+}
+.wall-item-photo-menu ul { margin:0px; padding: 0px; list-style: none }
+.wall-item-photo-menu li a { display: block; padding: 2px; }
+.wall-item-photo-menu li a:hover { color: #FFFFFF; background: #3465A4; text-decoration: none; }
+
+
.wall-item-arrowphoto-wrapper {
margin-top: 40px;
- margin-right: 20px;
- float: left;
}
.wall-item-wrapper {
margin-left: 10px;;
@@ -984,6 +1051,28 @@ input#dfrn-url {
padding-right: 10px;
border-right: 2px solid #fff;
}
+.wall-item-like-buttons > a,
+.wall-item-like-buttons > img {
+ float: left;
+}
+
+.wall-item-share-buttons {
+ margin-left: 5px;
+}
+
+.editpost {
+ margin-left: 15px;
+}
+
+.wall-item-info.wallwall {
+ width: 285px;
+}
+
+.wwto, .wall-item-arrowphoto-wrapper, .wwfrom {
+ float: left;
+ margin-right: 10px;
+}
+
.wall-item-links-wrapper {
float: left;
@@ -1098,33 +1187,46 @@ padding: 5px 10px 0px;
}
#profile-upload-wrapper {
float: left;
- margin-left: 50px;
+ margin-left: 30px;
}
#profile-rotator {
float: left;
- margin-left: 50px;
+ margin-left: 30px;
}
#profile-link-wrapper {
float: left;
- margin-left: 20px;
+ margin-left: 15px;
}
#profile-youtube-wrapper {
float: left;
- margin-left: 20px;
+ margin-left: 15px;
+}
+#profile-video-wrapper {
+ float: left;
+ margin-left: 15px;
+}
+#profile-audio-wrapper {
+ float: left;
+ margin-left: 15px;
}
#profile-location-wrapper {
float: left;
- margin-left: 20px;
+ margin-left: 15px;
}
#profile-nolocation-wrapper {
float: left;
- margin-left: 20px;
+ margin-left: 15px;
+}
+
+#profile-title-wrapper {
+ float: left;
+ margin-left: 15px;
}
#profile-jot-perms {
float: left;
- margin-left: 200px;
+ margin-left: 100px;
font-weight: bold;
font-size: 1.2em;
}
@@ -1410,6 +1512,9 @@ padding: 5px 10px 0px;
#contact-edit-links {
float: left;
}
+#contact-edit-links a {
+ float: left;
+}
#contact-edit-links img {
margin-left: 20px;
border: none;
@@ -1539,9 +1644,24 @@ padding: 5px 10px 0px;
display: block;
}
-#acl-permit-text,
+#acl-permit-text {
+ margin-top: 10px;
+ float: left;
+}
+
#acl-deny-text {
- margin-top: 10px;
+ margin-top: 10px;
+}
+
+#jot-public {
+ float: left;
+ margin-top: 10px;
+ margin-left: 15px;
+ color: #FF0000;
+}
+
+#acl-permit-text-end {
+ clear: both;
}
#acl-allow-group-label,
@@ -1982,6 +2102,12 @@ a.mail-list-link {
width: 52px;
height: 52px;
}
+.contact-block-textdiv {
+ float: left;
+ width: 150px;
+ height: 34px;
+}
+
#contact-block-end {
clear: both;
}
@@ -2050,8 +2176,8 @@ a.mail-list-link {
}
-#plugin-settings-link, #account-settings-link {
- margin-bottom: 25px;
+#plugin-settings-link, #account-settings-link, #uexport-link {
+ margin-bottom: 10px;
}
@@ -2086,7 +2212,7 @@ a.mail-list-link {
.tool-wrapper {
float: left;
- margin-left: 20px;
+ margin-left: 15px;
}
.tool-link {
cursor: pointer;
@@ -2140,3 +2266,163 @@ a.mail-list-link {
clear: both;
}
+
+.profile-match-photo {
+ float: left;
+ text-align: center;
+ width: 120px;
+}
+
+.profile-match-name {
+ float: left;
+ text-align: center;
+ width: 120px;
+ overflow: hidden;
+}
+
+.profile-match-break,
+.profile-match-end {
+ clear: both;
+}
+
+.profile-match-wrapper {
+ float: left;
+ padding: 10px;
+}
+#profile-match-wrapper-end {
+ clear: both;
+}
+
+.side-link {
+ margin-bottom: 15px;
+}
+
+#language-selector {
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+
+#group-members {
+ margin-top: 20px;
+ padding: 10px;
+ height: 250px;
+ overflow: auto;
+ border: 1px solid #ddd;
+}
+
+#group-members-end {
+ clear: both;
+}
+
+#group-separator {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+#group-all-contacts {
+ padding: 10px;
+ height: 450px;
+ overflow: auto;
+ border: 1px solid #ddd;
+}
+
+#group-all-contacts-end {
+ clear: both;
+ margin-bottom: 10px;
+}
+
+#group-edit-desc {
+ margin-top: 15px;
+}
+
+
+#prof-members {
+ margin-top: 20px;
+ padding: 10px;
+ height: 250px;
+ overflow: auto;
+ border: 1px solid #ddd;
+}
+
+#prof-members-end {
+ clear: both;
+}
+
+#prof-separator {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+#prof-all-contacts {
+ padding: 10px;
+ height: 450px;
+ overflow: auto;
+ border: 1px solid #ddd;
+}
+
+#prof-all-contacts-end {
+ clear: both;
+ margin-bottom: 10px;
+}
+
+#prof-edit-desc {
+ margin-top: 15px;
+}
+
+#crepair-nick-label,
+#crepair-url-label,
+#crepair-request-label,
+#crepair-confirm-label,
+#crepair-notify-label,
+#crepair-poll-label {
+ float: left;
+ width: 200px;
+ margin-bottom: 15px;
+}
+
+#crepair-nick,
+#crepair-url,
+#crepair-request,
+#crepair-confirm,
+#crepair-notify,
+#crepair-poll {
+ float: left;
+ width: 300px;
+}
+
+/**
+ * ICONS
+ */
+.icon {
+ display: block; width: 16px; height: 16px;
+ background-image: url('../../../images/icons.png');
+}
+.article { background-position: 0px 0px;}
+.audio { background-position: -16px 0px;}
+.block { background-position: -32px 0px;}
+.drop { background-position: -48px 0px;}
+.drophide { background-position: -64px 0px;}
+.edit { background-position: -80px 0px;}
+.camera { background-position: -96px 0px;}
+.dislike { background-position: -112px 0px;}
+.like { background-position: -128px 0px;}
+.link { background-position: -144px 0px;}
+
+.globe { background-position: 0px -16px;}
+.noglobe { background-position: -16px -16px;}
+.no { background-position: -32px -16px;}
+.pause { background-position: -48px -16px;}
+.play { background-position: -64px -16px;}
+.pencil { background-position: -80px -16px;}
+.small-pencil { background-position: -96px -16px;}
+.recycle { background-position: -112px -16px;}
+.remote-link { background-position: -128px -16px;}
+.share { background-position: -144px -16px;}
+
+.tools { background-position: 0px -32px;}
+.lock { background-position: -16px -32px;}
+.unlock { background-position: -32px -32px;}
+.video { background-position: -48px -32px;}
+.youtube { background-position: -64px -32px;}
diff --git a/view/wall_item.tpl b/view/wall_item.tpl
index 5cae6b142..b33ab779e 100644
--- a/view/wall_item.tpl
+++ b/view/wall_item.tpl
@@ -1,16 +1,25 @@
<div class="wall-item-outside-wrapper$indent" id="wall-item-outside-wrapper-$id" >
<div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
- <span class="wall-item-info" id="wall-item-info-$id">
- <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id" >
+ <div class="wall-item-info" id="wall-item-info-$id">
+ <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id"
+ onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
+ onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
<a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
- <img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" height="80" width="80" alt="$name" /></a>
+ <img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" height="80" width="80" alt="$name" />
+ </a>
+ <span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
+ <div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
+ <ul>
+ $item_photo_menu
+ </ul>
+ </div>
</div>
<div class="wall-item-photo-end"></div>
<div class="wall-item-wrapper" id="wall-item-wrapper-$id" >
$lock
<div class="wall-item-location" id="wall-item-location-$id">$location</div>
</div>
- </span>
+ </div>
<div class="wall-item-author">
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
@@ -24,6 +33,7 @@
<div class="wall-item-tools" id="wall-item-tools-$id">
$vote
$plink
+ $edpost
$drop
</div>
</div>
@@ -33,7 +43,7 @@
<div class="wall-item-comment-wrapper" >
$comment
</div>
-</div>
<div class="wall-item-outside-wrapper-end$indent" ></div>
+</div>
diff --git a/view/wall_item_drop.tpl b/view/wall_item_drop.tpl
index 9aa565f69..b4ea62b45 100644
--- a/view/wall_item_drop.tpl
+++ b/view/wall_item_drop.tpl
@@ -1,2 +1,4 @@
-<div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$id" ><a href="item/drop/$id" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" id="wall-item-delete-icon-$id" class="wall-item-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a></div>
- <div class="wall-item-delete-end"></div>
+<div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$id" >
+ <a href="item/drop/$id" onclick="return confirmDelete();" class="icon drophide" title="$delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>
+</div>
+<div class="wall-item-delete-end"></div>
diff --git a/view/wallwall_item.tpl b/view/wallwall_item.tpl
index 256320a46..b1d504c5d 100644
--- a/view/wallwall_item.tpl
+++ b/view/wallwall_item.tpl
@@ -1,21 +1,30 @@
<div class="wall-item-outside-wrapper$indent wallwall" id="wall-item-outside-wrapper-$id" >
<div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
- <span class="wall-item-info" id="wall-item-info-$id">
+ <div class="wall-item-info wallwall" id="wall-item-info-$id">
<div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-$id" >
<a href="$owner_url" title="$olinktitle" class="wall-item-photo-link" id="wall-item-ownerphoto-link-$id">
<img src="$owner_photo" class="wall-item-photo$osparkle" id="wall-item-ownerphoto-$id" height="80" width="80" alt="$owner_name" /></a>
</div>
<div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="$wall" /></div>
- <div class="wall-item-photo-wrapper wwfrom" id="wall-item-photo-wrapper-$id" >
+ <div class="wall-item-photo-wrapper wwfrom" id="wall-item-photo-wrapper-$id"
+ onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
+ onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
<a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
<img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" height="80" width="80" alt="$name" /></a>
+ <span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
+ <div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
+ <ul>
+ $item_photo_menu
+ </ul>
+ </div>
+
</div>
<div class="wall-item-photo-end"></div>
<div class="wall-item-wrapper" id="wall-item-wrapper-$id" >
$lock
<div class="wall-item-location" id="wall-item-location-$id">$location</div>
</div>
- </span>
+ </div>
<div class="wall-item-author">
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a> $to <a href="$owner_url" title="$olinktitle" class="wall-item-name-link"><span class="wall-item-name$osparkle" id="wall-item-ownername-$id">$owner_name</span></a> $vwall<br />
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
@@ -28,6 +37,7 @@
<div class="wall-item-tools" id="wall-item-tools-$id">
$vote
$plink
+ $edpost
$drop
</div>
</div>
@@ -38,7 +48,7 @@
<div class="wall-item-comment-wrapper" >
$comment
</div>
-</div>
<div class="wall-item-outside-wrapper-end$indent" ></div>
+</div>
diff --git a/view/xrd_host.tpl b/view/xrd_host.tpl
index fae70dec9..c6184e306 100644
--- a/view/xrd_host.tpl
+++ b/view/xrd_host.tpl
@@ -4,8 +4,9 @@
<hm:Host>$domain</hm:Host>
- <Link rel='lrdd' template='http://$domain/xrd/?uri={uri}' />
- <Link rel='acct-mgmt' href='http://$domain/amcd' />
- <Link rel='http://services.mozilla.com/amcd/0.1' href='http://$domain/amcd' />
-
+ <Link rel='lrdd' template='$domain/xrd/?uri={uri}' />
+ <Link rel='acct-mgmt' href='$domain/amcd' />
+ <Link rel='http://services.mozilla.com/amcd/0.1' href='$domain/amcd' />
+ <Link rel="http://oexchange.org/spec/0.8/rel/resident-target" type="application/xrd+xml"
+ href="$domain/oexchange/xrd" />
</XRD>