forked from friendica/friendica-addons
Compare commits
1 commit
develop
...
nupplaphil
| Author | SHA1 | Date | |
|---|---|---|---|
|
094b8c6875 |
1122 changed files with 38503 additions and 74418 deletions
|
|
@ -6,24 +6,5 @@ root = true
|
|||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
trim_trailing_whitespaces = true
|
||||
indent_style = tab
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
quote_type = single
|
||||
max_line_length = off
|
||||
|
||||
[*.js]
|
||||
quote_type = double
|
||||
ij_javascript_use_double_quotes = true
|
||||
|
||||
[*.yml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.xml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.json]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
|
|
|||
266
.tx/config
266
.tx/config
|
|
@ -1,399 +1,399 @@
|
|||
[main]
|
||||
host = https://api.transifex.com
|
||||
host = https://www.transifex.com
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_advancedcontentfilter_messagespo]
|
||||
[friendica.addon_advancedcontentfilter_messagespo]
|
||||
file_filter = advancedcontentfilter/lang/<lang>/messages.po
|
||||
source_file = advancedcontentfilter/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_blackout_messagespo]
|
||||
[friendica.addon_blackout_messagespo]
|
||||
file_filter = blackout/lang/<lang>/messages.po
|
||||
source_file = blackout/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_blockem_messagespo]
|
||||
[friendica.addon_blockem_messagespo]
|
||||
file_filter = blockem/lang/<lang>/messages.po
|
||||
source_file = blockem/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_blogger_messagespo]
|
||||
[friendica.addon_blogger_messagespo]
|
||||
file_filter = blogger/lang/<lang>/messages.po
|
||||
source_file = blogger/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_buffer_messagespo]
|
||||
[friendica.addon_buffer_messagespo]
|
||||
file_filter = buffer/lang/<lang>/messages.po
|
||||
source_file = buffer/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_buglink_messagespo]
|
||||
[friendica.addon_buglink_messagespo]
|
||||
file_filter = buglink/lang/<lang>/messages.po
|
||||
source_file = buglink/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_catavatar_messagespo]
|
||||
[friendica.addon_catavatar_messagespo]
|
||||
file_filter = catavatar/lang/<lang>/messages.po
|
||||
source_file = catavatar/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_cookienotice_messagespo]
|
||||
[friendica.addon_cookienotice_messagespo]
|
||||
file_filter = cookienotice/lang/<lang>/messages.po
|
||||
source_file = cookienotice/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_curweather_messagespo]
|
||||
[friendica.addon_curweather_messagespo]
|
||||
file_filter = curweather/lang/<lang>/messages.po
|
||||
source_file = curweather/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_diaspora_messagespo]
|
||||
[friendica.addon_diaspora_messagespo]
|
||||
file_filter = diaspora/lang/<lang>/messages.po
|
||||
source_file = diaspora/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_dwpost_messagespo]
|
||||
[friendica.addon_dwpost_messagespo]
|
||||
file_filter = dwpost/lang/<lang>/messages.po
|
||||
source_file = dwpost/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_forumdirectory_messagespo]
|
||||
[friendica.addon_forumdirectory_messagespo]
|
||||
file_filter = forumdirectory/lang/<lang>/messages.po
|
||||
source_file = forumdirectory/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_fromapp_messagespo]
|
||||
[friendica.addon_fromapp_messagespo]
|
||||
file_filter = fromapp/lang/<lang>/messages.po
|
||||
source_file = fromapp/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_fromgplus_messagespo]
|
||||
[friendica.addon_fromgplus_messagespo]
|
||||
file_filter = fromgplus/lang/<lang>/messages.po
|
||||
source_file = fromgplus/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_geonames_messagespo]
|
||||
[friendica.addon_geonames_messagespo]
|
||||
file_filter = geonames/lang/<lang>/messages.po
|
||||
source_file = geonames/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_gnot_messagespo]
|
||||
[friendica.addon_gnot_messagespo]
|
||||
file_filter = gnot/lang/<lang>/messages.po
|
||||
source_file = gnot/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_gravatar_messagespo]
|
||||
[friendica.addon_gravatar_messagespo]
|
||||
file_filter = gravatar/lang/<lang>/messages.po
|
||||
source_file = gravatar/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_group_text_messagespo]
|
||||
[friendica.addon_group_text_messagespo]
|
||||
file_filter = group_text/lang/<lang>/messages.po
|
||||
source_file = group_text/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_ifttt_messagespo]
|
||||
[friendica.addon_ifttt_messagespo]
|
||||
file_filter = ifttt/lang/<lang>/messages.po
|
||||
source_file = ifttt/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_ijpost_messagespo]
|
||||
[friendica.addon_ijpost_messagespo]
|
||||
file_filter = ijpost/lang/<lang>/messages.po
|
||||
source_file = ijpost/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_impressum_messagespo]
|
||||
[friendica.addon_impressum_messagespo]
|
||||
file_filter = impressum/lang/<lang>/messages.po
|
||||
source_file = impressum/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_infiniteimprobabilitydrive_messagespo]
|
||||
[friendica.addon_infiniteimprobabilitydrive_messagespo]
|
||||
file_filter = infiniteimprobabilitydrive/lang/<lang>/messages.po
|
||||
source_file = infiniteimprobabilitydrive/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_irc_messagespo]
|
||||
[friendica.addon_irc_messagespo]
|
||||
file_filter = irc/lang/<lang>/messages.po
|
||||
source_file = irc/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_jappixmini_messagespo]
|
||||
[friendica.addon_jappixmini_messagespo]
|
||||
file_filter = jappixmini/lang/<lang>/messages.po
|
||||
source_file = jappixmini/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_js_upload_messagespo]
|
||||
[friendica.addon_js_upload_messagespo]
|
||||
file_filter = js_upload/lang/<lang>/messages.po
|
||||
source_file = js_upload/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_krynn_messagespo]
|
||||
[friendica.addon_krynn_messagespo]
|
||||
file_filter = krynn/lang/<lang>/messages.po
|
||||
source_file = krynn/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_langfilter_messagespo]
|
||||
[friendica.addon_langfilter_messagespo]
|
||||
file_filter = langfilter/lang/<lang>/messages.po
|
||||
source_file = langfilter/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_libertree_messagespo]
|
||||
[friendica.addon_libertree_messagespo]
|
||||
file_filter = libertree/lang/<lang>/messages.po
|
||||
source_file = libertree/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_libravatar_messagespo]
|
||||
[friendica.addon_libravatar_messagespo]
|
||||
file_filter = libravatar/lang/<lang>/messages.po
|
||||
source_file = libravatar/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_ljpost_messagespo]
|
||||
[friendica.addon_ljpost_messagespo]
|
||||
file_filter = ljpost/lang/<lang>/messages.po
|
||||
source_file = ljpost/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_mailstream_messagespo]
|
||||
[friendica.addon_mailstream_messagespo]
|
||||
file_filter = mailstream/lang/<lang>/messages.po
|
||||
source_file = mailstream/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_mathjax_messagespo]
|
||||
[friendica.addon_mathjax_messagespo]
|
||||
file_filter = mathjax/lang/<lang>/messages.po
|
||||
source_file = mathjax/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_membersince_messagespo]
|
||||
[friendica.addon_membersince_messagespo]
|
||||
file_filter = membersince/lang/<lang>/messages.po
|
||||
source_file = membersince/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_morechoice_messagespo]
|
||||
[friendica.addon_morechoice_messagespo]
|
||||
file_filter = morechoice/lang/<lang>/messages.po
|
||||
source_file = morechoice/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_morepokes_messagespo]
|
||||
[friendica.addon_morepokes_messagespo]
|
||||
file_filter = morepokes/lang/<lang>/messages.po
|
||||
source_file = morepokes/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_newmemberwidget_messagespo]
|
||||
[friendica.addon_newmemberwidget_messagespo]
|
||||
file_filter = newmemberwidget/lang/<lang>/messages.po
|
||||
source_file = newmemberwidget/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_notifyall_messagespo]
|
||||
[friendica.addon_notifyall_messagespo]
|
||||
file_filter = notifyall/lang/<lang>/messages.po
|
||||
source_file = notifyall/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_notimeline_messagespo]
|
||||
[friendica.addon_notimeline_messagespo]
|
||||
file_filter = notimeline/lang/<lang>/messages.po
|
||||
source_file = notimeline/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_nsfw_messagespo]
|
||||
[friendica.addon_nsfw_messagespo]
|
||||
file_filter = nsfw/lang/<lang>/messages.po
|
||||
source_file = nsfw/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_numfriends_messagespo]
|
||||
[friendica.addon_numfriends_messagespo]
|
||||
file_filter = numfriends/lang/<lang>/messages.po
|
||||
source_file = numfriends/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_openstreetmap_messagespo]
|
||||
[friendica.addon_openstreetmap_messagespo]
|
||||
file_filter = openstreetmap/lang/<lang>/messages.po
|
||||
source_file = openstreetmap/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_pageheader_messagespo]
|
||||
[friendica.addon_pageheader_messagespo]
|
||||
file_filter = pageheader/lang/<lang>/messages.po
|
||||
source_file = pageheader/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_piwik_messagespo]
|
||||
[friendica.addon_piwik_messagespo]
|
||||
file_filter = piwik/lang/<lang>/messages.po
|
||||
source_file = piwik/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_planets_messagespo]
|
||||
[friendica.addon_planets_messagespo]
|
||||
file_filter = planets/lang/<lang>/messages.po
|
||||
source_file = planets/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_public_server_messagespo]
|
||||
[friendica.addon_public_server_messagespo]
|
||||
file_filter = public_server/lang/<lang>/messages.po
|
||||
source_file = public_server/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_pumpio_messagespo]
|
||||
[friendica.addon_pumpio_messagespo]
|
||||
file_filter = pumpio/lang/<lang>/messages.po
|
||||
source_file = pumpio/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_qcomment_messagespo]
|
||||
[friendica.addon_qcomment_messagespo]
|
||||
file_filter = qcomment/lang/<lang>/messages.po
|
||||
source_file = qcomment/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_randplace_messagespo]
|
||||
[friendica.addon_randplace_messagespo]
|
||||
file_filter = randplace/lang/<lang>/messages.po
|
||||
source_file = randplace/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_remote_permissions_messagespo]
|
||||
[friendica.addon_remote_permissions_messagespo]
|
||||
file_filter = remote_permissions/lang/<lang>/messages.po
|
||||
source_file = remote_permissions/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_rendertime_messagespo]
|
||||
[friendica.addon_rendertime_messagespo]
|
||||
file_filter = rendertime/lang/<lang>/messages.po
|
||||
source_file = rendertime/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_securemail_messagespo]
|
||||
[friendica.addon_securemail_messagespo]
|
||||
file_filter = securemail/lang/<lang>/messages.po
|
||||
source_file = securemail/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_showmore_messagespo]
|
||||
[friendica.addon_showmore_messagespo]
|
||||
file_filter = showmore/lang/<lang>/messages.po
|
||||
source_file = showmore/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_smileybutton_messagespo]
|
||||
[friendica.addon_smileybutton_messagespo]
|
||||
file_filter = smileybutton/lang/<lang>/messages.po
|
||||
source_file = smileybutton/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_startpage_messagespo]
|
||||
[friendica.addon_startpage_messagespo]
|
||||
file_filter = startpage/lang/<lang>/messages.po
|
||||
source_file = startpage/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_statusnet_messagespo]
|
||||
[friendica.addon_statusnet_messagespo]
|
||||
file_filter = statusnet/lang/<lang>/messages.po
|
||||
source_file = statusnet/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_superblock_messagespo]
|
||||
[friendica.addon_superblock_messagespo]
|
||||
file_filter = superblock/lang/<lang>/messages.po
|
||||
source_file = superblock/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_testdrive_messagespo]
|
||||
[friendica.addon_testdrive_messagespo]
|
||||
file_filter = testdrive/lang/<lang>/messages.po
|
||||
source_file = testdrive/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_tictac_messagespo]
|
||||
[friendica.addon_tictac_messagespo]
|
||||
file_filter = tictac/lang/<lang>/messages.po
|
||||
source_file = tictac/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_tumblr_messagespo]
|
||||
[friendica.addon_tumblr_messagespo]
|
||||
file_filter = tumblr/lang/<lang>/messages.po
|
||||
source_file = tumblr/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_twitter_messagespo]
|
||||
[friendica.addon_twitter_messagespo]
|
||||
file_filter = twitter/lang/<lang>/messages.po
|
||||
source_file = twitter/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_viewsrc_messagespo]
|
||||
[friendica.addon_viewsrc_messagespo]
|
||||
file_filter = viewsrc/lang/<lang>/messages.po
|
||||
source_file = viewsrc/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_webrtc_messagespo]
|
||||
[friendica.addon_webrtc_messagespo]
|
||||
file_filter = webrtc/lang/<lang>/messages.po
|
||||
source_file = webrtc/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_widgets_messagespo]
|
||||
[friendica.addon_widgets_messagespo]
|
||||
file_filter = widgets/lang/<lang>/messages.po
|
||||
source_file = widgets/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_windowsphonepush_messagespo]
|
||||
[friendica.addon_windowsphonepush_messagespo]
|
||||
file_filter = windowsphonepush/lang/<lang>/messages.po
|
||||
source_file = windowsphonepush/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_wppost_messagespo]
|
||||
[friendica.addon_wppost_messagespo]
|
||||
file_filter = wppost/lang/<lang>/messages.po
|
||||
source_file = wppost/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:Friendica:p:friendica:r:addon_xmpp_messagespo]
|
||||
[friendica.addon_xmpp_messagespo]
|
||||
file_filter = xmpp/lang/<lang>/messages.po
|
||||
source_file = xmpp/lang/C/messages.po
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
|
|
|
|||
|
|
@ -1,113 +0,0 @@
|
|||
matrix:
|
||||
include:
|
||||
- PHP_MAJOR_VERSION: 7.4
|
||||
PHP_VERSION: 7.4.33
|
||||
- PHP_MAJOR_VERSION: 8.0
|
||||
PHP_VERSION: 8.0.30
|
||||
- PHP_MAJOR_VERSION: 8.1
|
||||
PHP_VERSION: 8.1.23
|
||||
- PHP_MAJOR_VERSION: 8.2
|
||||
PHP_VERSION: 8.2.11
|
||||
|
||||
# This forces PHP Unit executions at the "opensocial" labeled location (because of much more power...)
|
||||
labels:
|
||||
location: opensocial
|
||||
|
||||
skip_clone: true
|
||||
|
||||
pipeline:
|
||||
clone_friendica_base:
|
||||
image: alpine/git
|
||||
commands:
|
||||
- git clone https://github.com/friendica/friendica.git .
|
||||
- git checkout $CI_COMMIT_BRANCH
|
||||
clone_friendica_addon:
|
||||
image: alpine/git
|
||||
commands:
|
||||
- git config --global user.email "no-reply@friendi.ca"
|
||||
- git config --global user.name "Friendica"
|
||||
- git clone $CI_REPO_LINK addon
|
||||
- cd addon/
|
||||
- git checkout $CI_COMMIT_BRANCH
|
||||
- git fetch origin $CI_COMMIT_REF
|
||||
- git merge $CI_COMMIT_SHA
|
||||
restore_cache:
|
||||
image: meltwater/drone-cache:dev
|
||||
settings:
|
||||
backend: "filesystem"
|
||||
restore: true
|
||||
cache_key: "{{ .Repo.Name }}_php${PHP_MAJOR_VERSION}_{{ arch }}_{{ os }}"
|
||||
archive_format: "gzip"
|
||||
mount:
|
||||
- '.composer'
|
||||
volumes:
|
||||
- /tmp/drone-cache:/tmp/cache
|
||||
composer_install:
|
||||
image: friendicaci/php${PHP_MAJOR_VERSION}:php${PHP_VERSION}
|
||||
commands:
|
||||
- export COMPOSER_HOME=.composer
|
||||
- ./bin/composer.phar validate
|
||||
- ./bin/composer.phar install --prefer-dist
|
||||
volumes:
|
||||
- /etc/hosts:/etc/hosts
|
||||
rebuild_cache:
|
||||
image: meltwater/drone-cache:dev
|
||||
settings:
|
||||
backend: "filesystem"
|
||||
rebuild: true
|
||||
cache_key: "{{ .Repo.Name }}_php${PHP_MAJOR_VERSION}_{{ arch }}_{{ os }}"
|
||||
archive_format: "gzip"
|
||||
mount:
|
||||
- '.composer'
|
||||
volumes:
|
||||
- /tmp/drone-cache:/tmp/cache
|
||||
test:
|
||||
image: friendicaci/php${PHP_MAJOR_VERSION}:php${PHP_VERSION}
|
||||
environment:
|
||||
MYSQL_HOST: "mariadb"
|
||||
MYSQL_PORT: "3306"
|
||||
MYSQL_DATABASE: "test"
|
||||
MYSQL_PASSWORD: "test"
|
||||
MYSQL_USER: "test"
|
||||
REDIS_HOST: "redis"
|
||||
MEMCACHED_HOST: "memcached"
|
||||
MEMCACHE_HOST: "memcached"
|
||||
commands:
|
||||
- cp config/local-sample.config.php config/local.config.php
|
||||
- if ! bin/wait-for-connection $MYSQL_HOST $MYSQL_PORT 300; then echo "[ERROR] Waited 300 seconds, no response" >&2; exit 1; fi
|
||||
- mysql -h$MYSQL_HOST -P$MYSQL_PORT -p$MYSQL_PASSWORD -u$MYSQL_USER $MYSQL_DATABASE < database.sql
|
||||
- if [ "${PHP_MAJOR_VERSION}" = "7.4" -a "${CI_REPO}" = "friendica/friendica-addons" ]; then
|
||||
phpenmod xdebug;
|
||||
export XDEBUG_MODE=coverage;
|
||||
phpunit --configuration tests/phpunit-addons.xml --coverage-clover clover.xml;
|
||||
else
|
||||
phpunit --configuration tests/phpunit-addons.xml;
|
||||
fi
|
||||
codecov:
|
||||
image: friendicaci/codecov
|
||||
when:
|
||||
matrix:
|
||||
PHP_MAJOR_VERSION: 7.4
|
||||
PHP_VERSION: 7.4.33
|
||||
repo:
|
||||
- friendica/friendica-addons
|
||||
commands:
|
||||
- codecov -R '.' -Z -f 'clover.xml'
|
||||
secrets:
|
||||
- source: codecov-token
|
||||
target: codecov_token
|
||||
|
||||
services:
|
||||
mariadb:
|
||||
image: mariadb:latest
|
||||
environment:
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: "true"
|
||||
MYSQL_DATABASE: "test"
|
||||
MYSQL_PASSWORD: "test"
|
||||
MYSQL_USER: "test"
|
||||
|
||||
memcached:
|
||||
image: memcached
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
|
|
@ -455,7 +455,7 @@ function advancedcontentfilter_prepare_item_row(array $item_row): array
|
|||
$item_row['tags'] = $tags['tags'];
|
||||
$item_row['hashtags'] = $tags['hashtags'];
|
||||
$item_row['mentions'] = $tags['mentions'];
|
||||
$item_row['attachments'] = DI::postMediaRepository()->splitAttachments($item_row['uri-id']);
|
||||
$item_row['attachments'] = Post\Media::splitAttachments($item_row['uri-id']);
|
||||
|
||||
return $item_row;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ msgstr ""
|
|||
"POT-Creation-Date: 2022-05-11 08:54-0400\n"
|
||||
"PO-Revision-Date: 2018-05-24 06:41+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2022\n"
|
||||
"Language-Team: German (https://app.transifex.com/Friendica/teams/12172/de/)\n"
|
||||
"Language-Team: German (https://www.transifex.com/Friendica/teams/12172/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -3,63 +3,60 @@
|
|||
# This file is distributed under the same license as the Friendica advancedcontentfilter addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# fabrixxm <fabrix.xm@gmail.com>, 2018
|
||||
# Sylke Vicious <silkevicious@gmail.com>, 2021
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-05-11 08:54-0400\n"
|
||||
"PO-Revision-Date: 2018-05-24 06:41+0000\n"
|
||||
"Last-Translator: Sylke Vicious <silkevicious@gmail.com>, 2021\n"
|
||||
"Language-Team: Italian (https://app.transifex.com/Friendica/teams/12172/it/)\n"
|
||||
"POT-Creation-Date: 2018-04-17 04:04+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>, 2018\n"
|
||||
"Language-Team: Italian (https://www.transifex.com/Friendica/teams/12172/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=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: advancedcontentfilter.php:154
|
||||
#: advancedcontentfilter.php:134
|
||||
#, php-format
|
||||
msgid "Filtered by rule: %s"
|
||||
msgstr "Filtrato dalla regola: %s"
|
||||
|
||||
#: advancedcontentfilter.php:170 advancedcontentfilter.php:225
|
||||
#: advancedcontentfilter.php:147 advancedcontentfilter.php:204
|
||||
msgid "Advanced Content Filter"
|
||||
msgstr "Filtro Avanzato Contenuti"
|
||||
|
||||
#: advancedcontentfilter.php:224
|
||||
#: advancedcontentfilter.php:203
|
||||
msgid "Back to Addon Settings"
|
||||
msgstr "Torna alle impostazioni del componente aggiuntivo"
|
||||
|
||||
#: advancedcontentfilter.php:226
|
||||
#: advancedcontentfilter.php:205
|
||||
msgid "Add a Rule"
|
||||
msgstr "Aggiungi una regola"
|
||||
|
||||
#: advancedcontentfilter.php:227
|
||||
#: advancedcontentfilter.php:206
|
||||
msgid "Help"
|
||||
msgstr "Aiuto"
|
||||
|
||||
#: advancedcontentfilter.php:228
|
||||
#: advancedcontentfilter.php:207
|
||||
msgid ""
|
||||
"Add and manage your personal content filter rules in this screen. Rules have"
|
||||
" a name and an arbitrary expression that will be matched against post data. "
|
||||
"For a complete reference of the available operations and variables, check "
|
||||
"the help page."
|
||||
"the <a href=\"advancedcontentfilter/help\">help page</a>."
|
||||
msgstr ""
|
||||
"Aggiungi e gestisci le tue regole personali di filtro contenuti in questa "
|
||||
"schermata. Le regole hanno un nome e un'espressione arbitraria che sarà "
|
||||
"confrontata con i dati del messaggio. Per un elenco completo delle "
|
||||
"operazioni e variabili disponibili, controlla la pagina di aiuto."
|
||||
"operazioni disponibili, controlla la <a "
|
||||
"href=\"advancedcontentfilter/help\">pagina di aiuto</a>."
|
||||
|
||||
#: advancedcontentfilter.php:229
|
||||
#: advancedcontentfilter.php:208
|
||||
msgid "Your rules"
|
||||
msgstr "Le tue regole"
|
||||
|
||||
#: advancedcontentfilter.php:230
|
||||
#: advancedcontentfilter.php:209
|
||||
msgid ""
|
||||
"You have no rules yet! Start adding one by clicking on the button above next"
|
||||
" to the title."
|
||||
|
|
@ -67,106 +64,110 @@ msgstr ""
|
|||
"Non hai ancora nessuna regola! Aggiungine una cliccando sul bottone qui "
|
||||
"sopra a fianco al titolo."
|
||||
|
||||
#: advancedcontentfilter.php:231
|
||||
#: advancedcontentfilter.php:210
|
||||
msgid "Disabled"
|
||||
msgstr "Disabilitato"
|
||||
|
||||
#: advancedcontentfilter.php:232
|
||||
#: advancedcontentfilter.php:211
|
||||
msgid "Enabled"
|
||||
msgstr "Abilitato"
|
||||
|
||||
#: advancedcontentfilter.php:233
|
||||
#: advancedcontentfilter.php:212
|
||||
msgid "Disable this rule"
|
||||
msgstr "Diabilita questa regola"
|
||||
|
||||
#: advancedcontentfilter.php:234
|
||||
#: advancedcontentfilter.php:213
|
||||
msgid "Enable this rule"
|
||||
msgstr "Abilita questa regola"
|
||||
|
||||
#: advancedcontentfilter.php:235
|
||||
#: advancedcontentfilter.php:214
|
||||
msgid "Edit this rule"
|
||||
msgstr "Modifica questa regola"
|
||||
|
||||
#: advancedcontentfilter.php:236
|
||||
#: advancedcontentfilter.php:215
|
||||
msgid "Edit the rule"
|
||||
msgstr "Modifica la regola"
|
||||
|
||||
#: advancedcontentfilter.php:237
|
||||
#: advancedcontentfilter.php:216
|
||||
msgid "Save this rule"
|
||||
msgstr "Salva questa regola"
|
||||
|
||||
#: advancedcontentfilter.php:238
|
||||
#: advancedcontentfilter.php:217
|
||||
msgid "Delete this rule"
|
||||
msgstr "Elimina questa regola"
|
||||
|
||||
#: advancedcontentfilter.php:239
|
||||
#: advancedcontentfilter.php:218
|
||||
msgid "Rule"
|
||||
msgstr "Regola"
|
||||
|
||||
#: advancedcontentfilter.php:240
|
||||
#: advancedcontentfilter.php:219
|
||||
msgid "Close"
|
||||
msgstr "Chiudi"
|
||||
|
||||
#: advancedcontentfilter.php:241
|
||||
#: advancedcontentfilter.php:220
|
||||
msgid "Add new rule"
|
||||
msgstr "Aggiungi nuova regola"
|
||||
|
||||
#: advancedcontentfilter.php:242
|
||||
#: advancedcontentfilter.php:221
|
||||
msgid "Rule Name"
|
||||
msgstr "Nome Regola"
|
||||
|
||||
#: advancedcontentfilter.php:243
|
||||
#: advancedcontentfilter.php:222
|
||||
msgid "Rule Expression"
|
||||
msgstr "Espressione Regola"
|
||||
|
||||
#: advancedcontentfilter.php:244
|
||||
#: advancedcontentfilter.php:223
|
||||
msgid ""
|
||||
"<p>Examples:</p><ul><li><pre>author_link == "
|
||||
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"
|
||||
msgstr ""
|
||||
"<p>Esempi:</p><ul><li><pre>author_link == "
|
||||
"'https://friendica.mrpetovan.com/profile/hypolite'</pre></li><li>tags</li></ul>"
|
||||
|
||||
#: advancedcontentfilter.php:224
|
||||
msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
|
||||
#: advancedcontentfilter.php:295
|
||||
msgid "This addon requires this node having at least one post"
|
||||
msgstr ""
|
||||
|
||||
#: advancedcontentfilter.php:325 advancedcontentfilter.php:336
|
||||
#: advancedcontentfilter.php:347 advancedcontentfilter.php:383
|
||||
#: advancedcontentfilter.php:414 advancedcontentfilter.php:437
|
||||
#: advancedcontentfilter.php:290 advancedcontentfilter.php:301
|
||||
#: advancedcontentfilter.php:312 advancedcontentfilter.php:346
|
||||
#: advancedcontentfilter.php:375 advancedcontentfilter.php:396
|
||||
msgid "You must be logged in to use this method"
|
||||
msgstr "Devi essere autenticato per usare questo metodo"
|
||||
|
||||
#: advancedcontentfilter.php:351 advancedcontentfilter.php:387
|
||||
#: advancedcontentfilter.php:418
|
||||
#: advancedcontentfilter.php:316 advancedcontentfilter.php:350
|
||||
#: advancedcontentfilter.php:379
|
||||
msgid "Invalid form security token, please refresh the page."
|
||||
msgstr "Token di sicurezza invalido, aggiorna la pagina."
|
||||
|
||||
#: advancedcontentfilter.php:363
|
||||
#: advancedcontentfilter.php:328
|
||||
msgid "The rule name and expression are required."
|
||||
msgstr "Il nome e l'espressione della regola sono richiesti."
|
||||
|
||||
#: advancedcontentfilter.php:377
|
||||
#: advancedcontentfilter.php:340
|
||||
msgid "Rule successfully added"
|
||||
msgstr "Regola aggiunta con successo"
|
||||
|
||||
#: advancedcontentfilter.php:391 advancedcontentfilter.php:422
|
||||
#: advancedcontentfilter.php:354 advancedcontentfilter.php:383
|
||||
msgid "Rule doesn't exist or doesn't belong to you."
|
||||
msgstr "La regola non esiste o non ti appartiene."
|
||||
|
||||
#: advancedcontentfilter.php:408
|
||||
#: advancedcontentfilter.php:369
|
||||
msgid "Rule successfully updated"
|
||||
msgstr "Regola aggiornata con successo"
|
||||
|
||||
#: advancedcontentfilter.php:431
|
||||
#: advancedcontentfilter.php:390
|
||||
msgid "Rule successfully deleted"
|
||||
msgstr "Regola eliminata con successo"
|
||||
|
||||
#: advancedcontentfilter.php:441
|
||||
#: advancedcontentfilter.php:400
|
||||
msgid "Missing argument: guid."
|
||||
msgstr "Argomento mancante: guid."
|
||||
|
||||
#: advancedcontentfilter.php:449
|
||||
#: advancedcontentfilter.php:406
|
||||
#, php-format
|
||||
msgid "Unknown post with guid: %s"
|
||||
msgstr "Messaggio con guid %s sconosciuto"
|
||||
|
||||
#: src/middlewares.php:49
|
||||
#: src/middlewares.php:28
|
||||
msgid "Method not found"
|
||||
msgstr "Metodo non trovato"
|
||||
|
|
|
|||
|
|
@ -3,14 +3,14 @@
|
|||
if(! function_exists("string_plural_select_it")) {
|
||||
function string_plural_select_it($n){
|
||||
$n = intval($n);
|
||||
if ($n == 1) { return 0; } else if ($n != 0 && $n % 1000000 == 0) { return 1; } else { return 2; }
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Filtered by rule: %s'] = 'Filtrato dalla regola: %s';
|
||||
$a->strings['Advanced Content Filter'] = 'Filtro Avanzato Contenuti';
|
||||
$a->strings['Back to Addon Settings'] = 'Torna alle impostazioni del componente aggiuntivo';
|
||||
$a->strings['Add a Rule'] = 'Aggiungi una regola';
|
||||
$a->strings['Help'] = 'Aiuto';
|
||||
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.'] = 'Aggiungi e gestisci le tue regole personali di filtro contenuti in questa schermata. Le regole hanno un nome e un\'espressione arbitraria che sarà confrontata con i dati del messaggio. Per un elenco completo delle operazioni e variabili disponibili, controlla la pagina di aiuto.';
|
||||
$a->strings['Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.'] = 'Aggiungi e gestisci le tue regole personali di filtro contenuti in questa schermata. Le regole hanno un nome e un\'espressione arbitraria che sarà confrontata con i dati del messaggio. Per un elenco completo delle operazioni disponibili, controlla la <a href="advancedcontentfilter/help">pagina di aiuto</a>.';
|
||||
$a->strings['Your rules'] = 'Le tue regole';
|
||||
$a->strings['You have no rules yet! Start adding one by clicking on the button above next to the title.'] = 'Non hai ancora nessuna regola! Aggiungine una cliccando sul bottone qui sopra a fianco al titolo.';
|
||||
$a->strings['Disabled'] = 'Disabilitato';
|
||||
|
|
@ -26,6 +26,7 @@ $a->strings['Close'] = 'Chiudi';
|
|||
$a->strings['Add new rule'] = 'Aggiungi nuova regola';
|
||||
$a->strings['Rule Name'] = 'Nome Regola';
|
||||
$a->strings['Rule Expression'] = 'Espressione Regola';
|
||||
$a->strings['<p>Examples:</p><ul><li><pre>author_link == \'https://friendica.mrpetovan.com/profile/hypolite\'</pre></li><li>tags</li></ul>'] = '<p>Esempi:</p><ul><li><pre>author_link == \'https://friendica.mrpetovan.com/profile/hypolite\'</pre></li><li>tags</li></ul>';
|
||||
$a->strings['Cancel'] = 'Annulla';
|
||||
$a->strings['You must be logged in to use this method'] = 'Devi essere autenticato per usare questo metodo';
|
||||
$a->strings['Invalid form security token, please refresh the page.'] = 'Token di sicurezza invalido, aggiorna la pagina.';
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
Audon Addon
|
||||
=============
|
||||
|
||||
This is a quick and dirty addon to add a [Audon][1] website as an app. This Addon based on webrtc. Audon is a service of realtime audio chat
|
||||
|
||||
[1]: https://codeberg.org/nmkj/audon
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* Name: Audon Application
|
||||
* Description: add a Audon instance. Based on webRTC Addon
|
||||
* Version: 0.1
|
||||
* Author: Stephen Mahood <https://friends.mayfirst.org/profile/marxistvegan>
|
||||
* Author: Tobias Diekershoff <https://f.diekershoff.de/profile/tobias>
|
||||
* Author: Matthias Ebers <https://loma.ml/profile/feb>
|
||||
*/
|
||||
|
||||
use Friendica\Core\Hook;
|
||||
use Friendica\Core\Renderer;
|
||||
use Friendica\DI;
|
||||
|
||||
function audon_install()
|
||||
{
|
||||
Hook::register('app_menu', __FILE__, 'audon_app_menu');
|
||||
}
|
||||
|
||||
function audon_app_menu(array &$b)
|
||||
{
|
||||
$b['app_menu'][] = '<div class="app-title"><a href="audon">' . DI::l10n()->t('Audon Audiochat') . '</a></div>';
|
||||
}
|
||||
|
||||
function audon_addon_admin(string &$o)
|
||||
{
|
||||
$t = Renderer::getMarkupTemplate('admin.tpl', 'addon/audon/');
|
||||
$o = Renderer::replaceMacros($t, [
|
||||
'$submit' => DI::l10n()->t('Save Settings'),
|
||||
'$audonurl' => [
|
||||
'audonurl',
|
||||
DI::l10n()->t('Audon Base URL'),
|
||||
DI::config()->get('audon','audonurl'),
|
||||
DI::l10n()->t('Page your users will create an Audon audio chat room on. For example you could use https://audon.space.'),
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
function audon_addon_admin_post()
|
||||
{
|
||||
DI::config()->set('audon', 'audonurl', trim($_POST['audonurl'] ?? ''));
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a statement rather than an actual function definition. The simple
|
||||
* existence of this method is checked to figure out if the addon offers a
|
||||
* module.
|
||||
*/
|
||||
function audon_module() {}
|
||||
|
||||
function audon_content(): string
|
||||
{
|
||||
$o = '';
|
||||
|
||||
/* landingpage to create chatrooms */
|
||||
$audonurl = DI::config()->get('audon', 'audonurl');
|
||||
|
||||
|
||||
/* embedd the landing page in an iframe */
|
||||
$o .= '<h2>' . DI::l10n()->t('Audio Chat') . '</h2>';
|
||||
$o .= '<p>' . DI::l10n()->t('Audon is an audio conferencing tool. Connect your account to Audon and create a room. Share the generated link to talk to other participants.') . '</p>';
|
||||
if ($audonurl == '') {
|
||||
$o .= '<p>' . DI::l10n()->t('Please contact your Friendica administrator to remind them to configure the Audon addon.') . '</p>';
|
||||
} else {
|
||||
$o .= '<iframe src="' . $audonurl . '" width="740px" height="600px"></iframe>';
|
||||
}
|
||||
|
||||
return $o;
|
||||
}
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
# ADDON audon
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica audon addon package.
|
||||
#
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-18 18:23+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"
|
||||
|
||||
#: audon.php:22
|
||||
msgid "Audon Audiochat"
|
||||
msgstr ""
|
||||
|
||||
#: audon.php:29
|
||||
msgid "Save Settings"
|
||||
msgstr ""
|
||||
|
||||
#: audon.php:32
|
||||
msgid "Audon Base URL"
|
||||
msgstr ""
|
||||
|
||||
#: audon.php:34
|
||||
msgid ""
|
||||
"Page your users will create an Audon audio chat room on. For example you "
|
||||
"could use https://audon.space."
|
||||
msgstr ""
|
||||
|
||||
#: audon.php:60
|
||||
msgid "Audio Chat"
|
||||
msgstr ""
|
||||
|
||||
#: audon.php:61
|
||||
msgid ""
|
||||
"Audon is an audio conferencing tool. Connect your account to Audon and "
|
||||
"create a room. Share the generated link to talk to other participants."
|
||||
msgstr ""
|
||||
|
||||
#: audon.php:63
|
||||
msgid ""
|
||||
"Please contact your Friendica administrator to remind them to configure the "
|
||||
"Audon addon."
|
||||
msgstr ""
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
{{include file="field_input.tpl" field=$audonurl}}
|
||||
<button type="submit">{{$submit}}</button>
|
||||
|
|
@ -69,7 +69,7 @@ function birdavatar_addon_settings_post(&$s)
|
|||
}
|
||||
|
||||
if (!empty($_POST['birdavatar-usebird'])) {
|
||||
$url = DI::baseUrl() . '/birdavatar/' . DI::userSession()->getLocalUserId() . '?ts=' . time();
|
||||
$url = DI::baseUrl()->get() . '/birdavatar/' . DI::userSession()->getLocalUserId() . '?ts=' . time();
|
||||
|
||||
$self = DBA::selectFirst('contact', ['id'], ['uid' => DI::userSession()->getLocalUserId(), 'self' => true]);
|
||||
if (!DBA::isResult($self)) {
|
||||
|
|
@ -120,9 +120,9 @@ function birdavatar_lookup(array &$b)
|
|||
{
|
||||
$user = DBA::selectFirst('user', ['uid'], ['email' => $b['email']]);
|
||||
if (DBA::isResult($user)) {
|
||||
$url = DI::baseUrl() . '/birdavatar/' . $user['uid'];
|
||||
$url = DI::baseUrl()->get() . '/birdavatar/' . $user['uid'];
|
||||
} else {
|
||||
$url = DI::baseUrl() . '/birdavatar/' . md5(trim(strtolower($b['email'])));
|
||||
$url = DI::baseUrl()->get() . '/birdavatar/' . md5(trim(strtolower($b['email'])));
|
||||
}
|
||||
|
||||
switch ($b['size']) {
|
||||
|
|
|
|||
|
|
@ -12,9 +12,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-22 11:19+0000\n"
|
||||
"Last-Translator: Till Mohr <tmtrfx@till-mohr.de>, 2021\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2021-05-23 19:26+0000\n"
|
||||
"Last-Translator: Till Mohr <tmtrfx@till-mohr.de>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@
|
|||
*
|
||||
*/
|
||||
|
||||
use Friendica\App;
|
||||
use Friendica\Core\Hook;
|
||||
use Friendica\Core\System;
|
||||
use Friendica\DI;
|
||||
use Jaybizzle\CrawlerDetect\CrawlerDetect;
|
||||
use Friendica\Core\Logger;
|
||||
|
|
@ -50,15 +52,12 @@ function blockbot_init_1()
|
|||
$logdata = ['agent' => $_SERVER['HTTP_USER_AGENT'], 'uri' => $_SERVER['REQUEST_URI']];
|
||||
|
||||
// List of "good" crawlers
|
||||
$good_agents = [
|
||||
'fediverse.space crawler', 'fediverse.network crawler', 'Active_Pods_CheckBot_3.0',
|
||||
$good_agents = ['fediverse.space crawler', 'fediverse.network crawler', 'Active_Pods_CheckBot_3.0',
|
||||
'Social-Relay/', 'Test Certificate Info', 'Uptimebot/', 'GNUSocialBot', 'UptimeRobot/',
|
||||
'PTST/', 'Zabbix', 'Poduptime/'
|
||||
];
|
||||
'PTST/', 'Zabbix', 'Poduptime/'];
|
||||
|
||||
// List of known crawlers.
|
||||
$agents = [
|
||||
'SemrushBot', 's~feedly-nikon3', 'Qwantify/Bleriot/', 'ltx71', 'Sogou web spider/',
|
||||
$agents = ['SemrushBot', 's~feedly-nikon3', 'Qwantify/Bleriot/', 'ltx71', 'Sogou web spider/',
|
||||
'Diffbot/', 'Twitterbot/', 'YisouSpider', 'evc-batch/', 'LivelapBot/', 'TrendsmapResolver/',
|
||||
'PaperLiBot/', 'Nuzzel', 'um-LN/', 'Google Favicon', 'Datanyze', 'BLEXBot/', '360Spider',
|
||||
'adscanner/', 'HeadlessChrome', 'wpif', 'startmebot/', 'Googlebot/', 'Applebot/',
|
||||
|
|
@ -80,8 +79,7 @@ function blockbot_init_1()
|
|||
'Google-Apps-Script; beanserver;', 'woorankreview/', 'Seekport Crawler;', 'AHC/',
|
||||
'SkypeUriPreview Preview/', 'Semanticbot/', 'Embed PHP library', 'XoviOnpageCrawler;',
|
||||
'GetHPinfo.com-Bot/', 'BoardReader Favicon Fetcher', 'Google-Adwords-Instant', 'newspaper/',
|
||||
'YurichevBot/', 'Crawling at Home Project', 'InfoTigerBot/'
|
||||
];
|
||||
'YurichevBot/', 'Crawling at Home Project', 'InfoTigerBot/'];
|
||||
|
||||
if (!DI::config()->get('blockbot', 'good_crawlers')) {
|
||||
$agents = array_merge($agents, $good_agents);
|
||||
|
|
@ -116,8 +114,7 @@ function blockbot_init_1()
|
|||
}
|
||||
|
||||
// List of false positives' strings of known "good" agents.
|
||||
$agents = [
|
||||
'curl', 'zgrab', 'Go-http-client', 'curb', 'github.com', 'reqwest', 'Feedly/',
|
||||
$agents = ['curl', 'zgrab', 'Go-http-client', 'curb', 'github.com', 'reqwest', 'Feedly/',
|
||||
'Python-urllib/', 'Liferea/', 'aiohttp/', 'WordPress.com Reader', 'hackney/',
|
||||
'Faraday v', 'okhttp', 'UniversalFeedParser', 'PixelFedBot', 'python-requests',
|
||||
'WordPress/', 'http.rb/', 'Apache-HttpClient/', 'WordPress.com;', 'Pleroma',
|
||||
|
|
@ -125,8 +122,7 @@ function blockbot_init_1()
|
|||
'lua-resty-http/', 'Tiny Tiny RSS/', 'Wget/', 'PostmanRuntime/',
|
||||
'W3C_Validator/', 'NetNewsWire', 'FeedValidator/', 'theoldreader.com', 'axios/',
|
||||
'Paw/', 'PeerTube/', 'fedi.inex.dev', 'FediDB/', 'index.community crawler',
|
||||
'Slackbot-LinkExpanding'
|
||||
];
|
||||
'Slackbot-LinkExpanding'];
|
||||
|
||||
if (DI::config()->get('blockbot', 'good_crawlers')) {
|
||||
$agents = array_merge($agents, $good_agents);
|
||||
|
|
@ -134,11 +130,11 @@ function blockbot_init_1()
|
|||
|
||||
foreach ($agents as $agent) {
|
||||
if (stristr($_SERVER['HTTP_USER_AGENT'], $agent)) {
|
||||
logger::info('False positive', $logdata);
|
||||
logger::notice('False positive', $logdata);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
logger::notice('Blocked bot', $logdata);
|
||||
logger::info('Blocked bot', $logdata);
|
||||
throw new ForbiddenException('Bots are not allowed');
|
||||
}
|
||||
|
|
|
|||
230
blockem/blockem.php
Normal file
230
blockem/blockem.php
Normal file
|
|
@ -0,0 +1,230 @@
|
|||
<?php
|
||||
/**
|
||||
* Name: blockem
|
||||
* Description: Allows users to hide content by collapsing posts and replies.
|
||||
* Version: 1.0
|
||||
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
|
||||
* Author: Roland Haeder <https://f.haeder.net/roland>
|
||||
* Status: unsupported
|
||||
*/
|
||||
|
||||
use Friendica\App;
|
||||
use Friendica\Core\Hook;
|
||||
use Friendica\Core\Renderer;
|
||||
use Friendica\DI;
|
||||
use Friendica\Util\Strings;
|
||||
|
||||
global $blockem_words;
|
||||
|
||||
function blockem_install()
|
||||
{
|
||||
Hook::register('prepare_body_content_filter', 'addon/blockem/blockem.php', 'blockem_prepare_body_content_filter');
|
||||
Hook::register('display_item' , 'addon/blockem/blockem.php', 'blockem_display_item');
|
||||
Hook::register('addon_settings' , 'addon/blockem/blockem.php', 'blockem_addon_settings');
|
||||
Hook::register('addon_settings_post' , 'addon/blockem/blockem.php', 'blockem_addon_settings_post');
|
||||
Hook::register('conversation_start' , 'addon/blockem/blockem.php', 'blockem_conversation_start');
|
||||
Hook::register('item_photo_menu' , 'addon/blockem/blockem.php', 'blockem_item_photo_menu');
|
||||
Hook::register('enotify_store' , 'addon/blockem/blockem.php', 'blockem_enotify_store');
|
||||
}
|
||||
|
||||
function blockem_addon_settings(array &$data)
|
||||
{
|
||||
if (!DI::userSession()->getLocalUserId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$words = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'blockem', 'words', '');
|
||||
|
||||
$t = Renderer::getMarkupTemplate('settings.tpl', 'addon/blockem/');
|
||||
$html = Renderer::replaceMacros($t, [
|
||||
'$info' => DI::l10n()->t("Hides user's content by collapsing posts. Also replaces their avatar with generic image."),
|
||||
'$words' => ['blockem-words', DI::l10n()->t('Comma separated profile URLS:'), $words],
|
||||
]);
|
||||
|
||||
$data = [
|
||||
'addon' => 'blockem',
|
||||
'title' => DI::l10n()->t('Blockem'),
|
||||
'html' => $html,
|
||||
];
|
||||
}
|
||||
|
||||
function blockem_addon_settings_post(array &$b)
|
||||
{
|
||||
if (!DI::userSession()->getLocalUserId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!empty($_POST['blockem-submit'])) {
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'blockem', 'words', trim($_POST['blockem-words']));
|
||||
}
|
||||
}
|
||||
|
||||
function blockem_enotify_store(array &$b)
|
||||
{
|
||||
$words = DI::pConfig()->get($b['uid'], 'blockem', 'words');
|
||||
|
||||
if ($words) {
|
||||
$arr = explode(',', $words);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
$found = false;
|
||||
|
||||
if (count($arr)) {
|
||||
foreach ($arr as $word) {
|
||||
if (!strlen(trim($word))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Strings::compareLink($b['url'], $word)) {
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($found) {
|
||||
// empty out the fields
|
||||
$b = [];
|
||||
}
|
||||
}
|
||||
|
||||
function blockem_prepare_body_content_filter(array &$hook_data)
|
||||
{
|
||||
if (!DI::userSession()->getLocalUserId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$profiles_string = null;
|
||||
|
||||
if (DI::userSession()->getLocalUserId()) {
|
||||
$profiles_string = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'blockem', 'words');
|
||||
}
|
||||
|
||||
if ($profiles_string) {
|
||||
$profiles_array = explode(',', $profiles_string);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
$found = false;
|
||||
|
||||
foreach ($profiles_array as $word) {
|
||||
if (Strings::compareLink($hook_data['item']['author-link'], trim($word))) {
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($found) {
|
||||
$hook_data['filter_reasons'][] = DI::l10n()->t('Filtered user: %s', $hook_data['item']['author-name']);
|
||||
}
|
||||
}
|
||||
|
||||
function blockem_display_item(array &$b = null)
|
||||
{
|
||||
if (!empty($b['output']['body']) && strstr($b['output']['body'], 'id="blockem-wrap-')) {
|
||||
$b['output']['thumb'] = DI::baseUrl()->get() . "/images/person-80.jpg";
|
||||
}
|
||||
}
|
||||
|
||||
function blockem_conversation_start(array &$b)
|
||||
{
|
||||
global $blockem_words;
|
||||
|
||||
if (!DI::userSession()->getLocalUserId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$words = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'blockem', 'words');
|
||||
|
||||
if ($words) {
|
||||
$blockem_words = explode(',', $words);
|
||||
}
|
||||
|
||||
DI::page()['htmlhead'] .= <<< EOT
|
||||
|
||||
<script>
|
||||
function blockemBlock(author) {
|
||||
$.get('blockem?block=' +author, function(data) {
|
||||
location.reload(true);
|
||||
});
|
||||
}
|
||||
function blockemUnblock(author) {
|
||||
$.get('blockem?unblock=' +author, function(data) {
|
||||
location.reload(true);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
EOT;
|
||||
}
|
||||
|
||||
function blockem_item_photo_menu(array &$b)
|
||||
{
|
||||
global $blockem_words;
|
||||
|
||||
if (!DI::userSession()->getLocalUserId() || $b['item']['self']) {
|
||||
return;
|
||||
}
|
||||
|
||||
$blocked = false;
|
||||
$author = $b['item']['author-link'];
|
||||
|
||||
if (!empty($blockem_words)) {
|
||||
foreach($blockem_words as $bloke) {
|
||||
if (Strings::compareLink($bloke,$author)) {
|
||||
$blocked = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($blocked) {
|
||||
$b['menu'][DI::l10n()->t('Unblock Author')] = 'javascript:blockemUnblock(\'' . $author . '\');';
|
||||
} else {
|
||||
$b['menu'][DI::l10n()->t('Block Author')] = 'javascript:blockemBlock(\'' . $author . '\');';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a statement rather than an actual function definition. The simple
|
||||
* existence of this method is checked to figure out if the addon offers a
|
||||
* module.
|
||||
*/
|
||||
function blockem_module() {}
|
||||
|
||||
function blockem_init()
|
||||
{
|
||||
if (!DI::userSession()->getLocalUserId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$words = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'blockem', 'words');
|
||||
|
||||
if (array_key_exists('block', $_GET) && $_GET['block']) {
|
||||
if (strlen($words)) {
|
||||
$words .= ',';
|
||||
}
|
||||
|
||||
$words .= trim($_GET['block']);
|
||||
}
|
||||
|
||||
if (array_key_exists('unblock', $_GET) && $_GET['unblock']) {
|
||||
$arr = explode(',',$words);
|
||||
$newarr = [];
|
||||
|
||||
if (count($arr)) {
|
||||
foreach ($arr as $x) {
|
||||
if (!Strings::compareLink(trim($x), trim($_GET['unblock']))) {
|
||||
$newarr[] = $x;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$words = implode(',', $newarr);
|
||||
}
|
||||
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'blockem', 'words', $words);
|
||||
exit();
|
||||
}
|
||||
45
blockem/lang/C/messages.po
Normal file
45
blockem/lang/C/messages.po
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:13-0500\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"
|
||||
|
||||
#: blockem.php:39
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr ""
|
||||
|
||||
#: blockem.php:40
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr ""
|
||||
|
||||
#: blockem.php:45
|
||||
msgid "Blockem"
|
||||
msgstr ""
|
||||
|
||||
#: blockem.php:120
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr ""
|
||||
|
||||
#: blockem.php:183
|
||||
msgid "Unblock Author"
|
||||
msgstr ""
|
||||
|
||||
#: blockem.php:185
|
||||
msgid "Block Author"
|
||||
msgstr ""
|
||||
52
blockem/lang/ar/messages.po
Normal file
52
blockem/lang/ar/messages.po
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# abidin toumi <abidin24@tutanota.com>, 2021
|
||||
# Farida Khalaf <faridakhalaf@hotmail.com>, 2021
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2021-10-29 08:15+0000\n"
|
||||
"Last-Translator: abidin toumi <abidin24@tutanota.com>\n"
|
||||
"Language-Team: Arabic (http://www.transifex.com/Friendica/friendica/language/ar/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ar\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
|
||||
|
||||
#: blockem.php:42 blockem.php:46
|
||||
msgid "Blockem"
|
||||
msgstr "احجبه<br>"
|
||||
|
||||
#: blockem.php:50
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "إخفاء محتوى المستخدم عن طريق تصغير المشاركات. و استبدال الصورة الرمزية الخاصة بهم بصورة عامة."
|
||||
|
||||
#: blockem.php:51
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "عناوين الملفات الشخصية مفصولة بفواصل:"
|
||||
|
||||
#: blockem.php:55
|
||||
msgid "Save Settings"
|
||||
msgstr "احفظ الإعدادات"
|
||||
|
||||
#: blockem.php:131
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "ترشيح المستخدم :1%s"
|
||||
|
||||
#: blockem.php:190
|
||||
msgid "Unblock Author"
|
||||
msgstr "ألغ الحجب عن المدون"
|
||||
|
||||
#: blockem.php:192
|
||||
msgid "Block Author"
|
||||
msgstr "احجب المدون"
|
||||
14
blockem/lang/ar/strings.php
Normal file
14
blockem/lang/ar/strings.php
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_ar")) {
|
||||
function string_plural_select_ar($n){
|
||||
$n = intval($n);
|
||||
if ($n==0) { return 0; } else if ($n==1) { return 1; } else if ($n==2) { return 2; } else if ($n%100>=3 && $n%100<=10) { return 3; } else if ($n%100>=11 && $n%100<=99) { return 4; } else { return 5; }
|
||||
}}
|
||||
$a->strings['Blockem'] = 'احجبه<br>';
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'إخفاء محتوى المستخدم عن طريق تصغير المشاركات. و استبدال الصورة الرمزية الخاصة بهم بصورة عامة.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'عناوين الملفات الشخصية مفصولة بفواصل:';
|
||||
$a->strings['Save Settings'] = 'احفظ الإعدادات';
|
||||
$a->strings['Filtered user: %s'] = 'ترشيح المستخدم :1%s';
|
||||
$a->strings['Unblock Author'] = 'ألغ الحجب عن المدون';
|
||||
$a->strings['Block Author'] = 'احجب المدون';
|
||||
59
blockem/lang/ca/messages.po
Normal file
59
blockem/lang/ca/messages.po
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Joan Bar <friendica@tutanota.com>, 2019
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
|
||||
"PO-Revision-Date: 2019-10-14 11:50+0000\n"
|
||||
"Last-Translator: Joan Bar <friendica@tutanota.com>\n"
|
||||
"Language-Team: Catalan (http://www.transifex.com/Friendica/friendica/language/ca/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ca\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: blockem.php:54 blockem.php:58
|
||||
msgid "Blockem"
|
||||
msgstr "Blockem"
|
||||
|
||||
#: blockem.php:62
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Amaga el contingut de l'usuari mitjançant la publicació col·lapsada. També substitueix el seu avatar per una imatge genèrica"
|
||||
|
||||
#: blockem.php:63
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "URL de perfil separats per comes:"
|
||||
|
||||
#: blockem.php:67
|
||||
msgid "Save Settings"
|
||||
msgstr "Desa la configuració"
|
||||
|
||||
#: blockem.php:81
|
||||
msgid "BLOCKEM Settings saved."
|
||||
msgstr "S'ha desat la configuració de BLOCKEM."
|
||||
|
||||
#: blockem.php:143
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Usuari filtrat:%s"
|
||||
|
||||
#: blockem.php:202
|
||||
msgid "Unblock Author"
|
||||
msgstr "Desbloca l'autor"
|
||||
|
||||
#: blockem.php:204
|
||||
msgid "Block Author"
|
||||
msgstr "Autor de bloc"
|
||||
|
||||
#: blockem.php:244
|
||||
msgid "blockem settings updated"
|
||||
msgstr "S'ha actualitzat la configuració de blockem"
|
||||
16
blockem/lang/ca/strings.php
Normal file
16
blockem/lang/ca/strings.php
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_ca")) {
|
||||
function string_plural_select_ca($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Blockem'] = 'Blockem';
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Amaga el contingut de l\'usuari mitjançant la publicació col·lapsada. També substitueix el seu avatar per una imatge genèrica';
|
||||
$a->strings['Comma separated profile URLS:'] = 'URL de perfil separats per comes:';
|
||||
$a->strings['Save Settings'] = 'Desa la configuració';
|
||||
$a->strings['BLOCKEM Settings saved.'] = 'S\'ha desat la configuració de BLOCKEM.';
|
||||
$a->strings['Filtered user: %s'] = 'Usuari filtrat:%s';
|
||||
$a->strings['Unblock Author'] = 'Desbloca l\'autor';
|
||||
$a->strings['Block Author'] = 'Autor de bloc';
|
||||
$a->strings['blockem settings updated'] = 'S\'ha actualitzat la configuració de blockem';
|
||||
60
blockem/lang/cs/messages.po
Normal file
60
blockem/lang/cs/messages.po
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Aditoo, 2018
|
||||
# michal_s <msupler@gmail.com>, 2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
|
||||
"PO-Revision-Date: 2018-08-18 12:25+0000\n"
|
||||
"Last-Translator: Aditoo\n"
|
||||
"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||
|
||||
#: blockem.php:54 blockem.php:58
|
||||
msgid "Blockem"
|
||||
msgstr "Blockem"
|
||||
|
||||
#: blockem.php:62
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Skrývá uživatelský obsah zabalením příspěvků. Navíc nahrazuje avatar generickým obrázkem."
|
||||
|
||||
#: blockem.php:63
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "URL adresy profilů, oddělené čárkami:"
|
||||
|
||||
#: blockem.php:67
|
||||
msgid "Save Settings"
|
||||
msgstr "Uložit nastavení"
|
||||
|
||||
#: blockem.php:81
|
||||
msgid "BLOCKEM Settings saved."
|
||||
msgstr "Nastavení BLOCKEM uložena."
|
||||
|
||||
#: blockem.php:143
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Filtrovaný uživatel: %s"
|
||||
|
||||
#: blockem.php:202
|
||||
msgid "Unblock Author"
|
||||
msgstr "Odblokovat autora"
|
||||
|
||||
#: blockem.php:204
|
||||
msgid "Block Author"
|
||||
msgstr "Zablokovat autora"
|
||||
|
||||
#: blockem.php:244
|
||||
msgid "blockem settings updated"
|
||||
msgstr "nastavení blockem aktualizována"
|
||||
16
blockem/lang/cs/strings.php
Normal file
16
blockem/lang/cs/strings.php
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_cs")) {
|
||||
function string_plural_select_cs($n){
|
||||
$n = intval($n);
|
||||
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
|
||||
}}
|
||||
$a->strings['Blockem'] = 'Blockem';
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Skrývá uživatelský obsah zabalením příspěvků. Navíc nahrazuje avatar generickým obrázkem.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'URL adresy profilů, oddělené čárkami:';
|
||||
$a->strings['Save Settings'] = 'Uložit nastavení';
|
||||
$a->strings['BLOCKEM Settings saved.'] = 'Nastavení BLOCKEM uložena.';
|
||||
$a->strings['Filtered user: %s'] = 'Filtrovaný uživatel: %s';
|
||||
$a->strings['Unblock Author'] = 'Odblokovat autora';
|
||||
$a->strings['Block Author'] = 'Zablokovat autora';
|
||||
$a->strings['blockem settings updated'] = 'nastavení blockem aktualizována';
|
||||
47
blockem/lang/da-dk/messages.po
Normal file
47
blockem/lang/da-dk/messages.po
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Anton <dev@atjn.dk>, 2022
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
|
||||
"PO-Revision-Date: 2014-06-22 11:20+0000\n"
|
||||
"Last-Translator: Anton <dev@atjn.dk>, 2022\n"
|
||||
"Language-Team: Danish (Denmark) (http://www.transifex.com/Friendica/friendica/language/da_DK/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: da_DK\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: blockem.php:39
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Skjul brugers indhold ved at kollapse deres opslag. Erstatter også deres avatar med et generisk billede."
|
||||
|
||||
#: blockem.php:40
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "Kommasepareret liste over profil-URL's:"
|
||||
|
||||
#: blockem.php:45
|
||||
msgid "Blockem"
|
||||
msgstr "Blokdem"
|
||||
|
||||
#: blockem.php:120
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Filtreret bruger: %s"
|
||||
|
||||
#: blockem.php:183
|
||||
msgid "Unblock Author"
|
||||
msgstr "Fjern blokering af forfatter"
|
||||
|
||||
#: blockem.php:185
|
||||
msgid "Block Author"
|
||||
msgstr "Blokér forfatter"
|
||||
13
blockem/lang/da-dk/strings.php
Normal file
13
blockem/lang/da-dk/strings.php
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_da_dk")) {
|
||||
function string_plural_select_da_dk($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Skjul brugers indhold ved at kollapse deres opslag. Erstatter også deres avatar med et generisk billede.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'Kommasepareret liste over profil-URL\'s:';
|
||||
$a->strings['Blockem'] = 'Blokdem';
|
||||
$a->strings['Filtered user: %s'] = 'Filtreret bruger: %s';
|
||||
$a->strings['Unblock Author'] = 'Fjern blokering af forfatter';
|
||||
$a->strings['Block Author'] = 'Blokér forfatter';
|
||||
50
blockem/lang/de/messages.po
Normal file
50
blockem/lang/de/messages.po
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Andreas H., 2018
|
||||
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2014
|
||||
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2018
|
||||
# Ulf Rompe <transifex.com@rompe.org>, 2019
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
|
||||
"PO-Revision-Date: 2021-12-22 15:27+0000\n"
|
||||
"Last-Translator: Transifex Bot <>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/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"
|
||||
|
||||
#: blockem.php:39
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Verbirgt Inhalte von Benutzern durch Zusammenklappen der Beiträge. Des Weiteren wird das Profilbild durch einen generischen Avatar ersetzt."
|
||||
|
||||
#: blockem.php:40
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "Komma-separierte Liste von Profil-URLs"
|
||||
|
||||
#: blockem.php:45
|
||||
msgid "Blockem"
|
||||
msgstr "Blockem"
|
||||
|
||||
#: blockem.php:120
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Gefilterte Person: %s"
|
||||
|
||||
#: blockem.php:183
|
||||
msgid "Unblock Author"
|
||||
msgstr "Autor freischalten"
|
||||
|
||||
#: blockem.php:185
|
||||
msgid "Block Author"
|
||||
msgstr "Autor blockieren"
|
||||
13
blockem/lang/de/strings.php
Normal file
13
blockem/lang/de/strings.php
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_de")) {
|
||||
function string_plural_select_de($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Verbirgt Inhalte von Benutzern durch Zusammenklappen der Beiträge. Des Weiteren wird das Profilbild durch einen generischen Avatar ersetzt.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'Komma-separierte Liste von Profil-URLs';
|
||||
$a->strings['Blockem'] = 'Blockem';
|
||||
$a->strings['Filtered user: %s'] = 'Gefilterte Person: %s';
|
||||
$a->strings['Unblock Author'] = 'Autor freischalten';
|
||||
$a->strings['Block Author'] = 'Autor blockieren';
|
||||
59
blockem/lang/en-gb/messages.po
Normal file
59
blockem/lang/en-gb/messages.po
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Andy H3 <andy@hubup.pro>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-02-09 13:00+0100\n"
|
||||
"PO-Revision-Date: 2018-03-15 14:10+0000\n"
|
||||
"Last-Translator: Andy H3 <andy@hubup.pro>\n"
|
||||
"Language-Team: English (United Kingdom) (http://www.transifex.com/Friendica/friendica/language/en_GB/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: en_GB\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: blockem.php:51 blockem.php:55
|
||||
msgid "\"Blockem\""
|
||||
msgstr "\"Blockem\""
|
||||
|
||||
#: blockem.php:59
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Hides user's content by collapsing posts. Also replaces their avatar with generic image."
|
||||
|
||||
#: blockem.php:60
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "Comma separated profile URLs:"
|
||||
|
||||
#: blockem.php:64
|
||||
msgid "Save Settings"
|
||||
msgstr "Save settings"
|
||||
|
||||
#: blockem.php:77
|
||||
msgid "BLOCKEM Settings saved."
|
||||
msgstr "Blockem settings saved."
|
||||
|
||||
#: blockem.php:140
|
||||
#, php-format
|
||||
msgid "Hidden content by %s - Click to open/close"
|
||||
msgstr "Hidden content by %s - Reveal/hide"
|
||||
|
||||
#: blockem.php:193
|
||||
msgid "Unblock Author"
|
||||
msgstr "Unblock author"
|
||||
|
||||
#: blockem.php:195
|
||||
msgid "Block Author"
|
||||
msgstr "Block author"
|
||||
|
||||
#: blockem.php:227
|
||||
msgid "blockem settings updated"
|
||||
msgstr "Blockem settings updated"
|
||||
16
blockem/lang/en-gb/strings.php
Normal file
16
blockem/lang/en-gb/strings.php
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_en_gb")) {
|
||||
function string_plural_select_en_gb($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['"Blockem"'] = '"Blockem"';
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'Comma separated profile URLs:';
|
||||
$a->strings['Save Settings'] = 'Save settings';
|
||||
$a->strings['BLOCKEM Settings saved.'] = 'Blockem settings saved.';
|
||||
$a->strings['Hidden content by %s - Click to open/close'] = 'Hidden content by %s - Reveal/hide';
|
||||
$a->strings['Unblock Author'] = 'Unblock author';
|
||||
$a->strings['Block Author'] = 'Block author';
|
||||
$a->strings['blockem settings updated'] = 'Blockem settings updated';
|
||||
61
blockem/lang/en-us/messages.po
Normal file
61
blockem/lang/en-us/messages.po
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Adam Clark <adam@isurf.ca>, 2018
|
||||
# Andy H3 <andy@hubup.pro>, 2018
|
||||
# R C <miqrogroove@gmail.com>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-04-01 11:11-0400\n"
|
||||
"PO-Revision-Date: 2018-06-13 02:40+0000\n"
|
||||
"Last-Translator: R C <miqrogroove@gmail.com>\n"
|
||||
"Language-Team: English (United States) (http://www.transifex.com/Friendica/friendica/language/en_US/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: en_US\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: blockem.php:52 blockem.php:56
|
||||
msgid "\"Blockem\""
|
||||
msgstr "Blockem"
|
||||
|
||||
#: blockem.php:60
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Hides user's content by collapsing posts. Also replaces their avatar with generic image."
|
||||
|
||||
#: blockem.php:61
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "Comma-separated profile URLs:"
|
||||
|
||||
#: blockem.php:65
|
||||
msgid "Save Settings"
|
||||
msgstr "Save settings"
|
||||
|
||||
#: blockem.php:78
|
||||
msgid "BLOCKEM Settings saved."
|
||||
msgstr "Blockem settings saved."
|
||||
|
||||
#: blockem.php:136
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Filtered user: %s"
|
||||
|
||||
#: blockem.php:189
|
||||
msgid "Unblock Author"
|
||||
msgstr "Unblock author"
|
||||
|
||||
#: blockem.php:191
|
||||
msgid "Block Author"
|
||||
msgstr "Block author"
|
||||
|
||||
#: blockem.php:223
|
||||
msgid "blockem settings updated"
|
||||
msgstr "Blockem settings updated"
|
||||
16
blockem/lang/en-us/strings.php
Normal file
16
blockem/lang/en-us/strings.php
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_en_us")) {
|
||||
function string_plural_select_en_us($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['"Blockem"'] = 'Blockem';
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'Comma-separated profile URLs:';
|
||||
$a->strings['Save Settings'] = 'Save settings';
|
||||
$a->strings['BLOCKEM Settings saved.'] = 'Blockem settings saved.';
|
||||
$a->strings['Filtered user: %s'] = 'Filtered user: %s';
|
||||
$a->strings['Unblock Author'] = 'Unblock author';
|
||||
$a->strings['Block Author'] = 'Block author';
|
||||
$a->strings['blockem settings updated'] = 'Blockem settings updated';
|
||||
10
blockem/lang/eo/strings.php
Normal file
10
blockem/lang/eo/strings.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
$a->strings["\"Blockem\" Settings"] = "\"Blockem\" Agordoj";
|
||||
$a->strings["Comma separated profile URLS to block"] = "Blokotaj URL adresoj, disigita per komo";
|
||||
$a->strings["Submit"] = "Sendi";
|
||||
$a->strings["BLOCKEM Settings saved."] = "Konservis Agordojn de BLOCKEM.";
|
||||
$a->strings["Blocked %s - Click to open/close"] = "%s blokita - Klaku por malfermi/fermi";
|
||||
$a->strings["Unblock Author"] = "Malbloki Aŭtoron";
|
||||
$a->strings["Block Author"] = "Bloki Aŭtoron";
|
||||
$a->strings["blockem settings updated"] = "Ĝisdatigis la blockem agordojn";
|
||||
53
blockem/lang/es/messages.po
Normal file
53
blockem/lang/es/messages.po
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Albert, 2018
|
||||
# Senex Petrovic <javierruizo@hotmail.com>, 2021
|
||||
# Tupambae.org, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2021-04-01 09:45+0000\n"
|
||||
"Last-Translator: Senex Petrovic <javierruizo@hotmail.com>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: blockem.php:42 blockem.php:46
|
||||
msgid "Blockem"
|
||||
msgstr "Blockem (Bloquealos)"
|
||||
|
||||
#: blockem.php:50
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Oculta el contenido del usuario al colapsar las publicaciones. También reemplaza su avatar con una imagen genérica."
|
||||
|
||||
#: blockem.php:51
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "URLs de perfil separadas por comas:"
|
||||
|
||||
#: blockem.php:55
|
||||
msgid "Save Settings"
|
||||
msgstr "Guardar configuración"
|
||||
|
||||
#: blockem.php:131
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Usuario filtrado: %s"
|
||||
|
||||
#: blockem.php:190
|
||||
msgid "Unblock Author"
|
||||
msgstr "Desbloquear autor"
|
||||
|
||||
#: blockem.php:192
|
||||
msgid "Block Author"
|
||||
msgstr "Bloquear autor"
|
||||
14
blockem/lang/es/strings.php
Normal file
14
blockem/lang/es/strings.php
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_es")) {
|
||||
function string_plural_select_es($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Blockem'] = 'Blockem (Bloquealos)';
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Oculta el contenido del usuario al colapsar las publicaciones. También reemplaza su avatar con una imagen genérica.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'URLs de perfil separadas por comas:';
|
||||
$a->strings['Save Settings'] = 'Guardar configuración';
|
||||
$a->strings['Filtered user: %s'] = 'Usuario filtrado: %s';
|
||||
$a->strings['Unblock Author'] = 'Desbloquear autor';
|
||||
$a->strings['Block Author'] = 'Bloquear autor';
|
||||
60
blockem/lang/fi-fi/messages.po
Normal file
60
blockem/lang/fi-fi/messages.po
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Kris, 2018
|
||||
# Kris, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-04-01 11:11-0400\n"
|
||||
"PO-Revision-Date: 2018-04-18 14:44+0000\n"
|
||||
"Last-Translator: Kris\n"
|
||||
"Language-Team: Finnish (Finland) (http://www.transifex.com/Friendica/friendica/language/fi_FI/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fi_FI\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: blockem.php:52 blockem.php:56
|
||||
msgid "\"Blockem\""
|
||||
msgstr "\"Blockem\""
|
||||
|
||||
#: blockem.php:60
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr ""
|
||||
|
||||
#: blockem.php:61
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "Profiilien URL-osoitteet pilkulla erotettuina:"
|
||||
|
||||
#: blockem.php:65
|
||||
msgid "Save Settings"
|
||||
msgstr "Tallenna asetukset"
|
||||
|
||||
#: blockem.php:78
|
||||
msgid "BLOCKEM Settings saved."
|
||||
msgstr "Blockem -asetukset tallennettu"
|
||||
|
||||
#: blockem.php:136
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Suodatettu käyttäjä: %s"
|
||||
|
||||
#: blockem.php:189
|
||||
msgid "Unblock Author"
|
||||
msgstr "Poista kirjoittaja estolistalta"
|
||||
|
||||
#: blockem.php:191
|
||||
msgid "Block Author"
|
||||
msgstr "Lisää kirjoittaja estolistalle"
|
||||
|
||||
#: blockem.php:223
|
||||
msgid "blockem settings updated"
|
||||
msgstr "blockem -asetukset päivitetty"
|
||||
15
blockem/lang/fi-fi/strings.php
Normal file
15
blockem/lang/fi-fi/strings.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_fi_fi")) {
|
||||
function string_plural_select_fi_fi($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['"Blockem"'] = '"Blockem"';
|
||||
$a->strings['Comma separated profile URLS:'] = 'Profiilien URL-osoitteet pilkulla erotettuina:';
|
||||
$a->strings['Save Settings'] = 'Tallenna asetukset';
|
||||
$a->strings['BLOCKEM Settings saved.'] = 'Blockem -asetukset tallennettu';
|
||||
$a->strings['Filtered user: %s'] = 'Suodatettu käyttäjä: %s';
|
||||
$a->strings['Unblock Author'] = 'Poista kirjoittaja estolistalta';
|
||||
$a->strings['Block Author'] = 'Lisää kirjoittaja estolistalle';
|
||||
$a->strings['blockem settings updated'] = 'blockem -asetukset päivitetty';
|
||||
50
blockem/lang/fr/messages.po
Normal file
50
blockem/lang/fr/messages.po
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Hypolite Petovan <hypolite@mrpetovan.com>, 2016
|
||||
# Marie Olive <lacellule101@gmail.com>, 2018
|
||||
# StefOfficiel <pichard.stephane@free.fr>, 2015
|
||||
# Vladimir Núñez <lapoubelle111@gmail.com>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
|
||||
"PO-Revision-Date: 2014-06-22 11:20+0000\n"
|
||||
"Last-Translator: Vladimir Núñez <lapoubelle111@gmail.com>, 2018\n"
|
||||
"Language-Team: French (http://www.transifex.com/Friendica/friendica/language/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
|
||||
#: blockem.php:39
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Cache le contenu de l'utilisateur en contractant les publications. Remplace aussi leur avatar par une image générique."
|
||||
|
||||
#: blockem.php:40
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "URLs de profil séparées par des virgules:"
|
||||
|
||||
#: blockem.php:45
|
||||
msgid "Blockem"
|
||||
msgstr "Bloquez-les"
|
||||
|
||||
#: blockem.php:120
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Utilisateur filtré:%s"
|
||||
|
||||
#: blockem.php:183
|
||||
msgid "Unblock Author"
|
||||
msgstr "Débloquer l'Auteur"
|
||||
|
||||
#: blockem.php:185
|
||||
msgid "Block Author"
|
||||
msgstr "Bloquer l'Auteur"
|
||||
13
blockem/lang/fr/strings.php
Normal file
13
blockem/lang/fr/strings.php
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_fr")) {
|
||||
function string_plural_select_fr($n){
|
||||
$n = intval($n);
|
||||
if (($n == 0 || $n == 1)) { return 0; } else if ($n != 0 && $n % 1000000 == 0) { return 1; } else { return 2; }
|
||||
}}
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Cache le contenu de l\'utilisateur en contractant les publications. Remplace aussi leur avatar par une image générique.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'URLs de profil séparées par des virgules:';
|
||||
$a->strings['Blockem'] = 'Bloquez-les';
|
||||
$a->strings['Filtered user: %s'] = 'Utilisateur filtré:%s';
|
||||
$a->strings['Unblock Author'] = 'Débloquer l\'Auteur';
|
||||
$a->strings['Block Author'] = 'Bloquer l\'Auteur';
|
||||
47
blockem/lang/hu/messages.po
Normal file
47
blockem/lang/hu/messages.po
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Balázs Úr, 2020
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
|
||||
"PO-Revision-Date: 2014-06-22 11:20+0000\n"
|
||||
"Last-Translator: Balázs Úr, 2020\n"
|
||||
"Language-Team: Hungarian (http://www.transifex.com/Friendica/friendica/language/hu/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: hu\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: blockem.php:39
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Elrejti a felhasználók tartalmát a bejegyzések összecsukásával. Ezenkívül lecseréli a profilképeiket egy általános képre."
|
||||
|
||||
#: blockem.php:40
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "Profil URL-ek vesszővel elválasztva:"
|
||||
|
||||
#: blockem.php:45
|
||||
msgid "Blockem"
|
||||
msgstr "Blockem"
|
||||
|
||||
#: blockem.php:120
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Kiszűrt felhasználó: %s"
|
||||
|
||||
#: blockem.php:183
|
||||
msgid "Unblock Author"
|
||||
msgstr "Szerző tiltásának feloldása"
|
||||
|
||||
#: blockem.php:185
|
||||
msgid "Block Author"
|
||||
msgstr "Szerző tiltása"
|
||||
13
blockem/lang/hu/strings.php
Normal file
13
blockem/lang/hu/strings.php
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_hu")) {
|
||||
function string_plural_select_hu($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Elrejti a felhasználók tartalmát a bejegyzések összecsukásával. Ezenkívül lecseréli a profilképeiket egy általános képre.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'Profil URL-ek vesszővel elválasztva:';
|
||||
$a->strings['Blockem'] = 'Blockem';
|
||||
$a->strings['Filtered user: %s'] = 'Kiszűrt felhasználó: %s';
|
||||
$a->strings['Unblock Author'] = 'Szerző tiltásának feloldása';
|
||||
$a->strings['Block Author'] = 'Szerző tiltása';
|
||||
10
blockem/lang/is/strings.php
Normal file
10
blockem/lang/is/strings.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
$a->strings["\"Blockem\" Settings"] = "\"Blockem\" stillingar";
|
||||
$a->strings["Comma separated profile URLS to block"] = "Banna lista af forsíðum (komma á milli)";
|
||||
$a->strings["Submit"] = "Senda inn";
|
||||
$a->strings["BLOCKEM Settings saved."] = "BLOCKEM stillingar vistaðar.";
|
||||
$a->strings["Blocked %s - Click to open/close"] = "%s sett í straff - Smella til að taka úr/setja á";
|
||||
$a->strings["Unblock Author"] = "Leyfa notanda";
|
||||
$a->strings["Block Author"] = "Banna notanda";
|
||||
$a->strings["blockem settings updated"] = "";
|
||||
59
blockem/lang/it/messages.po
Normal file
59
blockem/lang/it/messages.po
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# fabrixxm <fabrix.xm@gmail.com>, 2014,2018-2019
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
|
||||
"PO-Revision-Date: 2019-03-11 14:21+0000\n"
|
||||
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
|
||||
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/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"
|
||||
|
||||
#: blockem.php:54 blockem.php:58
|
||||
msgid "Blockem"
|
||||
msgstr "Blockem"
|
||||
|
||||
#: blockem.php:62
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Nascondi il contenuto degli utenti collassando i messaggi. Sostituisce anche gli avatar con un'immagine generica."
|
||||
|
||||
#: blockem.php:63
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "URL profili separati da virgola:"
|
||||
|
||||
#: blockem.php:67
|
||||
msgid "Save Settings"
|
||||
msgstr "Salva Impostazioni"
|
||||
|
||||
#: blockem.php:81
|
||||
msgid "BLOCKEM Settings saved."
|
||||
msgstr "Impostazioni BLOCKEM salvate."
|
||||
|
||||
#: blockem.php:143
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Utente filtrato: %s"
|
||||
|
||||
#: blockem.php:202
|
||||
msgid "Unblock Author"
|
||||
msgstr "Sblocca autore"
|
||||
|
||||
#: blockem.php:204
|
||||
msgid "Block Author"
|
||||
msgstr "Blocca autore"
|
||||
|
||||
#: blockem.php:244
|
||||
msgid "blockem settings updated"
|
||||
msgstr "Impostazioni 'blockem' aggiornate."
|
||||
16
blockem/lang/it/strings.php
Normal file
16
blockem/lang/it/strings.php
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_it")) {
|
||||
function string_plural_select_it($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Blockem'] = 'Blockem';
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Nascondi il contenuto degli utenti collassando i messaggi. Sostituisce anche gli avatar con un\'immagine generica.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'URL profili separati da virgola:';
|
||||
$a->strings['Save Settings'] = 'Salva Impostazioni';
|
||||
$a->strings['BLOCKEM Settings saved.'] = 'Impostazioni BLOCKEM salvate.';
|
||||
$a->strings['Filtered user: %s'] = 'Utente filtrato: %s';
|
||||
$a->strings['Unblock Author'] = 'Sblocca autore';
|
||||
$a->strings['Block Author'] = 'Blocca autore';
|
||||
$a->strings['blockem settings updated'] = 'Impostazioni \'blockem\' aggiornate.';
|
||||
10
blockem/lang/nb-no/strings.php
Normal file
10
blockem/lang/nb-no/strings.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
$a->strings["\"Blockem\" Settings"] = "";
|
||||
$a->strings["Comma separated profile URLS to block"] = "";
|
||||
$a->strings["Submit"] = "Lagre";
|
||||
$a->strings["BLOCKEM Settings saved."] = "";
|
||||
$a->strings["Blocked %s - Click to open/close"] = "";
|
||||
$a->strings["Unblock Author"] = "";
|
||||
$a->strings["Block Author"] = "";
|
||||
$a->strings["blockem settings updated"] = "";
|
||||
60
blockem/lang/nl/messages.po
Normal file
60
blockem/lang/nl/messages.po
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# AgnesElisa <agneselisa@disroot.org>, 2018
|
||||
# Jeroen De Meerleer <me@jeroened.be>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
|
||||
"PO-Revision-Date: 2018-08-24 13:49+0000\n"
|
||||
"Last-Translator: Jeroen De Meerleer <me@jeroened.be>\n"
|
||||
"Language-Team: Dutch (http://www.transifex.com/Friendica/friendica/language/nl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: nl\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: blockem.php:54 blockem.php:58
|
||||
msgid "Blockem"
|
||||
msgstr "Blockem"
|
||||
|
||||
#: blockem.php:62
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Verbergt de inhoud van het bericht van de gebruiker. Daarnaast vervangt het de avatar door een standaardafbeelding."
|
||||
|
||||
#: blockem.php:63
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "Profiel URLs (kommagescheiden):"
|
||||
|
||||
#: blockem.php:67
|
||||
msgid "Save Settings"
|
||||
msgstr "Instellingen opslaan"
|
||||
|
||||
#: blockem.php:81
|
||||
msgid "BLOCKEM Settings saved."
|
||||
msgstr "BLOCKEM instellingen opgeslagen."
|
||||
|
||||
#: blockem.php:143
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Gefilterde gebruiker: %s"
|
||||
|
||||
#: blockem.php:202
|
||||
msgid "Unblock Author"
|
||||
msgstr "Deblokkeer Auteur"
|
||||
|
||||
#: blockem.php:204
|
||||
msgid "Block Author"
|
||||
msgstr "Auteur blokkeren"
|
||||
|
||||
#: blockem.php:244
|
||||
msgid "blockem settings updated"
|
||||
msgstr "blockem instellingen opgeslagen"
|
||||
16
blockem/lang/nl/strings.php
Normal file
16
blockem/lang/nl/strings.php
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_nl")) {
|
||||
function string_plural_select_nl($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Blockem'] = 'Blockem';
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Verbergt de inhoud van het bericht van de gebruiker. Daarnaast vervangt het de avatar door een standaardafbeelding.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'Profiel URLs (kommagescheiden):';
|
||||
$a->strings['Save Settings'] = 'Instellingen opslaan';
|
||||
$a->strings['BLOCKEM Settings saved.'] = 'BLOCKEM instellingen opgeslagen.';
|
||||
$a->strings['Filtered user: %s'] = 'Gefilterde gebruiker: %s';
|
||||
$a->strings['Unblock Author'] = 'Deblokkeer Auteur';
|
||||
$a->strings['Block Author'] = 'Auteur blokkeren';
|
||||
$a->strings['blockem settings updated'] = 'blockem instellingen opgeslagen';
|
||||
47
blockem/lang/pl/messages.po
Normal file
47
blockem/lang/pl/messages.po
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Waldemar Stoczkowski, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
|
||||
"PO-Revision-Date: 2014-06-22 11:20+0000\n"
|
||||
"Last-Translator: Waldemar Stoczkowski, 2018\n"
|
||||
"Language-Team: Polish (http://www.transifex.com/Friendica/friendica/language/pl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pl\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
|
||||
#: blockem.php:39
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Ukrywa zawartość użytkownika, zwijając posty. Zastępuje również awatar wygenerowanym obrazem."
|
||||
|
||||
#: blockem.php:40
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "Rozdzielone przecinkami adresy URL profilu:"
|
||||
|
||||
#: blockem.php:45
|
||||
msgid "Blockem"
|
||||
msgstr "Zablokowanie"
|
||||
|
||||
#: blockem.php:120
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Użytkownik filtrowany: %s"
|
||||
|
||||
#: blockem.php:183
|
||||
msgid "Unblock Author"
|
||||
msgstr "Odblokuj autora"
|
||||
|
||||
#: blockem.php:185
|
||||
msgid "Block Author"
|
||||
msgstr "Zablokuj autora"
|
||||
13
blockem/lang/pl/strings.php
Normal file
13
blockem/lang/pl/strings.php
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_pl")) {
|
||||
function string_plural_select_pl($n){
|
||||
$n = intval($n);
|
||||
if ($n==1) { return 0; } else if (($n%10>=2 && $n%10<=4) && ($n%100<12 || $n%100>14)) { return 1; } else if ($n!=1 && ($n%10>=0 && $n%10<=1) || ($n%10>=5 && $n%10<=9) || ($n%100>=12 && $n%100<=14)) { return 2; } else { return 3; }
|
||||
}}
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Ukrywa zawartość użytkownika, zwijając posty. Zastępuje również awatar wygenerowanym obrazem.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'Rozdzielone przecinkami adresy URL profilu:';
|
||||
$a->strings['Blockem'] = 'Zablokowanie';
|
||||
$a->strings['Filtered user: %s'] = 'Użytkownik filtrowany: %s';
|
||||
$a->strings['Unblock Author'] = 'Odblokuj autora';
|
||||
$a->strings['Block Author'] = 'Zablokuj autora';
|
||||
10
blockem/lang/pt-br/strings.php
Normal file
10
blockem/lang/pt-br/strings.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
$a->strings["\"Blockem\" Settings"] = "Configurações \"Blockem\"";
|
||||
$a->strings["Comma separated profile URLS to block"] = "URLS de perfis separados por vírgulas a serem bloqueados";
|
||||
$a->strings["Submit"] = "Enviar";
|
||||
$a->strings["BLOCKEM Settings saved."] = "Configurações BLOCKEM armazenadas.";
|
||||
$a->strings["Blocked %s - Click to open/close"] = "Bloqueado %s - Clique para abrir/fechar";
|
||||
$a->strings["Unblock Author"] = "Desbloqueie Autor";
|
||||
$a->strings["Block Author"] = "Bloqueie Autor";
|
||||
$a->strings["blockem settings updated"] = "configurações blockem atualizadas";
|
||||
52
blockem/lang/ro/messages.po
Normal file
52
blockem/lang/ro/messages.po
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
|
||||
"PO-Revision-Date: 2014-07-08 11:43+0000\n"
|
||||
"Last-Translator: Arian - Cazare Muncitori <arianserv@gmail.com>\n"
|
||||
"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/friendica/language/ro_RO/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ro_RO\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
|
||||
|
||||
#: blockem.php:53 blockem.php:57
|
||||
msgid "\"Blockem\""
|
||||
msgstr "\"Blockem\""
|
||||
|
||||
#: blockem.php:61
|
||||
msgid "Comma separated profile URLS to block"
|
||||
msgstr "Adresele URL de profil, de blocat, separate prin virgulă"
|
||||
|
||||
#: blockem.php:65
|
||||
msgid "Save Settings"
|
||||
msgstr "Salvare Configurări"
|
||||
|
||||
#: blockem.php:78
|
||||
msgid "BLOCKEM Settings saved."
|
||||
msgstr "Configurările BLOCKEM au fost salvate."
|
||||
|
||||
#: blockem.php:142
|
||||
#, php-format
|
||||
msgid "Blocked %s - Click to open/close"
|
||||
msgstr "%s Blocate - Apăsați pentru a deschide/închide"
|
||||
|
||||
#: blockem.php:197
|
||||
msgid "Unblock Author"
|
||||
msgstr "Deblocare Autor"
|
||||
|
||||
#: blockem.php:199
|
||||
msgid "Block Author"
|
||||
msgstr "Blocare Autor"
|
||||
|
||||
#: blockem.php:231
|
||||
msgid "blockem settings updated"
|
||||
msgstr "Configurările blockem au fost actualizate"
|
||||
15
blockem/lang/ro/strings.php
Normal file
15
blockem/lang/ro/strings.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_ro")) {
|
||||
function string_plural_select_ro($n){
|
||||
$n = intval($n);
|
||||
if ($n==1) { return 0; } else if ((($n%100>19)||(($n%100==0)&&($n!=0)))) { return 2; } else { return 1; }
|
||||
}}
|
||||
$a->strings['"Blockem"'] = '"Blockem"';
|
||||
$a->strings['Comma separated profile URLS to block'] = 'Adresele URL de profil, de blocat, separate prin virgulă';
|
||||
$a->strings['Save Settings'] = 'Salvare Configurări';
|
||||
$a->strings['BLOCKEM Settings saved.'] = 'Configurările BLOCKEM au fost salvate.';
|
||||
$a->strings['Blocked %s - Click to open/close'] = '%s Blocate - Apăsați pentru a deschide/închide';
|
||||
$a->strings['Unblock Author'] = 'Deblocare Autor';
|
||||
$a->strings['Block Author'] = 'Blocare Autor';
|
||||
$a->strings['blockem settings updated'] = 'Configurările blockem au fost actualizate';
|
||||
60
blockem/lang/ru/messages.po
Normal file
60
blockem/lang/ru/messages.po
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Alexander An <ravnina@gmail.com>, 2020
|
||||
# Stanislav N. <pztrn@pztrn.name>, 2017-2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
|
||||
"PO-Revision-Date: 2020-04-23 14:13+0000\n"
|
||||
"Last-Translator: Alexander An <ravnina@gmail.com>\n"
|
||||
"Language-Team: Russian (http://www.transifex.com/Friendica/friendica/language/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ru\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
#: blockem.php:54 blockem.php:58
|
||||
msgid "Blockem"
|
||||
msgstr "Blockem"
|
||||
|
||||
#: blockem.php:62
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Скрыть контент пользователя. Также заменяет его аватар изображением по-умолчанию."
|
||||
|
||||
#: blockem.php:63
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "URL профилей, разделенные запятыми:"
|
||||
|
||||
#: blockem.php:67
|
||||
msgid "Save Settings"
|
||||
msgstr "Сохранить настройки"
|
||||
|
||||
#: blockem.php:81
|
||||
msgid "BLOCKEM Settings saved."
|
||||
msgstr "BLOCKEM Настройки сохранены."
|
||||
|
||||
#: blockem.php:143
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Отфильтрованный пользователь: %s"
|
||||
|
||||
#: blockem.php:202
|
||||
msgid "Unblock Author"
|
||||
msgstr "Разблокировать автора"
|
||||
|
||||
#: blockem.php:204
|
||||
msgid "Block Author"
|
||||
msgstr "Блокировать автора"
|
||||
|
||||
#: blockem.php:244
|
||||
msgid "blockem settings updated"
|
||||
msgstr "Настройки Blockem обновлены"
|
||||
16
blockem/lang/ru/strings.php
Normal file
16
blockem/lang/ru/strings.php
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_ru")) {
|
||||
function string_plural_select_ru($n){
|
||||
$n = intval($n);
|
||||
if ($n%10==1 && $n%100!=11) { return 0; } else if ($n%10>=2 && $n%10<=4 && ($n%100<12 || $n%100>14)) { return 1; } else if ($n%10==0 || ($n%10>=5 && $n%10<=9) || ($n%100>=11 && $n%100<=14)) { return 2; } else { return 3; }
|
||||
}}
|
||||
$a->strings['Blockem'] = 'Blockem';
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Скрыть контент пользователя. Также заменяет его аватар изображением по-умолчанию.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'URL профилей, разделенные запятыми:';
|
||||
$a->strings['Save Settings'] = 'Сохранить настройки';
|
||||
$a->strings['BLOCKEM Settings saved.'] = 'BLOCKEM Настройки сохранены.';
|
||||
$a->strings['Filtered user: %s'] = 'Отфильтрованный пользователь: %s';
|
||||
$a->strings['Unblock Author'] = 'Разблокировать автора';
|
||||
$a->strings['Block Author'] = 'Блокировать автора';
|
||||
$a->strings['blockem settings updated'] = 'Настройки Blockem обновлены';
|
||||
47
blockem/lang/sv/messages.po
Normal file
47
blockem/lang/sv/messages.po
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# ADDON blockem
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica blockem addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Bjoessi <torbjorn.andersson@syte.se>, 2019
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
|
||||
"PO-Revision-Date: 2021-12-22 15:27+0000\n"
|
||||
"Last-Translator: Transifex Bot <>\n"
|
||||
"Language-Team: Swedish (http://www.transifex.com/Friendica/friendica/language/sv/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sv\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: blockem.php:39
|
||||
msgid ""
|
||||
"Hides user's content by collapsing posts. Also replaces their avatar with "
|
||||
"generic image."
|
||||
msgstr "Döljer användares inlägg genom sammanslagning nedåt. Användarens profilbild ersätts med en standardbild."
|
||||
|
||||
#: blockem.php:40
|
||||
msgid "Comma separated profile URLS:"
|
||||
msgstr "Kommaseparerade profiladresser:"
|
||||
|
||||
#: blockem.php:45
|
||||
msgid "Blockem"
|
||||
msgstr "BLOCKEM"
|
||||
|
||||
#: blockem.php:120
|
||||
#, php-format
|
||||
msgid "Filtered user: %s"
|
||||
msgstr "Filtrerat på användare:%s"
|
||||
|
||||
#: blockem.php:183
|
||||
msgid "Unblock Author"
|
||||
msgstr "Avblockera författare"
|
||||
|
||||
#: blockem.php:185
|
||||
msgid "Block Author"
|
||||
msgstr "Blockera författare"
|
||||
13
blockem/lang/sv/strings.php
Normal file
13
blockem/lang/sv/strings.php
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_sv")) {
|
||||
function string_plural_select_sv($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Döljer användares inlägg genom sammanslagning nedåt. Användarens profilbild ersätts med en standardbild.';
|
||||
$a->strings['Comma separated profile URLS:'] = 'Kommaseparerade profiladresser:';
|
||||
$a->strings['Blockem'] = 'BLOCKEM';
|
||||
$a->strings['Filtered user: %s'] = 'Filtrerat på användare:%s';
|
||||
$a->strings['Unblock Author'] = 'Avblockera författare';
|
||||
$a->strings['Block Author'] = 'Blockera författare';
|
||||
10
blockem/lang/zh-cn/strings.php
Normal file
10
blockem/lang/zh-cn/strings.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
$a->strings["\"Blockem\" Settings"] = "「Blockem」配置";
|
||||
$a->strings["Comma separated profile URLS to block"] = "逗号分简介URL为栏";
|
||||
$a->strings["Submit"] = "提交";
|
||||
$a->strings["BLOCKEM Settings saved."] = "「Blockem」配置保存了。";
|
||||
$a->strings["Blocked %s - Click to open/close"] = "%s拦了-点击为开关";
|
||||
$a->strings["Unblock Author"] = "不拦作家";
|
||||
$a->strings["Block Author"] = "拦作家";
|
||||
$a->strings["blockem settings updated"] = "blockem设置更新了";
|
||||
1
blockem/templates/settings.tpl
Normal file
1
blockem/templates/settings.tpl
Normal file
|
|
@ -0,0 +1 @@
|
|||
{{include file="field_textarea.tpl" field=$words}}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
Bluesky Addon
|
||||
==============
|
||||
|
||||
This addon supports posting to and receiving posts from Bluesky.
|
||||
|
||||
No setup is needed for the admins to make it work for their users.
|
||||
|
||||
Bluesky itself is under development as well. It is planned to make it decentral.
|
||||
The addon is prepared to support different servers. But it isn't enabled yet.
|
||||
1775
bluesky/bluesky.php
1775
bluesky/bluesky.php
|
|
@ -1,1775 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Name: Bluesky Connector
|
||||
* Description: Post to Bluesky
|
||||
* Version: 1.1
|
||||
* Author: Michael Vogel <https://pirati.ca/profile/heluecht>
|
||||
*
|
||||
* @todo
|
||||
* Currently technical issues in the core:
|
||||
* - Outgoing mentions
|
||||
*
|
||||
* At some point in time:
|
||||
* - Sending Quote shares https://atproto.com/lexicons/app-bsky-embed#appbskyembedrecord and https://atproto.com/lexicons/app-bsky-embed#appbskyembedrecordwithmedia
|
||||
*
|
||||
* Possibly not possible:
|
||||
* - only fetch new posts
|
||||
*
|
||||
* Currently not possible, due to limitations in Friendica
|
||||
* - mute contacts https://atproto.com/lexicons/app-bsky-graph#appbskygraphmuteactor
|
||||
* - unmute contacts https://atproto.com/lexicons/app-bsky-graph#appbskygraphunmuteactor
|
||||
*
|
||||
* Possibly interesting:
|
||||
* - https://atproto.com/lexicons/com-atproto-label#comatprotolabelsubscribelabels
|
||||
*/
|
||||
|
||||
use Friendica\Content\Text\BBCode;
|
||||
use Friendica\Content\Text\HTML;
|
||||
use Friendica\Content\Text\Plaintext;
|
||||
use Friendica\Core\Cache\Enum\Duration;
|
||||
use Friendica\Core\Config\Util\ConfigFileManager;
|
||||
use Friendica\Core\Hook;
|
||||
use Friendica\Core\Logger;
|
||||
use Friendica\Core\Protocol;
|
||||
use Friendica\Core\Renderer;
|
||||
use Friendica\Core\Worker;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\DI;
|
||||
use Friendica\Model\Contact;
|
||||
use Friendica\Model\GServer;
|
||||
use Friendica\Model\Item;
|
||||
use Friendica\Model\ItemURI;
|
||||
use Friendica\Model\Photo;
|
||||
use Friendica\Model\Post;
|
||||
use Friendica\Model\Tag;
|
||||
use Friendica\Network\HTTPClient\Client\HttpClientAccept;
|
||||
use Friendica\Network\HTTPClient\Client\HttpClientOptions;
|
||||
use Friendica\Object\Image;
|
||||
use Friendica\Protocol\Activity;
|
||||
use Friendica\Protocol\Relay;
|
||||
use Friendica\Util\DateTimeFormat;
|
||||
use Friendica\Util\Strings;
|
||||
|
||||
const BLUESKY_DEFAULT_POLL_INTERVAL = 10; // given in minutes
|
||||
const BLUESKY_IMAGE_SIZE = [1000000, 500000, 100000, 50000];
|
||||
|
||||
const BLUEKSY_STATUS_UNKNOWN = 0;
|
||||
const BLUEKSY_STATUS_TOKEN_OK = 1;
|
||||
const BLUEKSY_STATUS_SUCCESS = 2;
|
||||
const BLUEKSY_STATUS_API_FAIL = 10;
|
||||
const BLUEKSY_STATUS_DID_FAIL = 11;
|
||||
const BLUEKSY_STATUS_PDS_FAIL = 12;
|
||||
const BLUEKSY_STATUS_TOKEN_FAIL = 13;
|
||||
|
||||
/*
|
||||
* (Currently) hard wired paths for Bluesky services
|
||||
*/
|
||||
const BLUESKY_DIRECTORY = 'https://plc.directory'; // Path to the directory server service to fetch the PDS of a given DID
|
||||
const BLUESKY_PDS = 'https://bsky.social'; // Path to the personal data server service (PDS) to fetch the DID for a given handle
|
||||
const BLUESKY_WEB = 'https://bsky.app'; // Path to the web interface with the user profile and posts
|
||||
|
||||
function bluesky_install()
|
||||
{
|
||||
Hook::register('load_config', __FILE__, 'bluesky_load_config');
|
||||
Hook::register('hook_fork', __FILE__, 'bluesky_hook_fork');
|
||||
Hook::register('post_local', __FILE__, 'bluesky_post_local');
|
||||
Hook::register('notifier_normal', __FILE__, 'bluesky_send');
|
||||
Hook::register('jot_networks', __FILE__, 'bluesky_jot_nets');
|
||||
Hook::register('connector_settings', __FILE__, 'bluesky_settings');
|
||||
Hook::register('connector_settings_post', __FILE__, 'bluesky_settings_post');
|
||||
Hook::register('cron', __FILE__, 'bluesky_cron');
|
||||
Hook::register('support_follow', __FILE__, 'bluesky_support_follow');
|
||||
Hook::register('support_probe', __FILE__, 'bluesky_support_probe');
|
||||
Hook::register('follow', __FILE__, 'bluesky_follow');
|
||||
Hook::register('unfollow', __FILE__, 'bluesky_unfollow');
|
||||
Hook::register('block', __FILE__, 'bluesky_block');
|
||||
Hook::register('unblock', __FILE__, 'bluesky_unblock');
|
||||
Hook::register('check_item_notification', __FILE__, 'bluesky_check_item_notification');
|
||||
Hook::register('probe_detect', __FILE__, 'bluesky_probe_detect');
|
||||
Hook::register('item_by_link', __FILE__, 'bluesky_item_by_link');
|
||||
}
|
||||
|
||||
function bluesky_load_config(ConfigFileManager $loader)
|
||||
{
|
||||
DI::app()->getConfigCache()->load($loader->loadAddonConfig('bluesky'), \Friendica\Core\Config\ValueObject\Cache::SOURCE_STATIC);
|
||||
}
|
||||
|
||||
function bluesky_check_item_notification(array &$notification_data)
|
||||
{
|
||||
$did = DI::pConfig()->get($notification_data['uid'], 'bluesky', 'did');
|
||||
|
||||
if (!empty($did)) {
|
||||
$notification_data['profiles'][] = $did;
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_probe_detect(array &$hookData)
|
||||
{
|
||||
// Don't overwrite an existing result
|
||||
if (isset($hookData['result'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Avoid a lookup for the wrong network
|
||||
if (!in_array($hookData['network'], ['', Protocol::BLUESKY])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$pconfig = DBA::selectFirst('pconfig', ['uid'], ["`cat` = ? AND `k` = ? AND `v` != ?", 'bluesky', 'access_token', '']);
|
||||
if (empty($pconfig['uid'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (parse_url($hookData['uri'], PHP_URL_SCHEME) == 'did') {
|
||||
$did = $hookData['uri'];
|
||||
} elseif (preg_match('#^' . BLUESKY_WEB . '/profile/(.+)#', $hookData['uri'], $matches)) {
|
||||
$did = bluesky_get_did($matches[1]);
|
||||
if (empty($did)) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
$token = bluesky_get_token($pconfig['uid']);
|
||||
if (empty($token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$data = bluesky_xrpc_get($pconfig['uid'], 'app.bsky.actor.getProfile', ['actor' => $did]);
|
||||
if (empty($data)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$hookData['result'] = bluesky_get_contact_fields($data, 0, false);
|
||||
|
||||
$hookData['result']['baseurl'] = bluesky_get_pds($did);
|
||||
|
||||
// Preparing probe data. This differs slightly from the contact array
|
||||
$hookData['result']['about'] = HTML::toBBCode($data->description ?? '');
|
||||
$hookData['result']['photo'] = $data->avatar ?? '';
|
||||
$hookData['result']['header'] = $data->banner ?? '';
|
||||
$hookData['result']['batch'] = '';
|
||||
$hookData['result']['notify'] = '';
|
||||
$hookData['result']['poll'] = '';
|
||||
$hookData['result']['poco'] = '';
|
||||
$hookData['result']['pubkey'] = '';
|
||||
$hookData['result']['priority'] = 0;
|
||||
$hookData['result']['guid'] = '';
|
||||
}
|
||||
|
||||
function bluesky_item_by_link(array &$hookData)
|
||||
{
|
||||
// Don't overwrite an existing result
|
||||
if (isset($hookData['item_id'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$token = bluesky_get_token($hookData['uid']);
|
||||
if (empty($token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!preg_match('#^' . BLUESKY_WEB . '/profile/(.+)/post/(.+)#', $hookData['uri'], $matches)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$did = bluesky_get_did($matches[1]);
|
||||
if (empty($did)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Logger::debug('Found bluesky post', ['url' => $hookData['uri'], 'handle' => $matches[1], 'did' => $did, 'cid' => $matches[2]]);
|
||||
|
||||
$uri = 'at://' . $did . '/app.bsky.feed.post/' . $matches[2];
|
||||
|
||||
$uri = bluesky_fetch_missing_post($uri, $hookData['uid'], $hookData['uid'], 0, 0);
|
||||
Logger::debug('Got post', ['profile' => $matches[1], 'cid' => $matches[2], 'result' => $uri]);
|
||||
if (!empty($uri)) {
|
||||
$item = Post::selectFirst(['id'], ['uri' => $uri, 'uid' => $hookData['uid']]);
|
||||
if (!empty($item['id'])) {
|
||||
$hookData['item_id'] = $item['id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_support_follow(array &$data)
|
||||
{
|
||||
if ($data['protocol'] == Protocol::BLUESKY) {
|
||||
$data['result'] = true;
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_support_probe(array &$data)
|
||||
{
|
||||
if ($data['protocol'] == Protocol::BLUESKY) {
|
||||
$data['result'] = true;
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_follow(array &$hook_data)
|
||||
{
|
||||
$token = bluesky_get_token($hook_data['uid']);
|
||||
if (empty($token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Logger::debug('Check if contact is bluesky', ['data' => $hook_data]);
|
||||
$contact = DBA::selectFirst('contact', [], ['network' => Protocol::BLUESKY, 'url' => $hook_data['url'], 'uid' => [0, $hook_data['uid']]]);
|
||||
if (empty($contact)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$record = [
|
||||
'subject' => $contact['url'],
|
||||
'createdAt' => DateTimeFormat::utcNow(DateTimeFormat::ATOM),
|
||||
'$type' => 'app.bsky.graph.follow'
|
||||
];
|
||||
|
||||
$post = [
|
||||
'collection' => 'app.bsky.graph.follow',
|
||||
'repo' => DI::pConfig()->get($hook_data['uid'], 'bluesky', 'did'),
|
||||
'record' => $record
|
||||
];
|
||||
|
||||
$activity = bluesky_xrpc_post($hook_data['uid'], 'com.atproto.repo.createRecord', $post);
|
||||
if (!empty($activity->uri)) {
|
||||
$hook_data['contact'] = $contact;
|
||||
Logger::debug('Successfully start following', ['url' => $contact['url'], 'uri' => $activity->uri]);
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_unfollow(array &$hook_data)
|
||||
{
|
||||
$token = bluesky_get_token($hook_data['uid']);
|
||||
if (empty($token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($hook_data['contact']['network'] != Protocol::BLUESKY) {
|
||||
return;
|
||||
}
|
||||
|
||||
$data = bluesky_xrpc_get($hook_data['uid'], 'app.bsky.actor.getProfile', ['actor' => $hook_data['contact']['url']]);
|
||||
if (empty($data->viewer) || empty($data->viewer->following)) {
|
||||
return;
|
||||
}
|
||||
|
||||
bluesky_delete_post($data->viewer->following, $hook_data['uid']);
|
||||
|
||||
$hook_data['result'] = true;
|
||||
}
|
||||
|
||||
function bluesky_block(array &$hook_data)
|
||||
{
|
||||
$token = bluesky_get_token($hook_data['uid']);
|
||||
if (empty($token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Logger::debug('Check if contact is bluesky', ['data' => $hook_data]);
|
||||
$contact = DBA::selectFirst('contact', [], ['network' => Protocol::BLUESKY, 'url' => $hook_data['url'], 'uid' => [0, $hook_data['uid']]]);
|
||||
if (empty($contact)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$record = [
|
||||
'subject' => $contact['url'],
|
||||
'createdAt' => DateTimeFormat::utcNow(DateTimeFormat::ATOM),
|
||||
'$type' => 'app.bsky.graph.block'
|
||||
];
|
||||
|
||||
$post = [
|
||||
'collection' => 'app.bsky.graph.block',
|
||||
'repo' => DI::pConfig()->get($hook_data['uid'], 'bluesky', 'did'),
|
||||
'record' => $record
|
||||
];
|
||||
|
||||
$activity = bluesky_xrpc_post($hook_data['uid'], 'com.atproto.repo.createRecord', $post);
|
||||
if (!empty($activity->uri)) {
|
||||
$cdata = Contact::getPublicAndUserContactID($hook_data['contact']['id'], $hook_data['uid']);
|
||||
if (!empty($cdata['user'])) {
|
||||
Contact::remove($cdata['user']);
|
||||
}
|
||||
Logger::debug('Successfully blocked contact', ['url' => $hook_data['contact']['url'], 'uri' => $activity->uri]);
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_unblock(array &$hook_data)
|
||||
{
|
||||
$token = bluesky_get_token($hook_data['uid']);
|
||||
if (empty($token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($hook_data['contact']['network'] != Protocol::BLUESKY) {
|
||||
return;
|
||||
}
|
||||
|
||||
$data = bluesky_xrpc_get($hook_data['uid'], 'app.bsky.actor.getProfile', ['actor' => $hook_data['contact']['url']]);
|
||||
if (empty($data->viewer) || empty($data->viewer->blocking)) {
|
||||
return;
|
||||
}
|
||||
|
||||
bluesky_delete_post($data->viewer->blocking, $hook_data['uid']);
|
||||
|
||||
$hook_data['result'] = true;
|
||||
}
|
||||
|
||||
function bluesky_settings(array &$data)
|
||||
{
|
||||
if (!DI::userSession()->getLocalUserId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$enabled = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'post') ?? false;
|
||||
$def_enabled = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'post_by_default') ?? false;
|
||||
$pds = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'pds');
|
||||
$handle = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'handle');
|
||||
$did = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'did');
|
||||
$token = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'access_token');
|
||||
$import = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'import') ?? false;
|
||||
$import_feeds = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'import_feeds') ?? false;
|
||||
|
||||
$t = Renderer::getMarkupTemplate('connector_settings.tpl', 'addon/bluesky/');
|
||||
$html = Renderer::replaceMacros($t, [
|
||||
'$enable' => ['bluesky', DI::l10n()->t('Enable Bluesky Post Addon'), $enabled],
|
||||
'$bydefault' => ['bluesky_bydefault', DI::l10n()->t('Post to Bluesky by default'), $def_enabled],
|
||||
'$import' => ['bluesky_import', DI::l10n()->t('Import the remote timeline'), $import],
|
||||
'$import_feeds' => ['bluesky_import_feeds', DI::l10n()->t('Import the pinned feeds'), $import_feeds, DI::l10n()->t('When activated, Posts will be imported from all the feeds that you pinned in Bluesky.')],
|
||||
'$pds' => ['bluesky_pds', DI::l10n()->t('Personal Data Server'), $pds, DI::l10n()->t('The personal data server (PDS) is the system that hosts your profile.'), '', 'readonly'],
|
||||
'$handle' => ['bluesky_handle', DI::l10n()->t('Bluesky handle'), $handle],
|
||||
'$did' => ['bluesky_did', DI::l10n()->t('Bluesky DID'), $did, DI::l10n()->t('This is the unique identifier. It will be fetched automatically, when the handle is entered.'), '', 'readonly'],
|
||||
'$password' => ['bluesky_password', DI::l10n()->t('Bluesky app password'), '', DI::l10n()->t("Please don't add your real password here, but instead create a specific app password in the Bluesky settings.")],
|
||||
'$status' => bluesky_get_status($handle, $did, $pds, $token),
|
||||
]);
|
||||
|
||||
$data = [
|
||||
'connector' => 'bluesky',
|
||||
'title' => DI::l10n()->t('Bluesky Import/Export'),
|
||||
'image' => 'images/bluesky.jpg',
|
||||
'enabled' => $enabled,
|
||||
'html' => $html,
|
||||
];
|
||||
}
|
||||
|
||||
function bluesky_get_status(string $handle = null, string $did = null, string $pds = null, string $token = null): string
|
||||
{
|
||||
if (empty($handle)) {
|
||||
return DI::l10n()->t('You are not authenticated. Please enter your handle and the app password.');
|
||||
}
|
||||
|
||||
$status = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'status') ?? BLUEKSY_STATUS_UNKNOWN;
|
||||
|
||||
// Fallback mechanism for connection that had been established before the introduction of the status
|
||||
if ($status == BLUEKSY_STATUS_UNKNOWN) {
|
||||
if (empty($did)) {
|
||||
$status = BLUEKSY_STATUS_DID_FAIL;
|
||||
} elseif (empty($pds)) {
|
||||
$status = BLUEKSY_STATUS_PDS_FAIL;
|
||||
} elseif (!empty($token)) {
|
||||
$status = BLUEKSY_STATUS_TOKEN_OK;
|
||||
} else {
|
||||
$status = BLUEKSY_STATUS_TOKEN_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
switch ($status) {
|
||||
case BLUEKSY_STATUS_TOKEN_OK:
|
||||
return DI::l10n()->t("You are authenticated to Bluesky. For security reasons the password isn't stored.");
|
||||
case BLUEKSY_STATUS_SUCCESS:
|
||||
return DI::l10n()->t('The communication with the personal data server service (PDS) is established.');
|
||||
case BLUEKSY_STATUS_API_FAIL;
|
||||
return DI::l10n()->t('Communication issues with the personal data server service (PDS).');
|
||||
case BLUEKSY_STATUS_DID_FAIL:
|
||||
return DI::l10n()->t('The DID for the provided handle could not be detected. Please check if you entered the correct handle.');
|
||||
case BLUEKSY_STATUS_PDS_FAIL:
|
||||
return DI::l10n()->t('The personal data server service (PDS) could not be detected.');
|
||||
case BLUEKSY_STATUS_TOKEN_FAIL:
|
||||
return DI::l10n()->t('The authentication with the provided handle and password failed. Please check if you entered the correct password.');
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_settings_post(array &$b)
|
||||
{
|
||||
if (empty($_POST['bluesky-submit'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$old_pds = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'pds');
|
||||
$old_handle = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'handle');
|
||||
$old_did = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'did');
|
||||
|
||||
$handle = trim($_POST['bluesky_handle'], ' @');
|
||||
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'bluesky', 'post', intval($_POST['bluesky']));
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'bluesky', 'post_by_default', intval($_POST['bluesky_bydefault']));
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'bluesky', 'handle', $handle);
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'bluesky', 'import', intval($_POST['bluesky_import']));
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'bluesky', 'import_feeds', intval($_POST['bluesky_import_feeds']));
|
||||
|
||||
if (!empty($handle)) {
|
||||
if (empty($old_did) || $old_handle != $handle) {
|
||||
$did = bluesky_get_did(DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'handle'));
|
||||
if (empty($did)) {
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'bluesky', 'status', BLUEKSY_STATUS_DID_FAIL);
|
||||
}
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'bluesky', 'did', $did);
|
||||
} else {
|
||||
$did = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'did');
|
||||
}
|
||||
if (!empty($did) && (empty($old_pds) || $old_handle != $handle)) {
|
||||
$pds = bluesky_get_pds($did);
|
||||
if (empty($pds)) {
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'bluesky', 'status', BLUEKSY_STATUS_PDS_FAIL);
|
||||
}
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'bluesky', 'pds', $pds);
|
||||
} else {
|
||||
$pds = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'pds');
|
||||
}
|
||||
} else {
|
||||
DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'bluesky', 'did');
|
||||
DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'bluesky', 'pds');
|
||||
DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'bluesky', 'access_token');
|
||||
DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'bluesky', 'refresh_token');
|
||||
DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'bluesky', 'token_created');
|
||||
DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'bluesky', 'status');
|
||||
}
|
||||
|
||||
if (!empty($did) && !empty($pds) && !empty($_POST['bluesky_password'])) {
|
||||
bluesky_create_token(DI::userSession()->getLocalUserId(), $_POST['bluesky_password']);
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_jot_nets(array &$jotnets_fields)
|
||||
{
|
||||
if (!DI::userSession()->getLocalUserId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'post')) {
|
||||
$jotnets_fields[] = [
|
||||
'type' => 'checkbox',
|
||||
'field' => [
|
||||
'bluesky_enable',
|
||||
DI::l10n()->t('Post to Bluesky'),
|
||||
DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'post_by_default')
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_cron()
|
||||
{
|
||||
$last = (int)DI::keyValue()->get('bluesky_last_poll');
|
||||
|
||||
$poll_interval = intval(DI::config()->get('bluesky', 'poll_interval'));
|
||||
if (!$poll_interval) {
|
||||
$poll_interval = BLUESKY_DEFAULT_POLL_INTERVAL;
|
||||
}
|
||||
|
||||
if ($last) {
|
||||
$next = $last + ($poll_interval * 60);
|
||||
if ($next > time()) {
|
||||
Logger::notice('poll interval not reached');
|
||||
return;
|
||||
}
|
||||
}
|
||||
Logger::notice('cron_start');
|
||||
|
||||
$abandon_days = intval(DI::config()->get('system', 'account_abandon_days'));
|
||||
if ($abandon_days < 1) {
|
||||
$abandon_days = 0;
|
||||
}
|
||||
|
||||
$abandon_limit = date(DateTimeFormat::MYSQL, time() - $abandon_days * 86400);
|
||||
|
||||
$pconfigs = DBA::selectToArray('pconfig', [], ['cat' => 'bluesky', 'k' => 'import', 'v' => true]);
|
||||
foreach ($pconfigs as $pconfig) {
|
||||
if ($abandon_days != 0) {
|
||||
if (!DBA::exists('user', ["`uid` = ? AND `login_date` >= ?", $pconfig['uid'], $abandon_limit])) {
|
||||
Logger::notice('abandoned account: timeline from user will not be imported', ['user' => $pconfig['uid']]);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// Refresh the token now, so that it doesn't need to be refreshed in parallel by the following workers
|
||||
bluesky_get_token($pconfig['uid']);
|
||||
|
||||
Worker::add(['priority' => Worker::PRIORITY_MEDIUM, 'force_priority' => true], 'addon/bluesky/bluesky_timeline.php', $pconfig['uid'], $last);
|
||||
Worker::add(['priority' => Worker::PRIORITY_MEDIUM, 'force_priority' => true], 'addon/bluesky/bluesky_notifications.php', $pconfig['uid'], $last);
|
||||
|
||||
if (DI::pConfig()->get($pconfig['uid'], 'bluesky', 'import_feeds')) {
|
||||
$feeds = bluesky_get_feeds($pconfig['uid']);
|
||||
foreach ($feeds as $feed) {
|
||||
Worker::add(['priority' => Worker::PRIORITY_MEDIUM, 'force_priority' => true], 'addon/bluesky/bluesky_feed.php', $pconfig['uid'], $feed, $last);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$last_clean = DI::keyValue()->get('bluesky_last_clean');
|
||||
if (empty($last_clean) || ($last_clean + 86400 < time())) {
|
||||
Logger::notice('Start contact cleanup');
|
||||
$contacts = DBA::select('account-user-view', ['id', 'pid'], ["`network` = ? AND `uid` != ? AND `rel` = ?", Protocol::BLUESKY, 0, Contact::NOTHING]);
|
||||
while ($contact = DBA::fetch($contacts)) {
|
||||
Worker::add(Worker::PRIORITY_LOW, 'MergeContact', $contact['pid'], $contact['id'], 0);
|
||||
}
|
||||
DBA::close($contacts);
|
||||
DI::keyValue()->set('bluesky_last_clean', time());
|
||||
Logger::notice('Contact cleanup done');
|
||||
}
|
||||
|
||||
Logger::notice('cron_end');
|
||||
|
||||
DI::keyValue()->set('bluesky_last_poll', time());
|
||||
}
|
||||
|
||||
function bluesky_hook_fork(array &$b)
|
||||
{
|
||||
if ($b['name'] != 'notifier_normal') {
|
||||
return;
|
||||
}
|
||||
|
||||
$post = $b['data'];
|
||||
|
||||
if (($post['created'] !== $post['edited']) && !$post['deleted']) {
|
||||
DI::logger()->info('Editing is not supported by the addon');
|
||||
$b['execute'] = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (DI::pConfig()->get($post['uid'], 'bluesky', 'import')) {
|
||||
// Don't post if it isn't a reply to a bluesky post
|
||||
if (($post['parent'] != $post['id']) && !Post::exists(['id' => $post['parent'], 'network' => Protocol::BLUESKY])) {
|
||||
Logger::notice('No bluesky parent found', ['item' => $post['id']]);
|
||||
$b['execute'] = false;
|
||||
return;
|
||||
}
|
||||
} elseif (!strstr($post['postopts'] ?? '', 'bluesky') || ($post['parent'] != $post['id']) || $post['private']) {
|
||||
DI::logger()->info('Activities are never exported when we don\'t import the bluesky timeline', ['uid' => $post['uid']]);
|
||||
$b['execute'] = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_post_local(array &$b)
|
||||
{
|
||||
if ($b['edit']) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!DI::userSession()->getLocalUserId() || (DI::userSession()->getLocalUserId() != $b['uid'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($b['private'] || $b['parent']) {
|
||||
return;
|
||||
}
|
||||
|
||||
$bluesky_post = intval(DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'post'));
|
||||
$bluesky_enable = (($bluesky_post && !empty($_REQUEST['bluesky_enable'])) ? intval($_REQUEST['bluesky_enable']) : 0);
|
||||
|
||||
// if API is used, default to the chosen settings
|
||||
if ($b['api_source'] && intval(DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'post_by_default'))) {
|
||||
$bluesky_enable = 1;
|
||||
}
|
||||
|
||||
if (!$bluesky_enable) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (strlen($b['postopts'])) {
|
||||
$b['postopts'] .= ',';
|
||||
}
|
||||
|
||||
$b['postopts'] .= 'bluesky';
|
||||
}
|
||||
|
||||
function bluesky_send(array &$b)
|
||||
{
|
||||
if (($b['created'] !== $b['edited']) && !$b['deleted']) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($b['gravity'] != Item::GRAVITY_PARENT) {
|
||||
Logger::debug('Got comment', ['item' => $b]);
|
||||
|
||||
if ($b['deleted']) {
|
||||
$uri = bluesky_get_uri_class($b['uri']);
|
||||
if (empty($uri)) {
|
||||
Logger::debug('Not a bluesky post', ['uri' => $b['uri']]);
|
||||
return;
|
||||
}
|
||||
bluesky_delete_post($b['uri'], $b['uid']);
|
||||
return;
|
||||
}
|
||||
|
||||
$root = bluesky_get_uri_class($b['parent-uri']);
|
||||
$parent = bluesky_get_uri_class($b['thr-parent']);
|
||||
|
||||
if (empty($root) || empty($parent)) {
|
||||
Logger::debug('No bluesky post', ['parent' => $b['parent'], 'thr-parent' => $b['thr-parent']]);
|
||||
return;
|
||||
}
|
||||
|
||||
if ($b['gravity'] == Item::GRAVITY_COMMENT) {
|
||||
Logger::debug('Posting comment', ['root' => $root, 'parent' => $parent]);
|
||||
bluesky_create_post($b, $root, $parent);
|
||||
return;
|
||||
} elseif (in_array($b['verb'], [Activity::LIKE, Activity::ANNOUNCE])) {
|
||||
bluesky_create_activity($b, $parent);
|
||||
}
|
||||
return;
|
||||
} elseif ($b['private'] || !strstr($b['postopts'], 'bluesky')) {
|
||||
return;
|
||||
}
|
||||
|
||||
bluesky_create_post($b);
|
||||
}
|
||||
|
||||
function bluesky_create_activity(array $item, stdClass $parent = null)
|
||||
{
|
||||
$uid = $item['uid'];
|
||||
$token = bluesky_get_token($uid);
|
||||
if (empty($token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$did = DI::pConfig()->get($uid, 'bluesky', 'did');
|
||||
|
||||
if ($item['verb'] == Activity::LIKE) {
|
||||
$record = [
|
||||
'subject' => $parent,
|
||||
'createdAt' => DateTimeFormat::utcNow(DateTimeFormat::ATOM),
|
||||
'$type' => 'app.bsky.feed.like'
|
||||
];
|
||||
|
||||
$post = [
|
||||
'collection' => 'app.bsky.feed.like',
|
||||
'repo' => $did,
|
||||
'record' => $record
|
||||
];
|
||||
} elseif ($item['verb'] == Activity::ANNOUNCE) {
|
||||
$record = [
|
||||
'subject' => $parent,
|
||||
'createdAt' => DateTimeFormat::utcNow(DateTimeFormat::ATOM),
|
||||
'$type' => 'app.bsky.feed.repost'
|
||||
];
|
||||
|
||||
$post = [
|
||||
'collection' => 'app.bsky.feed.repost',
|
||||
'repo' => $did,
|
||||
'record' => $record
|
||||
];
|
||||
}
|
||||
|
||||
$activity = bluesky_xrpc_post($uid, 'com.atproto.repo.createRecord', $post);
|
||||
if (empty($activity)) {
|
||||
return;
|
||||
}
|
||||
Logger::debug('Activity done', ['return' => $activity]);
|
||||
$uri = bluesky_get_uri($activity);
|
||||
Item::update(['extid' => $uri], ['id' => $item['id']]);
|
||||
Logger::debug('Set extid', ['id' => $item['id'], 'extid' => $activity]);
|
||||
}
|
||||
|
||||
function bluesky_create_post(array $item, stdClass $root = null, stdClass $parent = null)
|
||||
{
|
||||
$uid = $item['uid'];
|
||||
$token = bluesky_get_token($uid);
|
||||
if (empty($token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Try to fetch the language from the post itself
|
||||
if (!empty($item['language'])) {
|
||||
$language = array_key_first(json_decode($item['language'], true));
|
||||
} else {
|
||||
$language = '';
|
||||
}
|
||||
|
||||
$did = DI::pConfig()->get($uid, 'bluesky', 'did');
|
||||
$urls = bluesky_get_urls(Post\Media::removeFromBody($item['body']));
|
||||
$item['body'] = $urls['body'];
|
||||
|
||||
$msg = Plaintext::getPost($item, 300, false, BBCode::BLUESKY);
|
||||
foreach ($msg['parts'] as $key => $part) {
|
||||
|
||||
$facets = bluesky_get_facets($part, $urls['urls']);
|
||||
|
||||
$record = [
|
||||
'text' => $facets['body'],
|
||||
'$type' => 'app.bsky.feed.post',
|
||||
'createdAt' => DateTimeFormat::utcNow(DateTimeFormat::ATOM),
|
||||
];
|
||||
|
||||
if (!empty($language)) {
|
||||
$record['langs'] = [$language];
|
||||
}
|
||||
|
||||
if (!empty($facets['facets'])) {
|
||||
$record['facets'] = $facets['facets'];
|
||||
}
|
||||
|
||||
if (!empty($root)) {
|
||||
$record['reply'] = ['root' => $root, 'parent' => $parent];
|
||||
}
|
||||
|
||||
if ($key == count($msg['parts']) - 1) {
|
||||
$record = bluesky_add_embed($uid, $msg, $record);
|
||||
if (empty($record)) {
|
||||
if (Worker::getRetrial() < 3) {
|
||||
Worker::defer();
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$post = [
|
||||
'collection' => 'app.bsky.feed.post',
|
||||
'repo' => $did,
|
||||
'record' => $record
|
||||
];
|
||||
|
||||
$parent = bluesky_xrpc_post($uid, 'com.atproto.repo.createRecord', $post);
|
||||
if (empty($parent)) {
|
||||
if ($part == 0) {
|
||||
Worker::defer();
|
||||
}
|
||||
return;
|
||||
}
|
||||
Logger::debug('Posting done', ['return' => $parent]);
|
||||
if (empty($root)) {
|
||||
$root = $parent;
|
||||
}
|
||||
if (($key == 0) && ($item['gravity'] != Item::GRAVITY_PARENT)) {
|
||||
$uri = bluesky_get_uri($parent);
|
||||
Item::update(['extid' => $uri], ['id' => $item['id']]);
|
||||
Logger::debug('Set extid', ['id' => $item['id'], 'extid' => $uri]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_get_urls(string $body): array
|
||||
{
|
||||
// Remove all hashtag and mention links
|
||||
$body = preg_replace("/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism", '$1$3', $body);
|
||||
|
||||
$body = BBCode::expandVideoLinks($body);
|
||||
$urls = [];
|
||||
|
||||
// Search for hash tags
|
||||
if (preg_match_all("/#\[url\=(https?:.*?)\](.*?)\[\/url\]/ism", $body, $matches, PREG_SET_ORDER)) {
|
||||
foreach ($matches as $match) {
|
||||
$text = '#' . $match[2];
|
||||
$urls[] = ['tag' => $match[2], 'text' => $text, 'hash' => $text];
|
||||
$body = str_replace($match[0], $text, $body);
|
||||
}
|
||||
}
|
||||
|
||||
// Search for pure links
|
||||
if (preg_match_all("/\[url\](https?:.*?)\[\/url\]/ism", $body, $matches, PREG_SET_ORDER)) {
|
||||
foreach ($matches as $match) {
|
||||
$text = Strings::getStyledURL($match[1]);
|
||||
$hash = bluesky_get_hash_for_url($match[0], mb_strlen($text));
|
||||
$urls[] = ['url' => $match[1], 'text' => $text, 'hash' => $hash];
|
||||
$body = str_replace($match[0], $hash, $body);
|
||||
}
|
||||
}
|
||||
|
||||
// Search for links with descriptions
|
||||
if (preg_match_all("/\[url\=(https?:.*?)\](.*?)\[\/url\]/ism", $body, $matches, PREG_SET_ORDER)) {
|
||||
foreach ($matches as $match) {
|
||||
if ($match[1] == $match[2]) {
|
||||
$text = Strings::getStyledURL($match[1]);
|
||||
} else {
|
||||
$text = $match[2];
|
||||
}
|
||||
if (mb_strlen($text) < 100) {
|
||||
$hash = bluesky_get_hash_for_url($match[0], mb_strlen($text));
|
||||
$urls[] = ['url' => $match[1], 'text' => $text, 'hash' => $hash];
|
||||
$body = str_replace($match[0], $hash, $body);
|
||||
} else {
|
||||
$text = Strings::getStyledURL($match[1]);
|
||||
$hash = bluesky_get_hash_for_url($match[0], mb_strlen($text));
|
||||
$urls[] = ['url' => $match[1], 'text' => $text, 'hash' => $hash];
|
||||
$body = str_replace($match[0], $text . ' ' . $hash, $body);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ['body' => $body, 'urls' => $urls];
|
||||
}
|
||||
|
||||
function bluesky_get_hash_for_url(string $text, int $linklength): string
|
||||
{
|
||||
if ($linklength <= 10) {
|
||||
return '|' . hash('crc32', $text) . '|';
|
||||
}
|
||||
return substr('|' . hash('crc32', $text) . base64_encode($text), 0, $linklength - 2) . '|';
|
||||
}
|
||||
|
||||
function bluesky_get_facets(string $body, array $urls): array
|
||||
{
|
||||
$facets = [];
|
||||
|
||||
foreach ($urls as $url) {
|
||||
$pos = strpos($body, $url['hash']);
|
||||
if ($pos === false) {
|
||||
continue;
|
||||
}
|
||||
if ($pos > 0) {
|
||||
$prefix = substr($body, 0, $pos);
|
||||
} else {
|
||||
$prefix = '';
|
||||
}
|
||||
|
||||
$body = $prefix . $url['text'] . substr($body, $pos + strlen($url['hash']));
|
||||
|
||||
$facet = new stdClass;
|
||||
$facet->index = new stdClass;
|
||||
$facet->index->byteEnd = $pos + strlen($url['text']);
|
||||
$facet->index->byteStart = $pos;
|
||||
|
||||
$feature = new stdClass;
|
||||
|
||||
$type = '$type';
|
||||
if (!empty($url['tag'])) {
|
||||
$feature->tag = $url['tag'];
|
||||
$feature->$type = 'app.bsky.richtext.facet#tag';
|
||||
} elseif (!empty($url['url'])) {
|
||||
$feature->uri = $url['url'];
|
||||
$feature->$type = 'app.bsky.richtext.facet#link';
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
$facet->features = [$feature];
|
||||
$facets[] = $facet;
|
||||
}
|
||||
|
||||
return ['facets' => $facets, 'body' => $body];
|
||||
}
|
||||
|
||||
function bluesky_add_embed(int $uid, array $msg, array $record): array
|
||||
{
|
||||
if (($msg['type'] != 'link') && !empty($msg['images'])) {
|
||||
$images = [];
|
||||
foreach ($msg['images'] as $image) {
|
||||
if (count($images) == 4) {
|
||||
continue;
|
||||
}
|
||||
$photo = Photo::selectFirst([], ['id' => $image['id']]);
|
||||
$blob = bluesky_upload_blob($uid, $photo);
|
||||
if (empty($blob)) {
|
||||
return [];
|
||||
}
|
||||
$images[] = ['alt' => $image['description'] ?? '', 'image' => $blob];
|
||||
}
|
||||
if (!empty($images)) {
|
||||
$record['embed'] = ['$type' => 'app.bsky.embed.images', 'images' => $images];
|
||||
}
|
||||
} elseif ($msg['type'] == 'link') {
|
||||
$record['embed'] = [
|
||||
'$type' => 'app.bsky.embed.external',
|
||||
'external' => [
|
||||
'uri' => $msg['url'],
|
||||
'title' => $msg['title'] ?? '',
|
||||
'description' => $msg['description'] ?? '',
|
||||
]
|
||||
];
|
||||
if (!empty($msg['image'])) {
|
||||
$photo = Photo::createPhotoForExternalResource($msg['image']);
|
||||
$blob = bluesky_upload_blob($uid, $photo);
|
||||
if (!empty($blob)) {
|
||||
$record['embed']['external']['thumb'] = $blob;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $record;
|
||||
}
|
||||
|
||||
function bluesky_upload_blob(int $uid, array $photo): ?stdClass
|
||||
{
|
||||
$retrial = Worker::getRetrial();
|
||||
$content = Photo::getImageForPhoto($photo);
|
||||
|
||||
$picture = new Image($content, $photo['type']);
|
||||
$height = $picture->getHeight();
|
||||
$width = $picture->getWidth();
|
||||
$size = strlen($content);
|
||||
|
||||
$picture = Photo::resizeToFileSize($picture, BLUESKY_IMAGE_SIZE[$retrial]);
|
||||
$new_height = $picture->getHeight();
|
||||
$new_width = $picture->getWidth();
|
||||
$content = $picture->asString();
|
||||
$new_size = strlen($content);
|
||||
|
||||
Logger::info('Uploading', ['uid' => $uid, 'retrial' => $retrial, 'height' => $new_height, 'width' => $new_width, 'size' => $new_size, 'orig-height' => $height, 'orig-width' => $width, 'orig-size' => $size]);
|
||||
|
||||
$data = bluesky_post($uid, '/xrpc/com.atproto.repo.uploadBlob', $content, ['Content-type' => $photo['type'], 'Authorization' => ['Bearer ' . bluesky_get_token($uid)]]);
|
||||
if (empty($data)) {
|
||||
Logger::info('Uploading failed', ['uid' => $uid, 'retrial' => $retrial, 'height' => $new_height, 'width' => $new_width, 'size' => $new_size, 'orig-height' => $height, 'orig-width' => $width, 'orig-size' => $size]);
|
||||
return null;
|
||||
}
|
||||
|
||||
Logger::debug('Uploaded blob', ['return' => $data, 'uid' => $uid, 'retrial' => $retrial, 'height' => $new_height, 'width' => $new_width, 'size' => $new_size, 'orig-height' => $height, 'orig-width' => $width, 'orig-size' => $size]);
|
||||
return $data->blob;
|
||||
}
|
||||
|
||||
function bluesky_delete_post(string $uri, int $uid)
|
||||
{
|
||||
$parts = bluesky_get_uri_parts($uri);
|
||||
if (empty($parts)) {
|
||||
Logger::debug('No uri delected', ['uri' => $uri]);
|
||||
return;
|
||||
}
|
||||
bluesky_xrpc_post($uid, 'com.atproto.repo.deleteRecord', $parts);
|
||||
Logger::debug('Deleted', ['parts' => $parts]);
|
||||
}
|
||||
|
||||
function bluesky_fetch_timeline(int $uid, int $last_poll)
|
||||
{
|
||||
$data = bluesky_xrpc_get($uid, 'app.bsky.feed.getTimeline');
|
||||
if (empty($data)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (empty($data->feed)) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (array_reverse($data->feed) as $entry) {
|
||||
bluesky_process_post($entry->post, $uid, Item::PR_NONE, 0, $last_poll);
|
||||
if (!empty($entry->reason)) {
|
||||
bluesky_process_reason($entry->reason, bluesky_get_uri($entry->post), $uid);
|
||||
}
|
||||
}
|
||||
|
||||
// @todo Support paging
|
||||
// [cursor] => 1684670516000::bafyreidq3ilwslmlx72jf5vrk367xcc63s6lrhzlyup2bi3zwcvso6w2vi
|
||||
}
|
||||
|
||||
function bluesky_process_reason(stdClass $reason, string $uri, int $uid)
|
||||
{
|
||||
$type = '$type';
|
||||
if ($reason->$type != 'app.bsky.feed.defs#reasonRepost') {
|
||||
return;
|
||||
}
|
||||
|
||||
$contact = bluesky_get_contact($reason->by, $uid, $uid);
|
||||
|
||||
$item = [
|
||||
'network' => Protocol::BLUESKY,
|
||||
'uid' => $uid,
|
||||
'wall' => false,
|
||||
'uri' => $reason->by->did . '/app.bsky.feed.repost/' . $reason->indexedAt,
|
||||
'private' => Item::UNLISTED,
|
||||
'verb' => Activity::POST,
|
||||
'contact-id' => $contact['id'],
|
||||
'author-name' => $contact['name'],
|
||||
'author-link' => $contact['url'],
|
||||
'author-avatar' => $contact['avatar'],
|
||||
'verb' => Activity::ANNOUNCE,
|
||||
'body' => Activity::ANNOUNCE,
|
||||
'gravity' => Item::GRAVITY_ACTIVITY,
|
||||
'object-type' => Activity\ObjectType::NOTE,
|
||||
'thr-parent' => $uri,
|
||||
];
|
||||
|
||||
if (Post::exists(['uri' => $item['uri'], 'uid' => $uid])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$item['guid'] = Item::guidFromUri($item['uri'], $contact['alias']);
|
||||
$item['owner-name'] = $item['author-name'];
|
||||
$item['owner-link'] = $item['author-link'];
|
||||
$item['owner-avatar'] = $item['author-avatar'];
|
||||
if (Item::insert($item)) {
|
||||
$cdata = Contact::getPublicAndUserContactID($contact['id'], $uid);
|
||||
Item::update(['post-reason' => Item::PR_ANNOUNCEMENT, 'causer-id' => $cdata['public']], ['uri' => $uri, 'uid' => $uid]);
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_fetch_notifications(int $uid, int $last_poll)
|
||||
{
|
||||
$data = bluesky_xrpc_get($uid, 'app.bsky.notification.listNotifications');
|
||||
if (empty($data->notifications)) {
|
||||
return;
|
||||
}
|
||||
foreach ($data->notifications as $notification) {
|
||||
$uri = bluesky_get_uri($notification);
|
||||
if (Post::exists(['uri' => $uri, 'uid' => $uid]) || Post::exists(['extid' => $uri, 'uid' => $uid])) {
|
||||
Logger::debug('Notification already processed', ['uid' => $uid, 'reason' => $notification->reason, 'uri' => $uri, 'indexedAt' => $notification->indexedAt]);
|
||||
continue;
|
||||
}
|
||||
Logger::debug('Process notification', ['uid' => $uid, 'reason' => $notification->reason, 'uri' => $uri, 'indexedAt' => $notification->indexedAt]);
|
||||
switch ($notification->reason) {
|
||||
case 'like':
|
||||
$item = bluesky_get_header($notification, $uri, $uid, $uid);
|
||||
$item['gravity'] = Item::GRAVITY_ACTIVITY;
|
||||
$item['body'] = $item['verb'] = Activity::LIKE;
|
||||
$item['thr-parent'] = bluesky_get_uri($notification->record->subject);
|
||||
$item['thr-parent'] = bluesky_fetch_missing_post($item['thr-parent'], $uid, $uid, $item['contact-id'], 0, $last_poll);
|
||||
if (!empty($item['thr-parent'])) {
|
||||
$data = Item::insert($item);
|
||||
Logger::debug('Got like', ['uid' => $uid, 'result' => $data, 'uri' => $uri]);
|
||||
} else {
|
||||
Logger::info('Thread parent not found', ['uid' => $uid, 'parent' => $item['thr-parent'], 'uri' => $uri]);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'repost':
|
||||
$item = bluesky_get_header($notification, $uri, $uid, $uid);
|
||||
$item['gravity'] = Item::GRAVITY_ACTIVITY;
|
||||
$item['body'] = $item['verb'] = Activity::ANNOUNCE;
|
||||
$item['thr-parent'] = bluesky_get_uri($notification->record->subject);
|
||||
$item['thr-parent'] = bluesky_fetch_missing_post($item['thr-parent'], $uid, $uid, $item['contact-id'], 0, $last_poll);
|
||||
if (!empty($item['thr-parent'])) {
|
||||
$data = Item::insert($item);
|
||||
Logger::debug('Got repost', ['uid' => $uid, 'result' => $data, 'uri' => $uri]);
|
||||
} else {
|
||||
Logger::info('Thread parent not found', ['uid' => $uid, 'parent' => $item['thr-parent'], 'uri' => $uri]);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'follow':
|
||||
$contact = bluesky_get_contact($notification->author, $uid, $uid);
|
||||
Logger::debug('New follower', ['uid' => $uid, 'nick' => $contact['nick'], 'uri' => $uri]);
|
||||
break;
|
||||
|
||||
case 'mention':
|
||||
$data = bluesky_process_post($notification, $uid, Item::PR_PUSHED, 0, $last_poll);
|
||||
Logger::debug('Got mention', ['uid' => $uid, 'result' => $data, 'uri' => $uri]);
|
||||
break;
|
||||
|
||||
case 'reply':
|
||||
$data = bluesky_process_post($notification, $uid, Item::PR_PUSHED, 0, $last_poll);
|
||||
Logger::debug('Got reply', ['uid' => $uid, 'result' => $data, 'uri' => $uri]);
|
||||
break;
|
||||
|
||||
case 'quote':
|
||||
$data = bluesky_process_post($notification, $uid, Item::PR_PUSHED, 0, $last_poll);
|
||||
Logger::debug('Got quote', ['uid' => $uid, 'result' => $data, 'uri' => $uri]);
|
||||
break;
|
||||
|
||||
default:
|
||||
Logger::notice('Unhandled reason', ['reason' => $notification->reason, 'uri' => $uri]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_fetch_feed(int $uid, string $feed, int $last_poll)
|
||||
{
|
||||
$data = bluesky_xrpc_get($uid, 'app.bsky.feed.getFeed', ['feed' => $feed]);
|
||||
if (empty($data)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (empty($data->feed)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$feeddata = bluesky_xrpc_get($uid, 'app.bsky.feed.getFeedGenerator', ['feed' => $feed]);
|
||||
if (!empty($feeddata)) {
|
||||
$feedurl = $feeddata->view->uri;
|
||||
$feedname = $feeddata->view->displayName;
|
||||
} else {
|
||||
$feedurl = $feed;
|
||||
$feedname = $feed;
|
||||
}
|
||||
|
||||
foreach (array_reverse($data->feed) as $entry) {
|
||||
$contact = bluesky_get_contact($entry->post->author, 0, $uid);
|
||||
$languages = $entry->post->record->langs ?? [];
|
||||
|
||||
if (!Relay::isWantedLanguage($entry->post->record->text, 0, $contact['id'] ?? 0, $languages)) {
|
||||
Logger::debug('Unwanted language detected', ['text' => $entry->post->record->text]);
|
||||
continue;
|
||||
}
|
||||
$id = bluesky_process_post($entry->post, $uid, Item::PR_TAG, 0, $last_poll);
|
||||
if (!empty($id)) {
|
||||
$post = Post::selectFirst(['uri-id'], ['id' => $id]);
|
||||
if (!empty($post['uri-id'])) {
|
||||
$stored = Post\Category::storeFileByURIId($post['uri-id'], $uid, Post\Category::SUBCRIPTION, $feedname, $feedurl);
|
||||
Logger::debug('Stored tag subscription for user', ['uri-id' => $post['uri-id'], 'uid' => $uid, 'name' => $feedname, 'url' => $feedurl, 'stored' => $stored]);
|
||||
} else {
|
||||
Logger::notice('Post not found', ['id' => $id, 'entry' => $entry]);
|
||||
}
|
||||
}
|
||||
if (!empty($entry->reason)) {
|
||||
bluesky_process_reason($entry->reason, bluesky_get_uri($entry->post), $uid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function bluesky_process_post(stdClass $post, int $uid, int $post_reason, int $level, int $last_poll): int
|
||||
{
|
||||
$uri = bluesky_get_uri($post);
|
||||
|
||||
if ($id = Post::selectFirst(['id'], ['uri' => $uri, 'uid' => $uid])) {
|
||||
return $id['id'];
|
||||
}
|
||||
|
||||
if ($id = Post::selectFirst(['id'], ['extid' => $uri, 'uid' => $uid])) {
|
||||
return $id['id'];
|
||||
}
|
||||
|
||||
Logger::debug('Importing post', ['uid' => $uid, 'indexedAt' => $post->indexedAt, 'uri' => $post->uri, 'cid' => $post->cid, 'root' => $post->record->reply->root ?? '']);
|
||||
|
||||
$item = bluesky_get_header($post, $uri, $uid, $uid);
|
||||
$item = bluesky_get_content($item, $post->record, $uri, $uid, $uid, $level, $last_poll);
|
||||
if (empty($item)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!empty($post->embed)) {
|
||||
$item = bluesky_add_media($post->embed, $item, $uid, $level, $last_poll);
|
||||
}
|
||||
|
||||
if (empty($item['post-reason'])) {
|
||||
$item['post-reason'] = $post_reason;
|
||||
}
|
||||
|
||||
return Item::insert($item);
|
||||
}
|
||||
|
||||
function bluesky_get_header(stdClass $post, string $uri, int $uid, int $fetch_uid): array
|
||||
{
|
||||
$parts = bluesky_get_uri_parts($uri);
|
||||
if (empty($post->author)) {
|
||||
return [];
|
||||
}
|
||||
$contact = bluesky_get_contact($post->author, $uid, $fetch_uid);
|
||||
$item = [
|
||||
'network' => Protocol::BLUESKY,
|
||||
'uid' => $uid,
|
||||
'wall' => false,
|
||||
'uri' => $uri,
|
||||
'guid' => $post->cid,
|
||||
'private' => Item::UNLISTED,
|
||||
'verb' => Activity::POST,
|
||||
'contact-id' => $contact['id'],
|
||||
'author-name' => $contact['name'],
|
||||
'author-link' => $contact['url'],
|
||||
'author-avatar' => $contact['avatar'],
|
||||
'plink' => $contact['alias'] . '/post/' . $parts->rkey,
|
||||
'source' => json_encode($post),
|
||||
];
|
||||
|
||||
$item['uri-id'] = ItemURI::getIdByURI($uri);
|
||||
$item['owner-name'] = $item['author-name'];
|
||||
$item['owner-link'] = $item['author-link'];
|
||||
$item['owner-avatar'] = $item['author-avatar'];
|
||||
|
||||
if (in_array($contact['rel'], [Contact::SHARING, Contact::FRIEND])) {
|
||||
$item['post-reason'] = Item::PR_FOLLOWER;
|
||||
}
|
||||
|
||||
return $item;
|
||||
}
|
||||
|
||||
function bluesky_get_content(array $item, stdClass $record, string $uri, int $uid, int $fetch_uid, int $level, int $last_poll): array
|
||||
{
|
||||
if (empty($item)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
if (!empty($record->reply)) {
|
||||
$item['parent-uri'] = bluesky_get_uri($record->reply->root);
|
||||
if ($item['parent-uri'] != $uri) {
|
||||
$item['parent-uri'] = bluesky_fetch_missing_post($item['parent-uri'], $uid, $fetch_uid, $item['contact-id'], $level, $last_poll);
|
||||
if (empty($item['parent-uri'])) {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
$item['thr-parent'] = bluesky_get_uri($record->reply->parent);
|
||||
if (!in_array($item['thr-parent'], [$uri, $item['parent-uri']])) {
|
||||
$item['thr-parent'] = bluesky_fetch_missing_post($item['thr-parent'], $uid, $fetch_uid, $item['contact-id'], $level, $last_poll, $item['parent-uri']);
|
||||
if (empty($item['thr-parent'])) {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$item['body'] = bluesky_get_text($record, $item['uri-id']);
|
||||
$item['created'] = DateTimeFormat::utc($record->createdAt, DateTimeFormat::MYSQL);
|
||||
$item['transmitted-languages'] = $record->langs ?? [];
|
||||
|
||||
if (($last_poll != 0) && strtotime($item['created']) > $last_poll) {
|
||||
$item['received'] = $item['created'];
|
||||
}
|
||||
|
||||
return $item;
|
||||
}
|
||||
|
||||
function bluesky_get_text(stdClass $record, int $uri_id): string
|
||||
{
|
||||
$text = $record->text ?? '';
|
||||
|
||||
if (empty($record->facets)) {
|
||||
return $text;
|
||||
}
|
||||
|
||||
$facets = [];
|
||||
foreach ($record->facets as $facet) {
|
||||
$facets[$facet->index->byteStart] = $facet;
|
||||
}
|
||||
krsort($facets);
|
||||
|
||||
foreach ($facets as $facet) {
|
||||
$prefix = substr($text, 0, $facet->index->byteStart);
|
||||
$linktext = substr($text, $facet->index->byteStart, $facet->index->byteEnd - $facet->index->byteStart);
|
||||
$suffix = substr($text, $facet->index->byteEnd);
|
||||
|
||||
$url = '';
|
||||
$type = '$type';
|
||||
foreach ($facet->features as $feature) {
|
||||
|
||||
switch ($feature->$type) {
|
||||
case 'app.bsky.richtext.facet#link':
|
||||
$url = $feature->uri;
|
||||
break;
|
||||
|
||||
case 'app.bsky.richtext.facet#mention':
|
||||
$contact = Contact::getByURL($feature->did, null, ['id']);
|
||||
if (!empty($contact['id'])) {
|
||||
$url = DI::baseUrl() . '/contact/' . $contact['id'];
|
||||
if (substr($linktext, 0, 1) == '@') {
|
||||
$prefix .= '@';
|
||||
$linktext = substr($linktext, 1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'app.bsky.richtext.facet#tag';
|
||||
Tag::store($uri_id, Tag::HASHTAG, $feature->tag);
|
||||
$url = DI::baseUrl() . '/search?tag=' . urlencode($feature->tag);
|
||||
$linktext = '#' . $feature->tag;
|
||||
break;
|
||||
|
||||
default:
|
||||
Logger::notice('Unhandled feature type', ['type' => $feature->$type, 'feature' => $feature, 'record' => $record]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!empty($url)) {
|
||||
$text = $prefix . '[url=' . $url . ']' . $linktext . '[/url]' . $suffix;
|
||||
}
|
||||
}
|
||||
return $text;
|
||||
}
|
||||
|
||||
function bluesky_add_media(stdClass $embed, array $item, int $fetch_uid, int $level, int $last_poll): array
|
||||
{
|
||||
$type = '$type';
|
||||
switch ($embed->$type) {
|
||||
case 'app.bsky.embed.images#view':
|
||||
foreach ($embed->images as $image) {
|
||||
$media = [
|
||||
'uri-id' => $item['uri-id'],
|
||||
'type' => Post\Media::IMAGE,
|
||||
'url' => $image->fullsize,
|
||||
'preview' => $image->thumb,
|
||||
'description' => $image->alt,
|
||||
];
|
||||
Post\Media::insert($media);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'app.bsky.embed.external#view':
|
||||
$media = [
|
||||
'uri-id' => $item['uri-id'],
|
||||
'type' => Post\Media::HTML,
|
||||
'url' => $embed->external->uri,
|
||||
'name' => $embed->external->title,
|
||||
'description' => $embed->external->description,
|
||||
];
|
||||
Post\Media::insert($media);
|
||||
break;
|
||||
|
||||
case 'app.bsky.embed.record#view':
|
||||
$uri = bluesky_get_uri($embed->record);
|
||||
$shared = Post::selectFirst(['uri-id'], ['uri' => $uri, 'uid' => $item['uid']]);
|
||||
if (empty($shared)) {
|
||||
if (empty($embed->record->value)) {
|
||||
Logger::info('Record has got no value', ['record' => $embed->record]);
|
||||
break;
|
||||
}
|
||||
$shared = bluesky_get_header($embed->record, $uri, 0, $fetch_uid);
|
||||
$shared = bluesky_get_content($shared, $embed->record->value, $uri, $item['uid'], $fetch_uid, $level, $last_poll);
|
||||
if (!empty($shared)) {
|
||||
if (!empty($embed->record->embeds)) {
|
||||
foreach ($embed->record->embeds as $single) {
|
||||
$shared = bluesky_add_media($single, $shared, $fetch_uid, $level, $last_poll);
|
||||
}
|
||||
}
|
||||
Item::insert($shared);
|
||||
}
|
||||
}
|
||||
if (!empty($shared['uri-id'])) {
|
||||
$item['quote-uri-id'] = $shared['uri-id'];
|
||||
}
|
||||
break;
|
||||
|
||||
case 'app.bsky.embed.recordWithMedia#view':
|
||||
$uri = bluesky_get_uri($embed->record->record);
|
||||
$shared = Post::selectFirst(['uri-id'], ['uri' => $uri, 'uid' => $item['uid']]);
|
||||
if (empty($shared)) {
|
||||
$shared = bluesky_get_header($embed->record->record, $uri, 0, $fetch_uid);
|
||||
$shared = bluesky_get_content($shared, $embed->record->record->value, $uri, $item['uid'], $fetch_uid, $level, $last_poll);
|
||||
if (!empty($shared)) {
|
||||
if (!empty($embed->record->record->embeds)) {
|
||||
foreach ($embed->record->record->embeds as $single) {
|
||||
$shared = bluesky_add_media($single, $shared, $fetch_uid, $level, $last_poll);
|
||||
}
|
||||
}
|
||||
Item::insert($shared);
|
||||
}
|
||||
}
|
||||
if (!empty($shared['uri-id'])) {
|
||||
$item['quote-uri-id'] = $shared['uri-id'];
|
||||
}
|
||||
|
||||
if (!empty($embed->media)) {
|
||||
$item = bluesky_add_media($embed->media, $item, $fetch_uid, $level, $last_poll);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
Logger::notice('Unhandled embed type', ['type' => $embed->$type, 'embed' => $embed]);
|
||||
break;
|
||||
}
|
||||
return $item;
|
||||
}
|
||||
|
||||
function bluesky_get_uri(stdClass $post): string
|
||||
{
|
||||
if (empty($post->cid)) {
|
||||
Logger::info('Invalid URI', ['post' => $post]);
|
||||
return '';
|
||||
}
|
||||
return $post->uri . ':' . $post->cid;
|
||||
}
|
||||
|
||||
function bluesky_get_uri_class(string $uri): ?stdClass
|
||||
{
|
||||
if (empty($uri)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$elements = explode(':', $uri);
|
||||
if (empty($elements) || ($elements[0] != 'at')) {
|
||||
$post = Post::selectFirstPost(['extid'], ['uri' => $uri]);
|
||||
return bluesky_get_uri_class($post['extid'] ?? '');
|
||||
}
|
||||
|
||||
$class = new stdClass;
|
||||
|
||||
$class->cid = array_pop($elements);
|
||||
$class->uri = implode(':', $elements);
|
||||
|
||||
if ((substr_count($class->uri, '/') == 2) && (substr_count($class->cid, '/') == 2)) {
|
||||
$class->uri .= ':' . $class->cid;
|
||||
$class->cid = '';
|
||||
}
|
||||
|
||||
return $class;
|
||||
}
|
||||
|
||||
function bluesky_get_uri_parts(string $uri): ?stdClass
|
||||
{
|
||||
$class = bluesky_get_uri_class($uri);
|
||||
if (empty($class)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$parts = explode('/', substr($class->uri, 5));
|
||||
|
||||
$class = new stdClass;
|
||||
|
||||
$class->repo = $parts[0];
|
||||
$class->collection = $parts[1];
|
||||
$class->rkey = $parts[2];
|
||||
|
||||
return $class;
|
||||
}
|
||||
|
||||
function bluesky_fetch_missing_post(string $uri, int $uid, int $fetch_uid, int $causer, int $level, int $last_poll = 0, string $fallback = ''): string
|
||||
{
|
||||
$fetched_uri = bluesky_fetch_post($uri, $uid);
|
||||
if (!empty($fetched_uri)) {
|
||||
return $fetched_uri;
|
||||
}
|
||||
|
||||
if (++$level > 100) {
|
||||
Logger::info('Recursion level too deep', ['level' => $level, 'uid' => $uid, 'uri' => $uri, 'fallback' => $fallback]);
|
||||
// When the level is too deep we will fallback to the parent uri.
|
||||
// Allthough the threading won't be correct, we at least had stored all posts and won't try again
|
||||
return $fallback;
|
||||
}
|
||||
|
||||
$class = bluesky_get_uri_class($uri);
|
||||
$fetch_uri = $class->uri;
|
||||
|
||||
Logger::debug('Fetch missing post', ['level' => $level, 'uid' => $uid, 'uri' => $uri]);
|
||||
$data = bluesky_xrpc_get($fetch_uid, 'app.bsky.feed.getPostThread', ['uri' => $fetch_uri]);
|
||||
if (empty($data)) {
|
||||
Logger::info('Thread was not fetched', ['level' => $level, 'uid' => $uid, 'uri' => $uri, 'fallback' => $fallback]);
|
||||
return $fallback;
|
||||
}
|
||||
|
||||
Logger::debug('Reply count', ['level' => $level, 'uid' => $uid, 'uri' => $uri]);
|
||||
|
||||
if ($causer != 0) {
|
||||
$cdata = Contact::getPublicAndUserContactID($causer, $uid);
|
||||
} else {
|
||||
$cdata = [];
|
||||
}
|
||||
|
||||
return bluesky_process_thread($data->thread, $uid, $fetch_uid, $cdata, $level, $last_poll);
|
||||
}
|
||||
|
||||
function bluesky_fetch_post(string $uri, int $uid): string
|
||||
{
|
||||
if (Post::exists(['uri' => $uri, 'uid' => [$uid, 0]])) {
|
||||
Logger::debug('Post exists', ['uri' => $uri]);
|
||||
return $uri;
|
||||
}
|
||||
|
||||
$reply = Post::selectFirst(['uri'], ['extid' => $uri, 'uid' => [$uid, 0]]);
|
||||
if (!empty($reply['uri'])) {
|
||||
Logger::debug('Post with extid exists', ['uri' => $uri]);
|
||||
return $reply['uri'];
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
function bluesky_process_thread(stdClass $thread, int $uid, int $fetch_uid, array $cdata, int $level, int $last_poll): string
|
||||
{
|
||||
if (empty($thread->post)) {
|
||||
Logger::info('Invalid post', ['post' => $thread]);
|
||||
return '';
|
||||
}
|
||||
$uri = bluesky_get_uri($thread->post);
|
||||
|
||||
$fetched_uri = bluesky_fetch_post($uri, $uid);
|
||||
if (empty($fetched_uri)) {
|
||||
Logger::debug('Process missing post', ['uri' => $uri]);
|
||||
$item = bluesky_get_header($thread->post, $uri, $uid, $uid);
|
||||
$item = bluesky_get_content($item, $thread->post->record, $uri, $uid, $fetch_uid, $level, $last_poll);
|
||||
if (!empty($item)) {
|
||||
$item['post-reason'] = Item::PR_FETCHED;
|
||||
|
||||
if (!empty($cdata['public'])) {
|
||||
$item['causer-id'] = $cdata['public'];
|
||||
}
|
||||
|
||||
if (!empty($thread->post->embed)) {
|
||||
$item = bluesky_add_media($thread->post->embed, $item, $uid, $level, $last_poll);
|
||||
}
|
||||
$id = Item::insert($item);
|
||||
if (!$id) {
|
||||
Logger::info('Item has not not been stored', ['uri' => $uri]);
|
||||
return '';
|
||||
}
|
||||
Logger::debug('Stored item', ['id' => $id, 'uri' => $uri]);
|
||||
} else {
|
||||
Logger::info('Post has not not been fetched', ['uri' => $uri]);
|
||||
return '';
|
||||
}
|
||||
} else {
|
||||
Logger::debug('Post exists', ['uri' => $uri]);
|
||||
$uri = $fetched_uri;
|
||||
}
|
||||
|
||||
foreach ($thread->replies ?? [] as $reply) {
|
||||
$reply_uri = bluesky_process_thread($reply, $uid, $fetch_uid, $cdata, $level, $last_poll);
|
||||
Logger::debug('Reply has been processed', ['uri' => $uri, 'reply' => $reply_uri]);
|
||||
}
|
||||
|
||||
return $uri;
|
||||
}
|
||||
|
||||
function bluesky_get_contact(stdClass $author, int $uid, int $fetch_uid): array
|
||||
{
|
||||
$condition = ['network' => Protocol::BLUESKY, 'uid' => 0, 'url' => $author->did];
|
||||
$contact = Contact::selectFirst(['id', 'updated'], $condition);
|
||||
|
||||
$update = empty($contact) || $contact['updated'] < DateTimeFormat::utc('now -24 hours');
|
||||
|
||||
$public_fields = $fields = bluesky_get_contact_fields($author, $fetch_uid, $update);
|
||||
|
||||
$public_fields['uid'] = 0;
|
||||
$public_fields['rel'] = Contact::NOTHING;
|
||||
|
||||
if (empty($contact)) {
|
||||
$cid = Contact::insert($public_fields);
|
||||
} else {
|
||||
$cid = $contact['id'];
|
||||
Contact::update($public_fields, ['id' => $cid], true);
|
||||
}
|
||||
|
||||
if ($uid != 0) {
|
||||
$condition = ['network' => Protocol::BLUESKY, 'uid' => $uid, 'url' => $author->did];
|
||||
|
||||
$contact = Contact::selectFirst(['id', 'rel', 'uid'], $condition);
|
||||
if (!isset($fields['rel']) && isset($contact['rel'])) {
|
||||
$fields['rel'] = $contact['rel'];
|
||||
} elseif (!isset($fields['rel'])) {
|
||||
$fields['rel'] = Contact::NOTHING;
|
||||
}
|
||||
}
|
||||
|
||||
if (($uid != 0) && ($fields['rel'] != Contact::NOTHING)) {
|
||||
if (empty($contact)) {
|
||||
$cid = Contact::insert($fields);
|
||||
} else {
|
||||
$cid = $contact['id'];
|
||||
Contact::update($fields, ['id' => $cid], true);
|
||||
}
|
||||
Logger::debug('Get user contact', ['id' => $cid, 'uid' => $uid, 'update' => $update]);
|
||||
} else {
|
||||
Logger::debug('Get public contact', ['id' => $cid, 'uid' => $uid, 'update' => $update]);
|
||||
}
|
||||
if (!empty($author->avatar)) {
|
||||
Contact::updateAvatar($cid, $author->avatar);
|
||||
}
|
||||
|
||||
return Contact::getById($cid);
|
||||
}
|
||||
|
||||
function bluesky_get_contact_fields(stdClass $author, int $uid, bool $update): array
|
||||
{
|
||||
$fields = [
|
||||
'uid' => $uid,
|
||||
'network' => Protocol::BLUESKY,
|
||||
'priority' => 1,
|
||||
'writable' => true,
|
||||
'blocked' => false,
|
||||
'readonly' => false,
|
||||
'pending' => false,
|
||||
'url' => $author->did,
|
||||
'nurl' => $author->did,
|
||||
'alias' => BLUESKY_WEB . '/profile/' . $author->handle,
|
||||
'name' => $author->displayName ?? $author->handle,
|
||||
'nick' => $author->handle,
|
||||
'addr' => $author->handle,
|
||||
];
|
||||
|
||||
if (!$update) {
|
||||
Logger::debug('Got contact fields', ['uid' => $uid, 'url' => $fields['url']]);
|
||||
return $fields;
|
||||
}
|
||||
|
||||
$fields['baseurl'] = bluesky_get_pds($author->did);
|
||||
if (!empty($fields['baseurl'])) {
|
||||
GServer::check($fields['baseurl'], Protocol::BLUESKY);
|
||||
$fields['gsid'] = GServer::getID($fields['baseurl'], true);
|
||||
}
|
||||
|
||||
$data = bluesky_xrpc_get($uid, 'app.bsky.actor.getProfile', ['actor' => $author->did]);
|
||||
if (empty($data)) {
|
||||
Logger::debug('Error fetching contact fields', ['uid' => $uid, 'url' => $fields['url']]);
|
||||
return $fields;
|
||||
}
|
||||
|
||||
$fields['updated'] = DateTimeFormat::utcNow(DateTimeFormat::MYSQL);
|
||||
|
||||
if (!empty($data->description)) {
|
||||
$fields['about'] = HTML::toBBCode($data->description);
|
||||
}
|
||||
|
||||
if (!empty($data->banner)) {
|
||||
$fields['header'] = $data->banner;
|
||||
}
|
||||
|
||||
if (!empty($data->viewer)) {
|
||||
if (!empty($data->viewer->following) && !empty($data->viewer->followedBy)) {
|
||||
$fields['rel'] = Contact::FRIEND;
|
||||
} elseif (!empty($data->viewer->following) && empty($data->viewer->followedBy)) {
|
||||
$fields['rel'] = Contact::SHARING;
|
||||
} elseif (empty($data->viewer->following) && !empty($data->viewer->followedBy)) {
|
||||
$fields['rel'] = Contact::FOLLOWER;
|
||||
} else {
|
||||
$fields['rel'] = Contact::NOTHING;
|
||||
}
|
||||
}
|
||||
|
||||
Logger::debug('Got updated contact fields', ['uid' => $uid, 'url' => $fields['url']]);
|
||||
return $fields;
|
||||
}
|
||||
|
||||
function bluesky_get_feeds(int $uid): array
|
||||
{
|
||||
$type = '$type';
|
||||
$preferences = bluesky_get_preferences($uid);
|
||||
foreach ($preferences->preferences as $preference) {
|
||||
if ($preference->$type == 'app.bsky.actor.defs#savedFeedsPref') {
|
||||
return $preference->pinned ?? [];
|
||||
}
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
function bluesky_get_preferences(int $uid): stdClass
|
||||
{
|
||||
$cachekey = 'bluesky:preferences:' . $uid;
|
||||
$data = DI::cache()->get($cachekey);
|
||||
if (!is_null($data)) {
|
||||
return $data;
|
||||
}
|
||||
|
||||
$data = bluesky_xrpc_get($uid, 'app.bsky.actor.getPreferences');
|
||||
|
||||
DI::cache()->set($cachekey, $data, Duration::HOUR);
|
||||
return $data;
|
||||
}
|
||||
|
||||
function bluesky_get_did(string $handle): string
|
||||
{
|
||||
$data = bluesky_get(BLUESKY_PDS . '/xrpc/com.atproto.identity.resolveHandle?handle=' . urlencode($handle));
|
||||
if (empty($data)) {
|
||||
return '';
|
||||
}
|
||||
Logger::debug('Got DID', ['return' => $data]);
|
||||
return $data->did;
|
||||
}
|
||||
|
||||
function bluesky_get_user_pds(int $uid): string
|
||||
{
|
||||
$pds = DI::pConfig()->get($uid, 'bluesky', 'pds');
|
||||
if (!empty($pds)) {
|
||||
return $pds;
|
||||
}
|
||||
$did = DI::pConfig()->get($uid, 'bluesky', 'did');
|
||||
if (empty($did)) {
|
||||
Logger::notice('Empty did for user', ['uid' => $uid]);
|
||||
return '';
|
||||
}
|
||||
$pds = bluesky_get_pds($did);
|
||||
DI::pConfig()->set($uid, 'bluesky', 'pds', $pds);
|
||||
return $pds;
|
||||
}
|
||||
|
||||
function bluesky_get_pds(string $did): ?string
|
||||
{
|
||||
$data = bluesky_get(BLUESKY_DIRECTORY . '/' . $did);
|
||||
if (empty($data) || empty($data->service)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
foreach ($data->service as $service) {
|
||||
if (($service->id == '#atproto_pds') && ($service->type == 'AtprotoPersonalDataServer') && !empty($service->serviceEndpoint)) {
|
||||
return $service->serviceEndpoint;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function bluesky_get_token(int $uid): string
|
||||
{
|
||||
$token = DI::pConfig()->get($uid, 'bluesky', 'access_token');
|
||||
$created = DI::pConfig()->get($uid, 'bluesky', 'token_created');
|
||||
if (empty($token)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if ($created + 300 < time()) {
|
||||
return bluesky_refresh_token($uid);
|
||||
}
|
||||
return $token;
|
||||
}
|
||||
|
||||
function bluesky_refresh_token(int $uid): string
|
||||
{
|
||||
$token = DI::pConfig()->get($uid, 'bluesky', 'refresh_token');
|
||||
|
||||
$data = bluesky_post($uid, '/xrpc/com.atproto.server.refreshSession', '', ['Authorization' => ['Bearer ' . $token]]);
|
||||
if (empty($data)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
Logger::debug('Refreshed token', ['return' => $data]);
|
||||
DI::pConfig()->set($uid, 'bluesky', 'access_token', $data->accessJwt);
|
||||
DI::pConfig()->set($uid, 'bluesky', 'refresh_token', $data->refreshJwt);
|
||||
DI::pConfig()->set($uid, 'bluesky', 'token_created', time());
|
||||
return $data->accessJwt;
|
||||
}
|
||||
|
||||
function bluesky_create_token(int $uid, string $password): string
|
||||
{
|
||||
$did = DI::pConfig()->get($uid, 'bluesky', 'did');
|
||||
|
||||
$data = bluesky_post($uid, '/xrpc/com.atproto.server.createSession', json_encode(['identifier' => $did, 'password' => $password]), ['Content-type' => 'application/json']);
|
||||
if (empty($data)) {
|
||||
DI::pConfig()->set($uid, 'bluesky', 'status', BLUEKSY_STATUS_TOKEN_FAIL);
|
||||
return '';
|
||||
}
|
||||
|
||||
Logger::debug('Created token', ['return' => $data]);
|
||||
DI::pConfig()->set($uid, 'bluesky', 'access_token', $data->accessJwt);
|
||||
DI::pConfig()->set($uid, 'bluesky', 'refresh_token', $data->refreshJwt);
|
||||
DI::pConfig()->set($uid, 'bluesky', 'token_created', time());
|
||||
DI::pConfig()->set($uid, 'bluesky', 'status', BLUEKSY_STATUS_TOKEN_OK);
|
||||
return $data->accessJwt;
|
||||
}
|
||||
|
||||
function bluesky_xrpc_post(int $uid, string $url, $parameters): ?stdClass
|
||||
{
|
||||
return bluesky_post($uid, '/xrpc/' . $url, json_encode($parameters), ['Content-type' => 'application/json', 'Authorization' => ['Bearer ' . bluesky_get_token($uid)]]);
|
||||
}
|
||||
|
||||
function bluesky_post(int $uid, string $url, string $params, array $headers): ?stdClass
|
||||
{
|
||||
try {
|
||||
$curlResult = DI::httpClient()->post(bluesky_get_user_pds($uid) . $url, $params, $headers);
|
||||
} catch (\Exception $e) {
|
||||
Logger::notice('Exception on post', ['exception' => $e]);
|
||||
DI::pConfig()->set($uid, 'bluesky', 'status', BLUEKSY_STATUS_API_FAIL);
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!$curlResult->isSuccess()) {
|
||||
Logger::notice('API Error', ['error' => json_decode($curlResult->getBody()) ?: $curlResult->getBody()]);
|
||||
DI::pConfig()->set($uid, 'bluesky', 'status', BLUEKSY_STATUS_API_FAIL);
|
||||
return null;
|
||||
}
|
||||
|
||||
DI::pConfig()->set($uid, 'bluesky', 'status', BLUEKSY_STATUS_SUCCESS);
|
||||
return json_decode($curlResult->getBody());
|
||||
}
|
||||
|
||||
function bluesky_xrpc_get(int $uid, string $url, array $parameters = []): ?stdClass
|
||||
{
|
||||
if (!empty($parameters)) {
|
||||
$url .= '?' . http_build_query($parameters);
|
||||
}
|
||||
|
||||
$data = bluesky_get(bluesky_get_user_pds($uid) . '/xrpc/' . $url, HttpClientAccept::JSON, [HttpClientOptions::HEADERS => ['Authorization' => ['Bearer ' . bluesky_get_token($uid)]]]);
|
||||
DI::pConfig()->set($uid, 'bluesky', 'status', is_null($data) ? BLUEKSY_STATUS_API_FAIL : BLUEKSY_STATUS_SUCCESS);
|
||||
return $data;
|
||||
|
||||
}
|
||||
|
||||
function bluesky_get(string $url, string $accept_content = HttpClientAccept::DEFAULT, array $opts = []): ?stdClass
|
||||
{
|
||||
try {
|
||||
$curlResult = DI::httpClient()->get($url, $accept_content, $opts);
|
||||
} catch (\Exception $e) {
|
||||
Logger::notice('Exception on get', ['exception' => $e]);
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!$curlResult->isSuccess()) {
|
||||
Logger::notice('API Error', ['error' => json_decode($curlResult->getBody()) ?: $curlResult->getBody()]);
|
||||
return null;
|
||||
}
|
||||
|
||||
return json_decode($curlResult->getBody());
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<?php
|
||||
|
||||
use Friendica\Core\Logger;
|
||||
|
||||
function bluesky_feed_run($argv, $argc)
|
||||
{
|
||||
require_once 'addon/bluesky/bluesky.php';
|
||||
|
||||
if ($argc != 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
Logger::debug('Importing feed - start', ['user' => $argv[1], 'feed' => $argv[2], 'last_poll' => $argv[3]]);
|
||||
bluesky_fetch_feed($argv[1], $argv[2], $argv[3]);
|
||||
Logger::debug('Importing feed - done', ['user' => $argv[1], 'feed' => $argv[2], 'last_poll' => $argv[3]]);
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<?php
|
||||
|
||||
use Friendica\Core\Logger;
|
||||
|
||||
function bluesky_notifications_run($argv, $argc)
|
||||
{
|
||||
require_once 'addon/bluesky/bluesky.php';
|
||||
|
||||
if ($argc != 3) {
|
||||
return;
|
||||
}
|
||||
|
||||
Logger::notice('importing notifications - start', ['user' => $argv[1], 'last_poll' => $argv[2]]);
|
||||
bluesky_fetch_notifications($argv[1], $argv[2]);
|
||||
Logger::notice('importing notifications - done', ['user' => $argv[1], 'last_poll' => $argv[2]]);
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<?php
|
||||
|
||||
use Friendica\Core\Logger;
|
||||
|
||||
function bluesky_timeline_run($argv, $argc)
|
||||
{
|
||||
require_once 'addon/bluesky/bluesky.php';
|
||||
|
||||
if ($argc != 3) {
|
||||
return;
|
||||
}
|
||||
|
||||
Logger::notice('importing timeline - start', ['user' => $argv[1], 'last_poll' => $argv[2]]);
|
||||
bluesky_fetch_timeline($argv[1], $argv[2]);
|
||||
Logger::notice('importing timeline - done', ['user' => $argv[1], 'last_poll' => $argv[2]]);
|
||||
}
|
||||
|
|
@ -1,116 +0,0 @@
|
|||
# ADDON bluesky
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica bluesky addon package.
|
||||
#
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-12-06 06:30+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"
|
||||
|
||||
#: bluesky.php:336
|
||||
msgid "Enable Bluesky Post Addon"
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:337
|
||||
msgid "Post to Bluesky by default"
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:338
|
||||
msgid "Import the remote timeline"
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:339
|
||||
msgid "Import the pinned feeds"
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:339
|
||||
msgid ""
|
||||
"When activated, Posts will be imported from all the feeds that you pinned in "
|
||||
"Bluesky."
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:340
|
||||
msgid "Personal Data Server"
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:340
|
||||
msgid "The personal data server (PDS) is the system that hosts your profile."
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:341
|
||||
msgid "Bluesky handle"
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:342
|
||||
msgid "Bluesky DID"
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:342
|
||||
msgid ""
|
||||
"This is the unique identifier. It will be fetched automatically, when the "
|
||||
"handle is entered."
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:343
|
||||
msgid "Bluesky app password"
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:343
|
||||
msgid ""
|
||||
"Please don't add your real password here, but instead create a specific app "
|
||||
"password in the Bluesky settings."
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:349
|
||||
msgid "Bluesky Import/Export"
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:359
|
||||
msgid ""
|
||||
"You are not authenticated. Please enter your handle and the app password."
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:379
|
||||
msgid ""
|
||||
"You are authenticated to Bluesky. For security reasons the password isn't "
|
||||
"stored."
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:381
|
||||
msgid ""
|
||||
"The communication with the personal data server service (PDS) is established."
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:383
|
||||
msgid "Communication issues with the personal data server service (PDS)."
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:385
|
||||
msgid ""
|
||||
"The DID for the provided handle could not be detected. Please check if you "
|
||||
"entered the correct handle."
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:387
|
||||
msgid "The personal data server service (PDS) could not be detected."
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:389
|
||||
msgid ""
|
||||
"The authentication with the provided handle and password failed. Please "
|
||||
"check if you entered the correct password."
|
||||
msgstr ""
|
||||
|
||||
#: bluesky.php:457
|
||||
msgid "Post to Bluesky"
|
||||
msgstr ""
|
||||
|
|
@ -1,89 +0,0 @@
|
|||
# ADDON bluesky
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica bluesky addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2023
|
||||
# haheute <haheute@posteo.de>, 2023
|
||||
# Raroun, 2023
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-24 05:52+0000\n"
|
||||
"PO-Revision-Date: 2023-05-24 06:02+0000\n"
|
||||
"Last-Translator: Raroun, 2023\n"
|
||||
"Language-Team: German (https://app.transifex.com/Friendica/teams/12172/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"
|
||||
|
||||
#: bluesky.php:100
|
||||
msgid ""
|
||||
"You are authenticated to Bluesky. For security reasons the password isn't "
|
||||
"stored."
|
||||
msgstr ""
|
||||
"Du bist auf Bluesky authentifiziert. Aus Sicherheitsgründen wird das "
|
||||
"Passwort nicht gespeichert."
|
||||
|
||||
#: bluesky.php:100
|
||||
msgid "You are not authenticated. Please enter the app password."
|
||||
msgstr ""
|
||||
"Du bist derzeit nicht authentifiziert. Bitte gib dein App Passwort ein."
|
||||
|
||||
#: bluesky.php:104
|
||||
msgid "Enable Bluesky Post Addon"
|
||||
msgstr "Bluesky Post Addon aktivieren"
|
||||
|
||||
#: bluesky.php:105
|
||||
msgid "Post to Bluesky by default"
|
||||
msgstr "Standardmäßig auf Bluesky veröffentlichen"
|
||||
|
||||
#: bluesky.php:106
|
||||
msgid "Import the remote timeline"
|
||||
msgstr "Importiere die entfernte Timeline"
|
||||
|
||||
#: bluesky.php:107
|
||||
msgid "Bluesky host"
|
||||
msgstr "Bluesky Host"
|
||||
|
||||
#: bluesky.php:108
|
||||
msgid "Bluesky handle"
|
||||
msgstr "Bluesky Handle"
|
||||
|
||||
#: bluesky.php:109
|
||||
msgid "Bluesky DID"
|
||||
msgstr "Bluesky DID"
|
||||
|
||||
#: bluesky.php:109
|
||||
msgid ""
|
||||
"This is the unique identifier. It will be fetched automatically, when the "
|
||||
"handle is entered."
|
||||
msgstr ""
|
||||
"Sobald das Handle eingegeben ist, wird diese einzigartige Kennung "
|
||||
"automatisch abgerufen."
|
||||
|
||||
#: bluesky.php:110
|
||||
msgid "Bluesky app password"
|
||||
msgstr "Bluesky App Passwort"
|
||||
|
||||
#: bluesky.php:110
|
||||
msgid ""
|
||||
"Please don't add your real password here, but instead create a specific app "
|
||||
"password in the Bluesky settings."
|
||||
msgstr ""
|
||||
"Bitte verwende hier nicht dein echtes Passwort, sondern stattdessen ein "
|
||||
"speziell für diese App in den Bluesky Einstellungen festgelegtes Passwort."
|
||||
|
||||
#: bluesky.php:116
|
||||
msgid "Bluesky Import/Export"
|
||||
msgstr "Bluesky Import/Export"
|
||||
|
||||
#: bluesky.php:167
|
||||
msgid "Post to Bluesky"
|
||||
msgstr "Auf Bluesky veröffentlichen"
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_de")) {
|
||||
function string_plural_select_de($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['You are authenticated to Bluesky. For security reasons the password isn\'t stored.'] = 'Du bist auf Bluesky authentifiziert. Aus Sicherheitsgründen wird das Passwort nicht gespeichert.';
|
||||
$a->strings['You are not authenticated. Please enter the app password.'] = 'Du bist derzeit nicht authentifiziert. Bitte gib dein App Passwort ein.';
|
||||
$a->strings['Enable Bluesky Post Addon'] = 'Bluesky Post Addon aktivieren';
|
||||
$a->strings['Post to Bluesky by default'] = 'Standardmäßig auf Bluesky veröffentlichen';
|
||||
$a->strings['Import the remote timeline'] = 'Importiere die entfernte Timeline';
|
||||
$a->strings['Bluesky host'] = 'Bluesky Host';
|
||||
$a->strings['Bluesky handle'] = 'Bluesky Handle';
|
||||
$a->strings['Bluesky DID'] = 'Bluesky DID';
|
||||
$a->strings['This is the unique identifier. It will be fetched automatically, when the handle is entered.'] = 'Sobald das Handle eingegeben ist, wird diese einzigartige Kennung automatisch abgerufen.';
|
||||
$a->strings['Bluesky app password'] = 'Bluesky App Passwort';
|
||||
$a->strings['Please don\'t add your real password here, but instead create a specific app password in the Bluesky settings.'] = 'Bitte verwende hier nicht dein echtes Passwort, sondern stattdessen ein speziell für diese App in den Bluesky Einstellungen festgelegtes Passwort.';
|
||||
$a->strings['Bluesky Import/Export'] = 'Bluesky Import/Export';
|
||||
$a->strings['Post to Bluesky'] = 'Auf Bluesky veröffentlichen';
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
# ADDON bluesky
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica bluesky addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# tslmuun, 2023
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-24 05:52+0000\n"
|
||||
"PO-Revision-Date: 2023-05-24 06:02+0000\n"
|
||||
"Last-Translator: tslmuun, 2023\n"
|
||||
"Language-Team: Chinese (China) (https://app.transifex.com/Friendica/teams/12172/zh_CN/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: zh_CN\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: bluesky.php:100
|
||||
msgid ""
|
||||
"You are authenticated to Bluesky. For security reasons the password isn't "
|
||||
"stored."
|
||||
msgstr "您已通过 Bluesky 的身份验证。 出于安全原因,不存储密码。"
|
||||
|
||||
#: bluesky.php:100
|
||||
msgid "You are not authenticated. Please enter the app password."
|
||||
msgstr "您未通过身份验证。 请输入应用密码。"
|
||||
|
||||
#: bluesky.php:104
|
||||
msgid "Enable Bluesky Post Addon"
|
||||
msgstr "启用Bluesky插件"
|
||||
|
||||
#: bluesky.php:105
|
||||
msgid "Post to Bluesky by default"
|
||||
msgstr "默认发布到Bluesky"
|
||||
|
||||
#: bluesky.php:106
|
||||
msgid "Import the remote timeline"
|
||||
msgstr "导入远程时间线"
|
||||
|
||||
#: bluesky.php:107
|
||||
msgid "Bluesky host"
|
||||
msgstr "Bluesky地址"
|
||||
|
||||
#: bluesky.php:108
|
||||
msgid "Bluesky handle"
|
||||
msgstr "Bluesky handle"
|
||||
|
||||
#: bluesky.php:109
|
||||
msgid "Bluesky DID"
|
||||
msgstr "Bluesky DID"
|
||||
|
||||
#: bluesky.php:109
|
||||
msgid ""
|
||||
"This is the unique identifier. It will be fetched automatically, when the "
|
||||
"handle is entered."
|
||||
msgstr "这是唯一标识符。 输入句柄时,它将自动获取。"
|
||||
|
||||
#: bluesky.php:110
|
||||
msgid "Bluesky app password"
|
||||
msgstr "Bluesky 应用密码"
|
||||
|
||||
#: bluesky.php:110
|
||||
msgid ""
|
||||
"Please don't add your real password here, but instead create a specific app "
|
||||
"password in the Bluesky settings."
|
||||
msgstr "请不要在此处填写您的真实密码,而是在 Bluesky 设置中创建一个特定的应用程序密码。"
|
||||
|
||||
#: bluesky.php:116
|
||||
msgid "Bluesky Import/Export"
|
||||
msgstr "Bluesky 导入/导出"
|
||||
|
||||
#: bluesky.php:167
|
||||
msgid "Post to Bluesky"
|
||||
msgstr "发布到Bluesky"
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_zh_cn")) {
|
||||
function string_plural_select_zh_cn($n){
|
||||
$n = intval($n);
|
||||
return intval(0);
|
||||
}}
|
||||
$a->strings['You are authenticated to Bluesky. For security reasons the password isn\'t stored.'] = '您已通过 Bluesky 的身份验证。 出于安全原因,不存储密码。';
|
||||
$a->strings['You are not authenticated. Please enter the app password.'] = '您未通过身份验证。 请输入应用密码。';
|
||||
$a->strings['Enable Bluesky Post Addon'] = '启用Bluesky插件';
|
||||
$a->strings['Post to Bluesky by default'] = '默认发布到Bluesky';
|
||||
$a->strings['Import the remote timeline'] = '导入远程时间线';
|
||||
$a->strings['Bluesky host'] = 'Bluesky地址';
|
||||
$a->strings['Bluesky handle'] = 'Bluesky handle';
|
||||
$a->strings['Bluesky DID'] = 'Bluesky DID';
|
||||
$a->strings['This is the unique identifier. It will be fetched automatically, when the handle is entered.'] = '这是唯一标识符。 输入句柄时,它将自动获取。';
|
||||
$a->strings['Bluesky app password'] = 'Bluesky 应用密码';
|
||||
$a->strings['Please don\'t add your real password here, but instead create a specific app password in the Bluesky settings.'] = '请不要在此处填写您的真实密码,而是在 Bluesky 设置中创建一个特定的应用程序密码。';
|
||||
$a->strings['Bluesky Import/Export'] = 'Bluesky 导入/导出';
|
||||
$a->strings['Post to Bluesky'] = '发布到Bluesky';
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<p>{{$status}}</p>
|
||||
{{include file="field_checkbox.tpl" field=$enable}}
|
||||
{{include file="field_checkbox.tpl" field=$bydefault}}
|
||||
{{include file="field_checkbox.tpl" field=$import}}
|
||||
{{include file="field_checkbox.tpl" field=$import_feeds}}
|
||||
{{include file="field_input.tpl" field=$pds}}
|
||||
{{include file="field_input.tpl" field=$handle}}
|
||||
{{include file="field_input.tpl" field=$did}}
|
||||
{{include file="field_input.tpl" field=$password}}
|
||||
|
|
@ -4,21 +4,21 @@
|
|||
#
|
||||
#
|
||||
# Translators:
|
||||
# michal_s <msupler@gmail.com>, 2014
|
||||
# Michal Šupler <msupler@gmail.com>, 2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-22 11:27+0000\n"
|
||||
"Last-Translator: michal_s <msupler@gmail.com>, 2014\n"
|
||||
"Language-Team: Czech (http://app.transifex.com/Friendica/friendica/language/cs/)\n"
|
||||
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
|
||||
"PO-Revision-Date: 2014-07-07 18:27+0000\n"
|
||||
"Last-Translator: Michal Šupler <msupler@gmail.com>\n"
|
||||
"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
|
||||
#: buglink.php:20
|
||||
#: buglink.php:15
|
||||
msgid "Report Bug"
|
||||
msgstr "Nahlásit chybu"
|
||||
|
|
|
|||
|
|
@ -3,6 +3,6 @@
|
|||
if(! function_exists("string_plural_select_cs")) {
|
||||
function string_plural_select_cs($n){
|
||||
$n = intval($n);
|
||||
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
|
||||
if (($n==1)) { return 0; } else if (($n>=2 && $n<=4)) { return 1; } else { return 2; }
|
||||
}}
|
||||
$a->strings['Report Bug'] = 'Nahlásit chybu';
|
||||
|
|
|
|||
|
|
@ -10,16 +10,16 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-22 11:27+0000\n"
|
||||
"Last-Translator: René Wagner <apollo@rw-net.de>, 2019\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
|
||||
"PO-Revision-Date: 2019-11-10 20:12+0000\n"
|
||||
"Last-Translator: René Wagner <apollo@rw-net.de>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/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"
|
||||
|
||||
#: buglink.php:20
|
||||
#: buglink.php:15
|
||||
msgid "Report Bug"
|
||||
msgstr "Fehler melden"
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ function catavatar_addon_settings_post(&$s)
|
|||
}
|
||||
|
||||
if (!empty($_POST['catavatar-usecat'])) {
|
||||
$url = DI::baseUrl() . '/catavatar/' . DI::userSession()->getLocalUserId() . '?ts=' . time();
|
||||
$url = DI::baseUrl()->get() . '/catavatar/' . DI::userSession()->getLocalUserId() . '?ts=' . time();
|
||||
|
||||
$self = DBA::selectFirst('contact', ['id'], ['uid' => DI::userSession()->getLocalUserId(), 'self' => true]);
|
||||
if (!DBA::isResult($self)) {
|
||||
|
|
@ -121,9 +121,9 @@ function catavatar_lookup(array &$b)
|
|||
{
|
||||
$user = DBA::selectFirst('user', ['uid'], ['email' => $b['email']]);
|
||||
if (DBA::isResult($user)) {
|
||||
$url = DI::baseUrl() . '/catavatar/' . $user['uid'];
|
||||
$url = DI::baseUrl()->get() . '/catavatar/' . $user['uid'];
|
||||
} else {
|
||||
$url = DI::baseUrl() . '/catavatar/' . md5(trim(strtolower($b['email'])));
|
||||
$url = DI::baseUrl()->get() . '/catavatar/' . md5(trim(strtolower($b['email'])));
|
||||
}
|
||||
|
||||
switch($b['size']) {
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ msgstr ""
|
|||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2018-04-07 05:23+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2022\n"
|
||||
"Language-Team: German (https://app.transifex.com/Friendica/teams/12172/de/)\n"
|
||||
"Language-Team: German (https://www.transifex.com/Friendica/teams/12172/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -5,7 +5,8 @@
|
|||
#
|
||||
# Translators:
|
||||
# Vladimir Núñez <lapoubelle111@gmail.com>, 2019
|
||||
# Florent C., 2023
|
||||
# Walter Bulbazor, 2021
|
||||
# Hypolite Petovan <hypolite@mrpetovan.com>, 2022
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
|
|
@ -14,8 +15,8 @@ msgstr ""
|
|||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2018-04-07 05:23+0000\n"
|
||||
"Last-Translator: Florent C., 2023\n"
|
||||
"Language-Team: French (https://app.transifex.com/Friendica/teams/12172/fr/)\n"
|
||||
"Last-Translator: Hypolite Petovan <hypolite@mrpetovan.com>, 2022\n"
|
||||
"Language-Team: French (https://www.transifex.com/Friendica/teams/12172/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
@ -24,7 +25,7 @@ msgstr ""
|
|||
|
||||
#: catavatar.php:48
|
||||
msgid "Set default profile avatar or randomize the cat."
|
||||
msgstr "Mettre l'avatar par défaut ou tirer au sort le chat."
|
||||
msgstr "Mettre l'avatar par défaut ou tirer au sort le Chat."
|
||||
|
||||
#: catavatar.php:53
|
||||
msgid "Cat Avatar Settings"
|
||||
|
|
@ -32,15 +33,15 @@ msgstr "Paramètres de Chat avatar"
|
|||
|
||||
#: catavatar.php:56
|
||||
msgid "Use Cat as Avatar"
|
||||
msgstr "Utiliser ce Chat"
|
||||
msgstr "Utiliser Chat comme avatar"
|
||||
|
||||
#: catavatar.php:57
|
||||
msgid "Another random Cat!"
|
||||
msgstr "Un autre Chat aléatoire !"
|
||||
msgstr "Un autre chat aléatoire !"
|
||||
|
||||
#: catavatar.php:58
|
||||
msgid "Reset to email Cat"
|
||||
msgstr "Revenir au Chat par défaut"
|
||||
msgstr "Réinitialiser à Chat courriel"
|
||||
|
||||
#: catavatar.php:77
|
||||
msgid "The cat hadn't found itself."
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ function string_plural_select_fr($n){
|
|||
$n = intval($n);
|
||||
if (($n == 0 || $n == 1)) { return 0; } else if ($n != 0 && $n % 1000000 == 0) { return 1; } else { return 2; }
|
||||
}}
|
||||
$a->strings['Set default profile avatar or randomize the cat.'] = 'Mettre l\'avatar par défaut ou tirer au sort le chat.';
|
||||
$a->strings['Set default profile avatar or randomize the cat.'] = 'Mettre l\'avatar par défaut ou tirer au sort le Chat.';
|
||||
$a->strings['Cat Avatar Settings'] = 'Paramètres de Chat avatar';
|
||||
$a->strings['Use Cat as Avatar'] = 'Utiliser ce Chat';
|
||||
$a->strings['Another random Cat!'] = 'Un autre Chat aléatoire !';
|
||||
$a->strings['Reset to email Cat'] = 'Revenir au Chat par défaut';
|
||||
$a->strings['Use Cat as Avatar'] = 'Utiliser Chat comme avatar';
|
||||
$a->strings['Another random Cat!'] = 'Un autre chat aléatoire !';
|
||||
$a->strings['Reset to email Cat'] = 'Réinitialiser à Chat courriel';
|
||||
$a->strings['The cat hadn\'t found itself.'] = 'Le Chat ne s\'y est pas retrouvé';
|
||||
$a->strings['There was an error, the cat ran away.'] = 'Il y a eu une erreur et le chat s\'est enfui';
|
||||
$a->strings['Profile Photos'] = 'Photos de profil';
|
||||
|
|
|
|||
|
|
@ -1,64 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Name: Circle Text
|
||||
* Description: Disable images in circle edit menu
|
||||
* Version: 1.0
|
||||
* Author: Thomas Willingham <https://kakste.com/profile/beardyunixer>
|
||||
*/
|
||||
|
||||
use Friendica\Core\Hook;
|
||||
use Friendica\Core\Renderer;
|
||||
use Friendica\DI;
|
||||
|
||||
function circle_text_install()
|
||||
{
|
||||
Hook::register('addon_settings', __FILE__, 'circle_text_settings');
|
||||
Hook::register('addon_settings_post', __FILE__, 'circle_text_settings_post');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Callback from the settings post function.
|
||||
* $post contains the $_POST array.
|
||||
* We will make sure we've got a valid user account
|
||||
* and if so set our configuration setting for this person.
|
||||
*
|
||||
*/
|
||||
|
||||
function circle_text_settings_post(array $post)
|
||||
{
|
||||
if (!DI::userSession()->getLocalUserId() || empty($post['circle_text-submit'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'system', 'circle_edit_image_limit', intval($post['circle_text']));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Called from the Addon Setting form.
|
||||
* Add our own settings info to the page.
|
||||
*
|
||||
*/
|
||||
|
||||
function circle_text_settings(array &$data)
|
||||
{
|
||||
if (!DI::userSession()->getLocalUserId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$enabled = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'system', 'circle_edit_image_limit') ??
|
||||
DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'system', 'groupedit_image_limit');
|
||||
|
||||
$t = Renderer::getMarkupTemplate('settings.tpl', 'addon/circle_text/');
|
||||
$html = Renderer::replaceMacros($t, [
|
||||
'$enabled' => ['circle_text', DI::l10n()->t('Use a text only (non-image) circle selector in the "circle edit" menu'), $enabled],
|
||||
]);
|
||||
|
||||
$data = [
|
||||
'addon' => 'circle_text',
|
||||
'title' => DI::l10n()->t('Circle Text'),
|
||||
'html' => $html,
|
||||
];
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
# ADDON circle_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica circle_text addon package.
|
||||
#
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-03 15:48-0400\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"
|
||||
|
||||
#: group_text.php:56
|
||||
msgid "Use a text only (non-image) circle selector in the \"circle edit\" menu"
|
||||
msgstr ""
|
||||
|
||||
#: group_text.php:61
|
||||
msgid "Circle Text"
|
||||
msgstr ""
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Farida Khalaf <faridakhalaf@hotmail.com>, 2021
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2021-02-21 02:59+0000\n"
|
||||
"Last-Translator: Farida Khalaf <faridakhalaf@hotmail.com>\n"
|
||||
"Language-Team: Arabic (http://www.transifex.com/Friendica/friendica/language/ar/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ar\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
|
||||
|
||||
#: group_text.php:62
|
||||
msgid "Group Text"
|
||||
msgstr "نص المجموعة:"
|
||||
|
||||
#: group_text.php:64
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr "استخدم محدد نصي للمجموعة فقط (غير مصور) في قائمة \"تعديل المجموعة\""
|
||||
|
||||
#: group_text.php:70
|
||||
msgid "Save Settings"
|
||||
msgstr "حفظ الإعدادات"
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_ar")) {
|
||||
function string_plural_select_ar($n){
|
||||
$n = intval($n);
|
||||
if ($n==0) { return 0; } else if ($n==1) { return 1; } else if ($n==2) { return 2; } else if ($n%100>=3 && $n%100<=10) { return 3; } else if ($n%100>=11 && $n%100<=99) { return 4; } else { return 5; }
|
||||
}}
|
||||
$a->strings['Group Text'] = 'نص المجموعة:';
|
||||
$a->strings['Use a text only (non-image) group selector in the "group edit" menu'] = 'استخدم محدد نصي للمجموعة فقط (غير مصور) في قائمة "تعديل المجموعة"';
|
||||
$a->strings['Save Settings'] = 'حفظ الإعدادات';
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Joan Bar <friendica@tutanota.com>, 2019
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2019-10-14 00:45+0000\n"
|
||||
"Last-Translator: Joan Bar <friendica@tutanota.com>\n"
|
||||
"Language-Team: Catalan (http://www.transifex.com/Friendica/friendica/language/ca/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ca\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: group_text.php:46
|
||||
msgid "Group Text settings updated."
|
||||
msgstr "La configuració del text del grup s'ha actualitzat."
|
||||
|
||||
#: group_text.php:76
|
||||
msgid "Group Text"
|
||||
msgstr "Missatge del grup"
|
||||
|
||||
#: group_text.php:78
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr "Utilitzeu un selector de grup de només text (que no sigui una imatge) al menú 'Edita grup'"
|
||||
|
||||
#: group_text.php:84
|
||||
msgid "Submit"
|
||||
msgstr "sotmetre's"
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_ca")) {
|
||||
function string_plural_select_ca($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Group Text settings updated.'] = 'La configuració del text del grup s\'ha actualitzat.';
|
||||
$a->strings['Group Text'] = 'Missatge del grup';
|
||||
$a->strings['Use a text only (non-image) group selector in the "group edit" menu'] = 'Utilitzeu un selector de grup de només text (que no sigui una imatge) al menú \'Edita grup\'';
|
||||
$a->strings['Submit'] = 'sotmetre\'s';
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Aditoo, 2018
|
||||
# michal_s <msupler@gmail.com>, 2014-2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2018-09-12 09:47+0000\n"
|
||||
"Last-Translator: Aditoo\n"
|
||||
"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||
|
||||
#: group_text.php:46
|
||||
msgid "Group Text settings updated."
|
||||
msgstr "Nastavení Group Text aktualizována."
|
||||
|
||||
#: group_text.php:76
|
||||
msgid "Group Text"
|
||||
msgstr "Skupinový text"
|
||||
|
||||
#: group_text.php:78
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr "Použijte pouze textový (bezobrázkový) výběr skupiny v menu úpravy skupin."
|
||||
|
||||
#: group_text.php:84
|
||||
msgid "Submit"
|
||||
msgstr "Odeslat"
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_cs")) {
|
||||
function string_plural_select_cs($n){
|
||||
$n = intval($n);
|
||||
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
|
||||
}}
|
||||
$a->strings['Group Text settings updated.'] = 'Nastavení Group Text aktualizována.';
|
||||
$a->strings['Group Text'] = 'Skupinový text';
|
||||
$a->strings['Use a text only (non-image) group selector in the "group edit" menu'] = 'Použijte pouze textový (bezobrázkový) výběr skupiny v menu úpravy skupin.';
|
||||
$a->strings['Submit'] = 'Odeslat';
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Anton <dev@atjn.dk>, 2022
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:35+0000\n"
|
||||
"Last-Translator: Anton <dev@atjn.dk>, 2022\n"
|
||||
"Language-Team: Danish (Denmark) (http://www.transifex.com/Friendica/friendica/language/da_DK/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: da_DK\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: group_text.php:58
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr "Brug en kun-tekst (intet billede) gruppevælger i grupperedigeringsmenuen"
|
||||
|
||||
#: group_text.php:63
|
||||
msgid "Group Text"
|
||||
msgstr "Gruppebesked"
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_da_dk")) {
|
||||
function string_plural_select_da_dk($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Use a text only (non-image) group selector in the "group edit" menu'] = 'Brug en kun-tekst (intet billede) gruppevælger i grupperedigeringsmenuen';
|
||||
$a->strings['Group Text'] = 'Gruppebesked';
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Andreas H., 2014
|
||||
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2014
|
||||
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2021
|
||||
# Ulf Rompe <transifex.com@rompe.org>, 2019
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:35+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2021\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/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"
|
||||
|
||||
#: group_text.php:58
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr "Beim Bearbeiten von Gruppen Text statt Bilder anzeigen"
|
||||
|
||||
#: group_text.php:63
|
||||
msgid "Group Text"
|
||||
msgstr "Gruppen als Text"
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_de")) {
|
||||
function string_plural_select_de($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Use a text only (non-image) group selector in the "group edit" menu'] = 'Beim Bearbeiten von Gruppen Text statt Bilder anzeigen';
|
||||
$a->strings['Group Text'] = 'Gruppen als Text';
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
<?php
|
||||
|
||||
$a->strings["Group Text"] = "";
|
||||
$a->strings["Use a text only (non-image) group selector in the \"group edit\" menu"] = "";
|
||||
$a->strings["Submit"] = "Sendi";
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Albert, 2016
|
||||
# Senex Petrovic <javierruizo@hotmail.com>, 2021
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2021-04-01 09:56+0000\n"
|
||||
"Last-Translator: Senex Petrovic <javierruizo@hotmail.com>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: group_text.php:62
|
||||
msgid "Group Text"
|
||||
msgstr "Grupo de Texto"
|
||||
|
||||
#: group_text.php:64
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr "Utilice sólo el selector de grupo de texto (no imagen) en el menú \"edición de grupo\""
|
||||
|
||||
#: group_text.php:70
|
||||
msgid "Save Settings"
|
||||
msgstr "Guardar Ajustes"
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_es")) {
|
||||
function string_plural_select_es($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Group Text'] = 'Grupo de Texto';
|
||||
$a->strings['Use a text only (non-image) group selector in the "group edit" menu'] = 'Utilice sólo el selector de grupo de texto (no imagen) en el menú "edición de grupo"';
|
||||
$a->strings['Save Settings'] = 'Guardar Ajustes';
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Kris, 2018
|
||||
# Kris, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2018-04-08 15:51+0000\n"
|
||||
"Last-Translator: Kris\n"
|
||||
"Language-Team: Finnish (Finland) (http://www.transifex.com/Friendica/friendica/language/fi_FI/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fi_FI\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: group_text.php:46
|
||||
msgid "Group Text settings updated."
|
||||
msgstr "Group Text -asetukset päivitetty."
|
||||
|
||||
#: group_text.php:76
|
||||
msgid "Group Text"
|
||||
msgstr "Group Text"
|
||||
|
||||
#: group_text.php:78
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr ""
|
||||
|
||||
#: group_text.php:84
|
||||
msgid "Submit"
|
||||
msgstr "Lähetä"
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_fi_fi")) {
|
||||
function string_plural_select_fi_fi($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Group Text settings updated.'] = 'Group Text -asetukset päivitetty.';
|
||||
$a->strings['Group Text'] = 'Group Text';
|
||||
$a->strings['Submit'] = 'Lähetä';
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# bob lebonche <lebonche@tutanota.com>, 2021
|
||||
# Hypolite Petovan <hypolite@mrpetovan.com>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:35+0000\n"
|
||||
"Last-Translator: bob lebonche <lebonche@tutanota.com>, 2021\n"
|
||||
"Language-Team: French (http://www.transifex.com/Friendica/friendica/language/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
|
||||
#: group_text.php:58
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr "Utiliser uniquement un groupe de texte (pas d'image) dans le menu \"groupedit\""
|
||||
|
||||
#: group_text.php:63
|
||||
msgid "Group Text"
|
||||
msgstr "Groupe de texte"
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_fr")) {
|
||||
function string_plural_select_fr($n){
|
||||
$n = intval($n);
|
||||
if (($n == 0 || $n == 1)) { return 0; } else if ($n != 0 && $n % 1000000 == 0) { return 1; } else { return 2; }
|
||||
}}
|
||||
$a->strings['Use a text only (non-image) group selector in the "group edit" menu'] = 'Utiliser uniquement un groupe de texte (pas d\'image) dans le menu "groupedit"';
|
||||
$a->strings['Group Text'] = 'Groupe de texte';
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Balázs Úr, 2020-2021
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:35+0000\n"
|
||||
"Last-Translator: Balázs Úr, 2020-2021\n"
|
||||
"Language-Team: Hungarian (http://www.transifex.com/Friendica/friendica/language/hu/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: hu\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: group_text.php:58
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr "Csak szöveges (kép nélküli) csoportválasztó használata a „csoportszerkesztés” menüben"
|
||||
|
||||
#: group_text.php:63
|
||||
msgid "Group Text"
|
||||
msgstr "Csoportszöveg"
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_hu")) {
|
||||
function string_plural_select_hu($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Use a text only (non-image) group selector in the "group edit" menu'] = 'Csak szöveges (kép nélküli) csoportválasztó használata a „csoportszerkesztés” menüben';
|
||||
$a->strings['Group Text'] = 'Csoportszöveg';
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
<?php
|
||||
|
||||
$a->strings["Group Text"] = "";
|
||||
$a->strings["Use a text only (non-image) group selector in the \"group edit\" menu"] = "";
|
||||
$a->strings["Submit"] = "Senda inn";
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# fabrixxm <fabrix.xm@gmail.com>, 2014-2015
|
||||
# Sylke Vicious <silkevicious@gmail.com>, 2021
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2021-02-16 12:48+0000\n"
|
||||
"Last-Translator: Sylke Vicious <silkevicious@gmail.com>\n"
|
||||
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/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"
|
||||
|
||||
#: group_text.php:62
|
||||
msgid "Group Text"
|
||||
msgstr "Editor Gruppi Testuale"
|
||||
|
||||
#: group_text.php:64
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr "Usa un selettore testuale (senza immagini) nella pagina \"modifica gruppo\""
|
||||
|
||||
#: group_text.php:70
|
||||
msgid "Save Settings"
|
||||
msgstr "Salva Impostazioni"
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_it")) {
|
||||
function string_plural_select_it($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Group Text'] = 'Editor Gruppi Testuale';
|
||||
$a->strings['Use a text only (non-image) group selector in the "group edit" menu'] = 'Usa un selettore testuale (senza immagini) nella pagina "modifica gruppo"';
|
||||
$a->strings['Save Settings'] = 'Salva Impostazioni';
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
<?php
|
||||
|
||||
$a->strings["Group Text"] = "";
|
||||
$a->strings["Use a text only (non-image) group selector in the \"group edit\" menu"] = "";
|
||||
$a->strings["Submit"] = "Lagre";
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Jeroen De Meerleer <me@jeroened.be>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2018-08-24 13:48+0000\n"
|
||||
"Last-Translator: Jeroen De Meerleer <me@jeroened.be>\n"
|
||||
"Language-Team: Dutch (http://www.transifex.com/Friendica/friendica/language/nl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: nl\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: group_text.php:46
|
||||
msgid "Group Text settings updated."
|
||||
msgstr "Groupsberichten instellingen opgeslagen"
|
||||
|
||||
#: group_text.php:76
|
||||
msgid "Group Text"
|
||||
msgstr "Groepsbericht"
|
||||
|
||||
#: group_text.php:78
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr ""
|
||||
|
||||
#: group_text.php:84
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_nl")) {
|
||||
function string_plural_select_nl($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Group Text settings updated.'] = 'Groupsberichten instellingen opgeslagen';
|
||||
$a->strings['Group Text'] = 'Groepsbericht';
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Waldemar Stoczkowski, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:35+0000\n"
|
||||
"Last-Translator: Waldemar Stoczkowski, 2018\n"
|
||||
"Language-Team: Polish (http://www.transifex.com/Friendica/friendica/language/pl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pl\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
|
||||
#: group_text.php:58
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr "Użyj tylko tekst (bez obrazu) selektor grupy w menu \"Edycja grupy\""
|
||||
|
||||
#: group_text.php:63
|
||||
msgid "Group Text"
|
||||
msgstr "Grupuj tekst"
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_pl")) {
|
||||
function string_plural_select_pl($n){
|
||||
$n = intval($n);
|
||||
if ($n==1) { return 0; } else if (($n%10>=2 && $n%10<=4) && ($n%100<12 || $n%100>14)) { return 1; } else if ($n!=1 && ($n%10>=0 && $n%10<=1) || ($n%10>=5 && $n%10<=9) || ($n%100>=12 && $n%100<=14)) { return 2; } else { return 3; }
|
||||
}}
|
||||
$a->strings['Use a text only (non-image) group selector in the "group edit" menu'] = 'Użyj tylko tekst (bez obrazu) selektor grupy w menu "Edycja grupy"';
|
||||
$a->strings['Group Text'] = 'Grupuj tekst';
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
<?php
|
||||
|
||||
$a->strings["Group Text"] = "";
|
||||
$a->strings["Use a text only (non-image) group selector in the \"group edit\" menu"] = "";
|
||||
$a->strings["Submit"] = "Enviar";
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Doru DEACONU <dumitrudeaconu@yahoo.com>, 2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2014-11-27 14:15+0000\n"
|
||||
"Last-Translator: Doru DEACONU <dumitrudeaconu@yahoo.com>\n"
|
||||
"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/friendica/language/ro_RO/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ro_RO\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
|
||||
|
||||
#: group_text.php:46
|
||||
msgid "Group Text settings updated."
|
||||
msgstr "Configurările Text Grup, au fost actualizate."
|
||||
|
||||
#: group_text.php:76
|
||||
msgid "Group Text"
|
||||
msgstr "Text Grup"
|
||||
|
||||
#: group_text.php:78
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr "Folosiți în meniul \"editare grup\" un selector de grup strict textual (fără-imagine)"
|
||||
|
||||
#: group_text.php:84
|
||||
msgid "Submit"
|
||||
msgstr "Trimite"
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_ro")) {
|
||||
function string_plural_select_ro($n){
|
||||
$n = intval($n);
|
||||
if ($n==1) { return 0; } else if ((($n%100>19)||(($n%100==0)&&($n!=0)))) { return 2; } else { return 1; }
|
||||
}}
|
||||
$a->strings['Group Text settings updated.'] = 'Configurările Text Grup, au fost actualizate.';
|
||||
$a->strings['Group Text'] = 'Text Grup';
|
||||
$a->strings['Use a text only (non-image) group selector in the "group edit" menu'] = 'Folosiți în meniul "editare grup" un selector de grup strict textual (fără-imagine)';
|
||||
$a->strings['Submit'] = 'Trimite';
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Stanislav N. <pztrn@pztrn.name>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2017-04-08 17:26+0000\n"
|
||||
"Last-Translator: Stanislav N. <pztrn@pztrn.name>\n"
|
||||
"Language-Team: Russian (http://www.transifex.com/Friendica/friendica/language/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ru\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
#: group_text.php:46
|
||||
msgid "Group Text settings updated."
|
||||
msgstr "Настройки Group Text обновлены."
|
||||
|
||||
#: group_text.php:76
|
||||
msgid "Group Text"
|
||||
msgstr "Group Text"
|
||||
|
||||
#: group_text.php:78
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr "Используйте текстовый (не изображение) селектор группы в режиме редактирования группы"
|
||||
|
||||
#: group_text.php:84
|
||||
msgid "Submit"
|
||||
msgstr "Добавить"
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_ru")) {
|
||||
function string_plural_select_ru($n){
|
||||
$n = intval($n);
|
||||
if ($n%10==1 && $n%100!=11) { return 0; } else if ($n%10>=2 && $n%10<=4 && ($n%100<12 || $n%100>14)) { return 1; } else if ($n%10==0 || ($n%10>=5 && $n%10<=9) || ($n%100>=11 && $n%100<=14)) { return 2; } else { return 3; }
|
||||
}}
|
||||
$a->strings['Group Text settings updated.'] = 'Настройки Group Text обновлены.';
|
||||
$a->strings['Group Text'] = 'Group Text';
|
||||
$a->strings['Use a text only (non-image) group selector in the "group edit" menu'] = 'Используйте текстовый (не изображение) селектор группы в режиме редактирования группы';
|
||||
$a->strings['Submit'] = 'Добавить';
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
# ADDON group_text
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica group_text addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Kristoffer Grundström <lovaren@gmail.com>, 2022
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2022-01-16 00:35+0000\n"
|
||||
"Last-Translator: Kristoffer Grundström <lovaren@gmail.com>\n"
|
||||
"Language-Team: Swedish (http://www.transifex.com/Friendica/friendica/language/sv/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sv\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: group_text.php:58
|
||||
msgid "Use a text only (non-image) group selector in the \"group edit\" menu"
|
||||
msgstr ""
|
||||
|
||||
#: group_text.php:63
|
||||
msgid "Group Text"
|
||||
msgstr "Grupptext"
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_sv")) {
|
||||
function string_plural_select_sv($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Group Text'] = 'Grupptext';
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
<?php
|
||||
|
||||
$a->strings["Group Text settings updated."] = "组正文设置更新了。";
|
||||
$a->strings["Group Text"] = "组正文";
|
||||
$a->strings["Use a text only (non-image) group selector in the \"group edit\" menu"] = "用光正文(无图片)组选择器在「组编辑」单";
|
||||
$a->strings["Submit"] = "提交";
|
||||
|
|
@ -1 +0,0 @@
|
|||
{{include file="field_checkbox.tpl" field=$enabled}}
|
||||
|
|
@ -1,85 +0,0 @@
|
|||
Compact Language Detector
|
||||
===
|
||||
CLD2 is an advanced language dectection library with a high reliability.
|
||||
|
||||
This addon depends on the CLD PHP module which is not included in any Linux distribution.
|
||||
It needs to be built and installed by hand, which is not totally straightforward.
|
||||
|
||||
Prerequisite
|
||||
---
|
||||
To be able to build the extension, you need the CLD module and the files for the PHP module development.
|
||||
On Debian you install the packages php-dev, libcld2-dev and libcld2-0.
|
||||
Make sure to have installed the correct PHP version.
|
||||
Means: When you have got both PHP 8.0 and 8.2 on your system, you have to install php8.0-dev as well.
|
||||
|
||||
Installation
|
||||
---
|
||||
The original PHP extension is https://github.com/fntlnz/cld2-php-ext.
|
||||
However, it doesn't support PHP8.
|
||||
So https://github.com/hiteule/cld2-php-ext/tree/support-php8 has to be used.
|
||||
|
||||
Download the source code:
|
||||
```
|
||||
wget https://github.com/hiteule/cld2-php-ext/archive/refs/heads/support-php8.zip
|
||||
```
|
||||
|
||||
Unzip it:
|
||||
```
|
||||
unzip support-php8.zip
|
||||
```
|
||||
|
||||
Change into the folder:
|
||||
```
|
||||
cd cld2-php-ext-support-php8/
|
||||
```
|
||||
|
||||
Configure for the PHP Api version:
|
||||
```
|
||||
phpize
|
||||
```
|
||||
(if you have got several PHP versions on your system, execute the command with the version that you run Friendica with, e.g. `phpize8.0`)
|
||||
|
||||
Create the Makefile:
|
||||
```
|
||||
./configure --with-cld2=/usr/include/cld2
|
||||
```
|
||||
|
||||
Have a look at the line `checking for PHP includes`.
|
||||
When the output (for example `/usr/include/php/20220829` doesn't match the API version that you got from `phpize`, then you have to change all the version codes in your `Makefile` afterwards)
|
||||
|
||||
Create the module:
|
||||
```
|
||||
make -j
|
||||
```
|
||||
|
||||
Install it:
|
||||
```
|
||||
sudo make install
|
||||
```
|
||||
|
||||
Change to the folder with the available modules. When you use PHP 8.2 on Debian it is:
|
||||
```
|
||||
cd /etc/php/8.2/mods-available
|
||||
```
|
||||
|
||||
Create the file `cld2.ini` with this content:
|
||||
```
|
||||
; configuration for php cld2 module
|
||||
; priority=20
|
||||
extension=cld2.so
|
||||
```
|
||||
|
||||
Enable the module for all versions and all sapi:
|
||||
```
|
||||
phpenmod -v ALL -s ALL cld2
|
||||
```
|
||||
|
||||
Then restart the apache or fpm (or whatever you use) to load the changed configuration.
|
||||
|
||||
Call `/admin/phpinfo` on your webserver.
|
||||
You then see the PHP Info.
|
||||
Search for "cld2".
|
||||
The module is installed, when you find it here.
|
||||
**Only proceed when the module is installed**
|
||||
|
||||
Now you can enable the addon.
|
||||
71
cld/cld.php
71
cld/cld.php
|
|
@ -1,71 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Name: Compact Language Detector
|
||||
* Description: Improved language detection
|
||||
* Version: 0.1
|
||||
* Author: Michael Vogel <heluecht@pirati.ca>
|
||||
*/
|
||||
|
||||
use Friendica\Core\Hook;
|
||||
use Friendica\Core\Logger;
|
||||
use Friendica\DI;
|
||||
|
||||
function cld_install()
|
||||
{
|
||||
Hook::register('detect_languages', __FILE__, 'cld_detect_languages');
|
||||
}
|
||||
|
||||
function cld_detect_languages(array &$data)
|
||||
{
|
||||
if (!in_array('cld2', get_loaded_extensions())) {
|
||||
Logger::warning('CLD2 is not installed.');
|
||||
return;
|
||||
}
|
||||
|
||||
$cld2 = new \CLD2Detector();
|
||||
|
||||
$cld2->setEncodingHint(CLD2Encoding::UTF8); // optional, hints about text encoding
|
||||
$cld2->setPlainText(true);
|
||||
|
||||
$result = $cld2->detect($data['text']);
|
||||
|
||||
if ($data['detected']) {
|
||||
$original = array_key_first($data['detected']);
|
||||
} else {
|
||||
$original = '';
|
||||
}
|
||||
|
||||
$detected = DI::l10n()->toISO6391($result['language_code']);
|
||||
|
||||
// languages that aren't supported via the base language detection or tend to false detections
|
||||
if ((strlen($detected) == 3) || in_array($detected, ['ht', 'kk', 'ku', 'ky', 'lg', 'mg', 'mk', 'mt', 'ny', 'rw', 'st', 'su', 'tg', 'ts', 'xx'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$result['is_reliable']) {
|
||||
Logger::debug('Unreliable detection', ['uri-id' => $data['uri-id'], 'original' => $original, 'detected' => $detected, 'name' => $result['language_name'], 'probability' => $result['language_probability'], 'text' => $data['text']]);
|
||||
if (($original == $detected) && ($data['detected'][$original] < $result['language_probability'] / 100)) {
|
||||
$data['detected'][$original] = $result['language_probability'] / 100;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
$available = array_keys(DI::l10n()->getLanguageCodes());
|
||||
|
||||
if (!in_array($detected, $available)) {
|
||||
Logger::debug('Unsupported language', ['uri-id' => $data['uri-id'], 'original' => $original, 'detected' => $detected, 'name' => $result['language_name'], 'probability' => $result['language_probability'], 'text' => $data['text']]);
|
||||
return;
|
||||
}
|
||||
|
||||
if ($original != $detected) {
|
||||
Logger::debug('Detected different language', ['uri-id' => $data['uri-id'], 'original' => $original, 'detected' => $detected, 'name' => $result['language_name'], 'probability' => $result['language_probability'], 'text' => $data['text']]);
|
||||
}
|
||||
|
||||
$length = count($data['detected']);
|
||||
if ($length > 0) {
|
||||
unset($data['detected'][$detected]);
|
||||
$data['detected'] = array_merge([$detected => $result['language_probability'] / 100], array_slice($data['detected'], 0, $length - 1));
|
||||
} else {
|
||||
$data['detected'] = [$detected => $result['language_probability'] / 100];
|
||||
}
|
||||
}
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
# Translators:
|
||||
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2019
|
||||
# Ulf Rompe <transifex.com@rompe.org>, 2019
|
||||
# foss <oss@disr.it>, 2020
|
||||
# foss <foss@openmailbox.org>, 2020
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
|
|
@ -15,8 +15,8 @@ msgstr ""
|
|||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2019-01-23 16:01+0000\n"
|
||||
"Last-Translator: foss <oss@disr.it>, 2020\n"
|
||||
"Language-Team: German (https://app.transifex.com/Friendica/teams/12172/de/)\n"
|
||||
"Last-Translator: foss <foss@openmailbox.org>, 2020\n"
|
||||
"Language-Team: German (https://www.transifex.com/Friendica/teams/12172/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ function curweather_network_mod_init(string &$body)
|
|||
return;
|
||||
}
|
||||
|
||||
DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . DI::baseUrl() . '/addon/curweather/curweather.css' . '" media="all" />' . "\r\n";
|
||||
DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . DI::baseUrl()->get() . '/addon/curweather/curweather.css' . '" media="all" />' . "\r\n";
|
||||
|
||||
// $rpt value is needed for location
|
||||
// $lang will be taken from the browser session to honour user settings
|
||||
|
|
|
|||
|
|
@ -11,116 +11,124 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-22 11:34+0000\n"
|
||||
"Last-Translator: Aditoo, 2018\n"
|
||||
"Language-Team: Czech (http://app.transifex.com/Friendica/friendica/language/cs/)\n"
|
||||
"POT-Creation-Date: 2016-09-25 17:17+0200\n"
|
||||
"PO-Revision-Date: 2018-07-05 17:03+0000\n"
|
||||
"Last-Translator: Aditoo\n"
|
||||
"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||
|
||||
#: curweather.php:47
|
||||
msgid "Error fetching weather data. Error was: "
|
||||
msgstr ""
|
||||
#: curweather.php:31
|
||||
msgid "Error fetching weather data.\\nError was: "
|
||||
msgstr "Chyba při získávání dat o počasí.\\nChyba:"
|
||||
|
||||
#: curweather.php:130
|
||||
#: curweather.php:111 curweather.php:172
|
||||
msgid "Current Weather"
|
||||
msgstr "Aktuální počasí"
|
||||
|
||||
#: curweather.php:137
|
||||
#: curweather.php:118
|
||||
msgid "Relative Humidity"
|
||||
msgstr "Relativní vlhkost vzduchu"
|
||||
|
||||
#: curweather.php:138
|
||||
#: curweather.php:119
|
||||
msgid "Pressure"
|
||||
msgstr "Tlak"
|
||||
|
||||
#: curweather.php:139
|
||||
#: curweather.php:120
|
||||
msgid "Wind"
|
||||
msgstr "Vítr"
|
||||
|
||||
#: curweather.php:140
|
||||
#: curweather.php:121
|
||||
msgid "Last Updated"
|
||||
msgstr "Naposledy aktualizováno"
|
||||
|
||||
#: curweather.php:141
|
||||
#: curweather.php:122
|
||||
msgid "Data by"
|
||||
msgstr "Data podle"
|
||||
|
||||
#: curweather.php:142
|
||||
#: curweather.php:123
|
||||
msgid "Show on map"
|
||||
msgstr "Ukázat na mapě"
|
||||
|
||||
#: curweather.php:147
|
||||
#: curweather.php:128
|
||||
msgid "There was a problem accessing the weather data. But have a look"
|
||||
msgstr "Při získávání dat o počasí nastala chyba. Podívejte se ale"
|
||||
|
||||
#: curweather.php:149
|
||||
#: curweather.php:130
|
||||
msgid "at OpenWeatherMap"
|
||||
msgstr "na OpenWeatherMap"
|
||||
|
||||
#: curweather.php:178
|
||||
#: curweather.php:146
|
||||
msgid "Current Weather settings updated."
|
||||
msgstr "Nastavení pro Aktuální počasí aktualizováno."
|
||||
|
||||
#: curweather.php:161
|
||||
msgid "No APPID found, please contact your admin to obtain one."
|
||||
msgstr "Žádné APPID nebylo nalezeno, prosím kontaktujte svého administrátora pro získání APPID."
|
||||
|
||||
#: curweather.php:188
|
||||
#: curweather.php:171 curweather.php:200
|
||||
msgid "Save Settings"
|
||||
msgstr "Uložit nastavení"
|
||||
|
||||
#: curweather.php:172
|
||||
msgid "Settings"
|
||||
msgstr "Nastavení"
|
||||
|
||||
#: curweather.php:174
|
||||
msgid "Enter either the name of your location or the zip code."
|
||||
msgstr "Zadejte buď název místa, kde se nacházíte, nebo PSČ."
|
||||
|
||||
#: curweather.php:189
|
||||
#: curweather.php:175
|
||||
msgid "Your Location"
|
||||
msgstr "Vaše poloha"
|
||||
|
||||
#: curweather.php:189
|
||||
#: curweather.php:175
|
||||
msgid ""
|
||||
"Identifier of your location (name or zip code), e.g. <em>Berlin,DE</em> or "
|
||||
"<em>14476,DE</em>."
|
||||
msgstr "Identifikátor vaší polohy (název nebo PSČ), např. <em>Praha,CZ</em> nebo <em>11000,CZ</em>."
|
||||
|
||||
#: curweather.php:190
|
||||
#: curweather.php:176
|
||||
msgid "Units"
|
||||
msgstr "Jednotky"
|
||||
|
||||
#: curweather.php:190
|
||||
#: curweather.php:176
|
||||
msgid "select if the temperature should be displayed in °C or °F"
|
||||
msgstr "vyberte, jestli by se teplota měla zobrazovat v °C či °F"
|
||||
|
||||
#: curweather.php:191
|
||||
#: curweather.php:177
|
||||
msgid "Show weather data"
|
||||
msgstr "Ukázat data o počasí"
|
||||
|
||||
#: curweather.php:196
|
||||
msgid "Current Weather Settings"
|
||||
msgstr ""
|
||||
#: curweather.php:190
|
||||
msgid "Curweather settings saved."
|
||||
msgstr "Nastavení Curwather uložena."
|
||||
|
||||
#: curweather.php:227
|
||||
msgid "Save Settings"
|
||||
msgstr "Uložit nastavení"
|
||||
|
||||
#: curweather.php:230
|
||||
#: curweather.php:201
|
||||
msgid "Caching Interval"
|
||||
msgstr "Interval mezipaměti"
|
||||
msgstr "Ukládám interval do mezipaměti"
|
||||
|
||||
#: curweather.php:232
|
||||
#: curweather.php:201
|
||||
msgid ""
|
||||
"For how long should the weather data be cached? Choose according your "
|
||||
"OpenWeatherMap account type."
|
||||
msgstr "Na jak dlouho by vaše data o počasí měla být uložena v mezipaměti? Vyberte podle typu vašeho účtu na OpenWeatherMap."
|
||||
|
||||
#: curweather.php:233
|
||||
#: curweather.php:201
|
||||
msgid "no cache"
|
||||
msgstr "žádná mezipaměť"
|
||||
|
||||
#: curweather.php:234 curweather.php:235 curweather.php:236 curweather.php:237
|
||||
#: curweather.php:201
|
||||
msgid "minutes"
|
||||
msgstr "minut"
|
||||
|
||||
#: curweather.php:240
|
||||
#: curweather.php:202
|
||||
msgid "Your APPID"
|
||||
msgstr "Vaše APPID"
|
||||
|
||||
#: curweather.php:240
|
||||
#: curweather.php:202
|
||||
msgid "Your API key provided by OpenWeatherMap"
|
||||
msgstr "Váš API klíč poskytnutý OpenWetherMap"
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ function string_plural_select_cs($n){
|
|||
$n = intval($n);
|
||||
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
|
||||
}}
|
||||
$a->strings['Error fetching weather data.\nError was: '] = 'Chyba při získávání dat o počasí.\nChyba:';
|
||||
$a->strings['Current Weather'] = 'Aktuální počasí';
|
||||
$a->strings['Relative Humidity'] = 'Relativní vlhkost vzduchu';
|
||||
$a->strings['Pressure'] = 'Tlak';
|
||||
|
|
@ -14,15 +15,18 @@ $a->strings['Data by'] = 'Data podle';
|
|||
$a->strings['Show on map'] = 'Ukázat na mapě';
|
||||
$a->strings['There was a problem accessing the weather data. But have a look'] = 'Při získávání dat o počasí nastala chyba. Podívejte se ale';
|
||||
$a->strings['at OpenWeatherMap'] = 'na OpenWeatherMap';
|
||||
$a->strings['Current Weather settings updated.'] = 'Nastavení pro Aktuální počasí aktualizováno.';
|
||||
$a->strings['No APPID found, please contact your admin to obtain one.'] = 'Žádné APPID nebylo nalezeno, prosím kontaktujte svého administrátora pro získání APPID.';
|
||||
$a->strings['Save Settings'] = 'Uložit nastavení';
|
||||
$a->strings['Settings'] = 'Nastavení';
|
||||
$a->strings['Enter either the name of your location or the zip code.'] = 'Zadejte buď název místa, kde se nacházíte, nebo PSČ.';
|
||||
$a->strings['Your Location'] = 'Vaše poloha';
|
||||
$a->strings['Identifier of your location (name or zip code), e.g. <em>Berlin,DE</em> or <em>14476,DE</em>.'] = 'Identifikátor vaší polohy (název nebo PSČ), např. <em>Praha,CZ</em> nebo <em>11000,CZ</em>.';
|
||||
$a->strings['Units'] = 'Jednotky';
|
||||
$a->strings['select if the temperature should be displayed in °C or °F'] = 'vyberte, jestli by se teplota měla zobrazovat v °C či °F';
|
||||
$a->strings['Show weather data'] = 'Ukázat data o počasí';
|
||||
$a->strings['Save Settings'] = 'Uložit nastavení';
|
||||
$a->strings['Caching Interval'] = 'Interval mezipaměti';
|
||||
$a->strings['Curweather settings saved.'] = 'Nastavení Curwather uložena.';
|
||||
$a->strings['Caching Interval'] = 'Ukládám interval do mezipaměti';
|
||||
$a->strings['For how long should the weather data be cached? Choose according your OpenWeatherMap account type.'] = 'Na jak dlouho by vaše data o počasí měla být uložena v mezipaměti? Vyberte podle typu vašeho účtu na OpenWeatherMap.';
|
||||
$a->strings['no cache'] = 'žádná mezipaměť';
|
||||
$a->strings['minutes'] = 'minut';
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-22 11:34+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2016,2021-2022\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2022-01-22 17:28+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ function diaspora_post_local(array &$b)
|
|||
|
||||
function diaspora_send(array &$b)
|
||||
{
|
||||
$hostname = DI::baseUrl()->getHost();
|
||||
$hostname = DI::baseUrl()->getHostname();
|
||||
|
||||
Logger::notice('diaspora_send: invoked');
|
||||
|
||||
|
|
@ -205,7 +205,7 @@ function diaspora_send(array &$b)
|
|||
$b['body'] = Post\Media::addAttachmentsToBody($b['uri-id'], DI::contentItem()->addSharedPost($b));
|
||||
|
||||
// Dont't post if the post doesn't belong to us.
|
||||
// This is a check for group postings
|
||||
// This is a check for forum postings
|
||||
$self = DBA::selectFirst('contact', ['id'], ['uid' => $b['uid'], 'self' => true]);
|
||||
|
||||
if ($b['contact-id'] != $self['id']) {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-03 15:48-0400\n"
|
||||
"POT-Creation-Date: 2021-11-21 19:17-0500\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"
|
||||
|
|
@ -17,84 +17,84 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: diaspora.php:43
|
||||
#: diaspora.php:44
|
||||
msgid "Post to Diaspora"
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:66
|
||||
#: diaspora.php:67
|
||||
#, php-format
|
||||
msgid ""
|
||||
"Please remember: You can always be reached from Diaspora with your Friendica "
|
||||
"handle <strong>%s</strong>. "
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:67
|
||||
#: diaspora.php:68
|
||||
msgid ""
|
||||
"This connector is only meant if you still want to use your old Diaspora "
|
||||
"account for some time. "
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:68
|
||||
#: diaspora.php:69
|
||||
#, php-format
|
||||
msgid ""
|
||||
"However, it is preferred that you tell your Diaspora contacts the new handle "
|
||||
"<strong>%s</strong> instead."
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:78
|
||||
#: diaspora.php:79
|
||||
msgid "All aspects"
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:79
|
||||
#: diaspora.php:80
|
||||
msgid "Public"
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:85
|
||||
#: diaspora.php:86
|
||||
msgid "Post to aspect:"
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:86
|
||||
#: diaspora.php:87
|
||||
#, php-format
|
||||
msgid "Connected with your Diaspora account <strong>%s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:89
|
||||
#: diaspora.php:90
|
||||
msgid ""
|
||||
"Can't login to your Diaspora account. Please check handle (in the format "
|
||||
"user@domain.tld) and password."
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:96
|
||||
#: diaspora.php:97
|
||||
msgid "Information"
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:97
|
||||
#: diaspora.php:98
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:103
|
||||
#: diaspora.php:104
|
||||
msgid "Enable Diaspora Post Addon"
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:104
|
||||
#: diaspora.php:105
|
||||
msgid "Diaspora handle"
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:105
|
||||
#: diaspora.php:106
|
||||
msgid "Diaspora password"
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:105
|
||||
#: diaspora.php:106
|
||||
msgid ""
|
||||
"Privacy notice: Your Diaspora password will be stored unencrypted to "
|
||||
"authenticate you with your Diaspora pod. This means your Friendica node "
|
||||
"administrator can have access to it."
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:107
|
||||
#: diaspora.php:108
|
||||
msgid "Post to Diaspora by default"
|
||||
msgstr ""
|
||||
|
||||
#: diaspora.php:112
|
||||
#: diaspora.php:113
|
||||
msgid "Diaspora Export"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#
|
||||
#
|
||||
# Translators:
|
||||
# foss <oss@disr.it>, 2020
|
||||
# foss <foss@openmailbox.org>, 2020
|
||||
# Till Mohr <tmtrfx@till-mohr.de>, 2021
|
||||
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2014
|
||||
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2018,2020
|
||||
|
|
@ -14,9 +14,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:17-0500\n"
|
||||
"PO-Revision-Date: 2014-06-22 11:39+0000\n"
|
||||
"Last-Translator: Till Mohr <tmtrfx@till-mohr.de>, 2021\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2021-12-22 15:27+0000\n"
|
||||
"Last-Translator: Transifex Bot <>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -10,36 +10,40 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:17-0500\n"
|
||||
"PO-Revision-Date: 2014-06-22 11:41+0000\n"
|
||||
"Last-Translator: Aditoo, 2018\n"
|
||||
"Language-Team: Czech (http://app.transifex.com/Friendica/friendica/language/cs/)\n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2018-06-14 10:13+0000\n"
|
||||
"Last-Translator: Aditoo\n"
|
||||
"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||
|
||||
#: dwpost.php:43
|
||||
#: dwpost.php:39
|
||||
msgid "Post to Dreamwidth"
|
||||
msgstr "Odeslat na Dreamwidth"
|
||||
msgstr "Poslat na Dreamwidth"
|
||||
|
||||
#: dwpost.php:63
|
||||
msgid "Enable Dreamwidth Post Addon"
|
||||
msgstr ""
|
||||
#: dwpost.php:70
|
||||
msgid "Dreamwidth Post Settings"
|
||||
msgstr "Nastavení Dreamwidth Post"
|
||||
|
||||
#: dwpost.php:64
|
||||
msgid "Dreamwidth username"
|
||||
msgstr ""
|
||||
#: dwpost.php:72
|
||||
msgid "Enable dreamwidth Post Addon"
|
||||
msgstr "Povolit doplněk Dreamwidth Post"
|
||||
|
||||
#: dwpost.php:65
|
||||
msgid "Dreamwidth password"
|
||||
msgstr ""
|
||||
#: dwpost.php:77
|
||||
msgid "dreamwidth username"
|
||||
msgstr "dreamwidth uživatelské jméno"
|
||||
|
||||
#: dwpost.php:66
|
||||
msgid "Post to Dreamwidth by default"
|
||||
msgstr ""
|
||||
#: dwpost.php:82
|
||||
msgid "dreamwidth password"
|
||||
msgstr "dreamwidth heslo"
|
||||
|
||||
#: dwpost.php:71
|
||||
msgid "Dreamwidth Export"
|
||||
msgstr ""
|
||||
#: dwpost.php:87
|
||||
msgid "Post to dreamwidth by default"
|
||||
msgstr "Ve výchozím stavu posílat na dreamwidth"
|
||||
|
||||
#: dwpost.php:93
|
||||
msgid "Submit"
|
||||
msgstr "Odeslat"
|
||||
|
|
|
|||
|
|
@ -5,4 +5,10 @@ function string_plural_select_cs($n){
|
|||
$n = intval($n);
|
||||
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
|
||||
}}
|
||||
$a->strings['Post to Dreamwidth'] = 'Odeslat na Dreamwidth';
|
||||
$a->strings['Post to Dreamwidth'] = 'Poslat na Dreamwidth';
|
||||
$a->strings['Dreamwidth Post Settings'] = 'Nastavení Dreamwidth Post';
|
||||
$a->strings['Enable dreamwidth Post Addon'] = 'Povolit doplněk Dreamwidth Post';
|
||||
$a->strings['dreamwidth username'] = 'dreamwidth uživatelské jméno';
|
||||
$a->strings['dreamwidth password'] = 'dreamwidth heslo';
|
||||
$a->strings['Post to dreamwidth by default'] = 'Ve výchozím stavu posílat na dreamwidth';
|
||||
$a->strings['Submit'] = 'Odeslat';
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:17-0500\n"
|
||||
"PO-Revision-Date: 2014-06-22 11:41+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2018,2021-2022\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2022-01-22 17:33+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -4,8 +4,6 @@
|
|||
* Description: Add a directory of forums hosted on your server, with verbose descriptions.
|
||||
* Version: 1.1
|
||||
* Author: Thomas Willingham <https://beardyunixer.com/profile/beardyunixer>
|
||||
* Status: Unsupported
|
||||
* Note: Please use Group Directory instead
|
||||
*/
|
||||
|
||||
use Friendica\App;
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-22 12:31+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2021\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2021-02-06 16:55+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-22 12:33+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2019\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2021-12-22 15:15+0000\n"
|
||||
"Last-Translator: Transifex Bot <>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:27+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2018,2021\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2021-12-22 17:23+0000\n"
|
||||
"Last-Translator: Transifex Bot <>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:30+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2018,2021\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2021-12-22 15:27+0000\n"
|
||||
"Last-Translator: Transifex Bot <>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -4,69 +4,72 @@
|
|||
#
|
||||
#
|
||||
# Translators:
|
||||
# Aditoo, 2018
|
||||
# michal_s <msupler@gmail.com>, 2014-2015
|
||||
# Michal Šupler <msupler@gmail.com>, 2014-2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:33+0000\n"
|
||||
"Last-Translator: Aditoo, 2018\n"
|
||||
"Language-Team: Czech (http://app.transifex.com/Friendica/friendica/language/cs/)\n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2015-02-11 19:41+0000\n"
|
||||
"Last-Translator: Michal Šupler <msupler@gmail.com>\n"
|
||||
"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
|
||||
#: gravatar.php:78
|
||||
#: gravatar.php:71
|
||||
msgid "generic profile image"
|
||||
msgstr "generický profilový obrázek"
|
||||
|
||||
#: gravatar.php:79
|
||||
#: gravatar.php:72
|
||||
msgid "random geometric pattern"
|
||||
msgstr "náhodný geometrický vzor"
|
||||
|
||||
#: gravatar.php:80
|
||||
#: gravatar.php:73
|
||||
msgid "monster face"
|
||||
msgstr "tvář příšery"
|
||||
|
||||
#: gravatar.php:81
|
||||
#: gravatar.php:74
|
||||
msgid "computer generated face"
|
||||
msgstr "počítačově generovaná tvář"
|
||||
|
||||
#: gravatar.php:82
|
||||
#: gravatar.php:75
|
||||
msgid "retro arcade style face"
|
||||
msgstr "tvář v retro arkádovém stylu"
|
||||
|
||||
#: gravatar.php:96
|
||||
#: gravatar.php:89
|
||||
msgid "Information"
|
||||
msgstr "Informace"
|
||||
|
||||
#: gravatar.php:96
|
||||
#: gravatar.php:89
|
||||
msgid ""
|
||||
"Libravatar addon is installed, too. Please disable Libravatar addon or this "
|
||||
"Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if "
|
||||
"nothing was found at Libravatar."
|
||||
msgstr "Doplněk Libravatar je také nainstalován. Prosím zakažte doplněk Libravatar nebo tento doplněk Gravatar.<br>Doplněk Libravatar se přepne na Gravatar, pokud na Libravataru nebude nic nalezeno."
|
||||
msgstr "Libravatar doplněk je také nainstalován. Prosím zakažte doplněk Libravatar nebo tento doplněk Gravatar.<br>Libravatar doplněk se vrátí k doplňku Gravatar, pokud na Libravataru nebude nic nalezeno."
|
||||
|
||||
#: gravatar.php:102
|
||||
msgid "Save Settings"
|
||||
msgstr ""
|
||||
#: gravatar.php:95
|
||||
msgid "Submit"
|
||||
msgstr "Odeslat"
|
||||
|
||||
#: gravatar.php:103
|
||||
#: gravatar.php:96
|
||||
msgid "Default avatar image"
|
||||
msgstr "Výchozí avatarový obrázek"
|
||||
msgstr "Defaultní obrázek avataru"
|
||||
|
||||
#: gravatar.php:103
|
||||
#: gravatar.php:96
|
||||
msgid "Select default avatar image if none was found at Gravatar. See README"
|
||||
msgstr "Nastavte výchozí avatarový obrázek, pokud ho již nemáte na Gravataru. Více viz. soubor README."
|
||||
msgstr "Nastavte defaulní obrázek avatara pokud ho již nemáte na Gravatar. Více viz. soubor README."
|
||||
|
||||
#: gravatar.php:104
|
||||
#: gravatar.php:97
|
||||
msgid "Rating of images"
|
||||
msgstr "Hodnocení obrázků"
|
||||
|
||||
#: gravatar.php:104
|
||||
#: gravatar.php:97
|
||||
msgid "Select the appropriate avatar rating for your site. See README"
|
||||
msgstr "Zadejte příslušné ohodnocení avataru pro vaši stránku. Viz README."
|
||||
msgstr "Zadejte ohodnocení příslušného avatara pro vaši stránku. Viz README."
|
||||
|
||||
#: gravatar.php:111
|
||||
msgid "Gravatar settings updated."
|
||||
msgstr "Nastavení Gravatar aktualizováno."
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
if(! function_exists("string_plural_select_cs")) {
|
||||
function string_plural_select_cs($n){
|
||||
$n = intval($n);
|
||||
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
|
||||
if (($n==1)) { return 0; } else if (($n>=2 && $n<=4)) { return 1; } else { return 2; }
|
||||
}}
|
||||
$a->strings['generic profile image'] = 'generický profilový obrázek';
|
||||
$a->strings['random geometric pattern'] = 'náhodný geometrický vzor';
|
||||
|
|
@ -11,8 +11,10 @@ $a->strings['monster face'] = 'tvář příšery';
|
|||
$a->strings['computer generated face'] = 'počítačově generovaná tvář';
|
||||
$a->strings['retro arcade style face'] = 'tvář v retro arkádovém stylu';
|
||||
$a->strings['Information'] = 'Informace';
|
||||
$a->strings['Libravatar addon is installed, too. Please disable Libravatar addon or this Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar.'] = 'Doplněk Libravatar je také nainstalován. Prosím zakažte doplněk Libravatar nebo tento doplněk Gravatar.<br>Doplněk Libravatar se přepne na Gravatar, pokud na Libravataru nebude nic nalezeno.';
|
||||
$a->strings['Default avatar image'] = 'Výchozí avatarový obrázek';
|
||||
$a->strings['Select default avatar image if none was found at Gravatar. See README'] = 'Nastavte výchozí avatarový obrázek, pokud ho již nemáte na Gravataru. Více viz. soubor README.';
|
||||
$a->strings['Libravatar addon is installed, too. Please disable Libravatar addon or this Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar.'] = 'Libravatar doplněk je také nainstalován. Prosím zakažte doplněk Libravatar nebo tento doplněk Gravatar.<br>Libravatar doplněk se vrátí k doplňku Gravatar, pokud na Libravataru nebude nic nalezeno.';
|
||||
$a->strings['Submit'] = 'Odeslat';
|
||||
$a->strings['Default avatar image'] = 'Defaultní obrázek avataru';
|
||||
$a->strings['Select default avatar image if none was found at Gravatar. See README'] = 'Nastavte defaulní obrázek avatara pokud ho již nemáte na Gravatar. Více viz. soubor README.';
|
||||
$a->strings['Rating of images'] = 'Hodnocení obrázků';
|
||||
$a->strings['Select the appropriate avatar rating for your site. See README'] = 'Zadejte příslušné ohodnocení avataru pro vaši stránku. Viz README.';
|
||||
$a->strings['Select the appropriate avatar rating for your site. See README'] = 'Zadejte ohodnocení příslušného avatara pro vaši stránku. Viz README.';
|
||||
$a->strings['Gravatar settings updated.'] = 'Nastavení Gravatar aktualizováno.';
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:33+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2021\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2021-02-06 17:01+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -4,8 +4,6 @@
|
|||
* Description: Disable images in group edit menu
|
||||
* Version: 1.0
|
||||
* Author: Thomas Willingham <https://kakste.com/profile/beardyunixer>
|
||||
* Status: Unsupported
|
||||
* Note: Please use Circle Text instead
|
||||
*/
|
||||
|
||||
use Friendica\App;
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:35+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2021\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2021-12-22 15:27+0000\n"
|
||||
"Last-Translator: Transifex Bot <>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -1,155 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Name: Group Directory
|
||||
* Description: Add a directory of groups hosted on your server, with verbose descriptions.
|
||||
* Version: 1.1
|
||||
* Author: Thomas Willingham <https://beardyunixer.com/profile/beardyunixer>
|
||||
*/
|
||||
|
||||
use Friendica\Content\Nav;
|
||||
use Friendica\Content\Pager;
|
||||
use Friendica\Content\Widget;
|
||||
use Friendica\Core\Hook;
|
||||
use Friendica\Core\Renderer;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\DI;
|
||||
use Friendica\Model\Profile;
|
||||
use Friendica\Model\User;
|
||||
|
||||
global $groupdirectory_search;
|
||||
|
||||
function groupdirectory_install()
|
||||
{
|
||||
Hook::register('app_menu', __FILE__, 'groupdirectory_app_menu');
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a statement rather than an actual function definition. The simple
|
||||
* existence of this method is checked to figure out if the addon offers a
|
||||
* module.
|
||||
*/
|
||||
/**
|
||||
* This is a statement rather than an actual function definition. The simple
|
||||
* existence of this method is checked to figure out if the addon offers a
|
||||
* module.
|
||||
*/
|
||||
function groupdirectory_module() {}
|
||||
|
||||
function groupdirectory_app_menu(array &$b)
|
||||
{
|
||||
$b['app_menu'][] = '<div class="app-title"><a href="groupdirectory">' . DI::l10n()->t('Group Directory') . '</a></div>';
|
||||
}
|
||||
|
||||
function groupdirectory_init()
|
||||
{
|
||||
if (DI::userSession()->getLocalUserId()) {
|
||||
DI::page()['aside'] .= Widget::findPeople();
|
||||
}
|
||||
}
|
||||
|
||||
function groupdirectory_post()
|
||||
{
|
||||
global $groupdirectory_search;
|
||||
|
||||
if (!empty($_POST['search'])) {
|
||||
$groupdirectory_search = $_POST['search'];
|
||||
}
|
||||
}
|
||||
|
||||
function groupdirectory_content()
|
||||
{
|
||||
global $groupdirectory_search;
|
||||
|
||||
if (DI::config()->get('system', 'block_public') && !DI::userSession()->getLocalUserId() && !DI::userSession()->getRemoteUserId()) {
|
||||
DI::sysmsg()->addNotice(DI::l10n()->t('Public access denied.'));
|
||||
return '';
|
||||
}
|
||||
|
||||
$o = '';
|
||||
$entries = [];
|
||||
|
||||
Nav::setSelected('directory');
|
||||
|
||||
if (!empty($groupdirectory_search)) {
|
||||
$search = trim($groupdirectory_search);
|
||||
} else {
|
||||
$search = (!empty($_GET['search']) ? trim(rawurldecode($_GET['search'])) : '');
|
||||
}
|
||||
|
||||
$gdirpath = '';
|
||||
$dirurl = DI::config()->get('system', 'directory');
|
||||
if (strlen($dirurl)) {
|
||||
$gdirpath = Profile::zrl($dirurl, true);
|
||||
}
|
||||
|
||||
$sql_extra = '';
|
||||
if (strlen($search)) {
|
||||
$search = DBA::escape($search);
|
||||
|
||||
$sql_extra = " AND ((`profile`.`name` LIKE '%$search%') OR
|
||||
(`user`.`nickname` LIKE '%$search%') OR
|
||||
(`profile`.`about` LIKE '%$search%') OR
|
||||
(`profile`.`locality` LIKE '%$search%') OR
|
||||
(`profile`.`region` LIKE '%$search%') OR
|
||||
(`profile`.`country-name` LIKE '%$search%') OR
|
||||
(`profile`.`pub_keywords` LIKE '%$search%') OR
|
||||
(`profile`.`prv_keywords` LIKE '%$search%'))";
|
||||
}
|
||||
|
||||
$publish = DI::config()->get('system', 'publish_all') ? '' : "`publish` = 1";
|
||||
|
||||
$total = 0;
|
||||
$cnt = DBA::fetchFirst("SELECT COUNT(*) AS `total` FROM `profile`
|
||||
INNER JOIN `user` ON `user`.`uid` = `profile`.`uid`
|
||||
WHERE $publish AND NOT `user`.`blocked` AND NOT `user`.`account_removed` AND `user`.`page-flags` = ? $sql_extra",
|
||||
User::PAGE_FLAGS_COMMUNITY);
|
||||
if (DBA::isResult($cnt)) {
|
||||
$total = $cnt['total'];
|
||||
}
|
||||
|
||||
$pager = new Pager(DI::l10n(), DI::args()->getQueryString(), 60);
|
||||
|
||||
$order = " ORDER BY `name` ASC ";
|
||||
|
||||
$limit = $pager->getStart() . "," . $pager->getItemsPerPage();
|
||||
|
||||
$r = DBA::p("SELECT `profile`.*, `user`.`nickname`, `user`.`timezone` , `user`.`page-flags`,
|
||||
`contact`.`addr`, `contact`.`url` FROM `profile`
|
||||
INNER JOIN `user` ON `user`.`uid` = `profile`.`uid`
|
||||
INNER JOIN `contact` ON `contact`.`uid` = `user`.`uid`
|
||||
WHERE $publish AND NOT `user`.`blocked` AND NOT `user`.`account_removed` AND `user`.`page-flags` = ? AND `contact`.`self`
|
||||
$sql_extra $order LIMIT $limit", User::PAGE_FLAGS_COMMUNITY
|
||||
);
|
||||
|
||||
if (DBA::isResult($r)) {
|
||||
if (in_array('small', DI::args()->getArgv())) {
|
||||
$photo = 'thumb';
|
||||
} else {
|
||||
$photo = 'photo';
|
||||
}
|
||||
|
||||
while ($rr = DBA::fetch($r)) {
|
||||
$entries[] = Friendica\Module\Directory::formatEntry($rr, $photo);
|
||||
}
|
||||
DBA::close($r);
|
||||
} else {
|
||||
DI::sysmsg()->addNotice(DI::l10n()->t('No entries (some entries may be hidden).'));
|
||||
}
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate('directory_header.tpl');
|
||||
$o .= Renderer::replaceMacros($tpl, [
|
||||
'$search' => $search,
|
||||
'$globaldir' => DI::l10n()->t('Global Directory'),
|
||||
'$gdirpath' => $gdirpath,
|
||||
'$desc' => DI::l10n()->t('Find on this site'),
|
||||
'$contacts' => $entries,
|
||||
'$finding' => DI::l10n()->t('Results for:'),
|
||||
'$findterm' => (strlen($search) ? $search : ""),
|
||||
'$title' => DI::l10n()->t('Group Directory'),
|
||||
'$search_mod' => 'groupdirectory',
|
||||
'$submit' => DI::l10n()->t('Find'),
|
||||
'$paginate' => $pager->renderFull($total),
|
||||
]);
|
||||
|
||||
return $o;
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
# ADDON groupdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica groupdirectory addon package.
|
||||
#
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-03 15:49-0400\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"
|
||||
|
||||
#: groupdirectory.php:40 groupdirectory.php:148
|
||||
msgid "Group Directory"
|
||||
msgstr ""
|
||||
|
||||
#: groupdirectory.php:64
|
||||
msgid "Public access denied."
|
||||
msgstr ""
|
||||
|
||||
#: groupdirectory.php:136
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr ""
|
||||
|
||||
#: groupdirectory.php:142
|
||||
msgid "Global Directory"
|
||||
msgstr ""
|
||||
|
||||
#: groupdirectory.php:144
|
||||
msgid "Find on this site"
|
||||
msgstr ""
|
||||
|
||||
#: groupdirectory.php:146
|
||||
msgid "Results for:"
|
||||
msgstr ""
|
||||
|
||||
#: groupdirectory.php:150
|
||||
msgid "Find"
|
||||
msgstr ""
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# abidin toumi <abidin24@tutanota.com>, 2021
|
||||
# ButterflyOfFire, 2019
|
||||
# Farida Khalaf <faridakhalaf@hotmail.com>, 2021
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2021-10-29 10:27+0000\n"
|
||||
"Last-Translator: abidin toumi <abidin24@tutanota.com>\n"
|
||||
"Language-Team: Arabic (http://www.transifex.com/Friendica/friendica/language/ar/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ar\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
|
||||
|
||||
#: forumdirectory.php:33 forumdirectory.php:137
|
||||
msgid "Forum Directory"
|
||||
msgstr "دليل المنتدى"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "رُفض الوصول العمومي."
|
||||
|
||||
#: forumdirectory.php:125
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "لا توجد مدخلات (قد تكون بعض المدخلات مخفية)."
|
||||
|
||||
#: forumdirectory.php:131
|
||||
msgid "Global Directory"
|
||||
msgstr "الدليل العالمي"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Find on this site"
|
||||
msgstr "ابحث في هذا الموقع"
|
||||
|
||||
#: forumdirectory.php:135
|
||||
msgid "Results for:"
|
||||
msgstr "النتائج:"
|
||||
|
||||
#: forumdirectory.php:139
|
||||
msgid "Find"
|
||||
msgstr "ابحث"
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_ar")) {
|
||||
function string_plural_select_ar($n){
|
||||
$n = intval($n);
|
||||
if ($n==0) { return 0; } else if ($n==1) { return 1; } else if ($n==2) { return 2; } else if ($n%100>=3 && $n%100<=10) { return 3; } else if ($n%100>=11 && $n%100<=99) { return 4; } else { return 5; }
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'دليل المنتدى';
|
||||
$a->strings['Public access denied.'] = 'رُفض الوصول العمومي.';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'لا توجد مدخلات (قد تكون بعض المدخلات مخفية).';
|
||||
$a->strings['Global Directory'] = 'الدليل العالمي';
|
||||
$a->strings['Find on this site'] = 'ابحث في هذا الموقع';
|
||||
$a->strings['Results for:'] = 'النتائج:';
|
||||
$a->strings['Find'] = 'ابحث';
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Joan Bar <friendica@tutanota.com>, 2019
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2019-10-18 18:57+0000\n"
|
||||
"Last-Translator: Joan Bar <friendica@tutanota.com>\n"
|
||||
"Language-Team: Catalan (http://www.transifex.com/Friendica/friendica/language/ca/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ca\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: forumdirectory.php:22
|
||||
msgid "Forum Directory"
|
||||
msgstr "Directori de fòrums"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "L'accés al públic s'ha denegat."
|
||||
|
||||
#: forumdirectory.php:71
|
||||
msgid "Global Directory"
|
||||
msgstr "Directori global"
|
||||
|
||||
#: forumdirectory.php:79
|
||||
msgid "Find on this site"
|
||||
msgstr "Cerqueu en aquest lloc"
|
||||
|
||||
#: forumdirectory.php:81
|
||||
msgid "Finding: "
|
||||
msgstr "Trobament:"
|
||||
|
||||
#: forumdirectory.php:82
|
||||
msgid "Site Directory"
|
||||
msgstr "Directori de llocs"
|
||||
|
||||
#: forumdirectory.php:83
|
||||
msgid "Find"
|
||||
msgstr "trobar"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Age: "
|
||||
msgstr "Edat:"
|
||||
|
||||
#: forumdirectory.php:136
|
||||
msgid "Gender: "
|
||||
msgstr "Gènere:"
|
||||
|
||||
#: forumdirectory.php:156
|
||||
msgid "Location:"
|
||||
msgstr "Ubicació:"
|
||||
|
||||
#: forumdirectory.php:158
|
||||
msgid "Gender:"
|
||||
msgstr "Gènere:"
|
||||
|
||||
#: forumdirectory.php:160
|
||||
msgid "Status:"
|
||||
msgstr "Estat:"
|
||||
|
||||
#: forumdirectory.php:162
|
||||
msgid "Homepage:"
|
||||
msgstr "Pàgina inicial:"
|
||||
|
||||
#: forumdirectory.php:164
|
||||
msgid "About:"
|
||||
msgstr "Sobre:"
|
||||
|
||||
#: forumdirectory.php:201
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "No hi ha entrades (algunes entrades poden estar ocultes)."
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_ca")) {
|
||||
function string_plural_select_ca($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Directori de fòrums';
|
||||
$a->strings['Public access denied.'] = 'L\'accés al públic s\'ha denegat.';
|
||||
$a->strings['Global Directory'] = 'Directori global';
|
||||
$a->strings['Find on this site'] = 'Cerqueu en aquest lloc';
|
||||
$a->strings['Finding: '] = 'Trobament:';
|
||||
$a->strings['Site Directory'] = 'Directori de llocs';
|
||||
$a->strings['Find'] = 'trobar';
|
||||
$a->strings['Age: '] = 'Edat:';
|
||||
$a->strings['Gender: '] = 'Gènere:';
|
||||
$a->strings['Location:'] = 'Ubicació:';
|
||||
$a->strings['Gender:'] = 'Gènere:';
|
||||
$a->strings['Status:'] = 'Estat:';
|
||||
$a->strings['Homepage:'] = 'Pàgina inicial:';
|
||||
$a->strings['About:'] = 'Sobre:';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'No hi ha entrades (algunes entrades poden estar ocultes).';
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Aditoo, 2018
|
||||
# michal_s <msupler@gmail.com>, 2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2018-09-11 19:04+0000\n"
|
||||
"Last-Translator: Aditoo\n"
|
||||
"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||
|
||||
#: forumdirectory.php:22
|
||||
msgid "Forum Directory"
|
||||
msgstr "Adresář fór"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Veřejný přístup odepřen."
|
||||
|
||||
#: forumdirectory.php:71
|
||||
msgid "Global Directory"
|
||||
msgstr "Globální adresář"
|
||||
|
||||
#: forumdirectory.php:79
|
||||
msgid "Find on this site"
|
||||
msgstr "Najít na tomto webu"
|
||||
|
||||
#: forumdirectory.php:81
|
||||
msgid "Finding: "
|
||||
msgstr "Hledání: "
|
||||
|
||||
#: forumdirectory.php:82
|
||||
msgid "Site Directory"
|
||||
msgstr "Adresář serveru"
|
||||
|
||||
#: forumdirectory.php:83
|
||||
msgid "Find"
|
||||
msgstr "Najít"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Age: "
|
||||
msgstr "Věk: "
|
||||
|
||||
#: forumdirectory.php:136
|
||||
msgid "Gender: "
|
||||
msgstr "Pohlaví: "
|
||||
|
||||
#: forumdirectory.php:156
|
||||
msgid "Location:"
|
||||
msgstr "Poloha:"
|
||||
|
||||
#: forumdirectory.php:158
|
||||
msgid "Gender:"
|
||||
msgstr "Pohlaví:"
|
||||
|
||||
#: forumdirectory.php:160
|
||||
msgid "Status:"
|
||||
msgstr "Stav:"
|
||||
|
||||
#: forumdirectory.php:162
|
||||
msgid "Homepage:"
|
||||
msgstr "Domovská stránka:"
|
||||
|
||||
#: forumdirectory.php:164
|
||||
msgid "About:"
|
||||
msgstr "O mě:"
|
||||
|
||||
#: forumdirectory.php:201
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Žádné záznamy (některé položky mohou být skryty)."
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_cs")) {
|
||||
function string_plural_select_cs($n){
|
||||
$n = intval($n);
|
||||
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Adresář fór';
|
||||
$a->strings['Public access denied.'] = 'Veřejný přístup odepřen.';
|
||||
$a->strings['Global Directory'] = 'Globální adresář';
|
||||
$a->strings['Find on this site'] = 'Najít na tomto webu';
|
||||
$a->strings['Finding: '] = 'Hledání: ';
|
||||
$a->strings['Site Directory'] = 'Adresář serveru';
|
||||
$a->strings['Find'] = 'Najít';
|
||||
$a->strings['Age: '] = 'Věk: ';
|
||||
$a->strings['Gender: '] = 'Pohlaví: ';
|
||||
$a->strings['Location:'] = 'Poloha:';
|
||||
$a->strings['Gender:'] = 'Pohlaví:';
|
||||
$a->strings['Status:'] = 'Stav:';
|
||||
$a->strings['Homepage:'] = 'Domovská stránka:';
|
||||
$a->strings['About:'] = 'O mě:';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Žádné záznamy (některé položky mohou být skryty).';
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Anton <dev@atjn.dk>, 2022
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-22 12:31+0000\n"
|
||||
"Last-Translator: Anton <dev@atjn.dk>, 2022\n"
|
||||
"Language-Team: Danish (Denmark) (http://www.transifex.com/Friendica/friendica/language/da_DK/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: da_DK\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: forumdirectory.php:33 forumdirectory.php:137
|
||||
msgid "Forum Directory"
|
||||
msgstr "Forum adressebog"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Offentlig adgang nægtet."
|
||||
|
||||
#: forumdirectory.php:125
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Ingen poster (nogle poster er måske skjulte)."
|
||||
|
||||
#: forumdirectory.php:131
|
||||
msgid "Global Directory"
|
||||
msgstr "Global adressebog"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Find on this site"
|
||||
msgstr "Find på denne side"
|
||||
|
||||
#: forumdirectory.php:135
|
||||
msgid "Results for:"
|
||||
msgstr "Resultater for:"
|
||||
|
||||
#: forumdirectory.php:139
|
||||
msgid "Find"
|
||||
msgstr "Find"
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_da_dk")) {
|
||||
function string_plural_select_da_dk($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Forum adressebog';
|
||||
$a->strings['Public access denied.'] = 'Offentlig adgang nægtet.';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Ingen poster (nogle poster er måske skjulte).';
|
||||
$a->strings['Global Directory'] = 'Global adressebog';
|
||||
$a->strings['Find on this site'] = 'Find på denne side';
|
||||
$a->strings['Results for:'] = 'Resultater for:';
|
||||
$a->strings['Find'] = 'Find';
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2014
|
||||
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2021
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-22 12:31+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2021\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/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"
|
||||
|
||||
#: forumdirectory.php:33 forumdirectory.php:137
|
||||
msgid "Forum Directory"
|
||||
msgstr "Foren Verzeichnis"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Öffentlicher Zugriff verweigert."
|
||||
|
||||
#: forumdirectory.php:125
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Keine Einträge (einige Einträge könnten versteckt sein)."
|
||||
|
||||
#: forumdirectory.php:131
|
||||
msgid "Global Directory"
|
||||
msgstr "Weltweites Verzeichnis"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Find on this site"
|
||||
msgstr "Auf diesem Server suchen"
|
||||
|
||||
#: forumdirectory.php:135
|
||||
msgid "Results for:"
|
||||
msgstr "Ergebnis für:"
|
||||
|
||||
#: forumdirectory.php:139
|
||||
msgid "Find"
|
||||
msgstr "Finde"
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_de")) {
|
||||
function string_plural_select_de($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Foren Verzeichnis';
|
||||
$a->strings['Public access denied.'] = 'Öffentlicher Zugriff verweigert.';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Keine Einträge (einige Einträge könnten versteckt sein).';
|
||||
$a->strings['Global Directory'] = 'Weltweites Verzeichnis';
|
||||
$a->strings['Find on this site'] = 'Auf diesem Server suchen';
|
||||
$a->strings['Results for:'] = 'Ergebnis für:';
|
||||
$a->strings['Find'] = 'Finde';
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<?php
|
||||
|
||||
$a->strings["Public access denied."] = "Publika atingo ne permesita.";
|
||||
$a->strings["Global Directory"] = "Tutmonda Katalogo";
|
||||
$a->strings["Find on this site"] = "Trovi en ĉi retejo";
|
||||
$a->strings["Finding: "] = "Trovata:";
|
||||
$a->strings["Site Directory"] = "Reteja Katalogo";
|
||||
$a->strings["Find"] = "Trovi";
|
||||
$a->strings["Age: "] = "Aĝo:";
|
||||
$a->strings["Gender: "] = "Sekso:";
|
||||
$a->strings["Location:"] = "Loko:";
|
||||
$a->strings["Gender:"] = "Sekso:";
|
||||
$a->strings["Status:"] = "Stato:";
|
||||
$a->strings["Homepage:"] = "Hejmpaĝo:";
|
||||
$a->strings["About:"] = "Pri:";
|
||||
$a->strings["No entries (some entries may be hidden)."] = "Neniom da afiŝoj (kelkaj afiŝoj eble ne estas videbla).";
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Albert, 2016
|
||||
# Senex Petrovic <javierruizo@hotmail.com>, 2021
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2021-04-01 09:54+0000\n"
|
||||
"Last-Translator: Senex Petrovic <javierruizo@hotmail.com>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: forumdirectory.php:33 forumdirectory.php:137
|
||||
msgid "Forum Directory"
|
||||
msgstr "Directorio de foro"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Acceso público denegado."
|
||||
|
||||
#: forumdirectory.php:125
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Sin entradas (algunas entradas pueden estar ocultas)."
|
||||
|
||||
#: forumdirectory.php:131
|
||||
msgid "Global Directory"
|
||||
msgstr "Directorio global"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Find on this site"
|
||||
msgstr "Encontrar en esta página"
|
||||
|
||||
#: forumdirectory.php:135
|
||||
msgid "Results for:"
|
||||
msgstr "Resultados para:"
|
||||
|
||||
#: forumdirectory.php:139
|
||||
msgid "Find"
|
||||
msgstr "Encontrar"
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_es")) {
|
||||
function string_plural_select_es($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Directorio de foro';
|
||||
$a->strings['Public access denied.'] = 'Acceso público denegado.';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Sin entradas (algunas entradas pueden estar ocultas).';
|
||||
$a->strings['Global Directory'] = 'Directorio global';
|
||||
$a->strings['Find on this site'] = 'Encontrar en esta página';
|
||||
$a->strings['Results for:'] = 'Resultados para:';
|
||||
$a->strings['Find'] = 'Encontrar';
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Kris, 2018
|
||||
# Kris, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2018-05-12 12:50+0000\n"
|
||||
"Last-Translator: Kris\n"
|
||||
"Language-Team: Finnish (Finland) (http://www.transifex.com/Friendica/friendica/language/fi_FI/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fi_FI\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: forumdirectory.php:22
|
||||
msgid "Forum Directory"
|
||||
msgstr "Foorumihakemisto"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Julkinen käyttö estetty."
|
||||
|
||||
#: forumdirectory.php:71
|
||||
msgid "Global Directory"
|
||||
msgstr "Maailmanlaajuinen hakemisto"
|
||||
|
||||
#: forumdirectory.php:79
|
||||
msgid "Find on this site"
|
||||
msgstr "Sivustohaku"
|
||||
|
||||
#: forumdirectory.php:81
|
||||
msgid "Finding: "
|
||||
msgstr ""
|
||||
|
||||
#: forumdirectory.php:82
|
||||
msgid "Site Directory"
|
||||
msgstr "Sivustoluettelo"
|
||||
|
||||
#: forumdirectory.php:83
|
||||
msgid "Find"
|
||||
msgstr "Etsi"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Age: "
|
||||
msgstr "Ikä:"
|
||||
|
||||
#: forumdirectory.php:136
|
||||
msgid "Gender: "
|
||||
msgstr "Sukupuoli:"
|
||||
|
||||
#: forumdirectory.php:156
|
||||
msgid "Location:"
|
||||
msgstr "Sijainti:"
|
||||
|
||||
#: forumdirectory.php:158
|
||||
msgid "Gender:"
|
||||
msgstr "Sukupuoli:"
|
||||
|
||||
#: forumdirectory.php:160
|
||||
msgid "Status:"
|
||||
msgstr "Tila:"
|
||||
|
||||
#: forumdirectory.php:162
|
||||
msgid "Homepage:"
|
||||
msgstr "Kotisivu:"
|
||||
|
||||
#: forumdirectory.php:164
|
||||
msgid "About:"
|
||||
msgstr "Lisätietoja:"
|
||||
|
||||
#: forumdirectory.php:201
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Ei kohteita (jotkut kohteet saattaa olla piilotettuja)."
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_fi_fi")) {
|
||||
function string_plural_select_fi_fi($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Foorumihakemisto';
|
||||
$a->strings['Public access denied.'] = 'Julkinen käyttö estetty.';
|
||||
$a->strings['Global Directory'] = 'Maailmanlaajuinen hakemisto';
|
||||
$a->strings['Find on this site'] = 'Sivustohaku';
|
||||
$a->strings['Site Directory'] = 'Sivustoluettelo';
|
||||
$a->strings['Find'] = 'Etsi';
|
||||
$a->strings['Age: '] = 'Ikä:';
|
||||
$a->strings['Gender: '] = 'Sukupuoli:';
|
||||
$a->strings['Location:'] = 'Sijainti:';
|
||||
$a->strings['Gender:'] = 'Sukupuoli:';
|
||||
$a->strings['Status:'] = 'Tila:';
|
||||
$a->strings['Homepage:'] = 'Kotisivu:';
|
||||
$a->strings['About:'] = 'Lisätietoja:';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Ei kohteita (jotkut kohteet saattaa olla piilotettuja).';
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# bob lebonche <lebonche@tutanota.com>, 2021
|
||||
# Hypolite Petovan <hypolite@mrpetovan.com>, 2016
|
||||
# StefOfficiel <pichard.stephane@free.fr>, 2015
|
||||
# Valvin <vincent-forum@valvin.fr>, 2019
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-22 12:31+0000\n"
|
||||
"Last-Translator: bob lebonche <lebonche@tutanota.com>, 2021\n"
|
||||
"Language-Team: French (http://www.transifex.com/Friendica/friendica/language/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
|
||||
#: forumdirectory.php:33 forumdirectory.php:137
|
||||
msgid "Forum Directory"
|
||||
msgstr "Annuaire de Forums"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Accès public refusé."
|
||||
|
||||
#: forumdirectory.php:125
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Pas de résultats (certains résultats peuvent être cachés)."
|
||||
|
||||
#: forumdirectory.php:131
|
||||
msgid "Global Directory"
|
||||
msgstr "Annuaire Global"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Find on this site"
|
||||
msgstr "Trouver sur cette instance"
|
||||
|
||||
#: forumdirectory.php:135
|
||||
msgid "Results for:"
|
||||
msgstr "Résultats pour :"
|
||||
|
||||
#: forumdirectory.php:139
|
||||
msgid "Find"
|
||||
msgstr "Chercher"
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_fr")) {
|
||||
function string_plural_select_fr($n){
|
||||
$n = intval($n);
|
||||
if (($n == 0 || $n == 1)) { return 0; } else if ($n != 0 && $n % 1000000 == 0) { return 1; } else { return 2; }
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Annuaire de Forums';
|
||||
$a->strings['Public access denied.'] = 'Accès public refusé.';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Pas de résultats (certains résultats peuvent être cachés).';
|
||||
$a->strings['Global Directory'] = 'Annuaire Global';
|
||||
$a->strings['Find on this site'] = 'Trouver sur cette instance';
|
||||
$a->strings['Results for:'] = 'Résultats pour :';
|
||||
$a->strings['Find'] = 'Chercher';
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Balázs Úr, 2020-2021
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-22 12:31+0000\n"
|
||||
"Last-Translator: Balázs Úr, 2020-2021\n"
|
||||
"Language-Team: Hungarian (http://www.transifex.com/Friendica/friendica/language/hu/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: hu\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: forumdirectory.php:33 forumdirectory.php:137
|
||||
msgid "Forum Directory"
|
||||
msgstr "Fórumkönyvtár"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Nyilvános hozzáférés megtagadva."
|
||||
|
||||
#: forumdirectory.php:125
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Nincsenek bejegyzések (néhány bejegyzés rejtve lehet)."
|
||||
|
||||
#: forumdirectory.php:131
|
||||
msgid "Global Directory"
|
||||
msgstr "Globális könyvtár"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Find on this site"
|
||||
msgstr "Keresés ezen az oldalon"
|
||||
|
||||
#: forumdirectory.php:135
|
||||
msgid "Results for:"
|
||||
msgstr "Találatok ehhez:"
|
||||
|
||||
#: forumdirectory.php:139
|
||||
msgid "Find"
|
||||
msgstr "Keresés"
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_hu")) {
|
||||
function string_plural_select_hu($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Fórumkönyvtár';
|
||||
$a->strings['Public access denied.'] = 'Nyilvános hozzáférés megtagadva.';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Nincsenek bejegyzések (néhány bejegyzés rejtve lehet).';
|
||||
$a->strings['Global Directory'] = 'Globális könyvtár';
|
||||
$a->strings['Find on this site'] = 'Keresés ezen az oldalon';
|
||||
$a->strings['Results for:'] = 'Találatok ehhez:';
|
||||
$a->strings['Find'] = 'Keresés';
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<?php
|
||||
|
||||
$a->strings["Public access denied."] = "Alemennings aðgangur ekki veittur.";
|
||||
$a->strings["Global Directory"] = "Heims tengiliða skrá";
|
||||
$a->strings["Find on this site"] = "Leita á þessum vef";
|
||||
$a->strings["Finding: "] = "Niðurstöður:";
|
||||
$a->strings["Site Directory"] = "Vef tengiliða skrá";
|
||||
$a->strings["Find"] = "Finna";
|
||||
$a->strings["Age: "] = "Aldur:";
|
||||
$a->strings["Gender: "] = "Kyn:";
|
||||
$a->strings["Location:"] = "Staðsetning:";
|
||||
$a->strings["Gender:"] = "Kyn:";
|
||||
$a->strings["Status:"] = "Staða:";
|
||||
$a->strings["Homepage:"] = "Heimasíða:";
|
||||
$a->strings["About:"] = "Um:";
|
||||
$a->strings["No entries (some entries may be hidden)."] = "Engar færslur (sumar geta verið faldar).";
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# fabrixxm <fabrix.xm@gmail.com>, 2014
|
||||
# Sylke Vicious <silkevicious@gmail.com>, 2021
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2021-02-16 12:56+0000\n"
|
||||
"Last-Translator: Sylke Vicious <silkevicious@gmail.com>\n"
|
||||
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/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"
|
||||
|
||||
#: forumdirectory.php:33 forumdirectory.php:137
|
||||
msgid "Forum Directory"
|
||||
msgstr "Elenco Forum"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Accesso negato."
|
||||
|
||||
#: forumdirectory.php:125
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Nessuna voce (qualche voce potrebbe essere nascosta)."
|
||||
|
||||
#: forumdirectory.php:131
|
||||
msgid "Global Directory"
|
||||
msgstr "Elenco globale"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Find on this site"
|
||||
msgstr "Cerca nel sito"
|
||||
|
||||
#: forumdirectory.php:135
|
||||
msgid "Results for:"
|
||||
msgstr "Risultati per:"
|
||||
|
||||
#: forumdirectory.php:139
|
||||
msgid "Find"
|
||||
msgstr "Trova"
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_it")) {
|
||||
function string_plural_select_it($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Elenco Forum';
|
||||
$a->strings['Public access denied.'] = 'Accesso negato.';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Nessuna voce (qualche voce potrebbe essere nascosta).';
|
||||
$a->strings['Global Directory'] = 'Elenco globale';
|
||||
$a->strings['Find on this site'] = 'Cerca nel sito';
|
||||
$a->strings['Results for:'] = 'Risultati per:';
|
||||
$a->strings['Find'] = 'Trova';
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
<?php
|
||||
|
||||
$a->strings["Forum Directory"] = "";
|
||||
$a->strings["Public access denied."] = "Offentlig tilgang ikke tillatt.";
|
||||
$a->strings["Global Directory"] = "Global katalog";
|
||||
$a->strings["Find on this site"] = "";
|
||||
$a->strings["Finding: "] = "Fant:";
|
||||
$a->strings["Site Directory"] = "Stedets katalog";
|
||||
$a->strings["Find"] = "Finn";
|
||||
$a->strings["Age: "] = "Alder:";
|
||||
$a->strings["Gender: "] = "Kjønn:";
|
||||
$a->strings["Location:"] = "Plassering:";
|
||||
$a->strings["Gender:"] = "Kjønn:";
|
||||
$a->strings["Status:"] = "Status:";
|
||||
$a->strings["Homepage:"] = "Hjemmeside:";
|
||||
$a->strings["About:"] = "Om:";
|
||||
$a->strings["No entries (some entries may be hidden)."] = "Ingen oppføringer (noen oppføringer kan være skjulte).";
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Jeroen De Meerleer <me@jeroened.be>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2018-08-24 13:21+0000\n"
|
||||
"Last-Translator: Jeroen De Meerleer <me@jeroened.be>\n"
|
||||
"Language-Team: Dutch (http://www.transifex.com/Friendica/friendica/language/nl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: nl\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: forumdirectory.php:22
|
||||
msgid "Forum Directory"
|
||||
msgstr "Forum index"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Publieke toegang geweigerd"
|
||||
|
||||
#: forumdirectory.php:71
|
||||
msgid "Global Directory"
|
||||
msgstr "Globaal overzicht"
|
||||
|
||||
#: forumdirectory.php:79
|
||||
msgid "Find on this site"
|
||||
msgstr "Zoeken"
|
||||
|
||||
#: forumdirectory.php:81
|
||||
msgid "Finding: "
|
||||
msgstr "Zoeken..."
|
||||
|
||||
#: forumdirectory.php:82
|
||||
msgid "Site Directory"
|
||||
msgstr "Site overzicht"
|
||||
|
||||
#: forumdirectory.php:83
|
||||
msgid "Find"
|
||||
msgstr "Zoek"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Age: "
|
||||
msgstr "Leeftijd:"
|
||||
|
||||
#: forumdirectory.php:136
|
||||
msgid "Gender: "
|
||||
msgstr "Geslacht:"
|
||||
|
||||
#: forumdirectory.php:156
|
||||
msgid "Location:"
|
||||
msgstr "Woonplaats:"
|
||||
|
||||
#: forumdirectory.php:158
|
||||
msgid "Gender:"
|
||||
msgstr "Geslacht:"
|
||||
|
||||
#: forumdirectory.php:160
|
||||
msgid "Status:"
|
||||
msgstr "Status:"
|
||||
|
||||
#: forumdirectory.php:162
|
||||
msgid "Homepage:"
|
||||
msgstr "Website:"
|
||||
|
||||
#: forumdirectory.php:164
|
||||
msgid "About:"
|
||||
msgstr "Over:"
|
||||
|
||||
#: forumdirectory.php:201
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Geen berichten (sommige berichten kunnen verborgen zijn)."
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_nl")) {
|
||||
function string_plural_select_nl($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Forum index';
|
||||
$a->strings['Public access denied.'] = 'Publieke toegang geweigerd';
|
||||
$a->strings['Global Directory'] = 'Globaal overzicht';
|
||||
$a->strings['Find on this site'] = 'Zoeken';
|
||||
$a->strings['Finding: '] = 'Zoeken...';
|
||||
$a->strings['Site Directory'] = 'Site overzicht';
|
||||
$a->strings['Find'] = 'Zoek';
|
||||
$a->strings['Age: '] = 'Leeftijd:';
|
||||
$a->strings['Gender: '] = 'Geslacht:';
|
||||
$a->strings['Location:'] = 'Woonplaats:';
|
||||
$a->strings['Gender:'] = 'Geslacht:';
|
||||
$a->strings['Status:'] = 'Status:';
|
||||
$a->strings['Homepage:'] = 'Website:';
|
||||
$a->strings['About:'] = 'Over:';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Geen berichten (sommige berichten kunnen verborgen zijn).';
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# TORminator <dominik+foss@danelski.pl>, 2015
|
||||
# Piotr Strębski <strebski@gmail.com>, 2022
|
||||
# Waldemar Stoczkowski, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-22 12:31+0000\n"
|
||||
"Last-Translator: Piotr Strębski <strebski@gmail.com>, 2022\n"
|
||||
"Language-Team: Polish (http://www.transifex.com/Friendica/friendica/language/pl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pl\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
|
||||
#: forumdirectory.php:33 forumdirectory.php:137
|
||||
msgid "Forum Directory"
|
||||
msgstr "Katalog forum"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Odmowa dostępu publicznego."
|
||||
|
||||
#: forumdirectory.php:125
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Brak wpisów (niektóre wpisy mogą być ukryte)."
|
||||
|
||||
#: forumdirectory.php:131
|
||||
msgid "Global Directory"
|
||||
msgstr "Globalny katalog"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Find on this site"
|
||||
msgstr "Znajdź na tej stronie"
|
||||
|
||||
#: forumdirectory.php:135
|
||||
msgid "Results for:"
|
||||
msgstr "Wyniki dla:"
|
||||
|
||||
#: forumdirectory.php:139
|
||||
msgid "Find"
|
||||
msgstr "Szukaj"
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_pl")) {
|
||||
function string_plural_select_pl($n){
|
||||
$n = intval($n);
|
||||
if ($n==1) { return 0; } else if (($n%10>=2 && $n%10<=4) && ($n%100<12 || $n%100>14)) { return 1; } else if ($n!=1 && ($n%10>=0 && $n%10<=1) || ($n%10>=5 && $n%10<=9) || ($n%100>=12 && $n%100<=14)) { return 2; } else { return 3; }
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Katalog forum';
|
||||
$a->strings['Public access denied.'] = 'Odmowa dostępu publicznego.';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Brak wpisów (niektóre wpisy mogą być ukryte).';
|
||||
$a->strings['Global Directory'] = 'Globalny katalog';
|
||||
$a->strings['Find on this site'] = 'Znajdź na tej stronie';
|
||||
$a->strings['Results for:'] = 'Wyniki dla:';
|
||||
$a->strings['Find'] = 'Szukaj';
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Beatriz Vital <vitalb@riseup.net>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2016-08-19 17:03+0000\n"
|
||||
"Last-Translator: Beatriz Vital <vitalb@riseup.net>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/Friendica/friendica/language/pt_BR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pt_BR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: forumdirectory.php:22
|
||||
msgid "Forum Directory"
|
||||
msgstr "Diretório de Fóruns"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Acesso do público negado."
|
||||
|
||||
#: forumdirectory.php:71
|
||||
msgid "Global Directory"
|
||||
msgstr "Diretório Global"
|
||||
|
||||
#: forumdirectory.php:79
|
||||
msgid "Find on this site"
|
||||
msgstr "Procurar neste site"
|
||||
|
||||
#: forumdirectory.php:81
|
||||
msgid "Finding: "
|
||||
msgstr "Procurando:"
|
||||
|
||||
#: forumdirectory.php:82
|
||||
msgid "Site Directory"
|
||||
msgstr "Diretório do Site"
|
||||
|
||||
#: forumdirectory.php:83
|
||||
msgid "Find"
|
||||
msgstr "Procurar"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Age: "
|
||||
msgstr "Idade:"
|
||||
|
||||
#: forumdirectory.php:136
|
||||
msgid "Gender: "
|
||||
msgstr "Sexo:"
|
||||
|
||||
#: forumdirectory.php:156
|
||||
msgid "Location:"
|
||||
msgstr "Local:"
|
||||
|
||||
#: forumdirectory.php:158
|
||||
msgid "Gender:"
|
||||
msgstr "Sexo:"
|
||||
|
||||
#: forumdirectory.php:160
|
||||
msgid "Status:"
|
||||
msgstr "Estado:"
|
||||
|
||||
#: forumdirectory.php:162
|
||||
msgid "Homepage:"
|
||||
msgstr "Página principal:"
|
||||
|
||||
#: forumdirectory.php:164
|
||||
msgid "About:"
|
||||
msgstr "Sobre:"
|
||||
|
||||
#: forumdirectory.php:201
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Sem resultados (alguns resultados podem estar ocultos)."
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_pt_br")) {
|
||||
function string_plural_select_pt_br($n){
|
||||
$n = intval($n);
|
||||
return intval($n > 1);
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Diretório de Fóruns';
|
||||
$a->strings['Public access denied.'] = 'Acesso do público negado.';
|
||||
$a->strings['Global Directory'] = 'Diretório Global';
|
||||
$a->strings['Find on this site'] = 'Procurar neste site';
|
||||
$a->strings['Finding: '] = 'Procurando:';
|
||||
$a->strings['Site Directory'] = 'Diretório do Site';
|
||||
$a->strings['Find'] = 'Procurar';
|
||||
$a->strings['Age: '] = 'Idade:';
|
||||
$a->strings['Gender: '] = 'Sexo:';
|
||||
$a->strings['Location:'] = 'Local:';
|
||||
$a->strings['Gender:'] = 'Sexo:';
|
||||
$a->strings['Status:'] = 'Estado:';
|
||||
$a->strings['Homepage:'] = 'Página principal:';
|
||||
$a->strings['About:'] = 'Sobre:';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Sem resultados (alguns resultados podem estar ocultos).';
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2014-07-08 11:49+0000\n"
|
||||
"Last-Translator: Arian - Cazare Muncitori <arianserv@gmail.com>\n"
|
||||
"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/friendica/language/ro_RO/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ro_RO\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
|
||||
|
||||
#: forumdirectory.php:22
|
||||
msgid "Forum Directory"
|
||||
msgstr "Director Forum"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Acces public refuzat."
|
||||
|
||||
#: forumdirectory.php:71
|
||||
msgid "Global Directory"
|
||||
msgstr "Director Global"
|
||||
|
||||
#: forumdirectory.php:79
|
||||
msgid "Find on this site"
|
||||
msgstr "Căutați pe acest site"
|
||||
|
||||
#: forumdirectory.php:81
|
||||
msgid "Finding: "
|
||||
msgstr "Căutare:"
|
||||
|
||||
#: forumdirectory.php:82
|
||||
msgid "Site Directory"
|
||||
msgstr "Director Site"
|
||||
|
||||
#: forumdirectory.php:83
|
||||
msgid "Find"
|
||||
msgstr "Căutați"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Age: "
|
||||
msgstr "Vârsta:"
|
||||
|
||||
#: forumdirectory.php:136
|
||||
msgid "Gender: "
|
||||
msgstr "Sex:"
|
||||
|
||||
#: forumdirectory.php:156
|
||||
msgid "Location:"
|
||||
msgstr "Locație:"
|
||||
|
||||
#: forumdirectory.php:158
|
||||
msgid "Gender:"
|
||||
msgstr "Sex:"
|
||||
|
||||
#: forumdirectory.php:160
|
||||
msgid "Status:"
|
||||
msgstr "Status:"
|
||||
|
||||
#: forumdirectory.php:162
|
||||
msgid "Homepage:"
|
||||
msgstr "Pagină web:"
|
||||
|
||||
#: forumdirectory.php:164
|
||||
msgid "About:"
|
||||
msgstr "Despre:"
|
||||
|
||||
#: forumdirectory.php:201
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Fără înregistrări (unele înregistrări pot fi ascunse)."
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_ro")) {
|
||||
function string_plural_select_ro($n){
|
||||
$n = intval($n);
|
||||
if ($n==1) { return 0; } else if ((($n%100>19)||(($n%100==0)&&($n!=0)))) { return 2; } else { return 1; }
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Director Forum';
|
||||
$a->strings['Public access denied.'] = 'Acces public refuzat.';
|
||||
$a->strings['Global Directory'] = 'Director Global';
|
||||
$a->strings['Find on this site'] = 'Căutați pe acest site';
|
||||
$a->strings['Finding: '] = 'Căutare:';
|
||||
$a->strings['Site Directory'] = 'Director Site';
|
||||
$a->strings['Find'] = 'Căutați';
|
||||
$a->strings['Age: '] = 'Vârsta:';
|
||||
$a->strings['Gender: '] = 'Sex:';
|
||||
$a->strings['Location:'] = 'Locație:';
|
||||
$a->strings['Gender:'] = 'Sex:';
|
||||
$a->strings['Status:'] = 'Status:';
|
||||
$a->strings['Homepage:'] = 'Pagină web:';
|
||||
$a->strings['About:'] = 'Despre:';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Fără înregistrări (unele înregistrări pot fi ascunse).';
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Stanislav N. <pztrn@pztrn.name>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2017-04-08 17:12+0000\n"
|
||||
"Last-Translator: Stanislav N. <pztrn@pztrn.name>\n"
|
||||
"Language-Team: Russian (http://www.transifex.com/Friendica/friendica/language/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ru\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
#: forumdirectory.php:22
|
||||
msgid "Forum Directory"
|
||||
msgstr "Каталог форумов"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Свободный доступ закрыт."
|
||||
|
||||
#: forumdirectory.php:71
|
||||
msgid "Global Directory"
|
||||
msgstr "Глобальный каталог"
|
||||
|
||||
#: forumdirectory.php:79
|
||||
msgid "Find on this site"
|
||||
msgstr "Найти на этом сайте"
|
||||
|
||||
#: forumdirectory.php:81
|
||||
msgid "Finding: "
|
||||
msgstr "Результат поиска: "
|
||||
|
||||
#: forumdirectory.php:82
|
||||
msgid "Site Directory"
|
||||
msgstr "Каталог сайта"
|
||||
|
||||
#: forumdirectory.php:83
|
||||
msgid "Find"
|
||||
msgstr "Найти"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Age: "
|
||||
msgstr "Возраст: "
|
||||
|
||||
#: forumdirectory.php:136
|
||||
msgid "Gender: "
|
||||
msgstr "Пол: "
|
||||
|
||||
#: forumdirectory.php:156
|
||||
msgid "Location:"
|
||||
msgstr "Откуда:"
|
||||
|
||||
#: forumdirectory.php:158
|
||||
msgid "Gender:"
|
||||
msgstr "Пол:"
|
||||
|
||||
#: forumdirectory.php:160
|
||||
msgid "Status:"
|
||||
msgstr "Статус:"
|
||||
|
||||
#: forumdirectory.php:162
|
||||
msgid "Homepage:"
|
||||
msgstr "Домашняя страничка:"
|
||||
|
||||
#: forumdirectory.php:164
|
||||
msgid "About:"
|
||||
msgstr "О себе:"
|
||||
|
||||
#: forumdirectory.php:201
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Нет записей (некоторые записи могут быть скрыты)."
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_ru")) {
|
||||
function string_plural_select_ru($n){
|
||||
$n = intval($n);
|
||||
if ($n%10==1 && $n%100!=11) { return 0; } else if ($n%10>=2 && $n%10<=4 && ($n%100<12 || $n%100>14)) { return 1; } else if ($n%10==0 || ($n%10>=5 && $n%10<=9) || ($n%100>=11 && $n%100<=14)) { return 2; } else { return 3; }
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Каталог форумов';
|
||||
$a->strings['Public access denied.'] = 'Свободный доступ закрыт.';
|
||||
$a->strings['Global Directory'] = 'Глобальный каталог';
|
||||
$a->strings['Find on this site'] = 'Найти на этом сайте';
|
||||
$a->strings['Finding: '] = 'Результат поиска: ';
|
||||
$a->strings['Site Directory'] = 'Каталог сайта';
|
||||
$a->strings['Find'] = 'Найти';
|
||||
$a->strings['Age: '] = 'Возраст: ';
|
||||
$a->strings['Gender: '] = 'Пол: ';
|
||||
$a->strings['Location:'] = 'Откуда:';
|
||||
$a->strings['Gender:'] = 'Пол:';
|
||||
$a->strings['Status:'] = 'Статус:';
|
||||
$a->strings['Homepage:'] = 'Домашняя страничка:';
|
||||
$a->strings['About:'] = 'О себе:';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Нет записей (некоторые записи могут быть скрыты).';
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
# ADDON forumdirectory
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica forumdirectory addon package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Hypolite Petovan <hypolite@mrpetovan.com>, 2019
|
||||
# Kristoffer Grundström <lovaren@gmail.com>, 2022
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2022-01-15 23:39+0000\n"
|
||||
"Last-Translator: Kristoffer Grundström <lovaren@gmail.com>\n"
|
||||
"Language-Team: Swedish (http://www.transifex.com/Friendica/friendica/language/sv/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sv\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: forumdirectory.php:33 forumdirectory.php:137
|
||||
msgid "Forum Directory"
|
||||
msgstr "Forum-mapp"
|
||||
|
||||
#: forumdirectory.php:53
|
||||
msgid "Public access denied."
|
||||
msgstr "Publik åtkomst nekades."
|
||||
|
||||
#: forumdirectory.php:125
|
||||
msgid "No entries (some entries may be hidden)."
|
||||
msgstr "Inget att visa. (Man kan välja att inte synas här)"
|
||||
|
||||
#: forumdirectory.php:131
|
||||
msgid "Global Directory"
|
||||
msgstr "Medlemskatalog för flera sajter (global)"
|
||||
|
||||
#: forumdirectory.php:133
|
||||
msgid "Find on this site"
|
||||
msgstr "Hitta på den här sidan"
|
||||
|
||||
#: forumdirectory.php:135
|
||||
msgid "Results for:"
|
||||
msgstr ""
|
||||
|
||||
#: forumdirectory.php:139
|
||||
msgid "Find"
|
||||
msgstr "Sök"
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<?php
|
||||
|
||||
if(! function_exists("string_plural_select_sv")) {
|
||||
function string_plural_select_sv($n){
|
||||
$n = intval($n);
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Forum Directory'] = 'Forum-mapp';
|
||||
$a->strings['Public access denied.'] = 'Publik åtkomst nekades.';
|
||||
$a->strings['No entries (some entries may be hidden).'] = 'Inget att visa. (Man kan välja att inte synas här)';
|
||||
$a->strings['Global Directory'] = 'Medlemskatalog för flera sajter (global)';
|
||||
$a->strings['Find on this site'] = 'Hitta på den här sidan';
|
||||
$a->strings['Find'] = 'Sök';
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
<?php
|
||||
|
||||
$a->strings["Forum Directory"] = "评坛目录";
|
||||
$a->strings["Public access denied."] = "公众看拒绝";
|
||||
$a->strings["Global Directory"] = "综合目录";
|
||||
$a->strings["Find on this site"] = "找在这网站";
|
||||
$a->strings["Finding: "] = "找着:";
|
||||
$a->strings["Site Directory"] = "网站目录";
|
||||
$a->strings["Find"] = "搜索";
|
||||
$a->strings["Age: "] = "年纪:";
|
||||
$a->strings["Gender: "] = "性别:";
|
||||
$a->strings["Location:"] = "位置:";
|
||||
$a->strings["Gender:"] = "性别:";
|
||||
$a->strings["Status:"] = "现状:";
|
||||
$a->strings["Homepage:"] = "主页:";
|
||||
$a->strings["About:"] = "关于:";
|
||||
$a->strings["No entries (some entries may be hidden)."] = "没有文章(有的文章会被隐藏)。";
|
||||
|
|
@ -55,7 +55,7 @@ function ifttt_settings(array &$data)
|
|||
'new_photo_upload_body' => DI::l10n()->t('Body for "new photo upload"'),
|
||||
'new_link_post_body' => DI::l10n()->t('Body for "new link post"'),
|
||||
],
|
||||
'$url' => DI::baseUrl() . '/ifttt/' . DI::userSession()->getLocalUserNickname(),
|
||||
'$url' => DI::baseUrl()->get() . '/ifttt/' . DI::userSession()->getLocalUserNickname(),
|
||||
'$new_status_message_body' => 'key=' . $key . '&type=status&msg=<<<{{Message}}>>>&date=<<<{{UpdatedAt}}>>>&url=<<<{{PageUrl}}>>>',
|
||||
'$new_photo_upload_body' => 'key=' . $key . '&type=photo&link=<<<{{Link}}>>>&image=<<<{{ImageSource}}>>>&msg=<<<{{Caption}}>>>&date=<<<{{CreatedAt}}>>>&url=<<<{{PageUrl}}>>>',
|
||||
'$new_link_post_body' => 'key=' . $key . '&type=link&link=<<<{{Link}}>>>&title=<<<{{Title}}>>>&msg=<<<{{Message}}>>>&description=<<<{{Description}}>>>&date=<<<{{CreatedAt}}>>>&url=<<<{{PageUrl}}>>>',
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ msgstr ""
|
|||
"POT-Creation-Date: 2021-11-21 19:17-0500\n"
|
||||
"PO-Revision-Date: 2017-11-27 10:37+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2022\n"
|
||||
"Language-Team: German (https://app.transifex.com/Friendica/teams/12172/de/)\n"
|
||||
"Language-Team: German (https://www.transifex.com/Friendica/teams/12172/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:17-0500\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:37+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2018,2021\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2021-12-22 16:19+0000\n"
|
||||
"Last-Translator: Transifex Bot <>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ use Friendica\Core\Logger;
|
|||
use Friendica\Core\Renderer;
|
||||
use Friendica\DI;
|
||||
use Friendica\Core\Config\Util\ConfigFileManager;
|
||||
use Friendica\Model\User;
|
||||
use Friendica\Util\Proxy as ProxyUtils;
|
||||
|
||||
function impressum_install()
|
||||
{
|
||||
|
|
@ -45,10 +45,10 @@ function obfuscate_email (string $s): string
|
|||
|
||||
function impressum_footer(string &$body)
|
||||
{
|
||||
$text = BBCode::convertForUriId(User::getSystemUriId(), DI::config()->get('impressum', 'footer_text'));
|
||||
$text = ProxyUtils::proxifyHtml(BBCode::convert(DI::config()->get('impressum', 'footer_text')));
|
||||
|
||||
if ($text != '') {
|
||||
DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . DI::baseUrl() . '/addon/impressum/impressum.css" media="all" />';
|
||||
DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . DI::baseUrl()->get() . '/addon/impressum/impressum.css" media="all" />';
|
||||
$body .= '<div class="clear"></div>';
|
||||
$body .= '<div id="impressum_footer">' . $text . '</div>';
|
||||
}
|
||||
|
|
@ -64,8 +64,8 @@ function impressum_show(string &$body)
|
|||
$body .= '<h3>' . DI::l10n()->t('Impressum') . '</h3>';
|
||||
$owner = DI::config()->get('impressum', 'owner');
|
||||
$owner_profile = DI::config()->get('impressum', 'ownerprofile');
|
||||
$postal = BBCode::convertForUriId(User::getSystemUriId(), DI::config()->get('impressum', 'postal'));
|
||||
$notes = BBCode::convertForUriId(User::getSystemUriId(), DI::config()->get('impressum', 'notes'));
|
||||
$postal = ProxyUtils::proxifyHtml(BBCode::convert(DI::config()->get('impressum', 'postal')));
|
||||
$notes = ProxyUtils::proxifyHtml(BBCode::convert(DI::config()->get('impressum', 'notes')));
|
||||
|
||||
if ($owner) {
|
||||
if ($owner_profile) {
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:39+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2021\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2021-03-29 05:29+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -30,12 +30,13 @@ function infiniteimprobabilitydrive_module() {}
|
|||
|
||||
function infiniteimprobabilitydrive_content()
|
||||
{
|
||||
$baseurl = DI::baseUrl()->get() . '/addon/infiniteimprobabilitydrive';
|
||||
$o = '';
|
||||
|
||||
DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="'.DI::baseUrl().'/addon/infiniteimprobabilitydrive/infiniteimprobabilitydrive.css"/>';
|
||||
DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="'.DI::baseUrl()->get().'/addon/infiniteimprobabilitydrive/infiniteimprobabilitydrive.css"/>';
|
||||
|
||||
|
||||
$baseurl = (string)DI::baseUrl();
|
||||
$baseurl = DI::baseUrl()->get();
|
||||
|
||||
$o .= <<< EOT
|
||||
|
||||
|
|
|
|||
|
|
@ -4,21 +4,21 @@
|
|||
#
|
||||
#
|
||||
# Translators:
|
||||
# michal_s <msupler@gmail.com>, 2014
|
||||
# Michal Šupler <msupler@gmail.com>, 2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:41+0000\n"
|
||||
"Last-Translator: michal_s <msupler@gmail.com>, 2014\n"
|
||||
"Language-Team: Czech (http://app.transifex.com/Friendica/friendica/language/cs/)\n"
|
||||
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
|
||||
"PO-Revision-Date: 2014-07-07 19:12+0000\n"
|
||||
"Last-Translator: Michal Šupler <msupler@gmail.com>\n"
|
||||
"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
|
||||
#: infiniteimprobabilitydrive.php:18
|
||||
#: infiniteimprobabilitydrive.php:19
|
||||
msgid "Infinite Improbability Drive"
|
||||
msgstr "Infinite Improbability Drive"
|
||||
|
|
|
|||
|
|
@ -3,6 +3,6 @@
|
|||
if(! function_exists("string_plural_select_cs")) {
|
||||
function string_plural_select_cs($n){
|
||||
$n = intval($n);
|
||||
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
|
||||
if (($n==1)) { return 0; } else if (($n>=2 && $n<=4)) { return 1; } else { return 2; }
|
||||
}}
|
||||
$a->strings['Infinite Improbability Drive'] = 'Infinite Improbability Drive';
|
||||
|
|
|
|||
|
|
@ -4,21 +4,21 @@
|
|||
#
|
||||
#
|
||||
# Translators:
|
||||
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2014
|
||||
# bavatar <tobias.diekershoff@gmx.net>, 2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:41+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2014\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
|
||||
"PO-Revision-Date: 2014-07-06 12:15+0000\n"
|
||||
"Last-Translator: bavatar <tobias.diekershoff@gmx.net>\n"
|
||||
"Language-Team: German (http://www.transifex.com/projects/p/friendica/language/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"
|
||||
|
||||
#: infiniteimprobabilitydrive.php:18
|
||||
#: infiniteimprobabilitydrive.php:19
|
||||
msgid "Infinite Improbability Drive"
|
||||
msgstr "Infinite Improbability Drive"
|
||||
|
|
|
|||
|
|
@ -9,16 +9,16 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:41+0000\n"
|
||||
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>, 2014\n"
|
||||
"Language-Team: Italian (http://app.transifex.com/Friendica/friendica/language/it/)\n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2017-09-20 06:08+0000\n"
|
||||
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
|
||||
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/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=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: infiniteimprobabilitydrive.php:18
|
||||
#: infiniteimprobabilitydrive.php:19
|
||||
msgid "Infinite Improbability Drive"
|
||||
msgstr "Motore ad Improbabilità Infinita"
|
||||
|
|
|
|||
|
|
@ -3,6 +3,6 @@
|
|||
if(! function_exists("string_plural_select_it")) {
|
||||
function string_plural_select_it($n){
|
||||
$n = intval($n);
|
||||
if ($n == 1) { return 0; } else if ($n != 0 && $n % 1000000 == 0) { return 1; } else { return 2; }
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['Infinite Improbability Drive'] = 'Motore ad Improbabilità Infinita';
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
invidious Addon for Friendica
|
||||
==========================
|
||||
|
||||
This addon will replace "youtube.com" with the chosen Invidious instance
|
||||
|
|
@ -1,103 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* Name: invidious
|
||||
* Description: Replaces links to youtube.com to an invidious instance in all displays of postings on a node.
|
||||
* Version: 0.3
|
||||
* Author: Matthias Ebers <https://loma.ml/profile/feb>
|
||||
* Author: Michael Vogel <https://pirati.ca/profile/heluecht>
|
||||
*
|
||||
*/
|
||||
|
||||
use Friendica\Core\Hook;
|
||||
use Friendica\Core\Renderer;
|
||||
use Friendica\DI;
|
||||
|
||||
CONST INVIDIOUS_DEFAULT = 'https://invidio.us';
|
||||
|
||||
function invidious_install()
|
||||
{
|
||||
Hook::register('prepare_body_final', __FILE__, 'invidious_render');
|
||||
Hook::register('addon_settings', __FILE__, 'invidious_settings');
|
||||
Hook::register('addon_settings_post', __FILE__, 'invidious_settings_post');
|
||||
}
|
||||
|
||||
/* Handle the send data from the admin settings
|
||||
*/
|
||||
function invidious_addon_admin_post()
|
||||
{
|
||||
DI::config()->set('invidious', 'server', trim($_POST['invidiousserver'], " \n\r\t\v\x00/"));
|
||||
}
|
||||
|
||||
/* Hook into the admin settings to let the admin choose an
|
||||
* invidious server to use for the replacement.
|
||||
*/
|
||||
function invidious_addon_admin(string &$o)
|
||||
{
|
||||
$invidiousserver = DI::config()->get('invidious', 'server', INVIDIOUS_DEFAULT);
|
||||
$t = Renderer::getMarkupTemplate('admin.tpl', 'addon/invidious/');
|
||||
$o = Renderer::replaceMacros($t, [
|
||||
'$settingdescription' => DI::l10n()->t('Which Invidious server shall be used for the replacements in the post bodies? Use the URL with servername and protocol. See %s for a list of available public Invidious servers.', 'https://redirect.invidious.io'),
|
||||
'$invidiousserver' => ['invidiousserver', DI::l10n()->t('Invidious server'), $invidiousserver, DI::l10n()->t('See %s for a list of available Invidious servers.', '<a href="https://api.invidious.io/">https://api.invidious.io/</a>')],
|
||||
'$submit' => DI::l10n()->t('Save Settings'),
|
||||
]);
|
||||
}
|
||||
|
||||
function invidious_settings(array &$data)
|
||||
{
|
||||
if (!DI::userSession()->getLocalUserId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$enabled = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'invidious', 'enabled');
|
||||
$server = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'invidious', 'server', DI::config()->get('invidious', 'server', INVIDIOUS_DEFAULT));
|
||||
|
||||
$t = Renderer::getMarkupTemplate('settings.tpl', 'addon/invidious/');
|
||||
$html = Renderer::replaceMacros($t, [
|
||||
'$enabled' => ['enabled', DI::l10n()->t('Replace Youtube links with links to an Invidious server'), $enabled, DI::l10n()->t('If enabled, Youtube links are replaced with the links to the specified Invidious server.')],
|
||||
'$server' => ['server', DI::l10n()->t('Invidious server'), $server, DI::l10n()->t('See %s for a list of available Invidious servers.', '<a href="https://api.invidious.io/">https://api.invidious.io/</a>')],
|
||||
]);
|
||||
|
||||
$data = [
|
||||
'addon' => 'invidious',
|
||||
'title' => DI::l10n()->t('Invidious Settings'),
|
||||
'html' => $html,
|
||||
];
|
||||
}
|
||||
|
||||
function invidious_settings_post(array &$b)
|
||||
{
|
||||
if (!DI::userSession()->getLocalUserId() || empty($_POST['invidious-submit'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'invidious', 'enabled', (bool)$_POST['enabled']);
|
||||
|
||||
$server = trim($_POST['server'], " \n\r\t\v\x00/");
|
||||
if ($server != DI::config()->get('invidious', 'server', INVIDIOUS_DEFAULT) && !empty($server)) {
|
||||
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'invidious', 'server', $server);
|
||||
} else {
|
||||
DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'invidious', 'server');
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* replace "youtube.com" with the chosen Invidious instance
|
||||
*/
|
||||
function invidious_render(array &$b)
|
||||
{
|
||||
if (!DI::userSession()->getLocalUserId() || !DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'invidious', 'enabled')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$original = $b['html'];
|
||||
$server = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'invidious', 'server', DI::config()->get('invidious', 'server', INVIDIOUS_DEFAULT));
|
||||
|
||||
$b['html'] = preg_replace("/https?:\/\/www.youtube.com\/watch\?v\=(.*?)/ism", $server . '/watch?v=$1', $b['html']);
|
||||
$b['html'] = preg_replace("/https?:\/\/www.youtube.com\/embed\/(.*?)/ism", $server . '/embed/$1', $b['html']);
|
||||
$b['html'] = preg_replace("/https?:\/\/www.youtube.com\/shorts\/(.*?)/ism", $server . '/shorts/$1', $b['html']);
|
||||
$b['html'] = preg_replace("/https?:\/\/youtu.be\/(.*?)/ism", $server . '/watch?v=$1', $b['html']);
|
||||
|
||||
if ($original != $b['html']) {
|
||||
$b['html'] .= '<hr><p><small>' . DI::l10n()->t('(Invidious addon enabled: YouTube links via %s)', $server) . '</small></p>';
|
||||
}
|
||||
}
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
# ADDON invidious
|
||||
# Copyright (C)
|
||||
# This file is distributed under the same license as the Friendica invidious addon package.
|
||||
#
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-12-18 17:23+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"
|
||||
|
||||
#: invidious.php:39
|
||||
#, php-format
|
||||
msgid ""
|
||||
"Which Invidious server shall be used for the replacements in the post "
|
||||
"bodies? Use the URL with servername and protocol. See %s for a list of "
|
||||
"available public Invidious servers."
|
||||
msgstr ""
|
||||
|
||||
#: invidious.php:40 invidious.php:57
|
||||
msgid "Invidious server"
|
||||
msgstr ""
|
||||
|
||||
#: invidious.php:40 invidious.php:57
|
||||
#, php-format
|
||||
msgid "See %s for a list of available Invidious servers."
|
||||
msgstr ""
|
||||
|
||||
#: invidious.php:41
|
||||
msgid "Save Settings"
|
||||
msgstr ""
|
||||
|
||||
#: invidious.php:56
|
||||
msgid "Replace Youtube links with links to an Invidious server"
|
||||
msgstr ""
|
||||
|
||||
#: invidious.php:56
|
||||
msgid ""
|
||||
"If enabled, Youtube links are replaced with the links to the specified "
|
||||
"Invidious server."
|
||||
msgstr ""
|
||||
|
||||
#: invidious.php:62
|
||||
msgid "Invidious Settings"
|
||||
msgstr ""
|
||||
|
||||
#: invidious.php:101
|
||||
#, php-format
|
||||
msgid "(Invidious addon enabled: YouTube links via %s)"
|
||||
msgstr ""
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
<p>{{$settingdescription}}</p>
|
||||
|
||||
{{include file="field_input.tpl" field=$invidiousserver}}
|
||||
|
||||
<div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div>
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
{{include file="field_checkbox.tpl" field=$enabled}}
|
||||
{{include file="field_input.tpl" field=$server}}
|
||||
|
|
@ -73,7 +73,7 @@ function irc_module() {}
|
|||
|
||||
function irc_content()
|
||||
{
|
||||
$baseurl = DI::baseUrl() . '/addon/irc';
|
||||
$baseurl = DI::baseUrl()->get() . '/addon/irc';
|
||||
$o = '';
|
||||
|
||||
/* set the list of popular channels */
|
||||
|
|
@ -95,7 +95,7 @@ function irc_content()
|
|||
|
||||
DI::page()['aside'] .= '<div class="widget"><h3>' . DI::l10n()->t('Popular Channels') . '</h3><ul>';
|
||||
foreach ($chats as $chat) {
|
||||
DI::page()['aside'] .= '<li><a href="' . DI::baseUrl() . '/irc?channels=' . $chat . '" >' . '#' . $chat . '</a></li>';
|
||||
DI::page()['aside'] .= '<li><a href="' . DI::baseUrl()->get() . '/irc?channels=' . $chat . '" >' . '#' . $chat . '</a></li>';
|
||||
}
|
||||
DI::page()['aside'] .= '</ul></div>';
|
||||
|
||||
|
|
|
|||
|
|
@ -11,55 +11,59 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:41+0000\n"
|
||||
"Last-Translator: Aditoo, 2018\n"
|
||||
"Language-Team: Czech (http://app.transifex.com/Friendica/friendica/language/cs/)\n"
|
||||
"POT-Creation-Date: 2015-07-08 13:17+0200\n"
|
||||
"PO-Revision-Date: 2018-06-14 14:36+0000\n"
|
||||
"Last-Translator: Aditoo\n"
|
||||
"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||
|
||||
#: irc.php:32
|
||||
#: irc.php:37
|
||||
msgid "IRC Settings"
|
||||
msgstr "Nastavení IRC"
|
||||
|
||||
#: irc.php:38
|
||||
msgid ""
|
||||
"Here you can change the system wide settings for the channels to "
|
||||
"automatically join and access via the side bar. Note the changes you do "
|
||||
"here, only effect the channel selection if you are logged in."
|
||||
msgstr "Zde můžete změnit systémová nastavení pro kanály pro automatické spojení a přístup přes postranní lištu. Mějte na paměti, že změny, které zde provedete, ovlivní výběr kanálů pouze, pokud jste přihlášen/a."
|
||||
msgstr ""
|
||||
|
||||
#: irc.php:33 irc.php:133
|
||||
#: irc.php:39 irc.php:136
|
||||
msgid "Save Settings"
|
||||
msgstr "Uložit nastavení"
|
||||
|
||||
#: irc.php:40 irc.php:137
|
||||
msgid "Channel(s) to auto connect (comma separated)"
|
||||
msgstr "Kanál(y) pro automatické připojení (oddělené čárkami)"
|
||||
|
||||
#: irc.php:33 irc.php:133
|
||||
#: irc.php:40 irc.php:137
|
||||
msgid ""
|
||||
"List of channels that shall automatically connected to when the app is "
|
||||
"launched."
|
||||
msgstr "Seznam kanálů, které budou při spuštění aplikace automaticky připojeny."
|
||||
|
||||
#: irc.php:34 irc.php:134
|
||||
#: irc.php:41 irc.php:138
|
||||
msgid "Popular Channels (comma separated)"
|
||||
msgstr "Populární kanály (oddělené čárkami)"
|
||||
|
||||
#: irc.php:34 irc.php:134
|
||||
#: irc.php:41 irc.php:138
|
||||
msgid ""
|
||||
"List of popular channels, will be displayed at the side and hotlinked for "
|
||||
"easy joining."
|
||||
msgstr "Seznam populárních kanálů, bude zobrazen na straně a bude obsahovat odkazy pro snadné připojení."
|
||||
|
||||
#: irc.php:39
|
||||
msgid "IRC Settings"
|
||||
msgstr "Nastavení IRC"
|
||||
#: irc.php:57 irc.php:128
|
||||
msgid "IRC settings saved."
|
||||
msgstr "IRC Nastavení uloženo."
|
||||
|
||||
#: irc.php:60
|
||||
#: irc.php:62
|
||||
msgid "IRC Chatroom"
|
||||
msgstr "IRC Místnost"
|
||||
|
||||
#: irc.php:88
|
||||
#: irc.php:90
|
||||
msgid "Popular Channels"
|
||||
msgstr "Populární kanály"
|
||||
|
||||
#: irc.php:132
|
||||
msgid "Save Settings"
|
||||
msgstr "Uložit nastavení"
|
||||
|
|
|
|||
|
|
@ -5,12 +5,12 @@ function string_plural_select_cs($n){
|
|||
$n = intval($n);
|
||||
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
|
||||
}}
|
||||
$a->strings['Here you can change the system wide settings for the channels to automatically join and access via the side bar. Note the changes you do here, only effect the channel selection if you are logged in.'] = 'Zde můžete změnit systémová nastavení pro kanály pro automatické spojení a přístup přes postranní lištu. Mějte na paměti, že změny, které zde provedete, ovlivní výběr kanálů pouze, pokud jste přihlášen/a.';
|
||||
$a->strings['IRC Settings'] = 'Nastavení IRC';
|
||||
$a->strings['Save Settings'] = 'Uložit nastavení';
|
||||
$a->strings['Channel(s) to auto connect (comma separated)'] = 'Kanál(y) pro automatické připojení (oddělené čárkami)';
|
||||
$a->strings['List of channels that shall automatically connected to when the app is launched.'] = 'Seznam kanálů, které budou při spuštění aplikace automaticky připojeny.';
|
||||
$a->strings['Popular Channels (comma separated)'] = 'Populární kanály (oddělené čárkami)';
|
||||
$a->strings['List of popular channels, will be displayed at the side and hotlinked for easy joining.'] = 'Seznam populárních kanálů, bude zobrazen na straně a bude obsahovat odkazy pro snadné připojení.';
|
||||
$a->strings['IRC Settings'] = 'Nastavení IRC';
|
||||
$a->strings['IRC settings saved.'] = 'IRC Nastavení uloženo.';
|
||||
$a->strings['IRC Chatroom'] = 'IRC Místnost';
|
||||
$a->strings['Popular Channels'] = 'Populární kanály';
|
||||
$a->strings['Save Settings'] = 'Uložit nastavení';
|
||||
|
|
|
|||
|
|
@ -12,9 +12,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:41+0000\n"
|
||||
"Last-Translator: Ulf Rompe <transifex.com@rompe.org>, 2019\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2021-02-01 18:19+0000\n"
|
||||
"Last-Translator: Transifex Bot <>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -10,55 +10,59 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-21 19:14-0500\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:41+0000\n"
|
||||
"Last-Translator: Sylke Vicious <silkevicious@gmail.com>, 2020\n"
|
||||
"Language-Team: Italian (http://app.transifex.com/Friendica/friendica/language/it/)\n"
|
||||
"POT-Creation-Date: 2015-07-08 13:17+0200\n"
|
||||
"PO-Revision-Date: 2020-09-17 11:40+0000\n"
|
||||
"Last-Translator: Sylke Vicious <silkevicious@gmail.com>\n"
|
||||
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/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=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: irc.php:32
|
||||
#: irc.php:37
|
||||
msgid "IRC Settings"
|
||||
msgstr "Impostazioni IRC"
|
||||
|
||||
#: irc.php:38
|
||||
msgid ""
|
||||
"Here you can change the system wide settings for the channels to "
|
||||
"automatically join and access via the side bar. Note the changes you do "
|
||||
"here, only effect the channel selection if you are logged in."
|
||||
msgstr "Qui puoi modificare le impostazioni globali di sistema per i canali a cui accedere automaticamente attraverso la barra laterale. Nota che le modifiche che effetti qui hanno effetto sulla selezione di canali solo se sei loggato."
|
||||
|
||||
#: irc.php:33 irc.php:133
|
||||
#: irc.php:39 irc.php:136
|
||||
msgid "Save Settings"
|
||||
msgstr "Salva Impostazioni"
|
||||
|
||||
#: irc.php:40 irc.php:137
|
||||
msgid "Channel(s) to auto connect (comma separated)"
|
||||
msgstr "Canale(i) a cui autocollegarsi (separati da virgola)"
|
||||
|
||||
#: irc.php:33 irc.php:133
|
||||
#: irc.php:40 irc.php:137
|
||||
msgid ""
|
||||
"List of channels that shall automatically connected to when the app is "
|
||||
"launched."
|
||||
msgstr "Lista di canali che a cui connettersi automaticamente quando l'app è avviata."
|
||||
|
||||
#: irc.php:34 irc.php:134
|
||||
#: irc.php:41 irc.php:138
|
||||
msgid "Popular Channels (comma separated)"
|
||||
msgstr "Canali popolari (separati da virgola)"
|
||||
|
||||
#: irc.php:34 irc.php:134
|
||||
#: irc.php:41 irc.php:138
|
||||
msgid ""
|
||||
"List of popular channels, will be displayed at the side and hotlinked for "
|
||||
"easy joining."
|
||||
msgstr "Lista di canali popolari: sarà visualizzata a lato e provvista di collegamento per facilitare l'adesione."
|
||||
|
||||
#: irc.php:39
|
||||
msgid "IRC Settings"
|
||||
msgstr "Impostazioni IRC"
|
||||
#: irc.php:57 irc.php:128
|
||||
msgid "IRC settings saved."
|
||||
msgstr "Impostazioni IRC salvate."
|
||||
|
||||
#: irc.php:60
|
||||
#: irc.php:62
|
||||
msgid "IRC Chatroom"
|
||||
msgstr "Stanza IRC"
|
||||
|
||||
#: irc.php:88
|
||||
#: irc.php:90
|
||||
msgid "Popular Channels"
|
||||
msgstr "Canali Popolari"
|
||||
|
||||
#: irc.php:132
|
||||
msgid "Save Settings"
|
||||
msgstr "Salva Impostazioni"
|
||||
|
|
|
|||
|
|
@ -3,14 +3,15 @@
|
|||
if(! function_exists("string_plural_select_it")) {
|
||||
function string_plural_select_it($n){
|
||||
$n = intval($n);
|
||||
if ($n == 1) { return 0; } else if ($n != 0 && $n % 1000000 == 0) { return 1; } else { return 2; }
|
||||
return intval($n != 1);
|
||||
}}
|
||||
$a->strings['IRC Settings'] = 'Impostazioni IRC';
|
||||
$a->strings['Here you can change the system wide settings for the channels to automatically join and access via the side bar. Note the changes you do here, only effect the channel selection if you are logged in.'] = 'Qui puoi modificare le impostazioni globali di sistema per i canali a cui accedere automaticamente attraverso la barra laterale. Nota che le modifiche che effetti qui hanno effetto sulla selezione di canali solo se sei loggato.';
|
||||
$a->strings['Save Settings'] = 'Salva Impostazioni';
|
||||
$a->strings['Channel(s) to auto connect (comma separated)'] = 'Canale(i) a cui autocollegarsi (separati da virgola)';
|
||||
$a->strings['List of channels that shall automatically connected to when the app is launched.'] = 'Lista di canali che a cui connettersi automaticamente quando l\'app è avviata.';
|
||||
$a->strings['Popular Channels (comma separated)'] = 'Canali popolari (separati da virgola)';
|
||||
$a->strings['List of popular channels, will be displayed at the side and hotlinked for easy joining.'] = 'Lista di canali popolari: sarà visualizzata a lato e provvista di collegamento per facilitare l\'adesione.';
|
||||
$a->strings['IRC Settings'] = 'Impostazioni IRC';
|
||||
$a->strings['IRC settings saved.'] = 'Impostazioni IRC salvate.';
|
||||
$a->strings['IRC Chatroom'] = 'Stanza IRC';
|
||||
$a->strings['Popular Channels'] = 'Canali Popolari';
|
||||
$a->strings['Save Settings'] = 'Salva Impostazioni';
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-03 15:49-0400\n"
|
||||
"POT-Creation-Date: 2021-03-23 23:53-0400\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"
|
||||
|
|
@ -17,40 +17,40 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: js_upload.php:37
|
||||
#: js_upload.php:34
|
||||
msgid "Select files for upload"
|
||||
msgstr ""
|
||||
|
||||
#: js_upload.php:38
|
||||
#: js_upload.php:35
|
||||
msgid "Drop files here to upload"
|
||||
msgstr ""
|
||||
|
||||
#: js_upload.php:39
|
||||
#: js_upload.php:36
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: js_upload.php:40
|
||||
#: js_upload.php:37
|
||||
msgid "Failed"
|
||||
msgstr ""
|
||||
|
||||
#: js_upload.php:209
|
||||
#: js_upload.php:215
|
||||
msgid "No files were uploaded."
|
||||
msgstr ""
|
||||
|
||||
#: js_upload.php:215
|
||||
#: js_upload.php:221
|
||||
msgid "Uploaded file is empty"
|
||||
msgstr ""
|
||||
|
||||
#: js_upload.php:227
|
||||
#: js_upload.php:233
|
||||
#, php-format
|
||||
msgid "Image exceeds size limit of %s"
|
||||
msgstr ""
|
||||
|
||||
#: js_upload.php:239
|
||||
#: js_upload.php:245
|
||||
#, php-format
|
||||
msgid "File has an invalid extension, it should be one of %s."
|
||||
msgstr ""
|
||||
|
||||
#: js_upload.php:250
|
||||
#: js_upload.php:256
|
||||
msgid "Upload was cancelled, or server error encountered"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -4,56 +4,53 @@
|
|||
#
|
||||
#
|
||||
# Translators:
|
||||
# Aditoo, 2018
|
||||
# michal_s <msupler@gmail.com>, 2014
|
||||
# Michal Šupler <msupler@gmail.com>, 2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-03-23 23:53-0400\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:46+0000\n"
|
||||
"Last-Translator: Aditoo, 2018\n"
|
||||
"Language-Team: Czech (http://app.transifex.com/Friendica/friendica/language/cs/)\n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2014-07-07 19:13+0000\n"
|
||||
"Last-Translator: Michal Šupler <msupler@gmail.com>\n"
|
||||
"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
|
||||
#: js_upload.php:34
|
||||
msgid "Select files for upload"
|
||||
msgstr ""
|
||||
#: js_upload.php:43
|
||||
msgid "Upload a file"
|
||||
msgstr "Nahrát soubor"
|
||||
|
||||
#: js_upload.php:35
|
||||
#: js_upload.php:44
|
||||
msgid "Drop files here to upload"
|
||||
msgstr "Přetáhněte sem soubory k nahrání"
|
||||
msgstr "Přeneste sem soubory k nahrání"
|
||||
|
||||
#: js_upload.php:36
|
||||
#: js_upload.php:45
|
||||
msgid "Cancel"
|
||||
msgstr "Zrušit"
|
||||
|
||||
#: js_upload.php:37
|
||||
#: js_upload.php:46
|
||||
msgid "Failed"
|
||||
msgstr "Neúspěch"
|
||||
|
||||
#: js_upload.php:215
|
||||
#: js_upload.php:303
|
||||
msgid "No files were uploaded."
|
||||
msgstr "Žádné soubory nebyly nahrány."
|
||||
|
||||
#: js_upload.php:221
|
||||
#: js_upload.php:309
|
||||
msgid "Uploaded file is empty"
|
||||
msgstr "Nahraný soubor je prázdný"
|
||||
|
||||
#: js_upload.php:233
|
||||
#, php-format
|
||||
msgid "Image exceeds size limit of %s"
|
||||
msgstr ""
|
||||
#: js_upload.php:321
|
||||
msgid "Image exceeds size limit of "
|
||||
msgstr "Velikost obrázku překračuje limit velikosti"
|
||||
|
||||
#: js_upload.php:245
|
||||
#, php-format
|
||||
msgid "File has an invalid extension, it should be one of %s."
|
||||
msgstr ""
|
||||
#: js_upload.php:332
|
||||
msgid "File has an invalid extension, it should be one of "
|
||||
msgstr "Soubor má neplatnou příponu, ta by měla být jednou z"
|
||||
|
||||
#: js_upload.php:256
|
||||
#: js_upload.php:343
|
||||
msgid "Upload was cancelled, or server error encountered"
|
||||
msgstr "Nahrávání bylo zrušeno nebo došlo k chybě na serveru"
|
||||
|
|
|
|||
|
|
@ -3,11 +3,14 @@
|
|||
if(! function_exists("string_plural_select_cs")) {
|
||||
function string_plural_select_cs($n){
|
||||
$n = intval($n);
|
||||
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
|
||||
if (($n==1)) { return 0; } else if (($n>=2 && $n<=4)) { return 1; } else { return 2; }
|
||||
}}
|
||||
$a->strings['Drop files here to upload'] = 'Přetáhněte sem soubory k nahrání';
|
||||
$a->strings['Upload a file'] = 'Nahrát soubor';
|
||||
$a->strings['Drop files here to upload'] = 'Přeneste sem soubory k nahrání';
|
||||
$a->strings['Cancel'] = 'Zrušit';
|
||||
$a->strings['Failed'] = 'Neúspěch';
|
||||
$a->strings['No files were uploaded.'] = 'Žádné soubory nebyly nahrány.';
|
||||
$a->strings['Uploaded file is empty'] = 'Nahraný soubor je prázdný';
|
||||
$a->strings['Image exceeds size limit of '] = 'Velikost obrázku překračuje limit velikosti';
|
||||
$a->strings['File has an invalid extension, it should be one of '] = 'Soubor má neplatnou příponu, ta by měla být jednou z';
|
||||
$a->strings['Upload was cancelled, or server error encountered'] = 'Nahrávání bylo zrušeno nebo došlo k chybě na serveru';
|
||||
|
|
|
|||
|
|
@ -12,9 +12,9 @@ msgstr ""
|
|||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-03-23 23:53-0400\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:46+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2021\n"
|
||||
"Language-Team: German (http://app.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"PO-Revision-Date: 2021-12-05 08:34+0000\n"
|
||||
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>\n"
|
||||
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
|
|||
|
|
@ -5,55 +5,52 @@
|
|||
#
|
||||
# Translators:
|
||||
# Albert, 2016
|
||||
# Senex Petrovic <javierruizo@hotmail.com>, 2021
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: friendica\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-03-23 23:53-0400\n"
|
||||
"PO-Revision-Date: 2014-06-23 08:46+0000\n"
|
||||
"Last-Translator: Senex Petrovic <javierruizo@hotmail.com>, 2021\n"
|
||||
"Language-Team: Spanish (http://app.transifex.com/Friendica/friendica/language/es/)\n"
|
||||
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
|
||||
"PO-Revision-Date: 2016-11-17 18:59+0000\n"
|
||||
"Last-Translator: Albert\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: js_upload.php:34
|
||||
msgid "Select files for upload"
|
||||
msgstr "Seleciona archivos a subir"
|
||||
#: js_upload.php:43
|
||||
msgid "Upload a file"
|
||||
msgstr "Subir un archivo"
|
||||
|
||||
#: js_upload.php:35
|
||||
#: js_upload.php:44
|
||||
msgid "Drop files here to upload"
|
||||
msgstr "Soltar archivos aquí para subir"
|
||||
|
||||
#: js_upload.php:36
|
||||
#: js_upload.php:45
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: js_upload.php:37
|
||||
#: js_upload.php:46
|
||||
msgid "Failed"
|
||||
msgstr "Fallido"
|
||||
|
||||
#: js_upload.php:215
|
||||
#: js_upload.php:303
|
||||
msgid "No files were uploaded."
|
||||
msgstr "No se subió ningún archivo."
|
||||
|
||||
#: js_upload.php:221
|
||||
#: js_upload.php:309
|
||||
msgid "Uploaded file is empty"
|
||||
msgstr "El archivo subido está vacío"
|
||||
|
||||
#: js_upload.php:233
|
||||
#, php-format
|
||||
msgid "Image exceeds size limit of %s"
|
||||
msgstr ""
|
||||
#: js_upload.php:321
|
||||
msgid "Image exceeds size limit of "
|
||||
msgstr "La imagen excede el tamaño de"
|
||||
|
||||
#: js_upload.php:245
|
||||
#, php-format
|
||||
msgid "File has an invalid extension, it should be one of %s."
|
||||
msgstr ""
|
||||
#: js_upload.php:332
|
||||
msgid "File has an invalid extension, it should be one of "
|
||||
msgstr "El archivo tiene una extensión inválida, debería ser una de"
|
||||
|
||||
#: js_upload.php:256
|
||||
#: js_upload.php:343
|
||||
msgid "Upload was cancelled, or server error encountered"
|
||||
msgstr "La subida fue cancelada, o el servidor tuvo un error"
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue