Merge pull request 'Fancybox is deprecated' (#6) from heluecht/deprecated-addons:fancybox into master

Reviewed-on: #6
This commit is contained in:
Tobias Diekershoff 2024-11-13 10:15:47 +01:00
commit 70d5912a82
234 changed files with 29623 additions and 0 deletions

2
fancybox/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
/dist/
/test/

27
fancybox/CHANGELOG.md Normal file
View file

@ -0,0 +1,27 @@
### Version 1.05
* Added ALT and TITLE of original IMG to fancybox popup.
### Version 1.04
* Update supporting upcoming imnagegrid in posts
### Version 1.03
* imgages in body-attach with title / alt attribute get them removed while adding fancy attributes
* Added fancybox to image inlined in posts. Un-hooked the old lightbox from frio and vier and excahnged that with fancybox hooks.
* Excluded images in "type-link" divs from being "fancied" as they have no images but pages linked to.
### Version 1.02
* [MrPetovan](https://github.com/MrPetovan) optimized my noob regular expression code.
### Version 1.01
* One gallery for each post
* All media attached to a post are added to the posts gallery.
* Loop scrolling: You can step from last media to first and vice versa.
### Version 1.00
* First test version released.
* One fancybox per page displaying first media of each post.

19
fancybox/README.md Normal file
View file

@ -0,0 +1,19 @@
# Post image gallery using fancybox
Addon author: [Grischa Brockhaus](https://brockha.us)
## Description
This addon loads all media attachments of a post into a "fancybox" instead of linking directly to the media.
Each post gets its own attachment library, when there are more than one media attached you can scroll through them.
## Licenses
### Fancybox Library
This AddOn is using the jQuery library [fancybox](https://github.com/fancyapps/fancybox).
The fancyBox libryry is licensed under the GPLv3 license for all open source applications. A commercial license is required for all commercial applications (including sites, themes and apps you plan to sell).
[Read more about fancyBox license](https://github.com/fancyapps/fancybox).

View file

@ -0,0 +1,62 @@
# fancyBox 3.5.7
jQuery lightbox script for displaying images, videos and more.
Touch enabled, responsive and fully customizable.
See the [project page](http://fancyapps.com/fancybox/3/) for documentation and a demonstration.
Follow [@thefancyapps](//twitter.com/thefancyapps) for updates.
## Quick start
1\. Add latest jQuery and fancyBox files
```html
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<link href="/path/to/jquery.fancybox.min.css" rel="stylesheet">
<script src="/path/to/jquery.fancybox.min.js"></script>
```
2\. Create links
```html
<a data-fancybox="gallery" href="big_1.jpg">
<img src="small_1.jpg">
</a>
<a data-fancybox="gallery" href="big_2.jpg">
<img src="small_2.jpg">
</a>
```
3\. Enjoy!
## License
fancyBox is licensed under the [GPLv3](http://choosealicense.com/licenses/gpl-3.0) license for all open source applications.
A commercial license is required for all commercial applications (including sites, themes and apps you plan to sell).
[Read more about fancyBox license](http://fancyapps.com/fancybox/3/#license).
## Bugs and feature requests
If you find a bug, please report it [here on Github](https://github.com/fancyapps/fancybox/issues).
Guidelines for bug reports:
1. Use the GitHub issue search — check if the issue has already been reported.
2. Check if the issue has been fixed — try to reproduce it using the latest master or development branch in the repository.
3. Isolate the problem — create a reduced test case and a live example. You can use CodePen to fork any demo found on documentation to use it as a template.
A good bug report shouldn't leave others needing to chase you up for more information.
Please try to be as detailed as possible in your report.
Feature requests are welcome. Please look for existing ones and use GitHub's "reactions" feature to vote.
Please do not use the issue tracker for personal support requests - use Stack Overflow ([fancybox-3](http://stackoverflow.com/questions/tagged/fancybox-3) tag) instead.

View file

@ -0,0 +1,13 @@
$(document).ready(function() {
$.fancybox.defaults.loop = "true";
// this disables the colorbox hook found in frio/js/modal.js:34
$("body").off("click", ".wall-item-body a img");
// Adds ALT/TITLE text to fancybox
$('a[data-fancybox').fancybox({
afterLoad : function(instance, current) {
current.$image.attr('alt', current.opts.$orig.find('img').attr('alt') );
current.$image.attr('title', current.opts.$orig.find('img').attr('title') );
}
});
});

View file

@ -0,0 +1,895 @@
body.compensate-for-scrollbar {
overflow: hidden;
}
.fancybox-active {
height: auto;
}
.fancybox-is-hidden {
left: -9999px;
margin: 0;
position: absolute !important;
top: -9999px;
visibility: hidden;
}
.fancybox-container {
-webkit-backface-visibility: hidden;
height: 100%;
left: 0;
outline: none;
position: fixed;
-webkit-tap-highlight-color: transparent;
top: 0;
-ms-touch-action: manipulation;
touch-action: manipulation;
transform: translateZ(0);
width: 100%;
z-index: 99992;
}
.fancybox-container * {
box-sizing: border-box;
}
.fancybox-outer,
.fancybox-inner,
.fancybox-bg,
.fancybox-stage {
bottom: 0;
left: 0;
position: absolute;
right: 0;
top: 0;
}
.fancybox-outer {
-webkit-overflow-scrolling: touch;
overflow-y: auto;
}
.fancybox-bg {
background: rgb(30, 30, 30);
opacity: 0;
transition-duration: inherit;
transition-property: opacity;
transition-timing-function: cubic-bezier(.47, 0, .74, .71);
}
.fancybox-is-open .fancybox-bg {
opacity: .9;
transition-timing-function: cubic-bezier(.22, .61, .36, 1);
}
.fancybox-infobar,
.fancybox-toolbar,
.fancybox-caption,
.fancybox-navigation .fancybox-button {
direction: ltr;
opacity: 0;
position: absolute;
transition: opacity .25s ease, visibility 0s ease .25s;
visibility: hidden;
z-index: 99997;
}
.fancybox-show-infobar .fancybox-infobar,
.fancybox-show-toolbar .fancybox-toolbar,
.fancybox-show-caption .fancybox-caption,
.fancybox-show-nav .fancybox-navigation .fancybox-button {
opacity: 1;
transition: opacity .25s ease 0s, visibility 0s ease 0s;
visibility: visible;
}
.fancybox-infobar {
color: #ccc;
font-size: 13px;
-webkit-font-smoothing: subpixel-antialiased;
height: 44px;
left: 0;
line-height: 44px;
min-width: 44px;
mix-blend-mode: difference;
padding: 0 10px;
pointer-events: none;
top: 0;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.fancybox-toolbar {
right: 0;
top: 0;
}
.fancybox-stage {
direction: ltr;
overflow: visible;
transform: translateZ(0);
z-index: 99994;
}
.fancybox-is-open .fancybox-stage {
overflow: hidden;
}
.fancybox-slide {
-webkit-backface-visibility: hidden;
/* Using without prefix would break IE11 */
display: none;
height: 100%;
left: 0;
outline: none;
overflow: auto;
-webkit-overflow-scrolling: touch;
padding: 44px;
position: absolute;
text-align: center;
top: 0;
transition-property: transform, opacity;
white-space: normal;
width: 100%;
z-index: 99994;
}
.fancybox-slide::before {
content: '';
display: inline-block;
font-size: 0;
height: 100%;
vertical-align: middle;
width: 0;
}
.fancybox-is-sliding .fancybox-slide,
.fancybox-slide--previous,
.fancybox-slide--current,
.fancybox-slide--next {
display: block;
}
.fancybox-slide--image {
overflow: hidden;
padding: 44px 0;
}
.fancybox-slide--image::before {
display: none;
}
.fancybox-slide--html {
padding: 6px;
}
.fancybox-content {
background: #fff;
display: inline-block;
margin: 0;
max-width: 100%;
overflow: auto;
-webkit-overflow-scrolling: touch;
padding: 44px;
position: relative;
text-align: left;
vertical-align: middle;
}
.fancybox-slide--image .fancybox-content {
animation-timing-function: cubic-bezier(.5, 0, .14, 1);
-webkit-backface-visibility: hidden;
background: transparent;
background-repeat: no-repeat;
background-size: 100% 100%;
left: 0;
max-width: none;
overflow: visible;
padding: 0;
position: absolute;
top: 0;
-ms-transform-origin: top left;
transform-origin: top left;
transition-property: transform, opacity;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
z-index: 99995;
}
.fancybox-can-zoomOut .fancybox-content {
cursor: zoom-out;
}
.fancybox-can-zoomIn .fancybox-content {
cursor: zoom-in;
}
.fancybox-can-swipe .fancybox-content,
.fancybox-can-pan .fancybox-content {
cursor: -webkit-grab;
cursor: grab;
}
.fancybox-is-grabbing .fancybox-content {
cursor: -webkit-grabbing;
cursor: grabbing;
}
.fancybox-container [data-selectable='true'] {
cursor: text;
}
.fancybox-image,
.fancybox-spaceball {
background: transparent;
border: 0;
height: 100%;
left: 0;
margin: 0;
max-height: none;
max-width: none;
padding: 0;
position: absolute;
top: 0;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
width: 100%;
}
.fancybox-spaceball {
z-index: 1;
}
.fancybox-slide--video .fancybox-content,
.fancybox-slide--map .fancybox-content,
.fancybox-slide--pdf .fancybox-content,
.fancybox-slide--iframe .fancybox-content {
height: 100%;
overflow: visible;
padding: 0;
width: 100%;
}
.fancybox-slide--video .fancybox-content {
background: #000;
}
.fancybox-slide--map .fancybox-content {
background: #e5e3df;
}
.fancybox-slide--iframe .fancybox-content {
background: #fff;
}
.fancybox-video,
.fancybox-iframe {
background: transparent;
border: 0;
display: block;
height: 100%;
margin: 0;
overflow: hidden;
padding: 0;
width: 100%;
}
/* Fix iOS */
.fancybox-iframe {
left: 0;
position: absolute;
top: 0;
}
.fancybox-error {
background: #fff;
cursor: default;
max-width: 400px;
padding: 40px;
width: 100%;
}
.fancybox-error p {
color: #444;
font-size: 16px;
line-height: 20px;
margin: 0;
padding: 0;
}
/* Buttons */
.fancybox-button {
background: rgba(30, 30, 30, .6);
border: 0;
border-radius: 0;
box-shadow: none;
cursor: pointer;
display: inline-block;
height: 44px;
margin: 0;
padding: 10px;
position: relative;
transition: color .2s;
vertical-align: top;
visibility: inherit;
width: 44px;
}
.fancybox-button,
.fancybox-button:visited,
.fancybox-button:link {
color: #ccc;
}
.fancybox-button:hover {
color: #fff;
}
.fancybox-button:focus {
outline: none;
}
.fancybox-button.fancybox-focus {
outline: 1px dotted;
}
.fancybox-button[disabled],
.fancybox-button[disabled]:hover {
color: #888;
cursor: default;
outline: none;
}
/* Fix IE11 */
.fancybox-button div {
height: 100%;
}
.fancybox-button svg {
display: block;
height: 100%;
overflow: visible;
position: relative;
width: 100%;
}
.fancybox-button svg path {
fill: currentColor;
stroke-width: 0;
}
.fancybox-button--play svg:nth-child(2),
.fancybox-button--fsenter svg:nth-child(2) {
display: none;
}
.fancybox-button--pause svg:nth-child(1),
.fancybox-button--fsexit svg:nth-child(1) {
display: none;
}
.fancybox-progress {
background: #ff5268;
height: 2px;
left: 0;
position: absolute;
right: 0;
top: 0;
-ms-transform: scaleX(0);
transform: scaleX(0);
-ms-transform-origin: 0;
transform-origin: 0;
transition-property: transform;
transition-timing-function: linear;
z-index: 99998;
}
/* Close button on the top right corner of html content */
.fancybox-close-small {
background: transparent;
border: 0;
border-radius: 0;
color: #ccc;
cursor: pointer;
opacity: .8;
padding: 8px;
position: absolute;
right: -12px;
top: -44px;
z-index: 401;
}
.fancybox-close-small:hover {
color: #fff;
opacity: 1;
}
.fancybox-slide--html .fancybox-close-small {
color: currentColor;
padding: 10px;
right: 0;
top: 0;
}
.fancybox-slide--image.fancybox-is-scaling .fancybox-content {
overflow: hidden;
}
.fancybox-is-scaling .fancybox-close-small,
.fancybox-is-zoomable.fancybox-can-pan .fancybox-close-small {
display: none;
}
/* Navigation arrows */
.fancybox-navigation .fancybox-button {
background-clip: content-box;
height: 100px;
opacity: 0;
position: absolute;
top: calc(50% - 50px);
width: 70px;
}
.fancybox-navigation .fancybox-button div {
padding: 7px;
}
.fancybox-navigation .fancybox-button--arrow_left {
left: 0;
left: env(safe-area-inset-left);
padding: 31px 26px 31px 6px;
}
.fancybox-navigation .fancybox-button--arrow_right {
padding: 31px 6px 31px 26px;
right: 0;
right: env(safe-area-inset-right);
}
/* Caption */
.fancybox-caption {
background: linear-gradient(to top,
rgba(0, 0, 0, .85) 0%,
rgba(0, 0, 0, .3) 50%,
rgba(0, 0, 0, .15) 65%,
rgba(0, 0, 0, .075) 75.5%,
rgba(0, 0, 0, .037) 82.85%,
rgba(0, 0, 0, .019) 88%,
rgba(0, 0, 0, 0) 100%);
bottom: 0;
color: #eee;
font-size: 14px;
font-weight: 400;
left: 0;
line-height: 1.5;
padding: 75px 44px 25px 44px;
pointer-events: none;
right: 0;
text-align: center;
z-index: 99996;
}
@supports (padding: max(0px)) {
.fancybox-caption {
padding: 75px max(44px, env(safe-area-inset-right)) max(25px, env(safe-area-inset-bottom)) max(44px, env(safe-area-inset-left));
}
}
.fancybox-caption--separate {
margin-top: -50px;
}
.fancybox-caption__body {
max-height: 50vh;
overflow: auto;
pointer-events: all;
}
.fancybox-caption a,
.fancybox-caption a:link,
.fancybox-caption a:visited {
color: #ccc;
text-decoration: none;
}
.fancybox-caption a:hover {
color: #fff;
text-decoration: underline;
}
/* Loading indicator */
.fancybox-loading {
animation: fancybox-rotate 1s linear infinite;
background: transparent;
border: 4px solid #888;
border-bottom-color: #fff;
border-radius: 50%;
height: 50px;
left: 50%;
margin: -25px 0 0 -25px;
opacity: .7;
padding: 0;
position: absolute;
top: 50%;
width: 50px;
z-index: 99999;
}
@keyframes fancybox-rotate {
100% {
transform: rotate(360deg);
}
}
/* Transition effects */
.fancybox-animated {
transition-timing-function: cubic-bezier(0, 0, .25, 1);
}
/* transitionEffect: slide */
.fancybox-fx-slide.fancybox-slide--previous {
opacity: 0;
transform: translate3d(-100%, 0, 0);
}
.fancybox-fx-slide.fancybox-slide--next {
opacity: 0;
transform: translate3d(100%, 0, 0);
}
.fancybox-fx-slide.fancybox-slide--current {
opacity: 1;
transform: translate3d(0, 0, 0);
}
/* transitionEffect: fade */
.fancybox-fx-fade.fancybox-slide--previous,
.fancybox-fx-fade.fancybox-slide--next {
opacity: 0;
transition-timing-function: cubic-bezier(.19, 1, .22, 1);
}
.fancybox-fx-fade.fancybox-slide--current {
opacity: 1;
}
/* transitionEffect: zoom-in-out */
.fancybox-fx-zoom-in-out.fancybox-slide--previous {
opacity: 0;
transform: scale3d(1.5, 1.5, 1.5);
}
.fancybox-fx-zoom-in-out.fancybox-slide--next {
opacity: 0;
transform: scale3d(.5, .5, .5);
}
.fancybox-fx-zoom-in-out.fancybox-slide--current {
opacity: 1;
transform: scale3d(1, 1, 1);
}
/* transitionEffect: rotate */
.fancybox-fx-rotate.fancybox-slide--previous {
opacity: 0;
-ms-transform: rotate(-360deg);
transform: rotate(-360deg);
}
.fancybox-fx-rotate.fancybox-slide--next {
opacity: 0;
-ms-transform: rotate(360deg);
transform: rotate(360deg);
}
.fancybox-fx-rotate.fancybox-slide--current {
opacity: 1;
-ms-transform: rotate(0deg);
transform: rotate(0deg);
}
/* transitionEffect: circular */
.fancybox-fx-circular.fancybox-slide--previous {
opacity: 0;
transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
}
.fancybox-fx-circular.fancybox-slide--next {
opacity: 0;
transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
}
.fancybox-fx-circular.fancybox-slide--current {
opacity: 1;
transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
}
/* transitionEffect: tube */
.fancybox-fx-tube.fancybox-slide--previous {
transform: translate3d(-100%, 0, 0) scale(.1) skew(-10deg);
}
.fancybox-fx-tube.fancybox-slide--next {
transform: translate3d(100%, 0, 0) scale(.1) skew(10deg);
}
.fancybox-fx-tube.fancybox-slide--current {
transform: translate3d(0, 0, 0) scale(1);
}
/* Styling for Small-Screen Devices */
@media all and (max-height: 576px) {
.fancybox-slide {
padding-left: 6px;
padding-right: 6px;
}
.fancybox-slide--image {
padding: 6px 0;
}
.fancybox-close-small {
right: -6px;
}
.fancybox-slide--image .fancybox-close-small {
background: #4e4e4e;
color: #f2f4f6;
height: 36px;
opacity: 1;
padding: 6px;
right: 0;
top: 0;
width: 36px;
}
.fancybox-caption {
padding-left: 12px;
padding-right: 12px;
}
@supports (padding: max(0px)) {
.fancybox-caption {
padding-left: max(12px, env(safe-area-inset-left));
padding-right: max(12px, env(safe-area-inset-right));
}
}
}
/* Share */
.fancybox-share {
background: #f4f4f4;
border-radius: 3px;
max-width: 90%;
padding: 30px;
text-align: center;
}
.fancybox-share h1 {
color: #222;
font-size: 35px;
font-weight: 700;
margin: 0 0 20px 0;
}
.fancybox-share p {
margin: 0;
padding: 0;
}
.fancybox-share__button {
border: 0;
border-radius: 3px;
display: inline-block;
font-size: 14px;
font-weight: 700;
line-height: 40px;
margin: 0 5px 10px 5px;
min-width: 130px;
padding: 0 15px;
text-decoration: none;
transition: all .2s;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
white-space: nowrap;
}
.fancybox-share__button:visited,
.fancybox-share__button:link {
color: #fff;
}
.fancybox-share__button:hover {
text-decoration: none;
}
.fancybox-share__button--fb {
background: #3b5998;
}
.fancybox-share__button--fb:hover {
background: #344e86;
}
.fancybox-share__button--pt {
background: #bd081d;
}
.fancybox-share__button--pt:hover {
background: #aa0719;
}
.fancybox-share__button--tw {
background: #1da1f2;
}
.fancybox-share__button--tw:hover {
background: #0d95e8;
}
.fancybox-share__button svg {
height: 25px;
margin-right: 7px;
position: relative;
top: -1px;
vertical-align: middle;
width: 25px;
}
.fancybox-share__button svg path {
fill: #fff;
}
.fancybox-share__input {
background: transparent;
border: 0;
border-bottom: 1px solid #d7d7d7;
border-radius: 0;
color: #5d5b5b;
font-size: 14px;
margin: 10px 0 0 0;
outline: none;
padding: 10px 15px;
width: 100%;
}
/* Thumbs */
.fancybox-thumbs {
background: #ddd;
bottom: 0;
display: none;
margin: 0;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar;
padding: 2px 2px 4px 2px;
position: absolute;
right: 0;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
top: 0;
width: 212px;
z-index: 99995;
}
.fancybox-thumbs-x {
overflow-x: auto;
overflow-y: hidden;
}
.fancybox-show-thumbs .fancybox-thumbs {
display: block;
}
.fancybox-show-thumbs .fancybox-inner {
right: 212px;
}
.fancybox-thumbs__list {
font-size: 0;
height: 100%;
list-style: none;
margin: 0;
overflow-x: hidden;
overflow-y: auto;
padding: 0;
position: absolute;
position: relative;
white-space: nowrap;
width: 100%;
}
.fancybox-thumbs-x .fancybox-thumbs__list {
overflow: hidden;
}
.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar {
width: 7px;
}
.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-track {
background: #fff;
border-radius: 10px;
box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);
}
.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-thumb {
background: #2a2a2a;
border-radius: 10px;
}
.fancybox-thumbs__list a {
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
background-color: rgba(0, 0, 0, .1);
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
cursor: pointer;
float: left;
height: 75px;
margin: 2px;
max-height: calc(100% - 8px);
max-width: calc(50% - 4px);
outline: none;
overflow: hidden;
padding: 0;
position: relative;
-webkit-tap-highlight-color: transparent;
width: 100px;
}
.fancybox-thumbs__list a::before {
border: 6px solid #ff5268;
bottom: 0;
content: '';
left: 0;
opacity: 0;
position: absolute;
right: 0;
top: 0;
transition: all .2s cubic-bezier(.25, .46, .45, .94);
z-index: 99991;
}
.fancybox-thumbs__list a:focus::before {
opacity: .5;
}
.fancybox-thumbs__list a.fancybox-thumbs-active::before {
opacity: 1;
}
/* Styling for Small-Screen Devices */
@media all and (max-width: 576px) {
.fancybox-thumbs {
width: 110px;
}
.fancybox-show-thumbs .fancybox-inner {
right: 110px;
}
.fancybox-thumbs__list a {
max-width: calc(100% - 10px);
}
}

5632
fancybox/asset/fancybox/jquery.fancybox.js vendored Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

15
fancybox/createrelease Executable file
View file

@ -0,0 +1,15 @@
MODULE=fancybox
cd ..
# old releases not needed anymore
mkdir -p $MODULE/dist
rm $MODULE/dist/*
# create release for actual version
zip -r9 $MODULE/dist/release.zip $MODULE/* -x $MODULE/dist/\* -x $MODULE/test/\* $MODULE/createrelease
echo dist/release.zip created.
cd $MODULE

61
fancybox/fancybox.php Normal file
View file

@ -0,0 +1,61 @@
<?php
/**
* Name: Fancybox
* Description: Open media attachments of posts into a fancybox overlay.
* Version: 1.05
* Author: Grischa Brockhaus <grischa@brockha.us>
* Status: Unsupported
*/
use Friendica\App;
use Friendica\Core\Hook;
use Friendica\DI;
function fancybox_install()
{
Hook::register('head', __FILE__, 'fancybox_head');
Hook::register('footer', __FILE__, 'fancybox_footer');
Hook::register('prepare_body_final', __FILE__, 'fancybox_render');
}
function fancybox_head(string &$b)
{
DI::page()->registerStylesheet(__DIR__ . '/asset/fancybox/jquery.fancybox.min.css');
}
function fancybox_footer(string &$str)
{
DI::page()->registerFooterScript(__DIR__ . '/asset/fancybox/jquery.fancybox.min.js');
DI::page()->registerFooterScript(__DIR__ . '/asset/fancybox/fancybox.config.js');
}
function fancybox_render(array &$b){
$gallery = 'gallery-' . $b['item']['uri-id'] ?? random_int(1000000, 10000000);
// performWithEscapedBlocks escapes block defined with 2nd par pattern that won't be processed.
// We don't want to touch images in class="type-link":
$b['html'] = \Friendica\Util\Strings::performWithEscapedBlocks(
$b['html'],
'#<div class="type-link">.*?</div>#s',
function ($text) use ($gallery) {
// This processes images inlined in posts
// Frio / Vier hooks für lightbox are un-hooked in fancybox-config.js. So this works for them, too!
//if (!in_array(DI::app()->getCurrentTheme(),['vier','frio']))
$text = preg_replace(
'#<a[^>]*href="([^"]*)"[^>]*>(<img[^>]*src="[^"]*"[^>]*>)</a>#',
'<a data-fancybox="' . $gallery . '" href="$1">$2</a>',
$text);
// Local content images attached:
$text = preg_replace_callback(
'#<div class="(body-attach|imagegrid-column)">.*?</div>#s',
function ($matches) use ($gallery) {
return str_replace('<a href', '<a data-fancybox="' . $gallery . '" href', $matches[0]);
},
$text
);
return $text;
}
);
}

24
x-twitter/LICENSE Normal file
View file

@ -0,0 +1,24 @@
Copyright (c) 2011-2018 Tobias Diekershoff, Michael Vogel, Hypolite Petovan
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the distribution.
* Neither the name of the <organization> nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

46
x-twitter/README.md Normal file
View file

@ -0,0 +1,46 @@
Twitter Addon
==============
Main authors Tobias Diekershoff, Michael Vogel and Hypolite Petovan.
This bi-directional connector addon allows each user to crosspost their Friendica public posts to Twitter, import their Twitter timeline, interact with tweets from Friendica, and crosspost to Friendica their public tweets.
## Installation
To use this addon you have to register an [application](https://apps.twitter.com/) for your Friendica instance on Twitter.
Register your Friendica site as "Client" application with "Read & Write" access we do not need "Twitter as login".
Please leave the field "Callback URL" empty.
When you've registered the app you get the OAuth Consumer key and secret pair for your application/site.
After the registration please enter the values for "Consumer Key" and "Consumer Secret" in the [administration](admin/addons/twitter).
## Alternative configuration
Open the `config/local.config.php` file and add "twitter" to the list of activated addons:
'addons' => [
...
'twitter' => [
admin => true,
],
]
Add your key pair to your `config/twitter.config.php` file.
return [
'twitter' => [
'consumerkey' => 'your consumer_key here',
'consumersecret' => 'your consumer_secret here',
],
];
After this, users can configure their Twitter account settings from "Settings -> Addon Settings".
## License
The _Twitter Connector_ is licensed under the [3-clause BSD license][2] see the LICENSE file in the addons directory.
The _Twitter Connector_ uses the [Twitter OAuth library][2] by Abraham Williams, MIT licensed
[1]: http://opensource.org/licenses/BSD-3-Clause
[2]: https://github.com/abraham/twitteroauth

32
x-twitter/composer.json Normal file
View file

@ -0,0 +1,32 @@
{
"name": "friendica-addons/twitter",
"description": "Twitter Connector addon for Friendica",
"type": "friendica-addon",
"authors": [
{
"name": "Tobias Diekershoff",
"homepage": "https://f.diekershoff.de/profile/tobias",
"role": "Developer"
},
{
"name": "Michael Vogel",
"homepage": "https://pirati.ca/profile/heluecht",
"role": "Developer"
},
{
"name": "Hypolite Petovan",
"email": "hypolite@mrpetovan.com",
"homepage": "https://friendica.mrpetovan.com/profile/hypolite",
"role": "Developer"
}
],
"require": {
"abraham/twitteroauth": "2.0.0",
"jublonet/codebird-php": "dev-master"
},
"license": "3-clause BSD license",
"minimum-stability": "stable",
"config": {
"autoloader-suffix": "TwitterAddon"
}
}

328
x-twitter/composer.lock generated Normal file
View file

@ -0,0 +1,328 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "fafd1db0b4f04c4268f5034ce8c7f6ea",
"packages": [
{
"name": "abraham/twitteroauth",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/abraham/twitteroauth.git",
"reference": "96f49e67baec10f5e5cb703d87be16ba01a798a5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/abraham/twitteroauth/zipball/96f49e67baec10f5e5cb703d87be16ba01a798a5",
"reference": "96f49e67baec10f5e5cb703d87be16ba01a798a5",
"shasum": ""
},
"require": {
"composer/ca-bundle": "^1.2",
"ext-curl": "*",
"php": "^7.2 || ^7.3 || ^7.4 || ^8.0"
},
"require-dev": {
"php-vcr/php-vcr": "^1",
"php-vcr/phpunit-testlistener-vcr": "dev-php-8",
"phpmd/phpmd": "^2",
"phpunit/phpunit": "^8",
"squizlabs/php_codesniffer": "^3"
},
"type": "library",
"autoload": {
"psr-4": {
"Abraham\\TwitterOAuth\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Abraham Williams",
"email": "abraham@abrah.am",
"homepage": "https://abrah.am",
"role": "Developer"
}
],
"description": "The most popular PHP library for use with the Twitter OAuth REST API.",
"homepage": "https://twitteroauth.com",
"keywords": [
"Twitter API",
"Twitter oAuth",
"api",
"oauth",
"rest",
"social",
"twitter"
],
"time": "2020-12-02T01:27:06+00:00"
},
{
"name": "composer/ca-bundle",
"version": "1.2.10",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
"reference": "9fdb22c2e97a614657716178093cd1da90a64aa8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/9fdb22c2e97a614657716178093cd1da90a64aa8",
"reference": "9fdb22c2e97a614657716178093cd1da90a64aa8",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"ext-pcre": "*",
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^0.12.55",
"psr/log": "^1.0",
"symfony/phpunit-bridge": "^4.2 || ^5",
"symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Composer\\CaBundle\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
}
],
"description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
"keywords": [
"cabundle",
"cacert",
"certificate",
"ssl",
"tls"
],
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
{
"url": "https://github.com/composer",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
"time": "2021-06-07T13:58:28+00:00"
},
{
"name": "composer/installers",
"version": "v1.6.0",
"source": {
"type": "git",
"url": "https://github.com/composer/installers.git",
"reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/installers/zipball/cfcca6b1b60bc4974324efb5783c13dca6932b5b",
"reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b",
"shasum": ""
},
"require": {
"composer-plugin-api": "^1.0"
},
"replace": {
"roundcube/plugin-installer": "*",
"shama/baton": "*"
},
"require-dev": {
"composer/composer": "1.0.*@dev",
"phpunit/phpunit": "^4.8.36"
},
"type": "composer-plugin",
"extra": {
"class": "Composer\\Installers\\Plugin",
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"autoload": {
"psr-4": {
"Composer\\Installers\\": "src/Composer/Installers"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kyle Robinson Young",
"email": "kyle@dontkry.com",
"homepage": "https://github.com/shama"
}
],
"description": "A multi-framework Composer library installer",
"homepage": "https://composer.github.io/installers/",
"keywords": [
"Craft",
"Dolibarr",
"Eliasis",
"Hurad",
"ImageCMS",
"Kanboard",
"Lan Management System",
"MODX Evo",
"Mautic",
"Maya",
"OXID",
"Plentymarkets",
"Porto",
"RadPHP",
"SMF",
"Thelia",
"WolfCMS",
"agl",
"aimeos",
"annotatecms",
"attogram",
"bitrix",
"cakephp",
"chef",
"cockpit",
"codeigniter",
"concrete5",
"croogo",
"dokuwiki",
"drupal",
"eZ Platform",
"elgg",
"expressionengine",
"fuelphp",
"grav",
"installer",
"itop",
"joomla",
"kohana",
"laravel",
"lavalite",
"lithium",
"magento",
"majima",
"mako",
"mediawiki",
"modulework",
"modx",
"moodle",
"osclass",
"phpbb",
"piwik",
"ppi",
"puppet",
"pxcms",
"reindex",
"roundcube",
"shopware",
"silverstripe",
"sydes",
"symfony",
"typo3",
"wordpress",
"yawik",
"zend",
"zikula"
],
"time": "2018-08-27T06:10:37+00:00"
},
{
"name": "jublonet/codebird-php",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/jublo/codebird-php.git",
"reference": "df362d8ad629aad6c4c7dbf36a440e569ec41368"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jublo/codebird-php/zipball/df362d8ad629aad6c4c7dbf36a440e569ec41368",
"reference": "df362d8ad629aad6c4c7dbf36a440e569ec41368",
"shasum": ""
},
"require": {
"composer/installers": "~1.0",
"ext-hash": "*",
"ext-json": "*",
"lib-openssl": "*",
"php": ">=5.5.0"
},
"require-dev": {
"php-coveralls/php-coveralls": ">=0.6",
"phpunit/phpunit": ">=7.3",
"squizlabs/php_codesniffer": "2.*"
},
"type": "library",
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-3.0+"
],
"authors": [
{
"name": "Joshua Atkins",
"role": "Developer",
"email": "joshua.atkins@jublo.net",
"homepage": "http://atkins.im/"
},
{
"name": "J.M.",
"role": "Developer",
"email": "jm@jublo.net",
"homepage": "http://mynetx.net/"
}
],
"description": "Easy access to the Twitter REST API, Direct Messages API, Account Activity API, TON (Object Nest) API and Twitter Ads API — all from one PHP library.",
"homepage": "https://www.jublo.net/projects/codebird/php",
"keywords": [
"api",
"networking",
"twitter"
],
"time": "2018-08-16T00:07:08+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"jublonet/codebird-php": 20
},
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
"plugin-api-version": "1.1.0"
}

View file

@ -0,0 +1,16 @@
<?php
// Warning: Don't change this file! It only holds the default config values for this addon.
// Instead, copy this file to config/twitter.config.php in your Friendica directory and set the correct values there
return [
'twitter' => [
// consumerkey (String)
// OAuth Consumer Key provided by Twitter on registering an app at https://twitter.com/apps
'consumerkey' => '',
// consumersecret (String)
// OAuth Consumer Secret provided by Twitter on registering an app at https://twitter.com/apps
'consumersecret' => '',
],
];

View file

@ -0,0 +1,159 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-06-03 15:50-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"
#: twitter.php:220
msgid "Post to Twitter"
msgstr ""
#: twitter.php:267
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr ""
#: twitter.php:334
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr ""
#: twitter.php:347
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input "
"box below and submit the form. Only your <strong>public</strong> posts will "
"be posted to Twitter."
msgstr ""
#: twitter.php:348
msgid "Log in with Twitter"
msgstr ""
#: twitter.php:350
msgid "Copy the PIN from Twitter here"
msgstr ""
#: twitter.php:358 twitter.php:403
msgid "An error occured: "
msgstr ""
#: twitter.php:372
#, php-format
msgid ""
"Currently connected to: <a href=\"https://twitter.com/%1$s\" target="
"\"_twitter\">%1$s</a>"
msgstr ""
#: twitter.php:378
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr ""
#: twitter.php:385
msgid "Invalid Twitter info"
msgstr ""
#: twitter.php:386
msgid "Disconnect"
msgstr ""
#: twitter.php:391
msgid "Allow posting to Twitter"
msgstr ""
#: twitter.php:391
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for "
"every posting separately in the posting options when writing the entry."
msgstr ""
#: twitter.php:392
msgid "Send public postings to Twitter by default"
msgstr ""
#: twitter.php:393
msgid "Use threads instead of truncating the content"
msgstr ""
#: twitter.php:394
msgid "Mirror all posts from twitter that are no replies"
msgstr ""
#: twitter.php:395
msgid "Import the remote timeline"
msgstr ""
#: twitter.php:396
msgid "Automatically create contacts"
msgstr ""
#: twitter.php:396
msgid ""
"This will automatically create a contact in Friendica as soon as you receive "
"a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here."
msgstr ""
#: twitter.php:397
msgid "Follow in fediverse"
msgstr ""
#: twitter.php:397
msgid ""
"Automatically subscribe to the contact in the fediverse, when a fediverse "
"account is mentioned in name or description and we are following the Twitter "
"contact."
msgstr ""
#: twitter.php:410
msgid "Twitter Import/Export/Mirror"
msgstr ""
#: twitter.php:567
msgid ""
"Please connect a Twitter account in your Social Network settings to import "
"Twitter posts."
msgstr ""
#: twitter.php:574
msgid "Twitter post not found."
msgstr ""
#: twitter.php:999
msgid "Save Settings"
msgstr ""
#: twitter.php:1001
msgid "Consumer key"
msgstr ""
#: twitter.php:1002
msgid "Consumer secret"
msgstr ""
#: twitter.php:1200
#, php-format
msgid "%s on Twitter"
msgstr ""

View file

@ -0,0 +1,129 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter 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-10-08 22:25-0400\n"
"PO-Revision-Date: 2021-10-09 06:17+0000\n"
"Last-Translator: Transifex Bot <>\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"
#: twitter.php:224
msgid "Post to Twitter"
msgstr ""
#: twitter.php:269
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr ""
#: twitter.php:329 twitter.php:333
msgid "Twitter Import/Export/Mirror"
msgstr ""
#: twitter.php:340
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr ""
#: twitter.php:352
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr ""
#: twitter.php:353
msgid "Log in with Twitter"
msgstr ""
#: twitter.php:355
msgid "Copy the PIN from Twitter here"
msgstr ""
#: twitter.php:360 twitter.php:415 twitter.php:803
msgid "Save Settings"
msgstr "حفظ الإعدادات"
#: twitter.php:362 twitter.php:417
msgid "An error occured: "
msgstr ""
#: twitter.php:379
msgid "Currently connected to: "
msgstr ""
#: twitter.php:380 twitter.php:390
msgid "Disconnect"
msgstr ""
#: twitter.php:397
msgid "Allow posting to Twitter"
msgstr ""
#: twitter.php:397
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr ""
#: twitter.php:400
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr ""
#: twitter.php:403
msgid "Send public postings to Twitter by default"
msgstr ""
#: twitter.php:406
msgid "Mirror all posts from twitter that are no replies"
msgstr ""
#: twitter.php:409
msgid "Import the remote timeline"
msgstr ""
#: twitter.php:412
msgid "Automatically create contacts"
msgstr ""
#: twitter.php:412
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here."
msgstr ""
#: twitter.php:805
msgid "Consumer key"
msgstr ""
#: twitter.php:806
msgid "Consumer secret"
msgstr ""
#: twitter.php:1002
#, php-format
msgid "%s on Twitter"
msgstr ""

View file

@ -0,0 +1,8 @@
<?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['Save Settings'] = 'حفظ الإعدادات';

View file

@ -0,0 +1,24 @@
<?php
$a->strings["Post to Twitter"] = "Publica-ho al Twitter";
$a->strings["Twitter settings updated."] = "La configuració de Twitter actualitzada.";
$a->strings["Twitter Posting Settings"] = "Configuració d'Enviaments per a Twitter";
$a->strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "No s'ha pogut emparellar cap clau \"consumer key\" per a Twitter. Si us plau, poseu-vos en contacte amb l'administrador del lloc.";
$a->strings["At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "En aquesta instància Friendica el addon Twitter va ser habilitat, però encara no ha connectat el compte al seu compte de Twitter. Per a això feu clic al botó de sota per obtenir un PIN de Twitter que ha de copiar a la casella de sota i enviar el formulari. Només els missatges <strong> públics </strong> es publicaran a Twitter.";
$a->strings["Log in with Twitter"] = "Accedeixi com en Twitter";
$a->strings["Copy the PIN from Twitter here"] = "Copieu el codi PIN de Twitter aquí";
$a->strings["Submit"] = "Enviar";
$a->strings["Currently connected to: "] = "Actualment connectat a: ";
$a->strings["If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Si està activat, tots els seus anuncis <strong> públics </strong> poden ser publicats en el corresponent compte de Twitter. Vostè pot optar per fer-ho per defecte (en aquest cas) o per cada missatge per separat en les opcions de comptabilització en escriure l'entrada.";
$a->strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Nota</strong>: donada la seva configuració de privacitat (<em> Amaga els detalls del teu perfil dels espectadors desconeguts? </em>) el vincle potencialment inclòs en anuncis públics retransmesos a Twitter conduirà al visitant a una pàgina en blanc informar als visitants que l'accés al seu perfil s'ha restringit.";
$a->strings["Allow posting to Twitter"] = "Permetre anunci a Twitter";
$a->strings["Send public postings to Twitter by default"] = "Enviar anuncis públics a Twitter per defecte";
$a->strings["Mirror all posts from twitter that are no replies or retweets"] = "";
$a->strings["Shortening method that optimizes the tweet"] = "";
$a->strings["Send linked #-tags and @-names to Twitter"] = "Enviar enllaços #-etiquetes i @-noms a Twitter";
$a->strings["Clear OAuth configuration"] = "Esborrar configuració de OAuth";
$a->strings["Settings updated."] = "Ajustos actualitzats.";
$a->strings["Consumer key"] = "Consumer key";
$a->strings["Consumer secret"] = "Consumer secret";
$a->strings["Name of the Twitter Application"] = "";
$a->strings["set this to avoid mirroring postings from ~friendica back to ~friendica"] = "";

View file

@ -0,0 +1,136 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
# Translators:
# Aditoo, 2018
# Aditoo, 2018
# michal_s <msupler@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-06-02 10:25+0700\n"
"PO-Revision-Date: 2018-06-14 10:10+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"
#: twitter.php:195
msgid "Post to Twitter"
msgstr "Poslat příspěvek na Twitter"
#: twitter.php:236
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr "Vložil/a jste prázdný PIN kód, prosím přihlaste se opět na Twitter pro nový."
#: twitter.php:263
msgid "Twitter settings updated."
msgstr "Nastavení pro Twitter aktualizována."
#: twitter.php:293 twitter.php:297
msgid "Twitter Import/Export/Mirror"
msgstr "Import/Export/Zrcadlení Twitteru"
#: twitter.php:304
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "Nenalezen žádný spotřebitelský páru klíčů pro Twitter. Obraťte se na administrátora webu."
#: twitter.php:316
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "Na této instanci Friendica byl doplněk pro Twitter povolen, ještě jste však nepřipojil/a Váš účet k Vašemu účtu na Twitteru. Pokud to chcete udělat, kliknutím na tlačítko níže získáte od Twitteru PIN kód, zkopírujte jej do pole níže a odešlete formulář. Pouze Vaše <strong>veřejné</strong> příspěvky budou odesílány na Twitter."
#: twitter.php:317
msgid "Log in with Twitter"
msgstr "Přihlásit se přes Twitter"
#: twitter.php:319
msgid "Copy the PIN from Twitter here"
msgstr "Zkopírujte sem PIN z Twitteru"
#: twitter.php:324 twitter.php:366 twitter.php:636
msgid "Save Settings"
msgstr "Uložit nastavení"
#: twitter.php:336
msgid "Currently connected to: "
msgstr "V současné době připojen k:"
#: twitter.php:337
msgid "Disconnect"
msgstr "Odpojit"
#: twitter.php:347
msgid "Allow posting to Twitter"
msgstr "Povolit odesílání na Twitter"
#: twitter.php:347
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "Je-li povoleno, všechny Vaše <strong>veřejné</strong> příspěvky mohou být zasílány na související účet na Twitteru. Můžete si vybrat, zda-li toto bude výchozí nastavení (zde), nebo budete mít možnost si vybrat požadované chování při psaní každého příspěvku."
#: twitter.php:350
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Poznámka</strong>: Kvůli vašim nastavením o soukromí (<em>Skrýt Vaše profilové detaily před neznámými návštěvníky?</em>), odkaz potenciálně obsažen ve veřejných příspěvcích přeposílaných na Twitter zavedou návštěvníky na prázdnou stránku informující návštěvníky, že přístup na Váš profil byl zakázán."
#: twitter.php:353
msgid "Send public postings to Twitter by default"
msgstr "Defaultně zasílat veřejné komentáře na Twitter"
#: twitter.php:356
msgid "Mirror all posts from twitter that are no replies"
msgstr "Zrcadlit všechny příspěvky z Twitteru, které nejsou odpovědi."
#: twitter.php:359
msgid "Import the remote timeline"
msgstr "Importovat vzdálenou časovou osu"
#: twitter.php:362
msgid "Automatically create contacts"
msgstr "Automaticky vytvořit kontakty"
#: twitter.php:362
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here. However if enabled, you cannot "
"merely remove a twitter contact from the Friendica contact list, as it will "
"recreate this contact when they post again."
msgstr "Tato možnost automaticky vytvoří kontakt na Friendica, jakmile obdržíte zprávu od existujícího kontaktu přes síť Twitter. Pokud toto nezapnete, budete si muset tyto kontakty na Twitteru, od kterých chcete dostávat příspěvky, přidávat do Friendica manuálně. Pokud toto ovšem zapnete, nemůžete jednoduše odstranit kontakt na Twitteru ze seznamu kontaktů na Friendica, neboť tato možnost jej při každém novém příspěvku opět vytvoří."
#: twitter.php:614
msgid "Twitter post failed. Queued for retry."
msgstr "Poslání příspěvku na Twitter selhalo. Příspěvek byl poslán do fronty pro zopakování."
#: twitter.php:628
msgid "Settings updated."
msgstr "Nastavení aktualizováno."
#: twitter.php:638
msgid "Consumer key"
msgstr "Consumer key"
#: twitter.php:639
msgid "Consumer secret"
msgstr "Consumer secret"

View file

@ -0,0 +1,30 @@
<?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['Post to Twitter'] = 'Poslat příspěvek na Twitter';
$a->strings['You submitted an empty PIN, please Sign In with Twitter again to get a new one.'] = 'Vložil/a jste prázdný PIN kód, prosím přihlaste se opět na Twitter pro nový.';
$a->strings['Twitter settings updated.'] = 'Nastavení pro Twitter aktualizována.';
$a->strings['Twitter Import/Export/Mirror'] = 'Import/Export/Zrcadlení Twitteru';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Nenalezen žádný spotřebitelský páru klíčů pro Twitter. Obraťte se na administrátora webu.';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'Na této instanci Friendica byl doplněk pro Twitter povolen, ještě jste však nepřipojil/a Váš účet k Vašemu účtu na Twitteru. Pokud to chcete udělat, kliknutím na tlačítko níže získáte od Twitteru PIN kód, zkopírujte jej do pole níže a odešlete formulář. Pouze Vaše <strong>veřejné</strong> příspěvky budou odesílány na Twitter.';
$a->strings['Log in with Twitter'] = 'Přihlásit se přes Twitter';
$a->strings['Copy the PIN from Twitter here'] = 'Zkopírujte sem PIN z Twitteru';
$a->strings['Save Settings'] = 'Uložit nastavení';
$a->strings['Currently connected to: '] = 'V současné době připojen k:';
$a->strings['Disconnect'] = 'Odpojit';
$a->strings['Allow posting to Twitter'] = 'Povolit odesílání na Twitter';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = 'Je-li povoleno, všechny Vaše <strong>veřejné</strong> příspěvky mohou být zasílány na související účet na Twitteru. Můžete si vybrat, zda-li toto bude výchozí nastavení (zde), nebo budete mít možnost si vybrat požadované chování při psaní každého příspěvku.';
$a->strings['<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '<strong>Poznámka</strong>: Kvůli vašim nastavením o soukromí (<em>Skrýt Vaše profilové detaily před neznámými návštěvníky?</em>), odkaz potenciálně obsažen ve veřejných příspěvcích přeposílaných na Twitter zavedou návštěvníky na prázdnou stránku informující návštěvníky, že přístup na Váš profil byl zakázán.';
$a->strings['Send public postings to Twitter by default'] = 'Defaultně zasílat veřejné komentáře na Twitter';
$a->strings['Mirror all posts from twitter that are no replies'] = 'Zrcadlit všechny příspěvky z Twitteru, které nejsou odpovědi.';
$a->strings['Import the remote timeline'] = 'Importovat vzdálenou časovou osu';
$a->strings['Automatically create contacts'] = 'Automaticky vytvořit kontakty';
$a->strings['This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here. However if enabled, you cannot merely remove a twitter contact from the Friendica contact list, as it will recreate this contact when they post again.'] = 'Tato možnost automaticky vytvoří kontakt na Friendica, jakmile obdržíte zprávu od existujícího kontaktu přes síť Twitter. Pokud toto nezapnete, budete si muset tyto kontakty na Twitteru, od kterých chcete dostávat příspěvky, přidávat do Friendica manuálně. Pokud toto ovšem zapnete, nemůžete jednoduše odstranit kontakt na Twitteru ze seznamu kontaktů na Friendica, neboť tato možnost jej při každém novém příspěvku opět vytvoří.';
$a->strings['Twitter post failed. Queued for retry.'] = 'Poslání příspěvku na Twitter selhalo. Příspěvek byl poslán do fronty pro zopakování.';
$a->strings['Settings updated.'] = 'Nastavení aktualizováno.';
$a->strings['Consumer key'] = 'Consumer key';
$a->strings['Consumer secret'] = 'Consumer secret';

View file

@ -0,0 +1,146 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter 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-27 10:25-0500\n"
"PO-Revision-Date: 2014-06-23 12:58+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"
#: twitter.php:213
msgid "Post to Twitter"
msgstr "Læg op på Twitter"
#: twitter.php:258
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr "Du indsendte en tom PIN, log venligst ind med Twitter igen og få en ny en."
#: twitter.php:321
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "Intet \"consumer key pair\" fundet for Twitter. Kontakt venligst din sides administrator."
#: twitter.php:334
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "På denne Friendica instans er Twitter-tilføjelsen slået til, men du har ikke forbundet din konto til din Twitter-konto endnu. For at gøre det, skal du klikke på knappen herunder for at få en PIN fra Twitter, som du så skal kopiere ind i input-boksen og indsende . Det er kun dine <strong>offentlige</strong> opslag som vil blive lagt op på Twitter."
#: twitter.php:335
msgid "Log in with Twitter"
msgstr "Log ind med Twitter"
#: twitter.php:337
msgid "Copy the PIN from Twitter here"
msgstr "Kopier din PIN fra Twitter ind her"
#: twitter.php:345 twitter.php:388
msgid "An error occured: "
msgstr "Der opstod en fejl:"
#: twitter.php:359
#, php-format
msgid ""
"Currently connected to: <a href=\"https://twitter.com/%1$s\" "
"target=\"_twitter\">%1$s</a>"
msgstr "I øjeblikket forbundet til: <a href=\"https://twitter.com/%1$s\" target=\"_twitter\">%1$s</a>"
#: twitter.php:365
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Note</strong>: Grundet dine privatlivsindstillinger (<em>Skjul dine profildetaljer fra ukendte besøgende?</em>), vil linket, som potentielt kan være inkluderet i offentlige opslag på Twitter, lede tilbage til en blank side som informerer den besøgende om at adgang til din profil er begrænset."
#: twitter.php:372
msgid "Invalid Twitter info"
msgstr "Ugyldig Twitter information"
#: twitter.php:373
msgid "Disconnect"
msgstr "Afbryd forbindelsen"
#: twitter.php:378
msgid "Allow posting to Twitter"
msgstr "Tillad at lave opslag på Twitter"
#: twitter.php:378
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "Hvis aktiveret, kan alle dine <strong>offentlige</strong> opslag blive lagt op på den associerede Twitter konto. Du kan vælge at gøre dette automatisk (her), eller separat for hvert opslag in valgmulighederne når du skriver opslaget."
#: twitter.php:379
msgid "Send public postings to Twitter by default"
msgstr "Send som standard offentlige opslag til Twitter"
#: twitter.php:380
msgid "Mirror all posts from twitter that are no replies"
msgstr "Spejl alle opslag fra Twitter som ikke er svar"
#: twitter.php:381
msgid "Import the remote timeline"
msgstr "Importér den eksterne tidslinje"
#: twitter.php:382
msgid "Automatically create contacts"
msgstr "Opret automatisk kontakter"
#: twitter.php:382
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here."
msgstr "Dette vil automatisk skabe en kontakt i Friendica, så snart du modtager en besked fra en eksisterende kontakt via Twitter-netværket. Hvis du ikke slår dette til, skal du manuelt tilføje de Twitter kontakter i Friendica, som du gerne vil se opslag fra her."
#: twitter.php:395
msgid "Twitter Import/Export/Mirror"
msgstr "Twitter Import/Eksport/Spejl"
#: twitter.php:547
msgid ""
"Please connect a Twitter account in your Social Network settings to import "
"Twitter posts."
msgstr "Forbind venligst en Twitter konto i dine Sociale Netværk indstiliinger for at importere Twitter opslag."
#: twitter.php:554
msgid "Twitter post not found."
msgstr "Twitter opslag kunne ikke opstøves."
#: twitter.php:914
msgid "Save Settings"
msgstr "Gem indstillinger"
#: twitter.php:916
msgid "Consumer key"
msgstr "\"Consumer\" nøgle"
#: twitter.php:917
msgid "Consumer secret"
msgstr "\"Consumer\" hemmelighed"
#: twitter.php:1113
#, php-format
msgid "%s on Twitter"
msgstr "%s på Twitter"

View file

@ -0,0 +1,32 @@
<?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['Post to Twitter'] = 'Læg op på Twitter';
$a->strings['You submitted an empty PIN, please Sign In with Twitter again to get a new one.'] = 'Du indsendte en tom PIN, log venligst ind med Twitter igen og få en ny en.';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Intet "consumer key pair" fundet for Twitter. Kontakt venligst din sides administrator.';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'På denne Friendica instans er Twitter-tilføjelsen slået til, men du har ikke forbundet din konto til din Twitter-konto endnu. For at gøre det, skal du klikke på knappen herunder for at få en PIN fra Twitter, som du så skal kopiere ind i input-boksen og indsende . Det er kun dine <strong>offentlige</strong> opslag som vil blive lagt op på Twitter.';
$a->strings['Log in with Twitter'] = 'Log ind med Twitter';
$a->strings['Copy the PIN from Twitter here'] = 'Kopier din PIN fra Twitter ind her';
$a->strings['An error occured: '] = 'Der opstod en fejl:';
$a->strings['Currently connected to: <a href="https://twitter.com/%1$s" target="_twitter">%1$s</a>'] = 'I øjeblikket forbundet til: <a href="https://twitter.com/%1$s" target="_twitter">%1$s</a>';
$a->strings['<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '<strong>Note</strong>: Grundet dine privatlivsindstillinger (<em>Skjul dine profildetaljer fra ukendte besøgende?</em>), vil linket, som potentielt kan være inkluderet i offentlige opslag på Twitter, lede tilbage til en blank side som informerer den besøgende om at adgang til din profil er begrænset.';
$a->strings['Invalid Twitter info'] = 'Ugyldig Twitter information';
$a->strings['Disconnect'] = 'Afbryd forbindelsen';
$a->strings['Allow posting to Twitter'] = 'Tillad at lave opslag på Twitter';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = 'Hvis aktiveret, kan alle dine <strong>offentlige</strong> opslag blive lagt op på den associerede Twitter konto. Du kan vælge at gøre dette automatisk (her), eller separat for hvert opslag in valgmulighederne når du skriver opslaget.';
$a->strings['Send public postings to Twitter by default'] = 'Send som standard offentlige opslag til Twitter';
$a->strings['Mirror all posts from twitter that are no replies'] = 'Spejl alle opslag fra Twitter som ikke er svar';
$a->strings['Import the remote timeline'] = 'Importér den eksterne tidslinje';
$a->strings['Automatically create contacts'] = 'Opret automatisk kontakter';
$a->strings['This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here.'] = 'Dette vil automatisk skabe en kontakt i Friendica, så snart du modtager en besked fra en eksisterende kontakt via Twitter-netværket. Hvis du ikke slår dette til, skal du manuelt tilføje de Twitter kontakter i Friendica, som du gerne vil se opslag fra her.';
$a->strings['Twitter Import/Export/Mirror'] = 'Twitter Import/Eksport/Spejl';
$a->strings['Please connect a Twitter account in your Social Network settings to import Twitter posts.'] = 'Forbind venligst en Twitter konto i dine Sociale Netværk indstiliinger for at importere Twitter opslag.';
$a->strings['Twitter post not found.'] = 'Twitter opslag kunne ikke opstøves.';
$a->strings['Save Settings'] = 'Gem indstillinger';
$a->strings['Consumer key'] = '"Consumer" nøgle';
$a->strings['Consumer secret'] = '"Consumer" hemmelighed';
$a->strings['%s on Twitter'] = '%s på Twitter';

View file

@ -0,0 +1,164 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
# Translators:
# Till Mohr <tmtrfx@till-mohr.de>, 2021
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2014-2015
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2018,2020-2022
# Ulf Rompe <transifex.com@rompe.org>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-11-13 10:15+0000\n"
"PO-Revision-Date: 2014-06-23 12:58+0000\n"
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2018,2020-2022\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"
#: twitter.php:216
msgid "Post to Twitter"
msgstr "Auf Twitter veröffentlichen"
#: twitter.php:263
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr "Du hast keine PIN übertragen. Bitte melde dich erneut bei Twitter an, um eine neue PIN zu erhalten."
#: twitter.php:330
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "Kein Consumer-Schlüsselpaar für Twitter gefunden. Bitte wende dich an den Administrator der Seite."
#: twitter.php:343
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "Auf diesem Friendica-Server wurde das Twitter-Addon aktiviert, aber du hast deinen Account noch nicht mit deinem Twitter-Account verbunden. Klicke dazu auf die Schaltfläche unten. Du erhältst dann eine PIN von Twitter, die du in das Eingabefeld unten einfügst. Denk daran, den Senden-Knopf zu drücken! Nur <strong>öffentliche</strong> Beiträge werden bei Twitter veröffentlicht."
#: twitter.php:344
msgid "Log in with Twitter"
msgstr "bei Twitter anmelden"
#: twitter.php:346
msgid "Copy the PIN from Twitter here"
msgstr "Kopiere die Twitter-PIN hierher"
#: twitter.php:354 twitter.php:399
msgid "An error occured: "
msgstr "Ein Fehler ist aufgetreten:"
#: twitter.php:368
#, php-format
msgid ""
"Currently connected to: <a href=\"https://twitter.com/%1$s\" "
"target=\"_twitter\">%1$s</a>"
msgstr "Derzeit verbunden mit: <a href=\"https://twitter.com/%1$s\" target=\"_twitter\">%1$s</a>"
#: twitter.php:374
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Hinweis</strong>: Aufgrund deiner Privatsphären-Einstellungen (<em>Profil-Details vor unbekannten Betrachtern verbergen?</em>) wird der Link, der eventuell an deinen Twitter-Beitrag angehängt wird, um auf den Originalbeitrag zu verweisen, den Betrachter auf eine leere Seite führen, die ihn darüber informiert, dass der Zugriff eingeschränkt wurde."
#: twitter.php:381
msgid "Invalid Twitter info"
msgstr "Ungültige Twitter Informationen"
#: twitter.php:382
msgid "Disconnect"
msgstr "Trennen"
#: twitter.php:387
msgid "Allow posting to Twitter"
msgstr "Veröffentlichung bei Twitter erlauben"
#: twitter.php:387
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "Wenn aktiviert, können all deine <strong>öffentlichen</strong> Einträge auf dem verbundenen Twitter-Konto veröffentlicht werden. Du kannst dies (hier) als Standardverhalten einstellen oder beim Schreiben eines Beitrags in den Beitragsoptionen festlegen."
#: twitter.php:388
msgid "Send public postings to Twitter by default"
msgstr "Veröffentliche öffentliche Beiträge standardmäßig bei Twitter"
#: twitter.php:389
msgid "Use threads instead of truncating the content"
msgstr "Verwende Threads anstelle den Inhalt zu kürzen"
#: twitter.php:390
msgid "Mirror all posts from twitter that are no replies"
msgstr "Spiegle alle Beiträge von Twitter, die keine Antworten sind"
#: twitter.php:391
msgid "Import the remote timeline"
msgstr "Importiere die Remote-Zeitleiste"
#: twitter.php:392
msgid "Automatically create contacts"
msgstr "Automatisch Kontakte anlegen"
#: twitter.php:392
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here."
msgstr "Mit dieser Option wird automatisch ein Kontakt bei Friendica angelegt, wenn du eine Nachricht von einem bestehenden Kontakt auf Twitter erhältst. Ist die Option nicht aktiv, musst du manuell Kontakte für diejenigen deiner Twitter-Kontakte anlegen, deren Nachrichten du auf Friendica lesen möchtest."
#: twitter.php:393
msgid "Follow in fediverse"
msgstr "Im Fediverse folgen"
#: twitter.php:393
msgid ""
"Automatically subscribe to the contact in the fediverse, when a fediverse "
"account is mentioned in name or description and we are following the Twitter"
" contact."
msgstr "Hat ein Twitter Kontakt eine Profiladresse im Fediverse im Namen oder der Beschreibung genannt, wird dieser automatisch gefolgt."
#: twitter.php:406
msgid "Twitter Import/Export/Mirror"
msgstr "Twitter-Import/Export/Spiegeln"
#: twitter.php:558
msgid ""
"Please connect a Twitter account in your Social Network settings to import "
"Twitter posts."
msgstr "Bitte verbinde deinen Twitter Account in den Einstellungen zu den Soziale Netzwerken damit deine Twitter Beiträge importiert werden."
#: twitter.php:565
msgid "Twitter post not found."
msgstr "Beiträge auf Twitter nicht gefunden."
#: twitter.php:965
msgid "Save Settings"
msgstr "Einstellungen speichern"
#: twitter.php:967
msgid "Consumer key"
msgstr "Consumer Key"
#: twitter.php:968
msgid "Consumer secret"
msgstr "Consumer Secret"
#: twitter.php:1167
#, php-format
msgid "%s on Twitter"
msgstr "%s auf Twitter"

View file

@ -0,0 +1,35 @@
<?php
if(! function_exists("string_plural_select_de")) {
function string_plural_select_de($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Post to Twitter'] = 'Auf Twitter veröffentlichen';
$a->strings['You submitted an empty PIN, please Sign In with Twitter again to get a new one.'] = 'Du hast keine PIN übertragen. Bitte melde dich erneut bei Twitter an, um eine neue PIN zu erhalten.';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Kein Consumer-Schlüsselpaar für Twitter gefunden. Bitte wende dich an den Administrator der Seite.';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'Auf diesem Friendica-Server wurde das Twitter-Addon aktiviert, aber du hast deinen Account noch nicht mit deinem Twitter-Account verbunden. Klicke dazu auf die Schaltfläche unten. Du erhältst dann eine PIN von Twitter, die du in das Eingabefeld unten einfügst. Denk daran, den Senden-Knopf zu drücken! Nur <strong>öffentliche</strong> Beiträge werden bei Twitter veröffentlicht.';
$a->strings['Log in with Twitter'] = 'bei Twitter anmelden';
$a->strings['Copy the PIN from Twitter here'] = 'Kopiere die Twitter-PIN hierher';
$a->strings['An error occured: '] = 'Ein Fehler ist aufgetreten:';
$a->strings['Currently connected to: <a href="https://twitter.com/%1$s" target="_twitter">%1$s</a>'] = 'Derzeit verbunden mit: <a href="https://twitter.com/%1$s" target="_twitter">%1$s</a>';
$a->strings['<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '<strong>Hinweis</strong>: Aufgrund deiner Privatsphären-Einstellungen (<em>Profil-Details vor unbekannten Betrachtern verbergen?</em>) wird der Link, der eventuell an deinen Twitter-Beitrag angehängt wird, um auf den Originalbeitrag zu verweisen, den Betrachter auf eine leere Seite führen, die ihn darüber informiert, dass der Zugriff eingeschränkt wurde.';
$a->strings['Invalid Twitter info'] = 'Ungültige Twitter Informationen';
$a->strings['Disconnect'] = 'Trennen';
$a->strings['Allow posting to Twitter'] = 'Veröffentlichung bei Twitter erlauben';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = 'Wenn aktiviert, können all deine <strong>öffentlichen</strong> Einträge auf dem verbundenen Twitter-Konto veröffentlicht werden. Du kannst dies (hier) als Standardverhalten einstellen oder beim Schreiben eines Beitrags in den Beitragsoptionen festlegen.';
$a->strings['Send public postings to Twitter by default'] = 'Veröffentliche öffentliche Beiträge standardmäßig bei Twitter';
$a->strings['Use threads instead of truncating the content'] = 'Verwende Threads anstelle den Inhalt zu kürzen';
$a->strings['Mirror all posts from twitter that are no replies'] = 'Spiegle alle Beiträge von Twitter, die keine Antworten sind';
$a->strings['Import the remote timeline'] = 'Importiere die Remote-Zeitleiste';
$a->strings['Automatically create contacts'] = 'Automatisch Kontakte anlegen';
$a->strings['This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here.'] = 'Mit dieser Option wird automatisch ein Kontakt bei Friendica angelegt, wenn du eine Nachricht von einem bestehenden Kontakt auf Twitter erhältst. Ist die Option nicht aktiv, musst du manuell Kontakte für diejenigen deiner Twitter-Kontakte anlegen, deren Nachrichten du auf Friendica lesen möchtest.';
$a->strings['Follow in fediverse'] = 'Im Fediverse folgen';
$a->strings['Automatically subscribe to the contact in the fediverse, when a fediverse account is mentioned in name or description and we are following the Twitter contact.'] = 'Hat ein Twitter Kontakt eine Profiladresse im Fediverse im Namen oder der Beschreibung genannt, wird dieser automatisch gefolgt.';
$a->strings['Twitter Import/Export/Mirror'] = 'Twitter-Import/Export/Spiegeln';
$a->strings['Please connect a Twitter account in your Social Network settings to import Twitter posts.'] = 'Bitte verbinde deinen Twitter Account in den Einstellungen zu den Soziale Netzwerken damit deine Twitter Beiträge importiert werden.';
$a->strings['Twitter post not found.'] = 'Beiträge auf Twitter nicht gefunden.';
$a->strings['Save Settings'] = 'Einstellungen speichern';
$a->strings['Consumer key'] = 'Consumer Key';
$a->strings['Consumer secret'] = 'Consumer Secret';
$a->strings['%s on Twitter'] = '%s auf Twitter';

View file

@ -0,0 +1,134 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
# Translators:
# Andy H3 <andy@hubup.pro>, 2018-2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-06-02 10:25+0700\n"
"PO-Revision-Date: 2019-03-11 16:21+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"
#: twitter.php:195
msgid "Post to Twitter"
msgstr "Post to Twitter"
#: twitter.php:236
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr "You submitted an empty PIN, please sign in with Twitter again to get a new PIN."
#: twitter.php:263
msgid "Twitter settings updated."
msgstr "Twitter settings updated."
#: twitter.php:293 twitter.php:297
msgid "Twitter Import/Export/Mirror"
msgstr "Twitter Import/Export/Mirror"
#: twitter.php:304
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "No consumer key pair for Twitter found. Please contact your site administrator."
#: twitter.php:316
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "At this Friendica instance the Twitter addon was enabled, but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."
#: twitter.php:317
msgid "Log in with Twitter"
msgstr "Log in with Twitter"
#: twitter.php:319
msgid "Copy the PIN from Twitter here"
msgstr "Copy the PIN from Twitter here"
#: twitter.php:324 twitter.php:366 twitter.php:636
msgid "Save Settings"
msgstr "Save settings"
#: twitter.php:336
msgid "Currently connected to: "
msgstr "Currently connected to: "
#: twitter.php:337
msgid "Disconnect"
msgstr "Disconnect"
#: twitter.php:347
msgid "Allow posting to Twitter"
msgstr "Allow posting to Twitter"
#: twitter.php:347
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."
#: twitter.php:350
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."
#: twitter.php:353
msgid "Send public postings to Twitter by default"
msgstr "Send public postings to Twitter by default"
#: twitter.php:356
msgid "Mirror all posts from twitter that are no replies"
msgstr "Mirror all posts from twitter that are no replies"
#: twitter.php:359
msgid "Import the remote timeline"
msgstr "Import the remote timeline"
#: twitter.php:362
msgid "Automatically create contacts"
msgstr "Automatically create contacts"
#: twitter.php:362
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here. However if enabled, you cannot "
"merely remove a twitter contact from the Friendica contact list, as it will "
"recreate this contact when they post again."
msgstr "This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here. However if enabled, you cannot merely remove a twitter contact from the Friendica contact list, as it will recreate this contact when they post again."
#: twitter.php:614
msgid "Twitter post failed. Queued for retry."
msgstr "Twitter post failed. Queued for retry."
#: twitter.php:628
msgid "Settings updated."
msgstr "Settings updated."
#: twitter.php:638
msgid "Consumer key"
msgstr "Consumer key"
#: twitter.php:639
msgid "Consumer secret"
msgstr "Consumer secret"

View file

@ -0,0 +1,30 @@
<?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['Post to Twitter'] = 'Post to Twitter';
$a->strings['You submitted an empty PIN, please Sign In with Twitter again to get a new one.'] = 'You submitted an empty PIN, please sign in with Twitter again to get a new PIN.';
$a->strings['Twitter settings updated.'] = 'Twitter settings updated.';
$a->strings['Twitter Import/Export/Mirror'] = 'Twitter Import/Export/Mirror';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'No consumer key pair for Twitter found. Please contact your site administrator.';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'At this Friendica instance the Twitter addon was enabled, but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.';
$a->strings['Log in with Twitter'] = 'Log in with Twitter';
$a->strings['Copy the PIN from Twitter here'] = 'Copy the PIN from Twitter here';
$a->strings['Save Settings'] = 'Save settings';
$a->strings['Currently connected to: '] = 'Currently connected to: ';
$a->strings['Disconnect'] = 'Disconnect';
$a->strings['Allow posting to Twitter'] = 'Allow posting to Twitter';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = 'If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.';
$a->strings['<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.';
$a->strings['Send public postings to Twitter by default'] = 'Send public postings to Twitter by default';
$a->strings['Mirror all posts from twitter that are no replies'] = 'Mirror all posts from twitter that are no replies';
$a->strings['Import the remote timeline'] = 'Import the remote timeline';
$a->strings['Automatically create contacts'] = 'Automatically create contacts';
$a->strings['This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here. However if enabled, you cannot merely remove a twitter contact from the Friendica contact list, as it will recreate this contact when they post again.'] = 'This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here. However if enabled, you cannot merely remove a twitter contact from the Friendica contact list, as it will recreate this contact when they post again.';
$a->strings['Twitter post failed. Queued for retry.'] = 'Twitter post failed. Queued for retry.';
$a->strings['Settings updated.'] = 'Settings updated.';
$a->strings['Consumer key'] = 'Consumer key';
$a->strings['Consumer secret'] = 'Consumer secret';

View file

@ -0,0 +1,133 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
# Translators:
# Andy H3 <andy@hubup.pro>, 2018
# R C, 2018
# Spencer Dub <southwest23@gmail.com>, 2021
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-23 02:00-0400\n"
"PO-Revision-Date: 2021-01-14 00:51+0000\n"
"Last-Translator: Spencer Dub <southwest23@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"
#: twitter.php:189
msgid "Post to Twitter"
msgstr "Post to Twitter"
#: twitter.php:234
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr "You submitted an empty PIN, please sign in with Twitter again to get a new PIN."
#: twitter.php:291 twitter.php:295
msgid "Twitter Import/Export/Mirror"
msgstr "Twitter Import/Export/Mirror"
#: twitter.php:302
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "No consumer key pair for Twitter found. Please contact your site administrator."
#: twitter.php:314
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "This Friendica instance has enabled the Twitter addon, but you have not yet connected your Friendica account to your Twitter account. To do so, click the button below to get a PIN from Twitter. Copy the PIN into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."
#: twitter.php:315
msgid "Log in with Twitter"
msgstr "Log in with Twitter"
#: twitter.php:317
msgid "Copy the PIN from Twitter here"
msgstr "Copy the PIN from Twitter here"
#: twitter.php:322 twitter.php:377 twitter.php:757
msgid "Save Settings"
msgstr "Save settings"
#: twitter.php:324 twitter.php:379
msgid "An error occured: "
msgstr "An error occurred: "
#: twitter.php:341
msgid "Currently connected to: "
msgstr "Currently connected to: "
#: twitter.php:342 twitter.php:352
msgid "Disconnect"
msgstr "Disconnect"
#: twitter.php:359
msgid "Allow posting to Twitter"
msgstr "Allow posting to Twitter"
#: twitter.php:359
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "If enabled, all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."
#: twitter.php:362
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."
#: twitter.php:365
msgid "Send public postings to Twitter by default"
msgstr "Send public postings to Twitter by default"
#: twitter.php:368
msgid "Mirror all posts from twitter that are no replies"
msgstr "Mirror all posts from Twitter that are not replies"
#: twitter.php:371
msgid "Import the remote timeline"
msgstr "Import the remote timeline"
#: twitter.php:374
msgid "Automatically create contacts"
msgstr "Automatically create contacts"
#: twitter.php:374
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here. However if enabled, you cannot "
"merely remove a twitter contact from the Friendica contact list, as it will "
"recreate this contact when they post again."
msgstr "This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here. However if enabled, you cannot merely remove a Twitter contact from the Friendica contact list, as it will recreate this contact when they post again."
#: twitter.php:759
msgid "Consumer key"
msgstr "Consumer key"
#: twitter.php:760
msgid "Consumer secret"
msgstr "Consumer secret"
#: twitter.php:945
#, php-format
msgid "%s on Twitter"
msgstr "%s on Twitter"

View file

@ -0,0 +1,29 @@
<?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['Post to Twitter'] = 'Post to Twitter';
$a->strings['You submitted an empty PIN, please Sign In with Twitter again to get a new one.'] = 'You submitted an empty PIN, please sign in with Twitter again to get a new PIN.';
$a->strings['Twitter Import/Export/Mirror'] = 'Twitter Import/Export/Mirror';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'No consumer key pair for Twitter found. Please contact your site administrator.';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'This Friendica instance has enabled the Twitter addon, but you have not yet connected your Friendica account to your Twitter account. To do so, click the button below to get a PIN from Twitter. Copy the PIN into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.';
$a->strings['Log in with Twitter'] = 'Log in with Twitter';
$a->strings['Copy the PIN from Twitter here'] = 'Copy the PIN from Twitter here';
$a->strings['Save Settings'] = 'Save settings';
$a->strings['An error occured: '] = 'An error occurred: ';
$a->strings['Currently connected to: '] = 'Currently connected to: ';
$a->strings['Disconnect'] = 'Disconnect';
$a->strings['Allow posting to Twitter'] = 'Allow posting to Twitter';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = 'If enabled, all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.';
$a->strings['<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.';
$a->strings['Send public postings to Twitter by default'] = 'Send public postings to Twitter by default';
$a->strings['Mirror all posts from twitter that are no replies'] = 'Mirror all posts from Twitter that are not replies';
$a->strings['Import the remote timeline'] = 'Import the remote timeline';
$a->strings['Automatically create contacts'] = 'Automatically create contacts';
$a->strings['This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here. However if enabled, you cannot merely remove a twitter contact from the Friendica contact list, as it will recreate this contact when they post again.'] = 'This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here. However if enabled, you cannot merely remove a Twitter contact from the Friendica contact list, as it will recreate this contact when they post again.';
$a->strings['Consumer key'] = 'Consumer key';
$a->strings['Consumer secret'] = 'Consumer secret';
$a->strings['%s on Twitter'] = '%s on Twitter';

View file

@ -0,0 +1,20 @@
<?php
$a->strings["Post to Twitter"] = "Afiŝi ĉe Twitter";
$a->strings["Twitter settings updated."] = "Ĝisdatigis Twitter agordojn.";
$a->strings["Twitter Posting Settings"] = "Agordoj por afiŝi ĉe Twitter";
$a->strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Ne trovis klientajn ŝlosilojn por Twitter. Bonvolu kontakti vian retejan administranton.";
$a->strings["At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Je ĉi tiu Friendica retejo, la Twitter kromprogramo jam estas ŝaltita, sed via konto anokoraŭ ne estas konektita kun via Twitter konto. Por fari tion, klaku la supran butonon por atingi nombrokodon de Twitter, kion vi kopiu en la supran eniga ĉelo, kaj sendu la formularon. Nur viaj <strong>publikaj</strong> afiŝoj estas plusendota al Twitter. ";
$a->strings["Log in with Twitter"] = "Ensaluti kun Twitter";
$a->strings["Copy the PIN from Twitter here"] = "Alglui la PIN de Twitter ĉi tie";
$a->strings["Submit"] = "Sendi";
$a->strings["Currently connected to: "] = "Konektita al:";
$a->strings["If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Kiam ŝaltita, ĉiuj <strong>publikaj</strong> afiŝoj de vi ankaŭ eblas esti afiŝota al la asociigita Twitter konto. Vi povas elekti ĝin defaŭlte (ĉi tie) au unuope por ĉiuj afiŝoj kiam vi skribos ilin.";
$a->strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Averto</strong>: Laŭ viaj privatecaj agordoj (<em>Kaŝi viajn profilajn detalojn al nekonataj spektantoj?</em>), la ligilo en publikaj afiŝoj plusendata al Twitter gvidas vizitontojn al malplena paĝo sciigante ilin ke atingo al via profilo estas lmitigita.";
$a->strings["Allow posting to Twitter"] = "Permesi afiŝojn al Twitter";
$a->strings["Send public postings to Twitter by default"] = "Defaŭlte sendi publikajn afiŝojn al Twitter";
$a->strings["Send linked #-tags and @-names to Twitter"] = "Sendi ligitajn #-etikedojn kaj @-nomon al Twitter";
$a->strings["Clear OAuth configuration"] = "Forviŝi OAuth agordojn";
$a->strings["Settings updated."] = "Agordoj ĝisdatigita.";
$a->strings["Consumer key"] = "Ŝlosilo de Kliento";
$a->strings["Consumer secret"] = "Sekreto de Kliento";

View file

@ -0,0 +1,133 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
# Translators:
# Albert, 2016
# Julio Cova, 2019
# 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:16+0100\n"
"PO-Revision-Date: 2021-04-06 02:17+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"
#: twitter.php:189
msgid "Post to Twitter"
msgstr "Entrada para Twitter"
#: twitter.php:234
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr "Envió un PIN vacío, inicie sesión con Twitter nuevamente para obtener uno nuevo."
#: twitter.php:291 twitter.php:295
msgid "Twitter Import/Export/Mirror"
msgstr "Importación / Exportación / Espejo de Twitter"
#: twitter.php:302
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "No se ha encontrado ningún par de claves de consumidor para Twitter. Por favor, póngase en contacto con el administrador de su sitio. "
#: twitter.php:314
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "En esta instancia de Friendica, se habilitó el complemento de Twitter, pero aún no ha conectado su cuenta a su cuenta de Twitter. Para hacerlo, haga clic en el botón de abajo para obtener un PIN de Twitter que debe copiar en el cuadro de entrada a continuación y enviar el formulario. Solo sus publicaciones de <strong> public </strong> se publicarán en Twitter."
#: twitter.php:315
msgid "Log in with Twitter"
msgstr "Iniciar sesión con Twitter"
#: twitter.php:317
msgid "Copy the PIN from Twitter here"
msgstr "Copie el PIN de Twitter aquí"
#: twitter.php:322 twitter.php:377 twitter.php:768
msgid "Save Settings"
msgstr "Guardar ajustes"
#: twitter.php:324 twitter.php:379
msgid "An error occured: "
msgstr "Ocurrió un error:"
#: twitter.php:341
msgid "Currently connected to: "
msgstr "Moneda conectada a:"
#: twitter.php:342 twitter.php:352
msgid "Disconnect"
msgstr "Desconectar"
#: twitter.php:359
msgid "Allow posting to Twitter"
msgstr "Permitir publicar en Twitter"
#: twitter.php:359
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "Si habilita todas sus publicaciones <strong>públicas</strong> pueden ser publicadas en la cuenta de Twitter asociada. Puede elegir hacer eso por defecto (aquí) o por cada publicación por separado en las opciones de entrada cuando escriba la entrada."
#: twitter.php:362
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Nota</strong>: Debido a tu privacidad (<em>Ocultar tu perfil de desconocidos?</em>) el enlace potencialmente incluido en publicaciones públicas retransmitidas a Twitter llevará al visitante a una página en blanco que le informa que el acceso a su perfil ha sido restringido."
#: twitter.php:365
msgid "Send public postings to Twitter by default"
msgstr "Enviar publicaciones públicas a Twitter por defecto"
#: twitter.php:368
msgid "Mirror all posts from twitter that are no replies"
msgstr "Refleje todas las publicaciones de Twitter que no sean respuestas"
#: twitter.php:371
msgid "Import the remote timeline"
msgstr "Importar la línea de tiempo remota"
#: twitter.php:374
msgid "Automatically create contacts"
msgstr "Crea contactos automáticamente"
#: twitter.php:374
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here. However if enabled, you cannot "
"merely remove a twitter contact from the Friendica contact list, as it will "
"recreate this contact when they post again."
msgstr "Esto creará automáticamente un contacto en Friendica tan pronto como reciba un mensaje de un contacto existente a través de la red de Twitter. Si no habilita esto, debe agregar manualmente los contactos de Twitter en Friendica de los que le gustaría ver las publicaciones aquí. Sin embargo, si está habilitado, no puede simplemente eliminar un contacto de Twitter de la lista de contactos de Friendica, ya que volverá a crear este contacto cuando vuelva a publicar."
#: twitter.php:770
msgid "Consumer key"
msgstr "Clave de consumidor"
#: twitter.php:771
msgid "Consumer secret"
msgstr "Secreto de consumidor"
#: twitter.php:967
#, php-format
msgid "%s on Twitter"
msgstr "%s en Twitter"

View file

@ -0,0 +1,29 @@
<?php
if(! function_exists("string_plural_select_es")) {
function string_plural_select_es($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Post to Twitter'] = 'Entrada para Twitter';
$a->strings['You submitted an empty PIN, please Sign In with Twitter again to get a new one.'] = 'Envió un PIN vacío, inicie sesión con Twitter nuevamente para obtener uno nuevo.';
$a->strings['Twitter Import/Export/Mirror'] = 'Importación / Exportación / Espejo de Twitter';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'No se ha encontrado ningún par de claves de consumidor para Twitter. Por favor, póngase en contacto con el administrador de su sitio. ';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'En esta instancia de Friendica, se habilitó el complemento de Twitter, pero aún no ha conectado su cuenta a su cuenta de Twitter. Para hacerlo, haga clic en el botón de abajo para obtener un PIN de Twitter que debe copiar en el cuadro de entrada a continuación y enviar el formulario. Solo sus publicaciones de <strong> public </strong> se publicarán en Twitter.';
$a->strings['Log in with Twitter'] = 'Iniciar sesión con Twitter';
$a->strings['Copy the PIN from Twitter here'] = 'Copie el PIN de Twitter aquí';
$a->strings['Save Settings'] = 'Guardar ajustes';
$a->strings['An error occured: '] = 'Ocurrió un error:';
$a->strings['Currently connected to: '] = 'Moneda conectada a:';
$a->strings['Disconnect'] = 'Desconectar';
$a->strings['Allow posting to Twitter'] = 'Permitir publicar en Twitter';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = 'Si habilita todas sus publicaciones <strong>públicas</strong> pueden ser publicadas en la cuenta de Twitter asociada. Puede elegir hacer eso por defecto (aquí) o por cada publicación por separado en las opciones de entrada cuando escriba la entrada.';
$a->strings['<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '<strong>Nota</strong>: Debido a tu privacidad (<em>Ocultar tu perfil de desconocidos?</em>) el enlace potencialmente incluido en publicaciones públicas retransmitidas a Twitter llevará al visitante a una página en blanco que le informa que el acceso a su perfil ha sido restringido.';
$a->strings['Send public postings to Twitter by default'] = 'Enviar publicaciones públicas a Twitter por defecto';
$a->strings['Mirror all posts from twitter that are no replies'] = 'Refleje todas las publicaciones de Twitter que no sean respuestas';
$a->strings['Import the remote timeline'] = 'Importar la línea de tiempo remota';
$a->strings['Automatically create contacts'] = 'Crea contactos automáticamente';
$a->strings['This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here. However if enabled, you cannot merely remove a twitter contact from the Friendica contact list, as it will recreate this contact when they post again.'] = 'Esto creará automáticamente un contacto en Friendica tan pronto como reciba un mensaje de un contacto existente a través de la red de Twitter. Si no habilita esto, debe agregar manualmente los contactos de Twitter en Friendica de los que le gustaría ver las publicaciones aquí. Sin embargo, si está habilitado, no puede simplemente eliminar un contacto de Twitter de la lista de contactos de Friendica, ya que volverá a crear este contacto cuando vuelva a publicar.';
$a->strings['Consumer key'] = 'Clave de consumidor';
$a->strings['Consumer secret'] = 'Secreto de consumidor';
$a->strings['%s on Twitter'] = '%s en Twitter';

View file

@ -0,0 +1,125 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
# Translators:
# Kris, 2018
# Kris, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-02-08 07:07+0100\n"
"PO-Revision-Date: 2018-05-12 13:21+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"
#: twitter.php:193
msgid "Post to Twitter"
msgstr "Lähetä Twitteriin"
#: twitter.php:234
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr ""
#: twitter.php:261
msgid "Twitter settings updated."
msgstr "Twitter -asetukset päivitetty."
#: twitter.php:291 twitter.php:295
msgid "Twitter Import/Export/Mirror"
msgstr "Twitter tuonti/vienti/peili"
#: twitter.php:302
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "Twitter -kuluttajan avainparia ei löytynyt. Ota yhteyttä sivuston ylläpitäjään."
#: twitter.php:314
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr ""
#: twitter.php:315
msgid "Log in with Twitter"
msgstr "Kirjaudu sisään Twitterillä"
#: twitter.php:317
msgid "Copy the PIN from Twitter here"
msgstr ""
#: twitter.php:322 twitter.php:364 twitter.php:642
msgid "Save Settings"
msgstr "Tallenna asetukset"
#: twitter.php:334
msgid "Currently connected to: "
msgstr ""
#: twitter.php:335
msgid "Disconnect"
msgstr "Katkaise yhteys"
#: twitter.php:345
msgid "Allow posting to Twitter"
msgstr "Salli julkaisu Twitteriin"
#: twitter.php:345
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr ""
#: twitter.php:348
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr ""
#: twitter.php:351
msgid "Send public postings to Twitter by default"
msgstr "Lähetä oletuksena kaikki julkiset julkaisut Twitteriin"
#: twitter.php:354
msgid "Mirror all posts from twitter that are no replies"
msgstr "Peilaa kaikki julkaisut Twitteristä jotka eivät ole vastauksia"
#: twitter.php:357
msgid "Import the remote timeline"
msgstr "Tuo etäaikajana"
#: twitter.php:360
msgid "Automatically create contacts"
msgstr "Luo kontaktit automaattisesti"
#: twitter.php:619
msgid "Twitter post failed. Queued for retry."
msgstr "Twitter -julkaisu epäonnistui. Jonossa uudelleenyritykseen."
#: twitter.php:634
msgid "Settings updated."
msgstr "Asetukset päivitetty."
#: twitter.php:644
msgid "Consumer key"
msgstr "Kuluttajan avain"
#: twitter.php:645
msgid "Consumer secret"
msgstr "Kuluttajasalaisuus"

View file

@ -0,0 +1,23 @@
<?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['Post to Twitter'] = 'Lähetä Twitteriin';
$a->strings['Twitter settings updated.'] = 'Twitter -asetukset päivitetty.';
$a->strings['Twitter Import/Export/Mirror'] = 'Twitter tuonti/vienti/peili';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Twitter -kuluttajan avainparia ei löytynyt. Ota yhteyttä sivuston ylläpitäjään.';
$a->strings['Log in with Twitter'] = 'Kirjaudu sisään Twitterillä';
$a->strings['Save Settings'] = 'Tallenna asetukset';
$a->strings['Disconnect'] = 'Katkaise yhteys';
$a->strings['Allow posting to Twitter'] = 'Salli julkaisu Twitteriin';
$a->strings['Send public postings to Twitter by default'] = 'Lähetä oletuksena kaikki julkiset julkaisut Twitteriin';
$a->strings['Mirror all posts from twitter that are no replies'] = 'Peilaa kaikki julkaisut Twitteristä jotka eivät ole vastauksia';
$a->strings['Import the remote timeline'] = 'Tuo etäaikajana';
$a->strings['Automatically create contacts'] = 'Luo kontaktit automaattisesti';
$a->strings['Twitter post failed. Queued for retry.'] = 'Twitter -julkaisu epäonnistui. Jonossa uudelleenyritykseen.';
$a->strings['Settings updated.'] = 'Asetukset päivitetty.';
$a->strings['Consumer key'] = 'Kuluttajan avain';
$a->strings['Consumer secret'] = 'Kuluttajasalaisuus';

View file

@ -0,0 +1,163 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
# Translators:
# Nicolas Derive, 2022
# ea1cd8241cb389ffb6f92bc6891eff5d_dc12308 <70dced5587d47e18d88f9298024d96f8_93383>, 2015
# StefOfficiel <pichard.stephane@free.fr>, 2015
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-11-13 10:15+0000\n"
"PO-Revision-Date: 2014-06-23 12:58+0000\n"
"Last-Translator: Nicolas Derive, 2022\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"
#: twitter.php:216
msgid "Post to Twitter"
msgstr "Publier sur Twitter"
#: twitter.php:263
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr "Vous avez envoyé un PIN vide, veuillez vous connecter à Twitter à nouveau pour en avoir un autre."
#: twitter.php:330
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "Aucune clé d'application pour Twitter n'a été trouvée. Merci de contacter l'administrateur de votre site."
#: twitter.php:343
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "Sur cette instance de Friendica, le connecteur Twitter a été activé, mais vous n'avez pas encore connecté votre compte local à votre compte Twitter. Pour ce faire, cliquer sur le bouton ci-dessous. Vous obtiendrez alors un 'PIN' de Twitter, que vous devrez copier dans le champ ci-dessous, puis soumettre le formulaire. Seules vos publications <strong>publiques</strong> seront transmises à Twitter."
#: twitter.php:344
msgid "Log in with Twitter"
msgstr "Se connecter avec Twitter"
#: twitter.php:346
msgid "Copy the PIN from Twitter here"
msgstr "Copier le PIN de Twitter ici"
#: twitter.php:354 twitter.php:399
msgid "An error occured: "
msgstr "Une erreur est survenue :"
#: twitter.php:368
#, php-format
msgid ""
"Currently connected to: <a href=\"https://twitter.com/%1$s\" "
"target=\"_twitter\">%1$s</a>"
msgstr "Actuellement connecté à : <a href=\"https://twitter.com/%1$s\" target=\"_twitter\">%1$s</a>"
#: twitter.php:374
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Note</strong>: Du fait de vos paramètres de vie privée (<em>Cacher les détails de votre profil des visiteurs inconnus?</em>), le lien potentiellement inclus dans les publications publiques relayées vers Twitter conduira les visiteurs vers une page blanche les informant que leur accès à votre profil a été restreint."
#: twitter.php:381
msgid "Invalid Twitter info"
msgstr "Informations Twitter invalides"
#: twitter.php:382
msgid "Disconnect"
msgstr "Se déconnecter"
#: twitter.php:387
msgid "Allow posting to Twitter"
msgstr "Autoriser la publication sur Twitter"
#: twitter.php:387
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "En cas d'activation, toutes vos publications <strong>publiques</strong> seront transmises au compte Twitter associé. Vous pourrez choisir de le faire par défaut (ici), ou bien pour chaque publication séparément lors de sa rédaction."
#: twitter.php:388
msgid "Send public postings to Twitter by default"
msgstr "Envoyer par défaut les publications publiques sur Twitter"
#: twitter.php:389
msgid "Use threads instead of truncating the content"
msgstr "Utiliser des fils de discussion (threads) au lieu de tronquer le contenu"
#: twitter.php:390
msgid "Mirror all posts from twitter that are no replies"
msgstr "Synchroniser toutes les publications de Twitter qui ne sont pas des réponses"
#: twitter.php:391
msgid "Import the remote timeline"
msgstr "Importer la Timeline distante"
#: twitter.php:392
msgid "Automatically create contacts"
msgstr "Créer automatiquement les contacts"
#: twitter.php:392
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here."
msgstr "Cela va automatiquement créer un contact dans Friendica dès qu'une publication d'un contact existant est reçue de Twitter. Si vous n'activez pas ceci, vous devrez ajouter manuellement ces contacts dans Friendica afin d'y voir leurs publications."
#: twitter.php:393
msgid "Follow in fediverse"
msgstr "Suivre dans le fediverse"
#: twitter.php:393
msgid ""
"Automatically subscribe to the contact in the fediverse, when a fediverse "
"account is mentioned in name or description and we are following the Twitter"
" contact."
msgstr "Suivre automatiquement le contact dans le fediverse, quand un compte fediverse est mentionné dans le nom ou la description et que le contact Twitter est suivi."
#: twitter.php:406
msgid "Twitter Import/Export/Mirror"
msgstr "Importation/Exportation/Synchronisation avec Twitter"
#: twitter.php:558
msgid ""
"Please connect a Twitter account in your Social Network settings to import "
"Twitter posts."
msgstr "Merci de connecter un compte Twitter depuis vos Paramètres de réseaux sociaux afin d'importer les publications Twitter."
#: twitter.php:565
msgid "Twitter post not found."
msgstr "Publication Twitter non trouvée."
#: twitter.php:965
msgid "Save Settings"
msgstr "Sauvegarder les paramètres"
#: twitter.php:967
msgid "Consumer key"
msgstr "Consumer key"
#: twitter.php:968
msgid "Consumer secret"
msgstr "Consumer secret"
#: twitter.php:1167
#, php-format
msgid "%s on Twitter"
msgstr "%s sur Twitter"

View file

@ -0,0 +1,35 @@
<?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['Post to Twitter'] = 'Publier sur Twitter';
$a->strings['You submitted an empty PIN, please Sign In with Twitter again to get a new one.'] = 'Vous avez envoyé un PIN vide, veuillez vous connecter à Twitter à nouveau pour en avoir un autre.';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Aucune clé d\'application pour Twitter n\'a été trouvée. Merci de contacter l\'administrateur de votre site.';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'Sur cette instance de Friendica, le connecteur Twitter a été activé, mais vous n\'avez pas encore connecté votre compte local à votre compte Twitter. Pour ce faire, cliquer sur le bouton ci-dessous. Vous obtiendrez alors un \'PIN\' de Twitter, que vous devrez copier dans le champ ci-dessous, puis soumettre le formulaire. Seules vos publications <strong>publiques</strong> seront transmises à Twitter.';
$a->strings['Log in with Twitter'] = 'Se connecter avec Twitter';
$a->strings['Copy the PIN from Twitter here'] = 'Copier le PIN de Twitter ici';
$a->strings['An error occured: '] = 'Une erreur est survenue :';
$a->strings['Currently connected to: <a href="https://twitter.com/%1$s" target="_twitter">%1$s</a>'] = 'Actuellement connecté à : <a href="https://twitter.com/%1$s" target="_twitter">%1$s</a>';
$a->strings['<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '<strong>Note</strong>: Du fait de vos paramètres de vie privée (<em>Cacher les détails de votre profil des visiteurs inconnus?</em>), le lien potentiellement inclus dans les publications publiques relayées vers Twitter conduira les visiteurs vers une page blanche les informant que leur accès à votre profil a été restreint.';
$a->strings['Invalid Twitter info'] = 'Informations Twitter invalides';
$a->strings['Disconnect'] = 'Se déconnecter';
$a->strings['Allow posting to Twitter'] = 'Autoriser la publication sur Twitter';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = 'En cas d\'activation, toutes vos publications <strong>publiques</strong> seront transmises au compte Twitter associé. Vous pourrez choisir de le faire par défaut (ici), ou bien pour chaque publication séparément lors de sa rédaction.';
$a->strings['Send public postings to Twitter by default'] = 'Envoyer par défaut les publications publiques sur Twitter';
$a->strings['Use threads instead of truncating the content'] = 'Utiliser des fils de discussion (threads) au lieu de tronquer le contenu';
$a->strings['Mirror all posts from twitter that are no replies'] = 'Synchroniser toutes les publications de Twitter qui ne sont pas des réponses';
$a->strings['Import the remote timeline'] = 'Importer la Timeline distante';
$a->strings['Automatically create contacts'] = 'Créer automatiquement les contacts';
$a->strings['This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here.'] = 'Cela va automatiquement créer un contact dans Friendica dès qu\'une publication d\'un contact existant est reçue de Twitter. Si vous n\'activez pas ceci, vous devrez ajouter manuellement ces contacts dans Friendica afin d\'y voir leurs publications.';
$a->strings['Follow in fediverse'] = 'Suivre dans le fediverse';
$a->strings['Automatically subscribe to the contact in the fediverse, when a fediverse account is mentioned in name or description and we are following the Twitter contact.'] = 'Suivre automatiquement le contact dans le fediverse, quand un compte fediverse est mentionné dans le nom ou la description et que le contact Twitter est suivi.';
$a->strings['Twitter Import/Export/Mirror'] = 'Importation/Exportation/Synchronisation avec Twitter';
$a->strings['Please connect a Twitter account in your Social Network settings to import Twitter posts.'] = 'Merci de connecter un compte Twitter depuis vos Paramètres de réseaux sociaux afin d\'importer les publications Twitter.';
$a->strings['Twitter post not found.'] = 'Publication Twitter non trouvée.';
$a->strings['Save Settings'] = 'Sauvegarder les paramètres';
$a->strings['Consumer key'] = 'Consumer key';
$a->strings['Consumer secret'] = 'Consumer secret';
$a->strings['%s on Twitter'] = '%s sur Twitter';

View file

@ -0,0 +1,161 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
# Translators:
# Balázs Úr, 2020-2022
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-11-13 10:15+0000\n"
"PO-Revision-Date: 2014-06-23 12:58+0000\n"
"Last-Translator: Balázs Úr, 2020-2022\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"
#: twitter.php:216
msgid "Post to Twitter"
msgstr "Beküldés a Twitterre"
#: twitter.php:263
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr "Üres PIN-kódot küldött be. Jelentkezzen be a Twitter használatával újra, hogy egy újat kapjon."
#: twitter.php:330
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "Nem találhatók felhasználói kulcspárok a Twitterhez. Vegye fel a kapcsolatot az oldal adminisztrátorával."
#: twitter.php:343
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "Ennél a Friendica példánynál a Twitter bővítmény engedélyezve lett, de még nem kapcsolta hozzá a fiókját a Twitter-fiókjához. Ehhez kattintson a lenti gombra, hogy kapjon egy PIN-kódot a Twittertől, amelyet a lenti beviteli mezőbe kell bemásolnia, majd el kell küldenie az űrlapot. Csak a <strong>nyilvános</strong> bejegyzései lesznek beküldve a Twitterre."
#: twitter.php:344
msgid "Log in with Twitter"
msgstr "Bejelentkezés Twitter használatával"
#: twitter.php:346
msgid "Copy the PIN from Twitter here"
msgstr "Másolja be ide a Twittertől kapott PIN-kódot"
#: twitter.php:354 twitter.php:399
msgid "An error occured: "
msgstr "Hiba történt: "
#: twitter.php:368
#, php-format
msgid ""
"Currently connected to: <a href=\"https://twitter.com/%1$s\" "
"target=\"_twitter\">%1$s</a>"
msgstr "Jelenleg ehhez kapcsolódott: <a href=\"https://twitter.com/%1$s\" target=\"_twitter\">%1$s</a>"
#: twitter.php:374
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Megjegyzés</strong>: az adatvédelmi beállításai miatt (<em>Elrejti a profilja részleteit az ismeretlen megtekintők elől?</em>) a Twitterre továbbított nyilvános beküldésekben vélhetően tartalmazott hivatkozás a látogatót egy üres oldalra fogja vezetni, amely arról tájékoztatja a látogatót, hogy a profiljához való hozzáférés korlátozva lett."
#: twitter.php:381
msgid "Invalid Twitter info"
msgstr "Érvénytelen Twitter-információk"
#: twitter.php:382
msgid "Disconnect"
msgstr "Leválasztás"
#: twitter.php:387
msgid "Allow posting to Twitter"
msgstr "Beküldés engedélyezése a Twitterre"
#: twitter.php:387
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "Ha engedélyezve van, akkor az összes <strong>nyilvános</strong> beküldés beküldhető a hozzárendelt Twitter-fiókba. Kiválaszthatja, hogy ezt alapértelmezetten szeretné-e (itt), vagy minden egyes beküldésnél különállóan a beküldési beállításokban, amikor megírja a bejegyzést."
#: twitter.php:388
msgid "Send public postings to Twitter by default"
msgstr "Nyilvános beküldések küldése a Twitterre alapértelmezetten"
#: twitter.php:389
msgid "Use threads instead of truncating the content"
msgstr "Szálak használata a tartalom csonkítása helyett"
#: twitter.php:390
msgid "Mirror all posts from twitter that are no replies"
msgstr "A Twittertől származó összes bejegyzés tükrözése, amelyek nem válaszok"
#: twitter.php:391
msgid "Import the remote timeline"
msgstr "A távoli idővonal importálása"
#: twitter.php:392
msgid "Automatically create contacts"
msgstr "Partnerek automatikus létrehozása"
#: twitter.php:392
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here."
msgstr "Ez automatikusan létre fog hozni egy partnert a Friendicán, amint üzenetet fogad egy meglévő partnertől a Twitter hálózaton keresztül. Ha ezt nem engedélyezi, akkor kézzel kell hozzáadnia azokat a Twitter-partnereket a Friendicában, akiktől bejegyzéseket szeretne látni itt."
#: twitter.php:393
msgid "Follow in fediverse"
msgstr "Követés a födiverzumban"
#: twitter.php:393
msgid ""
"Automatically subscribe to the contact in the fediverse, when a fediverse "
"account is mentioned in name or description and we are following the Twitter"
" contact."
msgstr "Automatikus feliratkozás a födiverzumban lévő partnerre, ha egy födiverzumfiókot említenek a névben vagy a leírásban, és követjük a Twitter-partnert."
#: twitter.php:406
msgid "Twitter Import/Export/Mirror"
msgstr "Twitter importálás, exportálás vagy tükrözés"
#: twitter.php:558
msgid ""
"Please connect a Twitter account in your Social Network settings to import "
"Twitter posts."
msgstr "Kapcsoljon hozzá egy Twitter-fiókot a közösségi hálózatok beállításában a Twitter-bejegyzések importálásához."
#: twitter.php:565
msgid "Twitter post not found."
msgstr "A Twitter-bejegyzés nem található."
#: twitter.php:965
msgid "Save Settings"
msgstr "Beállítások mentése"
#: twitter.php:967
msgid "Consumer key"
msgstr "Felhasználói kulcs"
#: twitter.php:968
msgid "Consumer secret"
msgstr "Felhasználói titok"
#: twitter.php:1167
#, php-format
msgid "%s on Twitter"
msgstr "%s a Twitteren"

View file

@ -0,0 +1,35 @@
<?php
if(! function_exists("string_plural_select_hu")) {
function string_plural_select_hu($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Post to Twitter'] = 'Beküldés a Twitterre';
$a->strings['You submitted an empty PIN, please Sign In with Twitter again to get a new one.'] = 'Üres PIN-kódot küldött be. Jelentkezzen be a Twitter használatával újra, hogy egy újat kapjon.';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Nem találhatók felhasználói kulcspárok a Twitterhez. Vegye fel a kapcsolatot az oldal adminisztrátorával.';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'Ennél a Friendica példánynál a Twitter bővítmény engedélyezve lett, de még nem kapcsolta hozzá a fiókját a Twitter-fiókjához. Ehhez kattintson a lenti gombra, hogy kapjon egy PIN-kódot a Twittertől, amelyet a lenti beviteli mezőbe kell bemásolnia, majd el kell küldenie az űrlapot. Csak a <strong>nyilvános</strong> bejegyzései lesznek beküldve a Twitterre.';
$a->strings['Log in with Twitter'] = 'Bejelentkezés Twitter használatával';
$a->strings['Copy the PIN from Twitter here'] = 'Másolja be ide a Twittertől kapott PIN-kódot';
$a->strings['An error occured: '] = 'Hiba történt: ';
$a->strings['Currently connected to: <a href="https://twitter.com/%1$s" target="_twitter">%1$s</a>'] = 'Jelenleg ehhez kapcsolódott: <a href="https://twitter.com/%1$s" target="_twitter">%1$s</a>';
$a->strings['<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '<strong>Megjegyzés</strong>: az adatvédelmi beállításai miatt (<em>Elrejti a profilja részleteit az ismeretlen megtekintők elől?</em>) a Twitterre továbbított nyilvános beküldésekben vélhetően tartalmazott hivatkozás a látogatót egy üres oldalra fogja vezetni, amely arról tájékoztatja a látogatót, hogy a profiljához való hozzáférés korlátozva lett.';
$a->strings['Invalid Twitter info'] = 'Érvénytelen Twitter-információk';
$a->strings['Disconnect'] = 'Leválasztás';
$a->strings['Allow posting to Twitter'] = 'Beküldés engedélyezése a Twitterre';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = 'Ha engedélyezve van, akkor az összes <strong>nyilvános</strong> beküldés beküldhető a hozzárendelt Twitter-fiókba. Kiválaszthatja, hogy ezt alapértelmezetten szeretné-e (itt), vagy minden egyes beküldésnél különállóan a beküldési beállításokban, amikor megírja a bejegyzést.';
$a->strings['Send public postings to Twitter by default'] = 'Nyilvános beküldések küldése a Twitterre alapértelmezetten';
$a->strings['Use threads instead of truncating the content'] = 'Szálak használata a tartalom csonkítása helyett';
$a->strings['Mirror all posts from twitter that are no replies'] = 'A Twittertől származó összes bejegyzés tükrözése, amelyek nem válaszok';
$a->strings['Import the remote timeline'] = 'A távoli idővonal importálása';
$a->strings['Automatically create contacts'] = 'Partnerek automatikus létrehozása';
$a->strings['This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here.'] = 'Ez automatikusan létre fog hozni egy partnert a Friendicán, amint üzenetet fogad egy meglévő partnertől a Twitter hálózaton keresztül. Ha ezt nem engedélyezi, akkor kézzel kell hozzáadnia azokat a Twitter-partnereket a Friendicában, akiktől bejegyzéseket szeretne látni itt.';
$a->strings['Follow in fediverse'] = 'Követés a födiverzumban';
$a->strings['Automatically subscribe to the contact in the fediverse, when a fediverse account is mentioned in name or description and we are following the Twitter contact.'] = 'Automatikus feliratkozás a födiverzumban lévő partnerre, ha egy födiverzumfiókot említenek a névben vagy a leírásban, és követjük a Twitter-partnert.';
$a->strings['Twitter Import/Export/Mirror'] = 'Twitter importálás, exportálás vagy tükrözés';
$a->strings['Please connect a Twitter account in your Social Network settings to import Twitter posts.'] = 'Kapcsoljon hozzá egy Twitter-fiókot a közösségi hálózatok beállításában a Twitter-bejegyzések importálásához.';
$a->strings['Twitter post not found.'] = 'A Twitter-bejegyzés nem található.';
$a->strings['Save Settings'] = 'Beállítások mentése';
$a->strings['Consumer key'] = 'Felhasználói kulcs';
$a->strings['Consumer secret'] = 'Felhasználói titok';
$a->strings['%s on Twitter'] = '%s a Twitteren';

View file

@ -0,0 +1,20 @@
<?php
$a->strings["Post to Twitter"] = "Senda færslu á Twitter";
$a->strings["Twitter settings updated."] = "Stillingar Twitter uppfærðar.";
$a->strings["Twitter Posting Settings"] = "Twitter færslu stillingar";
$a->strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Ekkert notenda lykils par fyrir Twitter fundið. Hafðu samband við kerfisstjórann.";
$a->strings["At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "";
$a->strings["Log in with Twitter"] = "Innskrá með Twitter";
$a->strings["Copy the PIN from Twitter here"] = "Afrita PIN frá Twitter hingað";
$a->strings["Submit"] = "Senda inn";
$a->strings["Currently connected to: "] = "Núna tengdur við:";
$a->strings["If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Ef virkt þá geta allar <strong>opinberu</strong> stöðu meldingarnar þínar verið birtar á tengdri StatusNet síðu. Þú getur valið að gera þetta sjálfvirkt (hér) eða fyrir hvern póst í senn þegar hann er skrifaður.";
$a->strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "";
$a->strings["Allow posting to Twitter"] = "Leyfa færslum að flæða á Twitter";
$a->strings["Send public postings to Twitter by default"] = "Senda sjálfgefið opinberar færslur á Twitter";
$a->strings["Send linked #-tags and @-names to Twitter"] = "";
$a->strings["Clear OAuth configuration"] = "Hreinsa OAuth stillingar";
$a->strings["Settings updated."] = "Stillingar uppfærðar";
$a->strings["Consumer key"] = "Lykill neytanda";
$a->strings["Consumer secret"] = "Leyndarmál neytanda";

View file

@ -0,0 +1,162 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
# Translators:
# fabrixxm <fabrix.xm@gmail.com>, 2014-2015,2018
# Sylke Vicious <silkevicious@gmail.com>, 2020
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-11-13 10:15+0000\n"
"PO-Revision-Date: 2014-06-23 12:58+0000\n"
"Last-Translator: Sylke Vicious <silkevicious@gmail.com>, 2020\n"
"Language-Team: Italian (http://app.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"
#: twitter.php:216
msgid "Post to Twitter"
msgstr "Invia a Twitter"
#: twitter.php:263
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr "Hai inserito un PIN vuoto, autenticati con Twitter nuovamente per averne uno nuovo."
#: twitter.php:330
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "Nessuna coppia di chiavi per Twitter trovata. Contatta l'amministratore del sito."
#: twitter.php:343
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "Il componente aggiuntivo Twitter è abilitato ma non hai ancora collegato i tuoi account Friendica e Twitter. Per farlo, clicca il bottone qui sotto per ricevere un PIN da Twitter che dovrai copiare nel campo qui sotto. Solo i tuoi messaggi <strong>pubblici</strong> saranno inviati a Twitter."
#: twitter.php:344
msgid "Log in with Twitter"
msgstr "Accedi con Twitter"
#: twitter.php:346
msgid "Copy the PIN from Twitter here"
msgstr "Copia il PIN da Twitter qui"
#: twitter.php:354 twitter.php:399
msgid "An error occured: "
msgstr "Si è verificato un errore:"
#: twitter.php:368
#, php-format
msgid ""
"Currently connected to: <a href=\"https://twitter.com/%1$s\" "
"target=\"_twitter\">%1$s</a>"
msgstr ""
#: twitter.php:374
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Nota</strong>: A causa delle tue impostazioni di privacy(<em>Nascondi i dettagli del tuo profilo ai visitatori sconosciuti?</em>) il collegamento potenzialmente incluso nei messaggi pubblici inviati a Twitter porterà i visitatori a una pagina bianca con una nota che li informa che l'accesso al tuo profilo è stato limitato."
#: twitter.php:381
msgid "Invalid Twitter info"
msgstr ""
#: twitter.php:382
msgid "Disconnect"
msgstr "Disconnetti"
#: twitter.php:387
msgid "Allow posting to Twitter"
msgstr "Permetti l'invio a Twitter"
#: twitter.php:387
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "Se abilitato tutti i tuoi messaggi <strong>pubblici</strong> possono essere inviati all'account Twitter associato. Puoi scegliere di farlo sempre (qui) o ogni volta che invii, nelle impostazioni di privacy del messaggio."
#: twitter.php:388
msgid "Send public postings to Twitter by default"
msgstr "Invia sempre i messaggi pubblici a Twitter"
#: twitter.php:389
msgid "Use threads instead of truncating the content"
msgstr ""
#: twitter.php:390
msgid "Mirror all posts from twitter that are no replies"
msgstr "Clona tutti i messaggi da Twitter che non sono risposte"
#: twitter.php:391
msgid "Import the remote timeline"
msgstr "Importa la timeline remota"
#: twitter.php:392
msgid "Automatically create contacts"
msgstr "Crea automaticamente i contatti"
#: twitter.php:392
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here."
msgstr ""
#: twitter.php:393
msgid "Follow in fediverse"
msgstr ""
#: twitter.php:393
msgid ""
"Automatically subscribe to the contact in the fediverse, when a fediverse "
"account is mentioned in name or description and we are following the Twitter"
" contact."
msgstr ""
#: twitter.php:406
msgid "Twitter Import/Export/Mirror"
msgstr "Importa/Esporta/Clona Twitter"
#: twitter.php:558
msgid ""
"Please connect a Twitter account in your Social Network settings to import "
"Twitter posts."
msgstr ""
#: twitter.php:565
msgid "Twitter post not found."
msgstr ""
#: twitter.php:965
msgid "Save Settings"
msgstr "Salva Impostazioni"
#: twitter.php:967
msgid "Consumer key"
msgstr "Consumer key"
#: twitter.php:968
msgid "Consumer secret"
msgstr "Consumer secret"
#: twitter.php:1167
#, php-format
msgid "%s on Twitter"
msgstr "%s su Twitter"

View file

@ -0,0 +1,27 @@
<?php
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; }
}}
$a->strings['Post to Twitter'] = 'Invia a Twitter';
$a->strings['You submitted an empty PIN, please Sign In with Twitter again to get a new one.'] = 'Hai inserito un PIN vuoto, autenticati con Twitter nuovamente per averne uno nuovo.';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Nessuna coppia di chiavi per Twitter trovata. Contatta l\'amministratore del sito.';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'Il componente aggiuntivo Twitter è abilitato ma non hai ancora collegato i tuoi account Friendica e Twitter. Per farlo, clicca il bottone qui sotto per ricevere un PIN da Twitter che dovrai copiare nel campo qui sotto. Solo i tuoi messaggi <strong>pubblici</strong> saranno inviati a Twitter.';
$a->strings['Log in with Twitter'] = 'Accedi con Twitter';
$a->strings['Copy the PIN from Twitter here'] = 'Copia il PIN da Twitter qui';
$a->strings['An error occured: '] = 'Si è verificato un errore:';
$a->strings['<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '<strong>Nota</strong>: A causa delle tue impostazioni di privacy(<em>Nascondi i dettagli del tuo profilo ai visitatori sconosciuti?</em>) il collegamento potenzialmente incluso nei messaggi pubblici inviati a Twitter porterà i visitatori a una pagina bianca con una nota che li informa che l\'accesso al tuo profilo è stato limitato.';
$a->strings['Disconnect'] = 'Disconnetti';
$a->strings['Allow posting to Twitter'] = 'Permetti l\'invio a Twitter';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = 'Se abilitato tutti i tuoi messaggi <strong>pubblici</strong> possono essere inviati all\'account Twitter associato. Puoi scegliere di farlo sempre (qui) o ogni volta che invii, nelle impostazioni di privacy del messaggio.';
$a->strings['Send public postings to Twitter by default'] = 'Invia sempre i messaggi pubblici a Twitter';
$a->strings['Mirror all posts from twitter that are no replies'] = 'Clona tutti i messaggi da Twitter che non sono risposte';
$a->strings['Import the remote timeline'] = 'Importa la timeline remota';
$a->strings['Automatically create contacts'] = 'Crea automaticamente i contatti';
$a->strings['Twitter Import/Export/Mirror'] = 'Importa/Esporta/Clona Twitter';
$a->strings['Save Settings'] = 'Salva Impostazioni';
$a->strings['Consumer key'] = 'Consumer key';
$a->strings['Consumer secret'] = 'Consumer secret';
$a->strings['%s on Twitter'] = '%s su Twitter';

View file

@ -0,0 +1,131 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
# Translators:
# XMPPはいいぞ, 2021
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:16+0100\n"
"PO-Revision-Date: 2021-05-19 00:39+0000\n"
"Last-Translator: XMPPはいいぞ\n"
"Language-Team: Japanese (http://www.transifex.com/Friendica/friendica/language/ja/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: twitter.php:189
msgid "Post to Twitter"
msgstr "Twitterに投稿"
#: twitter.php:234
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr "空のPINを送信しました。もう一度Twitterでサインインして新しいPINを取得してください。"
#: twitter.php:291 twitter.php:295
msgid "Twitter Import/Export/Mirror"
msgstr "Twitterインポート/エクスポート/ミラー"
#: twitter.php:302
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "Twitterのコンシューマキーペアが見つかりません。サイト管理者に連絡してください。"
#: twitter.php:314
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "このFriendicaインスタンスでは、Twitterアドオンは有効になっていますが、アカウントをTwitterアカウントにまだ接続していません。これを行うには、下のボタンをクリックしてTwitterからPINを取得し、それを下の入力ボックスにコピーしてフォームを送信する必要があります。 <strong>一般公開</strong>投稿のみがTwitterに投稿されます。"
#: twitter.php:315
msgid "Log in with Twitter"
msgstr "Twitterでログイン"
#: twitter.php:317
msgid "Copy the PIN from Twitter here"
msgstr "ここからTwitterからPINをコピーします"
#: twitter.php:322 twitter.php:377 twitter.php:768
msgid "Save Settings"
msgstr "設定を保存する"
#: twitter.php:324 twitter.php:379
msgid "An error occured: "
msgstr "エラーが発生しました:"
#: twitter.php:341
msgid "Currently connected to: "
msgstr "現在接続中:"
#: twitter.php:342 twitter.php:352
msgid "Disconnect"
msgstr "切断する"
#: twitter.php:359
msgid "Allow posting to Twitter"
msgstr "Twitterへの投稿を許可する"
#: twitter.php:359
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "有効にすると、すべての<strong>一般公開</strong>投稿を、関連づけたTwitterアカウントに投稿できます。デフォルトここで行うか、エントリを書き込む際に投稿オプションですべての投稿を個別に行うかを選択できます。"
#: twitter.php:362
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "<strong>注</strong>:プライバシー設定(<em>未知の視聴者からプロフィールの詳細を非表示にしますか?</em>により、Twitterに中継・公開される投稿内のリンクは、プロフィールへのアクセスが制限されている訪問者に対して空白ページを表示します。"
#: twitter.php:365
msgid "Send public postings to Twitter by default"
msgstr "デフォルトでTwitterに一般公開投稿を送信する"
#: twitter.php:368
msgid "Mirror all posts from twitter that are no replies"
msgstr "返信がないTwitterのすべての投稿をミラーリングする"
#: twitter.php:371
msgid "Import the remote timeline"
msgstr "リモートタイムラインをインポートする"
#: twitter.php:374
msgid "Automatically create contacts"
msgstr "連絡先を自動的に作成する"
#: twitter.php:374
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here. However if enabled, you cannot "
"merely remove a twitter contact from the Friendica contact list, as it will "
"recreate this contact when they post again."
msgstr "これにより、Twitterネットワーク経由で既存の連絡先からメッセージを受信するとすぐに、Friendicaに連絡先が自動的に作成されます。これを有効にしない場合、ここで投稿を表示するFriendicaのTwitter連絡先を手動で追加する必要があります。ただし、有効にした場合、Twitterの連絡先をFriendicaの連絡先リストから単に削除することはできません。再送信するとこの連絡先が再作成されるためです。"
#: twitter.php:770
msgid "Consumer key"
msgstr "コンシューマ キー"
#: twitter.php:771
msgid "Consumer secret"
msgstr "コンシューマ シークレット"
#: twitter.php:967
#, php-format
msgid "%s on Twitter"
msgstr ""

View file

@ -0,0 +1,28 @@
<?php
if(! function_exists("string_plural_select_ja")) {
function string_plural_select_ja($n){
$n = intval($n);
return intval(0);
}}
$a->strings['Post to Twitter'] = 'Twitterに投稿';
$a->strings['You submitted an empty PIN, please Sign In with Twitter again to get a new one.'] = '空のPINを送信しました。もう一度Twitterでサインインして新しいPINを取得してください。';
$a->strings['Twitter Import/Export/Mirror'] = 'Twitterインポート/エクスポート/ミラー';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Twitterのコンシューマキーペアが見つかりません。サイト管理者に連絡してください。';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'このFriendicaインスタンスでは、Twitterアドオンは有効になっていますが、アカウントをTwitterアカウントにまだ接続していません。これを行うには、下のボタンをクリックしてTwitterからPINを取得し、それを下の入力ボックスにコピーしてフォームを送信する必要があります。 <strong>一般公開</strong>投稿のみがTwitterに投稿されます。';
$a->strings['Log in with Twitter'] = 'Twitterでログイン';
$a->strings['Copy the PIN from Twitter here'] = 'ここからTwitterからPINをコピーします';
$a->strings['Save Settings'] = '設定を保存する';
$a->strings['An error occured: '] = 'エラーが発生しました:';
$a->strings['Currently connected to: '] = '現在接続中:';
$a->strings['Disconnect'] = '切断する';
$a->strings['Allow posting to Twitter'] = 'Twitterへの投稿を許可する';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = '有効にすると、すべての<strong>一般公開</strong>投稿を、関連づけたTwitterアカウントに投稿できます。デフォルトここで行うか、エントリを書き込む際に投稿オプションですべての投稿を個別に行うかを選択できます。';
$a->strings['<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '<strong>注</strong>:プライバシー設定(<em>未知の視聴者からプロフィールの詳細を非表示にしますか?</em>により、Twitterに中継・公開される投稿内のリンクは、プロフィールへのアクセスが制限されている訪問者に対して空白ページを表示します。';
$a->strings['Send public postings to Twitter by default'] = 'デフォルトでTwitterに一般公開投稿を送信する';
$a->strings['Mirror all posts from twitter that are no replies'] = '返信がないTwitterのすべての投稿をミラーリングする';
$a->strings['Import the remote timeline'] = 'リモートタイムラインをインポートする';
$a->strings['Automatically create contacts'] = '連絡先を自動的に作成する';
$a->strings['This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here. However if enabled, you cannot merely remove a twitter contact from the Friendica contact list, as it will recreate this contact when they post again.'] = 'これにより、Twitterネットワーク経由で既存の連絡先からメッセージを受信するとすぐに、Friendicaに連絡先が自動的に作成されます。これを有効にしない場合、ここで投稿を表示するFriendicaのTwitter連絡先を手動で追加する必要があります。ただし、有効にした場合、Twitterの連絡先をFriendicaの連絡先リストから単に削除することはできません。再送信するとこの連絡先が再作成されるためです。';
$a->strings['Consumer key'] = 'コンシューマ キー';
$a->strings['Consumer secret'] = 'コンシューマ シークレット';

View file

@ -0,0 +1,20 @@
<?php
$a->strings["Post to Twitter"] = "Post til Twitter";
$a->strings["Twitter settings updated."] = "Twitter-innstilinger oppdatert.";
$a->strings["Twitter Posting Settings"] = "Innstillinger for posting til Twitter";
$a->strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Ingen \"consumer key pair\" for Twitter funnet. Vennligst kontakt stedets administrator.";
$a->strings["At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Ved denne Friendica-forekomsten er Twitter-tillegget aktivert, men du har ennå ikke tilkoblet din konto til din Twitter-konto. For å gjøre det, klikk på knappen nedenfor for å få en PIN-kode fra Twitter som du må kopiere inn i feltet nedenfor og sende inn skjemaet. Bare dine <strong>offentlige</strong> innlegg vil bli lagt inn på Twitter. ";
$a->strings["Log in with Twitter"] = "Logg inn via Twitter";
$a->strings["Copy the PIN from Twitter here"] = "Kopier PIN-kode fra Twitter hit";
$a->strings["Submit"] = "Lagre";
$a->strings["Currently connected to: "] = "For øyeblikket tilkoblet til:";
$a->strings["If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Aktivering gjør at alle dine <strong>offentlige</strong> innlegg kan postes til den tilknyttede Twitter-kontoen. Du kan velge å gjøre dette som standard (her), eller for hvert enkelt innlegg separat i valgmulighetene for posting når du skriver et innlegg.";
$a->strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "";
$a->strings["Allow posting to Twitter"] = "Tillat posting til Twitter";
$a->strings["Send public postings to Twitter by default"] = "Send offentlige innlegg til Twitter som standard";
$a->strings["Send linked #-tags and @-names to Twitter"] = "";
$a->strings["Clear OAuth configuration"] = "Fjern OAuth-konfigurasjon";
$a->strings["Settings updated."] = "Innstillinger oppdatert.";
$a->strings["Consumer key"] = "Consumer key";
$a->strings["Consumer secret"] = "Consumer secret";

View file

@ -0,0 +1,134 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter 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: 2018-06-02 10:25+0700\n"
"PO-Revision-Date: 2018-08-24 13:56+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"
#: twitter.php:195
msgid "Post to Twitter"
msgstr "Plaatsen op Twitter"
#: twitter.php:236
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr ""
#: twitter.php:263
msgid "Twitter settings updated."
msgstr "Twitter instellingen opgeslagen"
#: twitter.php:293 twitter.php:297
msgid "Twitter Import/Export/Mirror"
msgstr "Twitter Import/Exporteren/Spiegelen"
#: twitter.php:304
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr ""
#: twitter.php:316
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr ""
#: twitter.php:317
msgid "Log in with Twitter"
msgstr ""
#: twitter.php:319
msgid "Copy the PIN from Twitter here"
msgstr ""
#: twitter.php:324 twitter.php:366 twitter.php:636
msgid "Save Settings"
msgstr "Instellingen opslaan"
#: twitter.php:336
msgid "Currently connected to: "
msgstr ""
#: twitter.php:337
msgid "Disconnect"
msgstr ""
#: twitter.php:347
msgid "Allow posting to Twitter"
msgstr "Plaatsen op Twitter toestaan"
#: twitter.php:347
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr ""
#: twitter.php:350
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr ""
#: twitter.php:353
msgid "Send public postings to Twitter by default"
msgstr "Verzend publieke berichten naar Twitter als standaard instellen "
#: twitter.php:356
msgid "Mirror all posts from twitter that are no replies"
msgstr ""
#: twitter.php:359
msgid "Import the remote timeline"
msgstr ""
#: twitter.php:362
msgid "Automatically create contacts"
msgstr ""
#: twitter.php:362
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here. However if enabled, you cannot "
"merely remove a twitter contact from the Friendica contact list, as it will "
"recreate this contact when they post again."
msgstr ""
#: twitter.php:614
msgid "Twitter post failed. Queued for retry."
msgstr ""
#: twitter.php:628
msgid "Settings updated."
msgstr "Instellingen opgeslagen"
#: twitter.php:638
msgid "Consumer key"
msgstr ""
#: twitter.php:639
msgid "Consumer secret"
msgstr ""

View file

@ -0,0 +1,14 @@
<?php
if(! function_exists("string_plural_select_nl")) {
function string_plural_select_nl($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Post to Twitter'] = 'Plaatsen op Twitter';
$a->strings['Twitter settings updated.'] = 'Twitter instellingen opgeslagen';
$a->strings['Twitter Import/Export/Mirror'] = 'Twitter Import/Exporteren/Spiegelen';
$a->strings['Save Settings'] = 'Instellingen opslaan';
$a->strings['Allow posting to Twitter'] = 'Plaatsen op Twitter toestaan';
$a->strings['Send public postings to Twitter by default'] = 'Verzend publieke berichten naar Twitter als standaard instellen ';
$a->strings['Settings updated.'] = 'Instellingen opgeslagen';

View file

@ -0,0 +1,162 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
# Translators:
# 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: 2022-11-13 10:15+0000\n"
"PO-Revision-Date: 2014-06-23 12:58+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"
#: twitter.php:216
msgid "Post to Twitter"
msgstr "Opublikuj na Twitterze"
#: twitter.php:263
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr "Przesłałeś pusty kod PIN, zaloguj się ponownie na Twitterze, aby otrzymać nowy."
#: twitter.php:330
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "Nie znaleziono pary kluczy konsumpcyjnych dla Twittera. Skontaktuj się z administratorem witryny."
#: twitter.php:343
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "W tej instancji Friendica dodatek do Twittera został włączony, ale jeszcze nie podłączyłeś swojego konta do konta na Twitterze. Aby to zrobić, kliknij przycisk poniżej, aby uzyskać numer PIN z Twittera, który musisz skopiować do poniższego pola wprowadzania i przesłać formularz. Tylko Twoje <strong>publiczne</strong> posty będą publikowane na Twitterze."
#: twitter.php:344
msgid "Log in with Twitter"
msgstr "Zaloguj się przez Twitter"
#: twitter.php:346
msgid "Copy the PIN from Twitter here"
msgstr "Skopiuj tutaj kod PIN z Twittera"
#: twitter.php:354 twitter.php:399
msgid "An error occured: "
msgstr "Wystąpił błąd:"
#: twitter.php:368
#, php-format
msgid ""
"Currently connected to: <a href=\"https://twitter.com/%1$s\" "
"target=\"_twitter\">%1$s</a>"
msgstr "Obecnie połączony z: <a href=\"https://twitter.com/%1$s\" target=\"_twitter\">%1$s</a>"
#: twitter.php:374
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Uwaga</strong>: Ze względu na ustawienia prywatności (<em>Ukryć szczegóły Twojego profilu, przed nieznanymi użytkownikami?</em>) link potencjalnie zawarty w publicznych komentarzach do Twitter doprowadzi użytkownika do pustej strony informowania odwiedzających, że dostęp do Twojego profilu został ograniczony."
#: twitter.php:381
msgid "Invalid Twitter info"
msgstr "Nieprawidłowe informacje Twittera"
#: twitter.php:382
msgid "Disconnect"
msgstr "Rozłączony"
#: twitter.php:387
msgid "Allow posting to Twitter"
msgstr "Zezwalaj na publikowanie na Twitterze"
#: twitter.php:387
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "Jeśli ta opcja jest włączona, wszystkie twoje <strong>publiczne</strong> ogłoszenia mogą być wysyłane na powiązane konto Twitter. Możesz to zrobić domyślnie (tutaj) lub dla każdego komentarza osobno w opcjach komentarza podczas pisania wpisu."
#: twitter.php:388
msgid "Send public postings to Twitter by default"
msgstr "Wyślij domyślnie komentarze publiczne do Twitter"
#: twitter.php:389
msgid "Use threads instead of truncating the content"
msgstr "Używaj wątków zamiast obcinania treści"
#: twitter.php:390
msgid "Mirror all posts from twitter that are no replies"
msgstr "Lustro wszystkich postów Twitter, które są bez odpowiedzi"
#: twitter.php:391
msgid "Import the remote timeline"
msgstr "Zaimportuj zdalną oś czasu"
#: twitter.php:392
msgid "Automatically create contacts"
msgstr "Automatycznie twórz kontakty"
#: twitter.php:392
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here."
msgstr "Spowoduje to automatyczne utworzenie kontaktu w Friendica, gdy tylko otrzymasz wiadomość od istniejącego kontaktu za pośrednictwem sieci Twitter. Jeśli nie włączysz tej opcji, musisz ręcznie dodać te kontakty z Twittera w Friendica, od których chciałbyś widzieć tutaj wpisy."
#: twitter.php:393
msgid "Follow in fediverse"
msgstr "Śledź w fediverse"
#: twitter.php:393
msgid ""
"Automatically subscribe to the contact in the fediverse, when a fediverse "
"account is mentioned in name or description and we are following the Twitter"
" contact."
msgstr "Automatycznie subskrybuj kontakt w fediverse, gdy konto fediverse jest wymienione w nazwie lub opisie i obserwujesz kontakt na Twitterze."
#: twitter.php:406
msgid "Twitter Import/Export/Mirror"
msgstr "Twitter Import/Export/Mirror"
#: twitter.php:558
msgid ""
"Please connect a Twitter account in your Social Network settings to import "
"Twitter posts."
msgstr "Aby zaimportować wpisy z Twittera, połącz konto Twitter w ustawieniach sieci społecznościowej."
#: twitter.php:565
msgid "Twitter post not found."
msgstr "Nie odnaleziono wpisu Twittera."
#: twitter.php:965
msgid "Save Settings"
msgstr "Zapisz ustawienia"
#: twitter.php:967
msgid "Consumer key"
msgstr "Klucz klienta"
#: twitter.php:968
msgid "Consumer secret"
msgstr "Tajny klucz klienta"
#: twitter.php:1167
#, php-format
msgid "%s on Twitter"
msgstr "%s na Twitterze"

View file

@ -0,0 +1,35 @@
<?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['Post to Twitter'] = 'Opublikuj na Twitterze';
$a->strings['You submitted an empty PIN, please Sign In with Twitter again to get a new one.'] = 'Przesłałeś pusty kod PIN, zaloguj się ponownie na Twitterze, aby otrzymać nowy.';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Nie znaleziono pary kluczy konsumpcyjnych dla Twittera. Skontaktuj się z administratorem witryny.';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'W tej instancji Friendica dodatek do Twittera został włączony, ale jeszcze nie podłączyłeś swojego konta do konta na Twitterze. Aby to zrobić, kliknij przycisk poniżej, aby uzyskać numer PIN z Twittera, który musisz skopiować do poniższego pola wprowadzania i przesłać formularz. Tylko Twoje <strong>publiczne</strong> posty będą publikowane na Twitterze.';
$a->strings['Log in with Twitter'] = 'Zaloguj się przez Twitter';
$a->strings['Copy the PIN from Twitter here'] = 'Skopiuj tutaj kod PIN z Twittera';
$a->strings['An error occured: '] = 'Wystąpił błąd:';
$a->strings['Currently connected to: <a href="https://twitter.com/%1$s" target="_twitter">%1$s</a>'] = 'Obecnie połączony z: <a href="https://twitter.com/%1$s" target="_twitter">%1$s</a>';
$a->strings['<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '<strong>Uwaga</strong>: Ze względu na ustawienia prywatności (<em>Ukryć szczegóły Twojego profilu, przed nieznanymi użytkownikami?</em>) link potencjalnie zawarty w publicznych komentarzach do Twitter doprowadzi użytkownika do pustej strony informowania odwiedzających, że dostęp do Twojego profilu został ograniczony.';
$a->strings['Invalid Twitter info'] = 'Nieprawidłowe informacje Twittera';
$a->strings['Disconnect'] = 'Rozłączony';
$a->strings['Allow posting to Twitter'] = 'Zezwalaj na publikowanie na Twitterze';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = 'Jeśli ta opcja jest włączona, wszystkie twoje <strong>publiczne</strong> ogłoszenia mogą być wysyłane na powiązane konto Twitter. Możesz to zrobić domyślnie (tutaj) lub dla każdego komentarza osobno w opcjach komentarza podczas pisania wpisu.';
$a->strings['Send public postings to Twitter by default'] = 'Wyślij domyślnie komentarze publiczne do Twitter';
$a->strings['Use threads instead of truncating the content'] = 'Używaj wątków zamiast obcinania treści';
$a->strings['Mirror all posts from twitter that are no replies'] = 'Lustro wszystkich postów Twitter, które są bez odpowiedzi';
$a->strings['Import the remote timeline'] = 'Zaimportuj zdalną oś czasu';
$a->strings['Automatically create contacts'] = 'Automatycznie twórz kontakty';
$a->strings['This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here.'] = 'Spowoduje to automatyczne utworzenie kontaktu w Friendica, gdy tylko otrzymasz wiadomość od istniejącego kontaktu za pośrednictwem sieci Twitter. Jeśli nie włączysz tej opcji, musisz ręcznie dodać te kontakty z Twittera w Friendica, od których chciałbyś widzieć tutaj wpisy.';
$a->strings['Follow in fediverse'] = 'Śledź w fediverse';
$a->strings['Automatically subscribe to the contact in the fediverse, when a fediverse account is mentioned in name or description and we are following the Twitter contact.'] = 'Automatycznie subskrybuj kontakt w fediverse, gdy konto fediverse jest wymienione w nazwie lub opisie i obserwujesz kontakt na Twitterze.';
$a->strings['Twitter Import/Export/Mirror'] = 'Twitter Import/Export/Mirror';
$a->strings['Please connect a Twitter account in your Social Network settings to import Twitter posts.'] = 'Aby zaimportować wpisy z Twittera, połącz konto Twitter w ustawieniach sieci społecznościowej.';
$a->strings['Twitter post not found.'] = 'Nie odnaleziono wpisu Twittera.';
$a->strings['Save Settings'] = 'Zapisz ustawienia';
$a->strings['Consumer key'] = 'Klucz klienta';
$a->strings['Consumer secret'] = 'Tajny klucz klienta';
$a->strings['%s on Twitter'] = '%s na Twitterze';

View file

@ -0,0 +1,123 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter 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 20:38+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"
#: twitter.php:77
msgid "Post to Twitter"
msgstr "Publicar no Twitter"
#: twitter.php:129
msgid "Twitter settings updated."
msgstr "As configurações do Twitter foram atualizadas."
#: twitter.php:157
msgid "Twitter Posting Settings"
msgstr "Configurações de publicação no Twitter"
#: twitter.php:164
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "Não foi encontrado nenhum par de \"consumer keys\" para o Twitter. Por favor, entre em contato com a administração do site."
#: twitter.php:183
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "O plug-in do Twitter está habilitado nesta instância do Friendica, mas você ainda não conectou sua conta aqui à sua conta no Twitter. Para fazer isso, clique no botão abaixo. Você vai receber um código de verificação do Twitter. Copie-o para o campo abaixo e envie o formulário. Apenas os seus posts <strong>públicos</strong> serão publicados no Twitter."
#: twitter.php:184
msgid "Log in with Twitter"
msgstr "Entrar com o Twitter"
#: twitter.php:186
msgid "Copy the PIN from Twitter here"
msgstr "Cole o código de verificação do Twitter aqui"
#: twitter.php:191 twitter.php:229 twitter.php:556
msgid "Submit"
msgstr "Enviar"
#: twitter.php:200
msgid "Currently connected to: "
msgstr "Atualmente conectado a:"
#: twitter.php:201
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "Se habilitado, todos os seus posts <strong>públicos</strong> poderão ser replicados na conta do Twitter associada. Você pode escolher entre fazer isso por padrão (aqui) ou separadamente, quando escrever cada mensagem, nas opções de publicação."
#: twitter.php:203
msgid ""
"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr ""
#: twitter.php:206
msgid "Allow posting to Twitter"
msgstr "Permitir a publicação no Twitter"
#: twitter.php:209
msgid "Send public postings to Twitter by default"
msgstr "Publicar posts públicos no Twitter por padrão"
#: twitter.php:213
msgid "Mirror all posts from twitter that are no replies or retweets"
msgstr ""
#: twitter.php:217
msgid "Shortening method that optimizes the tweet"
msgstr ""
#: twitter.php:221
msgid "Send linked #-tags and @-names to Twitter"
msgstr ""
#: twitter.php:226
msgid "Clear OAuth configuration"
msgstr ""
#: twitter.php:550
msgid "Settings updated."
msgstr "As configurações foram atualizadas."
#: twitter.php:558
msgid "Consumer key"
msgstr ""
#: twitter.php:559
msgid "Consumer secret"
msgstr ""
#: twitter.php:560
msgid "Name of the Twitter Application"
msgstr ""
#: twitter.php:560
msgid ""
"set this to avoid mirroring postings from ~friendica back to ~friendica"
msgstr ""

View file

@ -0,0 +1,20 @@
<?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['Post to Twitter'] = 'Publicar no Twitter';
$a->strings['Twitter settings updated.'] = 'As configurações do Twitter foram atualizadas.';
$a->strings['Twitter Posting Settings'] = 'Configurações de publicação no Twitter';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Não foi encontrado nenhum par de "consumer keys" para o Twitter. Por favor, entre em contato com a administração do site.';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'O plug-in do Twitter está habilitado nesta instância do Friendica, mas você ainda não conectou sua conta aqui à sua conta no Twitter. Para fazer isso, clique no botão abaixo. Você vai receber um código de verificação do Twitter. Copie-o para o campo abaixo e envie o formulário. Apenas os seus posts <strong>públicos</strong> serão publicados no Twitter.';
$a->strings['Log in with Twitter'] = 'Entrar com o Twitter';
$a->strings['Copy the PIN from Twitter here'] = 'Cole o código de verificação do Twitter aqui';
$a->strings['Submit'] = 'Enviar';
$a->strings['Currently connected to: '] = 'Atualmente conectado a:';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = 'Se habilitado, todos os seus posts <strong>públicos</strong> poderão ser replicados na conta do Twitter associada. Você pode escolher entre fazer isso por padrão (aqui) ou separadamente, quando escrever cada mensagem, nas opções de publicação.';
$a->strings['Allow posting to Twitter'] = 'Permitir a publicação no Twitter';
$a->strings['Send public postings to Twitter by default'] = 'Publicar posts públicos no Twitter por padrão';
$a->strings['Settings updated.'] = 'As configurações foram atualizadas.';

View file

@ -0,0 +1,126 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-23 14:45+0200\n"
"PO-Revision-Date: 2014-07-08 12:10+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"
#: twitter.php:146
msgid "Post to Twitter"
msgstr "Postați pe Twitter"
#: twitter.php:203
msgid "Twitter settings updated."
msgstr "Configurările Twitter au fost actualizate."
#: twitter.php:233 twitter.php:237
msgid "Twitter Import/Export/Mirror"
msgstr "Import/Export/Clonare Twitter"
#: twitter.php:245
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "Nici o pereche de chei de utilizator pentru Twitter nu a fost găsită. Vă rugăm să vă contactați administratorul de site."
#: twitter.php:264
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "Pe această sesiune Friendica, modulul Twitter era activat, dar încă nu v-ați conectat contul la profilul dvs. Twitter. Pentru aceasta apăsați pe butonul de mai jos pentru a obține un PIN de pe Twitter pe care va trebui să îl copiați în caseta de introducere mai jos şi trimiteți formularul. Numai postările dumneavoastră <strong>publice</strong> vor fi postate pe Twitter."
#: twitter.php:265
msgid "Log in with Twitter"
msgstr "Autentificare prin Twitter"
#: twitter.php:267
msgid "Copy the PIN from Twitter here"
msgstr "Copiați aici PIN-ul de la Twitter"
#: twitter.php:272 twitter.php:311 twitter.php:569
msgid "Save Settings"
msgstr "Salvare Configurări"
#: twitter.php:281
msgid "Currently connected to: "
msgstr "Conectat curent la:"
#: twitter.php:282
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "Dacă activați, toate postările dvs. <strong>publice</strong> pot fi publicate în contul Twitter asociat. Puteți face acest lucru, implicit (aici), sau pentru fiecare postare separată, prin opțiunile de postare atunci când compuneți un mesaj."
#: twitter.php:284
msgid ""
"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Notă</strong>: Datorită configurărilor de confidenţialitate (<em>Se ascund detaliile profilului dvs. de vizitatorii necunoscuți?</em>), legătura potențial inclusă în postările publice transmise către Twitter, va conduce vizitatorul la o pagină goală, informându-l pe vizitator că accesul la profilul dvs. a fost restricţionat."
#: twitter.php:287
msgid "Allow posting to Twitter"
msgstr "Permite postarea pe Twitter"
#: twitter.php:290
msgid "Send public postings to Twitter by default"
msgstr "Trimite postările publice pe Twitter, ca și implicit"
#: twitter.php:294
msgid "Mirror all posts from twitter that are no replies"
msgstr "Clonează toate postările, din Twitter, care nu sunt răspunsuri"
#: twitter.php:299
msgid "Import the remote timeline"
msgstr "Importare cronologie la distanță"
#: twitter.php:303
msgid "Automatically create contacts"
msgstr "Creați Automat contactele"
#: twitter.php:308
msgid "Clear OAuth configuration"
msgstr "Ștergeți configurările OAuth"
#: twitter.php:539
msgid "Twitter post failed. Queued for retry."
msgstr "Postarea pe Twitter a eșuat. S-a pus în așteptare pentru reîncercare."
#: twitter.php:563
msgid "Settings updated."
msgstr "Configurări actualizate."
#: twitter.php:571
msgid "Consumer key"
msgstr "Cheia Utilizatorului"
#: twitter.php:572
msgid "Consumer secret"
msgstr "Cheia Secretă a Utilizatorului"
#: twitter.php:573
msgid "Name of the Twitter Application"
msgstr "Numele Aplicației Twitter"
#: twitter.php:573
msgid ""
"set this to avoid mirroring postings from ~friendica back to ~friendica"
msgstr "stabiliți aceasta pentru a evita clonarea postărilor din ~friendica înapoi la ~friendica"

View file

@ -0,0 +1,30 @@
<?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['Post to Twitter'] = 'Postați pe Twitter';
$a->strings['Twitter settings updated.'] = 'Configurările Twitter au fost actualizate.';
$a->strings['Twitter Import/Export/Mirror'] = 'Import/Export/Clonare Twitter';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Nici o pereche de chei de utilizator pentru Twitter nu a fost găsită. Vă rugăm să vă contactați administratorul de site.';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'Pe această sesiune Friendica, modulul Twitter era activat, dar încă nu v-ați conectat contul la profilul dvs. Twitter. Pentru aceasta apăsați pe butonul de mai jos pentru a obține un PIN de pe Twitter pe care va trebui să îl copiați în caseta de introducere mai jos şi trimiteți formularul. Numai postările dumneavoastră <strong>publice</strong> vor fi postate pe Twitter.';
$a->strings['Log in with Twitter'] = 'Autentificare prin Twitter';
$a->strings['Copy the PIN from Twitter here'] = 'Copiați aici PIN-ul de la Twitter';
$a->strings['Save Settings'] = 'Salvare Configurări';
$a->strings['Currently connected to: '] = 'Conectat curent la:';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = 'Dacă activați, toate postările dvs. <strong>publice</strong> pot fi publicate în contul Twitter asociat. Puteți face acest lucru, implicit (aici), sau pentru fiecare postare separată, prin opțiunile de postare atunci când compuneți un mesaj.';
$a->strings['<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '<strong>Notă</strong>: Datorită configurărilor de confidenţialitate (<em>Se ascund detaliile profilului dvs. de vizitatorii necunoscuți?</em>), legătura potențial inclusă în postările publice transmise către Twitter, va conduce vizitatorul la o pagină goală, informându-l pe vizitator că accesul la profilul dvs. a fost restricţionat.';
$a->strings['Allow posting to Twitter'] = 'Permite postarea pe Twitter';
$a->strings['Send public postings to Twitter by default'] = 'Trimite postările publice pe Twitter, ca și implicit';
$a->strings['Mirror all posts from twitter that are no replies'] = 'Clonează toate postările, din Twitter, care nu sunt răspunsuri';
$a->strings['Import the remote timeline'] = 'Importare cronologie la distanță';
$a->strings['Automatically create contacts'] = 'Creați Automat contactele';
$a->strings['Clear OAuth configuration'] = 'Ștergeți configurările OAuth';
$a->strings['Twitter post failed. Queued for retry.'] = 'Postarea pe Twitter a eșuat. S-a pus în așteptare pentru reîncercare.';
$a->strings['Settings updated.'] = 'Configurări actualizate.';
$a->strings['Consumer key'] = 'Cheia Utilizatorului';
$a->strings['Consumer secret'] = 'Cheia Secretă a Utilizatorului';
$a->strings['Name of the Twitter Application'] = 'Numele Aplicației Twitter';
$a->strings['set this to avoid mirroring postings from ~friendica back to ~friendica'] = 'stabiliți aceasta pentru a evita clonarea postărilor din ~friendica înapoi la ~friendica';

View file

@ -0,0 +1,123 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter 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 05:49+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"
#: twitter.php:77
msgid "Post to Twitter"
msgstr "Отправить в Twitter"
#: twitter.php:129
msgid "Twitter settings updated."
msgstr "Настройки Twitter обновлены."
#: twitter.php:157
msgid "Twitter Posting Settings"
msgstr "Настройка отправки сообщений в Twitter"
#: twitter.php:164
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "Не найдено пары потребительских ключей для Twitter. Пожалуйста, обратитесь к администратору сайта."
#: twitter.php:183
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "Чтобы подключиться к Twitter аккаунту, нажмите на кнопку ниже, чтобы получить код безопасности от Twitter, который нужно скопировать в поле ввода ниже, и отправить форму. Только ваши <strong>публичные сообщения</strong> будут отправляться на Twitter."
#: twitter.php:184
msgid "Log in with Twitter"
msgstr "Войдите через Twitter"
#: twitter.php:186
msgid "Copy the PIN from Twitter here"
msgstr "Скопируйте PIN с Twitter сюда"
#: twitter.php:191 twitter.php:229 twitter.php:556
msgid "Submit"
msgstr "Подтвердить"
#: twitter.php:200
msgid "Currently connected to: "
msgstr "В настоящее время соединены с: "
#: twitter.php:201
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "Если включено, то все ваши <strong>общественные сообщения</strong> могут быть отправлены на связанный аккаунт Twitter. Вы можете сделать это по умолчанию (здесь) или для каждого сообщения отдельно при написании записи."
#: twitter.php:203
msgid ""
"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Внимание</strong>: Из-за настроек приватности (<em>Hide your profile details from unknown viewers?</em>) ссылка, которая может быть включена в твит, будет вести посетителя на пустую страницу с информированием о том, что доступ к профилю запрещен."
#: twitter.php:206
msgid "Allow posting to Twitter"
msgstr "Разрешить отправку сообщений на Twitter"
#: twitter.php:209
msgid "Send public postings to Twitter by default"
msgstr "Отправлять сообщения для всех в Twitter по умолчанию"
#: twitter.php:213
msgid "Mirror all posts from twitter that are no replies or retweets"
msgstr "Получать посты с Twitter у которых нет ответов и ретвитов"
#: twitter.php:217
msgid "Shortening method that optimizes the tweet"
msgstr "Метод сокращения ссылок для оптимизации твита"
#: twitter.php:221
msgid "Send linked #-tags and @-names to Twitter"
msgstr "Отправлять #-теги и @-имена в Twitter ссылками"
#: twitter.php:226
msgid "Clear OAuth configuration"
msgstr "Удалить конфигурацию OAuth"
#: twitter.php:550
msgid "Settings updated."
msgstr "Настройки обновлены."
#: twitter.php:558
msgid "Consumer key"
msgstr "Consumer key"
#: twitter.php:559
msgid "Consumer secret"
msgstr "Consumer secret"
#: twitter.php:560
msgid "Name of the Twitter Application"
msgstr "Имя приложения для Twitter"
#: twitter.php:560
msgid ""
"set this to avoid mirroring postings from ~friendica back to ~friendica"
msgstr "установите это для избежания отправки сообщений из Friendica обратно в Friendica"

View file

@ -0,0 +1,29 @@
<?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['Post to Twitter'] = 'Отправить в Twitter';
$a->strings['Twitter settings updated.'] = 'Настройки Twitter обновлены.';
$a->strings['Twitter Posting Settings'] = 'Настройка отправки сообщений в Twitter';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Не найдено пары потребительских ключей для Twitter. Пожалуйста, обратитесь к администратору сайта.';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'Чтобы подключиться к Twitter аккаунту, нажмите на кнопку ниже, чтобы получить код безопасности от Twitter, который нужно скопировать в поле ввода ниже, и отправить форму. Только ваши <strong>публичные сообщения</strong> будут отправляться на Twitter.';
$a->strings['Log in with Twitter'] = 'Войдите через Twitter';
$a->strings['Copy the PIN from Twitter here'] = 'Скопируйте PIN с Twitter сюда';
$a->strings['Submit'] = 'Подтвердить';
$a->strings['Currently connected to: '] = 'В настоящее время соединены с: ';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = 'Если включено, то все ваши <strong>общественные сообщения</strong> могут быть отправлены на связанный аккаунт Twitter. Вы можете сделать это по умолчанию (здесь) или для каждого сообщения отдельно при написании записи.';
$a->strings['<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '<strong>Внимание</strong>: Из-за настроек приватности (<em>Hide your profile details from unknown viewers?</em>) ссылка, которая может быть включена в твит, будет вести посетителя на пустую страницу с информированием о том, что доступ к профилю запрещен.';
$a->strings['Allow posting to Twitter'] = 'Разрешить отправку сообщений на Twitter';
$a->strings['Send public postings to Twitter by default'] = 'Отправлять сообщения для всех в Twitter по умолчанию';
$a->strings['Mirror all posts from twitter that are no replies or retweets'] = 'Получать посты с Twitter у которых нет ответов и ретвитов';
$a->strings['Shortening method that optimizes the tweet'] = 'Метод сокращения ссылок для оптимизации твита';
$a->strings['Send linked #-tags and @-names to Twitter'] = 'Отправлять #-теги и @-имена в Twitter ссылками';
$a->strings['Clear OAuth configuration'] = 'Удалить конфигурацию OAuth';
$a->strings['Settings updated.'] = 'Настройки обновлены.';
$a->strings['Consumer key'] = 'Consumer key';
$a->strings['Consumer secret'] = 'Consumer secret';
$a->strings['Name of the Twitter Application'] = 'Имя приложения для Twitter';
$a->strings['set this to avoid mirroring postings from ~friendica back to ~friendica'] = 'установите это для избежания отправки сообщений из Friendica обратно в Friendica';

View file

@ -0,0 +1,147 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter 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-11-27 10:25-0500\n"
"PO-Revision-Date: 2022-01-16 00:56+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"
#: twitter.php:213
msgid "Post to Twitter"
msgstr ""
#: twitter.php:258
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr ""
#: twitter.php:321
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr ""
#: twitter.php:334
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr ""
#: twitter.php:335
msgid "Log in with Twitter"
msgstr "Logga in med Twitter"
#: twitter.php:337
msgid "Copy the PIN from Twitter here"
msgstr "Kopiera PIN-koden från Twitter här"
#: twitter.php:345 twitter.php:388
msgid "An error occured: "
msgstr ""
#: twitter.php:359
#, php-format
msgid ""
"Currently connected to: <a href=\"https://twitter.com/%1$s\" "
"target=\"_twitter\">%1$s</a>"
msgstr ""
#: twitter.php:365
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr ""
#: twitter.php:372
msgid "Invalid Twitter info"
msgstr ""
#: twitter.php:373
msgid "Disconnect"
msgstr ""
#: twitter.php:378
msgid "Allow posting to Twitter"
msgstr ""
#: twitter.php:378
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr ""
#: twitter.php:379
msgid "Send public postings to Twitter by default"
msgstr ""
#: twitter.php:380
msgid "Mirror all posts from twitter that are no replies"
msgstr ""
#: twitter.php:381
msgid "Import the remote timeline"
msgstr ""
#: twitter.php:382
msgid "Automatically create contacts"
msgstr ""
#: twitter.php:382
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here."
msgstr ""
#: twitter.php:395
msgid "Twitter Import/Export/Mirror"
msgstr ""
#: twitter.php:547
msgid ""
"Please connect a Twitter account in your Social Network settings to import "
"Twitter posts."
msgstr ""
#: twitter.php:554
msgid "Twitter post not found."
msgstr ""
#: twitter.php:914
msgid "Save Settings"
msgstr ""
#: twitter.php:916
msgid "Consumer key"
msgstr "Kundnyckel"
#: twitter.php:917
msgid "Consumer secret"
msgstr "Kundhemlighet"
#: twitter.php:1113
#, php-format
msgid "%s on Twitter"
msgstr ""

View file

@ -0,0 +1,11 @@
<?php
if(! function_exists("string_plural_select_sv")) {
function string_plural_select_sv($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Log in with Twitter'] = 'Logga in med Twitter';
$a->strings['Copy the PIN from Twitter here'] = 'Kopiera PIN-koden från Twitter här';
$a->strings['Consumer key'] = 'Kundnyckel';
$a->strings['Consumer secret'] = 'Kundhemlighet';

View file

@ -0,0 +1,134 @@
# ADDON twitter
# Copyright (C)
# This file is distributed under the same license as the Friendica twitter addon package.
#
#
# Translators:
# steve jobs <vicdorke@gmail.com>, 2020
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-06-02 10:25+0700\n"
"PO-Revision-Date: 2020-06-10 14:20+0000\n"
"Last-Translator: steve jobs <vicdorke@gmail.com>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/Friendica/friendica/language/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"
#: twitter.php:195
msgid "Post to Twitter"
msgstr "发帖到Twitter"
#: twitter.php:236
msgid ""
"You submitted an empty PIN, please Sign In with Twitter again to get a new "
"one."
msgstr "您提交的PIN为空请重新登录Twitter获取新PIN。"
#: twitter.php:263
msgid "Twitter settings updated."
msgstr "已更新Twitter设置。"
#: twitter.php:293 twitter.php:297
msgid "Twitter Import/Export/Mirror"
msgstr "Twitter导入/导出/镜像"
#: twitter.php:304
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "找不到Twitter的使用者密钥。请与您的站点管理员联系。"
#: twitter.php:316
msgid ""
"At this Friendica instance the Twitter addon was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
"button below to get a PIN from Twitter which you have to copy into the input"
" box below and submit the form. Only your <strong>public</strong> posts will"
" be posted to Twitter."
msgstr "在此Friendica实例中Twitter插件已启用但您尚未将您的帐户连接到您的Twitter帐户。要执行此操作请单击下面的按钮从Twitter获取PIN您必须将其复制到下面的输入框中并提交表单。只有您的公共帖子才会发布到Twitter上。"
#: twitter.php:317
msgid "Log in with Twitter"
msgstr "使用Twitter登录"
#: twitter.php:319
msgid "Copy the PIN from Twitter here"
msgstr "将Twitter上的PIN复制到此处"
#: twitter.php:324 twitter.php:366 twitter.php:636
msgid "Save Settings"
msgstr "保存设置"
#: twitter.php:336
msgid "Currently connected to: "
msgstr "当前连接到:"
#: twitter.php:337
msgid "Disconnect"
msgstr "断开连接"
#: twitter.php:347
msgid "Allow posting to Twitter"
msgstr "允許發佈到Twitter"
#: twitter.php:347
msgid ""
"If enabled all your <strong>public</strong> postings can be posted to the "
"associated Twitter account. You can choose to do so by default (here) or for"
" every posting separately in the posting options when writing the entry."
msgstr "如果启用您所有的公开帖子都可以发布到关联的Twitter帐户。在写入条目时您可以选择默认(此处),也可以在过帐选项中分别为每个过帐选择这样做。"
#: twitter.php:350
msgid ""
"<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
"postings relayed to Twitter will lead the visitor to a blank page informing "
"the visitor that the access to your profile has been restricted."
msgstr "注意:由于您的隐私设置(向未知观众隐藏您的个人资料详细信息?)。转发到Twitter的公共帖子中可能包含的链接将把访问者引导到一个空白页面通知访问者访问您的个人资料已受到限制。"
#: twitter.php:353
msgid "Send public postings to Twitter by default"
msgstr "默认情况下将公共帖子发送到Twitter"
#: twitter.php:356
msgid "Mirror all posts from twitter that are no replies"
msgstr "镜像来自Twitter的所有未回复的帖子"
#: twitter.php:359
msgid "Import the remote timeline"
msgstr "导入远程时间线"
#: twitter.php:362
msgid "Automatically create contacts"
msgstr "自动创建联系人"
#: twitter.php:362
msgid ""
"This will automatically create a contact in Friendica as soon as you receive"
" a message from an existing contact via the Twitter network. If you do not "
"enable this, you need to manually add those Twitter contacts in Friendica "
"from whom you would like to see posts here. However if enabled, you cannot "
"merely remove a twitter contact from the Friendica contact list, as it will "
"recreate this contact when they post again."
msgstr "一旦您通过Twitter网络收到来自现有联系人的消息这将在Friendica中自动创建一个联系人。如果您不启用此功能则需要在Friendica中手动添加您希望在此处查看其帖子的Twitter联系人。但是如果启用您不能仅将Twitter联系人从Friendica联系人列表中删除因为它会在他们再次发帖时重新创建此联系人。"
#: twitter.php:614
msgid "Twitter post failed. Queued for retry."
msgstr "推特发帖失败。已排队等待重试。"
#: twitter.php:628
msgid "Settings updated."
msgstr "设置已更新。"
#: twitter.php:638
msgid "Consumer key"
msgstr "使用者密钥"
#: twitter.php:639
msgid "Consumer secret"
msgstr "使用者机密"

View file

@ -0,0 +1,30 @@
<?php
if(! function_exists("string_plural_select_zh_cn")) {
function string_plural_select_zh_cn($n){
$n = intval($n);
return intval(0);
}}
$a->strings['Post to Twitter'] = '发帖到Twitter';
$a->strings['You submitted an empty PIN, please Sign In with Twitter again to get a new one.'] = '您提交的PIN为空请重新登录Twitter获取新PIN。';
$a->strings['Twitter settings updated.'] = '已更新Twitter设置。';
$a->strings['Twitter Import/Export/Mirror'] = 'Twitter导入/导出/镜像';
$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = '找不到Twitter的使用者密钥。请与您的站点管理员联系。';
$a->strings['At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = '在此Friendica实例中Twitter插件已启用但您尚未将您的帐户连接到您的Twitter帐户。要执行此操作请单击下面的按钮从Twitter获取PIN您必须将其复制到下面的输入框中并提交表单。只有您的公共帖子才会发布到Twitter上。';
$a->strings['Log in with Twitter'] = '使用Twitter登录';
$a->strings['Copy the PIN from Twitter here'] = '将Twitter上的PIN复制到此处';
$a->strings['Save Settings'] = '保存设置';
$a->strings['Currently connected to: '] = '当前连接到:';
$a->strings['Disconnect'] = '断开连接';
$a->strings['Allow posting to Twitter'] = '允許發佈到Twitter';
$a->strings['If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.'] = '如果启用您所有的公开帖子都可以发布到关联的Twitter帐户。在写入条目时您可以选择默认(此处),也可以在过帐选项中分别为每个过帐选择这样做。';
$a->strings['<strong>Note</strong>: Due to your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.'] = '注意:由于您的隐私设置(向未知观众隐藏您的个人资料详细信息?)。转发到Twitter的公共帖子中可能包含的链接将把访问者引导到一个空白页面通知访问者访问您的个人资料已受到限制。';
$a->strings['Send public postings to Twitter by default'] = '默认情况下将公共帖子发送到Twitter';
$a->strings['Mirror all posts from twitter that are no replies'] = '镜像来自Twitter的所有未回复的帖子';
$a->strings['Import the remote timeline'] = '导入远程时间线';
$a->strings['Automatically create contacts'] = '自动创建联系人';
$a->strings['This will automatically create a contact in Friendica as soon as you receive a message from an existing contact via the Twitter network. If you do not enable this, you need to manually add those Twitter contacts in Friendica from whom you would like to see posts here. However if enabled, you cannot merely remove a twitter contact from the Friendica contact list, as it will recreate this contact when they post again.'] = '一旦您通过Twitter网络收到来自现有联系人的消息这将在Friendica中自动创建一个联系人。如果您不启用此功能则需要在Friendica中手动添加您希望在此处查看其帖子的Twitter联系人。但是如果启用您不能仅将Twitter联系人从Friendica联系人列表中删除因为它会在他们再次发帖时重新创建此联系人。';
$a->strings['Twitter post failed. Queued for retry.'] = '推特发帖失败。已排队等待重试。';
$a->strings['Settings updated.'] = '设置已更新。';
$a->strings['Consumer key'] = '使用者密钥';
$a->strings['Consumer secret'] = '使用者机密';

BIN
x-twitter/lighter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -0,0 +1,4 @@
{{include file="field_input.tpl" field=$consumerkey}}
{{include file="field_input.tpl" field=$consumersecret}}
<!-- {{include file="field_input.tpl" field=$applicationname}} -->
<div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div>

View file

@ -0,0 +1,25 @@
<div id="twitter-info" >
{{if $l10n.connected}}
<p>{{$l10n.connected nofilter}} <button type="submit" name="twitter-disconnect" value="1">{{$l10n.disconnect}}</button></p>
<p id="twitter-info-block">
<a href="https://twitter.com/{{$account->screen_name}}" target="_twitter"><img id="twitter-avatar" src="{{$account->profile_image_url}}" /></a>
<em>{{$account->description}}</em>
</p>
{{else}}
<p>{{$l10n.invalid}}</p>
<button type="submit" name="twitter-disconnect" value="1">{{$l10n.disconnect}}</button>
{{/if}}
</div>
<div class="clear"></div>
{{include file="field_checkbox.tpl" field=$enable}}
{{if $l10n.privacy_warning}}
<p>{{$l10n.privacy_warning nofilter}}</p>
{{/if}}
{{include file="field_checkbox.tpl" field=$default}}
{{include file="field_checkbox.tpl" field=$thread}}
{{include file="field_checkbox.tpl" field=$mirror}}
{{include file="field_checkbox.tpl" field=$import}}
{{include file="field_checkbox.tpl" field=$create_user}}
{{include file="field_checkbox.tpl" field=$auto_follow}}

12
x-twitter/twitter.css Normal file
View file

@ -0,0 +1,12 @@
#twitter-avatar {
float: left;
width: 48px;
height: 48px;
padding: 2px;
}
#twitter-info-block {
height: 52px;
vertical-align: middle;
}

2500
x-twitter/twitter.php Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,31 @@
<?php
use Friendica\Core\Logger;
use Friendica\DI;
function twitter_sync_run($argv, $argc)
{
require_once 'addon/twitter/twitter.php';
if (function_exists('sys_getloadavg')) {
$load = sys_getloadavg();
$maxload = DI::config()->get('system', 'maxloadavg', 50);
if (intval($load[0]) > $maxload) {
Logger::notice('load too high. Twitter sync deferred to next scheduled run.', ['current' => $load[0], 'max' => $maxload]);
return;
}
}
if ($argc < 3) {
return;
}
$mode = intval($argv[1]);
$uid = intval($argv[2]);
if ($mode == 1) {
twitter_fetchtimeline($uid);
} elseif ($mode == 2) {
twitter_fetchhometimeline($uid);
}
}

View file

@ -0,0 +1,14 @@
version: 2
updates:
- package-ecosystem: npm
directory: '/'
schedule:
interval: daily
time: '11:00'
open-pull-requests-limit: 10
- package-ecosystem: composer
directory: '/'
schedule:
interval: daily
time: '11:00'
open-pull-requests-limit: 10

View file

@ -0,0 +1,12 @@
name: Lint
on: push
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 12
- run: npm ci
- run: npm run lint

View file

@ -0,0 +1,18 @@
name: Test
on: push
jobs:
run:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php-versions: ['7.2', '7.3', '7.4', '8.0']
name: PHP ${{ matrix.php-versions }}
steps:
- uses: actions/checkout@v2
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
- run: composer validate --no-interaction --strict
- run: composer install --no-interaction --prefer-dist
- run: npm test

View file

@ -0,0 +1,5 @@
.DS_Store
vendor
env
*.cache
node_modules

View file

@ -0,0 +1,3 @@
vendor
composer.lock
tests/fixtures

View file

@ -0,0 +1,6 @@
{
"singleQuote": true,
"phpVersion": "7.2",
"trailingCommaPHP": true,
"braceStyle": "psr-2"
}

View file

@ -0,0 +1,46 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at abraham@abrah.am. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

View file

@ -0,0 +1,21 @@
# Contributing to TwitterOAuth
## 👏 Thanks!
Thanks for your interest in contributing to TwitterOAuth. We appreciate contributions small and large.
## 🌱 Grow
If you have an idea for something new or would like to improve something. Please [open a quick issue](https://github.com/abraham/twitteroauth/issues/new) explaining the changes and the reasons for them. Everyone's time is important and we don't want you duplicating work someone else might already be working on.
GitHub has [outlined instructions](https://help.github.com/articles/fork-a-repo/) for forking a repo. To work on an update to this repo, you will:
- Fork the repo
- Make the changes
- Submit a pull request
Once the [pull request](https://help.github.com/articles/about-pull-requests/) is reviewed, if the changes are approved they will be merged in to the project.
## 🐛 Bugs
Please [open a new issue](https://github.com/abraham/twitteroauth/issues/new) and details what you are trying to do, what is happening, and what you expect to happen. Err on the side of providing more details.

View file

@ -0,0 +1,22 @@
Copyright (c) 2009 Abraham Williams - http://abrah.am - abraham@abrah.am
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,11 @@
<span itemprop="name">TwitterOAuth</span> [![Build Status](https://github.com/abraham/twitteroauth/workflows/Test/badge.svg)](https://github.com/abraham/twitteroauth/actions) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/abraham/twitteroauth/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/abraham/twitteroauth/?branch=master) [![Issues Count](https://img.shields.io/github/issues/abraham/twitteroauth.svg)](https://github.com/abraham/twitteroauth/issues) [![Latest Version](https://img.shields.io/packagist/v/abraham/twitteroauth.svg)](https://packagist.org/packages/abraham/twitteroauth) [![Downloads this Month](https://img.shields.io/packagist/dm/abraham/twitteroauth.svg)](https://packagist.org/packages/abraham/twitteroauth)
---
<p itemprop="description">The most popular PHP library for Twitter's OAuth REST API.</p>
See documentation at https://twitteroauth.com.
PHP versions [listed](https://secure.php.net/supported-versions.php) as "active support" or "security fixes only" are supported.
<img src="https://raw.githubusercontent.com/abraham/twitteroauth-com/master/images/twitter-logo-blue.png" itemprop="image" alt="Twitter bird" width="200px">

View file

@ -0,0 +1,35 @@
<?php
/**
* Use to autoload needed classes without Composer.
*
* @param string $class The fully-qualified class name.
* @return void
*/
spl_autoload_register(function ($class) {
// project-specific namespace prefix
$prefix = 'Abraham\\TwitterOAuth\\';
// base directory for the namespace prefix
$base_dir = __DIR__ . '/src/';
// does the class use the namespace prefix?
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
// no, move to the next registered autoloader
return;
}
// get the relative class name
$relative_class = substr($class, $len);
// replace the namespace prefix with the base directory, replace namespace
// separators with directory separators in the relative class name, append
// with .php
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
// if the file exists, require it
if (file_exists($file)) {
require $file;
}
});

View file

@ -0,0 +1,55 @@
{
"name": "abraham/twitteroauth",
"type": "library",
"description": "The most popular PHP library for use with the Twitter OAuth REST API.",
"keywords": [
"twitter",
"api",
"oauth",
"rest",
"social",
"twitter api",
"twitter oauth"
],
"license": "MIT",
"homepage": "https://twitteroauth.com",
"authors": [
{
"name": "Abraham Williams",
"email": "abraham@abrah.am",
"homepage": "https://abrah.am",
"role": "Developer"
}
],
"support": {
"source": "https://github.com/abraham/twitteroauth",
"issues": "https://github.com/abraham/twitteroauth/issues"
},
"repositories": [
{
"type": "git",
"url": "https://github.com/morozov/php-vcr"
},
{
"type": "git",
"url": "https://github.com/abraham/phpunit-testlistener-vcr"
}
],
"require": {
"php": "^7.2 || ^7.3 || ^7.4 || ^8.0",
"ext-curl": "*",
"composer/ca-bundle": "^1.2"
},
"require-dev": {
"phpunit/phpunit": "^8",
"squizlabs/php_codesniffer": "^3",
"phpmd/phpmd": "^2",
"php-vcr/php-vcr": "^1",
"php-vcr/phpunit-testlistener-vcr": "dev-php-8"
},
"autoload": {
"psr-4": {
"Abraham\\TwitterOAuth\\": "src"
}
}
}

2761
x-twitter/vendor/abraham/twitteroauth/composer.lock generated vendored Normal file

File diff suppressed because it is too large Load diff

511
x-twitter/vendor/abraham/twitteroauth/package-lock.json generated vendored Normal file
View file

@ -0,0 +1,511 @@
{
"name": "twitteroauth",
"version": "0.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@prettier/plugin-php": {
"version": "0.16.0",
"resolved": "https://registry.npmjs.org/@prettier/plugin-php/-/plugin-php-0.16.0.tgz",
"integrity": "sha512-HG/FamMUtq4/9hZmeuvwy0BWmOr4m9OWacvLSUmmgUrQd4+TRZW7Nqs2MAJkwSNiBIgAKTt2Vw9PK+33Gxxx8g==",
"dev": true,
"requires": {
"linguist-languages": "^7.5.1",
"mem": "^8.0.0",
"php-parser": "3.0.2"
}
},
"ansi-regex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
"color-convert": "^1.9.0"
}
},
"camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true
},
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
},
"dependencies": {
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
}
}
}
},
"cliui": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
"integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"dev": true,
"requires": {
"string-width": "^3.1.0",
"strip-ansi": "^5.2.0",
"wrap-ansi": "^5.1.0"
}
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"requires": {
"color-name": "1.1.3"
}
},
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
"concurrently": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz",
"integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==",
"dev": true,
"requires": {
"chalk": "^2.4.2",
"date-fns": "^2.0.1",
"lodash": "^4.17.15",
"read-pkg": "^4.0.1",
"rxjs": "^6.5.2",
"spawn-command": "^0.0.2-1",
"supports-color": "^6.1.0",
"tree-kill": "^1.2.2",
"yargs": "^13.3.0"
}
},
"date-fns": {
"version": "2.15.0",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.15.0.tgz",
"integrity": "sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ==",
"dev": true
},
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
},
"emoji-regex": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
"dev": true
},
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
"requires": {
"is-arrayish": "^0.2.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
},
"find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
"locate-path": "^3.0.0"
}
},
"get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
"hosted-git-info": {
"version": "2.8.8",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
"integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
"dev": true
},
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
"dev": true
},
"linguist-languages": {
"version": "7.11.1",
"resolved": "https://registry.npmjs.org/linguist-languages/-/linguist-languages-7.11.1.tgz",
"integrity": "sha512-+cRUk+1WTbydcdzipXQER2iilX+wMrb1LPkbkGuDP/IcGPJRDmOZH6Olf1iH6sHlHwPnJYiNJH39YsFCVZxvUQ==",
"dev": true
},
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
}
},
"lodash": {
"version": "4.17.19",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
"integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
"dev": true
},
"map-age-cleaner": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
"integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
"dev": true,
"requires": {
"p-defer": "^1.0.0"
}
},
"mem": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/mem/-/mem-8.0.0.tgz",
"integrity": "sha512-qrcJOe6uD+EW8Wrci1Vdiua/15Xw3n/QnaNXE7varnB6InxSk7nu3/i5jfy3S6kWxr8WYJ6R1o0afMUtvorTsA==",
"dev": true,
"requires": {
"map-age-cleaner": "^0.1.3",
"mimic-fn": "^3.1.0"
}
},
"mimic-fn": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz",
"integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==",
"dev": true
},
"normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
"integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
"dev": true,
"requires": {
"hosted-git-info": "^2.1.4",
"resolve": "^1.10.0",
"semver": "2 || 3 || 4 || 5",
"validate-npm-package-license": "^3.0.1"
}
},
"p-defer": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
"integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
"dev": true
},
"p-limit": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
"requires": {
"p-try": "^2.0.0"
}
},
"p-locate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
"p-limit": "^2.0.0"
}
},
"p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
},
"parse-json": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
"integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
"dev": true,
"requires": {
"error-ex": "^1.3.1",
"json-parse-better-errors": "^1.0.1"
}
},
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"dev": true
},
"path-parse": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
"dev": true
},
"php-parser": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/php-parser/-/php-parser-3.0.2.tgz",
"integrity": "sha512-a7y1+odEGsceLDLpu7oNyspZ0pK8FMWJOoim4/yd82AtnEZNLdCLZ67arnOQZ9K0lHJiSp4/7lVUpGELVxE14w==",
"dev": true
},
"pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true
},
"prettier": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz",
"integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==",
"dev": true
},
"prettier-plugin-package": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/prettier-plugin-package/-/prettier-plugin-package-1.3.0.tgz",
"integrity": "sha512-KPNHR/Jm2zTevBp1SnjzMnooO1BOQW2bixVbOp8flOJoW+dxdDwEncObfsKZdkjwrv6AIH4oWqm5EO/etDmK9Q==",
"dev": true
},
"read-pkg": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
"integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
"dev": true,
"requires": {
"normalize-package-data": "^2.3.2",
"parse-json": "^4.0.0",
"pify": "^3.0.0"
}
},
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
},
"require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
},
"resolve": {
"version": "1.17.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
"integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
"dev": true,
"requires": {
"path-parse": "^1.0.6"
}
},
"rxjs": {
"version": "6.6.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
"integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
}
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
},
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
},
"spawn-command": {
"version": "0.0.2-1",
"resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
"integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=",
"dev": true
},
"spdx-correct": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
"integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
"dev": true,
"requires": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-exceptions": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
"integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
"dev": true
},
"spdx-expression-parse": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"dev": true,
"requires": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-license-ids": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
"integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
"dev": true
},
"string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"requires": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^5.1.0"
}
},
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
}
},
"supports-color": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
"integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
}
},
"tree-kill": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
"dev": true
},
"tslib": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
"integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
"dev": true
},
"validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
"requires": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
}
},
"which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
},
"wrap-ansi": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
"integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.0",
"string-width": "^3.0.0",
"strip-ansi": "^5.0.0"
}
},
"y18n": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
"dev": true
},
"yargs": {
"version": "13.3.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
"integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"dev": true,
"requires": {
"cliui": "^5.0.0",
"find-up": "^3.0.0",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^3.0.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^13.1.2"
}
},
"yargs-parser": {
"version": "13.1.2",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
"integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
"dev": true,
"requires": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
}
}
}

View file

@ -0,0 +1,44 @@
{
"name": "twitteroauth",
"version": "0.0.0",
"description": "The most popular PHP library for use with the Twitter OAuth REST API.",
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/abraham/twitteroauth.git"
},
"author": "Abraham Williams <abraham@abrah.am>",
"homepage": "https://github.com/abraham/twitteroauth#readme",
"bugs": {
"url": "https://github.com/abraham/twitteroauth/issues"
},
"scripts": {
"fix": "concurrently npm:fix:*",
"fix:phpcbf": "./vendor/bin/phpcbf src tests --standard=PSR12",
"fix:prettier": "prettier . --write",
"lint": "concurrently npm:lint:*",
"lint:phpcs": "./vendor/bin/phpcs src tests --standard=PSR12",
"lint:prettier": "prettier . --check",
"postinstall": "composer install --no-interaction",
"test": "./vendor/bin/phpunit"
},
"keywords": [
"twitter",
"api",
"oauth",
"rest",
"social",
"twitter-api",
"twitter-oauth"
],
"dependencies": {},
"devDependencies": {
"@prettier/plugin-php": "0.16.0",
"concurrently": "^5.3.0",
"prettier": "2.2.1",
"prettier-plugin-package": "1.3.0"
},
"directories": {
"test": "tests"
}
}

View file

@ -0,0 +1,15 @@
<?xml version="1.0"?>
<ruleset name="My first PHPMD rule set"
xmlns="http://pmd.sf.net/ruleset/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
<description>Keep TwitterOAuth source code clean.</description>
<!-- <rule ref="rulesets/cleancode.xml" /> -->
<rule ref="rulesets/codesize.xml" />
<rule ref="rulesets/controversial.xml" />
<rule ref="rulesets/design.xml" />
<rule ref="rulesets/naming.xml" />
<rule ref="rulesets/unusedcode.xml" />
</ruleset>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
colors="true"
bootstrap="tests/bootstrap.php"
testdox="true">
<testsuites>
<testsuite name="TwitterOAuth Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<listeners>
<listener
class="VCR\PHPUnit\TestListener\VCRTestListener"
file="vendor/php-vcr/phpunit-testlistener-vcr/src/VCRTestListener.php" />
</listeners>
</phpunit>

View file

@ -0,0 +1,109 @@
<?php
declare(strict_types=1);
namespace Abraham\TwitterOAuth;
/**
* Handle setting and storing config for TwitterOAuth.
*
* @author Abraham Williams <abraham@abrah.am>
*/
class Config
{
/** @var int How long to wait for a response from the API */
protected $timeout = 5;
/** @var int how long to wait while connecting to the API */
protected $connectionTimeout = 5;
/** @var int How many times we retry request when API is down */
protected $maxRetries = 0;
/** @var int Delay in seconds before we retry the request */
protected $retriesDelay = 1;
/**
* Decode JSON Response as associative Array
*
* @see http://php.net/manual/en/function.json-decode.php
*
* @var bool
*/
protected $decodeJsonAsArray = false;
/** @var string User-Agent header */
protected $userAgent = 'TwitterOAuth (+https://twitteroauth.com)';
/** @var array Store proxy connection details */
protected $proxy = [];
/** @var bool Whether to encode the curl requests with gzip or not */
protected $gzipEncoding = true;
/** @var integer Size for Chunked Uploads */
protected $chunkSize = 250000; // 0.25 MegaByte
/**
* Set the connection and response timeouts.
*
* @param int $connectionTimeout
* @param int $timeout
*/
public function setTimeouts(int $connectionTimeout, int $timeout): void
{
$this->connectionTimeout = $connectionTimeout;
$this->timeout = $timeout;
}
/**
* Set the number of times to retry on error and how long between each.
*
* @param int $maxRetries
* @param int $retriesDelay
*/
public function setRetries(int $maxRetries, int $retriesDelay): void
{
$this->maxRetries = $maxRetries;
$this->retriesDelay = $retriesDelay;
}
/**
* @param bool $value
*/
public function setDecodeJsonAsArray(bool $value): void
{
$this->decodeJsonAsArray = $value;
}
/**
* @param string $userAgent
*/
public function setUserAgent(string $userAgent): void
{
$this->userAgent = $userAgent;
}
/**
* @param array $proxy
*/
public function setProxy(array $proxy): void
{
$this->proxy = $proxy;
}
/**
* Whether to encode the curl requests with gzip or not.
*
* @param boolean $gzipEncoding
*/
public function setGzipEncoding(bool $gzipEncoding): void
{
$this->gzipEncoding = $gzipEncoding;
}
/**
* Set the size of each part of file for chunked media upload.
*
* @param int $value
*/
public function setChunkSize(int $value): void
{
$this->chunkSize = $value;
}
}

View file

@ -0,0 +1,43 @@
<?php
/**
* The MIT License
* Copyright (c) 2007 Andy Smith
*/
declare(strict_types=1);
namespace Abraham\TwitterOAuth;
class Consumer
{
/** @var string */
public $key;
/** @var string */
public $secret;
/** @var string|null */
public $callbackUrl;
/**
* @param string|null $key
* @param string|null $secret
* @param null $callbackUrl
*/
public function __construct(
?string $key,
?string $secret,
?string $callbackUrl = null
) {
$this->key = $key;
$this->secret = $secret;
$this->callbackUrl = $callbackUrl;
}
/**
* @return string
*/
public function __toString()
{
return "Consumer[key=$this->key,secret=$this->secret]";
}
}

View file

@ -0,0 +1,46 @@
<?php
/**
* The MIT License
* Copyright (c) 2007 Andy Smith
*/
declare(strict_types=1);
namespace Abraham\TwitterOAuth;
/**
* The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
* where the Signature Base String is the text and the key is the concatenated values (each first
* encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
* character (ASCII code 38) even if empty.
* - Chapter 9.2 ("HMAC-SHA1")
*/
class HmacSha1 extends SignatureMethod
{
/**
* {@inheritDoc}
*/
public function getName()
{
return 'HMAC-SHA1';
}
/**
* {@inheritDoc}
*/
public function buildSignature(
Request $request,
Consumer $consumer,
Token $token = null
): string {
$signatureBase = $request->getSignatureBaseString();
$parts = [$consumer->secret, null !== $token ? $token->secret : ''];
$parts = Util::urlencodeRfc3986($parts);
$key = implode('&', $parts);
return base64_encode(hash_hmac('sha1', $signatureBase, $key, true));
}
}

View file

@ -0,0 +1,289 @@
<?php
/**
* The MIT License
* Copyright (c) 2007 Andy Smith
*/
declare(strict_types=1);
namespace Abraham\TwitterOAuth;
class Request
{
protected $parameters;
protected $httpMethod;
protected $httpUrl;
protected $json;
public static $version = '1.0';
/**
* Constructor
*
* @param string $httpMethod
* @param string $httpUrl
* @param array|null $parameters
*/
public function __construct(
string $httpMethod,
string $httpUrl,
?array $parameters = []
) {
$parameters = array_merge(
Util::parseParameters(parse_url($httpUrl, PHP_URL_QUERY)),
$parameters
);
$this->parameters = $parameters;
$this->httpMethod = $httpMethod;
$this->httpUrl = $httpUrl;
}
/**
* pretty much a helper function to set up the request
*
* @param Consumer $consumer
* @param Token $token
* @param string $httpMethod
* @param string $httpUrl
* @param array $parameters
*
* @return Request
*/
public static function fromConsumerAndToken(
Consumer $consumer,
Token $token = null,
string $httpMethod,
string $httpUrl,
array $parameters = [],
$json = false
) {
$defaults = [
'oauth_version' => Request::$version,
'oauth_nonce' => Request::generateNonce(),
'oauth_timestamp' => time(),
'oauth_consumer_key' => $consumer->key,
];
if (null !== $token) {
$defaults['oauth_token'] = $token->key;
}
// The json payload is not included in the signature on json requests,
// therefore it shouldn't be included in the parameters array.
if ($json) {
$parameters = $defaults;
} else {
$parameters = array_merge($defaults, $parameters);
}
return new Request($httpMethod, $httpUrl, $parameters);
}
/**
* @param string $name
* @param string $value
*/
public function setParameter(string $name, string $value)
{
$this->parameters[$name] = $value;
}
/**
* @param string $name
*
* @return string|null
*/
public function getParameter(string $name): ?string
{
return isset($this->parameters[$name])
? $this->parameters[$name]
: null;
}
/**
* @return array
*/
public function getParameters(): array
{
return $this->parameters;
}
/**
* @param string $name
*/
public function removeParameter(string $name): void
{
unset($this->parameters[$name]);
}
/**
* The request parameters, sorted and concatenated into a normalized string.
*
* @return string
*/
public function getSignableParameters(): string
{
// Grab all parameters
$params = $this->parameters;
// Remove oauth_signature if present
// Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.")
if (isset($params['oauth_signature'])) {
unset($params['oauth_signature']);
}
return Util::buildHttpQuery($params);
}
/**
* Returns the base string of this request
*
* The base string defined as the method, the url
* and the parameters (normalized), each urlencoded
* and the concated with &.
*
* @return string
*/
public function getSignatureBaseString(): string
{
$parts = [
$this->getNormalizedHttpMethod(),
$this->getNormalizedHttpUrl(),
$this->getSignableParameters(),
];
$parts = Util::urlencodeRfc3986($parts);
return implode('&', $parts);
}
/**
* Returns the HTTP Method in uppercase
*
* @return string
*/
public function getNormalizedHttpMethod(): string
{
return strtoupper($this->httpMethod);
}
/**
* parses the url and rebuilds it to be
* scheme://host/path
*
* @return string
*/
public function getNormalizedHttpUrl(): string
{
$parts = parse_url($this->httpUrl);
$scheme = $parts['scheme'];
$host = strtolower($parts['host']);
$path = $parts['path'];
return "$scheme://$host$path";
}
/**
* Builds a url usable for a GET request
*
* @return string
*/
public function toUrl(): string
{
$postData = $this->toPostdata();
$out = $this->getNormalizedHttpUrl();
if ($postData) {
$out .= '?' . $postData;
}
return $out;
}
/**
* Builds the data one would send in a POST request
*
* @return string
*/
public function toPostdata(): string
{
return Util::buildHttpQuery($this->parameters);
}
/**
* Builds the Authorization: header
*
* @return string
* @throws TwitterOAuthException
*/
public function toHeader(): string
{
$first = true;
$out = 'Authorization: OAuth';
foreach ($this->parameters as $k => $v) {
if (substr($k, 0, 5) != 'oauth') {
continue;
}
if (is_array($v)) {
throw new TwitterOAuthException(
'Arrays not supported in headers'
);
}
$out .= $first ? ' ' : ', ';
$out .=
Util::urlencodeRfc3986($k) .
'="' .
Util::urlencodeRfc3986($v) .
'"';
$first = false;
}
return $out;
}
/**
* @return string
*/
public function __toString(): string
{
return $this->toUrl();
}
/**
* @param SignatureMethod $signatureMethod
* @param Consumer $consumer
* @param Token $token
*/
public function signRequest(
SignatureMethod $signatureMethod,
Consumer $consumer,
Token $token = null
) {
$this->setParameter(
'oauth_signature_method',
$signatureMethod->getName()
);
$signature = $this->buildSignature($signatureMethod, $consumer, $token);
$this->setParameter('oauth_signature', $signature);
}
/**
* @param SignatureMethod $signatureMethod
* @param Consumer $consumer
* @param Token $token
*
* @return string
*/
public function buildSignature(
SignatureMethod $signatureMethod,
Consumer $consumer,
Token $token = null
): string {
return $signatureMethod->buildSignature($this, $consumer, $token);
}
/**
* @return string
*/
public static function generateNonce(): string
{
return md5(microtime() . mt_rand());
}
}

View file

@ -0,0 +1,109 @@
<?php
declare(strict_types=1);
namespace Abraham\TwitterOAuth;
/**
* The result of the most recent API request.
*
* @author Abraham Williams <abraham@abrah.am>
*/
class Response
{
/** @var string|null API path from the most recent request */
private $apiPath;
/** @var int HTTP status code from the most recent request */
private $httpCode = 0;
/** @var array HTTP headers from the most recent request */
private $headers = [];
/** @var array|object Response body from the most recent request */
private $body = [];
/** @var array HTTP headers from the most recent request that start with X */
private $xHeaders = [];
/**
* @param string $apiPath
*/
public function setApiPath(string $apiPath): void
{
$this->apiPath = $apiPath;
}
/**
* @return string|null
*/
public function getApiPath(): ?string
{
return $this->apiPath;
}
/**
* @param array|object $body
*/
public function setBody($body)
{
$this->body = $body;
}
/**
* @return array|object|string
*/
public function getBody()
{
return $this->body;
}
/**
* @param int $httpCode
*/
public function setHttpCode(int $httpCode): void
{
$this->httpCode = $httpCode;
}
/**
* @return int
*/
public function getHttpCode(): int
{
return $this->httpCode;
}
/**
* @param array $headers
*/
public function setHeaders(array $headers): void
{
foreach ($headers as $key => $value) {
if (substr($key, 0, 1) == 'x') {
$this->xHeaders[$key] = $value;
}
}
$this->headers = $headers;
}
/**
* @return array
*/
public function getsHeaders(): array
{
return $this->headers;
}
/**
* @param array $xHeaders
*/
public function setXHeaders(array $xHeaders = []): void
{
$this->xHeaders = $xHeaders;
}
/**
* @return array
*/
public function getXHeaders(): array
{
return $this->xHeaders;
}
}

View file

@ -0,0 +1,78 @@
<?php
/**
* The MIT License
* Copyright (c) 2007 Andy Smith
*/
declare(strict_types=1);
namespace Abraham\TwitterOAuth;
/**
* A class for implementing a Signature Method
* See section 9 ("Signing Requests") in the spec
*/
abstract class SignatureMethod
{
/**
* Needs to return the name of the Signature Method (ie HMAC-SHA1)
*
* @return string
*/
abstract public function getName();
/**
* Build up the signature
* NOTE: The output of this function MUST NOT be urlencoded.
* the encoding is handled in OAuthRequest when the final
* request is serialized
*
* @param Request $request
* @param Consumer $consumer
* @param Token $token
*
* @return string
*/
abstract public function buildSignature(
Request $request,
Consumer $consumer,
Token $token = null
);
/**
* Verifies that a given signature is correct
*
* @param Request $request
* @param Consumer $consumer
* @param Token $token
* @param string $signature
*
* @return bool
*/
public function checkSignature(
Request $request,
Consumer $consumer,
Token $token,
string $signature
): bool {
$built = $this->buildSignature($request, $consumer, $token);
// Check for zero length, although unlikely here
if (strlen($built) == 0 || strlen($signature) == 0) {
return false;
}
if (strlen($built) != strlen($signature)) {
return false;
}
// Avoid a timing leak with a (hopefully) time insensitive compare
$result = 0;
for ($i = 0; $i < strlen($signature); $i++) {
$result |= ord($built[$i]) ^ ord($signature[$i]);
}
return $result == 0;
}
}

View file

@ -0,0 +1,43 @@
<?php
/**
* The MIT License
* Copyright (c) 2007 Andy Smith
*/
declare(strict_types=1);
namespace Abraham\TwitterOAuth;
class Token
{
/** @var string */
public $key;
/** @var string */
public $secret;
/**
* @param string $key The OAuth Token
* @param string $secret The OAuth Token Secret
*/
public function __construct(?string $key, ?string $secret)
{
$this->key = $key;
$this->secret = $secret;
}
/**
* Generates the basic string serialization of a token that a server
* would respond to request_token and access_token calls with
*
* @return string
*/
public function __toString(): string
{
return sprintf(
'oauth_token=%s&oauth_token_secret=%s',
Util::urlencodeRfc3986($this->key),
Util::urlencodeRfc3986($this->secret)
);
}
}

View file

@ -0,0 +1,727 @@
<?php
/**
* The most popular PHP library for use with the Twitter OAuth REST API.
*
* @license MIT
*/
declare(strict_types=1);
namespace Abraham\TwitterOAuth;
use Abraham\TwitterOAuth\Util\JsonDecoder;
use Composer\CaBundle\CaBundle;
/**
* TwitterOAuth class for interacting with the Twitter API.
*
* @author Abraham Williams <abraham@abrah.am>
*/
class TwitterOAuth extends Config
{
private const API_VERSION = '1.1';
private const API_HOST = 'https://api.twitter.com';
private const UPLOAD_HOST = 'https://upload.twitter.com';
/** @var Response details about the result of the last request */
private $response;
/** @var string|null Application bearer token */
private $bearer;
/** @var Consumer Twitter application details */
private $consumer;
/** @var Token|null User access token details */
private $token;
/** @var HmacSha1 OAuth 1 signature type used by Twitter */
private $signatureMethod;
/** @var int Number of attempts we made for the request */
private $attempts = 0;
/**
* Constructor
*
* @param string $consumerKey The Application Consumer Key
* @param string $consumerSecret The Application Consumer Secret
* @param string|null $oauthToken The Client Token (optional)
* @param string|null $oauthTokenSecret The Client Token Secret (optional)
*/
public function __construct(
string $consumerKey,
string $consumerSecret,
?string $oauthToken = null,
?string $oauthTokenSecret = null
) {
$this->resetLastResponse();
$this->signatureMethod = new HmacSha1();
$this->consumer = new Consumer($consumerKey, $consumerSecret);
if (!empty($oauthToken) && !empty($oauthTokenSecret)) {
$this->setOauthToken($oauthToken, $oauthTokenSecret);
}
if (empty($oauthToken) && !empty($oauthTokenSecret)) {
$this->setBearer($oauthTokenSecret);
}
}
/**
* @param string $oauthToken
* @param string $oauthTokenSecret
*/
public function setOauthToken(
string $oauthToken,
string $oauthTokenSecret
): void {
$this->token = new Token($oauthToken, $oauthTokenSecret);
$this->bearer = null;
}
/**
* @param string $oauthTokenSecret
*/
public function setBearer(string $oauthTokenSecret): void
{
$this->bearer = $oauthTokenSecret;
$this->token = null;
}
/**
* @return string|null
*/
public function getLastApiPath(): ?string
{
return $this->response->getApiPath();
}
/**
* @return int
*/
public function getLastHttpCode(): int
{
return $this->response->getHttpCode();
}
/**
* @return array
*/
public function getLastXHeaders(): array
{
return $this->response->getXHeaders();
}
/**
* @return array|object|null
*/
public function getLastBody()
{
return $this->response->getBody();
}
/**
* Resets the last response cache.
*/
public function resetLastResponse(): void
{
$this->response = new Response();
}
/**
* Resets the attempts number.
*/
private function resetAttemptsNumber(): void
{
$this->attempts = 0;
}
/**
* Delays the retries when they're activated.
*/
private function sleepIfNeeded(): void
{
if ($this->maxRetries && $this->attempts) {
sleep($this->retriesDelay);
}
}
/**
* Make URLs for user browser navigation.
*
* @param string $path
* @param array $parameters
*
* @return string
*/
public function url(string $path, array $parameters): string
{
$this->resetLastResponse();
$this->response->setApiPath($path);
$query = http_build_query($parameters);
return sprintf('%s/%s?%s', self::API_HOST, $path, $query);
}
/**
* Make /oauth/* requests to the API.
*
* @param string $path
* @param array $parameters
*
* @return array
* @throws TwitterOAuthException
*/
public function oauth(string $path, array $parameters = []): array
{
$response = [];
$this->resetLastResponse();
$this->response->setApiPath($path);
$url = sprintf('%s/%s', self::API_HOST, $path);
$result = $this->oAuthRequest($url, 'POST', $parameters);
if ($this->getLastHttpCode() != 200) {
throw new TwitterOAuthException($result);
}
parse_str($result, $response);
$this->response->setBody($response);
return $response;
}
/**
* Make /oauth2/* requests to the API.
*
* @param string $path
* @param array $parameters
*
* @return array|object
*/
public function oauth2(string $path, array $parameters = [])
{
$method = 'POST';
$this->resetLastResponse();
$this->response->setApiPath($path);
$url = sprintf('%s/%s', self::API_HOST, $path);
$request = Request::fromConsumerAndToken(
$this->consumer,
$this->token,
$method,
$url,
$parameters
);
$authorization =
'Authorization: Basic ' .
$this->encodeAppAuthorization($this->consumer);
$result = $this->request(
$request->getNormalizedHttpUrl(),
$method,
$authorization,
$parameters
);
$response = JsonDecoder::decode($result, $this->decodeJsonAsArray);
$this->response->setBody($response);
return $response;
}
/**
* Make GET requests to the API.
*
* @param string $path
* @param array $parameters
*
* @return array|object
*/
public function get(string $path, array $parameters = [])
{
return $this->http('GET', self::API_HOST, $path, $parameters, false);
}
/**
* Make POST requests to the API.
*
* @param string $path
* @param array $parameters
* @param bool $json
*
* @return array|object
*/
public function post(
string $path,
array $parameters = [],
bool $json = false
) {
return $this->http('POST', self::API_HOST, $path, $parameters, $json);
}
/**
* Make DELETE requests to the API.
*
* @param string $path
* @param array $parameters
*
* @return array|object
*/
public function delete(string $path, array $parameters = [])
{
return $this->http('DELETE', self::API_HOST, $path, $parameters, false);
}
/**
* Make PUT requests to the API.
*
* @param string $path
* @param array $parameters
*
* @return array|object
*/
public function put(string $path, array $parameters = [])
{
return $this->http('PUT', self::API_HOST, $path, $parameters, false);
}
/**
* Upload media to upload.twitter.com.
*
* @param string $path
* @param array $parameters
* @param boolean $chunked
*
* @return array|object
*/
public function upload(
string $path,
array $parameters = [],
bool $chunked = false
) {
if ($chunked) {
return $this->uploadMediaChunked($path, $parameters);
} else {
return $this->uploadMediaNotChunked($path, $parameters);
}
}
/**
* Progression of media upload
*
* @param string $media_id
*
* @return array|object
*/
public function mediaStatus(string $media_id)
{
return $this->http(
'GET',
self::UPLOAD_HOST,
'media/upload',
[
'command' => 'STATUS',
'media_id' => $media_id,
],
false
);
}
/**
* Private method to upload media (not chunked) to upload.twitter.com.
*
* @param string $path
* @param array $parameters
*
* @return array|object
*/
private function uploadMediaNotChunked(string $path, array $parameters)
{
if (
!is_readable($parameters['media']) ||
($file = file_get_contents($parameters['media'])) === false
) {
throw new \InvalidArgumentException(
'You must supply a readable file'
);
}
$parameters['media'] = base64_encode($file);
return $this->http(
'POST',
self::UPLOAD_HOST,
$path,
$parameters,
false
);
}
/**
* Private method to upload media (chunked) to upload.twitter.com.
*
* @param string $path
* @param array $parameters
*
* @return array|object
*/
private function uploadMediaChunked(string $path, array $parameters)
{
$init = $this->http(
'POST',
self::UPLOAD_HOST,
$path,
$this->mediaInitParameters($parameters),
false
);
// Append
$segmentIndex = 0;
$media = fopen($parameters['media'], 'rb');
while (!feof($media)) {
$this->http(
'POST',
self::UPLOAD_HOST,
'media/upload',
[
'command' => 'APPEND',
'media_id' => $init->media_id_string,
'segment_index' => $segmentIndex++,
'media_data' => base64_encode(
fread($media, $this->chunkSize)
),
],
false
);
}
fclose($media);
// Finalize
$finalize = $this->http(
'POST',
self::UPLOAD_HOST,
'media/upload',
[
'command' => 'FINALIZE',
'media_id' => $init->media_id_string,
],
false
);
return $finalize;
}
/**
* Private method to get params for upload media chunked init.
* Twitter docs: https://dev.twitter.com/rest/reference/post/media/upload-init.html
*
* @param array $parameters
*
* @return array
*/
private function mediaInitParameters(array $parameters): array
{
$allowed_keys = [
'media_type',
'additional_owners',
'media_category',
'shared',
];
$base = [
'command' => 'INIT',
'total_bytes' => filesize($parameters['media']),
];
$allowed_parameters = array_intersect_key(
$parameters,
array_flip($allowed_keys)
);
return array_merge($base, $allowed_parameters);
}
/**
* Cleanup any parameters that are known not to work.
*
* @param array $parameters
*
* @return array
*/
private function cleanUpParameters(array $parameters)
{
foreach ($parameters as $key => $value) {
// PHP coerces `true` to `"1"` which some Twitter APIs don't like.
if (is_bool($value)) {
$parameters[$key] = var_export($value, true);
}
}
return $parameters;
}
/**
* @param string $method
* @param string $host
* @param string $path
* @param array $parameters
* @param bool $json
*
* @return array|object
*/
private function http(
string $method,
string $host,
string $path,
array $parameters,
bool $json
) {
$this->resetLastResponse();
$this->resetAttemptsNumber();
$url = sprintf('%s/%s/%s.json', $host, self::API_VERSION, $path);
$this->response->setApiPath($path);
if (!$json) {
$parameters = $this->cleanUpParameters($parameters);
}
return $this->makeRequests($url, $method, $parameters, $json);
}
/**
*
* Make requests and retry them (if enabled) in case of Twitter's problems.
*
* @param string $method
* @param string $url
* @param string $method
* @param array $parameters
* @param bool $json
*
* @return array|object
*/
private function makeRequests(
string $url,
string $method,
array $parameters,
bool $json
) {
do {
$this->sleepIfNeeded();
$result = $this->oAuthRequest($url, $method, $parameters, $json);
$response = JsonDecoder::decode($result, $this->decodeJsonAsArray);
$this->response->setBody($response);
$this->attempts++;
// Retry up to our $maxRetries number if we get errors greater than 500 (over capacity etc)
} while ($this->requestsAvailable());
return $response;
}
/**
* Checks if we have to retry request if API is down.
*
* @return bool
*/
private function requestsAvailable(): bool
{
return $this->maxRetries &&
$this->attempts <= $this->maxRetries &&
$this->getLastHttpCode() >= 500;
}
/**
* Format and sign an OAuth / API request
*
* @param string $url
* @param string $method
* @param array $parameters
* @param bool $json
*
* @return string
* @throws TwitterOAuthException
*/
private function oAuthRequest(
string $url,
string $method,
array $parameters,
bool $json = false
) {
$request = Request::fromConsumerAndToken(
$this->consumer,
$this->token,
$method,
$url,
$parameters,
$json
);
if (array_key_exists('oauth_callback', $parameters)) {
// Twitter doesn't like oauth_callback as a parameter.
unset($parameters['oauth_callback']);
}
if ($this->bearer === null) {
$request->signRequest(
$this->signatureMethod,
$this->consumer,
$this->token
);
$authorization = $request->toHeader();
if (array_key_exists('oauth_verifier', $parameters)) {
// Twitter doesn't always work with oauth in the body and in the header
// and it's already included in the $authorization header
unset($parameters['oauth_verifier']);
}
} else {
$authorization = 'Authorization: Bearer ' . $this->bearer;
}
return $this->request(
$request->getNormalizedHttpUrl(),
$method,
$authorization,
$parameters,
$json
);
}
/**
* Set Curl options.
*
* @return array
*/
private function curlOptions(): array
{
$bundlePath = CaBundle::getSystemCaRootBundlePath();
$options = [
// CURLOPT_VERBOSE => true,
CURLOPT_CONNECTTIMEOUT => $this->connectionTimeout,
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_TIMEOUT => $this->timeout,
CURLOPT_USERAGENT => $this->userAgent,
$this->curlCaOpt($bundlePath) => $bundlePath,
];
if ($this->gzipEncoding) {
$options[CURLOPT_ENCODING] = 'gzip';
}
if (!empty($this->proxy)) {
$options[CURLOPT_PROXY] = $this->proxy['CURLOPT_PROXY'];
$options[CURLOPT_PROXYUSERPWD] =
$this->proxy['CURLOPT_PROXYUSERPWD'];
$options[CURLOPT_PROXYPORT] = $this->proxy['CURLOPT_PROXYPORT'];
$options[CURLOPT_PROXYAUTH] = CURLAUTH_BASIC;
$options[CURLOPT_PROXYTYPE] = CURLPROXY_HTTP;
}
return $options;
}
/**
* Make an HTTP request
*
* @param string $url
* @param string $method
* @param string $authorization
* @param array $postfields
* @param bool $json
*
* @return string
* @throws TwitterOAuthException
*/
private function request(
string $url,
string $method,
string $authorization,
array $postfields,
bool $json = false
): string {
$options = $this->curlOptions();
$options[CURLOPT_URL] = $url;
$options[CURLOPT_HTTPHEADER] = [
'Accept: application/json',
$authorization,
'Expect:',
];
switch ($method) {
case 'GET':
break;
case 'POST':
$options[CURLOPT_POST] = true;
if ($json) {
$options[CURLOPT_HTTPHEADER][] =
'Content-type: application/json';
$options[CURLOPT_POSTFIELDS] = json_encode($postfields);
} else {
$options[CURLOPT_POSTFIELDS] = Util::buildHttpQuery(
$postfields
);
}
break;
case 'DELETE':
$options[CURLOPT_CUSTOMREQUEST] = 'DELETE';
break;
case 'PUT':
$options[CURLOPT_CUSTOMREQUEST] = 'PUT';
break;
}
if (
in_array($method, ['GET', 'PUT', 'DELETE']) &&
!empty($postfields)
) {
$options[CURLOPT_URL] .= '?' . Util::buildHttpQuery($postfields);
}
$curlHandle = curl_init();
curl_setopt_array($curlHandle, $options);
$response = curl_exec($curlHandle);
// Throw exceptions on cURL errors.
if (curl_errno($curlHandle) > 0) {
$error = curl_error($curlHandle);
$errorNo = curl_errno($curlHandle);
curl_close($curlHandle);
throw new TwitterOAuthException($error, $errorNo);
}
$this->response->setHttpCode(
curl_getinfo($curlHandle, CURLINFO_HTTP_CODE)
);
$parts = explode("\r\n\r\n", $response);
$responseBody = array_pop($parts);
$responseHeader = array_pop($parts);
$this->response->setHeaders($this->parseHeaders($responseHeader));
curl_close($curlHandle);
return $responseBody;
}
/**
* Get the header info to store.
*
* @param string $header
*
* @return array
*/
private function parseHeaders(string $header): array
{
$headers = [];
foreach (explode("\r\n", $header) as $line) {
if (strpos($line, ':') !== false) {
[$key, $value] = explode(': ', $line);
$key = str_replace('-', '_', strtolower($key));
$headers[$key] = trim($value);
}
}
return $headers;
}
/**
* Encode application authorization header with base64.
*
* @param Consumer $consumer
*
* @return string
*/
private function encodeAppAuthorization(Consumer $consumer): string
{
$key = rawurlencode($consumer->key);
$secret = rawurlencode($consumer->secret);
return base64_encode($key . ':' . $secret);
}
/**
* Get Curl CA option based on whether the given path is a directory or file.
*
* @param string $path
* @return int
*/
private function curlCaOpt(string $path): int
{
return is_dir($path) ? CURLOPT_CAPATH : CURLOPT_CAINFO;
}
}

View file

@ -0,0 +1,12 @@
<?php
declare(strict_types=1);
namespace Abraham\TwitterOAuth;
/**
* @author Abraham Williams <abraham@abrah.am>
*/
class TwitterOAuthException extends \Exception
{
}

View file

@ -0,0 +1,122 @@
<?php
/**
* The MIT License
* Copyright (c) 2007 Andy Smith
*/
declare(strict_types=1);
namespace Abraham\TwitterOAuth;
class Util
{
/**
* @param mixed $input
*
* @return mixed
*/
public static function urlencodeRfc3986($input)
{
$output = '';
if (is_array($input)) {
$output = array_map(
[__NAMESPACE__ . '\Util', 'urlencodeRfc3986'],
$input
);
} elseif (is_scalar($input)) {
$output = rawurlencode((string) $input);
}
return $output;
}
/**
* @param string $string
*
* @return string
*/
public static function urldecodeRfc3986($string): string
{
return urldecode($string);
}
/**
* This function takes a input like a=b&a=c&d=e and returns the parsed
* parameters like this
* array('a' => array('b','c'), 'd' => 'e')
*
* @param string $input
*
* @return array
*/
public static function parseParameters($input): array
{
if (!is_string($input)) {
return [];
}
$pairs = explode('&', $input);
$parameters = [];
foreach ($pairs as $pair) {
$split = explode('=', $pair, 2);
$parameter = Util::urldecodeRfc3986($split[0]);
$value = isset($split[1]) ? Util::urldecodeRfc3986($split[1]) : '';
if (isset($parameters[$parameter])) {
// We have already recieved parameter(s) with this name, so add to the list
// of parameters with this name
if (is_scalar($parameters[$parameter])) {
// This is the first duplicate, so transform scalar (string) into an array
// so we can add the duplicates
$parameters[$parameter] = [$parameters[$parameter]];
}
$parameters[$parameter][] = $value;
} else {
$parameters[$parameter] = $value;
}
}
return $parameters;
}
/**
* @param array $params
*
* @return string
*/
public static function buildHttpQuery(array $params): string
{
if (empty($params)) {
return '';
}
// Urlencode both keys and values
$keys = Util::urlencodeRfc3986(array_keys($params));
$values = Util::urlencodeRfc3986(array_values($params));
$params = array_combine($keys, $values);
// Parameters are sorted by name, using lexicographical byte value ordering.
// Ref: Spec: 9.1.1 (1)
uksort($params, 'strcmp');
$pairs = [];
foreach ($params as $parameter => $value) {
if (is_array($value)) {
// If two or more parameters share the same name, they are sorted by their value
// Ref: Spec: 9.1.1 (1)
// June 12th, 2010 - changed to sort because of issue 164 by hidetaka
sort($value, SORT_STRING);
foreach ($value as $duplicateValue) {
$pairs[] = $parameter . '=' . $duplicateValue;
}
} else {
$pairs[] = $parameter . '=' . $value;
}
}
// For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61)
// Each name-value pair is separated by an '&' character (ASCII code 38)
return implode('&', $pairs);
}
}

View file

@ -0,0 +1,29 @@
<?php
namespace Abraham\TwitterOAuth\Util;
/**
* @author louis <louis@systemli.org>
*/
class JsonDecoder
{
/**
* Decodes a JSON string to stdObject or associative array
*
* @param string $string
* @param bool $asArray
*
* @return array|object
*/
public static function decode(string $string, bool $asArray)
{
if (
version_compare(PHP_VERSION, '5.4.0', '>=') &&
!(defined('JSON_C_VERSION') && PHP_INT_SIZE > 4)
) {
return json_decode($string, $asArray, 512, JSON_BIGINT_AS_STRING);
}
return json_decode($string, $asArray);
}
}

View file

@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
namespace Abraham\TwitterOAuth\Tests;
use PHPUnit\Framework\TestCase;
use Abraham\TwitterOAuth\SignatureMethod;
abstract class AbstractSignatureMethodTest extends TestCase
{
protected $name;
/**
* @return SignatureMethod
*/
abstract public function getClass();
abstract protected function signatureDataProvider();
public function testGetName()
{
$this->assertEquals($this->name, $this->getClass()->getName());
}
/**
* @dataProvider signatureDataProvider
*/
public function testBuildSignature($expected, $request, $consumer, $token)
{
$this->assertEquals(
$expected,
$this->getClass()->buildSignature($request, $consumer, $token)
);
}
protected function getRequest()
{
return $this->getMockBuilder('Abraham\TwitterOAuth\Request')
->disableOriginalConstructor()
->getMock();
}
protected function getConsumer(
$key = null,
$secret = null,
$callbackUrl = null
) {
return $this->getMockBuilder('Abraham\TwitterOAuth\Consumer')
->setConstructorArgs([$key, $secret, $callbackUrl])
->getMock();
}
protected function getToken($key = null, $secret = null)
{
return $this->getMockBuilder('Abraham\TwitterOAuth\Token')
->setConstructorArgs([$key, $secret])
->getMock();
}
}

View file

@ -0,0 +1,23 @@
<?php
declare(strict_types=1);
namespace Abraham\TwitterOAuth\Tests;
use PHPUnit\Framework\TestCase;
use Abraham\TwitterOAuth\Consumer;
class ConsumerTest extends TestCase
{
public function testToString()
{
$key = uniqid();
$secret = uniqid();
$consumer = new Consumer($key, $secret);
$this->assertEquals(
"Consumer[key=$key,secret=$secret]",
$consumer->__toString()
);
}
}

View file

@ -0,0 +1,47 @@
<?php
declare(strict_types=1);
namespace Abraham\TwitterOAuth\Tests;
use Abraham\TwitterOAuth\HmacSha1;
class HmacSha1Test extends AbstractSignatureMethodTest
{
protected $name = 'HMAC-SHA1';
public function getClass()
{
return new HmacSha1();
}
public function signatureDataProvider()
{
return [
[
'5CoEcoq7XoKFjwYCieQvuzadeUA=',
$this->getRequest(),
$this->getConsumer(),
$this->getToken(),
],
[
'EBw0gHngam3BTx8kfPfNNSyKem4=',
$this->getRequest(),
$this->getConsumer('key', 'secret'),
$this->getToken(),
],
[
'kDsHFZzws2a5M6cAQjfpdNBo+v8=',
$this->getRequest(),
$this->getConsumer('key', 'secret'),
$this->getToken('key', 'secret'),
],
[
'EBw0gHngam3BTx8kfPfNNSyKem4=',
$this->getRequest(),
$this->getConsumer('key', 'secret'),
null,
],
];
}
}

View file

@ -0,0 +1,38 @@
<?php
declare(strict_types=1);
namespace Abraham\TwitterOAuth\Tests;
use PHPUnit\Framework\TestCase;
use Abraham\TwitterOAuth\Token;
class TokenTest extends TestCase
{
/**
* @dataProvider tokenProvider
*/
public function testToString($expected, $key, $secret)
{
$token = new Token($key, $secret);
$this->assertEquals($expected, $token->__toString());
}
public function tokenProvider()
{
return [
['oauth_token=key&oauth_token_secret=secret', 'key', 'secret'],
[
'oauth_token=key%2Bkey&oauth_token_secret=secret',
'key+key',
'secret',
],
[
'oauth_token=key~key&oauth_token_secret=secret',
'key~key',
'secret',
],
];
}
}

View file

@ -0,0 +1,397 @@
<?php
/**
* WARNING: Running tests will post and delete through the actual Twitter account when updating or saving VCR cassettes.
*/
declare(strict_types=1);
namespace Abraham\TwitterOAuth\Test;
use PHPUnit\Framework\TestCase;
use Abraham\TwitterOAuth\TwitterOAuth;
class TwitterOAuthTest extends TestCase
{
/** @var TwitterOAuth */
protected $twitter;
protected function setUp(): void
{
$this->twitter = new TwitterOAuth(
CONSUMER_KEY,
CONSUMER_SECRET,
ACCESS_TOKEN,
ACCESS_TOKEN_SECRET
);
$this->userId = explode('-', ACCESS_TOKEN)[0];
}
public function testBuildClient()
{
$this->assertObjectHasAttribute('consumer', $this->twitter);
$this->assertObjectHasAttribute('token', $this->twitter);
}
/**
* @vcr testSetOauthToken.json
*/
public function testSetOauthToken()
{
$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
$twitter->setOauthToken(ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$this->assertObjectHasAttribute('consumer', $twitter);
$this->assertObjectHasAttribute('token', $twitter);
$twitter->get('friendships/show', [
'target_screen_name' => 'twitterapi',
]);
$this->assertEquals(200, $twitter->getLastHttpCode());
}
/**
* @vcr testOauth2Token.json
*/
public function testOauth2Token()
{
$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
$result = $twitter->oauth2('oauth2/token', [
'grant_type' => 'client_credentials',
]);
$this->assertEquals(200, $twitter->getLastHttpCode());
$this->assertObjectHasAttribute('token_type', $result);
$this->assertObjectHasAttribute('access_token', $result);
$this->assertEquals('bearer', $result->token_type);
return $result;
}
/**
* @depends testOauth2Token
* @vcr testOauth2BearerToken.json
*/
public function testOauth2BearerToken($accessToken)
{
$twitter = new TwitterOAuth(
CONSUMER_KEY,
CONSUMER_SECRET,
null,
$accessToken->access_token
);
$result = $twitter->get('statuses/user_timeline', [
'screen_name' => 'twitterapi',
]);
$this->assertEquals(200, $twitter->getLastHttpCode());
return $accessToken;
}
/**
* @depends testOauth2BearerToken
* @vcr testOauth2TokenInvalidate.json
*/
public function testOauth2TokenInvalidate($accessToken)
{
$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
// HACK: access_token is already urlencoded but gets urlencoded again breaking the invalidate request.
$result = $twitter->oauth2('oauth2/invalidate_token', [
'access_token' => urldecode($accessToken->access_token),
]);
$this->assertEquals(200, $twitter->getLastHttpCode());
$this->assertObjectHasAttribute('access_token', $result);
}
/**
* @vcr testOauthRequestToken.json
*/
public function testOauthRequestToken()
{
$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
$result = $twitter->oauth('oauth/request_token', [
'oauth_callback' => OAUTH_CALLBACK,
]);
$this->assertEquals(200, $twitter->getLastHttpCode());
$this->assertArrayHasKey('oauth_token', $result);
$this->assertArrayHasKey('oauth_token_secret', $result);
$this->assertArrayHasKey('oauth_callback_confirmed', $result);
$this->assertEquals('true', $result['oauth_callback_confirmed']);
return $result;
}
/**
* @vcr testOauthRequestTokenException.json
*/
public function testOauthRequestTokenException()
{
$this->expectException(
\Abraham\TwitterOAuth\TwitterOAuthException::class
);
$this->expectErrorMessage('Could not authenticate you');
$twitter = new TwitterOAuth('CONSUMER_KEY', 'CONSUMER_SECRET');
$result = $twitter->oauth('oauth/request_token', [
'oauth_callback' => OAUTH_CALLBACK,
]);
}
/**
* @depends testOauthRequestToken
* @vcr testOauthAccessTokenTokenException.json
*/
public function testOauthAccessTokenTokenException(array $requestToken)
{
// Can't test this without a browser logging into Twitter so check for the correct error instead.
$this->expectException(
\Abraham\TwitterOAuth\TwitterOAuthException::class
);
$this->expectErrorMessage('Invalid oauth_verifier parameter');
$twitter = new TwitterOAuth(
CONSUMER_KEY,
CONSUMER_SECRET,
$requestToken['oauth_token'],
$requestToken['oauth_token_secret']
);
$twitter->oauth('oauth/access_token', [
'oauth_verifier' => 'fake_oauth_verifier',
]);
}
public function testUrl()
{
$url = $this->twitter->url('oauth/authorize', [
'foo' => 'bar',
'baz' => 'qux',
]);
$this->assertEquals(
'https://api.twitter.com/oauth/authorize?foo=bar&baz=qux',
$url
);
}
/**
* @vcr testGetAccountVerifyCredentials.json
*/
public function testGetAccountVerifyCredentials()
{
$user = $this->twitter->get('account/verify_credentials', [
'include_entities' => false,
'include_email' => true,
]);
$this->assertEquals(200, $this->twitter->getLastHttpCode());
$this->assertObjectHasAttribute('email', $user);
}
/**
* @vcr testSetProxy.json
*/
public function testSetProxy()
{
$this->twitter->setProxy([
'CURLOPT_PROXY' => PROXY,
'CURLOPT_PROXYUSERPWD' => PROXYUSERPWD,
'CURLOPT_PROXYPORT' => PROXYPORT,
]);
$this->twitter->setTimeouts(60, 60);
$result = $this->twitter->get('account/verify_credentials');
$this->assertEquals(200, $this->twitter->getLastHttpCode());
$this->assertObjectHasAttribute('id', $result);
}
/**
* @vcr testGetStatusesMentionsTimeline.json
*/
public function testGetStatusesMentionsTimeline()
{
$this->twitter->get('statuses/mentions_timeline');
$this->assertEquals(200, $this->twitter->getLastHttpCode());
}
/**
* @vcr testGetSearchTweets.json
*/
public function testGetSearchTweets()
{
$result = $this->twitter->get('search/tweets', ['q' => 'twitter']);
$this->assertEquals(200, $this->twitter->getLastHttpCode());
return $result->statuses;
}
/**
* @depends testGetSearchTweets
* @vcr testGetSearchTweetsWithMaxId.json
*/
public function testGetSearchTweetsWithMaxId($statuses)
{
$maxId = array_pop($statuses)->id_str;
$this->twitter->get('search/tweets', [
'q' => 'twitter',
'max_id' => $maxId,
]);
$this->assertEquals(200, $this->twitter->getLastHttpCode());
}
/**
* @vcr testPostFavoritesCreate.json
*/
public function testPostFavoritesCreate()
{
$result = $this->twitter->post('favorites/create', [
'id' => '6242973112',
]);
$this->assertEquals(200, $this->twitter->getLastHttpCode());
}
/**
* @depends testPostFavoritesCreate
* @vcr testPostFavoritesDestroy.json
*/
public function testPostFavoritesDestroy()
{
$this->twitter->post('favorites/destroy', ['id' => '6242973112']);
$this->assertEquals(200, $this->twitter->getLastHttpCode());
}
/**
* @vcr testPostDirectMessagesEventsNew.json
*/
public function testPostDirectMessagesEventsNew()
{
$data = [
'event' => [
'type' => 'message_create',
'message_create' => [
'target' => [
'recipient_id' => $this->userId,
],
'message_data' => [
'text' => 'Hello World!',
],
],
],
];
$result = $this->twitter->post(
'direct_messages/events/new',
$data,
true
);
$this->assertEquals(200, $this->twitter->getLastHttpCode());
return $result;
}
/**
* @depends testPostDirectMessagesEventsNew
* @vcr testDeleteDirectMessagesEventsDestroy.json
*/
public function testDeleteDirectMessagesEventsDestroy($message)
{
$this->twitter->delete('direct_messages/events/destroy', [
'id' => $message->event->id,
]);
$this->assertEquals(204, $this->twitter->getLastHttpCode());
}
/**
* @vcr testPostStatusesUpdateWithMedia.json
*/
public function testPostStatusesUpdateWithMedia()
{
$this->twitter->setTimeouts(60, 60);
// Image source https://www.flickr.com/photos/titrans/8548825587/
$file_path = __DIR__ . '/kitten.jpg';
$result = $this->twitter->upload('media/upload', [
'media' => $file_path,
]);
$this->assertEquals(200, $this->twitter->getLastHttpCode());
$this->assertObjectHasAttribute('media_id_string', $result);
$parameters = [
'status' => 'Hello World ' . MOCK_TIME,
'media_ids' => $result->media_id_string,
];
$result = $this->twitter->post('statuses/update', $parameters);
$this->assertEquals(200, $this->twitter->getLastHttpCode());
$result = $this->twitter->post('statuses/destroy/' . $result->id_str);
return $result;
}
/**
* @vcr testPostStatusUpdateWithInvalidMediaThrowsException.json
*/
public function testPostStatusUpdateWithInvalidMediaThrowsException()
{
$this->expectException(\InvalidArgumentException::class);
$file_path = __DIR__ . '/12345678900987654321.jpg';
$this->assertFalse(\is_readable($file_path));
$result = $this->twitter->upload('media/upload', [
'media' => $file_path,
]);
}
/**
* @vcr testPostStatusesUpdateWithMediaChunked.json
*/
public function testPostStatusesUpdateWithMediaChunked()
{
$this->twitter->setTimeouts(60, 30);
// Video source http://www.sample-videos.com/
$file_path = __DIR__ . '/video.mp4';
$result = $this->twitter->upload(
'media/upload',
['media' => $file_path, 'media_type' => 'video/mp4'],
true
);
$this->assertEquals(201, $this->twitter->getLastHttpCode());
$this->assertObjectHasAttribute('media_id_string', $result);
$parameters = [
'status' => 'Hello World ' . MOCK_TIME,
'media_ids' => $result->media_id_string,
];
$result = $this->twitter->post('statuses/update', $parameters);
$this->assertEquals(200, $this->twitter->getLastHttpCode());
$result = $this->twitter->post('statuses/destroy/' . $result->id_str);
return $result;
}
/**
* @vcr testPostStatusesUpdateUtf8.json
*/
public function testPostStatusesUpdateUtf8()
{
$result = $this->twitter->post('statuses/update', [
'status' => 'xこんにちは世界 ' . MOCK_TIME,
]);
$this->assertEquals(200, $this->twitter->getLastHttpCode());
return $result;
}
/**
* @depends testPostStatusesUpdateUtf8
* @vcr testPostStatusesDestroy.json
*/
public function testPostStatusesDestroy($status)
{
$this->twitter->post('statuses/destroy/' . $status->id_str);
$this->assertEquals(200, $this->twitter->getLastHttpCode());
}
/**
* @vcr testLastResult.json
*/
public function testLastResult()
{
$this->twitter->get('search/tweets', ['q' => 'twitter']);
$this->assertEquals('search/tweets', $this->twitter->getLastApiPath());
$this->assertEquals(200, $this->twitter->getLastHttpCode());
$this->assertObjectHasAttribute(
'statuses',
$this->twitter->getLastBody()
);
}
/**
* @depends testLastResult
* @vcr testResetLastResponse.json
*/
public function testResetLastResponse()
{
$this->twitter->resetLastResponse();
$this->assertEquals('', $this->twitter->getLastApiPath());
$this->assertEquals(0, $this->twitter->getLastHttpCode());
$this->assertEquals([], $this->twitter->getLastBody());
}
}

View file

@ -0,0 +1,54 @@
<?php
namespace Abraham\TwitterOAuth\Tests;
use PHPUnit\Framework\TestCase;
use Abraham\TwitterOAuth\Util\JsonDecoder;
class JsonDecoderTest extends TestCase
{
/**
* @dataProvider jsonProvider
*/
public function testDecode($input, $asArray, $expected)
{
$this->assertEquals($expected, JsonDecoder::decode($input, $asArray));
}
public function jsonProvider()
{
return [
['[]', true, []],
['[1,2,3]', true, [1, 2, 3]],
[
'[{"id": 556179961825226750}]',
true,
[['id' => 556179961825226750]],
],
['[]', false, []],
['[1,2,3]', false, [1, 2, 3]],
[
'[{"id": 556179961825226750}]',
false,
[
$this->getClass(function ($object) {
$object->id = 556179961825226750;
return $object;
}),
],
],
];
}
/**
* @param callable $callable
*
* @return stdClass
*/
private function getClass(\Closure $callable)
{
$object = new \stdClass();
return $callable($object);
}
}

View file

@ -0,0 +1,10 @@
<?php
declare(strict_types=1);
require __DIR__ . '/../vendor/autoload.php';
require 'vars.php';
require 'mocks.php';
\VCR\VCR::configure()->setStorage('json');
\VCR\VCR::turnOn();

Some files were not shown because too many files have changed in this diff Show more